weaver-work-cli 0.1.24 → 0.1.25

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 (337) hide show
  1. package/README.md +10 -1
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +17 -2
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +112 -39
  6. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  7. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  8. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  9. package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
  10. package/dist/shortcuts/workflow/index.js +55 -1
  11. package/dist/shortcuts/workflow/operations/form.js +1252 -109
  12. package/dist/shortcuts/workflow/operations/read.js +75 -35
  13. package/dist/shortcuts/workflow/operations/shared.js +25 -0
  14. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  15. package/docs/caizhilian.md +4 -3
  16. package/docs/e10-auth.md +8 -1
  17. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  18. package/node_modules/@napi-rs/keyring/README.md +19 -0
  19. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  20. package/node_modules/@napi-rs/keyring/index.js +514 -0
  21. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  22. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  23. package/node_modules/@napi-rs/keyring/package.json +125 -0
  24. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  25. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  26. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  27. package/node_modules/commander/LICENSE +22 -0
  28. package/node_modules/commander/Readme.md +1149 -0
  29. package/node_modules/commander/esm.mjs +16 -0
  30. package/node_modules/commander/index.js +24 -0
  31. package/node_modules/commander/lib/argument.js +149 -0
  32. package/node_modules/commander/lib/command.js +2662 -0
  33. package/node_modules/commander/lib/error.js +39 -0
  34. package/node_modules/commander/lib/help.js +709 -0
  35. package/node_modules/commander/lib/option.js +367 -0
  36. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  37. package/node_modules/commander/package-support.json +16 -0
  38. package/node_modules/commander/package.json +82 -0
  39. package/node_modules/commander/typings/esm.d.mts +3 -0
  40. package/node_modules/commander/typings/index.d.ts +1045 -0
  41. package/package.json +5 -1
  42. package/skills/weaver-e10-builder/SKILL.md +281 -0
  43. package/skills/weaver-e10-builder/_catalog.md +94 -0
  44. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  45. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  46. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  47. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  48. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  49. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  50. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  51. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  52. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  53. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  54. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  55. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  56. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  57. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  58. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  59. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  60. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  61. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  62. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  121. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  122. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  123. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  124. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  125. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  126. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  127. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  128. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  129. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  130. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  131. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  132. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  133. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  134. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  135. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  136. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  137. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  138. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  139. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  140. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  153. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  154. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  155. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  156. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  157. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  158. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  159. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  160. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  161. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  162. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  163. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  164. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  165. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  166. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  167. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  168. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  169. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  170. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  171. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  185. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  186. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  187. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  188. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  189. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  190. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  191. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  192. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  193. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  194. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  195. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  196. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  197. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  198. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  199. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  200. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  201. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  202. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  203. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  204. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  205. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  206. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  207. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  208. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  209. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  210. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  211. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  212. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  213. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  214. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  215. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  216. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  217. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  218. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  219. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  220. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  221. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  222. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  223. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  224. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  225. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  226. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  227. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  228. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  229. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  230. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  231. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  232. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  233. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  234. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  235. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  236. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  237. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  238. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  239. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  240. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  241. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  242. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  243. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  244. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  245. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  246. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  247. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  248. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  249. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  250. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  251. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  252. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  253. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  254. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  255. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  256. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  257. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  258. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  259. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  260. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  261. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  262. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  263. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  264. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  265. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  266. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  267. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  268. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  269. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  270. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  271. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  272. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  273. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  274. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  275. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  276. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  277. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  278. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  279. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  280. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  281. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  282. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  283. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  284. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  285. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  286. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  287. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  288. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  289. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  290. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  291. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  292. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  293. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  294. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  295. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  296. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  297. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  298. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  299. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  300. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  301. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  302. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  303. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  304. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  305. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  306. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  307. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  308. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  309. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  310. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  311. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  312. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  313. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  314. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  315. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  316. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  317. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  318. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  319. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  320. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  321. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  322. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  323. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  324. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  325. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  326. package/skills/weaver-e10-caizhilian/SKILL.md +7 -2
  327. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  328. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  329. package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
  330. package/skills/weaver-e10-shared/SKILL.md +8 -4
  331. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +7 -5
  332. package/skills/weaver-e10-workflow/SKILL.md +23 -44
  333. package/skills/weaver-e10-workflow/references/source-manifest.json +27 -22
  334. package/skills/weaver-e10-workflow/references/workflow-create.md +238 -85
  335. package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
  336. package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
  337. package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
@@ -26,6 +26,18 @@
26
26
  - 下载单文件上限 **100MB**,超限报 `file_too_large`;下载/上传超时 **120 秒**(普通接口 12 秒)。
27
27
  - 同名文件已存在时按源的 `rename` 策略自动改名为 `名称(1).扩展名`、`名称(2).扩展名`……**不覆盖**已有文件。
28
28
 
29
+ ### 附件历史版本(attachment.list-versions)
30
+
31
+ | operation | risk | 必填 | 可选 |
32
+ | --- | --- | --- | --- |
33
+ | `caizhilian.attachment.list-versions` | read | `attachment_id` | `doc_id`、`page_no`(1)、`page_size`(10) |
34
+
35
+ - 按附件 ID 查询该附件的**全部历史版本**(每次替换/新建产生的版本都在列表里,含当前最新版本)。
36
+ - `attachment_id` 来自 `caizhilian.document.get` 或 `caizhilian.compare.list-file-objects`;`doc_id` 可传可不传(不传时按空处理),需要时可同时给。
37
+ - 返回每个版本的 `id`(版本 ID)、`name`(文件名)、`versionNumber`(版本号)、`updateTime`、`describe`(版本说明,如「新建」「替换」)、`extName`(扩展名)。
38
+ - `updateTime` 自动转为东八区 `YYYY-MM-DD HH:MM:SS`:毫秒/秒时间戳均可,已是时间格式的字符串原样透传,无法识别的值原样保留。
39
+ - 结果超过一页时 `has_next=true`,用 `page_no` 翻页;不要拿返回计数推断总量。
40
+
29
41
  ### 封面(cover)
30
42
 
31
43
  | operation | risk | 必填 | 说明 |
@@ -60,6 +72,7 @@ weaver-work-cli --json caizhilian run caizhilian.attachment.upload.apply --input
60
72
  weaver-work-cli --json caizhilian run caizhilian.attachment.replace.prepare --input-json '{"doc_id":"1234567890","attachment_id":"888","folder_id":"456","file_path":"C:\\data\\合同v2.pdf"}'
61
73
  weaver-work-cli --json caizhilian run caizhilian.attachment.download --input-json '{"doc_id":"1234567890","attachment_id":"888","save_path":"C:\\data\\out\\合同.pdf"}'
62
74
  weaver-work-cli --json caizhilian run caizhilian.attachment.download-as-pdf --input-json '{"doc_id":"1234567890","attachment_id":"888","save_path":"C:\\data\\out"}'
75
+ weaver-work-cli --json caizhilian run caizhilian.attachment.list-versions --input-json '{"attachment_id":"888"}'
63
76
  weaver-work-cli --json caizhilian run caizhilian.cover.set.prepare --input-json '{"doc_id":"1234567890","file_path":"C:\\data\\cover.png"}'
64
77
  weaver-work-cli --json caizhilian run caizhilian.cover.remove.prepare --input-json '{"doc_id":"1234567890"}'
65
78
  weaver-work-cli --json caizhilian run caizhilian.compare.list-file-objects --input-json '{"doc_id":"1234567890"}'
@@ -74,6 +87,7 @@ weaver-work-cli --json caizhilian run caizhilian.attachment.upload.apply --input
74
87
  weaver-work-cli --json caizhilian run caizhilian.attachment.replace.prepare --input-json '{"doc_id":"1234567890","attachment_id":"888","folder_id":"456","file_path":"/tmp/data/contract-v2.pdf"}'
75
88
  weaver-work-cli --json caizhilian run caizhilian.attachment.download --input-json '{"doc_id":"1234567890","attachment_id":"888","save_path":"/tmp/data/out/contract.pdf"}'
76
89
  weaver-work-cli --json caizhilian run caizhilian.attachment.download-as-pdf --input-json '{"doc_id":"1234567890","attachment_id":"888","save_path":"/tmp/data/out/"}'
90
+ weaver-work-cli --json caizhilian run caizhilian.attachment.list-versions --input-json '{"attachment_id":"888"}'
77
91
  weaver-work-cli --json caizhilian run caizhilian.cover.set.prepare --input-json '{"doc_id":"1234567890","file_path":"/tmp/data/cover.png"}'
78
92
  weaver-work-cli --json caizhilian run caizhilian.cover.remove.prepare --input-json '{"doc_id":"1234567890"}'
79
93
  weaver-work-cli --json caizhilian run caizhilian.compare.list-file-objects --input-json '{"doc_id":"1234567890"}'
@@ -87,6 +101,7 @@ weaver-work-cli --json caizhilian run caizhilian.compare.submit.prepare --input-
87
101
  - **下载类返回**:`{ file_path, file_name, file_size }`,`meta` 带 `{ doc_id, attachment_id }`。回复用户时给出**绝对路径 + 文件大小**,并提示已存在同名文件时被自动改名。
88
102
  - `cover.upload.apply` 返回 `{ file_id, name, size, ext_name }`;`cover.set.apply` 返回 `{ doc_id, file_id, name }`;`cover.remove.apply` 返回 `{ doc_id, cover_picture_id }`(`cover_picture_id` 为删除后的空串)。
89
103
  - `compare.list-file-objects` 返回 `{ attachments: [{ docId, file_id, ext_name, file_name, size, updateTime }] }`,其中 `file_id` 就是 `compare.submit` 需要的 ID;用 Markdown 表格摘要「文件名/类型/大小/更新时间」。
