@productbrain/cli 0.1.0-beta.107 → 0.1.0-beta.109
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__/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__/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-preview.test.js +501 -1
- 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 +257 -0
- package/dist/__tests__/handshake.e2e.test.js.map +1 -0
- package/dist/__tests__/handshake.test.js +251 -1
- 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__/orient.test.js +65 -24
- 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 +143 -0
- package/dist/__tests__/perimeter.test.js.map +1 -0
- package/dist/__tests__/promote.test.js +2 -2
- package/dist/__tests__/promote.test.js.map +1 -1
- 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 +56 -0
- package/dist/__tests__/update-check.test.js.map +1 -0
- package/dist/__tests__/upgrade-runner.test.d.ts +2 -0
- package/dist/__tests__/upgrade-runner.test.d.ts.map +1 -0
- package/dist/__tests__/upgrade-runner.test.js +42 -0
- package/dist/__tests__/upgrade-runner.test.js.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts +25 -0
- package/dist/__tests__/vocabulary-leak.test.d.ts.map +1 -0
- package/dist/__tests__/vocabulary-leak.test.js +379 -0
- package/dist/__tests__/vocabulary-leak.test.js.map +1 -0
- 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-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/authority-domains.d.ts +7 -1
- package/dist/commands/authority-domains.d.ts.map +1 -1
- package/dist/commands/authority-domains.js +17 -3
- package/dist/commands/authority-domains.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +3 -2
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/codex-prep.js +6 -6
- package/dist/commands/codex-prep.js.map +1 -1
- 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 +2 -2
- package/dist/commands/connect-screens.js +2 -2
- package/dist/commands/connect.d.ts +3 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +10 -36
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +67 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +131 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/handshake.d.ts +25 -0
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +795 -18
- package/dist/commands/handshake.js.map +1 -1
- package/dist/commands/method.d.ts.map +1 -1
- package/dist/commands/method.js +3 -0
- package/dist/commands/method.js.map +1 -1
- package/dist/commands/orient.d.ts +4 -2
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +16 -2
- package/dist/commands/orient.js.map +1 -1
- 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 +67 -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/upgrade.d.ts +5 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +89 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/formatters/handshake.d.ts +12 -0
- package/dist/formatters/handshake.d.ts.map +1 -1
- package/dist/formatters/handshake.js +32 -0
- package/dist/formatters/handshake.js.map +1 -1
- package/dist/formatters/orient.d.ts +10 -4
- package/dist/formatters/orient.d.ts.map +1 -1
- package/dist/formatters/orient.js +32 -16
- 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 +2 -2
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- 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 +43 -18
- package/dist/index.js.map +1 -1
- package/dist/lib/activation.js +2 -2
- 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/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/onboarding-shared.js +1 -1
- package/dist/lib/onboarding-shared.js.map +1 -1
- package/dist/lib/update-check.d.ts +20 -0
- package/dist/lib/update-check.d.ts.map +1 -1
- package/dist/lib/update-check.js +122 -21
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/upgrade-runner.d.ts +21 -0
- package/dist/lib/upgrade-runner.d.ts.map +1 -0
- package/dist/lib/upgrade-runner.js +109 -0
- package/dist/lib/upgrade-runner.js.map +1 -0
- package/dist/lib/workspaceVocabCache.d.ts +60 -0
- package/dist/lib/workspaceVocabCache.d.ts.map +1 -0
- package/dist/lib/workspaceVocabCache.js +98 -0
- package/dist/lib/workspaceVocabCache.js.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts +2 -0
- package/dist/setup/__tests__/coach-traces.test.d.ts.map +1 -0
- package/dist/setup/__tests__/coach-traces.test.js +189 -0
- package/dist/setup/__tests__/coach-traces.test.js.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts +2 -0
- package/dist/setup/__tests__/setup-commands.test.d.ts.map +1 -0
- package/dist/setup/__tests__/setup-commands.test.js +177 -0
- package/dist/setup/__tests__/setup-commands.test.js.map +1 -0
- package/dist/setup/__tests__/state-machine.test.d.ts +2 -0
- package/dist/setup/__tests__/state-machine.test.d.ts.map +1 -0
- package/dist/setup/__tests__/state-machine.test.js +341 -0
- package/dist/setup/__tests__/state-machine.test.js.map +1 -0
- package/dist/setup/detect-surfaces.d.ts +21 -0
- package/dist/setup/detect-surfaces.d.ts.map +1 -0
- package/dist/setup/detect-surfaces.js +39 -0
- package/dist/setup/detect-surfaces.js.map +1 -0
- package/dist/setup/manifest-writer.d.ts +17 -0
- package/dist/setup/manifest-writer.d.ts.map +1 -0
- package/dist/setup/manifest-writer.js +153 -0
- package/dist/setup/manifest-writer.js.map +1 -0
- package/dist/setup/perimeter.d.ts +62 -0
- package/dist/setup/perimeter.d.ts.map +1 -0
- package/dist/setup/perimeter.js +113 -0
- package/dist/setup/perimeter.js.map +1 -0
- package/dist/setup/state-machine.d.ts +67 -0
- package/dist/setup/state-machine.d.ts.map +1 -0
- package/dist/setup/state-machine.js +124 -0
- package/dist/setup/state-machine.js.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts +2 -0
- package/dist/surfaces/__tests__/adapter.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/adapter.test.js +90 -0
- package/dist/surfaces/__tests__/adapter.test.js.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts +2 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js +132 -0
- package/dist/surfaces/__tests__/pb-setup-passthrough.test.js.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts +2 -0
- package/dist/surfaces/__tests__/telemetry.test.d.ts.map +1 -0
- package/dist/surfaces/__tests__/telemetry.test.js +55 -0
- package/dist/surfaces/__tests__/telemetry.test.js.map +1 -0
- package/dist/surfaces/adapter.d.ts +70 -0
- package/dist/surfaces/adapter.d.ts.map +1 -0
- package/dist/surfaces/adapter.js +2 -0
- package/dist/surfaces/adapter.js.map +1 -0
- package/dist/surfaces/adapters/claude.d.ts +3 -0
- package/dist/surfaces/adapters/claude.d.ts.map +1 -0
- package/dist/surfaces/adapters/claude.js +67 -0
- package/dist/surfaces/adapters/claude.js.map +1 -0
- package/dist/surfaces/adapters/codex.d.ts +3 -0
- package/dist/surfaces/adapters/codex.d.ts.map +1 -0
- package/dist/surfaces/adapters/codex.js +61 -0
- package/dist/surfaces/adapters/codex.js.map +1 -0
- package/dist/surfaces/adapters/copilot.d.ts +3 -0
- package/dist/surfaces/adapters/copilot.d.ts.map +1 -0
- package/dist/surfaces/adapters/copilot.js +59 -0
- package/dist/surfaces/adapters/copilot.js.map +1 -0
- package/dist/surfaces/adapters/cursor.d.ts +3 -0
- package/dist/surfaces/adapters/cursor.d.ts.map +1 -0
- package/dist/surfaces/adapters/cursor.js +78 -0
- package/dist/surfaces/adapters/cursor.js.map +1 -0
- package/dist/surfaces/registry.d.ts +58 -2
- package/dist/surfaces/registry.d.ts.map +1 -1
- package/dist/surfaces/registry.js +82 -7
- package/dist/surfaces/registry.js.map +1 -1
- package/dist/surfaces/telemetry.d.ts +17 -0
- package/dist/surfaces/telemetry.d.ts.map +1 -0
- package/dist/surfaces/telemetry.js +31 -0
- package/dist/surfaces/telemetry.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* INS-740: Cursor and Copilot had confirmed double-fire risk with Claude Code hooks.
|
|
6
|
-
* Their hookEvents arrays MUST be empty in v1. Only 'claude' gets hook events by default.
|
|
7
|
-
*/
|
|
1
|
+
import { claudeAdapter } from './adapters/claude.js';
|
|
2
|
+
import { cursorAdapter } from './adapters/cursor.js';
|
|
3
|
+
import { copilotAdapter } from './adapters/copilot.js';
|
|
4
|
+
import { codexAdapter } from './adapters/codex.js';
|
|
8
5
|
export const SURFACE_REGISTRY = {
|
|
9
6
|
claude: {
|
|
10
7
|
rulesFormat: 'markdown',
|
|
@@ -39,4 +36,82 @@ export const SURFACE_REGISTRY = {
|
|
|
39
36
|
supportsAgentsMd: true,
|
|
40
37
|
},
|
|
41
38
|
};
|
|
39
|
+
// ── SurfaceAdapter registry — WP-421 S2c (DEC-952) ──────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Per-surface adapter registry. New surface = new adapter file + line here.
|
|
42
|
+
* Adapters expose detect/paths/transform/goldens/canonicalPathFor — one canonical
|
|
43
|
+
* asset, many surface projections.
|
|
44
|
+
*/
|
|
45
|
+
export const SURFACE_ADAPTERS = {
|
|
46
|
+
claude: claudeAdapter,
|
|
47
|
+
cursor: cursorAdapter,
|
|
48
|
+
copilot: copilotAdapter,
|
|
49
|
+
codex: codexAdapter,
|
|
50
|
+
};
|
|
51
|
+
/** Convenience array view for iteration (e.g. detect-all). */
|
|
52
|
+
export const SURFACE_ADAPTER_LIST = Object.values(SURFACE_ADAPTERS);
|
|
53
|
+
/**
|
|
54
|
+
* Lookup the canonical authoring path for a projection path on any surface.
|
|
55
|
+
* Returns the first non-null mapping; if every adapter returns null, returns null
|
|
56
|
+
* and the caller MUST emit `surface-reverse-map-missing` telemetry via
|
|
57
|
+
* `surfaces/telemetry.ts:reportReverseMapMissing`.
|
|
58
|
+
*/
|
|
59
|
+
export function canonicalPathForAnySurface(projectionPath) {
|
|
60
|
+
for (const surface of Object.keys(SURFACE_ADAPTERS)) {
|
|
61
|
+
const result = SURFACE_ADAPTERS[surface].canonicalPathFor(projectionPath);
|
|
62
|
+
if (result)
|
|
63
|
+
return { surface, canonicalPath: result };
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
// ── WP-421 S7: mode × surfaces matrix (doneWhen #19) ─────────────────────────
|
|
68
|
+
//
|
|
69
|
+
// Two stable error/flag codes (consumer-stable contract):
|
|
70
|
+
// - SURFACE_GOVERN_NO_SURFACES — Govern mode requires a non-empty surfaces[].
|
|
71
|
+
// Emitted by `validateSurfacesForMode` when `materialize: govern` and no
|
|
72
|
+
// surfaces declared. CLI surfaces this as a hard error.
|
|
73
|
+
// - SURFACE_ADAPTER_MISSING — A surface name in `manifest.surfaces[]` is not
|
|
74
|
+
// registered in SURFACE_ADAPTERS. Emitted by `flagUnregisteredSurfaces` for
|
|
75
|
+
// the drift report. The handshake MUST NOT crash on this — the flag is
|
|
76
|
+
// advisory and the handshake skips the unknown surface.
|
|
77
|
+
/** Govern mode declared with empty surfaces[]. Hard error (handshake refuses). */
|
|
78
|
+
export const SURFACE_GOVERN_NO_SURFACES = 'govern-no-surfaces';
|
|
79
|
+
/** Surface name in manifest is not registered. Advisory flag for drift report. */
|
|
80
|
+
export const SURFACE_ADAPTER_MISSING = 'surface-adapter-missing';
|
|
81
|
+
/**
|
|
82
|
+
* Validate `manifest.surfaces[]` against the requested authority mode.
|
|
83
|
+
*
|
|
84
|
+
* Govern + empty surfaces → `{ error: SURFACE_GOVERN_NO_SURFACES }`.
|
|
85
|
+
* Any other mode is permitted with any (possibly empty) surface list.
|
|
86
|
+
*
|
|
87
|
+
* Unregistered surface names are reported via `unregisteredSurfaces` so the
|
|
88
|
+
* caller can flag them in the drift report. Pure: no I/O, no Convex calls.
|
|
89
|
+
*
|
|
90
|
+
* Surface name normalization: this validator strips a leading `.` from each
|
|
91
|
+
* entry (e.g. `.cursor` → `cursor`) so manifests can declare either form.
|
|
92
|
+
* The canonical SurfaceName values in SURFACE_ADAPTERS use the bare name.
|
|
93
|
+
*/
|
|
94
|
+
export function validateSurfacesForMode(mode, surfacesFromManifest) {
|
|
95
|
+
const knownNames = new Set(Object.keys(SURFACE_ADAPTERS));
|
|
96
|
+
const registeredSurfaces = [];
|
|
97
|
+
const unregisteredSurfaces = [];
|
|
98
|
+
for (const raw of surfacesFromManifest) {
|
|
99
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
100
|
+
continue;
|
|
101
|
+
const stripped = raw.startsWith('.') ? raw.slice(1) : raw;
|
|
102
|
+
const normalized = stripped === 'github' ? 'copilot' : stripped;
|
|
103
|
+
if (knownNames.has(normalized)) {
|
|
104
|
+
registeredSurfaces.push(normalized);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
unregisteredSurfaces.push(raw);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Govern requires at least one registered surface. Unregistered surface names
|
|
111
|
+
// do NOT count toward this minimum (they're advisory).
|
|
112
|
+
if (mode === 'govern' && registeredSurfaces.length === 0) {
|
|
113
|
+
return { error: SURFACE_GOVERN_NO_SURFACES, unregisteredSurfaces, registeredSurfaces };
|
|
114
|
+
}
|
|
115
|
+
return { unregisteredSurfaces, registeredSurfaces };
|
|
116
|
+
}
|
|
42
117
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/surfaces/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ReverseMapMissingEvent {
|
|
2
|
+
surface: string;
|
|
3
|
+
projectionPath: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Stable, copy-paste-able fallback message used by tampered-bucket prompts when
|
|
7
|
+
* an adapter cannot reverse-map a projection path. Centralized so every consumer
|
|
8
|
+
* surfaces the exact same instruction string.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getReverseMapFallbackMessage(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Report that an adapter returned null for canonicalPathFor.
|
|
13
|
+
* Always emits a telemetry event; also writes a tagged warning to stderr so
|
|
14
|
+
* developers see it during local handshake runs.
|
|
15
|
+
*/
|
|
16
|
+
export declare function reportReverseMapMissing(evt: ReverseMapMissingEvent, warn?: (msg: string) => void): void;
|
|
17
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/surfaces/telemetry.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,sBAAsB,EAC3B,IAAI,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAgD,GACtE,IAAI,CAQN"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface telemetry — WP-421 S2c.
|
|
3
|
+
*
|
|
4
|
+
* Tagged log + PostHog event for unmapped projection paths. When a SurfaceAdapter's
|
|
5
|
+
* canonicalPathFor returns null, the consumer falls back to a generic
|
|
6
|
+
* "edit upstream in .productbrain/{skills,rules,hooks}/" message and emits
|
|
7
|
+
* `surface-reverse-map-missing` for observability.
|
|
8
|
+
*/
|
|
9
|
+
import { trackEvent } from '../lib/telemetry.js';
|
|
10
|
+
const FALLBACK_MESSAGE = 'edit upstream in .productbrain/skills|rules|hooks/';
|
|
11
|
+
/**
|
|
12
|
+
* Stable, copy-paste-able fallback message used by tampered-bucket prompts when
|
|
13
|
+
* an adapter cannot reverse-map a projection path. Centralized so every consumer
|
|
14
|
+
* surfaces the exact same instruction string.
|
|
15
|
+
*/
|
|
16
|
+
export function getReverseMapFallbackMessage() {
|
|
17
|
+
return FALLBACK_MESSAGE;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Report that an adapter returned null for canonicalPathFor.
|
|
21
|
+
* Always emits a telemetry event; also writes a tagged warning to stderr so
|
|
22
|
+
* developers see it during local handshake runs.
|
|
23
|
+
*/
|
|
24
|
+
export function reportReverseMapMissing(evt, warn = (msg) => process.stderr.write(msg + '\n')) {
|
|
25
|
+
trackEvent('surface-reverse-map-missing', {
|
|
26
|
+
surface: evt.surface,
|
|
27
|
+
projectionPath: evt.projectionPath,
|
|
28
|
+
});
|
|
29
|
+
warn(`[surface-reverse-map-missing] ${evt.surface} cannot reverse-map ${evt.projectionPath} — ${FALLBACK_MESSAGE}`);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/surfaces/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,gBAAgB,GACpB,oDAAoD,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAA2B,EAC3B,OAA8B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAEvE,UAAU,CAAC,6BAA6B,EAAE;QACxC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC,CAAC;IACH,IAAI,CACF,iCAAiC,GAAG,CAAC,OAAO,uBAAuB,GAAG,CAAC,cAAc,MAAM,gBAAgB,EAAE,CAC9G,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productbrain/cli",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.109",
|
|
4
4
|
"description": "Product Brain — Chain knowledge and write-back CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"typecheck": "tsc --noEmit",
|
|
16
16
|
"lint": "tsc --noEmit",
|
|
17
17
|
"test": "vitest run src/",
|
|
18
|
+
"codegen": "node scripts/generate-seed-commands.mjs",
|
|
18
19
|
"prepublishOnly": "npm run build",
|
|
19
20
|
"publish:beta": "npm publish --tag=beta",
|
|
20
21
|
"version:prerelease": "npm version prerelease --no-git-tag-version"
|