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
package/README.md CHANGED
@@ -211,32 +211,41 @@ weaver-work-cli auth login --base-url "https://weapp.xxx.cn"
211
211
  weaver-work-cli auth oidc --base-url "https://weapp.xxx.cn"
212
212
  ```
213
213
 
214
- 只有当前智能体身份明确为 XiaoE 时,`auth xiaoe` 和未显式指定认证来源的业务命令才会优先使用平台注入的
215
- `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 换取 ETEAMSID:其中 `XIAOE_DOMAIN` 是
216
- XiaoE/erpa 换票服务地址,不是 E10 登录地址。CLI 的 Node 实现会直接调用与
217
- `xiaoe_env.py` / `tokens.py` 相同的换票接口,并校验业务码和 `data.eteamId`;它保留
218
- 系统 CA 校验,且只允许同源重定向或同主机 HTTP→HTTPS 升级。平台凭证不可用时,
219
- CLI 会先在内部调用 npm 包自带的 `scripts/xiaoe_env.py` 兼容路径,再按顺序尝试
220
- 宿主 `xiaoeUserData/tokens.py`、桌面 XiaoE 客户端当前会话
221
- (`XiaoE/Robots/<id>/user_settings.json`)和 `WEAVER_XIAOE_*` 环境映射。
222
- `xiaoe_env.py` 由 CLI 独占执行并解析,不放进 shared Skill,也不把 stdout 凭证暴露给
223
- Agent;Skill 只负责调用 `weaver-work-cli auth xiaoe`。CLI 自带脚本仅依赖 Python
224
- 标准库,仍保持 TLS 证书校验,不会采用关闭证书校验的回退。
225
-
226
- E10 目标地址按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 →
227
- 当前 profile → `https://www.e-cology.com.cn`”解析,绝不会把 `XIAOE_DOMAIN`
228
- 当作 E10 地址。匹配成功时直接保存登录态,并固定使用 `agentType=XiaoE`。业务命令
229
- 在已确认的 XiaoE 智能体环境中且未显式指定 `--auth` / `--profile` 时,也会自动优先尝试 XiaoE 统一登录。
230
- `auth xiaoe` 失败后仅在 macOS/Windows 桌面宿主自动降级浏览器 OAuth;Web/Linux
231
- 环境会返回结构化的 `authentication/xiaoe_web_credential_unavailable` 错误,不再
232
- 启动无法回调的 localhost 浏览器登录。确需浏览器授权时,应在可接收本地回调的宿主
233
- 显式运行 `auth login`。也可以显式使用:
214
+ XiaoE 环境保留两种识别入口:桌面客户端由 Agent 根据宿主/任务的明确上下文判断,并在
215
+ 业务命令上传 `--runtime-agent xiaoe`;网页端沿用原有环境变量规则,成对的
216
+ `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 会被识别为 XiaoE。判定为 XiaoE 后,Agent 显式执行:
234
217
 
235
218
  ```text
236
219
  weaver-work-cli auth xiaoe
