xuym-codex-collab 0.7.0 → 0.9.0
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/README.md +10 -6
- package/apps/onboarding/server.mjs +1 -1
- package/apps/onboarding/web/app.js +151 -30
- package/apps/onboarding/web/favicon.svg +6 -0
- package/apps/onboarding/web/index.html +673 -39
- package/apps/onboarding/web/style.css +342 -14
- package/apps/onboarding/workspace.mjs +1 -1
- package/bin/postinstall.mjs +11 -0
- package/docs/architecture.md +13 -5
- package/docs/legacy-center.md +12 -52
- package/docs/onboarding-audit.md +9 -0
- package/docs/onboarding.md +20 -20
- package/docs/protocol.md +1 -1
- package/docs/releases/0.8.0.md +21 -0
- package/package.json +2 -2
- package/schemas/event.schema.json +1 -1
- package/schemas/task.schema.json +1 -1
package/docs/onboarding.md
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
1. 安装 Node.js 20+、Git 和支持对话 heartbeat 的 Codex 桌面应用。
|
|
8
8
|
2. 确认业务仓库至少有一个远程业务分支(如 `main`、`master`、`develop`),本机 Git 凭据能读取并 push `agent-collab` 及任务代码分支。已有独立 clone 可以直接使用;没有 clone 时让向导从 Git 地址拉取。
|
|
9
|
-
3.
|
|
9
|
+
3. 打开终端执行。已有项目时可先进入项目目录,让向导自动带入信息;没有本机 clone 时也可直接启动:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
npm install --global xuym-codex-collab
|
|
13
|
-
codex-collab
|
|
12
|
+
npm install --global --foreground-scripts xuym-codex-collab
|
|
13
|
+
codex-collab setup
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
安装完成后会提示运行 `codex-collab setup`;`--foreground-scripts` 用于显示 npm 默认可能隐藏的安装脚本输出。使用 `--ignore-scripts` 或没有看到提示时,仍可直接运行该命令。安装过程只显示提示,运行 `setup` 后网页自动打开;若未打开,执行 `codex-collab setup --no-open`,复制终端打印的本机链接。工作台已在后台运行,可以关闭终端和浏览器。macOS 默认设置登录自启,Linux 尝试设置 systemd 用户服务;未配置成功时页面和终端会明确提示。手动停止的连接不会在登录或后台检查时重新启动。团队成员无需 clone 工具仓库。也可执行 `npx xuym-codex-collab@latest setup` 临时打开向导;长期运行推荐全局安装,以便登录服务使用稳定安装路径。
|
|
17
17
|
|
|
18
18
|
同一台电脑模拟两位成员时,使用同一业务仓库的两个独立 clone、两个机器人、两个 Codex 对话;同一个 clone 只能接入一个身份。同一个企业微信账号可以拥有多个 Agent,每个 Agent 的机器人、签名身份、clone 和对话独立。真正同事使用自己的企业微信账号和 Git 凭据。
|
|
19
19
|
|
|
@@ -23,19 +23,19 @@ codex-collab
|
|
|
23
23
|
|
|
24
24
|
打开项目后只有一份“项目机器人”列表,包含自己的和同事的机器人。自己的标记“我的”;标记依据本机签名身份与团队已验证的所有者关系,同一已验证账号的其他机器人也会标记。本机没有接入的机器人会明确提示;同事的机器人展示角色和职责,不推测远端机器是否在线。
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
本机已接入的机器人显示实际连接状态,点击“管理机器人”或“继续接入”打开原接入详情,随后可“返回项目”。项目中的“团队与邀请”和“添加我的机器人”对已验证且就绪的本机管理员显示。普通成员拥有多个机器人时继续通过管理员分配的独立接入包接入。
|
|
27
27
|
|
|
28
28
|
首页读取本机接入记录;项目页先显示本机签名校验通过的团队记录,再同步远程账本。同步失败保留已验证记录并提示重试。归属标签只用于展示,操作仍检查对应身份的既有权限。
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
页面采用居中、逐步接入的布局,每屏只处理一个动作;项目、机器人、群验证和对话绑定之间有轻量过渡,不加载外部字体或动画库。页脚可切换纸白、雾绿与夜色。动画使用 `transform` 和 `opacity`;页面进入后台时暂停动画与项目自动同步请求,系统开启“减少动态效果”时关闭动画与过渡。
|
|
31
31
|
|
|
32
32
|
## 管理员操作
|
|
33
33
|
|
|
34
34
|
1. 在企业微信创建独立智能机器人,获取 Bot ID 和 Secret,拉进协作群。为每位成员分别创建机器人并加入同一个群;真人同事也加入群。
|
|
35
|
-
2.
|
|
36
|
-
3.
|
|
35
|
+
2. 选择“接入一个项目”。当前目录属于 Git 项目时会自动带入项目根目录,并带入本机用户名。确认项目,或选择 Git 地址拉取新目录(目录可留空自动生成),点击“继续”。向导会检查项目并推荐验证命令;需要修改时展开“分支与验证方式”,例如 `npm test`、`go test ./...` 或 `sh test.sh`。未识别到验证命令时会展开选项,要求填写后再继续。工具自动识别协作远程与远程默认分支;多个不同远程或默认分支不明时,页面要求选择一次,也可主动选择其他基准分支。检查只读取常见测试入口,不执行项目脚本;实际任务使用确认后的固定程序与参数,不支持管道或命令拼接。
|
|
36
|
+
3. 输入自己的 Bot ID/Secret,点击“连接机器人”。显示名称与主要职责在折叠选项中调整;名称可以是 `Alice` 或“张三”,内部 Agent ID 自动生成,也可自定义身份和标签。
|
|
37
37
|
4. 用自己的企业微信账号 @ 此机器人,发送页面显示的 `协作 接入 六位数字`。页面自动发现群 `chatid` 与本人 `userid`,创建身份、签名账本,配置项目 MCP/Skill 并启动本机机器人 Runner;无需再点击继续。群验证中刷新页面可以恢复进度。
|
|
38
|
-
5.
|
|
38
|
+
5. 从项目页点击“团队与邀请”,找到“批量分配机器人给同事”。每行填写显示名称、选择职责、填写独立机器人的 Bot ID/Secret,点击“增加一位成员/机器人”添加更多行。默认设为该职责的首选执行者并允许所有者群命令;候补与自定义 ID/职责在折叠选项中调整。一次最多 25 行。
|
|
39
39
|
6. 点击“生成全部接入包”。密码自动生成;在“已分配的机器人”逐个下载加密 JSON 文件、查看并复制接入说明。把文件和说明交给指定成员,密码通过另一条可信渠道单独发送。说明不包含密码或 Secret。包默认 7 天有效,同一成员或机器人不会同时分发多个有效邀请;重复 ID/Bot 的批次会在发布前拒绝。
|
|
40
40
|
7. 成员群验证后,“待确认的成员”自动出现申请。核对内部 Agent ID、职责和 userid,明确点击“确认此成员入队”。成员页面自动等待批准并继续配置;批准不会由向导替你做。新的签名策略通过 Git 同步到其他在线成员。
|
|
41
41
|
8. 管理员也按下文把自己的 Codex 对话启用。需要调整审核人时,展开“团队分工、审核与通知设置”,默认阶段审核由执行 Agent 的本人处理;可选管理员或已验证身份的同事。
|
|
@@ -48,7 +48,7 @@ codex-collab
|
|
|
48
48
|
|
|
49
49
|
远程别名属于各自的本机配置:你的 clone 可以叫 `origin`,同事可以叫 `upstream`。成员接入时按邀请中的仓库地址匹配远程,不需要改别名;如果另有个人 fork,不会误选它。团队基准分支写进管理员签名的策略,成员和新增机器人自动继承。每个机器人继续使用独立 clone 和 Codex 对话。
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
管理员在项目页点击“团队与邀请”,再展开“团队分工、审核与通知设置”,点击“读取并调整基准分支”即可切换到已有远程业务分支。修改通过签名版本链同步,只对之后创建的任务生效。已有任务保留原基准分支、创建时的完整 commit SHA、分工与审核规则。修改与其他管理员操作冲突时,重新读取后再保存。
|
|
52
52
|
|
|
53
53
|
新任务在创建时从团队远程基准分支固定起始 SHA。排队期间分支继续提交,首次领取和失败后的候补仍从这个 SHA 开始;阶段接力从上一阶段已验证的精确提交继续。创建快照使用私有账本 clone,不改变业务工作区、当前分支或它的 `FETCH_HEAD`。如果远程基准分支被删除、强制改写为不包含起始 SHA 的历史,或无法读取所需提交,任务会报错;不会自动换成最新代码。应先恢复可读历史,或明确终止旧任务并创建新任务。
|
|
54
54
|
|
|
@@ -62,7 +62,7 @@ codex-collab
|
|
|
62
62
|
2. 在管理员项目的“已分配的机器人”中,打开对应成员的“查看接入说明与密码”。如果显示密码缺失,点击“重新生成接入包与密码”。
|
|
63
63
|
3. 页面会预填原 Bot ID;管理员在本机输入该机器人的 Secret。工具保留原 Agent 与职责,生成新加密文件和新密码,并在 Git 签名版本链中撤销旧邀请。Secret 不会发到聊天或写入 Git。
|
|
64
64
|
4. 通过可信渠道分别交给成员新接入包和新密码。旧文件以及基于旧包创建、尚未批准的申请都不能再使用。
|
|
65
|
-
5.
|
|
65
|
+
5. 成员在“接受同事的邀请”选择 Bob 原来的本机 clone,上传新包并输入新密码,选中文件并填完密码后点击“继续”,核对下一屏展示的接入信息和项目目录后再接入。工具会在确认签名替换关系后复用该 clone 的本地身份记录,清除旧申请并要求重新验证群身份;管理员随后确认新申请。
|
|
66
66
|
|
|
67
67
|
该恢复入口仅用于未批准的普通成员邀请。已获批准的成员不能重签,应继续使用已有本机配置;管理员自己的机器人也不使用分发包恢复流程。若 Git 发布中断,半成品不会显示为可下载包;回到原邀请重试生成即可复用同一恢复记录。
|
|
68
68
|
|
|
@@ -74,8 +74,8 @@ codex-collab
|
|
|
74
74
|
|
|
75
75
|
## 成员操作
|
|
76
76
|
|
|
77
|
-
1. 从管理员取得自己的加密接入包、接入说明和单独发送的密码,打开 `codex-collab setup` 或 `npx xuym-codex-collab@latest setup
|
|
78
|
-
2.
|
|
77
|
+
1. 从管理员取得自己的加密接入包、接入说明和单独发送的密码,打开 `codex-collab setup` 或 `npx xuym-codex-collab@latest setup`,选择“接受同事的邀请”。
|
|
78
|
+
2. 选择接入包文件、输入密码,点击“继续”。下一屏会展示团队、Agent、职责、仓库和建议目录;默认“帮我拉取到新目录”,可修改保存路径,也可切换“使用本机已有项目”。确认后点击“接入项目”。工具先验证接入包再 clone,使用本机 Git 登录;已有项目必须属于包内同一 remote,支持同一仓库的 SSH/HTTPS 表达。
|
|
79
79
|
3. 用**自己的企业微信账号** @ 分配给你的机器人,发送页面验证码。页面自动生成签名身份,把带公钥的入队申请写进协作分支,并进入等待批准;无需返回点击确认。刷新页面可以恢复当前验证或申请进度。
|
|
80
80
|
4. 管理员明确批准后,页面自动检查 Git 权限、写入项目本地 MCP 和 Skill、启动机器人连接。正常流程无需点击“继续接入”;Git/配置异常时会停在可恢复的步骤,处理后再明确重试。
|
|
81
81
|
5. 在 Codex 打开页面上的业务项目,信任项目并加载 MCP/Skill。点击“复制启用指令”,粘贴到要代表你的**已有对话**,例如:
|
|
@@ -84,7 +84,7 @@ codex-collab
|
|
|
84
84
|
使用 $team-collab-desktop,启用当前项目的团队协作,将 bob 机器人绑定到当前对话。项目:项目绝对路径
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
6. Skill 完成身份核对、绑定真实 thread ID、复用或创建该对话的 heartbeat
|
|
87
|
+
6. Skill 完成身份核对、绑定真实 thread ID、复用或创建该对话的 heartbeat,并立即做一次轮询。工作台自动更新状态;展开“查看连接详情”确认机器人认证、对话绑定和实际轮询。
|
|
88
88
|
|
|
89
89
|
启用指令不是 Secret。成员无需手工编辑 JSON、生成密钥或复制 userid;无法识别 Skill 时可展开详细指令作为备用。Codex 若没有暴露真实对话 ID,仍需本人提供该对话 ID/链接;工具不会猜测或访问应用私有数据库。若应用不支持 heartbeat,Skill 会明确说明尚未启用自动轮询,不能仅凭已绑定就认定能接单。
|
|
90
90
|
|
|
@@ -95,7 +95,7 @@ codex-collab
|
|
|
95
95
|
现有通过私有 `peer.json` 运行的项目无需重新生成身份或重绑对话。
|
|
96
96
|
|
|
97
97
|
1. 用原配置停止该机器人的 Runner:`codex-collab stop /absolute/path/to/private-peer.json`。有正在执行的任务时先处理其租约/执行状态。
|
|
98
|
-
2.
|
|
98
|
+
2. 在网页首页展开“其他接入方式”,选择“导入已有配置”,填写原私有配置的完整路径。**旧团队由管理员先导入,然后其他成员分别导入**。
|
|
99
99
|
3. 工具从原策略建立签名版本根,保留原身份、私有数据目录、Codex 对话绑定和任务,再通过原配置路径重启 Runner。
|
|
100
100
|
4. 向导刷新可识别的项目 MCP 和 Skill;重新加载 MCP,再把页面的新启用指令发送到原绑定对话,更新原 heartbeat 的提示词。以后统一在工作台查看状态、添加新成员。
|
|
101
101
|
5. 原 v2 团队不会仅因导入就改变接力行为。所有成员更新工具并重启机器人和 MCP 后,管理员在“真人审核与通知”保存规则,发布 v3 策略。此后创建的新任务应用新规则;正在执行的旧任务继续遵循原策略。
|
|
@@ -138,8 +138,8 @@ codex-collab
|
|
|
138
138
|
准备同一业务仓库的两个独立 clone、两个企业微信机器人和两个 Codex 对话。管理员给自己增加 Agent 可以直接在同一工作台完成:
|
|
139
139
|
|
|
140
140
|
1. 以 Alice 初始化团队,完成群验证并进入管理员项目。已有团队可直接打开已就绪的管理员项目。
|
|
141
|
-
2.
|
|
142
|
-
3. 保留“首选执行者”时,Bob 成为 backend 首选;Alice 若也有 backend
|
|
141
|
+
2. 在项目页点击“添加我的机器人”(或“团队与邀请”中的“给自己增加机器人”),确认独立项目目录并填写新 Agent 名称 `bob`、职责 `backend`,点击“继续”,再填写新机器人的 Bot ID/Secret。
|
|
142
|
+
3. 保留“首选执行者”时,Bob 成为 backend 首选;Alice 若也有 backend 能力则是候补。点击“连接机器人”。无需包密码或下载接入包。
|
|
143
143
|
4. 用初始化 Alice 时的**同一个企业微信账号** @Bob,发送页面验证码,页面自动继续。工具校验本人身份,自动签名批准新 Agent、配置 Bob 项目的 MCP/Skill 并启动连接。Bob 仍是 member,不会继承 Alice 的管理员角色。
|
|
144
144
|
5. 在 Alice clone 和 Bob clone 中分别打开要绑定的已有 Codex 对话,向各自对话粘贴该项目的“启用指令”。每个 Agent 各自创建 heartbeat,确认身份与最近轮询。
|
|
145
145
|
6. 在群里 @Alice 创建包含两种职责的任务,例如 `[frontend>backend]`。默认 Alice 阶段提交后你 @Alice 审核,Bob 阶段提交后你 @Bob 审核,最后 @Alice 完成任务。以每次通知指定的审核身份和版本号为准。
|
|
@@ -182,7 +182,7 @@ Secret 若曾发到聊天或 Git,应在企业微信重新生成后更新本机
|
|
|
182
182
|
|
|
183
183
|
## 管理、重绑与移除本机接入
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
从首页打开项目,再打开自己的机器人,展开“查看连接详情 → 管理与重置”。所有操作先预览当前 Agent、clone、对话 ID 和影响,再输入当前 Agent 名称确认。重新绑定或移除时先在原对话暂停协作 heartbeat;网页无法控制 Codex 应用自动化,也不会删除聊天。
|
|
186
186
|
|
|
187
187
|
**重新绑定对话**保留成员私钥和机器人配置,停止 Runner 并清除本机对话绑定及轮询观察状态。复制项目页面的启用指令到目标对话,完成绑定后启动连接。旧对话的轮询因绑定失效无法再领取任务。
|
|
188
188
|
|
|
@@ -198,9 +198,9 @@ Secret 若曾发到聊天或 Git,应在企业微信重新生成后更新本机
|
|
|
198
198
|
|
|
199
199
|
## 0.5.0 后台连接与排查
|
|
200
200
|
|
|
201
|
-
|
|
201
|
+
首次使用推荐 `codex-collab setup`;直接运行 `codex-collab` 也会打开同一个向导。首次在项目目录运行会带入项目路径与本机显示名称。团队名称、内部身份与职责标签收在更多设置中,仍需确认适合项目的验证命令。
|
|
202
202
|
|
|
203
|
-
|
|
203
|
+
邀请文件和密码填好后点击“继续”,下一屏展示成员、职责与项目。默认拉取到推荐目录;可以留空目录直接接入,也可以选择已有独立 clone。给自己增加机器人同样支持自动拉取独立目录。
|
|
204
204
|
|
|
205
205
|
后台工作台与浏览器生命周期独立。macOS 使用 LaunchAgent;Linux 使用 systemd 用户服务。服务保留启动时的 Node 路径和 PATH,升级或更换 Node 安装位置后可运行 `codex-collab autostart on` 更新。自启注册失败会显示说明,当前会话仍尝试使用独立后台进程。Windows 暂时只支持独立后台进程。
|
|
206
206
|
|
package/docs/protocol.md
CHANGED
|
@@ -16,6 +16,6 @@ Task IDs are opaque and unique within a repository. `spec.json` defines reposito
|
|
|
16
16
|
|
|
17
17
|
From `open` (the task creator's desktop work), `assigned` (the current owner), or `running`, a verified `handoff` becomes `waiting`. It must contain a concise summary and `refs.branch`, `refs.commit` and `refs.tests`; the server verifies that the pinned commit is the tip of its own `codex/*` branch (on `origin` when Git push is enabled). Only the creator may hand off an open task and only the assignee may hand off assigned/running work. An admin then explicitly assigns the waiting task to the next person; that person's Runner fetches the handoff branch and starts from the pinned commit, not `main`. From `running`, `progress` stays `running`, `blocked` or `run_failed` becomes `blocked`; from `blocked` or `waiting`, `assigned` returns to `assigned`. From `review`, `review_started` records a review run and `review_note` records concise review notes while preserving `review`; `reviewed(changes_requested)` becomes `blocked`. A `review_requested` event must name the reviewing agent. `cancelled` terminates any nonterminal state. A `completed` event is allowed only after approved review, and must carry evidence references as required by the server policy. Run completion and task completion are different events.
|
|
18
18
|
|
|
19
|
-
The server must deduplicate
|
|
19
|
+
WeCom is the only supported chat channel. The server must deduplicate WeCom message IDs with `wecom:<message-id>` idempotency keys. New group-created task `spec.source` includes `chat_id` and `channel: "wecom"`; new group assignments carry the same explicit channel. Unsupported channel values are rejected on create, assign and report. Group commands cannot access a task from another group or a task without explicit WeCom provenance. The schemas describe supported writes; historical metadata can still be read through the API without being rewritten or reinterpreted as WeCom, and tasks from an unsupported or unknown channel do not generate WeCom notifications. For two concurrent modifications, assignments and sequence allocation are serialized at the Git-writing service. A Git commit author string is not an authorization mechanism. Do not commit full chat transcripts, authentication material or private filesystem paths.
|
|
20
20
|
|
|
21
21
|
Schemas: `schemas/task.schema.json`, `schemas/event.schema.json`. A simple executable reducer lives in `packages/protocol/src/index.mjs`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 0.8.0:专注企业微信
|
|
2
|
+
|
|
3
|
+
当前只支持企业微信,优先稳定接入、群收发、任务领取、代码交接与真人审核。其他 IM 的接入在企微流程稳定后再评估。
|
|
4
|
+
|
|
5
|
+
- 移除飞书适配器、群信息发现脚本、身份映射入口及 SDK;安装依赖减少 24 个包。
|
|
6
|
+
- 网页向导和 Peer 保持现有企微接入方式,同一项目多个机器人、个人接入包及已绑定 Codex 对话继续使用。
|
|
7
|
+
- 旧中心服务保留企微、HTTP/MCP、Git 任务账本和 Runner。新群任务与分配明确记录 `channel: "wecom"`;其他通道写入被拒绝。
|
|
8
|
+
- 历史任务保留原始来源。属于其他通道或缺少明确企微来源的任务仍可通过已授权 API 读取,不允许企微群查询或发送群通知。
|
|
9
|
+
|
|
10
|
+
## 升级
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
npm install --global xuym-codex-collab@0.8.0
|
|
14
|
+
codex-collab
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
现有 Peer 配置与业务仓库无需迁移。升级后重新启动本机工作台与已运行的机器人连接,使进程加载新版本;需要时在对应 Codex 对话重新连接 MCP。
|
|
18
|
+
|
|
19
|
+
从源码使用旧中心服务时,账号生成脚本只接受 `id:role:wecom_userid`,仅用 API 则填 `id:role:-`。旧四段参数会报错,避免身份错配。已有账号文件与个人令牌继续有效;补充企微身份可使用 `scripts/bind-wecom-users.mjs`,无需重新生成令牌。
|
|
20
|
+
|
|
21
|
+
本轮验证使用临时 Git 仓库、企微消息与 Codex mock,另检查 npm 安装和向导启动;不新增真实群或跨设备验收结论。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xuym-codex-collab",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Git-backed collaboration tools for Codex teams, with MCP, WeCom, and local runners.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"node": ">=20"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
|
+
"postinstall": "node bin/postinstall.mjs",
|
|
41
42
|
"test": "node --test packages/protocol/test/*.test.mjs packages/git-store/test/*.test.mjs packages/peer/test/*.test.mjs apps/server/test/*.test.mjs apps/peer/test/*.test.mjs apps/onboarding/test/*.test.mjs scripts/peer/test/*.test.mjs tests/e2e/*.test.mjs",
|
|
42
43
|
"server": "node apps/server/main.mjs",
|
|
43
44
|
"runner": "node apps/runner/main.mjs",
|
|
@@ -52,7 +53,6 @@
|
|
|
52
53
|
"peer": "node scripts/peer/cli.mjs"
|
|
53
54
|
},
|
|
54
55
|
"dependencies": {
|
|
55
|
-
"@larksuiteoapi/node-sdk": "1.74.0",
|
|
56
56
|
"@modelcontextprotocol/node": "2.1.1",
|
|
57
57
|
"@modelcontextprotocol/server": "2.3.1",
|
|
58
58
|
"@openai/codex-sdk": "0.161.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"summary": { "type": "string", "maxLength": 4000 },
|
|
35
35
|
"assignee": { "type": "string", "minLength": 1 },
|
|
36
36
|
"chat_id": { "type": "string", "minLength": 1 },
|
|
37
|
-
"channel": { "
|
|
37
|
+
"channel": { "const": "wecom" },
|
|
38
38
|
"run_id": { "type": "string", "minLength": 1 },
|
|
39
39
|
"decision": { "enum": ["approved", "changes_requested"] },
|
|
40
40
|
"refs": {
|
package/schemas/task.schema.json
CHANGED
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
"description": { "type": "string" },
|
|
14
14
|
"base_branch": { "type": "string", "minLength": 1 },
|
|
15
15
|
"acceptance": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
16
|
-
"source": { "type": "object", "additionalProperties": { "type": "string" } }
|
|
16
|
+
"source": { "type": "object", "properties": { "channel": { "const": "wecom" } }, "additionalProperties": { "type": "string" } }
|
|
17
17
|
}
|
|
18
18
|
}
|