@productbrain/cli 0.1.0-beta.973 → 0.1.0-beta.9756
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 +11 -2
- package/dist/__tests__/adapters.test.js +79 -53
- package/dist/__tests__/adapters.test.js.map +1 -1
- package/dist/__tests__/adminConfig.test.d.ts +18 -0
- package/dist/__tests__/adminConfig.test.d.ts.map +1 -0
- package/dist/__tests__/adminConfig.test.js +221 -0
- package/dist/__tests__/adminConfig.test.js.map +1 -0
- package/dist/__tests__/batch-transformations.test.js +2 -26
- package/dist/__tests__/batch-transformations.test.js.map +1 -1
- package/dist/__tests__/capture-receipt-coaching.test.d.ts +2 -0
- package/dist/__tests__/capture-receipt-coaching.test.d.ts.map +1 -0
- package/dist/__tests__/capture-receipt-coaching.test.js +109 -0
- package/dist/__tests__/capture-receipt-coaching.test.js.map +1 -0
- package/dist/__tests__/capture-receipt-role-hint.test.d.ts +2 -0
- package/dist/__tests__/capture-receipt-role-hint.test.d.ts.map +1 -0
- package/dist/__tests__/capture-receipt-role-hint.test.js +66 -0
- package/dist/__tests__/capture-receipt-role-hint.test.js.map +1 -0
- package/dist/__tests__/capture-receipt-spine-floor.test.d.ts +2 -0
- package/dist/__tests__/capture-receipt-spine-floor.test.d.ts.map +1 -0
- package/dist/__tests__/capture-receipt-spine-floor.test.js +45 -0
- package/dist/__tests__/capture-receipt-spine-floor.test.js.map +1 -0
- package/dist/__tests__/capture.test.js +1337 -181
- package/dist/__tests__/capture.test.js.map +1 -1
- package/dist/__tests__/client-binding-guard.test.d.ts +2 -0
- package/dist/__tests__/client-binding-guard.test.d.ts.map +1 -0
- package/dist/__tests__/client-binding-guard.test.js +84 -0
- package/dist/__tests__/client-binding-guard.test.js.map +1 -0
- package/dist/__tests__/coaching-mirror-drift.test.d.ts +2 -0
- package/dist/__tests__/coaching-mirror-drift.test.d.ts.map +1 -0
- package/dist/__tests__/coaching-mirror-drift.test.js +47 -0
- package/dist/__tests__/coaching-mirror-drift.test.js.map +1 -0
- package/dist/__tests__/codex-prep-parity.test.d.ts +2 -0
- package/dist/__tests__/codex-prep-parity.test.d.ts.map +1 -0
- package/dist/__tests__/codex-prep-parity.test.js +84 -0
- package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
- package/dist/__tests__/collection-registry-seed-drift.test.d.ts +2 -0
- package/dist/__tests__/collection-registry-seed-drift.test.d.ts.map +1 -0
- package/dist/__tests__/collection-registry-seed-drift.test.js +102 -0
- package/dist/__tests__/collection-registry-seed-drift.test.js.map +1 -0
- package/dist/__tests__/config-prod-fallthrough.test.d.ts +2 -0
- package/dist/__tests__/config-prod-fallthrough.test.d.ts.map +1 -0
- package/dist/__tests__/config-prod-fallthrough.test.js +93 -0
- package/dist/__tests__/config-prod-fallthrough.test.js.map +1 -0
- package/dist/__tests__/config.test.js +559 -40
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/constellation.test.js +26 -14
- package/dist/__tests__/constellation.test.js.map +1 -1
- package/dist/__tests__/conversation.test.d.ts +2 -0
- package/dist/__tests__/conversation.test.d.ts.map +1 -0
- package/dist/__tests__/conversation.test.js +113 -0
- package/dist/__tests__/conversation.test.js.map +1 -0
- package/dist/__tests__/entry-formatter.test.d.ts +2 -0
- package/dist/__tests__/entry-formatter.test.d.ts.map +1 -0
- package/dist/__tests__/entry-formatter.test.js +135 -0
- package/dist/__tests__/entry-formatter.test.js.map +1 -0
- package/dist/__tests__/entry-preflight.test.d.ts +2 -0
- package/dist/__tests__/entry-preflight.test.d.ts.map +1 -0
- package/dist/__tests__/entry-preflight.test.js +58 -0
- package/dist/__tests__/entry-preflight.test.js.map +1 -0
- package/dist/__tests__/entryAccept-batch.test.d.ts +2 -0
- package/dist/__tests__/entryAccept-batch.test.d.ts.map +1 -0
- package/dist/__tests__/entryAccept-batch.test.js +305 -0
- package/dist/__tests__/entryAccept-batch.test.js.map +1 -0
- package/dist/__tests__/entryAccept.test.d.ts +2 -0
- package/dist/__tests__/entryAccept.test.d.ts.map +1 -0
- package/dist/__tests__/entryAccept.test.js +506 -0
- package/dist/__tests__/entryAccept.test.js.map +1 -0
- package/dist/__tests__/entryDiscardResolve.test.d.ts +2 -0
- package/dist/__tests__/entryDiscardResolve.test.d.ts.map +1 -0
- package/dist/__tests__/entryDiscardResolve.test.js +28 -0
- package/dist/__tests__/entryDiscardResolve.test.js.map +1 -0
- package/dist/__tests__/entryOwn.test.d.ts +2 -0
- package/dist/__tests__/entryOwn.test.d.ts.map +1 -0
- package/dist/__tests__/entryOwn.test.js +50 -0
- package/dist/__tests__/entryOwn.test.js.map +1 -0
- package/dist/__tests__/entryTick.test.d.ts +2 -0
- package/dist/__tests__/entryTick.test.d.ts.map +1 -0
- package/dist/__tests__/entryTick.test.js +40 -0
- package/dist/__tests__/entryTick.test.js.map +1 -0
- package/dist/__tests__/envelope-contract.test.js +2 -0
- package/dist/__tests__/envelope-contract.test.js.map +1 -1
- package/dist/__tests__/errors.test.js +41 -0
- package/dist/__tests__/errors.test.js.map +1 -1
- package/dist/__tests__/fields.test.js +14 -3
- package/dist/__tests__/fields.test.js.map +1 -1
- package/dist/__tests__/gateway-dry-run-timeout.test.d.ts +2 -0
- package/dist/__tests__/gateway-dry-run-timeout.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-dry-run-timeout.test.js +70 -0
- package/dist/__tests__/gateway-dry-run-timeout.test.js.map +1 -0
- package/dist/__tests__/gateway-timeout-body-phase.test.d.ts +2 -0
- package/dist/__tests__/gateway-timeout-body-phase.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-timeout-body-phase.test.js +121 -0
- package/dist/__tests__/gateway-timeout-body-phase.test.js.map +1 -0
- package/dist/__tests__/handshake-augment.test.js +4 -20
- package/dist/__tests__/handshake-augment.test.js.map +1 -1
- package/dist/__tests__/handshake-dormancy.test.js +10 -193
- package/dist/__tests__/handshake-dormancy.test.js.map +1 -1
- package/dist/__tests__/handshake-formatter.test.js +44 -0
- package/dist/__tests__/handshake-formatter.test.js.map +1 -1
- package/dist/__tests__/handshake-preview.test.js +271 -612
- package/dist/__tests__/handshake-preview.test.js.map +1 -1
- package/dist/__tests__/handshake-session-threading.test.d.ts +2 -0
- package/dist/__tests__/handshake-session-threading.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-session-threading.test.js +185 -0
- package/dist/__tests__/handshake-session-threading.test.js.map +1 -0
- package/dist/__tests__/handshake.e2e.test.js +7 -1033
- package/dist/__tests__/handshake.e2e.test.js.map +1 -1
- package/dist/__tests__/handshake.test.js +523 -308
- package/dist/__tests__/handshake.test.js.map +1 -1
- package/dist/__tests__/health-gap-kinds-drift.test.d.ts +2 -0
- package/dist/__tests__/health-gap-kinds-drift.test.d.ts.map +1 -0
- package/dist/__tests__/health-gap-kinds-drift.test.js +43 -0
- package/dist/__tests__/health-gap-kinds-drift.test.js.map +1 -0
- package/dist/__tests__/hook-intents.test.js +3 -3
- package/dist/__tests__/hook-intents.test.js.map +1 -1
- package/dist/__tests__/ingest.test.js +9 -0
- package/dist/__tests__/ingest.test.js.map +1 -1
- package/dist/__tests__/init.test.js +51 -14
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/kernel-value-sets-drift.test.d.ts +2 -0
- package/dist/__tests__/kernel-value-sets-drift.test.d.ts.map +1 -0
- package/dist/__tests__/kernel-value-sets-drift.test.js +46 -0
- package/dist/__tests__/kernel-value-sets-drift.test.js.map +1 -0
- package/dist/__tests__/kernel-value-sets-generator.test.d.ts +2 -0
- package/dist/__tests__/kernel-value-sets-generator.test.d.ts.map +1 -0
- package/dist/__tests__/kernel-value-sets-generator.test.js +108 -0
- package/dist/__tests__/kernel-value-sets-generator.test.js.map +1 -0
- package/dist/__tests__/login.test.js +18 -1
- package/dist/__tests__/login.test.js.map +1 -1
- package/dist/__tests__/method-registry.integration.test.js +2 -3
- package/dist/__tests__/method-registry.integration.test.js.map +1 -1
- package/dist/__tests__/method-registry.test.d.ts +6 -8
- package/dist/__tests__/method-registry.test.d.ts.map +1 -1
- package/dist/__tests__/method-registry.test.js +22 -70
- package/dist/__tests__/method-registry.test.js.map +1 -1
- package/dist/__tests__/missingPin.test.d.ts +11 -0
- package/dist/__tests__/missingPin.test.d.ts.map +1 -0
- package/dist/__tests__/missingPin.test.js +232 -0
- package/dist/__tests__/missingPin.test.js.map +1 -0
- package/dist/__tests__/notice-marker.test.d.ts +2 -0
- package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
- package/dist/__tests__/notice-marker.test.js +176 -0
- package/dist/__tests__/notice-marker.test.js.map +1 -0
- package/dist/__tests__/onboarding.test.js +29 -5
- package/dist/__tests__/onboarding.test.js.map +1 -1
- package/dist/__tests__/onboardingFallback.test.d.ts +2 -0
- package/dist/__tests__/onboardingFallback.test.d.ts.map +1 -0
- package/dist/__tests__/onboardingFallback.test.js +74 -0
- package/dist/__tests__/onboardingFallback.test.js.map +1 -0
- package/dist/__tests__/orient.test.js +380 -39
- package/dist/__tests__/orient.test.js.map +1 -1
- package/dist/__tests__/perimeter.test.js +1 -1
- package/dist/__tests__/perimeter.test.js.map +1 -1
- package/dist/__tests__/preview-key-refresh.test.d.ts +2 -0
- package/dist/__tests__/preview-key-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/preview-key-refresh.test.js +126 -0
- package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
- package/dist/__tests__/profiles.test.js +498 -8
- package/dist/__tests__/profiles.test.js.map +1 -1
- package/dist/__tests__/prompts.test.js +18 -1
- package/dist/__tests__/prompts.test.js.map +1 -1
- package/dist/__tests__/proof-run.test.d.ts +2 -0
- package/dist/__tests__/proof-run.test.d.ts.map +1 -0
- package/dist/__tests__/proof-run.test.js +255 -0
- package/dist/__tests__/proof-run.test.js.map +1 -0
- package/dist/__tests__/rate-limit-resilience.test.d.ts +7 -0
- package/dist/__tests__/rate-limit-resilience.test.d.ts.map +1 -0
- package/dist/__tests__/rate-limit-resilience.test.js +209 -0
- package/dist/__tests__/rate-limit-resilience.test.js.map +1 -0
- package/dist/__tests__/read-target-notice.test.d.ts +2 -0
- package/dist/__tests__/read-target-notice.test.d.ts.map +1 -0
- package/dist/__tests__/read-target-notice.test.js +129 -0
- package/dist/__tests__/read-target-notice.test.js.map +1 -0
- package/dist/__tests__/relate.test.js +246 -14
- package/dist/__tests__/relate.test.js.map +1 -1
- package/dist/__tests__/reply-commands-registered.test.d.ts +2 -0
- package/dist/__tests__/reply-commands-registered.test.d.ts.map +1 -0
- package/dist/__tests__/reply-commands-registered.test.js +81 -0
- package/dist/__tests__/reply-commands-registered.test.js.map +1 -0
- package/dist/__tests__/repo-detect.test.js +18 -38
- package/dist/__tests__/repo-detect.test.js.map +1 -1
- package/dist/__tests__/reportedProfile.test.d.ts +2 -0
- package/dist/__tests__/reportedProfile.test.d.ts.map +1 -0
- package/dist/__tests__/reportedProfile.test.js +328 -0
- package/dist/__tests__/reportedProfile.test.js.map +1 -0
- package/dist/__tests__/restore.test.d.ts +2 -0
- package/dist/__tests__/restore.test.d.ts.map +1 -0
- package/dist/__tests__/restore.test.js +85 -0
- package/dist/__tests__/restore.test.js.map +1 -0
- package/dist/__tests__/route-latency-budget.test.d.ts +2 -0
- package/dist/__tests__/route-latency-budget.test.d.ts.map +1 -0
- package/dist/__tests__/route-latency-budget.test.js +106 -0
- package/dist/__tests__/route-latency-budget.test.js.map +1 -0
- package/dist/__tests__/runner.test.js +59 -44
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/__tests__/session-binding-refusal-tenant.test.d.ts +2 -0
- package/dist/__tests__/session-binding-refusal-tenant.test.d.ts.map +1 -0
- package/dist/__tests__/session-binding-refusal-tenant.test.js +112 -0
- package/dist/__tests__/session-binding-refusal-tenant.test.js.map +1 -0
- package/dist/__tests__/session-close-loop.test.d.ts +2 -0
- package/dist/__tests__/session-close-loop.test.d.ts.map +1 -0
- package/dist/__tests__/session-close-loop.test.js +213 -0
- package/dist/__tests__/session-close-loop.test.js.map +1 -0
- package/dist/__tests__/session-label.test.d.ts +2 -0
- package/dist/__tests__/session-label.test.d.ts.map +1 -0
- package/dist/__tests__/session-label.test.js +46 -0
- package/dist/__tests__/session-label.test.js.map +1 -0
- package/dist/__tests__/session-list-show.test.d.ts +2 -0
- package/dist/__tests__/session-list-show.test.d.ts.map +1 -0
- package/dist/__tests__/session-list-show.test.js +173 -0
- package/dist/__tests__/session-list-show.test.js.map +1 -0
- package/dist/__tests__/session-pinned-role.test.d.ts +2 -0
- package/dist/__tests__/session-pinned-role.test.d.ts.map +1 -0
- package/dist/__tests__/session-pinned-role.test.js +257 -0
- package/dist/__tests__/session-pinned-role.test.js.map +1 -0
- package/dist/__tests__/session-reset.test.d.ts +2 -0
- package/dist/__tests__/session-reset.test.d.ts.map +1 -0
- package/dist/__tests__/session-reset.test.js +138 -0
- package/dist/__tests__/session-reset.test.js.map +1 -0
- package/dist/__tests__/session-resume-backstop.test.d.ts +2 -0
- package/dist/__tests__/session-resume-backstop.test.d.ts.map +1 -0
- package/dist/__tests__/session-resume-backstop.test.js +139 -0
- package/dist/__tests__/session-resume-backstop.test.js.map +1 -0
- package/dist/__tests__/session-role-name-sanitize.test.d.ts +2 -0
- package/dist/__tests__/session-role-name-sanitize.test.d.ts.map +1 -0
- package/dist/__tests__/session-role-name-sanitize.test.js +129 -0
- package/dist/__tests__/session-role-name-sanitize.test.js.map +1 -0
- package/dist/__tests__/session-start-key-refresh.test.d.ts +2 -0
- package/dist/__tests__/session-start-key-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/session-start-key-refresh.test.js +197 -0
- package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
- package/dist/__tests__/session-state-machine.test.js +190 -9
- package/dist/__tests__/session-state-machine.test.js.map +1 -1
- package/dist/__tests__/session-switch.test.js +218 -4
- package/dist/__tests__/session-switch.test.js.map +1 -1
- package/dist/__tests__/session-touch.test.js +6 -1
- package/dist/__tests__/session-touch.test.js.map +1 -1
- package/dist/__tests__/sessionBinding.test.d.ts +2 -0
- package/dist/__tests__/sessionBinding.test.d.ts.map +1 -0
- package/dist/__tests__/sessionBinding.test.js +118 -0
- package/dist/__tests__/sessionBinding.test.js.map +1 -0
- package/dist/__tests__/sessionByIdLookup.test.d.ts +2 -0
- package/dist/__tests__/sessionByIdLookup.test.d.ts.map +1 -0
- package/dist/__tests__/sessionByIdLookup.test.js +63 -0
- package/dist/__tests__/sessionByIdLookup.test.js.map +1 -0
- package/dist/__tests__/skill-vocabulary.test.d.ts +1 -1
- package/dist/__tests__/skill-vocabulary.test.js +7 -2
- package/dist/__tests__/skill-vocabulary.test.js.map +1 -1
- package/dist/__tests__/state.test.js +21 -1
- package/dist/__tests__/state.test.js.map +1 -1
- package/dist/__tests__/stillTrue.test.d.ts +2 -0
- package/dist/__tests__/stillTrue.test.d.ts.map +1 -0
- package/dist/__tests__/stillTrue.test.js +52 -0
- package/dist/__tests__/stillTrue.test.js.map +1 -0
- package/dist/__tests__/strip.test.js +57 -3
- package/dist/__tests__/strip.test.js.map +1 -1
- package/dist/__tests__/tenant-notice-write-path.test.d.ts +2 -0
- package/dist/__tests__/tenant-notice-write-path.test.d.ts.map +1 -0
- package/dist/__tests__/tenant-notice-write-path.test.js +169 -0
- package/dist/__tests__/tenant-notice-write-path.test.js.map +1 -0
- package/dist/__tests__/update-check.test.js +160 -1
- package/dist/__tests__/update-check.test.js.map +1 -1
- package/dist/__tests__/update.test.js +458 -8
- package/dist/__tests__/update.test.js.map +1 -1
- package/dist/__tests__/upgrade-runner.test.js +12 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -1
- package/dist/__tests__/upgrade.test.d.ts +2 -0
- package/dist/__tests__/upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade.test.js +56 -0
- package/dist/__tests__/upgrade.test.js.map +1 -0
- package/dist/__tests__/verify-formatter.test.d.ts +2 -0
- package/dist/__tests__/verify-formatter.test.d.ts.map +1 -0
- package/dist/__tests__/verify-formatter.test.js +85 -0
- package/dist/__tests__/verify-formatter.test.js.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts +1 -7
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -1
- package/dist/__tests__/vocabulary-leak.test.js +7 -114
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -1
- package/dist/__tests__/workspace.test.js +11 -72
- package/dist/__tests__/workspace.test.js.map +1 -1
- package/dist/__tests__/workspaceNotice.test.d.ts +2 -0
- package/dist/__tests__/workspaceNotice.test.d.ts.map +1 -0
- package/dist/__tests__/workspaceNotice.test.js +571 -0
- package/dist/__tests__/workspaceNotice.test.js.map +1 -0
- package/dist/commands/__tests__/quality.test.d.ts +2 -0
- package/dist/commands/__tests__/quality.test.d.ts.map +1 -0
- package/dist/commands/__tests__/quality.test.js +156 -0
- package/dist/commands/__tests__/quality.test.js.map +1 -0
- package/dist/commands/__tests__/rework.test.d.ts +2 -0
- package/dist/commands/__tests__/rework.test.d.ts.map +1 -0
- package/dist/commands/__tests__/rework.test.js +149 -0
- package/dist/commands/__tests__/rework.test.js.map +1 -0
- package/dist/commands/__tests__/tensionsList.test.d.ts +2 -0
- package/dist/commands/__tests__/tensionsList.test.d.ts.map +1 -0
- package/dist/commands/__tests__/tensionsList.test.js +63 -0
- package/dist/commands/__tests__/tensionsList.test.js.map +1 -0
- package/dist/commands/accept-policy.d.ts +10 -0
- package/dist/commands/accept-policy.d.ts.map +1 -0
- package/dist/commands/accept-policy.js +107 -0
- package/dist/commands/accept-policy.js.map +1 -0
- package/dist/commands/admin/cockpit.d.ts +2 -13
- package/dist/commands/admin/cockpit.d.ts.map +1 -1
- package/dist/commands/admin/cockpit.js +5 -5
- package/dist/commands/admin/cockpit.js.map +1 -1
- package/dist/commands/admin/index.d.ts +49 -0
- package/dist/commands/admin/index.d.ts.map +1 -1
- package/dist/commands/admin/index.js +148 -29
- package/dist/commands/admin/index.js.map +1 -1
- package/dist/commands/admin/index.test.d.ts +2 -0
- package/dist/commands/admin/index.test.d.ts.map +1 -0
- package/dist/commands/admin/index.test.js +94 -0
- package/dist/commands/admin/index.test.js.map +1 -0
- package/dist/commands/admin/inspect.d.ts.map +1 -1
- package/dist/commands/admin/inspect.js +2 -7
- package/dist/commands/admin/inspect.js.map +1 -1
- package/dist/commands/admin/probe.d.ts +75 -0
- package/dist/commands/admin/probe.d.ts.map +1 -0
- package/dist/commands/admin/probe.js +224 -0
- package/dist/commands/admin/probe.js.map +1 -0
- package/dist/commands/admin/probe.test.d.ts +2 -0
- package/dist/commands/admin/probe.test.d.ts.map +1 -0
- package/dist/commands/admin/probe.test.js +193 -0
- package/dist/commands/admin/probe.test.js.map +1 -0
- package/dist/commands/admin/run.d.ts +43 -0
- package/dist/commands/admin/run.d.ts.map +1 -0
- package/dist/commands/admin/run.js +78 -0
- package/dist/commands/admin/run.js.map +1 -0
- package/dist/commands/admin/run.test.d.ts +18 -0
- package/dist/commands/admin/run.test.d.ts.map +1 -0
- package/dist/commands/admin/run.test.js +168 -0
- package/dist/commands/admin/run.test.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +6 -21
- package/dist/commands/admin/seed.d.ts.map +1 -1
- package/dist/commands/admin/seed.js +41 -310
- package/dist/commands/admin/seed.js.map +1 -1
- package/dist/commands/admin/seed.test.d.ts +3 -4
- package/dist/commands/admin/seed.test.d.ts.map +1 -1
- package/dist/commands/admin/seed.test.js +26 -76
- package/dist/commands/admin/seed.test.js.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.generated.js +3 -84
- package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.test.d.ts +5 -3
- package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.test.js +60 -26
- package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -1
- package/dist/commands/admin/seedRowType.d.ts +22 -0
- package/dist/commands/admin/seedRowType.d.ts.map +1 -0
- package/dist/commands/admin/seedRowType.js +2 -0
- package/dist/commands/admin/seedRowType.js.map +1 -0
- package/dist/commands/admin/seedStatusColor.d.ts +9 -0
- package/dist/commands/admin/seedStatusColor.d.ts.map +1 -0
- package/dist/commands/admin/seedStatusColor.js +19 -0
- package/dist/commands/admin/seedStatusColor.js.map +1 -0
- package/dist/commands/admin/seedStatusColor.test.d.ts +2 -0
- package/dist/commands/admin/seedStatusColor.test.d.ts.map +1 -0
- package/dist/commands/admin/seedStatusColor.test.js +31 -0
- package/dist/commands/admin/seedStatusColor.test.js.map +1 -0
- package/dist/commands/brief.d.ts.map +1 -1
- package/dist/commands/brief.js +24 -2
- package/dist/commands/brief.js.map +1 -1
- package/dist/commands/capture.d.ts +17 -9
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +173 -228
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chain-walk.d.ts.map +1 -1
- package/dist/commands/chain-walk.js.map +1 -1
- package/dist/commands/changes.d.ts.map +1 -1
- package/dist/commands/changes.js.map +1 -1
- package/dist/commands/codex-prep.d.ts +11 -1
- package/dist/commands/codex-prep.d.ts.map +1 -1
- package/dist/commands/codex-prep.js +14 -83
- package/dist/commands/codex-prep.js.map +1 -1
- package/dist/commands/collections.d.ts +1 -1
- package/dist/commands/collections.d.ts.map +1 -1
- package/dist/commands/collections.js +1 -1
- package/dist/commands/collections.js.map +1 -1
- package/dist/commands/conflicts.d.ts +35 -0
- package/dist/commands/conflicts.d.ts.map +1 -0
- package/dist/commands/conflicts.js +194 -0
- package/dist/commands/conflicts.js.map +1 -0
- package/dist/commands/conflicts.test.d.ts +2 -0
- package/dist/commands/conflicts.test.d.ts.map +1 -0
- package/dist/commands/conflicts.test.js +179 -0
- package/dist/commands/conflicts.test.js.map +1 -0
- package/dist/commands/connect-config.test.js +11 -3
- package/dist/commands/connect-config.test.js.map +1 -1
- package/dist/commands/connect-context.d.ts +27 -17
- package/dist/commands/connect-context.d.ts.map +1 -1
- package/dist/commands/connect-context.js +45 -31
- package/dist/commands/connect-context.js.map +1 -1
- package/dist/commands/connect-context.test.js +91 -53
- package/dist/commands/connect-context.test.js.map +1 -1
- package/dist/commands/connect-decline.test.d.ts +2 -0
- package/dist/commands/connect-decline.test.d.ts.map +1 -0
- package/dist/commands/connect-decline.test.js +70 -0
- package/dist/commands/connect-decline.test.js.map +1 -0
- package/dist/commands/connect-integration.test.js +24 -7
- package/dist/commands/connect-integration.test.js.map +1 -1
- package/dist/commands/connect-legacy-migration.test.d.ts +2 -0
- package/dist/commands/connect-legacy-migration.test.d.ts.map +1 -0
- package/dist/commands/connect-legacy-migration.test.js +109 -0
- package/dist/commands/connect-legacy-migration.test.js.map +1 -0
- package/dist/commands/connect-redeem-failure.test.d.ts +2 -0
- package/dist/commands/connect-redeem-failure.test.d.ts.map +1 -0
- package/dist/commands/connect-redeem-failure.test.js +134 -0
- package/dist/commands/connect-redeem-failure.test.js.map +1 -0
- package/dist/commands/connect-screens.d.ts +14 -3
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +62 -9
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect-seal.test.d.ts +2 -0
- package/dist/commands/connect-seal.test.d.ts.map +1 -0
- package/dist/commands/connect-seal.test.js +55 -0
- package/dist/commands/connect-seal.test.js.map +1 -0
- package/dist/commands/connect.d.ts +14 -11
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +236 -69
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect.test.js +226 -23
- package/dist/commands/connect.test.js.map +1 -1
- package/dist/commands/constellation.d.ts.map +1 -1
- package/dist/commands/constellation.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/cross-cut.d.ts.map +1 -1
- package/dist/commands/cross-cut.js.map +1 -1
- package/dist/commands/digest.d.ts +17 -0
- package/dist/commands/digest.d.ts.map +1 -0
- package/dist/commands/digest.js +58 -0
- package/dist/commands/digest.js.map +1 -0
- package/dist/commands/digest.test.d.ts +2 -0
- package/dist/commands/digest.test.d.ts.map +1 -0
- package/dist/commands/digest.test.js +36 -0
- package/dist/commands/digest.test.js.map +1 -0
- package/dist/commands/direction.d.ts +10 -0
- package/dist/commands/direction.d.ts.map +1 -0
- package/dist/commands/direction.js +79 -0
- package/dist/commands/direction.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +107 -37
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +221 -6
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/entryAccept.d.ts +24 -0
- package/dist/commands/entryAccept.d.ts.map +1 -0
- package/dist/commands/entryAccept.js +296 -0
- package/dist/commands/entryAccept.js.map +1 -0
- package/dist/commands/entryDiscardResolve.d.ts +9 -0
- package/dist/commands/entryDiscardResolve.d.ts.map +1 -0
- package/dist/commands/entryDiscardResolve.js +27 -0
- package/dist/commands/entryDiscardResolve.js.map +1 -0
- package/dist/commands/entryOwn.d.ts +5 -0
- package/dist/commands/entryOwn.d.ts.map +1 -0
- package/dist/commands/entryOwn.js +17 -0
- package/dist/commands/entryOwn.js.map +1 -0
- package/dist/commands/entryPreflight.d.ts +8 -0
- package/dist/commands/entryPreflight.d.ts.map +1 -0
- package/dist/commands/entryPreflight.js +48 -0
- package/dist/commands/entryPreflight.js.map +1 -0
- package/dist/commands/entryTick.d.ts +8 -0
- package/dist/commands/entryTick.d.ts.map +1 -0
- package/dist/commands/entryTick.js +43 -0
- package/dist/commands/entryTick.js.map +1 -0
- package/dist/commands/feedback.d.ts +36 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +174 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/feedback.test.d.ts +2 -0
- package/dist/commands/feedback.test.d.ts.map +1 -0
- package/dist/commands/feedback.test.js +110 -0
- package/dist/commands/feedback.test.js.map +1 -0
- package/dist/commands/fields.d.ts.map +1 -1
- package/dist/commands/fields.js +1 -1
- package/dist/commands/fields.js.map +1 -1
- package/dist/commands/files.d.ts +26 -0
- package/dist/commands/files.d.ts.map +1 -0
- package/dist/commands/files.js +160 -0
- package/dist/commands/files.js.map +1 -0
- package/dist/commands/files.test.d.ts +2 -0
- package/dist/commands/files.test.d.ts.map +1 -0
- package/dist/commands/files.test.js +278 -0
- package/dist/commands/files.test.js.map +1 -0
- package/dist/commands/handshake.d.ts +42 -186
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +469 -1539
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/handshakeCursorSkillCleanup.d.ts +36 -0
- package/dist/commands/handshakeCursorSkillCleanup.d.ts.map +1 -0
- package/dist/commands/handshakeCursorSkillCleanup.js +110 -0
- package/dist/commands/handshakeCursorSkillCleanup.js.map +1 -0
- package/dist/commands/handshakeDriftClassification.d.ts +33 -0
- package/dist/commands/handshakeDriftClassification.d.ts.map +1 -0
- package/dist/commands/handshakeDriftClassification.js +62 -0
- package/dist/commands/handshakeDriftClassification.js.map +1 -0
- package/dist/commands/history.d.ts +30 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +62 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/history.test.d.ts +2 -0
- package/dist/commands/history.test.d.ts.map +1 -0
- package/dist/commands/history.test.js +106 -0
- package/dist/commands/history.test.js.map +1 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +9 -0
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +22 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +15 -11
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/organisation.d.ts +12 -0
- package/dist/commands/organisation.d.ts.map +1 -0
- package/dist/commands/organisation.js +162 -0
- package/dist/commands/organisation.js.map +1 -0
- package/dist/commands/organisation.test.d.ts +2 -0
- package/dist/commands/organisation.test.d.ts.map +1 -0
- package/dist/commands/organisation.test.js +196 -0
- package/dist/commands/organisation.test.js.map +1 -0
- package/dist/commands/organisationHierarchy.d.ts +8 -0
- package/dist/commands/organisationHierarchy.d.ts.map +1 -0
- package/dist/commands/organisationHierarchy.js +75 -0
- package/dist/commands/organisationHierarchy.js.map +1 -0
- package/dist/commands/organisationHierarchy.test.d.ts +2 -0
- package/dist/commands/organisationHierarchy.test.d.ts.map +1 -0
- package/dist/commands/organisationHierarchy.test.js +72 -0
- package/dist/commands/organisationHierarchy.test.js.map +1 -0
- package/dist/commands/organisationWrite.d.ts +18 -0
- package/dist/commands/organisationWrite.d.ts.map +1 -0
- package/dist/commands/organisationWrite.js +71 -0
- package/dist/commands/organisationWrite.js.map +1 -0
- package/dist/commands/orient.d.ts +49 -96
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +135 -29
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/outcome.d.ts +91 -0
- package/dist/commands/outcome.d.ts.map +1 -0
- package/dist/commands/outcome.js +204 -0
- package/dist/commands/outcome.js.map +1 -0
- package/dist/commands/outcome.test.d.ts +2 -0
- package/dist/commands/outcome.test.d.ts.map +1 -0
- package/dist/commands/outcome.test.js +308 -0
- package/dist/commands/outcome.test.js.map +1 -0
- package/dist/commands/people.d.ts +6 -0
- package/dist/commands/people.d.ts.map +1 -0
- package/dist/commands/people.js +22 -0
- package/dist/commands/people.js.map +1 -0
- package/dist/commands/people.test.d.ts +2 -0
- package/dist/commands/people.test.d.ts.map +1 -0
- package/dist/commands/people.test.js +61 -0
- package/dist/commands/people.test.js.map +1 -0
- package/dist/commands/profile.d.ts +23 -2
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +192 -35
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/proof-run.d.ts +51 -0
- package/dist/commands/proof-run.d.ts.map +1 -0
- package/dist/commands/proof-run.js +209 -0
- package/dist/commands/proof-run.js.map +1 -0
- package/dist/commands/quality.d.ts +16 -0
- package/dist/commands/quality.d.ts.map +1 -0
- package/dist/commands/quality.js +29 -0
- package/dist/commands/quality.js.map +1 -0
- package/dist/commands/questions.d.ts +23 -0
- package/dist/commands/questions.d.ts.map +1 -0
- package/dist/commands/questions.js +238 -0
- package/dist/commands/questions.js.map +1 -0
- package/dist/commands/questions.test.d.ts +2 -0
- package/dist/commands/questions.test.d.ts.map +1 -0
- package/dist/commands/questions.test.js +159 -0
- package/dist/commands/questions.test.js.map +1 -0
- package/dist/commands/relate.d.ts +1 -0
- package/dist/commands/relate.d.ts.map +1 -1
- package/dist/commands/relate.js +89 -15
- package/dist/commands/relate.js.map +1 -1
- package/dist/commands/restore.d.ts +2 -0
- package/dist/commands/restore.d.ts.map +1 -0
- package/dist/commands/restore.js +83 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/rework.d.ts +24 -0
- package/dist/commands/rework.d.ts.map +1 -0
- package/dist/commands/rework.js +97 -0
- package/dist/commands/rework.js.map +1 -0
- package/dist/commands/role.d.ts +67 -0
- package/dist/commands/role.d.ts.map +1 -0
- package/dist/commands/role.js +164 -0
- package/dist/commands/role.js.map +1 -0
- package/dist/commands/role.test.d.ts +2 -0
- package/dist/commands/role.test.d.ts.map +1 -0
- package/dist/commands/role.test.js +290 -0
- package/dist/commands/role.test.js.map +1 -0
- package/dist/commands/scoreboard.d.ts +26 -0
- package/dist/commands/scoreboard.d.ts.map +1 -0
- package/dist/commands/scoreboard.js +40 -0
- package/dist/commands/scoreboard.js.map +1 -0
- package/dist/commands/search.d.ts +3 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session.d.ts +60 -7
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +409 -98
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/shape.d.ts +16 -0
- package/dist/commands/shape.d.ts.map +1 -0
- package/dist/commands/shape.js +149 -0
- package/dist/commands/shape.js.map +1 -0
- package/dist/commands/shape.test.d.ts +2 -0
- package/dist/commands/shape.test.d.ts.map +1 -0
- package/dist/commands/shape.test.js +148 -0
- package/dist/commands/shape.test.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +102 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/status.test.d.ts +2 -0
- package/dist/commands/status.test.d.ts.map +1 -0
- package/dist/commands/status.test.js +75 -0
- package/dist/commands/status.test.js.map +1 -0
- package/dist/commands/stillTrue.d.ts +14 -0
- package/dist/commands/stillTrue.d.ts.map +1 -0
- package/dist/commands/stillTrue.js +48 -0
- package/dist/commands/stillTrue.js.map +1 -0
- package/dist/commands/tensionsList.d.ts +5 -0
- package/dist/commands/tensionsList.d.ts.map +1 -0
- package/dist/commands/tensionsList.js +27 -0
- package/dist/commands/tensionsList.js.map +1 -0
- package/dist/commands/update.d.ts +21 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +157 -42
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +31 -10
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +0 -18
- package/dist/commands/usage.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +7 -1
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/welcome.d.ts.map +1 -1
- package/dist/commands/welcome.js +5 -2
- package/dist/commands/welcome.js.map +1 -1
- package/dist/commands/whoami.d.ts +10 -2
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +76 -20
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/whoami.test.js +86 -6
- package/dist/commands/whoami.test.js.map +1 -1
- package/dist/commands/workspace.d.ts +7 -74
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +9 -70
- package/dist/commands/workspace.js.map +1 -1
- package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts +2 -0
- package/dist/formatters/__tests__/orient-plannedWorkCut.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-plannedWorkCut.test.js +49 -0
- package/dist/formatters/__tests__/orient-plannedWorkCut.test.js.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts +2 -3
- package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -1
- package/dist/formatters/__tests__/orient-provenance.test.js +39 -174
- package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -1
- package/dist/formatters/__tests__/orient-ruleLists.test.d.ts +2 -0
- package/dist/formatters/__tests__/orient-ruleLists.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-ruleLists.test.js +93 -0
- package/dist/formatters/__tests__/orient-ruleLists.test.js.map +1 -0
- package/dist/formatters/__tests__/session-list-show.test.d.ts +2 -0
- package/dist/formatters/__tests__/session-list-show.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/session-list-show.test.js +195 -0
- package/dist/formatters/__tests__/session-list-show.test.js.map +1 -0
- package/dist/formatters/__tests__/session.test.d.ts +2 -0
- package/dist/formatters/__tests__/session.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/session.test.js +193 -0
- package/dist/formatters/__tests__/session.test.js.map +1 -0
- package/dist/formatters/__tests__/tensionsList.test.d.ts +2 -0
- package/dist/formatters/__tests__/tensionsList.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/tensionsList.test.js +30 -0
- package/dist/formatters/__tests__/tensionsList.test.js.map +1 -0
- package/dist/formatters/brief.d.ts +6 -15
- package/dist/formatters/brief.d.ts.map +1 -1
- package/dist/formatters/brief.js +16 -14
- package/dist/formatters/brief.js.map +1 -1
- package/dist/formatters/brief.test.d.ts +2 -0
- package/dist/formatters/brief.test.d.ts.map +1 -0
- package/dist/formatters/brief.test.js +21 -0
- package/dist/formatters/brief.test.js.map +1 -0
- package/dist/formatters/capture.d.ts +17 -10
- package/dist/formatters/capture.d.ts.map +1 -1
- package/dist/formatters/capture.js +32 -10
- package/dist/formatters/capture.js.map +1 -1
- package/dist/formatters/coaching.d.ts +53 -0
- package/dist/formatters/coaching.d.ts.map +1 -0
- package/dist/formatters/coaching.js +51 -0
- package/dist/formatters/coaching.js.map +1 -0
- package/dist/formatters/collections.d.ts +0 -1
- package/dist/formatters/collections.d.ts.map +1 -1
- package/dist/formatters/collections.js +14 -5
- package/dist/formatters/collections.js.map +1 -1
- package/dist/formatters/conflicts.d.ts +69 -0
- package/dist/formatters/conflicts.d.ts.map +1 -0
- package/dist/formatters/conflicts.js +87 -0
- package/dist/formatters/conflicts.js.map +1 -0
- package/dist/formatters/conflicts.test.d.ts +2 -0
- package/dist/formatters/conflicts.test.d.ts.map +1 -0
- package/dist/formatters/conflicts.test.js +136 -0
- package/dist/formatters/conflicts.test.js.map +1 -0
- package/dist/formatters/context.d.ts +1 -1
- package/dist/formatters/context.d.ts.map +1 -1
- package/dist/formatters/context.js.map +1 -1
- package/dist/formatters/digest.d.ts +13 -0
- package/dist/formatters/digest.d.ts.map +1 -0
- package/dist/formatters/digest.js +98 -0
- package/dist/formatters/digest.js.map +1 -0
- package/dist/formatters/digest.test.d.ts +2 -0
- package/dist/formatters/digest.test.d.ts.map +1 -0
- package/dist/formatters/digest.test.js +166 -0
- package/dist/formatters/digest.test.js.map +1 -0
- package/dist/formatters/direction.d.ts +48 -0
- package/dist/formatters/direction.d.ts.map +1 -0
- package/dist/formatters/direction.js +75 -0
- package/dist/formatters/direction.js.map +1 -0
- package/dist/formatters/direction.test.d.ts +2 -0
- package/dist/formatters/direction.test.d.ts.map +1 -0
- package/dist/formatters/direction.test.js +70 -0
- package/dist/formatters/direction.test.js.map +1 -0
- package/dist/formatters/entry.d.ts +42 -2
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +55 -7
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/entryAccept.d.ts +77 -0
- package/dist/formatters/entryAccept.d.ts.map +1 -0
- package/dist/formatters/entryAccept.js +76 -0
- package/dist/formatters/entryAccept.js.map +1 -0
- package/dist/formatters/feedback.d.ts +58 -0
- package/dist/formatters/feedback.d.ts.map +1 -0
- package/dist/formatters/feedback.js +91 -0
- package/dist/formatters/feedback.js.map +1 -0
- package/dist/formatters/feedback.test.d.ts +2 -0
- package/dist/formatters/feedback.test.d.ts.map +1 -0
- package/dist/formatters/feedback.test.js +123 -0
- package/dist/formatters/feedback.test.js.map +1 -0
- package/dist/formatters/fields.d.ts +7 -1
- package/dist/formatters/fields.d.ts.map +1 -1
- package/dist/formatters/fields.js +9 -3
- package/dist/formatters/fields.js.map +1 -1
- package/dist/formatters/fields.test.d.ts +2 -0
- package/dist/formatters/fields.test.d.ts.map +1 -0
- package/dist/formatters/fields.test.js +42 -0
- package/dist/formatters/fields.test.js.map +1 -0
- package/dist/formatters/handshake.d.ts +24 -6
- package/dist/formatters/handshake.d.ts.map +1 -1
- package/dist/formatters/handshake.js +34 -15
- package/dist/formatters/handshake.js.map +1 -1
- package/dist/formatters/orient.coherencyCheckTag.test.d.ts +2 -0
- package/dist/formatters/orient.coherencyCheckTag.test.d.ts.map +1 -0
- package/dist/formatters/orient.coherencyCheckTag.test.js +22 -0
- package/dist/formatters/orient.coherencyCheckTag.test.js.map +1 -0
- package/dist/formatters/orient.d.ts +108 -144
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +157 -181
- package/dist/formatters/orient.js.map +1 -1
- package/dist/formatters/orient.rcrtMiss.test.d.ts +2 -0
- package/dist/formatters/orient.rcrtMiss.test.d.ts.map +1 -0
- package/dist/formatters/orient.rcrtMiss.test.js +77 -0
- package/dist/formatters/orient.rcrtMiss.test.js.map +1 -0
- package/dist/formatters/orient.rituals.test.d.ts +2 -0
- package/dist/formatters/orient.rituals.test.d.ts.map +1 -0
- package/dist/formatters/orient.rituals.test.js +73 -0
- package/dist/formatters/orient.rituals.test.js.map +1 -0
- package/dist/formatters/orient.shapeAdvisorySummary.test.d.ts +2 -0
- package/dist/formatters/orient.shapeAdvisorySummary.test.d.ts.map +1 -0
- package/dist/formatters/orient.shapeAdvisorySummary.test.js +59 -0
- package/dist/formatters/orient.shapeAdvisorySummary.test.js.map +1 -0
- package/dist/formatters/orientDegradation.d.ts +38 -0
- package/dist/formatters/orientDegradation.d.ts.map +1 -0
- package/dist/formatters/orientDegradation.js +50 -0
- package/dist/formatters/orientDegradation.js.map +1 -0
- package/dist/formatters/orientDegradation.test.d.ts +2 -0
- package/dist/formatters/orientDegradation.test.d.ts.map +1 -0
- package/dist/formatters/orientDegradation.test.js +28 -0
- package/dist/formatters/orientDegradation.test.js.map +1 -0
- package/dist/formatters/orientDirection.d.ts +47 -0
- package/dist/formatters/orientDirection.d.ts.map +1 -0
- package/dist/formatters/orientDirection.js +23 -0
- package/dist/formatters/orientDirection.js.map +1 -0
- package/dist/formatters/orientDirection.test.d.ts +2 -0
- package/dist/formatters/orientDirection.test.d.ts.map +1 -0
- package/dist/formatters/orientDirection.test.js +70 -0
- package/dist/formatters/orientDirection.test.js.map +1 -0
- package/dist/formatters/orientRetrievalMiss.d.ts +22 -0
- package/dist/formatters/orientRetrievalMiss.d.ts.map +1 -0
- package/dist/formatters/orientRetrievalMiss.js +17 -0
- package/dist/formatters/orientRetrievalMiss.js.map +1 -0
- package/dist/formatters/plannedWorkCounts.d.ts +19 -0
- package/dist/formatters/plannedWorkCounts.d.ts.map +1 -0
- package/dist/formatters/plannedWorkCounts.js +17 -0
- package/dist/formatters/plannedWorkCounts.js.map +1 -0
- package/dist/formatters/questions.d.ts +72 -0
- package/dist/formatters/questions.d.ts.map +1 -0
- package/dist/formatters/questions.js +116 -0
- package/dist/formatters/questions.js.map +1 -0
- package/dist/formatters/questions.test.d.ts +2 -0
- package/dist/formatters/questions.test.d.ts.map +1 -0
- package/dist/formatters/questions.test.js +144 -0
- package/dist/formatters/questions.test.js.map +1 -0
- package/dist/formatters/relate.d.ts +13 -2
- package/dist/formatters/relate.d.ts.map +1 -1
- package/dist/formatters/relate.js +15 -5
- package/dist/formatters/relate.js.map +1 -1
- package/dist/formatters/relate.test.d.ts +2 -0
- package/dist/formatters/relate.test.d.ts.map +1 -0
- package/dist/formatters/relate.test.js +91 -0
- package/dist/formatters/relate.test.js.map +1 -0
- package/dist/formatters/scoreboard.d.ts +11 -0
- package/dist/formatters/scoreboard.d.ts.map +1 -0
- package/dist/formatters/scoreboard.js +162 -0
- package/dist/formatters/scoreboard.js.map +1 -0
- package/dist/formatters/scoreboard.test.d.ts +2 -0
- package/dist/formatters/scoreboard.test.d.ts.map +1 -0
- package/dist/formatters/scoreboard.test.js +301 -0
- package/dist/formatters/scoreboard.test.js.map +1 -0
- package/dist/formatters/search.d.ts +3 -0
- package/dist/formatters/search.d.ts.map +1 -1
- package/dist/formatters/search.js +15 -1
- package/dist/formatters/search.js.map +1 -1
- package/dist/formatters/search.test.d.ts +2 -0
- package/dist/formatters/search.test.d.ts.map +1 -0
- package/dist/formatters/search.test.js +76 -0
- package/dist/formatters/search.test.js.map +1 -0
- package/dist/formatters/session-feedback.test.d.ts +2 -0
- package/dist/formatters/session-feedback.test.d.ts.map +1 -0
- package/dist/formatters/session-feedback.test.js +146 -0
- package/dist/formatters/session-feedback.test.js.map +1 -0
- package/dist/formatters/session.d.ts +122 -5
- package/dist/formatters/session.d.ts.map +1 -1
- package/dist/formatters/session.js +312 -21
- package/dist/formatters/session.js.map +1 -1
- package/dist/formatters/shape.d.ts +54 -0
- package/dist/formatters/shape.d.ts.map +1 -0
- package/dist/formatters/shape.js +97 -0
- package/dist/formatters/shape.js.map +1 -0
- package/dist/formatters/shape.test.d.ts +2 -0
- package/dist/formatters/shape.test.d.ts.map +1 -0
- package/dist/formatters/shape.test.js +80 -0
- package/dist/formatters/shape.test.js.map +1 -0
- package/dist/formatters/spineCheck.d.ts +14 -0
- package/dist/formatters/spineCheck.d.ts.map +1 -0
- package/dist/formatters/spineCheck.js +113 -0
- package/dist/formatters/spineCheck.js.map +1 -0
- package/dist/formatters/spineCheck.test.d.ts +2 -0
- package/dist/formatters/spineCheck.test.d.ts.map +1 -0
- package/dist/formatters/spineCheck.test.js +76 -0
- package/dist/formatters/spineCheck.test.js.map +1 -0
- package/dist/formatters/tensionsList.d.ts +17 -0
- package/dist/formatters/tensionsList.d.ts.map +1 -0
- package/dist/formatters/tensionsList.js +33 -0
- package/dist/formatters/tensionsList.js.map +1 -0
- package/dist/formatters/update.d.ts +22 -0
- package/dist/formatters/update.d.ts.map +1 -1
- package/dist/formatters/update.js +36 -7
- package/dist/formatters/update.js.map +1 -1
- package/dist/formatters/update.test.d.ts +2 -0
- package/dist/formatters/update.test.d.ts.map +1 -0
- package/dist/formatters/update.test.js +59 -0
- package/dist/formatters/update.test.js.map +1 -0
- package/dist/formatters/verify.d.ts +12 -4
- package/dist/formatters/verify.d.ts.map +1 -1
- package/dist/formatters/verify.js +20 -2
- package/dist/formatters/verify.js.map +1 -1
- package/dist/generated/healthGapKinds.generated.d.ts +12 -0
- package/dist/generated/healthGapKinds.generated.d.ts.map +1 -0
- package/dist/generated/healthGapKinds.generated.js +16 -0
- package/dist/generated/healthGapKinds.generated.js.map +1 -0
- package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts +12 -0
- package/dist/generated/organisationalAuthorityRefusalCodes.generated.d.ts.map +1 -0
- package/dist/generated/organisationalAuthorityRefusalCodes.generated.js +11 -0
- package/dist/generated/organisationalAuthorityRefusalCodes.generated.js.map +1 -0
- package/dist/generated/relationTypes.generated.d.ts +12 -0
- package/dist/generated/relationTypes.generated.d.ts.map +1 -0
- package/dist/generated/relationTypes.generated.js +11 -0
- package/dist/generated/relationTypes.generated.js.map +1 -0
- package/dist/generated/routeLatencyBudget.generated.d.ts +56 -0
- package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -0
- package/dist/generated/routeLatencyBudget.generated.js +278 -0
- package/dist/generated/routeLatencyBudget.generated.js.map +1 -0
- package/dist/generated/sourceSurfaces.generated.d.ts +12 -0
- package/dist/generated/sourceSurfaces.generated.d.ts.map +1 -0
- package/dist/generated/sourceSurfaces.generated.js +11 -0
- package/dist/generated/sourceSurfaces.generated.js.map +1 -0
- package/dist/generators/adapters.d.ts +39 -6
- package/dist/generators/adapters.d.ts.map +1 -1
- package/dist/generators/adapters.js +88 -89
- package/dist/generators/adapters.js.map +1 -1
- package/dist/generators/adapters.test.js +14 -6
- package/dist/generators/adapters.test.js.map +1 -1
- package/dist/generators/boundary-manifest.real-file.test.d.ts +2 -0
- package/dist/generators/boundary-manifest.real-file.test.d.ts.map +1 -0
- package/dist/generators/boundary-manifest.real-file.test.js +70 -0
- package/dist/generators/boundary-manifest.real-file.test.js.map +1 -0
- package/dist/generators/briefing-projections.test.d.ts +2 -0
- package/dist/generators/briefing-projections.test.d.ts.map +1 -0
- package/dist/generators/briefing-projections.test.js +98 -0
- package/dist/generators/briefing-projections.test.js.map +1 -0
- package/dist/generators/context-md.d.ts +7 -2
- package/dist/generators/context-md.d.ts.map +1 -1
- package/dist/generators/context-md.js +14 -53
- package/dist/generators/context-md.js.map +1 -1
- package/dist/generators/everyone-rules-md.d.ts +9 -0
- package/dist/generators/everyone-rules-md.d.ts.map +1 -0
- package/dist/generators/everyone-rules-md.js +21 -0
- package/dist/generators/everyone-rules-md.js.map +1 -0
- package/dist/generators/noProjectionAssets.d.ts +15 -0
- package/dist/generators/noProjectionAssets.d.ts.map +1 -0
- package/dist/generators/noProjectionAssets.js +6 -0
- package/dist/generators/noProjectionAssets.js.map +1 -0
- package/dist/generators/portable-knowledge.d.ts +9 -26
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- package/dist/generators/portable-knowledge.js +11 -125
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/generators/portable-knowledge.test.js +82 -267
- package/dist/generators/portable-knowledge.test.js.map +1 -1
- package/dist/generators/region-projections.d.ts +0 -1
- package/dist/generators/region-projections.d.ts.map +1 -1
- package/dist/generators/region-projections.js +7 -5
- package/dist/generators/region-projections.js.map +1 -1
- package/dist/generators/region-projections.test.js +10 -15
- package/dist/generators/region-projections.test.js.map +1 -1
- package/dist/generators/retired-projections.d.ts +12 -0
- package/dist/generators/retired-projections.d.ts.map +1 -0
- package/dist/generators/retired-projections.js +75 -0
- package/dist/generators/retired-projections.js.map +1 -0
- package/dist/generators/retired-projections.test.d.ts +2 -0
- package/dist/generators/retired-projections.test.d.ts.map +1 -0
- package/dist/generators/retired-projections.test.js +64 -0
- package/dist/generators/retired-projections.test.js.map +1 -0
- package/dist/handleCliError.d.ts +2 -0
- package/dist/handleCliError.d.ts.map +1 -0
- package/dist/handleCliError.js +56 -0
- package/dist/handleCliError.js.map +1 -0
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +185 -541
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/legalRelationTypes.test.d.ts +2 -0
- package/dist/lib/__tests__/legalRelationTypes.test.d.ts.map +1 -0
- package/dist/lib/__tests__/legalRelationTypes.test.js +61 -0
- package/dist/lib/__tests__/legalRelationTypes.test.js.map +1 -0
- package/dist/lib/__tests__/parseFields.test.d.ts +2 -0
- package/dist/lib/__tests__/parseFields.test.d.ts.map +1 -0
- package/dist/lib/__tests__/parseFields.test.js +40 -0
- package/dist/lib/__tests__/parseFields.test.js.map +1 -0
- package/dist/lib/adminConfig.d.ts +48 -0
- package/dist/lib/adminConfig.d.ts.map +1 -0
- package/dist/lib/adminConfig.js +130 -0
- package/dist/lib/adminConfig.js.map +1 -0
- package/dist/lib/canonicalRefs.d.ts +27 -8
- package/dist/lib/canonicalRefs.d.ts.map +1 -1
- package/dist/lib/canonicalRefs.js +25 -6
- package/dist/lib/canonicalRefs.js.map +1 -1
- package/dist/lib/captureGrounding.d.ts +48 -0
- package/dist/lib/captureGrounding.d.ts.map +1 -0
- package/dist/lib/captureGrounding.js +54 -0
- package/dist/lib/captureGrounding.js.map +1 -0
- package/dist/lib/captureGrounding.test.d.ts +2 -0
- package/dist/lib/captureGrounding.test.d.ts.map +1 -0
- package/dist/lib/captureGrounding.test.js +74 -0
- package/dist/lib/captureGrounding.test.js.map +1 -0
- package/dist/lib/captureLink.d.ts +26 -0
- package/dist/lib/captureLink.d.ts.map +1 -0
- package/dist/lib/captureLink.js +110 -0
- package/dist/lib/captureLink.js.map +1 -0
- package/dist/lib/checklist.d.ts +32 -0
- package/dist/lib/checklist.d.ts.map +1 -0
- package/dist/lib/checklist.js +77 -0
- package/dist/lib/checklist.js.map +1 -0
- package/dist/lib/client.d.ts +46 -19
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +221 -66
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/collectionRegistry.d.ts +40 -5
- package/dist/lib/collectionRegistry.d.ts.map +1 -1
- package/dist/lib/collectionRegistry.js +71 -48
- package/dist/lib/collectionRegistry.js.map +1 -1
- package/dist/lib/commanderOptions.d.ts +8 -0
- package/dist/lib/commanderOptions.d.ts.map +1 -0
- package/dist/lib/commanderOptions.js +10 -0
- package/dist/lib/commanderOptions.js.map +1 -0
- package/dist/lib/compose-wrapup-view.d.ts +48 -0
- package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
- package/dist/lib/compose-wrapup-view.js +37 -0
- package/dist/lib/compose-wrapup-view.js.map +1 -0
- package/dist/lib/config.d.ts +65 -102
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +164 -286
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/configResult.d.ts +102 -0
- package/dist/lib/configResult.d.ts.map +1 -0
- package/dist/lib/configResult.js +179 -0
- package/dist/lib/configResult.js.map +1 -0
- package/dist/lib/connectProfileName.d.ts +36 -0
- package/dist/lib/connectProfileName.d.ts.map +1 -0
- package/dist/lib/connectProfileName.js +72 -0
- package/dist/lib/connectProfileName.js.map +1 -0
- package/dist/lib/connectProfileName.test.d.ts +2 -0
- package/dist/lib/connectProfileName.test.d.ts.map +1 -0
- package/dist/lib/connectProfileName.test.js +100 -0
- package/dist/lib/connectProfileName.test.js.map +1 -0
- package/dist/lib/constants.d.ts +3 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +6 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/conversation.d.ts +36 -0
- package/dist/lib/conversation.d.ts.map +1 -0
- package/dist/lib/conversation.js +66 -0
- package/dist/lib/conversation.js.map +1 -0
- package/dist/lib/createEntryResult.d.ts +34 -0
- package/dist/lib/createEntryResult.d.ts.map +1 -0
- package/dist/lib/createEntryResult.js +12 -0
- package/dist/lib/createEntryResult.js.map +1 -0
- package/dist/lib/deployment.js +2 -2
- package/dist/lib/deployment.js.map +1 -1
- package/dist/lib/deployment.test.js +20 -1
- package/dist/lib/deployment.test.js.map +1 -1
- package/dist/lib/envKeySnapshot.d.ts +10 -0
- package/dist/lib/envKeySnapshot.d.ts.map +1 -0
- package/dist/lib/envKeySnapshot.js +30 -0
- package/dist/lib/envKeySnapshot.js.map +1 -0
- package/dist/lib/errors.d.ts +90 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +83 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/frontmatter.d.ts +55 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +92 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/frontmatter.test.d.ts +15 -0
- package/dist/lib/frontmatter.test.d.ts.map +1 -0
- package/dist/lib/frontmatter.test.js +98 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/gatewayTimeout.d.ts +88 -0
- package/dist/lib/gatewayTimeout.d.ts.map +1 -0
- package/dist/lib/gatewayTimeout.js +118 -0
- package/dist/lib/gatewayTimeout.js.map +1 -0
- package/dist/lib/gitEnvLeakKeysParity.test.d.ts +2 -0
- package/dist/lib/gitEnvLeakKeysParity.test.d.ts.map +1 -0
- package/dist/lib/gitEnvLeakKeysParity.test.js +73 -0
- package/dist/lib/gitEnvLeakKeysParity.test.js.map +1 -0
- package/dist/lib/glossary.js +1 -1
- package/dist/lib/glossary.js.map +1 -1
- package/dist/lib/hook-intents.js +3 -3
- package/dist/lib/hook-intents.js.map +1 -1
- package/dist/lib/judgeWait.d.ts +50 -0
- package/dist/lib/judgeWait.d.ts.map +1 -0
- package/dist/lib/judgeWait.js +64 -0
- package/dist/lib/judgeWait.js.map +1 -0
- package/dist/lib/kernelEnvelope.d.ts +42 -0
- package/dist/lib/kernelEnvelope.d.ts.map +1 -0
- package/dist/lib/kernelEnvelope.js +67 -0
- package/dist/lib/kernelEnvelope.js.map +1 -0
- package/dist/lib/legalRelationTypes.d.ts +19 -0
- package/dist/lib/legalRelationTypes.d.ts.map +1 -0
- package/dist/lib/legalRelationTypes.js +64 -0
- package/dist/lib/legalRelationTypes.js.map +1 -0
- package/dist/lib/localBinding.d.ts +86 -0
- package/dist/lib/localBinding.d.ts.map +1 -0
- package/dist/lib/localBinding.js +173 -0
- package/dist/lib/localBinding.js.map +1 -0
- package/dist/lib/method-registry.d.ts +16 -11
- package/dist/lib/method-registry.d.ts.map +1 -1
- package/dist/lib/method-registry.js +13 -25
- package/dist/lib/method-registry.js.map +1 -1
- package/dist/lib/normalizeMaterializedFilename.d.ts +3 -3
- package/dist/lib/normalizeMaterializedFilename.js +3 -3
- package/dist/lib/notice-marker.d.ts +3 -0
- package/dist/lib/notice-marker.d.ts.map +1 -0
- package/dist/lib/notice-marker.js +223 -0
- package/dist/lib/notice-marker.js.map +1 -0
- package/dist/lib/onboarding-path-b.d.ts.map +1 -1
- package/dist/lib/onboarding-path-b.js +39 -14
- package/dist/lib/onboarding-path-b.js.map +1 -1
- package/dist/lib/onboarding-shared.d.ts +27 -4
- package/dist/lib/onboarding-shared.d.ts.map +1 -1
- package/dist/lib/onboarding-shared.js +54 -20
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/onboarding-shared.test.d.ts +2 -0
- package/dist/lib/onboarding-shared.test.d.ts.map +1 -0
- package/dist/lib/onboarding-shared.test.js +131 -0
- package/dist/lib/onboarding-shared.test.js.map +1 -0
- package/dist/lib/onboarding-topics.js +1 -1
- package/dist/lib/onboarding.d.ts +5 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +62 -25
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/ownerLine.d.ts +73 -0
- package/dist/lib/ownerLine.d.ts.map +1 -0
- package/dist/lib/ownerLine.js +57 -0
- package/dist/lib/ownerLine.js.map +1 -0
- package/dist/lib/parseFields.d.ts +19 -0
- package/dist/lib/parseFields.d.ts.map +1 -0
- package/dist/lib/parseFields.js +49 -0
- package/dist/lib/parseFields.js.map +1 -0
- package/dist/lib/pinnedRole.d.ts +28 -0
- package/dist/lib/pinnedRole.d.ts.map +1 -0
- package/dist/lib/pinnedRole.js +105 -0
- package/dist/lib/pinnedRole.js.map +1 -0
- package/dist/lib/platformGlossary.d.ts +19 -0
- package/dist/lib/platformGlossary.d.ts.map +1 -0
- package/dist/lib/platformGlossary.js +21 -0
- package/dist/lib/platformGlossary.js.map +1 -0
- package/dist/lib/previewBanner.d.ts +9 -0
- package/dist/lib/previewBanner.d.ts.map +1 -0
- package/dist/lib/previewBanner.js +37 -0
- package/dist/lib/previewBanner.js.map +1 -0
- package/dist/lib/productbrain-files.d.ts +108 -0
- package/dist/lib/productbrain-files.d.ts.map +1 -0
- package/dist/lib/productbrain-files.js +240 -0
- package/dist/lib/productbrain-files.js.map +1 -0
- package/dist/lib/productbrain-files.test.d.ts +2 -0
- package/dist/lib/productbrain-files.test.d.ts.map +1 -0
- package/dist/lib/productbrain-files.test.js +518 -0
- package/dist/lib/productbrain-files.test.js.map +1 -0
- package/dist/lib/profiles.d.ts +52 -4
- package/dist/lib/profiles.d.ts.map +1 -1
- package/dist/lib/profiles.js +72 -21
- package/dist/lib/profiles.js.map +1 -1
- package/dist/lib/projectConfig.d.ts +96 -0
- package/dist/lib/projectConfig.d.ts.map +1 -0
- package/dist/lib/projectConfig.js +185 -0
- package/dist/lib/projectConfig.js.map +1 -0
- package/dist/lib/prompts.d.ts +2 -0
- package/dist/lib/prompts.d.ts.map +1 -1
- package/dist/lib/prompts.js +2 -0
- package/dist/lib/prompts.js.map +1 -1
- package/dist/lib/proseBody.d.ts +14 -0
- package/dist/lib/proseBody.d.ts.map +1 -0
- package/dist/lib/proseBody.js +25 -0
- package/dist/lib/proseBody.js.map +1 -0
- package/dist/lib/rate-limit.d.ts +38 -0
- package/dist/lib/rate-limit.d.ts.map +1 -0
- package/dist/lib/rate-limit.js +83 -0
- package/dist/lib/rate-limit.js.map +1 -0
- package/dist/lib/readinessNotices.d.ts +12 -0
- package/dist/lib/readinessNotices.d.ts.map +1 -0
- package/dist/lib/readinessNotices.js +15 -0
- package/dist/lib/readinessNotices.js.map +1 -0
- package/dist/lib/repo-detect.d.ts +8 -2
- package/dist/lib/repo-detect.d.ts.map +1 -1
- package/dist/lib/repo-detect.js +11 -6
- package/dist/lib/repo-detect.js.map +1 -1
- package/dist/lib/reportedProfile.d.ts +18 -0
- package/dist/lib/reportedProfile.d.ts.map +1 -0
- package/dist/lib/reportedProfile.js +144 -0
- package/dist/lib/reportedProfile.js.map +1 -0
- package/dist/lib/ruleListRender.d.ts +188 -0
- package/dist/lib/ruleListRender.d.ts.map +1 -0
- package/dist/lib/ruleListRender.js +273 -0
- package/dist/lib/ruleListRender.js.map +1 -0
- package/dist/lib/runner.d.ts +9 -1
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +30 -4
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/seatSentence.d.ts +42 -0
- package/dist/lib/seatSentence.d.ts.map +1 -0
- package/dist/lib/seatSentence.js +25 -0
- package/dist/lib/seatSentence.js.map +1 -0
- package/dist/lib/session.d.ts +86 -12
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +255 -25
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/sessionBinding.d.ts +61 -0
- package/dist/lib/sessionBinding.d.ts.map +1 -0
- package/dist/lib/sessionBinding.js +125 -0
- package/dist/lib/sessionBinding.js.map +1 -0
- package/dist/lib/sessionNotices.d.ts +54 -0
- package/dist/lib/sessionNotices.d.ts.map +1 -0
- package/dist/lib/sessionNotices.js +130 -0
- package/dist/lib/sessionNotices.js.map +1 -0
- package/dist/lib/sessionNotices.test.d.ts +2 -0
- package/dist/lib/sessionNotices.test.d.ts.map +1 -0
- package/dist/lib/sessionNotices.test.js +55 -0
- package/dist/lib/sessionNotices.test.js.map +1 -0
- package/dist/lib/spineVerdictRead.d.ts +70 -0
- package/dist/lib/spineVerdictRead.d.ts.map +1 -0
- package/dist/lib/spineVerdictRead.js +73 -0
- package/dist/lib/spineVerdictRead.js.map +1 -0
- package/dist/lib/spinner.js +2 -2
- package/dist/lib/spinner.js.map +1 -1
- package/dist/lib/startup-resolution-signals.d.ts +34 -0
- package/dist/lib/startup-resolution-signals.d.ts.map +1 -0
- package/dist/lib/startup-resolution-signals.js +116 -0
- package/dist/lib/startup-resolution-signals.js.map +1 -0
- package/dist/lib/startup-resolution-signals.test.d.ts +2 -0
- package/dist/lib/startup-resolution-signals.test.d.ts.map +1 -0
- package/dist/lib/startup-resolution-signals.test.js +113 -0
- package/dist/lib/startup-resolution-signals.test.js.map +1 -0
- package/dist/lib/startup-signals.d.ts +12 -0
- package/dist/lib/startup-signals.d.ts.map +1 -0
- package/dist/lib/startup-signals.js +179 -0
- package/dist/lib/startup-signals.js.map +1 -0
- package/dist/lib/startup-signals.test.d.ts +2 -0
- package/dist/lib/startup-signals.test.d.ts.map +1 -0
- package/dist/lib/startup-signals.test.js +165 -0
- package/dist/lib/startup-signals.test.js.map +1 -0
- package/dist/lib/state.d.ts +11 -2
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +11 -4
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/statusCategories.d.ts +160 -0
- package/dist/lib/statusCategories.d.ts.map +1 -0
- package/dist/lib/statusCategories.js +284 -0
- package/dist/lib/statusCategories.js.map +1 -0
- package/dist/lib/strip.d.ts +17 -0
- package/dist/lib/strip.d.ts.map +1 -1
- package/dist/lib/strip.js +48 -1
- package/dist/lib/strip.js.map +1 -1
- package/dist/lib/style.d.ts +8 -2
- package/dist/lib/style.d.ts.map +1 -1
- package/dist/lib/style.js +24 -17
- package/dist/lib/style.js.map +1 -1
- package/dist/lib/tokenConstants.d.ts +2 -0
- package/dist/lib/tokenConstants.d.ts.map +1 -1
- package/dist/lib/tokenConstants.js +2 -0
- package/dist/lib/tokenConstants.js.map +1 -1
- package/dist/lib/update-check.d.ts +26 -11
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +123 -73
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +2 -1
- package/dist/lib/upgrade-runner.d.ts.map +1 -1
- package/dist/lib/upgrade-runner.js +8 -7
- package/dist/lib/upgrade-runner.js.map +1 -1
- package/dist/lib/workspaceNotice.d.ts +202 -0
- package/dist/lib/workspaceNotice.d.ts.map +1 -0
- package/dist/lib/workspaceNotice.js +345 -0
- package/dist/lib/workspaceNotice.js.map +1 -0
- package/dist/lib/writePerimeter.d.ts +72 -0
- package/dist/lib/writePerimeter.d.ts.map +1 -0
- package/dist/lib/writePerimeter.js +128 -0
- package/dist/lib/writePerimeter.js.map +1 -0
- package/dist/registerEntryCommands.d.ts +18 -0
- package/dist/registerEntryCommands.d.ts.map +1 -0
- package/dist/registerEntryCommands.js +123 -0
- package/dist/registerEntryCommands.js.map +1 -0
- package/dist/registerHistoryCommand.d.ts +8 -0
- package/dist/registerHistoryCommand.d.ts.map +1 -0
- package/dist/registerHistoryCommand.js +14 -0
- package/dist/registerHistoryCommand.js.map +1 -0
- package/dist/registerOutcomeCommands.d.ts +27 -0
- package/dist/registerOutcomeCommands.d.ts.map +1 -0
- package/dist/registerOutcomeCommands.js +27 -0
- package/dist/registerOutcomeCommands.js.map +1 -0
- package/dist/registerRoleCommands.d.ts +11 -0
- package/dist/registerRoleCommands.d.ts.map +1 -0
- package/dist/registerRoleCommands.js +38 -0
- package/dist/registerRoleCommands.js.map +1 -0
- package/dist/registerTensionsCommands.d.ts +10 -0
- package/dist/registerTensionsCommands.d.ts.map +1 -0
- package/dist/registerTensionsCommands.js +15 -0
- package/dist/registerTensionsCommands.js.map +1 -0
- package/dist/scoreboard/diagnose.d.ts +190 -0
- package/dist/scoreboard/diagnose.d.ts.map +1 -0
- package/dist/scoreboard/diagnose.js +282 -0
- package/dist/scoreboard/diagnose.js.map +1 -0
- package/dist/scoreboard/diagnose.test.d.ts +15 -0
- package/dist/scoreboard/diagnose.test.d.ts.map +1 -0
- package/dist/scoreboard/diagnose.test.js +288 -0
- package/dist/scoreboard/diagnose.test.js.map +1 -0
- package/dist/scoreboard/floors.d.ts +47 -0
- package/dist/scoreboard/floors.d.ts.map +1 -0
- package/dist/scoreboard/floors.js +33 -0
- package/dist/scoreboard/floors.js.map +1 -0
- package/dist/scoreboard/localDrift.d.ts +23 -0
- package/dist/scoreboard/localDrift.d.ts.map +1 -0
- package/dist/scoreboard/localDrift.js +111 -0
- package/dist/scoreboard/localDrift.js.map +1 -0
- package/dist/scoreboard/localDrift.test.d.ts +9 -0
- package/dist/scoreboard/localDrift.test.d.ts.map +1 -0
- package/dist/scoreboard/localDrift.test.js +82 -0
- package/dist/scoreboard/localDrift.test.js.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.js +2 -6
- package/dist/surfaces/__tests__/adapter.test.js.map +1 -1
- package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts +2 -0
- package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js +179 -0
- package/dist/surfaces/__tests__/claude-skill-pointer-drift.test.js.map +1 -0
- package/dist/surfaces/adapters/claude.d.ts.map +1 -1
- package/dist/surfaces/adapters/claude.js +30 -25
- package/dist/surfaces/adapters/claude.js.map +1 -1
- package/package.json +9 -7
- package/dist/__tests__/audit.test.d.ts +0 -2
- package/dist/__tests__/audit.test.d.ts.map +0 -1
- package/dist/__tests__/audit.test.js +0 -399
- package/dist/__tests__/audit.test.js.map +0 -1
- package/dist/__tests__/authority-domains.test.d.ts +0 -2
- package/dist/__tests__/authority-domains.test.d.ts.map +0 -1
- package/dist/__tests__/authority-domains.test.js +0 -48
- package/dist/__tests__/authority-domains.test.js.map +0 -1
- package/dist/__tests__/promote.test.d.ts +0 -2
- package/dist/__tests__/promote.test.d.ts.map +0 -1
- package/dist/__tests__/promote.test.js +0 -230
- package/dist/__tests__/promote.test.js.map +0 -1
- package/dist/__tests__/proposals.test.d.ts +0 -2
- package/dist/__tests__/proposals.test.d.ts.map +0 -1
- package/dist/__tests__/proposals.test.js +0 -167
- package/dist/__tests__/proposals.test.js.map +0 -1
- package/dist/__tests__/setup-ingest.test.d.ts +0 -2
- package/dist/__tests__/setup-ingest.test.d.ts.map +0 -1
- package/dist/__tests__/setup-ingest.test.js +0 -71
- package/dist/__tests__/setup-ingest.test.js.map +0 -1
- package/dist/__tests__/setup-resolver.test.d.ts +0 -14
- package/dist/__tests__/setup-resolver.test.d.ts.map +0 -1
- package/dist/__tests__/setup-resolver.test.js +0 -228
- package/dist/__tests__/setup-resolver.test.js.map +0 -1
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +0 -15
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +0 -1
- package/dist/commands/__tests__/setup-detect-surfaces.test.js +0 -149
- package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +0 -1
- package/dist/commands/__tests__/setup-state.test.d.ts +0 -2
- package/dist/commands/__tests__/setup-state.test.d.ts.map +0 -1
- package/dist/commands/__tests__/setup-state.test.js +0 -194
- package/dist/commands/__tests__/setup-state.test.js.map +0 -1
- package/dist/commands/accept.d.ts +0 -18
- package/dist/commands/accept.d.ts.map +0 -1
- package/dist/commands/accept.js +0 -76
- package/dist/commands/accept.js.map +0 -1
- package/dist/commands/audit.d.ts +0 -25
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -215
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/authority-domains.d.ts +0 -146
- package/dist/commands/authority-domains.d.ts.map +0 -1
- package/dist/commands/authority-domains.js +0 -282
- package/dist/commands/authority-domains.js.map +0 -1
- package/dist/commands/method.d.ts +0 -99
- package/dist/commands/method.d.ts.map +0 -1
- package/dist/commands/method.js +0 -784
- package/dist/commands/method.js.map +0 -1
- package/dist/commands/migrate-setup.d.ts +0 -18
- package/dist/commands/migrate-setup.d.ts.map +0 -1
- package/dist/commands/migrate-setup.js +0 -198
- package/dist/commands/migrate-setup.js.map +0 -1
- package/dist/commands/promote.d.ts +0 -12
- package/dist/commands/promote.d.ts.map +0 -1
- package/dist/commands/promote.js +0 -113
- package/dist/commands/promote.js.map +0 -1
- package/dist/commands/proposals.d.ts +0 -9
- package/dist/commands/proposals.d.ts.map +0 -1
- package/dist/commands/proposals.js +0 -24
- package/dist/commands/proposals.js.map +0 -1
- package/dist/commands/reject.d.ts +0 -14
- package/dist/commands/reject.d.ts.map +0 -1
- package/dist/commands/reject.js +0 -43
- package/dist/commands/reject.js.map +0 -1
- package/dist/commands/setup-audit.d.ts +0 -59
- package/dist/commands/setup-audit.d.ts.map +0 -1
- package/dist/commands/setup-audit.js +0 -250
- package/dist/commands/setup-audit.js.map +0 -1
- package/dist/commands/setup-detect-surfaces.d.ts +0 -38
- package/dist/commands/setup-detect-surfaces.d.ts.map +0 -1
- package/dist/commands/setup-detect-surfaces.js +0 -76
- package/dist/commands/setup-detect-surfaces.js.map +0 -1
- package/dist/commands/setup-ingest.d.ts +0 -17
- package/dist/commands/setup-ingest.d.ts.map +0 -1
- package/dist/commands/setup-ingest.js +0 -226
- package/dist/commands/setup-ingest.js.map +0 -1
- package/dist/commands/setup-resolver.d.ts +0 -58
- package/dist/commands/setup-resolver.d.ts.map +0 -1
- package/dist/commands/setup-resolver.js +0 -150
- package/dist/commands/setup-resolver.js.map +0 -1
- package/dist/commands/setup-state.d.ts +0 -42
- package/dist/commands/setup-state.d.ts.map +0 -1
- package/dist/commands/setup-state.js +0 -93
- package/dist/commands/setup-state.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -23
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -69
- package/dist/commands/setup.js.map +0 -1
- package/dist/formatters/audit.d.ts +0 -52
- package/dist/formatters/audit.d.ts.map +0 -1
- package/dist/formatters/audit.js +0 -81
- package/dist/formatters/audit.js.map +0 -1
- package/dist/formatters/promote.d.ts +0 -30
- package/dist/formatters/promote.d.ts.map +0 -1
- package/dist/formatters/promote.js +0 -39
- package/dist/formatters/promote.js.map +0 -1
- package/dist/formatters/proposals.d.ts +0 -45
- package/dist/formatters/proposals.d.ts.map +0 -1
- package/dist/formatters/proposals.js +0 -62
- package/dist/formatters/proposals.js.map +0 -1
- package/dist/generators/archetypes.d.ts +0 -52
- package/dist/generators/archetypes.d.ts.map +0 -1
- package/dist/generators/archetypes.js +0 -153
- package/dist/generators/archetypes.js.map +0 -1
- package/dist/generators/archetypes.test.d.ts +0 -2
- package/dist/generators/archetypes.test.d.ts.map +0 -1
- package/dist/generators/archetypes.test.js +0 -237
- package/dist/generators/archetypes.test.js.map +0 -1
- package/dist/generators/chain-classifier.d.ts +0 -49
- package/dist/generators/chain-classifier.d.ts.map +0 -1
- package/dist/generators/chain-classifier.js +0 -180
- package/dist/generators/chain-classifier.js.map +0 -1
- package/dist/generators/chain-classifier.test.d.ts +0 -2
- package/dist/generators/chain-classifier.test.d.ts.map +0 -1
- package/dist/generators/chain-classifier.test.js +0 -257
- package/dist/generators/chain-classifier.test.js.map +0 -1
- package/dist/generators/chain-rules.d.ts +0 -42
- package/dist/generators/chain-rules.d.ts.map +0 -1
- package/dist/generators/chain-rules.js +0 -144
- package/dist/generators/chain-rules.js.map +0 -1
- package/dist/generators/chain-rules.test.d.ts +0 -2
- package/dist/generators/chain-rules.test.d.ts.map +0 -1
- package/dist/generators/chain-rules.test.js +0 -179
- package/dist/generators/chain-rules.test.js.map +0 -1
- package/dist/generators/handshake-diff.d.ts +0 -67
- package/dist/generators/handshake-diff.d.ts.map +0 -1
- package/dist/generators/handshake-diff.js +0 -183
- package/dist/generators/handshake-diff.js.map +0 -1
- package/dist/generators/handshake-diff.test.d.ts +0 -2
- package/dist/generators/handshake-diff.test.d.ts.map +0 -1
- package/dist/generators/handshake-diff.test.js +0 -264
- package/dist/generators/handshake-diff.test.js.map +0 -1
- package/dist/lib/activation.d.ts +0 -28
- package/dist/lib/activation.d.ts.map +0 -1
- package/dist/lib/activation.js +0 -57
- package/dist/lib/activation.js.map +0 -1
- package/dist/lib/activation.test.d.ts +0 -6
- package/dist/lib/activation.test.d.ts.map +0 -1
- package/dist/lib/activation.test.js +0 -121
- package/dist/lib/activation.test.js.map +0 -1
- package/dist/lib/inferSourceDate.d.ts +0 -12
- package/dist/lib/inferSourceDate.d.ts.map +0 -1
- package/dist/lib/inferSourceDate.js +0 -44
- package/dist/lib/inferSourceDate.js.map +0 -1
- package/dist/setup/__tests__/coach-traces.test.d.ts +0 -2
- package/dist/setup/__tests__/coach-traces.test.d.ts.map +0 -1
- package/dist/setup/__tests__/coach-traces.test.js +0 -189
- package/dist/setup/__tests__/coach-traces.test.js.map +0 -1
- package/dist/setup/__tests__/setup-commands.test.d.ts +0 -2
- package/dist/setup/__tests__/setup-commands.test.d.ts.map +0 -1
- package/dist/setup/__tests__/setup-commands.test.js +0 -177
- package/dist/setup/__tests__/setup-commands.test.js.map +0 -1
- package/dist/setup/__tests__/state-machine.test.d.ts +0 -2
- package/dist/setup/__tests__/state-machine.test.d.ts.map +0 -1
- package/dist/setup/__tests__/state-machine.test.js +0 -341
- package/dist/setup/__tests__/state-machine.test.js.map +0 -1
- package/dist/setup/detect-surfaces.d.ts +0 -21
- package/dist/setup/detect-surfaces.d.ts.map +0 -1
- package/dist/setup/detect-surfaces.js +0 -39
- package/dist/setup/detect-surfaces.js.map +0 -1
- package/dist/setup/manifest-writer.d.ts +0 -17
- package/dist/setup/manifest-writer.d.ts.map +0 -1
- package/dist/setup/manifest-writer.js +0 -153
- package/dist/setup/manifest-writer.js.map +0 -1
- package/dist/setup/perimeter.d.ts +0 -72
- package/dist/setup/perimeter.d.ts.map +0 -1
- package/dist/setup/perimeter.js +0 -128
- package/dist/setup/perimeter.js.map +0 -1
- package/dist/setup/state-machine.d.ts +0 -67
- package/dist/setup/state-machine.d.ts.map +0 -1
- package/dist/setup/state-machine.js +0 -124
- package/dist/setup/state-machine.js.map +0 -1
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +0 -2
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +0 -1
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +0 -132
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +0 -1
- package/templates/archetypes/boundary.md +0 -23
- package/templates/archetypes/constraint.md +0 -23
- package/templates/archetypes/convention.md +0 -23
- package/templates/archetypes/policy.md +0 -23
- package/templates/archetypes/quality-gate.md +0 -23
- package/templates/archetypes/workflow.md +0 -23
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Mirrors the door's own `kind` union (`convex/outcomes/readings.ts`). Kept as a literal list so
|
|
2
|
+
* a bad value is refused HERE, naming the legal set, rather than as an opaque validator error. */
|
|
3
|
+
declare const READING_KINDS: readonly ["measurement", "estimate", "correction"];
|
|
4
|
+
type ReadingKind = (typeof READING_KINDS)[number];
|
|
5
|
+
export interface OutcomeRecordOptions {
|
|
6
|
+
asOf?: string;
|
|
7
|
+
kind?: string;
|
|
8
|
+
corrects?: string;
|
|
9
|
+
byRole?: string;
|
|
10
|
+
note?: string;
|
|
11
|
+
source?: string;
|
|
12
|
+
valueText?: string;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface OutcomeListOptions {
|
|
16
|
+
limit?: string;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ReadingRow {
|
|
20
|
+
/** Non-underscore twin of the row's `_id` (TEN-340: the CLI's JSON envelope unconditionally
|
|
21
|
+
* strips any `_id`-keyed field via `stripConvexInternals`) — this is the field
|
|
22
|
+
* `pb outcome record --corrects <READING-ID>` targets. Same twin `pb conflicts` (`id`) and
|
|
23
|
+
* `pb shape` (`rowId`) already carry, for the same reason. */
|
|
24
|
+
readingId: string;
|
|
25
|
+
value: number;
|
|
26
|
+
valueText?: string;
|
|
27
|
+
asOf: number;
|
|
28
|
+
recordedAt: number;
|
|
29
|
+
kind: ReadingKind;
|
|
30
|
+
independenceTier: string;
|
|
31
|
+
actorKind: string;
|
|
32
|
+
note?: string;
|
|
33
|
+
source?: string;
|
|
34
|
+
supersededByReadingId?: string;
|
|
35
|
+
}
|
|
36
|
+
interface ListReadingsResult {
|
|
37
|
+
entryDocId: string;
|
|
38
|
+
pageExhausted: boolean;
|
|
39
|
+
readings: ReadingRow[];
|
|
40
|
+
}
|
|
41
|
+
export declare function runOutcomeRecord(entryId: string, value: string, options: OutcomeRecordOptions): Promise<void>;
|
|
42
|
+
export declare function formatReadingsList(entryId: string, result: ListReadingsResult | null): string;
|
|
43
|
+
export declare function runOutcomeList(entryId: string, options: OutcomeListOptions): Promise<void>;
|
|
44
|
+
interface OutcomeShowResult {
|
|
45
|
+
entryId: string;
|
|
46
|
+
name: string;
|
|
47
|
+
readyToCloseInstruction: string | null;
|
|
48
|
+
outcome: {
|
|
49
|
+
current?: {
|
|
50
|
+
value: number;
|
|
51
|
+
asOf: number;
|
|
52
|
+
};
|
|
53
|
+
currentResolution: string;
|
|
54
|
+
hasNoReadings: boolean;
|
|
55
|
+
direction: string;
|
|
56
|
+
progressPct?: number;
|
|
57
|
+
pacePct?: number;
|
|
58
|
+
nextDueAt?: number;
|
|
59
|
+
state: string;
|
|
60
|
+
overdueByMs?: number;
|
|
61
|
+
completion: string;
|
|
62
|
+
completionProvenance: string;
|
|
63
|
+
readyToClose: 'achieved' | 'missed' | null;
|
|
64
|
+
weakestTierInCycle: string | null;
|
|
65
|
+
ownerRole: {
|
|
66
|
+
id: string;
|
|
67
|
+
name: string | null;
|
|
68
|
+
} | null;
|
|
69
|
+
reporterRole: {
|
|
70
|
+
id: string;
|
|
71
|
+
name: string | null;
|
|
72
|
+
} | null;
|
|
73
|
+
readingCount: number;
|
|
74
|
+
unit: string | null;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Pretty rendering for `pb outcome show`. Exported for the same reason `formatReadingsList` is:
|
|
79
|
+
* the honesty rules here are assertable claims, not styling.
|
|
80
|
+
*
|
|
81
|
+
* Two of them are load-bearing. **A blank is never printed as a zero** — `progressPct` is
|
|
82
|
+
* `undefined` for a never-measured key result and `—` says that, where `0%` would read as a
|
|
83
|
+
* measurement. And **the recorded completion is never called "confirmed" or "verified"** — it
|
|
84
|
+
* reports what was recorded and where that came from, because nothing in this run verifies a
|
|
85
|
+
* close, and a surface that implies otherwise is the failure the whole provenance field exists to
|
|
86
|
+
* prevent.
|
|
87
|
+
*/
|
|
88
|
+
export declare function formatOutcomeShow(result: OutcomeShowResult | null): string;
|
|
89
|
+
export declare function runOutcomeShow(entryId: string): Promise<void>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=outcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/commands/outcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { getConfigOrGuide } from '../lib/config.js';
|
|
2
|
+
import { kernelCall, kernelCallWithSession } from '../lib/client.js';
|
|
3
|
+
import { CLIError, ErrorCode } from '../lib/errors.js';
|
|
4
|
+
import { runCliCommand } from '../lib/runner.js';
|
|
5
|
+
import { sanitizeSingleLineField } from '../lib/strip.js';
|
|
6
|
+
/** Mirrors the door's own `kind` union (`convex/outcomes/readings.ts`). Kept as a literal list so
|
|
7
|
+
* a bad value is refused HERE, naming the legal set, rather than as an opaque validator error. */
|
|
8
|
+
const READING_KINDS = ['measurement', 'estimate', 'correction'];
|
|
9
|
+
const validation = (message, guidance) => new CLIError(message, { code: ErrorCode.VALIDATION_FAILED, category: 'validation', guidance });
|
|
10
|
+
/** argv is strings; the door wants a number. `Number('')` is 0 and `Number(' ')` is 0, so the
|
|
11
|
+
* blank cases are rejected explicitly rather than silently recorded as a reading of zero — which
|
|
12
|
+
* would be a wrong MEASUREMENT, the one thing this table exists to get right. */
|
|
13
|
+
function requireNumber(raw, flag) {
|
|
14
|
+
const trimmed = raw.trim();
|
|
15
|
+
const parsed = Number(trimmed);
|
|
16
|
+
if (trimmed === '' || !Number.isFinite(parsed)) {
|
|
17
|
+
throw validation(`${flag} must be a number (got "${raw}").`,
|
|
18
|
+
// Placeholder, not a concrete id: a real-looking entry id in a user-facing string is a
|
|
19
|
+
// Chain-id leak (the pre-commit guard refuses it) and reads as a live reference.
|
|
20
|
+
`Example: pb outcome record <ENTRY-ID> 62${flag === '--limit' ? '' : ' --note "from the weekly dashboard"'}`);
|
|
21
|
+
}
|
|
22
|
+
return parsed;
|
|
23
|
+
}
|
|
24
|
+
export async function runOutcomeRecord(entryId, value, options) {
|
|
25
|
+
// Refuse everything refusable BEFORE the network call, so a malformed invocation costs no
|
|
26
|
+
// round trip and reports in the caller's own vocabulary rather than the validator's.
|
|
27
|
+
const numericValue = requireNumber(value, 'value');
|
|
28
|
+
if (options.kind !== undefined && !READING_KINDS.includes(options.kind)) {
|
|
29
|
+
throw validation(`--kind must be one of ${READING_KINDS.join(', ')} (got "${options.kind}").`, 'Use --kind estimate for a figure that is not directly measured, or --kind correction with --corrects to replace an earlier reading.');
|
|
30
|
+
}
|
|
31
|
+
// Both directions: the door refuses each, and a CLI that guards only one still sends a
|
|
32
|
+
// request it already knows will fail.
|
|
33
|
+
if (options.corrects !== undefined && options.kind !== 'correction') {
|
|
34
|
+
throw validation('--corrects is only meaningful with --kind correction.', 'Add --kind correction, or drop --corrects to record an ordinary reading.');
|
|
35
|
+
}
|
|
36
|
+
if (options.kind === 'correction' && options.corrects === undefined) {
|
|
37
|
+
throw validation('--kind correction requires --corrects <READING-ID>.', 'A correction must name the reading it replaces — find it with `pb outcome list <ENTRY-ID>`.');
|
|
38
|
+
}
|
|
39
|
+
let asOf;
|
|
40
|
+
if (options.asOf !== undefined) {
|
|
41
|
+
const parsed = Date.parse(options.asOf);
|
|
42
|
+
if (Number.isNaN(parsed)) {
|
|
43
|
+
throw validation(`--as-of must be a parseable date (got "${options.asOf}").`, 'Example: --as-of 2026-03-01. Back-dating is legitimate — a backfill shows up as asOf earlier than recordedAt.');
|
|
44
|
+
}
|
|
45
|
+
asOf = parsed;
|
|
46
|
+
}
|
|
47
|
+
const config = await getConfigOrGuide(() => runOutcomeRecord(entryId, value, options));
|
|
48
|
+
if (!config)
|
|
49
|
+
return;
|
|
50
|
+
await runCliCommand({
|
|
51
|
+
// Session-attributed on purpose: a reading's provenance is the point, and the plain caller
|
|
52
|
+
// would drop the session the tier derivation compares against the entry's created row.
|
|
53
|
+
// Every optional is spread conditionally — a key present-but-undefined is not the same as
|
|
54
|
+
// absent to the validator, and the door's own defaults must win when the caller is silent.
|
|
55
|
+
fn: () => kernelCallWithSession('outcomes.recordReading', {
|
|
56
|
+
entryId,
|
|
57
|
+
value: numericValue,
|
|
58
|
+
...(asOf !== undefined ? { asOf } : {}),
|
|
59
|
+
...(options.kind ? { kind: options.kind } : {}),
|
|
60
|
+
...(options.corrects ? { correctsReadingId: options.corrects } : {}),
|
|
61
|
+
...(options.byRole ? { recordedByRoleId: options.byRole } : {}),
|
|
62
|
+
...(options.note ? { note: options.note } : {}),
|
|
63
|
+
...(options.source ? { source: options.source } : {}),
|
|
64
|
+
...(options.valueText ? { valueText: options.valueText } : {}),
|
|
65
|
+
}),
|
|
66
|
+
formatPretty: (value_) => {
|
|
67
|
+
const receipt = value_;
|
|
68
|
+
const tier = receipt?.independenceTier ?? 'unknown';
|
|
69
|
+
const lines = [
|
|
70
|
+
// Same sanitiser, same reason — this line is echoed straight to the terminal.
|
|
71
|
+
`Recorded ${numericValue}${options.valueText ? ` ("${sanitizeSingleLineField(options.valueText)}")` : ''} on ${sanitizeSingleLineField(entryId)}.`,
|
|
72
|
+
// The tier is DERIVED server-side from the credential — printed here so the caller
|
|
73
|
+
// sees what was actually attributed, never what they might have assumed.
|
|
74
|
+
` attributed: ${receipt?.actorKind ?? 'unknown'} · independence: ${tier}`,
|
|
75
|
+
];
|
|
76
|
+
if (tier === 'provenance_unknown') {
|
|
77
|
+
lines.push(' (no session named, so provenance is unknown — that is the honest answer, not an error)');
|
|
78
|
+
}
|
|
79
|
+
return lines.join('\n');
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Pretty rendering for `pb outcome list`. Exported so the spec'd behaviours here are asserted
|
|
85
|
+
* directly rather than only through a live walk: superseded rows are SHOWN (the ledger is
|
|
86
|
+
* append-only and the correction chain is the audit trail) and marked with the id that replaced
|
|
87
|
+
* them, and `pageExhausted: false` is reported rather than letting a bounded page read as the
|
|
88
|
+
* whole history.
|
|
89
|
+
*
|
|
90
|
+
* **Every value that did not originate in this file is sanitised** (PR #840 security review).
|
|
91
|
+
* `note` and `valueText` are free text written by ANY connector that can call
|
|
92
|
+
* `outcomes.recordReading` — agents included — and this rendering is the operator's AUDIT VIEW.
|
|
93
|
+
* An embedded newline would inject extra, unprefixed lines that look exactly like additional
|
|
94
|
+
* readings: forged evidence in the one surface someone would use to check evidence. `\r` can
|
|
95
|
+
* overwrite the line that was already drawn, and CSI/OSC sequences can retitle or clear the
|
|
96
|
+
* operator's terminal. `sanitizeSingleLineField` (`lib/strip.js`) is the package's shared,
|
|
97
|
+
* single-line-safe sanitiser — the same one `shape`, `conflicts`, `feedback`, `direction` and
|
|
98
|
+
* `questions` use — and its own docblock exists for precisely this case, because
|
|
99
|
+
* `stripControlChars` deliberately keeps `\n`. Not hand-rolled here on purpose.
|
|
100
|
+
*
|
|
101
|
+
* `entryId` is echoed from argv rather than stored, so it is self-inflicted — sanitised anyway,
|
|
102
|
+
* since it costs nothing and a pasted command is a real way to reach it. The remaining
|
|
103
|
+
* interpolations need no sanitising and it would obscure the reasoning to add it: `kind` and
|
|
104
|
+
* `independenceTier` are Convex union literals the validator constrains, `readingId` and
|
|
105
|
+
* `supersededByReadingId` are Convex document ids, `value` is a number, and `when` is derived
|
|
106
|
+
* from a number through `toISOString`.
|
|
107
|
+
*/
|
|
108
|
+
/** PR #872 review round 3 (Codex P2): mirrors `packages/mcp-server/src/tools/outcome.ts`'s
|
|
109
|
+
* `safeDateSlice` — a reading written through the existing API route is validated only with
|
|
110
|
+
* `v.number()`, so a finite-but-Date-invalid `asOf`/`nextDueAt` (e.g. `1e100`) can be persisted.
|
|
111
|
+
* `new Date(x).toISOString()` throws `RangeError` for such a value, which would otherwise take
|
|
112
|
+
* down the whole `pb outcome list`/`show` command over one malformed legacy row. Not shared code
|
|
113
|
+
* with the MCP tool (the two packages do not cross-import, same door-parity precedent every
|
|
114
|
+
* other CLI/MCP formatter pair in this codebase follows) — content-equal by construction. */
|
|
115
|
+
function safeDateSlice(ms) {
|
|
116
|
+
const d = new Date(ms);
|
|
117
|
+
return Number.isNaN(d.getTime()) ? 'invalid-date' : d.toISOString().slice(0, 10);
|
|
118
|
+
}
|
|
119
|
+
export function formatReadingsList(entryId, result) {
|
|
120
|
+
const safeEntryId = sanitizeSingleLineField(entryId);
|
|
121
|
+
const rows = result?.readings ?? [];
|
|
122
|
+
if (rows.length === 0)
|
|
123
|
+
return `No readings recorded on ${safeEntryId} yet.`;
|
|
124
|
+
const lines = rows.map((row) => {
|
|
125
|
+
const when = safeDateSlice(row.asOf);
|
|
126
|
+
const superseded = row.supersededByReadingId ? ` <- superseded by ${row.supersededByReadingId}` : '';
|
|
127
|
+
const text = row.valueText ? ` ("${sanitizeSingleLineField(row.valueText)}")` : '';
|
|
128
|
+
const note = row.note ? ` - ${sanitizeSingleLineField(row.note)}` : '';
|
|
129
|
+
return ` ${when} ${String(row.value).padStart(8)}${text} [${row.kind}\u00b7${row.independenceTier}] ${row.readingId}${note}${superseded}`;
|
|
130
|
+
});
|
|
131
|
+
const tail = result?.pageExhausted === false ? '\n (older readings not loaded - raise --limit)' : '';
|
|
132
|
+
return `${rows.length} reading(s) on ${safeEntryId}, newest first:\n${lines.join('\n')}${tail}`;
|
|
133
|
+
}
|
|
134
|
+
export async function runOutcomeList(entryId, options) {
|
|
135
|
+
const limit = options.limit !== undefined ? requireNumber(options.limit, '--limit') : undefined;
|
|
136
|
+
const config = await getConfigOrGuide(() => runOutcomeList(entryId, options));
|
|
137
|
+
if (!config)
|
|
138
|
+
return;
|
|
139
|
+
await runCliCommand({
|
|
140
|
+
// A read: no session required. Demanding one would break `pb outcome list` for a caller
|
|
141
|
+
// holding a valid key who simply has not started a session.
|
|
142
|
+
fn: () => kernelCall('outcomes.listReadings', {
|
|
143
|
+
entryId,
|
|
144
|
+
...(limit !== undefined ? { limit } : {}),
|
|
145
|
+
}),
|
|
146
|
+
formatPretty: (value_) => formatReadingsList(entryId, value_),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
const pct = (v, unit = '%') => (v === undefined ? '—' : `${Math.round(v * 10) / 10}${unit}`);
|
|
150
|
+
/** `role.name` is an `entries.name` resolved server-side, so it is stored content written by any
|
|
151
|
+
* connector that can update entries — agents included — and reaches the operator's terminal
|
|
152
|
+
* through this line. Same sink class as `note`/`valueText`, and it must be sanitised for the same
|
|
153
|
+
* reason: an embedded newline injects an unprefixed line into the audit view. */
|
|
154
|
+
const roleLabel = (role) => role === null ? 'not set' : role.name === null ? 'a role that no longer exists' : sanitizeSingleLineField(role.name);
|
|
155
|
+
/**
|
|
156
|
+
* Pretty rendering for `pb outcome show`. Exported for the same reason `formatReadingsList` is:
|
|
157
|
+
* the honesty rules here are assertable claims, not styling.
|
|
158
|
+
*
|
|
159
|
+
* Two of them are load-bearing. **A blank is never printed as a zero** — `progressPct` is
|
|
160
|
+
* `undefined` for a never-measured key result and `—` says that, where `0%` would read as a
|
|
161
|
+
* measurement. And **the recorded completion is never called "confirmed" or "verified"** — it
|
|
162
|
+
* reports what was recorded and where that came from, because nothing in this run verifies a
|
|
163
|
+
* close, and a surface that implies otherwise is the failure the whole provenance field exists to
|
|
164
|
+
* prevent.
|
|
165
|
+
*/
|
|
166
|
+
export function formatOutcomeShow(result) {
|
|
167
|
+
if (!result)
|
|
168
|
+
return 'No outcome found.';
|
|
169
|
+
const o = result.outcome;
|
|
170
|
+
const unit = o.unit ? ` ${sanitizeSingleLineField(o.unit)}` : '';
|
|
171
|
+
const lines = [
|
|
172
|
+
// N2 (TASK-367): the metric line is retired — the entry's own name (above) already states
|
|
173
|
+
// what is measured.
|
|
174
|
+
`${sanitizeSingleLineField(result.entryId)} — ${sanitizeSingleLineField(result.name)}`,
|
|
175
|
+
// The honest blank: undefined is "never measured", which is not zero.
|
|
176
|
+
` current ${o.current ? `${o.current.value}${unit}` : 'no readings yet'} (${o.readingCount} reading(s))`,
|
|
177
|
+
` progress ${pct(o.progressPct)} direction ${o.direction}`,
|
|
178
|
+
` pace ${pct(o.pacePct)} ${o.pacePct === undefined ? '(no cycle end set)' : o.pacePct >= 0 ? '(ahead of pace)' : '(behind pace)'}`,
|
|
179
|
+
` state ${o.state}${o.hasNoReadings ? ' — never read' : ''}${o.overdueByMs ? ` (by ${Math.floor(o.overdueByMs / 86400000)}d)` : ''}`,
|
|
180
|
+
` next due ${o.nextDueAt ? safeDateSlice(o.nextDueAt) : 'no cadence set'}`,
|
|
181
|
+
` owner ${roleLabel(o.ownerRole)}`,
|
|
182
|
+
` reporter ${roleLabel(o.reporterRole)}`,
|
|
183
|
+
// Recorded, with its provenance. Never "confirmed", never "verified".
|
|
184
|
+
` completion recorded as ${o.completion} (source: ${o.completionProvenance})`,
|
|
185
|
+
` attestation weakest in cycle: ${o.weakestTierInCycle ?? 'none recorded'} — reported, not enforced`,
|
|
186
|
+
];
|
|
187
|
+
if (o.currentResolution === 'page-exhausted') {
|
|
188
|
+
lines.push(' note every loaded reading is superseded and more remain — this is not "never read"');
|
|
189
|
+
}
|
|
190
|
+
if (result.readyToCloseInstruction) {
|
|
191
|
+
lines.push('', ` ${result.readyToCloseInstruction}`);
|
|
192
|
+
}
|
|
193
|
+
return lines.join('\n');
|
|
194
|
+
}
|
|
195
|
+
export async function runOutcomeShow(entryId) {
|
|
196
|
+
const config = await getConfigOrGuide(() => runOutcomeShow(entryId));
|
|
197
|
+
if (!config)
|
|
198
|
+
return;
|
|
199
|
+
await runCliCommand({
|
|
200
|
+
fn: () => kernelCall('outcomes.showOutcome', { entryId }),
|
|
201
|
+
formatPretty: (value_) => formatOutcomeShow(value_),
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=outcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/commands/outcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome.test.d.ts","sourceRoot":"","sources":["../../src/commands/outcome.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-722 S2 — `pb outcome record | list`.
|
|
3
|
+
*
|
|
4
|
+
* The surface is thin on purpose: every rule that matters (credential-derived tier, session
|
|
5
|
+
* ownership, role validation) lives behind the gateway and was proven in S1. What THIS slice can
|
|
6
|
+
* get wrong is the surface — sending a string where the door wants a number, silently dropping a
|
|
7
|
+
* flag, or inventing a client-side default that contradicts the server's. So these tests assert
|
|
8
|
+
* the exact args crossing the wire, and the refusals that never reach it.
|
|
9
|
+
*/
|
|
10
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
11
|
+
const { getConfigOrGuide, kernelCall, kernelCallWithSession, readSession, runCliCommand } = vi.hoisted(() => ({
|
|
12
|
+
getConfigOrGuide: vi.fn(),
|
|
13
|
+
kernelCall: vi.fn(),
|
|
14
|
+
kernelCallWithSession: vi.fn(),
|
|
15
|
+
readSession: vi.fn(),
|
|
16
|
+
runCliCommand: vi.fn(async ({ fn }) => fn()),
|
|
17
|
+
}));
|
|
18
|
+
vi.mock('../lib/config.js', () => ({ getConfigOrGuide }));
|
|
19
|
+
vi.mock('../lib/client.js', () => ({ kernelCall, kernelCallWithSession }));
|
|
20
|
+
vi.mock('../lib/runner.js', () => ({ runCliCommand }));
|
|
21
|
+
vi.mock('../lib/session.js', () => ({ readSession }));
|
|
22
|
+
import { runOutcomeRecord, runOutcomeList, formatReadingsList, formatOutcomeShow } from './outcome.js';
|
|
23
|
+
describe('pb outcome record', () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
vi.clearAllMocks();
|
|
26
|
+
getConfigOrGuide.mockResolvedValue({ apiKey: 'pb_sk_test', siteUrl: 'https://example.test' });
|
|
27
|
+
kernelCallWithSession.mockResolvedValue({ readingId: 'r1', independenceTier: 'provenance_unknown', actorKind: 'agent', recordedAt: 1, asOf: 1 });
|
|
28
|
+
readSession.mockReturnValue({ sessionId: 's1' });
|
|
29
|
+
});
|
|
30
|
+
it('sends value as a NUMBER, not the raw argv string', async () => {
|
|
31
|
+
// The door declares `value: v.number()`. Forwarding argv verbatim would be refused by the
|
|
32
|
+
// validator at runtime, which is a wire-shape bug no server-side test can catch.
|
|
33
|
+
await runOutcomeRecord('KR-1', '62', {});
|
|
34
|
+
const [route, args] = kernelCallWithSession.mock.calls[0];
|
|
35
|
+
expect(route).toBe('outcomes.recordReading');
|
|
36
|
+
expect(args.value).toBe(62);
|
|
37
|
+
expect(args.value).not.toBe('62');
|
|
38
|
+
expect(args.entryId).toBe('KR-1');
|
|
39
|
+
});
|
|
40
|
+
it('refuses a non-numeric value BEFORE any network call', async () => {
|
|
41
|
+
await expect(runOutcomeRecord('KR-1', 'sixty-two', {})).rejects.toThrow(/number/i);
|
|
42
|
+
expect(kernelCallWithSession).not.toHaveBeenCalled();
|
|
43
|
+
});
|
|
44
|
+
it('accepts a negative and a decimal value (a reading is not always a positive integer)', async () => {
|
|
45
|
+
await runOutcomeRecord('KR-1', '-3.5', {});
|
|
46
|
+
expect(kernelCallWithSession.mock.calls[0][1].value).toBe(-3.5);
|
|
47
|
+
});
|
|
48
|
+
it('sends --as-of as an epoch-ms NUMBER, and refuses an unparseable date', async () => {
|
|
49
|
+
await runOutcomeRecord('KR-1', '1', { asOf: '2026-03-01' });
|
|
50
|
+
const args = kernelCallWithSession.mock.calls[0][1];
|
|
51
|
+
expect(typeof args.asOf).toBe('number');
|
|
52
|
+
expect(args.asOf).toBe(Date.parse('2026-03-01'));
|
|
53
|
+
vi.clearAllMocks();
|
|
54
|
+
getConfigOrGuide.mockResolvedValue({ apiKey: 'k', siteUrl: 's' });
|
|
55
|
+
await expect(runOutcomeRecord('KR-1', '1', { asOf: 'not-a-date' })).rejects.toThrow(/as-of/i);
|
|
56
|
+
expect(kernelCallWithSession).not.toHaveBeenCalled();
|
|
57
|
+
});
|
|
58
|
+
it('omits every optional it was not given — never sends undefined keys', async () => {
|
|
59
|
+
// A key present-but-undefined is not the same as absent to a Convex validator, and the
|
|
60
|
+
// door's own defaults (kind, asOf, recordedByRoleId) must win when the caller is silent.
|
|
61
|
+
await runOutcomeRecord('KR-1', '5', {});
|
|
62
|
+
const args = kernelCallWithSession.mock.calls[0][1];
|
|
63
|
+
expect(Object.keys(args).sort()).toEqual(['entryId', 'value']);
|
|
64
|
+
});
|
|
65
|
+
it('forwards note, source, value-text and by-role verbatim', async () => {
|
|
66
|
+
await runOutcomeRecord('KR-1', '5', { note: 'n', source: 'dashboard', valueText: '~5', byRole: 'ROL-2' });
|
|
67
|
+
expect(kernelCallWithSession.mock.calls[0][1]).toMatchObject({
|
|
68
|
+
note: 'n', source: 'dashboard', valueText: '~5', recordedByRoleId: 'ROL-2',
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
it('refuses --corrects without --kind correction, and --kind correction without --corrects', async () => {
|
|
72
|
+
// Both directions, because the door refuses both and a CLI that only guards one sends a
|
|
73
|
+
// request it already knows will fail.
|
|
74
|
+
await expect(runOutcomeRecord('KR-1', '5', { corrects: 'x' })).rejects.toThrow(/correction/i);
|
|
75
|
+
await expect(runOutcomeRecord('KR-1', '5', { kind: 'correction' })).rejects.toThrow(/corrects/i);
|
|
76
|
+
expect(kernelCallWithSession).not.toHaveBeenCalled();
|
|
77
|
+
});
|
|
78
|
+
it('sends a well-formed correction', async () => {
|
|
79
|
+
await runOutcomeRecord('KR-1', '5', { kind: 'correction', corrects: 'abc123' });
|
|
80
|
+
expect(kernelCallWithSession.mock.calls[0][1]).toMatchObject({ kind: 'correction', correctsReadingId: 'abc123' });
|
|
81
|
+
});
|
|
82
|
+
it('refuses an unknown --kind, naming the legal set', async () => {
|
|
83
|
+
await expect(runOutcomeRecord('KR-1', '5', { kind: 'guess' })).rejects.toThrow(/measurement/);
|
|
84
|
+
expect(kernelCallWithSession).not.toHaveBeenCalled();
|
|
85
|
+
});
|
|
86
|
+
it('records through the SESSION-attributed caller, not the plain one', async () => {
|
|
87
|
+
// A reading is a workspace write whose provenance is the whole point; `kernelCall` would
|
|
88
|
+
// drop the session the tier derivation compares against.
|
|
89
|
+
await runOutcomeRecord('KR-1', '5', {});
|
|
90
|
+
expect(kernelCallWithSession).toHaveBeenCalledTimes(1);
|
|
91
|
+
expect(kernelCall).not.toHaveBeenCalled();
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('pb outcome list', () => {
|
|
95
|
+
beforeEach(() => {
|
|
96
|
+
vi.clearAllMocks();
|
|
97
|
+
getConfigOrGuide.mockResolvedValue({ apiKey: 'pb_sk_test', siteUrl: 'https://example.test' });
|
|
98
|
+
kernelCall.mockResolvedValue({ entryDocId: 'e1', pageExhausted: true, readings: [] });
|
|
99
|
+
readSession.mockReturnValue(null);
|
|
100
|
+
});
|
|
101
|
+
it('reads through the plain caller and sends the entry id', async () => {
|
|
102
|
+
await runOutcomeList('KR-1', {});
|
|
103
|
+
const [route, args] = kernelCall.mock.calls[0];
|
|
104
|
+
expect(route).toBe('outcomes.listReadings');
|
|
105
|
+
expect(args.entryId).toBe('KR-1');
|
|
106
|
+
// A read needs no session — requiring one would make `pb outcome list` fail for a caller
|
|
107
|
+
// who has a key but has not started a session.
|
|
108
|
+
expect(kernelCallWithSession).not.toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
it('sends --limit as a NUMBER and refuses a non-numeric one', async () => {
|
|
111
|
+
await runOutcomeList('KR-1', { limit: '25' });
|
|
112
|
+
expect(kernelCall.mock.calls[0][1].limit).toBe(25);
|
|
113
|
+
vi.clearAllMocks();
|
|
114
|
+
getConfigOrGuide.mockResolvedValue({ apiKey: 'k', siteUrl: 's' });
|
|
115
|
+
await expect(runOutcomeList('KR-1', { limit: 'many' })).rejects.toThrow(/limit/i);
|
|
116
|
+
expect(kernelCall).not.toHaveBeenCalled();
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe('formatReadingsList — the rendering §8.2 specifies', () => {
|
|
120
|
+
const row = (over = {}) => ({
|
|
121
|
+
readingId: 'rd_1', value: 62, asOf: Date.parse('2026-03-01'), recordedAt: Date.parse('2026-03-01'),
|
|
122
|
+
kind: 'measurement', independenceTier: 'role_click', actorKind: 'person', ...over,
|
|
123
|
+
});
|
|
124
|
+
it('shows a superseded row AND names what replaced it', () => {
|
|
125
|
+
// The ledger is append-only and the correction chain IS the audit trail, so a superseded
|
|
126
|
+
// row is never hidden — it is marked, so a reader does not mistake it for the current value.
|
|
127
|
+
const out = formatReadingsList('KR-S1', {
|
|
128
|
+
entryDocId: 'e', pageExhausted: true,
|
|
129
|
+
readings: [row({ readingId: 'rd_2', value: 70 }), row({ supersededByReadingId: 'rd_2' })],
|
|
130
|
+
});
|
|
131
|
+
expect(out).toContain('superseded by rd_2');
|
|
132
|
+
expect(out).toContain('rd_1');
|
|
133
|
+
expect(out).toContain('2 reading(s)');
|
|
134
|
+
});
|
|
135
|
+
it('prints the readingId on every row — the id --corrects needs must be reachable from list', () => {
|
|
136
|
+
// This is the defect the S2 live walk found: without a printed id there is no way to name
|
|
137
|
+
// the reading a correction replaces, and --corrects is unusable.
|
|
138
|
+
const out = formatReadingsList('KR-S1', { entryDocId: 'e', pageExhausted: true, readings: [row()] });
|
|
139
|
+
expect(out).toContain('rd_1');
|
|
140
|
+
});
|
|
141
|
+
it('says so when the page is NOT exhausted, rather than reading as the whole history', () => {
|
|
142
|
+
const bounded = formatReadingsList('KR-S1', { entryDocId: 'e', pageExhausted: false, readings: [row()] });
|
|
143
|
+
expect(bounded).toContain('older readings not loaded');
|
|
144
|
+
const whole = formatReadingsList('KR-S1', { entryDocId: 'e', pageExhausted: true, readings: [row()] });
|
|
145
|
+
expect(whole).not.toContain('older readings not loaded');
|
|
146
|
+
});
|
|
147
|
+
it('renders the honest empty case, not an error', () => {
|
|
148
|
+
expect(formatReadingsList('KR-S2', { entryDocId: 'e', pageExhausted: true, readings: [] }))
|
|
149
|
+
.toBe('No readings recorded on KR-S2 yet.');
|
|
150
|
+
});
|
|
151
|
+
// PR #872 review round 3 (Codex P2): a legacy row written through the existing API route
|
|
152
|
+
// (validated only with v.number()) can carry a finite-but-Date-invalid asOf (e.g. 1e100).
|
|
153
|
+
// `new Date(x).toISOString()` throws RangeError for it — pre-fix, that propagated out of the
|
|
154
|
+
// `.map()` and killed `pb outcome list` entirely over one malformed row. Mirrors the MCP
|
|
155
|
+
// tool's own safeDateSlice fix (same PR).
|
|
156
|
+
it('renders a malformed out-of-range asOf as a fallback instead of throwing', () => {
|
|
157
|
+
const out = formatReadingsList('KR-S1', { entryDocId: 'e', pageExhausted: true, readings: [row({ asOf: 1e100 })] });
|
|
158
|
+
expect(out).toContain('invalid-date');
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
describe('formatReadingsList sanitises stored, agent-written content (PR #840 security review)', () => {
|
|
162
|
+
// The threat model is specific: an AGENT writes `note`/`valueText` through
|
|
163
|
+
// `outcomes.recordReading`, a HUMAN reads them in a terminal, and this rendering IS the audit
|
|
164
|
+
// view. Injected newlines do not just look untidy — they forge extra rows in the one surface
|
|
165
|
+
// someone would use to check the rows.
|
|
166
|
+
const row = (over = {}) => ({
|
|
167
|
+
readingId: 'rd_1', value: 62, asOf: Date.parse('2026-03-01'), recordedAt: Date.parse('2026-03-01'),
|
|
168
|
+
kind: 'measurement', independenceTier: 'role_click', actorKind: 'person', ...over,
|
|
169
|
+
});
|
|
170
|
+
const render = (over) => formatReadingsList('KR-S1', { entryDocId: 'e', pageExhausted: true, readings: [row(over)] });
|
|
171
|
+
it('a note with embedded newlines cannot forge extra reading lines', () => {
|
|
172
|
+
const out = render({ note: 'ok\n 2026-03-02 999 [measurement·role_click] rd_FORGED' });
|
|
173
|
+
// One reading in, one rendered line out (plus the header) — the forged row is folded in.
|
|
174
|
+
expect(out.split('\n')).toHaveLength(2);
|
|
175
|
+
expect(out).not.toMatch(/\n\s+2026-03-02/);
|
|
176
|
+
expect(out).toContain('rd_FORGED'); // the TEXT survives; only its line-breaking power is removed
|
|
177
|
+
});
|
|
178
|
+
it('a carriage return cannot overwrite the rendered line', () => {
|
|
179
|
+
// \r alone redraws over what was printed — a note ending in \r plus spaces can blank the
|
|
180
|
+
// real value on a real terminal without adding a line at all.
|
|
181
|
+
const out = render({ note: 'benign\rSAFE — nothing to see' });
|
|
182
|
+
expect(out).not.toContain('\r');
|
|
183
|
+
});
|
|
184
|
+
it('CSI/OSC escape sequences are stripped, not passed to the terminal', () => {
|
|
185
|
+
const esc = String.fromCharCode(27);
|
|
186
|
+
const out = render({ note: `${esc}[31m${esc}[2Jred${esc}[0m`, valueText: `${esc}]0;pwned${esc}\\` });
|
|
187
|
+
expect(out).not.toContain(esc);
|
|
188
|
+
});
|
|
189
|
+
it('valueText is sanitised too — it is stored and agent-written, exactly like note', () => {
|
|
190
|
+
const out = render({ valueText: 'a\nb' });
|
|
191
|
+
expect(out.split('\n')).toHaveLength(2);
|
|
192
|
+
});
|
|
193
|
+
it('ordinary content still renders unchanged', () => {
|
|
194
|
+
// The sanitiser must not damage the normal case, or it will be removed by someone later.
|
|
195
|
+
expect(render({ note: 'from the weekly dashboard', valueText: '~62%' }))
|
|
196
|
+
.toContain('("~62%")');
|
|
197
|
+
expect(render({ note: 'from the weekly dashboard' })).toContain('from the weekly dashboard');
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
describe('formatOutcomeShow — the two honesty rules', () => {
|
|
201
|
+
const base = {
|
|
202
|
+
entryId: 'KR-S1', name: 'Weekly signups', readyToCloseInstruction: null,
|
|
203
|
+
outcome: {
|
|
204
|
+
currentResolution: 'no-rows', hasNoReadings: true, direction: 'up-is-good',
|
|
205
|
+
state: 'overdue', completion: 'open', completionProvenance: 'none',
|
|
206
|
+
readyToClose: null, weakestTierInCycle: null, ownerRole: null, reporterRole: null,
|
|
207
|
+
readingCount: 0, unit: null,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
const show = (over = {}) => formatOutcomeShow({ ...base, outcome: { ...base.outcome, ...over } });
|
|
211
|
+
it('a never-measured key result shows a BLANK, never 0%', () => {
|
|
212
|
+
// `0%` reads as a measurement. The blank is the honest answer and the distinction is the
|
|
213
|
+
// whole reason progressPct is undefined rather than zero.
|
|
214
|
+
const out = show();
|
|
215
|
+
expect(out).toContain('no readings yet');
|
|
216
|
+
expect(out).not.toContain('0%');
|
|
217
|
+
expect(out).toContain('never read');
|
|
218
|
+
});
|
|
219
|
+
it('a genuine zero reading DOES render as 0% — the other half of that distinction', () => {
|
|
220
|
+
expect(show({ current: { value: 0, asOf: Date.now() }, currentResolution: 'found', hasNoReadings: false, progressPct: 0, readingCount: 1 }))
|
|
221
|
+
.toContain('0%');
|
|
222
|
+
});
|
|
223
|
+
// PR #872 review round 3 (Codex P2): mirrors formatReadingsList's own safeDateSlice fix — a
|
|
224
|
+
// malformed stored nextDueAt must render a fallback, never throw RangeError.
|
|
225
|
+
it('renders a malformed out-of-range nextDueAt as a fallback instead of throwing', () => {
|
|
226
|
+
expect(show({ nextDueAt: 1e100 })).toContain('invalid-date');
|
|
227
|
+
});
|
|
228
|
+
it('the recorded completion is never called confirmed or verified', () => {
|
|
229
|
+
// Nothing in this run verifies a close. A surface implying otherwise is the failure the
|
|
230
|
+
// provenance field exists to prevent.
|
|
231
|
+
const out = show({ completion: 'achieved', completionProvenance: 'legacy-data-status' });
|
|
232
|
+
expect(out).toContain('recorded as achieved');
|
|
233
|
+
expect(out).toContain('legacy-data-status');
|
|
234
|
+
expect(out.toLowerCase()).not.toContain('confirmed');
|
|
235
|
+
expect(out.toLowerCase()).not.toContain('verified');
|
|
236
|
+
});
|
|
237
|
+
it('the attestation line reports without claiming to enforce', () => {
|
|
238
|
+
const out = show({ weakestTierInCycle: 'agent_same_session' });
|
|
239
|
+
expect(out).toContain('reported, not enforced');
|
|
240
|
+
for (const word of ['blocked', 'refused', 'cannot'])
|
|
241
|
+
expect(out.toLowerCase()).not.toContain(word);
|
|
242
|
+
});
|
|
243
|
+
it('a deleted role renders as gone, not as a blank and not as an id', () => {
|
|
244
|
+
const out = show({ ownerRole: { id: 'q97abc', name: null }, reporterRole: { id: 'q97def', name: 'Data Steward' } });
|
|
245
|
+
expect(out).toContain('a role that no longer exists');
|
|
246
|
+
expect(out).toContain('Data Steward');
|
|
247
|
+
});
|
|
248
|
+
it('carries the close instruction verbatim when there is a proposal', () => {
|
|
249
|
+
const out = formatOutcomeShow({
|
|
250
|
+
...base, readyToCloseInstruction: 'The readings say this is achieved. Surface this to the founder; do not write the status yourself.',
|
|
251
|
+
outcome: { ...base.outcome, readyToClose: 'achieved' },
|
|
252
|
+
});
|
|
253
|
+
expect(out).toContain('do not write the status yourself');
|
|
254
|
+
});
|
|
255
|
+
it('page-exhausted is called out rather than passing as never-read', () => {
|
|
256
|
+
expect(show({ currentResolution: 'page-exhausted', hasNoReadings: false }))
|
|
257
|
+
.toContain('this is not "never read"');
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe('formatOutcomeShow sanitises EVERY stored string sink (PR #840 review round 2)', () => {
|
|
261
|
+
// Round 1 I sanitised the fields I interpolated directly and missed `role.name`, which sits
|
|
262
|
+
// behind a helper. So this guard is STRUCTURAL rather than per-field: it drives control
|
|
263
|
+
// characters through every string-typed input at once and asserts on the SHAPE of the output,
|
|
264
|
+
// which means the next stored field someone adds is covered without anyone remembering to
|
|
265
|
+
// extend this test.
|
|
266
|
+
const ESC = String.fromCharCode(27);
|
|
267
|
+
const NASTY = `x${ESC}[31m\n FORGED LINE\rover`;
|
|
268
|
+
it('no control characters and no injected lines, whatever the stored content says', () => {
|
|
269
|
+
const out = formatOutcomeShow({
|
|
270
|
+
entryId: NASTY, name: NASTY,
|
|
271
|
+
readyToCloseInstruction: null,
|
|
272
|
+
outcome: {
|
|
273
|
+
current: { value: 1, asOf: Date.now() }, currentResolution: 'found', hasNoReadings: false,
|
|
274
|
+
direction: 'up-is-good', progressPct: 10, state: 'on-time',
|
|
275
|
+
completion: 'open', completionProvenance: 'none', readyToClose: null,
|
|
276
|
+
weakestTierInCycle: 'role_click',
|
|
277
|
+
ownerRole: { id: 'q1', name: NASTY },
|
|
278
|
+
reporterRole: { id: 'q2', name: NASTY },
|
|
279
|
+
readingCount: 1, unit: NASTY,
|
|
280
|
+
},
|
|
281
|
+
});
|
|
282
|
+
expect(out).not.toContain(ESC);
|
|
283
|
+
expect(out).not.toContain('\r');
|
|
284
|
+
// The renderer emits a fixed number of lines; injected newlines would add more.
|
|
285
|
+
const lineCount = out.split('\n').length;
|
|
286
|
+
expect(lineCount).toBe(10);
|
|
287
|
+
// And no line may begin with the injected text — that is what "looks like another field" means.
|
|
288
|
+
expect(out.split('\n').every((l) => !l.startsWith('FORGED'))).toBe(true);
|
|
289
|
+
});
|
|
290
|
+
it('a role name specifically cannot inject a line — the round-2 miss', () => {
|
|
291
|
+
const out = formatOutcomeShow({
|
|
292
|
+
entryId: 'KR-S1', name: 'ok', readyToCloseInstruction: null,
|
|
293
|
+
outcome: {
|
|
294
|
+
currentResolution: 'no-rows', hasNoReadings: true, direction: 'undetermined',
|
|
295
|
+
state: 'overdue', completion: 'open', completionProvenance: 'none', readyToClose: null,
|
|
296
|
+
weakestTierInCycle: null,
|
|
297
|
+
ownerRole: { id: 'q1', name: 'Data Steward\n reporter Someone Else' },
|
|
298
|
+
reporterRole: null, readingCount: 0, unit: null,
|
|
299
|
+
},
|
|
300
|
+
});
|
|
301
|
+
// Exactly one line that IS the reporter field, not two. The forged text survives as text on
|
|
302
|
+
// the owner line (which is correct — nothing is censored) but has lost its line-breaking
|
|
303
|
+
// power, so it can no longer masquerade as a field of its own.
|
|
304
|
+
expect(out.split('\n').filter((l) => l.trim().startsWith('reporter')).length).toBe(1);
|
|
305
|
+
expect(out).toContain('Someone Else'); // the content is preserved, only its framing is removed
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
//# sourceMappingURL=outcome.test.js.map
|