@aligndottech/cli 0.37.0 → 0.38.0

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.
Files changed (202) hide show
  1. package/README.md +16 -10
  2. package/dist/cli.d.ts +28 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +98 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/check.d.ts +1 -1
  7. package/dist/commands/check.d.ts.map +1 -1
  8. package/dist/commands/check.js +44 -2
  9. package/dist/commands/check.js.map +1 -1
  10. package/dist/commands/connect-agents.d.ts +1 -0
  11. package/dist/commands/connect-agents.d.ts.map +1 -1
  12. package/dist/commands/connect-agents.js +10 -6
  13. package/dist/commands/connect-agents.js.map +1 -1
  14. package/dist/commands/connect.d.ts +31 -0
  15. package/dist/commands/connect.d.ts.map +1 -0
  16. package/dist/commands/connect.js +92 -0
  17. package/dist/commands/connect.js.map +1 -0
  18. package/dist/commands/context.d.ts.map +1 -1
  19. package/dist/commands/context.js +52 -10
  20. package/dist/commands/context.js.map +1 -1
  21. package/dist/commands/decisions/index.d.ts.map +1 -1
  22. package/dist/commands/decisions/index.js +5 -0
  23. package/dist/commands/decisions/index.js.map +1 -1
  24. package/dist/commands/default-action.d.ts +3 -1
  25. package/dist/commands/default-action.d.ts.map +1 -1
  26. package/dist/commands/default-action.js +29 -27
  27. package/dist/commands/default-action.js.map +1 -1
  28. package/dist/commands/export.d.ts.map +1 -1
  29. package/dist/commands/export.js +3 -0
  30. package/dist/commands/export.js.map +1 -1
  31. package/dist/commands/import/sessions.d.ts +10 -2
  32. package/dist/commands/import/sessions.d.ts.map +1 -1
  33. package/dist/commands/import/sessions.js +98 -3
  34. package/dist/commands/import/sessions.js.map +1 -1
  35. package/dist/commands/import.d.ts +7 -0
  36. package/dist/commands/import.d.ts.map +1 -1
  37. package/dist/commands/import.js +42 -2
  38. package/dist/commands/import.js.map +1 -1
  39. package/dist/commands/invite.d.ts +25 -0
  40. package/dist/commands/invite.d.ts.map +1 -0
  41. package/dist/commands/invite.js +68 -0
  42. package/dist/commands/invite.js.map +1 -0
  43. package/dist/commands/links.d.ts.map +1 -1
  44. package/dist/commands/links.js +5 -0
  45. package/dist/commands/links.js.map +1 -1
  46. package/dist/commands/mcp.d.ts +64 -35
  47. package/dist/commands/mcp.d.ts.map +1 -1
  48. package/dist/commands/mcp.js +85 -40
  49. package/dist/commands/mcp.js.map +1 -1
  50. package/dist/commands/ratify.d.ts.map +1 -1
  51. package/dist/commands/ratify.js +21 -0
  52. package/dist/commands/ratify.js.map +1 -1
  53. package/dist/commands/registry.d.ts +30 -0
  54. package/dist/commands/registry.d.ts.map +1 -0
  55. package/dist/commands/registry.js +70 -0
  56. package/dist/commands/registry.js.map +1 -0
  57. package/dist/commands/setup.d.ts +45 -1
  58. package/dist/commands/setup.d.ts.map +1 -1
  59. package/dist/commands/setup.js +197 -88
  60. package/dist/commands/setup.js.map +1 -1
  61. package/dist/commands/status.d.ts.map +1 -1
  62. package/dist/commands/status.js +10 -22
  63. package/dist/commands/status.js.map +1 -1
  64. package/dist/commands/telemetry.d.ts +7 -3
  65. package/dist/commands/telemetry.d.ts.map +1 -1
  66. package/dist/commands/telemetry.js +12 -7
  67. package/dist/commands/telemetry.js.map +1 -1
  68. package/dist/commands/why.d.ts.map +1 -1
  69. package/dist/commands/why.js +54 -12
  70. package/dist/commands/why.js.map +1 -1
  71. package/dist/index.js +4 -90
  72. package/dist/index.js.map +1 -1
  73. package/dist/lib/agent-rules.d.ts +1 -0
  74. package/dist/lib/agent-rules.d.ts.map +1 -1
  75. package/dist/lib/agent-rules.js +60 -0
  76. package/dist/lib/agent-rules.js.map +1 -1
  77. package/dist/lib/capture-report.d.ts +4 -0
  78. package/dist/lib/capture-report.d.ts.map +1 -1
  79. package/dist/lib/capture-report.js +18 -1
  80. package/dist/lib/capture-report.js.map +1 -1
  81. package/dist/lib/commands-doc.d.ts +15 -0
  82. package/dist/lib/commands-doc.d.ts.map +1 -0
  83. package/dist/lib/commands-doc.js +85 -0
  84. package/dist/lib/commands-doc.js.map +1 -0
  85. package/dist/lib/config.d.ts +14 -2
  86. package/dist/lib/config.d.ts.map +1 -1
  87. package/dist/lib/config.js +7 -0
  88. package/dist/lib/config.js.map +1 -1
  89. package/dist/lib/connect-prompt.d.ts +1 -1
  90. package/dist/lib/connect-prompt.js +2 -2
  91. package/dist/lib/connect-prompt.js.map +1 -1
  92. package/dist/lib/decision-links.d.ts +39 -0
  93. package/dist/lib/decision-links.d.ts.map +1 -1
  94. package/dist/lib/decision-links.js +51 -0
  95. package/dist/lib/decision-links.js.map +1 -1
  96. package/dist/lib/fetchers/linear.d.ts.map +1 -1
  97. package/dist/lib/fetchers/linear.js +27 -1
  98. package/dist/lib/fetchers/linear.js.map +1 -1
  99. package/dist/lib/fetchers/slack.d.ts +12 -1
  100. package/dist/lib/fetchers/slack.d.ts.map +1 -1
  101. package/dist/lib/fetchers/slack.js +12 -1
  102. package/dist/lib/fetchers/slack.js.map +1 -1
  103. package/dist/lib/first-decision.d.ts +22 -0
  104. package/dist/lib/first-decision.d.ts.map +1 -0
  105. package/dist/lib/first-decision.js +22 -0
  106. package/dist/lib/first-decision.js.map +1 -0
  107. package/dist/lib/gateway-client.d.ts +13 -0
  108. package/dist/lib/gateway-client.d.ts.map +1 -1
  109. package/dist/lib/gateway-client.js +38 -0
  110. package/dist/lib/gateway-client.js.map +1 -1
  111. package/dist/lib/git.d.ts +28 -0
  112. package/dist/lib/git.d.ts.map +1 -1
  113. package/dist/lib/git.js +42 -0
  114. package/dist/lib/git.js.map +1 -1
  115. package/dist/lib/hook-context.d.ts +7 -0
  116. package/dist/lib/hook-context.d.ts.map +1 -0
  117. package/dist/lib/hook-context.js +37 -0
  118. package/dist/lib/hook-context.js.map +1 -0
  119. package/dist/lib/hook-payload.d.ts +7 -0
  120. package/dist/lib/hook-payload.d.ts.map +1 -1
  121. package/dist/lib/hook-payload.js +56 -8
  122. package/dist/lib/hook-payload.js.map +1 -1
  123. package/dist/lib/invite-prompt.d.ts +46 -0
  124. package/dist/lib/invite-prompt.d.ts.map +1 -0
  125. package/dist/lib/invite-prompt.js +63 -0
  126. package/dist/lib/invite-prompt.js.map +1 -0
  127. package/dist/lib/local-db.d.ts +32 -2
  128. package/dist/lib/local-db.d.ts.map +1 -1
  129. package/dist/lib/local-db.js +80 -5
  130. package/dist/lib/local-db.js.map +1 -1
  131. package/dist/lib/local-embeddings.d.ts +14 -0
  132. package/dist/lib/local-embeddings.d.ts.map +1 -1
  133. package/dist/lib/local-embeddings.js +16 -2
  134. package/dist/lib/local-embeddings.js.map +1 -1
  135. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  136. package/dist/lib/local-gateway-client.js +23 -3
  137. package/dist/lib/local-gateway-client.js.map +1 -1
  138. package/dist/lib/local-llm.d.ts +60 -5
  139. package/dist/lib/local-llm.d.ts.map +1 -1
  140. package/dist/lib/local-llm.js +92 -10
  141. package/dist/lib/local-llm.js.map +1 -1
  142. package/dist/lib/mcp-instructions.shared.d.ts +40 -0
  143. package/dist/lib/mcp-instructions.shared.d.ts.map +1 -0
  144. package/dist/lib/mcp-instructions.shared.js +56 -0
  145. package/dist/lib/mcp-instructions.shared.js.map +1 -0
  146. package/dist/lib/mcp-setup.d.ts +32 -2
  147. package/dist/lib/mcp-setup.d.ts.map +1 -1
  148. package/dist/lib/mcp-setup.js +92 -6
  149. package/dist/lib/mcp-setup.js.map +1 -1
  150. package/dist/lib/next-step.d.ts +92 -0
  151. package/dist/lib/next-step.d.ts.map +1 -0
  152. package/dist/lib/next-step.js +97 -0
  153. package/dist/lib/next-step.js.map +1 -0
  154. package/dist/lib/personal-email-domains.d.ts +8 -0
  155. package/dist/lib/personal-email-domains.d.ts.map +1 -0
  156. package/dist/lib/personal-email-domains.js +39 -0
  157. package/dist/lib/personal-email-domains.js.map +1 -0
  158. package/dist/lib/personal-import.d.ts +2 -0
  159. package/dist/lib/personal-import.d.ts.map +1 -1
  160. package/dist/lib/personal-import.js +4 -1
  161. package/dist/lib/personal-import.js.map +1 -1
  162. package/dist/lib/read-value-rollup.d.ts +18 -0
  163. package/dist/lib/read-value-rollup.d.ts.map +1 -0
  164. package/dist/lib/read-value-rollup.js +33 -0
  165. package/dist/lib/read-value-rollup.js.map +1 -0
  166. package/dist/lib/sessions/import-summary.d.ts +39 -0
  167. package/dist/lib/sessions/import-summary.d.ts.map +1 -0
  168. package/dist/lib/sessions/import-summary.js +41 -0
  169. package/dist/lib/sessions/import-summary.js.map +1 -0
  170. package/dist/lib/sessions/memory-files.d.ts +85 -0
  171. package/dist/lib/sessions/memory-files.d.ts.map +1 -0
  172. package/dist/lib/sessions/memory-files.js +235 -0
  173. package/dist/lib/sessions/memory-files.js.map +1 -0
  174. package/dist/lib/sessions/source-url.d.ts +11 -0
  175. package/dist/lib/sessions/source-url.d.ts.map +1 -1
  176. package/dist/lib/sessions/source-url.js +15 -0
  177. package/dist/lib/sessions/source-url.js.map +1 -1
  178. package/dist/lib/setup-funnel.d.ts +41 -0
  179. package/dist/lib/setup-funnel.d.ts.map +1 -0
  180. package/dist/lib/setup-funnel.js +28 -0
  181. package/dist/lib/setup-funnel.js.map +1 -0
  182. package/dist/lib/telemetry-consent.d.ts +17 -8
  183. package/dist/lib/telemetry-consent.d.ts.map +1 -1
  184. package/dist/lib/telemetry-consent.js +21 -6
  185. package/dist/lib/telemetry-consent.js.map +1 -1
  186. package/dist/lib/telemetry-env.d.ts +19 -0
  187. package/dist/lib/telemetry-env.d.ts.map +1 -0
  188. package/dist/lib/telemetry-env.js +13 -0
  189. package/dist/lib/telemetry-env.js.map +1 -0
  190. package/dist/lib/usage-telemetry.d.ts +108 -13
  191. package/dist/lib/usage-telemetry.d.ts.map +1 -1
  192. package/dist/lib/usage-telemetry.js +227 -55
  193. package/dist/lib/usage-telemetry.js.map +1 -1
  194. package/dist/lib/user-hooks.d.ts +15 -0
  195. package/dist/lib/user-hooks.d.ts.map +1 -0
  196. package/dist/lib/user-hooks.js +144 -0
  197. package/dist/lib/user-hooks.js.map +1 -0
  198. package/dist/lib/value-rollup.d.ts +10 -3
  199. package/dist/lib/value-rollup.d.ts.map +1 -1
  200. package/dist/lib/value-rollup.js +11 -4
  201. package/dist/lib/value-rollup.js.map +1 -1
  202. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/lib/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /** Called by every entry point that is running as an agent hook, before any work. */
