weaver-work-cli 0.1.8 → 0.1.21

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 (271) hide show
  1. package/README.md +25 -17
  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 +435 -0
  14. package/dist/core/state.js +26 -0
  15. package/dist/internal/e10/auth/commands.js +34 -19
  16. package/dist/internal/e10/auth/session.js +74 -2
  17. package/dist/internal/e10/auth/xiaoe.js +359 -94
  18. package/dist/internal/e10/context.js +18 -6
  19. package/dist/internal/e10/request-runtime.js +8 -1
  20. package/dist/internal/skills/install.js +148 -28
  21. package/dist/internal/skills/reader.js +12 -9
  22. package/dist/shortcuts/blog/continuation.js +74 -0
  23. package/dist/shortcuts/blog/errors.js +60 -0
  24. package/dist/shortcuts/blog/host.js +175 -0
  25. package/dist/shortcuts/blog/index.js +324 -0
  26. package/dist/shortcuts/blog/manifest.js +415 -0
  27. package/dist/shortcuts/blog/operations/comment.js +125 -0
  28. package/dist/shortcuts/blog/operations/comments.js +31 -0
  29. package/dist/shortcuts/blog/operations/edit.js +131 -0
  30. package/dist/shortcuts/blog/operations/export.js +46 -0
  31. package/dist/shortcuts/blog/operations/like.js +80 -0
  32. package/dist/shortcuts/blog/operations/publish.js +157 -0
  33. package/dist/shortcuts/blog/operations/query-user.js +58 -0
  34. package/dist/shortcuts/blog/operations/query.js +96 -0
  35. package/dist/shortcuts/blog/operations/registry.js +54 -0
  36. package/dist/shortcuts/blog/operations/remind.js +176 -0
  37. package/dist/shortcuts/blog/operations/shared.js +330 -0
  38. package/dist/shortcuts/blog/operations/types.js +16 -0
  39. package/dist/shortcuts/blog/operations.js +9 -0
  40. package/dist/shortcuts/caizhilian/continuation.js +70 -0
  41. package/dist/shortcuts/caizhilian/errors.js +53 -0
  42. package/dist/shortcuts/caizhilian/host.js +190 -0
  43. package/dist/shortcuts/caizhilian/index.js +186 -0
  44. package/dist/shortcuts/caizhilian/manifest.js +42 -0
  45. package/dist/shortcuts/caizhilian/operations/api.js +801 -0
  46. package/dist/shortcuts/caizhilian/operations/confirm.js +75 -0
  47. package/dist/shortcuts/caizhilian/operations/files.js +306 -0
  48. package/dist/shortcuts/caizhilian/operations/form.js +170 -0
  49. package/dist/shortcuts/caizhilian/operations/handlers/collab.js +611 -0
  50. package/dist/shortcuts/caizhilian/operations/handlers/document.js +890 -0
  51. package/dist/shortcuts/caizhilian/operations/handlers/file-collection.js +1227 -0
  52. package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +192 -0
  53. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +570 -0
  54. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +1024 -0
  55. package/dist/shortcuts/caizhilian/operations/handlers/search.js +318 -0
  56. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +294 -0
  57. package/dist/shortcuts/caizhilian/operations/handlers/setting-backup.js +423 -0
  58. package/dist/shortcuts/caizhilian/operations/handlers/setting-encrypt.js +238 -0
  59. package/dist/shortcuts/caizhilian/operations/handlers/setting-storage.js +364 -0
  60. package/dist/shortcuts/caizhilian/operations/handlers/system.js +106 -0
  61. package/dist/shortcuts/caizhilian/operations/registry.js +151 -0
  62. package/dist/shortcuts/caizhilian/operations/shared.js +408 -0
  63. package/dist/shortcuts/caizhilian/operations/specs.js +698 -0
  64. package/dist/shortcuts/caizhilian/operations/types.js +57 -0
  65. package/dist/shortcuts/caizhilian/operations.js +21 -0
  66. package/dist/shortcuts/contract/continuation.js +70 -0
  67. package/dist/shortcuts/contract/errors.js +62 -0
  68. package/dist/shortcuts/contract/host.js +205 -0
  69. package/dist/shortcuts/contract/index.js +318 -0
  70. package/dist/shortcuts/contract/manifest.js +596 -0
  71. package/dist/shortcuts/contract/operations/clause-reference.js +78 -0
  72. package/dist/shortcuts/contract/operations/form-info.js +371 -0
  73. package/dist/shortcuts/contract/operations/read.js +118 -0
  74. package/dist/shortcuts/contract/operations/registry.js +43 -0
  75. package/dist/shortcuts/contract/operations/request.js +300 -0
  76. package/dist/shortcuts/contract/operations/shared.js +133 -0
  77. package/dist/shortcuts/contract/operations/subject.js +157 -0
  78. package/dist/shortcuts/contract/operations/template.js +81 -0
  79. package/dist/shortcuts/contract/operations/types.js +7 -0
  80. package/dist/shortcuts/contract/operations/workflow.js +52 -0
  81. package/dist/shortcuts/contract/operations/write.js +131 -0
  82. package/dist/shortcuts/contract/operations.js +8 -0
  83. package/dist/shortcuts/hrm/index.js +83 -2
  84. package/dist/shortcuts/hrm/manifest.js +16 -9
  85. package/dist/shortcuts/hrm/operations/employee.js +160 -30
  86. package/dist/shortcuts/hrm/operations/org.js +17 -3
  87. package/dist/shortcuts/hrm/operations/position.js +18 -2
  88. package/dist/shortcuts/hrm/operations/registry.js +2 -0
  89. package/dist/shortcuts/hrm/operations/resolve.js +449 -0
  90. package/dist/shortcuts/index.js +5 -1
  91. package/dist/shortcuts/invoice/index.js +74 -36
  92. package/dist/shortcuts/invoice/manifest.js +674 -4
  93. package/dist/shortcuts/invoice/markdown.js +172 -0
  94. package/dist/shortcuts/invoice/operations/add.js +3 -3
  95. package/dist/shortcuts/invoice/operations/delete.js +2 -2
  96. package/dist/shortcuts/invoice/operations/get.js +10 -2
  97. package/dist/shortcuts/invoice/operations/import.js +2 -2
  98. package/dist/shortcuts/invoice/operations/registry.js +8 -1
  99. package/dist/shortcuts/invoice/operations/reim-auto.js +719 -0
  100. package/dist/shortcuts/invoice/operations/reim.js +85 -2
  101. package/dist/shortcuts/invoice/operations/shared.js +75 -8
  102. package/dist/shortcuts/invoice/operations/update.js +2 -2
  103. package/dist/shortcuts/invoice/operations/upload-and-validate.js +93 -0
  104. package/dist/shortcuts/invoice/operations/validate-preview.js +2 -1
  105. package/dist/shortcuts/invoice/projection.js +328 -0
  106. package/dist/shortcuts/meeting/host.js +18 -1
  107. package/dist/shortcuts/meeting/manifest.js +30 -18
  108. package/dist/shortcuts/meeting/operations/eb/catalog.js +390 -0
  109. package/dist/shortcuts/meeting/operations/eb/conflict.js +389 -0
  110. package/dist/shortcuts/meeting/operations/eb/factory.js +389 -0
  111. package/dist/shortcuts/meeting/operations/eb/index.js +22 -0
  112. package/dist/shortcuts/meeting/operations/env.js +8 -1
  113. package/dist/shortcuts/meeting/operations/registry.js +2 -0
  114. package/dist/shortcuts/meeting/operations/signs.js +216 -2
  115. package/dist/shortcuts/workflow/endpoints.js +2 -1
  116. package/dist/shortcuts/workflow/errors.js +8 -2
  117. package/dist/shortcuts/workflow/host.js +11 -4
  118. package/dist/shortcuts/workflow/operations/form.js +1016 -590
  119. package/dist/shortcuts/workflow/operations/read.js +913 -231
  120. package/dist/shortcuts/workflow/operations/shared.js +21 -0
  121. package/dist/shortcuts/workflow/operations/write.js +750 -52
  122. package/dist/shortcuts/workflow/operations.js +36 -10
  123. package/docs/_catalog.md +6 -0
  124. package/docs/agent-invoice.md +5 -1
  125. package/docs/agent-io-channel-design.md +468 -0
  126. package/docs/agent-skill-install.md +9 -4
  127. package/docs/blog.md +123 -0
  128. package/docs/caizhilian.md +304 -0
  129. package/docs/contract.md +91 -0
  130. package/docs/e10-auth.md +4 -2
  131. package/docs/hrm.md +53 -11
  132. package/docs/invoice.md +5 -1
  133. package/docs/meeting.md +1 -1
  134. package/docs/operation-manual.md +15 -3
  135. package/docs/skill-review-2026-09-19.md +2 -2
  136. package/package.json +1 -1
  137. package/scripts/package-skill.mjs +32 -20
  138. package/scripts/xiaoe_env.py +118 -0
  139. package/skill-template/business-info.json +113 -14
  140. package/skill-template/domains/blog.md +24 -0
  141. package/skill-template/domains/caizhilian.md +22 -0
  142. package/skill-template/domains/hrm.md +2 -1
  143. package/skill-template/domains/jinchengda.md +23 -0
  144. package/skill-template/domains/meeting.md +1 -1
  145. package/skill-template/domains/workflow.md +1 -1
  146. package/skill-template/skill-template.md +1 -1
  147. package/skills/weaver-e10-blog/SKILL.md +111 -0
  148. package/skills/weaver-e10-blog/references/blog-comment.md +51 -0
  149. package/skills/weaver-e10-blog/references/blog-comments.md +39 -0
  150. package/skills/weaver-e10-blog/references/blog-default-permission.md +38 -0
  151. package/skills/weaver-e10-blog/references/blog-disabled-capabilities.md +11 -0
  152. package/skills/weaver-e10-blog/references/blog-edit.md +51 -0
  153. package/skills/weaver-e10-blog/references/blog-export.md +42 -0
  154. package/skills/weaver-e10-blog/references/blog-like.md +50 -0
  155. package/skills/weaver-e10-blog/references/blog-publish.md +52 -0
  156. package/skills/weaver-e10-blog/references/blog-query-user.md +45 -0
  157. package/skills/weaver-e10-blog/references/blog-query.md +49 -0
  158. package/skills/weaver-e10-blog/references/blog-remind.md +51 -0
  159. package/skills/weaver-e10-blog/references/blog-resolve-users.md +38 -0
  160. package/skills/weaver-e10-blog/references/source-manifest.json +1540 -0
  161. package/skills/weaver-e10-caizhilian/SKILL.md +217 -0
  162. package/skills/weaver-e10-caizhilian/references/agent-entry.md +106 -0
  163. package/skills/weaver-e10-caizhilian/references/collaboration.md +112 -0
  164. package/skills/weaver-e10-caizhilian/references/document.md +111 -0
  165. package/skills/weaver-e10-caizhilian/references/file-collection.md +173 -0
  166. package/skills/weaver-e10-caizhilian/references/file-upload.md +309 -0
  167. package/skills/weaver-e10-caizhilian/references/files.md +120 -0
  168. package/skills/weaver-e10-caizhilian/references/folder.md +122 -0
  169. package/skills/weaver-e10-caizhilian/references/org-browser.md +104 -0
  170. package/skills/weaver-e10-caizhilian/references/setting-attach.md +440 -0
  171. package/skills/weaver-e10-caizhilian/references/setting-backup.md +372 -0
  172. package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +399 -0
  173. package/skills/weaver-e10-caizhilian/references/setting-storage.md +603 -0
  174. package/skills/weaver-e10-caizhilian/references/source-manifest.json +5694 -0
  175. package/skills/weaver-e10-caizhilian/references/withheld.md +93 -0
  176. package/skills/weaver-e10-caizhilian/references/write-protocol.md +120 -0
  177. package/skills/weaver-e10-calendar/SKILL.md +4 -3
  178. package/skills/weaver-e10-ebuilder-form/SKILL.md +4 -9
  179. package/skills/weaver-e10-ebuilder-form/references/context-routing.md +0 -9
  180. package/skills/weaver-e10-ebuilder-form/references/custom-api.md +1 -5
  181. package/skills/weaver-e10-ebuilder-form/references/fields-browser.md +1 -5
  182. package/skills/weaver-e10-ebuilder-form/references/list-nlist.md +1 -5
  183. package/skills/weaver-e10-ebuilder-form/references/openapi-read.md +1 -5
  184. package/skills/weaver-e10-ebuilder-form/references/openapi-write.md +1 -5
  185. package/skills/weaver-e10-esb/SKILL.md +2 -2
  186. package/skills/weaver-e10-esb/references/source-manifest.json +9 -9
  187. package/skills/weaver-e10-hrm/SKILL.md +104 -9
  188. package/skills/weaver-e10-hrm/references/employee.md +89 -15
  189. package/skills/weaver-e10-hrm/references/org.md +114 -5
  190. package/skills/weaver-e10-hrm/references/position.md +14 -7
  191. package/skills/weaver-e10-hrm/references/source-manifest.json +1 -1
  192. package/skills/weaver-e10-jinchengda/SKILL.md +167 -0
  193. package/skills/weaver-e10-jinchengda/references/contract-agent-entry.md +82 -0
  194. package/skills/weaver-e10-jinchengda/references/contract-clause-recommender.md +69 -0
  195. package/skills/weaver-e10-jinchengda/references/contract-clause-reference-save.md +78 -0
  196. package/skills/weaver-e10-jinchengda/references/contract-disabled-capabilities.md +27 -0
  197. package/skills/weaver-e10-jinchengda/references/contract-request-status.md +71 -0
  198. package/skills/weaver-e10-jinchengda/references/contract-request-write.md +94 -0
  199. package/skills/weaver-e10-jinchengda/references/contract-signing-subjects.md +89 -0
  200. package/skills/weaver-e10-jinchengda/references/contract-subject-create.md +77 -0
  201. package/skills/weaver-e10-jinchengda/references/contract-template-selector.md +66 -0
  202. package/skills/weaver-e10-jinchengda/references/contract-workflow-discovery.md +94 -0
  203. package/skills/weaver-e10-jinchengda/references/source-manifest.json +259 -0
  204. package/skills/weaver-e10-jiuchuanhui/SKILL.md +5 -11
  205. package/skills/weaver-e10-jucailin/SKILL.md +4 -3
  206. package/skills/weaver-e10-mail/SKILL.md +4 -11
  207. package/skills/weaver-e10-meeting/SKILL.md +66 -32
  208. package/skills/weaver-e10-meeting/references/meeting-change.md +5 -2
  209. package/skills/weaver-e10-meeting/references/meeting-create.md +2 -1
  210. package/skills/weaver-e10-meeting/references/meeting-eb.md +114 -0
  211. package/skills/weaver-e10-meeting/references/meeting-lifecycle.md +9 -8
  212. package/skills/weaver-e10-meeting/references/meeting-receipts-signs.md +35 -7
  213. package/skills/weaver-e10-meeting/references/meeting-update.md +1 -1
  214. package/skills/weaver-e10-okr/SKILL.md +6 -11
  215. package/skills/weaver-e10-okr/references/source-manifest.json +3 -3
  216. package/skills/weaver-e10-plan/SKILL.md +3 -3
  217. package/skills/weaver-e10-plan/references/plan-collect-and-compose.md +1 -1
  218. package/skills/weaver-e10-plan/references/plan-overview-and-routing.md +1 -1
  219. package/skills/weaver-e10-plan/references/source-manifest.json +13 -13
  220. package/skills/weaver-e10-qiyecheng/SKILL.md +4 -10
  221. package/skills/weaver-e10-qiyecheng/references/source-manifest.json +9 -9
  222. package/skills/weaver-e10-shared/SKILL.md +42 -34
  223. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +16 -43
  224. package/skills/weaver-e10-shared/references/json-output-contract.md +20 -11
  225. package/skills/weaver-e10-shared/references/non-interactive-environment.md +21 -14
  226. package/skills/weaver-e10-shijingran/SKILL.md +2 -1
  227. package/skills/weaver-e10-shijingran/references/source-manifest.json +9 -9
  228. package/skills/weaver-e10-skill-maker/SKILL.md +4 -10
  229. package/skills/weaver-e10-skill-maker/references/business-skill-generation.md +5 -3
  230. package/skills/weaver-e10-skill-maker/references/module-cli-generation.md +12 -27
  231. package/skills/weaver-e10-skill-maker/references/module-gap-audit-and-repair.md +17 -5
  232. package/skills/weaver-e10-skill-maker/references/source-update-detection.md +4 -27
  233. package/skills/weaver-e10-skill-maker/references/weaver-skill-style.md +1 -1
  234. package/skills/weaver-e10-wenshuding/SKILL.md +5 -16
  235. package/skills/weaver-e10-wenshuding/references/source-manifest.json +7 -7
  236. package/skills/weaver-e10-workflow/SKILL.md +41 -46
  237. package/skills/weaver-e10-workflow/references/source-manifest.json +39 -75
  238. package/skills/weaver-e10-workflow/references/workflow-batch.md +90 -29
  239. package/skills/weaver-e10-workflow/references/workflow-create.md +83 -109
  240. package/skills/weaver-e10-workflow/references/workflow-memory.md +19 -9
  241. package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -2
  242. package/skills/weaver-e10-workflow/references/workflow-query.md +40 -27
  243. package/skills/weaver-e10-workflow/references/workflow-share.md +18 -2
  244. package/skills/weaver-e10-workflow/references/workflow-view.md +3 -4
  245. package/skills/weaver-e10-yepiaotong/SKILL.md +74 -39
  246. package/skills/weaver-e10-yepiaotong/references/invoice-detail.md +22 -1
  247. package/skills/weaver-e10-yepiaotong/references/invoice-enterprise-list.md +3 -1
  248. package/skills/weaver-e10-yepiaotong/references/invoice-output-view.md +135 -0
  249. package/skills/weaver-e10-yepiaotong/references/invoice-personal-list.md +15 -3
  250. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +1 -1
  251. package/skills/weaver-e10-yepiaotong/references/invoice-summarize.py +217 -0
  252. package/skills/weaver-e10-yepiaotong/references/invoice-upload-and-validate.md +88 -0
  253. package/skills/weaver-e10-yepiaotong/references/invoice-validation-preview.md +7 -2
  254. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +89 -9
  255. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +1 -0
  256. package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +70 -49
  257. package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +119 -0
  258. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +55 -36
  259. package/skills/weaver-e10-yepiaotong/references/reim-matching-rules.md +4 -0
  260. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +149 -0
  261. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +125 -5
  262. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +430 -63
  263. package/skills/weaver-e10-yimiaoban/SKILL.md +4 -12
  264. package/skills/weaver-e10-yimiaoban/references/source-manifest.json +3 -3
  265. package/skills/weaver-e10-ziguanjia/SKILL.md +2 -1
  266. package/skills/weaver-e10-ziguanjia/references/ziguanjia-agent-entry.md +3 -3
  267. package/tools/weaver-skill-detector-1.0.13/SKILL.md +9 -9
  268. package/tools/weaver-skill-detector-1.0.13/references/checklist.md +3 -3
  269. package/tools/weaver-skill-detector-1.0.13/scripts/__pycache__/validate_skill.cpython-313.pyc +0 -0
  270. package/tools/weaver-skill-detector-1.0.13/scripts/validate_skill.py +98 -91
  271. package/scripts/sync-connector-skills.mjs +0 -172
