@productbrain/cli 0.1.0-beta.92 → 0.1.0-beta.925
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 +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 @@
|
|
|
1
|
+
{"version":3,"file":"setup-ingest.js","sourceRoot":"","sources":["../../src/commands/setup-ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-336 E2 (CLI side): Dual-mode setup asset resolver for `pb handshake`.
|
|
3
|
+
*
|
|
4
|
+
* SetupMode:
|
|
5
|
+
* local — reads skills/rules from .productbrain/ (current builder behavior, default).
|
|
6
|
+
* chain — calls the Convex API (setup.getActiveSurface) and returns Chain-backed assets.
|
|
7
|
+
*
|
|
8
|
+
* The env var PB_SETUP_MODE controls which path runs:
|
|
9
|
+
* unset or 'local' → local mode (no network call, fully offline-safe)
|
|
10
|
+
* 'chain' → chain mode (requires authenticated kernelCall, user workspace)
|
|
11
|
+
*
|
|
12
|
+
* Chain: WP-336 (Agent Surface Foundation), DEC-619 (setup_receipt infrastructure)
|
|
13
|
+
*/
|
|
14
|
+
export type SetupMode = 'local' | 'chain';
|
|
15
|
+
/**
|
|
16
|
+
* Unified asset shape returned by resolveSetupAssets.
|
|
17
|
+
*
|
|
18
|
+
* Local mode: assetKind derived from .productbrain/ directory (skills/ → 'skill', rules/ → 'rule').
|
|
19
|
+
* Chain mode: assetKind comes from the entry's data.assetKind field (seeded by WP-336 E3 seed).
|
|
20
|
+
*
|
|
21
|
+
* The `body` field is the raw Markdown content that gets written to adapter files.
|
|
22
|
+
* The `source` field is informational — used for reporting/telemetry, not for write decisions.
|
|
23
|
+
*/
|
|
24
|
+
export interface SetupAsset {
|
|
25
|
+
assetKind: 'skill' | 'rule' | 'hook';
|
|
26
|
+
displayName: string;
|
|
27
|
+
body: string;
|
|
28
|
+
source: 'seeded' | 'authored' | 'imported';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Wire shape returned by the Convex getActiveSurface query.
|
|
32
|
+
* Must match the return type of convex/setup.ts:getActiveSurface.
|
|
33
|
+
*/
|
|
34
|
+
export interface GetActiveSurfaceResult {
|
|
35
|
+
assetId: string;
|
|
36
|
+
assetKind: string;
|
|
37
|
+
displayName: string;
|
|
38
|
+
shortDescription: string;
|
|
39
|
+
body: string;
|
|
40
|
+
version: number;
|
|
41
|
+
source: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns the active SetupMode.
|
|
45
|
+
* Reads PB_SETUP_MODE from process.env.
|
|
46
|
+
* Unknown values default to 'local' (fail-open for forward compat).
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSetupMode(): SetupMode;
|
|
49
|
+
/**
|
|
50
|
+
* Resolve setup assets for the current mode.
|
|
51
|
+
*
|
|
52
|
+
* @param mode - 'local' | 'chain', from getSetupMode()
|
|
53
|
+
* @param kernelCall - authenticated kernelCall function (from packages/cli/src/lib/client.ts)
|
|
54
|
+
* Only called in chain mode.
|
|
55
|
+
* @param cwd - current working directory (for .productbrain/ path resolution)
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveSetupAssets(mode: SetupMode, kernelCall: <T>(fn: string, args: Record<string, unknown>) => Promise<T>, cwd: string): Promise<SetupAsset[]>;
|
|
58
|
+
//# sourceMappingURL=setup-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-resolver.d.ts","sourceRoot":"","sources":["../../src/commands/setup-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAIxC;AA6HD;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EACxE,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,EAAE,CAAC,CAQvB"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-336 E2 (CLI side): Dual-mode setup asset resolver for `pb handshake`.
|
|
3
|
+
*
|
|
4
|
+
* SetupMode:
|
|
5
|
+
* local — reads skills/rules from .productbrain/ (current builder behavior, default).
|
|
6
|
+
* chain — calls the Convex API (setup.getActiveSurface) and returns Chain-backed assets.
|
|
7
|
+
*
|
|
8
|
+
* The env var PB_SETUP_MODE controls which path runs:
|
|
9
|
+
* unset or 'local' → local mode (no network call, fully offline-safe)
|
|
10
|
+
* 'chain' → chain mode (requires authenticated kernelCall, user workspace)
|
|
11
|
+
*
|
|
12
|
+
* Chain: WP-336 (Agent Surface Foundation), DEC-619 (setup_receipt infrastructure)
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
15
|
+
import { join, basename } from 'path';
|
|
16
|
+
// ── Mode resolution ───────────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Returns the active SetupMode.
|
|
19
|
+
* Reads PB_SETUP_MODE from process.env.
|
|
20
|
+
* Unknown values default to 'local' (fail-open for forward compat).
|
|
21
|
+
*/
|
|
22
|
+
export function getSetupMode() {
|
|
23
|
+
const raw = process.env.PB_SETUP_MODE;
|
|
24
|
+
if (raw === 'chain')
|
|
25
|
+
return 'chain';
|
|
26
|
+
return 'local';
|
|
27
|
+
}
|
|
28
|
+
// ── Local mode ────────────────────────────────────────────────────────────────
|
|
29
|
+
/**
|
|
30
|
+
* Read a single Markdown file from a .productbrain/ sub-directory.
|
|
31
|
+
* Returns the file body after stripping a minimal YAML frontmatter block
|
|
32
|
+
* (lines between opening and closing ---). If no frontmatter is found,
|
|
33
|
+
* returns the full file content unchanged.
|
|
34
|
+
*
|
|
35
|
+
* We intentionally keep this light — the local mode is a contract test pass-through
|
|
36
|
+
* that verifies parity with the existing handshake.ts lines 443–507 pipeline.
|
|
37
|
+
*/
|
|
38
|
+
function stripFrontmatter(raw) {
|
|
39
|
+
const lines = raw.split('\n');
|
|
40
|
+
if (lines[0]?.trim() !== '---')
|
|
41
|
+
return raw;
|
|
42
|
+
const closeIdx = lines.indexOf('---', 1);
|
|
43
|
+
if (closeIdx === -1)
|
|
44
|
+
return raw;
|
|
45
|
+
return lines.slice(closeIdx + 1).join('\n').trimStart();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read skills from .productbrain/skills/ and map them to SetupAsset[].
|
|
49
|
+
* Mirrors the shape produced by readCanonicalSkills() in portable-knowledge.ts.
|
|
50
|
+
* Does NOT apply level/stage filtering — that remains in the handshake pipeline.
|
|
51
|
+
*/
|
|
52
|
+
function readLocalSkillAssets(pbDir) {
|
|
53
|
+
const skillsDir = join(pbDir, 'skills');
|
|
54
|
+
if (!existsSync(skillsDir))
|
|
55
|
+
return [];
|
|
56
|
+
const files = readdirSync(skillsDir).filter((f) => f.endsWith('.md'));
|
|
57
|
+
return files.map((file) => {
|
|
58
|
+
const raw = readFileSync(join(skillsDir, file), 'utf8');
|
|
59
|
+
const displayName = basename(file, '.md');
|
|
60
|
+
return {
|
|
61
|
+
assetKind: 'skill',
|
|
62
|
+
displayName,
|
|
63
|
+
body: stripFrontmatter(raw),
|
|
64
|
+
source: 'authored',
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Read rules from .productbrain/rules/ and map them to SetupAsset[].
|
|
70
|
+
* Mirrors the shape produced by readCanonicalRules() in portable-knowledge.ts.
|
|
71
|
+
*/
|
|
72
|
+
function readLocalRuleAssets(pbDir) {
|
|
73
|
+
const rulesDir = join(pbDir, 'rules');
|
|
74
|
+
if (!existsSync(rulesDir))
|
|
75
|
+
return [];
|
|
76
|
+
const files = readdirSync(rulesDir).filter((f) => f.endsWith('.md'));
|
|
77
|
+
return files.map((file) => {
|
|
78
|
+
const raw = readFileSync(join(rulesDir, file), 'utf8');
|
|
79
|
+
const displayName = basename(file, '.md');
|
|
80
|
+
return {
|
|
81
|
+
assetKind: 'rule',
|
|
82
|
+
displayName,
|
|
83
|
+
body: stripFrontmatter(raw),
|
|
84
|
+
source: 'authored',
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Local mode: return skills + rules from .productbrain/.
|
|
90
|
+
*
|
|
91
|
+
* This is the identity pass-through — the assets returned here are the same
|
|
92
|
+
* files that handshake.ts lines 443–507 already read via readCanonicalSkills()
|
|
93
|
+
* and readCanonicalRules(). The resolver does NOT replace those calls; it is a
|
|
94
|
+
* parallel view used for contract testing and mode-switching.
|
|
95
|
+
*/
|
|
96
|
+
function resolveLocalAssets(pbDir) {
|
|
97
|
+
return [
|
|
98
|
+
...readLocalSkillAssets(pbDir),
|
|
99
|
+
...readLocalRuleAssets(pbDir),
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
// ── Chain mode ────────────────────────────────────────────────────────────────
|
|
103
|
+
/**
|
|
104
|
+
* Map a raw GetActiveSurfaceResult to a typed SetupAsset.
|
|
105
|
+
* Falls back gracefully on unexpected assetKind values.
|
|
106
|
+
*/
|
|
107
|
+
function mapChainAsset(raw) {
|
|
108
|
+
const assetKind = raw.assetKind === 'rule' ? 'rule'
|
|
109
|
+
: raw.assetKind === 'hook' ? 'hook'
|
|
110
|
+
: 'skill'; // default — skill is the safe fallback
|
|
111
|
+
const source = raw.source === 'authored' ? 'authored'
|
|
112
|
+
: raw.source === 'imported' ? 'imported'
|
|
113
|
+
: 'seeded';
|
|
114
|
+
return {
|
|
115
|
+
assetKind,
|
|
116
|
+
displayName: raw.displayName,
|
|
117
|
+
body: raw.body,
|
|
118
|
+
source,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Chain mode: call setup.getActiveSurface via the AKI gateway and return assets.
|
|
123
|
+
*
|
|
124
|
+
* workspaceId is injected server-side by the gateway (BR-18).
|
|
125
|
+
* personId is injected server-side by injectSessionAuth — the CLI does not pass it.
|
|
126
|
+
*
|
|
127
|
+
* @param kernelCall - the authenticated kernelCall function from the handshake flow
|
|
128
|
+
*/
|
|
129
|
+
async function resolveChainAssets(kernelCall) {
|
|
130
|
+
const results = await kernelCall('setup.getActiveSurface', {});
|
|
131
|
+
return results.map(mapChainAsset);
|
|
132
|
+
}
|
|
133
|
+
// ── Public API ────────────────────────────────────────────────────────────────
|
|
134
|
+
/**
|
|
135
|
+
* Resolve setup assets for the current mode.
|
|
136
|
+
*
|
|
137
|
+
* @param mode - 'local' | 'chain', from getSetupMode()
|
|
138
|
+
* @param kernelCall - authenticated kernelCall function (from packages/cli/src/lib/client.ts)
|
|
139
|
+
* Only called in chain mode.
|
|
140
|
+
* @param cwd - current working directory (for .productbrain/ path resolution)
|
|
141
|
+
*/
|
|
142
|
+
export async function resolveSetupAssets(mode, kernelCall, cwd) {
|
|
143
|
+
if (mode === 'chain') {
|
|
144
|
+
return resolveChainAssets(kernelCall);
|
|
145
|
+
}
|
|
146
|
+
// local mode — read from .productbrain/ (synchronous, no network)
|
|
147
|
+
const pbDir = join(cwd, '.productbrain');
|
|
148
|
+
return resolveLocalAssets(pbDir);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=setup-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-resolver.js","sourceRoot":"","sources":["../../src/commands/setup-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pb setup-state` — WP-431 S3.
|
|
3
|
+
*
|
|
4
|
+
* Calls the Convex `getPbSetupState` query and emits the result as compact JSON
|
|
5
|
+
* on stdout. Machine-readable always — the skill body parses this.
|
|
6
|
+
*
|
|
7
|
+
* Auth & userId injection (STD-234 perimeter):
|
|
8
|
+
* The HTTP gateway derives `workspaceId` and `userId` from the API key and
|
|
9
|
+
* passes them server-side; the CLI does not need to know the user's id.
|
|
10
|
+
* Defense-in-depth equality check happens inside the query handler.
|
|
11
|
+
*
|
|
12
|
+
* Exit codes (CLI convention):
|
|
13
|
+
* 0 success — JSON written to stdout
|
|
14
|
+
* 2 auth/permission — AUTH_* / AUTHZ_* error class
|
|
15
|
+
* 3 network — host unreachable / fetch failed
|
|
16
|
+
* 1 other (validation / internal)
|
|
17
|
+
*/
|
|
18
|
+
export interface RunSetupStateOptions {
|
|
19
|
+
/** Pre-fetched state — used by `pb setup` to avoid a duplicate gateway round-trip. */
|
|
20
|
+
preloaded?: SetupStateResult;
|
|
21
|
+
}
|
|
22
|
+
export interface SetupStateResult {
|
|
23
|
+
phase: number | 'settings';
|
|
24
|
+
role: 'creator' | 'joiner';
|
|
25
|
+
expectedAction: string;
|
|
26
|
+
reasonForPhase: string;
|
|
27
|
+
isComplete: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* WP-431 S3 review fix #1: structural surfaceCapability passthrough.
|
|
30
|
+
* Mirrors the resolver output (PbSetupStateOutput.surfaceCapability).
|
|
31
|
+
*/
|
|
32
|
+
surfaceCapability: 'cli' | 'chat-only';
|
|
33
|
+
}
|
|
34
|
+
export declare function fetchSetupState(): Promise<SetupStateResult>;
|
|
35
|
+
export declare function runSetupState(opts?: RunSetupStateOptions): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Map a setup-state failure to the documented exit-code contract.
|
|
38
|
+
* Always re-throws (typed `never`) so the global handler in index.ts can format
|
|
39
|
+
* the message; we route through CLIError so JSON mode reports `code` cleanly.
|
|
40
|
+
*/
|
|
41
|
+
export declare function handleSetupError(err: unknown): never;
|
|
42
|
+
//# sourceMappingURL=setup-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-state.d.ts","sourceRoot":"","sources":["../../src/commands/setup-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,iBAAiB,EAAE,KAAK,GAAG,WAAW,CAAC;CACxC;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAEjE;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAiCpD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `pb setup-state` — WP-431 S3.
|
|
3
|
+
*
|
|
4
|
+
* Calls the Convex `getPbSetupState` query and emits the result as compact JSON
|
|
5
|
+
* on stdout. Machine-readable always — the skill body parses this.
|
|
6
|
+
*
|
|
7
|
+
* Auth & userId injection (STD-234 perimeter):
|
|
8
|
+
* The HTTP gateway derives `workspaceId` and `userId` from the API key and
|
|
9
|
+
* passes them server-side; the CLI does not need to know the user's id.
|
|
10
|
+
* Defense-in-depth equality check happens inside the query handler.
|
|
11
|
+
*
|
|
12
|
+
* Exit codes (CLI convention):
|
|
13
|
+
* 0 success — JSON written to stdout
|
|
14
|
+
* 2 auth/permission — AUTH_* / AUTHZ_* error class
|
|
15
|
+
* 3 network — host unreachable / fetch failed
|
|
16
|
+
* 1 other (validation / internal)
|
|
17
|
+
*/
|
|
18
|
+
import { kernelCall, McpError } from '../lib/client.js';
|
|
19
|
+
import { CLIError, ErrorCode } from '../lib/errors.js';
|
|
20
|
+
export async function fetchSetupState() {
|
|
21
|
+
return await kernelCall('setup.getPbSetupState', {});
|
|
22
|
+
}
|
|
23
|
+
export async function runSetupState(opts = {}) {
|
|
24
|
+
let result;
|
|
25
|
+
try {
|
|
26
|
+
result = opts.preloaded ?? (await fetchSetupState());
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
handleSetupError(err);
|
|
30
|
+
}
|
|
31
|
+
process.stdout.write(JSON.stringify(result) + '\n');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Map a setup-state failure to the documented exit-code contract.
|
|
35
|
+
* Always re-throws (typed `never`) so the global handler in index.ts can format
|
|
36
|
+
* the message; we route through CLIError so JSON mode reports `code` cleanly.
|
|
37
|
+
*/
|
|
38
|
+
export function handleSetupError(err) {
|
|
39
|
+
if (err instanceof McpError) {
|
|
40
|
+
const code = err.code;
|
|
41
|
+
if (code && (code.startsWith('AUTH') || code.startsWith('AUTHZ'))) {
|
|
42
|
+
const wrapped = new CLIError(err.message, {
|
|
43
|
+
code: ErrorCode.AUTH_DENIED,
|
|
44
|
+
category: 'auth',
|
|
45
|
+
guidance: 'Run `pb login` to refresh your API key, or check workspace membership.',
|
|
46
|
+
});
|
|
47
|
+
writeJsonError(wrapped);
|
|
48
|
+
process.exit(2);
|
|
49
|
+
}
|
|
50
|
+
writeJsonError(err);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
if (err instanceof CLIError && err.category === 'network') {
|
|
54
|
+
writeJsonError(err);
|
|
55
|
+
process.exit(3);
|
|
56
|
+
}
|
|
57
|
+
if (err instanceof CLIError && err.category === 'auth') {
|
|
58
|
+
writeJsonError(err);
|
|
59
|
+
process.exit(2);
|
|
60
|
+
}
|
|
61
|
+
if (err instanceof CLIError) {
|
|
62
|
+
writeJsonError(err);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
const wrapped = new CLIError(err instanceof Error ? err.message : String(err), {
|
|
66
|
+
code: ErrorCode.INTERNAL,
|
|
67
|
+
category: 'internal',
|
|
68
|
+
});
|
|
69
|
+
writeJsonError(wrapped);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Write a structured JSON error to stderr. WP-431 S3 review (Boy Scout #2):
|
|
74
|
+
* route every shape through CLIError.toJSON() so the stderr envelope is
|
|
75
|
+
* identical to every other CLI command (no per-call ad-hoc shapes).
|
|
76
|
+
*/
|
|
77
|
+
function writeJsonError(err) {
|
|
78
|
+
const cliErr = toCLIError(err);
|
|
79
|
+
process.stderr.write(JSON.stringify(cliErr.toJSON()) + '\n');
|
|
80
|
+
}
|
|
81
|
+
function toCLIError(err) {
|
|
82
|
+
if (err instanceof CLIError)
|
|
83
|
+
return err;
|
|
84
|
+
if (err instanceof Error) {
|
|
85
|
+
const code = err.code;
|
|
86
|
+
const errorCode = code && Object.values(ErrorCode).includes(code)
|
|
87
|
+
? code
|
|
88
|
+
: ErrorCode.INTERNAL;
|
|
89
|
+
return new CLIError(err.message, { code: errorCode, category: 'internal' });
|
|
90
|
+
}
|
|
91
|
+
return new CLIError(String(err), { code: ErrorCode.INTERNAL, category: 'internal' });
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=setup-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-state.js","sourceRoot":"","sources":["../../src/commands/setup-state.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pb setup —
|
|
3
|
-
* WP-301 Slice 3. Each step emits telemetry (STD-155 event names).
|
|
2
|
+
* `pb setup` — WP-431 S3 canonical entry point (DEC-995).
|
|
4
3
|
*
|
|
5
4
|
* Flow:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* 1. Auto-detect surface markers and union-merge into `manifest.surfaces` (S3 #1).
|
|
6
|
+
* Phase-1 users land here with empty surfaces; this single auto-detect lifts
|
|
7
|
+
* them to Phase 2 without requiring a separate `pb setup-detect-surfaces` run.
|
|
8
|
+
* 2. Read pb-setup state via the Convex query (`setup.getPbSetupState`).
|
|
9
|
+
* 3. Record invocation receipt — first-write-wins per DEC-996, idempotent.
|
|
10
|
+
* 4. Emit the resolved state JSON on stdout for the skill body to consume.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* `pb start` (session-start alias) is unchanged and keeps the same call path it
|
|
13
|
+
* had before this slice.
|
|
14
|
+
*
|
|
15
|
+
* Legacy `pb setup` (WP-301) — guided onboarding via @clack/prompts — is removed
|
|
16
|
+
* from the canonical entry per DEC-995. The login flow remains reachable via
|
|
17
|
+
* `pb login`.
|
|
13
18
|
*/
|
|
14
|
-
export
|
|
19
|
+
export interface RunSetupOptions {
|
|
20
|
+
cwd?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function runSetup(opts?: RunSetupOptions): Promise<void>;
|
|
15
23
|
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxE"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,148 +1,69 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pb setup —
|
|
3
|
-
* WP-301 Slice 3. Each step emits telemetry (STD-155 event names).
|
|
2
|
+
* `pb setup` — WP-431 S3 canonical entry point (DEC-995).
|
|
4
3
|
*
|
|
5
4
|
* Flow:
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* 1. Auto-detect surface markers and union-merge into `manifest.surfaces` (S3 #1).
|
|
6
|
+
* Phase-1 users land here with empty surfaces; this single auto-detect lifts
|
|
7
|
+
* them to Phase 2 without requiring a separate `pb setup-detect-surfaces` run.
|
|
8
|
+
* 2. Read pb-setup state via the Convex query (`setup.getPbSetupState`).
|
|
9
|
+
* 3. Record invocation receipt — first-write-wins per DEC-996, idempotent.
|
|
10
|
+
* 4. Emit the resolved state JSON on stdout for the skill body to consume.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* `pb start` (session-start alias) is unchanged and keeps the same call path it
|
|
13
|
+
* had before this slice.
|
|
14
|
+
*
|
|
15
|
+
* Legacy `pb setup` (WP-301) — guided onboarding via @clack/prompts — is removed
|
|
16
|
+
* from the canonical entry per DEC-995. The login flow remains reachable via
|
|
17
|
+
* `pb login`.
|
|
13
18
|
*/
|
|
14
|
-
import {
|
|
19
|
+
import { runSetupDetectSurfaces, formatDetectSurfacesSummary } from './setup-detect-surfaces.js';
|
|
20
|
+
import { fetchSetupState, handleSetupError } from './setup-state.js';
|
|
15
21
|
import { kernelCall } from '../lib/client.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import { confirm as promptConfirm } from '../lib/prompts.js';
|
|
21
|
-
import { bold } from '../lib/style.js';
|
|
22
|
-
/** Mask an API key for display: show prefix + last 4 chars. */
|
|
23
|
-
function maskKey(key) {
|
|
24
|
-
if (key.length <= 10)
|
|
25
|
-
return key.slice(0, 6) + '****';
|
|
26
|
-
return key.slice(0, 6) + '...' + key.slice(-4);
|
|
27
|
-
}
|
|
28
|
-
export async function runSetup() {
|
|
29
|
-
await runSetupFlow();
|
|
30
|
-
}
|
|
31
|
-
async function runSetupFlow() {
|
|
32
|
-
console.log('');
|
|
33
|
-
console.log('Product Brain — Setup');
|
|
34
|
-
console.log('=====================');
|
|
35
|
-
console.log('');
|
|
36
|
-
// Step 1: Check existing config
|
|
37
|
-
let hasValidConfig = false;
|
|
22
|
+
export async function runSetup(opts = {}) {
|
|
23
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
24
|
+
const isTty = Boolean(process.stdout.isTTY);
|
|
25
|
+
let initialState;
|
|
38
26
|
try {
|
|
39
|
-
|
|
40
|
-
hasValidConfig = true;
|
|
41
|
-
console.log(`Already configured: ${maskKey(config.apiKey)}`);
|
|
42
|
-
console.log(`API endpoint: ${config.siteUrl}`);
|
|
43
|
-
console.log('');
|
|
44
|
-
// Verify workspace connectivity
|
|
45
|
-
let wsName = 'your workspace';
|
|
46
|
-
let wsId;
|
|
47
|
-
try {
|
|
48
|
-
const workspace = await kernelCall('resolveWorkspace', {});
|
|
49
|
-
if (workspace?.name) {
|
|
50
|
-
console.log(`Connected to workspace: ${workspace.name}`);
|
|
51
|
-
wsName = workspace.name;
|
|
52
|
-
wsId = workspace._id;
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
console.log('Workspace connection verified.');
|
|
56
|
-
}
|
|
57
|
-
trackEvent('workspace_bound');
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
console.log('Warning: Could not verify workspace connection. Your key may be invalid.');
|
|
61
|
-
console.log('Run `pb login` to re-enter your API key.');
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
console.log('');
|
|
65
|
-
// Already configured — go straight to onboarding conversation (WP-304)
|
|
66
|
-
await ensureSessionAndOnboard(wsName, wsId);
|
|
67
|
-
return;
|
|
27
|
+
initialState = await fetchSetupState();
|
|
68
28
|
}
|
|
69
|
-
catch {
|
|
70
|
-
|
|
29
|
+
catch (err) {
|
|
30
|
+
handleSetupError(err);
|
|
71
31
|
}
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
console.log('Create an account at: https://productbrain.io');
|
|
80
|
-
console.log('Then come back and run: pb setup');
|
|
81
|
-
console.log('');
|
|
82
|
-
return;
|
|
32
|
+
// Always record invocation — first-write-wins per DEC-996.
|
|
33
|
+
await recordInvocationBestEffort(initialState);
|
|
34
|
+
let finalState = initialState;
|
|
35
|
+
if (initialState.phase === 1) {
|
|
36
|
+
const detect = await runSetupDetectSurfaces({ cwd });
|
|
37
|
+
if (isTty) {
|
|
38
|
+
process.stderr.write(formatDetectSurfacesSummary(detect) + '\n');
|
|
83
39
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
async function runSetupPostLogin() {
|
|
93
|
-
console.log('');
|
|
94
|
-
let wsName = 'your workspace';
|
|
95
|
-
let wsId;
|
|
96
|
-
try {
|
|
97
|
-
const workspace = await kernelCall('resolveWorkspace', {});
|
|
98
|
-
if (workspace?.name) {
|
|
99
|
-
console.log(`Connected to workspace: ${workspace.name}`);
|
|
100
|
-
wsName = workspace.name;
|
|
101
|
-
wsId = workspace._id;
|
|
40
|
+
if (detect.manifestUpdated) {
|
|
41
|
+
try {
|
|
42
|
+
finalState = await fetchSetupState();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
handleSetupError(err);
|
|
46
|
+
}
|
|
102
47
|
}
|
|
103
|
-
trackEvent('workspace_bound');
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
console.log('Could not reach workspace. Try: pb orient -b');
|
|
107
|
-
return;
|
|
108
48
|
}
|
|
109
|
-
|
|
49
|
+
process.stdout.write(JSON.stringify(finalState) + '\n');
|
|
110
50
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return;
|
|
121
|
-
const result = await kernelCall('agent.startSession', {
|
|
122
|
-
workspaceId: resolvedWs._id,
|
|
123
|
-
apiKeyId: resolvedWs.keyId,
|
|
124
|
-
clientKind: 'cli',
|
|
125
|
-
});
|
|
126
|
-
session = {
|
|
127
|
-
sessionId: result.sessionId,
|
|
128
|
-
workspaceId: resolvedWs._id,
|
|
129
|
-
workspaceName: workspaceName,
|
|
130
|
-
startedAt: new Date().toISOString(),
|
|
131
|
-
entriesCaptured: [],
|
|
132
|
-
};
|
|
133
|
-
writeSession(session);
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
// Session start failed — onboarding can still work for reads
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Initialize telemetry with workspace context
|
|
140
|
-
if (session?.workspaceId) {
|
|
141
|
-
initTelemetry(session.workspaceId);
|
|
51
|
+
async function recordInvocationBestEffort(state) {
|
|
52
|
+
// WP-431 S3 review fix #1: surfaceCapability is now a structural field on the
|
|
53
|
+
// resolver output (PbSetupStateOutput.surfaceCapability) — read it directly
|
|
54
|
+
// rather than string-grepping reasonForPhase strings the producer never
|
|
55
|
+
// emits. The pre-fix `inferSurfaceCapability` always returned 'cli' for
|
|
56
|
+
// chat-only users, silently breaking KEY-32 dual-threshold telemetry.
|
|
57
|
+
const surfaceCapability = state.surfaceCapability;
|
|
58
|
+
try {
|
|
59
|
+
await kernelCall('setup.recordSetupInvocation', { surfaceCapability });
|
|
142
60
|
}
|
|
143
|
-
|
|
144
|
-
|
|
61
|
+
catch (err) {
|
|
62
|
+
// Best-effort — invocation receipt is telemetry, never block the state
|
|
63
|
+
// read. WP-431 S3 review (Boy Scout #1): log to stderr so a silent failure
|
|
64
|
+
// doesn't strand KEY-32 dual-threshold attribution.
|
|
65
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
66
|
+
process.stderr.write(`[pb setup] invocation attribution failed: ${message}\n`);
|
|
145
67
|
}
|
|
146
|
-
process.stdout.write(`\n Setup complete. Run ${bold('pb session start')} to begin a session.\n\n`);
|
|
147
68
|
}
|
|
148
69
|
//# sourceMappingURL=setup.js.map
|