weaver-work-cli 0.1.7 → 0.1.20

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 (264) hide show
  1. package/README.md +11 -11
  2. package/dist/cmd/action.js +76 -0
  3. package/dist/cmd/index.js +2 -0
  4. package/dist/cmd/refs/index.js +103 -0
  5. package/dist/cmd/register.js +31 -0
  6. package/dist/cmd/root.js +1 -0
  7. package/dist/cmd/setup/index.js +25 -5
  8. package/dist/cmd/skills/index.js +37 -5
  9. package/dist/core/connector.js +54 -0
  10. package/dist/core/context.js +2 -1
  11. package/dist/core/input.js +48 -0
  12. package/dist/core/output.js +298 -3
  13. package/dist/core/refs.js +432 -0
  14. package/dist/core/state.js +26 -0
  15. package/dist/internal/e10/auth/commands.js +2 -2
  16. package/dist/internal/e10/auth/session.js +14 -0
  17. package/dist/internal/e10/auth/xiaoe.js +116 -51
  18. package/dist/internal/e10/request-runtime.js +5 -0
  19. package/dist/internal/skills/install.js +148 -28
  20. package/dist/internal/skills/reader.js +12 -9
  21. package/dist/shortcuts/blog/continuation.js +74 -0
  22. package/dist/shortcuts/blog/errors.js +60 -0
  23. package/dist/shortcuts/blog/host.js +175 -0
  24. package/dist/shortcuts/blog/index.js +324 -0
  25. package/dist/shortcuts/blog/manifest.js +415 -0
  26. package/dist/shortcuts/blog/operations/comment.js +125 -0
  27. package/dist/shortcuts/blog/operations/comments.js +31 -0
  28. package/dist/shortcuts/blog/operations/edit.js +131 -0
  29. package/dist/shortcuts/blog/operations/export.js +46 -0
  30. package/dist/shortcuts/blog/operations/like.js +80 -0
  31. package/dist/shortcuts/blog/operations/publish.js +157 -0
  32. package/dist/shortcuts/blog/operations/query-user.js +58 -0
  33. package/dist/shortcuts/blog/operations/query.js +96 -0
  34. package/dist/shortcuts/blog/operations/registry.js +54 -0
  35. package/dist/shortcuts/blog/operations/remind.js +176 -0
  36. package/dist/shortcuts/blog/operations/shared.js +330 -0
  37. package/dist/shortcuts/blog/operations/types.js +16 -0
  38. package/dist/shortcuts/blog/operations.js +9 -0
  39. package/dist/shortcuts/caizhilian/continuation.js +70 -0
  40. package/dist/shortcuts/caizhilian/errors.js +53 -0
  41. package/dist/shortcuts/caizhilian/host.js +190 -0
  42. package/dist/shortcuts/caizhilian/index.js +186 -0
  43. package/dist/shortcuts/caizhilian/manifest.js +42 -0
  44. package/dist/shortcuts/caizhilian/operations/api.js +801 -0
  45. package/dist/shortcuts/caizhilian/operations/confirm.js +75 -0
  46. package/dist/shortcuts/caizhilian/operations/files.js +306 -0
  47. package/dist/shortcuts/caizhilian/operations/form.js +170 -0
  48. package/dist/shortcuts/caizhilian/operations/handlers/collab.js +611 -0
  49. package/dist/shortcuts/caizhilian/operations/handlers/document.js +890 -0
  50. package/dist/shortcuts/caizhilian/operations/handlers/file-collection.js +346 -0
  51. package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +192 -0
  52. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +570 -0
  53. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +969 -0
  54. package/dist/shortcuts/caizhilian/operations/handlers/search.js +318 -0
  55. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +294 -0
  56. package/dist/shortcuts/caizhilian/operations/handlers/setting-backup.js +423 -0
  57. package/dist/shortcuts/caizhilian/operations/handlers/setting-encrypt.js +238 -0
  58. package/dist/shortcuts/caizhilian/operations/handlers/setting-storage.js +364 -0
  59. package/dist/shortcuts/caizhilian/operations/handlers/system.js +106 -0
  60. package/dist/shortcuts/caizhilian/operations/registry.js +151 -0
  61. package/dist/shortcuts/caizhilian/operations/shared.js +408 -0
  62. package/dist/shortcuts/caizhilian/operations/specs.js +623 -0
  63. package/dist/shortcuts/caizhilian/operations/types.js +57 -0
  64. package/dist/shortcuts/caizhilian/operations.js +21 -0
  65. package/dist/shortcuts/contract/continuation.js +70 -0
  66. package/dist/shortcuts/contract/errors.js +62 -0
  67. package/dist/shortcuts/contract/host.js +205 -0
  68. package/dist/shortcuts/contract/index.js +318 -0
  69. package/dist/shortcuts/contract/manifest.js +596 -0
  70. package/dist/shortcuts/contract/operations/clause-reference.js +78 -0
  71. package/dist/shortcuts/contract/operations/form-info.js +371 -0
  72. package/dist/shortcuts/contract/operations/read.js +118 -0
  73. package/dist/shortcuts/contract/operations/registry.js +43 -0
  74. package/dist/shortcuts/contract/operations/request.js +300 -0
  75. package/dist/shortcuts/contract/operations/shared.js +133 -0
  76. package/dist/shortcuts/contract/operations/subject.js +157 -0
  77. package/dist/shortcuts/contract/operations/template.js +81 -0
  78. package/dist/shortcuts/contract/operations/types.js +7 -0
  79. package/dist/shortcuts/contract/operations/workflow.js +52 -0
  80. package/dist/shortcuts/contract/operations/write.js +131 -0
  81. package/dist/shortcuts/contract/operations.js +8 -0
  82. package/dist/shortcuts/hrm/index.js +83 -2
  83. package/dist/shortcuts/hrm/operations/employee.js +160 -30
  84. package/dist/shortcuts/hrm/operations/org.js +17 -3
  85. package/dist/shortcuts/hrm/operations/position.js +18 -2
  86. package/dist/shortcuts/index.js +5 -1
  87. package/dist/shortcuts/invoice/index.js +74 -36
  88. package/dist/shortcuts/invoice/manifest.js +674 -4
  89. package/dist/shortcuts/invoice/markdown.js +172 -0
  90. package/dist/shortcuts/invoice/operations/add.js +3 -3
  91. package/dist/shortcuts/invoice/operations/delete.js +2 -2
  92. package/dist/shortcuts/invoice/operations/get.js +10 -2
  93. package/dist/shortcuts/invoice/operations/import.js +2 -2
  94. package/dist/shortcuts/invoice/operations/registry.js +8 -1
  95. package/dist/shortcuts/invoice/operations/reim-auto.js +719 -0
  96. package/dist/shortcuts/invoice/operations/reim.js +85 -2
  97. package/dist/shortcuts/invoice/operations/shared.js +75 -8
  98. package/dist/shortcuts/invoice/operations/update.js +2 -2
  99. package/dist/shortcuts/invoice/operations/upload-and-validate.js +93 -0
  100. package/dist/shortcuts/invoice/operations/validate-preview.js +2 -1
  101. package/dist/shortcuts/invoice/projection.js +328 -0
  102. package/dist/shortcuts/meeting/host.js +18 -1
  103. package/dist/shortcuts/meeting/manifest.js +30 -18
  104. package/dist/shortcuts/meeting/operations/eb/catalog.js +390 -0
  105. package/dist/shortcuts/meeting/operations/eb/conflict.js +389 -0
  106. package/dist/shortcuts/meeting/operations/eb/factory.js +389 -0
  107. package/dist/shortcuts/meeting/operations/eb/index.js +22 -0
  108. package/dist/shortcuts/meeting/operations/env.js +8 -1
  109. package/dist/shortcuts/meeting/operations/registry.js +2 -0
  110. package/dist/shortcuts/meeting/operations/signs.js +216 -2
  111. package/dist/shortcuts/workflow/endpoints.js +2 -1
  112. package/dist/shortcuts/workflow/errors.js +8 -2
  113. package/dist/shortcuts/workflow/host.js +6 -3
  114. package/dist/shortcuts/workflow/operations/form.js +931 -533
  115. package/dist/shortcuts/workflow/operations/read.js +462 -81
  116. package/dist/shortcuts/workflow/operations/shared.js +44 -0
  117. package/dist/shortcuts/workflow/operations/write.js +760 -56
  118. package/dist/shortcuts/workflow/operations.js +36 -10
  119. package/docs/_catalog.md +6 -0
  120. package/docs/agent-invoice.md +5 -1
  121. package/docs/agent-io-channel-design.md +468 -0
  122. package/docs/agent-skill-install.md +9 -4
  123. package/docs/blog.md +123 -0
  124. package/docs/caizhilian.md +304 -0
  125. package/docs/contract.md +91 -0
  126. package/docs/e10-auth.md +2 -2
  127. package/docs/hrm.md +19 -9
  128. package/docs/invoice.md +5 -1
  129. package/docs/meeting.md +1 -1
  130. package/docs/operation-manual.md +15 -3
  131. package/docs/skill-review-2026-09-19.md +2 -2
  132. package/package.json +2 -2
  133. package/scripts/package-skill.mjs +33 -20
  134. package/skill-template/business-info.json +113 -14
  135. package/skill-template/domains/blog.md +24 -0
  136. package/skill-template/domains/caizhilian.md +22 -0
  137. package/skill-template/domains/jinchengda.md +23 -0
  138. package/skill-template/domains/meeting.md +1 -1
  139. package/skill-template/domains/workflow.md +1 -1
  140. package/skill-template/skill-template.md +1 -1
  141. package/skills/weaver-e10-blog/SKILL.md +111 -0
  142. package/skills/weaver-e10-blog/references/blog-comment.md +51 -0
  143. package/skills/weaver-e10-blog/references/blog-comments.md +39 -0
  144. package/skills/weaver-e10-blog/references/blog-default-permission.md +38 -0
  145. package/skills/weaver-e10-blog/references/blog-disabled-capabilities.md +11 -0
  146. package/skills/weaver-e10-blog/references/blog-edit.md +51 -0
  147. package/skills/weaver-e10-blog/references/blog-export.md +42 -0
  148. package/skills/weaver-e10-blog/references/blog-like.md +50 -0
  149. package/skills/weaver-e10-blog/references/blog-publish.md +52 -0
  150. package/skills/weaver-e10-blog/references/blog-query-user.md +45 -0
  151. package/skills/weaver-e10-blog/references/blog-query.md +49 -0
  152. package/skills/weaver-e10-blog/references/blog-remind.md +51 -0
  153. package/skills/weaver-e10-blog/references/blog-resolve-users.md +38 -0
  154. package/skills/weaver-e10-blog/references/source-manifest.json +1540 -0
  155. package/skills/weaver-e10-caizhilian/SKILL.md +216 -0
  156. package/skills/weaver-e10-caizhilian/references/agent-entry.md +106 -0
  157. package/skills/weaver-e10-caizhilian/references/collaboration.md +112 -0
  158. package/skills/weaver-e10-caizhilian/references/document.md +111 -0
  159. package/skills/weaver-e10-caizhilian/references/file-collection.md +136 -0
  160. package/skills/weaver-e10-caizhilian/references/file-upload.md +309 -0
  161. package/skills/weaver-e10-caizhilian/references/files.md +120 -0
  162. package/skills/weaver-e10-caizhilian/references/folder.md +118 -0
  163. package/skills/weaver-e10-caizhilian/references/org-browser.md +104 -0
  164. package/skills/weaver-e10-caizhilian/references/setting-attach.md +410 -0
  165. package/skills/weaver-e10-caizhilian/references/setting-backup.md +372 -0
  166. package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +399 -0
  167. package/skills/weaver-e10-caizhilian/references/setting-storage.md +603 -0
  168. package/skills/weaver-e10-caizhilian/references/source-manifest.json +5079 -0
  169. package/skills/weaver-e10-caizhilian/references/withheld.md +93 -0
  170. package/skills/weaver-e10-caizhilian/references/write-protocol.md +120 -0
  171. package/skills/weaver-e10-calendar/SKILL.md +4 -3
  172. package/skills/weaver-e10-ebuilder-form/SKILL.md +4 -9
  173. package/skills/weaver-e10-ebuilder-form/references/context-routing.md +0 -9
  174. package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -5
  175. package/skills/weaver-e10-ebuilder-form/references/fields-browser.md +1 -5
  176. package/skills/weaver-e10-ebuilder-form/references/list-nlist.md +1 -5
  177. package/skills/weaver-e10-ebuilder-form/references/openapi-read.md +1 -5
  178. package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -5
  179. package/skills/weaver-e10-esb/SKILL.md +2 -2
  180. package/skills/weaver-e10-esb/references/source-manifest.json +9 -9
  181. package/skills/weaver-e10-hrm/SKILL.md +54 -6
  182. package/skills/weaver-e10-hrm/references/employee.md +89 -15
  183. package/skills/weaver-e10-hrm/references/org.md +7 -4
  184. package/skills/weaver-e10-hrm/references/position.md +14 -7
  185. package/skills/weaver-e10-hrm/references/source-manifest.json +1 -1
  186. package/skills/weaver-e10-jinchengda/SKILL.md +166 -0
  187. package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +82 -0
  188. package/skills/weaver-e10-jinchengda/references/contract-clause-recommender.md +69 -0
  189. package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +78 -0
  190. package/skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md +27 -0
  191. package/skills/weaver-e10-jinchengda/references/contract-request-status.md +71 -0
  192. package/skills/weaver-e10-jinchengda/references/contract-request-write.md +94 -0
  193. package/skills/weaver-e10-jinchengda/references/contract-signing-subjects.md +89 -0
  194. package/skills/weaver-e10-jinchengda/references/contract-subject-create.md +77 -0
  195. package/skills/weaver-e10-jinchengda/references/contract-template-selector.md +66 -0
  196. package/skills/weaver-e10-jinchengda/references/contract-workflow-discovery.md +94 -0
  197. package/skills/weaver-e10-jinchengda/references/source-manifest.json +259 -0
  198. package/skills/weaver-e10-jiuchuanhui/SKILL.md +5 -11
  199. package/skills/weaver-e10-jucailin/SKILL.md +4 -3
  200. package/skills/weaver-e10-mail/SKILL.md +4 -11
  201. package/skills/weaver-e10-meeting/SKILL.md +66 -32
  202. package/skills/weaver-e10-meeting/references/meeting-change.md +5 -2
  203. package/skills/weaver-e10-meeting/references/meeting-create.md +2 -1
  204. package/skills/weaver-e10-meeting/references/meeting-eb.md +114 -0
  205. package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +9 -8
  206. package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +35 -7
  207. package/skills/weaver-e10-meeting/references/meeting-update.md +1 -1
  208. package/skills/weaver-e10-okr/SKILL.md +6 -11
  209. package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
  210. package/skills/weaver-e10-plan/SKILL.md +3 -3
  211. package/skills/weaver-e10-plan/references/plan-collect-and-compose.md +1 -1
  212. package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +1 -1
  213. package/skills/weaver-e10-plan/references/source-manifest.json +13 -13
  214. package/skills/weaver-e10-qiyecheng/SKILL.md +4 -10
  215. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +9 -9
  216. package/skills/weaver-e10-shared/SKILL.md +36 -25
  217. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +10 -31
  218. package/skills/weaver-e10-shared/references/json-output-contract.md +20 -11
  219. package/skills/weaver-e10-shijingran/SKILL.md +2 -1
  220. package/skills/weaver-e10-shijingran/references/source-manifest.json +9 -9
  221. package/skills/weaver-e10-skill-maker/SKILL.md +4 -10
  222. package/skills/weaver-e10-skill-maker/references/business-skill-generation.md +5 -3
  223. package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +12 -27
  224. package/skills/weaver-e10-skill-maker/references/module-gap-audit-and-repair.md +17 -5
  225. package/skills/weaver-e10-skill-maker/references/source-update-detection.md +4 -27
  226. package/skills/weaver-e10-wenshuding/SKILL.md +5 -16
  227. package/skills/weaver-e10-wenshuding/references/source-manifest.json +7 -7
  228. package/skills/weaver-e10-workflow/SKILL.md +32 -37
  229. package/skills/weaver-e10-workflow/references/source-manifest.json +40 -77
  230. package/skills/weaver-e10-workflow/references/workflow-batch.md +90 -29
  231. package/skills/weaver-e10-workflow/references/workflow-create.md +79 -109
  232. package/skills/weaver-e10-workflow/references/workflow-memory.md +19 -9
  233. package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -2
  234. package/skills/weaver-e10-workflow/references/workflow-query.md +37 -20
  235. package/skills/weaver-e10-workflow/references/workflow-share.md +18 -2
  236. package/skills/weaver-e10-workflow/references/workflow-view.md +4 -4
  237. package/skills/weaver-e10-yepiaotong/SKILL.md +75 -39
  238. package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +22 -1
  239. package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +3 -1
  240. package/skills/weaver-e10-yepiaotong/references/invoice-issuing.md +5 -5
  241. package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +135 -0
  242. package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +15 -3
  243. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +1 -1
  244. package/skills/weaver-e10-yepiaotong/references/invoice-summarize.py +217 -0
  245. package/skills/weaver-e10-yepiaotong/references/invoice-upload-and-validate.md +88 -0
  246. package/skills/weaver-e10-yepiaotong/references/invoice-validation-preview.md +7 -2
  247. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +90 -10
  248. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +1 -0
  249. package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +70 -49
  250. package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +119 -0
  251. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +55 -36
  252. package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +4 -0
  253. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +149 -0
  254. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +125 -5
  255. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +430 -63
  256. package/skills/weaver-e10-yimiaoban/SKILL.md +4 -12
  257. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
  258. package/skills/weaver-e10-ziguanjia/SKILL.md +2 -1
  259. package/skills/weaver-e10-ziguanjia/references/ziguanjia-agent-entry.md +3 -3
  260. package/tools/weaver-skill-detector-1.0.13/SKILL.md +9 -9
  261. package/tools/weaver-skill-detector-1.0.13/references/checklist.md +3 -3
  262. package/tools/weaver-skill-detector-1.0.13/scripts/__pycache__/validate_skill.cpython-313.pyc +0 -0
  263. package/tools/weaver-skill-detector-1.0.13/scripts/validate_skill.py +98 -91
  264. package/scripts/sync-connector-skills.mjs +0 -172
