@aligndottech/cli 0.37.1 → 0.38.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 (179) 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 +94 -41
  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 +52 -10
  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/commands-doc.d.ts +15 -0
  78. package/dist/lib/commands-doc.d.ts.map +1 -0
  79. package/dist/lib/commands-doc.js +85 -0
  80. package/dist/lib/commands-doc.js.map +1 -0
  81. package/dist/lib/config.d.ts +7 -2
  82. package/dist/lib/config.d.ts.map +1 -1
  83. package/dist/lib/config.js.map +1 -1
  84. package/dist/lib/connect-prompt.d.ts +1 -1
  85. package/dist/lib/connect-prompt.js +2 -2
  86. package/dist/lib/connect-prompt.js.map +1 -1
  87. package/dist/lib/decision-links.d.ts +39 -0
  88. package/dist/lib/decision-links.d.ts.map +1 -1
  89. package/dist/lib/decision-links.js +51 -0
  90. package/dist/lib/decision-links.js.map +1 -1
  91. package/dist/lib/first-decision.d.ts +22 -0
  92. package/dist/lib/first-decision.d.ts.map +1 -0
  93. package/dist/lib/first-decision.js +22 -0
  94. package/dist/lib/first-decision.js.map +1 -0
  95. package/dist/lib/gateway-client.d.ts +14 -1
  96. package/dist/lib/gateway-client.d.ts.map +1 -1
  97. package/dist/lib/gateway-client.js +14 -0
  98. package/dist/lib/gateway-client.js.map +1 -1
  99. package/dist/lib/git.d.ts +28 -0
  100. package/dist/lib/git.d.ts.map +1 -1
  101. package/dist/lib/git.js +42 -0
  102. package/dist/lib/git.js.map +1 -1
  103. package/dist/lib/hook-context.d.ts +7 -0
  104. package/dist/lib/hook-context.d.ts.map +1 -0
  105. package/dist/lib/hook-context.js +37 -0
  106. package/dist/lib/hook-context.js.map +1 -0
  107. package/dist/lib/hook-payload.d.ts +7 -0
  108. package/dist/lib/hook-payload.d.ts.map +1 -1
  109. package/dist/lib/hook-payload.js +56 -8
  110. package/dist/lib/hook-payload.js.map +1 -1
  111. package/dist/lib/invite-prompt.d.ts +46 -0
  112. package/dist/lib/invite-prompt.d.ts.map +1 -0
  113. package/dist/lib/invite-prompt.js +63 -0
  114. package/dist/lib/invite-prompt.js.map +1 -0
  115. package/dist/lib/local-gateway-client.d.ts +0 -1
  116. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  117. package/dist/lib/local-gateway-client.js +5 -2
  118. package/dist/lib/local-gateway-client.js.map +1 -1
  119. package/dist/lib/mcp-instructions.shared.d.ts +40 -0
  120. package/dist/lib/mcp-instructions.shared.d.ts.map +1 -0
  121. package/dist/lib/mcp-instructions.shared.js +56 -0
  122. package/dist/lib/mcp-instructions.shared.js.map +1 -0
  123. package/dist/lib/mcp-setup.d.ts +32 -2
  124. package/dist/lib/mcp-setup.d.ts.map +1 -1
  125. package/dist/lib/mcp-setup.js +92 -6
  126. package/dist/lib/mcp-setup.js.map +1 -1
  127. package/dist/lib/next-step.d.ts +92 -0
  128. package/dist/lib/next-step.d.ts.map +1 -0
  129. package/dist/lib/next-step.js +116 -0
  130. package/dist/lib/next-step.js.map +1 -0
  131. package/dist/lib/personal-email-domains.d.ts +8 -0
  132. package/dist/lib/personal-email-domains.d.ts.map +1 -0
  133. package/dist/lib/personal-email-domains.js +39 -0
  134. package/dist/lib/personal-email-domains.js.map +1 -0
  135. package/dist/lib/personal-import.d.ts +2 -0
  136. package/dist/lib/personal-import.d.ts.map +1 -1
  137. package/dist/lib/personal-import.js +4 -1
  138. package/dist/lib/personal-import.js.map +1 -1
  139. package/dist/lib/read-value-rollup.d.ts +18 -0
  140. package/dist/lib/read-value-rollup.d.ts.map +1 -0
  141. package/dist/lib/read-value-rollup.js +33 -0
  142. package/dist/lib/read-value-rollup.js.map +1 -0
  143. package/dist/lib/sessions/import-summary.d.ts +39 -0
  144. package/dist/lib/sessions/import-summary.d.ts.map +1 -0
  145. package/dist/lib/sessions/import-summary.js +41 -0
  146. package/dist/lib/sessions/import-summary.js.map +1 -0
  147. package/dist/lib/sessions/memory-files.d.ts +85 -0
  148. package/dist/lib/sessions/memory-files.d.ts.map +1 -0
  149. package/dist/lib/sessions/memory-files.js +235 -0
  150. package/dist/lib/sessions/memory-files.js.map +1 -0
  151. package/dist/lib/sessions/source-url.d.ts +11 -0
  152. package/dist/lib/sessions/source-url.d.ts.map +1 -1
  153. package/dist/lib/sessions/source-url.js +15 -0
  154. package/dist/lib/sessions/source-url.js.map +1 -1
  155. package/dist/lib/setup-funnel.d.ts +41 -0
  156. package/dist/lib/setup-funnel.d.ts.map +1 -0
  157. package/dist/lib/setup-funnel.js +28 -0
  158. package/dist/lib/setup-funnel.js.map +1 -0
  159. package/dist/lib/telemetry-consent.d.ts +17 -8
  160. package/dist/lib/telemetry-consent.d.ts.map +1 -1
  161. package/dist/lib/telemetry-consent.js +21 -6
  162. package/dist/lib/telemetry-consent.js.map +1 -1
  163. package/dist/lib/telemetry-env.d.ts +19 -0
  164. package/dist/lib/telemetry-env.d.ts.map +1 -0
  165. package/dist/lib/telemetry-env.js +13 -0
  166. package/dist/lib/telemetry-env.js.map +1 -0
  167. package/dist/lib/usage-telemetry.d.ts +108 -13
  168. package/dist/lib/usage-telemetry.d.ts.map +1 -1
  169. package/dist/lib/usage-telemetry.js +227 -55
  170. package/dist/lib/usage-telemetry.js.map +1 -1
  171. package/dist/lib/user-hooks.d.ts +15 -0
  172. package/dist/lib/user-hooks.d.ts.map +1 -0
  173. package/dist/lib/user-hooks.js +144 -0
  174. package/dist/lib/user-hooks.js.map +1 -0
  175. package/dist/lib/value-rollup.d.ts +10 -3
  176. package/dist/lib/value-rollup.d.ts.map +1 -1
  177. package/dist/lib/value-rollup.js +11 -4
  178. package/dist/lib/value-rollup.js.map +1 -1
  179. package/package.json +2 -1