237
220
  ```
238
221
 
239
- `auth login` / `auth oidc` 始终是纯浏览器 OAuth 入口。本机存在 `xiaoeUserData/tokens.py`、XiaoE 客户端目录、`XIAOE_SKILL_*` 或 `WEAVER_XIAOE_*` 配置,都不能单独证明当前智能体是 XiaoE,也不会让 WorkBuddy、Codex 或其他智能体切换到 XiaoE 登录。
222
+ `auth xiaoe` 本身就是认证方式的显式选择。`hasXiaoEEnv` 通过桌面端显式参数或网页端原有
223
+ 环境变量规则判断;工作目录、客户端文件或历史登录仍不作为依据。CLI 按顺序消费平台凭据、CLI 自带兼容脚本、宿主 `tokens.py`、
224
+ 桌面 XiaoE 客户端会话和 `WEAVER_XIAOE_*` 映射。`XIAOE_DOMAIN` 是 XiaoE/erpa 换票
225
+ 服务地址,不是 E10 地址。E10 目标按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*`
226
+ E10 配置/映射 → 当前 profile → `https://www.e-cology.com.cn`”解析。
227
+
228
+ 统一登录失败时,所有操作系统都返回结构化的
229
+ `authentication/xiaoe_credential_unavailable`,不会自动打开浏览器或降级到
230
+ `auth login`。确需浏览器授权时,调用方必须另行显式执行 `auth login`。
231
+
232
+ 业务命令不会自动建立 XiaoE 登录态。桌面客户端需要 XiaoE 专属业务行为时,把全局参数
233
+ 放在业务子命令之前,例如:
234
+
235
+ ```text
236
+ weaver-work-cli --runtime-agent xiaoe workflow ...
237
+ ```
238
+
239
+ 网页端不要求补这个参数,仍由环境变量规则识别。`--runtime-agent` 只表示当前运行时类型,
240
+ 不携带也不选择凭据。`auth login` / `auth oidc`
241
+ 始终是纯浏览器 OAuth 入口,不会读取 XiaoE 凭据。
242
+
243
+ `auth xiaoe` 会先输出不含凭证的 preflight 摘要,显示 `authMode=xiaoe`、
244
+ `credentialSourceDetected`、`attempted` 及各凭据源检测结果;命中 `tokens.py` 或内置
245
+ Node 客户端会话路径时还会输出明确的尝试日志。统一登录成功后,登录结果以及后续
246
+ `auth status` 会显示 `credentialSourceStep`、`credentialSourceType`、
247
+ `credentialSourceLabel`,可据此确认实际凭证来源;`3 / xiaoe_client / XiaoE client settings`
248
+ 表示未依赖 `tokens.py`,由 Node 直接换票。
240
249
 
241
250
  默认本地回调地址为 `http://127.0.0.1:19800/callback`。如果端口被占用:
242
251
 
package/dist/cmd/root.js CHANGED
@@ -29,6 +29,7 @@ export function createProgram() {
29
29
  .option('--config <path>', 'use a custom weaver-work-cli config file')
30
30
  .option('--auth <path>', 'use a specific E10 auth file')
31
31
  .option('--profile <name>', 'use a specific E10 profile')
32
+ .option('--runtime-agent <name>', 'identify the current agent runtime (for example: xiaoe)')
32
33
  .option('--is-connector [value]', 'run as the WorkBuddy connector: use the fixed E10 profile managed by the connector')
33
34
  .option('--base-url <url>', 'override E10 base URL')
34
35
  .option('--passport-url <url>', 'override E10 passport URL');
@@ -233,6 +233,58 @@ function fitEnvelope(value, leading, extraWarnings, budgetBytes) {
233
233
  warnings: [...extraWarnings, 'stdout_compacted'],
234
234
  };
235
235
  }
