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
@@ -4,6 +4,7 @@ import { homedir } from 'node:os';
4
4
  import { dirname, join, resolve } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { CliError, ExitCode } from '../../../core/errors.js';
7
+ import { isXiaoERuntime, isXiaoERuntimeAgent } from '../../../core/runtime-agent.js';
7
8
  import { buildE10CookieHeader, E10AuthSession, extractRawSetCookie, extractSessionTicket, profileNameFromUrl, readTeamsCheckUserInfo, saveAuthFile, saveProfileConfig, setActiveProfile, } from './session.js';
8
9
  export const DEFAULT_E10_BASE_URL = 'https://www.e-cology.com.cn';
9
10
  export const XIAOE_AGENT_TYPE = 'XiaoE';
@@ -47,6 +48,11 @@ const XIAOE_TOKEN_SCRIPT_LEGACY_ENV_KEY = 'XIAOE_TOKEN_SCRIPT_PATH';
47
48
  const XIAOE_TOKEN_SCRIPT_PYTHON_LEGACY_ENV_KEY = 'XIAOE_TOKEN_SCRIPT_PYTHON';
48
49
  const XIAOE_TOKEN_SCRIPT_TIMEOUT_MS = 15_000;
49
50
  const XIAOE_CLIENT_TOKEN_TIMEOUT_MS = 15_000;
51
+ const XIAOE_USER_SETTINGS_PATH_ENV_KEY = 'XIAOE_USER_SETTINGS_PATH';
52
+ const XIAOE_CLIENT_SETTINGS_ROOT_ENV_KEYS = [
53
+ 'XIAOE_ROBOT_DATA_ROOT',
54
+ 'XIAOE_ROBOT_ROOT',
55
+ ];
50
56
  export const XIAOE_SKILL_ETEAMID_API_PATH = '/spec-apps/api/app/rpachat/skill/extend/eteamId';
51
57
  export const XIAOE_CLIENT_SETTINGS_SOURCE = 'XiaoE/Robots/user_settings.json';
52
58
  export const XIAOE_USER_TOKEN_SOURCE = 'XIAOE_USER_TOKEN';
@@ -59,22 +65,29 @@ function envString(env, ...keys) {
59
65
  }
60
66
  return '';
61
67
  }
