@productbrain/cli 0.1.0-beta.14 → 0.1.0-beta.14010
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 +85 -113
- 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__/canonicalRefs.vocab.test.d.ts +2 -0
- package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
- package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
- package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
- 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 +119 -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 +64 -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 +95 -0
- package/dist/__tests__/capture-receipt-spine-floor.test.js.map +1 -0
- package/dist/__tests__/capture.test.js +610 -31
- package/dist/__tests__/capture.test.js.map +1 -1
- package/dist/__tests__/cli-error-once.test.d.ts +2 -0
- package/dist/__tests__/cli-error-once.test.d.ts.map +1 -0
- package/dist/__tests__/cli-error-once.test.js +51 -0
- package/dist/__tests__/cli-error-once.test.js.map +1 -0
- 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 +49 -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 +82 -0
- package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
- package/dist/__tests__/config-conversation-profile.test.d.ts +2 -0
- package/dist/__tests__/config-conversation-profile.test.d.ts.map +1 -0
- package/dist/__tests__/config-conversation-profile.test.js +91 -0
- package/dist/__tests__/config-conversation-profile.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.d.ts +8 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +1109 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/constants.test.d.ts +2 -0
- package/dist/__tests__/constants.test.d.ts.map +1 -0
- package/dist/__tests__/constants.test.js +155 -0
- package/dist/__tests__/constants.test.js.map +1 -0
- package/dist/__tests__/constellation.test.js +56 -36
- package/dist/__tests__/constellation.test.js.map +1 -1
- package/dist/__tests__/context-strategy.test.js +8 -8
- package/dist/__tests__/context-strategy.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 +272 -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 +275 -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 +573 -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 +36 -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 +95 -0
- package/dist/__tests__/entryOwn.test.js.map +1 -0
- package/dist/__tests__/entryReplace.test.d.ts +2 -0
- package/dist/__tests__/entryReplace.test.d.ts.map +1 -0
- package/dist/__tests__/entryReplace.test.js +60 -0
- package/dist/__tests__/entryReplace.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.d.ts +15 -0
- package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
- package/dist/__tests__/envelope-contract.test.js +154 -0
- package/dist/__tests__/envelope-contract.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +188 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/fields.test.js +50 -39
- 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 +116 -0
- package/dist/__tests__/gateway-timeout-body-phase.test.js.map +1 -0
- package/dist/__tests__/glossary.test.d.ts +2 -0
- package/dist/__tests__/glossary.test.d.ts.map +1 -0
- package/dist/__tests__/glossary.test.js +15 -0
- package/dist/__tests__/glossary.test.js.map +1 -0
- 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__/help-no-ids.test.d.ts +2 -0
- package/dist/__tests__/help-no-ids.test.d.ts.map +1 -0
- package/dist/__tests__/help-no-ids.test.js +81 -0
- package/dist/__tests__/help-no-ids.test.js.map +1 -0
- package/dist/__tests__/init.test.d.ts +8 -0
- package/dist/__tests__/init.test.d.ts.map +1 -0
- package/dist/__tests__/init.test.js +406 -0
- package/dist/__tests__/init.test.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/__tests__/login.test.d.ts.map +1 -0
- package/dist/__tests__/login.test.js +198 -0
- package/dist/__tests__/login.test.js.map +1 -0
- 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__/no-session-one-place.test.d.ts +2 -0
- package/dist/__tests__/no-session-one-place.test.d.ts.map +1 -0
- package/dist/__tests__/no-session-one-place.test.js +33 -0
- package/dist/__tests__/no-session-one-place.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__/orient.test.d.ts +2 -0
- package/dist/__tests__/orient.test.d.ts.map +1 -0
- package/dist/__tests__/orient.test.js +711 -0
- package/dist/__tests__/orient.test.js.map +1 -0
- 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 +186 -0
- package/dist/__tests__/preview-key-refresh.test.js.map +1 -0
- package/dist/__tests__/profile-create-key.test.d.ts +2 -0
- package/dist/__tests__/profile-create-key.test.d.ts.map +1 -0
- package/dist/__tests__/profile-create-key.test.js +57 -0
- package/dist/__tests__/profile-create-key.test.js.map +1 -0
- package/dist/__tests__/profiles.test.d.ts +2 -0
- package/dist/__tests__/profiles.test.d.ts.map +1 -0
- package/dist/__tests__/profiles.test.js +834 -0
- package/dist/__tests__/profiles.test.js.map +1 -0
- package/dist/__tests__/prompts.test.d.ts +6 -0
- package/dist/__tests__/prompts.test.d.ts.map +1 -0
- package/dist/__tests__/prompts.test.js +163 -0
- package/dist/__tests__/prompts.test.js.map +1 -0
- 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 +8 -0
- package/dist/__tests__/rate-limit-resilience.test.d.ts.map +1 -0
- package/dist/__tests__/rate-limit-resilience.test.js +191 -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 +125 -0
- package/dist/__tests__/read-target-notice.test.js.map +1 -0
- package/dist/__tests__/relate.test.js +292 -39
- package/dist/__tests__/relate.test.js.map +1 -1
- package/dist/__tests__/removed-commands.test.d.ts +2 -0
- package/dist/__tests__/removed-commands.test.d.ts.map +1 -0
- package/dist/__tests__/removed-commands.test.js +99 -0
- package/dist/__tests__/removed-commands.test.js.map +1 -0
- 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 +83 -0
- package/dist/__tests__/reply-commands-registered.test.js.map +1 -0
- 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 +91 -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 +111 -0
- package/dist/__tests__/route-latency-budget.test.js.map +1 -0
- package/dist/__tests__/runner.test.js +75 -56
- 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-conversation.test.d.ts +2 -0
- package/dist/__tests__/session-close-conversation.test.d.ts.map +1 -0
- package/dist/__tests__/session-close-conversation.test.js +75 -0
- package/dist/__tests__/session-close-conversation.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 +349 -0
- package/dist/__tests__/session-close-loop.test.js.map +1 -0
- package/dist/__tests__/session-ended-refusal.test.d.ts +2 -0
- package/dist/__tests__/session-ended-refusal.test.d.ts.map +1 -0
- package/dist/__tests__/session-ended-refusal.test.js +76 -0
- package/dist/__tests__/session-ended-refusal.test.js.map +1 -0
- package/dist/__tests__/session-hook-conversation.test.d.ts +2 -0
- package/dist/__tests__/session-hook-conversation.test.d.ts.map +1 -0
- package/dist/__tests__/session-hook-conversation.test.js +87 -0
- package/dist/__tests__/session-hook-conversation.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 +171 -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 +333 -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 +137 -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 +137 -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 +119 -0
- package/dist/__tests__/session-role-name-sanitize.test.js.map +1 -0
- package/dist/__tests__/session-seat-split.test.d.ts +2 -0
- package/dist/__tests__/session-seat-split.test.d.ts.map +1 -0
- package/dist/__tests__/session-seat-split.test.js +142 -0
- package/dist/__tests__/session-seat-split.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 +213 -0
- package/dist/__tests__/session-start-key-refresh.test.js.map +1 -0
- package/dist/__tests__/session-state-machine.test.d.ts +2 -0
- package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
- package/dist/__tests__/session-state-machine.test.js +364 -0
- package/dist/__tests__/session-state-machine.test.js.map +1 -0
- package/dist/__tests__/session-switch.test.d.ts +2 -0
- package/dist/__tests__/session-switch.test.d.ts.map +1 -0
- package/dist/__tests__/session-switch.test.js +341 -0
- package/dist/__tests__/session-switch.test.js.map +1 -0
- package/dist/__tests__/session-touch.test.js +87 -108
- package/dist/__tests__/session-touch.test.js.map +1 -1
- package/dist/__tests__/session.test.js +4 -13
- package/dist/__tests__/session.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 +131 -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 +21 -0
- package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
- package/dist/__tests__/skill-vocabulary.test.js +192 -0
- package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
- package/dist/__tests__/spinner-labels.test.d.ts +2 -0
- package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
- package/dist/__tests__/spinner-labels.test.js +23 -0
- package/dist/__tests__/spinner-labels.test.js.map +1 -0
- package/dist/__tests__/state.test.d.ts +6 -0
- package/dist/__tests__/state.test.d.ts.map +1 -0
- package/dist/__tests__/state.test.js +117 -0
- package/dist/__tests__/state.test.js.map +1 -0
- 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 +53 -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 +183 -0
- package/dist/__tests__/tenant-notice-write-path.test.js.map +1 -0
- package/dist/__tests__/update-check.test.d.ts +2 -0
- package/dist/__tests__/update-check.test.d.ts.map +1 -0
- package/dist/__tests__/update-check.test.js +235 -0
- package/dist/__tests__/update-check.test.js.map +1 -0
- package/dist/__tests__/update.test.js +596 -78
- package/dist/__tests__/update.test.js.map +1 -1
- package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
- package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade-runner.test.js +77 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -0
- 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 +33 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.js +425 -0
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
- package/dist/__tests__/workspace.test.d.ts +2 -0
- package/dist/__tests__/workspace.test.d.ts.map +1 -0
- package/dist/__tests__/workspace.test.js +267 -0
- package/dist/__tests__/workspace.test.js.map +1 -0
- 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 +551 -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 +315 -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 +151 -0
- package/dist/commands/__tests__/rework.test.js.map +1 -0
- package/dist/commands/__tests__/tasksList.test.d.ts +2 -0
- package/dist/commands/__tests__/tasksList.test.d.ts.map +1 -0
- package/dist/commands/__tests__/tasksList.test.js +66 -0
- package/dist/commands/__tests__/tasksList.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 +101 -0
- package/dist/commands/accept-policy.js.map +1 -0
- package/dist/commands/admin/cockpit.d.ts +79 -0
- package/dist/commands/admin/cockpit.d.ts.map +1 -0
- package/dist/commands/admin/cockpit.js +553 -0
- package/dist/commands/admin/cockpit.js.map +1 -0
- package/dist/commands/admin/cockpit.test.d.ts +2 -0
- package/dist/commands/admin/cockpit.test.d.ts.map +1 -0
- package/dist/commands/admin/cockpit.test.js +104 -0
- package/dist/commands/admin/cockpit.test.js.map +1 -0
- package/dist/commands/admin/index.d.ts +70 -0
- package/dist/commands/admin/index.d.ts.map +1 -0
- package/dist/commands/admin/index.js +375 -0
- package/dist/commands/admin/index.js.map +1 -0
- 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 +30 -0
- package/dist/commands/admin/inspect.d.ts.map +1 -0
- package/dist/commands/admin/inspect.js +550 -0
- package/dist/commands/admin/inspect.js.map +1 -0
- package/dist/commands/admin/inspect.test.d.ts +7 -0
- package/dist/commands/admin/inspect.test.d.ts.map +1 -0
- package/dist/commands/admin/inspect.test.js +90 -0
- package/dist/commands/admin/inspect.test.js.map +1 -0
- package/dist/commands/admin/manage.d.ts +8 -0
- package/dist/commands/admin/manage.d.ts.map +1 -0
- package/dist/commands/admin/manage.js +53 -0
- package/dist/commands/admin/manage.js.map +1 -0
- package/dist/commands/admin/manage.test.d.ts +2 -0
- package/dist/commands/admin/manage.test.d.ts.map +1 -0
- package/dist/commands/admin/manage.test.js +103 -0
- package/dist/commands/admin/manage.test.js.map +1 -0
- 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 +54 -0
- package/dist/commands/admin/seed.d.ts.map +1 -0
- package/dist/commands/admin/seed.js +642 -0
- package/dist/commands/admin/seed.js.map +1 -0
- package/dist/commands/admin/seed.test.d.ts +10 -0
- package/dist/commands/admin/seed.test.d.ts.map +1 -0
- package/dist/commands/admin/seed.test.js +90 -0
- package/dist/commands/admin/seed.test.js.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts +16 -0
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js +63 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts +13 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.js +109 -0
- package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
- 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 +36 -14
- package/dist/commands/brief.js.map +1 -1
- package/dist/commands/capture.d.ts +20 -8
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +133 -69
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chain-walk.d.ts.map +1 -1
- package/dist/commands/chain-walk.js +9 -6
- package/dist/commands/chain-walk.js.map +1 -1
- package/dist/commands/changes.d.ts.map +1 -1
- package/dist/commands/changes.js +9 -6
- package/dist/commands/changes.js.map +1 -1
- package/dist/commands/codex-prep.d.ts +23 -0
- package/dist/commands/codex-prep.d.ts.map +1 -0
- package/dist/commands/codex-prep.js +54 -0
- package/dist/commands/codex-prep.js.map +1 -0
- package/dist/commands/collections.d.ts +22 -0
- package/dist/commands/collections.d.ts.map +1 -0
- package/dist/commands/collections.js +69 -0
- package/dist/commands/collections.js.map +1 -0
- package/dist/commands/conflicts.d.ts +40 -0
- package/dist/commands/conflicts.d.ts.map +1 -0
- package/dist/commands/conflicts.js +213 -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 +202 -0
- package/dist/commands/conflicts.test.js.map +1 -0
- package/dist/commands/connect-config.test.d.ts +2 -0
- package/dist/commands/connect-config.test.d.ts.map +1 -0
- package/dist/commands/connect-config.test.js +47 -0
- package/dist/commands/connect-config.test.js.map +1 -0
- 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.d.ts +7 -0
- package/dist/commands/connect-integration.test.d.ts.map +1 -0
- package/dist/commands/connect-integration.test.js +232 -0
- package/dist/commands/connect-integration.test.js.map +1 -0
- 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 +108 -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 +133 -0
- package/dist/commands/connect-redeem-failure.test.js.map +1 -0
- package/dist/commands/connect-screens.d.ts +17 -0
- package/dist/commands/connect-screens.d.ts.map +1 -0
- package/dist/commands/connect-screens.js +28 -0
- package/dist/commands/connect-screens.js.map +1 -0
- package/dist/commands/connect-screens.test.d.ts +2 -0
- package/dist/commands/connect-screens.test.d.ts.map +1 -0
- package/dist/commands/connect-screens.test.js +19 -0
- package/dist/commands/connect-screens.test.js.map +1 -0
- 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 +54 -0
- package/dist/commands/connect-seal.test.js.map +1 -0
- package/dist/commands/connect.d.ts +38 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +424 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/connect.test.d.ts +6 -0
- package/dist/commands/connect.test.d.ts.map +1 -0
- package/dist/commands/connect.test.js +521 -0
- package/dist/commands/connect.test.js.map +1 -0
- package/dist/commands/constellation.d.ts.map +1 -1
- package/dist/commands/constellation.js +9 -6
- package/dist/commands/constellation.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +9 -6
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/cross-cut.d.ts.map +1 -1
- package/dist/commands/cross-cut.js +3 -5
- package/dist/commands/cross-cut.js.map +1 -1
- package/dist/commands/direction.d.ts +10 -0
- package/dist/commands/direction.d.ts.map +1 -0
- package/dist/commands/direction.js +75 -0
- package/dist/commands/direction.js.map +1 -0
- package/dist/commands/doctor.d.ts +18 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +364 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +8 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +652 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/entryAccept.d.ts +59 -0
- package/dist/commands/entryAccept.d.ts.map +1 -0
- package/dist/commands/entryAccept.js +288 -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 +10 -0
- package/dist/commands/entryOwn.d.ts.map +1 -0
- package/dist/commands/entryOwn.js +40 -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 +44 -0
- package/dist/commands/entryPreflight.js.map +1 -0
- package/dist/commands/entryReplace.d.ts +7 -0
- package/dist/commands/entryReplace.d.ts.map +1 -0
- package/dist/commands/entryReplace.js +34 -0
- package/dist/commands/entryReplace.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 +42 -0
- package/dist/commands/entryTick.js.map +1 -0
- package/dist/commands/feedback.d.ts +39 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +165 -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 +109 -0
- package/dist/commands/feedback.test.js.map +1 -0
- package/dist/commands/fields.d.ts.map +1 -1
- package/dist/commands/fields.js +9 -7
- 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/get.d.ts.map +1 -1
- package/dist/commands/get.js +16 -12
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/history.d.ts +32 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +53 -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 +121 -0
- package/dist/commands/history.test.js.map +1 -0
- package/dist/commands/init.d.ts +41 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +266 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +107 -39
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/method.d.ts +7 -0
- package/dist/commands/method.d.ts.map +1 -0
- package/dist/commands/method.js +67 -0
- package/dist/commands/method.js.map +1 -0
- package/dist/commands/organisation.d.ts +12 -0
- package/dist/commands/organisation.d.ts.map +1 -0
- package/dist/commands/organisation.js +143 -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 +116 -0
- package/dist/commands/organisation.test.js.map +1 -0
- package/dist/commands/organisationHierarchy.d.ts +15 -0
- package/dist/commands/organisationHierarchy.d.ts.map +1 -0
- package/dist/commands/organisationHierarchy.js +102 -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 +144 -0
- package/dist/commands/organisationHierarchy.test.js.map +1 -0
- package/dist/commands/organisationWrite.d.ts +20 -0
- package/dist/commands/organisationWrite.d.ts.map +1 -0
- package/dist/commands/organisationWrite.js +44 -0
- package/dist/commands/organisationWrite.js.map +1 -0
- package/dist/commands/orient.d.ts +143 -36
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +240 -18
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/outcome.d.ts +96 -0
- package/dist/commands/outcome.d.ts.map +1 -0
- package/dist/commands/outcome.js +194 -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 +326 -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 +21 -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 +72 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +351 -0
- package/dist/commands/profile.js.map +1 -0
- 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 +38 -0
- package/dist/commands/quality.d.ts.map +1 -0
- package/dist/commands/quality.js +99 -0
- package/dist/commands/quality.js.map +1 -0
- package/dist/commands/questions.d.ts +27 -0
- package/dist/commands/questions.d.ts.map +1 -0
- package/dist/commands/questions.js +261 -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 +238 -0
- package/dist/commands/questions.test.js.map +1 -0
- package/dist/commands/relate.d.ts +10 -0
- package/dist/commands/relate.d.ts.map +1 -1
- package/dist/commands/relate.js +149 -23
- 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 +88 -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 +96 -0
- package/dist/commands/rework.js.map +1 -0
- package/dist/commands/role.d.ts +90 -0
- package/dist/commands/role.d.ts.map +1 -0
- package/dist/commands/role.js +172 -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 +345 -0
- package/dist/commands/role.test.js.map +1 -0
- package/dist/commands/scoreboard.d.ts +23 -0
- package/dist/commands/scoreboard.d.ts.map +1 -0
- package/dist/commands/scoreboard.js +33 -0
- package/dist/commands/scoreboard.js.map +1 -0
- package/dist/commands/scoreboard.test.d.ts +2 -0
- package/dist/commands/scoreboard.test.d.ts.map +1 -0
- package/dist/commands/scoreboard.test.js +51 -0
- package/dist/commands/scoreboard.test.js.map +1 -0
- package/dist/commands/search.d.ts +2 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +7 -8
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session-hook.d.ts +38 -0
- package/dist/commands/session-hook.d.ts.map +1 -0
- package/dist/commands/session-hook.js +97 -0
- package/dist/commands/session-hook.js.map +1 -0
- package/dist/commands/session-hook.test.d.ts +2 -0
- package/dist/commands/session-hook.test.d.ts.map +1 -0
- package/dist/commands/session-hook.test.js +89 -0
- package/dist/commands/session-hook.test.js.map +1 -0
- package/dist/commands/session.d.ts +64 -7
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +470 -78
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +101 -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 +47 -0
- package/dist/commands/stillTrue.js.map +1 -0
- package/dist/commands/tasksList.d.ts +12 -0
- package/dist/commands/tasksList.d.ts.map +1 -0
- package/dist/commands/tasksList.js +45 -0
- package/dist/commands/tasksList.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 +25 -0
- package/dist/commands/tensionsList.js.map +1 -0
- package/dist/commands/update.d.ts +24 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +241 -51
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts +5 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +110 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/usage.d.ts +40 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +214 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +20 -10
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/welcome.d.ts +21 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +54 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/commands/whoami.d.ts +23 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +132 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/whoami.test.d.ts +2 -0
- package/dist/commands/whoami.test.d.ts.map +1 -0
- package/dist/commands/whoami.test.js +145 -0
- package/dist/commands/whoami.test.js.map +1 -0
- package/dist/commands/workspace.d.ts +46 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +198 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/formatters/__tests__/orient-openTasks.test.d.ts +2 -0
- package/dist/formatters/__tests__/orient-openTasks.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-openTasks.test.js +77 -0
- package/dist/formatters/__tests__/orient-openTasks.test.js.map +1 -0
- 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 +38 -0
- package/dist/formatters/__tests__/orient-plannedWorkCut.test.js.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts +6 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.js +312 -0
- package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
- 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__/orient-workPackageList.test.d.ts +2 -0
- package/dist/formatters/__tests__/orient-workPackageList.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-workPackageList.test.js +69 -0
- package/dist/formatters/__tests__/orient-workPackageList.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 +273 -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 +7 -15
- package/dist/formatters/brief.d.ts.map +1 -1
- package/dist/formatters/brief.js +18 -15
- 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 +33 -0
- package/dist/formatters/brief.test.js.map +1 -0
- package/dist/formatters/capture.d.ts +38 -6
- package/dist/formatters/capture.d.ts.map +1 -1
- package/dist/formatters/capture.js +58 -9
- package/dist/formatters/capture.js.map +1 -1
- package/dist/formatters/coaching.d.ts +59 -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 +39 -0
- package/dist/formatters/collections.d.ts.map +1 -0
- package/dist/formatters/collections.js +102 -0
- package/dist/formatters/collections.js.map +1 -0
- package/dist/formatters/conflicts.d.ts +81 -0
- package/dist/formatters/conflicts.d.ts.map +1 -0
- package/dist/formatters/conflicts.js +102 -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 +179 -0
- package/dist/formatters/conflicts.test.js.map +1 -0
- package/dist/formatters/constellation.d.ts +2 -0
- package/dist/formatters/constellation.d.ts.map +1 -1
- package/dist/formatters/constellation.js +2 -0
- package/dist/formatters/constellation.js.map +1 -1
- 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/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 +102 -5
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +139 -15
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/entryAccept.d.ts +86 -0
- package/dist/formatters/entryAccept.d.ts.map +1 -0
- package/dist/formatters/entryAccept.js +78 -0
- package/dist/formatters/entryAccept.js.map +1 -0
- package/dist/formatters/feedback.d.ts +61 -0
- package/dist/formatters/feedback.d.ts.map +1 -0
- package/dist/formatters/feedback.js +95 -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 +142 -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/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 +190 -42
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +294 -102
- 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 +75 -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 +70 -0
- package/dist/formatters/orient.rituals.test.js.map +1 -0
- package/dist/formatters/orient.taskAlignment.test.d.ts +2 -0
- package/dist/formatters/orient.taskAlignment.test.d.ts.map +1 -0
- package/dist/formatters/orient.taskAlignment.test.js +52 -0
- package/dist/formatters/orient.taskAlignment.test.js.map +1 -0
- package/dist/formatters/orientDegradation.d.ts +35 -0
- package/dist/formatters/orientDegradation.d.ts.map +1 -0
- package/dist/formatters/orientDegradation.js +47 -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 +26 -0
- package/dist/formatters/orientDegradation.test.js.map +1 -0
- package/dist/formatters/orientDirection.d.ts +25 -0
- package/dist/formatters/orientDirection.d.ts.map +1 -0
- package/dist/formatters/orientDirection.js +7 -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 +66 -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 +16 -0
- package/dist/formatters/plannedWorkCounts.d.ts.map +1 -0
- package/dist/formatters/plannedWorkCounts.js +15 -0
- package/dist/formatters/plannedWorkCounts.js.map +1 -0
- package/dist/formatters/qualityChecks.d.ts +21 -0
- package/dist/formatters/qualityChecks.d.ts.map +1 -0
- package/dist/formatters/qualityChecks.js +132 -0
- package/dist/formatters/qualityChecks.js.map +1 -0
- package/dist/formatters/questions.d.ts +90 -0
- package/dist/formatters/questions.d.ts.map +1 -0
- package/dist/formatters/questions.js +126 -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 +176 -0
- package/dist/formatters/questions.test.js.map +1 -0
- package/dist/formatters/relate.d.ts +13 -0
- package/dist/formatters/relate.d.ts.map +1 -1
- package/dist/formatters/relate.js +15 -2
- 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 +143 -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 +262 -0
- package/dist/formatters/scoreboard.test.js.map +1 -0
- package/dist/formatters/search.d.ts +24 -4
- package/dist/formatters/search.d.ts.map +1 -1
- package/dist/formatters/search.js +28 -10
- 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 +86 -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 +274 -0
- package/dist/formatters/session-feedback.test.js.map +1 -0
- package/dist/formatters/session.d.ts +135 -5
- package/dist/formatters/session.d.ts.map +1 -1
- package/dist/formatters/session.js +345 -21
- package/dist/formatters/session.js.map +1 -1
- package/dist/formatters/spineCheck.d.ts +14 -0
- package/dist/formatters/spineCheck.d.ts.map +1 -0
- package/dist/formatters/spineCheck.js +128 -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 +85 -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 +26 -0
- package/dist/formatters/update.d.ts.map +1 -1
- package/dist/formatters/update.js +40 -6
- 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 +71 -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/routeLatencyBudget.generated.d.ts +54 -0
- package/dist/generated/routeLatencyBudget.generated.d.ts.map +1 -0
- package/dist/generated/routeLatencyBudget.generated.js +255 -0
- package/dist/generated/routeLatencyBudget.generated.js.map +1 -0
- package/dist/handleCliError.d.ts +30 -0
- package/dist/handleCliError.d.ts.map +1 -0
- package/dist/handleCliError.js +91 -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 +404 -355
- package/dist/index.js.map +1 -1
- 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 +126 -0
- package/dist/lib/adminConfig.js.map +1 -0
- package/dist/lib/canonicalRefs.d.ts +155 -0
- package/dist/lib/canonicalRefs.d.ts.map +1 -0
- package/dist/lib/canonicalRefs.js +131 -0
- package/dist/lib/canonicalRefs.js.map +1 -0
- package/dist/lib/captureLink.d.ts +7 -0
- package/dist/lib/captureLink.d.ts.map +1 -0
- package/dist/lib/captureLink.js +29 -0
- package/dist/lib/captureLink.js.map +1 -0
- package/dist/lib/checklist.d.ts +151 -0
- package/dist/lib/checklist.d.ts.map +1 -0
- package/dist/lib/checklist.js +235 -0
- package/dist/lib/checklist.js.map +1 -0
- package/dist/lib/cliFirstRun.d.ts +36 -0
- package/dist/lib/cliFirstRun.d.ts.map +1 -0
- package/dist/lib/cliFirstRun.js +36 -0
- package/dist/lib/cliFirstRun.js.map +1 -0
- package/dist/lib/client.d.ts +58 -28
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +361 -62
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/compose-wrapup-view.d.ts +66 -0
- package/dist/lib/compose-wrapup-view.d.ts.map +1 -0
- package/dist/lib/compose-wrapup-view.js +39 -0
- package/dist/lib/compose-wrapup-view.js.map +1 -0
- package/dist/lib/config.d.ts +147 -6
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +377 -73
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/configResult.d.ts +110 -0
- package/dist/lib/configResult.d.ts.map +1 -0
- package/dist/lib/configResult.js +189 -0
- package/dist/lib/configResult.js.map +1 -0
- package/dist/lib/conflictResolution.d.ts +37 -0
- package/dist/lib/conflictResolution.d.ts.map +1 -0
- package/dist/lib/conflictResolution.js +29 -0
- package/dist/lib/conflictResolution.js.map +1 -0
- package/dist/lib/connectKeyLabel.d.ts +9 -0
- package/dist/lib/connectKeyLabel.d.ts.map +1 -0
- package/dist/lib/connectKeyLabel.js +12 -0
- package/dist/lib/connectKeyLabel.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 +51 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +90 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/conversation.d.ts +48 -0
- package/dist/lib/conversation.d.ts.map +1 -0
- package/dist/lib/conversation.js +136 -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.d.ts +23 -0
- package/dist/lib/deployment.d.ts.map +1 -0
- package/dist/lib/deployment.js +78 -0
- package/dist/lib/deployment.js.map +1 -0
- package/dist/lib/deployment.test.d.ts +5 -0
- package/dist/lib/deployment.test.d.ts.map +1 -0
- package/dist/lib/deployment.test.js +73 -0
- package/dist/lib/deployment.test.js.map +1 -0
- 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 +153 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +158 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/format.d.ts +10 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +27 -0
- package/dist/lib/format.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 +124 -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.d.ts +7 -0
- package/dist/lib/glossary.d.ts.map +1 -0
- package/dist/lib/glossary.js +12 -0
- package/dist/lib/glossary.js.map +1 -0
- 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 +61 -0
- package/dist/lib/kernelEnvelope.d.ts.map +1 -0
- package/dist/lib/kernelEnvelope.js +98 -0
- package/dist/lib/kernelEnvelope.js.map +1 -0
- package/dist/lib/keyResultLines.d.ts +27 -0
- package/dist/lib/keyResultLines.d.ts.map +1 -0
- package/dist/lib/keyResultLines.js +32 -0
- package/dist/lib/keyResultLines.js.map +1 -0
- package/dist/lib/limits.d.ts +88 -0
- package/dist/lib/limits.d.ts.map +1 -0
- package/dist/lib/limits.js +141 -0
- package/dist/lib/limits.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/nameFromText.d.ts +15 -0
- package/dist/lib/nameFromText.d.ts.map +1 -0
- package/dist/lib/nameFromText.js +36 -0
- package/dist/lib/nameFromText.js.map +1 -0
- 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/outcomeObjectiveLines.d.ts +34 -0
- package/dist/lib/outcomeObjectiveLines.d.ts.map +1 -0
- package/dist/lib/outcomeObjectiveLines.js +30 -0
- package/dist/lib/outcomeObjectiveLines.js.map +1 -0
- package/dist/lib/ownerLine.d.ts +90 -0
- package/dist/lib/ownerLine.d.ts.map +1 -0
- package/dist/lib/ownerLine.js +77 -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 +29 -0
- package/dist/lib/pinnedRole.d.ts.map +1 -0
- package/dist/lib/pinnedRole.js +115 -0
- package/dist/lib/pinnedRole.js.map +1 -0
- package/dist/lib/platformGlossary.d.ts +22 -0
- package/dist/lib/platformGlossary.d.ts.map +1 -0
- package/dist/lib/platformGlossary.js +26 -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 +36 -0
- package/dist/lib/previewBanner.js.map +1 -0
- package/dist/lib/priority.d.ts +64 -0
- package/dist/lib/priority.d.ts.map +1 -0
- package/dist/lib/priority.js +31 -0
- package/dist/lib/priority.js.map +1 -0
- package/dist/lib/privateFile.d.ts +13 -0
- package/dist/lib/privateFile.d.ts.map +1 -0
- package/dist/lib/privateFile.js +65 -0
- package/dist/lib/privateFile.js.map +1 -0
- package/dist/lib/privateFile.test.d.ts +2 -0
- package/dist/lib/privateFile.test.d.ts.map +1 -0
- package/dist/lib/privateFile.test.js +76 -0
- package/dist/lib/privateFile.test.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 +89 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +240 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/lib/projectConfig.d.ts +130 -0
- package/dist/lib/projectConfig.d.ts.map +1 -0
- package/dist/lib/projectConfig.js +252 -0
- package/dist/lib/projectConfig.js.map +1 -0
- package/dist/lib/prompts.d.ts +67 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +134 -0
- package/dist/lib/prompts.js.map +1 -0
- 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 +40 -0
- package/dist/lib/rate-limit.d.ts.map +1 -0
- package/dist/lib/rate-limit.js +89 -0
- package/dist/lib/rate-limit.js.map +1 -0
- package/dist/lib/readinessNotices.d.ts +2 -0
- package/dist/lib/readinessNotices.d.ts.map +1 -0
- package/dist/lib/readinessNotices.js +12 -0
- package/dist/lib/readinessNotices.js.map +1 -0
- package/dist/lib/reportedProfile.d.ts +18 -0
- package/dist/lib/reportedProfile.d.ts.map +1 -0
- package/dist/lib/reportedProfile.js +148 -0
- package/dist/lib/reportedProfile.js.map +1 -0
- package/dist/lib/restsOn.d.ts +33 -0
- package/dist/lib/restsOn.d.ts.map +1 -0
- package/dist/lib/restsOn.js +34 -0
- package/dist/lib/restsOn.js.map +1 -0
- package/dist/lib/routeCommandWords.d.ts +13 -0
- package/dist/lib/routeCommandWords.d.ts.map +1 -0
- package/dist/lib/routeCommandWords.js +27 -0
- package/dist/lib/routeCommandWords.js.map +1 -0
- package/dist/lib/ruleListRender.d.ts +315 -0
- package/dist/lib/ruleListRender.d.ts.map +1 -0
- package/dist/lib/ruleListRender.js +386 -0
- package/dist/lib/ruleListRender.js.map +1 -0
- package/dist/lib/runner.d.ts +11 -1
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +51 -11
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/seatRoster.d.ts +65 -0
- package/dist/lib/seatRoster.d.ts.map +1 -0
- package/dist/lib/seatRoster.js +41 -0
- package/dist/lib/seatRoster.js.map +1 -0
- package/dist/lib/seatSentence.d.ts +196 -0
- package/dist/lib/seatSentence.d.ts.map +1 -0
- package/dist/lib/seatSentence.js +214 -0
- package/dist/lib/seatSentence.js.map +1 -0
- package/dist/lib/session.d.ts +111 -4
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +318 -13
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/sessionBinding.d.ts +62 -0
- package/dist/lib/sessionBinding.d.ts.map +1 -0
- package/dist/lib/sessionBinding.js +126 -0
- package/dist/lib/sessionBinding.js.map +1 -0
- package/dist/lib/sessionNotices.d.ts +52 -0
- package/dist/lib/sessionNotices.d.ts.map +1 -0
- package/dist/lib/sessionNotices.js +124 -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 +53 -0
- package/dist/lib/sessionNotices.test.js.map +1 -0
- package/dist/lib/sessionOpen.d.ts +26 -0
- package/dist/lib/sessionOpen.d.ts.map +1 -0
- package/dist/lib/sessionOpen.js +56 -0
- package/dist/lib/sessionOpen.js.map +1 -0
- package/dist/lib/sessionStartCommands.d.ts +5 -0
- package/dist/lib/sessionStartCommands.d.ts.map +1 -0
- package/dist/lib/sessionStartCommands.js +12 -0
- package/dist/lib/sessionStartCommands.js.map +1 -0
- package/dist/lib/sessionStartWords.d.ts +18 -0
- package/dist/lib/sessionStartWords.d.ts.map +1 -0
- package/dist/lib/sessionStartWords.js +34 -0
- package/dist/lib/sessionStartWords.js.map +1 -0
- package/dist/lib/spineRungs.d.ts +44 -0
- package/dist/lib/spineRungs.d.ts.map +1 -0
- package/dist/lib/spineRungs.js +19 -0
- package/dist/lib/spineRungs.js.map +1 -0
- package/dist/lib/spineVerdictRead.d.ts +76 -0
- package/dist/lib/spineVerdictRead.d.ts.map +1 -0
- package/dist/lib/spineVerdictRead.js +76 -0
- package/dist/lib/spineVerdictRead.js.map +1 -0
- package/dist/lib/spinner.d.ts +27 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +76 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/spinner.test.d.ts +2 -0
- package/dist/lib/spinner.test.d.ts.map +1 -0
- package/dist/lib/spinner.test.js +39 -0
- package/dist/lib/spinner.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 +173 -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 +60 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +97 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/statusCategories.d.ts +168 -0
- package/dist/lib/statusCategories.d.ts.map +1 -0
- package/dist/lib/statusCategories.js +299 -0
- package/dist/lib/statusCategories.js.map +1 -0
- package/dist/lib/strip.d.ts +18 -0
- package/dist/lib/strip.d.ts.map +1 -1
- package/dist/lib/strip.js +62 -0
- package/dist/lib/strip.js.map +1 -1
- package/dist/lib/style.d.ts +109 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/lib/style.js +183 -0
- package/dist/lib/style.js.map +1 -0
- package/dist/lib/style.test.d.ts +7 -0
- package/dist/lib/style.test.d.ts.map +1 -0
- package/dist/lib/style.test.js +262 -0
- package/dist/lib/style.test.js.map +1 -0
- package/dist/lib/tokenConstants.d.ts +31 -0
- package/dist/lib/tokenConstants.d.ts.map +1 -0
- package/dist/lib/tokenConstants.js +34 -0
- package/dist/lib/tokenConstants.js.map +1 -0
- package/dist/lib/update-check.d.ts +51 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +261 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/upgrade-runner.d.ts +38 -0
- package/dist/lib/upgrade-runner.d.ts.map +1 -0
- package/dist/lib/upgrade-runner.js +140 -0
- package/dist/lib/upgrade-runner.js.map +1 -0
- package/dist/lib/workPackageList.d.ts +138 -0
- package/dist/lib/workPackageList.d.ts.map +1 -0
- package/dist/lib/workPackageList.js +139 -0
- package/dist/lib/workPackageList.js.map +1 -0
- package/dist/lib/workspace-probe.d.ts +28 -0
- package/dist/lib/workspace-probe.d.ts.map +1 -0
- package/dist/lib/workspace-probe.js +20 -0
- package/dist/lib/workspace-probe.js.map +1 -0
- package/dist/lib/workspaceNotice.d.ts +201 -0
- package/dist/lib/workspaceNotice.d.ts.map +1 -0
- package/dist/lib/workspaceNotice.js +346 -0
- package/dist/lib/workspaceNotice.js.map +1 -0
- package/dist/lib/workspaceVocabCache.d.ts +54 -0
- package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
- package/dist/lib/workspaceVocabCache.js +92 -0
- package/dist/lib/workspaceVocabCache.js.map +1 -0
- package/dist/registerEntryCommands.d.ts +18 -0
- package/dist/registerEntryCommands.d.ts.map +1 -0
- package/dist/registerEntryCommands.js +146 -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 +43 -0
- package/dist/registerRoleCommands.js.map +1 -0
- package/dist/registerTensionsCommands.d.ts +11 -0
- package/dist/registerTensionsCommands.d.ts.map +1 -0
- package/dist/registerTensionsCommands.js +28 -0
- package/dist/registerTensionsCommands.js.map +1 -0
- package/dist/scoreboard/diagnose.d.ts +133 -0
- package/dist/scoreboard/diagnose.d.ts.map +1 -0
- package/dist/scoreboard/diagnose.js +150 -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 +189 -0
- package/dist/scoreboard/diagnose.test.js.map +1 -0
- package/dist/scoreboard/floors.d.ts +34 -0
- package/dist/scoreboard/floors.d.ts.map +1 -0
- package/dist/scoreboard/floors.js +11 -0
- package/dist/scoreboard/floors.js.map +1 -0
- package/dist/served-doors.test.d.ts +2 -0
- package/dist/served-doors.test.d.ts.map +1 -0
- package/dist/served-doors.test.js +169 -0
- package/dist/served-doors.test.js.map +1 -0
- package/package.json +16 -8
- 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 -394
- package/dist/__tests__/audit.test.js.map +0 -1
- package/dist/__tests__/handshake.test.d.ts +0 -2
- package/dist/__tests__/handshake.test.d.ts.map +0 -1
- package/dist/__tests__/handshake.test.js +0 -187
- package/dist/__tests__/handshake.test.js.map +0 -1
- package/dist/__tests__/ingest.test.d.ts +0 -2
- package/dist/__tests__/ingest.test.d.ts.map +0 -1
- package/dist/__tests__/ingest.test.js +0 -185
- package/dist/__tests__/ingest.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 -139
- 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 -190
- package/dist/__tests__/proposals.test.js.map +0 -1
- package/dist/__tests__/repo-detect.test.d.ts +0 -2
- package/dist/__tests__/repo-detect.test.d.ts.map +0 -1
- package/dist/__tests__/repo-detect.test.js +0 -119
- package/dist/__tests__/repo-detect.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 -72
- 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 -188
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/brand-pack.d.ts +0 -2
- package/dist/commands/brand-pack.d.ts.map +0 -1
- package/dist/commands/brand-pack.js +0 -25
- package/dist/commands/brand-pack.js.map +0 -1
- package/dist/commands/handshake.d.ts +0 -18
- package/dist/commands/handshake.d.ts.map +0 -1
- package/dist/commands/handshake.js +0 -378
- package/dist/commands/handshake.js.map +0 -1
- package/dist/commands/ingest.d.ts +0 -14
- package/dist/commands/ingest.d.ts.map +0 -1
- package/dist/commands/ingest.js +0 -181
- package/dist/commands/ingest.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 -48
- 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 -37
- package/dist/commands/reject.js.map +0 -1
- package/dist/formatters/audit.d.ts +0 -46
- 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/handshake.d.ts +0 -17
- package/dist/formatters/handshake.d.ts.map +0 -1
- package/dist/formatters/handshake.js +0 -51
- package/dist/formatters/handshake.js.map +0 -1
- package/dist/formatters/promote.d.ts +0 -29
- package/dist/formatters/promote.d.ts.map +0 -1
- package/dist/formatters/promote.js +0 -38
- 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/adapters.d.ts +0 -10
- package/dist/generators/adapters.d.ts.map +0 -1
- package/dist/generators/adapters.js +0 -102
- package/dist/generators/adapters.js.map +0 -1
- package/dist/generators/briefing-md.d.ts +0 -8
- package/dist/generators/briefing-md.d.ts.map +0 -1
- package/dist/generators/briefing-md.js +0 -51
- package/dist/generators/briefing-md.js.map +0 -1
- package/dist/generators/context-md.d.ts +0 -8
- package/dist/generators/context-md.d.ts.map +0 -1
- package/dist/generators/context-md.js +0 -123
- package/dist/generators/context-md.js.map +0 -1
- package/dist/generators/portable-knowledge.d.ts +0 -72
- package/dist/generators/portable-knowledge.d.ts.map +0 -1
- package/dist/generators/portable-knowledge.js +0 -246
- package/dist/generators/portable-knowledge.js.map +0 -1
- package/dist/generators/portable-knowledge.test.d.ts +0 -2
- package/dist/generators/portable-knowledge.test.d.ts.map +0 -1
- package/dist/generators/portable-knowledge.test.js +0 -399
- package/dist/generators/portable-knowledge.test.js.map +0 -1
- package/dist/lib/repo-detect.d.ts +0 -14
- package/dist/lib/repo-detect.d.ts.map +0 -1
- package/dist/lib/repo-detect.js +0 -58
- package/dist/lib/repo-detect.js.map +0 -1
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pb update — verify
|
|
2
|
+
* pb update — verify kernelCallWithSession sequence and args.
|
|
3
3
|
* TEN-341 test contract: happy path, no session, empty entryId.
|
|
4
4
|
*/
|
|
5
5
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
6
6
|
import { runUpdate } from '../commands/update.js';
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
import { CLIError, ErrorCode } from '../lib/errors.js';
|
|
8
|
+
import { isJsonMode } from '../lib/runner.js';
|
|
9
|
+
const mockIsJsonMode = vi.mocked(isJsonMode);
|
|
10
|
+
const kernelCallWithSessionMock = vi.fn();
|
|
11
|
+
const kernelCallMock = vi.fn();
|
|
9
12
|
vi.mock('../lib/client.js', () => ({
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
|
|
14
|
+
kernelCall: (...args) => kernelCallMock(...args),
|
|
12
15
|
// McpError exported so update.ts can import the type (not used at runtime in tests).
|
|
13
16
|
McpError: class McpError extends Error {
|
|
14
17
|
details;
|
|
@@ -35,9 +38,10 @@ function makeMcpError(message, code, details) {
|
|
|
35
38
|
vi.mock('../lib/config.js', () => ({
|
|
36
39
|
getConfigOrGuide: vi.fn(() => Promise.resolve({ apiKey: 'pb_sk_test', siteUrl: 'https://test.convex.site' })),
|
|
37
40
|
}));
|
|
38
|
-
//
|
|
41
|
+
// Defaults to pretty mode so formatUpdateReceipt output is tested (not JSON); individual
|
|
42
|
+
// tests override with mockIsJsonMode.mockReturnValue(true) to exercise the JSON branch.
|
|
39
43
|
vi.mock('../lib/runner.js', () => ({
|
|
40
|
-
isJsonMode: () => false,
|
|
44
|
+
isJsonMode: vi.fn(() => false),
|
|
41
45
|
}));
|
|
42
46
|
// Session mock — controlled per test
|
|
43
47
|
let mockSession = { sessionId: 'sess-test' };
|
|
@@ -49,7 +53,7 @@ describe('runUpdate', () => {
|
|
|
49
53
|
vi.clearAllMocks();
|
|
50
54
|
mockSession = { sessionId: 'sess-test' };
|
|
51
55
|
// BET-192: updateEntry returns warnings + normalization breakdown (symmetric with createEntry)
|
|
52
|
-
|
|
56
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
53
57
|
id: 'j571abc123def456',
|
|
54
58
|
warnings: [],
|
|
55
59
|
normalization: { remapped: {}, rejected: [], accepted: [] },
|
|
@@ -57,7 +61,7 @@ describe('runUpdate', () => {
|
|
|
57
61
|
validationWarnings: [],
|
|
58
62
|
});
|
|
59
63
|
// Post-update refresh: default to returning a minimal entry.
|
|
60
|
-
|
|
64
|
+
kernelCallMock.mockResolvedValue({
|
|
61
65
|
entryId: 'BET-151',
|
|
62
66
|
name: 'Test Entry',
|
|
63
67
|
status: 'active',
|
|
@@ -71,8 +75,9 @@ describe('runUpdate', () => {
|
|
|
71
75
|
note: 'Updated description',
|
|
72
76
|
});
|
|
73
77
|
writeSpy.mockRestore();
|
|
74
|
-
expect(
|
|
78
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
75
79
|
entryId: 'BET-151',
|
|
80
|
+
changedBy: 'agent:sess-test',
|
|
76
81
|
data: { description: 'new description' },
|
|
77
82
|
changeNote: 'Updated description',
|
|
78
83
|
});
|
|
@@ -82,17 +87,64 @@ describe('runUpdate', () => {
|
|
|
82
87
|
await runUpdate({
|
|
83
88
|
entryId: 'TEN-703',
|
|
84
89
|
name: 'New name',
|
|
85
|
-
status: '
|
|
90
|
+
status: 'archived',
|
|
86
91
|
note: 'Resolved',
|
|
87
92
|
});
|
|
88
93
|
writeSpy.mockRestore();
|
|
89
|
-
expect(
|
|
94
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
90
95
|
entryId: 'TEN-703',
|
|
96
|
+
changedBy: 'agent:sess-test',
|
|
91
97
|
name: 'New name',
|
|
92
|
-
status: '
|
|
98
|
+
status: 'archived',
|
|
93
99
|
changeNote: 'Resolved',
|
|
94
100
|
});
|
|
95
101
|
});
|
|
102
|
+
// T8 (TASK-393, WP-779): --status is validated client-side against the generated write
|
|
103
|
+
// vocabulary (kernel/entries/statusCategories.ts) before the round trip.
|
|
104
|
+
it('refuses a legacy status word via --status', async () => {
|
|
105
|
+
const err = await runUpdate({ entryId: 'TEN-703', status: 'active' }).catch((e) => e);
|
|
106
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
107
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
108
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
it('refuses an unknown status word via --status', async () => {
|
|
111
|
+
const err = await runUpdate({ entryId: 'TEN-703', status: 'not-a-real-status' }).catch((e) => e);
|
|
112
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
113
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
114
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
115
|
+
});
|
|
116
|
+
// Round-1 review (Codex P2, PRRT_kwDORS4ils6mPBU8): `--status ""` is PROVIDED but blank, not
|
|
117
|
+
// ABSENT — a truthiness check let it skip the vocabulary check entirely and silently drop the
|
|
118
|
+
// status while other fields still applied (same class of bug PR #622 already fixed for --type).
|
|
119
|
+
it('refuses a blank --status "" instead of silently dropping it', async () => {
|
|
120
|
+
const err = await runUpdate({ entryId: 'TEN-703', status: '', name: 'New name' }).catch((e) => e);
|
|
121
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
122
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
123
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
124
|
+
});
|
|
125
|
+
it('passes workflowStatus as root-level arg when provided', async () => {
|
|
126
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
127
|
+
await runUpdate({
|
|
128
|
+
entryId: 'BET-271',
|
|
129
|
+
workflowStatus: 'shipped',
|
|
130
|
+
});
|
|
131
|
+
writeSpy.mockRestore();
|
|
132
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
133
|
+
entryId: 'BET-271',
|
|
134
|
+
changedBy: 'agent:sess-test',
|
|
135
|
+
workflowStatus: 'shipped',
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
// SHOULD-FIX 4 (fix round): `--workflow-status` alone applied nothing the OLD receipt's field
|
|
139
|
+
// set could name (it only ever checked name/status) — pre-fix this printed "Updated BET-271: "
|
|
140
|
+
// with an empty list for a write that genuinely succeeded.
|
|
141
|
+
it('workflowStatus alone produces a non-empty receipt naming it (SHOULD-FIX 4)', async () => {
|
|
142
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
143
|
+
await runUpdate({ entryId: 'BET-271', workflowStatus: 'shipped' });
|
|
144
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
145
|
+
writeSpy.mockRestore();
|
|
146
|
+
expect(output).toContain('Updated BET-271: workflowStatus → shipped');
|
|
147
|
+
});
|
|
96
148
|
it('handles --field values containing = signs', async () => {
|
|
97
149
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
98
150
|
await runUpdate({
|
|
@@ -100,48 +152,42 @@ describe('runUpdate', () => {
|
|
|
100
152
|
field: ['rationale=a=b=c'],
|
|
101
153
|
});
|
|
102
154
|
writeSpy.mockRestore();
|
|
103
|
-
expect(
|
|
155
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
104
156
|
entryId: 'DEC-264',
|
|
157
|
+
changedBy: 'agent:sess-test',
|
|
105
158
|
data: { rationale: 'a=b=c' },
|
|
106
159
|
});
|
|
107
160
|
});
|
|
108
|
-
it('
|
|
161
|
+
it('prints the kernel lines for a draft that still lacks a required field, as sent', async () => {
|
|
162
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
163
|
+
id: 'j571abc123def456', warnings: [], normalization: { remapped: {}, rejected: [], accepted: ['body'] }, normalizationWarnings: [], validationWarnings: [],
|
|
164
|
+
missingFieldLines: ['Add a Done When item before accepting.', 'pb update TASK-9 -f doneWhen="<item>"'],
|
|
165
|
+
});
|
|
166
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
167
|
+
await runUpdate({ entryId: 'TASK-9', field: ['body=new text'] });
|
|
168
|
+
const out = writeSpy.mock.calls.map(([chunk]) => String(chunk)).join('');
|
|
169
|
+
writeSpy.mockRestore();
|
|
170
|
+
expect(out).toContain('Add a Done When item before accepting.\npb update TASK-9 -f doneWhen="<item>"\n');
|
|
171
|
+
});
|
|
172
|
+
it('throws CLIError with no active session', async () => {
|
|
109
173
|
mockSession = null;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
expect(
|
|
116
|
-
expect(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow('exit');
|
|
124
|
-
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
125
|
-
expect(mcpCallWithSessionMock).not.toHaveBeenCalled();
|
|
126
|
-
exitSpy.mockRestore();
|
|
127
|
-
stderrSpy.mockRestore();
|
|
128
|
-
});
|
|
129
|
-
it('exits 1 when nothing to update', async () => {
|
|
130
|
-
const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => { throw new Error('exit'); });
|
|
131
|
-
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
132
|
-
await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow('exit');
|
|
133
|
-
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
134
|
-
const stderrOutput = stderrSpy.mock.calls.map(c => String(c[0])).join('');
|
|
135
|
-
expect(stderrOutput).toContain('Nothing to update');
|
|
136
|
-
expect(mcpCallWithSessionMock).not.toHaveBeenCalled();
|
|
137
|
-
exitSpy.mockRestore();
|
|
138
|
-
stderrSpy.mockRestore();
|
|
174
|
+
await expect(runUpdate({ entryId: 'BET-151', field: ['x=1'] })).rejects.toThrow(CLIError);
|
|
175
|
+
await expect(runUpdate({ entryId: 'BET-151', field: ['x=1'] })).rejects.toThrow('No active session');
|
|
176
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
177
|
+
});
|
|
178
|
+
it('throws CLIError with empty entryId', async () => {
|
|
179
|
+
await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow(CLIError);
|
|
180
|
+
await expect(runUpdate({ entryId: ' ', field: ['x=1'] })).rejects.toThrow('Entry ID is required');
|
|
181
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
182
|
+
});
|
|
183
|
+
it('throws CLIError when nothing to update', async () => {
|
|
184
|
+
await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow(CLIError);
|
|
185
|
+
await expect(runUpdate({ entryId: 'BET-151' })).rejects.toThrow('Nothing to update');
|
|
186
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled();
|
|
139
187
|
});
|
|
140
188
|
// ── Structured validation error tests ────────────────────────────────────
|
|
141
|
-
it('
|
|
142
|
-
|
|
143
|
-
const stderrSpy = vi.spyOn(process.stderr, 'write').mockImplementation(() => true);
|
|
144
|
-
mcpCallWithSessionMock.mockRejectedValue(makeMcpError("Entry data validation failed: Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'. Fix the values and try again.", 'VALIDATION_FAILED', [{
|
|
189
|
+
it('throws CLIError with structured select field error message', async () => {
|
|
190
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError("Entry data validation failed: Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'. Fix the values and try again.", 'VALIDATION_FAILED', [{
|
|
145
191
|
fieldKey: 'appetite',
|
|
146
192
|
fieldLabel: 'appetite',
|
|
147
193
|
invalidValue: 'Small Batch',
|
|
@@ -149,45 +195,144 @@ describe('runUpdate', () => {
|
|
|
149
195
|
errorType: 'invalid_option',
|
|
150
196
|
message: "Field \"appetite\" must be one of: small, medium, large. Got: 'Small Batch'",
|
|
151
197
|
}]));
|
|
152
|
-
await
|
|
153
|
-
expect(
|
|
154
|
-
|
|
155
|
-
expect(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
198
|
+
const err = await runUpdate({ entryId: 'BET-151', field: ['appetite=Small Batch'] }).catch((e) => e);
|
|
199
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
200
|
+
expect(err.message).toContain("Field 'appetite' must be one of: small, medium, large");
|
|
201
|
+
expect(err.message).toContain("Got: 'Small Batch'");
|
|
202
|
+
});
|
|
203
|
+
it('keeps a session refusal as the session refusal it is, never a validation failure', async () => {
|
|
204
|
+
const refusal = Object.assign(makeMcpError('Session [sess-test] stopped and is closed. Start a new session.', 'SESSION_ORPHANED'), {
|
|
205
|
+
category: 'session', guidance: 'Run `pb session start` first.',
|
|
206
|
+
});
|
|
207
|
+
kernelCallWithSessionMock.mockRejectedValue(refusal);
|
|
208
|
+
const err = await runUpdate({ entryId: 'BET-151', field: ['appetite=small'] }).catch((e) => e);
|
|
209
|
+
expect(err).toBe(refusal);
|
|
210
|
+
});
|
|
211
|
+
// TASK-1247, TASK-1250 (DEC-2275): the why judge's refusal of an edited decision why names its own fix, so it prints as the kernel wrote it, with no Next.
|
|
212
|
+
it('prints the why judge refusal of an edited why unchanged', async () => {
|
|
213
|
+
const sentence = 'Not saved: the why does not say why. Name the reason this is the choice, not what it is.';
|
|
214
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError(sentence, 'VALIDATION_FAILED'));
|
|
215
|
+
const err = await runUpdate({ entryId: 'DEC-1', field: ['why=Because it is better.'] }).catch((e) => e);
|
|
216
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
217
|
+
expect(err.message).toBe(sentence);
|
|
218
|
+
expect(err.guidance).toBeUndefined();
|
|
219
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', expect.objectContaining({ entryId: 'DEC-1', data: { why: 'Because it is better.' } }));
|
|
220
|
+
});
|
|
221
|
+
it('throws CLIError with plain error message when no structured details', async () => {
|
|
222
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Entry not found.', 'NOT_FOUND'));
|
|
223
|
+
const err = await runUpdate({ entryId: 'BET-999', field: ['x=1'] }).catch((e) => e);
|
|
224
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
225
|
+
expect(err.message).toContain('Entry not found.');
|
|
226
|
+
});
|
|
227
|
+
it('a refused role retire prints the kernel sentence and the CLI next steps from its ids', async () => {
|
|
228
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Builder is still held by Preview Real Dev and Ann. Unseat each holder first.', 'VALIDATION_FAILED', [{ roleRetire: { roleId: 'ROL-7', holderPersonIds: ['PER-1', 'PER-2'] } }]));
|
|
229
|
+
const held = await runUpdate({ entryId: 'ROL-7', status: 'archived', archiveIntent: 'resolve', note: 'merged' }).catch((e) => e);
|
|
230
|
+
expect(held.message).toBe('Builder is still held by Preview Real Dev and Ann. Unseat each holder first.');
|
|
231
|
+
expect(held.guidance).toBe('Next: pb role unseat ROL-7 --person PER-1\nNext: pb role unseat ROL-7 --person PER-2');
|
|
232
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError('Builder still owns at least 1,019 open items. Move its open work to another role first.', 'VALIDATION_FAILED', [{ roleRetire: { roleId: 'ROL-7', openItems: 1019 } }]));
|
|
233
|
+
const open = await runUpdate({ entryId: 'ROL-7', status: 'archived', archiveIntent: 'resolve', note: 'merged' }).catch((e) => e);
|
|
234
|
+
expect(open.guidance).toBe('Next: pb entry own --from-role ROL-7 --to-role <role>');
|
|
235
|
+
});
|
|
236
|
+
// TASK-1163 (DEC-2293): a key result with live work packages; pb entry resolve and discard relay through runUpdate.
|
|
237
|
+
it('a refused close of a spine parent prints the kernel sentence and both Next lines: the replace and the re-home', async () => {
|
|
238
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError('2 live work packages still hang on this key result. Replace it to move them, or re-home each one first.', 'VALIDATION_FAILED', [
|
|
239
|
+
{ spineNext: { action: 'accept', entryId: '<NEW-KEY-RESULT-ID>', replaces: 'KR-1' } }, { spineNext: { action: 'relate', from: 'WP-1', type: 'validates', toKind: 'key_result' } }
|
|
240
|
+
]));
|
|
241
|
+
for (const args of [{ workflowStatus: 'cancelled' }, { status: 'archived', archiveIntent: 'resolve' }, { status: 'archived', archiveIntent: 'discard' }]) {
|
|
242
|
+
const err = await runUpdate({ entryId: 'KR-1', ...args }).catch((e) => e);
|
|
243
|
+
expect(err.message).toBe('2 live work packages still hang on this key result. Replace it to move them, or re-home each one first.');
|
|
244
|
+
expect(err.guidance).toBe('Next: pb entry accept <NEW-KEY-RESULT-ID> --replaces KR-1 --reason "<why>"\nNext: pb relate WP-1 validates <KEY-RESULT-ID>');
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
it('preserves a server authority refusal as machine-readable AUTH_DENIED', async () => {
|
|
248
|
+
kernelCallWithSessionMock.mockRejectedValue(makeMcpError('This record belongs to another team.', 'AUTHZ_PERMISSION_DENIED'));
|
|
249
|
+
const err = await runUpdate({ entryId: 'WP-OTHER-TEAM', field: ['description=no'] }).catch((e) => e);
|
|
250
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
251
|
+
expect(err.code).toBe(ErrorCode.AUTH_DENIED);
|
|
252
|
+
expect(err.category).toBe('auth');
|
|
253
|
+
});
|
|
254
|
+
it('preserves a returned organisational refusal and its truthful next action', async () => {
|
|
255
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
256
|
+
outcome: 'refused',
|
|
257
|
+
refusal: {
|
|
258
|
+
category: 'auth',
|
|
259
|
+
code: 'role_not_owner',
|
|
260
|
+
reason: 'This person does not hold this record’s exact owning role in its owning team.',
|
|
261
|
+
requiredAction: 'Route this change to a holder of the record’s exact owning role, or ask the relevant Team Lead to change its ownership.',
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
const err = await runUpdate({ entryId: 'WP-OTHER-TEAM', field: ['description=no'] }).catch((e) => e);
|
|
265
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
266
|
+
expect(err.code).toBe(ErrorCode.AUTH_DENIED);
|
|
267
|
+
expect(err.category).toBe('auth');
|
|
268
|
+
expect(err.guidance).toBe('Route this change to a holder of the record’s exact owning role, or ask the relevant Team Lead to change its ownership.');
|
|
269
|
+
});
|
|
270
|
+
it('a returned refusal naming the deciding role ends with the line that asks that role', async () => {
|
|
271
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
272
|
+
outcome: 'refused',
|
|
273
|
+
refusal: {
|
|
274
|
+
category: 'auth', code: 'role_not_owner', reason: 'This record is decided by Team Lead.', requiredAction: 'This record is decided by Team Lead; ask Ann.',
|
|
275
|
+
routeTarget: { teamEntryId: 'team1', roleEntryId: 'role1', personIds: ['p1'] }, decidingRoleRef: 'ROL-1',
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
const err = await runUpdate({ entryId: 'VIS-1', field: ['body=no'] }).catch((e) => e);
|
|
279
|
+
expect(err.guidance).toBe('This record is decided by Team Lead; ask Ann.\nNext: pb question create "<your ask>" --to-role ROL-1');
|
|
280
|
+
});
|
|
281
|
+
it('keeps a returned coherency refusal classified as validation', async () => {
|
|
282
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
283
|
+
outcome: 'refused',
|
|
284
|
+
refusal: { code: 'COHERENCY_REFUSED', reason: 'This entry links to nothing it serves. Link it to what it serves, or answer why it stands alone.', fix: 'link', routes: { link: {}, acknowledge: {}, override: {} } },
|
|
285
|
+
});
|
|
286
|
+
const err = await runUpdate({ entryId: 'WP-UNLINKED', field: ['description=no'] }).catch((e) => e);
|
|
287
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
288
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
289
|
+
expect(err.category).toBe('validation');
|
|
290
|
+
// TASK-1038: pb's commands for the fix the kernel named, one per route the refusal offers.
|
|
291
|
+
expect(err.guidance).toBe([
|
|
292
|
+
'Next: pb relate WP-UNLINKED informs <what it serves>, then the same pb update.',
|
|
293
|
+
'Or answer: the same pb update with --acknowledge diverged --ack-reason "<why>".',
|
|
294
|
+
'Or keep it as it is: the same pb update with --override-reason "<why>".',
|
|
295
|
+
].join('\n'));
|
|
172
296
|
});
|
|
173
297
|
// ── Slice 3: post-update refresh ─────────────────────────────────────────
|
|
174
298
|
it('calls chain.getEntry after successful update and includes entry in output', async () => {
|
|
175
|
-
|
|
299
|
+
kernelCallMock.mockResolvedValue({
|
|
176
300
|
entryId: 'BET-151',
|
|
177
301
|
name: 'My Bet',
|
|
178
302
|
status: 'active',
|
|
179
303
|
});
|
|
304
|
+
// PR B: the receipt now reflects the SERVER's applied set, not the raw --field list — the
|
|
305
|
+
// default beforeEach mock's empty `accepted` (a realistic "nothing accepted" shape) would no
|
|
306
|
+
// longer produce a receipt here at all, so this happy-path fixture must say the server
|
|
307
|
+
// actually kept `description`, matching what the test claims to simulate.
|
|
308
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
309
|
+
id: 'j571abc123def456',
|
|
310
|
+
warnings: [],
|
|
311
|
+
normalization: { remapped: {}, rejected: [], accepted: ['description'] },
|
|
312
|
+
normalizationWarnings: [],
|
|
313
|
+
validationWarnings: [],
|
|
314
|
+
});
|
|
180
315
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
181
316
|
await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
|
|
182
317
|
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
183
318
|
writeSpy.mockRestore();
|
|
184
|
-
expect(
|
|
319
|
+
expect(kernelCallMock).toHaveBeenCalledWith('chain.getEntry', { entryId: 'BET-151' });
|
|
185
320
|
// Pretty output: receipt then entry block
|
|
186
321
|
expect(output).toContain('Updated BET-151');
|
|
322
|
+
expect(output).toContain('description');
|
|
187
323
|
expect(output).toContain('My Bet');
|
|
188
324
|
});
|
|
189
325
|
it('still shows update receipt when post-update getEntry fails (graceful degradation)', async () => {
|
|
190
|
-
|
|
326
|
+
kernelCallMock.mockRejectedValue(new Error('network error'));
|
|
327
|
+
// PR B: same fixture correction as above — the receipt is built from the server's applied
|
|
328
|
+
// set, so this "successful update, degraded refresh" scenario needs a realistic accepted list.
|
|
329
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
330
|
+
id: 'j571abc123def456',
|
|
331
|
+
warnings: [],
|
|
332
|
+
normalization: { remapped: {}, rejected: [], accepted: ['description'] },
|
|
333
|
+
normalizationWarnings: [],
|
|
334
|
+
validationWarnings: [],
|
|
335
|
+
});
|
|
191
336
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
192
337
|
await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
|
|
193
338
|
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
@@ -197,26 +342,150 @@ describe('runUpdate', () => {
|
|
|
197
342
|
// No crash — process still completes without error
|
|
198
343
|
});
|
|
199
344
|
// ── BET-192 / FEAT-575: Normalization warning tests ──────────────────────
|
|
200
|
-
|
|
201
|
-
|
|
345
|
+
// PR B (WP-757): every field this call named was rejected — normalization.accepted is
|
|
346
|
+
// correctly EMPTY here (the caller only ever asked for `foo`, and the server dropped it;
|
|
347
|
+
// `description` was never part of this call's own request, so a realistic server response
|
|
348
|
+
// never lists it as accepted). The receipt must print NOTHING — no false "Updated" line —
|
|
349
|
+
// only the rejection error.
|
|
350
|
+
it('every named field rejected: no "Updated" receipt at all, error only (BET-192, BET-271)', async () => {
|
|
351
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
202
352
|
id: 'j571abc123def456',
|
|
203
353
|
warnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
|
|
204
|
-
normalization: { remapped: {}, rejected: ['foo'], accepted: [
|
|
354
|
+
normalization: { remapped: {}, rejected: ['foo'], accepted: [] },
|
|
205
355
|
normalizationWarnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
|
|
206
356
|
validationWarnings: [],
|
|
207
357
|
});
|
|
358
|
+
kernelCallMock.mockResolvedValue({ entryId: 'BET-192', name: 'Bet', status: 'active', collectionSlug: 'bets' });
|
|
208
359
|
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
209
|
-
await runUpdate({
|
|
360
|
+
const err = await runUpdate({
|
|
210
361
|
entryId: 'BET-192',
|
|
211
362
|
field: ['foo=bar'],
|
|
363
|
+
}).catch((e) => e);
|
|
364
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
365
|
+
writeSpy.mockRestore();
|
|
366
|
+
// BET-271 S1: throws CLIError when fields rejected, with `pb fields` suggestion
|
|
367
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
368
|
+
expect(err.message).toContain('Fields rejected');
|
|
369
|
+
expect(err.message).toContain('foo');
|
|
370
|
+
// TEN-4332: the hint names the entry's collection, so the command it gives works.
|
|
371
|
+
expect(err.guidance).toBe('Run `pb fields bets` to see valid fields.');
|
|
372
|
+
// PR B: the receipt line never printed — nothing was actually applied.
|
|
373
|
+
expect(output).not.toContain('Updated BET-192');
|
|
374
|
+
expect(output).not.toContain('View: pb get');
|
|
375
|
+
});
|
|
376
|
+
// TASK-603 (WP-802, TEN-4332): a partial strip — one field kept, one dropped. The write landed, so the
|
|
377
|
+
// command exits 0: the receipt names ONLY the applied field and carries the kernel's
|
|
378
|
+
// "Unknown fields dropped" warning with a `pb fields <collection>` hint. Before this it threw
|
|
379
|
+
// "Fields rejected" after the write, and agents retried an update that had already landed.
|
|
380
|
+
it('partial strip: a landed update exits 0, names only the applied field and the dropped one in a warning', async () => {
|
|
381
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
382
|
+
id: 'j571abc123def456',
|
|
383
|
+
warnings: ['Unknown field "foo" dropped. Available fields: description, doneWhen'],
|
|
384
|
+
normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
|
|
385
|
+
normalizationWarnings: ['Unknown fields dropped: foo. Expected: description (string), doneWhen (string).'],
|
|
386
|
+
validationWarnings: [],
|
|
387
|
+
});
|
|
388
|
+
kernelCallMock.mockResolvedValue({ entryId: 'BET-192', name: 'Bet', status: 'active', collectionSlug: 'bets' });
|
|
389
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
390
|
+
const err = await runUpdate({
|
|
391
|
+
entryId: 'BET-192',
|
|
392
|
+
field: ['description=new value', 'foo=bar'],
|
|
393
|
+
}).catch((e) => e);
|
|
394
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
395
|
+
writeSpy.mockRestore();
|
|
396
|
+
expect(err).toBeUndefined();
|
|
397
|
+
expect(output).not.toContain('Fields rejected');
|
|
398
|
+
expect(output).toContain('Unknown fields dropped: foo.');
|
|
399
|
+
expect(output).toContain('Run `pb fields bets` to see valid fields.');
|
|
400
|
+
// The receipt WAS printed (something applied) and names the applied field.
|
|
401
|
+
expect(output).toContain('Updated BET-192');
|
|
402
|
+
expect(output).toContain('description');
|
|
403
|
+
// The dropped field never appears in the "Updated: ..." summary line — only in the warning.
|
|
404
|
+
const summaryLine = output.split('\n').find((line) => line.startsWith('Updated BET-192'));
|
|
405
|
+
expect(summaryLine).toBeDefined();
|
|
406
|
+
expect(summaryLine).not.toContain('foo');
|
|
407
|
+
});
|
|
408
|
+
it('partial strip in JSON mode: exits 0 with droppedFields naming only the dropped field (TEN-4332)', async () => {
|
|
409
|
+
mockIsJsonMode.mockReturnValue(true);
|
|
410
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
411
|
+
id: 'j571abc123def456',
|
|
412
|
+
warnings: [],
|
|
413
|
+
normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
|
|
414
|
+
normalizationWarnings: ['Unknown fields dropped: foo. Expected: description (string).'],
|
|
415
|
+
validationWarnings: [],
|
|
416
|
+
});
|
|
417
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
418
|
+
const err = await runUpdate({ entryId: 'BET-192', field: ['description=new', 'foo=bar'] }).catch((e) => e);
|
|
419
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
420
|
+
writeSpy.mockRestore();
|
|
421
|
+
mockIsJsonMode.mockReturnValue(false);
|
|
422
|
+
expect(err).toBeUndefined();
|
|
423
|
+
const parsed = JSON.parse(output.trim().split('\n').pop());
|
|
424
|
+
expect(parsed.droppedFields).toEqual(['foo']);
|
|
425
|
+
expect(parsed.fieldsRejected).toBe(true);
|
|
426
|
+
});
|
|
427
|
+
// PR B fix round (BLOCKING 1): a caller-supplied allowed system key (e.g. `source`) is a
|
|
428
|
+
// real applied change — it lands in kernel/entries/normalize.ts's `accepted`, not just
|
|
429
|
+
// `systemKeys`. Pre-fix, `pb update X --field source=manual` wrote the field but printed
|
|
430
|
+
// no receipt and exited 0 (silently), since accepted was empty for a call that only ever
|
|
431
|
+
// touched a system key.
|
|
432
|
+
it('a caller-supplied system key (source) is reported as applied, not silently dropped from the receipt', async () => {
|
|
433
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
434
|
+
id: 'j571abc123def456',
|
|
435
|
+
warnings: [],
|
|
436
|
+
normalization: { remapped: {}, rejected: [], accepted: ['source'] },
|
|
437
|
+
normalizationWarnings: [],
|
|
438
|
+
validationWarnings: [],
|
|
212
439
|
});
|
|
440
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
441
|
+
await runUpdate({ entryId: 'BET-193', field: ['source=manual'] });
|
|
213
442
|
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
214
443
|
writeSpy.mockRestore();
|
|
215
|
-
expect(output).toContain('
|
|
216
|
-
expect(output).toContain('
|
|
444
|
+
expect(output).toContain('Updated BET-193');
|
|
445
|
+
expect(output).toContain('source');
|
|
446
|
+
});
|
|
447
|
+
// ── WP-475 E1 (FEAT-1346): coaching verdict in the update receipt ─────────
|
|
448
|
+
it('renders the coaching section when the write response carries a verdict (WP-475 E1)', async () => {
|
|
449
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
450
|
+
id: 'j571abc123def456',
|
|
451
|
+
warnings: [],
|
|
452
|
+
normalization: { remapped: {}, rejected: [], accepted: ['description'] },
|
|
453
|
+
normalizationWarnings: [],
|
|
454
|
+
validationWarnings: [],
|
|
455
|
+
coaching: {
|
|
456
|
+
source: 'heuristic',
|
|
457
|
+
verdict: {
|
|
458
|
+
entryId: 'DEC-77',
|
|
459
|
+
canonicalKey: 'decision',
|
|
460
|
+
tier: 'assertive',
|
|
461
|
+
context: 'capture',
|
|
462
|
+
passed: false,
|
|
463
|
+
criteria: [
|
|
464
|
+
{ id: 'has_rationale', passed: true, weight: 3, hint: 'State why.', questionTemplate: 'Why this?' },
|
|
465
|
+
{ id: 'specificity', passed: false, weight: 2, hint: 'Be specific.', questionTemplate: 'What exactly?' },
|
|
466
|
+
],
|
|
467
|
+
weakest: { criterion: 'specificity', hint: 'Be specific.', questionTemplate: 'What exactly?' },
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
});
|
|
471
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
472
|
+
await runUpdate({ entryId: 'DEC-77', field: ['rationale=better reason'] });
|
|
473
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
474
|
+
writeSpy.mockRestore();
|
|
475
|
+
expect(output).toContain('Semantic quality: 1/2 criteria pass for decision (assertive tier)');
|
|
476
|
+
expect(output).toContain('[ ] specificity — Be specific.');
|
|
477
|
+
expect(output).toContain('Coaching hint: Be specific.');
|
|
478
|
+
expect(output).toContain('Consider: What exactly?');
|
|
479
|
+
});
|
|
480
|
+
it('renders no coaching section when the write response has none (backward compat)', async () => {
|
|
481
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
482
|
+
await runUpdate({ entryId: 'BET-151', field: ['description=new'] });
|
|
483
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
484
|
+
writeSpy.mockRestore();
|
|
485
|
+
expect(output).not.toContain('Semantic quality');
|
|
217
486
|
});
|
|
218
487
|
it('displays no warnings when all fields are valid (BET-192)', async () => {
|
|
219
|
-
|
|
488
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
220
489
|
id: 'j571abc123def456',
|
|
221
490
|
warnings: [],
|
|
222
491
|
normalization: { remapped: {}, rejected: [], accepted: ['description'] },
|
|
@@ -233,5 +502,254 @@ describe('runUpdate', () => {
|
|
|
233
502
|
expect(output).not.toContain('Normalization warnings');
|
|
234
503
|
expect(output).not.toContain('Validation warnings');
|
|
235
504
|
});
|
|
505
|
+
// #1026 round 3 (Codex, 2 P3 findings): the SHOULD-FIX 3 dedup filter this test used to pin
|
|
506
|
+
// drew a THIRD round of findings (comma-splitting the rewritten regex, and stale filter
|
|
507
|
+
// ordering) and is deleted outright, not patched again. Server normalizationWarnings now
|
|
508
|
+
// render verbatim and are not parsed (TEN-4332: a landed update exits 0, so the kernel's
|
|
509
|
+
// warning is the one statement of what was dropped).
|
|
510
|
+
it('renders every normalization warning verbatim, including one that repeats the rejected field', async () => {
|
|
511
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
512
|
+
id: 'j571abc123def456',
|
|
513
|
+
warnings: [],
|
|
514
|
+
normalization: { remapped: {}, rejected: ['foo'], accepted: ['description'] },
|
|
515
|
+
normalizationWarnings: [
|
|
516
|
+
'Unknown fields dropped: foo. Expected: description (string), doneWhen (string).',
|
|
517
|
+
'Remapped "desc" to "description".',
|
|
518
|
+
],
|
|
519
|
+
validationWarnings: [],
|
|
520
|
+
});
|
|
521
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
522
|
+
const err = await runUpdate({
|
|
523
|
+
entryId: 'BET-194',
|
|
524
|
+
field: ['description=new value', 'foo=bar'],
|
|
525
|
+
}).catch((e) => e);
|
|
526
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
527
|
+
writeSpy.mockRestore();
|
|
528
|
+
// TEN-4332: something applied, so the landed write exits 0.
|
|
529
|
+
expect(err).toBeUndefined();
|
|
530
|
+
expect(output).toContain('Unknown fields dropped: foo. Expected: description (string), doneWhen (string).');
|
|
531
|
+
expect(output).toContain('Remapped "desc" to "description"');
|
|
532
|
+
});
|
|
533
|
+
// #1026 round 3 (Codex P2): a platform-owned data key (e.g. `seederId` on a schemaless
|
|
534
|
+
// collection) is accepted by normalization, then reverted by preservePlatformOwnedDataKeys —
|
|
535
|
+
// the CLI must not print "Updated ... seederId" when nothing was actually written, and must
|
|
536
|
+
// name the revert instead (mirrors the MCP surface's own consumption of the server field).
|
|
537
|
+
it('excludes a server-reverted data key from the printed receipt and renders it under Fields reverted', async () => {
|
|
538
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
539
|
+
id: 'j571abc123def456',
|
|
540
|
+
warnings: [],
|
|
541
|
+
normalization: { remapped: {}, rejected: [], accepted: ['seederId', 'description'] },
|
|
542
|
+
normalizationWarnings: [],
|
|
543
|
+
validationWarnings: [],
|
|
544
|
+
revertedFields: ['seederId'],
|
|
545
|
+
});
|
|
546
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
547
|
+
await runUpdate({
|
|
548
|
+
entryId: 'BET-194',
|
|
549
|
+
field: ['description=new value', 'seederId=forged'],
|
|
550
|
+
});
|
|
551
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
552
|
+
writeSpy.mockRestore();
|
|
553
|
+
const summaryLine = output.split('\n').find((line) => line.startsWith('Updated'));
|
|
554
|
+
expect(summaryLine).not.toContain('seederId');
|
|
555
|
+
expect(summaryLine).toContain('description');
|
|
556
|
+
expect(output).toContain('⚠ Fields reverted (platform-owned or write-once): seederId');
|
|
557
|
+
});
|
|
558
|
+
// #1026 round 4 (Codex): a call whose ONLY named field was accepted then reverted, with no
|
|
559
|
+
// other arg applied, used to print nothing and exit 0 — a fully-failed write read as success.
|
|
560
|
+
it('all fields reverted, nothing else applied: fails with a "Fields reverted" line, not silent success', async () => {
|
|
561
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
562
|
+
id: 'j571abc123def456',
|
|
563
|
+
warnings: [],
|
|
564
|
+
normalization: { remapped: {}, rejected: [], accepted: ['seederId'] },
|
|
565
|
+
normalizationWarnings: [],
|
|
566
|
+
validationWarnings: [],
|
|
567
|
+
revertedFields: ['seederId'],
|
|
568
|
+
});
|
|
569
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
570
|
+
const err = await runUpdate({
|
|
571
|
+
entryId: 'BET-195',
|
|
572
|
+
field: ['seederId=forged'],
|
|
573
|
+
}).catch((e) => e);
|
|
574
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
575
|
+
writeSpy.mockRestore();
|
|
576
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
577
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
578
|
+
expect(err.message).toContain('Fields reverted');
|
|
579
|
+
expect(err.message).toContain('seederId');
|
|
580
|
+
expect(err.guidance).toBeTruthy();
|
|
581
|
+
// No false "Updated" line — nothing was actually written.
|
|
582
|
+
expect(output).not.toContain('Updated BET-195');
|
|
583
|
+
});
|
|
584
|
+
// #1026 round 4 (Codex): same all-reverted case in JSON mode — the receipt must carry
|
|
585
|
+
// ok:false rather than reading as a plain successful update.
|
|
586
|
+
it('all fields reverted in JSON mode: receipt carries ok:false and the call still fails', async () => {
|
|
587
|
+
mockIsJsonMode.mockReturnValueOnce(true);
|
|
588
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
589
|
+
id: 'j571abc123def456',
|
|
590
|
+
warnings: [],
|
|
591
|
+
normalization: { remapped: {}, rejected: [], accepted: ['seederId'] },
|
|
592
|
+
normalizationWarnings: [],
|
|
593
|
+
validationWarnings: [],
|
|
594
|
+
revertedFields: ['seederId'],
|
|
595
|
+
});
|
|
596
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
597
|
+
const err = await runUpdate({
|
|
598
|
+
entryId: 'BET-196',
|
|
599
|
+
field: ['seederId=forged'],
|
|
600
|
+
}).catch((e) => e);
|
|
601
|
+
const output = writeSpy.mock.calls.map(c => String(c[0])).join('');
|
|
602
|
+
writeSpy.mockRestore();
|
|
603
|
+
expect(err).toBeInstanceOf(CLIError);
|
|
604
|
+
expect(err.code).toBe(ErrorCode.VALIDATION_FAILED);
|
|
605
|
+
const parsed = JSON.parse(output.trim());
|
|
606
|
+
expect(parsed.ok).toBe(false);
|
|
607
|
+
expect(parsed.revertedFields).toEqual(['seederId']);
|
|
608
|
+
});
|
|
609
|
+
it('prints the kernel receipt first when a draft team is discarded with the drafts inside it (TASK-773)', async () => {
|
|
610
|
+
const receipt = 'Discarded Growth and the 4 drafts inside it (1 made by others).';
|
|
611
|
+
kernelCallWithSessionMock.mockResolvedValueOnce({
|
|
612
|
+
id: 'j571abc123def456', warnings: [], normalization: { remapped: {}, rejected: [], accepted: [] },
|
|
613
|
+
normalizationWarnings: [], validationWarnings: [], receipt,
|
|
614
|
+
});
|
|
615
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
616
|
+
await runUpdate({ entryId: 'TEAM-9', status: 'archived', archiveIntent: 'discard' });
|
|
617
|
+
const output = writeSpy.mock.calls.map((call) => String(call[0])).join('');
|
|
618
|
+
writeSpy.mockRestore();
|
|
619
|
+
expect(output).toContain(`\n${receipt}\n`);
|
|
620
|
+
expect(output.indexOf(receipt)).toBeLessThan(output.indexOf('TEAM-9', output.indexOf(receipt)));
|
|
621
|
+
});
|
|
622
|
+
});
|
|
623
|
+
/**
|
|
624
|
+
* S5 of WP-634 (TASK-45) — `pb update --type <key>` threads a canonicalKey reclassification
|
|
625
|
+
* through the EXISTING `chain.updateEntry` door (convex/agentKnowledge/entries.ts:1462, arg
|
|
626
|
+
* `canonicalKey` at :1471). No new server validation: the typeMap check, BR-55, the cardinality
|
|
627
|
+
* guards and the post-commit immutability guard (convex/lib/guards.ts:190-200) all already run
|
|
628
|
+
* there, and their refusal text must reach the operator verbatim rather than being reworded or
|
|
629
|
+
* pre-empted by a client-side copy of the rule.
|
|
630
|
+
*/
|
|
631
|
+
describe('runUpdate --type (S5 of WP-634, TASK-45)', () => {
|
|
632
|
+
// Its OWN seeding, mirroring the `runUpdate` suite above (PR #622 review). This block is a
|
|
633
|
+
// SIBLING of that suite, so its beforeEach never ran here: the tests passed only in a
|
|
634
|
+
// whole-file run, riding whatever mock state the previous suite's last test left behind, and
|
|
635
|
+
// failed in isolation with "Cannot read properties of undefined (reading 'outcome')" — a test
|
|
636
|
+
// that depends on execution order is not a test.
|
|
637
|
+
beforeEach(() => {
|
|
638
|
+
vi.clearAllMocks();
|
|
639
|
+
mockSession = { sessionId: 'sess-test' };
|
|
640
|
+
kernelCallWithSessionMock.mockResolvedValue({
|
|
641
|
+
id: 'j571abc123def456',
|
|
642
|
+
warnings: [],
|
|
643
|
+
normalization: { remapped: {}, rejected: [], accepted: [] },
|
|
644
|
+
normalizationWarnings: [],
|
|
645
|
+
validationWarnings: [],
|
|
646
|
+
});
|
|
647
|
+
kernelCallMock.mockResolvedValue({
|
|
648
|
+
entryId: 'INS-900',
|
|
649
|
+
name: 'Test Entry',
|
|
650
|
+
status: 'draft',
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
it('relays --type as the canonicalKey arg on chain.updateEntry', async () => {
|
|
654
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
655
|
+
await runUpdate({ entryId: 'INS-900', type: 'decision' });
|
|
656
|
+
writeSpy.mockRestore();
|
|
657
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
658
|
+
entryId: 'INS-900',
|
|
659
|
+
changedBy: 'agent:sess-test',
|
|
660
|
+
canonicalKey: 'decision',
|
|
661
|
+
});
|
|
662
|
+
});
|
|
663
|
+
it('counts as something to update on its own — --type alone is a valid write', async () => {
|
|
664
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
665
|
+
await expect(runUpdate({ entryId: 'INS-900', type: 'decision' })).resolves.toBeUndefined();
|
|
666
|
+
writeSpy.mockRestore();
|
|
667
|
+
// The point is that --type alone clears the "Nothing to update" arity check and actually
|
|
668
|
+
// reaches the write door — not a total call count, which includes other session traffic.
|
|
669
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', expect.objectContaining({
|
|
670
|
+
canonicalKey: 'decision',
|
|
671
|
+
}));
|
|
672
|
+
});
|
|
673
|
+
it('combines with other updates in one call', async () => {
|
|
674
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
675
|
+
await runUpdate({ entryId: 'INS-900', type: 'decision', name: 'Renamed', note: 'Reclassified' });
|
|
676
|
+
writeSpy.mockRestore();
|
|
677
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
678
|
+
entryId: 'INS-900',
|
|
679
|
+
changedBy: 'agent:sess-test',
|
|
680
|
+
name: 'Renamed',
|
|
681
|
+
canonicalKey: 'decision',
|
|
682
|
+
changeNote: 'Reclassified',
|
|
683
|
+
});
|
|
684
|
+
});
|
|
685
|
+
it('trims the value — a padded --type must not reach the server as an unmatched key', async () => {
|
|
686
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
687
|
+
await runUpdate({ entryId: 'INS-900', type: ' decision ' });
|
|
688
|
+
writeSpy.mockRestore();
|
|
689
|
+
expect(kernelCallWithSessionMock).toHaveBeenCalledWith('chain.updateEntry', {
|
|
690
|
+
entryId: 'INS-900',
|
|
691
|
+
changedBy: 'agent:sess-test',
|
|
692
|
+
canonicalKey: 'decision',
|
|
693
|
+
});
|
|
694
|
+
});
|
|
695
|
+
/**
|
|
696
|
+
* PROVIDED-but-blank must fail loudly, never be treated as ABSENT (PR #622 review). The
|
|
697
|
+
* whitespace case is the dangerous one: paired with another flag it used to report a
|
|
698
|
+
* successful rename while silently discarding the reclassification.
|
|
699
|
+
*/
|
|
700
|
+
it('refuses a whitespace-only --type instead of silently dropping it alongside another update', async () => {
|
|
701
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
702
|
+
await expect(runUpdate({ entryId: 'INS-900', name: 'Renamed', type: ' ' }))
|
|
703
|
+
.rejects.toThrow('--type was provided but empty.');
|
|
704
|
+
writeSpy.mockRestore();
|
|
705
|
+
expect(kernelCallWithSessionMock).not.toHaveBeenCalled(); // refused BEFORE any relay
|
|
706
|
+
});
|
|
707
|
+
it('refuses a whitespace-only --type on its own rather than reporting "Nothing to update"', async () => {
|
|
708
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
709
|
+
await expect(runUpdate({ entryId: 'INS-900', type: ' ' }))
|
|
710
|
+
.rejects.toThrow('--type was provided but empty.');
|
|
711
|
+
writeSpy.mockRestore();
|
|
712
|
+
});
|
|
713
|
+
it('refuses an empty-string --type', async () => {
|
|
714
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
715
|
+
await expect(runUpdate({ entryId: 'INS-900', type: '' }))
|
|
716
|
+
.rejects.toThrow('--type was provided but empty.');
|
|
717
|
+
writeSpy.mockRestore();
|
|
718
|
+
});
|
|
719
|
+
it('omits canonicalKey entirely when --type is not passed', async () => {
|
|
720
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
721
|
+
await runUpdate({ entryId: 'INS-900', name: 'Just a rename' });
|
|
722
|
+
writeSpy.mockRestore();
|
|
723
|
+
const args = kernelCallWithSessionMock.mock.calls[0][1];
|
|
724
|
+
expect(args).not.toHaveProperty('canonicalKey');
|
|
725
|
+
});
|
|
726
|
+
/**
|
|
727
|
+
* The two guard texts are the deliverable, so they must arrive UNREWORDED. The CLI must not
|
|
728
|
+
* carry its own copy of "committed entries cannot be retyped" or of BR-55 — a client-side
|
|
729
|
+
* pre-check would drift from the server rule and is exactly what "no new server-side
|
|
730
|
+
* validation, existing guard text verbatim" rules out.
|
|
731
|
+
*/
|
|
732
|
+
it('surfaces the post-commit immutability guard text verbatim', async () => {
|
|
733
|
+
const guardText = 'canonicalKey cannot be changed after an entry has been accepted. '
|
|
734
|
+
+ 'To reclassify, create a new entry and supersede this one.';
|
|
735
|
+
kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(guardText, 'VALIDATION_FAILED'));
|
|
736
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
737
|
+
await expect(runUpdate({ entryId: 'DEC-1', type: 'insight' })).rejects.toThrow(guardText);
|
|
738
|
+
writeSpy.mockRestore();
|
|
739
|
+
});
|
|
740
|
+
it('surfaces the BR-55 out-of-collection refusal verbatim', async () => {
|
|
741
|
+
const br55 = 'Vision and purpose entries must be in the strategy collection. This entry is in "insights".';
|
|
742
|
+
kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(br55, 'VALIDATION_FAILED'));
|
|
743
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
744
|
+
await expect(runUpdate({ entryId: 'INS-900', type: 'vision' })).rejects.toThrow(br55);
|
|
745
|
+
writeSpy.mockRestore();
|
|
746
|
+
});
|
|
747
|
+
it('surfaces the invalid-type refusal verbatim', async () => {
|
|
748
|
+
const invalid = 'Invalid canonical key "nonsense". Must be one of the 42 canonical types or null/undefined.';
|
|
749
|
+
kernelCallWithSessionMock.mockRejectedValueOnce(makeMcpError(invalid, 'VALIDATION_FAILED'));
|
|
750
|
+
const writeSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
751
|
+
await expect(runUpdate({ entryId: 'INS-900', type: 'nonsense' })).rejects.toThrow(invalid);
|
|
752
|
+
writeSpy.mockRestore();
|
|
753
|
+
});
|
|
236
754
|
});
|
|
237
755
|
//# sourceMappingURL=update.test.js.map
|