236
+ /**
237
+ * stdout 序列化:默认 `JSON.stringify(value, null, 2)`;给了 `compactPaths` 时,**只有**命中这些
238
+ * 路径的子树改成单行(紧凑)输出,其余照旧缩进。
239
+ *
240
+ * 为什么需要它:像 `historyRequestData` 这种「每条都长、层级又深」的数组,缩进空白能吃掉近 1/4
241
+ * 体积(真机实测:该键 13,017 B → 9,835 B,整份 21,620 B → 18,438 B),而它对读模型的**可读性
242
+ * 收益为零**——模型要的是"哪条历史、哪个字段、什么值",不是每层两个空格。
243
+ *
244
+ * **内容一字不改**:输出仍是合法 JSON,parse 出来的对象与全缩进版**完全一致**(只是空白不同),
245
+ * 消费端不需要任何改动;结构也保持数组/对象原样,不会退化成"需要再 parse 一次的字符串"。
246
+ *
247
+ * 路径口径:从信封根算起的点分路径(如 `data.historyRequestData`),**精确匹配**、不递归下钻。
248
+ * 实现用「占位符摘出 → 紧凑序列化 → 文本替换回填」,而**不是**自己递归拼 JSON:标量转义、
249
+ * `undefined` 键丢弃、数组里 `undefined` 补 `null`、`toJSON` 这些细节全部沿用 `JSON.stringify`
250
+ * 的原生行为,避免手写序列化器在边角上与原输出分叉。
251
+ */
252
+ export function stringifyForStdout(value, compactPaths) {
253
+ const wanted = new Set((compactPaths ?? []).filter((path) => typeof path === 'string' && path !== ''));
254
+ const plain = JSON.stringify(value, null, 2);
255
+ if (!wanted.size || plain === undefined)
256
+ return plain;
257
+ // 占位符必须不可能与真实内容撞车:随机盐 + 对已序列化文本做一次包含检查(撞了就换一个)。
258
+ let salt = '';
259
+ do {
260
+ salt = `__WEAVER_COMPACT_${Math.random().toString(36).slice(2, 12)}__`;
261
+ } while (plain.includes(salt));
262
+ const compacted = [];
263
+ const swap = (node, path) => {
264
+ if (node !== null && typeof node === 'object' && wanted.has(path)) {
265
+ const inline = JSON.stringify(node);
266
+ if (inline !== undefined) {
267
+ compacted.push(inline);
268
+ return `${salt}${compacted.length - 1}__`;
269
+ }
270
+ }
271
+ if (Array.isArray(node))
272
+ return node.map((item, index) => swap(item, `${path}[${index}]`));
273
+ if (node !== null && typeof node === 'object') {
274
+ const out = {};
275
+ for (const [key, item] of Object.entries(node)) {
276
+ out[key] = swap(item, path ? `${path}.${key}` : key);
277
+ }
278
+ return out;
279
+ }
280
+ return node;
281
+ };
282
+ const swapped = JSON.stringify(swap(value, ''), null, 2);
283
+ if (typeof swapped !== 'string')
284
+ return swapped;
285
+ // 占位符在文本里是一个普通字符串字面量(`"__WEAVER_COMPACT_xxx__0__"`),整体替换成紧凑 JSON。
286
+ return swapped.replace(new RegExp(`"${salt}(\\d+)__"`, 'g'), (_match, index) => compacted[Number(index)] ?? 'null');
287
+ }
236
288
  export class Output {
237
289
  ctx;
238
290
  constructor(ctx) {
@@ -245,7 +297,7 @@ export class Output {
245
297
  console.log(options.text);
246
298
  return;
247
299
  }
248
- console.log(JSON.stringify(this.prepare(value, options), null, 2));
300
+ console.log(stringifyForStdout(this.prepare(value, options), options.compactPaths));
249
301
  }
250
302
  prepare(value, options) {
251
303
  const threshold = resultThresholdBytes(this.ctx);
@@ -0,0 +1,19 @@
1
+ const XIAOE_RUNTIME_AGENT_ALIASES = new Set([
2
+ 'xiaoe',
3
+ 'xiaoeclient',
4
+ '小e',
5
+ '小e客户端',
6
+ '智能小e',
7
+ '智能小e客户端',
8
+ ]);
9
+ export function normalizeRuntimeAgent(value) {
10
+ if (typeof value !== 'string')
11
+ return '';
12
+ return value.toLowerCase().replace(/[^a-z0-9\p{Script=Han}]+/gu, '');
13
+ }
14
+ export function isXiaoERuntimeAgent(value) {
15
+ return XIAOE_RUNTIME_AGENT_ALIASES.has(normalizeRuntimeAgent(value));
16
+ }
17
+ export function isXiaoERuntime(options) {
18
+ return isXiaoERuntimeAgent(options?.runtimeAgent);
19
+ }
@@ -5,8 +5,8 @@ import { CliError, ExitCode } from '../../../core/errors.js';
5
5
  import { clearInvoiceTokenForSession } from '../../../shortcuts/invoice/host.js';
6
6
  import { buildE10CookieHeader, E10AuthSession, clearProfileAuthFile, extractRawSetCookie, extractSessionTicket, findAuthFile, getActiveProfile, getProfileAuthPath, getProfileDir, listProfiles, profileNameFromUrl, readProfileConfig, readTeamsCheckUserInfo, saveAuthFile, saveProfileConfig, setActiveProfile, switchActiveProfile, } from './session.js';
7
7
  import { getE10AuthRoot } from './paths.js';
8
- import { XIAOE_AGENT_TYPE, createXiaoEUnifiedLoginUnavailableError, hasXiaoEEnv, resolveXiaoEPreferredBaseUrl, shouldUseXiaoEBrowserFallback, tryXiaoEUnifiedLogin as tryXiaoEUnifiedSessionLogin, } from './xiaoe.js';
9
- export { DEFAULT_E10_BASE_URL, XIAOE_AGENT_TYPE, hasXiaoEEnv, hasXiaoETokenScript, resolveXiaoEDefaultBaseUrl, resolveXiaoEPreferredBaseUrl, resolveXiaoEUnifiedLoginCredential, shouldUseXiaoEBrowserFallback, } from './xiaoe.js';
8
+ import { XIAOE_AGENT_TYPE, createXiaoEUnifiedLoginUnavailableError, hasXiaoEEnv, inspectXiaoEUnifiedLoginSources, resolveXiaoEPreferredBaseUrl, tryXiaoEUnifiedLogin as tryXiaoEUnifiedSessionLogin, } from './xiaoe.js';
9
+ export { DEFAULT_E10_BASE_URL, XIAOE_AGENT_TYPE, hasXiaoEEnv, hasXiaoETokenScript, hasXiaoEUnifiedLoginSource, inspectXiaoEUnifiedLoginSources, resolveXiaoEDefaultBaseUrl, resolveXiaoEPreferredBaseUrl, resolveXiaoEUnifiedLoginCredential, } from './xiaoe.js';
10
10
  const DEFAULT_AGENT_TYPE = 'weaver-work-cli';
11
11
  const EXPLICIT_AGENT_TYPE_ENV_KEYS = [
12
12
  'WORKBUDDY_AGENT_TYPE',
@@ -192,6 +192,10 @@ function formatAuthStatus(status) {
192
192
  'baseUrl: ' + status.baseUrl,
193
193
  'profile: ' + status.profile,
194
194
  'authFile: ' + status.authFile,
195
+ ...('loginSource' in status && status.loginSource ? ['loginSource: ' + status.loginSource] : []),
196
+ ...('credentialSourceStep' in status && status.credentialSourceStep ? ['credentialSourceStep: ' + status.credentialSourceStep] : []),
197
+ ...('credentialSourceType' in status && status.credentialSourceType ? ['credentialSourceType: ' + status.credentialSourceType] : []),
198
+ ...('credentialSourceLabel' in status && status.credentialSourceLabel ? ['credentialSourceLabel: ' + status.credentialSourceLabel] : []),
195
199
  ];
196
200
  if ('valid' in status) {
197
201
  lines.push('valid: ' + String(status.valid));
@@ -476,13 +480,16 @@ async function oidcExchange(code, redirectUri, baseUrl, tenantKeyFallback, agent
476
480
  version,
477
481
  };
478
482
  }
479
- function xiaoEUnifiedLoginUnavailableMessage(baseUrl, willOpenBrowser) {
483
+ function xiaoEUnifiedLoginUnavailableMessage(baseUrl, attempted) {
480
484
  return [
481
- willOpenBrowser
482
- ? '未获取到可用的 XiaoE 统一登录信息,准备降级打开网页登录。'
483
- : '未获取到可用的 XiaoE 统一登录信息;当前 Web/Linux 环境不支持本机浏览器回调,已停止自动降级。',
485
+ attempted
486
+ ? 'XiaoE 统一登录已尝试,但未获取到可用会话。'
487
+ : '未检测到可用的 XiaoE 统一登录凭据源,本次未尝试统一登录。',
488
+ '`auth xiaoe` 不会降级到浏览器 OAuth。',
484
489
  baseUrl ? `当前 E10 baseUrl: ${baseUrl}。` : '未从 XiaoE 凭证中解析到 E10 baseUrl。',
485
- 'CLI 已依次尝试平台注入凭证的 Node 换票、CLI 内置 xiaoe_env.py 兼容换票、宿主 xiaoeUserData/tokens.py、桌面 XiaoE 客户端凭证(XiaoE/Robots/*/user_settings.json)和 WEAVER_XIAOE_* 环境映射。',
490
+ attempted
491
+ ? 'CLI 已依次尝试平台注入凭证的 Node 换票、CLI 内置 xiaoe_env.py 兼容换票、宿主 xiaoeUserData/tokens.py、桌面 XiaoE 客户端凭证(XiaoE/Robots/*/user_settings.json)和 WEAVER_XIAOE_* 环境映射。'
492
+ : 'CLI 已检查平台注入凭证、宿主 xiaoeUserData/tokens.py、桌面 XiaoE 客户端凭证(XiaoE/Robots/*/user_settings.json)和 WEAVER_XIAOE_* 环境映射。',
486
493
  'CLI 会优先使用 XiaoE 客户端内置 Python 执行 tokens.py;自动发现不可用时,可用 WEAVER_XIAOE_TOKEN_SCRIPT_PYTHON 指定兼容解释器。',
487
494
  ].join(' ');
488
495
  }
@@ -492,32 +499,60 @@ async function runBrowserLogin(ctx, options, behavior = {}) {
492
499
  const profileFromGlobal = globalOptions.profile;
493
500
  const cfg = readProfileConfig(profileFromGlobal || getActiveProfile());
494
501
  const explicitBaseUrl = optionString(commandOpts, 'baseUrl') || globalOptions.baseUrl || '';
495
- const useXiaoELogin = behavior.tryXiaoEUnifiedLogin === true && hasXiaoEEnv(ctx.env);
496
- const baseUrl = useXiaoELogin
497
- ? resolveXiaoEPreferredBaseUrl({
498
- explicitBaseUrl,
499
- profileBaseUrl: cfg.baseUrl,
502
+ const preferredXiaoEBaseUrl = resolveXiaoEPreferredBaseUrl({
503
+ explicitBaseUrl,
504
+ profileBaseUrl: cfg.baseUrl,
505
+ env: ctx.env,
506
+ });
507
+ const xiaoESources = behavior.tryXiaoEUnifiedLogin === true
508
+ ? inspectXiaoEUnifiedLoginSources({
500
509
  env: ctx.env,
510
+ baseUrl: preferredXiaoEBaseUrl,
511
+ profileBaseUrl: cfg.baseUrl,
512
+ allowTokenScript: behavior.allowXiaoETokenScript === true,
501
513
  })
514
+ : {
515
+ platformCredential: false,
516
+ tokenScript: false,
517
+ clientCredential: false,
518
+ environmentCredential: false,
519
+ any: false,
520
+ };
521
+ const useXiaoELogin = behavior.tryXiaoEUnifiedLogin === true && xiaoESources.any;
522
+ const baseUrl = behavior.tryXiaoEUnifiedLogin
523
+ ? preferredXiaoEBaseUrl
502
524
  : normalizeUrl(explicitBaseUrl || cfg.baseUrl || '');
503
525
  const tenantKey = optionString(commandOpts, 'tenantKey');
504
526
  const portText = optionString(commandOpts, 'port') || '19800';
505
527
  const port = Number.parseInt(portText, 10);
506
528
  const explicitAgentType = optionString(commandOpts, 'agentType', 'agent_type');
507
- const agentType = resolveAgentType(commandOpts, ctx.env);
529
+ const agentType = useXiaoELogin
530
+ ? optionString(commandOpts, 'agentType', 'agent_type') || XIAOE_AGENT_TYPE
531
+ : resolveAgentType(commandOpts, ctx.env);
508
532
  if (!Number.isInteger(port) || port <= 0 || port > 65535) {
509
533
  throw new CliError('Invalid --port value', ExitCode.UsageError);
510
534
  }
535
+ if (behavior.tryXiaoEUnifiedLogin) {
536
+ ctx.logger.info([
537
+ 'XiaoE unified login preflight:',
538
+ 'authMode=xiaoe',
539
+ `credentialSourceDetected=${String(xiaoESources.any)}`,
540
+ `attempted=${String(useXiaoELogin)}`,
541
+ `platformCredentialDetected=${String(xiaoESources.platformCredential)}`,
542
+ `tokenScriptDetected=${String(xiaoESources.tokenScript)}`,
543
+ `clientSettingsDetected=${String(xiaoESources.clientCredential)}`,
544
+ `environmentCredentialDetected=${String(xiaoESources.environmentCredential)}`,
545
+ `baseUrl=${baseUrl || '(unresolved)'}`,
546
+ ].join(' '));
547
+ }
511
548
  if (useXiaoELogin) {
512
549
  const xiaoEResult = await tryXiaoEUnifiedLogin(ctx, baseUrl, tenantKey, profileFromGlobal, behavior.allowXiaoETokenScript === true);
513
550
  if (xiaoEResult)
514
551
  return xiaoEResult;
515
552
  }
516
- const willOpenBrowser = !useXiaoELogin
517
- || behavior.browserFallback !== 'desktop-only'
518
- || shouldUseXiaoEBrowserFallback();
519
- if (useXiaoELogin && behavior.explainXiaoEFallback) {
520
- ctx.logger.warn(xiaoEUnifiedLoginUnavailableMessage(baseUrl, willOpenBrowser));
553
+ const willOpenBrowser = behavior.browserFallback !== 'never';
554
+ if (behavior.tryXiaoEUnifiedLogin && behavior.explainXiaoEFallback) {
555
+ ctx.logger.warn(xiaoEUnifiedLoginUnavailableMessage(baseUrl, useXiaoELogin));
521
556
  }
522
557
  if (!willOpenBrowser) {
523
558
  throw createXiaoEUnifiedLoginUnavailableError(baseUrl);
@@ -699,15 +734,15 @@ function formatWhoami(title, data) {
699
734
  ].join('\n');
700
735
  }
701
736
  function registerBrowserLoginCommand(auth, action, name, description, behavior = {}) {
702
- auth.command(name)
737
+ const command = auth.command(name)
703
738
  .description(description)
704
739
  .option('--base-url <url>', 'E10 base URL')
705
740
  .option('--tenant-key <key>', 'Tenant key fallback after login')
706
741
  .option('--port <n>', 'Local OAuth callback port', '19800')
707
742
  .option('--agent_type <value>', 'Agent type sent to E10 authorize endpoint')
708
743
  .option('--agent-type <value>', 'Alias of --agent_type')
709
- .option('--agent-return-url <url>', 'Desktop application URL linked by the login success page')
710
- .action(action(async (ctx, options) => {
744
+ .option('--agent-return-url <url>', 'Desktop application URL linked by the login success page');
745
+ command.action(action(async (ctx, options) => {
711
746
  const result = await runBrowserLogin(ctx, options, behavior);
712
747
  ctx.output.write(result, { text: formatLoginResult(result) });
713
748
  }));
@@ -793,11 +828,11 @@ export function registerE10AuthCommands(parent, action) {
793
828
  }));
794
829
  registerBrowserLoginCommand(auth, action, 'login', 'Open browser OAuth2.0 login and save E10 auth');
795
830
  registerBrowserLoginCommand(auth, action, 'oidc', 'Alias of auth login for OAuth2.0 browser login');
796
- registerBrowserLoginCommand(auth, action, 'xiaoe', 'Try XiaoE unified login and explain before browser OAuth fallback', {
831
+ registerBrowserLoginCommand(auth, action, 'xiaoe', 'Use XiaoE unified login without browser OAuth fallback', {
797
832
  tryXiaoEUnifiedLogin: true,
798
833
  allowXiaoETokenScript: true,
799
834
  explainXiaoEFallback: true,
800
- browserFallback: 'desktop-only',
835
+ browserFallback: 'never',
801
836
  });
802
837
  auth.command('logout')
803
838
  .alias('clear')
@@ -1,7 +1,7 @@
1
1
  import { createCipheriv, createDecipheriv, randomBytes } from 'node:crypto';
2
2
  import { existsSync, mkdirSync, readFileSync } from 'node:fs';
3
+ import { createRequire } from 'node:module';
3
4
  import { resolve } from 'node:path';
4
- import { Entry as KeyringEntry } from '@napi-rs/keyring';
5
5
  import { writeWithRetry } from '../../../core/write-with-retry.js';
6
6
  import { getE10AuthRoot } from './paths.js';
7
7
  const ALGORITHM = 'aes-256-gcm';
@@ -9,11 +9,40 @@ const IV_LENGTH = 12;
9
9
  const TAG_LENGTH = 16;
10
10
  const KEYCHAIN_SERVICE = 'weaver-work-cli';
11
11
  const KEYCHAIN_ACCOUNT = 'auth-key';
12
+ const require = createRequire(import.meta.url);
12
13
  let encKey = null;
14
+ let keyringEntryConstructor;
13
15
  function getKeyFilePath() {
14
16
  return resolve(getE10AuthRoot(), '.key');
15
17
  }
18
+ /**
19
+ * Load the native keyring binding only when auth encryption actually needs it.
20
+ *
21
+ * A top-level ESM import would dlopen the platform binary while the CLI command
22
+ * tree is being initialized. If a native dependency is unavailable (for
23
+ * example VCRUNTIME140.dll on Windows), even unrelated commands such as
24
+ * `--version` would terminate before the file-key fallback could run.
25
+ */
26
+ function loadKeyringEntryConstructor() {
27
+ if (keyringEntryConstructor !== undefined)
28
+ return keyringEntryConstructor;
29
+ try {
30
+ const module = require('@napi-rs/keyring');
31
+ keyringEntryConstructor = typeof module.Entry === 'function'
32
+ ? module.Entry
33
+ : null;
34
+ }
35
+ catch {
36
+ // Missing packages, native dlopen failures and unavailable platform
37
+ // backends all use the existing encrypted file-key fallback.
38
+ keyringEntryConstructor = null;
39
+ }
40
+ return keyringEntryConstructor;
41
+ }
16
42
  function readKeychainKey(service) {
43
+ const KeyringEntry = loadKeyringEntryConstructor();
44
+ if (!KeyringEntry)
45
+ return null;
17
46
  try {
18
47
  const entry = new KeyringEntry(service, KEYCHAIN_ACCOUNT);
19
48
  const stored = entry.getPassword();
@@ -28,6 +57,19 @@ function readKeychainKey(service) {
28
57
  }
29
58
  return null;
30
59
  }
60
+ function writeKeychainKey(service, key) {
61
+ const KeyringEntry = loadKeyringEntryConstructor();
62
+ if (!KeyringEntry)
63
+ return false;
64
+ try {
65
+ const entry = new KeyringEntry(service, KEYCHAIN_ACCOUNT);
66
+ entry.setPassword(key.toString('base64'));
67
+ return true;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
31
73
  function readKeyFile(filePath) {
32
74
  if (!existsSync(filePath))
33
75
  return null;
@@ -47,23 +89,21 @@ function getEncKey() {
47
89
  encKey = storedKey;
48
90
  return encKey;
49
91
  }
50
- try {
51
- const fresh = randomBytes(32);
52
- const entry = new KeyringEntry(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT);
53
- entry.setPassword(fresh.toString('base64'));
54
- encKey = fresh;
55
- return encKey;
56
- }
57
- catch {
58
- // Keychain may be unavailable in headless environments; fall back to a 0600 file.
59
- }
92
+ // Reuse a previously created fallback key before generating a new keychain
93
+ // value. This keeps existing auth files decryptable if keyring availability
94
+ // changes between CLI runs.
60
95
  const keyFile = getKeyFilePath();
61
96
  const fileKey = readKeyFile(keyFile);
62
97
  if (fileKey) {
63
98
  encKey = fileKey;
64
99
  return encKey;
65
100
  }
66
- encKey = randomBytes(32);
101
+ const fresh = randomBytes(32);
102
+ if (writeKeychainKey(KEYCHAIN_SERVICE, fresh)) {
103
+ encKey = fresh;
104
+ return encKey;
105
+ }
106
+ encKey = fresh;
67
107
  mkdirSync(getE10AuthRoot(), { recursive: true });
68
108
  writeWithRetry(keyFile, encKey.toString('base64'), { mode: 0o600 });
69
109
  return encKey;