@aligndottech/cli 0.63.0 → 0.64.1

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 (318) hide show
  1. package/README.md +3 -2
  2. package/dist/cli.d.ts +2 -2
  3. package/dist/cli.js +6 -6
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/adjudicate.d.ts +3 -3
  6. package/dist/commands/capture.js +2 -2
  7. package/dist/commands/capture.js.map +1 -1
  8. package/dist/commands/check.d.ts +1 -1
  9. package/dist/commands/check.js +30 -30
  10. package/dist/commands/check.js.map +1 -1
  11. package/dist/commands/connect-agents.d.ts +4 -2
  12. package/dist/commands/connect-agents.d.ts.map +1 -1
  13. package/dist/commands/connect-agents.js +7 -7
  14. package/dist/commands/connect-agents.js.map +1 -1
  15. package/dist/commands/connect.d.ts +1 -1
  16. package/dist/commands/connector/index.js +1 -1
  17. package/dist/commands/connector/index.js.map +1 -1
  18. package/dist/commands/context.d.ts +4 -4
  19. package/dist/commands/context.js +7 -7
  20. package/dist/commands/context.js.map +1 -1
  21. package/dist/commands/decisions/index.js +4 -4
  22. package/dist/commands/decisions/index.js.map +1 -1
  23. package/dist/commands/default-action.d.ts.map +1 -1
  24. package/dist/commands/default-action.js +8 -5
  25. package/dist/commands/default-action.js.map +1 -1
  26. package/dist/commands/glossary.d.ts +1 -1
  27. package/dist/commands/import/confluence.js +1 -1
  28. package/dist/commands/import/confluence.js.map +1 -1
  29. package/dist/commands/import/git.js +4 -4
  30. package/dist/commands/import/git.js.map +1 -1
  31. package/dist/commands/import/jira.js +1 -1
  32. package/dist/commands/import/jira.js.map +1 -1
  33. package/dist/commands/import/sessions.d.ts +6 -6
  34. package/dist/commands/import/sessions.js +10 -10
  35. package/dist/commands/import/sessions.js.map +1 -1
  36. package/dist/commands/import.d.ts +2 -2
  37. package/dist/commands/import.js +2 -2
  38. package/dist/commands/invite.d.ts +1 -1
  39. package/dist/commands/invite.js +1 -1
  40. package/dist/commands/invite.js.map +1 -1
  41. package/dist/commands/local.js +3 -3
  42. package/dist/commands/local.js.map +1 -1
  43. package/dist/commands/mcp.d.ts +4 -4
  44. package/dist/commands/mcp.d.ts.map +1 -1
  45. package/dist/commands/mcp.js +34 -35
  46. package/dist/commands/mcp.js.map +1 -1
  47. package/dist/commands/ratify.d.ts +1 -1
  48. package/dist/commands/ratify.js +1 -1
  49. package/dist/commands/ratify.js.map +1 -1
  50. package/dist/commands/registry.d.ts +2 -2
  51. package/dist/commands/registry.js +3 -3
  52. package/dist/commands/registry.js.map +1 -1
  53. package/dist/commands/search.js +2 -2
  54. package/dist/commands/search.js.map +1 -1
  55. package/dist/commands/setup.d.ts +14 -10
  56. package/dist/commands/setup.d.ts.map +1 -1
  57. package/dist/commands/setup.js +133 -75
  58. package/dist/commands/setup.js.map +1 -1
  59. package/dist/commands/status.js +2 -2
  60. package/dist/commands/status.js.map +1 -1
  61. package/dist/commands/telemetry.d.ts +2 -2
  62. package/dist/commands/telemetry.js +3 -3
  63. package/dist/commands/telemetry.js.map +1 -1
  64. package/dist/commands/why.js +31 -31
  65. package/dist/commands/why.js.map +1 -1
  66. package/dist/detector/local-model-default.d.ts +1 -1
  67. package/dist/detector/local-model-default.js +1 -1
  68. package/dist/index.js +2 -2
  69. package/dist/index.js.map +1 -1
  70. package/dist/lib/access-capability.d.ts +1 -1
  71. package/dist/lib/access-capability.js +1 -1
  72. package/dist/lib/advisory-verdict.d.ts +3 -3
  73. package/dist/lib/advisory-verdict.js +3 -3
  74. package/dist/lib/agent-rules.d.ts +9 -0
  75. package/dist/lib/agent-rules.d.ts.map +1 -1
  76. package/dist/lib/agent-rules.js +55 -39
  77. package/dist/lib/agent-rules.js.map +1 -1
  78. package/dist/lib/approve-suggestions.d.ts +1 -1
  79. package/dist/lib/approve-suggestions.js +1 -1
  80. package/dist/lib/as-of.d.ts +6 -6
  81. package/dist/lib/as-of.js +6 -6
  82. package/dist/lib/ask-evidence.js +1 -1
  83. package/dist/lib/ask-key-offer.js +1 -1
  84. package/dist/lib/ask-listing.js +1 -1
  85. package/dist/lib/brand.d.ts +2 -2
  86. package/dist/lib/brand.js +3 -3
  87. package/dist/lib/capture-report.d.ts +1 -1
  88. package/dist/lib/capture-report.d.ts.map +1 -1
  89. package/dist/lib/capture-report.js +3 -3
  90. package/dist/lib/capture-report.js.map +1 -1
  91. package/dist/lib/capture-sources.d.ts +1 -1
  92. package/dist/lib/capture-sources.js +1 -1
  93. package/dist/lib/check-depth.d.ts +1 -1
  94. package/dist/lib/check-depth.js +1 -1
  95. package/dist/lib/claude-presence.d.ts +1 -1
  96. package/dist/lib/claude-presence.js +1 -1
  97. package/dist/lib/cli-oauth.js +1 -1
  98. package/dist/lib/cli-oauth.js.map +1 -1
  99. package/dist/lib/commands-doc.d.ts +1 -1
  100. package/dist/lib/commands-doc.js +1 -1
  101. package/dist/lib/commit-cite.js +2 -2
  102. package/dist/lib/commit-shape.d.ts +1 -1
  103. package/dist/lib/commit-shape.js +1 -1
  104. package/dist/lib/config.d.ts +6 -6
  105. package/dist/lib/config.js +7 -7
  106. package/dist/lib/config.js.map +1 -1
  107. package/dist/lib/connect-prompt.d.ts +1 -1
  108. package/dist/lib/connect-prompt.js +1 -1
  109. package/dist/lib/decider-kind.d.ts +4 -4
  110. package/dist/lib/decider-kind.js +4 -4
  111. package/dist/lib/decision-links.d.ts +7 -8
  112. package/dist/lib/decision-links.d.ts.map +1 -1
  113. package/dist/lib/decision-links.js +8 -9
  114. package/dist/lib/decision-links.js.map +1 -1
  115. package/dist/lib/decision-refs.d.ts +3 -3
  116. package/dist/lib/decision-refs.js +4 -4
  117. package/dist/lib/decision-refs.js.map +1 -1
  118. package/dist/lib/decision-relations.d.ts +4 -4
  119. package/dist/lib/decision-relations.js +4 -4
  120. package/dist/lib/decision-render.d.ts +2 -2
  121. package/dist/lib/decision-render.d.ts.map +1 -1
  122. package/dist/lib/decision-render.js +5 -5
  123. package/dist/lib/decision-render.js.map +1 -1
  124. package/dist/lib/decisions-context.d.ts +4 -4
  125. package/dist/lib/decisions-context.js +5 -5
  126. package/dist/lib/decisions-context.js.map +1 -1
  127. package/dist/lib/doctor-mcp.js +1 -1
  128. package/dist/lib/doctor.d.ts +2 -2
  129. package/dist/lib/embedding-assets.js +1 -1
  130. package/dist/lib/embedding-runtime.js +1 -1
  131. package/dist/lib/fetchers/capture.d.ts +1 -1
  132. package/dist/lib/fetchers/docs.d.ts +1 -1
  133. package/dist/lib/fetchers/docs.js +5 -5
  134. package/dist/lib/fetchers/docs.js.map +1 -1
  135. package/dist/lib/fetchers/git.d.ts +1 -1
  136. package/dist/lib/fetchers/git.js +1 -1
  137. package/dist/lib/fetchers/github.d.ts +2 -2
  138. package/dist/lib/fetchers/github.js +2 -2
  139. package/dist/lib/fetchers/linear.js +1 -1
  140. package/dist/lib/fetchers/slack.d.ts +2 -2
  141. package/dist/lib/fetchers/slack.js +2 -2
  142. package/dist/lib/first-decision.d.ts +1 -1
  143. package/dist/lib/first-decision.js +1 -1
  144. package/dist/lib/first-run-pr-import.d.ts +1 -1
  145. package/dist/lib/format-date.d.ts +1 -1
  146. package/dist/lib/format-date.js +1 -1
  147. package/dist/lib/found-summary.js +4 -4
  148. package/dist/lib/found-summary.js.map +1 -1
  149. package/dist/lib/gateway-client.d.ts +27 -27
  150. package/dist/lib/gateway-client.d.ts.map +1 -1
  151. package/dist/lib/gateway-client.js +30 -30
  152. package/dist/lib/gateway-client.js.map +1 -1
  153. package/dist/lib/git.d.ts +10 -10
  154. package/dist/lib/git.d.ts.map +1 -1
  155. package/dist/lib/git.js +12 -12
  156. package/dist/lib/git.js.map +1 -1
  157. package/dist/lib/hook-context.js +1 -1
  158. package/dist/lib/hook-payload.d.ts +1 -1
  159. package/dist/lib/hybrid-rank.d.ts +3 -3
  160. package/dist/lib/hybrid-rank.d.ts.map +1 -1
  161. package/dist/lib/hybrid-rank.js +3 -3
  162. package/dist/lib/hybrid-rank.js.map +1 -1
  163. package/dist/lib/import-defaults.d.ts +5 -5
  164. package/dist/lib/import-defaults.js +3 -3
  165. package/dist/lib/inline-rules.d.ts +1 -1
  166. package/dist/lib/inline-rules.js +1 -1
  167. package/dist/lib/invite-prompt.d.ts +1 -1
  168. package/dist/lib/invite-prompt.js +1 -1
  169. package/dist/lib/launch/mcp-child-env.js +1 -1
  170. package/dist/lib/launch/mcp-child-env.js.map +1 -1
  171. package/dist/lib/launch/strict-entry.js +2 -2
  172. package/dist/lib/launch/strict-entry.js.map +1 -1
  173. package/dist/lib/lexical-store.d.ts +1 -1
  174. package/dist/lib/lexical-store.js +1 -1
  175. package/dist/lib/lexical-terms.d.ts +1 -1
  176. package/dist/lib/lexical-terms.js +1 -1
  177. package/dist/lib/lexical-text.d.ts +2 -2
  178. package/dist/lib/lexical-text.js +2 -2
  179. package/dist/lib/llm-providers.d.ts +1 -1
  180. package/dist/lib/llm-providers.js +2 -2
  181. package/dist/lib/llm-providers.js.map +1 -1
  182. package/dist/lib/llm-trace.d.ts +1 -1
  183. package/dist/lib/llm-trace.js +1 -1
  184. package/dist/lib/llm-trace.js.map +1 -1
  185. package/dist/lib/local-candidate-classify.d.ts +1 -1
  186. package/dist/lib/local-candidate-classify.js +3 -3
  187. package/dist/lib/local-candidate-classify.js.map +1 -1
  188. package/dist/lib/local-db-migrate.d.ts +6 -6
  189. package/dist/lib/local-db-migrate.js +9 -9
  190. package/dist/lib/local-db-migrate.js.map +1 -1
  191. package/dist/lib/local-db-v11.d.ts +1 -1
  192. package/dist/lib/local-db.d.ts +33 -33
  193. package/dist/lib/local-db.d.ts.map +1 -1
  194. package/dist/lib/local-db.js +27 -27
  195. package/dist/lib/local-db.js.map +1 -1
  196. package/dist/lib/local-embeddings-native.js +1 -1
  197. package/dist/lib/local-embeddings.d.ts +2 -2
  198. package/dist/lib/local-embeddings.js +2 -2
  199. package/dist/lib/local-embeddings.js.map +1 -1
  200. package/dist/lib/local-gateway-client.d.ts +5 -5
  201. package/dist/lib/local-gateway-client.js +40 -40
  202. package/dist/lib/local-gateway-client.js.map +1 -1
  203. package/dist/lib/local-ingest.d.ts +3 -3
  204. package/dist/lib/local-ingest.js +3 -3
  205. package/dist/lib/local-link-pass.js +1 -1
  206. package/dist/lib/local-link-pass.js.map +1 -1
  207. package/dist/lib/local-llm.d.ts +21 -22
  208. package/dist/lib/local-llm.d.ts.map +1 -1
  209. package/dist/lib/local-llm.js +28 -30
  210. package/dist/lib/local-llm.js.map +1 -1
  211. package/dist/lib/local-mode.d.ts +1 -1
  212. package/dist/lib/local-mode.js +2 -2
  213. package/dist/lib/local-mode.js.map +1 -1
  214. package/dist/lib/local-provenance.d.ts +1 -1
  215. package/dist/lib/local-provenance.js +1 -1
  216. package/dist/lib/local-relationship-classifier.d.ts +6 -6
  217. package/dist/lib/local-relationship-classifier.js +7 -7
  218. package/dist/lib/local-relationship-classifier.js.map +1 -1
  219. package/dist/lib/local-thresholds.d.ts +3 -3
  220. package/dist/lib/local-thresholds.js +4 -4
  221. package/dist/lib/local-thresholds.js.map +1 -1
  222. package/dist/lib/mcp/share-status-tool.js +1 -1
  223. package/dist/lib/mcp/share-tool.js +1 -1
  224. package/dist/lib/mcp-setup.d.ts +11 -4
  225. package/dist/lib/mcp-setup.d.ts.map +1 -1
  226. package/dist/lib/mcp-setup.js +22 -12
  227. package/dist/lib/mcp-setup.js.map +1 -1
  228. package/dist/lib/mcp-timeline-tools.d.ts +5 -5
  229. package/dist/lib/mcp-timeline-tools.d.ts.map +1 -1
  230. package/dist/lib/mcp-timeline-tools.js +22 -23
  231. package/dist/lib/mcp-timeline-tools.js.map +1 -1
  232. package/dist/lib/next-step.d.ts +11 -5
  233. package/dist/lib/next-step.d.ts.map +1 -1
  234. package/dist/lib/next-step.js +12 -4
  235. package/dist/lib/next-step.js.map +1 -1
  236. package/dist/lib/personal-import.d.ts +3 -3
  237. package/dist/lib/personal-import.d.ts.map +1 -1
  238. package/dist/lib/personal-import.js +4 -4
  239. package/dist/lib/personal-import.js.map +1 -1
  240. package/dist/lib/personal-oauth.js +3 -3
  241. package/dist/lib/personal-oauth.js.map +1 -1
  242. package/dist/lib/query-expand.d.ts +1 -1
  243. package/dist/lib/query-expand.js +1 -1
  244. package/dist/lib/read-value-rollup.d.ts +2 -2
  245. package/dist/lib/read-value-rollup.js +3 -3
  246. package/dist/lib/read-value-rollup.js.map +1 -1
  247. package/dist/lib/reason-extract.d.ts +1 -1
  248. package/dist/lib/reason-extract.js +1 -1
  249. package/dist/lib/repo-identity.d.ts +2 -2
  250. package/dist/lib/repo-identity.js +3 -3
  251. package/dist/lib/resolve-env.d.ts +1 -1
  252. package/dist/lib/resolve-env.js +1 -1
  253. package/dist/lib/scope-defaults.js +1 -1
  254. package/dist/lib/scope-real.d.ts.map +1 -1
  255. package/dist/lib/scope-real.js +1 -1
  256. package/dist/lib/scope-real.js.map +1 -1
  257. package/dist/lib/search-query.d.ts +2 -2
  258. package/dist/lib/search-query.js +2 -2
  259. package/dist/lib/search-rerank.d.ts +1 -1
  260. package/dist/lib/search-rerank.js +1 -1
  261. package/dist/lib/sessions/confirm-freetext.d.ts +3 -3
  262. package/dist/lib/sessions/confirm-freetext.d.ts.map +1 -1
  263. package/dist/lib/sessions/confirm-freetext.js +2 -2
  264. package/dist/lib/sessions/extract-freetext.d.ts +3 -3
  265. package/dist/lib/sessions/extract-freetext.d.ts.map +1 -1
  266. package/dist/lib/sessions/import-summary.d.ts +1 -1
  267. package/dist/lib/sessions/import-summary.js +1 -1
  268. package/dist/lib/sessions/memory-files.d.ts +1 -1
  269. package/dist/lib/sessions/memory-files.js +5 -5
  270. package/dist/lib/sessions/source-url.d.ts +2 -2
  271. package/dist/lib/sessions/source-url.js +2 -2
  272. package/dist/lib/sessions/types.d.ts +6 -6
  273. package/dist/lib/sessions/types.js +4 -4
  274. package/dist/lib/setup-funnel.d.ts +2 -2
  275. package/dist/lib/setup-ux.d.ts +2 -2
  276. package/dist/lib/setup-ux.js +3 -3
  277. package/dist/lib/setup-ux.js.map +1 -1
  278. package/dist/lib/share/approval.js +1 -1
  279. package/dist/lib/share/browser-flow.d.ts +1 -1
  280. package/dist/lib/share/browser-flow.js +1 -1
  281. package/dist/lib/share/command.js +1 -1
  282. package/dist/lib/share/envelope.js +1 -1
  283. package/dist/lib/share/pending.d.ts +1 -1
  284. package/dist/lib/share/requests-client.d.ts +1 -1
  285. package/dist/lib/share/run.d.ts +1 -1
  286. package/dist/lib/sparse-graph.d.ts +20 -0
  287. package/dist/lib/sparse-graph.d.ts.map +1 -0
  288. package/dist/lib/sparse-graph.js +39 -0
  289. package/dist/lib/sparse-graph.js.map +1 -0
  290. package/dist/lib/suppress-sqlite-warning.d.ts +1 -1
  291. package/dist/lib/sync/real-env.d.ts.map +1 -1
  292. package/dist/lib/telemetry-env.d.ts +3 -3
  293. package/dist/lib/telemetry-env.js +1 -1
  294. package/dist/lib/token-estimate.d.ts +1 -1
  295. package/dist/lib/token-estimate.js +3 -3
  296. package/dist/lib/token-estimate.js.map +1 -1
  297. package/dist/lib/token-scope-gate.d.ts +1 -1
  298. package/dist/lib/token-scope-gate.js +1 -1
  299. package/dist/lib/trusted-align-bin.d.ts +2 -2
  300. package/dist/lib/trusted-align-bin.d.ts.map +1 -1
  301. package/dist/lib/trusted-align-bin.js +2 -2
  302. package/dist/lib/trusted-align-bin.js.map +1 -1
  303. package/dist/lib/usage-telemetry.d.ts +17 -17
  304. package/dist/lib/usage-telemetry.js +24 -24
  305. package/dist/lib/usage-telemetry.js.map +1 -1
  306. package/dist/lib/user-hooks.d.ts +1 -1
  307. package/dist/lib/user-hooks.d.ts.map +1 -1
  308. package/dist/lib/user-hooks.js +3 -3
  309. package/dist/lib/user-hooks.js.map +1 -1
  310. package/dist/lib/value-rollup.d.ts +7 -7
  311. package/dist/lib/value-rollup.d.ts.map +1 -1
  312. package/dist/lib/value-rollup.js +12 -12
  313. package/dist/lib/value-rollup.js.map +1 -1
  314. package/dist/lib/write-confirm.d.ts +53 -0
  315. package/dist/lib/write-confirm.d.ts.map +1 -0
  316. package/dist/lib/write-confirm.js +70 -0
  317. package/dist/lib/write-confirm.js.map +1 -0
  318. package/package.json +7 -7
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ALI-215: the "what your graph did for you" value rollup. Aggregates the gateway's
2
+ * The "what your graph did for you" value rollup. Aggregates the gateway's
3
3
  * per-tenant value signals into one normalized shape the status readout renders. Each
