@productbrain/cli 0.1.0-beta.7 → 0.1.0-beta.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +98 -30
- package/dist/__tests__/adapters.test.d.ts +2 -0
- package/dist/__tests__/adapters.test.d.ts.map +1 -0
- package/dist/__tests__/adapters.test.js +417 -0
- package/dist/__tests__/adapters.test.js.map +1 -0
- package/dist/__tests__/audit.test.d.ts +2 -0
- package/dist/__tests__/audit.test.d.ts.map +1 -0
- package/dist/__tests__/audit.test.js +394 -0
- package/dist/__tests__/audit.test.js.map +1 -0
- package/dist/__tests__/batch-transformations.test.d.ts +2 -0
- package/dist/__tests__/batch-transformations.test.d.ts.map +1 -0
- package/dist/__tests__/batch-transformations.test.js +263 -0
- package/dist/__tests__/batch-transformations.test.js.map +1 -0
- package/dist/__tests__/capture.test.d.ts +2 -0
- package/dist/__tests__/capture.test.d.ts.map +1 -0
- package/dist/__tests__/capture.test.js +377 -0
- package/dist/__tests__/capture.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +8 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +166 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/constants.test.d.ts +2 -0
- package/dist/__tests__/constants.test.d.ts.map +1 -0
- package/dist/__tests__/constants.test.js +141 -0
- package/dist/__tests__/constants.test.js.map +1 -0
- package/dist/__tests__/constellation.test.d.ts +2 -0
- package/dist/__tests__/constellation.test.d.ts.map +1 -0
- package/dist/__tests__/constellation.test.js +254 -0
- package/dist/__tests__/constellation.test.js.map +1 -0
- package/dist/__tests__/context-strategy.test.d.ts +2 -0
- package/dist/__tests__/context-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/context-strategy.test.js +79 -0
- package/dist/__tests__/context-strategy.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +117 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/experiment.test.d.ts +6 -0
- package/dist/__tests__/experiment.test.d.ts.map +1 -0
- package/dist/__tests__/experiment.test.js +69 -0
- package/dist/__tests__/experiment.test.js.map +1 -0
- package/dist/__tests__/fields.test.d.ts +2 -0
- package/dist/__tests__/fields.test.d.ts.map +1 -0
- package/dist/__tests__/fields.test.js +238 -0
- package/dist/__tests__/fields.test.js.map +1 -0
- package/dist/__tests__/glossary.test.d.ts +2 -0
- package/dist/__tests__/glossary.test.d.ts.map +1 -0
- package/dist/__tests__/glossary.test.js +32 -0
- package/dist/__tests__/glossary.test.js.map +1 -0
- package/dist/__tests__/handshake.test.d.ts +2 -0
- package/dist/__tests__/handshake.test.d.ts.map +1 -0
- package/dist/__tests__/handshake.test.js +196 -0
- package/dist/__tests__/handshake.test.js.map +1 -0
- package/dist/__tests__/ingest.test.js +98 -0
- package/dist/__tests__/ingest.test.js.map +1 -1
- package/dist/__tests__/init.test.d.ts +7 -0
- package/dist/__tests__/init.test.d.ts.map +1 -0
- package/dist/__tests__/init.test.js +146 -0
- package/dist/__tests__/init.test.js.map +1 -0
- package/dist/__tests__/login.test.d.ts +2 -0
- package/dist/__tests__/login.test.d.ts.map +1 -0
- package/dist/__tests__/login.test.js +167 -0
- package/dist/__tests__/login.test.js.map +1 -0
- package/dist/__tests__/onboarding-path-b.test.d.ts +2 -0
- package/dist/__tests__/onboarding-path-b.test.d.ts.map +1 -0
- package/dist/__tests__/onboarding-path-b.test.js +46 -0
- package/dist/__tests__/onboarding-path-b.test.js.map +1 -0
- package/dist/__tests__/onboarding.test.d.ts +6 -0
- package/dist/__tests__/onboarding.test.d.ts.map +1 -0
- package/dist/__tests__/onboarding.test.js +347 -0
- package/dist/__tests__/onboarding.test.js.map +1 -0
- package/dist/__tests__/orient.test.d.ts +2 -0
- package/dist/__tests__/orient.test.d.ts.map +1 -0
- package/dist/__tests__/orient.test.js +143 -0
- package/dist/__tests__/orient.test.js.map +1 -0
- package/dist/__tests__/profiles.test.d.ts +2 -0
- package/dist/__tests__/profiles.test.d.ts.map +1 -0
- package/dist/__tests__/profiles.test.js +168 -0
- package/dist/__tests__/profiles.test.js.map +1 -0
- package/dist/__tests__/promote.test.d.ts +2 -0
- package/dist/__tests__/promote.test.d.ts.map +1 -0
- package/dist/__tests__/promote.test.js +161 -0
- package/dist/__tests__/promote.test.js.map +1 -0
- package/dist/__tests__/prompts.test.d.ts +6 -0
- package/dist/__tests__/prompts.test.d.ts.map +1 -0
- package/dist/__tests__/prompts.test.js +146 -0
- package/dist/__tests__/prompts.test.js.map +1 -0
- package/dist/__tests__/proposals.test.d.ts +2 -0
- package/dist/__tests__/proposals.test.d.ts.map +1 -0
- package/dist/__tests__/proposals.test.js +167 -0
- package/dist/__tests__/proposals.test.js.map +1 -0
- package/dist/__tests__/relate.test.d.ts +2 -0
- package/dist/__tests__/relate.test.d.ts.map +1 -0
- package/dist/__tests__/relate.test.js +103 -0
- package/dist/__tests__/relate.test.js.map +1 -0
- package/dist/__tests__/repo-detect.test.d.ts +2 -0
- package/dist/__tests__/repo-detect.test.d.ts.map +1 -0
- package/dist/__tests__/repo-detect.test.js +215 -0
- package/dist/__tests__/repo-detect.test.js.map +1 -0
- package/dist/__tests__/runner.test.d.ts +2 -0
- package/dist/__tests__/runner.test.d.ts.map +1 -0
- package/dist/__tests__/runner.test.js +219 -0
- package/dist/__tests__/runner.test.js.map +1 -0
- package/dist/__tests__/session-touch.test.d.ts +2 -0
- package/dist/__tests__/session-touch.test.d.ts.map +1 -0
- package/dist/__tests__/session-touch.test.js +134 -0
- package/dist/__tests__/session-touch.test.js.map +1 -0
- package/dist/__tests__/session.test.d.ts +2 -0
- package/dist/__tests__/session.test.d.ts.map +1 -0
- package/dist/__tests__/session.test.js +46 -0
- package/dist/__tests__/session.test.js.map +1 -0
- package/dist/__tests__/setup.test.d.ts +2 -0
- package/dist/__tests__/setup.test.d.ts.map +1 -0
- package/dist/__tests__/setup.test.js +141 -0
- package/dist/__tests__/setup.test.js.map +1 -0
- package/dist/__tests__/spinner-labels.test.d.ts +2 -0
- package/dist/__tests__/spinner-labels.test.d.ts.map +1 -0
- package/dist/__tests__/spinner-labels.test.js +23 -0
- package/dist/__tests__/spinner-labels.test.js.map +1 -0
- package/dist/__tests__/strip.test.d.ts +2 -0
- package/dist/__tests__/strip.test.d.ts.map +1 -0
- package/dist/__tests__/strip.test.js +136 -0
- package/dist/__tests__/strip.test.js.map +1 -0
- package/dist/__tests__/surface-profiles.test.d.ts +2 -0
- package/dist/__tests__/surface-profiles.test.d.ts.map +1 -0
- package/dist/__tests__/surface-profiles.test.js +233 -0
- package/dist/__tests__/surface-profiles.test.js.map +1 -0
- package/dist/__tests__/update.test.d.ts +2 -0
- package/dist/__tests__/update.test.d.ts.map +1 -0
- package/dist/__tests__/update.test.js +228 -0
- package/dist/__tests__/update.test.js.map +1 -0
- package/dist/__tests__/workspace.test.d.ts +2 -0
- package/dist/__tests__/workspace.test.d.ts.map +1 -0
- package/dist/__tests__/workspace.test.js +308 -0
- package/dist/__tests__/workspace.test.js.map +1 -0
- package/dist/commands/accept.d.ts +18 -0
- package/dist/commands/accept.d.ts.map +1 -0
- package/dist/commands/accept.js +76 -0
- package/dist/commands/accept.js.map +1 -0
- package/dist/commands/admin/cockpit.d.ts +88 -0
- package/dist/commands/admin/cockpit.d.ts.map +1 -0
- package/dist/commands/admin/cockpit.js +409 -0
- package/dist/commands/admin/cockpit.js.map +1 -0
- package/dist/commands/admin/index.d.ts +21 -0
- package/dist/commands/admin/index.d.ts.map +1 -0
- package/dist/commands/admin/index.js +254 -0
- package/dist/commands/admin/index.js.map +1 -0
- package/dist/commands/admin/inspect.d.ts +21 -0
- package/dist/commands/admin/inspect.d.ts.map +1 -0
- package/dist/commands/admin/inspect.js +536 -0
- package/dist/commands/admin/inspect.js.map +1 -0
- package/dist/commands/admin/inspect.test.d.ts +7 -0
- package/dist/commands/admin/inspect.test.d.ts.map +1 -0
- package/dist/commands/admin/inspect.test.js +71 -0
- package/dist/commands/admin/inspect.test.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +32 -0
- package/dist/commands/admin/seed.d.ts.map +1 -0
- package/dist/commands/admin/seed.js +527 -0
- package/dist/commands/admin/seed.js.map +1 -0
- package/dist/commands/admin/seed.test.d.ts +6 -0
- package/dist/commands/admin/seed.test.d.ts.map +1 -0
- package/dist/commands/admin/seed.test.js +65 -0
- package/dist/commands/admin/seed.test.js.map +1 -0
- package/dist/commands/audit.d.ts +25 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +188 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/brand-pack.d.ts +2 -0
- package/dist/commands/brand-pack.d.ts.map +1 -0
- package/dist/commands/brand-pack.js +25 -0
- package/dist/commands/brand-pack.js.map +1 -0
- package/dist/commands/brief.d.ts +28 -0
- package/dist/commands/brief.d.ts.map +1 -0
- package/dist/commands/brief.js +75 -0
- package/dist/commands/brief.js.map +1 -0
- package/dist/commands/capture.d.ts +30 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +385 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/chain-walk.d.ts +14 -0
- package/dist/commands/chain-walk.d.ts.map +1 -0
- package/dist/commands/chain-walk.js +38 -0
- package/dist/commands/chain-walk.js.map +1 -0
- package/dist/commands/changes.d.ts +11 -0
- package/dist/commands/changes.d.ts.map +1 -0
- package/dist/commands/changes.js +46 -0
- package/dist/commands/changes.js.map +1 -0
- package/dist/commands/codex-prep.d.ts +12 -0
- package/dist/commands/codex-prep.d.ts.map +1 -0
- package/dist/commands/codex-prep.js +122 -0
- package/dist/commands/codex-prep.js.map +1 -0
- package/dist/commands/collections.d.ts +22 -0
- package/dist/commands/collections.d.ts.map +1 -0
- package/dist/commands/collections.js +77 -0
- package/dist/commands/collections.js.map +1 -0
- package/dist/commands/connect-integration.test.d.ts +7 -0
- package/dist/commands/connect-integration.test.d.ts.map +1 -0
- package/dist/commands/connect-integration.test.js +200 -0
- package/dist/commands/connect-integration.test.js.map +1 -0
- package/dist/commands/connect.d.ts +21 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +279 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/connect.test.d.ts +6 -0
- package/dist/commands/connect.test.d.ts.map +1 -0
- package/dist/commands/connect.test.js +230 -0
- package/dist/commands/connect.test.js.map +1 -0
- package/dist/commands/constellation.d.ts +11 -0
- package/dist/commands/constellation.d.ts.map +1 -0
- package/dist/commands/constellation.js +33 -0
- package/dist/commands/constellation.js.map +1 -0
- package/dist/commands/context.d.ts +2 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +20 -9
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/cross-cut.d.ts +11 -0
- package/dist/commands/cross-cut.d.ts.map +1 -0
- package/dist/commands/cross-cut.js +23 -0
- package/dist/commands/cross-cut.js.map +1 -0
- package/dist/commands/doctor.d.ts +18 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +232 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.test.d.ts +8 -0
- package/dist/commands/doctor.test.d.ts.map +1 -0
- package/dist/commands/doctor.test.js +311 -0
- package/dist/commands/doctor.test.js.map +1 -0
- package/dist/commands/fields.d.ts +9 -0
- package/dist/commands/fields.d.ts.map +1 -0
- package/dist/commands/fields.js +30 -0
- package/dist/commands/fields.js.map +1 -0
- package/dist/commands/get.d.ts +8 -1
- package/dist/commands/get.d.ts.map +1 -1
- package/dist/commands/get.js +60 -7
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/handshake.d.ts +28 -0
- package/dist/commands/handshake.d.ts.map +1 -0
- package/dist/commands/handshake.js +617 -0
- package/dist/commands/handshake.js.map +1 -0
- package/dist/commands/ingest.d.ts +8 -2
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +148 -25
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +117 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +101 -38
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/orient.d.ts +107 -1
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +24 -8
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +24 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +82 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/promote.d.ts +12 -0
- package/dist/commands/promote.d.ts.map +1 -0
- package/dist/commands/promote.js +90 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/proposals.d.ts +9 -0
- package/dist/commands/proposals.d.ts.map +1 -0
- package/dist/commands/proposals.js +24 -0
- package/dist/commands/proposals.js.map +1 -0
- package/dist/commands/reject.d.ts +14 -0
- package/dist/commands/reject.d.ts.map +1 -0
- package/dist/commands/reject.js +43 -0
- package/dist/commands/reject.js.map +1 -0
- package/dist/commands/relate.d.ts +16 -0
- package/dist/commands/relate.d.ts.map +1 -0
- package/dist/commands/relate.js +98 -0
- package/dist/commands/relate.js.map +1 -0
- package/dist/commands/search.d.ts +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +5 -3
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session.d.ts +20 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +148 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +15 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +168 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/update.d.ts +17 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +178 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +13 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +49 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/workspace.d.ts +41 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +239 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/formatters/audit.d.ts +46 -0
- package/dist/formatters/audit.d.ts.map +1 -0
- package/dist/formatters/audit.js +81 -0
- package/dist/formatters/audit.js.map +1 -0
- package/dist/formatters/brief.d.ts +112 -0
- package/dist/formatters/brief.d.ts.map +1 -0
- package/dist/formatters/brief.js +179 -0
- package/dist/formatters/brief.js.map +1 -0
- package/dist/formatters/capture.d.ts +48 -0
- package/dist/formatters/capture.d.ts.map +1 -0
- package/dist/formatters/capture.js +77 -0
- package/dist/formatters/capture.js.map +1 -0
- package/dist/formatters/chain-walk.d.ts +33 -0
- package/dist/formatters/chain-walk.d.ts.map +1 -0
- package/dist/formatters/chain-walk.js +54 -0
- package/dist/formatters/chain-walk.js.map +1 -0
- package/dist/formatters/changes.d.ts +25 -0
- package/dist/formatters/changes.d.ts.map +1 -0
- package/dist/formatters/changes.js +60 -0
- package/dist/formatters/changes.js.map +1 -0
- package/dist/formatters/collections.d.ts +40 -0
- package/dist/formatters/collections.d.ts.map +1 -0
- package/dist/formatters/collections.js +93 -0
- package/dist/formatters/collections.js.map +1 -0
- package/dist/formatters/constellation.d.ts +34 -0
- package/dist/formatters/constellation.d.ts.map +1 -0
- package/dist/formatters/constellation.js +38 -0
- package/dist/formatters/constellation.js.map +1 -0
- package/dist/formatters/cross-cut.d.ts +21 -0
- package/dist/formatters/cross-cut.d.ts.map +1 -0
- package/dist/formatters/cross-cut.js +32 -0
- package/dist/formatters/cross-cut.js.map +1 -0
- package/dist/formatters/entry.d.ts +11 -4
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +24 -8
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/fields.d.ts +32 -0
- package/dist/formatters/fields.d.ts.map +1 -0
- package/dist/formatters/fields.js +49 -0
- package/dist/formatters/fields.js.map +1 -0
- package/dist/formatters/handshake.d.ts +24 -0
- package/dist/formatters/handshake.d.ts.map +1 -0
- package/dist/formatters/handshake.js +69 -0
- package/dist/formatters/handshake.js.map +1 -0
- package/dist/formatters/orient.d.ts +104 -1
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +140 -17
- package/dist/formatters/orient.js.map +1 -1
- package/dist/formatters/promote.d.ts +30 -0
- package/dist/formatters/promote.d.ts.map +1 -0
- package/dist/formatters/promote.js +39 -0
- package/dist/formatters/promote.js.map +1 -0
- package/dist/formatters/proposals.d.ts +45 -0
- package/dist/formatters/proposals.d.ts.map +1 -0
- package/dist/formatters/proposals.js +62 -0
- package/dist/formatters/proposals.js.map +1 -0
- package/dist/formatters/relate.d.ts +14 -0
- package/dist/formatters/relate.d.ts.map +1 -0
- package/dist/formatters/relate.js +16 -0
- package/dist/formatters/relate.js.map +1 -0
- package/dist/formatters/search.d.ts +0 -4
- package/dist/formatters/search.d.ts.map +1 -1
- package/dist/formatters/search.js +4 -1
- package/dist/formatters/search.js.map +1 -1
- package/dist/formatters/session.d.ts +11 -0
- package/dist/formatters/session.d.ts.map +1 -0
- package/dist/formatters/session.js +53 -0
- package/dist/formatters/session.js.map +1 -0
- package/dist/formatters/update.d.ts +17 -0
- package/dist/formatters/update.d.ts.map +1 -0
- package/dist/formatters/update.js +45 -0
- package/dist/formatters/update.js.map +1 -0
- package/dist/formatters/verify.d.ts +11 -0
- package/dist/formatters/verify.d.ts.map +1 -0
- package/dist/formatters/verify.js +11 -0
- package/dist/formatters/verify.js.map +1 -0
- package/dist/generators/__tests__/surface-profiles.test.d.ts +2 -0
- package/dist/generators/__tests__/surface-profiles.test.d.ts.map +1 -0
- package/dist/generators/__tests__/surface-profiles.test.js +89 -0
- package/dist/generators/__tests__/surface-profiles.test.js.map +1 -0
- package/dist/generators/adapters.d.ts +44 -0
- package/dist/generators/adapters.d.ts.map +1 -0
- package/dist/generators/adapters.js +290 -0
- package/dist/generators/adapters.js.map +1 -0
- package/dist/generators/adapters.test.d.ts +2 -0
- package/dist/generators/adapters.test.d.ts.map +1 -0
- package/dist/generators/adapters.test.js +27 -0
- package/dist/generators/adapters.test.js.map +1 -0
- package/dist/generators/archetypes.d.ts +52 -0
- package/dist/generators/archetypes.d.ts.map +1 -0
- package/dist/generators/archetypes.js +153 -0
- package/dist/generators/archetypes.js.map +1 -0
- package/dist/generators/archetypes.test.d.ts +2 -0
- package/dist/generators/archetypes.test.d.ts.map +1 -0
- package/dist/generators/archetypes.test.js +237 -0
- package/dist/generators/archetypes.test.js.map +1 -0
- package/dist/generators/briefing-md.d.ts +8 -0
- package/dist/generators/briefing-md.d.ts.map +1 -0
- package/dist/generators/briefing-md.js +51 -0
- package/dist/generators/briefing-md.js.map +1 -0
- package/dist/generators/chain-classifier.d.ts +49 -0
- package/dist/generators/chain-classifier.d.ts.map +1 -0
- package/dist/generators/chain-classifier.js +180 -0
- package/dist/generators/chain-classifier.js.map +1 -0
- package/dist/generators/chain-classifier.test.d.ts +2 -0
- package/dist/generators/chain-classifier.test.d.ts.map +1 -0
- package/dist/generators/chain-classifier.test.js +257 -0
- package/dist/generators/chain-classifier.test.js.map +1 -0
- package/dist/generators/chain-rules.d.ts +42 -0
- package/dist/generators/chain-rules.d.ts.map +1 -0
- package/dist/generators/chain-rules.js +144 -0
- package/dist/generators/chain-rules.js.map +1 -0
- package/dist/generators/chain-rules.test.d.ts +2 -0
- package/dist/generators/chain-rules.test.d.ts.map +1 -0
- package/dist/generators/chain-rules.test.js +179 -0
- package/dist/generators/chain-rules.test.js.map +1 -0
- package/dist/generators/context-md.d.ts +8 -0
- package/dist/generators/context-md.d.ts.map +1 -0
- package/dist/generators/context-md.js +134 -0
- package/dist/generators/context-md.js.map +1 -0
- package/dist/generators/handshake-diff.d.ts +67 -0
- package/dist/generators/handshake-diff.d.ts.map +1 -0
- package/dist/generators/handshake-diff.js +183 -0
- package/dist/generators/handshake-diff.js.map +1 -0
- package/dist/generators/handshake-diff.test.d.ts +2 -0
- package/dist/generators/handshake-diff.test.d.ts.map +1 -0
- package/dist/generators/handshake-diff.test.js +264 -0
- package/dist/generators/handshake-diff.test.js.map +1 -0
- package/dist/generators/portable-knowledge.d.ts +143 -0
- package/dist/generators/portable-knowledge.d.ts.map +1 -0
- package/dist/generators/portable-knowledge.js +504 -0
- package/dist/generators/portable-knowledge.js.map +1 -0
- package/dist/generators/portable-knowledge.test.d.ts +2 -0
- package/dist/generators/portable-knowledge.test.d.ts.map +1 -0
- package/dist/generators/portable-knowledge.test.js +927 -0
- package/dist/generators/portable-knowledge.test.js.map +1 -0
- package/dist/generators/surface-profiles.d.ts +49 -0
- package/dist/generators/surface-profiles.d.ts.map +1 -0
- package/dist/generators/surface-profiles.js +98 -0
- package/dist/generators/surface-profiles.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +642 -37
- package/dist/index.js.map +1 -1
- package/dist/lib/activation.d.ts +28 -0
- package/dist/lib/activation.d.ts.map +1 -0
- package/dist/lib/activation.js +57 -0
- package/dist/lib/activation.js.map +1 -0
- package/dist/lib/activation.test.d.ts +6 -0
- package/dist/lib/activation.test.d.ts.map +1 -0
- package/dist/lib/activation.test.js +121 -0
- package/dist/lib/activation.test.js.map +1 -0
- package/dist/lib/client.d.ts +61 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +258 -12
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts +84 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +322 -42
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +42 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +76 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/conversation-engine.d.ts +45 -0
- package/dist/lib/conversation-engine.d.ts.map +1 -0
- package/dist/lib/conversation-engine.js +112 -0
- package/dist/lib/conversation-engine.js.map +1 -0
- package/dist/lib/conversation-phases.d.ts +59 -0
- package/dist/lib/conversation-phases.d.ts.map +1 -0
- package/dist/lib/conversation-phases.js +11 -0
- package/dist/lib/conversation-phases.js.map +1 -0
- package/dist/lib/conversation-signals.d.ts +30 -0
- package/dist/lib/conversation-signals.d.ts.map +1 -0
- package/dist/lib/conversation-signals.js +64 -0
- package/dist/lib/conversation-signals.js.map +1 -0
- package/dist/lib/deployment.d.ts +23 -0
- package/dist/lib/deployment.d.ts.map +1 -0
- package/dist/lib/deployment.js +78 -0
- package/dist/lib/deployment.js.map +1 -0
- package/dist/lib/deployment.test.d.ts +5 -0
- package/dist/lib/deployment.test.d.ts.map +1 -0
- package/dist/lib/deployment.test.js +54 -0
- package/dist/lib/deployment.test.js.map +1 -0
- package/dist/lib/errors.d.ts +58 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +67 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/experiment.d.ts +18 -0
- package/dist/lib/experiment.d.ts.map +1 -0
- package/dist/lib/experiment.js +28 -0
- package/dist/lib/experiment.js.map +1 -0
- package/dist/lib/format.d.ts +10 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +27 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/glossary.d.ts +19 -0
- package/dist/lib/glossary.d.ts.map +1 -0
- package/dist/lib/glossary.js +53 -0
- package/dist/lib/glossary.js.map +1 -0
- package/dist/lib/onboarding-path-b.d.ts +10 -0
- package/dist/lib/onboarding-path-b.d.ts.map +1 -0
- package/dist/lib/onboarding-path-b.js +214 -0
- package/dist/lib/onboarding-path-b.js.map +1 -0
- package/dist/lib/onboarding-phases.d.ts +9 -0
- package/dist/lib/onboarding-phases.d.ts.map +1 -0
- package/dist/lib/onboarding-phases.js +120 -0
- package/dist/lib/onboarding-phases.js.map +1 -0
- package/dist/lib/onboarding-shared.d.ts +81 -0
- package/dist/lib/onboarding-shared.d.ts.map +1 -0
- package/dist/lib/onboarding-shared.js +190 -0
- package/dist/lib/onboarding-shared.js.map +1 -0
- package/dist/lib/onboarding-topics.d.ts +27 -0
- package/dist/lib/onboarding-topics.d.ts.map +1 -0
- package/dist/lib/onboarding-topics.js +57 -0
- package/dist/lib/onboarding-topics.js.map +1 -0
- package/dist/lib/onboarding.d.ts +17 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +350 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/profiles.d.ts +39 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +185 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/lib/prompts.d.ts +65 -0
- package/dist/lib/prompts.d.ts.map +1 -0
- package/dist/lib/prompts.js +132 -0
- package/dist/lib/prompts.js.map +1 -0
- package/dist/lib/repo-detect.d.ts +33 -0
- package/dist/lib/repo-detect.d.ts.map +1 -0
- package/dist/lib/repo-detect.js +83 -0
- package/dist/lib/repo-detect.js.map +1 -0
- package/dist/lib/runner.d.ts +33 -0
- package/dist/lib/runner.d.ts.map +1 -0
- package/dist/lib/runner.js +79 -0
- package/dist/lib/runner.js.map +1 -0
- package/dist/lib/session.d.ts +17 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +43 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/spinner.d.ts +27 -0
- package/dist/lib/spinner.d.ts.map +1 -0
- package/dist/lib/spinner.js +76 -0
- package/dist/lib/spinner.js.map +1 -0
- package/dist/lib/spinner.test.d.ts +2 -0
- package/dist/lib/spinner.test.d.ts.map +1 -0
- package/dist/lib/spinner.test.js +39 -0
- package/dist/lib/spinner.test.js.map +1 -0
- package/dist/lib/strip.d.ts +12 -0
- package/dist/lib/strip.d.ts.map +1 -0
- package/dist/lib/strip.js +41 -0
- package/dist/lib/strip.js.map +1 -0
- package/dist/lib/style.d.ts +94 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/lib/style.js +167 -0
- package/dist/lib/style.js.map +1 -0
- package/dist/lib/style.test.d.ts +7 -0
- package/dist/lib/style.test.d.ts.map +1 -0
- package/dist/lib/style.test.js +263 -0
- package/dist/lib/style.test.js.map +1 -0
- package/dist/lib/telemetry.d.ts +15 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +47 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/tokenConstants.d.ts +17 -0
- package/dist/lib/tokenConstants.d.ts.map +1 -0
- package/dist/lib/tokenConstants.js +17 -0
- package/dist/lib/tokenConstants.js.map +1 -0
- package/dist/lib/wizard-surfaces.d.ts +47 -0
- package/dist/lib/wizard-surfaces.d.ts.map +1 -0
- package/dist/lib/wizard-surfaces.js +176 -0
- package/dist/lib/wizard-surfaces.js.map +1 -0
- package/dist/lib/wizard-surfaces.test.d.ts +2 -0
- package/dist/lib/wizard-surfaces.test.d.ts.map +1 -0
- package/dist/lib/wizard-surfaces.test.js +127 -0
- package/dist/lib/wizard-surfaces.test.js.map +1 -0
- package/dist/lib/wizard-trust.d.ts +31 -0
- package/dist/lib/wizard-trust.d.ts.map +1 -0
- package/dist/lib/wizard-trust.js +66 -0
- package/dist/lib/wizard-trust.js.map +1 -0
- package/dist/lib/wizard-trust.test.d.ts +2 -0
- package/dist/lib/wizard-trust.test.d.ts.map +1 -0
- package/dist/lib/wizard-trust.test.js +32 -0
- package/dist/lib/wizard-trust.test.js.map +1 -0
- package/dist/lib/workspace-probe.d.ts +16 -0
- package/dist/lib/workspace-probe.d.ts.map +1 -0
- package/dist/lib/workspace-probe.js +33 -0
- package/dist/lib/workspace-probe.js.map +1 -0
- package/package.json +13 -4
- package/templates/archetypes/boundary.md +23 -0
- package/templates/archetypes/constraint.md +23 -0
- package/templates/archetypes/convention.md +23 -0
- package/templates/archetypes/policy.md +23 -0
- package/templates/archetypes/quality-gate.md +23 -0
- package/templates/archetypes/workflow.md +23 -0
- package/templates/general/code-integrity.md +11 -0
- package/templates/general/getting-started.md +12 -0
- package/templates/node-ts/code-integrity.md +13 -0
- package/templates/node-ts/testing.md +12 -0
- package/templates/python/code-integrity.md +13 -0
- package/templates/python/testing.md +12 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLIError — structured error taxonomy for the Product Brain CLI.
|
|
3
|
+
*
|
|
4
|
+
* WP-302 Slice 0: Error Taxonomy + Commander Migration.
|
|
5
|
+
* WP-302 Slice 2: Profile error codes added.
|
|
6
|
+
* Every CLI error carries a machine-readable code, category, and actionable guidance.
|
|
7
|
+
* The global error handler in index.ts formats these for JSON or human output.
|
|
8
|
+
*/
|
|
9
|
+
/** Error categories — groups of related failure modes. */
|
|
10
|
+
export type ErrorCategory = 'auth' | 'network' | 'config' | 'validation' | 'session' | 'profile' | 'internal';
|
|
11
|
+
/** Known error codes — extend as new failure modes are discovered. */
|
|
12
|
+
export declare const ErrorCode: {
|
|
13
|
+
readonly AUTH_MISSING: "AUTH_MISSING";
|
|
14
|
+
readonly AUTH_INVALID: "AUTH_INVALID";
|
|
15
|
+
readonly AUTH_DENIED: "AUTH_DENIED";
|
|
16
|
+
readonly NETWORK_UNREACHABLE: "NETWORK_UNREACHABLE";
|
|
17
|
+
readonly NETWORK_TIMEOUT: "NETWORK_TIMEOUT";
|
|
18
|
+
readonly CONFIG_MISSING: "CONFIG_MISSING";
|
|
19
|
+
readonly CONFIG_INVALID: "CONFIG_INVALID";
|
|
20
|
+
readonly SESSION_REQUIRED: "SESSION_REQUIRED";
|
|
21
|
+
readonly VALIDATION_FAILED: "VALIDATION_FAILED";
|
|
22
|
+
readonly PROFILE_NOT_FOUND: "PROFILE_NOT_FOUND";
|
|
23
|
+
readonly PROFILE_ALREADY_EXISTS: "PROFILE_ALREADY_EXISTS";
|
|
24
|
+
readonly PROFILE_IS_ACTIVE: "PROFILE_IS_ACTIVE";
|
|
25
|
+
readonly PROFILE_IS_LAST: "PROFILE_IS_LAST";
|
|
26
|
+
readonly PROFILE_NAME_INVALID: "PROFILE_NAME_INVALID";
|
|
27
|
+
readonly NON_INTERACTIVE: "NON_INTERACTIVE";
|
|
28
|
+
readonly INTERNAL: "INTERNAL";
|
|
29
|
+
};
|
|
30
|
+
export type ErrorCodeValue = (typeof ErrorCode)[keyof typeof ErrorCode];
|
|
31
|
+
/**
|
|
32
|
+
* Structured CLI error with machine-readable fields.
|
|
33
|
+
*
|
|
34
|
+
* Usage:
|
|
35
|
+
* throw new CLIError('No API key configured', {
|
|
36
|
+
* code: ErrorCode.AUTH_MISSING,
|
|
37
|
+
* category: 'auth',
|
|
38
|
+
* guidance: 'Run `pb login` to configure your API key.',
|
|
39
|
+
* });
|
|
40
|
+
*/
|
|
41
|
+
export declare class CLIError extends Error {
|
|
42
|
+
readonly code: ErrorCodeValue;
|
|
43
|
+
readonly category: ErrorCategory;
|
|
44
|
+
readonly guidance?: string;
|
|
45
|
+
constructor(message: string, options?: {
|
|
46
|
+
code?: ErrorCodeValue;
|
|
47
|
+
category?: ErrorCategory;
|
|
48
|
+
guidance?: string;
|
|
49
|
+
});
|
|
50
|
+
/** Serialize for JSON error output. */
|
|
51
|
+
toJSON(): {
|
|
52
|
+
error: string;
|
|
53
|
+
code: string;
|
|
54
|
+
category: string;
|
|
55
|
+
guidance?: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9G,sEAAsE;AACtE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAyBZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAExE;;;;;;;;;GASG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IASH,uCAAuC;IACvC,MAAM,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;CAQ/E"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLIError — structured error taxonomy for the Product Brain CLI.
|
|
3
|
+
*
|
|
4
|
+
* WP-302 Slice 0: Error Taxonomy + Commander Migration.
|
|
5
|
+
* WP-302 Slice 2: Profile error codes added.
|
|
6
|
+
* Every CLI error carries a machine-readable code, category, and actionable guidance.
|
|
7
|
+
* The global error handler in index.ts formats these for JSON or human output.
|
|
8
|
+
*/
|
|
9
|
+
/** Known error codes — extend as new failure modes are discovered. */
|
|
10
|
+
export const ErrorCode = {
|
|
11
|
+
// Auth
|
|
12
|
+
AUTH_MISSING: 'AUTH_MISSING',
|
|
13
|
+
AUTH_INVALID: 'AUTH_INVALID',
|
|
14
|
+
AUTH_DENIED: 'AUTH_DENIED',
|
|
15
|
+
// Network
|
|
16
|
+
NETWORK_UNREACHABLE: 'NETWORK_UNREACHABLE',
|
|
17
|
+
NETWORK_TIMEOUT: 'NETWORK_TIMEOUT',
|
|
18
|
+
// Config
|
|
19
|
+
CONFIG_MISSING: 'CONFIG_MISSING',
|
|
20
|
+
CONFIG_INVALID: 'CONFIG_INVALID',
|
|
21
|
+
// Session
|
|
22
|
+
SESSION_REQUIRED: 'SESSION_REQUIRED',
|
|
23
|
+
// Validation
|
|
24
|
+
VALIDATION_FAILED: 'VALIDATION_FAILED',
|
|
25
|
+
// Profile (WP-302 S2)
|
|
26
|
+
PROFILE_NOT_FOUND: 'PROFILE_NOT_FOUND',
|
|
27
|
+
PROFILE_ALREADY_EXISTS: 'PROFILE_ALREADY_EXISTS',
|
|
28
|
+
PROFILE_IS_ACTIVE: 'PROFILE_IS_ACTIVE',
|
|
29
|
+
PROFILE_IS_LAST: 'PROFILE_IS_LAST',
|
|
30
|
+
PROFILE_NAME_INVALID: 'PROFILE_NAME_INVALID',
|
|
31
|
+
// Interactive
|
|
32
|
+
NON_INTERACTIVE: 'NON_INTERACTIVE',
|
|
33
|
+
// Internal
|
|
34
|
+
INTERNAL: 'INTERNAL',
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Structured CLI error with machine-readable fields.
|
|
38
|
+
*
|
|
39
|
+
* Usage:
|
|
40
|
+
* throw new CLIError('No API key configured', {
|
|
41
|
+
* code: ErrorCode.AUTH_MISSING,
|
|
42
|
+
* category: 'auth',
|
|
43
|
+
* guidance: 'Run `pb login` to configure your API key.',
|
|
44
|
+
* });
|
|
45
|
+
*/
|
|
46
|
+
export class CLIError extends Error {
|
|
47
|
+
code;
|
|
48
|
+
category;
|
|
49
|
+
guidance;
|
|
50
|
+
constructor(message, options) {
|
|
51
|
+
super(message);
|
|
52
|
+
this.name = 'CLIError';
|
|
53
|
+
this.code = options?.code ?? ErrorCode.INTERNAL;
|
|
54
|
+
this.category = options?.category ?? 'internal';
|
|
55
|
+
this.guidance = options?.guidance;
|
|
56
|
+
}
|
|
57
|
+
/** Serialize for JSON error output. */
|
|
58
|
+
toJSON() {
|
|
59
|
+
return {
|
|
60
|
+
error: this.message,
|
|
61
|
+
code: this.code,
|
|
62
|
+
category: this.category,
|
|
63
|
+
...(this.guidance ? { guidance: this.guidance } : {}),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO;IACP,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU;IACV,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,SAAS;IACT,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,UAAU;IACV,gBAAgB,EAAE,kBAAkB;IACpC,aAAa;IACb,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,cAAc;IACd,eAAe,EAAE,iBAAiB;IAClC,WAAW;IACX,QAAQ,EAAE,UAAU;CACZ,CAAC;AAIX;;;;;;;;;GASG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAiB;IACrB,QAAQ,CAAgB;IACxB,QAAQ,CAAU;IAE3B,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,UAAU,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACpC,CAAC;IAED,uCAAuC;IACvC,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Experiment assignment — deterministic path selection for A/B experiments.
|
|
3
|
+
* WP-304: Dormant until PB_EXPERIMENT_304=1. When active, overrides PB_ONBOARDING_PATH.
|
|
4
|
+
*/
|
|
5
|
+
export type ExperimentPath = 'A' | 'B';
|
|
6
|
+
/**
|
|
7
|
+
* Deterministic assignment based on workspace ID.
|
|
8
|
+
* FNV-1a hash mod 2 — same workspace always gets the same path.
|
|
9
|
+
*/
|
|
10
|
+
export declare function assignOnboardingPath(workspaceId: string): ExperimentPath;
|
|
11
|
+
/** Check if the WP-304 experiment is active. */
|
|
12
|
+
export declare function isExperimentActive(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* FNV-1a hash — fast, deterministic, good distribution for short strings.
|
|
15
|
+
* Returns a positive 32-bit integer.
|
|
16
|
+
*/
|
|
17
|
+
export declare function fnv1aHash(str: string): number;
|
|
18
|
+
//# sourceMappingURL=experiment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiment.d.ts","sourceRoot":"","sources":["../../src/lib/experiment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAExE;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Experiment assignment — deterministic path selection for A/B experiments.
|
|
3
|
+
* WP-304: Dormant until PB_EXPERIMENT_304=1. When active, overrides PB_ONBOARDING_PATH.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Deterministic assignment based on workspace ID.
|
|
7
|
+
* FNV-1a hash mod 2 — same workspace always gets the same path.
|
|
8
|
+
*/
|
|
9
|
+
export function assignOnboardingPath(workspaceId) {
|
|
10
|
+
return fnv1aHash(workspaceId) % 2 === 0 ? 'A' : 'B';
|
|
11
|
+
}
|
|
12
|
+
/** Check if the WP-304 experiment is active. */
|
|
13
|
+
export function isExperimentActive() {
|
|
14
|
+
return process.env.PB_EXPERIMENT_304 === '1';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* FNV-1a hash — fast, deterministic, good distribution for short strings.
|
|
18
|
+
* Returns a positive 32-bit integer.
|
|
19
|
+
*/
|
|
20
|
+
export function fnv1aHash(str) {
|
|
21
|
+
let hash = 0x811c9dc5; // FNV offset basis
|
|
22
|
+
for (let i = 0; i < str.length; i++) {
|
|
23
|
+
hash ^= str.charCodeAt(i);
|
|
24
|
+
hash = (hash * 0x01000193) >>> 0; // FNV prime, keep as unsigned 32-bit
|
|
25
|
+
}
|
|
26
|
+
return hash >>> 0;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=experiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/lib/experiment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,mBAAmB;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,qCAAqC;IACzE,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared formatting utilities for the CLI.
|
|
3
|
+
* Single source of truth for display helpers used across commands.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format an ISO timestamp into a human-friendly elapsed string.
|
|
7
|
+
* e.g. "just now", "5m ago", "3h ago", "2d ago"
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatElapsed(isoDate: string): string;
|
|
10
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAarD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared formatting utilities for the CLI.
|
|
3
|
+
* Single source of truth for display helpers used across commands.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Format an ISO timestamp into a human-friendly elapsed string.
|
|
7
|
+
* e.g. "just now", "5m ago", "3h ago", "2d ago"
|
|
8
|
+
*/
|
|
9
|
+
export function formatElapsed(isoDate) {
|
|
10
|
+
try {
|
|
11
|
+
const ms = Date.now() - new Date(isoDate).getTime();
|
|
12
|
+
const minutes = Math.floor(ms / 60000);
|
|
13
|
+
if (minutes < 1)
|
|
14
|
+
return 'just now';
|
|
15
|
+
if (minutes < 60)
|
|
16
|
+
return `${minutes}m ago`;
|
|
17
|
+
const hours = Math.floor(minutes / 60);
|
|
18
|
+
if (hours < 24)
|
|
19
|
+
return `${hours}h ago`;
|
|
20
|
+
const days = Math.floor(hours / 24);
|
|
21
|
+
return `${days}d ago`;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return 'unknown';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC;QACnC,IAAI,OAAO,GAAG,EAAE;YAAE,OAAO,GAAG,OAAO,OAAO,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,GAAG,KAAK,OAAO,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACpC,OAAO,GAAG,IAAI,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glossary.ts — Key CLI terms and their definitions.
|
|
3
|
+
*
|
|
4
|
+
* Provides a static glossary of Product Brain CLI terminology,
|
|
5
|
+
* plus a formatter for TTY output.
|
|
6
|
+
*
|
|
7
|
+
* WP-302 Slice 4.
|
|
8
|
+
*/
|
|
9
|
+
export interface GlossaryEntry {
|
|
10
|
+
term: string;
|
|
11
|
+
definition: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const GLOSSARY: GlossaryEntry[];
|
|
14
|
+
/**
|
|
15
|
+
* Format the glossary for TTY output.
|
|
16
|
+
* Returns a multi-line string with bold terms and dimmed definitions.
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatGlossary(): string;
|
|
19
|
+
//# sourceMappingURL=glossary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.d.ts","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ,EAAE,aAAa,EA6BnC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAUvC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* glossary.ts — Key CLI terms and their definitions.
|
|
3
|
+
*
|
|
4
|
+
* Provides a static glossary of Product Brain CLI terminology,
|
|
5
|
+
* plus a formatter for TTY output.
|
|
6
|
+
*
|
|
7
|
+
* WP-302 Slice 4.
|
|
8
|
+
*/
|
|
9
|
+
import { bold, dim } from './style.js';
|
|
10
|
+
export const GLOSSARY = [
|
|
11
|
+
{
|
|
12
|
+
term: 'workspace',
|
|
13
|
+
definition: 'Your product knowledge space. One workspace = one product.',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
term: 'entry',
|
|
17
|
+
definition: 'A unit of product knowledge (bet, decision, tension, standard, etc.).',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
term: 'collection',
|
|
21
|
+
definition: 'A group of related entries (work-packages, decisions, tensions, etc.).',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
term: 'relation',
|
|
25
|
+
definition: 'A typed link between entries (part_of, depends_on, addresses, etc.).',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
term: 'session',
|
|
29
|
+
definition: 'A tracked write session. Required before creating or updating entries.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
term: 'capture',
|
|
33
|
+
definition: 'Create a new entry on the Chain via pb capture.',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
term: 'profile',
|
|
37
|
+
definition: 'A named workspace configuration with API key and endpoint.',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Format the glossary for TTY output.
|
|
42
|
+
* Returns a multi-line string with bold terms and dimmed definitions.
|
|
43
|
+
*/
|
|
44
|
+
export function formatGlossary() {
|
|
45
|
+
const lines = [];
|
|
46
|
+
const maxTermLen = Math.max(...GLOSSARY.map((g) => g.term.length));
|
|
47
|
+
for (const entry of GLOSSARY) {
|
|
48
|
+
const paddedTerm = entry.term.padEnd(maxTermLen);
|
|
49
|
+
lines.push(` ${bold(paddedTerm)} ${dim(entry.definition)}`);
|
|
50
|
+
}
|
|
51
|
+
return lines.join('\n');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=glossary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary.js","sourceRoot":"","sources":["../../src/lib/glossary.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC;QACE,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,4DAA4D;KACzE;IACD;QACE,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,uEAAuE;KACpF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,wEAAwE;KACrF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,sEAAsE;KACnF;IACD;QACE,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,wEAAwE;KACrF;IACD;QACE,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,iDAAiD;KAC9D;IACD;QACE,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,4DAA4D;KACzE;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path B — Facilitator-pattern onboarding (2 exchanges max).
|
|
3
|
+
* WP-304: Shorter flow, silent extraction, auto-capture, governance proof.
|
|
4
|
+
*/
|
|
5
|
+
import { type OnboardingExtraction } from './onboarding-shared.js';
|
|
6
|
+
export declare function runOnboardingPathB(workspaceName: string): Promise<void>;
|
|
7
|
+
/** Merge two extractions — second takes precedence for scalar fields, arrays concatenate. */
|
|
8
|
+
export declare function mergeExtractions(first: OnboardingExtraction | null, second: OnboardingExtraction): OnboardingExtraction;
|
|
9
|
+
export declare function dedupe(arr: string[]): string[];
|
|
10
|
+
//# sourceMappingURL=onboarding-path-b.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-path-b.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding-path-b.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAIL,KAAK,oBAAoB,EAG1B,MAAM,wBAAwB,CAAC;AAEhC,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyK7E;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,oBAAoB,GAAG,IAAI,EAClC,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,CAUtB;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAI9C"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path B — Facilitator-pattern onboarding (2 exchanges max).
|
|
3
|
+
* WP-304: Shorter flow, silent extraction, auto-capture, governance proof.
|
|
4
|
+
*/
|
|
5
|
+
import { mcpCall } from './client.js';
|
|
6
|
+
import { ask } from './prompts.js';
|
|
7
|
+
import { bold, dim, green, icons } from './style.js';
|
|
8
|
+
import { trackEvent } from './telemetry.js';
|
|
9
|
+
import { extractionToEntries, batchCaptureEntries, countWords, } from './onboarding-shared.js';
|
|
10
|
+
export async function runOnboardingPathB(workspaceName) {
|
|
11
|
+
trackEvent('setup_started', { mode: 'llm', path: 'B' });
|
|
12
|
+
const messages = [];
|
|
13
|
+
let totalUserWords = 0;
|
|
14
|
+
let lastExtraction = null;
|
|
15
|
+
// Exchange 1: Opening question
|
|
16
|
+
let greeting;
|
|
17
|
+
try {
|
|
18
|
+
const result = await mcpCall('onboarding.chat', {
|
|
19
|
+
messages: [],
|
|
20
|
+
workspaceName,
|
|
21
|
+
style: 'facilitator',
|
|
22
|
+
turnNumber: 1,
|
|
23
|
+
totalUserWords: 0,
|
|
24
|
+
});
|
|
25
|
+
if (!result?.content) {
|
|
26
|
+
await runPathBFallback(workspaceName);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
greeting = result.content;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
await runPathBFallback(workspaceName);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
process.stdout.write(`\n ${greeting}\n\n`);
|
|
36
|
+
messages.push({ role: 'assistant', content: greeting });
|
|
37
|
+
// Get user's first answer
|
|
38
|
+
let userInput;
|
|
39
|
+
try {
|
|
40
|
+
userInput = await ask({
|
|
41
|
+
message: 'You',
|
|
42
|
+
placeholder: 'Tell me about your product...',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
process.stdout.write(`\n ${dim('No worries! Run')} ${bold('pb capture')} ${dim('anytime to add knowledge.')}\n\n`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!userInput.trim()) {
|
|
50
|
+
process.stdout.write(`\n ${dim('No problem — explore with')} ${bold('pb orient -b')} ${dim('or capture with')} ${bold('pb capture')}\n\n`);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
messages.push({ role: 'user', content: userInput });
|
|
54
|
+
totalUserWords += countWords(userInput);
|
|
55
|
+
// Silent extraction after first answer (parallel with follow-up)
|
|
56
|
+
const [followUpResult, extractResult] = await Promise.allSettled([
|
|
57
|
+
mcpCall('onboarding.chat', {
|
|
58
|
+
messages,
|
|
59
|
+
workspaceName,
|
|
60
|
+
style: 'facilitator',
|
|
61
|
+
turnNumber: 2,
|
|
62
|
+
totalUserWords,
|
|
63
|
+
}),
|
|
64
|
+
mcpCall('onboarding.chat', {
|
|
65
|
+
messages,
|
|
66
|
+
workspaceName,
|
|
67
|
+
mode: 'extract',
|
|
68
|
+
}),
|
|
69
|
+
]);
|
|
70
|
+
// Store first extraction if available
|
|
71
|
+
if (extractResult.status === 'fulfilled' && extractResult.value?.extraction) {
|
|
72
|
+
lastExtraction = extractResult.value.extraction;
|
|
73
|
+
}
|
|
74
|
+
// Show follow-up question
|
|
75
|
+
if (followUpResult.status === 'fulfilled' && followUpResult.value?.content) {
|
|
76
|
+
const followUp = followUpResult.value.content;
|
|
77
|
+
process.stdout.write(`\n ${followUp}\n\n`);
|
|
78
|
+
messages.push({ role: 'assistant', content: followUp });
|
|
79
|
+
// Get second answer
|
|
80
|
+
try {
|
|
81
|
+
const secondInput = await ask({ message: 'You', placeholder: '' });
|
|
82
|
+
if (secondInput.trim()) {
|
|
83
|
+
messages.push({ role: 'user', content: secondInput });
|
|
84
|
+
totalUserWords += countWords(secondInput);
|
|
85
|
+
// Second extraction — merge with first
|
|
86
|
+
try {
|
|
87
|
+
const result2 = await mcpCall('onboarding.chat', {
|
|
88
|
+
messages,
|
|
89
|
+
workspaceName,
|
|
90
|
+
mode: 'extract',
|
|
91
|
+
});
|
|
92
|
+
if (result2?.extraction) {
|
|
93
|
+
lastExtraction = mergeExtractions(lastExtraction, result2.extraction);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Use first extraction if second fails
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// User cancelled — use what we have
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Content floor — need at least something to extract
|
|
106
|
+
if (totalUserWords < 5 || !lastExtraction?.vision) {
|
|
107
|
+
// Try one final extraction if we don't have one
|
|
108
|
+
if (!lastExtraction?.vision && messages.filter((m) => m.role === 'user').length > 0) {
|
|
109
|
+
try {
|
|
110
|
+
const finalExtract = await mcpCall('onboarding.chat', {
|
|
111
|
+
messages,
|
|
112
|
+
workspaceName,
|
|
113
|
+
mode: 'extract',
|
|
114
|
+
});
|
|
115
|
+
if (finalExtract?.extraction) {
|
|
116
|
+
lastExtraction = finalExtract.extraction;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Nothing to do
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (!lastExtraction?.vision) {
|
|
124
|
+
process.stdout.write(`\n ${dim('No problem — add knowledge anytime with')} ${bold('pb capture')}\n\n`);
|
|
125
|
+
trackEvent('setup_completed', { path: 'B', capturedCount: 0, reason: 'insufficient_content' });
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
trackEvent('first_capture_prompted', { mode: 'llm', path: 'B' });
|
|
130
|
+
// Auto-capture — no approval UI in Path B
|
|
131
|
+
const allEntries = extractionToEntries(lastExtraction);
|
|
132
|
+
const entriesToCapture = allEntries
|
|
133
|
+
.filter((e) => e.name.trim().split(/\s+/).length >= 2 || e.collection === 'glossary')
|
|
134
|
+
.slice(0, 5);
|
|
135
|
+
if (entriesToCapture.length === 0) {
|
|
136
|
+
process.stdout.write(`\n ${dim('Nothing to save yet. Try')} ${bold('pb capture')} ${dim('to add knowledge manually.')}\n\n`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const { capturedCount, errors } = await batchCaptureEntries(entriesToCapture);
|
|
140
|
+
if (capturedCount > 0) {
|
|
141
|
+
process.stdout.write(`\n ${green(icons.pass)} Saved ${capturedCount} item${capturedCount === 1 ? '' : 's'} to your product brain.\n`);
|
|
142
|
+
trackEvent('capture_completed', { mode: 'llm', path: 'B', count: capturedCount });
|
|
143
|
+
}
|
|
144
|
+
if (errors.length > 0) {
|
|
145
|
+
process.stdout.write(`\n ${dim(`${errors.length} couldn't be saved.`)}\n`);
|
|
146
|
+
}
|
|
147
|
+
// Governance proof moment — show how captured knowledge participates in governance
|
|
148
|
+
await showGovernanceProof(lastExtraction.vision);
|
|
149
|
+
process.stdout.write(` ${dim('Explore with')} ${bold('pb orient -b')} ${dim('or add more with')} ${bold('pb capture')}\n\n`);
|
|
150
|
+
trackEvent('setup_completed', { path: 'B', capturedCount });
|
|
151
|
+
}
|
|
152
|
+
/** Merge two extractions — second takes precedence for scalar fields, arrays concatenate. */
|
|
153
|
+
export function mergeExtractions(first, second) {
|
|
154
|
+
if (!first)
|
|
155
|
+
return second;
|
|
156
|
+
return {
|
|
157
|
+
vision: second.vision || first.vision,
|
|
158
|
+
audience: second.audience || first.audience,
|
|
159
|
+
techStack: dedupe([...(first.techStack ?? []), ...(second.techStack ?? [])]),
|
|
160
|
+
keyTerms: dedupe([...(first.keyTerms ?? []), ...(second.keyTerms ?? [])]),
|
|
161
|
+
keyDecisions: dedupe([...(first.keyDecisions ?? []), ...(second.keyDecisions ?? [])]),
|
|
162
|
+
tensions: dedupe([...(first.tensions ?? []), ...(second.tensions ?? [])]),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
export function dedupe(arr) {
|
|
166
|
+
return [...new Set(arr.map((s) => s.toLowerCase()))].map((lower) => arr.find((s) => s.toLowerCase() === lower) ?? lower);
|
|
167
|
+
}
|
|
168
|
+
/** Governance proof — show binding governance from captured knowledge via resolveTaskStartup. */
|
|
169
|
+
async function showGovernanceProof(vision) {
|
|
170
|
+
try {
|
|
171
|
+
const result = await mcpCall('chain.resolveTaskStartup', { task: vision });
|
|
172
|
+
const governance = result?.bindingGovernance;
|
|
173
|
+
const steering = result?.steeringContext ?? [];
|
|
174
|
+
const allItems = [
|
|
175
|
+
...(governance?.principles ?? []),
|
|
176
|
+
...(governance?.standards ?? []),
|
|
177
|
+
...(governance?.businessRules ?? []),
|
|
178
|
+
...steering.slice(0, 3),
|
|
179
|
+
].filter((i) => i.name);
|
|
180
|
+
if (allItems.length > 0) {
|
|
181
|
+
process.stdout.write(`\n ${bold('Your product knowledge is now wired in:')}\n\n`);
|
|
182
|
+
for (const item of allItems.slice(0, 4)) {
|
|
183
|
+
process.stdout.write(` ${dim(icons.dot)} ${item.name}\n`);
|
|
184
|
+
}
|
|
185
|
+
if (allItems.length > 4) {
|
|
186
|
+
process.stdout.write(` ${dim(`...and ${allItems.length - 4} more`)}\n`);
|
|
187
|
+
}
|
|
188
|
+
process.stdout.write('\n');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Governance proof is best-effort — fall back to orient-based proof
|
|
193
|
+
try {
|
|
194
|
+
const orient = await mcpCall('orient', { brief: true });
|
|
195
|
+
const items = orient?.sections?.flatMap((s) => s.items ?? []).filter((i) => i.name) ?? [];
|
|
196
|
+
if (items.length > 0) {
|
|
197
|
+
process.stdout.write(`\n ${bold("Here's how your product brain will use this:")}\n\n`);
|
|
198
|
+
for (const item of items.slice(0, 5)) {
|
|
199
|
+
process.stdout.write(` ${dim(icons.dot)} ${item.name}\n`);
|
|
200
|
+
}
|
|
201
|
+
process.stdout.write('\n');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// Both proofs failed — skip silently
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/** Deterministic fallback when LLM is unavailable. Dynamic import avoids circular dependency with onboarding.ts. */
|
|
210
|
+
async function runPathBFallback(workspaceName) {
|
|
211
|
+
const { runFallbackOnboarding } = await import('./onboarding.js');
|
|
212
|
+
await runFallbackOnboarding(workspaceName);
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=onboarding-path-b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding-path-b.js","sourceRoot":"","sources":["../../src/lib/onboarding-path-b.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|