@@ -10,17 +10,21 @@ import { createConfigStore } from '../lib/config.js';
10
10
  import { createGatewayClient } from '../lib/gateway-client.js';
11
11
  import { detectEditors, removeMcpConfig, writeMcpConfig } from '../lib/mcp-setup.js';
12
12
  import { commandIntro } from '../lib/brand.js';
13
- // Server-level instructions (ALI-120): surfaced to the agent so it reaches for
14
- // Align proactively - without the user prompting - the moment this MCP server is
15
- // connected. Kept well under the ~2KB Claude Code truncates server instructions to.
16
- export const ALIGN_MCP_INSTRUCTIONS = `Align is this team's decision graph - the source of truth for what was decided, why, and who decided it. Use these tools proactively, without being asked:
17
-
18
- - BEFORE writing or changing non-trivial code, call align_check_alignment with the proposed change. A "conflict" result means a past decision opposes the change - STOP and confirm with the user before proceeding.
19
- - An "unknown" status means the check could NOT run (no LLM key, a timeout, unreadable output). It is NOT a pass and NOT "no conflicts found" - the related decisions it returns are unchecked. STOP and ask the human rather than proceeding.
20
- - When the user asks "why", "how does X work", or "what was decided about Y" - or you're unsure of a convention - call align_ask (or align_search) first. The answer, its status (active/conflicted), and the person who decided it are in the graph.
21
- - Use align_get_conflicts and align_get_related_decisions to understand context and surface who to talk to.
22
- - Prefer the graph over guessing: it reflects decisions made across Slack, Jira, GitHub, Linear and more that may not be in the code or docs.
23
- - Cite a decision by its cite value when present, and link it whenever the field exists: decision_url opens it in Align; source_url is wherever it was actually decided - a GitHub PR, a Jira/Linear ticket, a Slack or Teams thread. Never name a decision as bare text when either link is available, and never present one URL as the other.`;
13
+ import { recordFunnelStage } from '../lib/usage-telemetry.js';
14
+ import { inviteNudgeLine } from '../lib/invite-prompt.js';
15
+ import { renderMcpInstructions } from '../lib/mcp-instructions.shared.js';
16
+ // Server-level instructions (ALI-120): surfaced to the agent so it reaches for Align
17
+ // proactively - without the user prompting - the moment this MCP server is connected.
18
+ //
19
+ // ONE text with the hosted server (ALI-952): the shared body lives in
20
+ // mcp-instructions.shared.ts, byte-identical to align-stack's copy and pinned by
21
+ // mcp-instructions-parity.test.ts. This server only supplies its names for the shared
22
+ // tokens. It has no per-server lines: every tool it exposes is one the hosted server also
23
+ // has, and the hosted-only tools (check_proposed_action, rate_conflict, coach,
24
+ // get_topic_timeline) are appended on that side. The graph-identity suffix below is added
25
+ // per environment by instructionsFor, and the whole rendered text stays under the ~2KB
26
+ // Claude Code truncates server instructions to (mcp-graph-identity.test.ts).
27
+ export const ALIGN_MCP_INSTRUCTIONS = renderMcpInstructions({ check_alignment: 'align_check_alignment', search: 'align_ask' }, []);
24
28
  /**
25
29
  * Which decision graph THIS server reads, appended to the base instructions.
26
30
  *
@@ -57,8 +61,16 @@ export function instructionsFor(env) {
57
61
  */