2
+ export declare function markHookContext(): void;
3
+ export declare function inHookContext(): boolean;
4
+ /** Test-only reset. Module state outlives a test file otherwise, so one case that marks the
5
+ * context would silently mark every case after it. */
6
+ export declare function resetHookContextForTests(): void;
7
+ //# sourceMappingURL=hook-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-context.d.ts","sourceRoot":"","sources":["../../src/lib/hook-context.ts"],"names":[],"mappings":"AAyBA,qFAAqF;AACrF,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;uDACuD;AACvD,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ALI-835: whether this process is running as an agent's hook.
3
+ *
4
+ * A funnel stage means "a person got this far". A hook does not: it runs on the agent's clock,
5
+ * many times in a session, with nobody watching. A ping from there measures an editing loop and
6
+ * lands in the same column as a human milestone, so the two become indistinguishable in the
7
+ * scoreboard - which is worse than not measuring, because the number still looks like a number.
8
+ *
9
+ * Deliberately an explicit mark rather than sniffing the environment. The alternatives were
10
+ * both worse:
11
+ *
12
+ * - Reading stdin to see whether a hook payload is there consumes the payload the command is
13
+ * about to parse, and blocks when no hook is piping anything.
14
+ * - Guessing from an env var means enumerating what every host agent happens to set, and each
15
+ * miss is a live ping from a context that promised not to send one. That is the
16
+ * hand-enumeration failure latent-vs-deterministic.md names: a too-narrow list returns "no
17
+ * match", which is indistinguishable from "not a hook".
18
+ *
19
+ * So the hook entry points say so themselves, once, and this module is the single reader. A new
20
+ * hook surface that forgets to call `markHookContext` sends pings it should not - which is a
21
+ * miss in the same direction as the env-var guess, but a visible one: it is a missing call at a
22
+ * named entry point rather than a missing string in a list nobody can enumerate.
23
+ */
24
+ let hookContext = false;
25
+ /** Called by every entry point that is running as an agent hook, before any work. */
26
+ export function markHookContext() {
27
+ hookContext = true;
28
+ }
29
+ export function inHookContext() {
30
+ return hookContext;
31
+ }
32
+ /** Test-only reset. Module state outlives a test file otherwise, so one case that marks the
33
+ * context would silently mark every case after it. */
34
+ export function resetHookContextForTests() {
35
+ hookContext = false;
36
+ }
37
+ //# sourceMappingURL=hook-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-context.js","sourceRoot":"","sources":["../../src/lib/hook-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,qFAAqF;AACrF,MAAM,UAAU,eAAe;IAC7B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;uDACuD;AACvD,MAAM,UAAU,wBAAwB;IACtC,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC"}
@@ -13,6 +13,13 @@ export interface HookPayload {
13
13
  hook_event_name?: string;
14
14
  tool_name?: string;
15
15
  tool_input?: HookToolInput;
16
+ /**
17
+ * The workspace the edit belongs to, when the host says (every host puts it under `cwd`).
18
+ * A USER-level hook does not run in the project - Cursor documents that user-level hook
19
+ * scripts run from ~/.cursor/ - and the post-edit path reads `git diff` in process.cwd(),
20
+ * so without this the check would look at the wrong directory (ALI-952).
21
+ */
22
+ cwd?: string;
16
23
  }