@@ -5,7 +5,7 @@ display_name_en: Weaver CLI Shared Rules
5
5
  description: weaver-work-cli 共享规则:安装检查、E10 认证、JSON 输出、高风险写入、安全边界和引用路由。
6
6
  description_zh: weaver-work-cli 共享规则:安装检查、E10 认证、JSON 输出、高风险写入、安全边界和引用路由。
7
7
  description_en: Shared rules for weaver-work-cli, including installation checks, E10 authentication, JSON output, high-risk writes, safety boundaries, and reference routing.
8
- version: 1.2.0
8
+ version: 1.2.1
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
@@ -16,6 +16,23 @@ requires:
16
16
 
17
17
  所有 `weaver-e10-*` Skill 共享的底座:命令可用性、E10 认证、JSON 输出契约、大结果渲染与高风险操作。
18
18
 
19
+ ## 连接器模式:--is-connector
20
+
21
+ 同一条 `weaver-work-cli` 命令,认证来源由 `--is-connector true` 区分。**按下面的判据决定传不传,只判断一次,本任务内所有命令沿用同一写法:**
22
+
23
+ | 本次任务的情形 | 是否传 `--is-connector true` |
24
+ | --- | --- |
25
+ | 用户明确使用连接器,或上下文中要求使用连接器完成任务 | **传** |
26
+ | 本次任务或上下文中直接选择单独技能 | **不传** |
27
+ | 用户没有明确说明 | **按正在运行的这份 Skill 是哪一级定**:用户级 → **不传**;连接器级 → **传** |
28
+
29
+ - **怎么分辨级别**:技能条目标 `(user)`、从 `~/.workbuddy/skills/` 加载的就是**用户级**;标 `(connector)`、从连接器安装目录加载的就是**连接器级**。
30
+ - 同名 Skill 只会运行**用户级**那一份(WorkBuddy 按 Skill 名去重、用户级优先),所以这种情况一律按用户级处理。
31
+ - 用户级 → CLI 读取**本机活跃 profile**;连接器级 → CLI 读取**连接器托管的 eteams 认证与登录域名**。
32
+ - 连接器级**不要再写 `--profile` / `--base-url`**:认证与域名由连接器托管,手工指定会与它冲突。
33
+ - 漏传 `--is-connector` **不会报错**,但会退回本机活跃 profile,可能操作到与预期不同的租户。
34
+ - **本套 Skill 里的命令示例一律省略 `--is-connector`**(示例只示意参数形态,不代表最终命令):执行前必须先按上表判定,命中「传」的要在 `weaver-work-cli` 之后补上 `--is-connector true`,且**本任务内每条命令都要带**——包括记忆读取、记忆保存这类无入参的命令。
35
+
19
36
  ## 业务 Skill 安装前版本检查
