mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-07-20 19:36:08 +00:00
chore: Add PyPI package support for uvx/pip installation (#1764)
* Initial plan * Add package structure and resource path utilities - Created langbot/ package with __init__.py and __main__.py entry point - Added paths utility to find frontend and resource files from package installation - Updated config loading to use resource paths - Updated frontend serving to use resource paths - Added MANIFEST.in for package data inclusion - Updated pyproject.toml with build system and entry points Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Add PyPI publishing workflow and update license - Created GitHub Actions workflow to build frontend and publish to PyPI - Added license field to pyproject.toml to fix deprecation warning - Updated .gitignore to exclude build artifacts - Tested package building successfully Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Add PyPI installation documentation - Created PYPI_INSTALLATION.md with detailed installation and usage instructions - Updated README.md to feature uvx/pip installation as recommended method - Updated README_EN.md with same changes for English documentation Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Address code review feedback - Made package-data configuration more specific to langbot package only - Improved path detection with caching to avoid repeated file I/O - Removed sys.path searching which was incorrect for package data - Removed interactive input() call for non-interactive environment compatibility - Simplified error messages for version check Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Fix code review issues - Use specific exception types instead of bare except - Fix misleading comments about directory levels - Remove redundant existence check before makedirs with exist_ok=True - Use context manager for file opening to ensure proper cleanup Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * Simplify package configuration and document behavioral differences - Removed redundant package-data configuration, relying on MANIFEST.in - Added documentation about behavioral differences between package and source installation - Clarified that include-package-data=true uses MANIFEST.in for data files Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> * chore: update pyproject.toml * chore: try pack templates in langbot/ * chore: update * chore: update * chore: update * chore: update * chore: update * chore: adjust dir structure * chore: fix imports * fix: read default-pipeline-config.json * fix: read default-pipeline-config.json * fix: tests * ci: publish pypi * chore: bump version 4.6.0-beta.1 for testing * chore: add templates/** * fix: send adapters and requesters icons * chore: bump version 4.6.0b2 for testing * chore: add platform field for docker-compose.yaml --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: RockChinQ <45992437+RockChinQ@users.noreply.github.com> Co-authored-by: Junyan Qin <rockchinq@gmail.com>
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
name: trigger
|
||||
label:
|
||||
en_US: Trigger
|
||||
zh_Hans: 触发条件
|
||||
stages:
|
||||
- name: group-respond-rules
|
||||
label:
|
||||
en_US: Group Respond Rule
|
||||
zh_Hans: 群响应规则
|
||||
description:
|
||||
en_US: The respond rule of the messages in the groups
|
||||
zh_Hans: 群内消息的响应规则
|
||||
config:
|
||||
- name: at
|
||||
label:
|
||||
en_US: At
|
||||
zh_Hans: '@'
|
||||
description:
|
||||
en_US: Whether to trigger when the message mentions the bot
|
||||
zh_Hans: 是否在消息@机器人时触发
|
||||
type: boolean
|
||||
required: true
|
||||
default: false
|
||||
- name: prefix
|
||||
label:
|
||||
en_US: Prefix
|
||||
zh_Hans: 前缀
|
||||
description:
|
||||
en_US: Messages with these prefixes will be responded (the prefixes will be removed automatically when sending to AI)
|
||||
zh_Hans: 具有这些前缀的消息将被响应(发送给 AI 时会自动去除对应前缀)
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: regexp
|
||||
label:
|
||||
en_US: Regexp
|
||||
zh_Hans: 正则表达式
|
||||
description:
|
||||
en_US: Messages with these regular expressions will be responded
|
||||
zh_Hans: 符合这些正则表达式的消息将被响应
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: random
|
||||
label:
|
||||
en_US: Random
|
||||
zh_Hans: 随机
|
||||
description:
|
||||
en_US: 'Probability of automatically responding to messages that are not matched by other rules. Range: 0.0-1.0 (0%-100%).'
|
||||
zh_Hans: '自动响应其他规则未匹配的消息的概率。范围:0.0-1.0 (0%-100%)。'
|
||||
type: float
|
||||
required: false
|
||||
default: 0
|
||||
- name: access-control
|
||||
label:
|
||||
en_US: Access Control
|
||||
zh_Hans: 访问控制
|
||||
config:
|
||||
- name: mode
|
||||
label:
|
||||
en_US: Mode
|
||||
zh_Hans: 模式
|
||||
description:
|
||||
en_US: The mode of the access control
|
||||
zh_Hans: 访问控制模式
|
||||
type: select
|
||||
required: true
|
||||
default: blacklist
|
||||
options:
|
||||
- name: blacklist
|
||||
label:
|
||||
en_US: Blacklist
|
||||
zh_Hans: 黑名单
|
||||
- name: whitelist
|
||||
label:
|
||||
en_US: Whitelist
|
||||
zh_Hans: 白名单
|
||||
- name: blacklist
|
||||
label:
|
||||
en_US: Blacklist
|
||||
zh_Hans: 黑名单
|
||||
description:
|
||||
en_US: Sessions in the blacklist will be ignored, the format is `{launcher_type}_{launcher_id}`(remove quotes), for example `person_123` matches private chat, `group_456` matches group chat, `person_*` matches all private chats, `group_*` matches all group chats, `*_123` matches private and group chats with user ID 123
|
||||
zh_Hans: 黑名单中的会话将被忽略;会话格式:`{launcher_type}_{launcher_id}`(删除引号),例如 `person_123` 匹配私聊会话,`group_456` 匹配群聊会话;`person_*` 匹配所有私聊会话,`group_*` 匹配所有群聊会话;`*_123` 匹配用户 ID 为 123 的私聊和群聊消息
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: whitelist
|
||||
label:
|
||||
en_US: Whitelist
|
||||
zh_Hans: 白名单
|
||||
description:
|
||||
en_US: Only respond to sessions in the whitelist, the format is `{launcher_type}_{launcher_id}`(remove quotes), for example `person_123` matches private chat, `group_456` matches group chat, `person_*` matches all private chats, `group_*` matches all group chats, `*_123` matches private and group chats with user ID 123
|
||||
zh_Hans: 仅响应白名单中的会话;会话格式:`{launcher_type}_{launcher_id}`(删除引号),例如 `person_123` 匹配私聊会话,`group_456` 匹配群聊会话;`person_*` 匹配所有私聊会话,`group_*` 匹配所有群聊会话;`*_123` 匹配用户 ID 为 123 的私聊和群聊消息
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: ignore-rules
|
||||
label:
|
||||
en_US: Ignore Rules
|
||||
zh_Hans: 消息忽略规则
|
||||
description:
|
||||
en_US: Ignore rules that apply to both group and private messages
|
||||
zh_Hans: 对群聊、私聊消息均适用的忽略规则(优先级高于群响应规则)
|
||||
config:
|
||||
- name: prefix
|
||||
label:
|
||||
en_US: Prefix
|
||||
zh_Hans: 前缀
|
||||
description:
|
||||
en_US: Messages with these prefixes will be ignored
|
||||
zh_Hans: 包含这些前缀的消息将被忽略
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: regexp
|
||||
label:
|
||||
en_US: Regexp
|
||||
zh_Hans: 正则表达式
|
||||
description:
|
||||
en_US: Messages with these regular expressions will be ignored
|
||||
zh_Hans: 符合这些正则表达式的消息将被忽略
|
||||
type: array[string]
|
||||
required: true
|
||||
default: []
|
||||
- name: misc
|
||||
label:
|
||||
en_US: Misc
|
||||
zh_Hans: 杂项
|
||||
config:
|
||||
- name: combine-quote-message
|
||||
label:
|
||||
en_US: Combine Quote Message
|
||||
zh_Hans: 合并引用消息
|
||||
description:
|
||||
en_US: If enabled, the bot will combine the quote message with the user's message
|
||||
zh_Hans: 如果启用,将合并引用消息与用户发送的消息
|
||||
type: boolean
|
||||
required: true
|
||||
default: true
|
||||
Reference in New Issue
Block a user