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.
- package/README.md +30 -21
- package/dist/cmd/root.js +1 -0
- package/dist/core/output.js +53 -1
- package/dist/core/runtime-agent.js +19 -0
- package/dist/internal/e10/auth/commands.js +58 -23
- package/dist/internal/e10/auth/crypto.js +52 -12
- package/dist/internal/e10/auth/xiaoe.js +145 -53
- package/dist/internal/e10/context.js +5 -27
- package/dist/shortcuts/archive-oa/constants.js +66 -0
- package/dist/shortcuts/archive-oa/continuation.js +70 -0
- package/dist/shortcuts/archive-oa/errors.js +53 -0
- package/dist/shortcuts/archive-oa/host.js +157 -0
- package/dist/shortcuts/archive-oa/index.js +225 -0
- package/dist/shortcuts/archive-oa/manifest.js +62 -0
- package/dist/shortcuts/archive-oa/operations/borrow-car.js +159 -0
- package/dist/shortcuts/archive-oa/operations/borrow-url.js +108 -0
- package/dist/shortcuts/archive-oa/operations/confirm.js +48 -0
- package/dist/shortcuts/archive-oa/operations/contract.js +120 -0
- package/dist/shortcuts/archive-oa/operations/locate.js +50 -0
- package/dist/shortcuts/archive-oa/operations/registry.js +40 -0
- package/dist/shortcuts/archive-oa/operations/shared.js +181 -0
- package/dist/shortcuts/archive-oa/operations/types.js +45 -0
- package/dist/shortcuts/archive-oa/operations.js +13 -0
- package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
- package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
- package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
- package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
- package/dist/shortcuts/index.js +2 -0
- package/dist/shortcuts/invoice/host.js +2 -1
- package/dist/shortcuts/invoice/manifest.js +111 -0
- package/dist/shortcuts/invoice/operations/issuing-qys.js +361 -0
- package/dist/shortcuts/invoice/operations/issuing.js +5 -5
- package/dist/shortcuts/invoice/operations/registry.js +4 -0
- package/dist/shortcuts/workflow/endpoints.js +11 -0
- package/dist/shortcuts/workflow/host.js +2 -2
- package/dist/shortcuts/workflow/index.js +25 -1
- package/dist/shortcuts/workflow/operations/chatscene.js +270 -0
- package/dist/shortcuts/workflow/operations/form.js +2128 -244
- package/dist/shortcuts/workflow/operations/read.js +186 -41
- package/dist/shortcuts/workflow/operations/shared.js +25 -0
- package/dist/shortcuts/workflow/operations/sign-input.js +106 -0
- package/dist/shortcuts/workflow/operations/write.js +9 -1
- package/dist/shortcuts/workflow/stdout-compact.js +41 -0
- package/docs/archive-oa.md +79 -0
- package/docs/caizhilian.md +4 -3
- package/docs/e10-auth.md +13 -5
- package/node_modules/@napi-rs/keyring/LICENSE +21 -0
- package/node_modules/@napi-rs/keyring/README.md +19 -0
- package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
- package/node_modules/@napi-rs/keyring/index.js +514 -0
- package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
- package/node_modules/@napi-rs/keyring/keytar.js +26 -0
- package/node_modules/@napi-rs/keyring/package.json +125 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1149 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2662 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +709 -0
- package/node_modules/commander/lib/option.js +367 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +82 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +1045 -0
- package/package.json +5 -1
- package/skill-template/business-info.json +16 -0
- package/skill-template/domains/archive-oa.md +19 -0
- package/skill-template/domains/yepiaotong.md +2 -2
- package/skills/weaver-e10-archive-oa/SKILL.md +159 -0
- package/skills/weaver-e10-archive-oa/references/archive-locate.md +49 -0
- package/skills/weaver-e10-archive-oa/references/borrow-car.md +76 -0
- package/skills/weaver-e10-archive-oa/references/borrow-flow.md +53 -0
- package/skills/weaver-e10-archive-oa/references/contract-search.md +63 -0
- package/skills/weaver-e10-archive-oa/references/disabled-capabilities.md +29 -0
- package/skills/weaver-e10-archive-oa/references/qys-contract-search.md +47 -0
- package/skills/weaver-e10-archive-oa/references/source-manifest.json +400 -0
- package/skills/weaver-e10-builder/SKILL.md +303 -0
- package/skills/weaver-e10-builder/_catalog.md +94 -0
- package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
- package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
- package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
- package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
- package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
- package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
- package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
- package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
- package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
- package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
- package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
- package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
- package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
- package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
- package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
- package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
- package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
- package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
- package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
- package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
- package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
- package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
- package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
- package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
- package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
- package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
- package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
- package/skills/weaver-e10-builder/assets/icons.db +0 -0
- package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
- package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
- package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
- package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
- package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
- package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
- package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
- package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
- package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
- package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
- package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
- package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
- package/skills/weaver-e10-builder/references/common/map.md +153 -0
- package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
- package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
- package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
- package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
- package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
- package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
- package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
- package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
- package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
- package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
- package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
- package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
- package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
- package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
- package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
- package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
- package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
- package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
- package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
- package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
- package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
- package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
- package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
- package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
- package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
- package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
- package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
- package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
- package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
- package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
- package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
- package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
- package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
- package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
- package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
- package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
- package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
- package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
- package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
- package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
- package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
- package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
- package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
- package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
- package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
- package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
- package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
- package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
- package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
- package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
- package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
- package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
- package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
- package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
- package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
- package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
- package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
- package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
- package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
- package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
- package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
- package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
- package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
- package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
- package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
- package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
- package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
- package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
- package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
- package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
- package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
- package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
- package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
- package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
- package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
- package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
- package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
- package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
- package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
- package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
- package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
- package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
- package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
- package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
- package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
- package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
- package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
- package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
- package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
- package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
- package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
- package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
- package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
- package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
- package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +43 -16
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +7 -3
- package/skills/weaver-e10-caizhilian/references/collaboration.md +5 -3
- package/skills/weaver-e10-caizhilian/references/document.md +33 -11
- package/skills/weaver-e10-caizhilian/references/file-collection.md +4 -3
- package/skills/weaver-e10-caizhilian/references/file-upload.md +2 -3
- package/skills/weaver-e10-caizhilian/references/files.md +23 -2
- package/skills/weaver-e10-caizhilian/references/folder.md +48 -16
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +61 -42
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +13 -51
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +20 -51
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +82 -147
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
- package/skills/weaver-e10-caizhilian/references/withheld.md +20 -44
- package/skills/weaver-e10-shared/SKILL.md +24 -18
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +16 -15
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +10 -10
- package/skills/weaver-e10-workflow/SKILL.md +23 -44
- package/skills/weaver-e10-workflow/references/source-manifest.json +40 -25
- package/skills/weaver-e10-workflow/references/workflow-create.md +278 -85
- package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
- package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
- package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
- package/skills/weaver-e10-yepiaotong/SKILL.md +10 -7
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +49 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +66 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +59 -36
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +54 -509
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +182 -345
- package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +4 -5
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +153 -345
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +5 -5
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +182 -154
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +96 -0
- 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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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, '
|
|
69
|
-
|
|
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
|
|
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
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
return '';
|
|
544
|
-
let entries = [];
|
|
555
|
+
function isFile(path) {
|
|
556
|
+
if (!path || !existsSync(path))
|
|
557
|
+
return false;
|
|
545
558
|
try {
|
|
546
|
-
|
|
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
|
-
|
|
552
|
-
|
|
553
|
-
|
|
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
|
-
|
|
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
|
-
|
|
597
|
+
// Treat an unreadable host directory as an unavailable credential source.
|
|
559
598
|
}
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
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
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
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
|
|
606
|
-
return
|
|
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
|
|
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
|
-
'
|
|
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: '
|
|
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
|
|
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
|
|
3
|
-
import {
|
|
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
|
|
31
|
-
|
|
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.
|
|
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
|
+
}
|