4
4
  * source is fetched independently and a failure nulls only its own field - an old gateway
5
5
  * missing /decisions/reuse-rate must not blank the whole readout.
@@ -9,7 +9,7 @@ export interface ValueRollup {
9
9
  decisions: number;
10
10
  conflictsCaught: number;
11
11
  /**
12
- * Decisions linked by embedding similarity alone (ALI-503). Deliberately a separate
12
+ * Decisions linked by embedding similarity alone. Deliberately a separate
13
13
  * number from conflictsCaught: an embedding says two decisions are about the same thing,
14
14
  * never that they disagree. Populated offline only; the cloud rollup has richer signals.
15
15
  */
@@ -19,7 +19,7 @@ export interface ValueRollup {
19
19
  reuseRate: number | null;
20
20
  healthGrade: string | null;
21
21
  /**
22
- * ALI-796: unresolved-ref gaps the local graph can name for itself - a decision
22
+ * Unresolved-ref gaps the local graph can name for itself - a decision
23
23
  * cites a Jira key, but nothing has connected Jira yet. Local-only: decision_refs
24
24
  * lives in the local SQLite graph (local-db.ts), so the hosted gateway has none to
25
25
  * report and fetchValueRollup always sets this to [].
@@ -27,7 +27,7 @@ export interface ValueRollup {
27
27
  gaps: UnresolvedGap[];
28
28
  }
29
29
  /**
30
- * Decisions in a local graph before the sharing prompt is earned (ALI-503).
30
+ * Decisions in a local graph before the sharing prompt is earned.
31
31
  *
32
32
  * The prompt used to be gated on conflictsCaught, which offline was fabricated from cosine
33
33
  * similarity, so a manufactured detection was what asked the user for money. Nothing writes
@@ -59,7 +59,7 @@ export interface ValueRollupClient {
59
59
  /**
60
60
  * `days` is the window the impact and reuse-rate endpoints measure over. Undefined keeps
61
61
  * each endpoint's own default (30), which is what `align status` has always read; the
62
- * second-run card passes 7 so it can honestly say "this week" (ALI-950).
62
+ * second-run card passes 7 so it can honestly say "this week".
63
63
  */
64
64
  export declare function fetchValueRollup(client: ValueRollupClient, opts?: {
65
65
  days?: number;
@@ -81,7 +81,7 @@ export interface LocalRollupDb {
81
81
  listLinks(filter?: {
82
82
  relation?: string;
83
83
  }): unknown[];
84
- /** ALI-796: every ref across every decision, for the gap resolver. */
84
+ /** Every ref across every decision, for the gap resolver. */
85
85
  getAllRefs(): Array<{
86
86
  decisionId: string;
87
87
  ref: string;
@@ -91,7 +91,7 @@ export interface LocalRollupDb {
91
91
  /**
92
92
  * The offline honest subset: decisions + conflict/duplicate/supersession counts derivable
93
93
  * from the local decision_links table. Reuse rate and composite health need the gateway,
94
- * so they are null here - we do NOT fabricate them offline (ALI-215 decision).
94
+ * so they are null here - we do NOT fabricate them offline.
95
95
  *
96
96
  * `isConnected` defaults to "nothing is connected", which only matters when the graph
97
97
  * actually carries refs - both real callers (status.ts, local.ts) always pass a real
@@ -1 +1 @@
1
- {"version":3,"file":"value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAGxF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,aAAa,IAAI,OAAO,CAAC;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC9D,SAAS,IAAI,OAAO,CAAC;QAAE,cAAc,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAUD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBpH;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CA+C5F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;IACrD,sEAAsE;IACtE,UAAU,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,aAAa,EACjB,WAAW,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAqB,GAC1D,WAAW,CAiBb"}
1
+ {"version":3,"file":"value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAGxF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,aAAa,IAAI,OAAO,CAAC;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC9D,SAAS,IAAI,OAAO,CAAC;QAAE,cAAc,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAUD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBpH;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CA+C5F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;IACrD,6DAA6D;IAC7D,UAAU,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,aAAa,EACjB,WAAW,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAqB,GAC1D,WAAW,CAiBb"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ALI-215: the "what your graph did for you" value rollup. Aggregates the gateway's
2
+ * The "what your graph did for you" value rollup. Aggregates the gateway's
3
3
  * per-tenant value signals into one normalized shape the status readout renders. Each
4
4
  * source is fetched independently and a failure nulls only its own field - an old gateway
5
5
  * missing /decisions/reuse-rate must not blank the whole readout.
@@ -7,7 +7,7 @@
7
7
  import { statusGapLine, unresolvedGaps } from './connect-prompt.js';
8
8
  import { inviteNudgeLine } from './invite-prompt.js';
9
9
  /**
10
- * Decisions in a local graph before the sharing prompt is earned (ALI-503).
10
+ * Decisions in a local graph before the sharing prompt is earned.
11
11
  *
12
12
  * The prompt used to be gated on conflictsCaught, which offline was fabricated from cosine
13
13
  * similarity, so a manufactured detection was what asked the user for money. Nothing writes
@@ -27,7 +27,7 @@ async function settle(p) {
27
27
  /**
28
28
  * `days` is the window the impact and reuse-rate endpoints measure over. Undefined keeps
29
29
  * each endpoint's own default (30), which is what `align status` has always read; the
30
- * second-run card passes 7 so it can honestly say "this week" (ALI-950).
30
+ * second-run card passes 7 so it can honestly say "this week".
31
31
  */
32
32
  export async function fetchValueRollup(client, opts = {}) {
33
33
  const [stats, impact, links, reuse, health] = await Promise.all([
@@ -59,15 +59,15 @@ export async function fetchValueRollup(client, opts = {}) {
59
59
  */
60
60
  export function renderValueReadout(r, opts) {
61
61
  const reuse = r.reuseRate === null ? 'n/a' : `${Math.round(r.reuseRate * 100)}%`;
62
- // ALI-503: offline, nothing can write a conflict link, so "N conflicts caught" was either
62
+ // Offline, nothing can write a conflict link, so "N conflicts caught" was either
63
63
  // fabricated from cosine similarity or a permanent zero that reads as a broken counter.
64
64
  // Report what the local graph genuinely knows instead.
65
65
  const lines = [` ${r.decisions} decisions in your graph`];
66
66
  if (opts.mode === 'local') {
67
- // ALI-794: offline, nothing writes a similarity, duplicate or supersession link on a
67
+ // Offline, nothing writes a similarity, duplicate or supersession link on a
68
68
  // first run, so all three are structurally zero and a row of them reads as a broken
69
69
  // dashboard to someone ninety seconds into the tool. HIDDEN AT ZERO, never deleted -
70
- // localValueRollup still counts the real relations (ALI-503's positive control), so a
70
+ // localValueRollup still counts the real relations (the positive control), so a
71
71
  // genuine one appears the moment it exists. Deleting the line would make that
72
72
  // impossible and would look identical from here.
73
73
  if (r.similarDecisions > 0)
@@ -92,7 +92,7 @@ export function renderValueReadout(r, opts) {
92
92
  lines.push('');
93
93
  lines.push(' Reuse rate and health need the cloud graph - run `align login` to see them.');
94
94
  }
95
- // ALI-796: name the gaps the graph can see for itself - one line per platform, only
95
+ // Name the gaps the graph can see for itself - one line per platform, only
96
96
  // when there is one to name. Local-only, same as similarDecisions above.
97
97
  if (r.gaps.length) {
98
98
  lines.push('');
@@ -100,12 +100,12 @@ export function renderValueReadout(r, opts) {
100
100
  lines.push(statusGapLine(gap));
101
101
  }
102
102
  // similarDecisions is deliberately absent: buying the upsell with a cosine artefact is
103
- // the defect this ticket exists to remove, not a smaller version of it (ALI-503).
103
+ // the defect this ticket exists to remove, not a smaller version of it.
104
104
  const hasValue = (opts.mode === 'local' && r.decisions >= LOCAL_SHARE_THRESHOLD)
105
105
  || r.conflictsCaught > 0 || r.duplicates > 0 || r.supersessions > 0;
106
106
  if (hasValue) {
107
107
  lines.push('');
108
- // ALI-938: a command someone can run right there, not a URL to go figure out later.
108
+ // A command someone can run right there, not a URL to go figure out later.
109
109
  lines.push(` ${inviteNudgeLine('value')}`);
110
110
  }
111
111
  return lines.join('\n');
@@ -113,7 +113,7 @@ export function renderValueReadout(r, opts) {
113
113
  /**
114
114
  * The offline honest subset: decisions + conflict/duplicate/supersession counts derivable
115
115
  * from the local decision_links table. Reuse rate and composite health need the gateway,
116
- * so they are null here - we do NOT fabricate them offline (ALI-215 decision).
116
+ * so they are null here - we do NOT fabricate them offline.
117
117
  *
118
118
  * `isConnected` defaults to "nothing is connected", which only matters when the graph
119
119
  * actually carries refs - both real callers (status.ts, local.ts) always pass a real
@@ -125,11 +125,11 @@ export function localValueRollup(db, isConnected = () => false) {
125
125
  decisions: db.getStats().decisions,
126
126
  // Kept counting the real relations even though nothing offline writes one, so the
127
127
  // counter stays provably capable of reporting a conflict. That is what makes a zero
128
- // here mean "none found" rather than "the counter is broken" (ALI-503 positive control).
128
+ // here mean "none found" rather than "the counter is broken".
129
129
  conflictsCaught: count('conflicts_with') + count('contradicts'),
130
130
  similarDecisions: count('relates'),
131
131
  duplicates: count('duplicates'),
132
- // ALI-1065: partially_supersedes is a real capture-time typed edge now too - counting
132
+ // partially_supersedes is a real capture-time typed edge now too - counting
133
133
  // only 'supersedes' would undercount the moment a decision partially replaces another.
134
134
  supersessions: count('supersedes') + count('partially_supersedes'),
135
135
  reuseRate: null,
@@ -1 +1 @@
1
- {"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { type EditorTarget } from './mcp-setup.js';
2
+ /** One file setup will create or modify. `display` is what the person reads. */
3
+ export interface PlannedWrite {
4
+ /** Absolute path. */
5
+ file: string;
6
+ display: string;
7
+ action: 'create' | 'modify';
8
+ }
9
+ /**
10
+ * A path under home as `~/...` with forward slashes on every OS, so the list reads the same as the
11
+ * project rows. Windows' native separator made it `~\.codex\config.toml` beside `.claude/settings.json`.
12
+ */
13
+ export declare function homeDisplay(file: string, home: string): string;
14
+ /**
15
+ * Every file one setup run can create or modify: the project's agent files, then each detected
16
+ * agent's own config. Built from the tables the writers themselves run (planAgentAlignment,
17
+ * mcpConfigFiles), never from a second hand-written list.
18
+ */
19
+ export declare function planSetupWrites(opts: {
20
+ cwd: string;
21
+ editors: EditorTarget[];
22
+ home?: string;
23
+ }): PlannedWrite[];
24
+ /**
25
+ * "may": the list is every file a writer CAN touch. A writer leaves its file as found when it is a
26
+ * symlink or the entry in it belongs to a team, and that is decided inside the writer while it runs
27
+ * (agent-rules.ts, mcp-setup.ts), so it cannot be asked ahead of time without a second copy of the rule.
28
+ */
29
+ export declare const WRITE_PLAN_HEADING = "Align may create or change these files:";
30
+ /** The list, one file per line. Plain text so the same lines print on a terminal and in a log. */
31
+ export declare function renderWritePlan(files: PlannedWrite[]): string;
32
+ /**
33
+ * Shown with the list, before the question. `align use --undo` replays the write manifest, which
34
+ * records the project files AND each agent's own config (write-confirm.test.ts pins both), so one
35
+ * command covers every file listed. `align mcp --remove` also works, but only for the agent configs.
36
+ */
37
+ export declare const WRITE_UNDO_LINE = "The first copy of any file that already exists is kept. Undo any time: align use --undo (it covers every file listed, project and agent config alike)";
38
+ export declare const WRITE_CONFIRM_QUESTION = "Continue?";
39
+ /**
40
+ * Show the list, then ask. The list prints on EVERY run, so a scripted run leaves a record of
41
+ * what it touched. The question is asked only with a person at a terminal and without
42
+ * --approve; otherwise the run goes ahead, as it did before the prompt existed.
43
+ * Returns false only when the person says no (or cancels).
44
+ */
45
+ export declare function confirmWrites(opts: {
46
+ files: PlannedWrite[];
47
+ approve?: boolean;
48
+ interactive: boolean;
49
+ print: (text: string) => void;
50
+ /** The yes/no prompt. Default yes. Resolves to undefined when the person cancels. */
51
+ ask: (message: string) => Promise<boolean | undefined>;
52
+ }): Promise<boolean>;
53
+ //# sourceMappingURL=write-confirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-confirm.d.ts","sourceRoot":"","sources":["../../src/lib/write-confirm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAkB,MAAM,gBAAgB,CAAC;AAEnE,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,EAAE,CAgB7G;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,4CAA4C,CAAC;AAE5E,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,CAG7D;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,0JAA0J,CAAC;AAEvL,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAElD;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,qFAAqF;IACrF,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;CACxD,GAAG,OAAO,CAAC,OAAO,CAAC,CAKnB"}
@@ -0,0 +1,70 @@
1
+ import { existsSync } from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { planAgentAlignment } from './agent-rules.js';
5
+ import { mcpConfigFiles } from './mcp-setup.js';
6
+ /**
7
+ * A path under home as `~/...` with forward slashes on every OS, so the list reads the same as the
8
+ * project rows. Windows' native separator made it `~\.codex\config.toml` beside `.claude/settings.json`.
9
+ */
10
+ export function homeDisplay(file, home) {
11
+ const under = file.startsWith(`${home}/`) || file.startsWith(`${home}\\`);
12
+ return under ? `~${file.slice(home.length).replace(/\\/g, '/')}` : file;
13
+ }
14
+ /**
15
+ * Every file one setup run can create or modify: the project's agent files, then each detected
16
+ * agent's own config. Built from the tables the writers themselves run (planAgentAlignment,
17
+ * mcpConfigFiles), never from a second hand-written list.
18
+ */
19
+ export function planSetupWrites(opts) {
20
+ const home = opts.home ?? os.homedir();
21
+ const out = [];
22
+ const seen = new Set();
23
+ const add = (abs, display, action) => {
24
+ if (seen.has(abs))
25
+ return;
26
+ seen.add(abs);
27
+ out.push({ file: abs, display, action });
28
+ };
29
+ for (const { file, action } of planAgentAlignment(opts.cwd))
30
+ add(path.join(opts.cwd, file), file, action);
31
+ for (const editor of opts.editors) {
32
+ for (const file of mcpConfigFiles(editor)) {
33
+ add(file, homeDisplay(file, home), existsSync(file) ? 'modify' : 'create');
34
+ }
35
+ }
36
+ return out;
37
+ }
38
+ /**
39
+ * "may": the list is every file a writer CAN touch. A writer leaves its file as found when it is a
40
+ * symlink or the entry in it belongs to a team, and that is decided inside the writer while it runs
41
+ * (agent-rules.ts, mcp-setup.ts), so it cannot be asked ahead of time without a second copy of the rule.
42
+ */
43
+ export const WRITE_PLAN_HEADING = 'Align may create or change these files:';
44
+ /** The list, one file per line. Plain text so the same lines print on a terminal and in a log. */
45
+ export function renderWritePlan(files) {
46
+ const width = Math.max(...files.map((f) => f.action.length));
47
+ return [WRITE_PLAN_HEADING, ...files.map((f) => ` ${f.action.padEnd(width)} ${f.display}`)].join('\n');
48
+ }
49
+ /**
50
+ * Shown with the list, before the question. `align use --undo` replays the write manifest, which
51
+ * records the project files AND each agent's own config (write-confirm.test.ts pins both), so one
52
+ * command covers every file listed. `align mcp --remove` also works, but only for the agent configs.
53
+ */
54
+ export const WRITE_UNDO_LINE = 'The first copy of any file that already exists is kept. Undo any time: align use --undo (it covers every file listed, project and agent config alike)';
55
+ export const WRITE_CONFIRM_QUESTION = 'Continue?';
56
+ /**
57
+ * Show the list, then ask. The list prints on EVERY run, so a scripted run leaves a record of
58
+ * what it touched. The question is asked only with a person at a terminal and without
59
+ * --approve; otherwise the run goes ahead, as it did before the prompt existed.
60
+ * Returns false only when the person says no (or cancels).
61
+ */
62
+ export async function confirmWrites(opts) {
63
+ if (opts.files.length === 0)
64
+ return true;
65
+ opts.print(`${renderWritePlan(opts.files)}\n${WRITE_UNDO_LINE}`);
66
+ if (!opts.interactive || opts.approve)
67
+ return true;
68
+ return (await opts.ask(WRITE_CONFIRM_QUESTION)) === true;
69
+ }
70
+ //# sourceMappingURL=write-confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-confirm.js","sourceRoot":"","sources":["../../src/lib/write-confirm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aligndottech/cli",
3
- "version": "0.63.0",
3
+ "version": "0.64.1",
4
4
  "mcpName": "io.github.aligndottech/cli",
5
5
  "type": "module",
6
6
  "description": "Align CLI - capture decisions, check alignment, and manage connectors",
@@ -70,13 +70,13 @@
70
70
  "vitest": "^3.2.4"
71
71
  },
72
72
  "overrides": {
73
- "hono": "4.13.7",
73
+ "hono": "4.13.13",
74
74
  "@hono/node-server": "1.19.17",
75
- "undici": "6.28.1",
76
- "fast-uri": "3.1.7",
77
- "ip-address": "10.7.0",
78
- "qs": "6.16.0",
79
- "body-parser": "2.3.0",
75
+ "undici": "6.29.1",
76
+ "fast-uri": "3.1.9",
77
+ "ip-address": "10.7.4",
78
+ "qs": "6.16.1",
79
+ "body-parser": "2.4.0",
80
80
  "onnxruntime-node": "1.30.0"
81
81
  },
82
82
  "engines": {