20
37
 
21
38
  用户要求安装任一业务模块 Skill 时,必须先执行 `weaver-work-cli --version` 与 `npm view weaver-work-cli version` 比对本地版本和 npm 源版本。若本地版本低于 npm 源版本,先询问用户是否使用(推荐)最新版 `weaver-work-cli`;用户确认后先执行 `npm install -g weaver-work-cli` 更新 CLI,再继续安装业务模块 Skill。用户拒绝时,说明将沿用本地版本后再继续。
@@ -24,31 +41,23 @@ requires:
24
41
 
25
42
  如果当前运行在 XiaoE 宿主环境,或任务上下文/环境变量显示存在 `XIAOE_*` / `xiaoeUserData/tokens.py`,登录处理必须优先走 XiaoE 统一登录:
26
43
 
27
- ### XiaoE Token 获取(顶层强规则)
28
-
29
- 需要Token时执行:
30
-
31
- Windows PowerShell:
44
+ ### XiaoE 凭据由 CLI 独占处理(顶层强规则)
32
45
 
33
- ```powershell
34
- python -c "import os,runpy;runpy.run_path(os.path.join(os.environ['LOCALAPPDATA'],'xiaoeUserData','tokens.py'),run_name='__main__')"
35
- ```
36
-
37
- macOS/Linux(bash/zsh):
46
+ Token、Cookie、ETEAMSID 和业务凭证**只能由 `weaver-work-cli` 内部读取和消费**。Agent 禁止:
38
47
 
39
- ```bash
40
- python3 -c "import os,runpy;runpy.run_path(os.path.join(os.path.expanduser('~'),'Library','Application Support','xiaoeUserData','tokens.py'),run_name='__main__')"
41
- ```
48
+ - 自行执行宿主 `xiaoeUserData/tokens.py`(或任何取 Token 的脚本)并把 stdout 读进上下文——stdout 含 ETEAMSID/Cookie/Token,会进入对话、日志与缓存;
49
+ - 执行 `weaver-work-cli auth export-weaver-env` 并 `eval` / `Invoke-Expression` 到当前 shell,或把 `WEAVER_*` 值写进命令、日志、报告;
50
+ - 要求用户粘贴、或在回复中展示、转述任何凭证。
42
51
 
43
- 读取 stdout 作为结果,stdout 期望是 JSON 对象;失败时返回实际错误。典型结果包含 `eteamId`。Token、Cookie、ETEAMSID 和业务凭证不得要求用户粘贴,也不得在回复中展示。脚本不存在、Python 依赖缺失、stdout 非法、接口失败或进程非 0 时,停止当前手动取 Token 的流程并反馈实际错误,不猜测或伪造 Token;但如果只是通过 `weaver-work-cli auth xiaoe` 取登录态,CLI 自己会在脚本不可用时改用内置原生实现,不需要 Agent 去安装 Python 依赖或中断认证流程。
52
+ 需要登录态时只运行 `weaver-work-cli auth xiaoe`(业务命令也会自动尝试)。CLI 内部按「平台注入 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` → 宿主 `tokens.py` → 桌面 XiaoE 客户端会话 → `WEAVER_XIAOE_*` 环境映射」顺序取凭据;沙箱(Linux、无桌面客户端、无 `tokens.py`)只会命中第一条,其余链路不可用时由 CLI 自行报错降级,Agent 不要替它安装 Python 依赖或手工取 Token。
44
53
 
45
54
  1. 未登录、登录失效、准备执行业务命令前需要确认 E10 会话,或 `auth status --no-check` 显示未登录时,先运行:
46
55
  ```text
47
56
  weaver-work-cli auth xiaoe
