weaver-work-cli 0.1.23 → 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 (358) hide show
  1. package/README.md +33 -3
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +210 -17
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +117 -35
  6. package/dist/internal/e10/context.js +3 -3
  7. package/dist/internal/e10/request-runtime.js +46 -4
  8. package/dist/shortcuts/caizhilian/file-upload/metadata.js +124 -0
  9. package/dist/shortcuts/caizhilian/file-upload/multipart.js +47 -0
  10. package/dist/shortcuts/caizhilian/file-upload/protocol.js +116 -0
  11. package/dist/shortcuts/caizhilian/file-upload/receipt.js +37 -0
  12. package/dist/shortcuts/caizhilian/host.js +13 -5
  13. package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +72 -179
  14. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  15. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +701 -4
  16. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  17. package/dist/shortcuts/caizhilian/operations/registry.js +5 -1
  18. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  19. package/dist/shortcuts/caizhilian/operations/specs.js +67 -0
  20. package/dist/shortcuts/workflow/continuation.js +14 -9
  21. package/dist/shortcuts/workflow/endpoints.js +11 -1
  22. package/dist/shortcuts/workflow/index.js +55 -1
  23. package/dist/shortcuts/workflow/operations/flow-status.js +63 -0
  24. package/dist/shortcuts/workflow/operations/form.js +1822 -547
  25. package/dist/shortcuts/workflow/operations/read.js +414 -13
  26. package/dist/shortcuts/workflow/operations/shared.js +28 -0
  27. package/dist/shortcuts/workflow/operations/write.js +5 -5
  28. package/dist/shortcuts/workflow/operations.js +8 -6
  29. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  30. package/docs/caizhilian.md +12 -5
  31. package/docs/e10-auth.md +25 -3
  32. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  33. package/node_modules/@napi-rs/keyring/README.md +19 -0
  34. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  35. package/node_modules/@napi-rs/keyring/index.js +514 -0
  36. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  37. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  38. package/node_modules/@napi-rs/keyring/package.json +125 -0
  39. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  40. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  41. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  42. package/node_modules/commander/LICENSE +22 -0
  43. package/node_modules/commander/Readme.md +1149 -0
  44. package/node_modules/commander/esm.mjs +16 -0
  45. package/node_modules/commander/index.js +24 -0
  46. package/node_modules/commander/lib/argument.js +149 -0
  47. package/node_modules/commander/lib/command.js +2662 -0
  48. package/node_modules/commander/lib/error.js +39 -0
  49. package/node_modules/commander/lib/help.js +709 -0
  50. package/node_modules/commander/lib/option.js +367 -0
  51. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  52. package/node_modules/commander/package-support.json +16 -0
  53. package/node_modules/commander/package.json +82 -0
  54. package/node_modules/commander/typings/esm.d.mts +3 -0
  55. package/node_modules/commander/typings/index.d.ts +1045 -0
  56. package/package.json +5 -1
  57. package/skills/weaver-e10-builder/SKILL.md +281 -0
  58. package/skills/weaver-e10-builder/_catalog.md +94 -0
  59. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  60. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  61. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  62. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  121. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  122. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  123. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  124. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  125. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  126. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  127. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  128. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  129. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  130. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  131. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  132. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  133. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  134. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  135. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  136. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  137. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  138. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  139. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  140. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  153. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  154. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  155. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  156. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  157. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  158. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  159. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  160. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  161. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  162. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  163. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  164. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  165. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  166. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  167. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  168. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  169. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  170. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  171. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  185. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  186. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  187. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  188. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  189. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  190. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  191. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  192. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  193. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  194. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  195. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  196. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  197. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  198. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  199. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  200. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  201. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  202. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  203. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  204. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  205. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  206. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  207. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  208. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  209. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  210. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  211. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  212. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  213. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  214. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  215. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  216. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  217. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  218. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  219. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  220. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  221. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  222. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  223. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  224. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  225. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  226. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  227. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  228. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  229. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  230. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  231. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  232. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  233. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  234. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  235. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  236. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  237. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  238. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  239. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  240. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  241. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  242. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  243. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  244. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  245. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  246. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  247. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  248. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  249. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  250. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  251. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  252. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  253. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  254. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  255. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  256. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  257. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  258. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  259. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  260. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  261. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  262. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  263. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  264. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  265. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  266. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  267. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  268. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  269. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  270. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  271. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  272. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  273. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  274. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  275. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  276. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  277. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  278. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  279. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  280. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  281. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  282. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  283. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  284. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  285. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  286. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  287. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  288. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  289. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  290. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  291. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  292. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  293. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  294. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  295. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  296. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  297. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  298. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  299. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  300. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  301. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  302. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  303. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  304. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  305. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  306. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  307. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  308. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  309. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  310. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  311. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  312. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  313. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  314. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  315. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  316. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  317. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  318. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  319. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  320. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  321. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  322. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  323. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  324. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  325. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  326. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  327. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  328. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  329. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  330. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  331. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  332. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  333. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  334. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  335. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  336. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  337. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  338. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  339. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  340. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  341. package/skills/weaver-e10-caizhilian/SKILL.md +14 -4
  342. package/skills/weaver-e10-caizhilian/references/file-upload.md +100 -295
  343. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  344. package/skills/weaver-e10-caizhilian/references/folder.md +31 -3
  345. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  346. package/skills/weaver-e10-caizhilian/references/source-manifest.json +634 -25
  347. package/skills/weaver-e10-jiuchuanhui/SKILL.md +9 -1
  348. package/skills/weaver-e10-shared/SKILL.md +19 -5
  349. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +25 -5
  350. package/skills/weaver-e10-workflow/SKILL.md +28 -47
  351. package/skills/weaver-e10-workflow/references/source-manifest.json +46 -36
  352. package/skills/weaver-e10-workflow/references/workflow-batch.md +2 -4
  353. package/skills/weaver-e10-workflow/references/workflow-create.md +261 -86
  354. package/skills/weaver-e10-workflow/references/workflow-edit.md +2 -1
  355. package/skills/weaver-e10-workflow/references/workflow-memory.md +3 -6
  356. package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -1
  357. package/skills/weaver-e10-workflow/references/workflow-query.md +11 -9
  358. package/skills/weaver-e10-workflow/references/workflow-share.md +2 -0
