opencode-bridge 2.9.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +137 -131
- package/LICENSE +674 -674
- package/README.md +428 -1197
- package/bin/opencode-bridge.js +31 -31
- package/dist/commands/parser.js +49 -49
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/feishu/cards-stream.d.ts +2 -0
- package/dist/feishu/cards-stream.d.ts.map +1 -1
- package/dist/feishu/cards-stream.js.map +1 -1
- package/dist/feishu/cards.d.ts +2 -0
- package/dist/feishu/cards.d.ts.map +1 -1
- package/dist/feishu/cards.js +6 -0
- package/dist/feishu/cards.js.map +1 -1
- package/dist/handlers/discord.js +5 -5
- package/dist/index.js +51 -82
- package/dist/index.js.map +1 -1
- package/dist/opencode/tool-trace.d.ts +4 -0
- package/dist/opencode/tool-trace.d.ts.map +1 -0
- package/dist/opencode/tool-trace.js +77 -0
- package/dist/opencode/tool-trace.js.map +1 -0
- package/dist/permissions/handler.d.ts +4 -0
- package/dist/permissions/handler.d.ts.map +1 -1
- package/dist/permissions/handler.js +4 -0
- package/dist/permissions/handler.js.map +1 -1
- package/dist/router/action-handlers.d.ts.map +1 -1
- package/dist/router/action-handlers.js +54 -12
- package/dist/router/action-handlers.js.map +1 -1
- package/dist/router/opencode-event-hub.d.ts.map +1 -1
- package/dist/router/opencode-event-hub.js +2 -8
- package/dist/router/opencode-event-hub.js.map +1 -1
- package/dist/utils/process-cleanup.d.ts +22 -0
- package/dist/utils/process-cleanup.d.ts.map +1 -0
- package/dist/utils/process-cleanup.js +75 -0
- package/dist/utils/process-cleanup.js.map +1 -0
- package/package.json +73 -73
package/.env.example
CHANGED
|
@@ -1,131 +1,137 @@
|
|
|
1
|
-
# 飞书应用配置(从开发者后台获取)
|
|
2
|
-
FEISHU_APP_ID=cli_xxxxxxxxxxxxx
|
|
3
|
-
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx
|
|
4
|
-
|
|
5
|
-
# npm CLI 默认优先读取当前工作目录下的 .env;若不存在,则读取 ~/.config/opencode-bridge/.env
|
|
6
|
-
# 也可以通过命令行覆盖:opencode-bridge --config-dir /path/to/config
|
|
7
|
-
|
|
8
|
-
# 用户白名单(你的飞书 open_id)
|
|
9
|
-
# ALLOWED_USERS=ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
10
|
-
|
|
11
|
-
# 平台启用过滤(可选,逗号分隔)
|
|
12
|
-
# ENABLED_PLATFORMS=feishu,discord
|
|
13
|
-
|
|
14
|
-
# Discord 适配器(可选)
|
|
15
|
-
# DISCORD_ENABLED=true
|
|
16
|
-
# 兼容两种 token 命名:DISCORD_TOKEN / DISCORD_BOT_TOKEN
|
|
17
|
-
# DISCORD_TOKEN=your-discord-bot-token
|
|
18
|
-
# DISCORD_BOT_TOKEN=your-discord-bot-token
|
|
19
|
-
# DISCORD_CLIENT_ID=your-discord-client-id
|
|
20
|
-
# 需要在 Discord Developer Portal 开启 Message Content Intent
|
|
21
|
-
# 并给机器人授予发送/读取频道消息权限
|
|
22
|
-
|
|
23
|
-
# OpenCode 服务地址
|
|
24
|
-
# OPENCODE_HOST=localhost
|
|
25
|
-
# OPENCODE_PORT=4096
|
|
26
|
-
|
|
27
|
-
# OpenCode
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
# true
|
|
82
|
-
#
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
|
|
96
|
-
#
|
|
97
|
-
|
|
98
|
-
#
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
#
|
|
102
|
-
#
|
|
103
|
-
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
|
|
109
|
-
#
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
#
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
|
|
1
|
+
# 飞书应用配置(从开发者后台获取)
|
|
2
|
+
FEISHU_APP_ID=cli_xxxxxxxxxxxxx
|
|
3
|
+
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx
|
|
4
|
+
|
|
5
|
+
# npm CLI 默认优先读取当前工作目录下的 .env;若不存在,则读取 ~/.config/opencode-bridge/.env
|
|
6
|
+
# 也可以通过命令行覆盖:opencode-bridge --config-dir /path/to/config
|
|
7
|
+
|
|
8
|
+
# 用户白名单(你的飞书 open_id)
|
|
9
|
+
# ALLOWED_USERS=ou_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
10
|
+
|
|
11
|
+
# 平台启用过滤(可选,逗号分隔)
|
|
12
|
+
# ENABLED_PLATFORMS=feishu,discord
|
|
13
|
+
|
|
14
|
+
# Discord 适配器(可选)
|
|
15
|
+
# DISCORD_ENABLED=true
|
|
16
|
+
# 兼容两种 token 命名:DISCORD_TOKEN / DISCORD_BOT_TOKEN
|
|
17
|
+
# DISCORD_TOKEN=your-discord-bot-token
|
|
18
|
+
# DISCORD_BOT_TOKEN=your-discord-bot-token
|
|
19
|
+
# DISCORD_CLIENT_ID=your-discord-client-id
|
|
20
|
+
# 需要在 Discord Developer Portal 开启 Message Content Intent
|
|
21
|
+
# 并给机器人授予发送/读取频道消息权限
|
|
22
|
+
|
|
23
|
+
# OpenCode 服务地址
|
|
24
|
+
# OPENCODE_HOST=localhost
|
|
25
|
+
# OPENCODE_PORT=4096
|
|
26
|
+
|
|
27
|
+
# OpenCode 自动启动(可选)
|
|
28
|
+
# 设置为 true 时,Bridge 启动时会自动启动 OpenCode 后台进程
|
|
29
|
+
# OPENCODE_AUTO_START=false
|
|
30
|
+
# 可自定义启动命令(默认为 opencode serve,headless 后台模式)
|
|
31
|
+
# OPENCODE_AUTO_START_CMD=opencode serve
|
|
32
|
+
|
|
33
|
+
# OpenCode Server Basic Auth(可选)
|
|
34
|
+
# 当 OpenCode 设置 OPENCODE_SERVER_PASSWORD 后,桥接端需要配置同一组凭据
|
|
35
|
+
# OPENCODE_SERVER_USERNAME 默认为 opencode
|
|
36
|
+
# OPENCODE_SERVER_USERNAME=opencode
|
|
37
|
+
# OPENCODE_SERVER_PASSWORD=your-strong-password
|
|
38
|
+
|
|
39
|
+
# 可靠性(心跳 + Cron + 宕机救援)
|
|
40
|
+
# 是否启用可靠性 Cron 调度
|
|
41
|
+
# RELIABILITY_CRON_ENABLED=true
|
|
42
|
+
# 是否启用运行时 Cron API(支持 /cron/add|remove|update|list)
|
|
43
|
+
# RELIABILITY_CRON_API_ENABLED=false
|
|
44
|
+
# Cron API 监听地址和端口
|
|
45
|
+
# RELIABILITY_CRON_API_HOST=127.0.0.1
|
|
46
|
+
# RELIABILITY_CRON_API_PORT=4097
|
|
47
|
+
# Cron API Bearer Token(可选)
|
|
48
|
+
# RELIABILITY_CRON_API_TOKEN=your-token
|
|
49
|
+
# Cron 动态任务持久化文件(默认 ~/cron/jobs.json)
|
|
50
|
+
# RELIABILITY_CRON_JOBS_FILE=/absolute/path/jobs.json
|
|
51
|
+
# 是否自动清理僵尸 Cron(启动扫描 / 群解散或频道删除联动 / stale cleanup)
|
|
52
|
+
# RELIABILITY_CRON_ORPHAN_AUTO_CLEANUP=false
|
|
53
|
+
# 原聊天窗口失效时,是否允许转发到私聊/备用窗口
|
|
54
|
+
# RELIABILITY_CRON_FORWARD_TO_PRIVATE=false
|
|
55
|
+
# Feishu 备用接收 chat_id(可选)
|
|
56
|
+
# RELIABILITY_CRON_FALLBACK_FEISHU_CHAT_ID=oc_xxx
|
|
57
|
+
# Discord 备用接收频道/私聊 conversationId(可选)
|
|
58
|
+
# RELIABILITY_CRON_FALLBACK_DISCORD_CONVERSATION_ID=1234567890
|
|
59
|
+
# 主动心跳开关(Bridge 定时器,默认关闭)
|
|
60
|
+
# RELIABILITY_PROACTIVE_HEARTBEAT_ENABLED=false
|
|
61
|
+
# 入站消息触发心跳开关(兼容模式,默认关闭)
|
|
62
|
+
# RELIABILITY_INBOUND_HEARTBEAT_ENABLED=false
|
|
63
|
+
# 主动心跳轮询间隔(毫秒)
|
|
64
|
+
# RELIABILITY_HEARTBEAT_INTERVAL_MS=1800000
|
|
65
|
+
# 主动心跳使用的 Agent(可选)
|
|
66
|
+
# RELIABILITY_HEARTBEAT_AGENT=companion
|
|
67
|
+
# 主动心跳提示词(可选,建议包含 HEARTBEAT_OK)
|
|
68
|
+
# RELIABILITY_HEARTBEAT_PROMPT=Read HEARTBEAT.md if it exists... reply HEARTBEAT_OK
|
|
69
|
+
# 心跳告警推送目标飞书 chat_id(逗号分隔,可选)
|
|
70
|
+
# RELIABILITY_HEARTBEAT_ALERT_CHATS=oc_xxx,oc_yyy
|
|
71
|
+
# 无限重连场景:连续失败阈值与时间窗口
|
|
72
|
+
# RELIABILITY_FAILURE_THRESHOLD=3
|
|
73
|
+
# RELIABILITY_WINDOW_MS=90000
|
|
74
|
+
# 两次自动救援之间的冷却时间(毫秒)
|
|
75
|
+
# RELIABILITY_COOLDOWN_MS=300000
|
|
76
|
+
# 自动救援预算(耗尽后转人工介入)
|
|
77
|
+
# RELIABILITY_REPAIR_BUDGET=3
|
|
78
|
+
# 可靠性模式预留字段:observe | shadow | active
|
|
79
|
+
# RELIABILITY_MODE=observe
|
|
80
|
+
# 仅允许本地 loopback(localhost/127.0.0.1/::1)自动救援
|
|
81
|
+
# RELIABILITY_LOOPBACK_ONLY=true
|
|
82
|
+
# 宕机救援用于备份/回退的 OpenCode 配置文件路径
|
|
83
|
+
# OPENCODE_CONFIG_FILE=./opencode.json
|
|
84
|
+
|
|
85
|
+
# 群聊是否仅在明确 @ 机器人时才响应(true/false)
|
|
86
|
+
# false: 兼容旧行为,群聊普通消息也会响应
|
|
87
|
+
# true: 仅在群聊中被 @ 才响应
|
|
88
|
+
# GROUP_REQUIRE_MENTION=false
|
|
89
|
+
|
|
90
|
+
# 输出显示配置(可选)
|
|
91
|
+
# 思维链和工具链显示控制
|
|
92
|
+
# 全局开关:默认 true,设为 false 可隐藏对应内容
|
|
93
|
+
# SHOW_THINKING_CHAIN=true
|
|
94
|
+
# SHOW_TOOL_CHAIN=true
|
|
95
|
+
|
|
96
|
+
# 飞书特定开关(优先级高于全局:平台键覆盖全局键)
|
|
97
|
+
# FEISHU_SHOW_THINKING_CHAIN=true
|
|
98
|
+
# FEISHU_SHOW_TOOL_CHAIN=true
|
|
99
|
+
#
|
|
100
|
+
# Discord 特定开关(优先级高于全局:平台键覆盖全局键)
|
|
101
|
+
# DISCORD_SHOW_THINKING_CHAIN=true
|
|
102
|
+
# DISCORD_SHOW_TOOL_CHAIN=true
|
|
103
|
+
|
|
104
|
+
# 工作目录配置(可选)
|
|
105
|
+
# 允许的工作目录根列表(逗号分隔绝对路径)
|
|
106
|
+
# 未配置时用户不能自定义路径,只能使用默认目录或从已知项目选择
|
|
107
|
+
# ALLOWED_DIRECTORIES=/home/user/projects,/opt/repos
|
|
108
|
+
# 全局默认工作目录(最低优先级兜底,不配置则跟随 OpenCode 服务端)
|
|
109
|
+
# DEFAULT_WORK_DIRECTORY=/home/user/projects/main-project
|
|
110
|
+
# 项目别名映射(JSON 格式,短名 → 绝对路径)
|
|
111
|
+
# PROJECT_ALIASES={"frontend":"/home/user/frontend","backend":"/home/user/backend"}
|
|
112
|
+
# 是否自动将目录归一到 Git 仓库根目录(默认 true)
|
|
113
|
+
# GIT_ROOT_NORMALIZATION=true
|
|
114
|
+
|
|
115
|
+
# 自动允许的工具(不需要确认)
|
|
116
|
+
TOOL_WHITELIST=Read,Glob,Grep,Task,Write
|
|
117
|
+
|
|
118
|
+
# 权限请求在桥接侧的保留时长(毫秒)
|
|
119
|
+
# <= 0 表示不超时(默认),会一直等待用户回复
|
|
120
|
+
# PERMISSION_REQUEST_TIMEOUT_MS=0
|
|
121
|
+
|
|
122
|
+
# 输出配置
|
|
123
|
+
OUTPUT_UPDATE_INTERVAL=3000
|
|
124
|
+
|
|
125
|
+
# 延迟响应最大等待时间(毫秒)
|
|
126
|
+
MAX_DELAYED_RESPONSE_WAIT_MS=120000
|
|
127
|
+
|
|
128
|
+
# 是否允许手动绑定已有 OpenCode 会话(true/false)
|
|
129
|
+
# true: 开启 /session <sessionId> 与建群下拉中的“绑定已有会话”
|
|
130
|
+
# false: 仅允许新建会话,不展示/不允许绑定已有会话
|
|
131
|
+
ENABLE_MANUAL_SESSION_BIND=true
|
|
132
|
+
|
|
133
|
+
# 路由模式(legacy | dual | router)
|
|
134
|
+
# legacy: 默认稳定模式
|
|
135
|
+
# dual: 双轨对比日志模式
|
|
136
|
+
# router: 新路由模式
|
|
137
|
+
# ROUTER_MODE=legacy
|