@productbrain/cli 0.1.0-beta.1 → 0.1.0-beta.102
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 +127 -0
- 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__/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__/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 +296 -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__/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 +126 -0
- package/dist/__tests__/envelope-contract.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +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-preview.test.d.ts +2 -0
- package/dist/__tests__/handshake-preview.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-preview.test.js +279 -0
- package/dist/__tests__/handshake-preview.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 +555 -0
- package/dist/__tests__/handshake.test.js.map +1 -0
- package/dist/__tests__/hook-intents.test.d.ts +2 -0
- package/dist/__tests__/hook-intents.test.d.ts.map +1 -0
- package/dist/__tests__/hook-intents.test.js +184 -0
- package/dist/__tests__/hook-intents.test.js.map +1 -0
- package/dist/__tests__/ingest.test.d.ts +2 -0
- package/dist/__tests__/ingest.test.d.ts.map +1 -0
- package/dist/__tests__/ingest.test.js +185 -0
- package/dist/__tests__/ingest.test.js.map +1 -0
- 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__/manifest.test.d.ts +6 -0
- package/dist/__tests__/manifest.test.d.ts.map +1 -0
- package/dist/__tests__/manifest.test.js +138 -0
- package/dist/__tests__/manifest.test.js.map +1 -0
- package/dist/__tests__/method-registry.integration.test.d.ts +6 -0
- package/dist/__tests__/method-registry.integration.test.d.ts.map +1 -0
- package/dist/__tests__/method-registry.integration.test.js +18 -0
- package/dist/__tests__/method-registry.integration.test.js.map +1 -0
- package/dist/__tests__/method-registry.test.d.ts +14 -0
- package/dist/__tests__/method-registry.test.d.ts.map +1 -0
- package/dist/__tests__/method-registry.test.js +134 -0
- package/dist/__tests__/method-registry.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 +196 -0
- package/dist/__tests__/orient.test.js.map +1 -0
- package/dist/__tests__/personal-layer.test.d.ts +12 -0
- package/dist/__tests__/personal-layer.test.d.ts.map +1 -0
- package/dist/__tests__/personal-layer.test.js +304 -0
- package/dist/__tests__/personal-layer.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 +212 -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 +230 -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-state-machine.test.d.ts +2 -0
- package/dist/__tests__/session-state-machine.test.d.ts.map +1 -0
- package/dist/__tests__/session-state-machine.test.js +154 -0
- package/dist/__tests__/session-state-machine.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-ingest.test.d.ts +2 -0
- package/dist/__tests__/setup-ingest.test.d.ts.map +1 -0
- package/dist/__tests__/setup-ingest.test.js +55 -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__/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__/state.test.d.ts +6 -0
- package/dist/__tests__/state.test.d.ts.map +1 -0
- package/dist/__tests__/state.test.js +97 -0
- package/dist/__tests__/state.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__/surfaces.test.d.ts +2 -0
- package/dist/__tests__/surfaces.test.d.ts.map +1 -0
- package/dist/__tests__/surfaces.test.js +46 -0
- package/dist/__tests__/surfaces.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 +328 -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 +90 -0
- package/dist/commands/admin/cockpit.d.ts.map +1 -0
- package/dist/commands/admin/cockpit.js +618 -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 +256 -0
- package/dist/commands/admin/index.js.map +1 -0
- package/dist/commands/admin/inspect.d.ts +30 -0
- package/dist/commands/admin/inspect.d.ts.map +1 -0
- package/dist/commands/admin/inspect.js +555 -0
- package/dist/commands/admin/inspect.js.map +1 -0
- package/dist/commands/admin/inspect.test.d.ts +7 -0
- package/dist/commands/admin/inspect.test.d.ts.map +1 -0
- package/dist/commands/admin/inspect.test.js +90 -0
- package/dist/commands/admin/inspect.test.js.map +1 -0
- package/dist/commands/admin/manage.d.ts +8 -0
- package/dist/commands/admin/manage.d.ts.map +1 -0
- package/dist/commands/admin/manage.js +76 -0
- package/dist/commands/admin/manage.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +46 -0
- package/dist/commands/admin/seed.d.ts.map +1 -0
- package/dist/commands/admin/seed.js +729 -0
- package/dist/commands/admin/seed.js.map +1 -0
- package/dist/commands/admin/seed.test.d.ts +11 -0
- package/dist/commands/admin/seed.test.d.ts.map +1 -0
- package/dist/commands/admin/seed.test.js +123 -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/authority-domains.d.ts +140 -0
- package/dist/commands/authority-domains.d.ts.map +1 -0
- package/dist/commands/authority-domains.js +268 -0
- package/dist/commands/authority-domains.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 +339 -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 +211 -0
- package/dist/commands/connect-integration.test.js.map +1 -0
- package/dist/commands/connect-screens.d.ts +24 -0
- package/dist/commands/connect-screens.d.ts.map +1 -0
- package/dist/commands/connect-screens.js +97 -0
- package/dist/commands/connect-screens.js.map +1 -0
- package/dist/commands/connect.d.ts +23 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +289 -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 +297 -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 +25 -10
- 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 +65 -8
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/handshake.d.ts +142 -0
- package/dist/commands/handshake.d.ts.map +1 -0
- package/dist/commands/handshake.js +1349 -0
- package/dist/commands/handshake.js.map +1 -0
- package/dist/commands/ingest.d.ts +14 -0
- package/dist/commands/ingest.d.ts.map +1 -0
- package/dist/commands/ingest.js +189 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +109 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +9 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +116 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/method.d.ts +99 -0
- package/dist/commands/method.d.ts.map +1 -0
- package/dist/commands/method.js +781 -0
- package/dist/commands/method.js.map +1 -0
- 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 +109 -1
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +94 -7
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +47 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +148 -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 +113 -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 +111 -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 +10 -4
- 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 +203 -0
- package/dist/commands/session.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 +224 -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.d.ts +15 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +148 -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/usage.d.ts +40 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +232 -0
- package/dist/commands/usage.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/welcome.d.ts +21 -0
- package/dist/commands/welcome.d.ts.map +1 -0
- package/dist/commands/welcome.js +50 -0
- package/dist/commands/welcome.js.map +1 -0
- package/dist/commands/workspace.d.ts +113 -0
- package/dist/commands/workspace.d.ts.map +1 -0
- package/dist/commands/workspace.js +263 -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 +46 -0
- package/dist/formatters/handshake.d.ts.map +1 -0
- package/dist/formatters/handshake.js +163 -0
- package/dist/formatters/handshake.js.map +1 -0
- package/dist/formatters/orient.d.ts +129 -1
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +156 -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/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/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/manifest.d.ts +39 -0
- package/dist/generators/manifest.d.ts.map +1 -0
- package/dist/generators/manifest.js +166 -0
- package/dist/generators/manifest.js.map +1 -0
- package/dist/generators/portable-knowledge.d.ts +165 -0
- package/dist/generators/portable-knowledge.d.ts.map +1 -0
- package/dist/generators/portable-knowledge.js +613 -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 +858 -32
- 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/canonicalRefs.d.ts +69 -0
- package/dist/lib/canonicalRefs.d.ts.map +1 -0
- package/dist/lib/canonicalRefs.js +83 -0
- package/dist/lib/canonicalRefs.js.map +1 -0
- package/dist/lib/client.d.ts +62 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +259 -13
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/collectionRegistry.d.ts +38 -0
- package/dist/lib/collectionRegistry.d.ts.map +1 -0
- package/dist/lib/collectionRegistry.js +112 -0
- package/dist/lib/collectionRegistry.js.map +1 -0
- package/dist/lib/config.d.ts +122 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +426 -18
- 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 +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 +60 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +69 -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/hook-intents.d.ts +51 -0
- package/dist/lib/hook-intents.d.ts.map +1 -0
- package/dist/lib/hook-intents.js +85 -0
- package/dist/lib/hook-intents.js.map +1 -0
- package/dist/lib/inferSourceDate.d.ts +12 -0
- package/dist/lib/inferSourceDate.d.ts.map +1 -0
- package/dist/lib/inferSourceDate.js +44 -0
- package/dist/lib/inferSourceDate.js.map +1 -0
- package/dist/lib/method-registry.d.ts +32 -0
- package/dist/lib/method-registry.d.ts.map +1 -0
- package/dist/lib/method-registry.js +53 -0
- package/dist/lib/method-registry.js.map +1 -0
- 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 +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 +42 -0
- package/dist/lib/session.d.ts.map +1 -0
- package/dist/lib/session.js +109 -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/state.d.ts +51 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +90 -0
- package/dist/lib/state.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 +96 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/lib/style.js +169 -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/update-check.d.ts +21 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +145 -0
- package/dist/lib/update-check.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 +19 -0
- package/dist/lib/workspace-probe.d.ts.map +1 -0
- package/dist/lib/workspace-probe.js +27 -0
- package/dist/lib/workspace-probe.js.map +1 -0
- package/dist/surfaces/registry.d.ts +20 -0
- package/dist/surfaces/registry.d.ts.map +1 -0
- package/dist/surfaces/registry.js +42 -0
- package/dist/surfaces/registry.js.map +1 -0
- package/package.json +15 -5
- 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/method-registry.json +16 -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,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,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pb setup — guided first-time onboarding: npm install → first capture.
|
|
3
|
+
* WP-301 Slice 3. Each step emits telemetry (STD-155 event names).
|
|
4
|
+
*
|
|
5
|
+
* Flow:
|
|
6
|
+
* 0. Check existing config → offer health check or continue to login
|
|
7
|
+
* 1. Account check → signup URL or login inline
|
|
8
|
+
* 2. Workspace binding confirmation
|
|
9
|
+
* 3. Guided first capture (starts a session, captures via MCP)
|
|
10
|
+
* 4. Summary with next-step hint
|
|
11
|
+
*
|
|
12
|
+
* WP-303 Slice 1: migrated from readline to @clack/prompts via lib/prompts.ts.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runSetup(): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA+BH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9C"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pb setup — guided first-time onboarding: npm install → first capture.
|
|
3
|
+
* WP-301 Slice 3. Each step emits telemetry (STD-155 event names).
|
|
4
|
+
*
|
|
5
|
+
* Flow:
|
|
6
|
+
* 0. Check existing config → offer health check or continue to login
|
|
7
|
+
* 1. Account check → signup URL or login inline
|
|
8
|
+
* 2. Workspace binding confirmation
|
|
9
|
+
* 3. Guided first capture (starts a session, captures via MCP)
|
|
10
|
+
* 4. Summary with next-step hint
|
|
11
|
+
*
|
|
12
|
+
* WP-303 Slice 1: migrated from readline to @clack/prompts via lib/prompts.ts.
|
|
13
|
+
*/
|
|
14
|
+
import { getConfig } from '../lib/config.js';
|
|
15
|
+
import { kernelCall } from '../lib/client.js';
|
|
16
|
+
import { readSession, writeSession } from '../lib/session.js';
|
|
17
|
+
import { trackEvent } from '../lib/telemetry.js';
|
|
18
|
+
import { runLogin } from './login.js';
|
|
19
|
+
import { initTelemetry } from '../lib/telemetry.js';
|
|
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;
|
|
38
|
+
try {
|
|
39
|
+
const config = getConfig();
|
|
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;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// No valid config — continue to login
|
|
71
|
+
}
|
|
72
|
+
// Step 2: Account check + login (only if no valid config)
|
|
73
|
+
if (!hasValidConfig) {
|
|
74
|
+
console.log('To get started, you need a Product Brain account and API key.');
|
|
75
|
+
console.log('');
|
|
76
|
+
const hasAccount = await promptConfirm({ message: 'Do you have a Product Brain account?', initialValue: false });
|
|
77
|
+
if (!hasAccount) {
|
|
78
|
+
console.log('');
|
|
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;
|
|
83
|
+
}
|
|
84
|
+
// Run login flow — handles key prompt, validation, and saving
|
|
85
|
+
console.log('');
|
|
86
|
+
await runLogin();
|
|
87
|
+
trackEvent('key_validated');
|
|
88
|
+
await runSetupPostLogin();
|
|
89
|
+
return;
|
|
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;
|
|
102
|
+
}
|
|
103
|
+
trackEvent('workspace_bound');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
console.log('Could not reach workspace. Try: pb orient -b');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
await ensureSessionAndOnboard(wsName, wsId);
|
|
110
|
+
}
|
|
111
|
+
/** Ensure a session exists, then run the onboarding conversation. */
|
|
112
|
+
async function ensureSessionAndOnboard(workspaceName, workspaceId) {
|
|
113
|
+
let session = readSession();
|
|
114
|
+
if (!session) {
|
|
115
|
+
try {
|
|
116
|
+
const resolvedWs = workspaceId
|
|
117
|
+
? { _id: workspaceId, keyId: null }
|
|
118
|
+
: await kernelCall('resolveWorkspace', {});
|
|
119
|
+
if (!resolvedWs)
|
|
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);
|
|
142
|
+
}
|
|
143
|
+
else if (workspaceId) {
|
|
144
|
+
initTelemetry(workspaceId);
|
|
145
|
+
}
|
|
146
|
+
process.stdout.write(`\n Setup complete. Run ${bold('pb session start')} to begin a session.\n\n`);
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pb update <entry-id> — update fields on existing Chain entries.
|
|
3
|
+
* Resolves TEN-703. Requires active session (DEC-9, BR-8).
|
|
4
|
+
* BET-181 Slice 0: uses isJsonMode() for output branching.
|
|
5
|
+
* Thin client: validation lives in Convex (BR-104).
|
|
6
|
+
*/
|
|
7
|
+
interface UpdateOptions {
|
|
8
|
+
entryId: string;
|
|
9
|
+
field?: string[];
|
|
10
|
+
name?: string;
|
|
11
|
+
status?: string;
|
|
12
|
+
workflowStatus?: string;
|
|
13
|
+
note?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function runUpdate(options: UpdateOptions): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyCD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJrE"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pb update <entry-id> — update fields on existing Chain entries.
|
|
3
|
+
* Resolves TEN-703. Requires active session (DEC-9, BR-8).
|
|
4
|
+
* BET-181 Slice 0: uses isJsonMode() for output branching.
|
|
5
|
+
* Thin client: validation lives in Convex (BR-104).
|
|
6
|
+
*/
|
|
7
|
+
import { getConfigOrGuide } from '../lib/config.js';
|
|
8
|
+
import { kernelCall, kernelCallWithSession } from '../lib/client.js';
|
|
9
|
+
import { readSession } from '../lib/session.js';
|
|
10
|
+
import { isJsonMode } from '../lib/runner.js';
|
|
11
|
+
import { stripConvexInternals } from '../lib/strip.js';
|
|
12
|
+
import { formatUpdateReceipt } from '../formatters/update.js';
|
|
13
|
+
import { formatEntry } from '../formatters/entry.js';
|
|
14
|
+
import { CLIError, ErrorCode } from '../lib/errors.js';
|
|
15
|
+
/**
|
|
16
|
+
* Parse --field key=value pairs into a data object.
|
|
17
|
+
* Splits on first `=` only to handle values containing `=`.
|
|
18
|
+
*/
|
|
19
|
+
function parseFields(fields) {
|
|
20
|
+
const data = {};
|
|
21
|
+
for (const f of fields) {
|
|
22
|
+
const eqIndex = f.indexOf('=');
|
|
23
|
+
if (eqIndex === -1) {
|
|
24
|
+
throw new CLIError(`Invalid --field format: "${f}". Expected key=value.`, {
|
|
25
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
26
|
+
category: 'validation',
|
|
27
|
+
guidance: 'Use --field key=value (split on first "=").',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const key = f.slice(0, eqIndex).trim();
|
|
31
|
+
const value = f.slice(eqIndex + 1).trim();
|
|
32
|
+
if (!key) {
|
|
33
|
+
throw new CLIError(`Invalid --field format: "${f}". Key cannot be empty.`, {
|
|
34
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
35
|
+
category: 'validation',
|
|
36
|
+
guidance: 'Provide a non-empty key before the "=" sign.',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
data[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
export async function runUpdate(options) {
|
|
44
|
+
const config = await getConfigOrGuide(() => runUpdate(options));
|
|
45
|
+
if (!config)
|
|
46
|
+
return;
|
|
47
|
+
const json = isJsonMode();
|
|
48
|
+
// Require active session (DEC-9, BR-8)
|
|
49
|
+
const session = readSession();
|
|
50
|
+
if (!session) {
|
|
51
|
+
throw new CLIError('No active session.', {
|
|
52
|
+
code: ErrorCode.SESSION_REQUIRED,
|
|
53
|
+
category: 'session',
|
|
54
|
+
guidance: 'Run `pb session start` first. Write access requires a tracked session (DEC-9).',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// Validate entryId
|
|
58
|
+
const entryId = options.entryId.trim();
|
|
59
|
+
if (!entryId) {
|
|
60
|
+
throw new CLIError('Entry ID is required.', {
|
|
61
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
62
|
+
category: 'validation',
|
|
63
|
+
guidance: 'Usage: pb update <entry-id> [options]',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
// Build update args
|
|
67
|
+
const args = { entryId };
|
|
68
|
+
args.changedBy = `agent:${session.sessionId}`;
|
|
69
|
+
if (options.name) {
|
|
70
|
+
args.name = options.name;
|
|
71
|
+
}
|
|
72
|
+
if (options.status) {
|
|
73
|
+
args.status = options.status;
|
|
74
|
+
}
|
|
75
|
+
if (options.workflowStatus) {
|
|
76
|
+
args.workflowStatus = options.workflowStatus;
|
|
77
|
+
}
|
|
78
|
+
if (options.field && options.field.length > 0) {
|
|
79
|
+
args.data = parseFields(options.field);
|
|
80
|
+
}
|
|
81
|
+
if (options.note) {
|
|
82
|
+
args.changeNote = options.note;
|
|
83
|
+
}
|
|
84
|
+
// Must have at least one thing to update
|
|
85
|
+
if (!options.name && !options.status && !options.workflowStatus && (!options.field || options.field.length === 0)) {
|
|
86
|
+
throw new CLIError('Nothing to update.', {
|
|
87
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
88
|
+
category: 'validation',
|
|
89
|
+
guidance: 'Provide at least one of: --field, --name, --status, --workflow-status',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (!json)
|
|
93
|
+
process.stdout.write(`Updating ${entryId}...\n`);
|
|
94
|
+
let result;
|
|
95
|
+
try {
|
|
96
|
+
result = await kernelCallWithSession('chain.updateEntry', args);
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
// McpError carries code + details from the server. Check by name to avoid
|
|
100
|
+
// class identity issues across module boundaries.
|
|
101
|
+
const mcpErr = err;
|
|
102
|
+
if (err instanceof Error && err.name === 'McpError') {
|
|
103
|
+
// Render structured validation errors for select/multi-select fields.
|
|
104
|
+
if (mcpErr.details && mcpErr.details.length > 0) {
|
|
105
|
+
const selectErrors = mcpErr.details.filter((d) => d.errorType === 'invalid_option' && d.validOptions);
|
|
106
|
+
if (selectErrors.length > 0) {
|
|
107
|
+
const fieldMessages = selectErrors.map((d) => {
|
|
108
|
+
const got = typeof d.invalidValue === 'string' ? d.invalidValue : JSON.stringify(d.invalidValue);
|
|
109
|
+
return `Field '${d.fieldLabel}' must be one of: ${d.validOptions.join(', ')}. Got: '${got}'`;
|
|
110
|
+
});
|
|
111
|
+
throw new CLIError(`Validation failed: ${fieldMessages.join('; ')}`, {
|
|
112
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
113
|
+
category: 'validation',
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Fallback: plain MCP error
|
|
118
|
+
throw new CLIError(mcpErr.message, {
|
|
119
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
120
|
+
category: 'validation',
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
throw err;
|
|
124
|
+
}
|
|
125
|
+
// Fetch the refreshed entry so the user sees current state, not just a receipt.
|
|
126
|
+
// Graceful degradation: if the get fails, still show the update receipt.
|
|
127
|
+
let refreshedEntry = null;
|
|
128
|
+
try {
|
|
129
|
+
refreshedEntry = await kernelCall('chain.getEntry', { entryId });
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Non-fatal — display issue, not a write failure
|
|
133
|
+
}
|
|
134
|
+
// BET-271 S1: Determine if any fields were rejected by normalization.
|
|
135
|
+
const rejectedFields = result.normalization?.rejected ?? [];
|
|
136
|
+
const hasRejected = rejectedFields.length > 0;
|
|
137
|
+
// Note: EntryFromApi has canonicalKey (e.g. "bet") but pb fields expects
|
|
138
|
+
// the collection slug (e.g. "bets"). Since the slug isn't available here,
|
|
139
|
+
// omit the collection hint — the user knows their entry type.
|
|
140
|
+
const collectionHint = '';
|
|
141
|
+
if (json) {
|
|
142
|
+
// Spread existing result fields flat (preserves backward compat with scripts
|
|
143
|
+
// that read .id / .warnings / etc.) and add `entry` alongside when available.
|
|
144
|
+
const output = { ...stripConvexInternals(result) };
|
|
145
|
+
if (refreshedEntry) {
|
|
146
|
+
output.entry = stripConvexInternals(refreshedEntry);
|
|
147
|
+
}
|
|
148
|
+
if (hasRejected) {
|
|
149
|
+
output.fieldsRejected = true;
|
|
150
|
+
}
|
|
151
|
+
process.stdout.write(JSON.stringify(output) + '\n');
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
process.stdout.write('\n');
|
|
155
|
+
process.stdout.write(formatUpdateReceipt({
|
|
156
|
+
entryId,
|
|
157
|
+
changeNote: options.note,
|
|
158
|
+
fieldsChanged: options.field ?? [],
|
|
159
|
+
name: options.name,
|
|
160
|
+
status: options.status,
|
|
161
|
+
normalizationWarnings: result.normalizationWarnings ?? [],
|
|
162
|
+
validationWarnings: result.validationWarnings ?? [],
|
|
163
|
+
}) + '\n');
|
|
164
|
+
if (refreshedEntry) {
|
|
165
|
+
process.stdout.write('\n');
|
|
166
|
+
process.stdout.write(formatEntry(refreshedEntry) + '\n');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// BET-271 S1: Throw when fields were rejected — signals "not everything you asked for happened."
|
|
170
|
+
if (hasRejected) {
|
|
171
|
+
throw new CLIError(`Fields rejected: ${rejectedFields.join(', ')}.`, {
|
|
172
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
173
|
+
category: 'validation',
|
|
174
|
+
guidance: `Run \`pb fields${collectionHint}\` to see valid fields.`,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pb usage — Ink TUI dashboard for session and activity data (WP-322 S4, E2/FEAT-1011).
|
|
3
|
+
*
|
|
4
|
+
* Tabs:
|
|
5
|
+
* Overview — summary stats (total sessions, entries 30d, avg duration, last session)
|
|
6
|
+
* Activity — table: Date | Sessions | Entries | Relations | Gate Failures (30d)
|
|
7
|
+
* Spend — static placeholder (v1)
|
|
8
|
+
* Insights — text-based activity heatmap (30d)
|
|
9
|
+
*
|
|
10
|
+
* JSON mode (--json): fetches data and emits structured JSON to stdout, no Ink.
|
|
11
|
+
* Non-TTY fallback: plain-text summary.
|
|
12
|
+
*
|
|
13
|
+
* Keyboard:
|
|
14
|
+
* Tab / Shift+Tab — cycle tabs
|
|
15
|
+
* q / Escape — quit
|
|
16
|
+
*
|
|
17
|
+
* Chain: WP-322, DEC-572 (envelope SSOT, supersedes DEC-299), DEC-184 (clientKind)
|
|
18
|
+
*/
|
|
19
|
+
/** Mirrors agent.getActivityByDay response shape (added in S3). */
|
|
20
|
+
export type ActivityDay = {
|
|
21
|
+
date: string;
|
|
22
|
+
sessionCount: number;
|
|
23
|
+
entriesCreated: number;
|
|
24
|
+
relationsCreated: number;
|
|
25
|
+
gateFailures: number;
|
|
26
|
+
};
|
|
27
|
+
type UsageData = {
|
|
28
|
+
activity: ActivityDay[];
|
|
29
|
+
workspaceId: string;
|
|
30
|
+
};
|
|
31
|
+
export type UsageDashboardProps = {
|
|
32
|
+
data: UsageData;
|
|
33
|
+
onExit: () => void;
|
|
34
|
+
};
|
|
35
|
+
export declare function UsageDashboard({ data, onExit }: UsageDashboardProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare function runUsage(options?: {
|
|
37
|
+
json?: boolean;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/commands/usage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAWH,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA8RF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CAqCnE;AAkDD,wBAAsB,QAAQ,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC9E"}
|