104
+ - `attachment.list-versions` 返回 `{ versions: [{ id, name, versionNumber, updateTime, describe, extName }], has_next }`;`updateTime` 已转为东八区时间字符串。用 Markdown 表格摘要「版本号/文件名/更新时间/版本说明」,`id` 作为后续操作入参,不作为展示主体。
90
105
  - `compare.search-documents` 与 `document.search` 同构(`{ page_no, page_size, has_next, documents[] }`),参见 `document.md`。
91
106
  - `compare.submit.apply` 返回 `{ compare_link }`,把链接原样交给用户,不要尝试抓取链接内容。
92
107
 
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: weaver-setting-attach
3
- description: "对话式修改\"文件设置 → 附件设置\"页面的 15 个配置项(上传最大、上传格式控制 方式、附件打开方式、批量下载、禁止移动端下载、附加提示、图片压缩、版本清理、 打印转 PDF 等)。通过自然语言 / `setting set --item key=value` 即可完成 GET 全量 → modify(保留原值) → diff 让用户确认 → POST 落库,无需打开 浏览器逐项点击。覆盖 weapp 端 `POST /api/file/tenant/setting` 与 `POST /api/file/tenant/setting/save` 两条接口。Use for 改附件设置、改上传 最大、改附件打开方式、改白名单黑名单、附件批量下载、禁止移动端下载、附加 提示、文件设置、文件上传、格式限制、图片压缩、版本清理、清理文件版本、 打印转 PDF、eteams-file 后台、<your-e10-domain>/info/fileSet/attach."
3
+ description: "对话式修改\"文件设置 → 附件设置\"页面的 15 个配置项(上传最大、上传格式控制 方式、附件打开方式、批量下载、禁止移动端下载、附加提示、图片压缩、版本清理、 打印转 PDF 等)。通过自然语言 / `setting set --item key=value` 即可完成 GET 全量 → modify(保留原值) → diff 让用户确认 → POST 落库,无需打开 浏览器逐项点击。覆盖 weapp 端 `POST /api/file/tenant/setting` 与 `POST /api/file/tenant/setting/save` 两条接口。另提供只读查询:按审批流程 ID 查附件上传目录(caizhilian.setting-attach.list-upload-folders)。Use for 改附件设置、改上传 最大、改附件打开方式、改白名单黑名单、附件批量下载、禁止移动端下载、附加 提示、文件设置、文件上传、格式限制、图片压缩、版本清理、清理文件版本、 打印转 PDF、按流程查上传目录、流程附件目录、流程上传文件夹、eteams-file 后台、<your-e10-domain>/info/fileSet/attach."
4
4
  license: Proprietary
5
5
  compatibility: 泛微E10采知连配套使用,内部可自由使用与修改,禁止对外分发
6
6
  metadata:
7
7
  maintainer: unknown
8
8
  type: capability
9
9
  version: 1.0.0
10
- updated: 2026-08-19
11
- tags: [附件设置, 上传最大, 格式控制, 批量下载, 图片压缩, 版本清理, 打印转PDF]
10
+ updated: 2026-10-13
11
+ tags: [附件设置, 上传最大, 格式控制, 批量下载, 图片压缩, 版本清理, 打印转PDF, 流程上传目录]
12
12
  ---
13
13
 
14
14
  # weaver-setting-attach
@@ -60,6 +60,51 @@ weaver-work-cli auth set --eteamsid "PCACCOUNT_xxx"
60
60
  | `setting set --item <key=value> [--item ...] [--dry-run] [--yes]` | GET → 合并 → diff → 询问 → POST |
61
61
  | `setting diff --item ...` | 只打印 diff,不调任何接口 |
62
62
 
63
+ ## 按流程查附件上传目录(caizhilian.setting-attach.list-upload-folders)
64
+
65
+ **只读操作**。用户给出审批流程(含 e-builder 建模流程)的 ID,查该流程的附件会
66
+ 上传到哪些知识库文件夹。CLI 会自动合并「通用附件设置」与各「附件字段」的目录
67
+ 配置,去重后一次返回。
68
+
69
+ ```text
70
+ weaver-work-cli --json caizhilian run caizhilian.setting-attach.list-upload-folders --input-json '{"workflow_id":"12345"}'
71
+ ```
72
+
73
+ - **入参**:`workflow_id`(审批流程 ID,字符串,必填,不要用 JSON 数字传)。
74
+ - **返回**:`folders` 数组,每项含
75
+ - `id` / `name` / `path`:文件夹 ID、名称、完整路径;
76
+ - `sources`:该文件夹的来源列表——`{type:"common_setting"}` 表示来自流程的
77
+ 通用附件设置;`{type:"field", field_id, field_name}` 表示来自某个附件字段的
78
+ 目录配置。同一文件夹出现在多个来源时会合并成多条 `sources`。
79
+ - **行为细节**:只有目录型(folderType=1)的附件字段才查字段级目录,其余字段跳过;
80
+ 个别字段查询失败时跳过该字段,不影响其余来源。
81
+
82
+ **反向查询**:从文件夹反查哪些审批流程把它设为上传目录,用
83
+ `caizhilian.setting-attach.list-workflows-by-folders`(入参 `folder_ids`)。
84
+
85
+ **排查提示**:返回空 `folders` 只表示该流程没有配置任何上传目录(或环境不支持),
86
+ 先和用户核对流程 ID 是否正确,不要据此断定「流程不存在」或「功能不支持」。
87
+
88
+ ## 按名称搜索审批流程(caizhilian.setting-attach.search-workflows)
89
+
90
+ **只读操作**。按流程名称模糊搜索审批流程(含 e-builder 建模流程),返回流程 ID、
91
+ 名称和类型。典型用途:用户只说了流程名称时,先用本操作搜到流程 ID,再查该流程的
92
+ 附件上传目录(`caizhilian.setting-attach.list-upload-folders`)。
93
+
94
+ ```text
95
+ weaver-work-cli --json caizhilian run caizhilian.setting-attach.search-workflows --input-json '{"keyword":"附件文档普通流程"}'
96
+ ```
97
+
98
+ - **入参**:`keyword`(流程名称搜索词,模糊匹配,自动去除首尾空格;可选,不传或
99
+ 空白返回全部流程)、`page_no`(默认 1)、`page_size`(默认 100)。旧字段名 `name`
100
+ 仍可作为 `keyword` 的别名使用,但两者同时出现且取值不一致会报错。
101
+ - **返回**:`{ page_no, page_size, has_next, workflows: [{ id, workflowName, typeName }] }`。
102
+ `id` 就是 `list-upload-folders` 需要的流程 ID(字符串,后续入参直接引用)。
103
+ - **分页**:默认只查第一页;返回 `has_next=true` 时先告诉用户还有更多结果,由用户
104
+ 决定是否继续翻页,不要自动翻页拉全量。
105
+ - **匹配语义**:按流程名称模糊匹配;同名流程可能有多条(不同分部/类型),用
106
+ `typeName` 和上下文区分,拿不准时让用户选,不要自行挑一条。
107
+
63
108
  ## 15 个支持字段
64
109
 
65
110
  字段别名(中文 / 英文 / DTO 字段名)三选一即可:
@@ -1232,6 +1232,48 @@
1232
1232
  "references/folder.md"
1233
1233
  ]
1234
1234
  },
1235
+ {
1236
+ "id": "fetch_workflow_upload_folder",
1237
+ "sourcePath": "weaver-doc-workflow-business/operations/fetch_workflow_upload_folder.json",
1238
+ "anchor": "operations/fetch_workflow_upload_folder.json",
1239
+ "sha256": "1d13fc918d3f40a7d9f19a397e42c9d9873930f7ed57e7c0ff8f1ebafb23a654",
1240
+ "sourceKind": "plugin",
1241
+ "pluginModule": "scripts/workflow_plugins.py",
1242
+ "mapsToOperations": [
1243
+ "caizhilian.setting-attach.list-upload-folders"
1244
+ ],
1245
+ "mapsToReferences": [
1246
+ "references/setting-attach.md"
1247
+ ]
1248
+ },
1249
+ {
1250
+ "id": "find_version_list",
1251
+ "sourcePath": "har/获取附件历史版本.har#/api/file/base/upload/findVersionList",
1252
+ "anchor": "POST /api/file/base/upload/findVersionList",
1253
+ "sha256": "332a6fc9a838465ea39e77bd6fc28622e7786768244b1ddfac31621950345e5c",
1254
+ "sourceKind": "har_capture",
1255
+ "pluginModule": "web filePreview version drawer",
1256
+ "mapsToOperations": [
1257
+ "caizhilian.attachment.list-versions"
1258
+ ],
1259
+ "mapsToReferences": [
1260
+ "references/files.md"
1261
+ ]
1262
+ },
1263
+ {
1264
+ "id": "search_workflows",
1265
+ "sourcePath": "weaver-doc-workflow-business/operations/search_workflows.json",
1266
+ "anchor": "operations/search_workflows.json",
1267
+ "sha256": "424f403de07c655500f38ac0e9d3dc4fe1bacc7e8dcce178185031ebdbd5aca1",
1268
+ "sourceKind": "plugin",
1269
+ "pluginModule": "scripts/search_plugins.py",
1270
+ "mapsToOperations": [
1271
+ "caizhilian.setting-attach.search-workflows"
1272
+ ],
1273
+ "mapsToReferences": [
1274
+ "references/setting-attach.md"
1275
+ ]
1276
+ },
1235
1277
  {
1236
1278
  "id": "list_folder_permission",
1237
1279
  "sourcePath": "weaver-e10-caizhilian/doc-business-operations/folder_permission_operations.json",
@@ -4776,6 +4818,59 @@
4776
4818
  "risk": "read",
4777
4819
  "requiresConfirmationChain": false
4778
4820
  },
