weaver-work-cli 0.1.4 → 0.1.6

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.
Files changed (88) hide show
  1. package/dist/internal/e10/auth/commands.js +4 -1
  2. package/dist/internal/e10/request-runtime.js +3 -2
  3. package/dist/shortcuts/index.js +4 -0
  4. package/dist/shortcuts/meeting/continuation.js +70 -0
  5. package/dist/shortcuts/meeting/errors.js +63 -0
  6. package/dist/shortcuts/meeting/host.js +167 -0
  7. package/dist/shortcuts/meeting/index.js +123 -0
  8. package/dist/shortcuts/meeting/manifest.js +64 -0
  9. package/dist/shortcuts/meeting/operations/catalogs.js +58 -0
  10. package/dist/shortcuts/meeting/operations/change.js +242 -0
  11. package/dist/shortcuts/meeting/operations/conflicts.js +142 -0
  12. package/dist/shortcuts/meeting/operations/create.js +349 -0
  13. package/dist/shortcuts/meeting/operations/env.js +191 -0
  14. package/dist/shortcuts/meeting/operations/lifecycle.js +139 -0
  15. package/dist/shortcuts/meeting/operations/meetings.js +73 -0
  16. package/dist/shortcuts/meeting/operations/receipts.js +195 -0
  17. package/dist/shortcuts/meeting/operations/registry.js +47 -0
  18. package/dist/shortcuts/meeting/operations/rooms.js +132 -0
  19. package/dist/shortcuts/meeting/operations/shared.js +112 -0
  20. package/dist/shortcuts/meeting/operations/signs.js +41 -0
  21. package/dist/shortcuts/meeting/operations/types.js +25 -0
  22. package/dist/shortcuts/meeting/operations.js +19 -0
  23. package/dist/shortcuts/yimiaoban/continuation.js +70 -0
  24. package/dist/shortcuts/yimiaoban/errors.js +61 -0
  25. package/dist/shortcuts/yimiaoban/host.js +469 -0
  26. package/dist/shortcuts/yimiaoban/index.js +271 -0
  27. package/dist/shortcuts/yimiaoban/manifest.js +28 -0
  28. package/dist/shortcuts/yimiaoban/operations/file-user.js +288 -0
  29. package/dist/shortcuts/yimiaoban/operations/group-read.js +477 -0
  30. package/dist/shortcuts/yimiaoban/operations/group-write.js +591 -0
  31. package/dist/shortcuts/yimiaoban/operations/msg-parse.js +429 -0
  32. package/dist/shortcuts/yimiaoban/operations/msg-sync.js +519 -0
  33. package/dist/shortcuts/yimiaoban/operations/msg-write.js +593 -0
  34. package/dist/shortcuts/yimiaoban/operations/person.js +102 -0
  35. package/dist/shortcuts/yimiaoban/operations/registry.js +38 -0
  36. package/dist/shortcuts/yimiaoban/operations/session.js +437 -0
  37. package/dist/shortcuts/yimiaoban/operations/shared.js +236 -0
  38. package/dist/shortcuts/yimiaoban/operations/types.js +27 -0
  39. package/dist/shortcuts/yimiaoban/operations/write-util.js +78 -0
  40. package/dist/shortcuts/yimiaoban/operations.js +8 -0
  41. package/docs/_catalog.md +6 -0
  42. package/docs/meeting.md +48 -0
  43. package/docs/yimiaoban.md +86 -0
  44. package/package.json +1 -1
  45. package/skill-template/business-info.json +4 -1
  46. package/skill-template/domains/meeting.md +3 -0
  47. package/skill-template/domains/yimiaoban.md +21 -0
  48. package/skills/weaver-e10-calendar/SKILL.md +1 -0
  49. package/skills/weaver-e10-esb/SKILL.md +1 -0
  50. package/skills/weaver-e10-esb/references/source-manifest.json +3 -3
  51. package/skills/weaver-e10-hrm/SKILL.md +1 -0
  52. package/skills/weaver-e10-jiuchuanhui/SKILL.md +1 -0
  53. package/skills/weaver-e10-jucailin/SKILL.md +1 -0
  54. package/skills/weaver-e10-mail/SKILL.md +1 -0
  55. package/skills/weaver-e10-meeting/SKILL.md +106 -0
  56. package/skills/weaver-e10-meeting/product.json +8 -0
  57. package/skills/weaver-e10-meeting/references/meeting-change.md +67 -0
  58. package/skills/weaver-e10-meeting/references/meeting-create.md +52 -0
  59. package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +57 -0
  60. package/skills/weaver-e10-meeting/references/meeting-queries.md +61 -0
  61. package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +48 -0
  62. package/skills/weaver-e10-meeting/references/meeting-update.md +7 -0
  63. package/skills/weaver-e10-meeting/references/source-manifest.json +50 -0
  64. package/skills/weaver-e10-plan/SKILL.md +1 -0
  65. package/skills/weaver-e10-plan/references/source-manifest.json +3 -3
  66. package/skills/weaver-e10-qiyecheng/SKILL.md +1 -0
  67. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +3 -3
  68. package/skills/weaver-e10-shared/SKILL.md +4 -0
  69. package/skills/weaver-e10-skill-maker/SKILL.md +1 -0
  70. package/skills/weaver-e10-skill-maker/references/weaver-skill-style.md +1 -1
  71. package/skills/weaver-e10-wenshuding/SKILL.md +1 -0
  72. package/skills/weaver-e10-wenshuding/references/source-manifest.json +3 -3
  73. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +5 -5
  74. package/skills/weaver-e10-yimiaoban/SKILL.md +104 -0
  75. package/skills/weaver-e10-yimiaoban/product.json +8 -0
  76. package/skills/weaver-e10-yimiaoban/references/ding-write.md +68 -0
  77. package/skills/weaver-e10-yimiaoban/references/error-codes.md +85 -0
  78. package/skills/weaver-e10-yimiaoban/references/field-resolution.md +46 -0
  79. package/skills/weaver-e10-yimiaoban/references/file-user-i18n.md +54 -0
  80. package/skills/weaver-e10-yimiaoban/references/group-read.md +55 -0
  81. package/skills/weaver-e10-yimiaoban/references/group-write.md +72 -0
  82. package/skills/weaver-e10-yimiaoban/references/msg-read.md +59 -0
  83. package/skills/weaver-e10-yimiaoban/references/msg-write.md +64 -0
  84. package/skills/weaver-e10-yimiaoban/references/person.md +44 -0
  85. package/skills/weaver-e10-yimiaoban/references/safety-boundaries.md +61 -0
  86. package/skills/weaver-e10-yimiaoban/references/session-sysmsg.md +47 -0
  87. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +485 -0
  88. package/skills/weaver-e10-ziguanjia/SKILL.md +1 -0