58
62
  export function toolSchemasFor(env) {
59
63
  const local = env.mode === 'local-embedded';
64
+ // ALI-1063 follow-up: local-embedded search cannot report whether a matched decision has
65
+ // been superseded (see local-gateway-client.ts - decision_links only ever holds an untyped
66
+ // 'relates' edge locally, never a typed supersedes/contradicts one). Rather than staying
67
+ // silent about that gap, tell the agent what to do instead: when two results cover the
68
+ // same topic, the newer decided_at/created_at is the one more likely to still hold.
60
69
  const suffix = local
61
- ? ' Searches the LOCAL decision graph on this machine, not a hosted Align tenant.'
70
+ ? ' Searches the LOCAL decision graph on this machine, not a hosted Align tenant. ' +
71
+ "This local graph does not track whether a decision has been superseded - if two " +
72
+ 'results cover the same topic, prefer the one with the most recent decided_at or ' +
73
+ 'created_at. That is a heuristic, not a verified status.'
62
74
  : ` Searches the hosted Align graph at ${env.gatewayUrl}.`;
63
75
  return TOOL_SCHEMAS.map(tool => tool.name === 'align_ask' || tool.name === 'align_search'
64
76
  ? { ...tool, description: tool.description + suffix }
@@ -93,12 +105,14 @@ export async function dispatchTool(name, args, client, env) {
93
105
  'set to a non-empty value.');
94
106
  }
95
107
  switch (name) {
108
+ // ONE arm for both names (ALI-952). align_search is the alias of align_ask: they were two
109
+ // entries for the same gateway call with two dispatch arms that had already drifted
110
+ // (align_search passed no limit, align_ask defaulted to 8). The question is passed
111
+ // through unchanged so the gateway's smart-search strategy selector can route it to
112
+ // semantic search (ALI-105); align_search's `query` is the same text under the old name.
96
113
  case 'align_search':
97
- return client.searchDecisions(args?.['query'], args?.['limit']);
98
114
  case 'align_ask':
99
- // Pass the question through unchanged so the gateway's smart-search strategy
100
- // selector can route it to semantic search. See ALI-105.
101
- return client.searchDecisions(args?.['question'], args?.['limit'] ?? 8);
115
+ return client.searchDecisions((args?.['question'] ?? args?.['query']), args?.['limit'] ?? 8);
102
116
  case 'align_capture': {
103
117
  const input = args?.['input'];
104
118
  let platform = 'cli';
@@ -138,22 +152,63 @@ export async function dispatchTool(name, args, client, env) {
138
152
  throw new Error(`Unknown tool: ${name}`);
139
153
  }
140
154
  }
155
+ /**
156
+ * ALI-949: did this tool call hand the agent a real answer from the graph? The three tools
157
+ * an agent reaches for to GET something (ask, search, check) count; a non-empty conflicts
158
+ * list or an impact graph does not - those are follow-ups, not the first useful decision.
159
+ * A check whose status is `no-context` or `unknown` found nothing or could not run
160
+ * (ALI-414: not a pass), so it is not useful either.
161
+ */
162
+ export function isFirstUsefulToolResult(name, result) {
163
+ if (name === 'align_ask' || name === 'align_search') {
164
+ const results = result?.results;
165
+ return Array.isArray(results) && results.length > 0;
166
+ }
167
+ if (name === 'align_check_alignment') {
168
+ const status = result?.status;
169
+ return status === 'aligned' || status === 'conflicting' || status === 'retrieved';
170
+ }
171
+ return false;
172
+ }
173
+ /**
174
+ * The MCP CallTool handler `align mcp` installs, extracted so the funnel emission is
175
+ * testable without standing up a Server (mcp-first-useful.test.ts). dispatchTool stays the
176
+ * pure router; this is the one place a tool call has a side effect beyond its result.
177
+ *
178
+ * first_useful_decision fired only from a non-empty `align ask` before ALI-949, so an agent
179
+ * asking through this server never counted - and the phases after that ticket exist to
180
+ * make the agent the usual asker. The once-per-install guard is recordFunnelStage's, shared
181
+ * with `align ask`; fired without await so the tool response never waits on telemetry.
182
+ */
183
+ export function createCallToolHandler(client, env) {
184
+ return async (request) => {
185
+ const { name, arguments: args } = request.params;
186
+ const result = await dispatchTool(name, args, client, env);
187
+ if (isFirstUsefulToolResult(name, result)) {
188
+ void recordFunnelStage(env, 'first_useful_decision', 'mcp');
189
+ }
190
+ return { content: [{ type: 'text', text: serializeMcpResult(result) }] };
191
+ };
192
+ }
193
+ // Order is the ranking an agent reads off tools/list, so the pre-flight check leads (ALI-139,
194
+ // prescription over retrieval; ALI-952 moved it here from fourth). The hosted server
195
+ // (align-stack mcpServer.ts) registers check_alignment first for the same reason.
141
196
  export const TOOL_SCHEMAS = [
142
197
  {
143
- name: 'align_search',
144
- description: 'Search the Align decision graph for relevant decisions, architectural choices, and past resolutions',
198
+ name: 'align_check_alignment',
199
+ description: 'BEFORE writing or changing significant code, call this with the proposed change to surface prior decisions across ALL the user\'s tools (Slack, Jira, GitHub, git) that it conflicts with or relates to. A "conflict" status means the change opposes a past decision - stop and confirm with the user before proceeding. An "unknown" status means the check could not run and is NOT a pass: the decisions it returns are unchecked, so stop and ask the human rather than treating it as clear.',
145
200
  inputSchema: {
146
201
  type: 'object',
147
202
  properties: {
148
- query: { type: 'string', description: 'Search query' },
149
- limit: { type: 'number', description: 'Max results (default: 10)', default: 10 },
203
+ diff: { type: 'string', description: 'Git diff or description of proposed change' },
204
+ context: { type: 'string', description: 'Additional context (branch name, PR title)' },
150
205
  },
151
- required: ['query'],
206
+ required: ['diff'],
152
207
  },
153
208
  },
154
209
  {
155
210
  name: 'align_ask',
156
- description: 'Ask a natural language question and get answers from the decision graph. Use this when the user asks "how", "what was decided about", or any question about past decisions. Prefer this over align_search for natural language questions.',
211
+ description: 'Ask a natural language question and get answers from the decision graph. Use this when the user asks "how", "what was decided about", or any question about past decisions.',
157
212
  inputSchema: {
158
213
  type: 'object',
159
214
  properties: {
@@ -164,26 +219,26 @@ export const TOOL_SCHEMAS = [
164
219
  },
165
220
  },
166
221
  {
167
- name: 'align_capture',
168
- description: 'Capture a decision from ANY tool - a Slack thread, Jira ticket, GitHub PR, Confluence/doc URL, or raw text. Call this whenever a decision gets made in conversation so the cross-tool decision graph stays current and relationships across tools can be detected.',
222
+ name: 'align_search',
223
+ description: 'Alias of align_ask: the same search of the decision graph, taking the text as `query`. Kept for callers that already use this name; prefer align_ask.',
169
224
  inputSchema: {
170
225
  type: 'object',
171
226
  properties: {
172
- input: { type: 'string', description: 'URL or text content of the decision to capture' },
227
+ query: { type: 'string', description: 'Search query' },
228
+ limit: { type: 'number', description: 'Max results (default: 8)', default: 8 },
173
229
  },
174
- required: ['input'],
230
+ required: ['query'],
175
231
  },
176
232
  },
177
233
  {
178
- name: 'align_check_alignment',
179
- description: 'BEFORE writing or changing significant code, call this with the proposed change to surface prior decisions across ALL the user\'s tools (Slack, Jira, GitHub, git) that it conflicts with or relates to. A "conflict" status means the change opposes a past decision - stop and confirm with the user before proceeding. An "unknown" status means the check could not run and is NOT a pass: the decisions it returns are unchecked, so stop and ask the human rather than treating it as clear.',
234
+ name: 'align_capture',
235
+ description: 'Capture a decision from ANY tool - a Slack thread, Jira ticket, GitHub PR, Confluence/doc URL, or raw text. Call this whenever a decision gets made in conversation so the cross-tool decision graph stays current and relationships across tools can be detected.',
180
236
  inputSchema: {
181
237
  type: 'object',
182
238
  properties: {
183
- diff: { type: 'string', description: 'Git diff or description of proposed change' },
184
- context: { type: 'string', description: 'Additional context (branch name, PR title)' },
239
+ input: { type: 'string', description: 'URL or text content of the decision to capture' },
185
240
  },
186
- required: ['diff'],
241
+ required: ['input'],
187
242
  },
188
243
  },
189
244
  {
@@ -265,14 +320,12 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
265
320
  const client = createGatewayClient(env);
266
321
  const server = new Server({ name: 'align', version }, { capabilities: { tools: {} }, instructions: instructionsFor(env) });
267
322
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: toolSchemasFor(env) }));
268
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
269
- const { name, arguments: args } = request.params;
270
- const result = await dispatchTool(name, args, client, env);
271
- return { content: [{ type: 'text', text: serializeMcpResult(result) }] };
272
- });
323
+ server.setRequestHandler(CallToolRequestSchema, createCallToolHandler(client, env));
273
324
  // MCP protocol requires clean stdout; log startup to stderr
274
325
  process.stderr.write(`align mcp server started (env: ${resolvedEnv}, gateway: ${env.gatewayUrl})\n`);
275
- process.stderr.write('Want your whole team to have this context? https://align.tech/pricing\n');
326
+ // ALI-938: a URL asks someone to go figure it out later; the invite command is
327
+ // something they can act on right there. See invite-prompt.ts.
328
+ process.stderr.write(`${inviteNudgeLine('value')}\n`);
276
329
  const transport = new StdioServerTransport();
277
330
  await server.connect(transport);
278
331
  });
