weaver-work-cli 0.1.24 → 0.1.25
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 +10 -1
- package/dist/core/output.js +53 -1
- package/dist/internal/e10/auth/commands.js +17 -2
- package/dist/internal/e10/auth/crypto.js +52 -12
- package/dist/internal/e10/auth/xiaoe.js +112 -39
- 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/workflow/index.js +55 -1
- package/dist/shortcuts/workflow/operations/form.js +1252 -109
- package/dist/shortcuts/workflow/operations/read.js +75 -35
- package/dist/shortcuts/workflow/operations/shared.js +25 -0
- package/dist/shortcuts/workflow/stdout-compact.js +33 -0
- package/docs/caizhilian.md +4 -3
- package/docs/e10-auth.md +8 -1
- 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/skills/weaver-e10-builder/SKILL.md +281 -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 +7 -2
- package/skills/weaver-e10-caizhilian/references/files.md +15 -0
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
- package/skills/weaver-e10-shared/SKILL.md +8 -4
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +7 -5
- package/skills/weaver-e10-workflow/SKILL.md +23 -44
- package/skills/weaver-e10-workflow/references/source-manifest.json +27 -22
- package/skills/weaver-e10-workflow/references/workflow-create.md +238 -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
|
@@ -4961,6 +4961,13 @@ function isEmptyRawFieldValue(value) {
|
|
|
4961
4961
|
*
|
|
4962
4962
|
* 与 `detailFormFieldValue` 同契约、同候选顺序,唯一区别是**不提前串化**——后者服务详情面板
|
|
4963
4963
|
* (只需要可读文本),前者服务历史参考值(还需要 `id` 才能拼出 `名称(id)`)。两处必须同步修改。
|
|
4964
|
+
*
|
|
4965
|
+
* ★ 2026-10-14 补齐 `dataText` 候选(此前只存在于 `detailFormFieldValue`,两边口径**并不一致**):
|
|
4966
|
+
* `TextArea` 类字段(真机 `报销事由`)的值在 detail 响应里是 `dataText: {content/richContent/…}`,
|
|
4967
|
+
* 只有详情面板分支认得它 ⇒ 历史参考值恒缺这一类字段(真机实证:同一条历史流程,
|
|
4968
|
+
* 详情面板解出 50 个字段、历史取值只有 49 个,差的正好是唯一的必填 `TextArea` 字段
|
|
4969
|
+
* `报销事由`,其值 `2026-08…`)。这里返回**已抽出的展示文本**(与详情面板同口径),
|
|
4970
|
+
* 调用方的 `formatHistoryFieldValue` 仍会按字段类型二次格式化。
|
|
4964
4971
|
*/
|
|
4965
4972
|
function detailFormFieldRawValue(obj, formField) {
|
|
4966
4973
|
const dataKey = pickText(formField, 'dataKey', 'fieldKey', 'key');
|
|
@@ -4978,6 +4985,12 @@ function detailFormFieldRawValue(obj, formField) {
|
|
|
4978
4985
|
}
|
|
4979
4986
|
if (Array.isArray(obj?.dataOptions) && obj.dataOptions.length)
|
|
4980
4987
|
return obj.dataOptions;
|
|
4988
|
+
const dataText = obj?.dataText;
|
|
4989
|
+
if (dataText && typeof dataText === 'object') {
|
|
4990
|
+
const text = stringifyDetailDataText(dataText);
|
|
4991
|
+
if (text)
|
|
4992
|
+
return text;
|
|
4993
|
+
}
|
|
4981
4994
|
for (const key of ['showValue', 'displayValue', 'fieldValue', 'value', 'content', 'text']) {
|
|
4982
4995
|
if (obj && typeof obj === 'object' && key in obj) {
|
|
4983
4996
|
const value = obj[key];
|
|
@@ -5096,32 +5109,17 @@ function formatHistoryFieldValue(raw, field) {
|
|
|
5096
5109
|
return stringifyDetailValue(raw);
|
|
5097
5110
|
}
|
|
5098
5111
|
/**
|
|
5099
|
-
*
|
|
5112
|
+
* 历史取数的**前半段**:只发那一次列表请求。
|
|
5100
5113
|
*
|
|
5101
|
-
* - `
|
|
5102
|
-
*
|
|
5103
|
-
*
|
|
5104
|
-
* - `options.allFormFields`:见 `HistoryRequestDataOptions`
|
|
5114
|
+
* 与 `buildHistoryRequestData` 拆开的原因(P2 提速,2026-10-13):这一步**只依赖 `workflowId`**,
|
|
5115
|
+
* 不需要任何表单字段 ⇒ 可以和 `loadBaseParam` / `loadFrameParam` / `loadMinorInfo` / `getFormLayout`
|
|
5116
|
+
* 一起**并发发起**,不再排在这些载入之后的串行尾巴上(真机该请求约 1–2 s,落在关键路径上纯亏)。
|
|
5105
5117
|
*
|
|
5106
|
-
*
|
|
5118
|
+
* 失败口径与整体一致:一律降级为 `null`(`rethrowAuthOrNetworkError` 仍会把认证/网络类错误抛出去,
|
|
5119
|
+
* 由调用方决定;调用方若走"预取 + 复用"的形态,必须在预取处 `.catch(() => null)` 兜住,
|
|
5120
|
+
* 避免出现无人 `await` 的未处理拒绝——真正需要暴露的认证错误由同批的载入请求抛出,不会因此被吞掉)。
|
|
5107
5121
|
*/
|
|
5108
|
-
export async function
|
|
5109
|
-
const targetList = toArray(targets)
|
|
5110
|
-
.filter((item) => !item?.systemField && String(item?.id ?? '').trim())
|
|
5111
|
-
.map((item) => ({ id: String(item.id).trim(), name: String(item.name ?? item.id) }));
|
|
5112
|
-
// 普通档必须真的有字段要取;缓存档允许 targets 为空(表单本身没有静态必填时,
|
|
5113
|
-
// 缓存仍要建——条件必填是在 createRequest 阶段才现身的,那时已经没有联网取数的机会了)。
|
|
5114
|
-
if (!targetList.length && !options.allFormFields)
|
|
5115
|
-
return null;
|
|
5116
|
-
const fieldMeta = new Map();
|
|
5117
|
-
for (const field of toArray(fields))
|
|
5118
|
-
fieldMeta.set(String(field?.id ?? ''), field);
|
|
5119
|
-
// 取值顺序 = 「本表单布局顺序」(缓存档)或 targets 顺序(普通档)。
|
|
5120
|
-
// 缓存档用布局顺序是为了结果稳定可 diff;但只保留本表单的字段 id,避免把别张表单的字段带进来。
|
|
5121
|
-
const orderedIds = options.allFormFields
|
|
5122
|
-
? [...fieldMeta.keys()]
|
|
5123
|
-
: targetList.map((t) => t.id);
|
|
5124
|
-
const nameOf = new Map(targetList.map((t) => [t.id, t.name]));
|
|
5122
|
+
export async function fetchHistoryListSnapshot(env, options = {}) {
|
|
5125
5123
|
try {
|
|
5126
5124
|
const now = new Date();
|
|
5127
5125
|
const start = new Date(now.getTime() - HISTORY_LOOKBACK_DAYS * 24 * 60 * 60 * 1000);
|
|
@@ -5160,6 +5158,42 @@ export async function buildHistoryRequestData(env, fields, targets, options = {}
|
|
|
5160
5158
|
const requestIds = items.map((item) => String(item?.requestId ?? '').trim()).filter(Boolean);
|
|
5161
5159
|
if (!requestIds.length)
|
|
5162
5160
|
return null;
|
|
5161
|
+
return { items, requestIds };
|
|
5162
|
+
}
|
|
5163
|
+
catch (error) {
|
|
5164
|
+
rethrowAuthOrNetworkError(error);
|
|
5165
|
+
return null;
|
|
5166
|
+
}
|
|
5167
|
+
}
|
|
5168
|
+
export async function buildHistoryRequestData(env, fields, targets, options = {},
|
|
5169
|
+
/**
|
|
5170
|
+
* 已提前发起的列表请求(见 `fetchHistoryListSnapshot`)。传入即直接复用,不再重复发请求;
|
|
5171
|
+
* 传 `null` / 不传时退回"本函数内自己发列表"的老口径。
|
|
5172
|
+
*/
|
|
5173
|
+
prefetchedList) {
|
|
5174
|
+
const targetList = toArray(targets)
|
|
5175
|
+
.filter((item) => !item?.systemField && String(item?.id ?? '').trim())
|
|
5176
|
+
.map((item) => ({ id: String(item.id).trim(), name: String(item.name ?? item.id) }));
|
|
5177
|
+
// 普通档必须真的有字段要取;缓存档允许 targets 为空(表单本身没有静态必填时,
|
|
5178
|
+
// 缓存仍要建——条件必填是在 createRequest 阶段才现身的,那时已经没有联网取数的机会了)。
|
|
5179
|
+
if (!targetList.length && !options.allFormFields)
|
|
5180
|
+
return null;
|
|
5181
|
+
const fieldMeta = new Map();
|
|
5182
|
+
for (const field of toArray(fields))
|
|
5183
|
+
fieldMeta.set(String(field?.id ?? ''), field);
|
|
5184
|
+
// 取值顺序 = 「本表单布局顺序」(缓存档)或 targets 顺序(普通档)。
|
|
5185
|
+
// 缓存档用布局顺序是为了结果稳定可 diff;但只保留本表单的字段 id,避免把别张表单的字段带进来。
|
|
5186
|
+
const orderedIds = options.allFormFields
|
|
5187
|
+
? [...fieldMeta.keys()]
|
|
5188
|
+
: targetList.map((t) => t.id);
|
|
5189
|
+
try {
|
|
5190
|
+
const listed = prefetchedList
|
|
5191
|
+
? await prefetchedList
|
|
5192
|
+
: await fetchHistoryListSnapshot(env, options);
|
|
5193
|
+
if (!listed)
|
|
5194
|
+
return null;
|
|
5195
|
+
const items = listed.items;
|
|
5196
|
+
const requestIds = listed.requestIds;
|
|
5163
5197
|
const session = await env.host.getSession();
|
|
5164
5198
|
const details = await Promise.all(requestIds.map(async (requestId) => {
|
|
5165
5199
|
const payload = {
|
|
@@ -5184,30 +5218,29 @@ export async function buildHistoryRequestData(env, fields, targets, options = {}
|
|
|
5184
5218
|
const data = details[index] || {};
|
|
5185
5219
|
const rawById = new Map();
|
|
5186
5220
|
collectHistoryFieldRawValues(data, rawById);
|
|
5187
|
-
|
|
5221
|
+
// 键序 = `orderedIds`(本表单布局顺序)的插入顺序;同一字段只留**首个**取到值的结果。
|
|
5222
|
+
const fieldValues = {};
|
|
5188
5223
|
for (const fieldId of orderedIds) {
|
|
5189
5224
|
const raw = rawById.get(fieldId);
|
|
5190
5225
|
if (raw === undefined || raw === null)
|
|
5191
5226
|
continue;
|
|
5227
|
+
if (Object.prototype.hasOwnProperty.call(fieldValues, fieldId))
|
|
5228
|
+
continue;
|
|
5192
5229
|
const value = formatHistoryFieldValue(raw, fieldMeta.get(fieldId));
|
|
5193
5230
|
// 附件类返回的是对象 ⇒ 不能再用 `String(value).trim()` 判空(那会得到 "[object Object]")。
|
|
5194
5231
|
if (isEmptyRawFieldValue(value))
|
|
5195
5232
|
continue;
|
|
5196
|
-
fieldValues
|
|
5197
|
-
fieldId,
|
|
5198
|
-
fieldName: nameOf.get(fieldId) || String(fieldMeta.get(fieldId)?.name ?? fieldId),
|
|
5199
|
-
value,
|
|
5200
|
-
});
|
|
5233
|
+
fieldValues[fieldId] = value;
|
|
5201
5234
|
}
|
|
5202
|
-
if (!fieldValues.length)
|
|
5235
|
+
if (!Object.keys(fieldValues).length)
|
|
5203
5236
|
continue;
|
|
5204
5237
|
const base = data.workflowBaseInfo && typeof data.workflowBaseInfo === 'object' ? data.workflowBaseInfo : {};
|
|
5205
5238
|
const listedItem = items[index] || {};
|
|
5206
5239
|
result.push({
|
|
5207
|
-
requestId: requestIds[index],
|
|
5208
5240
|
requestName: pickText(base, 'requestName', 'requestNameTitle')
|
|
5209
5241
|
|| String(listedItem.flowName ?? ''),
|
|
5210
|
-
|
|
5242
|
+
requestId: requestIds[index],
|
|
5243
|
+
createdatetime: pickText(base, 'createDateTime', 'createTime')
|
|
5211
5244
|
|| String(listedItem.createdAt ?? ''),
|
|
5212
5245
|
fieldValues,
|
|
5213
5246
|
});
|
|
@@ -5241,9 +5274,16 @@ export function filterHistoryRequestData(records, fieldIds) {
|
|
|
5241
5274
|
for (const record of toArray(records)) {
|
|
5242
5275
|
if (!record || typeof record !== 'object')
|
|
5243
5276
|
continue;
|
|
5244
|
-
const
|
|
5245
|
-
|
|
5246
|
-
|
|
5277
|
+
const source = record.fieldValues;
|
|
5278
|
+
if (!source || typeof source !== 'object' || Array.isArray(source))
|
|
5279
|
+
continue;
|
|
5280
|
+
// 保留原键序,只留下本次要看的字段(口径见函数注释)。
|
|
5281
|
+
const fieldValues = {};
|
|
5282
|
+
for (const fieldId of Object.keys(source)) {
|
|
5283
|
+
if (wanted.has(fieldId))
|
|
5284
|
+
fieldValues[fieldId] = source[fieldId];
|
|
5285
|
+
}
|
|
5286
|
+
if (!Object.keys(fieldValues).length)
|
|
5247
5287
|
continue;
|
|
5248
5288
|
result.push({ ...record, fieldValues });
|
|
5249
5289
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WorkflowCliError, workflowValidationError } from '../errors.js';
|
|
2
|
+
import { stringifyForStdout } from '../../../core/output.js';
|
|
2
3
|
/**
|
|
3
4
|
* 模型输入中永远不允许出现的键。
|
|
4
5
|
*
|
|
@@ -212,3 +213,27 @@ export function stdoutBytesOf(value) {
|
|
|
212
213
|
return 0;
|
|
213
214
|
}
|
|
214
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* 宿主**实际看到**的 stdout 字符数 —— 与 `Output.write` 真正打出去的那份文本**同源**
|
|
218
|
+
* (同一条 `stringifyForStdout` + 同一套紧凑路径),而不是"美化 JSON 长度的近似值"。
|
|
219
|
+
*
|
|
220
|
+
* ★ 判线必须与最终输出同源。2026-10-15 之前量的是 `JSON.stringify(value, null, 2).length`(纯美化),
|
|
221
|
+
* 而紧凑路径会把 `fields` / `historyRequestData` / `systemFields` 的缩进空白整段压掉 —— 实测
|
|
222
|
+
* `createForm` 整份小约 **30%**(`hugeLayout(120)` 桩:23,522 → 16,613 字符),那份桩因此从
|
|
223
|
+
* 「超线落盘」翻成「内联返回」。两份数一旦脱钩,判线就**系统性高估**:本可内联的表单被判落盘。
|
|
224
|
+
* 而宿主侧的线(`terminal_tool.py` 的 `MAX_OUTPUT_LEN = 20000`)量的是**最终输出文本**的 `len()`,
|
|
225
|
+
* 它并不关心美化不美化。
|
|
226
|
+
*
|
|
227
|
+
* `compactPaths` 从**信封根**算起(如 `data.fields`);不传即按无紧凑路径量(等价于纯美化)。
|
|
228
|
+
* 其余命令仍用 `stdoutBytesOf()` 的**字节**口径 —— 两个口径对纯 ASCII 一致、对中文差 3 倍
|
|
229
|
+
* (1 字符 / 3 字节),**用哪个必须跟着阈值走**,不可混用。
|
|
230
|
+
*/
|
|
231
|
+
export function stdoutCharsOf(value, compactPaths) {
|
|
232
|
+
try {
|
|
233
|
+
const text = stringifyForStdout(value, compactPaths);
|
|
234
|
+
return typeof text === 'string' ? text.length : 0;
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return 0;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 「只去缩进、不动内容」的 stdout 路径(按 operation 声明;路径从**信封根**算起)。
|
|
3
|
+
*
|
|
4
|
+
* 依据(实测):
|
|
5
|
+
* - `historyRequestData` 独占 `createForm` 输出的 60%(真机 13,017 B / 21,620 B),其中近 1/4 是缩进
|
|
6
|
+
* 空白 —— 压成单行后 9,835 B、整份 18,438 B(2026-10-14 用户裁定纳入)。
|
|
7
|
+
* - `fields`(2026-10-15 用户裁定纳入)是"每个字段占 4 行"的数组,缩进空白占它自己 **24%~31%**
|
|
8
|
+
* —— 实测平铺字段的桩(仅 `id`/`name`/`componentKey`/`browserType`)20,642 → 15,601 字符(省 24%);
|
|
9
|
+
* 带 `options` / `fileUploadParams` 的嵌套字段层级更深,可到约 31%。它通常占整份输出的 **88% 上下**。
|
|
10
|
+
* - `systemFields`(同日用户裁定纳入)是"层级深、内容短"的小对象:`permissions` 是一层
|
|
11
|
+
* `{系统字段: {isview/isedit/ismandatory}}`、`levelOptions` / `secLevelOptions` 是选项数组,
|
|
12
|
+
* 缩进空白占它自己约 **29%**(259 → 183 字符),而它每次都要下发。
|
|
13
|
+
*
|
|
14
|
+
* 三个键合计的效果(`hugeLayout(120)` 桩实测):整份 **23,522 → 16,613 字符(省 29.4%)**
|
|
15
|
+
* —— 该桩因此从「超线落盘」翻成「内联返回」。字段里嵌套对象越多、`fields` 占整份比例越高,省得越多。
|
|
16
|
+
*
|
|
17
|
+
* 三个键都是"逐条长、层级深"的典型:读它们要的是「哪个字段 / 什么值」,每层两个空格的缩进没有
|
|
18
|
+
* 任何信息量。**内容一字不改**:输出仍是合法 JSON,`parse` 出来与全缩进版完全一致(只是空白不同),
|
|
19
|
+
* 结构也保持数组原样、不会退化成"需要再 parse 一次的字符串",消费端零改动
|
|
20
|
+
* (实现见 `core/output.ts` 的 `stringifyForStdout`)。
|
|
21
|
+
*
|
|
22
|
+
* **为什么独立成模块**(而不是留在 `shortcuts/workflow/index.ts`):`operations/form.ts` 的判线也要用
|
|
23
|
+
* 同一份路径 —— 它量的必须是**这条命令最终打出去的那份文本**(见 `finalStdoutChars`)。常量若留在
|
|
24
|
+
* `index.ts`,`form.ts` 反向 import 就会与 `index → operations → form` 形成循环依赖;常量放这里、
|
|
25
|
+
* 两边都正向引用,依赖图仍是单向的。
|
|
26
|
+
*/
|
|
27
|
+
export const COMPACT_STDOUT_PATHS = {
|
|
28
|
+
'workflow.createForm': ['data.fields', 'data.historyRequestData', 'data.systemFields'],
|
|
29
|
+
};
|
|
30
|
+
/** 该 operation 的紧凑路径(不声明 = 维持全量缩进)。导出让用例锁住接线。 */
|
|
31
|
+
export function compactStdoutPaths(operation) {
|
|
32
|
+
return COMPACT_STDOUT_PATHS[operation];
|
|
33
|
+
}
|
package/docs/caizhilian.md
CHANGED
|
@@ -155,7 +155,7 @@ weaver-work-cli --json caizhilian run caizhilian.folder.query-by-name --input-js
|
|
|
155
155
|
| `caizhilian.share.add.prepare/apply` | prepare=写前回查,apply=高风险写 | prepare → apply | `add_doc_share` | 添加文档共享 |
|
|
156
156
|
| `caizhilian.share.delete.prepare/apply` | prepare=写前回查,apply=高风险写 | prepare → apply | `delete_doc_share` | 删除文档共享 |
|
|
157
157
|
|
|
158
|
-
### attachment(
|
|
158
|
+
### attachment(7 条对外 operation)
|
|
159
159
|
|
|
160
160
|
附件
|
|
161
161
|
|
|
@@ -165,6 +165,7 @@ weaver-work-cli --json caizhilian run caizhilian.folder.query-by-name --input-js
|
|
|
165
165
|
| `caizhilian.attachment.replace.prepare/apply` | prepare=写前回查,apply=上传写 | prepare → apply | `replace_document_attachment` | 替换文档附件(reUpload,保留附件 ID) |
|
|
166
166
|
| `caizhilian.attachment.download` | 本地落盘 | — | `download_doc_attachment` | 下载文档附件到本地(写本地磁盘,不改服务端) |
|
|
167
167
|
| `caizhilian.attachment.download-as-pdf` | 本地落盘 | — | `download_doc_attachment_to_pdf` | 下载文档附件的 PDF 转换版本(写本地磁盘) |
|
|
168
|
+
| `caizhilian.attachment.list-versions` | 只读 | — | `find_version_list` | 按附件 ID 查询附件历史版本(源 filePreview 历史版本抽屉接口,HAR 抓包迁入) |
|
|
168
169
|
|
|
169
170
|
### cover(6 条对外 operation)
|
|
170
171
|
|
|
@@ -195,7 +196,7 @@ weaver-work-cli --json caizhilian run caizhilian.folder.query-by-name --input-js
|
|
|
195
196
|
| --- | --- | --- | --- | --- |
|
|
196
197
|
| `caizhilian.system.health` | 只读 | — | `check_system_health` | 采知连接口连通性与登录态自检 |
|
|
197
198
|
|
|
198
|
-
合计
|
|
199
|
+
合计 180 条对外 operation,由 canonical 操作的写规格展开 prepare/apply 而成。
|
|
199
200
|
|
|
200
201
|
## 常用命令
|
|
201
202
|
|
|
@@ -288,7 +289,7 @@ weaver-work-cli --json caizhilian run caizhilian.attachment.download --input-jso
|
|
|
288
289
|
|
|
289
290
|
| 模块 | CLI 操作 | 功能 |
|
|
290
291
|
| --- | --- | --- |
|
|
291
|
-
| 附件设置 | `caizhilian.setting-attach.*` | 上传最大、格式控制、批量下载等 11
|
|
292
|
+
| 附件设置 | `caizhilian.setting-attach.*` | 上传最大、格式控制、批量下载等 11 项配置;按审批流程 ID 查附件上传目录(`list-upload-folders`,合并通用设置与附件字段配置去重返回);按名称搜索审批流程拿流程 ID(`search-workflows`) |
|
|
292
293
|
| 备份设置 | `caizhilian.setting-backup.*` | 备份开关、规则 CRUD、启停 |
|
|
293
294
|
| 加解密设置 | `caizhilian.setting-encrypt.*` | 8 项加解密配置 |
|
|
294
295
|
| 存储设置 | `caizhilian.setting-storage.*` | 存储实例与规则管理 |
|
package/docs/e10-auth.md
CHANGED
|
@@ -10,6 +10,11 @@ E10 适配模块刻意与核心 CLI 框架隔离,避免平台逻辑污染通
|
|
|
10
10
|
- Keychain service/account:`weaver-work-cli` / `auth-key`
|
|
11
11
|
- 发票业务 Token Keychain service:`cn.weaver.weaver-work-cli.invoice-token`
|
|
12
12
|
|
|
13
|
+
登录态加密使用的 Keychain 原生模块按需加载。模块缺失、原生依赖无法加载或系统
|
|
14
|
+
Keychain 不可用时,CLI 仍可启动,并回退到鉴权根目录下的 `.key` 文件继续完成
|
|
15
|
+
登录态加解密。该文件会请求 `0600` 模式;但 Windows 不提供完整的 POSIX 文件权限
|
|
16
|
+
语义,因此文件回退属于可用性保障,安全隔离强度不等同于 Windows 凭据管理器。
|
|
17
|
+
|
|
13
18
|
发票业务 Token 的 Keychain 缓存是可选的性能优化。在没有系统密钥环的
|
|
14
19
|
Web/Linux 环境中,CLI 不会把 Token 写入明文文件,而是仅在当前命令进程内保存并
|
|
15
20
|
继续完成业务请求;下一次命令会重新向 E10 获取 Token。
|
|
@@ -55,12 +60,14 @@ Chrome/Edge 原生确认框。宿主需要返回特定会话时,可以传
|
|
|
55
60
|
智能小 E 统一登录成功时不会经过浏览器;只有统一登录不可用并降级为桌面浏览器 OAuth 时,
|
|
56
61
|
才显示“返回智能小 E”弹层。
|
|
57
62
|
|
|
58
|
-
只有当前智能体身份明确为 XiaoE 时,`auth xiaoe`
|
|
63
|
+
只有当前智能体身份明确为 XiaoE 时,`auth xiaoe` 和未显式指定认证来源的业务命令才先使用统一登录。Web/沙箱宿主可由成对的 `XIAOE_USER_TOKEN` + `XIAOE_DOMAIN` 识别;桌面客户端则可由其精确注入的 `XIAOE_DATA_ROOT`、`XIAOE_ROBOT_DATA_ROOT`、`XIAOE_USER_SETTINGS_PATH`、`XIAOE_ROBOT_ROOT` 运行时路径标记识别。通用 `WORKBUDDY_*` / `CODEX_*` 变量可能来自 XiaoE 复用的智能体运行时,不能覆盖这些 XiaoE 信号;明确的 `WORKBUDDY_AGENT_TYPE` / `CODEX_AGENT_TYPE` 非 XiaoE 身份除外。普通 `XIAOE_SKILL_*`、`WEAVER_XIAOE_*` 配置或仅在磁盘上发现客户端文件仍不足以触发。这里的 `XIAOE_DOMAIN` 是 XiaoE/erpa 换票服务地址,不是 E10 登录地址。Node 主路径调用与 `xiaoe_env.py` / `tokens.py` 相同的接口,校验业务 `code`(`"0000"` 或 `200`)及 `data.eteamId`,保留系统 CA 校验,并只跟随同源重定向或同主机 HTTP→HTTPS 升级。Node 路径失败时,CLI 会在内部执行 npm 包自带的 `scripts/xiaoe_env.py` 兼容路径;它只依赖 Python 标准库,凭证 stdout 由 CLI 内部消费,不进入 Agent 上下文,也不会关闭 TLS 证书校验。之后才依次读取宿主 `xiaoeUserData/tokens.py`、桌面 XiaoE 客户端本地会话和 `WEAVER_XIAOE_*` ETEAMSID 映射。客户端会话优先读取 `XIAOE_USER_SETTINGS_PATH`,再从 `XIAOE_ROBOT_DATA_ROOT` / `XIAOE_ROBOT_ROOT` 查找,最后回退 macOS `~/Library/Application Support/XiaoE/Robots/<id>/user_settings.json` 或 Windows `%LOCALAPPDATA%/XiaoE/Robots/<id>/user_settings.json`;只要其中的 `session_id` 与 `erpa` 有效,Node 即可在没有 `tokens.py` 时直接换票。宿主不会注入 ETEAMSID 环境变量,CLI 也不读取 `XIAOE_ETEAMSID`。
|
|
59
64
|
|
|
60
65
|
E10 目标地址按“显式 `--base-url` → 专用 `WEAVER_XIAOE_*` E10 配置/映射 → 当前 profile → `https://www.e-cology.com.cn`”解析,绝不会把 `XIAOE_DOMAIN` 当作 E10 地址。凭证可用时,CLI 直接保存登录态,保存的 `agentType` 固定为 `XiaoE`;业务命令在未显式指定 `--auth` / `--profile` 时,也会自动优先尝试 XiaoE 统一登录。统一登录失败后,`auth xiaoe` 仅在 macOS/Windows 桌面宿主自动降级浏览器 OAuth;Web/Linux 环境直接返回 `authentication/xiaoe_web_credential_unavailable`,不再启动无法回调的 localhost 登录。用户明确希望浏览器授权且宿主能够接收本地回调时,可以显式运行 `auth login`。
|
|
61
66
|
|
|
62
67
|
脚本兼容链路会先自动发现桌面 XiaoE 客户端内置 Python(macOS 应用包与 Windows 按用户/全局安装均支持),再回退到系统 `python3`、`/usr/bin/python3`、`python`;Windows 的系统回退顺序为 `python`、`python3`、`py`。可用 `WEAVER_XIAOE_TOKEN_SCRIPT_PYTHON` 精确指定解释器,用 `WEAVER_XIAOE_TOKEN_SCRIPT_PATH` 指定桌面宿主脚本路径(旧名 `XIAOE_TOKEN_SCRIPT_PYTHON` / `XIAOE_TOKEN_SCRIPT_PATH` 仍兼容)。CLI 自带的 `xiaoe_env.py` 位于 npm 包 `scripts/`,不会放入 `weaver-e10-shared` Skill;Skill 包禁止携带或直接执行 Token 脚本。`XIAOE_` 是平台保留前缀,本 CLI 的自定义变量统一使用 `WEAVER_XIAOE_*`。
|
|
63
68
|
|
|
69
|
+
`auth xiaoe` 会先打印不含凭证的 preflight 摘要,明确给出 `hostDetected`、`attempted`、`tokenScriptDetected`、`clientSettingsDetected` 和目标 `baseUrl`。进入脚本分支时会打印 `Trying XiaoE token script credential...`;进入内置 Node 会话分支时会打印 `Trying built-in XiaoE client session credential...`。成功结果和后续 `auth status` 会显示 `credentialSourceStep`、`credentialSourceType`、`credentialSourceLabel`;`2 / token_script / xiaoeUserData/tokens.py` 表示宿主脚本换票,`3 / xiaoe_client / XiaoE client settings` 表示没有依赖 `tokens.py`、由 Node 直接换票。
|
|
70
|
+
|
|
64
71
|
上述“业务命令自动优先尝试”仅适用于当前智能体身份明确为 XiaoE 的进程。WorkBuddy、Codex 及其他智能体不会因为本机存在 XiaoE 文件或配置而进入该分支,并必须使用 `auth login --base-url <url> --agent_type <agent_type>` 的浏览器 OAuth 流程。
|
|
65
72
|
|
|
66
73
|
无法使用浏览器回调时,可以用 `auth set` 直接写入浏览器中复制到的
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 N-API for Rust
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# `@napi-rs/keyring`
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
[](https://packagephobia.com/result?p=@napi-rs/keyring)
|
|
5
|
+
[](https://npmcharts.com/compare/@napi-rs/keyring?minimal=true)
|
|
6
|
+
|
|
7
|
+
> https://github.com/hwchen/keyring-rs Node.js binding via https://napi.rs
|
|
8
|
+
|
|
9
|
+
# Usage
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { Entry } from '@napi-rs/keyring'
|
|
13
|
+
|
|
14
|
+
const entry = new Entry('my_service', 'my_name')
|
|
15
|
+
entry.setPassword('topS3cr3tP4$$w0rd')
|
|
16
|
+
const password = entry.getPassword()
|
|
17
|
+
console.log('My password is ', password)
|
|
18
|
+
entry.deletePassword()
|
|
19
|
+
```
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/* auto-generated by NAPI-RS */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
export declare class AsyncEntry {
|
|
4
|
+
/**
|
|
5
|
+
* Create an entry for the given service and username.
|
|
6
|
+
*
|
|
7
|
+
* The default credential builder is used.
|
|
8
|
+
*/
|
|
9
|
+
constructor(service: string, username: string)
|
|
10
|
+
/**
|
|
11
|
+
* Create an entry for the given target, service, and username.
|
|
12
|
+
*
|
|
13
|
+
* The default credential builder is used.
|
|
14
|
+
*/
|
|
15
|
+
static withTarget(target: string, service: string, username: string): AsyncEntry
|
|
16
|
+
/**
|
|
17
|
+
* Set the password for this entry.
|
|
18
|
+
*
|
|
19
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
20
|
+
* if there is more than one platform credential
|
|
21
|
+
* that matches this entry. This can only happen
|
|
22
|
+
* on some platforms, and then only if a third-party
|
|
23
|
+
* application wrote the ambiguous credential.
|
|
24
|
+
*/
|
|
25
|
+
setPassword(password: string, signal?: AbortSignal | undefined | null): Promise<void>
|
|
26
|
+
/**
|
|
27
|
+
* Set the secret for this entry.
|
|
28
|
+
*
|
|
29
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
30
|
+
* if there is more than one platform credential
|
|
31
|
+
* that matches this entry. This can only happen
|
|
32
|
+
* on some platforms, and then only if a third-party
|
|
33
|
+
* application wrote the ambiguous credential.
|
|
34
|
+
*/
|
|
35
|
+
setSecret(secret: Uint8Array, signal?: AbortSignal | undefined | null): Promise<void>
|
|
36
|
+
/**
|
|
37
|
+
* Retrieve the password saved for this entry.
|
|
38
|
+
*
|
|
39
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
40
|
+
*
|
|
41
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
42
|
+
* if there is more than one platform credential
|
|
43
|
+
* that matches this entry. This can only happen
|
|
44
|
+
* on some platforms, and then only if a third-party
|
|
45
|
+
* application wrote the ambiguous credential.
|
|
46
|
+
*/
|
|
47
|
+
getPassword(signal?: AbortSignal | undefined | null): Promise<string | undefined>
|
|
48
|
+
/**
|
|
49
|
+
* Retrieve the secret saved for this entry.
|
|
50
|
+
*
|
|
51
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
52
|
+
*
|
|
53
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
54
|
+
* if there is more than one platform credential
|
|
55
|
+
* that matches this entry. This can only happen
|
|
56
|
+
* on some platforms, and then only if a third-party
|
|
57
|
+
* application wrote the ambiguous credential.
|
|
58
|
+
*/
|
|
59
|
+
getSecret(signal?: AbortSignal | undefined | null): Promise<Uint8Array | undefined>
|
|
60
|
+
/**
|
|
61
|
+
* Delete the underlying credential for this entry.
|
|
62
|
+
*
|
|
63
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
64
|
+
*
|
|
65
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
66
|
+
* if there is more than one platform credential
|
|
67
|
+
* that matches this entry. This can only happen
|
|
68
|
+
* on some platforms, and then only if a third-party
|
|
69
|
+
* application wrote the ambiguous credential.
|
|
70
|
+
*
|
|
71
|
+
* Note: This does _not_ affect the lifetime of the [Entry]
|
|
72
|
+
* structure, which is controlled by Rust. It only
|
|
73
|
+
* affects the underlying credential store.
|
|
74
|
+
*/
|
|
75
|
+
deleteCredential(signal?: AbortSignal | undefined | null): Promise<boolean>
|
|
76
|
+
/** Alias for `deleteCredential` */
|
|
77
|
+
deletePassword(signal?: AbortSignal | undefined | null): Promise<unknown>
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export declare class Entry {
|
|
81
|
+
/**
|
|
82
|
+
* Create an entry for the given service and username.
|
|
83
|
+
*
|
|
84
|
+
* The default credential builder is used.
|
|
85
|
+
*/
|
|
86
|
+
constructor(service: string, username: string)
|
|
87
|
+
/**
|
|
88
|
+
* Create an entry for the given target, service, and username.
|
|
89
|
+
*
|
|
90
|
+
* The default credential builder is used.
|
|
91
|
+
*/
|
|
92
|
+
static withTarget(target: string, service: string, username: string): Entry
|
|
93
|
+
/**
|
|
94
|
+
* Set the password for this entry.
|
|
95
|
+
*
|
|
96
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
97
|
+
* if there is more than one platform credential
|
|
98
|
+
* that matches this entry. This can only happen
|
|
99
|
+
* on some platforms, and then only if a third-party
|
|
100
|
+
* application wrote the ambiguous credential.
|
|
101
|
+
*/
|
|
102
|
+
setPassword(password: string): void
|
|
103
|
+
/**
|
|
104
|
+
* Set the secret for this entry.
|
|
105
|
+
*
|
|
106
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
107
|
+
* if there is more than one platform credential
|
|
108
|
+
* that matches this entry. This can only happen
|
|
109
|
+
* on some platforms, and then only if a third-party
|
|
110
|
+
* application wrote the ambiguous credential.
|
|
111
|
+
*/
|
|
112
|
+
setSecret(secret: Uint8Array): void
|
|
113
|
+
/**
|
|
114
|
+
* Retrieve the password saved for this entry.
|
|
115
|
+
*
|
|
116
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
117
|
+
*
|
|
118
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
119
|
+
* if there is more than one platform credential
|
|
120
|
+
* that matches this entry. This can only happen
|
|
121
|
+
* on some platforms, and then only if a third-party
|
|
122
|
+
* application wrote the ambiguous credential.
|
|
123
|
+
*/
|
|
124
|
+
getPassword(): string | null
|
|
125
|
+
/**
|
|
126
|
+
* Retrieve the secret saved for this entry.
|
|
127
|
+
*
|
|
128
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
129
|
+
*
|
|
130
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
131
|
+
* if there is more than one platform credential
|
|
132
|
+
* that matches this entry. This can only happen
|
|
133
|
+
* on some platforms, and then only if a third-party
|
|
134
|
+
* application wrote the ambiguous credential.
|
|
135
|
+
*/
|
|
136
|
+
getSecret(): Array<number> | null
|
|
137
|
+
/**
|
|
138
|
+
* Delete the underlying credential for this entry.
|
|
139
|
+
*
|
|
140
|
+
* Returns a [NoEntry](Error::NoEntry) error if there isn't one.
|
|
141
|
+
*
|
|
142
|
+
* Can return an [Ambiguous](Error::Ambiguous) error
|
|
143
|
+
* if there is more than one platform credential
|
|
144
|
+
* that matches this entry. This can only happen
|
|
145
|
+
* on some platforms, and then only if a third-party
|
|
146
|
+
* application wrote the ambiguous credential.
|
|
147
|
+
*
|
|
148
|
+
* Note: This does _not_ affect the lifetime of the [Entry]
|
|
149
|
+
* structure, which is controlled by Rust. It only
|
|
150
|
+
* affects the underlying credential store.
|
|
151
|
+
*/
|
|
152
|
+
deleteCredential(): boolean
|
|
153
|
+
/** Alias for `deleteCredential` */
|
|
154
|
+
deletePassword(): boolean
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface Credential {
|
|
158
|
+
account: string
|
|
159
|
+
password: string
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** find credentials by service name */
|
|
163
|
+
export declare function findCredentials(service: string, target?: string | undefined | null): Array<Credential>
|
|
164
|
+
|
|
165
|
+
/** find credentials by service name */
|
|
166
|
+
export declare function findCredentialsAsync(service: string, target?: string | undefined | null, signal?: AbortSignal | undefined | null): Promise<Array<Credential>>
|