@@ -14,6 +14,7 @@ cliHelp: "weaver-work-cli mail --help"
14
14
  ---
15
15
 
16
16
  **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
17
+
17
18
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
18
19
  所有命令通过 `weaver-work-cli --json mail run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli mail schema` 是 operation、字段和风险等级的合约来源。
19
20
  命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对时,同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: weaver-e10-meeting
3
+ display_name: 泛微会议管理
4
+ display_name_en: Weaver Meeting Management
5
+ description: "泛微 E10 会议管理(标准版):环境模式探测、会议列表、会议室与占用、会议类型、强制冲突检测、预约会议(prepare/apply 确认链)、回执与签到查询。"
6
+ description_zh: "泛微 E10 会议管理(标准版):模式探测、会议/会议室/类型查询、冲突检测、预约会议确认链、回执更新确认链与签到统计。"
7
+ description_en: "Weaver E10 meeting management (standard edition): environment detection, meeting/room/type queries, conflict checks, booking with prepare/apply confirmation chain, receipt updates and sign-in summary."
8
+ version: 1.0.0
9
+ author: 泛微网络科技股份有限公司
10
+ agent_created: true
11
+ requires:
12
+ bins: ["weaver-work-cli"]
13
+ cliHelp: "weaver-work-cli meeting --help"
14
+ ---
15
+
16
+ # 泛微 E10 会议管理 Skill(标准版)
17
+
18
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --target-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
19
+
20
+ 凭证边界:所有 E10 调用凭证一律由 `weaver-work-cli` 的登录托管凭据(`auth` 命令/profile 体系)提供,禁止硬编码任何密钥,禁止向用户索取 Cookie、ETEAMSID、Token 或密码。
21
+
22
+ 本 Skill 通过 `weaver-work-cli meeting` 命令调用真实 operation,不绕过 CLI 直接拼接口。
23
+
24
+ ## 路由优先级
25
+
26
+ 1. 先判断用户意图是否属于会议域:会议、会议室、预约/建会、会议冲突、签到、回执、会议类型、占用视图。
27
+ 2. **属于本模块 → 第一步强制跑 `meeting.env.detect` 确定环境模式**(默认按 baseUrl 读缓存;用户说"重新探测/刷新模式"时传 `refresh:true`):
28
+ - `mode=standard` → 继续按「命令表」选择 operation;
29
+ - `mode=eb` → **明确告知"EB 版会议链路 CLI 未实现"并停止**,禁止拿标准接口的结果冒充 EB 环境数据;
30
+ - `env_unavailable` → 提示环境会议应用未安装或接口未配置完整,停止。
31
+ 3. 不确定字段先跑 `weaver-work-cli meeting schema`。
32
+ 4. 不属于本模块(日程、审批流程、组织查询)→ 转对应 Skill(calendar / workflow / hrm)。
33
+
34
+ ## 高优先级语义
35
+
36
+ - 「今天的会议 / 下一个会」→ `meeting.list`(`filterDate` 客户端过滤;接口 body 过滤实测不生效,不要现场试 body)。
37
+ - 「会议室占用 / 空闲 / 推荐」→ `meeting.room.list`(必须成对传 `beginDate`/`endDate`;`disabled=true` 已占用,不得推荐)。
38
+ - 「预约会议 / 建会」→ 先 `meeting.create.prepare`(内部强制冲突检测),用户确认后 `meeting.create.apply`。
39
+ - 「改期 / 换会议室 / 改参会人 / 变更会议」→ `meeting.change.prepare` → 确认后 `apply`。CLI 按会议状态**自动分流**:草稿走 `UPDATE`、正常会议走 `CHANGE`;权限由服务端判定并返回原文提示(如"您没有变更权限!"),必须原样转达用户。
40
+ - 「取消会议 / 不开了」→ `meeting.cancel.prepare` → 确认后 `apply`。
41
+ - 「删除会议记录」→ `meeting.delete.prepare` → 确认后 `apply`。
42
+ - 「提前结束会议」→ **CLI 不支持**(服务端 `overMeeting` 为空实现,调用会假成功但不生效),如实告知用户并建议在系统页面操作。
43
+ - 「回执为否 / 请假」→ `meeting.receipt.update.prepare`(自动回查回执记录 id)→ 确认后 `apply`。
44
+ - 「签到情况」→ `meeting.sign.list`(输出已签/未签统计)。
45
+
46
+ ## 命令表
47
+
48
+ | 用户意图 | CLI operation | Reference |
49
+ | --- | --- | --- |
50
+ | 探测环境模式(EB/标准) | `meeting.env.detect` | [meeting-queries.md](references/meeting-queries.md) |
51
+ | 建会前置判断(onlyFlowCreate/工作流) | `meeting.calendar.base` | [meeting-queries.md](references/meeting-queries.md) |
52
+ | 会议列表 / 今天的会议 | `meeting.list`(便捷命令 `weaver-work-cli meeting today`) | [meeting-queries.md](references/meeting-queries.md) |
53
+ | 会议详情表单结构 / 提醒 options | `meeting.detail.field` | [meeting-queries.md](references/meeting-queries.md) |
54
+ | 会议室列表与占用 | `meeting.room.list` | [meeting-queries.md](references/meeting-queries.md) |
55
+ | 会议室占用视图 | `meeting.room.usage` | [meeting-queries.md](references/meeting-queries.md) |
56
+ | 会议类型列表 | `meeting.type.list` | [meeting-queries.md](references/meeting-queries.md) |
57
+ | 会议室/人员/属性冲突检测 | `meeting.conflict.room` / `member` / `roomAttribute` | [meeting-create.md](references/meeting-create.md) |
58
+ | 预约会议 | `meeting.create.prepare` → `meeting.create.apply` | [meeting-create.md](references/meeting-create.md) |
59
+ | 会议变更(改期 / 改地点 / 改参会人) | `meeting.change.prepare` → `meeting.change.apply` | [meeting-change.md](references/meeting-change.md) |
60
+ | 取消会议 | `meeting.cancel.prepare` → `meeting.cancel.apply` | [meeting-lifecycle.md](references/meeting-lifecycle.md) |
61
+ | 删除会议记录 | `meeting.delete.prepare` → `meeting.delete.apply` | [meeting-lifecycle.md](references/meeting-lifecycle.md) |
62
+ | 回执列表 | `meeting.receipt.list` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
63
+ | 更新回执 | `meeting.receipt.update.prepare` → `apply` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
64
+ | 签到记录与统计 | `meeting.sign.list` | [meeting-receipts-signs.md](references/meeting-receipts-signs.md) |
65
+
66
+ ## 处理链:预约会议(高风险写,强制确认链)
67
+
68
+ 1. **环境模式确定(强制第一步)**:跑 `meeting.env.detect`(默认读缓存,`refresh:true` 强制刷新);`mode=eb` → 提示 EB 未实现并停止;`env_unavailable` → 提示并停止。
69
+ 2. 解析意图:名称 / 时间(`yyyy-MM-dd HH:mm`)/ 会议室 / 参会人 / 类型;缺失字段先向用户确认,**禁止字段未确认直接建会**。
70
+ 3. `meeting.room.list`(带时间范围)推荐空闲会议室、`meeting.type.list` 推荐类型,交用户点选。
71
+ 3. `meeting.create.prepare`:自动执行建会路径检查(`onlyFlowCreate=1` 或周期工作流 → 拒绝并提示走流程)与**强制冲突检测**(接口失败视为冲突;`cansub=false` 直接拒绝;`cansub=true` 有冲突描述 → warnings 提醒并建议换时间/地点,**绝不提供"强制新建"选项**)。
72
+ 4. 向用户摘要 preview(含 caller/contacter 默认当前用户、周期 `repeatDesc` 自动拼接)。
73
+ 5. 用户明确确认 → `meeting.create.apply`(`confirm: true` + continuation,**10 分钟内有效,过期重新 prepare**)。
74
+ 6. 结果回读用 `meeting.list`,会议链接由 Agent 按 `{baseUrl}/sp/meeting/meetingSingle?meetingId={id}` 内联输出。
75
+
76
+ ## 处理链:变更 / 取消 / 删除会议(高风险写,强制确认链)
77
+
78
+ 1. 先用 `meeting.list`(或用户给出的会议 id)定位目标会议,必要时把 `[名称]({baseUrl}/sp/meeting/meetingSingle?meetingId={id})` 给用户核对。
79
+ 2. `meeting.change.prepare`(变更)/ `meeting.cancel.prepare` / `meeting.delete.prepare`(入参 `id`):CLI 先**回查会议存在性**;`change` 还会按会议状态自动决定 `operateType`(草稿=UPDATE、正常=CHANGE)。**权限判定交给服务端**,CLI 不做权限预判。成功返回 `preview` + `continuation`(10 分钟有效)。
80
+ 3. 向用户摘要动作与不可逆性(变更=覆盖所提交字段、当前状态与分流类型;取消=会议进入取消状态、占用/回执/签到失效;删除=彻底移除记录),**取得明确确认**。变更只提交 preview 中列出的字段。
81
+ 4. 用户确认 → `meeting.*.apply`(`confirm: true` + continuation)。
82
+ 5. 结果回读:`meeting.list` 确认状态(取消/删除后该会议不应再出现在正常列表)。
83
+ 6. **禁止**跳过 prepare 直接 apply;**禁止**在未确认目标存在时执行写操作。
84
+
85
+ ## 执行原则
86
+
87
+ - 最小必要查询;列表结果默认摘要输出,不粘贴超长 JSON。
88
+ - 长 id(`address`/`mtId`/`hrmMembers` 等)一律字符串传递(超 2^53 数字会失真)。
89
+ - **服务端业务/权限提示必须原文转达用户**:如"您没有变更权限!""您没有取消权限!""您没有删除权限!""您没有读取权限!"——不得改写成模糊说法,也不得建议用户绕过 CLI 自行拼接口。
90
+ - 错误驱动:`error.type/subtype` 决定下一步(`session_expired` → 登录流程;`conflict_rejected` → 停止;`confirmation.required` → 补 confirm;`meeting_not_operable` → 核对会议 id 与可见性)。
91
+
92
+ ## 写操作失败决策树
93
+
94
+ - 写请求发出后网络中断 / 超时 → CLI 返回 `partial/write_uncertain`:**立即停止,禁止自动重试**,先 `meeting.list` / `meeting.receipt.list` 只读回查确认是否已生效,确未生效才可重新 prepare。
95
+ - `apply` 返回 `target_changed` / `continuation_expired` → 重新执行 prepare,向用户重新确认。
96
+ - 冲突 `conflict_rejected` → 直接停止,不提供任何绕过选项。
97
+ - `session_expired` → 先完成 E10 登录,再从失败步骤续跑,已成功的步骤不重做。
98
+
99
+ ## 不在范围
100
+
101
+ - 禁止绕过 CLI 直接 `curl`/`fetch` E10 接口;禁止读取认证目录与 Cookie。
102
+ - **历史变更**:旧 `meeting.update.*` 已下线(它固定发送 `operateType=UPDATE`,与业务语义不符),改由 `meeting.change.*` 按会议状态自动分流;迁移说明见 [meeting-update.md](references/meeting-update.md)。
103
+ - **提前结束会议(meeting.over)不提供**:服务端接口为空实现(源码中 service 调用被注释、直接返回成功),调用只会得到"假成功";请引导用户在系统页面操作,禁止绕过 CLI 自行拼接口。
104
+ - EB 版业务链路(`query_mtDetail_list`、`create_meeting`、占用/回执/签到三件套、议题、纪要、报表)未随 v1 实现,见 manifest `withheldOperations`。
105
+ - 周期会议走工作流(`repeatWorkFlowBaseIds` 非空)与 `onlyFlowCreate=1` 的流程建会需要工作流集成,CLI 会主动拒绝。
106
+ - 签到二维码、签到写操作、会议室/类型管理、会议变更/取消/结束未实现。
@@ -0,0 +1,8 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "product": "weaver-work-cli",
4
+ "productVersion": "0.1.3",
5
+ "packageName": "weaver-work-cli",
6
+ "command": "weaver-work-cli",
7
+ "nodeEngine": ">=18"
8
+ }
@@ -0,0 +1,67 @@
1
+ # 会议变更(改期 / 改地点 / 改参会人)— prepare/apply 确认链
2
+
3
+ ## 何时使用
4
+
5
+ 修改已有会议的时间、会议室/地点、参会人、类型、召集人/联系人等主表字段。
6
+
7
+ > **术语与分流**:业务上叫「变更」。CLI 会按会议当前状态**自动选择服务端操作类型**,调用方无需也不应自行指定:
8
+ > - **草稿**会议(`mtStatus="草稿"`)→ `operateType=UPDATE`(更新)
9
+ > - **正常**会议(`mtStatus="未开始"/"进行中"` 等)→ `operateType=CHANGE`(变更)
10
+ >
11
+ > 依据源码 `MeetingBaseServiceUtils.getShowButtons`:草稿给按钮 `do_edit`,正常且未结束给按钮 `do_change`。
12
+
13
+ ## 输入要点
14
+
15
+ - 必填 `id`,再给出**至少一个**要修改的字段(否则报 `no_changes`)。
16
+ - 可改字段:`name` / `beginDatetime` / `endDatetime` / `address` / `customizeAddress` / `mtType` / `hrmMembers` / `orgMembers` / `otherMembers` / `crmMembers` / `totalMember` / `caller` / `contacter`。
17
+ - 时间格式 `yyyy-MM-dd HH:mm`;长 id 用字符串;人员/部门/客户字段用逗号分隔 id 串。
18
+ - **只提交显式给出的字段**:`preview.changedFields` 列出本次将提交的字段;未列出的主表字段是否保持原值由服务端决定(源码只确认提醒/议题/服务会按 id 回填)。若担心覆盖,请把需要保持不变的主表字段一并显式传入。
19
+
20
+ ## 命令
21
+
22
+ Windows PowerShell:
23
+
24
+ ```powershell
25
+ weaver-work-cli --json meeting run meeting.change.prepare --input-json '{\"id\":\"1305624900858404950\",\"beginDatetime\":\"2026-09-18 15:00\",\"endDatetime\":\"2026-09-18 16:00\"}'
26
+ # 用户确认后(continuation 与字段都保持一致):
27
+ weaver-work-cli --json meeting run meeting.change.apply --input-json '{\"confirm\":true,\"continuation\":\"<prepare返回>\",\"id\":\"1305624900858404950\",\"beginDatetime\":\"2026-09-18 15:00\",\"endDatetime\":\"2026-09-18 16:00\"}'
28
+ ```
29
+
30
+ macOS/Linux(bash/zsh):
31
+
32
+ ```bash
33
+ weaver-work-cli --json meeting run meeting.change.prepare --input-json '{"id":"1305624900858404950","beginDatetime":"2026-09-18 15:00","endDatetime":"2026-09-18 16:00"}'
34
+ weaver-work-cli --json meeting run meeting.change.apply --input-json '{"confirm":true,"continuation":"<prepare返回>","id":"1305624900858404950","beginDatetime":"2026-09-18 15:00","endDatetime":"2026-09-18 16:00"}'
35
+ ```
36
+
37
+ ## 输出处理
38
+
39
+ - `prepare` 返回 `AWAITING_CONFIRMATION` + `preview`:
40
+ - `currentStatus`(会议当前状态原文)、`operateType`(`UPDATE`/`CHANGE`)与 `operateTypeReason`(分流原因);
41
+ - `changedFields`(本次将提交的字段)与 `body`(完整提交体);
42
+ - `continuation`(10 分钟有效)。
43
+ - 向用户摘要「会议名 + 当前状态 + 走的是更新还是变更 + 改了哪些字段」后再确认。
44
+ - `apply` 返回 `COMPLETE` + `operateType`;随后 `meeting.list` 回查新时间/地点。
45
+
46
+ ## 权限与提示(重要)
47
+
48
+ - **权限判定完全由服务端负责**(`MeetingPermissionEvent` 按会议状态 + 会议基础设置 + 召集人/监控权限判定按钮)。CLI **不做**权限预判。
49
+ - 无权限时服务端返回本地化原文提示,CLI 原样透传,**必须完整转达用户**,例如:
50
+ - `您没有变更权限!`(正常会议不允许变更)
51
+ - `您没有取消权限!` / `您没有删除权限!` / `您没有提前结束权限!`
52
+ - `您没有读取权限!`
53
+ - 不要把这类提示改写成"操作失败"之类模糊说法,也不要建议用户绕过 CLI 自行拼接口。
54
+
55
+ ## 注意
56
+
57
+ - 变更、取消、删除都是**写操作**:`apply` 的字段必须与 `prepare` 完全一致(不一致报 `target_changed`)。
58
+ - 会议状态在 prepare 与 apply 之间发生变化(如正常→草稿或已结束),CLI 会报 `target_changed` 并要求重新 prepare。
59
+ - 改期不会自动做冲突检测——需要时应先跑 `meeting.conflict.room` / `meeting.conflict.member` 核对目标时间段。
60
+ - 示例中的 id 为 `PLACEHOLDER_VALUE`。
61
+
62
+ ## 失败处理
63
+
64
+ - `meeting_not_found`:列表中定位不到该会议(id 错误或当前账号不可见)。
65
+ - `no_changes`:没有提供任何可改字段。
66
+ - `confirmation.required` / `target_changed` / `continuation_expired`:补 `confirm: true`,或重新 prepare 并再次确认。
67
+ - 写请求发出后网络中断 → `partial/write_uncertain`:**禁止自动重试**,先 `meeting.list` 回查是否已生效。
@@ -0,0 +1,52 @@
1
+ # 冲突检测与预约会议(prepare/apply 确认链)
2
+
3
+ ## 何时使用
4
+
5
+ 预约会议 / 建会;建会前的会议室 / 参会人 / 属性冲突核查。
6
+
7
+ ## 输入要点
8
+
9
+ - 必填:`name`、`beginDatetime`、`endDatetime`(`yyyy-MM-dd HH:mm`)。
10
+ - `caller`/`contacter` 缺省当前登录用户(后端 contacter 无兜底,CLI 已显式默认)。
11
+ - 会议室 `address`、类型 `mtType`、参会人 `hrmMembers`/`orgMembers`(逗号分隔 id 字符串)。
12
+ - 周期会议:`repeatType`(1=每天 2=每周 4=每月 5=每年 6=自定义)+ `finishAt`(1=次数 2=日期,**禁止 0=永不**)+ `count`/`until`;`repeatDesc` 缺省按规则自动拼接(如 `每 1 周 周一 周三 周五 重复5次 非工作日正常召开`)。
13
+
14
+ ## 命令
15
+
16
+ Windows PowerShell:
17
+
18
+ ```powershell
19
+ weaver-work-cli --json meeting run meeting.conflict.room --input-json '{"address":"1297870848451641350","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00"}'
20
+ weaver-work-cli --json meeting run meeting.conflict.member --input-json '{"hrmids":"100,101","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00"}'
21
+ weaver-work-cli --json meeting run meeting.create.prepare --input-json '{"name":"周会","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00","address":"1297870848451641350","hrmMembers":"100,101"}'
22
+ # 用户确认后:
23
+ weaver-work-cli --json meeting run meeting.create.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","name":"周会","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00","address":"1297870848451641350","hrmMembers":"100,101"}'
24
+ ```
25
+
26
+ macOS/Linux(bash/zsh):
27
+
28
+ ```bash
29
+ weaver-work-cli --json meeting run meeting.conflict.room --input-json '{"address":"1297870848451641350","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00"}'
30
+ weaver-work-cli --json meeting run meeting.conflict.member --input-json '{"hrmids":"100,101","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00"}'
31
+ weaver-work-cli --json meeting run meeting.create.prepare --input-json '{"name":"周会","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00","address":"1297870848451641350","hrmMembers":"100,101"}'
32
+ # 用户确认后:
33
+ weaver-work-cli --json meeting run meeting.create.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","name":"周会","beginDatetime":"2026-09-11 09:00","endDatetime":"2026-09-11 10:00","address":"1297870848451641350","hrmMembers":"100,101"}'
34
+ ```
35
+
36
+ ## 输出处理
37
+
38
+ - 冲突检测结果 `verdict`:`ok`(无冲突)/ `warn`(可提交但有冲突描述 → warnings 建议换时间/地点)/ `rejected`(`cansub=false`)/ `unknown`(接口未返回 cansub,人工复核)。
39
+ - `create.prepare` 返回 `AWAITING_CONFIRMATION` + `preview` + `continuation`(10 分钟有效);向用户摘要后再 apply。
40
+ - `create.apply` 成功返回 `meetingId`;用 `meeting.list` 回读确认。
41
+
42
+ ## 注意
43
+
44
+ - `prepare` 内部已强制执行冲突检测(接口失败视为冲突、`cansub=false` 直接拒绝),独立冲突 operation 用于"只查不建"场景。
45
+ - **命中任何冲突(含仅提醒)一律不得提示绕过冲突直接建会**;`cansub=false` 直接终止。
46
+ - `onlyFlowCreate=1` 或周期会议配置了工作流(`repeatWorkFlowBaseIds` 非空)时 `prepare` 主动拒绝(`conflict_rejected`),提示走流程建会。
47
+
48
+ ## 失败处理
49
+
50
+ - `conflict_rejected` / `conflict_check_failed`:停止建会,不提供绕过选项。
51
+ - `target_changed` / `continuation_expired` / `continuation_invalid`:重新 prepare 并再次向用户确认。
52
+ - 写请求发出后网络中断 → `partial/write_uncertain`:禁止自动重试,先 `meeting.list` 回查是否已建会。
@@ -0,0 +1,57 @@
1
+ # 取消 / 删除会议(prepare/apply 确认链)
2
+
3
+ ## 何时使用
4
+
5
+ 取消一场会议(不开了)、彻底删除会议记录。
6
+
7
+ > 提前结束会议(`overMeeting`)**不在支持范围**:服务端该接口为空实现(service 调用被注释、直接返回成功),调用只会得到"假成功"但不生效。请引导用户在系统页面操作。
8
+
9
+ ## 输入要点
10
+
11
+ - 两个动作都只需会议 `id`(长 id 用字符串)。
12
+ - prepare 阶段 CLI 会**回查会议存在性**(`getMeetingDetailField`);回查失败直接报 `meeting_not_operable`,不做任何写入。
13
+ - **权限判定由服务端负责**(按会议状态 + 会议基础设置 + 召集人/监控权限):无权限时服务端返回原文提示,CLI 原样透传,**必须完整转达用户**——`您没有取消权限!` / `您没有删除权限!` / `您没有提前结束权限!` / `您没有读取权限!`。不要改写成"操作失败"这类模糊说法。
14
+ - `continuation` 有效期 10 分钟,过期需重新 prepare。
15
+ - 传参方式按源码签名区分(已核对 `com.weaver.meeting.controller`):
16
+ - `cancel` → `operateMeetingByType`(`@RequestBody`,body 传 JSON);
17
+ - `delete` → `deleteMeetingDetail(Long id)`(**表单绑定,必须 query 传参**)。
18
+
19
+ ## 命令
20
+
21
+ Windows PowerShell:
22
+
23
+ ```powershell
24
+ weaver-work-cli --json meeting run meeting.cancel.prepare --input-json '{\"id\":\"1305624900858404950\"}'
25
+ # 用户确认后(continuation 原样传入):
26
+ weaver-work-cli --json meeting run meeting.cancel.apply --input-json '{\"confirm\":true,\"continuation\":\"<prepare返回>\",\"id\":\"1305624900858404950\"}'
27
+ weaver-work-cli --json meeting run meeting.delete.prepare --input-json '{\"id\":\"1305624900858404950\"}'
28
+ ```
29
+
30
+ macOS/Linux(bash/zsh):
31
+
32
+ ```bash
33
+ weaver-work-cli --json meeting run meeting.cancel.prepare --input-json '{"id":"1305624900858404950"}'
34
+ weaver-work-cli --json meeting run meeting.cancel.apply --input-json '{"confirm":true,"continuation":"<prepare返回>","id":"1305624900858404950"}'
35
+ weaver-work-cli --json meeting run meeting.delete.prepare --input-json '{"id":"1305624900858404950"}'
36
+ ```
37
+
38
+ ## 输出处理
39
+
40
+ - `prepare` 返回 `AWAITING_CONFIRMATION` + `preview`(`action`/`id`/`body`/`note`)+ `continuation`。
41
+ - `apply` 返回 `COMPLETE` + `result`(接口原始返回);随后用 `meeting.list` 回查确认。
42
+ - 两个动作的语义区别:
43
+ - `cancel`:会议进入**取消状态**,占用/回执/签到随之失效;
44
+ - `delete`:**彻底移除**会议记录(区别于取消),不可逆。
45
+
46
+ ## 注意
47
+
48
+ - 两者都是**不可逆写操作**:apply 前必须向用户明确说明动作与后果并取得确认。
49
+ - 禁止跳过 prepare 直接 apply;apply 的 `id` 必须与 prepare 一致(不一致报 `target_changed`)。
50
+ - 示例中的 id 为 `PLACEHOLDER_VALUE`,实际使用请替换为真实查询结果。
51
+
52
+ ## 失败处理
53
+
54
+ - `meeting_not_operable`:会议不存在或当前账号无权操作,停止并提示用户核对。
55
+ - `confirmation.required`:缺少 `confirm: true`,补上后重试。
56
+ - `continuation_expired` / `target_changed`:重新 prepare 并再次向用户确认。
57
+ - 写请求发出后网络中断 → `partial/write_uncertain`:**禁止自动重试**,先 `meeting.list` 回查会议状态(是否已取消/已删除),确未生效才重新 prepare。
@@ -0,0 +1,61 @@
1
+ # 会议与会议室查询
2
+
3
+ ## 何时使用
4
+
5
+ 查今天的会议 / 会议列表、探测环境模式、建会前置判断、会议室与占用、会议类型。
6
+
7
+ ## 输入要点
8
+
9
+ - 时间格式统一 `yyyy-MM-dd HH:mm`;日期 `yyyy-MM-dd`。
10
+ - 长 id(会议室/会议/人员)超 2^53 必须字符串。
11
+ - `meeting.list` 的接口 body 过滤实测不生效:CLI 采用空 body 拉全量 + 客户端 `filterDate` 过滤,**不要尝试给 body 塞过滤字段**。
12
+
13
+ ## 命令
14
+
15
+ Windows PowerShell:
16
+
17
+ ```powershell
18
+ weaver-work-cli --json meeting run meeting.env.detect --input-json '{}'
19
+ weaver-work-cli --json meeting run meeting.list --input-json '{"filterDate":"2026-09-11"}'
20
+ weaver-work-cli --json meeting today
21
+ weaver-work-cli --json meeting run meeting.room.list --input-json '{"beginDate":"2026-09-11 09:00","endDate":"2026-09-11 10:00","onlyAvailable":true}'
22
+ weaver-work-cli --json meeting run meeting.type.list --input-json '{"name":"项目","includeCount":true}'
23
+ weaver-work-cli --json meeting run meeting.room.usage --input-json '{"roomid":"1297870848451641350","bywhat":4,"currentdate":"2026-09-11"}'
24
+ weaver-work-cli --json meeting run meeting.calendar.base --input-json '{}'
25
+ weaver-work-cli --json meeting run meeting.detail.field --input-json '{"id":"1305624900858404950"}'
26
+ ```
27
+
28
+ macOS/Linux(bash/zsh):
29
+
30
+ ```bash
31
+ weaver-work-cli --json meeting run meeting.env.detect --input-json '{}'
32
+ weaver-work-cli --json meeting run meeting.list --input-json '{"filterDate":"2026-09-11"}'
33
+ weaver-work-cli --json meeting today
34
+ weaver-work-cli --json meeting run meeting.room.list --input-json '{"beginDate":"2026-09-11 09:00","endDate":"2026-09-11 10:00","onlyAvailable":true}'
35
+ weaver-work-cli --json meeting run meeting.type.list --input-json '{"name":"项目","includeCount":true}'
36
+ weaver-work-cli --json meeting run meeting.room.usage --input-json '{"roomid":"1297870848451641350","bywhat":4,"currentdate":"2026-09-11"}'
37
+ weaver-work-cli --json meeting run meeting.calendar.base --input-json '{}'
38
+ weaver-work-cli --json meeting run meeting.detail.field --input-json '{"id":"1305624900858404950"}'
39
+ ```
40
+
41
+ ## 输出处理
42
+
43
+ - `meeting.list` 返回 `meetings[]`(含 `id`/`name`/`beginDatetime`/`endDatetime`/`address`/`mtStatus`),按开始时间升序输出 Markdown 表格;CLI 自动翻页拉全量后做客户端 `filterDate` 过滤。
44
+ - `meeting.room.list` 返回 `rooms[]`(`disabled` 已归一化为布尔)与 `availableRooms[]`;带时间范围时 `disabled=true` 即该时段已被占用。
45
+ - `meeting.calendar.base` 返回 `createBaseData`:`onlyFlowCreate`(0=可手动建会 1=只能流程建会)、`workFlowBaseIds`、`repeatWorkFlowBaseIds`、`existWorkFlow`。
46
+ - `meeting.env.detect` 返回 `mode: "eb" | "standard"` + `fromCache`:
47
+ - **默认按 baseUrl 读缓存**(第一次探测成功后固化到 CLI 状态目录),命中时不发网络请求;
48
+ - `refresh: true` 强制重新冒烟并更新缓存(用户说"重新探测/刷新模式"时用);
49
+ - 标准版回退时附带 `ebSmokeError`(EB 冒烟失败原因,用于诊断);
50
+ - 两者冒烟均失败时报 `env_unavailable`(环境未配置完整,禁止强行执行)。
51
+
52
+ ## 注意
53
+
54
+ - 示例中的 id 均为 `PLACEHOLDER_VALUE`,实际调用替换为真实查询结果。
55
+ - 标准 `weaver-work-cli --json` 输出 envelope:成功 `ok=true`;失败看 `error.type/subtype/message`。
56
+
57
+ ## 失败处理
58
+
59
+ - `env_unavailable`:提示环境会议应用未安装或接口未配置完整,停止。
60
+ - `permission_denied`(HTTP 403 语义):提示联系管理员开通接口权限。
61
+ - `session_expired`:走 `weaver-work-cli auth login --base-url <域名>` 登录流程。
@@ -0,0 +1,48 @@
1
+ # 回执与签到
2
+
3
+ ## 何时使用
4
+
5
+ 查会议回执情况、给某人回执(参加/不参加/请假)、查签到记录与统计。
6
+
7
+ ## 输入要点
8
+
9
+ - 回执更新**必须传回执记录主键 `id`**(不是 `memberId`);`prepare` 会自动按 `memberId` 回查定位。
10
+ - `attendStatus` 枚举:`0`=未填写、`1`=参加、`2`=不参加(回执"否/请假"传 2)。
11
+ - 回执列表接口必须带 `isMobile`(CLI 缺省 `false`;缺失会导致后端 NPE→500,已被 CLI 托管)。
12
+
13
+ ## 命令
14
+
15
+ Windows PowerShell:
16
+
17
+ ```powershell
18
+ weaver-work-cli --json meeting run meeting.receipt.list --input-json '{"mtId":"1305624900858404950"}'
19
+ weaver-work-cli --json meeting run meeting.receipt.update.prepare --input-json '{"mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
20
+ # 用户确认后:
21
+ weaver-work-cli --json meeting run meeting.receipt.update.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
22
+ weaver-work-cli --json meeting run meeting.sign.list --input-json '{"mtId":"1305624900858404950"}'
23
+ ```
24
+
25
+ macOS/Linux(bash/zsh):
26
+
27
+ ```bash
28
+ weaver-work-cli --json meeting run meeting.receipt.list --input-json '{"mtId":"1305624900858404950"}'
29
+ weaver-work-cli --json meeting run meeting.receipt.update.prepare --input-json '{"mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
30
+ # 用户确认后:
31
+ weaver-work-cli --json meeting run meeting.receipt.update.apply --input-json '{"confirm":true,"continuation":"<prepare返回的continuation>","mtId":"1305624900858404950","memberId":"101","attendStatus":2,"remark":"请假"}'
32
+ weaver-work-cli --json meeting run meeting.sign.list --input-json '{"mtId":"1305624900858404950"}'
33
+ ```
34
+
35
+ ## 输出处理
36
+
37
+ - `receipt.list` 返回 `receipts[]`(含 `id`/`memberId`/`attendStatus`/`remark`);`receipt.update.prepare` 返回 `preview`(含定位到的回执记录 `id`)。
38
+ - `sign.list` 返回 `signs[]` 与 `summary`(`total`/`signed`/`unsigned`),输出 Markdown 表格。
39
+
40
+ ## 注意
41
+
42
+ - `prepare` 找不到参会人回执记录时报 `receipt_not_found`:先用 `meeting.receipt.list` 核对 `memberId`。
43
+ - `apply` 前必须取得用户对"目标回执 + 状态 + 备注"的明确确认。
44
+
45
+ ## 失败处理
46
+
47
+ - `target_changed` / `continuation_expired`:重新 prepare 再确认。
48
+ - 写请求发出后网络中断 → `partial/write_uncertain`:禁止自动重试,先 `meeting.receipt.list` 回查是否已生效。
@@ -0,0 +1,7 @@
1
+ # 已迁移
2
+
3
+ 本文件已由 [meeting-change.md](meeting-change.md) 取代。
4
+
5
+ - 业务术语为「变更」;CLI operation 为 `meeting.change.prepare` / `meeting.change.apply`。
6
+ - 旧 `meeting.update.*` 已下线:它会固定发送 `operateType=UPDATE`,与"草稿走 UPDATE、正常走 CHANGE"的真实业务语义不符。
7
+ - 本文件可安全删除。
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-09-11",
4
+ "generator": "weaver-e10-skill-maker",
5
+ "sourceLocation": "user-provided",
6
+ "note": "源资料为用户提供位置上的本机文件,此处只记录名称与角色,不记录本机绝对路径;更新检测按文件级指纹(size+sha256,在源资料位置按需计算)执行,标记弱检测。",
7
+ "sources": [
8
+ {
9
+ "source": "weaver-e10-meeting (standalone skill) v2.4.2 — SKILL.md",
10
+ "role": "existing-skill",
11
+ "note": "standalone 双模式会议 Skill(业务编排/冲突铁律/链接规则的来源)"
12
+ },
13
+ {
14
+ "source": "weaver-e10-meeting (standalone skill) — references/meeting-business-logic.md",
15
+ "role": "api-doc",
16
+ "note": "标准版接口契约权威来源(路径/入参/坑位:SUBMIT+空id、cansub、回执 id、isMobile、finishAt 禁 0、长 id 字符串)"
17
+ },
18
+ {
19
+ "source": "weaver-e10-meeting (standalone skill) — references/meeting-urls.md",
20
+ "role": "api-doc",
21
+ "note": "打开链接 URL 模板(标准版 meetingSingle)"
22
+ },
23
+ {
24
+ "source": "weaver-work-cli repository (git release b910e60, v0.1.3)",
25
+ "role": "code",
26
+ "note": "生成目标仓库;结构对齐 src/shortcuts/hrm 与 calendar 写链样板"
27
+ }
28
+ ],
29
+ "fingerprint": "weak",
30
+ "operationImpact": {
31
+ "meeting-business-logic.md": [
32
+ "meeting.env.detect",
33
+ "meeting.calendar.base",
34
+ "meeting.list",
35
+ "meeting.room.list",
36
+ "meeting.room.usage",
37
+ "meeting.type.list",
38
+ "meeting.detail.field",
39
+ "meeting.conflict.room",
40
+ "meeting.conflict.member",
41
+ "meeting.conflict.roomAttribute",
42
+ "meeting.create.prepare",
43
+ "meeting.create.apply",
44
+ "meeting.receipt.list",
45
+ "meeting.receipt.update.prepare",
46
+ "meeting.receipt.update.apply",
47
+ "meeting.sign.list"
48
+ ]
49
+ }
50
+ }
@@ -17,6 +17,7 @@ cliHelp: "weaver-work-cli plan --help"
17
17
 