@@ -300,7 +353,7 @@ async function runMcpRemove() {
300
353
  try {
301
354
  if (removeMcpConfig(target)) {
302
355
  removed++;
303
- p.log.success(`${target.name}: align removed from ${target.configPath}`);
356
+ p.log.success(`${target.name}: align removed from ${[target.configPath, target.hooks?.path].filter(Boolean).join(' and ')}`);
304
357
  }
305
358
  else {
306
359
  // Said explicitly rather than silently skipped: "nothing happened" and "it was never
@@ -345,14 +398,14 @@ async function runMcpSetup(env) {
345
398
  const spinner = p.spinner();
346
399
  spinner.start(`Configuring ${name}...`);
347
400
  try {
348
- writeMcpConfig(target, env === 'prod' || !env ? undefined : env);
349
- spinner.stop(`${name}: align added to MCP servers`);
401
+ const files = writeMcpConfig(target, env === 'prod' || !env ? undefined : env);
402
+ spinner.stop(`${name}: align added to MCP servers${target.hooks ? ', pre-edit check hooked' : ''} (${files.join(', ')})`);
350
403
  }
351
404
  catch (err) {
352
405
  spinner.stop(`${name}: failed - ${err.message}`);
353
406
  }
354
407
  }
355
- const outroText = `${chalk.green('Done.\n\n')}Restart your editor, then ask:\n${chalk.dim(' "What has my team decided about authentication?"\n\n')}${chalk.dim('Want your whole team to have this context? https://align.tech/pricing')}`;
408
+ const outroText = `${chalk.green('Done.\n\n')}Restart your editor, then ask:\n${chalk.dim(' "What has my team decided about authentication?"\n\n')}${chalk.dim(inviteNudgeLine('value'))}`;
356
409
  p.outro(outroText);
357
410
  }
358
411
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAwC,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AACpF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;gVAO0S,CAAC;AAEjV;;;;;;;;;;;GAWG;AACH,SAAS,aAAa,CAAC,GAAsB;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAClC,OAAO,CACL,4FAA4F;YAC5F,4FAA4F;YAC5F,6FAA6F;YAC7F,qBAAqB,CACtB,CAAC;IACJ,CAAC;IACD,wFAAwF;IACxF,mDAAmD;IACnD,OAAO,mDAAmD,GAAG,CAAC,UAAU,GAAG,CAAC;AAC9E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,GAAsB;IACpD,OAAO,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAsB;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK;QAClB,CAAC,CAAC,gFAAgF;QAClF,CAAC,CAAC,uCAAuC,GAAG,CAAC,UAAU,GAAG,CAAC;IAC7D,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAC7B,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;QACvD,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE;QACrD,CAAC,CAAC,IAAI,CACT,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;AAErG,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,qFAAqF;AACrF,iFAAiF;AACjF,qFAAqF;AACrF,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAyC,EACzC,MAA8C,EAC9C,GAAsB;IAEtB,mFAAmF;IACnF,mFAAmF;IACnF,oFAAoF;IACpF,sFAAsF;IACtF,wFAAwF;IACxF,gFAAgF;IAChF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAE1C,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,aAAa,KAAK,wBAAwB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,GAAG;YAC5G,2BAA2B,CAC5B,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAW,EAAE,IAAI,EAAE,CAAC,OAAO,CAAuB,CAAC,CAAC;QAClG,KAAK,WAAW;YACd,6EAA6E;YAC7E,yDAAyD;YACzD,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,UAAU,CAAW,EAAG,IAAI,EAAE,CAAC,OAAO,CAAwB,IAAI,CAAC,CAAC,CAAC;QAC5G,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,OAAO,CAAW,CAAC;YACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,QAAQ,GAAG,KAAK,CAAC;gBACjB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,QAAQ,GAAG,OAAO,CAAC;qBACnD,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,QAAQ,GAAG,MAAM,CAAC;qBAC5D,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;oBAAE,QAAQ,GAAG,YAAY,CAAC;qBAChE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,QAAQ,GAAG,QAAQ,CAAC;qBAC1D,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,QAAQ,GAAG,QAAQ,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;gBACpG,CAAC;gBACD,iEAAiE;YACnE,CAAC;YACD,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,KAAK,uBAAuB;YAC1B,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,CAAW,EAAE,IAAI,EAAE,CAAC,SAAS,CAAuB,CAAC,CAAC;QAClG,KAAK,mBAAmB;YACtB,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,aAAa,CAAW,EAAE,IAAI,EAAE,CAAC,SAAS,CAAW,EAAE,IAAI,EAAE,CAAC,aAAa,CAAuB,CAAC,CAAC;QACtI,KAAK,kBAAkB;YACrB,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,aAAa,CAAW,CAAC,CAAC;QAC3D,KAAK,qBAAqB;YACxB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/B,KAAK,6BAA6B;YAChC,OAAO,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,EAAE,CAAC,WAAW,CAAW,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAClG;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qGAAqG;QAClH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;gBACtD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,OAAO,EAAE,EAAE,EAAE;aACjF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,2OAA2O;QACxP,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+HAA+H,EAAE;gBAC1K,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC,EAAE;aAC/E;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,oQAAoQ;QACjR,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;aACzF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,oeAAoe;QACjf,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;gBACnF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;aACvF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;gBACnF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;aAC7F;YACD,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;SACrC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;aACvE;YACD,QAAQ,EAAE,CAAC,aAAa,CAAC;SAC1B;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,wQAAwQ;QAC1Q,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,gNAAgN;QAC7N,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACtE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;aACpE;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,mHAAmH,CAAC;SAChI,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,+EAA+E,CAAC;SAClG,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;SAC3D,MAAM,CAAC,UAAU,EAAE,4CAA4C,CAAC;SAChE,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC;SACG,MAAM,CAAC,KAAK,EAAE,IAA4E,EAAE,EAAE;QAC7F,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,iFAAiF;QACjF,kFAAkF;QAClF,oFAAoF;QACpF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1B,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CACpE,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,4DAA4D;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,WAAW,cAAc,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC;QACrG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAEhG,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,YAAY;IACzB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACpF,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;gBACV,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,wBAAwB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,qFAAqF;gBACrF,uEAAuE;gBACvE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,qCAAqC,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,CAAC,CAAC,KAAK,CACL,OAAO,GAAG,CAAC;QACT,CAAC,CAAC,gBAAgB,OAAO,SAAS,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,0BAA0B,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,gBAAgB;QAClI,CAAC,CAAC,oBAAoB,CACzB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAa;IACtC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,gFAAgF;YAChF,6DAA6D;YAC7D,oEAAoE,OAAO,SAAS,CACrF,CAAC;QACF,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO;IACT,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChF,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC;QACnC,OAAO,EAAE,iDAAiD;QAC1D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEtE,KAAK,MAAM,IAAI,IAAI,QAAoB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC;QACnD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,cAAc,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,cAAe,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAmC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,EAAE,CAAC;IAC3O,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ratify.d.ts","sourceRoot":"","sources":["../../src/commands/ratify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C5D"}
1
+ {"version":3,"file":"ratify.d.ts","sourceRoot":"","sources":["../../src/commands/ratify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8D5D"}
@@ -4,6 +4,7 @@ import { createConfigStore } from '../lib/config.js';
4
4
  import { createGatewayClient } from '../lib/gateway-client.js';
5
5
  import { resolveLocalIdentity } from '../lib/git.js';
6
6
  import { resolveEnv } from '../lib/resolve-env.js';
7
+ import { recordFunnelStage } from '../lib/usage-telemetry.js';
7
8
  export function registerRatifyCommand(program) {
8
9
  program
9
10
  .command('ratify <id>')
@@ -33,6 +34,26 @@ export function registerRatifyCommand(program) {
33
34
  console.log(chalk.yellow(`\n Already ratified by ${res.ratifiedBy ?? 'a human'}${when}. The first ratification stands.\n`));
34
35
  return;
35
36
  }
37
+ // ALI-835: decisions_ratified is emitted HERE rather than from `align import sessions`,
38
+ // because this is where the number moves. At import it could only ever be 0 - the
39
+ // import writes claims and ratifying is a separate human act - and a stage that is
40
+ // always zero measures nothing while looking like a measurement.
41
+ //
42
+ // Only a first ratification counts: the already-ratified branch above returns before
43
+ // this line, so a repeat `align ratify` on the same id is not a second act. The count
44
+ // is 1 because one ratification is one human decision; the funnel sums them.
45
+ //
46
+ // This command already refuses a hook, a pipe and an agent shell (it requires a TTY on
47
+ // stdin), so a ping from here is a human by construction - the hook guard in
48
+ // recordFunnelStage is the belt to that braces.
49
+ //
50
+ // Sent with NO measurement, deliberately. The gateway makes count and agent optional,
51
+ // and a ratification has no agent: it is a person standing behind a claim, whatever
52
+ // wrote it. Filling the field with a plausible agent name to satisfy the shape would
53
+ // put a fabricated dimension in the scoreboard, which is worse than an absent one -
54
+ // a null says "unknown" and a wrong name is indistinguishable from a measurement.
55
+ // The stage's own occurrences are the count; the funnel sums them.
56
+ void recordFunnelStage(config.getEnvironment(envName), 'decisions_ratified', 'ratify');
36
57
  console.log(chalk.green(`\n Ratified by ${res.ratifiedBy ?? ratifiedBy}.`));
37
58
  if (envName === 'local') {
38
59
  console.log(chalk.dim(` It now reads as governing in .align/decisions.md and to the local MCP server.`));
@@ -1 +1 @@
1
- {"version":3,"file":"ratify.js","sourceRoot":"","sources":["../../src/commands/ratify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ratify.js","sourceRoot":"","sources":["../../src/commands/ratify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * ALI-951: the one list of top-level commands. `align --help` shows the `visible` ones and
4
+ * nothing else; every other command still parses and runs, and docs/commands.md (generated
5
+ * from this list by `npm run docs:commands`) is where it is documented. A register function
6
+ * that adds a command this list does not name fails help-tiers.test.ts, so a new command
7
+ * cannot land without choosing visible or hidden.
8
+ *
9
+ * Measured before this list existed (origin/main 279672f): 24 visible top-level commands,
10
+ * 29 subcommands, 137 flags, `align --help` 54 lines. Commands kept being added after
11
+ * ALI-773's "20-command wall" complaint (ratify, push, invite), because nothing said which
12
+ * tier a new one belonged to.
13
+ */
14
+ export interface CommandEntry {
15
+ /** The top-level command names this register function adds (login.ts adds three). */
16
+ names: string[];
17
+ /** Shown by `align --help`. Everything else is hidden there and documented instead. */
18
+ visible: boolean;
19
+ /** One line for `align --help` and the doc's everyday section, so those never carry
20
+ * Commander's paragraph-long descriptions. */
21
+ summary: string;
22
+ /** Registered only under ALIGN_INTERNAL=1 (Align team local dev). */
23
+ internal?: true;
24
+ register: (program: Command) => void;
25
+ }
26
+ export declare const COMMAND_REGISTRY: readonly CommandEntry[];
27
+ /** The root itself, listed first in `align --help`: bare `align` is the product. */
28
+ export declare const ROOT_SUMMARY = "Set up, or see your graph and what to do next";
29
+ export declare function visibleEntries(): CommandEntry[];
30
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uFAAuF;IACvF,OAAO,EAAE,OAAO,CAAC;IACjB;mDAC+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EA8CnD,CAAC;AAEF,oFAAoF;AACpF,eAAO,MAAM,YAAY,kDAAkD,CAAC;AAE5E,wBAAgB,cAAc,IAAI,YAAY,EAAE,CAE/C"}
@@ -0,0 +1,70 @@
1
+ import { registerLoginCommands } from './login.js';
2
+ import { registerCaptureCommand } from './capture.js';
3
+ import { registerImportCommand } from './import.js';
4
+ import { registerSearchCommand } from './search.js';
5
+ import { registerCheckCommand } from './check.js';
6
+ import { registerAdjudicateCommand } from './adjudicate.js';
7
+ import { registerRatifyCommand } from './ratify.js';
8
+ import { registerPushCommand } from './push.js';
9
+ import { registerMcpCommand } from './mcp.js';
10
+ import { registerLocalCommand } from './local.js';
11
+ import { registerDecisionsCommand } from './decisions/index.js';
12
+ import { registerConnectorCommands } from './connector/index.js';
13
+ import { registerDevCommands } from './dev/index.js';
14
+ import { registerSpacesCommand } from './spaces.js';
15
+ import { registerLinksCommand } from './links.js';
16
+ import { registerDriftCommand } from './drift.js';
17
+ import { registerStatusCommand } from './status.js';
18
+ import { registerContextCommand } from './context.js';
19
+ import { registerEnvCommand } from './env.js';
20
+ import { registerTelemetryCommand } from './telemetry.js';
21
+ import { registerAskCommand } from './why.js';
22
+ import { registerSetupCommand } from './setup.js';
23
+ import { registerExportCommand } from './export.js';
24
+ import { registerInviteCommand } from './invite.js';
25
+ export const COMMAND_REGISTRY = [
26
+ // Environment targeting
27
+ { names: ['env'], visible: false, summary: 'Set or show the default environment', register: registerEnvCommand },
28
+ { names: ['telemetry'], visible: false, summary: 'Usage telemetry on, off, status', register: registerTelemetryCommand },
29
+ // Auth + onboarding
30
+ { names: ['login', 'logout', 'whoami'], visible: false, summary: 'Cloud account sign-in', register: registerLoginCommands },
31
+ { names: ['setup'], visible: false, summary: 'Guided onboarding (bare `align` runs it)', register: registerSetupCommand },
32
+ { names: ['invite'], visible: false, summary: 'Invite a teammate to your graph', register: registerInviteCommand },
33
+ // Customer: ask, then connect - the order `align --help` shows them in.
34
+ { names: ['ask'], visible: true, summary: 'Ask your decision graph, with sources', register: registerAskCommand },
35
+ { names: ['capture'], visible: false, summary: 'Capture one decision from a URL', register: registerCaptureCommand },
36
+ {
37
+ names: ['connect'],
38
+ visible: true,
39
+ summary: 'Connect a source and import its decisions',
40
+ register: registerImportCommand,
41
+ },
42
+ // Customer: search + query
43
+ { names: ['search'], visible: false, summary: 'Keyword search, ranked list', register: registerSearchCommand },
44
+ { names: ['decisions'], visible: false, summary: 'List and show decisions', register: registerDecisionsCommand },
45
+ { names: ['export'], visible: false, summary: 'Export decisions as a brief or JSON', register: registerExportCommand },
46
+ { names: ['spaces'], visible: false, summary: 'List spaces (cloud)', register: registerSpacesCommand },
47
+ { names: ['links'], visible: false, summary: 'Cross-tool decision relationships', register: registerLinksCommand },
48
+ { names: ['drift'], visible: false, summary: 'Decisions that may be out of date (cloud)', register: registerDriftCommand },
49
+ { names: ['status'], visible: false, summary: 'What your graph has done for you', register: registerStatusCommand },
50
+ { names: ['context'], visible: false, summary: 'Write decisions to .align/decisions.md', register: registerContextCommand },
51
+ // Customer: CI/alignment check
52
+ { names: ['check'], visible: true, summary: 'Check your changes against the graph', register: registerCheckCommand },
53
+ { names: ['adjudicate'], visible: false, summary: 'Answer a check the judge declined to rule on', register: registerAdjudicateCommand },
54
+ // ALI-831: agent decisions as claims - the human act, and the per-item promotion after it.
55
+ { names: ['ratify'], visible: false, summary: 'Stand behind an agent-made decision', register: registerRatifyCommand },
56
+ { names: ['push'], visible: false, summary: 'Promote one ratified local decision to the shared graph', register: registerPushCommand },
57
+ // Customer: MCP server
58
+ { names: ['mcp'], visible: true, summary: 'Serve the graph to your agent (--setup wires it)', register: registerMcpCommand },
59
+ // Customer: local-first mode (no cloud account required)
60
+ { names: ['local'], visible: false, summary: 'The local graph: start, status, reset, forget', register: registerLocalCommand },
61
+ // Internal: only registered when ALIGN_INTERNAL=1 (Align team local dev)
62
+ { names: ['connector'], visible: false, summary: 'Connector admin (Align team)', internal: true, register: registerConnectorCommands },
63
+ { names: ['dev'], visible: false, summary: 'Local dev stack (Align team)', internal: true, register: registerDevCommands },
64
+ ];
65
+ /** The root itself, listed first in `align --help`: bare `align` is the product. */
66
+ export const ROOT_SUMMARY = 'Set up, or see your graph and what to do next';
67
+ export function visibleEntries() {
68
+ return COMMAND_REGISTRY.filter((e) => e.visible);
69
+ }
70
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Command } from 'commander';
2
- import { type EnvName } from '../lib/config.js';
2
+ import { createConfigStore, type EnvName } from '../lib/config.js';
3
+ import { createGatewayClient } from '../lib/gateway-client.js';
4
+ import { createCaptureCollector } from '../lib/capture-report.js';
3
5
  /**
4
6
  * The retry command printed when a connector import fails mid-setup (ALI-675).
5
7
  *
@@ -9,6 +11,48 @@ import { type EnvName } from '../lib/config.js';
9
11
  * unmarked default, everything else is explicit.
10
12
  */
11
13
  export declare function importRetryHint(sourceId: string, envName: EnvName): string;
14
+ /**
15
+ * The connector-picker tail, shared by every path that reaches local mode: `--local`
16
+ * directly, the login-declined fallback in runCloudSetup, and (ALI-794) the fresh-install
17
+ * flow after the upgrade question comes back "stay local". Split out of runLocalSetup as a
18
+ * pure extraction - this body is byte-identical to what it replaced, just parameterised on
19
+ * the value phase's result instead of closing over local variables (refactoring.md: a pure
20
+ * move changes only how code is reached, never what it does).
21
+ */
22
+ /** What connectLocalSources did for one source (ALI-951): `align connect --json` prints these. */
23
+ export interface ConnectedSourceResult {
24
+ id: string;
25
+ label: string;
26
+ found: number;
27
+ imported: number;
28
+ /** Set when the fetch threw; found and imported are 0 then. */
29
+ error?: string;
30
+ }
31
+ export interface ConnectLocalSourcesOptions {
32
+ interactive: boolean;
33
+ config: ReturnType<typeof createConfigStore>;
34
+ localEnv: ReturnType<ReturnType<typeof createConfigStore>['getEnvironment']>;
35
+ localClient: ReturnType<typeof createGatewayClient>;
36
+ capture: ReturnType<typeof createCaptureCollector>;
37
+ approve: boolean;
38
+ /** ALI-951 (`align connect --source`): skip the picker and connect exactly these ids. */
39
+ preselected?: string[];
40
+ /** ALI-951 (`align connect --token`): fields that skip the paste for every preselected source. */
41
+ seedTokens?: Record<string, string>;
42
+ /** ALI-951 (`align connect --json`): print nothing per source; the caller prints one summary. */
43
+ json?: boolean;
44
+ }
45
+ /** The ids `align connect --source` accepts: every local paste-token source, in picker order. */
46
+ export declare function localConnectorIds(): string[];
47
+ /**
48
+ * The picker-and-import tail of local setup: ask which read-only-token sources to connect,
49
+ * collect every credential up front, then fetch and import each one. Extracted from
50
+ * runLocalConnectorPhase for `align connect` (ALI-951), which is this same flow without the
51
+ * wizard around it - one picker, one paste path, one save rule, in one place. The body is
52
+ * the wizard's; `preselected`, `seedTokens` and `json` are the only additions, and each is
53
+ * inert when absent.
54
+ */
55
+ export declare function connectLocalSources(o: ConnectLocalSourcesOptions): Promise<ConnectedSourceResult[]>;
12
56
  export declare function registerSetupCommand(program: Command): void;
13
57
  /**
14
58
  * The onboarding flow, extracted from the `setup` action so `align` with no arguments can run
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAqB,KAAK,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAgYnF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE1E;AAgdD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,OAAO,CAAC,IAAI,CAAC,CAkDf"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,EAAE,iBAAiB,EAAE,KAAK,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAS/D,OAAO,EAAE,sBAAsB,EAAmB,MAAM,0BAA0B,CAAC;AAyXnF;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE1E;AAkPD;;;;;;;GAOG;AACH,kGAAkG;AAClG,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7E,WAAW,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IACpD,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iGAAiG;IACjG,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAK5C;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAuNzG;AA+ED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,OAAO,CAAC,IAAI,CAAC,CA0Df"}