weaver-work-cli 0.1.24 → 0.1.26

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 (401) hide show
  1. package/README.md +30 -21
  2. package/dist/cmd/root.js +1 -0
  3. package/dist/core/output.js +53 -1
  4. package/dist/core/runtime-agent.js +19 -0
  5. package/dist/internal/e10/auth/commands.js +58 -23
  6. package/dist/internal/e10/auth/crypto.js +52 -12
  7. package/dist/internal/e10/auth/xiaoe.js +145 -53
  8. package/dist/internal/e10/context.js +5 -27
  9. package/dist/shortcuts/archive-oa/constants.js +66 -0
  10. package/dist/shortcuts/archive-oa/continuation.js +70 -0
  11. package/dist/shortcuts/archive-oa/errors.js +53 -0
  12. package/dist/shortcuts/archive-oa/host.js +157 -0
  13. package/dist/shortcuts/archive-oa/index.js +225 -0
  14. package/dist/shortcuts/archive-oa/manifest.js +62 -0
  15. package/dist/shortcuts/archive-oa/operations/borrow-car.js +159 -0
  16. package/dist/shortcuts/archive-oa/operations/borrow-url.js +108 -0
  17. package/dist/shortcuts/archive-oa/operations/confirm.js +48 -0
  18. package/dist/shortcuts/archive-oa/operations/contract.js +120 -0
  19. package/dist/shortcuts/archive-oa/operations/locate.js +50 -0
  20. package/dist/shortcuts/archive-oa/operations/registry.js +40 -0
  21. package/dist/shortcuts/archive-oa/operations/shared.js +181 -0
  22. package/dist/shortcuts/archive-oa/operations/types.js +45 -0
  23. package/dist/shortcuts/archive-oa/operations.js +13 -0
  24. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  25. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  26. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  27. package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
  28. package/dist/shortcuts/index.js +2 -0
  29. package/dist/shortcuts/invoice/host.js +2 -1
  30. package/dist/shortcuts/invoice/manifest.js +111 -0
  31. package/dist/shortcuts/invoice/operations/issuing-qys.js +361 -0
  32. package/dist/shortcuts/invoice/operations/issuing.js +5 -5
  33. package/dist/shortcuts/invoice/operations/registry.js +4 -0
  34. package/dist/shortcuts/workflow/endpoints.js +11 -0
  35. package/dist/shortcuts/workflow/host.js +2 -2
  36. package/dist/shortcuts/workflow/index.js +25 -1
  37. package/dist/shortcuts/workflow/operations/chatscene.js +270 -0
  38. package/dist/shortcuts/workflow/operations/form.js +2128 -244
  39. package/dist/shortcuts/workflow/operations/read.js +186 -41
  40. package/dist/shortcuts/workflow/operations/shared.js +25 -0
  41. package/dist/shortcuts/workflow/operations/sign-input.js +106 -0
  42. package/dist/shortcuts/workflow/operations/write.js +9 -1
  43. package/dist/shortcuts/workflow/stdout-compact.js +41 -0
  44. package/docs/archive-oa.md +79 -0
  45. package/docs/caizhilian.md +4 -3
  46. package/docs/e10-auth.md +13 -5
  47. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  48. package/node_modules/@napi-rs/keyring/README.md +19 -0
  49. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  50. package/node_modules/@napi-rs/keyring/index.js +514 -0
  51. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  52. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  53. package/node_modules/@napi-rs/keyring/package.json +125 -0
  54. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  55. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  56. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  57. package/node_modules/commander/LICENSE +22 -0
  58. package/node_modules/commander/Readme.md +1149 -0
  59. package/node_modules/commander/esm.mjs +16 -0
  60. package/node_modules/commander/index.js +24 -0
  61. package/node_modules/commander/lib/argument.js +149 -0
  62. package/node_modules/commander/lib/command.js +2662 -0
  63. package/node_modules/commander/lib/error.js +39 -0
  64. package/node_modules/commander/lib/help.js +709 -0
  65. package/node_modules/commander/lib/option.js +367 -0
  66. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  67. package/node_modules/commander/package-support.json +16 -0
  68. package/node_modules/commander/package.json +82 -0
  69. package/node_modules/commander/typings/esm.d.mts +3 -0
  70. package/node_modules/commander/typings/index.d.ts +1045 -0
  71. package/package.json +5 -1
  72. package/skill-template/business-info.json +16 -0
  73. package/skill-template/domains/archive-oa.md +19 -0
  74. package/skill-template/domains/yepiaotong.md +2 -2
  75. package/skills/weaver-e10-archive-oa/SKILL.md +159 -0
  76. package/skills/weaver-e10-archive-oa/references/archive-locate.md +49 -0
  77. package/skills/weaver-e10-archive-oa/references/borrow-car.md +76 -0
  78. package/skills/weaver-e10-archive-oa/references/borrow-flow.md +53 -0
  79. package/skills/weaver-e10-archive-oa/references/contract-search.md +63 -0
  80. package/skills/weaver-e10-archive-oa/references/disabled-capabilities.md +29 -0
  81. package/skills/weaver-e10-archive-oa/references/qys-contract-search.md +47 -0
  82. package/skills/weaver-e10-archive-oa/references/source-manifest.json +400 -0
  83. package/skills/weaver-e10-builder/SKILL.md +303 -0
  84. package/skills/weaver-e10-builder/_catalog.md +94 -0
  85. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  86. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  87. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  88. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  120. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  121. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  122. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  123. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  124. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  125. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  126. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  127. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  128. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  129. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  130. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  131. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  132. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  133. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  134. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  135. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  136. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  137. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  138. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  139. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  140. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  141. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  142. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  143. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  144. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  145. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  146. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  147. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  148. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  149. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  150. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  151. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  152. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  153. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  154. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  155. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  156. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  157. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  158. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  159. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  160. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  161. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  162. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  163. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  164. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  165. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  166. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  167. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  168. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  169. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  170. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  171. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  172. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  173. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  174. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  175. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  176. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  177. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  178. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  179. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  180. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  181. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  182. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  183. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  184. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  185. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  186. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  187. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  188. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  189. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  190. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  191. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  192. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  193. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  194. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  195. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  196. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  197. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  198. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  199. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  200. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  201. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  202. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  203. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  204. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  205. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  206. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  207. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  208. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  209. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  210. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  211. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  212. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  213. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  214. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  215. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  216. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  217. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  218. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  219. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  220. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  221. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  222. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  223. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  224. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  225. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  226. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  227. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  228. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  229. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  230. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  231. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  232. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  233. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  234. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  235. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  236. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  237. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  238. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  239. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  240. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  241. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  242. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  243. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  244. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  245. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  246. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  247. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  248. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  249. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  250. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  251. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  252. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  253. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  254. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  255. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  256. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  257. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  258. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  259. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  260. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  261. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  262. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  263. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  264. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  265. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  266. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  267. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  268. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  269. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  270. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  271. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  272. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  273. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  274. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  275. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  276. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  277. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  278. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  279. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  280. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  281. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  282. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  283. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  284. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  285. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  286. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  287. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  288. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  289. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  290. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  291. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  292. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  293. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  294. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  295. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  296. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  297. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  298. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  299. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  300. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  301. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  302. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  303. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  304. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  305. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  306. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  307. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  308. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  309. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  310. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  311. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  312. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  313. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  314. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  315. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  316. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  317. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  318. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  319. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  320. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  321. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  322. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  323. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  324. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  325. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  326. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  327. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  328. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  329. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  330. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  331. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  332. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  333. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  334. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  335. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  336. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  337. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  338. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  339. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  340. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  341. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  342. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  343. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  344. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  345. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  346. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  347. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  348. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  349. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  350. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  351. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  352. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  353. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  354. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  355. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  356. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  357. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  358. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  359. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  360. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  361. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  362. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  363. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  364. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  365. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  366. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  367. package/skills/weaver-e10-caizhilian/SKILL.md +43 -16
  368. package/skills/weaver-e10-caizhilian/references/agent-entry.md +7 -3
  369. package/skills/weaver-e10-caizhilian/references/collaboration.md +5 -3
  370. package/skills/weaver-e10-caizhilian/references/document.md +33 -11
  371. package/skills/weaver-e10-caizhilian/references/file-collection.md +4 -3
  372. package/skills/weaver-e10-caizhilian/references/file-upload.md +2 -3
  373. package/skills/weaver-e10-caizhilian/references/files.md +23 -2
  374. package/skills/weaver-e10-caizhilian/references/folder.md +48 -16
  375. package/skills/weaver-e10-caizhilian/references/setting-attach.md +61 -42
  376. package/skills/weaver-e10-caizhilian/references/setting-backup.md +13 -51
  377. package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +20 -51
  378. package/skills/weaver-e10-caizhilian/references/setting-storage.md +82 -147
  379. package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
  380. package/skills/weaver-e10-caizhilian/references/withheld.md +20 -44
  381. package/skills/weaver-e10-shared/SKILL.md +24 -18
  382. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +16 -15
  383. package/skills/weaver-e10-shared/references/non-interactive-environment.md +10 -10
  384. package/skills/weaver-e10-workflow/SKILL.md +23 -44
  385. package/skills/weaver-e10-workflow/references/source-manifest.json +40 -25
  386. package/skills/weaver-e10-workflow/references/workflow-create.md +278 -85
  387. package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
  388. package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
  389. package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
  390. package/skills/weaver-e10-yepiaotong/SKILL.md +10 -7
  391. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +49 -1
  392. package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +66 -0
  393. package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +59 -36
  394. package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +54 -509
  395. package/skills/weaver-e10-yepiaotong/references/reim-examples.md +182 -345
  396. package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +4 -5
  397. package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +153 -345
  398. package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +5 -5
  399. package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +182 -154
  400. package/skills/weaver-e10-yepiaotong/references/source-manifest.json +96 -0
  401. package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +0 -119