4821
+ "caizhilian.setting-attach.list-upload-folders": {
4822
+ "sourceChunkIds": [
4823
+ "fetch_workflow_upload_folder"
4824
+ ],
4825
+ "schemaFields": [
4826
+ "workflow_id"
4827
+ ],
4828
+ "references": [
4829
+ "references/setting-attach.md"
4830
+ ],
4831
+ "tests": [
4832
+ "test/business/caizhilian-operations.test.ts"
4833
+ ],
4834
+ "risk": "read",
4835
+ "requiresConfirmationChain": false
4836
+ },
4837
+ "caizhilian.setting-attach.search-workflows": {
4838
+ "sourceChunkIds": [
4839
+ "search_workflows"
4840
+ ],
4841
+ "schemaFields": [
4842
+ "keyword",
4843
+ "page_no",
4844
+ "page_size"
4845
+ ],
4846
+ "references": [
4847
+ "references/setting-attach.md"
4848
+ ],
4849
+ "tests": [
4850
+ "test/business/caizhilian-operations.test.ts"
4851
+ ],
4852
+ "risk": "read",
4853
+ "requiresConfirmationChain": false
4854
+ },
4855
+ "caizhilian.attachment.list-versions": {
4856
+ "sourceChunkIds": [
4857
+ "find_version_list"
4858
+ ],
4859
+ "schemaFields": [
4860
+ "attachment_id",
4861
+ "doc_id",
4862
+ "page_no",
4863
+ "page_size"
4864
+ ],
4865
+ "references": [
4866
+ "references/files.md"
4867
+ ],
4868
+ "tests": [
4869
+ "test/business/caizhilian-operations.test.ts"
4870
+ ],
4871
+ "risk": "read",
4872
+ "requiresConfirmationChain": false
4873
+ },
4779
4874
  "caizhilian.setting-attach.list-workflows-by-folders": {
4780
4875
  "sourceChunkIds": [
4781
4876
  "list_approval_workflows_by_folders"
@@ -6200,6 +6295,9 @@
6200
6295
  "验证口径为离线契约等价:tsc --noEmit、npm run build、node:test 全量用例与 caizhilian schema/operations 自检;未在真实 E10 环境完成端到端调用,真实响应字段以现场实测为准。",
6201
6296
  "11 项已知实现偏差(兜底覆盖、时间时区、coordinate 语义、share.add 已存在判定、page<=0 显式报错等)记录在 docs/caizhilian.md 与生成报告 .temp/caizhilian-generation-report.md。",
6202
6297
  "sourceChunks[].sha256 为对应源规格文件指纹;manifest 只记录路径、hash、影响映射与转换摘要,不保存 Cookie、Token 或大段源正文,localSourceRoot 仅用于后续增量检测定位。",
6203
- "文件上传协议按 weaver-file-upload 1.0.0-node.1 的契约迁入 src/shortcuts/caizhilian/file-upload;保留 CLI 统一认证,补齐秒传、流式普通/分片上传、终态大小校验和私有回执;由本机 HTTP 测试验证,尚未验证真实 E10 租户。"
6298
+ "文件上传协议按 weaver-file-upload 1.0.0-node.1 的契约迁入 src/shortcuts/caizhilian/file-upload;保留 CLI 统一认证,补齐秒传、流式普通/分片上传、终态大小校验和私有回执;由本机 HTTP 测试验证,尚未验证真实 E10 租户。",
6299
+ "caizhilian.setting-attach.list-upload-folders 按源 Skill weaver-doc-workflow-business(skill-workflow-folder)的 fetch_workflow_upload_folder 契约迁入;该操作不在 weaver-e10-caizhilian 1.1.17 基线内,其 chunk 指纹(sha256)取自 weaver-doc-workflow-business/operations/fetch_workflow_upload_folder.json 源文件。",
6300
+ "caizhilian.setting-attach.search-workflows 按源 Skill weaver-doc-workflow-business(skill-workflow-folder)的 search_workflows 契约迁入(scripts/search_plugins.py 的 SearchWorkflowsPlugin);该操作不在 weaver-e10-caizhilian 1.1.17 基线内,其 chunk 指纹(sha256)取自 weaver-doc-workflow-business/operations/search_workflows.json 源文件。源 keyword 别名 name 记录为 deprecatedInputAliases。",
6301
+ "caizhilian.attachment.list-versions 按用户提供的抓包(har/获取附件历史版本.har 的 POST /api/file/base/upload/findVersionList,filePreview 页附件历史版本抽屉)迁入;该操作不在 weaver-e10-caizhilian 1.1.17 基线内,其 chunk 指纹(sha256)取自 har_extractor 提取的该请求规格文件,请求体字段按抓包逐字段复刻(startTime/endTime/userIds 抓包为空串且语义不明,按空串固定并记录为 withheld)。"
6204
6302
  ]
6205
6303
  }
@@ -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.1
8
+ version: 1.2.3
9
9
  author: 泛微网络科技股份有限公司
10
10
  agent_created: true
11
11
  requires:
@@ -39,7 +39,7 @@ requires:
39
39
 
40
40
  ## 最高优先级:XiaoE 统一登录
41
41
 
42
- 只有**当前智能体身份明确是 XiaoE** 时才允许走 XiaoE 统一登录。判定依据只能是宿主/任务上下文明确标识 XiaoE,或当前命令进程由 XiaoE 按次注入了成对的平台凭据。不得把以下任一情况当成 XiaoE 宿主证据:
42
+ 只有**当前智能体身份明确是 XiaoE** 时才允许走 XiaoE 统一登录。判定依据只能是宿主/任务上下文明确标识 XiaoE、当前命令进程由 XiaoE 按次注入了成对的平台凭据,或桌面 XiaoE 注入了精确的运行时路径标记。不得把以下任一情况当成 XiaoE 宿主证据:
43
43
 
44
44
  - 本机存在 `xiaoeUserData/tokens.py` 或 XiaoE 客户端目录;
45
45
  - 环境中只有 `XIAOE_SKILL_*`、`WEAVER_XIAOE_*` 配置或历史兼容变量;
@@ -47,6 +47,8 @@ requires:
47
47
 
48
48
  WorkBuddy、Codex 及其他智能体一律使用 `weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_type "<当前智能体名称>"` 走浏览器 OAuth。`auth login` / `auth oidc` 不会读取或消费 XiaoE 凭据。
49
49
 
50
+ `WORKBUDDY_*` / `CODEX_*` 这类通用运行时变量可能也存在于 XiaoE 启动的进程中,不能单独用来否决 XiaoE 身份。当前命令进程中的完整 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 是 Web/沙箱 XiaoE 的强身份信号;`XIAOE_DATA_ROOT`、`XIAOE_ROBOT_DATA_ROOT`、`XIAOE_USER_SETTINGS_PATH`、`XIAOE_ROBOT_ROOT` 是桌面 XiaoE 的精确宿主信号。若同时存在明确的 `WORKBUDDY_AGENT_TYPE` / `CODEX_AGENT_TYPE` 且值不是 XiaoE,则以后者为准并隔离到浏览器 OAuth。
51
+
50
52
  ### XiaoE 凭据由 CLI 独占处理(顶层强规则)
51
53
 
52
54
  Token、Cookie、ETEAMSID 和业务凭证**只能由 `weaver-work-cli` 内部读取和消费**。Agent 禁止:
@@ -64,11 +66,13 @@ Token、Cookie、ETEAMSID 和业务凭证**只能由 `weaver-work-cli` 内部读
64
66
  weaver-work-cli auth xiaoe