62
- export function hasXiaoEEnv(env = process.env) {
63
- // Current-host markers win over WEAVER_AGENT_TYPE, which can be inherited
64
- // from a previously saved E10 profile by `weaver-work-cli run`.
68
+ /**
69
+ * Identifies the XiaoE runtime without inspecting credential artifacts:
70
+ * desktop callers may pass --runtime-agent, and any injected XIAOE_* variable
71
+ * is treated as XiaoE host evidence.
72
+ */
73
+ export function hasXiaoEEnv(env = process.env, options = {}) {
74
+ if (isXiaoERuntime(options))
75
+ return true;
76
+ // XiaoE reserves this prefix for host-injected runtime variables. Presence
77
+ // of any matching key is sufficient; the value may legitimately be empty.
78
+ if (Object.keys(env).some((key) => key.startsWith('XIAOE_')))
79
+ return true;
80
+ // An explicitly named host remains authoritative over credential signals.
81
+ const explicitHostAgentType = envString(env, 'WORKBUDDY_AGENT_TYPE', 'CODEX_AGENT_TYPE');
82
+ if (explicitHostAgentType)
83
+ return isXiaoERuntimeAgent(explicitHostAgentType);
84
+ // Generic framework markers can coexist with stale profile metadata, so they
85
+ // take precedence over WEAVER_AGENT_TYPE when no XIAOE_* variable is present.
65
86
  if (Object.keys(env).some((key) => key.startsWith('WORKBUDDY_') || key.startsWith('CODEX_'))) {
66
87
  return false;
67
88
  }
68
- const explicitAgentType = envString(env, 'WORKBUDDY_AGENT_TYPE', 'CODEX_AGENT_TYPE', 'WEAVER_AGENT_TYPE');
69
- if (explicitAgentType) {
70
- const normalized = explicitAgentType.toLowerCase().replace(/[^a-z0-9\p{Script=Han}]+/gu, '');
71
- return ['xiaoe', 'xiaoeclient', '小e', '智能小e'].includes(normalized);
72
- }
73
- // XiaoE injects this pair into the command process for the current run. A
74
- // tokens.py path, client installation, XIAOE_SKILL_* variable, or
75
- // WEAVER_XIAOE_* configuration alone is credential availability, not proof
76
- // that the current agent is XiaoE.
77
- return hasXiaoEPlatformCredential(env);
89
+ const explicitAgentType = envString(env, 'WEAVER_AGENT_TYPE');
90
+ return explicitAgentType ? isXiaoERuntimeAgent(explicitAgentType) : false;
78
91
  }
79
92
  export function describeXiaoECredentialSource(source) {
80
93
  // Step 1 is the platform-injected credential (XIAOE_USER_TOKEN + XIAOE_DOMAIN):
@@ -286,7 +299,7 @@ export function resolveXiaoEDefaultBaseUrl(env = process.env) {
286
299
  const configured = resolveXiaoEConfiguredBaseUrl(env);
287
300
  if (configured)
288
301
  return configured;
289
- return hasXiaoEEnv(env) ? DEFAULT_E10_BASE_URL : '';
302
+ return DEFAULT_E10_BASE_URL;
290
303
  }
291
304
  function uniqueStrings(values) {
292
305
  const seen = new Set();
@@ -325,10 +338,12 @@ export function xiaoEBundledEnvScriptPath() {
325
338
  const scriptPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../scripts/xiaoe_env.py');
326
339
  return existsSync(scriptPath) ? scriptPath : '';
327
340
  }
328
- export function hasXiaoETokenScript(env = process.env) {
341
+ export function hasXiaoETokenScript(env = process.env, allowLocalDiscovery = true) {
329
342
  const explicit = envString(env, XIAOE_TOKEN_SCRIPT_ENV_KEY, XIAOE_TOKEN_SCRIPT_LEGACY_ENV_KEY);
330
343
  if (explicit)
331
344
  return existsSync(explicit);
345
+ if (!allowLocalDiscovery)
346
+ return false;
332
347
  const scriptPath = xiaoETokenScriptPath(env);
333
348
  return Boolean(scriptPath && existsSync(scriptPath));
334
349
  }
@@ -537,30 +552,80 @@ export function xiaoEClientRobotsRoot(env = process.env) {
537
552
  const home = envString(env, 'HOME') || homedir();
538
553
  return home ? join(home, 'Library', 'Application Support', 'XiaoE', 'Robots') : '';
539
554
  }
540
- export function findXiaoEClientSettingsFile(env = process.env) {
541
- const root = xiaoEClientRobotsRoot(env);
542
- if (!root || !existsSync(root))
543
- return '';
544
- let entries = [];
555
+ function isFile(path) {
556
+ if (!path || !existsSync(path))
557
+ return false;
545
558
  try {
546
- entries = readdirSync(root);
559
+ return statSync(path).isFile();
547
560
  }
548
561
  catch {
549
- return '';
562
+ return false;
563
+ }
564
+ }
565
+ function isDirectory(path) {
566
+ if (!path || !existsSync(path))
567
+ return false;
568
+ try {
569
+ return statSync(path).isDirectory();
570
+ }
571
+ catch {
572
+ return false;
550
573
  }
551
- const files = entries
552
- .map((name) => join(root, name, 'user_settings.json'))
553
- .filter((path) => {
574
+ }
575
+ function listXiaoEClientSettingsFiles(root) {
576
+ if (!root)
577
+ return [];
578
+ if (isFile(root))
579
+ return [root];
580
+ if (!isDirectory(root))
581
+ return [];
582
+ const candidates = [];
583
+ const addCandidate = (path) => {
584
+ if (isFile(path))
585
+ candidates.push(path);
586
+ };
587
+ const addChildSettings = (directory) => {
588
+ if (!isDirectory(directory))
589
+ return;
554
590
  try {
555
- return statSync(path).isFile();
591
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
592
+ if (entry.isDirectory())
593
+ addCandidate(join(directory, entry.name, 'user_settings.json'));
594
+ }
556
595
  }
557
596
  catch {
558
- return false;
597
+ // Treat an unreadable host directory as an unavailable credential source.
559
598
  }
560
- });
561
- if (files.length === 0)
562
- return '';
563
- return files.sort((left, right) => statSync(right).mtimeMs - statSync(left).mtimeMs)[0];
599
+ };
600
+ addCandidate(join(root, 'user_settings.json'));
601
+ addChildSettings(root);
602
+ // Some desktop hosts inject the XiaoE data root rather than the Robots
603
+ // directory itself. Keep discovery shallow and limited to the known layout.
604
+ const robotsRoot = join(root, 'Robots');
605
+ addCandidate(join(robotsRoot, 'user_settings.json'));
606
+ addChildSettings(robotsRoot);
607
+ return uniqueStrings(candidates);
608
+ }
609
+ function sortedXiaoEClientSettingsFiles(root) {
610
+ const files = listXiaoEClientSettingsFiles(root);
611
+ return files.sort((left, right) => statSync(right).mtimeMs - statSync(left).mtimeMs);
612
+ }
613
+ function xiaoEClientSettingsCandidateFiles(env, allowLocalDiscovery = true) {
614
+ const candidates = [];
615
+ const explicitSettingsPath = envString(env, XIAOE_USER_SETTINGS_PATH_ENV_KEY);
616
+ if (isFile(explicitSettingsPath))
617
+ candidates.push(explicitSettingsPath);
618
+ for (const key of XIAOE_CLIENT_SETTINGS_ROOT_ENV_KEYS) {
619
+ const injectedRoot = envString(env, key);
620
+ candidates.push(...sortedXiaoEClientSettingsFiles(injectedRoot));
621
+ }
622
+ if (allowLocalDiscovery) {
623
+ candidates.push(...sortedXiaoEClientSettingsFiles(xiaoEClientRobotsRoot(env)));
624
+ }
625
+ return uniqueStrings(candidates);
626
+ }
627
+ export function findXiaoEClientSettingsFile(env = process.env) {
628
+ return xiaoEClientSettingsCandidateFiles(env)[0] || '';
564
629
  }
565
630
  /**
566
631
  * Platform-injected credential: XIAOE_USER_TOKEN (+ the XiaoE service address).
@@ -587,23 +652,52 @@ export function hasXiaoEPlatformCredential(env = process.env) {
587
652
  * Kept for local desktop hosts only; sandboxes must rely on the platform credential.
588
653
  */
589
654
  export function readXiaoEClientCredential(env = process.env) {
590
- const settingsFile = findXiaoEClientSettingsFile(env);
591
- if (!settingsFile)
592
- return null;
593
- try {
594
- const parsed = JSON.parse(readFileSync(settingsFile, 'utf8'));
595
- const authToken = readString(parsed, 'session_id', 'sessionId');
596
- const erpaUrl = normalizeUrl(readString(parsed, 'erpa', 'erpa_url', 'erpaUrl'));
597
- if (!authToken || !erpaUrl)
598
- return null;
599
- return { authToken, erpaUrl, source: XIAOE_CLIENT_SETTINGS_SOURCE };
600
- }
601
- catch {
602
- return null;
655
+ for (const settingsFile of xiaoEClientSettingsCandidateFiles(env)) {
656
+ try {
657
+ const parsed = JSON.parse(readFileSync(settingsFile, 'utf8'));
658
+ const authToken = readString(parsed, 'session_id', 'sessionId');
659
+ const erpaUrl = normalizeUrl(readString(parsed, 'erpa', 'erpa_url', 'erpaUrl'));
660
+ if (authToken && erpaUrl)
661
+ return { authToken, erpaUrl, source: XIAOE_CLIENT_SETTINGS_SOURCE };
662
+ }
663
+ catch {
664
+ // Continue to the next injected or default client settings candidate.
665
+ }
603
666
  }
667
+ return null;
668
+ }
669
+ export function hasXiaoEClientCredential(env = process.env, allowLocalDiscovery = true) {
670
+ return Boolean(xiaoEClientSettingsCandidateFiles(env, allowLocalDiscovery)[0]);
671
+ }
672
+ /**
673
+ * Reports usable unified-login credential sources independently from host
674
+ * identity. Installing the XiaoE client is not proof that the current process
675
+ * was launched by XiaoE, but an explicit `auth xiaoe` command may still consume
676
+ * any credential source that is available.
677
+ */
678
+ export function inspectXiaoEUnifiedLoginSources(options = {}) {
679
+ const env = options.env || process.env;
680
+ const baseUrl = resolveXiaoEPreferredBaseUrl({
681
+ explicitBaseUrl: options.baseUrl,
682
+ profileBaseUrl: options.profileBaseUrl,
683
+ env,
684
+ });
685
+ const platformCredential = hasXiaoEPlatformCredential(env);
686
+ const allowLocalDiscovery = options.allowLocalDiscovery !== false;
687
+ const tokenScript = options.allowTokenScript !== false
688
+ && hasXiaoETokenScript(env, allowLocalDiscovery);
689
+ const clientCredential = hasXiaoEClientCredential(env, allowLocalDiscovery);
690
+ const environmentCredential = Boolean(baseUrl && resolveXiaoEUnifiedLoginCredential(baseUrl, env));
691
+ return {
692
+ platformCredential,
693
+ tokenScript,
694
+ clientCredential,
695
+ environmentCredential,
696
+ any: platformCredential || tokenScript || clientCredential || environmentCredential,
697
+ };
604
698
  }
605
- export function hasXiaoEClientCredential(env = process.env) {
606
- return Boolean(findXiaoEClientSettingsFile(env));
699
+ export function hasXiaoEUnifiedLoginSource(options = {}) {
700
+ return inspectXiaoEUnifiedLoginSources(options).any;
607
701
  }
608
702
  async function fetchXiaoEClientEteamId(credential, domain) {
609
703
  const controller = new AbortController();
@@ -697,22 +791,19 @@ export function resolveXiaoEPreferredBaseUrl(options) {
697
791
  const profileBaseUrl = normalizeUrl(options.profileBaseUrl || '');
698
792
  if (profileBaseUrl)
699
793
  return profileBaseUrl;
700
- return hasXiaoEEnv(env) ? DEFAULT_E10_BASE_URL : '';
701
- }
702
- export function shouldUseXiaoEBrowserFallback(platform = process.platform) {
703
- return platform === 'darwin' || platform === 'win32';
794
+ return DEFAULT_E10_BASE_URL;
704
795
  }
705
796
  export function createXiaoEUnifiedLoginUnavailableError(baseUrl = '') {
706
797
  const target = normalizeUrl(baseUrl);
707
798
  const message = [
708
799
  'XiaoE unified login did not return a usable E10 session.',
709
800
  target ? `Resolved E10 baseUrl: ${target}.` : 'No E10 baseUrl could be resolved.',
710
- 'This web/Linux host cannot complete a localhost browser OAuth callback.',
801
+ 'The auth xiaoe command never falls back to browser OAuth.',
711
802
  'Refresh the XiaoE web session or restore host credential injection before retrying.',
712
803
  ].join(' ');
713
804
  return Object.assign(new CliError(message, ExitCode.AuthError), {
714
805
  type: 'authentication',
715
- subtype: 'xiaoe_web_credential_unavailable',
806
+ subtype: 'xiaoe_credential_unavailable',
716
807
  retryable: false,
717
808
  stage: 'xiaoe_unified_login',
718
809
  });
@@ -793,7 +884,7 @@ export async function tryXiaoEUnifiedLogin(options = {}) {
793
884
  profileBaseUrl: options.profileBaseUrl,
794
885
  env,
795
886
  });
796
- const mayUseTokenScript = options.allowTokenScript || hasXiaoEEnv(env);
887
+ const mayUseTokenScript = options.allowTokenScript === true;
797
888
  if (!baseUrl && !mayUseTokenScript)
798
889
  return null;
799
890
  let credential = null;
@@ -859,6 +950,7 @@ export async function tryXiaoEUnifiedLogin(options = {}) {
859
950
  // client session and exchanges it for an eteamId, so Python availability
860
951
  // no longer blocks unified login.
861
952
  if (!credential && hasXiaoEClientCredential(env)) {
953
+ options.logger?.info('Trying built-in XiaoE client session credential...');
862
954
  try {
863
955
  credential = await resolveXiaoEClientCredential(baseUrl || DEFAULT_E10_BASE_URL, env);
864
956
  }
@@ -1,41 +1,19 @@
1
1
  import { CliError, ExitCode } from '../../core/errors.js';
2
- import { E10AuthSession, getActiveProfile, readProfileConfig } from './auth/session.js';
3
- import { createXiaoEUnifiedLoginUnavailableError, hasXiaoEEnv, resolveXiaoEPreferredBaseUrl, shouldUseXiaoEBrowserFallback, tryXiaoEUnifiedLogin, } from './auth/xiaoe.js';
2
+ import { E10AuthSession } from './auth/session.js';
3
+ import { hasXiaoEEnv } from './auth/xiaoe.js';
4
4
  import { E10ApiClient } from './client.js';
5
- function shouldPreferXiaoEUnifiedLogin(options, env) {
6
- return !options.auth && !options.profile && hasXiaoEEnv(env);
7
- }
8
5
  export async function getE10Session(ctx, load = {}) {
9
6
  const options = ctx.getGlobalOptions();
10
- if (shouldPreferXiaoEUnifiedLogin(options, ctx.env)) {
11
- const profileBaseUrl = readProfileConfig(getActiveProfile()).baseUrl;
12
- const xiaoELogin = await tryXiaoEUnifiedLogin({
13
- env: ctx.env,
14
- baseUrl: options.baseUrl,
15
- profileBaseUrl,
16
- allowBundledEnvScript: true,
17
- allowTokenScript: true,
18
- logger: ctx.logger,
19
- });
20
- if (xiaoELogin)
21
- return xiaoELogin.session;
22
- return null;
23
- }
24
7
  return E10AuthSession.fromOptions(options, ctx.cwd, load);
25
8
  }
26
9
  export async function requireE10Session(ctx, load = {}) {
27
10
  const session = await getE10Session(ctx, load);
28
11
  if (!session) {
29
12
  const options = ctx.getGlobalOptions();
30
- if (hasXiaoEEnv(ctx.env) && !shouldUseXiaoEBrowserFallback()) {
31
- const baseUrl = resolveXiaoEPreferredBaseUrl({
32
- explicitBaseUrl: options.baseUrl,
33
- profileBaseUrl: readProfileConfig(getActiveProfile()).baseUrl,
34
- env: ctx.env,
35
- });
36
- throw createXiaoEUnifiedLoginUnavailableError(baseUrl);
13
+ if (hasXiaoEEnv(ctx.env, options)) {
14
+ throw new CliError('E10 auth not found. The current runtime is XiaoE; run weaver-work-cli auth xiaoe first.', ExitCode.AuthError);
37
15
  }
38
- throw new CliError('E10 auth not found. In XiaoE, run weaver-work-cli auth xiaoe first; if unified login is unavailable, ask the user for the E10 login domain (base URL), then run: weaver-work-cli auth login --base-url <url> --agent_type <agent_type>.', ExitCode.AuthError);
16
+ throw new CliError('E10 auth not found. Ask the user for the E10 login domain (base URL), then run: weaver-work-cli auth login --base-url <url> --agent_type <agent_type>.', ExitCode.AuthError);
39
17
  }
40
18
  return session;
41
19
  }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * archive-oa 固定业务参数。
3
+ *
4
+ * 泛微商务合同与契约锁协作采纳是两套独立的应用/列表,参数值不同,禁止交叉混用。
5
+ * 来源:`source/weaver-e10-archive-oa.zip` 内 10 篇接口文档(catalog.md 登记)。
6
+ */
7
+ /** 加入借阅车 / 发起借阅的单次条数上限(接口侧限制)。 */
8
+ export const MAX_BORROW_ITEMS = 6;
9
+ /** 发起借阅流程创建页的流程 ID(前端 `flowpage/fullCreate/<flowId>`)。 */
10
+ export const BORROW_FLOW_ID = '100003460000002090';
11
+ /** 借阅车记录 `fb` 即界面「分部」列:0 = 泛微、1 = 契约锁。 */
12
+ export const FLOW_FB_LABELS = {
13
+ '0': '泛微',
14
+ '1': '契约锁',
15
+ };
16
+ /** 档案系统:按合同号定位档案的自定义接口标识。 */
17
+ export const ARCHIVE_LOCATE_INTERFACE_PK = 'getArcIdByContractNo';
18
+ export const ARCHIVE_LOCATE_PATH = `/api/ebuilder/form/formdata/v2/getFormDataList/${ARCHIVE_LOCATE_INTERFACE_PK}`;
19
+ /** 泛微商务合同(案例台账)。 */
20
+ export const WEAVER_CONTRACT = {
21
+ source: 'weaver',
22
+ passId: '850741972510941185',
23
+ listId: '850741985437786120',
24
+ filterListId: '850741985437786120',
25
+ cusMenuId: '5408862605522555751',
26
+ urlPageTitle: '5rOb5b6u5qGI5L6L',
27
+ };
28
+ export const WEAVER_BORROW_CAR = {
29
+ source: 'weaver',
30
+ passId: '882393476189437952',
31
+ listId: '882393480417296390',
32
+ cusMenuId: '5408862605522555751',
33
+ urlPageTitle: '5rOb5b6u5qGI5L6L',
34
+ };
35
+ export const WEAVER_ESB_ADD = {
36
+ source: 'weaver',
37
+ esbActionIds: '882395911377174530',
38
+ objId: '850741972510941185',
39
+ listId: '850741985437786120',
40
+ successText: '【加入借阅车】执行成功!',
41
+ };
42
+ /** 契约锁协作采纳(用户常称「案例」)。 */
43
+ export const QYS_CONTRACT = {
44
+ source: 'qys',
45
+ passId: '850742853046345728',
46
+ listId: '1190611964371984450',
47
+ cusMenuId: '5408862605522555752',
48
+ urlPageTitle: '5aWR57qm6ZSB5qGI5L6L',
49
+ };
50
+ export const QYS_BORROW_CAR = {
51
+ source: 'qys',
52
+ passId: '882393476189437952',
53
+ listId: '883819516961857839',
54
+ cusMenuId: '5408862605522555752',
55
+ urlPageTitle: '5aWR57qm6ZSB5qGI5L6L',
56
+ };
57
+ export const QYS_ESB_ADD = {
58
+ source: 'qys',
59
+ esbActionIds: '892706856573648911',
60
+ objId: '850742853046345728',
61
+ listId: '1190611964371984450',
62
+ successText: '【契约锁加入借阅车】执行成功!',
63
+ };
64
+ /** 契约锁默认过滤「处理进度 = 已归档」。 */
65
+ export const QYS_DEFAULT_ARCHIVED_FIELD = 'cljd';
66
+ export const QYS_DEFAULT_ARCHIVED_VALUE = '已归档';
@@ -0,0 +1,70 @@
1
+ import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
2
+ import { existsSync } from 'node:fs';
3
+ import { chmod, mkdir, readFile, writeFile } from 'node:fs/promises';
4
+ import { homedir } from 'node:os';
5
+ import { resolve } from 'node:path';
6
+ import { archiveOaValidationError } from './errors.js';
7
+ function stateRoot(ctx) {
8
+ const configured = ctx?.config?.path();
9
+ if (configured)
10
+ return resolve(configured, '..');
11
+ return process.env.WEAVER_WORK_CLI_HOME || process.env.WORK_CLI_HOME || resolve(homedir(), '.weaver-work-cli');
12
+ }
13
+ async function loadKey(ctx) {
14
+ const keysDir = resolve(stateRoot(ctx), 'keys');
15
+ const filename = resolve(keysDir, 'archive-oa-continuation.key');
16
+ await mkdir(keysDir, { recursive: true, mode: 0o700 });
17
+ if (existsSync(filename))
18
+ return readFile(filename);
19
+ const key = randomBytes(32);
20
+ try {
21
+ await writeFile(filename, key, { flag: 'wx', mode: 0o600 });
22
+ if (process.platform !== 'win32')
23
+ await chmod(filename, 0o600).catch(() => undefined);
24
+ return key;
25
+ }
26
+ catch {
27
+ return readFile(filename);
28
+ }
29
+ }
30
+ function encode(value) {
31
+ return Buffer.from(JSON.stringify(value)).toString('base64url');
32
+ }
33
+ function signature(payload, key) {
34
+ return createHmac('sha256', key).update(payload).digest('base64url');
35
+ }
36
+ export function createArchiveOaContinuationSigner(ctx) {
37
+ return {
38
+ async issue(payload, ttlMs = 10 * 60_000) {
39
+ const issuedAt = Date.now();
40
+ const body = encode({ ...payload, issuedAt, expiresAt: issuedAt + ttlMs });
41
+ const sig = signature(body, await loadKey(ctx));
42
+ return `${body}.${sig}`;
43
+ },
44
+ async verify(token, expectedOperation) {
45
+ if (typeof token !== 'string' || !token.includes('.')) {
46
+ throw archiveOaValidationError('continuation_invalid', 'continuation 无效');
47
+ }
48
+ const [body, provided] = token.split('.');
49
+ const expected = signature(body, await loadKey(ctx));
50
+ const valid = provided.length === expected.length
51
+ && timingSafeEqual(Buffer.from(provided), Buffer.from(expected));
52
+ if (!valid)
53
+ throw archiveOaValidationError('continuation_invalid', 'continuation 签名校验失败');
54
+ let value;
55
+ try {
56
+ value = JSON.parse(Buffer.from(body, 'base64url').toString('utf8'));
57
+ }
58
+ catch {
59
+ throw archiveOaValidationError('continuation_invalid', 'continuation 内容无法解析');
60
+ }
61
+ if (value.operation !== expectedOperation) {
62
+ throw archiveOaValidationError('continuation_mismatch', 'continuation 不属于当前操作');
63
+ }
64
+ if (!Number.isSafeInteger(value.expiresAt) || value.expiresAt < Date.now()) {
65
+ throw archiveOaValidationError('continuation_expired', 'continuation 已过期');
66
+ }
67
+ return value;
68
+ },
69
+ };
70
+ }
@@ -0,0 +1,53 @@
1
+ import { CliError, ExitCode } from '../../core/errors.js';
2
+ export class ArchiveOaCliError extends CliError {
3
+ type;
4
+ subtype;
5
+ code;
6
+ retryable;
7
+ stage;
8
+ details;
9
+ partialData;
10
+ constructor(type, subtype, message, options = {}) {
11
+ super(message, options.exitCode ?? ExitCode.InternalError);
12
+ this.name = 'ArchiveOaCliError';
13
+ this.type = type;
14
+ this.subtype = subtype;
15
+ this.code = options.code;
16
+ this.retryable = options.retryable ?? false;
17
+ this.stage = options.stage;
18
+ this.details = options.details;
19
+ this.partialData = options.partialData;
20
+ }
21
+ }
22
+ export function archiveOaValidationError(subtype, message, details) {
23
+ return new ArchiveOaCliError('validation', subtype, message, {
24
+ details,
25
+ exitCode: ExitCode.UsageError,
26
+ });
27
+ }
28
+ export function archiveOaAuthError(subtype, message, details) {
29
+ return new ArchiveOaCliError('authentication', subtype, message, {
30
+ details,
31
+ exitCode: ExitCode.AuthError,
32
+ });
33
+ }
34
+ export function archiveOaNetworkError(subtype, message, options = {}) {
35
+ return new ArchiveOaCliError('network', subtype, message, {
36
+ ...options,
37
+ retryable: options.retryable ?? true,
38
+ exitCode: ExitCode.NetworkError,
39
+ });
40
+ }
41
+ export function archiveOaConfirmationError(action, details) {
42
+ return new ArchiveOaCliError('confirmation', 'required', '该操作需要明确确认', {
43
+ details: { action, ...details },
44
+ exitCode: ExitCode.ConfirmationRequired,
45
+ });
46
+ }
47
+ export function archiveOaPartialError(message, partialData, details) {
48
+ return new ArchiveOaCliError('partial', 'write_uncertain', message, {
49
+ details,
50
+ partialData,
51
+ exitCode: ExitCode.Partial,
52
+ });
53
+ }