17
24
  export declare function normalizeHookPayload(raw: unknown): HookPayload | null;
18
25
  export declare function readHookPayload(stream?: Readable & {
@@ -1 +1 @@
1
- {"version":3,"file":"hook-payload.d.ts","sourceRoot":"","sources":["../../src/lib/hook-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAsDD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA+CrE;AAOD,wBAAsB,eAAe,CACnC,MAAM,GAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAkB,GACrD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS7B"}
1
+ {"version":3,"file":"hook-payload.d.ts","sourceRoot":"","sources":["../../src/lib/hook-payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAqFD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAkErE;AAOD,wBAAsB,eAAe,CACnC,MAAM,GAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAkB,GACrD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAS7B"}
@@ -1,4 +1,5 @@
1
1
  const asRecord = (v) => v !== null && typeof v === 'object' && !Array.isArray(v) ? v : null;
2
+ const cwdOf = (p) => (typeof p['cwd'] === 'string' ? p['cwd'] : undefined);
2
3
  // pi's edit tool takes edits[{oldText,newText}] (and still accepts a legacy top-level
3
4
  // oldText/newText pair - see prepareEditArguments in pi's core/tools/edit.ts). Rename
4
5
  // into the canonical shape proposedChangeText() reads.
@@ -43,21 +44,51 @@ function fromOpenCodeArgs(args) {
43
44
  out.new_string = args['newString'];
44
45
  return out;
45
46
  }
47
+ // Codex speaks Claude Code's field names, and its file edits go through apply_patch, whose
48
+ // tool_input carries the whole patch under `command` (Codex hooks reference: "tool_input.command
49
+ // applies to Bash and apply_patch"). The patch IS the proposed change, so it maps to
50
+ // `content` exactly as OpenCode's patchText does. ONLY for apply_patch: a Bash command is
51
+ // not a proposed edit. Documented shape, pending a real capture (fixtures/hook-payloads/).
52
+ function fromCodexInput(toolName, input) {
53
+ const out = { ...input };
54
+ if (toolName === 'apply_patch' && typeof input['command'] === 'string' && out.content === undefined) {
55
+ out.content = input['command'];
56
+ }
57
+ return out;
58
+ }
59
+ // The host event names that mean "before the tool runs" / "after it ran". Claude Code and
60
+ // Codex use PascalCase; Cursor uses camelCase for the same two events. Passed through
61
+ // verbatim, 'preToolUse' would never equal 'PreToolUse' and the proposed edit would be
62
+ // checked as though it had already landed - silently.
63
+ function canonicalEvent(name) {
64
+ const lower = name.toLowerCase();
65
+ if (lower === 'pretooluse')
66
+ return 'PreToolUse';
67
+ if (lower === 'posttooluse')
68
+ return 'PostToolUse';
69
+ return name;
70
+ }
46
71
  // Normalize whichever host's hook payload arrived on stdin into the canonical
47
72
  // HookPayload, so runAdvisory never learns which agent it is serving. Every field name
48
73
  // below comes from that host's published schema:
49
- // Claude Code {hook_event_name, tool_name, tool_input} - already canonical
74
+ // Claude Code {hook_event_name, tool_name, tool_input, cwd} - already canonical
75
+ // Codex the same, with apply_patch's patch under tool_input.command
50
76
  // pi {type:'tool_call'|'tool_result', toolName, input} - extension events
51
77
  // Gemini CLI {tool_name, tool_input, tool_response?} - AfterTool is the
52
78
  // one carrying tool_response, which is what derives the event
53
- // Cursor {hook_event_name:'afterFileEdit', file_path, edits} - fields sit at the
79
+ // Cursor {hook_event_name:'preToolUse'|'postToolUse', tool_name, tool_input, cwd},
80
+ // and {hook_event_name:'afterFileEdit', file_path, edits} - fields sit at the
54
81
  // TOP level rather than under tool_input
82
+ // Copilot CLI {sessionId, timestamp, cwd, toolName, toolArgs, toolResult?} - no event
83
+ // name at all; toolResult is what postToolUse carries. Its "VS Code
84
+ // compatible" variant is the Claude Code shape and takes that branch.
55
85
  // Returns null when nothing tool-shaped is present, so callers fall back rather than
56
86
  // checking an empty change.
57
87
  export function normalizeHookPayload(raw) {
58
88
  const p = asRecord(raw);
59
89
  if (!p)
60
90
  return null;
91
+ const cwd = cwdOf(p);
61
92
  // pi: the event type is explicit on the payload.
62
93
  if (p['type'] === 'tool_call' || p['type'] === 'tool_result') {
63
94
  const input = asRecord(p['input']) ?? {};
@@ -65,6 +96,7 @@ export function normalizeHookPayload(raw) {
65
96
  hook_event_name: p['type'] === 'tool_call' ? 'PreToolUse' : 'PostToolUse',
66
97
  tool_name: typeof p['toolName'] === 'string' ? p['toolName'] : undefined,
67
98
  tool_input: fromPiInput(input),
99
+ ...(cwd !== undefined ? { cwd } : {}),
68
100
  };
69
101
  }
70
102
  // OpenCode: the plugin hook name is the event.
@@ -73,28 +105,44 @@ export function normalizeHookPayload(raw) {
73
105
  hook_event_name: p['type'] === 'tool.execute.before' ? 'PreToolUse' : 'PostToolUse',
74
106
  tool_name: typeof p['tool'] === 'string' ? p['tool'] : undefined,
75
107
  tool_input: fromOpenCodeArgs(asRecord(p['args']) ?? {}),
108
+ ...(cwd !== undefined ? { cwd } : {}),
76
109
  };
77
110
  }
78
- // Cursor: afterFileEdit is observational and flat. (There is no beforeFileEdit.)
111
+ // Cursor: afterFileEdit is observational and flat.
79
112
  if (p['hook_event_name'] === 'afterFileEdit') {
80
113
  const tool_input = {};
81
114
  if (typeof p['file_path'] === 'string')
82
115
  tool_input.file_path = p['file_path'];
83
116
  if (Array.isArray(p['edits']))
84
117
  tool_input.edits = p['edits'];
85
- return { hook_event_name: 'PostToolUse', tool_name: 'Edit', tool_input };
118
+ return { hook_event_name: 'PostToolUse', tool_name: 'Edit', tool_input, ...(cwd !== undefined ? { cwd } : {}) };
86
119
  }
87
- // Claude Code / Gemini CLI: both already speak tool_name + tool_input.
120
+ // Claude Code / Codex / Gemini CLI / Cursor: all speak tool_name + tool_input.
88
121
  if (p['tool_name'] !== undefined || p['tool_input'] !== undefined) {
122
+ const tool_name = typeof p['tool_name'] === 'string' ? p['tool_name'] : undefined;
89
123
  const event = typeof p['hook_event_name'] === 'string'
90
- ? p['hook_event_name']
124
+ ? canonicalEvent(p['hook_event_name'])
91
125
  : p['tool_response'] !== undefined
92
126
  ? 'PostToolUse'
93
127
  : 'PreToolUse';
94
128
  return {
95
129
  hook_event_name: event,
96
- tool_name: typeof p['tool_name'] === 'string' ? p['tool_name'] : undefined,
97
- tool_input: (asRecord(p['tool_input']) ?? {}),
130
+ tool_name,
131
+ tool_input: fromCodexInput(tool_name, asRecord(p['tool_input']) ?? {}),
132
+ ...(cwd !== undefined ? { cwd } : {}),
133
+ };
134
+ }
135
+ // Copilot CLI (camelCase): toolName + toolArgs, toolResult only after the tool ran. The
136
+ // toolArgs field names for its edit/create tools are not documented; they pass through
137
+ // as-is and a shape proposedChangeText() cannot read means the pre-edit check stays
138
+ // silent (fail-open) while postToolUse still carries the landed diff. Pending a real
139
+ // capture (fixtures/hook-payloads/).
140
+ if (typeof p['toolName'] === 'string') {
141
+ return {
142
+ hook_event_name: p['toolResult'] !== undefined ? 'PostToolUse' : 'PreToolUse',
143
+ tool_name: p['toolName'],
144
+ tool_input: (asRecord(p['toolArgs']) ?? {}),
145
+ ...(cwd !== undefined ? { cwd } : {}),
98
146
  };
99
147
  }
100
148
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"hook-payload.js","sourceRoot":"","sources":["../../src/lib/hook-payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-payload.js","sourceRoot":"","sources":["../../src/lib/hook-payload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ALI-938: the invite nudge - what replaces the three "Share this graph with your team:
3
+ * https://align.tech/pricing" lines in mcp.ts, why.ts and value-rollup.ts. A URL asks
4
+ * someone to go somewhere else and figure it out; `align invite <email>` is a command
5
+ * they can run right there.
6
+ *
7
+ * Pure and I/O-free, same discipline as connect-prompt.ts's gap lines: the callers
8
+ * (why.ts, in particular) gather whatever local git/graph state the decision requires,
9
+ * and this module only turns already-known facts into copy.
10
+ */
11
+ export declare const INVITE_HINT = "align invite <their-email>";
12
+ export type InviteNudgeReason = 'value' | 'answered-by-other' | 'empty-with-committers';
13
+ /**
14
+ * One line, reason-specific lead-in + the shared command hint. Three reasons:
15
+ * - 'value': the graph has done something worth sharing (mcp.ts, value-rollup.ts's
16
+ * existing `hasValue` trigger - an aggregate signal, not tied to one decision).
17
+ * - 'answered-by-other': `align ask` answered from a decision someone else made -
18
+ * the clearest single moment the bottom-up thesis is about ("this would be amazing
19
+ * if my whole team's decisions were in here").
20
+ * - 'empty-with-committers': the question came back empty, but the repo has commits
21
+ * from people other than whoever is running the command - their graph isn't in
22
+ * here yet.
23
+ */
24
+ export declare function inviteNudgeLine(reason?: InviteNudgeReason): string;
25
+ export interface DecisionAuthorLike {
26
+ name?: string;
27
+ email?: string;
28
+ }
29
+ export interface LocalIdentity {
30
+ email: string | null;
31
+ name: string | null;
32
+ }
33
+ /**
34
+ * Whether at least one of these decisions was authored by someone other than whoever is
35
+ * running the command - the signal `inviteNudgeLine('answered-by-other')` is for.
36
+ *
37
+ * Deliberately conservative in both directions:
38
+ * - with no local identity at all, this can't compare anything and returns false
39
+ * rather than guessing (verification.md: never claim a comparison you didn't make).
40
+ * - for one author, it compares email-to-email if both sides have an email, else
41
+ * name-to-name if both sides have a name. It never compares an email against a
42
+ * name (no cheap way to know they refer to the same person), and an author with
43
+ * neither field carries no attribution to judge.
44
+ */
45
+ export declare function answeredBySomeoneElse(authors: Array<DecisionAuthorLike | null | undefined>, me: LocalIdentity): boolean;
46
+ //# sourceMappingURL=invite-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-prompt.d.ts","sourceRoot":"","sources":["../../src/lib/invite-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,WAAW,+BAA+B,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAExF;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,iBAA2B,GAAG,MAAM,CAU3E;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC,EACrD,EAAE,EAAE,aAAa,GAChB,OAAO,CAaT"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * ALI-938: the invite nudge - what replaces the three "Share this graph with your team:
3
+ * https://align.tech/pricing" lines in mcp.ts, why.ts and value-rollup.ts. A URL asks
4
+ * someone to go somewhere else and figure it out; `align invite <email>` is a command
5
+ * they can run right there.
6
+ *
7
+ * Pure and I/O-free, same discipline as connect-prompt.ts's gap lines: the callers
8
+ * (why.ts, in particular) gather whatever local git/graph state the decision requires,
9
+ * and this module only turns already-known facts into copy.
10
+ */
11
+ export const INVITE_HINT = 'align invite <their-email>';
12
+ /**
13
+ * One line, reason-specific lead-in + the shared command hint. Three reasons:
14
+ * - 'value': the graph has done something worth sharing (mcp.ts, value-rollup.ts's
15
+ * existing `hasValue` trigger - an aggregate signal, not tied to one decision).
16
+ * - 'answered-by-other': `align ask` answered from a decision someone else made -
17
+ * the clearest single moment the bottom-up thesis is about ("this would be amazing
18
+ * if my whole team's decisions were in here").
19
+ * - 'empty-with-committers': the question came back empty, but the repo has commits
20
+ * from people other than whoever is running the command - their graph isn't in
21
+ * here yet.
22
+ */
23
+ export function inviteNudgeLine(reason = 'value') {
24
+ switch (reason) {
25
+ case 'answered-by-other':
26
+ return `That came from a decision someone else made. Get your whole team in here: ${INVITE_HINT}`;
27
+ case 'empty-with-committers':
28
+ return `Nothing matched, but this repo has other committers. Bring them into your graph: ${INVITE_HINT}`;
29
+ case 'value':
30
+ default:
31
+ return `Add a teammate to this graph: ${INVITE_HINT}`;
32
+ }
33
+ }
34
+ /**
35
+ * Whether at least one of these decisions was authored by someone other than whoever is
36
+ * running the command - the signal `inviteNudgeLine('answered-by-other')` is for.
37
+ *
38
+ * Deliberately conservative in both directions:
39
+ * - with no local identity at all, this can't compare anything and returns false
40
+ * rather than guessing (verification.md: never claim a comparison you didn't make).
41
+ * - for one author, it compares email-to-email if both sides have an email, else
42
+ * name-to-name if both sides have a name. It never compares an email against a
43
+ * name (no cheap way to know they refer to the same person), and an author with
44
+ * neither field carries no attribution to judge.
45
+ */
46
+ export function answeredBySomeoneElse(authors, me) {
47
+ const myEmail = me.email?.toLowerCase() ?? null;
48
+ const myName = me.name?.toLowerCase() ?? null;
49
+ if (!myEmail && !myName)
50
+ return false;
51
+ return authors.some((a) => {
52
+ if (!a)
53
+ return false;
54
+ const email = a.email?.toLowerCase();
55
+ const name = a.name?.toLowerCase();
56
+ if (email && myEmail)
57
+ return email !== myEmail;
58
+ if (name && myName)
59
+ return name !== myName;
60
+ return false;
61
+ });
62
+ }
63
+ //# sourceMappingURL=invite-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-prompt.js","sourceRoot":"","sources":["../../src/lib/invite-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAIxD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,SAA4B,OAAO;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,mBAAmB;YACtB,OAAO,6EAA6E,WAAW,EAAE,CAAC;QACpG,KAAK,uBAAuB;YAC1B,OAAO,oFAAoF,WAAW,EAAE,CAAC;QAC3G,KAAK,OAAO,CAAC;QACb;YACE,OAAO,iCAAiC,WAAW,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAYD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqD,EACrD,EAAiB;IAEjB,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEtC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QACnC,IAAI,KAAK,IAAI,OAAO;YAAE,OAAO,KAAK,KAAK,OAAO,CAAC;QAC/C,IAAI,IAAI,IAAI,MAAM;YAAE,OAAO,IAAI,KAAK,MAAM,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -53,7 +53,7 @@ export interface DbStats {
53
53
  * `migrate` from the source and compares it here, because forgetting the bump leaves the new
54
54
  * branch running destructively on every open with nothing to stop it.
55
55
  */
56
- export declare const SCHEMA_VERSION = 5;
56
+ export declare const SCHEMA_VERSION = 6;
57
57
  /**
58
58
  * ALI-829: a source timestamp as this database stores it - ISO-8601 Z - or null.
59
59
  *
@@ -230,8 +230,25 @@ export declare function createLocalDb(dbPath: string): {
230
230
  * there is no, and its docs are re-read (a few files, idempotent). Case-insensitive, as
231
231
  * repo identities are. */
232
232
  hasDocsForRepo(repo: string): boolean;
233
- setEmbedding(decisionId: string, embedding: Float32Array): void;
233
+ /**
234
+ * ALI-787: `model` tags which HF model produced `embedding`, so a future model swap
235
+ * cannot compare two models' vectors as if they were interchangeable - same-length
236
+ * float arrays from different models pass cosineSimilarity's length check and produce a
237
+ * plausible, meaningless score with nothing to catch it (see local-embeddings.ts,
238
+ * cosineSimilarity's own doc comment, for the sibling case this closes: a length
239
+ * mismatch throws, but a same-length cross-model comparison would not have).
240
+ *
241
+ * Optional and defaulting to NULL (`?? null`, since node:sqlite throws on a bound
242
+ * `undefined` rather than treating it as NULL) so every existing 2-arg caller keeps
243
+ * compiling and behaving exactly as before. The one production caller
244
+ * (local-gateway-client.ts's ingestOne) always passes EMBEDDING_MODEL_ID.
245
+ */
246
+ setEmbedding(decisionId: string, embedding: Float32Array, model?: string): void;
234
247
  getEmbedding(decisionId: string): Float32Array | null;
248
+ /** ALI-787: which model tagged this decision's stored embedding, or null when there is
249
+ * no embedding row, or the row predates tagging and was never backfilled (should not
250
+ * happen post-migration, but reads as "unknown" rather than a false match either way). */
251
+ getEmbeddingModel(decisionId: string): string | null;
235
252
  /**
236
253
  * Unscoped by default: relationship linking (ingestOne, in local-gateway-client.ts) wants
237
254
  * candidates across EVERY repo - cross-repo memory is the product this ticket protects,
@@ -239,10 +256,23 @@ export declare function createLocalDb(dbPath: string): {
239
256
  * paths (search, ask) that DO want to stay in-scope, filtered here rather than after
240
257
  * ranking - filtering post-rank would silently return fewer than `topK` results whenever
241
258
  * some of the best global matches fall outside the scope.
259
+ *
260
+ * ALI-787: `filter.model`, when given, excludes rows tagged with a DIFFERENT (non-null)
261
+ * model - the "degrade honestly" half of the model tag: a decision embedded by a retired
262
+ * model drops out of ranking rather than being compared to a current-model vector it is
263
+ * not compatible with. A NULL-tagged row (no model recorded at all) is treated as
264
+ * compatible rather than excluded, the same "unknown, not wrong" leniency checkDrift
265
+ * applies to a single decision - the migration backfills every pre-existing row, so NULL
266
+ * should not occur in a real graph, and this is what keeps a hand-built test fixture that
267
+ * predates ALI-787 (a bare 2-arg setEmbedding) behaving as it always did. Omitted (the
268
+ * default) applies no filter at all, which is what most existing callers and tests rely
269
+ * on - only local-gateway-client.ts's findSimilar passes it, with the currently active
270
+ * EMBEDDING_MODEL_ID.
242
271
  */
243
272
  getAllEmbeddings(filter?: {
244
273
  repo?: string;
245
274
  includeUnattributed?: boolean;
275
+ model?: string;
246
276
  }): Array<{
247
277
  decisionId: string;
248
278
  embedding: Float32Array;
@@ -1 +1 @@
1
- {"version":3,"file":"local-db.d.ts","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-db.d.ts","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,8 @@ CREATE TABLE IF NOT EXISTS decision_audit (
31
31
 
32
32
  CREATE TABLE IF NOT EXISTS decision_embeddings (
33
33
  decision_id TEXT PRIMARY KEY REFERENCES decisions(id) ON DELETE CASCADE,
34
- embedding BLOB NOT NULL
34
+ embedding BLOB NOT NULL,
35
+ model TEXT
35
36
  );
36
37
 
37
38
  CREATE TABLE IF NOT EXISTS decision_links (
@@ -59,7 +60,7 @@ CREATE TABLE IF NOT EXISTS decision_refs (
59
60
  * `migrate` from the source and compares it here, because forgetting the bump leaves the new
60
61
  * branch running destructively on every open with nothing to stop it.
61
62
  */
62
- export const SCHEMA_VERSION = 5;
63
+ export const SCHEMA_VERSION = 6;
63
64
  /**
64
65
  * ALI-829: a source timestamp as this database stores it - ISO-8601 Z - or null.
65
66
  *
@@ -139,6 +140,18 @@ export function identifyingSourceUrl(raw) {
139
140
  * read by the migration; SCHEMA above spells them a second time because a fresh CREATE
140
141
  * TABLE cannot read a constant, and the provenance test pins both against each other. */
141
142
  const PROVENANCE_COLUMNS = ['decider_kind', 'confirmed_by', 'confirmed_at', 'ratified_by', 'ratified_at'];
143
+ /**
144
+ * ALI-787: the only embedding model this graph has ever written before the `model` column
145
+ * existed. Verified, not assumed - `git log --all -p` on local-embeddings.ts and
146
+ * local-embeddings-wasm.ts shows exactly one HF model id was ever hardcoded there, across
147
+ * every commit. So backfilling every pre-column row with this is a true historical fact,
148
+ * unlike `decided_at` (step 4 below), which genuinely cannot be derived from an existing row.
149
+ *
150
+ * A deliberate LITERAL, not an import of local-embeddings.ts's EMBEDDING_MODEL_ID: this
151
+ * constant names what was true when the column was added, and must stay that value even
152
+ * after a future model swap changes EMBEDDING_MODEL_ID. Migrations are a historical record.
153
+ */
154
+ const LEGACY_EMBEDDING_MODEL = 'Xenova/all-MiniLM-L6-v2';
142
155
  /**
143
156
  * One-time data migrations, tracked in SQLite's built-in `user_version`.
144
157
  *
@@ -393,6 +406,29 @@ function migrate(db) {
393
406
  throw err;
394
407
  }
395
408
  }
409
+ if (version < 6) {
410
+ // Inside the write lock, for the reason step 4/5 give: two concurrent opens of a v5
411
+ // file must not both read "no column" and race the ALTER.
412
+ db.exec('BEGIN IMMEDIATE');
413
+ try {
414
+ const hasModel = db.prepare('PRAGMA table_info(decision_embeddings)').all()
415
+ .some((c) => c.name === 'model');
416
+ if (!hasModel) {
417
+ db.exec('ALTER TABLE decision_embeddings ADD COLUMN model TEXT');
418
+ }
419
+ // Every row that predates the column was written by LEGACY_EMBEDDING_MODEL - see its
420
+ // doc comment for how that is verified rather than assumed. Only rows with no tag yet
421
+ // are touched, so re-running this on an already-migrated database is a no-op.
422
+ db.prepare('UPDATE decision_embeddings SET model = ? WHERE model IS NULL').run(LEGACY_EMBEDDING_MODEL);
423
+ db.exec('PRAGMA user_version = 6');
424
+ db.exec('COMMIT');
425
+ }
426
+ catch (err) {
427
+ if (db.isTransaction)
428
+ db.exec('ROLLBACK');
429
+ throw err;
430
+ }
431
+ }
396
432
  if (version < SCHEMA_VERSION) {
397
433
  db.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
398
434
  }
@@ -606,8 +642,21 @@ export function createLocalDb(dbPath) {
606
642
  OR lower(source_url) LIKE '%/' || ? || '/-/blob/%' ESCAPE '\\') LIMIT 1`).get(literal, literal);
607
643
  return row !== undefined;
608
644
  },
609
- setEmbedding(decisionId, embedding) {
610
- db.prepare(`INSERT OR REPLACE INTO decision_embeddings (decision_id, embedding) VALUES (?, ?)`).run(decisionId, Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength));
645
+ /**
646
+ * ALI-787: `model` tags which HF model produced `embedding`, so a future model swap
647
+ * cannot compare two models' vectors as if they were interchangeable - same-length
648
+ * float arrays from different models pass cosineSimilarity's length check and produce a
649
+ * plausible, meaningless score with nothing to catch it (see local-embeddings.ts,
650
+ * cosineSimilarity's own doc comment, for the sibling case this closes: a length
651
+ * mismatch throws, but a same-length cross-model comparison would not have).
652
+ *
653
+ * Optional and defaulting to NULL (`?? null`, since node:sqlite throws on a bound
654
+ * `undefined` rather than treating it as NULL) so every existing 2-arg caller keeps
655
+ * compiling and behaving exactly as before. The one production caller
656
+ * (local-gateway-client.ts's ingestOne) always passes EMBEDDING_MODEL_ID.
657
+ */
658
+ setEmbedding(decisionId, embedding, model) {
659
+ db.prepare(`INSERT OR REPLACE INTO decision_embeddings (decision_id, embedding, model) VALUES (?, ?, ?)`).run(decisionId, Buffer.from(embedding.buffer, embedding.byteOffset, embedding.byteLength), model ?? null);
611
660
  },
612
661
  getEmbedding(decisionId) {
613
662
  const row = db.prepare(`SELECT embedding FROM decision_embeddings WHERE decision_id = ?`).get(decisionId);
@@ -615,6 +664,13 @@ export function createLocalDb(dbPath) {
615
664
  return null;
616
665
  return new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4);
617
666
  },
667
+ /** ALI-787: which model tagged this decision's stored embedding, or null when there is
668
+ * no embedding row, or the row predates tagging and was never backfilled (should not
669
+ * happen post-migration, but reads as "unknown" rather than a false match either way). */
670
+ getEmbeddingModel(decisionId) {
671
+ const row = db.prepare(`SELECT model FROM decision_embeddings WHERE decision_id = ?`).get(decisionId);
672
+ return row?.model ?? null;
673
+ },
618
674
  /**
619
675
  * Unscoped by default: relationship linking (ingestOne, in local-gateway-client.ts) wants
620
676
  * candidates across EVERY repo - cross-repo memory is the product this ticket protects,
@@ -622,15 +678,34 @@ export function createLocalDb(dbPath) {
622
678
  * paths (search, ask) that DO want to stay in-scope, filtered here rather than after
623
679
  * ranking - filtering post-rank would silently return fewer than `topK` results whenever
624
680
  * some of the best global matches fall outside the scope.
681
+ *
682
+ * ALI-787: `filter.model`, when given, excludes rows tagged with a DIFFERENT (non-null)
683
+ * model - the "degrade honestly" half of the model tag: a decision embedded by a retired
684
+ * model drops out of ranking rather than being compared to a current-model vector it is
685
+ * not compatible with. A NULL-tagged row (no model recorded at all) is treated as
686
+ * compatible rather than excluded, the same "unknown, not wrong" leniency checkDrift
687
+ * applies to a single decision - the migration backfills every pre-existing row, so NULL
688
+ * should not occur in a real graph, and this is what keeps a hand-built test fixture that
689
+ * predates ALI-787 (a bare 2-arg setEmbedding) behaving as it always did. Omitted (the
690
+ * default) applies no filter at all, which is what most existing callers and tests rely
691
+ * on - only local-gateway-client.ts's findSimilar passes it, with the currently active
692
+ * EMBEDDING_MODEL_ID.
625
693
  */
626
694
  getAllEmbeddings(filter = {}) {
627
695
  let sql = `SELECT e.decision_id, e.embedding FROM decision_embeddings e`;
696
+ const where = [];
628
697
  const params = [];
629
698
  if (filter.repo !== undefined) {
630
699
  sql += ` JOIN decisions d ON d.id = e.decision_id`;
631
- sql += filter.includeUnattributed ? ` WHERE (d.repo = ? OR d.repo IS NULL)` : ` WHERE d.repo = ?`;
700
+ where.push(filter.includeUnattributed ? `(d.repo = ? OR d.repo IS NULL)` : `d.repo = ?`);
632
701
  params.push(filter.repo);
633
702
  }
703
+ if (filter.model !== undefined) {
704
+ where.push(`(e.model = ? OR e.model IS NULL)`);
705
+ params.push(filter.model);
706
+ }
707
+ if (where.length)
708
+ sql += ` WHERE ${where.join(' AND ')}`;
634
709
  const rows = db.prepare(sql).all(...params);
635
710
  return rows.map(r => ({
636
711
  decisionId: r.decision_id,