65
67
  ```
66
68
  2. 不得因为本地存在旧 profile、`auth profile current` 指向旧环境,或 `auth profile list` 里只有旧环境,就跳过 XiaoE 统一登录;也不得先要求用户选择旧 profile 或输入域名。
67
- 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 内部完成。
69
+ 3. XiaoE 统一登录由 CLI 按序取凭证:① 平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`,先走 Node 换票,再由 CLI npm 包自带的标准库 `xiaoe_env.py` 作兼容回退;② 宿主 `xiaoeUserData/tokens.py`(仅桌面宿主,CLI 在 macOS/Windows 都会先自动发现 XiaoE 客户端内置 Python,再回退到系统 Python);③ 内置原生实现读取桌面 XiaoE 客户端会话换取 `eteamId`,依次查找 `XIAOE_USER_SETTINGS_PATH`、`XIAOE_ROBOT_DATA_ROOT` / `XIAOE_ROBOT_ROOT` 和默认 `XiaoE/Robots/<id>/user_settings.json`,因此会话有效时不要求存在 `tokens.py`;④ `WEAVER_XIAOE_*` 环境映射。宿主只注入 `XIAOE_DOMAIN`、`XIAOE_USER_TOKEN` 等平台变量,不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`。Agent 不要打印、转述、索取或要求用户手动设置这些凭证,也不要直接执行任一脚本或因为脚本报缺依赖就让用户安装 Python 包——降级由 CLI 内部完成。
68
70
  4. `auth xiaoe` 和未显式指定 `--auth` / `--profile` 的业务命令都会先尝试上述统一登录。E10 目标地址按「显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile → CLI 内置默认值」解析,绝不能把 `XIAOE_DOMAIN` 当作 E10 地址。Token、Cookie、ETEAMSID 仍属于凭证,禁止在回复中展示。
69
71
  5. XiaoE 统一登录走不通时,CLI 必须反馈未拿到登录信息的原因。Web/Linux 环境的 `auth xiaoe` 返回 `authentication/xiaoe_web_credential_unavailable`,不会自动打开 localhost 浏览器 OAuth;macOS/Windows 桌面宿主才允许自动降级。用户明确要求网页登录、且 CLI 与浏览器同机时,再显式运行 `weaver-work-cli auth login`。
70
72
  6. `auth status --no-check` 只是本地诊断,不会主动触发 XiaoE 统一登录;业务命令和 `auth xiaoe` 才会尝试写入统一登录态。具体读取 [`e10-auth-and-session.md`](references/e10-auth-and-session.md)。
71
73
 
74
+ `auth xiaoe` 的 preflight 会输出不含凭证的 `hostDetected`、`attempted`、`tokenScriptDetected`、`clientSettingsDetected`、`baseUrl`;命中脚本分支时会出现 `Trying XiaoE token script credential...`,命中内置 Node 会话分支时会出现 `Trying built-in XiaoE client session credential...`。成功后登录结果和 `auth status` 中的 `credentialSourceStep`、`credentialSourceType`、`credentialSourceLabel` 用于确认实际来源;`2 / token_script / xiaoeUserData/tokens.py` 表示宿主脚本换票成功,`3 / xiaoe_client / XiaoE client settings` 表示不依赖 `tokens.py`、由 Node 直接换票成功。
75
+
72
76
  `auth login` / `auth oidc` 是严格的浏览器 OAuth 入口,即使同一台机器上存在 XiaoE 凭据或客户端文件,也不得先尝试 XiaoE 统一登录。未显式指定 `--auth` / `--profile` 的业务命令也只能在当前进程身份明确为 XiaoE 时自动尝试统一登录。
73
77
 
74
78
  ### 浏览器 OAuth 防挂起(顶层强规则)
@@ -173,4 +177,4 @@ User-Agent: AgentType=<agentType>,IsAgent=true
173
177
 
174
178
  7. 附件、图片上传或文件解析属于敏感数据处理。即便 operation 风险等级不是高风险写入,也必须先取得用户对“文件内容可能进入大模型/外部解析服务”的明确确认;不能把用户仅提供文件路径或文件名视为同意解析或上传。
175
179
 
176
- 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 自动降级。
180
+ 8. 在 XiaoE 宿主环境中,CLI 按顺序从平台注入凭证(Node 换票后由 CLI npm 包自带 `xiaoe_env.py` 兼容回退)、宿主 `xiaoeUserData/tokens.py`、内置原生实现读取的桌面 XiaoE 客户端会话(宿主注入路径优先、默认 `XiaoE/Robots/<id>/user_settings.json` 回退)、`WEAVER_XIAOE_*` 环境映射读取支持统一登录的凭证(宿主不会注入 ETEAMSID 环境变量)。桌面会话有效时 Node 可直接换票,不要求存在 `tokens.py`;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 自动降级。
@@ -3,7 +3,7 @@
3
3
  ## 什么时候读取
4
4
 
5
5
  用户需要登录、切换 profile、诊断 E10 连接、处理登录失效,或任务涉及 `base-url`、auth 文件、Keychain、`WEAVER_*` 环境变量时读取本文件。
6
- 当当前智能体身份明确为 XiaoE,且认证流程涉及 `XIAOE_*` 环境变量或 `xiaoeUserData/tokens.py` 时也读取本文件。仅本机存在这些变量、文件或 XiaoE 客户端,不能用来判定当前智能体是 XiaoE。
6
+ 当当前智能体身份明确为 XiaoE,且认证流程涉及 `XIAOE_*` 环境变量或 `xiaoeUserData/tokens.py` 时也读取本文件。成对的平台凭据,或桌面客户端精确注入的 `XIAOE_DATA_ROOT` / `XIAOE_ROBOT_DATA_ROOT` / `XIAOE_USER_SETTINGS_PATH` / `XIAOE_ROBOT_ROOT` 可标识 XiaoE 宿主;仅本机存在脚本、客户端目录、`XIAOE_SKILL_*` 或 `WEAVER_XIAOE_*` 配置不能据此判定。
7
7
 
8
8
  ## 基本检查
9
9
 
@@ -38,11 +38,11 @@ weaver-work-cli auth whoami
38
38
 
39
39
  **正确流程(按序执行,缺一不可):**
40
40
 
41
- 0. **仅 XiaoE 智能体环境优先自动尝试统一登录**:只有宿主/任务上下文明确标识当前智能体为 XiaoE,或当前命令进程收到 XiaoE 按次注入的成对平台凭据时,才运行:
41
+ 0. **仅 XiaoE 智能体环境优先自动尝试统一登录**:只有宿主/任务上下文明确标识当前智能体为 XiaoE、当前命令进程收到 XiaoE 按次注入的成对平台凭据,或收到桌面 XiaoE 精确注入的运行时路径标记时,才运行:
42
42
  ```text
43
43
  weaver-work-cli auth xiaoe
44
44
  ```
45
- 本机存在 `xiaoeUserData/tokens.py`、XiaoE 客户端目录、`XIAOE_SKILL_*` 或 `WEAVER_XIAOE_*` 配置都只表示“凭据可能可用”,不表示“当前智能体是 XiaoE”。WorkBuddy、Codex 及其他智能体必须跳过此步,进入下方浏览器 OAuth 流程。
45
+ 本机存在 `xiaoeUserData/tokens.py`、XiaoE 客户端目录、`XIAOE_SKILL_*` 或 `WEAVER_XIAOE_*` 配置都只表示“凭据可能可用”,不表示“当前智能体是 XiaoE”。桌面 XiaoE 的精确宿主标记是 `XIAOE_DATA_ROOT`、`XIAOE_ROBOT_DATA_ROOT`、`XIAOE_USER_SETTINGS_PATH`、`XIAOE_ROBOT_ROOT`。通用 `WORKBUDDY_*` / `CODEX_*` 运行时变量也可能存在于 XiaoE 进程中,不能覆盖成对的平台凭据或上述桌面标记;明确的 `WORKBUDDY_AGENT_TYPE` / `CODEX_AGENT_TYPE` 非 XiaoE 身份除外。WorkBuddy、Codex 及其他智能体必须跳过此步,进入下方浏览器 OAuth 流程。
46
46
  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。
47
47
 
48
48
  1. **先调用宿主提供的提问 / 弹框能力询问用户**,让用户二选一:
@@ -81,7 +81,7 @@ weaver-work-cli auth login --base-url "<用户确认的登录域名>" --agent_ty
81
81
 
82
82
  `auth login` / `auth oidc` 是严格的浏览器 OAuth 入口,不会因为本机可发现 XiaoE 凭据、脚本或客户端文件而改走 XiaoE 统一登录。
83
83
 
84
- 在 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 桌面宿主才允许自动降级。
84
+ 在 XiaoE 宿主环境中,`auth xiaoe` 先使用平台注入的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 换取 ETEAMSID(沙箱唯一可用来源):先走 Node 主路径,失败后由 CLI npm 包自带的 `scripts/xiaoe_env.py` 作标准库兼容回退;拿不到时再读宿主 `xiaoeUserData/tokens.py` 的 stdout JSON(仅桌面宿主),再退回内置原生实现读取桌面 XiaoE 客户端会话(优先 `XIAOE_USER_SETTINGS_PATH`,其次 `XIAOE_ROBOT_DATA_ROOT` / `XIAOE_ROBOT_ROOT`,最后默认 `XiaoE/Robots/<id>/user_settings.json`,不需要 `tokens.py` 或本机 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 桌面宿主才允许自动降级。
85
85
 
86
86
  需要显式表达“XiaoE 优先”的场景也可以使用等价入口:
87
87
 
@@ -91,6 +91,8 @@ weaver-work-cli auth xiaoe
91
91
 
92
92
  该命令先尝试 XiaoE 统一登录;统一登录不可用时先反馈原因。Web/Linux 环境直接结束并返回结构化错误,不自动切换浏览器 OAuth;macOS/Windows 桌面宿主可以继续降级。用户明确切换域名时再追加 `--base-url "<用户确认的登录域名>"`。
93
93
 
94
+ 命令首先输出不含凭证的 preflight 摘要:`hostDetected` 表示是否识别为 XiaoE 宿主,`attempted` 表示是否实际进入统一登录链路,`tokenScriptDetected` 表示是否发现宿主脚本,`clientSettingsDetected` 表示是否发现可供 Node 换票的桌面会话文件。脚本分支开始时会打印 `Trying XiaoE token script credential...`,Node 会话分支开始时会打印 `Trying built-in XiaoE client session credential...`。成功结果及后续 `auth status` 的 `credentialSourceStep=2`、`credentialSourceType=token_script`、`credentialSourceLabel=xiaoeUserData/tokens.py` 可确认脚本换票已完成;`credentialSourceStep=3`、`credentialSourceType=xiaoe_client`、`credentialSourceLabel=XiaoE client settings` 表示未依赖 `tokens.py`、由 Node 直接换票。
95
+
94
96
  如果端口冲突:
95
97
 
96
98
  ```text
@@ -141,7 +143,7 @@ weaver-work-cli --profile PROFILE_NAME auth status --no-check
141
143
 
142
144
  1. **平台注入凭据**:`XIAOE_USER_TOKEN` + `XIAOE_DOMAIN`(小 e 业务服务地址)。先由 Node 直接换票;失败时 CLI 可调用 npm 包自带的 `scripts/xiaoe_env.py` 兼容换票。脚本不属于 Skill,由 CLI 内部执行、解析并隐藏凭证 stdout。
143
145
  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` 指定解释器。
144
- 3. **桌面 XiaoE 客户端会话**:`XiaoE/Robots/<id>/user_settings.json` 的 `session_id` + `erpa`,由 CLI 内置 Node 实现换取 `eteamId`,不需要本机 Python。
146
+ 3. **桌面 XiaoE 客户端会话**:优先读取 `XIAOE_USER_SETTINGS_PATH`,其次从 `XIAOE_ROBOT_DATA_ROOT` / `XIAOE_ROBOT_ROOT` 查找,最后回退 `XiaoE/Robots/<id>/user_settings.json`;其中的 `session_id` + `erpa` 由 CLI 内置 Node 实现换取 `eteamId`,不需要宿主 `tokens.py` 或本机 Python。
145
147
  4. **`WEAVER_XIAOE_*` 环境映射**:当前登录域名到 ETEAMSID 的映射。
146
148
 
147
149
  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。
@@ -16,12 +16,12 @@ cliHelp: "weaver-work-cli workflow --help"
16
16
  ---
17
17
 
18
18
  **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`——省略会装进默认目录,导致本技能依然读不到共享规则。命令均成功后重新读取共享规则;仍读不到就停止并把结果报告用户,不得凭猜测继续。**
19
- **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整规则见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)。
20
19
 
