@productbrain/cli 0.1.0-beta.90 → 0.1.0-beta.914
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.d.ts +2 -0
- package/dist/__tests__/authority-domains.test.d.ts.map +1 -0
- package/dist/__tests__/authority-domains.test.js +48 -0
- package/dist/__tests__/authority-domains.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__/config.test.d.ts +1 -1
- package/dist/__tests__/config.test.js +410 -10
- 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.d.ts +15 -0
- package/dist/__tests__/envelope-contract.test.d.ts.map +1 -0
- package/dist/__tests__/envelope-contract.test.js +152 -0
- package/dist/__tests__/envelope-contract.test.js.map +1 -0
- 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 +688 -3
- 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 +135 -8
- 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 +153 -5
- 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.d.ts +2 -0
- package/dist/__tests__/setup-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/setup-ingest.test.js +71 -0
- package/dist/__tests__/setup-ingest.test.js.map +1 -0
- package/dist/__tests__/setup-resolver.test.d.ts +14 -0
- package/dist/__tests__/setup-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/setup-resolver.test.js +228 -0
- package/dist/__tests__/setup-resolver.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 +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 +146 -0
- package/dist/commands/authority-domains.d.ts.map +1 -0
- package/dist/commands/authority-domains.js +282 -0
- package/dist/commands/authority-domains.js.map +1 -0
- 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 +78 -51
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connect.test.js +64 -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 +1738 -44
- 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/migrate-setup.d.ts +18 -0
- package/dist/commands/migrate-setup.d.ts.map +1 -0
- package/dist/commands/migrate-setup.js +198 -0
- package/dist/commands/migrate-setup.js.map +1 -0
- package/dist/commands/orient.d.ts +15 -2
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +86 -4
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +11 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +109 -26
- 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 +55 -18
- 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 +17 -0
- package/dist/commands/setup-ingest.d.ts.map +1 -0
- package/dist/commands/setup-ingest.js +226 -0
- package/dist/commands/setup-ingest.js.map +1 -0
- package/dist/commands/setup-resolver.d.ts +58 -0
- package/dist/commands/setup-resolver.d.ts.map +1 -0
- package/dist/commands/setup-resolver.js +150 -0
- package/dist/commands/setup-resolver.js.map +1 -0
- 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 +74 -2
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +26 -2
- package/dist/commands/workspace.js.map +1 -1
- 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/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 +50 -4
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +64 -16
- 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 +242 -26
- 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 +141 -0
- package/dist/lib/canonicalRefs.d.ts.map +1 -0
- package/dist/lib/canonicalRefs.js +150 -0
- package/dist/lib/canonicalRefs.js.map +1 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +27 -17
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts +98 -9
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +231 -44
- 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 +2 -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
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Surface Capability Registry — WP-310 S0 (FEAT-959)
|
|
2
|
+
* Surface Capability Registry — WP-310 S0 (FEAT-959), extended in WP-421 S2c (DEC-952).
|
|
3
|
+
*
|
|
4
|
+
* Static typed record of per-surface capabilities consumed by E1–E4 and the
|
|
5
|
+
* SurfaceAdapter set introduced in WP-421 S2c. The legacy `SURFACE_REGISTRY`
|
|
6
|
+
* shape is preserved verbatim for callers (handshake hook plumbing,
|
|
7
|
+
* `lib/hook-intents.ts`, existing tests).
|
|
3
8
|
*
|
|
4
|
-
* Static typed record of per-surface capabilities consumed by E1–E4.
|
|
5
9
|
* INS-740: Cursor and Copilot had confirmed double-fire risk with Claude Code hooks.
|
|
6
10
|
* Their hookEvents arrays MUST be empty in v1. Only 'claude' gets hook events by default.
|
|
7
11
|
*/
|
|
12
|
+
import type { SurfaceAdapter } from './adapter.js';
|
|
8
13
|
export type SurfaceName = 'claude' | 'cursor' | 'copilot' | 'codex';
|
|
9
14
|
export interface SurfaceCapability {
|
|
10
15
|
rulesFormat: 'markdown' | 'mdc';
|
|
@@ -17,4 +22,55 @@ export interface SurfaceCapability {
|
|
|
17
22
|
supportsAgentsMd: boolean;
|
|
18
23
|
}
|
|
19
24
|
export declare const SURFACE_REGISTRY: Record<SurfaceName, SurfaceCapability>;
|
|
25
|
+
/**
|
|
26
|
+
* Per-surface adapter registry. New surface = new adapter file + line here.
|
|
27
|
+
* Adapters expose detect/paths/transform/goldens/canonicalPathFor — one canonical
|
|
28
|
+
* asset, many surface projections.
|
|
29
|
+
*/
|
|
30
|
+
export declare const SURFACE_ADAPTERS: Record<SurfaceName, SurfaceAdapter>;
|
|
31
|
+
/** Convenience array view for iteration (e.g. detect-all). */
|
|
32
|
+
export declare const SURFACE_ADAPTER_LIST: SurfaceAdapter[];
|
|
33
|
+
/**
|
|
34
|
+
* Lookup the canonical authoring path for a projection path on any surface.
|
|
35
|
+
* Returns the first non-null mapping; if every adapter returns null, returns null
|
|
36
|
+
* and the caller MUST emit `surface-reverse-map-missing` telemetry via
|
|
37
|
+
* `surfaces/telemetry.ts:reportReverseMapMissing`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function canonicalPathForAnySurface(projectionPath: string): {
|
|
40
|
+
surface: SurfaceName;
|
|
41
|
+
canonicalPath: string;
|
|
42
|
+
} | null;
|
|
43
|
+
/** Govern mode declared with empty surfaces[]. Hard error (handshake refuses). */
|
|
44
|
+
export declare const SURFACE_GOVERN_NO_SURFACES: "govern-no-surfaces";
|
|
45
|
+
/** Surface name in manifest is not registered. Advisory flag for drift report. */
|
|
46
|
+
export declare const SURFACE_ADAPTER_MISSING: "surface-adapter-missing";
|
|
47
|
+
/**
|
|
48
|
+
* Result of the surfaces validation for a given authority mode.
|
|
49
|
+
*
|
|
50
|
+
* - `error` is set when the configuration is invalid for the requested mode
|
|
51
|
+
* (today: only Govern + empty surfaces). Caller should refuse to proceed.
|
|
52
|
+
* - `unregisteredSurfaces` enumerates manifest surface names that are not in
|
|
53
|
+
* SURFACE_ADAPTERS; emit one `SURFACE_ADAPTER_MISSING` flag per entry but
|
|
54
|
+
* do NOT fail.
|
|
55
|
+
*/
|
|
56
|
+
export interface SurfacesValidationResult {
|
|
57
|
+
error?: typeof SURFACE_GOVERN_NO_SURFACES;
|
|
58
|
+
unregisteredSurfaces: string[];
|
|
59
|
+
/** Subset of `manifest.surfaces` that resolve to a known SurfaceName. */
|
|
60
|
+
registeredSurfaces: SurfaceName[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate `manifest.surfaces[]` against the requested authority mode.
|
|
64
|
+
*
|
|
65
|
+
* Govern + empty surfaces → `{ error: SURFACE_GOVERN_NO_SURFACES }`.
|
|
66
|
+
* Any other mode is permitted with any (possibly empty) surface list.
|
|
67
|
+
*
|
|
68
|
+
* Unregistered surface names are reported via `unregisteredSurfaces` so the
|
|
69
|
+
* caller can flag them in the drift report. Pure: no I/O, no Convex calls.
|
|
70
|
+
*
|
|
71
|
+
* Surface name normalization: this validator strips a leading `.` from each
|
|
72
|
+
* entry (e.g. `.cursor` → `cursor`) so manifests can declare either form.
|
|
73
|
+
* The canonical SurfaceName values in SURFACE_ADAPTERS use the bare name.
|
|
74
|
+
*/
|
|
75
|
+
export declare function validateSurfacesForMode(mode: 'off' | 'observe' | 'project' | 'govern', surfacesFromManifest: string[]): SurfacesValidationResult;
|
|
20
76
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,+FAA+F;IAC/F,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,eAAe,GAAG,MAAM,CAAC;IAClD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAiCnE,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,CAKhE,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAAoC,CAAC;AAEtF;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,GACrB;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMxD;AAaD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,EAAG,oBAA6B,CAAC;AAExE,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,EAAG,yBAAkC,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,0BAA0B,CAAC;IAC1C,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,yEAAyE;IACzE,kBAAkB,EAAE,WAAW,EAAE,CAAC;CACnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,EAC9C,oBAAoB,EAAE,MAAM,EAAE,GAC7B,wBAAwB,CAuB1B"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* INS-740: Cursor and Copilot had confirmed double-fire risk with Claude Code hooks.
|
|
6
|
-
* Their hookEvents arrays MUST be empty in v1. Only 'claude' gets hook events by default.
|
|
7
|
-
*/
|
|
1
|
+
import { claudeAdapter } from './adapters/claude.js';
|
|
2
|
+
import { cursorAdapter } from './adapters/cursor.js';
|
|
3
|
+
import { copilotAdapter } from './adapters/copilot.js';
|
|
4
|
+
import { codexAdapter } from './adapters/codex.js';
|
|
8
5
|
export const SURFACE_REGISTRY = {
|
|
9
6
|
claude: {
|
|
10
7
|
rulesFormat: 'markdown',
|
|
@@ -39,4 +36,82 @@ export const SURFACE_REGISTRY = {
|
|
|
39
36
|
supportsAgentsMd: true,
|
|
40
37
|
},
|
|
41
38
|
};
|
|
39
|
+
// ── SurfaceAdapter registry — WP-421 S2c (DEC-952) ──────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Per-surface adapter registry. New surface = new adapter file + line here.
|
|
42
|
+
* Adapters expose detect/paths/transform/goldens/canonicalPathFor — one canonical
|
|
43
|
+
* asset, many surface projections.
|
|
44
|
+
*/
|
|
45
|
+
export const SURFACE_ADAPTERS = {
|
|
46
|
+
claude: claudeAdapter,
|
|
47
|
+
cursor: cursorAdapter,
|
|
48
|
+
copilot: copilotAdapter,
|
|
49
|
+
codex: codexAdapter,
|
|
50
|
+
};
|
|
51
|
+
/** Convenience array view for iteration (e.g. detect-all). */
|
|
52
|
+
export const SURFACE_ADAPTER_LIST = Object.values(SURFACE_ADAPTERS);
|
|
53
|
+
/**
|
|
54
|
+
* Lookup the canonical authoring path for a projection path on any surface.
|
|
55
|
+
* Returns the first non-null mapping; if every adapter returns null, returns null
|
|
56
|
+
* and the caller MUST emit `surface-reverse-map-missing` telemetry via
|
|
57
|
+
* `surfaces/telemetry.ts:reportReverseMapMissing`.
|
|
58
|
+
*/
|
|
59
|
+
export function canonicalPathForAnySurface(projectionPath) {
|
|
60
|
+
for (const surface of Object.keys(SURFACE_ADAPTERS)) {
|
|
61
|
+
const result = SURFACE_ADAPTERS[surface].canonicalPathFor(projectionPath);
|
|
62
|
+
if (result)
|
|
63
|
+
return { surface, canonicalPath: result };
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// ── WP-421 S7: mode × surfaces matrix (doneWhen #19) ─────────────────────────
|
|
68
|
+
//
|
|
69
|
+
// Two stable error/flag codes (consumer-stable contract):
|
|
70
|
+
// - SURFACE_GOVERN_NO_SURFACES — Govern mode requires a non-empty surfaces[].
|
|
71
|
+
// Emitted by `validateSurfacesForMode` when `materialize: govern` and no
|
|
72
|
+
// surfaces declared. CLI surfaces this as a hard error.
|
|
73
|
+
// - SURFACE_ADAPTER_MISSING — A surface name in `manifest.surfaces[]` is not
|
|
74
|
+
// registered in SURFACE_ADAPTERS. Emitted by `flagUnregisteredSurfaces` for
|
|
75
|
+
// the drift report. The handshake MUST NOT crash on this — the flag is
|
|
76
|
+
// advisory and the handshake skips the unknown surface.
|
|
77
|
+
/** Govern mode declared with empty surfaces[]. Hard error (handshake refuses). */
|
|
78
|
+
export const SURFACE_GOVERN_NO_SURFACES = 'govern-no-surfaces';
|
|
79
|
+
/** Surface name in manifest is not registered. Advisory flag for drift report. */
|
|
80
|
+
export const SURFACE_ADAPTER_MISSING = 'surface-adapter-missing';
|
|
81
|
+
/**
|
|
82
|
+
* Validate `manifest.surfaces[]` against the requested authority mode.
|
|
83
|
+
*
|
|
84
|
+
* Govern + empty surfaces → `{ error: SURFACE_GOVERN_NO_SURFACES }`.
|
|
85
|
+
* Any other mode is permitted with any (possibly empty) surface list.
|
|
86
|
+
*
|
|
87
|
+
* Unregistered surface names are reported via `unregisteredSurfaces` so the
|
|
88
|
+
* caller can flag them in the drift report. Pure: no I/O, no Convex calls.
|
|
89
|
+
*
|
|
90
|
+
* Surface name normalization: this validator strips a leading `.` from each
|
|
91
|
+
* entry (e.g. `.cursor` → `cursor`) so manifests can declare either form.
|
|
92
|
+
* The canonical SurfaceName values in SURFACE_ADAPTERS use the bare name.
|
|
93
|
+
*/
|
|
94
|
+
export function validateSurfacesForMode(mode, surfacesFromManifest) {
|
|
95
|
+
const knownNames = new Set(Object.keys(SURFACE_ADAPTERS));
|
|
96
|
+
const registeredSurfaces = [];
|
|
97
|
+
const unregisteredSurfaces = [];
|
|
98
|
+
for (const raw of surfacesFromManifest) {
|
|
99
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
100
|
+
continue;
|
|
101
|
+
const stripped = raw.startsWith('.') ? raw.slice(1) : raw;
|
|
102
|
+
const normalized = stripped === 'github' ? 'copilot' : stripped;
|
|
103
|
+
if (knownNames.has(normalized)) {
|
|
104
|
+
registeredSurfaces.push(normalized);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
unregisteredSurfaces.push(raw);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Govern requires at least one registered surface. Unregistered surface names
|
|
111
|
+
// do NOT count toward this minimum (they're advisory).
|
|
112
|
+
if (mode === 'govern' && registeredSurfaces.length === 0) {
|
|
113
|
+
return { error: SURFACE_GOVERN_NO_SURFACES, unregisteredSurfaces, registeredSurfaces };
|
|
114
|
+
}
|
|
115
|
+
return { unregisteredSurfaces, registeredSurfaces };
|
|
116
|
+
}
|
|
42
117
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ReverseMapMissingEvent {
|
|
2
|
+
surface: string;
|
|
3
|
+
projectionPath: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Stable, copy-paste-able fallback message used by tampered-bucket prompts when
|
|
7
|
+
* an adapter cannot reverse-map a projection path. Centralized so every consumer
|
|
8
|
+
* surfaces the exact same instruction string.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getReverseMapFallbackMessage(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Report that an adapter returned null for canonicalPathFor.
|
|
13
|
+
* Always emits a telemetry event; also writes a tagged warning to stderr so
|
|
14
|
+
* developers see it during local handshake runs.
|
|
15
|
+
*/
|
|
16
|
+
export declare function reportReverseMapMissing(evt: ReverseMapMissingEvent, warn?: (msg: string) => void): void;
|
|
17
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/surfaces/telemetry.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAgD,GACtE,IAAI,CAQN"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface telemetry — WP-421 S2c.
|
|
3
|
+
*
|
|
4
|
+
* Tagged log + PostHog event for unmapped projection paths. When a SurfaceAdapter's
|
|
5
|
+
* canonicalPathFor returns null, the consumer falls back to a generic
|
|
6
|
+
* "edit upstream in .productbrain/{skills,rules,hooks}/" message and emits
|
|
7
|
+
* `surface-reverse-map-missing` for observability.
|
|
8
|
+
*/
|
|
9
|
+
import { trackEvent } from '../lib/telemetry.js';
|
|
10
|
+
const FALLBACK_MESSAGE = 'edit upstream in .productbrain/skills|rules|hooks/';
|
|
11
|
+
/**
|
|
12
|
+
* Stable, copy-paste-able fallback message used by tampered-bucket prompts when
|
|
13
|
+
* an adapter cannot reverse-map a projection path. Centralized so every consumer
|
|
14
|
+
* surfaces the exact same instruction string.
|
|
15
|
+
*/
|
|
16
|
+
export function getReverseMapFallbackMessage() {
|
|
17
|
+
return FALLBACK_MESSAGE;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Report that an adapter returned null for canonicalPathFor.
|
|
21
|
+
* Always emits a telemetry event; also writes a tagged warning to stderr so
|
|
22
|
+
* developers see it during local handshake runs.
|
|
23
|
+
*/
|
|
24
|
+
export function reportReverseMapMissing(evt, warn = (msg) => process.stderr.write(msg + '\n')) {
|
|
25
|
+
trackEvent('surface-reverse-map-missing', {
|
|
26
|
+
surface: evt.surface,
|
|
27
|
+
projectionPath: evt.projectionPath,
|
|
28
|
+
});
|
|
29
|
+
warn(`[surface-reverse-map-missing] ${evt.surface} cannot reverse-map ${evt.projectionPath} — ${FALLBACK_MESSAGE}`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/surfaces/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,gBAAgB,GACpB,oDAAoD,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAA2B,EAC3B,OAA8B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAEvE,UAAU,CAAC,6BAA6B,EAAE;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC,CAAC;IACH,IAAI,CACF,iCAAiC,GAAG,CAAC,OAAO,uBAAuB,GAAG,CAAC,cAAc,MAAM,gBAAgB,EAAE,CAC9G,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productbrain/cli",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.914",
|
|
4
4
|
"description": "Product Brain — Chain knowledge and write-back CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit",
|
|
16
16
|
"lint": "tsc --noEmit",
|
|
17
17
|
"test": "vitest run src/",
|
|
18
|
+
"codegen": "node scripts/generate-seed-commands.mjs",
|
|
18
19
|
"prepublishOnly": "npm run build",
|
|
19
20
|
"publish:beta": "npm publish --tag=beta",
|
|
20
21
|
"version:prerelease": "npm version prerelease --no-git-tag-version"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pb setup — guided onboarding tests.
|
|
3
|
-
* WP-301 Slice 3, WP-304 (LLM onboarding). Verifies:
|
|
4
|
-
* - setup with valid existing config goes to onboarding conversation
|
|
5
|
-
* - setup with no config triggers login prompt
|
|
6
|
-
* - setup tracks telemetry events
|
|
7
|
-
*/
|
|
8
|
-
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
9
|
-
// Track telemetry calls in order
|
|
10
|
-
const telemetryEvents = [];
|
|
11
|
-
vi.mock('../lib/telemetry.js', () => ({
|
|
12
|
-
trackEvent: (event) => {
|
|
13
|
-
telemetryEvents.push(event);
|
|
14
|
-
},
|
|
15
|
-
initTelemetry: vi.fn(),
|
|
16
|
-
}));
|
|
17
|
-
const kernelCallMock = vi.fn();
|
|
18
|
-
const kernelCallWithSessionMock = vi.fn();
|
|
19
|
-
vi.mock('../lib/client.js', () => ({
|
|
20
|
-
kernelCall: (...args) => kernelCallMock(...args),
|
|
21
|
-
kernelCallWithSession: (...args) => kernelCallWithSessionMock(...args),
|
|
22
|
-
}));
|
|
23
|
-
let mockConfig = {
|
|
24
|
-
apiKey: 'pb_sk_test_key_1234',
|
|
25
|
-
siteUrl: 'https://test.convex.site',
|
|
26
|
-
};
|
|
27
|
-
vi.mock('../lib/config.js', () => ({
|
|
28
|
-
getConfig: () => {
|
|
29
|
-
if (!mockConfig)
|
|
30
|
-
throw new Error('No API key.');
|
|
31
|
-
return mockConfig;
|
|
32
|
-
},
|
|
33
|
-
getConfigOrGuide: vi.fn(() => mockConfig
|
|
34
|
-
? Promise.resolve(mockConfig)
|
|
35
|
-
: Promise.reject(new Error('No API key.'))),
|
|
36
|
-
HOME_CONFIG_DIR: '/tmp/test-config',
|
|
37
|
-
HOME_ENV_PATH: '/tmp/test-config/.env',
|
|
38
|
-
}));
|
|
39
|
-
let mockSession = null;
|
|
40
|
-
vi.mock('../lib/session.js', () => ({
|
|
41
|
-
readSession: () => mockSession,
|
|
42
|
-
writeSession: vi.fn(),
|
|
43
|
-
clearSession: vi.fn(),
|
|
44
|
-
addCapturedEntry: vi.fn(),
|
|
45
|
-
}));
|
|
46
|
-
const runLoginMock = vi.fn();
|
|
47
|
-
vi.mock('../commands/login.js', () => ({
|
|
48
|
-
runLogin: () => runLoginMock(),
|
|
49
|
-
}));
|
|
50
|
-
// Mock both onboarding paths — they have their own test files
|
|
51
|
-
const runOnboardingMock = vi.fn();
|
|
52
|
-
vi.mock('../lib/onboarding.js', () => ({
|
|
53
|
-
runOnboardingConversation: (...args) => runOnboardingMock(...args),
|
|
54
|
-
}));
|
|
55
|
-
const runOnboardingPathBMock = vi.fn();
|
|
56
|
-
vi.mock('../lib/onboarding-path-b.js', () => ({
|
|
57
|
-
runOnboardingPathB: (...args) => runOnboardingPathBMock(...args),
|
|
58
|
-
}));
|
|
59
|
-
vi.mock('../lib/experiment.js', () => ({
|
|
60
|
-
isExperimentActive: () => false,
|
|
61
|
-
assignOnboardingPath: () => 'B',
|
|
62
|
-
}));
|
|
63
|
-
let confirmAnswers = [];
|
|
64
|
-
let confirmIndex = 0;
|
|
65
|
-
vi.mock('../lib/prompts.js', () => ({
|
|
66
|
-
confirm: () => {
|
|
67
|
-
const answer = confirmAnswers[confirmIndex] ?? false;
|
|
68
|
-
confirmIndex++;
|
|
69
|
-
return Promise.resolve(answer);
|
|
70
|
-
},
|
|
71
|
-
ask: () => Promise.resolve(''),
|
|
72
|
-
password: () => Promise.resolve(''),
|
|
73
|
-
select: () => Promise.resolve(''),
|
|
74
|
-
isInteractive: () => true,
|
|
75
|
-
}));
|
|
76
|
-
import { runSetup } from '../commands/setup.js';
|
|
77
|
-
describe('runSetup', () => {
|
|
78
|
-
beforeEach(() => {
|
|
79
|
-
vi.clearAllMocks();
|
|
80
|
-
runOnboardingPathBMock.mockReset();
|
|
81
|
-
telemetryEvents.length = 0;
|
|
82
|
-
confirmAnswers = [];
|
|
83
|
-
confirmIndex = 0;
|
|
84
|
-
mockConfig = { apiKey: 'pb_sk_test_key_1234', siteUrl: 'https://test.convex.site' };
|
|
85
|
-
mockSession = null;
|
|
86
|
-
});
|
|
87
|
-
it('skips login when valid config exists and runs onboarding', async () => {
|
|
88
|
-
kernelCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
|
|
89
|
-
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
90
|
-
await runSetup();
|
|
91
|
-
// Should NOT call runLogin
|
|
92
|
-
expect(runLoginMock).not.toHaveBeenCalled();
|
|
93
|
-
// Should show masked key
|
|
94
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('pb_sk_'));
|
|
95
|
-
// Should show workspace name
|
|
96
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Test Workspace'));
|
|
97
|
-
// Should NOT call onboarding (WP-325 S0 — onboarding superseded by MCP-first flow)
|
|
98
|
-
expect(runOnboardingPathBMock).not.toHaveBeenCalled();
|
|
99
|
-
logSpy.mockRestore();
|
|
100
|
-
});
|
|
101
|
-
it('triggers login prompt when no valid config exists', async () => {
|
|
102
|
-
mockConfig = null;
|
|
103
|
-
// User answers: false to "Do you have an account?"
|
|
104
|
-
confirmAnswers = [false];
|
|
105
|
-
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
106
|
-
await runSetup();
|
|
107
|
-
// Should show signup guidance
|
|
108
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('productbrain.io'));
|
|
109
|
-
// Should NOT call runLogin since user said no account
|
|
110
|
-
expect(runLoginMock).not.toHaveBeenCalled();
|
|
111
|
-
logSpy.mockRestore();
|
|
112
|
-
});
|
|
113
|
-
it('calls runLogin when user has account but no config', async () => {
|
|
114
|
-
mockConfig = null;
|
|
115
|
-
// User answers: true to "have account?"
|
|
116
|
-
confirmAnswers = [true];
|
|
117
|
-
// After login, config becomes valid
|
|
118
|
-
runLoginMock.mockImplementation(() => {
|
|
119
|
-
mockConfig = { apiKey: 'pb_sk_new_key', siteUrl: 'https://test.convex.site' };
|
|
120
|
-
});
|
|
121
|
-
kernelCallMock.mockResolvedValueOnce({ _id: 'ws-1', keyId: 'key-1', name: 'Test Workspace' }); // resolveWorkspace
|
|
122
|
-
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
123
|
-
await runSetup();
|
|
124
|
-
expect(runLoginMock).toHaveBeenCalledOnce();
|
|
125
|
-
expect(telemetryEvents).toContain('key_validated');
|
|
126
|
-
// Should NOT call onboarding (WP-325 S0 — onboarding superseded by MCP-first flow)
|
|
127
|
-
expect(runOnboardingPathBMock).not.toHaveBeenCalled();
|
|
128
|
-
logSpy.mockRestore();
|
|
129
|
-
});
|
|
130
|
-
it('handles workspace verification failure gracefully', async () => {
|
|
131
|
-
kernelCallMock.mockRejectedValueOnce(new Error('Network error')); // resolveWorkspace fails
|
|
132
|
-
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
133
|
-
await runSetup();
|
|
134
|
-
// Should warn about connection
|
|
135
|
-
expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Could not verify'));
|
|
136
|
-
// Should NOT call onboarding
|
|
137
|
-
expect(runOnboardingMock).not.toHaveBeenCalled();
|
|
138
|
-
logSpy.mockRestore();
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
//# sourceMappingURL=setup.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../src/__tests__/setup.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"surface-profiles.test.d.ts","sourceRoot":"","sources":["../../../src/generators/__tests__/surface-profiles.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* surface-profiles — unit tests.
|
|
3
|
-
* BET-270 Slice 0: type system + registry.
|
|
4
|
-
*/
|
|
5
|
-
import { describe, expect, it } from 'vitest';
|
|
6
|
-
import { SURFACE_PROFILES, resolveSurfaceProfile } from '../surface-profiles.js';
|
|
7
|
-
// ── Helper ─────────────────────────────────────────────────────────────
|
|
8
|
-
function isValidProfile(profile) {
|
|
9
|
-
if (!profile || typeof profile !== 'object')
|
|
10
|
-
return false;
|
|
11
|
-
const p = profile;
|
|
12
|
-
return (['batch', 'interactive', 'passive'].includes(p.executionModel) &&
|
|
13
|
-
['multi-file', 'single-file'].includes(p.format) &&
|
|
14
|
-
['stateless', 'conversational', 'autonomous'].includes(p.sessionModel) &&
|
|
15
|
-
typeof p.tokenBudget === 'number' &&
|
|
16
|
-
p.tokenBudget > 0 &&
|
|
17
|
-
['orchestrated', 'direct', 'guided'].includes(p.workflowStyle));
|
|
18
|
-
}
|
|
19
|
-
// ── Registry ───────────────────────────────────────────────────────────
|
|
20
|
-
describe('SURFACE_PROFILES registry', () => {
|
|
21
|
-
it('defines all 4 known targets', () => {
|
|
22
|
-
expect(Object.keys(SURFACE_PROFILES).sort()).toEqual(['claude', 'codex', 'copilot', 'cursor']);
|
|
23
|
-
});
|
|
24
|
-
it.each(['claude', 'cursor', 'codex', 'copilot'])('%s profile has all required fields with correct types', (target) => {
|
|
25
|
-
expect(isValidProfile(SURFACE_PROFILES[target])).toBe(true);
|
|
26
|
-
});
|
|
27
|
-
it('claude profile has correct values', () => {
|
|
28
|
-
const p = SURFACE_PROFILES.claude;
|
|
29
|
-
expect(p.executionModel).toBe('interactive');
|
|
30
|
-
expect(p.format).toBe('multi-file');
|
|
31
|
-
expect(p.sessionModel).toBe('conversational');
|
|
32
|
-
expect(p.tokenBudget).toBe(50000);
|
|
33
|
-
expect(p.workflowStyle).toBe('orchestrated');
|
|
34
|
-
});
|
|
35
|
-
it('cursor profile has correct values', () => {
|
|
36
|
-
const p = SURFACE_PROFILES.cursor;
|
|
37
|
-
expect(p.executionModel).toBe('interactive');
|
|
38
|
-
expect(p.format).toBe('multi-file');
|
|
39
|
-
expect(p.sessionModel).toBe('conversational');
|
|
40
|
-
expect(p.tokenBudget).toBe(50000);
|
|
41
|
-
expect(p.workflowStyle).toBe('orchestrated');
|
|
42
|
-
});
|
|
43
|
-
it('codex profile has correct values', () => {
|
|
44
|
-
const p = SURFACE_PROFILES.codex;
|
|
45
|
-
expect(p.executionModel).toBe('batch');
|
|
46
|
-
expect(p.format).toBe('multi-file');
|
|
47
|
-
expect(p.sessionModel).toBe('autonomous');
|
|
48
|
-
expect(p.tokenBudget).toBe(100000);
|
|
49
|
-
expect(p.workflowStyle).toBe('direct');
|
|
50
|
-
});
|
|
51
|
-
it('copilot profile has correct values', () => {
|
|
52
|
-
const p = SURFACE_PROFILES.copilot;
|
|
53
|
-
expect(p.executionModel).toBe('passive');
|
|
54
|
-
expect(p.format).toBe('single-file');
|
|
55
|
-
expect(p.sessionModel).toBe('stateless');
|
|
56
|
-
expect(p.tokenBudget).toBe(30000);
|
|
57
|
-
expect(p.workflowStyle).toBe('guided');
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
// ── Resolver ──────────────────────────────────────────────────────────
|
|
61
|
-
describe('resolveSurfaceProfile', () => {
|
|
62
|
-
it.each(['claude', 'cursor', 'codex', 'copilot'])('resolves known target "%s" to a valid profile', (target) => {
|
|
63
|
-
const profile = resolveSurfaceProfile(target);
|
|
64
|
-
expect(isValidProfile(profile)).toBe(true);
|
|
65
|
-
});
|
|
66
|
-
it('resolves "claude" to the claude profile', () => {
|
|
67
|
-
expect(resolveSurfaceProfile('claude')).toBe(SURFACE_PROFILES.claude);
|
|
68
|
-
});
|
|
69
|
-
it('resolves "cursor" to the cursor profile', () => {
|
|
70
|
-
expect(resolveSurfaceProfile('cursor')).toBe(SURFACE_PROFILES.cursor);
|
|
71
|
-
});
|
|
72
|
-
it('resolves "codex" to the codex profile', () => {
|
|
73
|
-
expect(resolveSurfaceProfile('codex')).toBe(SURFACE_PROFILES.codex);
|
|
74
|
-
});
|
|
75
|
-
it('resolves "copilot" to the copilot profile', () => {
|
|
76
|
-
expect(resolveSurfaceProfile('copilot')).toBe(SURFACE_PROFILES.copilot);
|
|
77
|
-
});
|
|
78
|
-
it('returns codex profile as fallback for unknown targets', () => {
|
|
79
|
-
expect(resolveSurfaceProfile('unknown-tool')).toBe(SURFACE_PROFILES.codex);
|
|
80
|
-
});
|
|
81
|
-
it('returns codex profile for empty string', () => {
|
|
82
|
-
expect(resolveSurfaceProfile('')).toBe(SURFACE_PROFILES.codex);
|
|
83
|
-
});
|
|
84
|
-
it('fallback profile is a valid profile', () => {
|
|
85
|
-
const fallback = resolveSurfaceProfile('completely-unknown-surface');
|
|
86
|
-
expect(isValidProfile(fallback)).toBe(true);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
//# sourceMappingURL=surface-profiles.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"surface-profiles.test.js","sourceRoot":"","sources":["../../../src/generators/__tests__/surface-profiles.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Onboarding conversation phases — the 5-phase arc for first-time setup.
|
|
3
|
-
* WP-304: Each phase has a directive (what the LLM should do) and exit criteria (what the CLI checks).
|
|
4
|
-
*/
|
|
5
|
-
import type { ConversationPhase } from './conversation-phases.js';
|
|
6
|
-
export declare const ONBOARDING_PHASES: ConversationPhase[];
|
|
7
|
-
/** Check if user wants to skip the conversation. */
|
|
8
|
-
export declare function userWantsToSkip(text: string): boolean;
|
|
9
|
-
//# sourceMappingURL=onboarding-phases.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-phases.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding-phases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,eAAO,MAAM,iBAAiB,EAAE,iBAAiB,EA4GhD,CAAC;AAKF,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
|