18
18
  **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
19
19
 
20
+
20
21
  本技能覆盖报告业务域:**汇总生成报告**(多模块采集后整合)、**查询报告详情**、**分页查询报告**、**新建**、**修改**、**发布**、**撤回**、**发送提交提醒**、**查看报告评论**。写操作全部走 prepare→apply 确认协议。
21
22
 
22
23
  ## 零、第一步:意图判定(先于任何接口调用)
@@ -682,7 +682,7 @@
682
682
  }
683
683
  },
684
684
  "artifactBaseline": {
685
- "aggregateSha256": "6779ce93e49c804cdc8385b24d1ae21fbe75eaa98063f3f51a920896a90b1893",
685
+ "aggregateSha256": "e2369154659801884bcc2cc05f407c857b362c839f274b9c8b98ea41fb740380",
686
686
  "files": [
687
687
  {
688
688
  "path": "src/shortcuts/plan/index.ts",
@@ -771,8 +771,8 @@
771
771
  {
772
772
  "path": "skills/weaver-e10-plan/SKILL.md",
773
773
  "role": "generated-skill-entry",
774
- "size": 12349,
775
- "sha256": "c3d903519b1a9ed38be1cc9c658338cce354b23651ca8495814dd1ca49e2a0ec"
774
+ "size": 12449,
775
+ "sha256": "78f4088d765285c9952f30467ccccfebd1f98a09e42cb9a3731604c2aebdbefc"
776
776
  },
777
777
  {
778
778
  "path": "skills/weaver-e10-plan/product.json",
@@ -16,6 +16,7 @@ cliHelp: "weaver-work-cli fna --help"
16
16
  # weaver-work-cli 齐业成费控(FNA)Skill
17
17
 
18
18
  **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
19
+
19
20
  所有调用统一走 `weaver-work-cli fna ...`,禁止绕过 CLI 直接 curl/fetch E10 接口,禁止读取、复制、打印或解析 Cookie、ETEAMSID、Token 或 `~/.e10-cli` 等认证目录;登录诊断只允许 `weaver-work-cli auth root/status/profile list/profile current`、`weaver-work-cli doctor --e10` 和业务命令 JSON 错误。
20
21
 
21
22
  ## 能力范围
@@ -517,7 +517,7 @@
517
517
  }
518
518
  },
519
519
  "artifactBaseline": {
520
- "aggregateSha256": "622cdc019a1f29b939a2b673e1f3c5e9c8bcfbf2a615b7f2d176f7b35f509063",
520
+ "aggregateSha256": "007379a1e54c0a1c7a3ed34ea90d319b13e663eb465f71daa35df0c46cde3a01",
521
521
  "files": [
522
522
  {
523
523
  "path": "src/shortcuts/fna/manifest.ts",
@@ -636,8 +636,8 @@
636
636
  {
637
637
  "path": "skills/weaver-e10-qiyecheng/SKILL.md",
638
638
  "role": "generated",
639
- "size": 9494,
640
- "sha256": "3679e1c7acfe71356594952830cd796e9e9c140f3294c5ea1ad69aa5dbeb0c9e"
639
+ "size": 9537,
640
+ "sha256": "e477deece6837ef4ca9744cbe8ba13808d31afe81c8f7a3f5fd2db2f4d00d0f0"
641
641
  },
642
642
  {
643
643
  "path": "skills/weaver-e10-qiyecheng/product.json",
@@ -16,6 +16,10 @@ requires:
16
16
 
17
17
  所有 `weaver-e10-*` Skill 共享的底座:命令可用性、E10 认证、JSON 输出契约、大结果渲染与高风险操作。
18
18
 
19
+ ## 业务 Skill 安装前版本检查
20
+
21
+ 用户要求安装任一业务模块 Skill 时,必须先执行 `weaver-work-cli --version` 与 `npm view weaver-work-cli version` 比对本地版本和 npm 源版本。若本地版本低于 npm 源版本,先询问用户是否使用(推荐)最新版 `weaver-work-cli`;用户确认后先执行 `npm install -g weaver-work-cli` 更新 CLI,再继续安装业务模块 Skill。用户拒绝时,说明将沿用本地版本后再继续。
22
+
19
23
  ## 最高优先级:小 E 统一登录
20
24
 
21
25
  如果当前运行在小 E 宿主环境,或任务上下文/环境变量显示存在 `XIAOE_*`,登录处理必须优先走小 E 统一登录:
@@ -17,6 +17,7 @@ cliHelp: "weaver-work-cli skills --help"
17
17
 
18
18
  **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
19
19
 
20
+
20
21
  本 Skill 参考飞书 CLI 的 `lark-skill-maker`,但输出范围更完整:Agent 需要把已经给出的业务模块资料同步固化为 `weaver-e10-*` Agent Skill 和对应 `src/shortcuts/<module>` TypeScript CLI 能力。新业务模块一开始没有对应 `weaver-work-cli` 业务命令是正常输入,但不能只生成文档型 Skill;默认要把 CLI 一并设计、实现、测试并让 Skill 调用真实 operation。
21
22
 
22
23
  生成或更新的 docs、Skill reference、模板提示词和 CLI 示例必须同时兼容 Windows 和 macOS/Linux。凡涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对,必须同时给出 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例;Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。简单 JSON 优先生成 `--input-json '<json>'` 示例;复杂或多行 JSON 使用临时 UTF-8 文件和 `--input <path>`。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法,不要把任一平台专属命令写成唯一默认步骤。
@@ -37,7 +37,7 @@ README.md
37
37
  入口文件保持轻量,必须包含:
38
38
 
39
39
  - frontmatter:使用检测工具认可的顶层字段,禁止 `metadata:` 嵌套。
40
- - CRITICAL:要求先读 `../weaver-e10-shared/SKILL.md`;若不存在先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装先执行 `npm install -g weaver-work-cli`,安装或读取失败时停止。
40
+ - CRITICAL:要求先读 `../weaver-e10-shared/SKILL.md`;若不存在先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装先执行 `npm install -g weaver-work-cli`,安装或读取失败时停止;业务模块安装前版本检查统一写在 shared Skill 中,不在各业务入口重复。
41
41
  - 路由优先级:先判断是否属于该业务模块,再选 operation。
42
42
  - 高优先级语义:业务对象、别名、关键字段、常见用户说法。
43
43
  - 命令表:用户意图、CLI operation、按需读取的 reference。
@@ -14,6 +14,7 @@ cliHelp: "weaver-work-cli archive --help"
14
14
  ---
15
15
 
16
16
  **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若不存在则必须先执行 `weaver-work-cli skills install shared --skills-dir <当前Agent的Skills目录>`,若 CLI 未安装则先执行 `npm install -g weaver-work-cli`,安装或读取失败时必须停止执行。**
17
+
17
18
  认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
18
19
  所有命令通过 `weaver-work-cli --json archive run <operation>` 执行:简单 JSON 优先传 `--input-json '<json>'`,复杂或多行 JSON 先写入 UTF-8 文件再传 `--input <path>`,只有确认当前 shell 能稳定传管道时才使用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli archive schema` 是 operation、字段和风险等级的合约来源。
19
20
  命令示例、提示词和临时说明必须同时兼容 Windows 和 macOS/Linux;涉及 JSON 输入、用户目录、路径分隔符、Python 启动器、文件删除、目录查看或文件比对时,同时给 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例。Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 下不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
@@ -323,7 +323,7 @@
323
323
  }
324
324
  },
325
325
  "artifactBaseline": {
326
- "aggregateSha256": "c40d89f423d5c82a0d315212430060a0656473bbccaa3e871ec37d2ec85d79d1",
326
+ "aggregateSha256": "82f4ab89ea35b679ba1c25967c3173fd0e881cab85bd611100ec37a40908157d",
327
327
  "files": [
328
328
  {
329
329
  "path": "src/shortcuts/archive/continuation.ts",
@@ -427,8 +427,8 @@
427
427
  },
428
428
  {
429
429
  "path": "skills/weaver-e10-wenshuding/SKILL.md",
430
- "size": 15357,
431
- "sha256": "0dcc51a62f22fe6d17fa0c7976ebbf64b827b2784f82b8f5f8e6f64a8bdc8d6f"
430
+ "size": 15400,
431
+ "sha256": "6a12d7d172c9893e7fec6ebd07b259c92615e06319d51cd37621cab2b96520ad"
432
432
  },
433
433
  {
434
434
  "path": "skills/weaver-e10-wenshuding/product.json",