21
- 认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据。
22
- 所有命令通过 `weaver-work-cli --json workflow run <operation>` 执行:**统一用 `--input-json '<json>'` 内联传入**——`planJson`、`filterFields` 这类嵌套结构也一样内联(总量通常只有几百字符,内联完全够用;**不要因为"看着复杂"就去写 JSON 文件**,那会白白多出一次文件写入与一次工具往返)。仅当 JSON 确实很大(几十 KB 级,如超长消息列表)或含难以在 shell 里转义的单引号时,才改写 UTF-8 文件配 `--input <path>`;只有确认当前 shell 能稳定传管道时才用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli workflow schema` 是 operation、字段和风险等级的合约来源。
23
- 生成或改写的 docs、reference、提示词和命令示例必须同时兼容 Windows 和 macOS/Linux。凡涉及 JSON 输入、用户目录、路径分隔符、文件删除、目录查看或文件比对,必须同时给出 Windows PowerShell 与 macOS/Linux(bash/zsh)两套示例;Agent 先根据当前系统和 shell 选择对应示例,不确定时用 `node -p "process.platform"` 判断。Windows/PowerShell 示例不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
24
- 涉及附件、图片、本地文件、远程 URL 文件或文件内容解析的 operation,执行前必须提醒用户:文件内容可能被上传到业务系统、OCR/解析服务,并可能进入当前大模型上下文用于理解和处理;必须等待用户明确确认后才继续。
20
+ **`--is-connector` 判据**:用户明确使用连接器、或上下文要求用连接器完成任务 → 传 `true`;本次任务或上下文直接选择单独技能 → 不传;用户没有明确说明时,按**正在运行的这份 Skill 是哪一级**定——**用户级(条目标 `(user)`)不传,连接器级(标 `(connector)`)传**(同名 Skill 只会运行用户级那一份)。传 `true` 时不要再写 `--profile` / `--base-url`。完整判据表见 [`../weaver-e10-shared/SKILL.md`](../weaver-e10-shared/SKILL.md)「连接器模式」。
21
+
22
+ 认证和登录态只能按共享规则通过 `weaver-work-cli auth ...` 命令判断;禁止直接读取、列出、打印或解析用户主目录下的旧 `.e10-cli`、auth、config 或 Keychain 数据,也不得自建登录流程或索取、转存任何凭证。
23
+
24
+ 所有命令通过 `weaver-work-cli --json workflow run <operation>` 执行:**统一用 `--input-json '<json>'` 内联传入**——`planJson`、`filterFields` 这类嵌套结构也一样内联(总量通常只有几百字符,内联完全够用;**不要因为"看着复杂"就去写 JSON 文件**,那会白白多出一次文件写入与一次工具往返)。仅当 JSON 确实很大(几十 KB 级,如超长消息列表)或含难以在 shell 里转义的单引号时,才改写 UTF-8 文件配 `--input <path>`;只有确认当前 shell 能稳定传管道时才用 `--input -`。调用前先按需读取 references 下对应的文件,查参数结构,不要猜字段;**references 是第一信息源**,`weaver-work-cli workflow schema` 是 operation、字段和风险等级的合约来源。生成或改写的 docs、reference、提示词和命令示例必须同时兼容 Windows 和 macOS/Linux(口径见共享规则「通用准则」),Windows/PowerShell 示例不要使用 `printf`、`$HOME/...`、`~/...`、bash 反斜杠续行、`rm/ls/diff/python3` 等 Unix-only 写法。
25
25
 
26
26
  # 泛微E10流程智能助手
27
27
 
@@ -29,12 +29,7 @@ cliHelp: "weaver-work-cli workflow --help"
29
29
 
30
30
  用户提到待办、已办、我发起的流程、流程详情与摘要、同意/退回/转办/加审等流程操作、批量处理、共享流程、发起创建流程或修改流程表单时,使用本技能。
31
31
 
32
- 用户要查组织架构与人员 ID 时转 `weaver-e10-hrm`;查发票、邮件、日程、费控时转对应业务技能。
33
-
34
- ## 认证与请求头契约
35
-
36
- 登录与会话由 `weaver-e10-shared` 共享规则和 `weaver-work-cli auth ...` 命令体系统一托管。业务 Skill 不自建登录流程,不索取、打印或转存任何凭证。
37
-
32
+ 用户要查组织架构与人员 ID 时转 `weaver-e10-hrm`;查发票、邮件、日程、费控时转对应业务技能。(附件/文件类操作执行前必须先取得用户对"内容可能进入大模型/外部解析服务"的明确确认,口径见共享规则。)
38
33
 
39
34
  ## 任务入口(每收到用户任务,先按本固定步骤执行)
40
35
 
@@ -42,11 +37,11 @@ cliHelp: "weaver-work-cli workflow --help"
42
37
 
43
38
  1. **第一轮就并行发起(关键:不要串行拆成多轮往返)**:在**同一条消息**里同时发出下列调用——
44
39
  - Read `../weaver-e10-shared/SKILL.md`(若尚未读过);
45
- - `weaver-work-cli [--is-connector true] --json workflow run workflow.memoryPrompt`——该命令**无入参**;**先按本文件开头的 `--is-connector` 判据确定前缀,再直接执行**(仅"非首次对话且距上次成功读取记忆不足 6 小时"时跳过);
40
+ - `weaver-work-cli [--is-connector true] --json workflow run workflow.memoryPrompt`——该命令**无入参**;**先按上方 `--is-connector` 判据确定前缀,再直接执行**(仅"非首次对话且距上次成功读取记忆不足 6 小时"时跳过);
46
41
  - **查询类意图**只读 [`workflow-query.md`](references/workflow-query.md) 一份(已覆盖 `workflow.search` 与 `workflow.todoStat`,不要再读其他查询文档);**但该文件约 108 KB / 835 行——整读会超单次读取上限被明确拒绝**(Read 单次上限约 **20,000 tokens ≈ 100 KB / 800 行**):**首轮一次读完开头的契约段**(`offset 1 limit 244`,约 30 KB,已覆盖 Operation、全部输入参数含「大分类判定」、时间条件与「待办时间默认语义」、执行流程),其余章节(`planJson` 编排、汇报式分组骨架、渲染规则与示例)**只在需要的那一刻按它开头的「分段索引」给出的行区间补读**;查看/操作/共享/发起/修改等意图读对应那一份 reference 即可,不要顺手把查询文档也一起读;**唯一例外是批量操作**——用 `scopeCondition` 走范围驱动时要构造与 `workflow.search` 同形的查询条件,**这一轮可以同时读 [`workflow-query.md`](references/workflow-query.md) 与 [`workflow-batch.md`](references/workflow-batch.md)**(前者给条件写法,后者给 `scopeCondition`/`action` 的执行口径),其余意图仍只读对应那一份;
47
42
  - **泛化待办查询**(如"今天有哪些待办")先看上一步 `memoryPrompt` 返回的 `oaContext.smartGrouping`:`false`(低版本)→ **直接** `workflow.search`(category=todo,**不要带 `planJson`/`subCategory`**),CLI 已自带分组统计与卡片,原样渲染即结束;`true`(智能分组)→ 才追加 `workflow.todoStat` 做统计规划,再带 `planJson` 取数。**不要在 `smartGrouping` 为 `true` 之前先调 `workflow.todoStat`**——低版本必然失败(报 `todo_stat_requires_smart_mode`)白费一次调用。
48
- > 以上调用**互不依赖,必须并行**:串行拆轮会成倍拉长耗时。**实测基准**:一次泛化待办查询全程约 70s,其中**模型轮次占 ~95%**(每轮约 8~25s,主因是模型输出量),CLI 命令本身合计只有 1~2s。**能省一轮就省一轮**——尤其不要为"解析上一轮输出""取流程 ID"另起一轮。
49
- - **[`workflow-memory.md`](references/workflow-memory.md) 本步不读**——记忆读取的命令形态见上一行(**含 `--is-connector` 判据**,按它确定前缀后执行),**记忆保存的规则已在本文件「记忆保存(全局规则)」章节给全**(本轮任务结束时按那一节执行);只有需要判断"放 `user.md` / `memory.md` / `workflow:{id}` 哪一类"或其它字段细节时,才在需要的那一刻去读它。
43
+ > 以上调用**互不依赖,必须并行**:串行拆轮会成倍拉长耗时。**实测**:一次泛化待办查询全程约 70s,其中**模型轮次占 ~95%**(每轮约 8~25s,主因是模型输出量),CLI 命令本身合计只有 1~2s。**能省一轮就省一轮**——尤其不要为"解析上一轮输出""取流程 ID"另起一轮。
44
+ - **[`workflow-memory.md`](references/workflow-memory.md) 本步不读**——记忆读取的命令形态见上一行(**含 `--is-connector` 判据**),**记忆保存的规则已在本文件「记忆保存」章节给全**;只有需要判断"放 `user.md` / `memory.md` / `workflow:{id}` 哪一类"或其它字段细节时,才在需要的那一刻去读它。
50
45
  - **读被拒就按行段重读源文件,不要去读宿主的落盘文件**:Read 单次超限是**明确报错**(提示改用 `offset`/`limit`),照提示把源文件分行段重读即可;**不要**去读宿主的落盘文件(`~/.workbuddy/projects/**/tool-results/**`:**没有读取权限**,去读必然拿一句 `Permission … has been denied`、白费一轮——那是**命令输出**超线时的落盘预览,不是 Read 的读取路径)。
51
46
  2. **执行用户任务**:按下方「选哪个命令」与「处理链」选定 operation 并执行,参数以对应 reference 为准。
52
47
 
@@ -55,12 +50,11 @@ cliHelp: "weaver-work-cli workflow --help"
55
50
  ## 总原则
56
51
 
57
52
  - **全程中文**;输出时把技术术语翻译成普通用户能看懂的话(命令要求对返回内容原样输出的除外)。
58
- - **列表/详情最终回复 = 原样粘贴命令返回的渲染文本全文,一字不改**:**`workflow.search` 用 `finalMarkdown`**(卡片列表;`smart` 模式无顶部行)、**`workflow.detail` 用 `renderMarkdown`**(该 operation 没有 `finalMarkdown`)——两者不要混用、不要自己拼装;其中禁止出现 `<div>`/`<span>`/`style` 等 HTML 标签。
53
+ - **列表/详情/发起结果的最终回复正文 = 命令返回的渲染文本全文本身(从第一个字符到最后一个字符,不增不减)**:**`workflow.search` 用 `finalMarkdown`**(卡片列表;`smart` 模式无顶部行)、**`workflow.detail` 用 `renderMarkdown`**(该 operation 没有 `finalMarkdown`)、**`workflow.createRequest` 的结果用 `finalMarkdown`**——**落地三态(`CREATED` / `CREATED_SUBMITTED` / `CREATED_SUBMIT_FAILED`)**(结论 + 流程编号/链接 + 已填内容 + 明细)与 **`NEEDS_INPUT`(必填缺失)**(结论 + 已填内容 + 明细 + **待补必填项清单**,其中**历史取值一致**的待补字段带一行 `历史推荐值`——由命令算好)**完全同一口径、都是同一段文本**:字段、表格、待补清单、缺项的类型提示都已渲染在里面——**这段文本之外,回复里不再有别的**(不重拼表格、不另列清单、不进弹窗;弹窗要给候选选项,而这里不做任何值推断);三者不要混用。其中禁止出现 `<div>`/`<span>`/`style` 等 HTML 标签。**`已填内容` 按"用户在表单上看到的已填字段"渲染**(流程标题 + 表单默认值 + 本次入参,业务字段按表单布局顺序)——**里面出现你没传过的默认值字段是正常的,照贴、不要删**。
59
54
  - 只执行本 skill 列出的 operation,把命令返回的结果、提示、候选**原样呈现**;命令没做的、没返回的、查不到的,反馈用户或停止——**绝不自行发明、探测、绕过**。
60
55
  - **澄清一律不向用户索取 ID**:凡是"名称没匹配到 / 有多个候选待确认"的情形(填单、查询、转发接收人、共享对象等一律适用),只问该对象的**完整名称**或**其它可用于检索的关键词**;`名称(ID)`(或 `{id,name}` 这类结构)由你按命令返回的 `candidates` 自己拼好、重发同一条命令,**不要让用户提供 ID**。
61
56
  - 失败、超时、登录失效、业务错误一律立即停止,不自动重试、不延长等待、不切换地址、不换接口。**例外**:读操作遇登录失效时按 `weaver-e10-shared` 的认证引导处理,认证完成后重放原请求(写操作见「写操作失败处理」)。
62
57
  - **接口异常一律原样反馈给用户,禁止自行尝试解决方案**:命令返回里出现接口报错(`error.type = api`)时,把接口提示原文转述给用户、并说明本次操作**没有完成**;不得替接口解释原因,不得自行改用别的做法去绕。
63
- - **若决策依据了历史记忆,最终回复要说明;若本轮保存了记忆,要说明会记住什么。**
64
58
  - **不得写 agent 工具的工作日志/工程日志/对话记录**;**不读取、不处理与本任务无关的工作区引导/身份文件**(如工作区根的引导说明、身份档案等——那是别的流程负责的事,在本轮纠结它只会让任务跑偏并白白多花几秒);不读取命令源码、不执行调试命令、不使用调试参数。
65
59
 
66
60
  ## 记忆保存(全局规则,每轮任务结束都要执行)
@@ -71,15 +65,13 @@ cliHelp: "weaver-work-cli workflow --help"
71
65
  - **`msgList` 每项的字段名固定是 `msgRole` / `msgValue`**(按对话顺序:user 放用户原话/澄清回复,assistant 放命令返回/你的确认说明),**不要写成 `role` / `content`**;
72
66
  - **`workflowId` 只在「这条记忆换个工作流就不成立」时才带**——① 澄清**工作流本身**(业务别名、名称消歧、把口语简称落到某个工作流)⇒ **不带**:这类事实跨工作流通用,带上会被锁进该工作流维度,**而别名存在的意义正是"还没确定工作流时用它去找工作流"**;② 澄清**该工作流内部**(表单字段与选项含义、节点流转、提交节奏、审批规则)⇒ **带上**。一句话判据:**换个工作流还成立吗?成立 → 不带;只在某个工作流里成立 → 带**;
73
67
  - **保存「业务别名 → 工作流」映射时,ID 必须来自本轮命令返回**:`workflow.search` / plan 的 **`cards[].workflowId`**、`workflow.createForm` 澄清候选的 `id`、`workflow.todoStat` 的 `countDetails[].workflowId`——拿到就必须把 ID 写进 `msgValue` 的事实句(如「业务别名"问题流程"= 工作流"E10客户问题支持解决流程",workflowId=1003655203465764898」);**不允许只记名称、把 ID 留空**——留空就是「(待确认)」,后续查询只能拿纯名称去试探,多命中还要再澄清一次;
74
- - `saved:true` → **用自然语言告知用户会记住什么**(如"后续再发起请假流程时会默认按本次偏好(年假)填写"),不展示接口原文;
75
- - `saved:false` → 按静默失败处理,不告知用户、不重试,直接继续回答用户原本问题。
68
+ - `saved:true` / `saved:false` → **都静默处理**(不告知用户、不展示接口原文、不重试),直接继续回答用户原本问题。
76
69
  - **没有** → 不调用 `workflow.memoryExtract`,直接输出最终回复;**不要纠结"一次性原因(如请假事由)是否值得记忆"**。
77
70
 
78
71
  **硬禁令(违反即为没保存)**:
79
72
 
80
73
  - **不允许只在思考里写"应该保存记忆"**:判断"有"后必须**真的发出 `workflow.memoryExtract` 命令**,拿到真实 `saved` 结果后再输出最终回复。只在内心说"要保存"而不执行 = 没保存。
81
74
  - **发起流程(`workflow.createForm` / `workflow.createRequest`)按本节更窄的口径**:本轮发起过程中,只有**用户有新的明确澄清**——① 工作流名称;② 字段名称;③ 浏览按钮字段值;④ 选项字段的选项值——才属于要保存的情形(口径见 [`workflow-create.md`](references/workflow-create.md));**这四类之外一律不保存**(用户只是给出普通文本 / 日期 / 金额字段的本次取值、或只是正常走完一次填单,都不算记忆),不要漏也不要多存。
82
- - 用户澄清后确认的**工作流名称 / 字段名称 / 浏览按钮字段值 / 选项字段的选项值**属于典型的"有价值记忆",**属于要保存的情形**,不要漏。
83
75
  - **记忆里的别名条目写「(待确认)」时,它是一张待办、不是终态**:本轮只要把该别名唯一解析出了 `workflowId`(**`cards[].workflowId`** 或 `countDetails[].workflowId` 里就有),任务结束时**必须再保存一次把 ID 补上**(口径同上),不要放着不管。
84
76
 
85
77
  > 本节的规则已足够直接执行;仅当需要判断"放 user.md / memory.md / workflow:{id} 哪一类"或需要其它字段细节时,才去读 [`workflow-memory.md`](references/workflow-memory.md)。
@@ -127,7 +119,7 @@ cliHelp: "weaver-work-cli workflow --help"
127
119
  - **目标是一个范围(没有准确 `requestId`)** → **必须先数条数再执行**:先用 `scopeCondition`(与 `workflow.search` 同形的条件)+ `action:"total"` **只查条数**(`action` 在给了 `scopeCondition` 时**必填**,漏写报 `batch_action_required`),把「范围 + 条数」报给用户确认(`total=0` 但 `scopeTotal>0` 时要说明"有 N 条但不适用本次操作",不能说成没有数据)。
128
120
  - **目标是一个范围、用户已确认条数** → 再用同一条 `scopeCondition` 配 `action:"execute"`;**循环由 CLI 内部完成**(查一页→执行→排除已处理/失败的 ID→再查,直到取完或触达上限),**不要自己写"查一页→数 ID→再执行"的多轮流程**。返回里给的是成功/失败条数、失败清单与 `stoppedReason`(**不含批次数等内部细节**),照它汇报即可——`scope_not_batch_eligible` 表示"范围内有数据但本次操作一条都取不到"(**不是**"没有数据"),要说明原因并给替代操作(如改 `workflow.batchRead`)。
129
121
  - 单条共享 -> `workflow.sharePrepare` -> 用户确认 -> `workflow.shareApply`。
130
- - 发起流程 -> `workflow.createForm`(传 `workflow`,**目标写法优先用 `名称(ID)`**:自带显式 ID 时不查可发起列表、少一次往返,纯名称才走可发起列表模糊匹配;解析可发起的工作流并拿到 `continuation`;返回 `NEEDS_CLARIFICATION` 时按 `candidates` 与用户确认后用 `名称(ID)` 重发)-> 按用户意图填 `data` -> `workflow.createRequest`(`context` 传上一步的 `continuation`,`action` 取 `draft`/`submit`)。**必填是否齐不用模型判断**:`action:"submit"` 缺必填时命令不会创建流程,返回 `NEEDS_INPUT` + `missingFields`,一次问齐后带同一 `context` 重发;`action:"draft"` 则照常建草稿、缺失项只作提醒。
122
+ - 发起流程 -> `workflow.createForm`(传 `workflow`,**目标写法优先用 `名称(ID)`**:自带显式 ID 时不查可发起列表、少一次往返,纯名称才走可发起列表模糊匹配;解析可发起的工作流并拿到 `continuation`;返回 `NEEDS_CLARIFICATION` 时按 `candidates` 与用户确认后用 `名称(ID)` 重发)-> 按用户意图填 `data` -> `workflow.createRequest`(`context` 传上一步的 `continuation`,`action` 取 `draft`/`submit`)。**字段的 id 与名称由 `createForm` 返回的唯一一份 `fields` 给出**(可编辑 ∪ 必填且可见;**有默认值的字段已把值直接带在字段属性上(`initialValue`)**),历史参考值在 `historyRequestData` 里,**不要为了拿名称去读 `resultFile`**。**必填是否齐不用模型判断**:`action:"submit"` 缺必填时命令不会创建流程,返回 `NEEDS_INPUT` + `missingFields`,一次问齐后带同一 `context` 重发;`action:"draft"` 则照常建草稿、缺失项只作提醒。**结果落地三态(`CREATED` / `CREATED_SUBMITTED` / `CREATED_SUBMIT_FAILED`)与 `NEEDS_INPUT`(必填缺失)都直接原样回复命令给的 `finalMarkdown`**(`NEEDS_INPUT` 那份末段就是待补必填项清单:**原样粘贴即可,不要自己列、也不要塞进弹窗**;清单里带 `历史推荐值` 的行是**命令按历史一致性算好的**,不要自己再算、也不要回头翻历史),不要自己挑字段、拼主表/明细表格。填 `data` 按 [`workflow-create.md`](references/workflow-create.md) 的「填值纪律」一遍定案——每个字段只做一次取舍、取完不再回头,不要在同一字段上反复比较历史值。
131
123
  - 修改表单 -> `workflow.editLoad` 拿 `context` -> `workflow.editPrepare` -> 用户确认 -> `workflow.editApply`。
132
124
 
133
125
  ## 执行原则(减少误路由、误重试和无效消耗)
@@ -163,20 +155,20 @@ cliHelp: "weaver-work-cli workflow --help"
163
155
 
164
156
  ### 4) 附件、图片和文件解析确认
165
157
 
166
- - 命中发起流程上传附件、读取本地文件、使用远程 URL 文件或复用已上传文件对象时,必须先提醒数据处理风险并等待用户明确确认。
167
- - 风险提醒必须说明文件内容可能进入大模型上下文,也可能被发送到业务系统或解析服务。
158
+ - 命中发起流程上传附件、读取本地文件、使用远程 URL 文件或复用已上传文件对象时,必须先提醒数据处理风险并等待用户明确确认(提醒口径见共享规则「通用准则」与「安全规则」)。
168
159
  - 上传前先按表单返回的 `fileUploadParams` 核对文件大小、扩展名格式和数量限制;不满足时先告知用户、不执行上传。
169
160
  - 用户未确认前,不要运行会读取、上传或解析该文件的命令。
170
161
 
171
162
  ### 5) 命令输出读取纪律(禁止截断、禁止重复取数)
172
163
 
173
164
  - **禁止对命令输出做管道截断**:不要用 `| head`、`| tail`、`| more` 等处理 `weaver-work-cli --json ...` 的 stdout。截断会破坏 JSON,并且必然导致重复执行同一条命令(实测最常见的一条命令被执行 2 次,就是 `| head` 引起的)。
174
- - **一律直读 stdout(失败时读 stderr,见下条),不要落盘、不要写脚本回读**:`--json` 输出是**多行 pretty JSON**,且已按体积做过控制(`workflow.todoStat` 约 20 KB/400 余行;`workflow.search` 的条目已收窄到必要字段、泛化待办查询实测约 **14 KB**;`workflow.detail` 只有几 KB;`workflow.createForm` / `editLoad` 遇到大表单会落盘、stdout **只回一条提示**(提示里直接给出可照抄的读命令))——都在宿主单次输出上限以内,每行也都不长——**直接读即可**,不存在行长截断问题。**禁止**把 stdout 重定向到文件(`> /tmp/xxx.json`)再写脚本解析回读:它不会带来任何新信息,只会白白多出一次工具往返(实测多一轮约 +7s,占整轮耗时可观)。
165
+ - **一律直读 stdout(失败时读 stderr,见下条),不要落盘、不要写脚本回读**:`--json` 输出是**多行 pretty JSON**,且已按体积做过控制(`workflow.todoStat` 约 20 KB/400 余行;`workflow.search` 的条目已收窄到必要字段、泛化待办查询实测约 **14 KB**;`workflow.detail` 只有几 KB;`workflow.createForm` / `editLoad` 遇到大表单会落盘、stdout 只回提示)——都在宿主单次输出上限以内——**直接读即可**。注意 `workflow.createForm` 的 `fields` / `historyRequestData` / `systemFields` 三个键是**压成单行**输出的(只去缩进、内容一字不改),其中 `fields` 那一行字段多时可能上万字符——**这属正常,不是被截断**,照常按 JSON 解析。**禁止**把 stdout 重定向到文件(`> /tmp/xxx.json`)再写脚本解析回读:它不会带来任何新信息,只会白白多出一次工具往返(实测多一轮约 +7s,占整轮耗时可观)。
175
166
  - **`workflow.search` 的体积纪律(别等被截断)**:泛化待办按要求走 `planJson` 分组(各组独立渲染、各 10 条,体积天然分散);要看更多用 `current` 分页续查;**不要靠加大 `pageSize` 一次拉全**。CLI 侧已按 **24 KB(美化口径)** 设体积守卫:超线时自动把完整结果落盘,并在结果**最前面**给出 `resultFile`(结构化 JSON)+ `resultMdFile`(纯 `finalMarkdown`),**stdout 仍保留全量 `finalMarkdown`** ⇒ 正常渲染**直接用 stdout 即可、不需要读文件**;只有需要完整结构化明细(如逐条 `requestId`)时才从 `resultFile` 按需提取,并一次读完(不要 `| head`/`| tail`)。宿主把输出截成一小段预览时:**不要重跑同一条命令**(结果一样、白烧一轮),改用更小页或 `planJson` 分组重取;宿主提示的落盘副本(`~/.workbuddy/projects/**/tool-results/**`)**不能用 Read 工具读**(会拿 `Permission … has been denied`),确实要用时以 shell 命令读取并只提取需要的字段。
176
167
  - **失败出口在 stderr(stdout 为空即失败)**:命令失败时退出码非 0、**错误 JSON 只出现在 stderr**(`{ok:false, error:{type,subtype,message,retryable}}`),**stdout 是空的**。因此:**stdout 为空 → 一律视为失败并去读 stderr**,按 `error.subtype` 决定下一步(如 `todo_stat_requires_smart_mode` → 不要重试 todoStat,改走 `workflow.search`;`plan_requires_smart_mode` → 去掉 `planJson` 重查);判断成败**以 `ok` 字段为准**,宿主界面把命令显示成"运行成功"只代表进程结束,不代表业务成功。
177
168
  - **同一个 operation 最多执行一次**:拿到 stdout 后一次性解析完,不要先截断看一眼再重跑。
178
- - **结果里出现 `resultFile` 时不要重跑命令**:`workflow.search`、`workflow.todoStat`、`workflow.createForm`、`workflow.editLoad` 等大输出 operation 会把完整数据落盘,并在结果**最前面**返回 `resultFile` 与 `largeOutputNotice`;`workflow.search` / `workflow.todoStat` 的 stdout 已保留可用内容,被省略的大字段(如查询的逐条明细、某工作流的 `formFields`、通知正文 `formFieldValues` 全文)再**按需提取**(只取要用的键,不要把整份读进上下文);**`createForm` / `editLoad` 则相反——stdout 里已没有任何表单属性,必须照抄提示里的读命令把该文件整份读完**,之后不要再重读。两类都**不要重新执行 operation**。
179
- - **`createForm` / `editLoad` 大表单超线时只回一条提示**(字段少时就是原样全量):结果里**只有** `resultFile` / `persistedResult` / `outputBytes` / `largeOutputNotice` 四个键,**不带任何表单属性**。`largeOutputNotice` 里直接给出可照抄执行的读命令(文件路径 + `limit` = 该文件总行数),**先照抄它把文件一次读完、再继续下一步**——字段清单、必填、`initialValues` / `historyRequestData`、以及下一步要用的 `contextId` 全在那个文件里。**不要重跑本命令、不要分段读、不要用 `head`/`tail` 截断、也不要用脚本去挖文件。** 只有落盘不可用(极少见)时才返回全量并在 `largeOutputNotice` 里说明。**必填不要自己推演**:OA 的联动(显示属性)规则不下发,一律按 `createRequest` 的 `missingFields` 补齐。
169
+ - **结果里出现 `resultFile` 时不要重跑命令**:`workflow.search`、`workflow.todoStat`、`workflow.createForm`、`workflow.editLoad` 等大输出 operation 会把完整数据落盘,并在结果**最前面**返回 `resultFile` 与 `largeOutputNotice`;`workflow.search` / `workflow.todoStat` 的 stdout 已保留可用内容,被省略的大字段(如查询的逐条明细、某工作流的 `formFields`、通知正文 `formFieldValues` 全文)再**按需提取**(只取要用的键,不要把整份读进上下文);两类都**不要重新执行 operation**。
170
+ - **`createForm` 大表单超线时只回一句话(必须先读文件)**:输出**超过 20,000 字符**(字符口径;量的就是**最终打出来的那段文本**,已压掉 `fields` / `historyRequestData` / `systemFields` 的缩进空白)时,stdout **只有** `resultFile` / `persistedResult` / `outputChars` / `largeOutputNotice`,其中 `largeOutputNotice` 就是那一句「当前表单内容较大,已临时写入文件 x,请直接读取 x 获取完整结果」——**`fields`(含 `initialValue`)、`contextId`、`historyRequestData` 一个都不在 stdout 里**,它们全在那个文件里(未裁剪的完整 pretty JSON)。所以大表单下**必须先按 `resultFile` 把该文件一次读完**,拿到字段清单与 `contextId` 之后再拼 `data`、走 `createRequest`;**不要重跑 `createForm`、不要只给小 `limit` 分段读、不要 `head`/`tail` 截断、不要用脚本去挖**(宿主若报单次读取超限,按报错提示调整 `limit`/`offset`)。字段少(未超线)时仍是**原样全量**的 JSON,直接用即可,不存在任何提示键(只是那三个键在 stdout 上压成了单行)。只有落盘不可用(极少见)时才返回全量并在 `largeOutputNotice` 里说明。**必填不要自己推演**:OA 的联动(显示属性)规则不下发,一律按 `createRequest` 的 `missingFields` 补齐。
171
+ - **`editLoad` 大表单超线时要读文件**(与 `createForm` 口径不同):超线时结果**只有** `resultFile` / `persistedResult` / `outputBytes` / `largeOutputNotice` 四个键,`currentValues`(当前字段值)/ `editableFields` / `contextId` 都只在文件里 ⇒ **这四样都拿到之后才能拼修改内容**,所以**照 `largeOutputNotice` 那条读命令把文件一次读完**(`limit` 已给足),再走下一步;同样**不要重跑本命令、不要分段读**。
180
172
  - **一次解析取全,不要把"判定"与"取 ID"拆成两次**:同一次输出里已有的信息应在同一步一并取出——例如 `countDetails[].requestInfos` 里 `requestId` 与同条目的标题、字段值就在一起,判定完可直接用该 `requestId` 构造 `planJson`,**不要为了拿 ID 再跑第二个脚本、也不要为此再发一次 `workflow.search`**。注意 `requestInfos` **不是每行都有**(接口只对配置了关注字段的工作流返回该字段,未带的行即没有,属正常、不是数据缺失):**没有 `requestInfos` 的行不参与逐条判定,也绝不为它去取 ID**——为一条明细另跑一次查询会白多整整一轮工具往返(实测 +10s 以上),而它本来在自己的分组里照常展示。
181
173
  - **用户对已展示结果的更正不重跑**:用户指出上一轮汇报里某条的性质/归属不对(如"重点关注里第一条其实是转发给我的,意见是请知悉")时,这是**呈现层的更正**、底层数据没变——**不要重跑那次 `workflow.search`(plan)**:在受影响分组的汇总摘要里标注一句用户提供的信息即可(口径见 `references/workflow-query.md`「渲染红线」)。**只有用户明确要求"重新出一份 / 挪到某组重出"时才重跑**,且复用上一轮那次的 `planJson`、只改受影响的分组。重跑一次 ≈ **1 轮 + 30~50s**,纯属浪费;用户表述是陈述句、看不出意图时,先问一句再动手。
182
174
 
@@ -187,16 +179,11 @@ cliHelp: "weaver-work-cli workflow --help"
187
179
 
188
180
  ## 写操作失败处理:`partial/write_uncertain` 决策树
189
181
 
190
- 当发起、操作、批量、共享、修改等写操作返回 `partial/write_uncertain`,或提示网络中断、部分成功、回查失败、回查字段不一致时,按下面规则处理:
182
+ 当发起、操作、批量、共享、修改等写操作返回 `partial/write_uncertain`,或提示网络中断、部分成功、回查失败、回查字段不一致时(停止条件与"不允许的做法"见共享规则 [`high-risk-write.md`](../weaver-e10-shared/references/high-risk-write.md),各 operation 的细则见对应 reference):
191
183
 
192
- 1. **先停止盲目重试**,不要连续重复提交相同 `.apply`
193
- 2. 优先从以下角度解释:
194
- - 写请求可能已经到达服务端,但连接在结果确认前中断
195
- - 服务端可能只处理了部分流程
196
- - 写接口已返回成功,但详情回查失败或与预期不一致
197
- - continuation、`context`、目标流程或登录上下文可能已经变化
198
- 3. 如需确认,只补 **一次** 只读查询(例如 `workflow.detail` 或 `workflow.search`),不要陷入 query/write 循环
199
- 4. 最终给用户明确结论、已知状态、成功/失败项和下一步人工确认建议,而不是继续无意义重试
184
+ 1. **先停止盲目重试**,不要连续重复提交相同 `.apply`;不要靠反复重跑 Prepare 来"试"。
185
+ 2. 如需确认,只补 **一次** 只读查询(例如 `workflow.detail` 或 `workflow.search`),不要陷入 query/write 循环。
186
+ 3. 最终给用户明确结论、已知状态、成功/失败项和下一步人工确认建议,而不是继续无意义重试。
200
187
 
201
188
  **特别注意:** 对退回、删除、批量提交和发起场景更要严格执行上述规则;这些场景最容易因重复提交造成重复审批、误删或重复发起。
202
189
 
@@ -204,16 +191,12 @@ cliHelp: "weaver-work-cli workflow --help"
204
191
 
205
192
  | 返回 | 含义 | 该怎么做 |
206
193
  | --- | --- | --- |
207
- | `ok:true` + `data.status = "ALREADY_APPLIED"` | 该句柄上一次**已经执行成功**,本次没有重复写入 | **当作成功汇报**(用 `previousResult` 的结果,需要定位时才带 `requestId`),不要重跑 Prepare、不要再 apply |
194
+ | `ok:true` + `data.status = "ALREADY_APPLIED"` | 该句柄上一次**已经执行成功**,本次没有重复写入 | **当作成功汇报**(用 `previousResult` 的结果,需要定位时才带 `requestId`),不要重跑 Prepare、不要再 apply;**对用户只报业务结果**,不要说"此前已执行过/没有重复写入" |
208
195
  | `partial/write_uncertain` | 上一次**已发出写入请求、结果未确认** | 先只读核对目标是否已生效;已生效按成功汇报,确认没生效才重跑 Prepare |
209
196
  | `validation/continuation_busy` | 句柄正被另一次执行占用,上一次**还没发出写入**(可安全重试) | **稍后原样重试同一条命令**,不要重跑 Prepare、不要换句柄 |
210
197
  | `validation/continuation_consumed` | 占用该句柄的执行停在**无法判定的旧状态**(旧版本标记) | 先只读核对目标是否已生效,再决定是否重跑 Prepare |
211
198
 
212
- > 不要只凭"命令报错"就认定"没做成":`ALREADY_APPLIED` 是成功,`busy` 可以直接重试;只有 `write_uncertain` 和 `consumed` 才需要先只读核对。**任何时候都不要靠反复重跑 Prepare 来"试"。**
213
-
214
- > **6 个批量单命令(`workflow.batchSubmit` / `batchRead` / `batchSupervise` / `batchShare` / `batchForward` / `batchReject`)没有句柄**:它们只会出现上表前两行——幂等保护由「同一操作 + 同一批 `requestId` + 同一组写向对象」的一次性写入闸门承担,**不会**出现 `continuation_busy` / `continuation_consumed`。`write_uncertain` 的恢复路径是「先只读核对 → 确认没生效 → 等约 1 分钟原样重跑同一条命令」,**不要去重跑并不存在的 Prepare**。
215
-
216
- > **`ALREADY_APPLIED` 对用户只报结果**:这是 CLI 内部的幂等保护(防止重试造成重复写入),不是用户关心的事件。给用户的回复**只写业务结果**(如"两条流程已提交/已置为已办"),**不要**写"系统回报此前已执行过""幂等回报""本次没有重复写入"这类话——那会让用户怀疑是不是提交了两遍。只有当 `previousResult` **不是成功态**、或需要解释"为什么这次没有再次写入"时才说明。
199
+ > 不要只凭"命令报错"就认定"没做成":`ALREADY_APPLIED` 是成功,`busy` 可以直接重试;只有 `write_uncertain` 和 `consumed` 才需要先只读核对。**6 个批量单命令(`workflow.batchSubmit` / `batchRead` / `batchSupervise` / `batchShare` / `batchForward` / `batchReject`)没有句柄**:只会有上表前两行——幂等保护由「同一操作 + 同一批 `requestId` + 同一组写向对象」的一次性写入闸门承担,**不会**出现 `continuation_busy` / `continuation_consumed`;`write_uncertain` 的恢复路径是「先只读核对 → 确认没生效 → 等约 1 分钟原样重跑同一条命令」,**不要去重跑并不存在的 Prepare**。
217
200
 
218
201
  Windows PowerShell:
219
202
 
@@ -221,8 +204,6 @@ Windows PowerShell:
221
204
  weaver-work-cli workflow schema
222
205
  weaver-work-cli --json workflow run workflow.search --input-json '{"category":"todo","pageSize":10}'
223
206
  weaver-work-cli --json workflow run workflow.todoStat --input-json '{"category":"todo"}'
224
- weaver-work-cli --json workflow run workflow.detail --input-json '{"requestId":"123456"}'
225
- weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"123456","action":"submit","opinion":"同意"}'
226
207
  weaver-work-cli --json workflow run workflow.operateApply --input-json '{"requestId":"123456","action":"submit","continuation":"wc-1a2b3c4d5e6f7a8b","confirm":true}'
227
208
  weaver-work-cli --json workflow run workflow.createForm --input-json '{"workflow":["费用报销"]}'
228
209
  weaver-work-cli --json workflow run workflow.createRequest --input-json '{"context":"wc-1a2b3c4d5e6f7a8b","data":{"main":{}},"action":"submit"}'
@@ -234,8 +215,6 @@ macOS/Linux(bash/zsh):
234
215
  weaver-work-cli workflow schema
235
216
  weaver-work-cli --json workflow run workflow.search --input-json '{"category":"todo","pageSize":10}'
236
217
  weaver-work-cli --json workflow run workflow.todoStat --input-json '{"category":"todo"}'
237
- weaver-work-cli --json workflow run workflow.detail --input-json '{"requestId":"123456"}'
238
- weaver-work-cli --json workflow run workflow.operatePrepare --input-json '{"requestId":"123456","action":"submit","opinion":"同意"}'
239
218
  weaver-work-cli --json workflow run workflow.operateApply --input-json '{"requestId":"123456","action":"submit","continuation":"wc-1a2b3c4d5e6f7a8b","confirm":true}'
240
219
  weaver-work-cli --json workflow run workflow.createForm --input-json '{"workflow":["费用报销"]}'
241
220
  weaver-work-cli --json workflow run workflow.createRequest --input-json '{"context":"wc-1a2b3c4d5e6f7a8b","data":{"main":{}},"action":"submit"}'