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
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
|
-
|
|
215
|
-
|
|
216
|
-
|
|
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
|
|
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');
|
package/dist/core/output.js
CHANGED
|
@@ -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(
|
|
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,
|
|
9
|
-
export { DEFAULT_E10_BASE_URL, XIAOE_AGENT_TYPE, hasXiaoEEnv, hasXiaoETokenScript, resolveXiaoEDefaultBaseUrl, resolveXiaoEPreferredBaseUrl, resolveXiaoEUnifiedLoginCredential,
|
|
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,
|
|
483
|
+
function xiaoEUnifiedLoginUnavailableMessage(baseUrl, attempted) {
|
|
480
484
|
return [
|
|
481
|
-
|
|
482
|
-
? '
|
|
483
|
-
: '
|
|
485
|
+
attempted
|
|
486
|
+
? 'XiaoE 统一登录已尝试,但未获取到可用会话。'
|
|
487
|
+
: '未检测到可用的 XiaoE 统一登录凭据源,本次未尝试统一登录。',
|
|
488
|
+
'`auth xiaoe` 不会降级到浏览器 OAuth。',
|
|
484
489
|
baseUrl ? `当前 E10 baseUrl: ${baseUrl}。` : '未从 XiaoE 凭证中解析到 E10 baseUrl。',
|
|
485
|
-
|
|
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
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
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 =
|
|
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 =
|
|
517
|
-
|
|
518
|
-
|
|
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
|
-
|
|
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', '
|
|
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: '
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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;
|