@@ -682,7 +682,7 @@
682
682
  }
683
683
  },
684
684
  "artifactBaseline": {
685
- "aggregateSha256": "4b3de9a1cd19fe0df8c5e5fb7d68286111271407bf96901e4168901655b22e65",
685
+ "aggregateSha256": "46eb5b4ad85eb36b032f3d965c081bd255c26aaec1bd59903c61029ce3ba82b8",
686
686
  "files": [
687
687
  {
688
688
  "path": "src/shortcuts/plan/index.ts",
@@ -765,14 +765,14 @@
765
765
  {
766
766
  "path": "src/shortcuts/index.ts",
767
767
  "role": "generated-cli",
768
- "size": 1274,
769
- "sha256": "54df058151b6f3602a2d112a49396b4ad4121cdba06d31c4c368ebd3235192c4"
768
+ "size": 1420,
769
+ "sha256": "569bef374df2d86b511150a0c609ce1abee63f8317994513bce6241276b5be40"
770
770
  },
771
771
  {
772
772
  "path": "skills/weaver-e10-plan/SKILL.md",
773
773
  "role": "generated-skill-entry",
774
- "size": 12383,
775
- "sha256": "10a8815bb358f479f10aa9767be6a2f9f1943dcdb1693ab128f8877b033215bf"
774
+ "size": 13660,
775
+ "sha256": "ea0019ddf7a99162dfc00f5dc60e87f88727560063b30f1b6b41ed6e8962e6a8"
776
776
  },
777
777
  {
778
778
  "path": "skill-template/product.json",
@@ -783,8 +783,8 @@
783
783
  {
784
784
  "path": "skills/weaver-e10-plan/references/plan-overview-and-routing.md",
785
785
  "role": "generated-reference",
786
- "size": 8462,
787
- "sha256": "6ad3f83d27a35958c6580aa9e20e659dee7412e8d392e55a5646e232da4d2da7"
786
+ "size": 8505,
787
+ "sha256": "a629a50385af9def289d1250aa3da6d7b0c558bf3b0cfbcf9dedffad55e3481b"
788
788
  },
789
789
  {
790
790
  "path": "skills/weaver-e10-plan/references/plan-report-query.md",
@@ -807,8 +807,8 @@
807
807
  {
808
808
  "path": "skills/weaver-e10-plan/references/plan-collect-and-compose.md",
809
809
  "role": "generated-reference",
810
- "size": 7664,
811
- "sha256": "ac721e76ef3139ef684004bed939a5cd2805b07054250742ec05858907df63dc"
810
+ "size": 7706,
811
+ "sha256": "8350d06f4840ced7ea416a09bdcb3d139ff11118df7ac19fb0d886a89140a607"
812
812
  },
813
813
  {
814
814
  "path": "docs/plan.md",
@@ -819,8 +819,8 @@
819
819
  {
820
820
  "path": "docs/_catalog.md",
821
821
  "role": "generated-doc",
822
- "size": 4580,
823
- "sha256": "7ec48267965b4ccd35dcc463ed0a73dd71c3f4d2fc3d978165f508261945d4b3"
822
+ "size": 5332,
823
+ "sha256": "a81903939aea5bf1196d1e3243709d2facf50d9bdcf74d8a6ca731061310dbbe"
824
824
  },
825
825
  {
826
826
  "path": "docs/SKILL.md",
@@ -843,8 +843,8 @@
843
843
  {
844
844
  "path": "skill-template/business-info.json",
845
845
  "role": "generated-template",
846
- "size": 6294,
847
- "sha256": "7af8cc1b35564b11a4c33cf566b22919d75c8a4daeec488d6ff8979c098c8ff7"
846
+ "size": 8216,
847
+ "sha256": "370a45e86c6b7e33869c5df1bf08d9f22bd98fa8b157b49716e13bca0e7b63c3"
848
848
  }
849
849
  ]
850
850
  },
@@ -11,13 +11,14 @@ 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 fna --help"
16
16
  ---
17
17
 
18
18
  # weaver-work-cli 齐业成费控(FNA)Skill
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 不能在未确认时自行安装。用户明确确认后,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
+ **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
21
22
 
22
23
  所有调用统一走 `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 错误。
23
24
 
@@ -29,15 +30,8 @@ cliHelp: "weaver-work-cli fna --help"
29
30
 
30
31
  ## 认证与请求头契约
31
32
 
32
- 登录与会话由 E10 登录能力统一提供:文档型约定为 `weaver-e10-login` 技能,本 CLI 场景下等价入口是 `weaver-work-cli auth ...` 命令体系。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
33
+ 登录与会话由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系统一托管。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
33
34
 
34
- CLI 发往 E10 的每个请求都自动携带以下三项用户信息参数,**缺一不可**(业务入参里不要传这些字段,也不要手工拼装请求头):
35
-
36
- ```text
37
- Cookie: <登录返回的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
38
- eteamsid: <登录返回的 ETEAMSID>
39
- User-Agent: AgentType=<agentType>,IsAgent=true
40
- ```
41
35
 
42
36
  ## 能力范围
43
37
 
@@ -517,7 +517,7 @@
517
517
  }
518
518
  },
519
519
  "artifactBaseline": {
520
- "aggregateSha256": "b3054d5b48d3be996e055873a9b88060fcf4640c79c067004fd7ceebeab2c9de",
520
+ "aggregateSha256": "d2a6ce35980785ac91d23b49b5be485f643c327e7f4e2055fe75f0ff18ac42a8",
521
521
  "files": [
522
522
  {
523
523
  "path": "src/shortcuts/fna/manifest.ts",
@@ -600,8 +600,8 @@
600
600
  {
601
601
  "path": "src/shortcuts/index.ts",
602
602
  "role": "generated",
603
- "size": 1274,
604
- "sha256": "54df058151b6f3602a2d112a49396b4ad4121cdba06d31c4c368ebd3235192c4"
603
+ "size": 1420,
604
+ "sha256": "569bef374df2d86b511150a0c609ce1abee63f8317994513bce6241276b5be40"
605
605
  },
606
606
  {
607
607
  "path": "test/business/fna-operations.test.ts",
@@ -624,8 +624,8 @@
624
624
  {
625
625
  "path": "docs/_catalog.md",
626
626
  "role": "generated",
627
- "size": 4580,
628
- "sha256": "7ec48267965b4ccd35dcc463ed0a73dd71c3f4d2fc3d978165f508261945d4b3"
627
+ "size": 5332,
628
+ "sha256": "a81903939aea5bf1196d1e3243709d2facf50d9bdcf74d8a6ca731061310dbbe"
629
629
  },
630
630
  {
631
631
  "path": "docs/SKILL.md",
@@ -636,8 +636,8 @@
636
636
  {
637
637
  "path": "skills/weaver-e10-qiyecheng/SKILL.md",
638
638
  "role": "generated",
639
- "size": 10568,
640
- "sha256": "c9b0de725103edd503dba4c02d3f7ba548ade74ddf718c7b41a4e24a485e50ce"
639
+ "size": 11376,
640
+ "sha256": "8327955269084dcc00a1bc81078ac39e963ecccd21e6b4cc8f3d844a6fd49db6"
641
641
  },
642
642
  {
643
643
  "path": "skill-template/product.json",
@@ -678,8 +678,8 @@
678
678
  {
679
679
  "path": "skill-template/business-info.json",
680
680
  "role": "generated",
681
- "size": 6294,
682
- "sha256": "7af8cc1b35564b11a4c33cf566b22919d75c8a4daeec488d6ff8979c098c8ff7"
681
+ "size": 8216,
682
+ "sha256": "370a45e86c6b7e33869c5df1bf08d9f22bd98fa8b157b49716e13bca0e7b63c3"
683
683
  },
684
684
  {
685
685
  "path": "skill-template/domains/qiyecheng.md",
@@ -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,43 +41,32 @@ 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 内部按「平台凭证 Node 换票 → CLI 自带 `xiaoe_env.py` 兼容换票 → 宿主 `tokens.py` → 桌面 XiaoE 客户端会话 → `WEAVER_XIAOE_*` 环境映射」顺序取凭据;其中 `XIAOE_DOMAIN` 是 XiaoE/erpa 换票服务地址,不是 E10 地址。`xiaoe_env.py` 属于 CLI npm 包,不放入 shared Skill,且只能由 CLI 内部执行和解析。失败时 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 仍属于凭证,禁止在回复中展示。
52
- 5. XiaoE 统一登录走不通时,CLI 必须先反馈未拿到登录信息的原因;`auth xiaoe` 随后再降级打开浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则。业务命令不得自动沿用旧 profile;如需网页登录,先运行 `weaver-work-cli auth xiaoe` 或由用户明确改用 `weaver-work-cli auth login`。
59
+ 3. XiaoE 统一登录由 CLI 按序取凭证:① 平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`,先走 Node 换票,再由 CLI npm 包自带的标准库 `xiaoe_env.py` 作兼容回退;② 宿主 `xiaoeUserData/tokens.py`(仅桌面宿主,CLI 在 macOS/Windows 都会先自动发现 XiaoE 客户端内置 Python,再回退到系统 Python);③ 内置原生实现读取桌面 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` 的业务命令都会先尝试上述统一登录。E10 目标地址按「显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile → CLI 内置默认值」解析,绝不能把 `XIAOE_DOMAIN` 当作 E10 地址。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
61
+ 5. XiaoE 统一登录走不通时,CLI 必须反馈未拿到登录信息的原因。Web/Linux 环境的 `auth xiaoe` 返回 `authentication/xiaoe_web_credential_unavailable`,不会自动打开 localhost 浏览器 OAuth;macOS/Windows 桌面宿主才允许自动降级。用户明确要求网页登录、且 CLI 与浏览器同机时,再显式运行 `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
 
55
- ### 浏览器 OAuth 降级防挂起(顶层强规则)
64
+ ### 浏览器 OAuth 防挂起(顶层强规则)
56
65
 
57
- `auth xiaoe` / `auth login` 的浏览器 OAuth 降级会在本机 `127.0.0.1:19800` 监听回调并无限等待,命令自身不会超时退出。在 Agent 沙箱/托管环境(没有本地浏览器,或浏览器与 CLI 不在同一台机器/容器)中,外部浏览器无法回调容器内 `127.0.0.1:19800`,该路径结构性不可达,命令会一直挂起直到被外部超时掐断(退出码 124),用户感知为「卡住 / 跑很久」。因此:
66
+ `auth login`(以及 macOS/Windows 桌面宿主上的 `auth xiaoe` 降级)会在本机 `127.0.0.1:19800` 监听浏览器回调,最长等待 5 分钟。在 Agent 沙箱/托管环境中,外部浏览器无法回调容器内 `127.0.0.1:19800`,因此:
58
67
 
59
- 1. 运行 `auth xiaoe` 时必须防挂起:以后台方式启动并限时观察(上限 300 秒 / 5 分钟)。一旦输出出现 `Waiting for E10 authorization callback`(说明统一登录已失败、进入浏览器 OAuth 等待),立即终止该进程,不得继续等待。
60
- 2. 进入浏览器 OAuth 等待后:
61
- - 先向用户反馈 XiaoE 统一登录失败的实际原因;
62
- - 沙箱/托管环境:不要替用户执行浏览器登录等待,把完整命令交给用户在其本地终端执行,例如 `weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"`;
63
- - 本地环境(CLI 与浏览器同机):可继续执行浏览器登录,但仍须限时等待,超时未完成即终止并反馈。
68
+ 1. Web/Linux 中运行 `auth xiaoe` 时,收到 `xiaoe_web_credential_unavailable` 即反馈宿主登录态/凭据注入异常,不要自动切换 `auth login`,也不要要求用户去本地终端重复执行命令。
69
+ 2. 只有用户明确要求浏览器授权且确认 CLI 与浏览器同机时,才运行 `auth login`;仍须限时等待,超时未完成即终止并反馈。
64
70
  3. 用户无法本地执行浏览器登录时,经用户明确同意后改用保底方式 `weaver-work-cli auth set --eteamsid "<ETEAMSID>" --base-url "<用户确认的登录域名>"`,由用户从已登录浏览器主动提供 ETEAMSID;Agent 不得索取、展示或转述该值。
65
71
  4. 严禁不加限制地前台运行 `auth xiaoe` / `auth login` 并等待 OAuth 回调。
66
72
 
@@ -77,7 +83,9 @@ weaver-work-cli doctor --e10
77
83
 
78
84
  如果命令不可用(尤其是 `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
85
 
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 写法。
86
+ 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 写法。
87
+
88
+ CLI 对 `--input <path>` 默认只告警;需要拒绝文件 JSON 输入时使用 `--no-file-input`,或设置 `WEAVER_WORK_CLI_FILE_INPUT=deny` / config `io.fileInput=deny`。一次性允许时可用 `--allow-file-input`。`--input -` 和业务附件参数(如 `--file`)不受这条策略影响。
81
89
 
82
90
  4. 认证诊断只能通过 `weaver-work-cli auth root/status/profile list/profile current`、`weaver-work-cli doctor --e10` 和业务命令 JSON 错误完成。禁止直接列目录、打印、复制或解析用户态认证目录和认证文件。
83
91
 
@@ -111,19 +119,21 @@ Agent 调用业务能力时优先加 `--json`。成功看进程退出码 0 和 J
111
119
 
112
120
  ### 请求头契约(E10 接口调用强制)
113
121
 
122
+ **本段是请求头三件套的唯一权威声明**:业务 Skill 与 reference 一律引用本段,不再各自复制完整代码块;引用处只需一行紧凑指针指向本节(发布门禁 B10c 已停用,不再按技能目录逐个校验这三项参数名)。
123
+
114
124
  `weaver-work-cli` 发往 E10 的每个请求都由 CLI 统一携带以下三项用户信息参数,缺一不可(业务入参里不要传这些字段,也不要手工拼装请求头):
115
125
 
116
126
  ```text
117
- Cookie: <登录 skill 返回的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
118
- eteamsid: <登录 skill 返回的 ETEAMSID>
127
+ Cookie: <weaver-work-cli 托管登录态的完整原始 Cookie 串,原样透传,禁止裁剪/去重/改写>
128
+ eteamsid: <weaver-work-cli 托管登录态的 ETEAMSID>
119
129
  User-Agent: AgentType=<agentType>,IsAgent=true
120
130
  ```
121
131
 
122
- 登录与会话统一由 E10 登录能力提供:文档型约定为 `weaver-e10-login` 技能,本 CLI 场景下等价入口是 `weaver-work-cli auth ...` 命令体系;业务 Skill 不得自建登录流程,也不得读取、打印、转存任何认证目录或凭证。
132
+ 登录与会话统一由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系托管;业务 Skill 不得自建登录流程,也不得读取、打印、转存任何认证目录或凭证。
123
133
 
124
134
  返回 `partial`、`write_uncertain`、登录失效、回查失败或网络中断时,立即停止当前写流程,不自动重试写入或删除。
125
135
 
126
- 当前 CLI 的 JSON 输出是完整 envelope 直接写 stdout;没有飞书 CLI 那种通用 `--jq`、`--format table/ndjson` 或 `--page-all`。列表、详情、OCR、导出等可能产生大响应时,必须先读 [`json-output-contract.md`](references/json-output-contract.md) 的“大结果渲染与提效规则”:默认小页读取、只保留任务所需字段、分页有预算,回复用户时给摘要和路径,不要原样粘贴超长 JSON。
136
+ 当前 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
137
 
128
138
  ## Reference 强触发索引
129
139
 
@@ -149,10 +159,8 @@ User-Agent: AgentType=<agentType>,IsAgent=true
149
159
 
150
160
  5. 不能猜测 CLI 未暴露的内部字段、接口路径、ID 解析逻辑或回查语义。
151
161
 
152
- 6. 未登录或登录失效(`authentication` / `session_expired` / `auth status` 未登录)时,XiaoE 宿主环境必须先运行 `weaver-work-cli auth xiaoe` 尝试统一登录;统一登录不可用时必须先反馈未拿到登录信息的原因,然后 `auth xiaoe` 再降级打开浏览器 OAuth,降级等待必须遵守「浏览器 OAuth 降级防挂起」规则,禁止前台无限等待回调。业务命令不得自动沿用旧 profile。执行浏览器登录时必须传入 `--agent_type "<当前智能体名称>"`,让授权确认页展示发起登录验证的智能体;**禁止**使用示例占位域名登录,也禁止在拿到域名前反复重试业务命令。具体流程读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
162
+ 6. 未登录或登录失效(`authentication` / `session_expired` / `auth status` 未登录)时,XiaoE 宿主环境必须先运行 `weaver-work-cli auth xiaoe` 尝试统一登录;统一登录不可用时必须反馈 CLI 原因。Web/Linux 环境不得把 `xiaoe_web_credential_unavailable` 自动改成浏览器 OAuth 或本地终端操作;只有用户明确要求且 CLI 与浏览器同机时才运行 `auth login`。执行浏览器登录时必须传入 `--agent_type "<当前智能体名称>"`,让授权确认页展示发起登录验证的智能体;**禁止**使用示例占位域名登录,也禁止在拿到域名前反复重试业务命令。具体流程读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
153
163
 
154
164
  7. 附件、图片上传或文件解析属于敏感数据处理。即便 operation 风险等级不是高风险写入,也必须先取得用户对“文件内容可能进入大模型/外部解析服务”的明确确认;不能把用户仅提供文件路径或文件名视为同意解析或上传。
155
165
 
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
-
166
+ 8. 在 XiaoE 宿主环境中,CLI 按顺序从平台注入凭证(Node 换票后由 CLI npm 包自带 `xiaoe_env.py` 兼容回退)、宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`)、`WEAVER_XIAOE_*` 环境映射读取支持统一登录的凭证(宿主不会注入 ETEAMSID 环境变量)。shared Skill 不携带任何 Token 脚本。`XIAOE_DOMAIN` 仅是 XiaoE/erpa 换票服务地址;E10 目标按显式参数、专用 E10 配置/映射、当前 profile、CLI 默认值的顺序解析。业务命令会在未显式指定 `--auth` / `--profile` 时自动优先尝试 XiaoE 统一登录;Agent 也可以显式调用 `weaver-work-cli auth xiaoe`。不要要求用户提供、展示或手动设置这些凭证。Web/Linux 失败时反馈结构化错误,不自动降级浏览器;macOS/Windows 桌面宿主可由 CLI 自动降级。
@@ -42,7 +42,7 @@ weaver-work-cli auth whoami
42
42
  ```text
43
43
  weaver-work-cli auth xiaoe
44
44
  ```
45
- CLI 会按“显式 `--base-url` / 宿主 `tokens.py` 脚本结果或 CLI 资料包内置默认域名(地址由资料包提供,不在文档中写死) / XiaoE 环境变量中的首个支持域名 / 当前 profile `config.baseUrl`”解析登录域名。业务命令在未显式指定 `--auth` / `--profile` 时,也会自动优先尝试这一步。若该域名在 XiaoE 支持范围内且凭证有效,会直接保存登录态,`agentType` 固定为 `XiaoE`,然后继续原业务操作。若当前域名不在 XiaoE 支持范围内、客户切换了访问域名,或 XiaoE 凭证校验失败,业务命令必须停止并反馈错误,不得自动沿用旧 profile;`auth xiaoe` 必须先反馈未拿到登录信息的原因,然后再降级打开浏览器 OAuth,降级等待必须遵守下方「浏览器 OAuth 降级防挂起」。Agent 不得因为本地存在旧 profile 就跳过这一步,也不得要求用户提供或展示 `XIAOE_*` / ETEAMSID。
45
+ CLI 会按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile `config.baseUrl` → CLI 内置默认值”解析 E10 登录域名;`XIAOE_DOMAIN` 只作为 XiaoE/erpa 换票服务地址。业务命令在未显式指定 `--auth` / `--profile` 时,也会自动优先尝试这一步。若凭证有效,会直接保存登录态,`agentType` 固定为 `XiaoE`,然后继续原业务操作。若 Web/Linux 返回 `authentication/xiaoe_web_credential_unavailable`,反馈宿主登录态/凭据注入异常后停止,不要自动进入下方浏览器流程,也不要要求用户去本地终端重复登录。Agent 不得因为本地存在旧 profile 就跳过统一登录,也不得要求用户提供或展示 `XIAOE_*` / ETEAMSID。
46
46
 
47
47
  1. **先调用宿主提供的提问 / 弹框能力询问用户**,让用户二选一:
48
48
  - 输入本次要登录的 E10 登录域名(base URL),形如 `https://<企业域名>`;或
@@ -61,17 +61,12 @@ weaver-work-cli auth whoami
61
61
 
62
62
  登录域名一律以用户实际提供为准;拿不到域名前,不要执行任何依赖登录态的业务命令。
63
63
 
64
- ## 浏览器 OAuth 降级防挂起
64
+ ## 浏览器 OAuth 防挂起
65
65
 
66
- `auth xiaoe` / `auth login` 的浏览器 OAuth 降级会在本机 `127.0.0.1:19800` 监听回调并无限等待,命令自身不会超时退出。在 Agent 沙箱/托管环境(没有本地浏览器,或浏览器与 CLI 不在同一台机器/容器)中,外部浏览器无法回调容器内 `127.0.0.1:19800`,该路径结构性不可达,命令会一直挂起直到被外部超时掐断(退出码 124),用户感知为「卡住 / 跑很久」。执行规则:
66
+ `auth login`(以及 macOS/Windows 桌面宿主上的 `auth xiaoe` 降级)会在本机 `127.0.0.1:19800` 监听浏览器回调,最长等待 5 分钟。Agent 沙箱/托管环境中的外部浏览器无法回调容器内地址。执行规则:
67
67
 
68
- 1. 以后台方式运行 `auth xiaoe`,并限时观察(上限 300 秒 / 5 分钟)。一旦输出出现 `Waiting for E10 authorization callback`,说明统一登录已失败、进入浏览器 OAuth 等待,立即终止该进程,不得继续等待。
69
- 2. 终止后先向用户反馈 XiaoE 统一登录失败的实际原因,再按环境处理:
70
- - **沙箱/托管环境**:不要替用户执行浏览器登录等待,把完整命令交给用户在其本地终端执行:
71
- ```text
72
- weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"
73
- ```
74
- - **本地环境(CLI 与浏览器同机)**:可继续执行浏览器登录,但仍须限时等待,超时未完成即终止并反馈。
68
+ 1. Web/Linux 中运行 `auth xiaoe` 时,收到 `xiaoe_web_credential_unavailable` 即反馈并停止;不要自动改跑 `auth login`。
69
+ 2. 只有用户明确要求浏览器授权且确认 CLI 与浏览器同机时,才执行 `auth login`;仍须限时等待,超时未完成即终止并反馈。
75
70
  3. 用户无法本地执行浏览器登录时,经用户明确同意后改用保底方式 `weaver-work-cli auth set --eteamsid "<ETEAMSID>" --base-url "<用户确认的登录域名>"`,由用户从已登录浏览器主动提供 ETEAMSID;Agent 不得索取、展示或转述该值。
76
71
  4. 严禁不加限制地前台运行 `auth xiaoe` / `auth login` 并等待 OAuth 回调。
77
72
 
@@ -83,7 +78,7 @@ weaver-work-cli auth whoami
83
78
  weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"
84
79
  ```
85
80
 
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 降级防挂起」。
81
+ 在 XiaoE 宿主环境中,`auth xiaoe` 先使用平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 换取 ETEAMSID(沙箱唯一可用来源):先走 Node 主路径,失败后由 CLI npm 包自带的 `scripts/xiaoe_env.py` 作标准库兼容回退;拿不到时再读宿主 `xiaoeUserData/tokens.py` 的 stdout JSON(仅桌面宿主),再退回内置原生实现读取桌面 XiaoE 客户端会话(`XiaoE/Robots/<id>/user_settings.json`,不需要本机 Python);仍未识别到可用凭证时,才读取 `WEAVER_XIAOE_*` 环境变量里的“当前登录域名 -> ETEAMSID”统一登录映射,并且保存的 `agentType` 固定为 `XiaoE`。`XIAOE_DOMAIN` 是 XiaoE/erpa 换票服务地址,不能作为 E10 地址;E10 目标按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile → CLI 内置默认值”解析。Node 和 Python 兼容路径都校验业务码及 `data.eteamId`,保留系统 CA 校验,只允许同源重定向或同主机 HTTP→HTTPS 升级。统一登录失败时,Web/Linux 返回 `authentication/xiaoe_web_credential_unavailable`,不自动启动 localhost 浏览器 OAuth;macOS/Windows 桌面宿主才允许自动降级。
87
82
 
88
83
  需要显式表达“XiaoE 优先”的场景也可以使用等价入口:
89
84
 
@@ -91,7 +86,7 @@ weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_ty
91
86
  weaver-work-cli auth xiaoe
92
87
  ```
93
88
 
94
- 该命令先尝试 XiaoE 统一登录;统一登录不可用时,先反馈原因,再降级到浏览器 OAuth(降级等待必须遵守「浏览器 OAuth 降级防挂起」,禁止前台无限等待回调)。用户明确切换域名时再追加 `--base-url "<用户确认的登录域名>"`。
89
+ 该命令先尝试 XiaoE 统一登录;统一登录不可用时先反馈原因。Web/Linux 环境直接结束并返回结构化错误,不自动切换浏览器 OAuth;macOS/Windows 桌面宿主可以继续降级。用户明确切换域名时再追加 `--base-url "<用户确认的登录域名>"`。
95
90
 
96
91
  如果端口冲突:
97
92
 
@@ -118,43 +113,21 @@ weaver-work-cli --profile PROFILE_NAME auth status --no-check
118
113
 
119
114
  通过 `weaver-work-cli run` 执行外部命令时,CLI 会按当前 profile 注入 `WEAVER_BASE_URL`、`WEAVER_ETEAMSID`、`WEAVER_COOKIE`、`WEAVER_USER_AGENT` 和 `WEAVER_AGENT_TYPE`。这些值只给子进程使用,不应在回复或日志中明文展示。
120
115
 
121
- XiaoE 的 `XIAOE_*` 环境变量只由宿主/客户端注入给 CLI 消费;Agent 不要打印、转述、要求用户手动填写或将其导出到当前 shell。CLI 当前支持 JSON 域名映射和单域名变量两类宿主格式,但这些格式属于宿主集成细节,不作为用户操作步骤。
116
+ `XIAOE_*` 是平台保留前缀,只由宿主注入给 CLI 消费(`XIAOE_DOMAIN` 是 XiaoE/erpa 换票服务地址、`XIAOE_USER_TOKEN` 是业务凭据,均按次注入;`XIAOE_SKILL_*` 为包内目录变量)。本 CLI 自己的宿主集成变量使用自有前缀 `WEAVER_XIAOE_*`,例如 `WEAVER_XIAOE_AUTH_MAP`(JSON 域名映射)、`WEAVER_XIAOE_E10_BASE_URL`(E10 目标地址)、`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
117
 
123
- ## XiaoE Token 获取
118
+ 宿主不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`;ETEAMSID 一律由登录链路换取。CLI 支持两类宿主格式:平台注入的 `XIAOE_DOMAIN` + `XIAOE_USER_TOKEN`,以及 `WEAVER_XIAOE_*` 域名映射。这些格式属于宿主集成细节,不作为用户操作步骤;Agent 不要打印、转述、要求用户手动填写或将其导出到当前 shell。
124
119
 
125
- `auth xiaoe` 或业务命令需要 XiaoE 统一登录时,由 CLI 优先读取本流程中的宿主脚本;未识别到可用脚本凭证时,才考虑 `XIAOE_*` 映射。只有在业务流程明确需要 XiaoE Token,且 CLI 没有更专用的认证/业务命令可用时,Agent 才直接执行本流程。Token 获取脚本属于宿主能力,Agent 不要要求用户粘贴 Token,也不要在回复中展示 stdout 里的 Token、Cookie、ETEAMSID 或业务凭证。
120
+ ## XiaoE 凭据由 CLI 独占处理
126
121
 
127
- 脚本固定从 XiaoE 用户数据目录读取。执行后读取 stdout 作为结果;stdout 期望是 JSON 对象,典型结果包含 `eteamId`。若脚本不存在、Python 依赖缺失、stdout 不是合法 JSON、接口失败或进程非 0 退出,停止当前认证流程,并把实际错误反馈给用户,不要猜测或伪造 Token。
122
+ `auth xiaoe` 或业务命令触发统一登录时,CLI 按以下顺序自行取凭据,Agent **不参与、也不得复现**:
128
123
 
129
- Windows PowerShell:
124
+ 1. **平台注入凭据**:`XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`(小 e 业务服务地址)。先由 Node 直接换票;失败时 CLI 可调用 npm 包自带的 `scripts/xiaoe_env.py` 兼容换票。脚本不属于 Skill,由 CLI 内部执行、解析并隐藏凭证 stdout。
125
+ 2. **宿主 `tokens.py`**:桌面宿主 `xiaoeUserData/tokens.py`(macOS `~/Library/Application Support/xiaoeUserData/tokens.py`,Windows `%LOCALAPPDATA%\xiaoeUserData\tokens.py`);CLI 在 macOS 应用包与 Windows 按用户/全局安装目录中自动查找 XiaoE 客户端内置 Python,并优先用它执行脚本;可用 `WEAVER_XIAOE_TOKEN_SCRIPT_PATH` 指定脚本路径,用 `WEAVER_XIAOE_TOKEN_SCRIPT_PYTHON` 指定解释器。
126
+ 3. **桌面 XiaoE 客户端会话**:`XiaoE/Robots/<id>/user_settings.json` 的 `session_id` + `erpa`,由 CLI 内置 Node 实现换取 `eteamId`,不需要本机 Python。
127
+ 4. **`WEAVER_XIAOE_*` 环境映射**:当前登录域名到 ETEAMSID 的映射。
130
128
 
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"` 判断。
129
+ Agent 禁止自行执行 `tokens.py`、`xiaoe_env.py` 或任何取 Token 脚本(其 stdout 含 ETEAMSID/Cookie/Token,会进入对话与日志),也禁止把这些脚本放入 shared Skill;禁止 `eval` / `Invoke-Expression` `auth export-weaver-env` 的输出,也禁止要求用户粘贴或展示任何凭证。脚本不存在、Python 依赖缺失、stdout 非法或接口失败,都由 CLI 内部记录并降级;Agent 只需把 CLI 反馈的原因转述给用户,不猜测或伪造 Token。
156
130
 
157
131
  ## 安全边界
158
132
 
159
133
  Agent 不要要求用户贴 Cookie、ETEAMSID、业务 Token、app key 或 app secret,也不要直接读取用户机器上的 auth、config 或 Keychain 数据。业务 Skill 只负责调用 CLI;登录态读取、Cookie 拼接、业务 Token 获取和 HTTP header 注入都由 `weaver-work-cli` 内部完成。
160
-
@@ -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` 传递并只展示必要摘要。
@@ -20,9 +20,19 @@
20
20
 
21
21
  判定不了时一律按**非交互**处理:非交互流程在可交互环境下同样安全,反之则会挂起或卡死。
22
22
 
23
- ## 降级信号判读
23
+ ## 登录失败信号判读
24
24
 
25
- 命令输出中一旦出现下列任一信号,即表示**统一登录未命中、已降级到浏览器 OAuth**,继续等待不会成功:
25
+ Web/Linux 中 `auth xiaoe` 统一登录失败时会直接返回结构化错误:
26
+
27
+ ```text
28
+ error.type = authentication
29
+ error.subtype = xiaoe_web_credential_unavailable
30
+ error.stage = xiaoe_unified_login
31
+ ```
32
+
33
+ 收到该错误后,反馈宿主登录态或凭据注入不可用并停止。不要自动执行 `auth login`,也不要要求用户在本地终端重复执行登录。
34
+
35
+ 只有用户明确要求浏览器授权,或 macOS/Windows 桌面宿主允许 `auth xiaoe` 自动降级时,才可能出现下列浏览器 OAuth 信号:
26
36
 
27
37
  | 降级信号 | 含义 |
28
38
  | --- | --- |
@@ -31,33 +41,30 @@
31
41
  | `Local callback server: http://127.0.0.1:19800/callback` | 回调监听地址;非交互环境下不可达 |
32
42
  | `Could not open browser automatically. Copy the login URL manually.` | 无法自动打开浏览器,且无人可复制 URL 完成授权 |
33
43
 
34
- 出现任一信号时的处置顺序(缺一不可):
44
+ 在非交互环境中出现任一信号时的处置顺序:
35
45
 
36
- 1. **立即终止**该命令(不要等待其自然结束;命令自身不会超时退出)。
46
+ 1. **立即终止**该命令,不要等待本地回调。
37
47
  2. 向用户反馈统一登录未命中的**实际原因**(凭证未取到 / 域名不在支持范围 / 当前域名与凭证不匹配 / CLI 侧能力缺口)。
38
- 3. 非交互环境:不要替用户等待浏览器授权,把完整命令交给用户在其**本地终端**执行:
39
- ```text
40
- weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"
41
- ```
42
- 4. 用户无法本地执行时,经用户明确同意后改用保底方式,由用户从已登录浏览器主动提供 ETEAMSID:
48
+ 3. 不自动给出“去本地终端执行”的操作;只有用户明确要求改用浏览器授权时,才说明该方式必须在 CLI 与浏览器同机的环境执行。
49
+ 4. 用户明确要求保底方式时,可说明 `auth set`,但 Agent 不得索取、展示、转述或记录 ETEAMSID:
43
50
  ```text
44
51
  weaver-work-cli auth set --eteamsid "<ETEAMSID>" --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"
45
52
  ```
46
53
  Agent 不得索取、展示、转述或记录该值。
47
54
 
48
- ## 显式传域名后仍降级
55
+ ## 显式传域名后仍失败
49
56
 
50
- 宿主已注入域名、域名连通性正常(HTTP 200),但显式传入该域名后仍然降级:
57
+ 显式传入 E10 域名后仍返回统一登录错误:
51
58
 
52
59
  ```text
53
- weaver-work-cli auth xiaoe --base-url "<宿主注入域名>" --agent_type "<当前智能体名称>"
54
- # Open browser login: ... / Waiting for E10 authorization callback...
60
+ weaver-work-cli auth xiaoe --base-url "<用户确认的 E10 域名>" --agent_type "<当前智能体名称>"
61
+ # authentication/xiaoe_web_credential_unavailable
55
62
  ```
56
63
 
57
64
  判定结论与处置:
58
65
 
59
66
  - 域名与网络**不是**失败原因,不要再反复更换域名重试。
60
- - 这属于当前 CLI 版本消费统一登录凭证的能力缺口,技能侧无法修复;按上述「降级信号」流程终止并反馈,同时**记录 CLI 版本**(`weaver-work-cli --version`)便于 CLI 侧定位。
67
+ - 这属于宿主登录态、凭据注入或当前 CLI 版本消费凭证的异常;停止并反馈,同时可记录 CLI 版本(`weaver-work-cli --version`)便于定位。
61
68
  - 不要因为一次降级就断言 CLI 不可用;只读诊断命令(`auth status --no-check`、`doctor --e10`)仍可作为环境检查手段。
62
69
 
63
70
  ## 可写性相关说明
@@ -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 不能在未确认时自行安装。用户明确确认后,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