48
57
  ```
49
58
  2. 不得因为本地存在旧 profile、`auth profile current` 指向旧环境,或 `auth profile list` 里只有旧环境,就跳过 XiaoE 统一登录;也不得先要求用户选择旧 profile 或输入域名。
50
- 3. XiaoE 统一登录由 CLI 优先读取宿主 `xiaoeUserData/tokens.py`,用脚本 stdout JSON 中的 ETEAMSID 写入统一登录态;脚本不可用(不存在、执行失败,或所用 Python 缺少 `requests` 等依赖)时,CLI 会自动改用内置原生实现读取 XiaoE 客户端本地会话(`XiaoE/Robots/*/user_settings.json` 或 `XIAOE_USER_TOKEN`)换取 `eteamId`,该链路不需要本机 Python;仍拿不到凭证时,才消费宿主注入的 `XIAOE_*` 域名/凭证映射。Agent 不要打印、转述、索取或要求用户手动设置 `XIAOE_*`、Cookie、ETEAMSID、业务 Token,也不要因为脚本报缺依赖就中断登录或让用户装 Python 包。
51
- 4. `auth xiaoe` 和未显式指定 `--auth` / `--profile` 的业务命令都会先尝试上述统一登录;`tokens.py` 只返回 `eteamId` 时,CLI 采用 CLI 资料包内置的兜底 E10 域名(地址由资料包提供,不在文档中写死)作为兜底。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
59
+ 3. XiaoE 统一登录由 CLI 按序取凭证:① 平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`(沙箱唯一可用来源,不依赖桌面客户端与 Python);② 宿主 `xiaoeUserData/tokens.py`(仅桌面宿主);③ 内置原生实现读取桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)换取 `eteamId`;④ `WEAVER_XIAOE_*` 环境映射。宿主只注入 `XIAOE_DOMAIN`、`XIAOE_USER_TOKEN` 等平台变量,不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`。Agent 不要打印、转述、索取或要求用户手动设置这些凭证,也不要因为脚本报缺依赖就中断登录或让用户装 Python 包——降级由 CLI 内部完成。
60
+ 4. `auth xiaoe` 和未显式指定 `--auth` / `--profile` 的业务命令都会先尝试上述统一登录;`tokens.py` 只返回 `eteamId` 时,CLI 优先用宿主注入的 `XIAOE_DOMAIN` 作为兜底域名,没有时才采用 CLI 资料包内置的兜底 E10 域名(地址由资料包提供,不在文档中写死)。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
52
61
  5. XiaoE 统一登录走不通时,CLI 必须先反馈未拿到登录信息的原因;`auth xiaoe` 随后再降级打开浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。业务命令不得自动沿用旧 profile;如需网页登录,先运行 `weaver-work-cli auth xiaoe` 或由用户明确改用 `weaver-work-cli auth login`。
53
62
  6. `auth status --no-check` 只是本地诊断,不会主动触发 XiaoE 统一登录;业务命令和 `auth xiaoe` 才会尝试写入统一登录态。具体读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
54
63
 
@@ -77,7 +86,9 @@ weaver-work-cli doctor --e10
77
86
 
78
87
  如果命令不可用(尤其是 `command not found` 或退出码 127),先读 [`weaver-e10-installation.md`](references/weaver-e10-installation.md):先区分「已安装但不在 PATH」与「未安装」(前者只需把全局 bin 目录前置到 PATH,不要重装),确认未安装后再让用户选择 npm 源安装或本地代码安装;本地代码必须提供仓库目录。用户明确同意后才执行 `npm install -g weaver-work-cli`、`npm install`、`npm run build` 或 `npm link`。
79
88
 
80
- 3. 业务输入只描述业务对象和意图。认证、Cookie、ETEAMSID、业务 Token、接口地址和回查细节都由 CLI 托管。调用业务 operation 时,简单 JSON 优先使用 `--input-json '<json>'`;复杂或多行 JSON 先写入 UTF-8 `.json` 文件再传 `--input <path>`;只有确认当前 shell 能稳定传管道时才使用 `--input -`。生成或改写 docs、reference、提示词和命令示例时,必须同时兼容 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 写法。
89
+ 3. 业务输入只描述业务对象和意图。认证、Cookie、ETEAMSID、业务 Token、接口地址和回查细节都由 CLI 托管。调用业务 operation 时,简单 JSON 优先使用 `--input-json '<json>'`;多步传递优先用 shell 变量,超大结果用 `--input-ref <refId>`,不要把上一步 stdout 写入临时文件再作为下一步输入。`--input <path>` 只用于用户提供的 JSON 文件或明确的文件业务输入;复杂 JSON 可在确有需要时使用,不能用它中转 CLI 上一步的输出。只有确认当前 shell 能稳定传管道时才使用 `--input -`。生成或改写 docs、reference、提示词和命令示例时,必须同时兼容 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 写法。
90
+
91
+ CLI 对 `--input <path>` 默认只告警;需要拒绝文件 JSON 输入时使用 `--no-file-input`,或设置 `WEAVER_WORK_CLI_FILE_INPUT=deny` / config `io.fileInput=deny`。一次性允许时可用 `--allow-file-input`。`--input -` 和业务附件参数(如 `--file`)不受这条策略影响。
81
92
 
82
93
  4. 认证诊断只能通过 `weaver-work-cli auth root/status/profile list/profile current`、`weaver-work-cli doctor --e10` 和业务命令 JSON 错误完成。禁止直接列目录、打印、复制或解析用户态认证目录和认证文件。
83
94
 
@@ -111,19 +122,21 @@ Agent 调用业务能力时优先加 `--json`。成功看进程退出码 0 和 J
111
122
 
112
123
  ### 请求头契约(E10 接口调用强制)
113
124
 
125
+ **本段是请求头三件套的唯一权威声明**:业务 Skill 与 reference 一律引用本段,不再各自复制完整代码块;引用处只需一行紧凑指针指向本节(发布门禁 B10c 已停用,不再按技能目录逐个校验这三项参数名)。
126
+
114
127
  `weaver-work-cli` 发往 E10 的每个请求都由 CLI 统一携带以下三项用户信息参数,缺一不可(业务入参里不要传这些字段,也不要手工拼装请求头):
115
128
 
116
129
  ```text
117
- Cookie: <登录 skill 返回的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
118
- eteamsid: <登录 skill 返回的 ETEAMSID>
130
+ Cookie: <weaver-work-cli 托管登录态的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
131
+ eteamsid: <weaver-work-cli 托管登录态的 ETEAMSID>
119
132
  User-Agent: AgentType=<agentType>,IsAgent=true
120
133
  ```
121
134
 
122
- 登录与会话统一由 E10 登录能力提供:文档型约定为 `weaver-e10-login` 技能,本 CLI 场景下等价入口是 `weaver-work-cli auth ...` 命令体系;业务 Skill 不得自建登录流程,也不得读取、打印、转存任何认证目录或凭证。
135
+ 登录与会话统一由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系托管;业务 Skill 不得自建登录流程,也不得读取、打印、转存任何认证目录或凭证。
123
136
 
124
137
  返回 `partial`、`write_uncertain`、登录失效、回查失败或网络中断时,立即停止当前写流程,不自动重试写入或删除。
125
138
 
126
- 当前 CLI 的 JSON 输出是完整 envelope 直接写 stdout;没有飞书 CLI 那种通用 `--jq`、`--format table/ndjson` 或 `--page-all`。列表、详情、OCR、导出等可能产生大响应时,必须先读 [`json-output-contract.md`](references/json-output-contract.md) 的“大结果渲染与提效规则”:默认小页读取、只保留任务所需字段、分页有预算,回复用户时给摘要和路径,不要原样粘贴超长 JSON。
139
+ 当前 CLI 的普通大小 JSON 输出是完整 envelope;超过预算时会暂存完整结果,并在 stdout 返回精简摘要和 `refId`。CLI 没有飞书 CLI 那种通用 `--jq`、`--format table/ndjson` 或 `--page-all`。列表、详情、OCR、导出等可能产生大响应时,必须先读 [`json-output-contract.md`](references/json-output-contract.md) 的“大结果渲染与提效规则”:默认小页读取、只保留任务所需字段、分页有预算,回复用户时给摘要,不要原样粘贴超长 JSON。
127
140
 
128
141
  ## Reference 强触发索引
129
142
 
@@ -153,6 +166,4 @@ User-Agent: AgentType=<agentType>,IsAgent=true
153
166
 
154
167
  7. 附件、图片上传或文件解析属于敏感数据处理。即便 operation 风险等级不是高风险写入,也必须先取得用户对“文件内容可能进入大模型/外部解析服务”的明确确认;不能把用户仅提供文件路径或文件名视为同意解析或上传。
155
168
 
156
- 8. 在 XiaoE 宿主环境中,CLI 可以按顺序从宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的 XiaoE 客户端本地会话(`XiaoE/Robots/*/user_settings.json` 或 `XIAOE_USER_TOKEN`)、宿主注入的 `XIAOE_*` 环境变量读取支持统一登录的凭证;未显式传域名时优先使用凭证结果或资料包默认域名,再使用 XiaoE 环境支持域名,再其次才使用当前 profile,最后兜底 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死)。业务命令会在未显式指定 `--auth` / `--profile` 时自动优先尝试 XiaoE 统一登录;Agent 也可以显式调用 `weaver-work-cli auth xiaoe`。不要要求用户提供、展示或手动设置这些凭证。XiaoE 统一登录失败、当前域名不在支持范围内或用户切换访问域名时,`auth xiaoe` 必须先反馈原因,再自动降级到浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。
157
-
158
-
169
+ 8. 在 XiaoE 宿主环境中,CLI 按顺序从平台注入凭证(`XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`)、宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)、`WEAVER_XIAOE_*` 环境映射读取支持统一登录的凭证(宿主不会注入 ETEAMSID 环境变量);未显式传域名时优先使用凭证结果或 `XIAOE_DOMAIN`,再其次才使用当前 profile,最后兜底 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死)。业务命令会在未显式指定 `--auth` / `--profile` 时自动优先尝试 XiaoE 统一登录;Agent 也可以显式调用 `weaver-work-cli auth xiaoe`。不要要求用户提供、展示或手动设置这些凭证。XiaoE 统一登录失败、当前域名不在支持范围内或用户切换访问域名时,`auth xiaoe` 必须先反馈原因,再自动降级到浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。
@@ -83,7 +83,7 @@ weaver-work-cli auth whoami
83
83
  weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"
84
84
  ```
85
85
 
86
- 在 XiaoE 宿主环境中,`auth xiaoe` 会先读取宿主 `xiaoeUserData/tokens.py`,把 stdout JSON 中的 `eteamId` / `eteamsId` 作为 ETEAMSID 写入登录态;脚本不可用(不存在、执行失败,或所用 Python 缺少 `requests` 等依赖)时,CLI 会改用内置原生实现读取 XiaoE 客户端本地会话(`XiaoE/Robots/*/user_settings.json` 或 `XIAOE_USER_TOKEN`)换取 `eteamId`,该链路不需要本机 Python;仍未识别到可用凭证时,才读取宿主注入的 `XIAOE_*` 环境变量,查找“当前登录域名 -> ETEAMSID”的统一登录映射,并且保存的 `agentType` 固定为 `XiaoE`。如果命令没有显式传入域名,CLI 会优先使用凭证结果中的域名或 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死);没有脚本凭证但环境映射可用时,使用 XiaoE 环境变量里的首个支持域名;再没有时才使用当前 profile 配置。XiaoE 凭证校验失败、当前域名不在支持范围内,或用户切换了访问域名时,`auth xiaoe` 必须先反馈未拿到登录信息的原因,然后再降级打开浏览器 OAuth,降级等待必须遵守上方「浏览器 OAuth 降级防挂起」。
86
+ 在 XiaoE 宿主环境中,`auth xiaoe` 先使用平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 换取 ETEAMSID(沙箱唯一可用来源);拿不到时再读宿主 `xiaoeUserData/tokens.py` 的 stdout JSON(仅桌面宿主),再退回内置原生实现读取桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`,不需要本机 Python);仍未识别到可用凭证时,才读取 `WEAVER_XIAOE_*` 环境变量里的“当前登录域名 -> ETEAMSID”统一登录映射,并且保存的 `agentType` 固定为 `XiaoE`。如果命令没有显式传入域名,CLI 会优先使用凭证结果中的域名或宿主注入的 `XIAOE_DOMAIN`,再使用 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死);没有脚本凭证但环境映射可用时,使用 XiaoE 环境变量里的首个支持域名;再没有时才使用当前 profile 配置。XiaoE 凭证校验失败、当前域名不在支持范围内,或用户切换了访问域名时,`auth xiaoe` 必须先反馈未拿到登录信息的原因,然后再降级打开浏览器 OAuth,降级等待必须遵守上方「浏览器 OAuth 降级防挂起」。
87
87
 
88
88
  需要显式表达“XiaoE 优先”的场景也可以使用等价入口:
89
89
 
@@ -118,41 +118,20 @@ weaver-work-cli --profile PROFILE_NAME auth status --no-check
118
118
 
119
119
  通过 `weaver-work-cli run` 执行外部命令时,CLI 会按当前 profile 注入 `WEAVER_BASE_URL`、`WEAVER_ETEAMSID`、`WEAVER_COOKIE`、`WEAVER_USER_AGENT` 和 `WEAVER_AGENT_TYPE`。这些值只给子进程使用,不应在回复或日志中明文展示。
120
120
 
121
- XiaoE 的 `XIAOE_*` 环境变量只由宿主/客户端注入给 CLI 消费;Agent 不要打印、转述、要求用户手动填写或将其导出到当前 shell。CLI 当前支持 JSON 域名映射和单域名变量两类宿主格式,但这些格式属于宿主集成细节,不作为用户操作步骤。
121
+ `XIAOE_*` 是平台保留前缀,只由宿主注入给 CLI 消费(`XIAOE_DOMAIN` 业务服务地址、`XIAOE_USER_TOKEN` 业务凭据,均按次注入;`XIAOE_SKILL_*` 为包内目录变量)。本 CLI 自己的宿主集成变量使用自有前缀 `WEAVER_XIAOE_*`,例如 `WEAVER_XIAOE_AUTH_MAP`(JSON 域名映射)、`WEAVER_XIAOE_TOKEN_SCRIPT_PATH`/`WEAVER_XIAOE_TOKEN_SCRIPT_PYTHON`(指定宿主 `tokens.py` 及解释器)、`WEAVER_XIAOE_DEFAULT_DOMAIN`(默认域名);旧名 `XIAOE_E10_AUTH_MAP`、`XIAOE_TOKEN_SCRIPT_PATH` 等仅作兼容别名,新集成一律用 `WEAVER_XIAOE_*`。
122
122
 
123
- ## XiaoE Token 获取
123
+ 宿主不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`;ETEAMSID 一律由登录链路换取。CLI 支持两类宿主格式:平台注入的 `XIAOE_DOMAIN` + `XIAOE_USER_TOKEN`,以及 `WEAVER_XIAOE_*` 域名映射。这些格式属于宿主集成细节,不作为用户操作步骤;Agent 不要打印、转述、要求用户手动填写或将其导出到当前 shell。
124
124
 