@@ -110,9 +110,13 @@ export function createCaizhilianHost(ctx, dependencies = {}) {
110
110
  });
111
111
  }
112
112
  async function doRequest(request, binary) {
113
- const { method, path, query, body, operation, form, multipart, headers: extraHeaders = {}, timeoutMs = CAIZHILAN_TIMEOUT_MS, } = request;
113
+ const { method, path, query, body, operation, form, multipart, streamMultipart, maxResponseBytes, headers: extraHeaders = {}, timeoutMs = CAIZHILAN_TIMEOUT_MS, } = request;
114
114
  assertCaizhilianPath(path);
115
- const resolvedMethod = method || (body === undefined && form === undefined && multipart === undefined ? 'GET' : 'POST');
115
+ const resolvedMethod = method || (body === undefined && form === undefined && multipart === undefined
116
+ && streamMultipart === undefined ? 'GET' : 'POST');
117
+ const headers = { 'X-Requested-With': 'XMLHttpRequest', ...extraHeaders, ...(streamMultipart ? {
118
+ 'Content-Type': streamMultipart.contentType, 'Content-Length': String(streamMultipart.contentLength),
119
+ } : {}) };
116
120
  const rt = await runtime();
117
121
  const response = binary
118
122
  ? await rt.requestBinary({
@@ -124,7 +128,9 @@ export function createCaizhilianHost(ctx, dependencies = {}) {
124
128
  body: multipart === undefined ? body : undefined,
125
129
  form: multipart === undefined && form === undefined ? undefined : formBody(form ?? {}),
126
130
  formData: multipart,
127
- headers: { 'X-Requested-With': 'XMLHttpRequest', ...extraHeaders },
131
+ streamBody: streamMultipart?.body,
132
+ maxResponseBytes,
133
+ headers,
128
134
  timeoutMs,
129
135
  })
130
136
  : await rt.requestJson({
@@ -136,7 +142,9 @@ export function createCaizhilianHost(ctx, dependencies = {}) {
136
142
  body: multipart === undefined ? body : undefined,
137
143
  form: multipart === undefined && form === undefined ? undefined : formBody(form ?? {}),
138
144
  formData: multipart,
139
- headers: { 'X-Requested-With': 'XMLHttpRequest', ...extraHeaders },
145
+ streamBody: streamMultipart?.body,
146
+ maxResponseBytes,
147
+ headers,
140
148
  timeoutMs,
141
149
  });
142
150
  return response;
@@ -156,7 +164,7 @@ export function createCaizhilianHost(ctx, dependencies = {}) {
156
164
  }
157
165
  throw caizhilianNetworkError('protocol', `接口返回不是合法 JSON(HTTP ${response.status})`, { retryable: false });
158
166
  }
159
- if (response.status < 200 || response.status >= 300) {
167
+ if (response.status < 200 || response.status >= 300 || (request.requireHttp200 && response.status !== 200)) {
160
168
  throw new CaizhilianCliError('api', 'http_error', `采知连接口 HTTP ${response.status}`, {
161
169
  code: response.status,
162
170
  details: { status: response.status, message: caizhilianBusinessMessage(response.value) },
@@ -1,192 +1,85 @@
1
- /**
2
- * caizhilian.file-upload — 文件上传(本地文件上传到文件服务)
3
- *
4
- * 覆盖本地文件上传到 E10 文件服务的完整流程:
5
- * - contract: 获取上传接口合约
6
- * - prepare: 本地文件校验与元数据准备
7
- * - upload: 上传文件并获取 fileId
8
- *
9
- * 接口:
10
- * - 预检查:POST /api/file/preUploadCheck?sf_request_type=ajax
11
- * - 上传:POST /api/file/module/upload?sf_request_type=ajax
12
- */
13
- import { CaizhilianCliError, caizhilianValidationError } from '../../errors.js';
14
- import { caizhilianSuccess } from '../types.js';
15
- import { requireNonEmpty } from '../shared.js';
16
- import { createHash } from 'node:crypto';
17
- import { readFileSync, statSync } from 'node:fs';
18
- import { basename, extname } from 'node:path';
19
- const ACTION = 'caizhilian.file-upload';
20
- // ── 接口路径 ──────────────────────────────────────────────
21
- const PRE_UPLOAD_CHECK_PATH = '/api/file/preUploadCheck?sf_request_type=ajax';
22
- const UPLOAD_PATH = '/api/file/module/upload?sf_request_type=ajax';
23
- // ── 辅助函数 ──────────────────────────────────────────────
24
- function asRecord(value) {
25
- return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
1
+ /** Weaver file upload integrated with the existing CLI confirmation and authentication boundary. */
2
+ import { caizhilianConfirmationError, caizhilianValidationError } from '../../errors.js';
3
+ import { inspectUploadFile, readUploadContext, RESERVED_CONTEXT_FIELDS, uploadChatId, uploadModule, uploadTimeout } from '../../file-upload/metadata.js';
4
+ import { uploadToFileService } from '../../file-upload/protocol.js';
5
+ import { writeUploadReceipt } from '../../file-upload/receipt.js';
6
+ import { issueWriteLease } from '../confirm.js';
7
+ import { caizhilianPrepared, caizhilianSuccess } from '../types.js';
8
+ const PREFIX = 'caizhilian.file-upload';
9
+ const COMMAND = 'weaver-work-cli --json caizhilian run';
10
+ const CONTEXT_PURPOSES = {
11
+ source: '上传来源场景', fieldId: '附件字段或控件 ID', sourceRefId: '来源业务对象引用 ID',
12
+ authModule: '服务端权限校验模块', customParam: '模块扩展参数', refId: '最终关联对象 ID',
13
+ commonText: '通用场景参数', folderId: '目标文件夹 ID',
14
+ };
15
+ async function getContract() {
16
+ return caizhilianSuccess(`${PREFIX}.contract`, { contract: {
17
+ version: 'agent_callable_interface_contract.v1', authentication: 'weaver-work-cli', automatic_fallback: false,
18
+ upload_strategies: ['second', 'common', 'chunk'],
19
+ actions: ['contract', 'prepare', 'upload.prepare', 'upload.apply'],
20
+ canonical_commands: ['contract', 'prepare', 'upload.prepare', 'upload.apply'].map((name) => `${COMMAND} ${PREFIX}.${name}${name === 'contract' ? '' : ' --input-json <businessInputJson>'}`
21
+ + (name === 'upload.apply' ? ' --continuation <token> --yes' : '')),
22
+ required: { prepare: ['file_path', 'module'], 'upload.prepare': ['file_path', 'module', 'user_confirmed'],
23
+ 'upload.apply': ['file_path', 'module', 'user_confirmed', 'continuation', 'confirm'] },
24
+ optional: { prepare: ['context_file', 'chat_id', 'timeout_seconds'],
25
+ 'upload.prepare': ['context_file', 'chat_id', 'timeout_seconds'],
26
+ 'upload.apply': ['context_file', 'chat_id', 'timeout_seconds'] },
27
+ user_input_guide: { required: [
28
+ { name: 'file_path', purpose: '需要上传的本地普通文件绝对路径,直接复用宿主附件路径' },
29
+ { name: 'module', purpose: '真实业务模块;不得猜测或使用默认模块' },
30
+ ], conditionally_required: [], optional: [
31
+ { name: 'context_file', purpose: '可选业务上下文 JSON 文件绝对路径,最多 64 KiB' },
32
+ { name: 'chat_id', purpose: '隔离对话回执;默认 cli,由宿主注入' },
33
+ { name: 'timeout_seconds', purpose: '上传请求及响应读取超时(1–3600 秒,默认 300)' },
34
+ ...Object.entries(CONTEXT_PURPOSES).map(([name, purpose]) => ({ name: `context_file.${name}`, purpose })),
35
+ ] }, reserved_context_fields: RESERVED_CONTEXT_FIELDS,
36
+ success_evidence: ['business_verified', 'file.file_id', 'receipt_ref', 'receipt_sha256'],
37
+ login: '登录由 weaver-work-cli auth 托管,本模块不读取其他 Skill 登录态或启动独立浏览器',
38
+ } });
26
39
  }
27
- function isPlainObject(value) {
28
- return typeof value === 'object' && value !== null && !Array.isArray(value);
40
+ function requireUploadAuthorization(args) {
41
+ if (args.user_confirmed !== true) {
42
+ throw caizhilianConfirmationError(`${PREFIX}.upload`, { hint: '上传必须来自当前用户明确授权,并传 user_confirmed=true' });
43
+ }
29
44
  }
30
- function md5File(filePath) {
31
- const content = readFileSync(filePath);
32
- return createHash('md5').update(content).digest('hex');
45
+ async function inspect(args) {
46
+ const module = uploadModule(args.module);
47
+ const chatId = uploadChatId(args.chat_id);
48
+ const timeoutMs = uploadTimeout(args.timeout_seconds);
49
+ const context = await readUploadContext(args.context_file);
50
+ const file = await inspectUploadFile(args.file_path);
51
+ return { file, context, module, chatId, timeoutMs };
33
52
  }
34
- function sha256File(filePath) {
35
- const content = readFileSync(filePath);
36
- return createHash('sha256').update(content).digest('hex');
53
+ function metadataPreview(prepared) {
54
+ const { file, context, module, chatId } = prepared;
55
+ return { file_path: file.path, file_name: file.name, ext: file.extension, size: file.size,
56
+ md5: file.md5, sha256: file.sha256, module, chat_id: chatId, context_keys: context.keys,
57
+ context_sha256: context.sha256 };
37
58
  }
38
- // ── 获取上传合约 ──────────────────────────────────────────
39
- async function getContract(args, env) {
40
- return caizhilianSuccess(ACTION, {
41
- contract: {
42
- version: 'agent_callable_interface_contract.v1',
43
- actions: ['contract', 'prepare', 'upload'],
44
- required: {
45
- prepare: ['file_path', 'module'],
46
- upload: ['file_path', 'module', 'user_confirmed'],
47
- },
48
- optional: {
49
- prepare: ['context_file'],
50
- upload: ['context_file', 'login_mode'],
51
- },
52
- },
53
- });
59
+ async function prepareLocal(args) {
60
+ return caizhilianSuccess(`${PREFIX}.prepare`, metadataPreview(await inspect(args)));
54
61
  }
55
- // ── 准备上传(prepare/apply)──────────────────────────────────────
56
62
  async function prepareUpload(args, env) {
57
- const filePath = requireNonEmpty(args.file_path, 'file_path');
58
- const module = requireNonEmpty(args.module, 'module');
59
- // 校验文件存在
60
- let stat;
61
- try {
62
- stat = statSync(filePath);
63
- }
64
- catch (error) {
65
- throw caizhilianValidationError('file_not_found', `文件不存在: ${filePath}`);
66
- }
67
- if (!stat.isFile()) {
68
- throw caizhilianValidationError('file_not_regular', `不是普通文件: ${filePath}`);
69
- }
70
- // 计算元数据
71
- const fileName = basename(filePath);
72
- const ext = extname(filePath).slice(1).toLowerCase();
73
- const size = stat.size;
74
- const md5 = md5File(filePath);
75
- const sha256 = sha256File(filePath);
76
- // 签发 continuation
77
- const continuation = await env.continuation.issue({
78
- operation: 'caizhilian.file-upload.upload.apply',
79
- filePath,
80
- module,
81
- fileName,
82
- ext,
83
- size,
84
- md5,
85
- sha256,
86
- });
87
- return caizhilianSuccess('caizhilian.file-upload.prepare', {
88
- file_path: filePath,
89
- file_name: fileName,
90
- ext,
91
- size,
92
- md5,
93
- sha256,
94
- module,
95
- continuation,
96
- });
63
+ const prepared = await inspect(args);
64
+ const lease = await issueWriteLease(env, `${PREFIX}.upload.apply`, args, { file_path: prepared.file.path,
65
+ module: prepared.module, file: prepared.file, context_sha256: prepared.context.sha256 });
66
+ return caizhilianPrepared(`${PREFIX}.upload.prepare`, metadataPreview(prepared), lease);
97
67
  }
98
68
  async function uploadApply(args, env, lease) {
99
- const filePath = lease.payload?.filePath;
100
- const module = lease.payload?.module;
101
- const fileName = lease.payload?.fileName;
102
- const ext = lease.payload?.ext;
103
- const size = lease.payload?.size;
104
- const md5 = lease.payload?.md5;
105
- const sha256 = lease.payload?.sha256;
106
- // 预检查
107
- const preCheckResponse = await env.host.request({
108
- method: 'POST',
109
- path: PRE_UPLOAD_CHECK_PATH,
110
- body: {
111
- fileName,
112
- fileSize: size,
113
- module,
114
- md5,
115
- },
116
- operation: 'caizhilian.file-upload.upload.apply',
117
- });
118
- const preCheckData = asRecord(preCheckResponse);
119
- if (!preCheckData.status && !preCheckData.success) {
120
- throw new CaizhilianCliError('api', 'business_error', String(preCheckData.msg || preCheckData.message || '预检查失败'), {
121
- code: preCheckData.code ?? preCheckData.status,
122
- details: { action: 'caizhilian.file-upload.upload.apply', message: String(preCheckData.msg || preCheckData.message || '预检查失败') },
123
- exitCode: 1,
124
- });
125
- }
126
- const preCheckResult = asRecord(preCheckData.data);
127
- // 判断上传策略
128
- const uploadType = preCheckResult.uploadType || 'common';
129
- const preUploadId = preCheckResult.preUploadId;
130
- // 如果是 second 策略,直接返回已有 file ID
131
- if (uploadType === 'second') {
132
- const fileId = preCheckResult.fileId || preCheckResult.fileid || preCheckResult.uploadModuleDto?.fileObj?.fileId;
133
- if (!fileId) {
134
- throw new CaizhilianCliError('api', 'business_error', 'second 策略未返回 file ID', {
135
- details: { action: 'caizhilian.file-upload.upload.apply' },
136
- exitCode: 1,
137
- });
138
- }
139
- return caizhilianSuccess('caizhilian.file-upload.upload.apply', {
140
- file_id: String(fileId),
141
- file_name: fileName,
142
- size,
143
- ext,
144
- upload_type: uploadType,
145
- });
146
- }
147
- // common/chunk 策略:上传文件
148
- const fileContent = readFileSync(filePath);
149
- const formData = new FormData();
150
- formData.append('file', new Blob([fileContent]), fileName);
151
- formData.append('preUploadId', preUploadId || '');
152
- formData.append('module', module);
153
- const uploadResponse = await env.host.request({
154
- method: 'POST',
155
- path: UPLOAD_PATH,
156
- body: formData,
157
- operation: 'caizhilian.file-upload.upload.apply',
158
- });
159
- const uploadData = asRecord(uploadResponse);
160
- if (!uploadData.status && !uploadData.success) {
161
- throw new CaizhilianCliError('api', 'business_error', String(uploadData.msg || uploadData.message || '上传失败'), {
162
- code: uploadData.code ?? uploadData.status,
163
- details: { action: 'caizhilian.file-upload.upload.apply', message: String(uploadData.msg || uploadData.message || '上传失败') },
164
- exitCode: 1,
165
- });
69
+ const prepared = await inspect(args);
70
+ if (prepared.file.sha256 !== lease.file?.sha256 || prepared.file.size !== lease.file?.size) {
71
+ throw caizhilianValidationError('file_changed', '文件与已确认内容不一致,请重新准备上传');
166
72
  }
167
- const uploadResult = asRecord(uploadData.data);
168
- const fileId = uploadResult.fileId || uploadResult.fileid || '';
169
- if (!fileId) {
170
- throw new CaizhilianCliError('api', 'business_error', '上传未返回 file ID', {
171
- details: { action: 'caizhilian.file-upload.upload.apply' },
172
- exitCode: 1,
173
- });
73
+ if (prepared.context.sha256 !== lease.context_sha256) {
74
+ throw caizhilianValidationError('context_changed', '业务上下文与已确认内容不一致,请重新准备上传');
174
75
  }
175
- return caizhilianSuccess('caizhilian.file-upload.upload.apply', {
176
- file_id: String(fileId),
177
- file_name: fileName,
178
- size,
179
- ext,
180
- upload_type: uploadType,
181
- });
76
+ const verified = await uploadToFileService(env.host, prepared.file, prepared.module, prepared.context, prepared.timeoutMs);
77
+ const result = await writeUploadReceipt(env, prepared.chatId, prepared.module, prepared.file, prepared.context, verified);
78
+ return caizhilianSuccess(`${PREFIX}.upload.apply`, result);
182
79
  }
183
- // ── 处理器汇总 ────────────────────────────────────────────
184
80
  export const caizhilianFileUploadHandlers = {
185
- 'caizhilian.file-upload.contract': { execute: getContract },
186
- 'caizhilian.file-upload.prepare': { execute: prepareUpload },
187
- 'caizhilian.file-upload.upload': {
188
- prepare: prepareUpload,
189
- apply: uploadApply,
190
- targetKeys: ['file_path', 'module'],
191
- },
81
+ [`${PREFIX}.contract`]: { execute: getContract },
82
+ [`${PREFIX}.prepare`]: { execute: prepareLocal },
83
+ [`${PREFIX}.upload`]: { validateInput: requireUploadAuthorization, prepare: prepareUpload,
84
+ apply: uploadApply, targetKeys: ['file_path', 'module'] },
192
85
  };
@@ -3,7 +3,7 @@ import { caizhilianValidationError } from '../../errors.js';
3
3
  import { updateDocBasicField } from '../api.js';
4
4
  import { issueWriteLease } from '../confirm.js';
5
5
  import { IMAGE_ALLOWED_EXT, assertAllowedExt, assertFileUnchanged, downloadAttachment, readFileMetadata, resolveSavePathArg, uploadFileToServer, } from '../files.js';
6
- import { fingerprint, isPlainObject, pyBool, timestampToDateStr, validateRequiredParams } from '../shared.js';
6
+ import { fingerprint, formatVersionTimestamp, isPlainObject, pyBool, timestampToDateStr, validateRequiredParams, } from '../shared.js';
7
7
  import { caizhilianPrepared, caizhilianSuccess } from '../types.js';
8
8
  /**
9
9
  * 文件域操作(1:1 对应源 scripts/document_plugins.py 的附件/封面部分
@@ -32,6 +32,8 @@ const QUERY_FILE_OBJECTS_PATH = '/api/file/queryFileObjects';
32
32
  const COMPARE_SUBMIT_PATH = '/api/docCompare/uploadCompared';
33
33
  const TO_PDF_CHECK_PATH = '/api/file/download/toPdf';
34
34
  const DOC_UPDATE_PATH = '/api/doc/document/update';
35
+ /** 源 filePreview 页「附件历史版本」抽屉接口(抓包 findVersionList)。 */
36
+ const FIND_VERSION_LIST_PATH = '/api/file/base/upload/findVersionList';
35
37
  /** 源 doc_compare_plugins._COMPARE_OPTIONS:13 个比对选项全部固定为 0(键序与源一致)。 */
36
38
  const COMPARE_OPTIONS = {
37
39
  ignoreImages: 0,
@@ -50,6 +52,7 @@ const COMPARE_OPTIONS = {
50
52
  };
51
53
  const ATTACHMENT_UPLOAD_APPLY = 'caizhilian.attachment.upload.apply';
52
54
  const ATTACHMENT_REPLACE_APPLY = 'caizhilian.attachment.replace.apply';
55
+ const ATTACHMENT_VERSIONS_ACTION = 'caizhilian.attachment.list-versions';
53
56
  const COVER_UPLOAD_APPLY = 'caizhilian.cover.upload.apply';
54
57
  const COVER_SET_APPLY = 'caizhilian.cover.set.apply';
55
58
  const COVER_REMOVE_APPLY = 'caizhilian.cover.remove.apply';
@@ -455,6 +458,68 @@ async function listFileObjectsHandler(args, env) {
455
458
  }
456
459
  return caizhilianSuccess(LIST_FILE_OBJECTS_ACTION, { attachments }, { doc_id: docId });
457
460
  }
461
+ // ── caizhilian.attachment.list-versions ───────────────────
462
+ /** 源 filePreview 页「附件历史版本」抽屉请求体(抓包 findVersionList,逐字段一致)。 */
463
+ function buildFindVersionListBody(attachmentId, docId, pageNo, pageSize) {
464
+ return {
465
+ pageNo,
466
+ pageSize,
467
+ id: attachmentId,
468
+ docId,
469
+ startTime: '',
470
+ endTime: '',
471
+ userIds: '',
472
+ pauuid: randomUUID().replace(/-/gu, ''),
473
+ endType: process.platform === 'win32' ? 'Windows' : process.platform === 'darwin' ? 'Mac' : '',
474
+ module: 'document',
475
+ maxUploadSize: '10000',
476
+ mobile: false,
477
+ enterprisePan: false,
478
+ customParam: FROM_PC_DOC_PARAM,
479
+ authModule: 'document',
480
+ notLoggedIn: false,
481
+ autoSelect: false,
482
+ coordinateFlag: false,
483
+ deepClean: false,
484
+ publicFileHost: '',
485
+ tempFileType: '1',
486
+ create: false,
487
+ batchCollaboration: false,
488
+ fileId: attachmentId,
489
+ imgType: 'imgPlug',
490
+ };
491
+ }
492
+ async function listAttachmentVersionsHandler(args, env) {
493
+ const action = ATTACHMENT_VERSIONS_ACTION;
494
+ validateRequiredParams(args, ['attachment_id']);
495
+ const attachmentId = pyArgStripped(args, 'attachment_id');
496
+ const docId = pyArgStripped(args, 'doc_id');
497
+ const pageNo = Number(args.page_no ?? 1);
498
+ const pageSize = Number(args.page_size ?? 10);
499
+ const response = await env.host.request({
500
+ method: 'POST',
501
+ path: FIND_VERSION_LIST_PATH,
502
+ body: buildFindVersionListBody(attachmentId, docId, pageNo, pageSize),
503
+ operation: action,
504
+ });
505
+ const rawPage = nestedValue(response, 'data', 'page');
506
+ const rawList = Array.isArray(nestedValue(rawPage, 'result')) ? nestedValue(rawPage, 'result') : [];
507
+ const hasNext = pyBool(nestedValue(rawPage, 'hasNext'));
508
+ const versions = [];
509
+ for (const item of rawList) {
510
+ if (!isPlainObject(item))
511
+ continue;
512
+ versions.push({
513
+ id: item.id ?? null,
514
+ name: item.name ?? null,
515
+ versionNumber: item.versionNumber ?? null,
516
+ updateTime: formatVersionTimestamp(item.updateTime),
517
+ describe: item.describe ?? null,
518
+ extName: item.extName ?? null,
519
+ });
520
+ }
521
+ return caizhilianSuccess(action, { versions, has_next: hasNext }, { attachment_id: attachmentId, doc_id: docId });
522
+ }
458
523
  // ── caizhilian.compare.upload-file ────────────────────────
459
524
  /** 源 DocCompareUploadFilePlugin.execute 的入参解析。 */
460
525
  async function planCompareUpload(args) {
@@ -561,6 +626,7 @@ export const caizhilianFileopsHandlers = {
561
626
  'caizhilian.attachment.replace': attachmentReplaceHandler,
562
627
  'caizhilian.attachment.download': { execute: downloadAttachmentHandler },
563
628
  'caizhilian.attachment.download-as-pdf': { execute: downloadAsPdfHandler },
629
+ 'caizhilian.attachment.list-versions': { execute: listAttachmentVersionsHandler },
564
630
  'caizhilian.cover.upload': coverUploadHandler,
565
631
  'caizhilian.cover.set': coverSetHandler,
566
632
  'caizhilian.cover.remove': coverRemoveHandler,