@nexusclawhq/cli 0.3.26 → 0.3.27
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/CHANGELOG.md +11 -0
- package/dist/build-info.json +4 -4
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/cli-contract.types.d.ts +37 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/contract-versions.d.ts +5 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/contract-versions.js +6 -2
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/contract-versions.js.map +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.d.ts +1 -1
- package/dist/nexus-cli/node_modules/@nexusclaw/shared/dist/agent-executable-assets/index.js.map +1 -1
- package/dist/nexus-cli/src/cli-runner.test.d.ts +1 -0
- package/dist/nexus-cli/src/cli-runner.test.js +156 -0
- package/dist/nexus-cli/src/cli-runner.test.js.map +1 -0
- package/dist/nexus-cli/src/cli.d.ts +8 -0
- package/dist/nexus-cli/src/cli.js +133 -7
- package/dist/nexus-cli/src/cli.js.map +1 -1
- package/dist/nexus-cli/src/commands/ai/context-export.js +6 -3
- package/dist/nexus-cli/src/commands/ai/context-export.js.map +1 -1
- package/dist/nexus-cli/src/commands/ai/help.d.ts +1 -1
- package/dist/nexus-cli/src/commands/ai/help.js +14 -2
- package/dist/nexus-cli/src/commands/ai/help.js.map +1 -1
- package/dist/nexus-cli/src/commands/ai/help.test.js +32 -0
- package/dist/nexus-cli/src/commands/ai/help.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/changeset/index.js +68 -34
- package/dist/nexus-cli/src/commands/changeset/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/activate.js +16 -9
- package/dist/nexus-cli/src/commands/customer-entitlement/activate.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/create.js +22 -15
- package/dist/nexus-cli/src/commands/customer-entitlement/create.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/deactivate.js +16 -9
- package/dist/nexus-cli/src/commands/customer-entitlement/deactivate.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/get.js +25 -17
- package/dist/nexus-cli/src/commands/customer-entitlement/get.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/list.js +14 -5
- package/dist/nexus-cli/src/commands/customer-entitlement/list.js.map +1 -1
- package/dist/nexus-cli/src/commands/customer-entitlement/result.d.ts +1 -0
- package/dist/nexus-cli/src/commands/customer-entitlement/result.js +11 -0
- package/dist/nexus-cli/src/commands/customer-entitlement/result.js.map +1 -0
- package/dist/nexus-cli/src/commands/customer-entitlement/validate.js +13 -4
- package/dist/nexus-cli/src/commands/customer-entitlement/validate.js.map +1 -1
- package/dist/nexus-cli/src/commands/data/delete-bulk.js +12 -6
- package/dist/nexus-cli/src/commands/data/delete-bulk.js.map +1 -1
- package/dist/nexus-cli/src/commands/data/export-tree.js +15 -8
- package/dist/nexus-cli/src/commands/data/export-tree.js.map +1 -1
- package/dist/nexus-cli/src/commands/data/import-tree.js +14 -8
- package/dist/nexus-cli/src/commands/data/import-tree.js.map +1 -1
- package/dist/nexus-cli/src/commands/data/query.js +11 -4
- package/dist/nexus-cli/src/commands/data/query.js.map +1 -1
- package/dist/nexus-cli/src/commands/data/recycle-bin.js +9 -2
- package/dist/nexus-cli/src/commands/data/recycle-bin.js.map +1 -1
- package/dist/nexus-cli/src/commands/deployment/employee-report.js +17 -12
- package/dist/nexus-cli/src/commands/deployment/employee-report.js.map +1 -1
- package/dist/nexus-cli/src/commands/deployment/index.js +26 -10
- package/dist/nexus-cli/src/commands/deployment/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/deployment/quick.js +12 -13
- package/dist/nexus-cli/src/commands/deployment/quick.js.map +1 -1
- package/dist/nexus-cli/src/commands/deployment/report.js +9 -8
- package/dist/nexus-cli/src/commands/deployment/report.js.map +1 -1
- package/dist/nexus-cli/src/commands/deployment/resume.js +15 -8
- package/dist/nexus-cli/src/commands/deployment/resume.js.map +1 -1
- package/dist/nexus-cli/src/commands/dx-json-option.test.js +1 -1
- package/dist/nexus-cli/src/commands/dx-json-option.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/dx-pages.d.ts +1 -0
- package/dist/nexus-cli/src/commands/dx-pages.js +6 -3
- package/dist/nexus-cli/src/commands/dx-pages.js.map +1 -1
- package/dist/nexus-cli/src/commands/dx-workflows.e2e.test.js +4 -2
- package/dist/nexus-cli/src/commands/dx-workflows.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/dx.js +111 -54
- package/dist/nexus-cli/src/commands/dx.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/bundle.js +3 -2
- package/dist/nexus-cli/src/commands/employee/bundle.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js +9 -5
- package/dist/nexus-cli/src/commands/employee/deploy.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/employee/deploy.js +45 -23
- package/dist/nexus-cli/src/commands/employee/deploy.js.map +1 -1
- package/dist/nexus-cli/src/commands/entitlement/grant.js +21 -11
- package/dist/nexus-cli/src/commands/entitlement/grant.js.map +1 -1
- package/dist/nexus-cli/src/commands/entitlement/list.js +11 -2
- package/dist/nexus-cli/src/commands/entitlement/list.js.map +1 -1
- package/dist/nexus-cli/src/commands/entitlement/revoke.js +20 -10
- package/dist/nexus-cli/src/commands/entitlement/revoke.js.map +1 -1
- package/dist/nexus-cli/src/commands/generate/class.js +5 -3
- package/dist/nexus-cli/src/commands/generate/class.js.map +1 -1
- package/dist/nexus-cli/src/commands/generate/component.js +5 -3
- package/dist/nexus-cli/src/commands/generate/component.js.map +1 -1
- package/dist/nexus-cli/src/commands/generate/project.js +5 -3
- package/dist/nexus-cli/src/commands/generate/project.js.map +1 -1
- package/dist/nexus-cli/src/commands/generate/test.js +5 -3
- package/dist/nexus-cli/src/commands/generate/test.js.map +1 -1
- package/dist/nexus-cli/src/commands/generate/trigger.js +5 -3
- package/dist/nexus-cli/src/commands/generate/trigger.js.map +1 -1
- package/dist/nexus-cli/src/commands/install-contract/index.js +34 -24
- package/dist/nexus-cli/src/commands/install-contract/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/log/get.js +9 -2
- package/dist/nexus-cli/src/commands/log/get.js.map +1 -1
- package/dist/nexus-cli/src/commands/log/list.js +9 -1
- package/dist/nexus-cli/src/commands/log/list.js.map +1 -1
- package/dist/nexus-cli/src/commands/log/tail.js +101 -50
- package/dist/nexus-cli/src/commands/log/tail.js.map +1 -1
- package/dist/nexus-cli/src/commands/log/tail.test.d.ts +1 -0
- package/dist/nexus-cli/src/commands/log/tail.test.js +45 -0
- package/dist/nexus-cli/src/commands/log/tail.test.js.map +1 -0
- package/dist/nexus-cli/src/commands/metadata/deploy.js +34 -18
- package/dist/nexus-cli/src/commands/metadata/deploy.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/diff.js +9 -6
- package/dist/nexus-cli/src/commands/metadata/diff.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/export.js +7 -5
- package/dist/nexus-cli/src/commands/metadata/export.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/import.js +24 -9
- package/dist/nexus-cli/src/commands/metadata/import.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/retrieve.js +17 -7
- package/dist/nexus-cli/src/commands/metadata/retrieve.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/validate-source.js +28 -14
- package/dist/nexus-cli/src/commands/metadata/validate-source.js.map +1 -1
- package/dist/nexus-cli/src/commands/metadata/validate.js +25 -11
- package/dist/nexus-cli/src/commands/metadata/validate.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/default-set.js +10 -4
- package/dist/nexus-cli/src/commands/org/default-set.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/display.js +17 -15
- package/dist/nexus-cli/src/commands/org/display.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/login-jwt.js +20 -14
- package/dist/nexus-cli/src/commands/org/login-jwt.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/login-web-terminal.test.d.ts +1 -0
- package/dist/nexus-cli/src/commands/org/login-web-terminal.test.js +128 -0
- package/dist/nexus-cli/src/commands/org/login-web-terminal.test.js.map +1 -0
- package/dist/nexus-cli/src/commands/org/login-web.js +180 -137
- package/dist/nexus-cli/src/commands/org/login-web.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/logout.js +10 -4
- package/dist/nexus-cli/src/commands/org/logout.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/open.js +16 -7
- package/dist/nexus-cli/src/commands/org/open.js.map +1 -1
- package/dist/nexus-cli/src/commands/org/step-up.js +15 -12
- package/dist/nexus-cli/src/commands/org/step-up.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/deprecate.js +23 -14
- package/dist/nexus-cli/src/commands/package/deprecate.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/format.js +17 -6
- package/dist/nexus-cli/src/commands/package/format.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/helpers.d.ts +5 -0
- package/dist/nexus-cli/src/commands/package/helpers.js +16 -0
- package/dist/nexus-cli/src/commands/package/helpers.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/history.js +20 -21
- package/dist/nexus-cli/src/commands/package/history.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/info.js +43 -43
- package/dist/nexus-cli/src/commands/package/info.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/install.js +45 -29
- package/dist/nexus-cli/src/commands/package/install.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/list.js +46 -48
- package/dist/nexus-cli/src/commands/package/list.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/pack.js +30 -16
- package/dist/nexus-cli/src/commands/package/pack.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/package-payload.e2e.test.js +12 -0
- package/dist/nexus-cli/src/commands/package/package-payload.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/package-query-json.e2e.test.js +9 -4
- package/dist/nexus-cli/src/commands/package/package-query-json.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/plan.js +20 -13
- package/dist/nexus-cli/src/commands/package/plan.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/promote.js +16 -11
- package/dist/nexus-cli/src/commands/package/promote.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/promotion-history.js +24 -18
- package/dist/nexus-cli/src/commands/package/promotion-history.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/publish.js +23 -13
- package/dist/nexus-cli/src/commands/package/publish.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/rollback.js +64 -43
- package/dist/nexus-cli/src/commands/package/rollback.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/rollout-status.js +15 -9
- package/dist/nexus-cli/src/commands/package/rollout-status.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/rollout-update.js +16 -9
- package/dist/nexus-cli/src/commands/package/rollout-update.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/rollout-workspaces.js +18 -12
- package/dist/nexus-cli/src/commands/package/rollout-workspaces.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/search.js +27 -25
- package/dist/nexus-cli/src/commands/package/search.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/uninstall.js +23 -16
- package/dist/nexus-cli/src/commands/package/uninstall.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/upgrade.js +37 -23
- package/dist/nexus-cli/src/commands/package/upgrade.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/validate.js +75 -59
- package/dist/nexus-cli/src/commands/package/validate.js.map +1 -1
- package/dist/nexus-cli/src/commands/package/versions.js +13 -12
- package/dist/nexus-cli/src/commands/package/versions.js.map +1 -1
- package/dist/nexus-cli/src/commands/preflight/get.js +14 -11
- package/dist/nexus-cli/src/commands/preflight/get.js.map +1 -1
- package/dist/nexus-cli/src/commands/preflight/run.e2e.test.js +9 -10
- package/dist/nexus-cli/src/commands/preflight/run.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/preflight/run.js +14 -10
- package/dist/nexus-cli/src/commands/preflight/run.js.map +1 -1
- package/dist/nexus-cli/src/commands/project/convert.js +45 -35
- package/dist/nexus-cli/src/commands/project/convert.js.map +1 -1
- package/dist/nexus-cli/src/commands/project/deploy-start.js +40 -26
- package/dist/nexus-cli/src/commands/project/deploy-start.js.map +1 -1
- package/dist/nexus-cli/src/commands/project/index.js +5 -3
- package/dist/nexus-cli/src/commands/project/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/revision/baseline.js +23 -10
- package/dist/nexus-cli/src/commands/revision/baseline.js.map +1 -1
- package/dist/nexus-cli/src/commands/revision/diff.js +9 -5
- package/dist/nexus-cli/src/commands/revision/diff.js.map +1 -1
- package/dist/nexus-cli/src/commands/revision/history.js +5 -3
- package/dist/nexus-cli/src/commands/revision/history.js.map +1 -1
- package/dist/nexus-cli/src/commands/revision/revision.e2e.test.js +4 -4
- package/dist/nexus-cli/src/commands/revision/revision.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/revision/rollback.js +13 -5
- package/dist/nexus-cli/src/commands/revision/rollback.js.map +1 -1
- package/dist/nexus-cli/src/commands/sandbox/create.js +7 -5
- package/dist/nexus-cli/src/commands/sandbox/create.js.map +1 -1
- package/dist/nexus-cli/src/commands/sandbox/delete.js +12 -6
- package/dist/nexus-cli/src/commands/sandbox/delete.js.map +1 -1
- package/dist/nexus-cli/src/commands/sandbox/list.js +9 -1
- package/dist/nexus-cli/src/commands/sandbox/list.js.map +1 -1
- package/dist/nexus-cli/src/commands/script/run.js +17 -10
- package/dist/nexus-cli/src/commands/script/run.js.map +1 -1
- package/dist/nexus-cli/src/commands/source/get.js +11 -4
- package/dist/nexus-cli/src/commands/source/get.js.map +1 -1
- package/dist/nexus-cli/src/commands/source/pull.js +3 -2
- package/dist/nexus-cli/src/commands/source/pull.js.map +1 -1
- package/dist/nexus-cli/src/commands/source/push.js +14 -11
- package/dist/nexus-cli/src/commands/source/push.js.map +1 -1
- package/dist/nexus-cli/src/commands/source/source-sync.e2e.test.js +3 -2
- package/dist/nexus-cli/src/commands/source/source-sync.e2e.test.js.map +1 -1
- package/dist/nexus-cli/src/commands/source/status.js +3 -2
- package/dist/nexus-cli/src/commands/source/status.js.map +1 -1
- package/dist/nexus-cli/src/commands/test/report.js +9 -2
- package/dist/nexus-cli/src/commands/test/report.js.map +1 -1
- package/dist/nexus-cli/src/commands/test/run.js +13 -7
- package/dist/nexus-cli/src/commands/test/run.js.map +1 -1
- package/dist/nexus-cli/src/commands/user/service-account.js +9 -5
- package/dist/nexus-cli/src/commands/user/service-account.js.map +1 -1
- package/dist/nexus-cli/src/commands/validate/index.js +20 -8
- package/dist/nexus-cli/src/commands/validate/index.js.map +1 -1
- package/dist/nexus-cli/src/commands/workforce/agent.js +3 -3
- package/dist/nexus-cli/src/commands/workforce/command-attribution.test.d.ts +1 -0
- package/dist/nexus-cli/src/commands/workforce/command-attribution.test.js +26 -0
- package/dist/nexus-cli/src/commands/workforce/command-attribution.test.js.map +1 -0
- package/dist/nexus-cli/src/commands/workforce/escalation.js +1 -1
- package/dist/nexus-cli/src/commands/workforce/knowledge.js +6 -6
- package/dist/nexus-cli/src/commands/workforce/learning.js +5 -5
- package/dist/nexus-cli/src/commands/workforce/notification.js +1 -1
- package/dist/nexus-cli/src/commands/workforce/observe.js +2 -2
- package/dist/nexus-cli/src/commands/workforce/orchestration.js +2 -2
- package/dist/nexus-cli/src/commands/workforce/permission.js +3 -3
- package/dist/nexus-cli/src/commands/workforce/provider.js +1 -1
- package/dist/nexus-cli/src/commands/workforce/rehearsal.js +2 -2
- package/dist/nexus-cli/src/commands/workforce/sop.js +1 -1
- package/dist/nexus-cli/src/commands/workforce/task.js +1 -1
- package/dist/nexus-cli/src/commands/workforce/test-case.js +9 -9
- package/dist/nexus-cli/src/commands/workspace/index.js +55 -19
- package/dist/nexus-cli/src/commands/workspace/index.js.map +1 -1
- package/dist/nexus-cli/src/contracts/command-contract-matrix.d.ts +39 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js +842 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.generated.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.js +114 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.d.ts +28 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.js +159 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.test.js +69 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.runner.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.scenarios.d.ts +2 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.scenarios.js +145 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.scenarios.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.test.js +53 -0
- package/dist/nexus-cli/src/contracts/command-contract-matrix.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-inventory.d.ts +35 -0
- package/dist/nexus-cli/src/contracts/command-inventory.js +88 -0
- package/dist/nexus-cli/src/contracts/command-inventory.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-inventory.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-inventory.test.js +46 -0
- package/dist/nexus-cli/src/contracts/command-inventory.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.d.ts +24 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.js +51 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.test.js +33 -0
- package/dist/nexus-cli/src/contracts/command-policy.exporter.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.d.ts +14 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.js +185 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.test.js +43 -0
- package/dist/nexus-cli/src/contracts/command-policy.registry.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.d.ts +20 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.js +179 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.js.map +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.test.d.ts +1 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.test.js +70 -0
- package/dist/nexus-cli/src/contracts/command-policy.validator.test.js.map +1 -0
- package/dist/nexus-cli/src/contracts/index.d.ts +7 -0
- package/dist/nexus-cli/src/contracts/index.js +24 -1
- package/dist/nexus-cli/src/contracts/index.js.map +1 -1
- package/dist/nexus-cli/src/contracts/machine-result.d.ts +3 -3
- package/dist/nexus-cli/src/contracts/machine-result.js +6 -0
- package/dist/nexus-cli/src/contracts/machine-result.js.map +1 -1
- package/dist/nexus-cli/src/runtime/failure-normalizer.d.ts +7 -0
- package/dist/nexus-cli/src/runtime/failure-normalizer.js +78 -0
- package/dist/nexus-cli/src/runtime/failure-normalizer.js.map +1 -0
- package/dist/nexus-cli/src/runtime/failure-normalizer.test.d.ts +1 -0
- package/dist/nexus-cli/src/runtime/failure-normalizer.test.js +41 -0
- package/dist/nexus-cli/src/runtime/failure-normalizer.test.js.map +1 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.d.ts +31 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.js +75 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.js.map +1 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.test.d.ts +1 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.test.js +80 -0
- package/dist/nexus-cli/src/runtime/output-coordinator.test.js.map +1 -0
- package/dist/nexus-cli/src/services/workforce-bundle-archive.d.ts +1 -1
- package/dist/nexus-cli/src/services/workforce-bundle-remote.d.ts +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.d.ts +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.js +1 -1
- package/dist/nexus-cli/src/services/workforce-test-remote.test.js +2 -2
- package/dist/nexus-cli/src/utils/error-handler.js +3 -0
- package/dist/nexus-cli/src/utils/error-handler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contracts/index.ts"],"names":[],"mappings":";;;AAAA,uDAK4B;AAJ1B,sHAAA,kBAAkB,OAAA;AAClB,sHAAA,kBAAkB,OAAA;AAClB,+HAAA,2BAA2B,OAAA;AAC3B,2HAAA,uBAAuB,OAAA;AAEzB,yEAEqC;AADnC,oIAAA,uBAAuB,OAAA;AAEzB,mDAS0B;AARxB,oHAAA,kBAAkB,OAAA;AAClB,oHAAA,kBAAkB,OAAA;AAClB,qHAAA,mBAAmB,OAAA;AACnB,uHAAA,qBAAqB,OAAA;AACrB,uHAAA,qBAAqB,OAAA;AACrB,sHAAA,oBAAoB,OAAA;AAItB,yEAGqC;AAFnC,mIAAA,sBAAsB,OAAA;AAGxB,iDAA+D;AAAtD,6HAAA,4BAA4B,OAAA;AACrC,mEAKkC;AAJhC,qIAAA,2BAA2B,OAAA;AAC3B,+IAAA,qCAAqC,OAAA;AACrC,8HAAA,oBAAoB,OAAA;AACpB,yIAAA,+BAA+B,OAAA;AAEjC,mDAM0B;AALxB,gHAAA,cAAc,OAAA;AACd,iHAAA,eAAe,OAAA;AACf,+GAAA,aAAa,OAAA;AACb,mHAAA,iBAAiB,OAAA;AAGnB,2CAGsB;AAFpB,6GAAA,eAAe,OAAA;AACf,6GAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contracts/index.ts"],"names":[],"mappings":";;;AAAA,uDAK4B;AAJ1B,sHAAA,kBAAkB,OAAA;AAClB,sHAAA,kBAAkB,OAAA;AAClB,+HAAA,2BAA2B,OAAA;AAC3B,2HAAA,uBAAuB,OAAA;AAEzB,yEAEqC;AADnC,oIAAA,uBAAuB,OAAA;AAEzB,mDAS0B;AARxB,oHAAA,kBAAkB,OAAA;AAClB,oHAAA,kBAAkB,OAAA;AAClB,qHAAA,mBAAmB,OAAA;AACnB,uHAAA,qBAAqB,OAAA;AACrB,uHAAA,qBAAqB,OAAA;AACrB,sHAAA,oBAAoB,OAAA;AAItB,yEAGqC;AAFnC,mIAAA,sBAAsB,OAAA;AAGxB,iDAA+D;AAAtD,6HAAA,4BAA4B,OAAA;AACrC,mEAKkC;AAJhC,qIAAA,2BAA2B,OAAA;AAC3B,+IAAA,qCAAqC,OAAA;AACrC,8HAAA,oBAAoB,OAAA;AACpB,yIAAA,+BAA+B,OAAA;AAEjC,mDAM0B;AALxB,gHAAA,cAAc,OAAA;AACd,iHAAA,eAAe,OAAA;AACf,+GAAA,aAAa,OAAA;AACb,mHAAA,iBAAiB,OAAA;AAGnB,yDAO6B;AAN3B,0HAAA,qBAAqB,OAAA;AACrB,yIAAA,oCAAoC,OAAA;AAMtC,qEAImC;AAHjC,qIAAA,0BAA0B,OAAA;AAI5B,uEAOoC;AANlC,yIAAA,6BAA6B,OAAA;AAC7B,+IAAA,mCAAmC,OAAA;AACnC,oJAAA,wCAAwC,OAAA;AAK1C,qEAImC;AAHjC,wIAAA,6BAA6B,OAAA;AAI/B,qEAcmC;AAbjC,2IAAA,gCAAgC,OAAA;AAChC,8IAAA,mCAAmC,OAAA;AACnC,2HAAA,gBAAgB,OAAA;AAChB,kJAAA,uCAAuC,OAAA;AACvC,kJAAA,uCAAuC,OAAA;AACvC,4JAAA,iDAAiD,OAAA;AASnD,mFAM0C;AALxC,0IAAA,wBAAwB,OAAA;AACxB,gJAAA,8BAA8B,OAAA;AAKhC,yFAAuF;AAA9E,qJAAA,gCAAgC,OAAA;AACzC,2CAGsB;AAFpB,6GAAA,eAAe,OAAA;AACf,6GAAA,eAAe,OAAA"}
|
|
@@ -7,9 +7,9 @@ export declare function buildCliResult(args: {
|
|
|
7
7
|
contractVersion: string;
|
|
8
8
|
ok: boolean;
|
|
9
9
|
data?: unknown;
|
|
10
|
-
diagnostics?: CliDiagnosticV1
|
|
11
|
-
evidence?: CliEvidenceEntryV1
|
|
12
|
-
nextCommands?: CliNextCommandV1
|
|
10
|
+
diagnostics?: ReadonlyArray<CliDiagnosticV1>;
|
|
11
|
+
evidence?: ReadonlyArray<CliEvidenceEntryV1>;
|
|
12
|
+
nextCommands?: ReadonlyArray<CliNextCommandV1>;
|
|
13
13
|
exitCode?: CliExitCode;
|
|
14
14
|
}): CliResultV1;
|
|
15
15
|
export declare function renderCliResult(result: CliResultV1): string;
|
|
@@ -7,6 +7,7 @@ exports.renderCliResult = renderCliResult;
|
|
|
7
7
|
exports.emitCliResult = emitCliResult;
|
|
8
8
|
const shared_1 = require("@nexusclaw/shared");
|
|
9
9
|
Object.defineProperty(exports, "CLI_RESULT_SCHEMA_VERSION", { enumerable: true, get: function () { return shared_1.CLI_RESULT_SCHEMA_VERSION; } });
|
|
10
|
+
const output_coordinator_1 = require("../runtime/output-coordinator");
|
|
10
11
|
const REDACTED = '[REDACTED]';
|
|
11
12
|
const SECRET_KEY = /(?:^|[_-])(authorization|cookie|credential|password|passwd|secret|token|api[_-]?key|private[_-]?key|client[_-]?secret|access[_-]?key)(?:$|[_-])/i;
|
|
12
13
|
const FORBIDDEN_RESPONSE_KEY = /^(?:stack|stackTrace|providerResponse|providerBody|rawResponse|responseBody|headers)$/i;
|
|
@@ -91,6 +92,11 @@ function renderCliResult(result) {
|
|
|
91
92
|
return JSON.stringify(scrubMachineValue(result));
|
|
92
93
|
}
|
|
93
94
|
function emitCliResult(result, streams = { stdout: process.stdout, stderr: process.stderr }) {
|
|
95
|
+
const coordinator = (0, output_coordinator_1.currentCliOutputCoordinator)();
|
|
96
|
+
if (coordinator && streams.stdout === process.stdout && streams.stderr === process.stderr) {
|
|
97
|
+
coordinator.emitMachineResult(result);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
94
100
|
void streams.stderr;
|
|
95
101
|
const rendered = renderCliResult(result);
|
|
96
102
|
if (streams.stdout === process.stdout) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-result.js","sourceRoot":"","sources":["../../../../src/contracts/machine-result.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"machine-result.js","sourceRoot":"","sources":["../../../../src/contracts/machine-result.ts"],"names":[],"mappings":";;;AAgDA,8CA6BC;AAWD,wCAmCC;AAOD,0CAEC;AAYD,sCAgBC;AA9ID,8CAI2B;AA4IlB,0GA/IP,kCAAyB,OA+IO;AA3IlC,sEAA4E;AAE5E,MAAM,QAAQ,GAAG,YAAY,CAAC;AAC9B,MAAM,UAAU,GAAG,kJAAkJ,CAAC;AACtK,MAAM,sBAAsB,GAAG,wFAAwF,CAAC;AACxH,MAAM,oBAAoB,GAA0B;IAClD,kCAAkC;IAClC,sFAAsF;IACtF,mCAAmC;IACnC,6EAA6E;CAC9E,CAAC;AAEF,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,OAAO,IAAI,oBAAoB,EAAE,CAAC;QAC3C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAOD,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAa,EAAE;QAC5C,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,OAAO,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAChG,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACzF,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC;YACH,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,MAAM,MAAM,GAA8B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;gBAC9E,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACvE,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAS;gBAClC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAGD,SAAS,iBAAiB,CAAC,CAAkB;IAC3C,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjF,CAAC;AAMD,SAAgB,cAAc,CAAC,IAW9B;IACC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAiC,CAAC;IACvG,MAAM,WAAW,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1D,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACvG,CAAC;IACF,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ;QACb,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACrB,CAAC,CAAC,IAAA,wBAAe,EAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAgC,CAAC,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,EAAE;gBACP,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,CAAC;IACX,OAAO;QACL,aAAa,EAAE,kCAAyB;QACxC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ;QACR,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAC1C,WAAW;QACX,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAoC;QACnF,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAkC;KAC1F,CAAC;AACJ,CAAC;AAOD,SAAgB,eAAe,CAAC,MAAmB;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,CAAC;AAYD,SAAgB,aAAa,CAC3B,MAAmB,EACnB,UAAmC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;IAErF,MAAM,WAAW,GAAG,IAAA,gDAA2B,GAAE,CAAC;IAClD,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1F,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,KAAK,OAAO,CAAC,MAAM,CAAC;IACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CliDiagnosticV1, type CliExitCode } from '@nexusclaw/shared';
|
|
2
|
+
export interface CliNormalizedFailure {
|
|
3
|
+
readonly exitCode: CliExitCode;
|
|
4
|
+
readonly diagnostics: ReadonlyArray<CliDiagnosticV1>;
|
|
5
|
+
readonly data: unknown;
|
|
6
|
+
}
|
|
7
|
+
export declare function normalizeCliFailure(error: unknown, phase?: string): CliNormalizedFailure;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeCliFailure = normalizeCliFailure;
|
|
4
|
+
const shared_1 = require("@nexusclaw/shared");
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return value !== null && typeof value === 'object';
|
|
7
|
+
}
|
|
8
|
+
function exitForCode(code) {
|
|
9
|
+
const catalog = shared_1.ERROR_CODE_TO_EXIT;
|
|
10
|
+
if (Object.prototype.hasOwnProperty.call(catalog, code))
|
|
11
|
+
return catalog[code];
|
|
12
|
+
if (/FORBIDDEN|PERMISSION|UNAUTHORIZED|STEP_UP_REQUIRED/u.test(code))
|
|
13
|
+
return 3;
|
|
14
|
+
if (/CONFLICT|MISMATCH|STALE|TAMPERED|DIGEST/u.test(code))
|
|
15
|
+
return 2;
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
function dominantExit(exits) {
|
|
19
|
+
const candidates = new Set(exits);
|
|
20
|
+
for (const exitCode of shared_1.EXIT_PRECEDENCE) {
|
|
21
|
+
if (candidates.has(exitCode))
|
|
22
|
+
return exitCode;
|
|
23
|
+
}
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
function fallbackExit(error, message) {
|
|
27
|
+
if (error.name === 'PermissionError' || /forbidden|permission denied|unauthorized/iu.test(message))
|
|
28
|
+
return 3;
|
|
29
|
+
if (error.name === 'ContractConflictError' || /\bconflict\b|mismatch|stale/iu.test(message))
|
|
30
|
+
return 2;
|
|
31
|
+
const status = typeof error.status === 'number' ? error.status : error.statusCode;
|
|
32
|
+
if (status === 401 || status === 403)
|
|
33
|
+
return 3;
|
|
34
|
+
if (status === 409)
|
|
35
|
+
return 2;
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
function graphQlDetails(error) {
|
|
39
|
+
if (!Array.isArray(error.errors))
|
|
40
|
+
return [];
|
|
41
|
+
return error.errors.filter(isRecord);
|
|
42
|
+
}
|
|
43
|
+
function normalizeCliFailure(error, phase = 'failed') {
|
|
44
|
+
const candidate = isRecord(error) ? error : {};
|
|
45
|
+
const message = error instanceof Error
|
|
46
|
+
? error.message
|
|
47
|
+
: typeof candidate.message === 'string'
|
|
48
|
+
? candidate.message
|
|
49
|
+
: String(error);
|
|
50
|
+
const apiDetails = graphQlDetails(candidate);
|
|
51
|
+
const diagnostics = [];
|
|
52
|
+
const exits = [];
|
|
53
|
+
for (const detail of apiDetails) {
|
|
54
|
+
const code = typeof detail.code === 'string' ? detail.code : 'API_ERROR';
|
|
55
|
+
const detailMessage = typeof detail.message === 'string' ? detail.message : message;
|
|
56
|
+
diagnostics.push({
|
|
57
|
+
code,
|
|
58
|
+
severity: 'error',
|
|
59
|
+
phase,
|
|
60
|
+
message: detailMessage,
|
|
61
|
+
jsonPath: typeof detail.path === 'string' ? detail.path : undefined,
|
|
62
|
+
ruleId: typeof detail.ruleId === 'string' ? detail.ruleId : undefined,
|
|
63
|
+
retryable: detail.retryable === true,
|
|
64
|
+
});
|
|
65
|
+
exits.push(exitForCode(code) ?? fallbackExit(candidate, detailMessage));
|
|
66
|
+
}
|
|
67
|
+
if (diagnostics.length === 0) {
|
|
68
|
+
const code = typeof candidate.code === 'string' ? candidate.code : 'CLI_ERROR';
|
|
69
|
+
diagnostics.push({ code, severity: 'error', phase, message, retryable: false });
|
|
70
|
+
exits.push(exitForCode(code) ?? fallbackExit(candidate, message));
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
exitCode: dominantExit(exits),
|
|
74
|
+
diagnostics,
|
|
75
|
+
data: candidate.details === undefined ? null : { details: candidate.details },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=failure-normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-normalizer.js","sourceRoot":"","sources":["../../../../src/runtime/failure-normalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_test_1 = __importDefault(require("node:test"));
|
|
8
|
+
const failure_normalizer_1 = require("./failure-normalizer");
|
|
9
|
+
(0, node_test_1.default)('normalizer maps permission and conflict classes to shared exit semantics', () => {
|
|
10
|
+
const permission = Object.assign(new Error('denied'), { name: 'PermissionError' });
|
|
11
|
+
const conflict = Object.assign(new Error('changed'), { name: 'ContractConflictError' });
|
|
12
|
+
strict_1.default.equal((0, failure_normalizer_1.normalizeCliFailure)(permission).exitCode, 3);
|
|
13
|
+
strict_1.default.equal((0, failure_normalizer_1.normalizeCliFailure)(conflict).exitCode, 2);
|
|
14
|
+
});
|
|
15
|
+
(0, node_test_1.default)('normalizer preserves safe GraphQL diagnostics and shared precedence', () => {
|
|
16
|
+
const result = (0, failure_normalizer_1.normalizeCliFailure)({
|
|
17
|
+
name: 'GraphQLApiError',
|
|
18
|
+
message: 'request failed',
|
|
19
|
+
errors: [
|
|
20
|
+
{ code: 'PACKAGE_DIGEST_MISMATCH', message: 'digest mismatch', path: '/package', retryable: false },
|
|
21
|
+
{ code: 'STEP_UP_REQUIRED', message: 'step-up required', ruleId: 'step-up', retryable: true },
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
strict_1.default.equal(result.exitCode, 3);
|
|
25
|
+
strict_1.default.deepEqual(result.diagnostics.map((diagnostic) => diagnostic.code), [
|
|
26
|
+
'PACKAGE_DIGEST_MISMATCH', 'STEP_UP_REQUIRED',
|
|
27
|
+
]);
|
|
28
|
+
strict_1.default.equal(result.diagnostics[0]?.jsonPath, '/package');
|
|
29
|
+
strict_1.default.equal(result.diagnostics[1]?.ruleId, 'step-up');
|
|
30
|
+
});
|
|
31
|
+
(0, node_test_1.default)('normalizer maps HTTP status without retaining raw transport objects', () => {
|
|
32
|
+
const result = (0, failure_normalizer_1.normalizeCliFailure)({
|
|
33
|
+
message: 'request rejected', statusCode: 409,
|
|
34
|
+
details: { expected: 'a', actual: 'b' },
|
|
35
|
+
headers: { authorization: 'Bearer secret' },
|
|
36
|
+
});
|
|
37
|
+
strict_1.default.equal(result.exitCode, 2);
|
|
38
|
+
strict_1.default.deepEqual(result.data, { details: { expected: 'a', actual: 'b' } });
|
|
39
|
+
strict_1.default.equal(JSON.stringify(result).includes('headers'), false);
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=failure-normalizer.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure-normalizer.test.js","sourceRoot":"","sources":["../../../../src/runtime/failure-normalizer.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,0DAA6B;AAE7B,6DAA2D;AAE3D,IAAA,mBAAI,EAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACxF,gBAAM,CAAC,KAAK,CAAC,IAAA,wCAAmB,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC1D,gBAAM,CAAC,KAAK,CAAC,IAAA,wCAAmB,EAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AACH,IAAA,mBAAI,EAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAA,wCAAmB,EAAC;QACjC,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;YACnG,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;SAC9F;KACF,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjC,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACxE,yBAAyB,EAAE,kBAAkB;KAC9C,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1D,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAG,IAAA,wCAAmB,EAAC;QACjC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG;QAC5C,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QACvC,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE;KAC5C,CAAC,CAAC;IACH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjC,gBAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3E,gBAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CliExitCode, CliResultV1 } from '@nexusclaw/shared';
|
|
2
|
+
export interface CliOutputStream {
|
|
3
|
+
write(chunk: string | Uint8Array): boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface CliOutputCoordinatorOptions {
|
|
6
|
+
readonly command: string;
|
|
7
|
+
readonly machine: boolean;
|
|
8
|
+
readonly stdout?: CliOutputStream;
|
|
9
|
+
readonly stderr?: CliOutputStream;
|
|
10
|
+
readonly setExitCode?: (exitCode: CliExitCode) => void;
|
|
11
|
+
readonly renderResult?: (result: CliResultV1) => string;
|
|
12
|
+
}
|
|
13
|
+
export declare function isMachineOutputArgv(argv: ReadonlyArray<string>): boolean;
|
|
14
|
+
export declare class CliOutputCoordinator {
|
|
15
|
+
readonly command: string;
|
|
16
|
+
readonly machine: boolean;
|
|
17
|
+
private readonly stdout;
|
|
18
|
+
private readonly stderr;
|
|
19
|
+
private readonly setExitCode;
|
|
20
|
+
private readonly renderResult;
|
|
21
|
+
private terminalEmitted;
|
|
22
|
+
constructor(options: CliOutputCoordinatorOptions);
|
|
23
|
+
hasEmittedTerminalResult(): boolean;
|
|
24
|
+
writeHumanStdout(message: string): void;
|
|
25
|
+
writeHumanStderr(message: string): void;
|
|
26
|
+
emitMachineResult(result: CliResultV1): void;
|
|
27
|
+
private assertHumanOutputAllowed;
|
|
28
|
+
}
|
|
29
|
+
export declare function runWithCliOutputCoordinator<T>(coordinator: CliOutputCoordinator, operation: () => T): T;
|
|
30
|
+
export declare function currentCliOutputCoordinator(): CliOutputCoordinator | undefined;
|
|
31
|
+
export declare function requireCliOutputCoordinator(): CliOutputCoordinator;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliOutputCoordinator = void 0;
|
|
4
|
+
exports.isMachineOutputArgv = isMachineOutputArgv;
|
|
5
|
+
exports.runWithCliOutputCoordinator = runWithCliOutputCoordinator;
|
|
6
|
+
exports.currentCliOutputCoordinator = currentCliOutputCoordinator;
|
|
7
|
+
exports.requireCliOutputCoordinator = requireCliOutputCoordinator;
|
|
8
|
+
const node_async_hooks_1 = require("node:async_hooks");
|
|
9
|
+
const coordinatorStorage = new node_async_hooks_1.AsyncLocalStorage();
|
|
10
|
+
function isMachineOutputArgv(argv) {
|
|
11
|
+
return argv.some((argument) => argument === '--json');
|
|
12
|
+
}
|
|
13
|
+
class CliOutputCoordinator {
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.terminalEmitted = false;
|
|
16
|
+
this.command = options.command;
|
|
17
|
+
this.machine = options.machine;
|
|
18
|
+
this.stdout = options.stdout ?? process.stdout;
|
|
19
|
+
this.stderr = options.stderr ?? process.stderr;
|
|
20
|
+
this.setExitCode = options.setExitCode ?? ((exitCode) => { process.exitCode = exitCode; });
|
|
21
|
+
this.renderResult = options.renderResult ?? ((result) => JSON.stringify(result));
|
|
22
|
+
}
|
|
23
|
+
hasEmittedTerminalResult() {
|
|
24
|
+
return this.terminalEmitted;
|
|
25
|
+
}
|
|
26
|
+
writeHumanStdout(message) {
|
|
27
|
+
this.assertHumanOutputAllowed('stdout');
|
|
28
|
+
this.stdout.write(message);
|
|
29
|
+
}
|
|
30
|
+
writeHumanStderr(message) {
|
|
31
|
+
this.assertHumanOutputAllowed('stderr');
|
|
32
|
+
this.stderr.write(message);
|
|
33
|
+
}
|
|
34
|
+
emitMachineResult(result) {
|
|
35
|
+
if (!this.machine) {
|
|
36
|
+
throw new Error('CLI_MACHINE_RESULT_IN_HUMAN_MODE');
|
|
37
|
+
}
|
|
38
|
+
if (this.terminalEmitted) {
|
|
39
|
+
throw new Error('CLI_TERMINAL_RESULT_ALREADY_EMITTED');
|
|
40
|
+
}
|
|
41
|
+
const normalizedResultCommand = result.command.trim().split(/\s+/u).join('.');
|
|
42
|
+
if (normalizedResultCommand !== this.command) {
|
|
43
|
+
throw new Error(`CLI_TERMINAL_RESULT_COMMAND_MISMATCH: expected ${this.command}, received ${result.command}`);
|
|
44
|
+
}
|
|
45
|
+
const canonicalResult = normalizedResultCommand === result.command
|
|
46
|
+
? result
|
|
47
|
+
: { ...result, command: normalizedResultCommand };
|
|
48
|
+
const rendered = this.renderResult(canonicalResult);
|
|
49
|
+
this.terminalEmitted = true;
|
|
50
|
+
this.setExitCode(result.exitCode);
|
|
51
|
+
this.stdout.write(`${rendered}\n`);
|
|
52
|
+
}
|
|
53
|
+
assertHumanOutputAllowed(stream) {
|
|
54
|
+
if (this.machine) {
|
|
55
|
+
throw new Error(`CLI_INCIDENTAL_${stream.toUpperCase()}_IN_MACHINE_MODE`);
|
|
56
|
+
}
|
|
57
|
+
if (this.terminalEmitted) {
|
|
58
|
+
throw new Error('CLI_OUTPUT_AFTER_TERMINAL_RESULT');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.CliOutputCoordinator = CliOutputCoordinator;
|
|
63
|
+
function runWithCliOutputCoordinator(coordinator, operation) {
|
|
64
|
+
return coordinatorStorage.run(coordinator, operation);
|
|
65
|
+
}
|
|
66
|
+
function currentCliOutputCoordinator() {
|
|
67
|
+
return coordinatorStorage.getStore();
|
|
68
|
+
}
|
|
69
|
+
function requireCliOutputCoordinator() {
|
|
70
|
+
const coordinator = currentCliOutputCoordinator();
|
|
71
|
+
if (!coordinator)
|
|
72
|
+
throw new Error('CLI_OUTPUT_COORDINATOR_MISSING');
|
|
73
|
+
return coordinator;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=output-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-coordinator.js","sourceRoot":"","sources":["../../../../src/runtime/output-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_test_1 = __importDefault(require("node:test"));
|
|
8
|
+
const machine_result_1 = require("../contracts/machine-result");
|
|
9
|
+
const output_coordinator_1 = require("./output-coordinator");
|
|
10
|
+
function memoryStream(target) {
|
|
11
|
+
return { write: (chunk) => { target.push(String(chunk)); return true; } };
|
|
12
|
+
}
|
|
13
|
+
(0, node_test_1.default)('argv transport detection recognizes only the canonical --json switch', () => {
|
|
14
|
+
strict_1.default.equal((0, output_coordinator_1.isMachineOutputArgv)(['node', 'nexus', '--json', 'log', 'list']), true);
|
|
15
|
+
strict_1.default.equal((0, output_coordinator_1.isMachineOutputArgv)(['node', 'nexus', 'log', 'list', '--json']), true);
|
|
16
|
+
strict_1.default.equal((0, output_coordinator_1.isMachineOutputArgv)(['node', 'nexus', 'data', 'query', '--format', 'json']), false);
|
|
17
|
+
strict_1.default.equal((0, output_coordinator_1.isMachineOutputArgv)(['node', 'nexus', 'test', 'run', '--result-format', 'json']), false);
|
|
18
|
+
});
|
|
19
|
+
(0, node_test_1.default)('machine coordinator emits one terminal document and synchronizes exit code', () => {
|
|
20
|
+
const stdout = [];
|
|
21
|
+
const stderr = [];
|
|
22
|
+
const exits = [];
|
|
23
|
+
const coordinator = new output_coordinator_1.CliOutputCoordinator({
|
|
24
|
+
command: 'package.info', machine: true,
|
|
25
|
+
stdout: memoryStream(stdout), stderr: memoryStream(stderr),
|
|
26
|
+
setExitCode: (exitCode) => exits.push(exitCode),
|
|
27
|
+
});
|
|
28
|
+
const result = (0, machine_result_1.buildCliResult)({
|
|
29
|
+
command: 'package.info', phase: 'failed',
|
|
30
|
+
contractVersion: 'nexusclaw.cli-command-contract/v2', ok: false,
|
|
31
|
+
exitCode: 1, diagnostics: [{
|
|
32
|
+
code: 'CLI_ERROR', severity: 'error', phase: 'failed', message: 'failed', retryable: false,
|
|
33
|
+
}],
|
|
34
|
+
});
|
|
35
|
+
coordinator.emitMachineResult(result);
|
|
36
|
+
strict_1.default.equal(stdout.length, 1);
|
|
37
|
+
strict_1.default.equal(JSON.parse(stdout[0]).exitCode, 1);
|
|
38
|
+
strict_1.default.deepEqual(stderr, []);
|
|
39
|
+
strict_1.default.deepEqual(exits, [1]);
|
|
40
|
+
strict_1.default.equal(coordinator.hasEmittedTerminalResult(), true);
|
|
41
|
+
strict_1.default.throws(() => coordinator.emitMachineResult(result), /CLI_TERMINAL_RESULT_ALREADY_EMITTED/);
|
|
42
|
+
strict_1.default.equal(stdout.length, 1);
|
|
43
|
+
});
|
|
44
|
+
(0, node_test_1.default)('machine coordinator rejects incidental human stdout and stderr', () => {
|
|
45
|
+
const coordinator = new output_coordinator_1.CliOutputCoordinator({ command: 'log.list', machine: true });
|
|
46
|
+
strict_1.default.throws(() => coordinator.writeHumanStdout('table'), /CLI_INCIDENTAL_STDOUT_IN_MACHINE_MODE/);
|
|
47
|
+
strict_1.default.throws(() => coordinator.writeHumanStderr('spinner'), /CLI_INCIDENTAL_STDERR_IN_MACHINE_MODE/);
|
|
48
|
+
});
|
|
49
|
+
(0, node_test_1.default)('human coordinator keeps stdout and stderr separate', () => {
|
|
50
|
+
const stdout = [];
|
|
51
|
+
const stderr = [];
|
|
52
|
+
const coordinator = new output_coordinator_1.CliOutputCoordinator({
|
|
53
|
+
command: 'log.list', machine: false,
|
|
54
|
+
stdout: memoryStream(stdout), stderr: memoryStream(stderr),
|
|
55
|
+
});
|
|
56
|
+
coordinator.writeHumanStdout('rows\n');
|
|
57
|
+
coordinator.writeHumanStderr('warning\n');
|
|
58
|
+
strict_1.default.deepEqual(stdout, ['rows\n']);
|
|
59
|
+
strict_1.default.deepEqual(stderr, ['warning\n']);
|
|
60
|
+
});
|
|
61
|
+
(0, node_test_1.default)('coordinator follows asynchronous invocation context without global leakage', async () => {
|
|
62
|
+
const coordinator = new output_coordinator_1.CliOutputCoordinator({ command: 'workspace.status', machine: true });
|
|
63
|
+
strict_1.default.equal((0, output_coordinator_1.currentCliOutputCoordinator)(), undefined);
|
|
64
|
+
await (0, output_coordinator_1.runWithCliOutputCoordinator)(coordinator, async () => {
|
|
65
|
+
await Promise.resolve();
|
|
66
|
+
strict_1.default.equal((0, output_coordinator_1.requireCliOutputCoordinator)(), coordinator);
|
|
67
|
+
});
|
|
68
|
+
strict_1.default.equal((0, output_coordinator_1.currentCliOutputCoordinator)(), undefined);
|
|
69
|
+
strict_1.default.throws(() => (0, output_coordinator_1.requireCliOutputCoordinator)(), /CLI_OUTPUT_COORDINATOR_MISSING/);
|
|
70
|
+
});
|
|
71
|
+
(0, node_test_1.default)('coordinator rejects a terminal result attributed to another command', () => {
|
|
72
|
+
const coordinator = new output_coordinator_1.CliOutputCoordinator({ command: 'source.get', machine: true });
|
|
73
|
+
const result = (0, machine_result_1.buildCliResult)({
|
|
74
|
+
command: 'source.status', phase: 'complete',
|
|
75
|
+
contractVersion: 'nexusclaw.cli-command-contract/v2', ok: true,
|
|
76
|
+
});
|
|
77
|
+
strict_1.default.throws(() => coordinator.emitMachineResult(result), /CLI_TERMINAL_RESULT_COMMAND_MISMATCH/);
|
|
78
|
+
strict_1.default.equal(coordinator.hasEmittedTerminalResult(), false);
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=output-coordinator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-coordinator.test.js","sourceRoot":"","sources":["../../../../src/runtime/output-coordinator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,5 +8,5 @@ export declare function buildCanonicalWorkforceBundleArchive(options: {
|
|
|
8
8
|
portableBundleDigest: `sha256:${string}`;
|
|
9
9
|
runtimeBindingsDigest: `sha256:${string}`;
|
|
10
10
|
fileCount: number;
|
|
11
|
-
declaredSurfaces: ("
|
|
11
|
+
declaredSurfaces: ("employee" | "code" | "flow")[];
|
|
12
12
|
}>;
|
|
@@ -14,7 +14,7 @@ export declare function prepareRemoteWorkforceBundle(options: {
|
|
|
14
14
|
portableBundleDigest: `sha256:${string}`;
|
|
15
15
|
runtimeBindingsDigest: `sha256:${string}`;
|
|
16
16
|
fileCount: number;
|
|
17
|
-
declaredSurfaces: ("
|
|
17
|
+
declaredSurfaces: ("employee" | "code" | "flow")[];
|
|
18
18
|
};
|
|
19
19
|
sealed: import("./api-client").SealedExecutablePackageArtifact;
|
|
20
20
|
artifactInput: {
|
|
@@ -12,7 +12,7 @@ exports.listTestResultsRemote = listTestResultsRemote;
|
|
|
12
12
|
exports.getTestBaselineRemote = getTestBaselineRemote;
|
|
13
13
|
exports.getTestRegressionRemote = getTestRegressionRemote;
|
|
14
14
|
const api_client_1 = require("./api-client");
|
|
15
|
-
exports.WORKFORCE_TEST_CLI_VERSION = '0.3.
|
|
15
|
+
exports.WORKFORCE_TEST_CLI_VERSION = '0.3.27';
|
|
16
16
|
function parseCompatibilityVersion(version) {
|
|
17
17
|
const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(version.trim());
|
|
18
18
|
if (!match)
|
|
@@ -22,9 +22,9 @@ const workforce_test_remote_1 = require("./workforce-test-remote");
|
|
|
22
22
|
strict_1.default.throws(() => (0, workforce_test_remote_1.assertWorkforceTestCompatibility)('unknown'), /did not publish cliCompatibilityVersion/);
|
|
23
23
|
});
|
|
24
24
|
(0, node_test_1.default)('evaluation preflight blocks a mismatched CLI/Core contract', () => {
|
|
25
|
-
strict_1.default.throws(() => (0, workforce_test_remote_1.assertWorkforceTestCompatibility)('0.4.0'), /CLI 0.3.
|
|
25
|
+
strict_1.default.throws(() => (0, workforce_test_remote_1.assertWorkforceTestCompatibility)('0.4.0'), /CLI 0.3.27, Core requires 0.4.0/);
|
|
26
26
|
});
|
|
27
27
|
(0, node_test_1.default)('evaluation preflight blocks an older CLI than the Core patch contract', () => {
|
|
28
|
-
strict_1.default.throws(() => (0, workforce_test_remote_1.assertWorkforceTestCompatibility)('0.3.
|
|
28
|
+
strict_1.default.throws(() => (0, workforce_test_remote_1.assertWorkforceTestCompatibility)('0.3.28'), /CLI 0.3.27, Core requires 0.3.28/);
|
|
29
29
|
});
|
|
30
30
|
//# sourceMappingURL=workforce-test-remote.test.js.map
|
|
@@ -6,6 +6,7 @@ exports.withErrorHandler = withErrorHandler;
|
|
|
6
6
|
const logger_1 = require("./logger");
|
|
7
7
|
const structured_error_1 = require("./structured-error");
|
|
8
8
|
const machine_result_1 = require("../contracts/machine-result");
|
|
9
|
+
const output_coordinator_1 = require("../runtime/output-coordinator");
|
|
9
10
|
class ContractConflictError extends Error {
|
|
10
11
|
constructor(message) {
|
|
11
12
|
super(message);
|
|
@@ -40,6 +41,8 @@ function sanitizeErrorMessage(error) {
|
|
|
40
41
|
.replace(/token[=:]\s*\S+/gi, 'token=[REDACTED]');
|
|
41
42
|
}
|
|
42
43
|
function handleError(error, options = {}) {
|
|
44
|
+
if ((0, output_coordinator_1.currentCliOutputCoordinator)())
|
|
45
|
+
throw error;
|
|
43
46
|
const sanitized = sanitizeErrorMessage(error);
|
|
44
47
|
const exitCode = resolveExitCode(error);
|
|
45
48
|
if (options.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../../src/utils/error-handler.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|