125
- `auth xiaoe` 或业务命令需要 XiaoE 统一登录时,由 CLI 优先读取本流程中的宿主脚本;未识别到可用脚本凭证时,才考虑 `XIAOE_*` 映射。只有在业务流程明确需要 XiaoE Token,且 CLI 没有更专用的认证/业务命令可用时,Agent 才直接执行本流程。Token 获取脚本属于宿主能力,Agent 不要要求用户粘贴 Token,也不要在回复中展示 stdout 里的 Token、Cookie、ETEAMSID 或业务凭证。
125
+ ## XiaoE 凭据由 CLI 独占处理
126
126
 
127
- 脚本固定从 XiaoE 用户数据目录读取。执行后读取 stdout 作为结果;stdout 期望是 JSON 对象,典型结果包含 `eteamId`。若脚本不存在、Python 依赖缺失、stdout 不是合法 JSON、接口失败或进程非 0 退出,停止当前认证流程,并把实际错误反馈给用户,不要猜测或伪造 Token。
127
+ `auth xiaoe` 或业务命令触发统一登录时,CLI 按以下顺序自行取凭据,Agent **不参与、也不得复现**:
128
128
 
129
- Windows PowerShell:
129
+ 1. **平台注入凭据**:`XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`(小 e 业务服务地址)。这是沙箱/Linux 环境唯一可用的来源,不依赖桌面客户端与 Python。
130
+ 2. **宿主 `tokens.py`**:桌面宿主 `xiaoeUserData/tokens.py`(macOS `~/Library/Application Support/xiaoeUserData/tokens.py`,Windows `%LOCALAPPDATA%\xiaoeUserData\tokens.py`);可用 `WEAVER_XIAOE_TOKEN_SCRIPT_PATH` 指定路径。
131
+ 3. **桌面 XiaoE 客户端会话**:`XiaoE/Robots/<id>/user_settings.json` 的 `session_id` + `erpa`,由 CLI 内置 Node 实现换取 `eteamId`,不需要本机 Python。
132
+ 4. **`WEAVER_XIAOE_*` 环境映射**:当前登录域名到 ETEAMSID 的映射。
130
133
 
131
- ```powershell
132
- python -c "import os,runpy;runpy.run_path(os.path.join(os.environ['LOCALAPPDATA'],'xiaoeUserData','tokens.py'),run_name='__main__')"
133
- ```
134
-
135
- macOS/Linux(bash/zsh):
136
-
137
- ```bash
138
- python3 -c "import os,runpy;runpy.run_path(os.path.join(os.path.expanduser('~'),'Library','Application Support','xiaoeUserData','tokens.py'),run_name='__main__')"
139
- ```
140
-
141
- 如必须导出到当前 shell,按环境选择:
142
-
143
- Windows PowerShell:
144
-
145
- ```powershell
146
- Invoke-Expression (weaver-work-cli auth export-weaver-env --shell powershell)
147
- ```
148
-
149
- macOS/Linux(bash/zsh):
150
-
151
- ```bash
152
- eval "$(weaver-work-cli auth export-weaver-env --shell posix)"
153
- ```
154
-
155
- `auth export-weaver-env` 默认 `--shell auto` 会在 Windows 输出 PowerShell 语法,在 macOS/Linux 输出 POSIX shell 语法;不确定时先用 `node -p "process.platform"` 判断。
134
+ Agent 禁止自行执行 `tokens.py` 或任何取 Token 脚本(其 stdout 含 ETEAMSID/Cookie/Token,会进入对话与日志),禁止 `eval` / `Invoke-Expression` `auth export-weaver-env` 的输出,也禁止要求用户粘贴或展示任何凭证。脚本不存在、Python 依赖缺失、stdout 非法或接口失败,都由 CLI 内部记录并降级;Agent 只需把 CLI 反馈的原因转述给用户,不猜测或伪造 Token。
156
135
 
157
136
  ## 安全边界
158
137
 
@@ -76,27 +76,35 @@ macOS/Linux(bash/zsh):
76
76
  weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":10,"start_pos":0}'
77
77
  ```
78
78
 
79
- 复杂或多行 JSON 使用临时 UTF-8 文件。Windows PowerShell 示例:
79
+ 复杂或多行 JSON 优先拆成简单参数并使用 `--input-json`;需要在同一个 shell 内连续调用时,把 stdout 保存在变量里传递。不要把上一步 CLI 的 stdout 重定向到临时文件,再用 `--input <path>` 喂给下一条命令。`--input <path>` 留给用户提供的 JSON 文件或明确需要文件的业务操作。
80
+
81
+ `--input <path>` 默认会告警但继续执行。可用 `--no-file-input` 或 `WEAVER_WORK_CLI_FILE_INPUT=deny` / config `io.fileInput=deny` 拒绝;需要临时放行时可传 `--allow-file-input`。`--input -`(stdin)和业务附件参数(如 `--file`)不受此策略影响。
82
+
83
+ Windows PowerShell 的多步传递示例:
80
84
 
81
85
  ```powershell
82
- $inputFile = Join-Path $env:TEMP "weaver-work-cli-input.json"
83
- @{ page_size = 10; start_pos = 0 } | ConvertTo-Json -Depth 20 -Compress | Set-Content -Encoding UTF8 -NoNewline $inputFile
84
- weaver-work-cli --json invoice run invoice.list --input $inputFile
86
+ $cli = "weaver-work-cli"
87
+ $out = (& $cli --json invoice run invoice.list --input-json '{"page_size":200}') -join "`n"
88
+ if ($LASTEXITCODE -ne 0) { throw $out }
89
+ $refId = ($out | ConvertFrom-Json).refId
90
+ & $cli --json invoice run invoice.get --input-ref $refId --pick 'items[0].fid' --pick-as fid
85
91
  ```
86
92
 
87
- macOS/Linux(bash/zsh)示例:
93
+ macOS/Linux(bash/zsh)的多步传递示例:
88
94
 
89
95
  ```bash
