@productbrain/cli 0.1.0-beta.95 → 0.1.0-beta.958
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/dist/__tests__/audit.test.js +5 -0
- package/dist/__tests__/audit.test.js.map +1 -1
- package/dist/__tests__/authority-domains.test.js +3 -0
- package/dist/__tests__/authority-domains.test.js.map +1 -1
- 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__/config.test.js +272 -2
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/constants.test.js +6 -1
- package/dist/__tests__/constants.test.js.map +1 -1
- package/dist/__tests__/envelope-contract.test.js +29 -3
- package/dist/__tests__/envelope-contract.test.js.map +1 -1
- package/dist/__tests__/errors.test.js +1 -0
- package/dist/__tests__/errors.test.js.map +1 -1
- package/dist/__tests__/handshake-augment.test.d.ts +2 -0
- package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-augment.test.js +423 -0
- package/dist/__tests__/handshake-augment.test.js.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.js +207 -0
- package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
- package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
- package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-formatter.test.js +67 -0
- package/dist/__tests__/handshake-formatter.test.js.map +1 -0
- package/dist/__tests__/handshake-preview.test.js +566 -4
- package/dist/__tests__/handshake-preview.test.js.map +1 -1
- package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
- package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/handshake.e2e.test.js +1252 -0
- package/dist/__tests__/handshake.e2e.test.js.map +1 -0
- package/dist/__tests__/handshake.test.js +611 -2
- package/dist/__tests__/handshake.test.js.map +1 -1
- package/dist/__tests__/manifest.test.js +118 -1
- package/dist/__tests__/manifest.test.js.map +1 -1
- package/dist/__tests__/onboarding-path-b.test.js +4 -4
- package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
- package/dist/__tests__/orient.test.js +184 -7
- package/dist/__tests__/orient.test.js.map +1 -1
- package/dist/__tests__/perimeter.test.d.ts +2 -0
- package/dist/__tests__/perimeter.test.d.ts.map +1 -0
- package/dist/__tests__/perimeter.test.js +165 -0
- package/dist/__tests__/perimeter.test.js.map +1 -0
- package/dist/__tests__/personal-layer.test.d.ts +1 -2
- package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
- package/dist/__tests__/personal-layer.test.js +12 -48
- package/dist/__tests__/personal-layer.test.js.map +1 -1
- package/dist/__tests__/profiles.test.js +122 -7
- package/dist/__tests__/profiles.test.js.map +1 -1
- package/dist/__tests__/promote.test.js +71 -2
- package/dist/__tests__/promote.test.js.map +1 -1
- package/dist/__tests__/session-state-machine.test.js +45 -1
- package/dist/__tests__/session-state-machine.test.js.map +1 -1
- 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 +129 -0
- package/dist/__tests__/session-switch.test.js.map +1 -0
- package/dist/__tests__/setup-ingest.test.js +16 -0
- package/dist/__tests__/setup-ingest.test.js.map +1 -1
- 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 +187 -0
- package/dist/__tests__/skill-vocabulary.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 +56 -0
- package/dist/__tests__/update-check.test.js.map +1 -0
- 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 +42 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.js +534 -0
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
- package/dist/__tests__/workspace.test.js +32 -12
- package/dist/__tests__/workspace.test.js.map +1 -1
- package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
- package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
- package/dist/commands/__tests__/connect-handoff.test.js +111 -0
- package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
- package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
- package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
- package/dist/commands/__tests__/setup-state.test.js +194 -0
- package/dist/commands/__tests__/setup-state.test.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +46 -2
- package/dist/commands/admin/seed.d.ts.map +1 -1
- package/dist/commands/admin/seed.js +475 -33
- package/dist/commands/admin/seed.js.map +1 -1
- package/dist/commands/admin/seed.test.d.ts +5 -0
- package/dist/commands/admin/seed.test.d.ts.map +1 -1
- package/dist/commands/admin/seed.test.js +67 -2
- package/dist/commands/admin/seed.test.js.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js +117 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts +11 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.js +67 -0
- package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +30 -3
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/authority-domains.d.ts +25 -1
- package/dist/commands/authority-domains.d.ts.map +1 -1
- package/dist/commands/authority-domains.js +51 -4
- package/dist/commands/authority-domains.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +3 -2
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/codex-prep.d.ts +1 -0
- package/dist/commands/codex-prep.d.ts.map +1 -1
- package/dist/commands/codex-prep.js +10 -7
- package/dist/commands/codex-prep.js.map +1 -1
- 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 +44 -0
- package/dist/commands/connect-config.test.js.map +1 -0
- package/dist/commands/connect-context.d.ts +45 -0
- package/dist/commands/connect-context.d.ts.map +1 -0
- package/dist/commands/connect-context.js +64 -0
- package/dist/commands/connect-context.js.map +1 -0
- package/dist/commands/connect-context.test.d.ts +2 -0
- package/dist/commands/connect-context.test.d.ts.map +1 -0
- package/dist/commands/connect-context.test.js +110 -0
- package/dist/commands/connect-context.test.js.map +1 -0
- package/dist/commands/connect-handoff.d.ts +51 -0
- package/dist/commands/connect-handoff.d.ts.map +1 -0
- package/dist/commands/connect-handoff.js +70 -0
- package/dist/commands/connect-handoff.js.map +1 -0
- package/dist/commands/connect-integration.test.js +29 -12
- package/dist/commands/connect-integration.test.js.map +1 -1
- package/dist/commands/connect-screens.d.ts +6 -4
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +30 -19
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect.d.ts +21 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +65 -58
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect.test.js +17 -1
- package/dist/commands/connect.test.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +68 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +131 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/handshake.d.ts +194 -2
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +1563 -54
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/method.d.ts.map +1 -1
- package/dist/commands/method.js +3 -0
- package/dist/commands/method.js.map +1 -1
- package/dist/commands/orient.d.ts +52 -2
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +106 -4
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +1 -14
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +89 -72
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/promote.d.ts.map +1 -1
- package/dist/commands/promote.js +25 -2
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/relate.d.ts.map +1 -1
- package/dist/commands/relate.js +13 -0
- package/dist/commands/relate.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +51 -14
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup-audit.d.ts +59 -0
- package/dist/commands/setup-audit.d.ts.map +1 -0
- package/dist/commands/setup-audit.js +250 -0
- package/dist/commands/setup-audit.js.map +1 -0
- package/dist/commands/setup-detect-surfaces.d.ts +38 -0
- package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
- package/dist/commands/setup-detect-surfaces.js +76 -0
- package/dist/commands/setup-detect-surfaces.js.map +1 -0
- package/dist/commands/setup-ingest.d.ts.map +1 -1
- package/dist/commands/setup-ingest.js +4 -2
- package/dist/commands/setup-ingest.js.map +1 -1
- package/dist/commands/setup-state.d.ts +42 -0
- package/dist/commands/setup-state.d.ts.map +1 -0
- package/dist/commands/setup-state.js +93 -0
- package/dist/commands/setup-state.js.map +1 -0
- package/dist/commands/setup.d.ts +17 -9
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +52 -131
- package/dist/commands/setup.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 +89 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/whoami.d.ts +12 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +70 -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 +50 -0
- package/dist/commands/whoami.test.js.map +1 -0
- package/dist/commands/workspace.d.ts +23 -2
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +2 -2
- package/dist/commands/workspace.js.map +1 -1
- package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.js +227 -0
- package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
- package/dist/formatters/audit.d.ts +6 -0
- package/dist/formatters/audit.d.ts.map +1 -1
- package/dist/formatters/audit.js.map +1 -1
- package/dist/formatters/entry.d.ts +6 -0
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +30 -5
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/handshake.d.ts +19 -3
- package/dist/formatters/handshake.d.ts.map +1 -1
- package/dist/formatters/handshake.js +48 -13
- package/dist/formatters/handshake.js.map +1 -1
- package/dist/formatters/orient.d.ts +68 -4
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +97 -17
- package/dist/formatters/orient.js.map +1 -1
- package/dist/formatters/session.js +1 -1
- package/dist/formatters/session.js.map +1 -1
- package/dist/generators/adapters.js +2 -2
- package/dist/generators/boundary-manifest.d.ts +29 -0
- package/dist/generators/boundary-manifest.d.ts.map +1 -0
- package/dist/generators/boundary-manifest.js +183 -0
- package/dist/generators/boundary-manifest.js.map +1 -0
- package/dist/generators/boundary-manifest.test.d.ts +2 -0
- package/dist/generators/boundary-manifest.test.d.ts.map +1 -0
- package/dist/generators/boundary-manifest.test.js +91 -0
- package/dist/generators/boundary-manifest.test.js.map +1 -0
- package/dist/generators/context-md.js +6 -6
- package/dist/generators/context-md.js.map +1 -1
- package/dist/generators/manifest.d.ts +78 -0
- package/dist/generators/manifest.d.ts.map +1 -1
- package/dist/generators/manifest.js +125 -14
- package/dist/generators/manifest.js.map +1 -1
- package/dist/generators/portable-knowledge.d.ts +6 -12
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- package/dist/generators/portable-knowledge.js +2 -19
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/generators/region-projections.d.ts +18 -0
- package/dist/generators/region-projections.d.ts.map +1 -0
- package/dist/generators/region-projections.js +49 -0
- package/dist/generators/region-projections.js.map +1 -0
- package/dist/generators/region-projections.test.d.ts +2 -0
- package/dist/generators/region-projections.test.d.ts.map +1 -0
- package/dist/generators/region-projections.test.js +63 -0
- package/dist/generators/region-projections.test.js.map +1 -0
- package/dist/generators/region.d.ts +24 -0
- package/dist/generators/region.d.ts.map +1 -0
- package/dist/generators/region.js +87 -0
- package/dist/generators/region.js.map +1 -0
- package/dist/generators/region.test.d.ts +2 -0
- package/dist/generators/region.test.d.ts.map +1 -0
- package/dist/generators/region.test.js +126 -0
- package/dist/generators/region.test.js.map +1 -0
- package/dist/generators/surface-profiles.d.ts +1 -2
- package/dist/generators/surface-profiles.d.ts.map +1 -1
- package/dist/generators/surface-profiles.js.map +1 -1
- package/dist/index.js +142 -27
- package/dist/index.js.map +1 -1
- package/dist/lib/activation.d.ts.map +1 -1
- package/dist/lib/activation.js +3 -3
- package/dist/lib/activation.js.map +1 -1
- package/dist/lib/activation.test.js +3 -3
- package/dist/lib/activation.test.js.map +1 -1
- package/dist/lib/canonicalRefs.d.ts +98 -0
- package/dist/lib/canonicalRefs.d.ts.map +1 -1
- package/dist/lib/canonicalRefs.js +67 -0
- package/dist/lib/canonicalRefs.js.map +1 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +14 -4
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts +70 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +151 -11
- package/dist/lib/config.js.map +1 -1
- 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/constants.d.ts +2 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +3 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +3 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/normalizeMaterializedFilename.d.ts +28 -0
- package/dist/lib/normalizeMaterializedFilename.d.ts.map +1 -0
- package/dist/lib/normalizeMaterializedFilename.js +56 -0
- package/dist/lib/normalizeMaterializedFilename.js.map +1 -0
- package/dist/lib/normalizeMaterializedFilename.test.d.ts +16 -0
- package/dist/lib/normalizeMaterializedFilename.test.d.ts.map +1 -0
- package/dist/lib/normalizeMaterializedFilename.test.js +90 -0
- package/dist/lib/normalizeMaterializedFilename.test.js.map +1 -0
- package/dist/lib/onboarding-path-b.d.ts.map +1 -1
- package/dist/lib/onboarding-path-b.js +0 -1
- package/dist/lib/onboarding-path-b.js.map +1 -1
- package/dist/lib/onboarding-shared.d.ts +0 -1
- package/dist/lib/onboarding-shared.d.ts.map +1 -1
- package/dist/lib/onboarding-shared.js +1 -17
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/profiles.d.ts +3 -1
- package/dist/lib/profiles.d.ts.map +1 -1
- package/dist/lib/profiles.js +9 -6
- package/dist/lib/profiles.js.map +1 -1
- package/dist/lib/session.d.ts +10 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +14 -0
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/update-check.d.ts +20 -0
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +122 -21
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +21 -0
- package/dist/lib/upgrade-runner.d.ts.map +1 -0
- package/dist/lib/upgrade-runner.js +109 -0
- package/dist/lib/upgrade-runner.js.map +1 -0
- package/dist/lib/workspaceVocabCache.d.ts +60 -0
- package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
- package/dist/lib/workspaceVocabCache.js +98 -0
- package/dist/lib/workspaceVocabCache.js.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.js +189 -0
- package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.js +177 -0
- package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
- package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
- package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
- package/dist/setup/__tests__/state-machine.test.js +341 -0
- package/dist/setup/__tests__/state-machine.test.js.map +1 -0
- package/dist/setup/detect-surfaces.d.ts +21 -0
- package/dist/setup/detect-surfaces.d.ts.map +1 -0
- package/dist/setup/detect-surfaces.js +39 -0
- package/dist/setup/detect-surfaces.js.map +1 -0
- package/dist/setup/manifest-writer.d.ts +17 -0
- package/dist/setup/manifest-writer.d.ts.map +1 -0
- package/dist/setup/manifest-writer.js +153 -0
- package/dist/setup/manifest-writer.js.map +1 -0
- package/dist/setup/perimeter.d.ts +72 -0
- package/dist/setup/perimeter.d.ts.map +1 -0
- package/dist/setup/perimeter.js +128 -0
- package/dist/setup/perimeter.js.map +1 -0
- package/dist/setup/state-machine.d.ts +67 -0
- package/dist/setup/state-machine.d.ts.map +1 -0
- package/dist/setup/state-machine.js +124 -0
- package/dist/setup/state-machine.js.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.js +90 -0
- package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.js +55 -0
- package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
- package/dist/surfaces/adapter.d.ts +70 -0
- package/dist/surfaces/adapter.d.ts.map +1 -0
- package/dist/surfaces/adapter.js +2 -0
- package/dist/surfaces/adapter.js.map +1 -0
- package/dist/surfaces/adapters/claude.d.ts +3 -0
- package/dist/surfaces/adapters/claude.d.ts.map +1 -0
- package/dist/surfaces/adapters/claude.js +67 -0
- package/dist/surfaces/adapters/claude.js.map +1 -0
- package/dist/surfaces/adapters/codex.d.ts +3 -0
- package/dist/surfaces/adapters/codex.d.ts.map +1 -0
- package/dist/surfaces/adapters/codex.js +61 -0
- package/dist/surfaces/adapters/codex.js.map +1 -0
- package/dist/surfaces/adapters/copilot.d.ts +3 -0
- package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
- package/dist/surfaces/adapters/copilot.js +59 -0
- package/dist/surfaces/adapters/copilot.js.map +1 -0
- package/dist/surfaces/adapters/cursor.d.ts +3 -0
- package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
- package/dist/surfaces/adapters/cursor.js +78 -0
- package/dist/surfaces/adapters/cursor.js.map +1 -0
- package/dist/surfaces/registry.d.ts +58 -2
- package/dist/surfaces/registry.d.ts.map +1 -1
- package/dist/surfaces/registry.js +82 -7
- package/dist/surfaces/registry.js.map +1 -1
- package/dist/surfaces/telemetry.d.ts +17 -0
- package/dist/surfaces/telemetry.d.ts.map +1 -0
- package/dist/surfaces/telemetry.js +31 -0
- package/dist/surfaces/telemetry.js.map +1 -0
- package/package.json +3 -1
- package/dist/__tests__/setup.test.d.ts +0 -2
- package/dist/__tests__/setup.test.d.ts.map +0 -1
- package/dist/__tests__/setup.test.js +0 -141
- package/dist/__tests__/setup.test.js.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
- package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.js +0 -89
- package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
- package/dist/lib/onboarding-phases.d.ts +0 -9
- package/dist/lib/onboarding-phases.d.ts.map +0 -1
- package/dist/lib/onboarding-phases.js +0 -120
- package/dist/lib/onboarding-phases.js.map +0 -1
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { basename, dirname } from 'node:path';
|
|
3
|
+
import { CLIError, ErrorCode } from './errors.js';
|
|
4
|
+
import { UPGRADE_COMMAND } from './constants.js';
|
|
5
|
+
import { trackEvent } from './telemetry.js';
|
|
6
|
+
import { writeUpgradePendingSentinel } from './update-check.js';
|
|
7
|
+
function pathSegments(path) {
|
|
8
|
+
const segments = [];
|
|
9
|
+
let current = path;
|
|
10
|
+
while (current && current !== dirname(current)) {
|
|
11
|
+
segments.push(basename(current).toLowerCase());
|
|
12
|
+
current = dirname(current);
|
|
13
|
+
}
|
|
14
|
+
return segments;
|
|
15
|
+
}
|
|
16
|
+
export function detectInstallChannel(execPath = process.execPath, env = process.env) {
|
|
17
|
+
const ua = env.npm_config_user_agent?.toLowerCase() ?? '';
|
|
18
|
+
if (ua.startsWith('pnpm'))
|
|
19
|
+
return 'pnpm';
|
|
20
|
+
if (ua.startsWith('yarn'))
|
|
21
|
+
return 'yarn';
|
|
22
|
+
if (ua.startsWith('bun'))
|
|
23
|
+
return 'bun';
|
|
24
|
+
if (ua.startsWith('npm'))
|
|
25
|
+
return 'npm';
|
|
26
|
+
const segments = pathSegments(execPath);
|
|
27
|
+
if (segments.some((s) => s.includes('pnpm')))
|
|
28
|
+
return 'pnpm';
|
|
29
|
+
if (segments.some((s) => s.includes('yarn')))
|
|
30
|
+
return 'yarn';
|
|
31
|
+
if (segments.some((s) => s.includes('bun')))
|
|
32
|
+
return 'bun';
|
|
33
|
+
if (segments.some((s) => s.includes('homebrew') || s === 'brew' || s === 'cellar'))
|
|
34
|
+
return 'brew';
|
|
35
|
+
if (segments.some((s) => s.includes('npm') || s === 'node_modules'))
|
|
36
|
+
return 'npm';
|
|
37
|
+
return 'unknown';
|
|
38
|
+
}
|
|
39
|
+
export function buildUpgradeCommand(channel) {
|
|
40
|
+
switch (channel) {
|
|
41
|
+
case 'pnpm':
|
|
42
|
+
return { channel, command: 'pnpm', args: ['add', '-g', '@productbrain/cli@beta'], display: 'pnpm add -g @productbrain/cli@beta' };
|
|
43
|
+
case 'yarn':
|
|
44
|
+
return { channel, command: 'yarn', args: ['global', 'add', '@productbrain/cli@beta'], display: 'yarn global add @productbrain/cli@beta' };
|
|
45
|
+
case 'bun':
|
|
46
|
+
return { channel, command: 'bun', args: ['add', '-g', '@productbrain/cli@beta'], display: 'bun add -g @productbrain/cli@beta' };
|
|
47
|
+
case 'brew':
|
|
48
|
+
return { channel, command: 'brew', args: ['upgrade', 'productbrain'], display: 'brew upgrade productbrain' };
|
|
49
|
+
case 'npm':
|
|
50
|
+
case 'unknown':
|
|
51
|
+
return { channel, command: 'npm', args: ['install', '-g', '@productbrain/cli@beta'], display: UPGRADE_COMMAND };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function failureGuidance(message) {
|
|
55
|
+
const lower = message.toLowerCase();
|
|
56
|
+
if (lower.includes('eacces') || lower.includes('permission denied')) {
|
|
57
|
+
return 'Permission denied during global install. Use a Node version manager, fix the global npm prefix, or rerun the install command with the permissions your system requires.';
|
|
58
|
+
}
|
|
59
|
+
if (process.platform === 'win32' && (lower.includes('eperm') || lower.includes('busy') || lower.includes('locked'))) {
|
|
60
|
+
return 'Windows could not replace the active pb executable. Close terminals running pb, then rerun the upgrade command.';
|
|
61
|
+
}
|
|
62
|
+
return 'Run the displayed upgrade command manually, then retry pb doctor.';
|
|
63
|
+
}
|
|
64
|
+
export function spawnUpgrade(channel = detectInstallChannel(), options = {}) {
|
|
65
|
+
const spec = buildUpgradeCommand(channel);
|
|
66
|
+
const output = [];
|
|
67
|
+
trackEvent('cli.upgrade.initiated', { channel: spec.channel });
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
const child = spawn(spec.command, spec.args, {
|
|
70
|
+
env: options.env ?? process.env,
|
|
71
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
72
|
+
});
|
|
73
|
+
const emit = (chunk) => {
|
|
74
|
+
const text = chunk.toString();
|
|
75
|
+
for (const line of text.split(/\r?\n/).filter(Boolean)) {
|
|
76
|
+
output.push(line);
|
|
77
|
+
options.onOutput?.(line);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
child.stdout?.on('data', emit);
|
|
81
|
+
child.stderr?.on('data', emit);
|
|
82
|
+
child.on('error', (err) => {
|
|
83
|
+
const message = err.message || `Failed to spawn ${spec.display}`;
|
|
84
|
+
trackEvent('cli.upgrade.failed', { channel: spec.channel, reason: err.code ?? 'spawn_error' });
|
|
85
|
+
reject(new CLIError(`Upgrade failed: ${message}`, {
|
|
86
|
+
code: ErrorCode.UPGRADE_FAILED,
|
|
87
|
+
category: 'internal',
|
|
88
|
+
guidance: failureGuidance(message),
|
|
89
|
+
}));
|
|
90
|
+
});
|
|
91
|
+
child.on('close', (code) => {
|
|
92
|
+
const exitCode = code ?? 1;
|
|
93
|
+
if (exitCode !== 0) {
|
|
94
|
+
const message = output.slice(-4).join('\n') || `${spec.display} exited with code ${exitCode}`;
|
|
95
|
+
trackEvent('cli.upgrade.failed', { channel: spec.channel, exitCode });
|
|
96
|
+
reject(new CLIError(`Upgrade failed: ${message}`, {
|
|
97
|
+
code: ErrorCode.UPGRADE_FAILED,
|
|
98
|
+
category: 'internal',
|
|
99
|
+
guidance: failureGuidance(message),
|
|
100
|
+
}));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
writeUpgradePendingSentinel();
|
|
104
|
+
trackEvent('cli.upgrade.succeeded', { channel: spec.channel });
|
|
105
|
+
resolve({ channel: spec.channel, command: spec.display, exitCode, output });
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=upgrade-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-runner.js","sourceRoot":"","sources":["../../src/lib/upgrade-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 5-minute TTL cache for workspace vocabulary context (WP-436 S2).
|
|
3
|
+
*
|
|
4
|
+
* Purpose (R2 mitigation): the CLI resolves vocabulary labels on every invocation.
|
|
5
|
+
* Without a cache, each `pb orient` / `pb get` / `pb capture` would call
|
|
6
|
+
* `chain.getVocabulary` — adding a Convex round-trip overhead and risking
|
|
7
|
+
* handshake-time staleness. A 5-min TTL short-circuits repeat calls within
|
|
8
|
+
* a typical session while staying fresh enough that label changes land quickly.
|
|
9
|
+
*
|
|
10
|
+
* PAT-230: the cache holds WorkspaceVocabCtx (pure data, no Convex imports here).
|
|
11
|
+
* DEC-1021: only Axis 2 (collectionLabels) lives here; Axis 1 (displayNames) is untouched.
|
|
12
|
+
*
|
|
13
|
+
* S4 note: when Cortex UI builds its `vocabularyStore`, it should mirror this
|
|
14
|
+
* contract — a keyed map by workspaceId with an expiresAt field (Cortex has
|
|
15
|
+
* direct access to workspaceId; the CLI uses apiKey as a 1:1 surrogate, since
|
|
16
|
+
* the HTTP gateway server-side injects workspaceId from authResult per
|
|
17
|
+
* convex/http.ts:675).
|
|
18
|
+
*/
|
|
19
|
+
import type { WorkspaceVocabCtx } from './canonicalRefs.js';
|
|
20
|
+
/**
|
|
21
|
+
* Get a cached WorkspaceVocabCtx by cacheKey, or null if expired/missing.
|
|
22
|
+
* Prints a staleness warning when the entry is older than STALE_WARN_MS.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getCachedVocabCtx(cacheKey: string): WorkspaceVocabCtx | null;
|
|
25
|
+
/**
|
|
26
|
+
* Store a WorkspaceVocabCtx under cacheKey with a 5-min TTL.
|
|
27
|
+
*/
|
|
28
|
+
export declare function setCachedVocabCtx(cacheKey: string, ctx: WorkspaceVocabCtx): void;
|
|
29
|
+
/**
|
|
30
|
+
* Explicitly invalidate a cached vocab context by cacheKey.
|
|
31
|
+
* Call this when `updateCollectionLabels` mutation succeeds (e.g. after `pb handshake`).
|
|
32
|
+
*/
|
|
33
|
+
export declare function invalidateVocabCtx(cacheKey: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Clear all cached entries (useful for testing or `pb handshake --refresh`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function clearVocabCache(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get the cached vocab context, or fetch it via the provided async fetcher on cache miss.
|
|
40
|
+
*
|
|
41
|
+
* Usage pattern at CLI command sites:
|
|
42
|
+
* ```ts
|
|
43
|
+
* const vocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
|
|
44
|
+
* type VocabResult = { collectionLabels?: Record<string, unknown> };
|
|
45
|
+
* const vocab = await kernelCall<VocabResult>('chain.getVocabulary', {});
|
|
46
|
+
* return vocab?.collectionLabels
|
|
47
|
+
* ? { collectionLabels: vocab.collectionLabels as WorkspaceVocabCtx['collectionLabels'] }
|
|
48
|
+
* : null;
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* - `cacheKey`: use the API key as a surrogate for cacheKey (1:1 mapping at CLI layer).
|
|
53
|
+
* - `fetcher`: async function that resolves the vocab ctx; returns null on failure to signal
|
|
54
|
+
* "don't cache, fall back to resolver literal". Fetcher errors are swallowed — vocabulary
|
|
55
|
+
* labels are advisory (PAT-230 / fail-open principle).
|
|
56
|
+
*
|
|
57
|
+
* Returns WorkspaceVocabCtx on cache hit or successful fetch; undefined on error/null fetcher result.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getOrFetchVocabCtx(cacheKey: string, fetcher: () => Promise<WorkspaceVocabCtx | null>): Promise<WorkspaceVocabCtx | undefined>;
|
|
60
|
+
//# sourceMappingURL=workspaceVocabCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceVocabCache.d.ts","sourceRoot":"","sources":["../../src/lib/workspaceVocabCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAc5D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAe5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAEhF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAC/C,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAcxC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 5-minute TTL cache for workspace vocabulary context (WP-436 S2).
|
|
3
|
+
*
|
|
4
|
+
* Purpose (R2 mitigation): the CLI resolves vocabulary labels on every invocation.
|
|
5
|
+
* Without a cache, each `pb orient` / `pb get` / `pb capture` would call
|
|
6
|
+
* `chain.getVocabulary` — adding a Convex round-trip overhead and risking
|
|
7
|
+
* handshake-time staleness. A 5-min TTL short-circuits repeat calls within
|
|
8
|
+
* a typical session while staying fresh enough that label changes land quickly.
|
|
9
|
+
*
|
|
10
|
+
* PAT-230: the cache holds WorkspaceVocabCtx (pure data, no Convex imports here).
|
|
11
|
+
* DEC-1021: only Axis 2 (collectionLabels) lives here; Axis 1 (displayNames) is untouched.
|
|
12
|
+
*
|
|
13
|
+
* S4 note: when Cortex UI builds its `vocabularyStore`, it should mirror this
|
|
14
|
+
* contract — a keyed map by workspaceId with an expiresAt field (Cortex has
|
|
15
|
+
* direct access to workspaceId; the CLI uses apiKey as a 1:1 surrogate, since
|
|
16
|
+
* the HTTP gateway server-side injects workspaceId from authResult per
|
|
17
|
+
* convex/http.ts:675).
|
|
18
|
+
*/
|
|
19
|
+
const TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
20
|
+
const STALE_WARN_MS = 4 * 60 * 1000; // warn after 4 minutes (1 minute before expiry)
|
|
21
|
+
/** In-memory cache: cacheKey (CLI: apiKey; Cortex would use workspaceId) → CacheEntry. */
|
|
22
|
+
const cache = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Get a cached WorkspaceVocabCtx by cacheKey, or null if expired/missing.
|
|
25
|
+
* Prints a staleness warning when the entry is older than STALE_WARN_MS.
|
|
26
|
+
*/
|
|
27
|
+
export function getCachedVocabCtx(cacheKey) {
|
|
28
|
+
const entry = cache.get(cacheKey);
|
|
29
|
+
if (!entry)
|
|
30
|
+
return null;
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
if (now >= entry.expiresAt) {
|
|
33
|
+
cache.delete(cacheKey);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
if (now - (entry.expiresAt - TTL_MS) >= STALE_WARN_MS) {
|
|
37
|
+
// Staleness hint: labels were fetched > 4 min ago, will refresh within 1 min.
|
|
38
|
+
process.stderr.write(`[pb] Workspace vocabulary context is almost stale — will refresh on next invocation.\n`);
|
|
39
|
+
}
|
|
40
|
+
return entry.ctx;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Store a WorkspaceVocabCtx under cacheKey with a 5-min TTL.
|
|
44
|
+
*/
|
|
45
|
+
export function setCachedVocabCtx(cacheKey, ctx) {
|
|
46
|
+
cache.set(cacheKey, { ctx, expiresAt: Date.now() + TTL_MS });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Explicitly invalidate a cached vocab context by cacheKey.
|
|
50
|
+
* Call this when `updateCollectionLabels` mutation succeeds (e.g. after `pb handshake`).
|
|
51
|
+
*/
|
|
52
|
+
export function invalidateVocabCtx(cacheKey) {
|
|
53
|
+
cache.delete(cacheKey);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clear all cached entries (useful for testing or `pb handshake --refresh`).
|
|
57
|
+
*/
|
|
58
|
+
export function clearVocabCache() {
|
|
59
|
+
cache.clear();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get the cached vocab context, or fetch it via the provided async fetcher on cache miss.
|
|
63
|
+
*
|
|
64
|
+
* Usage pattern at CLI command sites:
|
|
65
|
+
* ```ts
|
|
66
|
+
* const vocabCtx = await getOrFetchVocabCtx(config.apiKey, async () => {
|
|
67
|
+
* type VocabResult = { collectionLabels?: Record<string, unknown> };
|
|
68
|
+
* const vocab = await kernelCall<VocabResult>('chain.getVocabulary', {});
|
|
69
|
+
* return vocab?.collectionLabels
|
|
70
|
+
* ? { collectionLabels: vocab.collectionLabels as WorkspaceVocabCtx['collectionLabels'] }
|
|
71
|
+
* : null;
|
|
72
|
+
* });
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* - `cacheKey`: use the API key as a surrogate for cacheKey (1:1 mapping at CLI layer).
|
|
76
|
+
* - `fetcher`: async function that resolves the vocab ctx; returns null on failure to signal
|
|
77
|
+
* "don't cache, fall back to resolver literal". Fetcher errors are swallowed — vocabulary
|
|
78
|
+
* labels are advisory (PAT-230 / fail-open principle).
|
|
79
|
+
*
|
|
80
|
+
* Returns WorkspaceVocabCtx on cache hit or successful fetch; undefined on error/null fetcher result.
|
|
81
|
+
*/
|
|
82
|
+
export async function getOrFetchVocabCtx(cacheKey, fetcher) {
|
|
83
|
+
const cached = getCachedVocabCtx(cacheKey);
|
|
84
|
+
if (cached)
|
|
85
|
+
return cached;
|
|
86
|
+
try {
|
|
87
|
+
const ctx = await fetcher();
|
|
88
|
+
if (ctx) {
|
|
89
|
+
setCachedVocabCtx(cacheKey, ctx);
|
|
90
|
+
return ctx;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// fail-open — vocabulary labels are advisory, never block the command
|
|
95
|
+
}
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=workspaceVocabCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceVocabCache.js","sourceRoot":"","sources":["../../src/lib/workspaceVocabCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAC1C,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,gDAAgD;AAErF,0FAA0F;AAC1F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QACtD,8EAA8E;QAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,GAAsB;IACxE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAgD;IAEhD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;QAC5B,IAAI,GAAG,EAAE,CAAC;YACR,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coach-traces.test.d.ts","sourceRoot":"","sources":["../../../src/setup/__tests__/coach-traces.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-model coach validation harness — WP-431 S4 (doneWhen #16).
|
|
3
|
+
*
|
|
4
|
+
* Mock harness chosen for cross-model validation per TEN-1962 — deterministic,
|
|
5
|
+
* runs in CI without API keys. Live trace via dev-only Cursor Desktop documented
|
|
6
|
+
* separately if needed. The harness does NOT call any model; it simulates the
|
|
7
|
+
* criteria-progression loop encoded in `.productbrain/skills/pb-setup.md`
|
|
8
|
+
* Phase 3 and asserts convergence within 3 turns OR correct fallback to the
|
|
9
|
+
* FLO-72 Path C wizard (DEC-991).
|
|
10
|
+
*
|
|
11
|
+
* The fixture set covers cross-model behaviour by encoding three response
|
|
12
|
+
* shapes that any reasonable instruction-following model produces — the user's
|
|
13
|
+
* answer is the variable, the agent's response loop is the constant. The
|
|
14
|
+
* skill body is the universal SSOT (DEC-997); this harness exercises it.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, expect, it } from 'vitest';
|
|
17
|
+
/**
|
|
18
|
+
* Criteria check (verbatim from `.productbrain/skills/pb-setup.md` Phase 3):
|
|
19
|
+
* "answer mentions a verb + a thing they do regularly".
|
|
20
|
+
*
|
|
21
|
+
* The criteria predicate keeps the test honest: it deterministically maps a
|
|
22
|
+
* user utterance to met/not-met. The tokeniser is intentionally simple — the
|
|
23
|
+
* skill text says "verb + thing", and that's what we look for.
|
|
24
|
+
*/
|
|
25
|
+
const VERB_HINTS = [
|
|
26
|
+
'ship',
|
|
27
|
+
'shipping',
|
|
28
|
+
'fix',
|
|
29
|
+
'fixing',
|
|
30
|
+
'write',
|
|
31
|
+
'writing',
|
|
32
|
+
'review',
|
|
33
|
+
'reviewing',
|
|
34
|
+
'build',
|
|
35
|
+
'building',
|
|
36
|
+
'integrate',
|
|
37
|
+
'integrating',
|
|
38
|
+
'design',
|
|
39
|
+
'designing',
|
|
40
|
+
'debug',
|
|
41
|
+
'debugging',
|
|
42
|
+
'refactor',
|
|
43
|
+
'refactoring',
|
|
44
|
+
'document',
|
|
45
|
+
'documenting',
|
|
46
|
+
];
|
|
47
|
+
const THING_HINTS = [
|
|
48
|
+
'feature',
|
|
49
|
+
'features',
|
|
50
|
+
'bug',
|
|
51
|
+
'bugs',
|
|
52
|
+
'copy',
|
|
53
|
+
'integration',
|
|
54
|
+
'integrations',
|
|
55
|
+
'review',
|
|
56
|
+
'reviews',
|
|
57
|
+
'issue',
|
|
58
|
+
'issues',
|
|
59
|
+
'doc',
|
|
60
|
+
'docs',
|
|
61
|
+
'api',
|
|
62
|
+
'apis',
|
|
63
|
+
'endpoint',
|
|
64
|
+
'endpoints',
|
|
65
|
+
'workflow',
|
|
66
|
+
'workflows',
|
|
67
|
+
'page',
|
|
68
|
+
'pages',
|
|
69
|
+
'rule',
|
|
70
|
+
'rules',
|
|
71
|
+
];
|
|
72
|
+
function meetsCriteria(answer) {
|
|
73
|
+
const lower = answer.toLowerCase();
|
|
74
|
+
const hasVerb = VERB_HINTS.some((v) => new RegExp(`\\b${v}\\b`).test(lower));
|
|
75
|
+
const hasThing = THING_HINTS.some((t) => new RegExp(`\\b${t}\\b`).test(lower));
|
|
76
|
+
return hasVerb && hasThing;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Run the coach loop encoded in pb-setup.md against a scripted user.
|
|
80
|
+
*
|
|
81
|
+
* Loop (verbatim from the skill):
|
|
82
|
+
* 1. Ask the open question.
|
|
83
|
+
* 2. If answer meets criteria -> progress.
|
|
84
|
+
* 3. If vague, ask one follow-up.
|
|
85
|
+
* 4. If 2 follow-ups don't yield, fall back to wizard (DEC-991).
|
|
86
|
+
*
|
|
87
|
+
* Convergence target (doneWhen #16): within 3 turns. Three turns means: the
|
|
88
|
+
* open question + at most two follow-ups. After the third turn without
|
|
89
|
+
* criteria-met, the agent MUST fall back to the wizard.
|
|
90
|
+
*/
|
|
91
|
+
function runCoachLoop(turns) {
|
|
92
|
+
const trace = [];
|
|
93
|
+
let followUps = 0;
|
|
94
|
+
for (let i = 0; i < turns.length; i++) {
|
|
95
|
+
const turn = turns[i];
|
|
96
|
+
const met = meetsCriteria(turn.user);
|
|
97
|
+
trace.push({ turn: i + 1, user: turn.user, met });
|
|
98
|
+
if (met) {
|
|
99
|
+
return {
|
|
100
|
+
state: 'criteria-met',
|
|
101
|
+
turnsUsed: i + 1,
|
|
102
|
+
finalAnswer: turn.user,
|
|
103
|
+
trace,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
followUps += 1;
|
|
107
|
+
if (followUps >= 2) {
|
|
108
|
+
// Skill behaviour: "if 2 follow-ups don't yield, suggest a default
|
|
109
|
+
// catalog and let them pick (DEC-991 fallback path)".
|
|
110
|
+
return {
|
|
111
|
+
state: 'wizard-fallback',
|
|
112
|
+
turnsUsed: i + 1,
|
|
113
|
+
finalAnswer: turn.user,
|
|
114
|
+
trace,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Out of scripted turns without convergence — treat as wizard-fallback so
|
|
119
|
+
// the test surfaces a faulty fixture rather than silently passing.
|
|
120
|
+
return {
|
|
121
|
+
state: 'wizard-fallback',
|
|
122
|
+
turnsUsed: turns.length,
|
|
123
|
+
finalAnswer: turns[turns.length - 1]?.user ?? '',
|
|
124
|
+
trace,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
describe('Phase 3 coach loop — cross-model trace harness (TEN-1962)', () => {
|
|
128
|
+
it('Scenario A — happy path (specific answer, 1 turn)', () => {
|
|
129
|
+
const turns = [
|
|
130
|
+
{ user: 'Mostly shipping new features for our SvelteKit app.' },
|
|
131
|
+
];
|
|
132
|
+
const outcome = runCoachLoop(turns);
|
|
133
|
+
expect(outcome.state).toBe('criteria-met');
|
|
134
|
+
expect(outcome.turnsUsed).toBe(1);
|
|
135
|
+
expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
|
|
136
|
+
});
|
|
137
|
+
it('Scenario B — vague then specific (follow-up, 2 turns)', () => {
|
|
138
|
+
const turns = [
|
|
139
|
+
{ user: 'I dunno, various stuff.' },
|
|
140
|
+
{ user: 'Last week I spent the most time fixing customer bugs.' },
|
|
141
|
+
];
|
|
142
|
+
const outcome = runCoachLoop(turns);
|
|
143
|
+
expect(outcome.state).toBe('criteria-met');
|
|
144
|
+
expect(outcome.turnsUsed).toBe(2);
|
|
145
|
+
expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
|
|
146
|
+
});
|
|
147
|
+
it('Scenario C — 2 vague turns triggers wizard fallback (DEC-991 path)', () => {
|
|
148
|
+
const turns = [
|
|
149
|
+
{ user: 'Just code, you know how it is.' },
|
|
150
|
+
{ user: 'Stuff. Things. The usual.' },
|
|
151
|
+
];
|
|
152
|
+
const outcome = runCoachLoop(turns);
|
|
153
|
+
expect(outcome.state).toBe('wizard-fallback');
|
|
154
|
+
expect(outcome.turnsUsed).toBe(2);
|
|
155
|
+
// Convergence to a deterministic outcome (criteria-met OR wizard) within
|
|
156
|
+
// the 3-turn budget defends KEY-32 generalisation across surfaces.
|
|
157
|
+
expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
|
|
158
|
+
});
|
|
159
|
+
it('Scenario D — marketing copy answer (non-engineering domain, criteria still met)', () => {
|
|
160
|
+
const turns = [
|
|
161
|
+
{ user: 'I write marketing copy and review pages from the design team.' },
|
|
162
|
+
];
|
|
163
|
+
const outcome = runCoachLoop(turns);
|
|
164
|
+
expect(outcome.state).toBe('criteria-met');
|
|
165
|
+
expect(outcome.turnsUsed).toBe(1);
|
|
166
|
+
});
|
|
167
|
+
it('Scenario E — every fixture converges within the 3-turn budget', () => {
|
|
168
|
+
// Roll-up assertion across all scenarios so a future fixture addition that
|
|
169
|
+
// exceeds the budget surfaces here as a single named failure.
|
|
170
|
+
const fixtures = [
|
|
171
|
+
[{ user: 'Mostly shipping new features for our SvelteKit app.' }],
|
|
172
|
+
[
|
|
173
|
+
{ user: 'I dunno, various stuff.' },
|
|
174
|
+
{ user: 'Last week I spent the most time fixing customer bugs.' },
|
|
175
|
+
],
|
|
176
|
+
[
|
|
177
|
+
{ user: 'Just code, you know how it is.' },
|
|
178
|
+
{ user: 'Stuff. Things. The usual.' },
|
|
179
|
+
],
|
|
180
|
+
[{ user: 'I write marketing copy and review pages from the design team.' }],
|
|
181
|
+
];
|
|
182
|
+
for (const turns of fixtures) {
|
|
183
|
+
const outcome = runCoachLoop(turns);
|
|
184
|
+
expect(outcome.turnsUsed).toBeLessThanOrEqual(3);
|
|
185
|
+
expect(['criteria-met', 'wizard-fallback']).toContain(outcome.state);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=coach-traces.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coach-traces.test.js","sourceRoot":"","sources":["../../../src/setup/__tests__/coach-traces.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-commands.test.d.ts","sourceRoot":"","sources":["../../../src/setup/__tests__/setup-commands.test.ts"],"names":[],"mappings":""}
|