@@ -0,0 +1,157 @@
1
+ import { requireE10Session } from '../../internal/e10/context.js';
2
+ import { getActiveProfile } from '../../internal/e10/auth/session.js';
3
+ import { E10ApiError, createE10RequestRuntime } from '../../internal/e10/request-runtime.js';
4
+ import { ArchiveOaCliError, archiveOaAuthError, archiveOaNetworkError, archiveOaValidationError, } from './errors.js';
5
+ /** 本模块允许调用的路径前缀:ebuilder 业务接口与 OpenESB 开放服务。 */
6
+ const ALLOWED_PATH_PREFIXES = ['/api/', '/openserver/'];
7
+ function inferProfile(ctx) {
8
+ const options = ctx.getGlobalOptions();
9
+ return options.profile || getActiveProfile();
10
+ }
11
+ /**
12
+ * 业务成功判定。
13
+ * - ebuilder 列表/ESB 接口:`{ code: 200, status: true }`
14
+ * - ebuilder 自定义接口(getFormDataList):`{ datajson: { status: true } }`
15
+ * - OpenESB:`{ errcode: "0" }`
16
+ */
17
+ export function isArchiveOaBusinessSuccess(value) {
18
+ if (!value || typeof value !== 'object')
19
+ return false;
20
+ if (value.errcode !== undefined && value.errcode !== null)
21
+ return String(value.errcode) === '0';
22
+ if (typeof value.status === 'boolean')
23
+ return value.status;
24
+ if (typeof value.success === 'boolean')
25
+ return value.success;
26
+ if (value.datajson && typeof value.datajson === 'object' && typeof value.datajson.status === 'boolean') {
27
+ return value.datajson.status;
28
+ }
29
+ if (value.code !== undefined && value.code !== null)
30
+ return Number(value.code) === 200;
31
+ return false;
32
+ }
33
+ export function archiveOaBusinessMessage(value) {
34
+ if (!value || typeof value !== 'object')
35
+ return 'OA 档案接口返回业务失败';
36
+ const candidates = [
37
+ value.errmsg,
38
+ value.msg,
39
+ value.message,
40
+ value.errMsg,
41
+ value.data?.msg,
42
+ value.data?.message,
43
+ value.datajson?.msg,
44
+ value.datajson?.message,
45
+ ];
46
+ for (const item of candidates) {
47
+ if (typeof item === 'string' && item.trim())
48
+ return item;
49
+ }
50
+ return 'OA 档案接口返回业务失败';
51
+ }
52
+ function archiveOaBusinessCode(value) {
53
+ if (!value || typeof value !== 'object')
54
+ return undefined;
55
+ const code = value.errcode ?? value.code ?? value.status;
56
+ if (typeof code === 'string' || typeof code === 'number')
57
+ return code;
58
+ return undefined;
59
+ }
60
+ export function assertArchiveOaPath(requestPath) {
61
+ if (typeof requestPath !== 'string' || !requestPath.startsWith('/') || requestPath.startsWith('//')) {
62
+ throw archiveOaValidationError('path_invalid', '请求路径必须是相对绝对路径');
63
+ }
64
+ if (/^https?:/i.test(requestPath) || /[\r\n]/.test(requestPath) || requestPath.includes('/../')) {
65
+ throw archiveOaValidationError('path_invalid', '请求路径不允许跨域或路径逃逸');
66
+ }
67
+ if (!ALLOWED_PATH_PREFIXES.some((prefix) => requestPath.startsWith(prefix))) {
68
+ throw archiveOaValidationError('path_not_allowed', `archive-oa 只能调用 ${ALLOWED_PATH_PREFIXES.join(' / ')} 路径`);
69
+ }
70
+ }
71
+ function omitEmptyQueryValues(query) {
72
+ if (!query)
73
+ return undefined;
74
+ return Object.fromEntries(Object.entries(query).filter(([, value]) => value !== undefined && value !== null && value !== ''));
75
+ }
76
+ function mapRuntimeNetworkError(error) {
77
+ if (error instanceof E10ApiError && error.type === 'network') {
78
+ throw archiveOaNetworkError(error.subtype, error.message, {
79
+ retryable: error.retryable,
80
+ details: error.details,
81
+ });
82
+ }
83
+ throw error;
84
+ }
85
+ export function createArchiveOaHost(ctx, dependencies = {}) {
86
+ let e10Session = null;
87
+ let sessionContext = null;
88
+ const requireSession = dependencies.requireSession || requireE10Session;
89
+ async function ensureSession() {
90
+ if (!e10Session) {
91
+ e10Session = await requireSession(ctx);
92
+ sessionContext = {
93
+ baseUrl: e10Session.getBaseUrl(),
94
+ profile: inferProfile(ctx),
95
+ userId: e10Session.userId,
96
+ tenantKey: e10Session.tenantKey,
97
+ eteamsId: e10Session.eteamsId,
98
+ };
99
+ }
100
+ return e10Session;
101
+ }
102
+ async function getSession() {
103
+ await ensureSession();
104
+ return sessionContext;
105
+ }
106
+ async function request(request) {
107
+ const { method, path, query, body, operation, headers: extraHeaders = {}, timeoutMs = 60_000, skipBusinessCheck = false, } = request;
108
+ assertArchiveOaPath(path);
109
+ const resolvedMethod = method || (body === undefined ? 'GET' : 'POST');
110
+ const runtime = createE10RequestRuntime(ctx, await ensureSession(), {
111
+ interceptors: dependencies.interceptors,
112
+ fetch: dependencies.fetch,
113
+ });
114
+ const response = await runtime.requestJson({
115
+ module: 'archive-oa',
116
+ operation,
117
+ method: resolvedMethod,
118
+ path,
119
+ query: omitEmptyQueryValues(query),
120
+ body,
121
+ headers: { 'X-Requested-With': 'XMLHttpRequest', ...extraHeaders },
122
+ timeoutMs,
123
+ }).catch((error) => mapRuntimeNetworkError(error));
124
+ if (response.status === 401 || response.status === 302) {
125
+ throw archiveOaAuthError('session_expired', 'E10 登录态已失效,请先向用户确认 E10 登录域名,再运行 weaver-work-cli auth login --base-url <域名> 完成登录', { httpStatus: response.status });
126
+ }
127
+ if (response.parseError) {
128
+ if (response.status < 200 || response.status >= 300) {
129
+ throw new ArchiveOaCliError('api', 'http_error', `OA 档案接口 HTTP ${response.status}`, {
130
+ code: response.status,
131
+ details: { status: response.status },
132
+ exitCode: 1,
133
+ });
134
+ }
135
+ throw archiveOaNetworkError('protocol', `接口返回不是合法 JSON(HTTP ${response.status})`, { retryable: false });
136
+ }
137
+ if (response.status < 200 || response.status >= 300) {
138
+ throw new ArchiveOaCliError('api', 'http_error', `OA 档案接口 HTTP ${response.status}`, {
139
+ code: response.status,
140
+ details: { status: response.status, message: archiveOaBusinessMessage(response.value) },
141
+ exitCode: 1,
142
+ });
143
+ }
144
+ if (!skipBusinessCheck && !isArchiveOaBusinessSuccess(response.value)) {
145
+ throw new ArchiveOaCliError('api', 'business_error', archiveOaBusinessMessage(response.value), {
146
+ code: archiveOaBusinessCode(response.value),
147
+ details: {
148
+ code: archiveOaBusinessCode(response.value),
149
+ message: archiveOaBusinessMessage(response.value),
150
+ },
151
+ exitCode: 1,
152
+ });
153
+ }
154
+ return response.value;
155
+ }
156
+ return { request, getSession };
157
+ }
@@ -0,0 +1,225 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { ExitCode, isCliError, toErrorEnvelope } from '../../core/errors.js';
3
+ import { createArchiveOaContinuationSigner } from './continuation.js';
4
+ import { createArchiveOaHost } from './host.js';
5
+ import { archiveOaManifest } from './manifest.js';
6
+ import { executeArchiveOaOperation } from './operations.js';
7
+ import { archiveOaValidationError } from './errors.js';
8
+ const SOURCES = ['weaver', 'qys'];
9
+ function asOptions(value) {
10
+ return value && typeof value === 'object' && !Array.isArray(value) ? value : {};
11
+ }
12
+ async function readStdin() {
13
+ const chunks = [];
14
+ for await (const chunk of process.stdin) {
15
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
16
+ }
17
+ return Buffer.concat(chunks).toString('utf8');
18
+ }
19
+ export async function archiveOaInputFrom(options, extra = {}) {
20
+ const opts = asOptions(options);
21
+ let input = {};
22
+ if (opts.input && opts.inputJson) {
23
+ throw archiveOaValidationError('input_conflict', '不能同时传 --input 和 --input-json');
24
+ }
25
+ if (opts.inputJson) {
26
+ input = parseJsonInput(String(opts.inputJson), '--input-json');
27
+ }
28
+ if (opts.input) {
29
+ let raw;
30
+ try {
31
+ raw = opts.input === '-' ? await readStdin() : await readFile(String(opts.input), 'utf8');
32
+ }
33
+ catch {
34
+ throw archiveOaValidationError('input_unreadable', `无法读取 --input:${String(opts.input)}`);
35
+ }
36
+ input = parseJsonInput(raw, '--input');
37
+ }
38
+ return {
39
+ ...input,
40
+ ...Object.fromEntries(Object.entries(extra).filter(([, value]) => value !== undefined && value !== '')),
41
+ };
42
+ }
43
+ function parseJsonInput(raw, label) {
44
+ try {
45
+ const parsed = JSON.parse(raw.replace(/^\uFEFF/u, ''));
46
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
47
+ throw new Error('input must be an object');
48
+ }
49
+ return parsed;
50
+ }
51
+ catch {
52
+ throw archiveOaValidationError('input_invalid', `${label} 不是合法 JSON 对象`);
53
+ }
54
+ }
55
+ function withJsonInputOptions(command) {
56
+ command
57
+ .option('--input <path>', 'JSON input file, or - for stdin')
58
+ .option('--input-json <json>', 'inline JSON input object');
59
+ return command;
60
+ }
61
+ function intOption(value) {
62
+ if (value === undefined || value === null || value === '')
63
+ return undefined;
64
+ const parsed = Number(value);
65
+ return Number.isInteger(parsed) ? parsed : undefined;
66
+ }
67
+ function stringOption(value) {
68
+ if (value === undefined || value === null || value === '')
69
+ return undefined;
70
+ return String(value);
71
+ }
72
+ function stringListOption(value) {
73
+ const text = stringOption(value);
74
+ if (text === undefined)
75
+ return undefined;
76
+ return text.split(',').map((item) => item.trim()).filter((item) => item.length > 0);
77
+ }
78
+ function resolveSource(value) {
79
+ const text = String(stringOption(value) ?? 'weaver').toLowerCase();
80
+ if (!SOURCES.includes(text)) {
81
+ throw archiveOaValidationError('source_invalid', 'source 必须是 weaver 或 qys');
82
+ }
83
+ return text;
84
+ }
85
+ function borrowCarOperation(action, source) {
86
+ return source === 'qys'
87
+ ? `archive-oa.qys.borrow-car.${action}`
88
+ : `archive-oa.borrow-car.${action}`;
89
+ }
90
+ function successEnvelope(result) {
91
+ return {
92
+ schemaVersion: 1,
93
+ ok: true,
94
+ operation: result.action,
95
+ data: result.data,
96
+ ...(result.meta ? { meta: result.meta } : {}),
97
+ warnings: [],
98
+ };
99
+ }
100
+ function failureEnvelope(error) {
101
+ const structured = error;
102
+ return {
103
+ schemaVersion: 1,
104
+ ok: false,
105
+ ...(structured?.partialData === undefined ? {} : { data: structured.partialData }),
106
+ error: toErrorEnvelope(error),
107
+ };
108
+ }
109
+ async function executeAndPrint(ctx, operation, input) {
110
+ try {
111
+ const result = await executeArchiveOaOperation(operation, input, {
112
+ ctx,
113
+ host: createArchiveOaHost(ctx),
114
+ continuation: createArchiveOaContinuationSigner(ctx),
115
+ });
116
+ ctx.output.write(successEnvelope(result), { json: true });
117
+ }
118
+ catch (error) {
119
+ console.error(JSON.stringify(failureEnvelope(error), null, 2));
120
+ process.exitCode = isCliError(error) ? error.exitCode : ExitCode.GeneralError;
121
+ }
122
+ }
123
+ export const archiveOaShortcut = {
124
+ name: 'archive-oa',
125
+ description: 'E10 档案定位与 OA 商务合同借阅 CLI',
126
+ category: 'shortcut',
127
+ register({ program, action }) {
128
+ const command = program.command('archive-oa').description('E10 档案定位与 OA 商务合同借阅');
129
+ command.command('schema')
130
+ .description('Print archive-oa operation manifest for agents')
131
+ .action(action((ctx) => {
132
+ ctx.output.write(archiveOaManifest, { json: true });
133
+ }));
134
+ withJsonInputOptions(command.command('run')
135
+ .description('Run an archive-oa operation with JSON input')
136
+ .argument('<operation>', 'operation name, e.g. archive-oa.contract.list'))
137
+ .action(action(async (ctx, operation, options) => {
138
+ await executeAndPrint(ctx, String(operation), await archiveOaInputFrom(options));
139
+ }));
140
+ withJsonInputOptions(command.command('locate')
141
+ .description('Locate archive records by contract number')
142
+ .option('--contract-no <no>', 'contract number (htbh)')
143
+ .option('--page-no <page>', 'page number, starts from 1'))
144
+ .action(action(async (ctx, options) => {
145
+ const opts = asOptions(options);
146
+ await executeAndPrint(ctx, 'archive-oa.archive.locate', await archiveOaInputFrom(options, {
147
+ contractNo: stringOption(opts.contractNo),
148
+ pageNo: intOption(opts.pageNo),
149
+ }));
150
+ }));
151
+ const contract = command.command('contract').description('Business contract query commands');
152
+ withJsonInputOptions(contract.command('list')
153
+ .description('Query Weaver business contracts')
154
+ .option('--page-no <page>', 'page number, starts from 1'))
155
+ .action(action(async (ctx, options) => {
156
+ const opts = asOptions(options);
157
+ await executeAndPrint(ctx, 'archive-oa.contract.list', await archiveOaInputFrom(options, {
158
+ pageNo: intOption(opts.pageNo),
159
+ }));
160
+ }));
161
+ contract.command('fields')
162
+ .description('List searchable fields of Weaver business contracts')
163
+ .action(action(async (ctx) => {
164
+ await executeAndPrint(ctx, 'archive-oa.contract.fields', {});
165
+ }));
166
+ const qys = command.command('qys').description('Qiyuesuo (case) contract commands');
167
+ withJsonInputOptions(qys.command('list')
168
+ .description('Query Qiyuesuo collaboration contracts (default archived only)')
169
+ .option('--page-no <page>', 'page number, starts from 1'))
170
+ .action(action(async (ctx, options) => {
171
+ const opts = asOptions(options);
172
+ await executeAndPrint(ctx, 'archive-oa.qys.contract.list', await archiveOaInputFrom(options, {
173
+ pageNo: intOption(opts.pageNo),
174
+ }));
175
+ }));
176
+ const borrowCar = command.command('borrow-car').description('Borrow car commands');
177
+ withJsonInputOptions(borrowCar.command('list')
178
+ .description('List contract borrow car entries')
179
+ .option('--source <source>', 'weaver or qys, default weaver')
180
+ .option('--page-no <page>', 'page number, starts from 1'))
181
+ .action(action(async (ctx, options) => {
182
+ const opts = asOptions(options);
183
+ const source = resolveSource(opts.source);
184
+ await executeAndPrint(ctx, borrowCarOperation('list', source), await archiveOaInputFrom(options, {
185
+ pageNo: intOption(opts.pageNo),
186
+ }));
187
+ }));
188
+ withJsonInputOptions(borrowCar.command('add-prepare')
189
+ .description('Prepare adding contracts to borrow car (max 6)')
190
+ .option('--source <source>', 'weaver or qys, default weaver')
191
+ .option('--data-ids <ids>', 'comma separated contract row ids'))
192
+ .action(action(async (ctx, options) => {
193
+ const opts = asOptions(options);
194
+ const source = resolveSource(opts.source);
195
+ await executeAndPrint(ctx, borrowCarOperation('add.prepare', source), await archiveOaInputFrom(options, {
196
+ dataIds: stringListOption(opts.dataIds),
197
+ }));
198
+ }));
199
+ withJsonInputOptions(borrowCar.command('add-apply')
200
+ .description('Apply adding contracts to borrow car')
201
+ .option('--continuation <token>', 'continuation token from prepare')
202
+ .option('--source <source>', 'weaver or qys, default weaver')
203
+ .option('--yes', 'confirm the write operation'))
204
+ .action(action(async (ctx, options) => {
205
+ const opts = asOptions(options);
206
+ const source = resolveSource(opts.source);
207
+ await executeAndPrint(ctx, borrowCarOperation('add.apply', source), await archiveOaInputFrom(options, {
208
+ continuation: stringOption(opts.continuation),
209
+ confirm: opts.yes === true ? true : undefined,
210
+ }));
211
+ }));
212
+ const borrow = command.command('borrow').description('Borrow workflow commands');
213
+ withJsonInputOptions(borrow.command('start-url')
214
+ .description('Build the borrow workflow page URL from borrow car entries')
215
+ .option('--source <source>', 'weaver or qys, default weaver')
216
+ .option('--contract-nos <nos>', 'comma separated contract numbers from borrow car, max 6'))
217
+ .action(action(async (ctx, options) => {
218
+ const opts = asOptions(options);
219
+ const source = resolveSource(opts.source);
220
+ await executeAndPrint(ctx, source === 'qys' ? 'archive-oa.qys.borrow.start.url' : 'archive-oa.borrow.start.url', await archiveOaInputFrom(options, {
221
+ contractNos: stringListOption(opts.contractNos),
222
+ }));
223
+ }));
224
+ },
225
+ };
@@ -0,0 +1,62 @@
1
+ import { archiveOaOperationDefinitions } from './operations/registry.js';
2
+ /** 对外契约:只暴露操作名 / 资源 / 摘要 / 风险 / 是否需确认 / 入参 schema。 */
3
+ export const archiveOaOperations = archiveOaOperationDefinitions().map((definition) => ({
4
+ name: definition.name,
5
+ resource: definition.resource,
6
+ summary: definition.summary,
7
+ ...(definition.capability ? { capability: definition.capability } : {}),
8
+ risk: definition.risk,
9
+ ...(definition.requiresConfirmation ? { requiresConfirmation: true } : {}),
10
+ inputSchema: definition.inputSchema,
11
+ }));
12
+ export const archiveOaManifest = {
13
+ schemaVersion: 1,
14
+ name: 'archive-oa',
15
+ title: '泛微E10档案定位与OA商务合同借阅',
16
+ version: '0.1.0',
17
+ host: 'e10-archive-oa',
18
+ status: 'builtin',
19
+ sourceSkill: 'weaver-e10-archive-oa',
20
+ capabilities: ['archiveLocate', 'contractSearch', 'borrowCar'],
21
+ auth: {
22
+ required: 'e10-session',
23
+ note: '所有操作都要求已登录 E10(weaver-work-cli auth login --base-url <域名>)。发起借阅不在 CLI 能力范围内,由用户在浏览器登录后于界面自己完成。',
24
+ },
25
+ rules: [
26
+ '写操作(*.apply)必须先执行同名的 prepare 拿到 continuation,再带 confirm=true 执行 apply;CLI 用 --yes 表示确认。',
27
+ '泛微商务合同与契约锁协作采纳(案例)是两套独立应用:passid / listId / esbActionIds / objId / cusMenuId 各不相同,禁止交叉混用。',
28
+ '加入借阅车每次最多 6 条。',
29
+ '发起借阅通过 archive-oa.borrow.start.url(契约锁为 archive-oa.qys.borrow.start.url)生成流程创建页 URL(/sp/workflow/flowpage/fullCreate/<flowId>?fb=<fb>&data=<JSON>):两个 operation 均只读、不写数据、不触发流程、不需要任何后台应用凭据;fb 必须取借阅车记录自身的值(泛微 0、契约锁 1),禁止手工指定;URL 可在浏览器直接打开,由用户完成填写与提交。',
30
+ '合同行的内部 ID(data[*].id)只用于加入借阅车,不展示给最终用户。',
31
+ ],
32
+ operations: archiveOaOperations,
33
+ withheldOperations: [
34
+ {
35
+ name: 'archive-oa.archive.usage-log',
36
+ reason: '档案操作/利用记录(借阅、下载、浏览)接口源资料尚未收录,业务方提供接口契约后再登记。',
37
+ },
38
+ {
39
+ name: 'archive-oa.qys.contract.fields',
40
+ reason: '契约锁协作采纳的搜索字段配置接口源资料未收录;构造搜索条件时可参考泛微 showFilters 的字段规则。',
41
+ },
42
+ {
43
+ name: 'archive-oa.borrow.start.prepare',
44
+ reason: '发起借阅改由用户在浏览器登录后于借阅车界面自己完成,CLI 不提供 OpenESB 触发能力。',
45
+ },
46
+ {
47
+ name: 'archive-oa.borrow.start.apply',
48
+ reason: '同 prepare:发起借阅不在 CLI operation 范围内,不向用户索要后台应用凭据。',
49
+ },
50
+ {
51
+ name: 'archive-oa.qys.borrow.start.prepare',
52
+ reason: '契约锁发起借阅同样由用户在浏览器界面自己完成,CLI 不代为触发。',
53
+ },
54
+ {
55
+ name: 'archive-oa.qys.borrow.start.apply',
56
+ reason: '同 prepare:契约锁发起借阅不在 CLI operation 范围内。',
57
+ },
58
+ ],
59
+ };
60
+ export function hasArchiveOaOperationInManifest(operation) {
61
+ return archiveOaOperations.some((item) => item.name === operation);
62
+ }
@@ -0,0 +1,159 @@
1
+ import { MAX_BORROW_ITEMS } from '../constants.js';
2
+ import { HIGH_RISK_WRITE, READ, READ_BEFORE_WRITE, archiveOaSuccess, schemaOf, SCHEMA_ID_LIST, SCHEMA_PAGE_NO, } from './types.js';
3
+ import { normalizeListResult, positiveInt, requireIdList, unwrapData, } from './shared.js';
4
+ import { archiveOaPartialError } from '../errors.js';
5
+ import { assertLeaseTarget, issueLease, verifyLease } from './confirm.js';
6
+ const CONTRACT_LIST_PATH = '/api/ebuilder/form/list/getListDatas';
7
+ const RUN_ESB_PATH = '/api/ebuilder/form/esb/runEsb';
8
+ function prefix(source) {
9
+ return source === 'qys' ? 'archive-oa.qys.borrow-car' : 'archive-oa.borrow-car';
10
+ }
11
+ /** 借阅车列表查询。 */
12
+ function makeListOperation(profile) {
13
+ const name = `${prefix(profile.source)}.list`;
14
+ return {
15
+ name,
16
+ resource: 'borrow-car',
17
+ method: 'list',
18
+ action: name,
19
+ summary: `查询${profile.source === 'qys' ? '契约锁' : '泛微'}合同借阅车列表`,
20
+ capability: 'borrow-car',
21
+ risk: READ,
22
+ inputSchema: schemaOf({ pageNo: { ...SCHEMA_PAGE_NO, description: '页码,从 1 开始,缺省 1' } }, { description: '查询借阅车列表' }),
23
+ handler: async (args, env) => {
24
+ const pageNo = positiveInt(args.pageNo, 'pageNo', 1);
25
+ const response = await env.host.request({
26
+ method: 'POST',
27
+ path: CONTRACT_LIST_PATH,
28
+ operation: name,
29
+ query: { passid: profile.passId, cid: profile.passId, sf_request_type: 'ajax' },
30
+ body: {
31
+ current: pageNo,
32
+ requiredMatch: 1,
33
+ mapResult: '1',
34
+ recheckQuery: '1',
35
+ cusMenuId: profile.cusMenuId,
36
+ urlPageTitle: profile.urlPageTitle,
37
+ searchParamData: { searchType: '2', type: 'and', commonSearchFields: {}, groupFields: {} },
38
+ listId: profile.listId,
39
+ isFollow: 0,
40
+ isShareToMe: 0,
41
+ filterCondition: {},
42
+ browser: 'Chrome',
43
+ },
44
+ });
45
+ const { rows, meta } = normalizeListResult(name, response, profile.source);
46
+ return archiveOaSuccess(name, { rows }, { ...meta, pageNo });
47
+ },
48
+ };
49
+ }
50
+ /** 加入借阅车(ESB 动作)prepare + apply。 */
51
+ function makeAddOperations(carProfile, esb) {
52
+ const prepareName = `${prefix(carProfile.source)}.add.prepare`;
53
+ const applyName = `${prefix(carProfile.source)}.add.apply`;
54
+ const prepare = {
55
+ name: prepareName,
56
+ resource: 'borrow-car',
57
+ method: 'add',
58
+ action: prepareName,
59
+ summary: `把${esb.source === 'qys' ? '契约锁' : '泛微'}合同加入借阅车:校验条数并回查借阅车现状(不写数据)`,
60
+ capability: 'borrow-car',
61
+ risk: READ_BEFORE_WRITE,
62
+ inputSchema: schemaOf({
63
+ dataIds: {
64
+ ...SCHEMA_ID_LIST,
65
+ maxItems: MAX_BORROW_ITEMS,
66
+ description: `合同数据行 id 数组,来自合同查询结果的 data[*].id,最多 ${MAX_BORROW_ITEMS} 条`,
67
+ },
68
+ }, { required: ['dataIds'], description: '加入借阅车预检' }),
69
+ handler: async (args, env) => {
70
+ const dataIds = requireIdList(args.dataIds, 'dataIds', MAX_BORROW_ITEMS);
71
+ const current = await env.host.request({
72
+ method: 'POST',
73
+ path: CONTRACT_LIST_PATH,
74
+ operation: prepareName,
75
+ query: { passid: carProfile.passId, cid: carProfile.passId, sf_request_type: 'ajax' },
76
+ body: {
77
+ current: 1,
78
+ requiredMatch: 1,
79
+ mapResult: '1',
80
+ recheckQuery: '1',
81
+ cusMenuId: carProfile.cusMenuId,
82
+ urlPageTitle: carProfile.urlPageTitle,
83
+ searchParamData: { searchType: '2', type: 'and', commonSearchFields: {}, groupFields: {} },
84
+ listId: carProfile.listId,
85
+ isFollow: 0,
86
+ isShareToMe: 0,
87
+ filterCondition: {},
88
+ browser: 'Chrome',
89
+ },
90
+ });
91
+ const { rows } = normalizeListResult(prepareName, current, carProfile.source);
92
+ const { continuation, expiresInMs } = await issueLease(env, applyName, {
93
+ dataIds,
94
+ esbActionIds: esb.esbActionIds,
95
+ objId: esb.objId,
96
+ listId: esb.listId,
97
+ });
98
+ return archiveOaSuccess(prepareName, {
99
+ preview: {
100
+ source: carProfile.source,
101
+ count: dataIds.length,
102
+ dataIds,
103
+ borrowCarBefore: rows.length,
104
+ },
105
+ hint: `确认后调用 ${applyName}(CLI:archive-oa borrow-car add-apply --continuation <token> --yes)`,
106
+ continuation,
107
+ }, { requiresConfirmation: true, expiresInMs });
108
+ },
109
+ };
110
+ const apply = {
111
+ name: applyName,
112
+ resource: 'borrow-car',
113
+ method: 'add',
114
+ action: applyName,
115
+ summary: `把${esb.source === 'qys' ? '契约锁' : '泛微'}合同加入借阅车(写操作):执行 ESB 动作`,
116
+ capability: 'borrow-car',
117
+ risk: HIGH_RISK_WRITE,
118
+ requiresConfirmation: true,
119
+ inputSchema: schemaOf({
120
+ continuation: { type: 'string', description: 'prepare 返回的确认票据' },
121
+ confirm: { type: 'boolean', description: '必须为 true(CLI --yes)' },
122
+ }, { required: ['continuation', 'confirm'], description: '加入借阅车' }),
123
+ handler: async (args, env) => {
124
+ const lease = await verifyLease(args, applyName, env);
125
+ assertLeaseTarget(lease, args, ['dataIds'], applyName);
126
+ const dataIds = Array.isArray(lease.dataIds) ? lease.dataIds.map(String) : [];
127
+ if (dataIds.length === 0 || dataIds.length > MAX_BORROW_ITEMS) {
128
+ throw new Error('continuation 缺少合法的 dataIds');
129
+ }
130
+ const response = await env.host.request({
131
+ method: 'POST',
132
+ path: RUN_ESB_PATH,
133
+ operation: applyName,
134
+ query: { sf_request_type: 'ajax' },
135
+ body: {
136
+ dataIds: dataIds.join(','),
137
+ esbActionIds: String(lease.esbActionIds ?? esb.esbActionIds),
138
+ objId: String(lease.objId ?? esb.objId),
139
+ listId: String(lease.listId ?? esb.listId),
140
+ },
141
+ });
142
+ const data = (unwrapData(response) ?? {});
143
+ const failNum = Number(data.failNum ?? 0);
144
+ if (failNum > 0) {
145
+ throw archiveOaPartialError(`加入借阅车部分失败:成功 ${data.successNum ?? 0} 条,失败 ${failNum} 条`, { successNum: data.successNum ?? 0, failNum, failIds: data.failIds ?? [] }, { dataIds, needRefresh: data.needRefresh === true });
146
+ }
147
+ return archiveOaSuccess(applyName, {
148
+ message: String(data.successMsg ?? esb.successText),
149
+ successNum: data.successNum ?? dataIds.length,
150
+ failNum,
151
+ needRefresh: data.needRefresh === true,
152
+ }, { wrote: true, source: carProfile.source, count: dataIds.length });
153
+ },
154
+ };
155
+ return [prepare, apply];
156
+ }
157
+ export function createBorrowCarOperations(carProfile, esb) {
158
+ return [makeListOperation(carProfile), ...makeAddOperations(carProfile, esb)];
159
+ }