90
- input_file="$(mktemp)"
91
- printf '%s\n' '{"page_size":10,"start_pos":0}' > "$input_file"
92
- weaver-work-cli --json invoice run invoice.list --input "$input_file"
96
+ out="$(weaver-work-cli --json invoice run invoice.list --input-json '{"page_size":200}')"
97
+ ref_id="$(node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>process.stdout.write(JSON.parse(s).refId||""))' <<<"$out")"
98
+ weaver-work-cli --json invoice run invoice.get --input-ref "$ref_id" --pick 'items[0].fid' --pick-as fid
93
99
  ```
94
100
 
101
+ `--pick` 选出一个对象时,会把该对象直接作为下一条命令的输入。选出单个值时,必须同时用 `--pick-as <字段名>` 指定输入字段,例如 `--pick items[0].fid --pick-as fid`。
102
+
95
103
  Windows/PowerShell 下不要使用 `printf`、bash 反斜杠续行、`$HOME/...` 或 `~/...` 路径、`rm/ls/diff/python3` 等 Unix-only 写法;目录查看用 `Get-ChildItem`,删除用 `Remove-Item`,文件比对用 `Get-FileHash`,Python 启动器优先用 `py -3`。
96
104
 
97
105
  ## 大结果渲染与提效规则
98
106
 
99
- 当前 `weaver-work-cli` 输出层是轻量封装:JSON 模式把完整结果写 stdout,文本模式写人类可读文本;不像飞书 CLI 已内置 `--format table/pretty/ndjson`、`--jq` 或通用 `--page-all`。Agent 因此必须在调用和回复阶段主动控量,避免把超长接口响应原样渲染给用户。
107
+ 当前 `weaver-work-cli` 输出层是轻量封装:JSON 模式对普通结果写完整 envelope,超预算结果会写入 CLI state 并返回摘要和 `refId`;文本模式写人类可读文本。CLI 不像飞书 CLI 已内置 `--format table/pretty/ndjson`、`--jq` 或通用 `--page-all`。Agent 仍需在调用和回复阶段主动控量,避免把超长接口响应原样渲染给用户。
100
108
 
101
109
  ### 调用前控量
102
110
 
@@ -110,11 +118,12 @@ Windows/PowerShell 下不要使用 `printf`、bash 反斜杠续行、`$HOME/...`
110
118
  - 不要把完整 stdout JSON 直接粘给用户。优先输出结论、命中数量、关键字段、下一页/剩余数据提示和必要的文件路径。
111
119
  - 列表结果只展示最相关的前 `10` 条;如果用户要求更多,分批展示并说明还可以继续读取。
112
120
  - 详情结果只展示与用户问题相关的字段。发票类详情通常优先展示 `fid`、号码/代码、购销方、金额、日期、查验/报销状态和附件摘要。
113
- - 超长文本、大数组、OCR 原文、逐项明细或调试需要的完整 JSON,优先写入本地文件再给路径;不要在对话里展开。可用 shell 重定向保存完整 stdout,或业务 operation 暴露 `output` 参数时使用其文件输出。
121
+ - 大结果会由 CLI 暂存在用户级 state 目录,并返回 `refId`。后续操作用 `--input-ref <refId>` 和可选的 `--pick` / `--pick-as` 取所需数据;不要直接读取暂存文件,也不要用 `head` / `tail` 截取 JSON。
122
+ - 如果用户确实需要一个可交付文件,使用业务 operation 提供的下载/导出参数或用户指定的输出路径;不要把 CLI stdout 当成临时中转文件。
114
123
  - 如果为了调试必须引用原始 envelope,只截取必要字段:`ok`、`operation`、`meta`、`warnings`、`error` 或 `data` 的相关子树。
115
124
 
116
125
  ### 参考飞书 CLI 的实践
117
126
 
118
127
  - 飞书 CLI 用 `--format json` 保留机器可读 envelope,用 `pretty/table/ndjson/csv` 降低人读成本;本 CLI 目前主要依赖 `--json` envelope,因此 Agent 回复时承担 pretty/table 摘要职责。
119
128
  - 飞书 CLI 的分页实践是显式页预算(如 `--page-limit`)和页间延迟;本 CLI 业务 operation 应使用自身 schema 中的 `page_size/start_pos` 等字段模拟同样的预算控制。
120
- - 飞书 CLI 对大产物倾向返回 artifact 文件路径;本 CLI 遇到下载、导出、OCR 或超长 JSON 时也应优先落盘并只向用户展示路径和摘要。
129
+ - 下载和导出产物属于用户文件,按用户指定路径交付;超长命令结果属于 CLI 暂存数据,使用 `refId` 传递并只展示必要摘要。
@@ -23,7 +23,8 @@ cliHelp: "weaver-work-cli project --help"
23
23
 
24
24
  ## CRITICAL:共享规则
25
25
 
26
- 先读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。若该文件不存在,先执行 `weaver-work-cli skills install shared --target-dir <当前Agent的Skills目录>`;若 CLI 未安装,先执行 `npm install -g weaver-work-cli`。安装或读取失败时必须停止执行。
26
+ 先读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。
27
+ **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
27
28
 
28
29
  ## 路由
29
30
 
@@ -1241,13 +1241,13 @@
1241
1241
  }
1242
1242
  },
1243
1243
  "artifactBaseline": {
1244
- "aggregateSha256": "084fd449a1270b77670a27b4bfd8fccec32b838306714e761ea2858c22d239e9",
1244
+ "aggregateSha256": "60eafebefaa0b7d6e75758ae78e3e5e1349ee453f33826de54c7293fb6e0fa41",
1245
1245
  "files": [
1246
1246
  {
1247
1247
  "path": "docs/_catalog.md",
1248
1248
  "role": "generated-doc",
1249
- "size": 4580,
1250
- "sha256": "7ec48267965b4ccd35dcc463ed0a73dd71c3f4d2fc3d978165f508261945d4b3"
1249
+ "size": 5332,
1250
+ "sha256": "a81903939aea5bf1196d1e3243709d2facf50d9bdcf74d8a6ca731061310dbbe"
1251
1251
  },
1252
1252
  {
1253
1253
  "path": "docs/project.md",
@@ -1258,8 +1258,8 @@
1258
1258
  {
1259
1259
  "path": "skill-template/business-info.json",
1260
1260
  "role": "generated-template",
1261
- "size": 6294,
1262
- "sha256": "7af8cc1b35564b11a4c33cf566b22919d75c8a4daeec488d6ff8979c098c8ff7"
1261
+ "size": 8216,
1262
+ "sha256": "370a45e86c6b7e33869c5df1bf08d9f22bd98fa8b157b49716e13bca0e7b63c3"
1263
1263
  },
1264
1264
  {
1265
1265
  "path": "skill-template/domains/shijingran.md",
@@ -1288,14 +1288,14 @@
1288
1288
  {
1289
1289
  "path": "skills/weaver-e10-shijingran/SKILL.md",
1290
1290
  "role": "generated-skill-entry",
1291
- "size": 6944,
1292
- "sha256": "e9556f31837163d637057981bdf5dddb7a1feed7653c61f0647c9d0a5ab38432"
1291
+ "size": 8174,
1292
+ "sha256": "597968607ca3321aac3b91e687c5963bdf1baee16d5f394aad64910e1ece53bf"
1293
1293
  },
1294
1294
  {
1295
1295
  "path": "src/shortcuts/index.ts",
1296
1296
  "role": "generated-cli",
1297
- "size": 1274,
1298
- "sha256": "54df058151b6f3602a2d112a49396b4ad4121cdba06d31c4c368ebd3235192c4"
1297
+ "size": 1420,
1298
+ "sha256": "569bef374df2d86b511150a0c609ce1abee63f8317994513bce6241276b5be40"
1299
1299
  },
1300
1300
  {
1301
1301
  "path": "src/shortcuts/project/continuation.ts",
@@ -11,13 +11,13 @@ agent_created: true
11
11
  requires:
12
12
  bins: ["weaver-work-cli"]
13
13
  dependencies:
14
- - weaver-e10-login
14
+ - weaver-e10-shared
15
15
  cliHelp: "weaver-work-cli skills --help"
16
16
  ---
17
17
 
18
18
  # weaver-work-cli Skill Maker
19
19
 
20
- **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`,安装或读取失败时必须停止执行。**
20
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md),其中包含安装、E10 认证、JSON 输出和高风险写入规则。若共享规则不存在、CLI 未安装或读取失败,说明本技能的必需依赖缺失,必须先提示用户先补齐 `weaver-work-cli` 与共享 skill `weaver-e10-shared`(不补齐本技能无法执行),并把下面两条待执行命令原样完整展示给用户;Agent 不能自行安装——必须先取得用户明确确认后再执行。用户确认后按顺序执行且仅执行一次:① 缺 CLI 时执行 `npm install -g weaver-work-cli`;② 再执行 `weaver-work-cli skills install shared --target-dir <SKILLS_ROOT>` 装回共享 skill,`<SKILLS_ROOT>` 取本 SKILL.md 所在目录的上一级绝对目录(即与本技能同级的 skills 根目录),不要省略 `--target-dir`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
21
21
 
22
22
 
23
23
  本 Skill 参考飞书 CLI 的 `lark-skill-maker`,但输出范围更完整:Agent 需要把已经给出的业务模块资料同步固化为 `weaver-e10-*` Agent Skill 和对应 `src/shortcuts/<module>` TypeScript CLI 能力。新业务模块一开始没有对应 `weaver-work-cli` 业务命令是正常输入,但不能只生成文档型 Skill;默认要把 CLI 一并设计、实现、测试并让 Skill 调用真实 operation。转换时以**业务语义保真**为第一目标:入口 `SKILL.md` 可以轻量,但 `references/`、schema、handler、测试和禁用边界必须承接源资料里的可执行业务细节,不能把多份源 MD 压缩成泛泛概述导致能力退化。
@@ -26,15 +26,8 @@ cliHelp: "weaver-work-cli skills --help"
26
26
 
27
27
  ## 认证与请求头契约
28
28
 
29
- 登录与会话由 E10 登录能力统一提供:文档型约定为 `weaver-e10-login` 技能,本 CLI 场景下等价入口是 `weaver-work-cli auth ...` 命令体系。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
29
+ 登录与会话由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系统一托管。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
30
30
 
31
- CLI 发往 E10 的每个请求都自动携带以下三项用户信息参数,**缺一不可**(业务入参里不要传这些字段,也不要手工拼装请求头):
32
-
33
- ```text
34
- Cookie: <登录返回的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
35
- eteamsid: <登录返回的 ETEAMSID>
36
- User-Agent: AgentType=<agentType>,IsAgent=true
37
- ```
38
31
 
39
32
  ## 适用范围
40
33
 
@@ -53,6 +46,7 @@ User-Agent: AgentType=<agentType>,IsAgent=true
53
46
  - 用户已明确作为输入提供的业务文档、代码目录、接口说明或样例,视为本次转换的源资料;先读取与当前模块直接相关的原文和现有 reference,再判断是否缺口。不要只因为“需要读取 reference 原文”就停止。
54
47
  - 转换不得以摘要替代业务规则。源 MD 中的字段表、枚举/状态、默认值、固定参数、权限前置、分页/排序口径、ID 解析规则、流程分支、写入确认条件、错误码、返回结构、示例和禁用能力,必须分别落到 `manifest.ts` / handler / reference / 测试 / 禁用边界之一;确实不能迁移的细节要在待确认清单或禁用边界说明原因。
55
48
  - 源资料给出结构化 JSON 请求体字段表时,`inputSchema.properties` 必须逐字段转换字段名、类型、必填、数组元素和嵌套对象;禁止只暴露 `payload`、`body`、`requestPayload` 或 `object` 这类通用包裹字段来替代字段转换。确需兼容旧 `payload` 输入时,只能在 handler 归一化层保留兼容,schema/reference 仍以逐字段 canonical 入参为准。
49
+ - 源资料给出接口响应、出参或返回值字段表时,`outputSchema.properties` 必须按 CLI 成功 envelope 的 `data` 逐字段转换字段名、类型、必填、数组元素和嵌套对象;禁止只写 `result`、`data`、`raw` 或 `object` 这类通用包裹字段来替代返回值转换。确需透传服务端原始响应时,要在 `outputSchema` 中同时声明已知稳定字段和 raw 字段边界。
56
50
  - 缺口只阻断受影响的 operation;已能从源资料确认的只读、预览、准备或文档索引部分要继续实现。不能实现的能力写入待确认清单或禁用边界,不要生成假 operation。
57
51
  - 如果确实必须等用户补充,回复必须列出具体缺口并提出明确问题,例如缺少哪个 operation 的接口路径、请求方法、关键字段、权限边界、幂等键、回查接口或写入确认条件。不能只说“需要确认细节”,也不要以“实现前需要确认几个细节”“随后开始实现”这类状态句作为最终回复。
58
52
 
@@ -51,7 +51,9 @@
51
51
  - `deprecatedAlias`:兼容旧字段,写入 `deprecatedInputAliases` 并测试冲突规则。
52
52
  - `withheld`:源资料有该参数或能力,但当前 CLI 不支持,写清原因。
53
53
  - `needs-confirmation`:源资料只出现字段名或片段,缺少类型、是否必填、来源、枚举、权限、回查或绑定规则,等待用户补充。
