@productbrain/cli 0.1.0-beta.104 → 0.1.0-beta.1049
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/audit.test.js +5 -0
- package/dist/__tests__/audit.test.js.map +1 -1
- package/dist/__tests__/canonicalRefs.vocab.test.d.ts +2 -0
- package/dist/__tests__/canonicalRefs.vocab.test.d.ts.map +1 -0
- package/dist/__tests__/canonicalRefs.vocab.test.js +251 -0
- package/dist/__tests__/canonicalRefs.vocab.test.js.map +1 -0
- package/dist/__tests__/config.test.js +272 -2
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/constants.test.js +6 -1
- package/dist/__tests__/constants.test.js.map +1 -1
- package/dist/__tests__/envelope-contract.test.js +29 -3
- package/dist/__tests__/envelope-contract.test.js.map +1 -1
- package/dist/__tests__/errors.test.js +1 -0
- package/dist/__tests__/errors.test.js.map +1 -1
- package/dist/__tests__/handshake-augment.test.d.ts +2 -0
- package/dist/__tests__/handshake-augment.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-augment.test.js +423 -0
- package/dist/__tests__/handshake-augment.test.js.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts +2 -0
- package/dist/__tests__/handshake-dormancy.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-dormancy.test.js +207 -0
- package/dist/__tests__/handshake-dormancy.test.js.map +1 -0
- package/dist/__tests__/handshake-formatter.test.d.ts +2 -0
- package/dist/__tests__/handshake-formatter.test.d.ts.map +1 -0
- package/dist/__tests__/handshake-formatter.test.js +67 -0
- package/dist/__tests__/handshake-formatter.test.js.map +1 -0
- package/dist/__tests__/handshake-preview.test.js +566 -4
- package/dist/__tests__/handshake-preview.test.js.map +1 -1
- package/dist/__tests__/handshake.e2e.test.d.ts +2 -0
- package/dist/__tests__/handshake.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/handshake.e2e.test.js +1252 -0
- package/dist/__tests__/handshake.e2e.test.js.map +1 -0
- package/dist/__tests__/handshake.test.js +255 -5
- package/dist/__tests__/handshake.test.js.map +1 -1
- package/dist/__tests__/manifest.test.js +118 -1
- package/dist/__tests__/manifest.test.js.map +1 -1
- package/dist/__tests__/notice-marker.test.d.ts +2 -0
- package/dist/__tests__/notice-marker.test.d.ts.map +1 -0
- package/dist/__tests__/notice-marker.test.js +41 -0
- package/dist/__tests__/notice-marker.test.js.map +1 -0
- package/dist/__tests__/onboarding-path-b.test.js +4 -4
- package/dist/__tests__/onboarding-path-b.test.js.map +1 -1
- package/dist/__tests__/orient.test.js +132 -8
- package/dist/__tests__/orient.test.js.map +1 -1
- package/dist/__tests__/perimeter.test.d.ts +2 -0
- package/dist/__tests__/perimeter.test.d.ts.map +1 -0
- package/dist/__tests__/perimeter.test.js +165 -0
- package/dist/__tests__/perimeter.test.js.map +1 -0
- package/dist/__tests__/personal-layer.test.d.ts +1 -2
- package/dist/__tests__/personal-layer.test.d.ts.map +1 -1
- package/dist/__tests__/personal-layer.test.js +12 -48
- package/dist/__tests__/personal-layer.test.js.map +1 -1
- package/dist/__tests__/profiles.test.js +106 -2
- package/dist/__tests__/profiles.test.js.map +1 -1
- package/dist/__tests__/promote.test.js +2 -2
- package/dist/__tests__/promote.test.js.map +1 -1
- package/dist/__tests__/session-state-machine.test.js +45 -1
- package/dist/__tests__/session-state-machine.test.js.map +1 -1
- package/dist/__tests__/session-switch.test.d.ts +2 -0
- package/dist/__tests__/session-switch.test.d.ts.map +1 -0
- package/dist/__tests__/session-switch.test.js +129 -0
- package/dist/__tests__/session-switch.test.js.map +1 -0
- package/dist/__tests__/setup-ingest.test.js +16 -0
- package/dist/__tests__/setup-ingest.test.js.map +1 -1
- package/dist/__tests__/skill-vocabulary.test.d.ts +21 -0
- package/dist/__tests__/skill-vocabulary.test.d.ts.map +1 -0
- package/dist/__tests__/skill-vocabulary.test.js +187 -0
- package/dist/__tests__/skill-vocabulary.test.js.map +1 -0
- package/dist/__tests__/update-check.test.d.ts +2 -0
- package/dist/__tests__/update-check.test.d.ts.map +1 -0
- package/dist/__tests__/update-check.test.js +215 -0
- package/dist/__tests__/update-check.test.js.map +1 -0
- package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
- package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade-runner.test.js +54 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -0
- package/dist/__tests__/upgrade.test.d.ts +2 -0
- package/dist/__tests__/upgrade.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade.test.js +56 -0
- package/dist/__tests__/upgrade.test.js.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts +39 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.js +534 -0
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
- package/dist/__tests__/workspace.test.js +9 -9
- package/dist/__tests__/workspace.test.js.map +1 -1
- package/dist/commands/__tests__/connect-handoff.test.d.ts +11 -0
- package/dist/commands/__tests__/connect-handoff.test.d.ts.map +1 -0
- package/dist/commands/__tests__/connect-handoff.test.js +111 -0
- package/dist/commands/__tests__/connect-handoff.test.js.map +1 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts +15 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.d.ts.map +1 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js +149 -0
- package/dist/commands/__tests__/setup-detect-surfaces.test.js.map +1 -0
- package/dist/commands/__tests__/setup-state.test.d.ts +2 -0
- package/dist/commands/__tests__/setup-state.test.d.ts.map +1 -0
- package/dist/commands/__tests__/setup-state.test.js +194 -0
- package/dist/commands/__tests__/setup-state.test.js.map +1 -0
- package/dist/commands/admin/seed.d.ts +32 -2
- package/dist/commands/admin/seed.d.ts.map +1 -1
- package/dist/commands/admin/seed.js +279 -33
- package/dist/commands/admin/seed.js.map +1 -1
- package/dist/commands/admin/seed.test.js +7 -0
- package/dist/commands/admin/seed.test.js.map +1 -1
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts +14 -0
- package/dist/commands/admin/seedRegistryEntries.generated.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js +117 -0
- package/dist/commands/admin/seedRegistryEntries.generated.js.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts +11 -0
- package/dist/commands/admin/seedRegistryEntries.test.d.ts.map +1 -0
- package/dist/commands/admin/seedRegistryEntries.test.js +67 -0
- package/dist/commands/admin/seedRegistryEntries.test.js.map +1 -0
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +30 -3
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/authority-domains.d.ts +7 -1
- package/dist/commands/authority-domains.d.ts.map +1 -1
- package/dist/commands/authority-domains.js +19 -4
- package/dist/commands/authority-domains.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +5 -3
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/codex-prep.d.ts +1 -0
- package/dist/commands/codex-prep.d.ts.map +1 -1
- package/dist/commands/codex-prep.js +10 -7
- package/dist/commands/codex-prep.js.map +1 -1
- package/dist/commands/connect-config.test.d.ts +2 -0
- package/dist/commands/connect-config.test.d.ts.map +1 -0
- package/dist/commands/connect-config.test.js +44 -0
- package/dist/commands/connect-config.test.js.map +1 -0
- package/dist/commands/connect-context.d.ts +45 -0
- package/dist/commands/connect-context.d.ts.map +1 -0
- package/dist/commands/connect-context.js +64 -0
- package/dist/commands/connect-context.js.map +1 -0
- package/dist/commands/connect-context.test.d.ts +2 -0
- package/dist/commands/connect-context.test.d.ts.map +1 -0
- package/dist/commands/connect-context.test.js +110 -0
- package/dist/commands/connect-context.test.js.map +1 -0
- package/dist/commands/connect-handoff.d.ts +51 -0
- package/dist/commands/connect-handoff.d.ts.map +1 -0
- package/dist/commands/connect-handoff.js +70 -0
- package/dist/commands/connect-handoff.js.map +1 -0
- package/dist/commands/connect-integration.test.js +13 -12
- package/dist/commands/connect-integration.test.js.map +1 -1
- package/dist/commands/connect-screens.d.ts +7 -8
- package/dist/commands/connect-screens.d.ts.map +1 -1
- package/dist/commands/connect-screens.js +30 -37
- package/dist/commands/connect-screens.js.map +1 -1
- package/dist/commands/connect.d.ts +19 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +31 -56
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +68 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +150 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/handshake.d.ts +84 -4
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +1172 -100
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/method.d.ts.map +1 -1
- package/dist/commands/method.js +5 -1
- package/dist/commands/method.js.map +1 -1
- package/dist/commands/orient.d.ts +61 -2
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +41 -6
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/profile.d.ts +1 -14
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +89 -72
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/reject.d.ts.map +1 -1
- package/dist/commands/reject.js +2 -1
- package/dist/commands/reject.js.map +1 -1
- package/dist/commands/relate.d.ts.map +1 -1
- package/dist/commands/relate.js +4 -2
- package/dist/commands/relate.js.map +1 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +50 -13
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/setup-audit.d.ts +59 -0
- package/dist/commands/setup-audit.d.ts.map +1 -0
- package/dist/commands/setup-audit.js +250 -0
- package/dist/commands/setup-audit.js.map +1 -0
- package/dist/commands/setup-detect-surfaces.d.ts +38 -0
- package/dist/commands/setup-detect-surfaces.d.ts.map +1 -0
- package/dist/commands/setup-detect-surfaces.js +76 -0
- package/dist/commands/setup-detect-surfaces.js.map +1 -0
- package/dist/commands/setup-ingest.d.ts.map +1 -1
- package/dist/commands/setup-ingest.js +4 -2
- package/dist/commands/setup-ingest.js.map +1 -1
- package/dist/commands/setup-state.d.ts +42 -0
- package/dist/commands/setup-state.d.ts.map +1 -0
- package/dist/commands/setup-state.js +93 -0
- package/dist/commands/setup-state.js.map +1 -0
- package/dist/commands/setup.d.ts +17 -9
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +52 -131
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +2 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upgrade.d.ts +5 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +110 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +2 -1
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.d.ts +12 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +70 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/whoami.test.d.ts +2 -0
- package/dist/commands/whoami.test.d.ts.map +1 -0
- package/dist/commands/whoami.test.js +50 -0
- package/dist/commands/whoami.test.js.map +1 -0
- package/dist/commands/workspace.d.ts +2 -2
- package/dist/commands/workspace.d.ts.map +1 -1
- package/dist/commands/workspace.js +1 -1
- package/dist/commands/workspace.js.map +1 -1
- package/dist/formatters/__tests__/orient-provenance.test.d.ts +7 -0
- package/dist/formatters/__tests__/orient-provenance.test.d.ts.map +1 -0
- package/dist/formatters/__tests__/orient-provenance.test.js +454 -0
- package/dist/formatters/__tests__/orient-provenance.test.js.map +1 -0
- package/dist/formatters/audit.d.ts +6 -0
- package/dist/formatters/audit.d.ts.map +1 -1
- package/dist/formatters/audit.js.map +1 -1
- package/dist/formatters/entry.d.ts +21 -0
- package/dist/formatters/entry.d.ts.map +1 -1
- package/dist/formatters/entry.js +46 -5
- package/dist/formatters/entry.js.map +1 -1
- package/dist/formatters/handshake.d.ts +19 -3
- package/dist/formatters/handshake.d.ts.map +1 -1
- package/dist/formatters/handshake.js +48 -13
- package/dist/formatters/handshake.js.map +1 -1
- package/dist/formatters/orient.d.ts +79 -4
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +119 -18
- package/dist/formatters/orient.js.map +1 -1
- package/dist/generators/context-md.js +6 -6
- package/dist/generators/context-md.js.map +1 -1
- package/dist/generators/manifest.d.ts +76 -0
- package/dist/generators/manifest.d.ts.map +1 -1
- package/dist/generators/manifest.js +125 -14
- package/dist/generators/manifest.js.map +1 -1
- package/dist/generators/portable-knowledge.d.ts +6 -12
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- package/dist/generators/portable-knowledge.js +2 -19
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/generators/region-projections.d.ts +18 -0
- package/dist/generators/region-projections.d.ts.map +1 -0
- package/dist/generators/region-projections.js +49 -0
- package/dist/generators/region-projections.js.map +1 -0
- package/dist/generators/region-projections.test.d.ts +2 -0
- package/dist/generators/region-projections.test.d.ts.map +1 -0
- package/dist/generators/region-projections.test.js +63 -0
- package/dist/generators/region-projections.test.js.map +1 -0
- package/dist/generators/region.d.ts +24 -0
- package/dist/generators/region.d.ts.map +1 -0
- package/dist/generators/region.js +87 -0
- package/dist/generators/region.js.map +1 -0
- package/dist/generators/region.test.d.ts +2 -0
- package/dist/generators/region.test.d.ts.map +1 -0
- package/dist/generators/region.test.js +126 -0
- package/dist/generators/region.test.js.map +1 -0
- package/dist/generators/surface-profiles.d.ts +1 -2
- package/dist/generators/surface-profiles.d.ts.map +1 -1
- package/dist/generators/surface-profiles.js.map +1 -1
- package/dist/index.js +134 -26
- package/dist/index.js.map +1 -1
- package/dist/lib/activation.d.ts.map +1 -1
- package/dist/lib/activation.js +3 -3
- package/dist/lib/activation.js.map +1 -1
- package/dist/lib/activation.test.js +3 -3
- package/dist/lib/activation.test.js.map +1 -1
- package/dist/lib/canonicalRefs.d.ts +72 -0
- package/dist/lib/canonicalRefs.d.ts.map +1 -1
- package/dist/lib/canonicalRefs.js +67 -0
- package/dist/lib/canonicalRefs.js.map +1 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +13 -3
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts +70 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +151 -11
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +2 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +1 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/notice-marker.d.ts +3 -0
- package/dist/lib/notice-marker.d.ts.map +1 -0
- package/dist/lib/notice-marker.js +53 -0
- package/dist/lib/notice-marker.js.map +1 -0
- package/dist/lib/onboarding-path-b.d.ts.map +1 -1
- package/dist/lib/onboarding-path-b.js +0 -1
- package/dist/lib/onboarding-path-b.js.map +1 -1
- package/dist/lib/onboarding-shared.d.ts +0 -1
- package/dist/lib/onboarding-shared.d.ts.map +1 -1
- package/dist/lib/onboarding-shared.js +1 -17
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/profiles.d.ts +3 -1
- package/dist/lib/profiles.d.ts.map +1 -1
- package/dist/lib/profiles.js +9 -6
- package/dist/lib/profiles.js.map +1 -1
- package/dist/lib/session.d.ts +10 -0
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/lib/session.js +14 -0
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/update-check.d.ts +42 -7
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +213 -62
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +22 -0
- package/dist/lib/upgrade-runner.d.ts.map +1 -0
- package/dist/lib/upgrade-runner.js +110 -0
- package/dist/lib/upgrade-runner.js.map +1 -0
- package/dist/lib/workspaceVocabCache.d.ts +60 -0
- package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
- package/dist/lib/workspaceVocabCache.js +98 -0
- package/dist/lib/workspaceVocabCache.js.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.js +189 -0
- package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.js +177 -0
- package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
- package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
- package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
- package/dist/setup/__tests__/state-machine.test.js +341 -0
- package/dist/setup/__tests__/state-machine.test.js.map +1 -0
- package/dist/setup/detect-surfaces.d.ts +21 -0
- package/dist/setup/detect-surfaces.d.ts.map +1 -0
- package/dist/setup/detect-surfaces.js +39 -0
- package/dist/setup/detect-surfaces.js.map +1 -0
- package/dist/setup/manifest-writer.d.ts +17 -0
- package/dist/setup/manifest-writer.d.ts.map +1 -0
- package/dist/setup/manifest-writer.js +153 -0
- package/dist/setup/manifest-writer.js.map +1 -0
- package/dist/setup/perimeter.d.ts +72 -0
- package/dist/setup/perimeter.d.ts.map +1 -0
- package/dist/setup/perimeter.js +128 -0
- package/dist/setup/perimeter.js.map +1 -0
- package/dist/setup/state-machine.d.ts +67 -0
- package/dist/setup/state-machine.d.ts.map +1 -0
- package/dist/setup/state-machine.js +124 -0
- package/dist/setup/state-machine.js.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.js +90 -0
- package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.js +55 -0
- package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
- package/dist/surfaces/adapter.d.ts +70 -0
- package/dist/surfaces/adapter.d.ts.map +1 -0
- package/dist/surfaces/adapter.js +2 -0
- package/dist/surfaces/adapter.js.map +1 -0
- package/dist/surfaces/adapters/claude.d.ts +3 -0
- package/dist/surfaces/adapters/claude.d.ts.map +1 -0
- package/dist/surfaces/adapters/claude.js +67 -0
- package/dist/surfaces/adapters/claude.js.map +1 -0
- package/dist/surfaces/adapters/codex.d.ts +3 -0
- package/dist/surfaces/adapters/codex.d.ts.map +1 -0
- package/dist/surfaces/adapters/codex.js +61 -0
- package/dist/surfaces/adapters/codex.js.map +1 -0
- package/dist/surfaces/adapters/copilot.d.ts +3 -0
- package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
- package/dist/surfaces/adapters/copilot.js +59 -0
- package/dist/surfaces/adapters/copilot.js.map +1 -0
- package/dist/surfaces/adapters/cursor.d.ts +3 -0
- package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
- package/dist/surfaces/adapters/cursor.js +78 -0
- package/dist/surfaces/adapters/cursor.js.map +1 -0
- package/dist/surfaces/registry.d.ts +58 -2
- package/dist/surfaces/registry.d.ts.map +1 -1
- package/dist/surfaces/registry.js +82 -7
- package/dist/surfaces/registry.js.map +1 -1
- package/dist/surfaces/telemetry.d.ts +17 -0
- package/dist/surfaces/telemetry.d.ts.map +1 -0
- package/dist/surfaces/telemetry.js +31 -0
- package/dist/surfaces/telemetry.js.map +1 -0
- package/package.json +3 -1
- package/dist/__tests__/setup.test.d.ts +0 -2
- package/dist/__tests__/setup.test.d.ts.map +0 -1
- package/dist/__tests__/setup.test.js +0 -141
- package/dist/__tests__/setup.test.js.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.d.ts +0 -2
- package/dist/generators/__tests__/surface-profiles.test.d.ts.map +0 -1
- package/dist/generators/__tests__/surface-profiles.test.js +0 -89
- package/dist/generators/__tests__/surface-profiles.test.js.map +0 -1
- package/dist/lib/onboarding-phases.d.ts +0 -9
- package/dist/lib/onboarding-phases.d.ts.map +0 -1
- package/dist/lib/onboarding-phases.js +0 -120
- package/dist/lib/onboarding-phases.js.map +0 -1
package/dist/lib/profiles.js
CHANGED
|
@@ -76,12 +76,8 @@ export function listProfiles() {
|
|
|
76
76
|
.map((f) => f.replace(/\.env$/, ''))
|
|
77
77
|
.sort();
|
|
78
78
|
}
|
|
79
|
-
/**
|
|
80
|
-
export function
|
|
81
|
-
// PB_PROFILE env var takes precedence
|
|
82
|
-
const envProfile = process.env.PB_PROFILE?.trim();
|
|
83
|
-
if (envProfile)
|
|
84
|
-
return envProfile;
|
|
79
|
+
/** Read the global active-profile file only (ignores PB_PROFILE). */
|
|
80
|
+
export function getGlobalActiveProfile() {
|
|
85
81
|
if (existsSync(ACTIVE_PROFILE_PATH)) {
|
|
86
82
|
const name = readFileSync(ACTIVE_PROFILE_PATH, 'utf8').trim();
|
|
87
83
|
if (name)
|
|
@@ -89,6 +85,13 @@ export function getActiveProfile() {
|
|
|
89
85
|
}
|
|
90
86
|
return null;
|
|
91
87
|
}
|
|
88
|
+
/** Get the active profile name (PB_PROFILE env wins, then the global file). */
|
|
89
|
+
export function getActiveProfile() {
|
|
90
|
+
const envProfile = process.env.PB_PROFILE?.trim();
|
|
91
|
+
if (envProfile)
|
|
92
|
+
return envProfile;
|
|
93
|
+
return getGlobalActiveProfile();
|
|
94
|
+
}
|
|
92
95
|
/** Create a new profile. */
|
|
93
96
|
export function createProfile(name, apiKey, siteUrl) {
|
|
94
97
|
validateProfileName(name);
|
package/dist/lib/profiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/lib/profiles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/lib/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACtE,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAC1D,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AACvE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAOpD,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,QAAQ,CAChB,yBAAyB,IAAI,sFAAsF,EACnH,EAAE,IAAI,EAAE,SAAS,CAAC,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC;YACN,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO;QACL,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,SAAS;KAC9C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW;IAClB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,eAAe,CAAC;YAAE,UAAU,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACtD,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,aAAa,CAAC,mBAAmB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,YAAY;IAC1B,WAAW,EAAE,CAAC;IACd,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,WAAW,CAAC,YAAY,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SACnC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,sBAAsB;IACpC,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAc,EAAE,OAAgB;IAC1E,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,QAAQ,CAAC,YAAY,IAAI,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,sBAAsB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3H,CAAC;IAED,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG;QACZ,gCAAgC,IAAI,EAAE;QACtC,wBAAwB,MAAM,EAAE;KACjC,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpE,+CAA+C;IAC/C,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACrC,aAAa,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAAC,YAAY,IAAI,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,aAAa,CAAC,mBAAmB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAAC,YAAY,IAAI,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,mCAAmC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,qCAAqC,IAAI,qCAAqC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,6CAA6C,EAAE,CAAC,CAAC;IAC1N,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,WAAW,EAAE,CAAC;IAEd,8BAA8B;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,+BAA+B;IAC/B,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,CAAC;QACC,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,8BAA8B;IAC9B,CAAC;QACC,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QAChD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/lib/session.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export interface SessionState {
|
|
|
14
14
|
entriesCaptured: string[];
|
|
15
15
|
/** Optional: set when session is closed. Presence indicates a closed-marker state. */
|
|
16
16
|
closedAt?: string;
|
|
17
|
+
/** Effective profile name at session start — backstop for detecting a profile switch. */
|
|
18
|
+
profile?: string;
|
|
17
19
|
}
|
|
18
20
|
/** Shape returned by readClosedMarker when a closed marker is present. */
|
|
19
21
|
export interface ClosedMarker {
|
|
@@ -32,6 +34,14 @@ export declare function writeSession(state: SessionState): void;
|
|
|
32
34
|
* WP-322 S2 — enables auto-resume within 2h window.
|
|
33
35
|
*/
|
|
34
36
|
export declare function clearSession(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Delete session.json outright — NO closed marker. Use on a workspace change
|
|
39
|
+
* (profile switch / connect redirect) so the 2h auto-resume can't re-pin the old
|
|
40
|
+
* workspace. (clearSession writes a resume marker; that is only correct for session close.)
|
|
41
|
+
*/
|
|
42
|
+
export declare function discardSession(): void;
|
|
43
|
+
/** True if a session.json file exists at all — active session OR closed marker. */
|
|
44
|
+
export declare function sessionFileExists(): boolean;
|
|
35
45
|
/**
|
|
36
46
|
* Reads the closed marker from session.json.
|
|
37
47
|
* Returns the marker if closedAt is present, otherwise null.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAcD,wBAAgB,WAAW,IAAI,YAAY,GAAG,IAAI,CAWjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAItD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA0BnC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAetD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKtD"}
|
package/dist/lib/session.js
CHANGED
|
@@ -75,6 +75,20 @@ export function clearSession() {
|
|
|
75
75
|
// If we can't write the marker, the file stays as-is (non-blocking).
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Delete session.json outright — NO closed marker. Use on a workspace change
|
|
80
|
+
* (profile switch / connect redirect) so the 2h auto-resume can't re-pin the old
|
|
81
|
+
* workspace. (clearSession writes a resume marker; that is only correct for session close.)
|
|
82
|
+
*/
|
|
83
|
+
export function discardSession() {
|
|
84
|
+
const p = getSessionPath();
|
|
85
|
+
if (existsSync(p))
|
|
86
|
+
unlinkSync(p);
|
|
87
|
+
}
|
|
88
|
+
/** True if a session.json file exists at all — active session OR closed marker. */
|
|
89
|
+
export function sessionFileExists() {
|
|
90
|
+
return existsSync(getSessionPath());
|
|
91
|
+
}
|
|
78
92
|
/**
|
|
79
93
|
* Reads the closed marker from session.json.
|
|
80
94
|
* Returns the marker if closedAt is present, otherwise null.
|
package/dist/lib/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,52 @@
|
|
|
5
5
|
* a one-line notification when a newer version is available.
|
|
6
6
|
*
|
|
7
7
|
* Rules:
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
8
|
+
* - Synchronous: reads cache only, never awaits network, never delays the command
|
|
9
|
+
* - Multi-source cache at ~/.config/productbrain/update-check.json:
|
|
10
|
+
* server header is authoritative within 48h; npm is an isNewer-gated fallback
|
|
10
11
|
* - Silent on any error (network down, registry unreachable, etc.)
|
|
11
|
-
* - JSON mode:
|
|
12
|
+
* - JSON/agent mode: notice goes to stderr (stdout stays bare JSON), throttled once per session
|
|
12
13
|
* - Does NOT use undici/fetch directly; uses Node.js built-in https
|
|
13
14
|
*/
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
|
|
16
|
+
* Emit `cli.version_skew.detected` at most once per process when a strictly newer
|
|
17
|
+
* version has been observed. Exported so callers (e.g. doctor's freshness check)
|
|
18
|
+
* can fire it from their own discovery path while sharing the dedup guard.
|
|
19
|
+
*/
|
|
20
|
+
export declare function reportVersionSkewIfNew(latest: string | null, current?: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Hot-path resolution from cache only — NEVER fetches. The **newest** in-window source wins: the
|
|
23
|
+
* server header is preferred only when it is actually the highest version, so a server that lags
|
|
24
|
+
* npm (its committed `cliVersion.ts` value trails the run-numbered npm publish — see TEN-2199) can
|
|
25
|
+
* no longer mask a newer npm latest. Returns the best available value even when every source is
|
|
26
|
+
* stale ("better than nothing"), because the hot path (checkForUpdate) cannot block on a refresh.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveCachedLatest(): string | null;
|
|
29
|
+
/** @deprecated use resolveCachedLatest. Kept for callers migrating. */
|
|
30
|
+
export declare function readCachedLatestVersion(): string | null;
|
|
31
|
+
/** Clear the post-upgrade sentinel and stale update cache on next CLI startup. */
|
|
32
|
+
export declare function clearPendingUpgradeCache(): void;
|
|
33
|
+
/** Written after a successful self-upgrade so the next CLI process drops stale cache. */
|
|
34
|
+
export declare function writeUpgradePendingSentinel(installedVersion?: string): void;
|
|
35
|
+
/** Test-only: reset module-level per-process guards so each test starts clean. */
|
|
36
|
+
export declare function _resetProcessGuardsForTest(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Compare two semver strings. Returns true if `b` is strictly newer than `a`.
|
|
39
|
+
* Handles standard x.y.z and x.y.z-beta.N formats (numeric comparison per part).
|
|
40
|
+
*/
|
|
41
|
+
export declare function isNewer(current: string, latest: string): boolean;
|
|
42
|
+
/** Record the server-supplied latest version (authoritative source). */
|
|
43
|
+
export declare function recordServerLatest(latestVersion: string | null): void;
|
|
44
|
+
/** Record an npm-resolved latest version — gated so it never stores <= installed. */
|
|
45
|
+
export declare function recordNpmLatest(latestVersion: string | null, currentVersion: string): void;
|
|
46
|
+
/** LIVE resolve — fetches npm and records it (gated). Call ONLY from doctor/upgrade, never the hot path. */
|
|
47
|
+
export declare function resolveLatestVersion(currentVersion?: string): Promise<string | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Synchronously prints at most one update line. Reads cache only — never fetches.
|
|
50
|
+
* Reaches agents (JSON mode) on stderr; stdout stays bare JSON. Throttled once per
|
|
51
|
+
* session (agent) / once per UTC day (human TTY) via O_EXCL markers. Never throws.
|
|
52
|
+
* NOTE: a session with no authenticated server call writes no cache and fires no
|
|
53
|
+
* notice; `pb doctor` live-resolves as the backstop. DEC-2.
|
|
19
54
|
*/
|
|
20
55
|
export declare function checkForUpdate(currentVersion: string): void;
|
|
21
56
|
//# sourceMappingURL=update-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyCH;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAQpF;AA+BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAUnD;AAYD,uEAAuE;AACvE,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAEvD;AAMD,kFAAkF;AAClF,wBAAgB,wBAAwB,IAAI,IAAI,CAU/C;AAED,yFAAyF;AACzF,wBAAgB,2BAA2B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAK3E;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,IAAI,IAAI,CAIjD;AA2BD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAuBhE;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAMrE;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAM1F;AAED,4GAA4G;AAC5G,wBAAsB,oBAAoB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmB1F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAiB3D"}
|
package/dist/lib/update-check.js
CHANGED
|
@@ -5,55 +5,172 @@
|
|
|
5
5
|
* a one-line notification when a newer version is available.
|
|
6
6
|
*
|
|
7
7
|
* Rules:
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
8
|
+
* - Synchronous: reads cache only, never awaits network, never delays the command
|
|
9
|
+
* - Multi-source cache at ~/.config/productbrain/update-check.json:
|
|
10
|
+
* server header is authoritative within 48h; npm is an isNewer-gated fallback
|
|
10
11
|
* - Silent on any error (network down, registry unreachable, etc.)
|
|
11
|
-
* - JSON mode:
|
|
12
|
+
* - JSON/agent mode: notice goes to stderr (stdout stays bare JSON), throttled once per session
|
|
12
13
|
* - Does NOT use undici/fetch directly; uses Node.js built-in https
|
|
13
14
|
*/
|
|
14
|
-
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
15
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync, unlinkSync } from 'node:fs';
|
|
15
16
|
import { request } from 'node:https';
|
|
16
17
|
import { homedir } from 'node:os';
|
|
17
|
-
import { join } from 'node:path';
|
|
18
|
+
import { dirname, join } from 'node:path';
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
18
20
|
import { isJsonMode } from './runner.js';
|
|
19
21
|
import { dim, yellow } from './style.js';
|
|
22
|
+
import { claimNotice } from './notice-marker.js';
|
|
23
|
+
import { trackEvent } from './telemetry.js';
|
|
20
24
|
const PKG_NAME = '@productbrain/cli';
|
|
21
|
-
const
|
|
25
|
+
const SERVER_FRESHNESS_MS = 48 * 60 * 60 * 1000;
|
|
26
|
+
// npm fallback freshness — mirrors the single-source 24h cache TTL that existed before the
|
|
27
|
+
// multi-source split, so a cached npm value is revalidated daily instead of served forever.
|
|
28
|
+
const NPM_FRESHNESS_MS = 24 * 60 * 60 * 1000;
|
|
22
29
|
const CONFIG_DIR = join(homedir(), '.config', 'productbrain');
|
|
23
30
|
const CACHE_PATH = join(CONFIG_DIR, 'update-check.json');
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
const UPGRADE_PENDING_PATH = join(CONFIG_DIR, 'upgrade-pending');
|
|
32
|
+
const NPM_BETA_URL = `https://registry.npmjs.org/${PKG_NAME}/beta`;
|
|
33
|
+
const CHANNEL_RANK = { alpha: -3, beta: -2, rc: -1 };
|
|
34
|
+
let pendingUpgradeClearedThisProcess = false;
|
|
35
|
+
let versionSkewReportedThisProcess = false;
|
|
36
|
+
let cachedRunningCliVersion;
|
|
37
|
+
/** Read the running CLI version from the package's package.json (cached after first read). */
|
|
38
|
+
function readRunningCliVersion() {
|
|
39
|
+
if (cachedRunningCliVersion !== undefined)
|
|
40
|
+
return cachedRunningCliVersion;
|
|
41
|
+
try {
|
|
42
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
43
|
+
const pkgPath = join(here, '..', '..', 'package.json');
|
|
44
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
|
45
|
+
cachedRunningCliVersion = pkg.version ?? null;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
cachedRunningCliVersion = null;
|
|
49
|
+
}
|
|
50
|
+
return cachedRunningCliVersion;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Emit `cli.version_skew.detected` at most once per process when a strictly newer
|
|
54
|
+
* version has been observed. Exported so callers (e.g. doctor's freshness check)
|
|
55
|
+
* can fire it from their own discovery path while sharing the dedup guard.
|
|
56
|
+
*/
|
|
57
|
+
export function reportVersionSkewIfNew(latest, current) {
|
|
58
|
+
if (versionSkewReportedThisProcess)
|
|
59
|
+
return;
|
|
60
|
+
if (!latest)
|
|
61
|
+
return;
|
|
62
|
+
const running = current ?? readRunningCliVersion();
|
|
63
|
+
if (!running)
|
|
64
|
+
return;
|
|
65
|
+
if (!isNewer(running, latest))
|
|
66
|
+
return;
|
|
67
|
+
versionSkewReportedThisProcess = true;
|
|
68
|
+
trackEvent('cli.version_skew.detected', { current: running, latest });
|
|
69
|
+
}
|
|
70
|
+
function readCacheFile() {
|
|
26
71
|
try {
|
|
27
72
|
if (!existsSync(CACHE_PATH))
|
|
28
|
-
return
|
|
29
|
-
|
|
30
|
-
const entry = JSON.parse(raw);
|
|
31
|
-
if (Date.now() - entry.checkedAt < CACHE_TTL_MS) {
|
|
32
|
-
return entry.latestVersion;
|
|
33
|
-
}
|
|
73
|
+
return {};
|
|
74
|
+
return JSON.parse(readFileSync(CACHE_PATH, 'utf8'));
|
|
34
75
|
}
|
|
35
76
|
catch {
|
|
36
|
-
|
|
77
|
+
return {};
|
|
37
78
|
}
|
|
38
|
-
return null;
|
|
39
79
|
}
|
|
40
|
-
|
|
41
|
-
function writeCache(latestVersion) {
|
|
80
|
+
function writeCacheFile(cache) {
|
|
42
81
|
try {
|
|
43
82
|
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
44
|
-
|
|
45
|
-
|
|
83
|
+
writeFileSync(CACHE_PATH, JSON.stringify(cache), 'utf8');
|
|
84
|
+
}
|
|
85
|
+
catch { /* non-fatal */ }
|
|
86
|
+
}
|
|
87
|
+
/** Return the newest (highest by semver) of the supplied values, ignoring null/undefined. */
|
|
88
|
+
function newestOf(...values) {
|
|
89
|
+
let best = null;
|
|
90
|
+
for (const v of values) {
|
|
91
|
+
if (!v)
|
|
92
|
+
continue;
|
|
93
|
+
if (best === null || isNewer(best, v))
|
|
94
|
+
best = v;
|
|
95
|
+
}
|
|
96
|
+
return best;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Hot-path resolution from cache only — NEVER fetches. The **newest** in-window source wins: the
|
|
100
|
+
* server header is preferred only when it is actually the highest version, so a server that lags
|
|
101
|
+
* npm (its committed `cliVersion.ts` value trails the run-numbered npm publish — see TEN-2199) can
|
|
102
|
+
* no longer mask a newer npm latest. Returns the best available value even when every source is
|
|
103
|
+
* stale ("better than nothing"), because the hot path (checkForUpdate) cannot block on a refresh.
|
|
104
|
+
*/
|
|
105
|
+
export function resolveCachedLatest() {
|
|
106
|
+
if (isVersionCheckDisabled())
|
|
107
|
+
return null;
|
|
108
|
+
const cache = readCacheFile();
|
|
109
|
+
const now = Date.now();
|
|
110
|
+
const serverFresh = cache.server && now - cache.server.recordedAt < SERVER_FRESHNESS_MS ? cache.server.value : null;
|
|
111
|
+
// Hot path: an npm value is usable even when stale ("better than nothing"); the live resolver
|
|
112
|
+
// (resolveLatestVersion) is the one that enforces the npm freshness window and re-fetches.
|
|
113
|
+
const best = newestOf(serverFresh, cache.npm?.value);
|
|
114
|
+
if (best !== null)
|
|
115
|
+
return best;
|
|
116
|
+
return cache.server?.value ?? null; // stale server (>48h) as last resort — better than nothing
|
|
117
|
+
}
|
|
118
|
+
/** The in-window value from each source (null when the source is absent or past its freshness window). */
|
|
119
|
+
function readFreshSources() {
|
|
120
|
+
const cache = readCacheFile();
|
|
121
|
+
const now = Date.now();
|
|
122
|
+
return {
|
|
123
|
+
server: cache.server && now - cache.server.recordedAt < SERVER_FRESHNESS_MS ? cache.server.value : null,
|
|
124
|
+
npm: cache.npm && now - cache.npm.recordedAt < NPM_FRESHNESS_MS ? cache.npm.value : null,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** @deprecated use resolveCachedLatest. Kept for callers migrating. */
|
|
128
|
+
export function readCachedLatestVersion() {
|
|
129
|
+
return resolveCachedLatest();
|
|
130
|
+
}
|
|
131
|
+
function isVersionCheckDisabled() {
|
|
132
|
+
return process.env.PB_NO_VERSION_CHECK === '1';
|
|
133
|
+
}
|
|
134
|
+
/** Clear the post-upgrade sentinel and stale update cache on next CLI startup. */
|
|
135
|
+
export function clearPendingUpgradeCache() {
|
|
136
|
+
if (pendingUpgradeClearedThisProcess)
|
|
137
|
+
return;
|
|
138
|
+
pendingUpgradeClearedThisProcess = true;
|
|
139
|
+
try {
|
|
140
|
+
if (!existsSync(UPGRADE_PENDING_PATH))
|
|
141
|
+
return;
|
|
142
|
+
try {
|
|
143
|
+
unlinkSync(UPGRADE_PENDING_PATH);
|
|
144
|
+
}
|
|
145
|
+
catch { /* non-fatal */ }
|
|
146
|
+
try {
|
|
147
|
+
if (existsSync(CACHE_PATH))
|
|
148
|
+
unlinkSync(CACHE_PATH);
|
|
149
|
+
}
|
|
150
|
+
catch { /* non-fatal */ }
|
|
46
151
|
}
|
|
47
152
|
catch {
|
|
48
|
-
//
|
|
153
|
+
// Sentinel cleanup must never block CLI startup.
|
|
49
154
|
}
|
|
50
155
|
}
|
|
156
|
+
/** Written after a successful self-upgrade so the next CLI process drops stale cache. */
|
|
157
|
+
export function writeUpgradePendingSentinel(installedVersion) {
|
|
158
|
+
try {
|
|
159
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
160
|
+
writeFileSync(UPGRADE_PENDING_PATH, JSON.stringify({ upgradedAt: Date.now(), version: installedVersion ?? null /* version: concrete installed version, recorded for post-upgrade diagnostics/future "upgraded to X" notice */ }), 'utf8');
|
|
161
|
+
}
|
|
162
|
+
catch { /* non-fatal — update checks recover via cache TTL */ }
|
|
163
|
+
}
|
|
164
|
+
/** Test-only: reset module-level per-process guards so each test starts clean. */
|
|
165
|
+
export function _resetProcessGuardsForTest() {
|
|
166
|
+
pendingUpgradeClearedThisProcess = false;
|
|
167
|
+
versionSkewReportedThisProcess = false;
|
|
168
|
+
cachedRunningCliVersion = undefined;
|
|
169
|
+
}
|
|
51
170
|
/** Fetch latest version from npm registry. Returns null on any error. */
|
|
52
171
|
function fetchLatestVersion() {
|
|
53
172
|
return new Promise((resolve) => {
|
|
54
|
-
|
|
55
|
-
const url = `https://registry.npmjs.org/${PKG_NAME}/beta`;
|
|
56
|
-
const req = request(url, { method: 'GET', headers: { 'Accept': 'application/json' } }, (res) => {
|
|
173
|
+
const req = request(NPM_BETA_URL, { method: 'GET', headers: { 'Accept': 'application/json' } }, (res) => {
|
|
57
174
|
let body = '';
|
|
58
175
|
res.on('data', (chunk) => { body += chunk.toString(); });
|
|
59
176
|
res.on('end', () => {
|
|
@@ -79,21 +196,19 @@ function fetchLatestVersion() {
|
|
|
79
196
|
* Compare two semver strings. Returns true if `b` is strictly newer than `a`.
|
|
80
197
|
* Handles standard x.y.z and x.y.z-beta.N formats (numeric comparison per part).
|
|
81
198
|
*/
|
|
82
|
-
function isNewer(current, latest) {
|
|
199
|
+
export function isNewer(current, latest) {
|
|
83
200
|
if (current === latest)
|
|
84
201
|
return false;
|
|
85
202
|
const parseVersion = (v) => {
|
|
86
|
-
// Strip leading 'v'
|
|
87
203
|
const clean = v.replace(/^v/, '');
|
|
88
|
-
// Split on '-' to handle pre-release like '0.1.0-beta.70'
|
|
89
204
|
const [release, pre] = clean.split('-');
|
|
90
205
|
const parts = (release ?? '').split('.').map((n) => parseInt(n, 10) || 0);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return parts;
|
|
206
|
+
if (pre === undefined)
|
|
207
|
+
return [...parts, 0, 0];
|
|
208
|
+
const match = pre.match(/^([a-zA-Z]+)\.?(\d+)?/);
|
|
209
|
+
const channel = match?.[1]?.toLowerCase() ?? '';
|
|
210
|
+
const preNum = match?.[2] ? parseInt(match[2], 10) : 0;
|
|
211
|
+
return [...parts, CHANNEL_RANK[channel] ?? -4, Number.isFinite(preNum) ? preNum : 0];
|
|
97
212
|
};
|
|
98
213
|
const a = parseVersion(current);
|
|
99
214
|
const b = parseVersion(latest);
|
|
@@ -108,38 +223,74 @@ function isNewer(current, latest) {
|
|
|
108
223
|
}
|
|
109
224
|
return false;
|
|
110
225
|
}
|
|
226
|
+
/** Record the server-supplied latest version (authoritative source). */
|
|
227
|
+
export function recordServerLatest(latestVersion) {
|
|
228
|
+
if (isVersionCheckDisabled() || !latestVersion)
|
|
229
|
+
return;
|
|
230
|
+
const cache = readCacheFile();
|
|
231
|
+
cache.server = { value: latestVersion, recordedAt: Date.now() };
|
|
232
|
+
writeCacheFile(cache);
|
|
233
|
+
reportVersionSkewIfNew(latestVersion);
|
|
234
|
+
}
|
|
235
|
+
/** Record an npm-resolved latest version — gated so it never stores <= installed. */
|
|
236
|
+
export function recordNpmLatest(latestVersion, currentVersion) {
|
|
237
|
+
if (isVersionCheckDisabled() || !latestVersion)
|
|
238
|
+
return;
|
|
239
|
+
if (!isNewer(currentVersion, latestVersion))
|
|
240
|
+
return;
|
|
241
|
+
const cache = readCacheFile();
|
|
242
|
+
cache.npm = { value: latestVersion, recordedAt: Date.now() };
|
|
243
|
+
writeCacheFile(cache);
|
|
244
|
+
}
|
|
245
|
+
/** LIVE resolve — fetches npm and records it (gated). Call ONLY from doctor/upgrade, never the hot path. */
|
|
246
|
+
export async function resolveLatestVersion(currentVersion) {
|
|
247
|
+
if (isVersionCheckDisabled())
|
|
248
|
+
return null;
|
|
249
|
+
const fresh = readFreshSources();
|
|
250
|
+
// Skip the network ONLY when npm itself is within its freshness window. A fresh server header
|
|
251
|
+
// alone cannot prove npm isn't newer (the hot path never populates npm, and the server's committed
|
|
252
|
+
// cliVersion.ts value structurally trails the run-numbered npm publish — TEN-2199), so a
|
|
253
|
+
// server-only cache MUST trigger a live npm fetch or the lagging server would mask the true latest.
|
|
254
|
+
if (fresh.npm !== null)
|
|
255
|
+
return newestOf(fresh.server, fresh.npm);
|
|
256
|
+
const fetched = await fetchLatestVersion();
|
|
257
|
+
if (fetched !== null) {
|
|
258
|
+
// The live registry is ground truth. Record only when strictly newer (the cache never stores a
|
|
259
|
+
// value <= installed), but compare against any fresh server header so a genuinely-newer server
|
|
260
|
+
// still wins. A successful fetch REPLACES a stale npm entry rather than falling back to it.
|
|
261
|
+
if (currentVersion)
|
|
262
|
+
recordNpmLatest(fetched, currentVersion);
|
|
263
|
+
return newestOf(fresh.server, fetched);
|
|
264
|
+
}
|
|
265
|
+
// Fetch failed (offline / registry unreachable): fall back to any cached value — better than
|
|
266
|
+
// nothing, and the documented `pb doctor` offline backstop.
|
|
267
|
+
return resolveCachedLatest();
|
|
268
|
+
}
|
|
111
269
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
270
|
+
* Synchronously prints at most one update line. Reads cache only — never fetches.
|
|
271
|
+
* Reaches agents (JSON mode) on stderr; stdout stays bare JSON. Throttled once per
|
|
272
|
+
* session (agent) / once per UTC day (human TTY) via O_EXCL markers. Never throws.
|
|
273
|
+
* NOTE: a session with no authenticated server call writes no cache and fires no
|
|
274
|
+
* notice; `pb doctor` live-resolves as the backstop. DEC-2.
|
|
116
275
|
*/
|
|
117
276
|
export function checkForUpdate(currentVersion) {
|
|
118
|
-
|
|
119
|
-
if (
|
|
277
|
+
clearPendingUpgradeCache();
|
|
278
|
+
if (isVersionCheckDisabled())
|
|
120
279
|
return;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
process.nextTick(() => {
|
|
137
|
-
process.stderr.write(`\n${yellow('Update available:')} ${dim(currentVersion)} → ${latest} ${dim('run')} pb upgrade ${dim('to update')}\n`);
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
// Never surface update-check errors to the user
|
|
142
|
-
}
|
|
143
|
-
})();
|
|
280
|
+
try {
|
|
281
|
+
const latest = resolveCachedLatest();
|
|
282
|
+
if (!latest || !isNewer(currentVersion, latest))
|
|
283
|
+
return;
|
|
284
|
+
reportVersionSkewIfNew(latest, currentVersion);
|
|
285
|
+
const channel = isJsonMode() ? 'agent' : 'human';
|
|
286
|
+
if (!claimNotice(channel))
|
|
287
|
+
return;
|
|
288
|
+
const line = `${yellow('pb:')} update available — you're on ${dim(currentVersion)}, latest is ${latest}. ` +
|
|
289
|
+
`Recommended: tell your operator and run ${dim('pb upgrade')}.\n`;
|
|
290
|
+
process.stderr.write('\n' + line);
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// Advisory notice — never block or crash a command.
|
|
294
|
+
}
|
|
144
295
|
}
|
|
145
296
|
//# sourceMappingURL=update-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type InstallChannel = 'npm' | 'pnpm' | 'yarn' | 'bun' | 'brew' | 'unknown';
|
|
2
|
+
export type UpgradeCommand = {
|
|
3
|
+
channel: InstallChannel;
|
|
4
|
+
command: string;
|
|
5
|
+
args: string[];
|
|
6
|
+
display: string;
|
|
7
|
+
};
|
|
8
|
+
export type UpgradeResult = {
|
|
9
|
+
channel: InstallChannel;
|
|
10
|
+
command: string;
|
|
11
|
+
exitCode: number;
|
|
12
|
+
output: string[];
|
|
13
|
+
};
|
|
14
|
+
export type SpawnUpgradeOptions = {
|
|
15
|
+
onOutput?: (line: string) => void;
|
|
16
|
+
env?: NodeJS.ProcessEnv;
|
|
17
|
+
version?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function detectInstallChannel(execPath?: string, env?: NodeJS.ProcessEnv): InstallChannel;
|
|
20
|
+
export declare function buildUpgradeCommand(channel: InstallChannel, version?: string): UpgradeCommand;
|
|
21
|
+
export declare function spawnUpgrade(channel?: InstallChannel, options?: SpawnUpgradeOptions): Promise<UpgradeResult>;
|
|
22
|
+
//# sourceMappingURL=upgrade-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-runner.d.ts","sourceRoot":"","sources":["../../src/lib/upgrade-runner.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAElF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAYF,wBAAgB,oBAAoB,CAAC,QAAQ,SAAmB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,cAAc,CActH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAe7F;AAaD,wBAAgB,YAAY,CAC1B,OAAO,GAAE,cAAuC,EAChD,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
|