54
- - `not-applicable`:接口内部字段、展示字段或返回字段,不应暴露为 Agent 入参。
54
+ - `not-applicable`:接口内部字段或展示字段,不应暴露为 Agent 入参;返回字段不得仅标为 not-applicable,必须继续纳入 `outputSchema` 或输出覆盖矩阵。
55
+
56
+ 还要为每个 operation 写入或更新输出覆盖矩阵,至少记录在 `source-manifest.json` 的 `operationImpact[operation].outputFields` / `outputSchemaCoverage` 或等价结构中。矩阵必须以源资料响应字段表、返回示例或代码中的稳定返回对象为起点,逐项记录返回字段名、源位置、类型、必填或可选、数组元素、嵌套对象、枚举/状态码和落到的 `outputSchema` 路径。源资料缺少响应字段表但有响应示例时,可以从示例抽取稳定字段并标注来源;源资料完全缺少响应事实时,登记 `missingOutputSchema` 或 `needs-confirmation`,不能用通用 `object`、`raw` 或 `result` 代替逐字段转换。
55
57
 
56
58
  入参 example 采用分级规则,不能因源资料没有 example 就阻断整个生成:
57
59
 
@@ -76,12 +78,12 @@
76
78
  不要把多份源 MD 压缩成一个“能力概述”。对每个业务对象或 operation,至少检查并迁移以下可执行细节:
77
79
 
78
80
  - 字段表:字段名、类型、必填、默认值、枚举/状态、单位、时间格式、ID 精度、别名、互斥/二选一/至少一个、固定参数和废弃字段兼容策略。
79
- - 请求与响应:接口路径、请求方法、query/body/form/file 位置、分页/排序/筛选口径、返回结构、成功判定、错误码、空结果语义和大结果展示规则。
81
+ - 请求与响应:接口路径、请求方法、query/body/form/file 位置、分页/排序/筛选口径、返回结构、返回字段名/类型/必填/数组元素/嵌套对象、成功判定、错误码、空结果语义和大结果展示规则。
80
82
  - 业务流程:前置查询、版本门禁、权限/scope、对象状态流转、跨链路差异、ID/名称解析、缓存或字典依赖、写前回查、写后回查和不确定结果处理。
81
83
  - 示例与边界:源资料已有入参 example 时必须迁移到 manifest 和 reference;源资料没有 example 时按参数完整度生成 `synthetic` 样例或登记 `missingExamples`,并在最终报告中列出待补充项;如果源资料区分成功、失败、不同链路或不同对象类型,要分别保留能影响执行的差异。
82
84
  - 禁用与缺口:源资料出现但未生成 CLI operation 的能力,必须进入 schema 的 withheld/disabled 信息或 reference 的禁用边界,并写清缺少的事实和为什么阻断。
83
85
 
84
- 迁移方式要按所有权落点分配:`manifest.ts` / `schema` 承载 WHAT,handler 和 host 承载请求形状与校验,`references/` 承载条件化 HOW,测试承载关键语义回归。不能只把细节写在自然语言里,也不能只在代码里实现而不让 Skill/reference 指到对应用法。若源资料给出 JSON 请求体字段表,`inputSchema.properties` 必须逐项暴露这些业务字段;不能把整段请求体塌缩成 `payload`/`body`/`requestPayload` 一个 object 后宣称已转换。
86
+ 迁移方式要按所有权落点分配:`manifest.ts` / `schema` 承载 WHAT,handler 和 host 承载请求形状与校验,`references/` 承载条件化 HOW,测试承载关键语义回归。不能只把细节写在自然语言里,也不能只在代码里实现而不让 Skill/reference 指到对应用法。若源资料给出 JSON 请求体字段表,`inputSchema.properties` 必须逐项暴露这些业务字段;不能把整段请求体塌缩成 `payload`/`body`/`requestPayload` 一个 object 后宣称已转换。若源资料给出响应字段表或返回示例,`outputSchema.properties` 必须按 CLI 成功 envelope 的 `data` 结构逐项暴露稳定返回字段;不能只把整段响应塌缩成 `result`/`data`/`raw` 一个 object 后宣称已转换。
85
87
 
86
88
  如果源资料描述的是底层接口,但仓库还没有对应 operation,按 [`module-cli-generation.md`](module-cli-generation.md) 先实现 CLI,再让 Skill 调用该 operation。确实缺少实现依据时,把缺口列入待确认清单并问用户,不能生成假 operation;缺口只阻断对应 operation,已确认的能力继续生成 CLI、测试、docs 和 Skill reference。
87
89
 
@@ -76,6 +76,7 @@ export interface <Module>OperationContract {
76
76
  source?: string;
77
77
  }>;
78
78
  inputSchema: Record<string, unknown>;
79
+ outputSchema: Record<string, unknown>;
79
80
  }
80
81
 
81
82
  export const <module>Operations: <Module>OperationContract[] = [
@@ -86,6 +87,11 @@ export const <module>Operations: <Module>OperationContract[] = [
86
87
  type: 'object',
87
88
  additionalProperties: false,
88
89
  properties: {}
90
+ },
91
+ outputSchema: {
92
+ type: 'object',
93
+ additionalProperties: false,
94
+ properties: {}
89
95
  }
90
96
  }
91
97
  ];
@@ -93,6 +99,8 @@ export const <module>Operations: <Module>OperationContract[] = [
93
99
 
94
100
  operation 名称使用 `<module>.<action>`,多级动作可用 `<module>.<object>.<action>`。`inputSchema` 必须禁止额外字段;需要二选一、至少一个、互斥、固定值或默认值时用 JSON Schema 表达,不把规则只写在说明里。源资料给出结构化 JSON 请求体字段表时,必须把字段逐项转换进 `inputSchema.properties`,包括必填、数组元素、嵌套对象、枚举和默认值;不得只写 `{ payload: { type: "object" } }`、`requestPayload`、`body` 或 `additionalProperties: true` 来代替参数转换。若为了兼容旧版本继续接受 `payload`,只能在 handler 归一化中处理,并用测试证明 canonical 顶层字段仍是 schema/reference 的唯一推荐输入。源资料给出权限、scope、角色、身份或接口前置条件时,记录到 `auth`、`permissions`、`scope` 或 `fixed` 中;如果当前模块不需要这些字段,可以省略,但不能把已知权限事实只放在正文里。
95
101
 
102
+ `outputSchema` 描述 `--json run` 成功 envelope 中的 `data` 字段,不描述外层 `{schemaVersion, ok, operation, meta, warnings}`。源资料给出接口响应、出参、返回值字段表或响应示例时,必须把稳定字段逐项转换进 `outputSchema.properties`,包括字段名、类型、必填、数组元素、嵌套对象、枚举、状态码和分页/汇总字段;不得只写 `{ result: { type: "object" } }`、`raw`、`data` 或 `additionalProperties: true` 来代替返回值转换。handler 对服务端响应做过归一化时,`outputSchema` 以 CLI 实际返回的 `data` 结构为准,并在属性说明里标注原始接口字段来源;确需保留服务端原始响应时,只能把 raw 字段作为附加属性暴露,同时仍要声明 CLI 已知的稳定字段。源资料没有返回字段表但有示例时,从示例抽取稳定字段并标明 `sourceType: "synthetic"` 或在 source-manifest 记录待复核;源资料完全缺少响应事实时,写入 `missingOutputSchema` 或等价待确认项,不要编造字段。
103
+
96
104
  `inputExamples` 是 Agent 入参格式的优先参考,按以下规则生成:
97
105
 
98
106
  - 源资料、历史 Skill、测试脚本或接口文档已有入参样例时,必须迁移到 `inputExamples`,`sourceType` 为 `source-provided`,`source` 指到源文件、标题、脚本或稳定 chunk;这类样例缺失时测试失败。
@@ -174,33 +182,10 @@ operation 名称使用 `<module>.<action>`,多级动作可用 `<module>.<objec
174
182
 
175
183
  生成的 E10 业务 Skill 必须遵守登录与凭证红线:
176
184
 
177
- - 登录与会话统一由 `weaver-e10-login` 提供;CLI 场景下的等价入口是 `weaver-work-cli auth ...`,业务 Skill 不得自行实现任何登录流程。
178
- - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-login`。
179
- - 每个请求必须携带 `weaver-e10-login` 返回的三项用户信息参数,缺一不可:
180
-
181
- ```text
182
- Cookie: <weaver-e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
183
- eteamsid: <weaver-e10-login 返回的 ETEAMSID>
184
- User-Agent: AgentType=<agentType>,IsAgent=true
185
- ```
186
-
187
- - Skill 与 reference 文档中若描述了接口请求,必须同时写明上述请求头契约,否则发布门禁会阻断。
188
-
189
- ### 登录与凭证契约(生成产物必须遵循)
190
-
191
- 生成的 E10 业务 Skill 必须遵守登录与凭证红线:
192
-
193
- - 登录与会话统一由 `weaver-e10-login` 提供;CLI 场景下的等价入口是 `weaver-work-cli auth ...`,业务 Skill 不得自行实现任何登录流程。
194
- - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-login`。
195
- - 每个请求必须携带 `weaver-e10-login` 返回的三项用户信息参数,缺一不可:
196
-
197
- ```text
198
- Cookie: <weaver-e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
199
- eteamsid: <weaver-e10-login 返回的 ETEAMSID>
200
- User-Agent: AgentType=<agentType>,IsAgent=true
201
- ```
202
-
203
- - Skill 与 reference 文档中若描述了接口请求,必须同时写明上述请求头契约,否则发布门禁会阻断。
185
+ - 登录与会话统一由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系托管,业务 Skill 不得自行实现任何登录流程。
186
+ - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-shared`。
187
+ - 每个请求的请求头三件套(Cookie 完整原始串 / `eteamsid` / `User-Agent`)由 `weaver-work-cli` 统一注入,业务侧不得手工拼装或覆盖;唯一权威声明见 [`../../weaver-e10-shared/SKILL.md`](../../weaver-e10-shared/SKILL.md) 的「请求头契约」章节。
188
+ - Skill 与 reference 文档中若描述了接口请求,只需一行指针引用 `weaver-e10-shared` 的「请求头契约」,不要复制完整代码块。
204
189
 
205
190
  E10 业务模块必须复用 `src/internal/e10` 的 session、profile 和 request runtime,不直接读取认证文件、Cookie、Keychain 或 legacy auth 目录,也不在业务 `host.ts` 中直接调用 `fetch`。业务 host 只封装本模块需要的请求方法,负责:
206
191
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  先构建单模块现状清单:
19
19
 
20
- - CLI manifest:`weaver-work-cli <command> schema` 或 `src/shortcuts/<command>/manifest.ts` 中的 operation、`inputSchema`、risk、fixed、权限、`inputExamples`、`missingExamples`。
20
+ - CLI manifest:`weaver-work-cli <command> schema` 或 `src/shortcuts/<command>/manifest.ts` 中的 operation、`inputSchema`、`outputSchema`、risk、fixed、权限、`inputExamples`、`missingExamples`。
21
21
  - handler/host:registry 是否一一对应,handler 是否使用 schema 字段,host 请求 method/path/query/body/form/file 是否可被测试断言。
22
22
  - Skill:`SKILL.md` 路由表、reference 文件、命令示例、禁用边界、写操作确认链说明。
23
23
  - Source manifest:`sources`、`sourceChunks`、`operationImpact`、`sourceCoverage`、`artifactBaseline`、参数覆盖矩阵和 notes。
@@ -28,6 +28,7 @@
28
28
  - 基线缺口:manifest 旧版、弱检测、源文件为空、artifactBaseline 缺失或聚合 hash 不一致。
29
29
  - 映射缺口:CLI operation 没有 `operationImpact`;`operationImpact` 指向不存在的 operation;sourceChunk 没有映射 operation/reference;业务源文件没有 `sourceCoverage`。
30
30
  - 参数缺口:源资料参数没有进入 `inputSchema`,也没有标记为 `fixed`、`derived`、`deprecatedAlias`、`withheld`、`needs-confirmation` 或 `not-applicable`。
31
+ - 输出缺口:源资料响应字段、出参或返回示例没有进入 `outputSchema`,也没有在 `operationImpact` 的 `outputFields` / `outputSchemaCoverage` / `missingOutputSchema` 中说明;只用 `result`、`data`、`raw` 或通用 `object` 包裹返回值视为未逐字段转换。
31
32
  - 示例缺口:源资料已有 example 但 manifest/reference 没迁移;源资料没有 example 但未记录 `missingExamples` 或 `synthetic` 样例。
32
33
  - 业务逻辑缺口:源资料里的接口路径、请求方法、固定参数、枚举、默认值、分页、状态流转、权限、ID 解析、写前/写后回查、错误码或返回结构没有落到 schema/handler/reference/test。
33
34
  - 写入安全缺口:新增、编辑、删除、导入、同步等真实写入缺少 `prepare -> apply`、`confirm: true`、continuation、指纹校验或 `partial/write_uncertain` 处理。
@@ -49,11 +50,11 @@
49
50
  修复必须按 contract-first 顺序推进:
50
51
 
51
52
  1. 锁定源事实:读对应 source chunk、源文档标题、接口定义、历史脚本或用户补充说明;记录来源锚点。
52
- 2. 更新 schema:补 `inputSchema`、required、enum、默认值、oneOf/anyOf、fixed、权限、`inputExamples` 或 `missingExamples`。
53
+ 2. 更新 schema:补 `inputSchema`、`outputSchema`、required、enum、默认值、oneOf/anyOf、fixed、权限、`inputExamples`、`missingExamples`、`missingOutputSchema`。
53
54
  3. 更新执行逻辑:补 handler 输入归一化、host 请求形状、固定参数、派生参数、错误映射、分页和写入确认链。
54
55
  4. 更新 Skill/reference:命令示例优先引用 manifest `inputExamples`;缺 example 时写 `missingExamples` 和待补事实,不伪装成源样例。
55
- 5. 更新 source-manifest:补 `sourceChunks`、`operationImpact`、`sourceCoverage`、`parameterCoverage`、`artifactBaseline` 和 notes。
56
- 6. 更新测试:至少覆盖 schema 字段、请求形状、reference 示例字段、source-manifest 映射、高风险写入确认链和缺口登记。
56
+ 5. 更新 source-manifest:补 `sourceChunks`、`operationImpact`、`sourceCoverage`、`parameterCoverage`、`outputFields` / `outputSchemaCoverage`、`artifactBaseline` 和 notes。
57
+ 6. 更新测试:至少覆盖 schema 字段、输出字段 schema、请求形状、reference 示例字段、source-manifest 映射、高风险写入确认链和缺口登记。
57
58
  7. 运行验证:业务测试、`weaver-work-cli <command> schema`、`weaver-work-cli skills read weaver-e10-<skill>`、layout 测试;创建或更新 Skill 后按 detector 规则询问是否质检。
58
59
 
59
60
  如果发现源资料中有底层接口但当前没有 operation,先判断是否能形成稳定、业务友好的高层 operation。能实现时补 CLI operation、reference 和测试;不能实现时写入 withheld,不要把原始接口路径直接暴露给 Agent。
@@ -67,10 +68,21 @@
67
68
  - 可由当前用户、前置查询、名称解析、prepare continuation 或上下文推导的字段,标为 `derived` 并测试解析失败路径。
68
69
  - 旧 Skill/历史脚本字段需要兼容时,进入 `deprecatedInputAliases`,并测试新旧字段冲突。
69
70
  - 源资料提到但缺少类型、必填、枚举或来源时,标为 `needs-confirmation`,最终报告列出具体问题。
70
- - 接口内部字段、返回字段或展示字段,标为 `not-applicable`。
71
+ - 接口内部字段或展示字段,标为 `not-applicable`。返回字段不能因为“不作为入参”就结束处理;必须继续进入输出修复规则。
71
72
 
72
73
  严禁为了让业务逻辑“跑起来”把不确定字段放进 `additionalProperties: true`。除非已有模块明确是通用 datajson 透传能力,否则业务 operation 的顶层 `inputSchema.additionalProperties` 必须为 `false`。
73
74
 
75
+ ## 输出修复规则
76
+
77
+ 补返回值时逐项判断归属:
78
+
79
+ - CLI 成功 envelope 外层字段固定为 `{schemaVersion, ok, operation, data, meta, warnings}`,`outputSchema` 只描述其中的 `data`。
80
+ - handler 已经归一化的字段,以 CLI 实际返回字段为准,并把源接口字段来源写入 description、reference 或 `operationImpact.outputFields`。
81
+ - 服务端原始响应需要保留时,可暴露 `result`、`raw` 等字段,但这只能作为附加调试/追溯字段;仍要逐项声明已知稳定的业务字段。
82
+ - 源资料响应字段表中的数组必须声明 `items`;嵌套对象必须声明 `properties`;确定必返字段必须进入 `required`;枚举、状态码、分页结束标记和金额/时间格式能确认时要写入 schema。
83
+ - 源资料只有响应示例时,从示例抽取稳定字段并标注示例来源;缺少类型、必填或嵌套结构时,在 `missingOutputSchema` 或 `outputSchemaCoverage` 中标记 `needs-confirmation`。
84
+ - 不要为了规避不确定性把整个输出写成 `additionalProperties: true`。只有明确的原始服务端透传字段可以 `additionalProperties: true`,且必须和稳定业务字段分开。
85
+
74
86
  ## 审计报告格式
75
87
 
76
88
  单模块扫描完成后,先输出或保留一份结构化报告,再动手修复。报告至少包含:
@@ -113,33 +113,10 @@
113
113
 
114
114
  生成的 E10 业务 Skill 必须遵守登录与凭证红线:
115
115
 
116
- - 登录与会话统一由 `weaver-e10-login` 提供;CLI 场景下的等价入口是 `weaver-work-cli auth ...`,业务 Skill 不得自行实现任何登录流程。
117
- - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-login`。
118
- - 每个请求必须携带 `weaver-e10-login` 返回的三项用户信息参数,缺一不可:
119
-
120
- ```text
121
- Cookie: <weaver-e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
122
- eteamsid: <weaver-e10-login 返回的 ETEAMSID>
123
- User-Agent: AgentType=<agentType>,IsAgent=true
124
- ```
125
-
126
- - Skill 与 reference 文档中若描述了接口请求,必须同时写明上述请求头契约,否则发布门禁会阻断。
127
-
128
- ### 登录与凭证契约(生成产物必须遵循)
129
-
130
- 生成的 E10 业务 Skill 必须遵守登录与凭证红线:
131
-
132
- - 登录与会话统一由 `weaver-e10-login` 提供;CLI 场景下的等价入口是 `weaver-work-cli auth ...`,业务 Skill 不得自行实现任何登录流程。
133
- - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-login`。
134
- - 每个请求必须携带 `weaver-e10-login` 返回的三项用户信息参数,缺一不可:
135
-
136
- ```text
137
- Cookie: <weaver-e10-login 返回的完整原始 Cookie 串>(禁止裁剪/去重/改写)
138
- eteamsid: <weaver-e10-login 返回的 ETEAMSID>
139
- User-Agent: AgentType=<agentType>,IsAgent=true
140
- ```
141
-
142
- - Skill 与 reference 文档中若描述了接口请求,必须同时写明上述请求头契约,否则发布门禁会阻断。
116
+ - 登录与会话统一由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系托管,业务 Skill 不得自行实现任何登录流程。
117
+ - 生成的 SKILL.md frontmatter 必须声明 `dependencies:\n - weaver-e10-shared`。
118
+ - 每个请求的请求头三件套(Cookie 完整原始串 / `eteamsid` / `User-Agent`)由 `weaver-work-cli` 统一注入,业务侧不得手工拼装或覆盖;唯一权威声明见 [`../../weaver-e10-shared/SKILL.md`](../../weaver-e10-shared/SKILL.md) 的「请求头契约」章节。
119
+ - Skill 与 reference 文档中若描述了接口请求,只需一行指针引用 `weaver-e10-shared` 的「请求头契约」,不要复制完整代码块。
143
120
 
144
121
  只有源资料存在稳定锚点时才写 `sourceChunks`。可用锚点包括:
145
122