@aligndottech/cli 0.1.0 → 0.1.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 (67) hide show
  1. package/README.md +180 -40
  2. package/dist/commands/check.d.ts.map +1 -1
  3. package/dist/commands/check.js +25 -15
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/drift.d.ts.map +1 -1
  6. package/dist/commands/drift.js +3 -1
  7. package/dist/commands/drift.js.map +1 -1
  8. package/dist/commands/import/teams.d.ts +3 -0
  9. package/dist/commands/import/teams.d.ts.map +1 -0
  10. package/dist/commands/import/teams.js +42 -0
  11. package/dist/commands/import/teams.js.map +1 -0
  12. package/dist/commands/import/zoom.d.ts +3 -0
  13. package/dist/commands/import/zoom.d.ts.map +1 -0
  14. package/dist/commands/import/zoom.js +39 -0
  15. package/dist/commands/import/zoom.js.map +1 -0
  16. package/dist/commands/import.d.ts.map +1 -1
  17. package/dist/commands/import.js +4 -0
  18. package/dist/commands/import.js.map +1 -1
  19. package/dist/commands/links.d.ts.map +1 -1
  20. package/dist/commands/links.js +4 -0
  21. package/dist/commands/links.js.map +1 -1
  22. package/dist/commands/mcp.d.ts.map +1 -1
  23. package/dist/commands/mcp.js +67 -2
  24. package/dist/commands/mcp.js.map +1 -1
  25. package/dist/commands/setup.d.ts +3 -0
  26. package/dist/commands/setup.d.ts.map +1 -0
  27. package/dist/commands/setup.js +330 -0
  28. package/dist/commands/setup.js.map +1 -0
  29. package/dist/commands/why.d.ts +3 -0
  30. package/dist/commands/why.d.ts.map +1 -0
  31. package/dist/commands/why.js +81 -0
  32. package/dist/commands/why.js.map +1 -0
  33. package/dist/index.js +7 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/fetchers/git.d.ts +5 -0
  36. package/dist/lib/fetchers/git.d.ts.map +1 -0
  37. package/dist/lib/fetchers/git.js +15 -0
  38. package/dist/lib/fetchers/git.js.map +1 -0
  39. package/dist/lib/fetchers/teams.d.ts +6 -0
  40. package/dist/lib/fetchers/teams.d.ts.map +1 -0
  41. package/dist/lib/fetchers/teams.js +62 -0
  42. package/dist/lib/fetchers/teams.js.map +1 -0
  43. package/dist/lib/fetchers/zoom.d.ts +7 -0
  44. package/dist/lib/fetchers/zoom.d.ts.map +1 -0
  45. package/dist/lib/fetchers/zoom.js +60 -0
  46. package/dist/lib/fetchers/zoom.js.map +1 -0
  47. package/dist/lib/gateway-client.d.ts +4 -1
  48. package/dist/lib/gateway-client.d.ts.map +1 -1
  49. package/dist/lib/gateway-client.js +9 -2
  50. package/dist/lib/gateway-client.js.map +1 -1
  51. package/dist/lib/local-llm.d.ts +11 -0
  52. package/dist/lib/local-llm.d.ts.map +1 -0
  53. package/dist/lib/local-llm.js +169 -0
  54. package/dist/lib/local-llm.js.map +1 -0
  55. package/dist/lib/mcp-setup.d.ts +8 -0
  56. package/dist/lib/mcp-setup.d.ts.map +1 -0
  57. package/dist/lib/mcp-setup.js +67 -0
  58. package/dist/lib/mcp-setup.js.map +1 -0
  59. package/dist/lib/personal-import.d.ts +1 -1
  60. package/dist/lib/personal-import.d.ts.map +1 -1
  61. package/dist/lib/personal-import.js +2 -1
  62. package/dist/lib/personal-import.js.map +1 -1
  63. package/dist/lib/why-normalise.d.ts +2 -0
  64. package/dist/lib/why-normalise.d.ts.map +1 -0
  65. package/dist/lib/why-normalise.js +39 -0
  66. package/dist/lib/why-normalise.js.map +1 -0
  67. package/package.json +23 -11
@@ -1 +1 @@
1
- {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C3D"}
1
+ {"version":3,"file":"links.d.ts","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD3D"}
@@ -49,6 +49,10 @@ export function registerLinksCommand(program) {
49
49
  l.confidence.toFixed(1),
50
50
  ];
51
51
  }));
52
+ if (items.length >= 5) {
53
+ console.log(chalk.dim('\n Teams get this as a shared graph with CI drift detection.'));
54
+ console.log(chalk.dim(' https://align.tech/pricing\n'));
55
+ }
52
56
  }
53
57
  catch (err) {
54
58
  spinner.fail(chalk.red(err.message));
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,eAAe,GAA0C;IAC7D,cAAc,EAAE,KAAK,CAAC,GAAG;IACzB,WAAW,EAAE,KAAK,CAAC,GAAG;IACtB,UAAU,EAAE,KAAK,CAAC,MAAM;IACxB,QAAQ,EAAE,KAAK,CAAC,KAAK;IACrB,UAAU,EAAE,KAAK,CAAC,GAAG;CACtB,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6CAA6C,CAAC,CAAC;IAE9D,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,mBAAmB,EAAE,sEAAsE,CAAC;SACnG,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAA6D,EAAE,EAAE;QAC9E,MAAM,MAAM,GAAG,mBAAmB,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7F,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC;gBAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,QAAQ;aAC3B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC9C,WAAW,CACT;gBACE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC7B,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;gBACjC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC3B,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;aAC7B,EACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACZ,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC;gBACvD,OAAO;oBACL,CAAC,CAAC,aAAa,CAAC,KAAK;oBACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACjB,CAAC,CAAC,WAAW,CAAC,KAAK;oBACnB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;iBACxB,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/commands/links.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyFzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuFzD"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyGzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqGzD"}
@@ -2,8 +2,12 @@ import { resolveEnv } from '../lib/resolve-env.js';
2
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
5
+ import * as p from '@clack/prompts';
6
+ import chalk from 'chalk';
5
7
  import { createConfigStore } from '../lib/config.js';
6
8
  import { createGatewayClient } from '../lib/gateway-client.js';
9
+ import { detectEditors, writeMcpConfig } from '../lib/mcp-setup.js';
10
+ import { normaliseWhyQuery } from '../lib/why-normalise.js';
7
11
  const TOOL_SCHEMAS = [
8
12
  {
9
13
  name: 'align_search',
@@ -17,6 +21,18 @@ const TOOL_SCHEMAS = [
17
21
  required: ['query'],
18
22
  },
19
23
  },
24
+ {
25
+ name: 'align_ask',
26
+ description: 'Ask a natural language question and get answers from the decision graph. Use this when the user asks "why", "how", "what was decided about", or any question about past decisions. Prefer this over align_search for natural language questions.',
27
+ inputSchema: {
28
+ type: 'object',
29
+ properties: {
30
+ question: { type: 'string', description: 'Natural language question about decisions (e.g. "why do we use postgres", "how does auth work", "what was decided about caching")' },
31
+ limit: { type: 'number', description: 'Max answers (default: 8)', default: 8 },
32
+ },
33
+ required: ['question'],
34
+ },
35
+ },
20
36
  {
21
37
  name: 'align_capture',
22
38
  description: 'Capture a new decision. Accepts a URL (Slack/Jira/GitHub/Confluence/etc.) or raw text.',
@@ -90,6 +106,7 @@ export function registerMcpCommand(program) {
90
106
  .command('mcp')
91
107
  .description('Run Align as an MCP server for Claude Code, Cursor, or Windsurf')
92
108
  .option('--env <env>', 'Environment')
109
+ .option('--setup', 'Interactively configure editors (Claude, Cursor) to use Align as an MCP server')
93
110
  .addHelpText('after', `
94
111
  Claude Code config (~/.claude.json or workspace .mcp.json):
95
112
  {
@@ -99,8 +116,13 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
99
116
  }
100
117
  `)
101
118
  .action(async (opts) => {
119
+ if (opts.setup) {
120
+ await runMcpSetup(opts.env);
121
+ return;
122
+ }
102
123
  const config = createConfigStore();
103
- const env = config.getEnvironment(resolveEnv(opts.env));
124
+ const resolvedEnv = resolveEnv(opts.env);
125
+ const env = config.getEnvironment(resolvedEnv);
104
126
  const client = createGatewayClient(env);
105
127
  const server = new Server({ name: 'align', version: '0.1.0' }, { capabilities: { tools: {} } });
106
128
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOL_SCHEMAS }));
@@ -111,6 +133,9 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
111
133
  case 'align_search':
112
134
  result = await client.searchDecisions(args?.['query'], args?.['limit']);
113
135
  break;
136
+ case 'align_ask':
137
+ result = await client.searchDecisions(normaliseWhyQuery(args?.['question']), args?.['limit'] ?? 8);
138
+ break;
114
139
  case 'align_capture': {
115
140
  const input = args?.['input'];
116
141
  let platform = 'web';
@@ -154,9 +179,49 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
154
179
  return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
155
180
  });
156
181
  // MCP protocol requires clean stdout; log startup to stderr
157
- process.stderr.write(`align mcp server started (env: ${opts.env}, gateway: ${env.gatewayUrl})\n`);
182
+ process.stderr.write(`align mcp server started (env: ${resolvedEnv}, gateway: ${env.gatewayUrl})\n`);
183
+ process.stderr.write('Want your whole team to have this context? https://align.tech/pricing\n');
158
184
  const transport = new StdioServerTransport();
159
185
  await server.connect(transport);
160
186
  });
161
187
  }
188
+ async function runMcpSetup(env) {
189
+ p.intro(chalk.bgBlue.white(' align mcp --setup '));
190
+ const editors = detectEditors();
191
+ if (!editors.length) {
192
+ const envArgs = env && env !== 'prod' ? `, "--env", "${env}"` : '';
193
+ p.log.warn('No editors detected automatically.\n' +
194
+ 'Add this config manually to your editor\'s MCP settings:\n\n' +
195
+ ` { "mcpServers": { "align": { "command": "align", "args": ["mcp"${envArgs}] } } }`);
196
+ p.outro('Done.');
197
+ return;
198
+ }
199
+ p.log.info(`Detected ${editors.length} editor${editors.length > 1 ? 's' : ''}:`);
200
+ for (const e of editors)
201
+ p.log.info(` ${e.name} - ${e.configPath}`);
202
+ console.log('');
203
+ const selected = await p.multiselect({
204
+ message: 'Which editors should use Align as an MCP server?',
205
+ options: editors.map(e => ({ value: e.name, label: e.name })),
206
+ required: true,
207
+ });
208
+ if (p.isCancel(selected)) {
209
+ p.cancel('Cancelled.');
210
+ process.exit(0);
211
+ }
212
+ for (const name of selected) {
213
+ const target = editors.find(e => e.name === name);
214
+ const spinner = p.spinner();
215
+ spinner.start(`Configuring ${name}...`);
216
+ try {
217
+ writeMcpConfig(target, env === 'prod' || !env ? undefined : env);
218
+ spinner.stop(`${name}: align added to MCP servers`);
219
+ }
220
+ catch (err) {
221
+ spinner.stop(`${name}: failed - ${err.message}`);
222
+ }
223
+ }
224
+ 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')}`;
225
+ p.outro(outroText);
226
+ }
162
227
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,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,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,YAAY,GAAG;IACnB;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,kPAAkP;QAC/P,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mIAAmI,EAAE;gBAC9K,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,wFAAwF;QACrG,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,uFAAuF;QACpG,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,EAAE,oEAAoE;QACjF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,gEAAgE;QAC7E,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,iEAAiE,CAAC;SAC9E,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,gFAAgF,CAAC;SACnG,WAAW,CAAC,OAAO,EAAE;;;;;;;CAOzB,CAAC;SACG,MAAM,CAAC,KAAK,EAAE,IAAuC,EAAE,EAAE;QACxD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,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,OAAO,EAAE,EACnC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;QAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAExF,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,IAAI,MAAe,CAAC;YAEpB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,cAAc;oBACjB,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,OAAO,CAAW,EAAE,IAAI,EAAE,CAAC,OAAO,CAAuB,CAAC,CAAC;oBACxG,MAAM;gBACR,KAAK,WAAW;oBACd,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CACnC,iBAAiB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAW,CAAC,EAC9C,IAAI,EAAE,CAAC,OAAO,CAAwB,IAAI,CAAC,CAC7C,CAAC;oBACF,MAAM;gBACR,KAAK,eAAe,CAAC,CAAC,CAAC;oBACrB,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,OAAO,CAAW,CAAC;oBACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC3B,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;4BAAE,QAAQ,GAAG,OAAO,CAAC;6BACnD,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;4BAAE,QAAQ,GAAG,MAAM,CAAC;6BAC5D,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;4BAAE,QAAQ,GAAG,YAAY,CAAC;6BAChE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;4BAAE,QAAQ,GAAG,QAAQ,CAAC;6BAC1D,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;4BAAE,QAAQ,GAAG,QAAQ,CAAC;oBACjE,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;oBACtF,CAAC;oBACD,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACvD,MAAM;gBACR,CAAC;gBACD,KAAK,uBAAuB;oBAC1B,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAClC,IAAI,EAAE,CAAC,MAAM,CAAW,EACxB,IAAI,EAAE,CAAC,SAAS,CAAuB,CACxC,CAAC;oBACF,MAAM;gBACR,KAAK,mBAAmB;oBACtB,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAC9B,IAAI,EAAE,CAAC,aAAa,CAAW,EAC/B,IAAI,EAAE,CAAC,SAAS,CAAW,EAC3B,IAAI,EAAE,CAAC,aAAa,CAAuB,CAC5C,CAAC;oBACF,MAAM;gBACR,KAAK,kBAAkB;oBACrB,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,aAAa,CAAW,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,qBAAqB;oBACxB,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;oBACrC,MAAM;gBACR,KAAK,6BAA6B;oBAChC,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CACnC,GAAG,IAAI,EAAE,CAAC,WAAW,CAAW,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAC7D,CAAC,CACF,CAAC;oBACF,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,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,KAAK,UAAU,WAAW,CAAC,GAAa;IACtC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEnD,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,sCAAsC;YACtC,8DAA8D;YAC9D,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,UAAU,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjF,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,kDAAkD;QAC3D,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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerSetupCommand(program: Command): void;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +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;AA0LzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0L3D"}
@@ -0,0 +1,330 @@
1
+ import { resolveEnv } from '../lib/resolve-env.js';
2
+ import * as p from '@clack/prompts';
3
+ import chalk from 'chalk';
4
+ import { createConfigStore } from '../lib/config.js';
5
+ import { createGatewayClient } from '../lib/gateway-client.js';
6
+ import { runPersonalImport } from '../lib/personal-import.js';
7
+ import { detectEditors, writeMcpConfig } from '../lib/mcp-setup.js';
8
+ import { isGitRepo } from '../lib/git.js';
9
+ import { resolveAppUrl } from '../lib/env-resolver.js';
10
+ function buildSources(gitAvailable) {
11
+ const sources = [];
12
+ if (gitAvailable) {
13
+ sources.push({
14
+ id: 'git',
15
+ label: 'Git',
16
+ description: 'Commit history from this repo - no token needed',
17
+ fetch: async () => {
18
+ const { fetchGitItems } = await import('../lib/fetchers/git.js');
19
+ return fetchGitItems({ limit: 100 });
20
+ },
21
+ });
22
+ }
23
+ sources.push({
24
+ id: 'github',
25
+ label: 'GitHub',
26
+ description: 'Your PRs and issues',
27
+ tokenLabel: 'Personal access token (ghp_...)',
28
+ tokenHint: 'github.com/settings/tokens/new - tick "repo" scope',
29
+ fetch: async (t) => {
30
+ const { fetchGitHubItems } = await import('../lib/fetchers/github.js');
31
+ return fetchGitHubItems({ token: t['token'], limit: 100 });
32
+ },
33
+ }, {
34
+ id: 'jira',
35
+ label: 'Jira',
36
+ description: 'Your issues',
37
+ tokenLabel: 'Atlassian API token',
38
+ tokenHint: 'id.atlassian.com/manage-profile/security/api-tokens',
39
+ extraFields: [
40
+ { key: 'email', label: 'Atlassian email' },
41
+ { key: 'domain', label: 'Jira domain (e.g. company.atlassian.net)' },
42
+ ],
43
+ fetch: async (t) => {
44
+ const { fetchJiraItems } = await import('../lib/fetchers/jira.js');
45
+ return fetchJiraItems({ email: t['email'], token: t['token'], domain: t['domain'], limit: 100 });
46
+ },
47
+ }, {
48
+ id: 'confluence',
49
+ label: 'Confluence',
50
+ description: 'Your pages and documentation',
51
+ tokenLabel: 'Atlassian API token (same as Jira)',
52
+ tokenHint: 'id.atlassian.com/manage-profile/security/api-tokens',
53
+ extraFields: [
54
+ { key: 'email', label: 'Atlassian email' },
55
+ { key: 'domain', label: 'Confluence domain (e.g. company.atlassian.net)' },
56
+ ],
57
+ fetch: async (t) => {
58
+ const { fetchConfluenceItems } = await import('../lib/fetchers/confluence.js');
59
+ return fetchConfluenceItems({ email: t['email'], token: t['token'], domain: t['domain'], limit: 50 });
60
+ },
61
+ }, {
62
+ id: 'slack',
63
+ label: 'Slack',
64
+ description: 'Decision threads from your channels [experimental]',
65
+ tokenLabel: 'User OAuth token (xoxp-...)',
66
+ tokenHint: 'api.slack.com/apps - OAuth & Permissions - User Token Scopes: channels:read, channels:history, groups:read, groups:history',
67
+ fetch: async (t) => {
68
+ const { fetchSlackItems } = await import('../lib/fetchers/slack.js');
69
+ return fetchSlackItems({ token: t['token'], limit: 50, daysBack: 90 });
70
+ },
71
+ }, {
72
+ id: 'teams',
73
+ label: 'Microsoft Teams',
74
+ description: 'Channel messages and decisions from your teams',
75
+ tokenLabel: 'Graph API delegated access token',
76
+ tokenHint: 'Get a delegated token with ChannelMessage.Read.All scope - requires admin consent in most orgs',
77
+ fetch: async (t) => {
78
+ const { fetchTeamsItems } = await import('../lib/fetchers/teams.js');
79
+ return fetchTeamsItems({ token: t['token'], limit: 50 });
80
+ },
81
+ }, {
82
+ id: 'zoom',
83
+ label: 'Zoom',
84
+ description: 'Cloud recording transcripts from your meetings',
85
+ tokenLabel: 'Zoom OAuth access token',
86
+ tokenHint: 'marketplace.zoom.us/develop/apps - create OAuth app, authorize, copy access token',
87
+ fetch: async (t) => {
88
+ const { fetchZoomItems } = await import('../lib/fetchers/zoom.js');
89
+ return fetchZoomItems({ token: t['token'], limit: 30 });
90
+ },
91
+ }, {
92
+ id: 'gitlab',
93
+ label: 'GitLab',
94
+ description: 'Your merge requests',
95
+ tokenLabel: 'Personal access token',
96
+ tokenHint: 'gitlab.com/-/user_settings/personal_access_tokens - tick "read_api"',
97
+ extraFields: [
98
+ { key: 'domain', label: 'GitLab domain (leave blank for gitlab.com)' },
99
+ ],
100
+ fetch: async (t) => {
101
+ const { fetchGitLabItems } = await import('../lib/fetchers/gitlab.js');
102
+ return fetchGitLabItems({ token: t['token'], domain: t['domain'] || undefined, limit: 100 });
103
+ },
104
+ }, {
105
+ id: 'linear',
106
+ label: 'Linear',
107
+ description: 'Your issues and project discussions',
108
+ tokenLabel: 'Personal API key (lin_api_...)',
109
+ tokenHint: 'linear.app/settings/api - Personal API keys',
110
+ fetch: async (t) => {
111
+ const { fetchLinearItems } = await import('../lib/fetchers/linear.js');
112
+ return fetchLinearItems({ token: t['token'], limit: 100 });
113
+ },
114
+ }, {
115
+ id: 'notion',
116
+ label: 'Notion',
117
+ description: 'Your pages and databases',
118
+ tokenLabel: 'Integration secret (secret_...)',
119
+ tokenHint: 'notion.so/my-integrations - New integration - show Internal Integration Secret',
120
+ fetch: async (t) => {
121
+ const { fetchNotionItems } = await import('../lib/fetchers/notion.js');
122
+ return fetchNotionItems({ token: t['token'], limit: 50 });
123
+ },
124
+ });
125
+ return sources;
126
+ }
127
+ // ---------------------------------------------------------------------------
128
+ // Token collection helper
129
+ // ---------------------------------------------------------------------------
130
+ async function collectTokens(source) {
131
+ const tokens = {};
132
+ // Extra fields first (email, domain for Jira/Confluence)
133
+ for (const field of source.extraFields ?? []) {
134
+ const val = await p.text({ message: ` ${field.label}:` });
135
+ if (p.isCancel(val))
136
+ return null;
137
+ tokens[field.key] = val;
138
+ }
139
+ // Main token
140
+ if (source.tokenLabel) {
141
+ if (source.tokenHint) {
142
+ p.log.info(chalk.dim(` Get your token: ${source.tokenHint}`));
143
+ }
144
+ const token = await p.password({ message: ` ${source.tokenLabel}:` });
145
+ if (p.isCancel(token))
146
+ return null;
147
+ tokens['token'] = token;
148
+ }
149
+ return tokens;
150
+ }
151
+ // ---------------------------------------------------------------------------
152
+ // Command registration
153
+ // ---------------------------------------------------------------------------
154
+ export function registerSetupCommand(program) {
155
+ program
156
+ .command('setup')
157
+ .description('Guided onboarding: connect your tools and configure MCP in one command')
158
+ .option('--env <env>', 'Environment')
159
+ .option('--approve', 'Skip confirmation prompts (for scripted use)')
160
+ .action(async (opts) => {
161
+ const config = createConfigStore();
162
+ const envName = resolveEnv(opts.env);
163
+ const env = config.getEnvironment(envName);
164
+ const client = createGatewayClient(env);
165
+ p.intro(chalk.bgMagenta.white(' align setup '));
166
+ p.log.info('Building your decision graph from the tools your team already uses.');
167
+ p.log.info('Takes about 10 minutes. Ctrl+C to cancel at any step.');
168
+ console.log('');
169
+ // ---- Step 1: Auth check ----
170
+ const authSpinner = p.spinner();
171
+ authSpinner.start('Checking authentication...');
172
+ try {
173
+ const me = await client.whoami();
174
+ authSpinner.stop(`Logged in as ${me.user.email} (${me.tenant?.name ?? envName})`);
175
+ }
176
+ catch {
177
+ authSpinner.stop('Not authenticated');
178
+ p.log.warn(`Run ${chalk.bold('align login')} first, then re-run ${chalk.bold('align setup')}.`);
179
+ process.exit(1);
180
+ }
181
+ // Snapshot pre-import link count so we can report the delta after imports
182
+ let preImportLinkCount = 0;
183
+ try {
184
+ const existing = await client.listDecisionLinks();
185
+ preImportLinkCount = existing.length;
186
+ }
187
+ catch {
188
+ // Non-fatal - delta will just be the post-import total
189
+ }
190
+ // ---- Step 2: Source selection ----
191
+ console.log('');
192
+ const gitAvailable = await isGitRepo();
193
+ const allSources = buildSources(gitAvailable);
194
+ const sourceOptions = allSources.map(s => ({
195
+ value: s.id,
196
+ label: s.label,
197
+ hint: s.description,
198
+ }));
199
+ const selectedIds = await p.multiselect({
200
+ message: 'Which sources do you want to import? (space to select, enter to confirm)',
201
+ options: sourceOptions,
202
+ required: true,
203
+ initialValues: gitAvailable ? ['git'] : [],
204
+ });
205
+ if (p.isCancel(selectedIds)) {
206
+ p.cancel('Cancelled.');
207
+ process.exit(0);
208
+ }
209
+ const selectedSources = allSources.filter(s => selectedIds.includes(s.id));
210
+ // ---- Step 3: Token collection + import per source ----
211
+ let totalDecisions = 0;
212
+ const sourcesImported = [];
213
+ for (const source of selectedSources) {
214
+ console.log('');
215
+ p.log.step(chalk.bold(source.label));
216
+ // Collect tokens
217
+ let tokens = {};
218
+ if (source.tokenLabel || (source.extraFields?.length ?? 0) > 0) {
219
+ const collected = await collectTokens(source);
220
+ if (!collected) {
221
+ p.cancel('Cancelled.');
222
+ process.exit(0);
223
+ }
224
+ tokens = collected;
225
+ }
226
+ // Fetch items
227
+ const fetchSpinner = p.spinner();
228
+ fetchSpinner.start(`Fetching from ${source.label}...`);
229
+ let items = [];
230
+ try {
231
+ items = await source.fetch(tokens);
232
+ fetchSpinner.stop(`Found ${items.length} items`);
233
+ }
234
+ catch (err) {
235
+ fetchSpinner.stop(`Skipped ${source.label} - ${err.message}`);
236
+ p.log.warn(`You can run ${chalk.bold(`align import ${source.id}`)} later to retry.`);
237
+ continue;
238
+ }
239
+ if (!items.length) {
240
+ p.log.warn(`No items found in ${source.label}.`);
241
+ continue;
242
+ }
243
+ // Import (always --approve inside setup to avoid double-confirmation)
244
+ const ingested = await runPersonalImport(items, client, {
245
+ label: source.label,
246
+ approve: true,
247
+ appUrl: resolveAppUrl(env),
248
+ });
249
+ totalDecisions += ingested;
250
+ if (ingested > 0)
251
+ sourcesImported.push(source.label);
252
+ }
253
+ if (!totalDecisions) {
254
+ p.log.warn('No decisions imported. Run individual align import commands to try specific sources.');
255
+ p.outro('Setup complete (no data imported).');
256
+ return;
257
+ }
258
+ // ---- Step 4: Relationship count (delta from pre-import baseline) ----
259
+ console.log('');
260
+ const linkSpinner = p.spinner();
261
+ linkSpinner.start('Mapping cross-tool relationships...');
262
+ await new Promise(r => setTimeout(r, 4000));
263
+ let linkCount = 0;
264
+ try {
265
+ const links = await client.listDecisionLinks();
266
+ linkCount = Math.max(0, links.length - preImportLinkCount);
267
+ if (linkCount > 0) {
268
+ linkSpinner.stop(`${linkCount} new cross-tool link${linkCount === 1 ? '' : 's'} found`);
269
+ }
270
+ else {
271
+ linkSpinner.stop('Relationship mapping running in background - check align links list shortly');
272
+ }
273
+ }
274
+ catch {
275
+ linkSpinner.stop('Check align links list for cross-tool relationships');
276
+ }
277
+ // ---- Step 5: MCP setup ----
278
+ console.log('');
279
+ const editors = detectEditors();
280
+ if (editors.length > 0) {
281
+ p.log.info(`Detected ${editors.length} editor${editors.length === 1 ? '' : 's'}: ${editors.map(e => e.name).join(', ')}`);
282
+ const setupMcp = await p.confirm({ message: 'Configure MCP so Claude/Cursor can query your graph inline?' });
283
+ if (!p.isCancel(setupMcp) && setupMcp) {
284
+ let selected = editors.map(e => e.name);
285
+ if (editors.length > 1) {
286
+ const sel = await p.multiselect({
287
+ message: 'Which editors to configure?',
288
+ options: editors.map(e => ({ value: e.name, label: e.name })),
289
+ });
290
+ if (!p.isCancel(sel))
291
+ selected = sel;
292
+ }
293
+ for (const name of selected) {
294
+ const target = editors.find(e => e.name === name);
295
+ try {
296
+ writeMcpConfig(target, envName === 'prod' ? undefined : envName);
297
+ p.log.success(`${name}: align added to MCP servers`);
298
+ }
299
+ catch (err) {
300
+ p.log.warn(`${name}: ${err.message}`);
301
+ }
302
+ }
303
+ console.log('');
304
+ p.log.info(chalk.dim('Restart your editor, then ask:'));
305
+ p.log.info(chalk.dim(` "What has my team decided about ${sourcesImported[0] ? `our ${sourcesImported[0].toLowerCase()} workflow` : 'authentication'}?"`));
306
+ }
307
+ }
308
+ else {
309
+ p.log.info(`To use Align inside Claude or Cursor, run: ${chalk.bold('align mcp --setup')}`);
310
+ }
311
+ // ---- Outro ----
312
+ const linkLine = linkCount > 0
313
+ ? ` ${linkCount} cross-tool link${linkCount === 1 ? '' : 's'} found\n`
314
+ : '';
315
+ const sourceLine = sourcesImported.length > 0
316
+ ? ` ${sourcesImported.length} source${sourcesImported.length === 1 ? '' : 's'}: ${sourcesImported.join(', ')}\n`
317
+ : '';
318
+ const outroText = [
319
+ chalk.bold('Setup complete.\n'),
320
+ ` ${totalDecisions} decisions captured`,
321
+ sourceLine ? `\n${sourceLine}` : '',
322
+ linkLine ? `\n${linkLine}` : '',
323
+ `\n Run: ${chalk.bold('align ask "any question about your codebase"')}\n`,
324
+ chalk.dim('\n Want your whole team to have a shared decision graph?'),
325
+ chalk.dim('\n https://align.tech/pricing'),
326
+ ].join('');
327
+ p.outro(outroText);
328
+ });
329
+ }
330
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerAskCommand(program: Command): void;
3
+ //# sourceMappingURL=why.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgEzD"}
@@ -0,0 +1,81 @@
1
+ import { resolveEnv } from '../lib/resolve-env.js';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { createConfigStore } from '../lib/config.js';
5
+ import { createGatewayClient } from '../lib/gateway-client.js';
6
+ import { normaliseWhyQuery } from '../lib/why-normalise.js';
7
+ function wrapText(text, indent, maxWidth) {
8
+ const words = text.split(' ');
9
+ const lines = [];
10
+ let current = '';
11
+ for (const word of words) {
12
+ if (current && (current + word).length > maxWidth) {
13
+ lines.push(indent + current.trimEnd());
14
+ current = '';
15
+ }
16
+ current += `${word} `;
17
+ }
18
+ if (current.trim())
19
+ lines.push(indent + current.trimEnd());
20
+ return lines;
21
+ }
22
+ export function registerAskCommand(program) {
23
+ program
24
+ .command('ask <query>')
25
+ .alias('why')
26
+ .description('Ask a question about your decision graph in plain English')
27
+ .option('--env <env>', 'Environment')
28
+ .option('--limit <n>', 'Max answers', '8')
29
+ .action(async (query, opts) => {
30
+ const config = createConfigStore();
31
+ const client = createGatewayClient(config.getEnvironment(resolveEnv(opts.env)));
32
+ const normalised = normaliseWhyQuery(query);
33
+ const spinner = ora('').start();
34
+ try {
35
+ const results = await client.searchDecisions(normalised, parseInt(opts.limit, 10));
36
+ spinner.stop();
37
+ if (!results.results.length) {
38
+ console.log('');
39
+ console.log(chalk.dim(' No decisions found. Build your graph first:'));
40
+ console.log(chalk.dim(' align import git'));
41
+ console.log(chalk.dim(' align import linear # or jira, slack, notion, confluence'));
42
+ console.log('');
43
+ return;
44
+ }
45
+ const count = results.count;
46
+ console.log(chalk.bold(`\n ${count} decision${count === 1 ? '' : 's'} in your graph\n`));
47
+ for (const d of results.results) {
48
+ const score = d.similarity !== undefined
49
+ ? chalk.dim(` (${(d.similarity * 100).toFixed(0)}% match)`)
50
+ : '';
51
+ console.log(chalk.bold(` ${d.title}`) + score);
52
+ if (d.summary) {
53
+ const summaryLines = wrapText(`"${d.summary}"`, ' ', 74);
54
+ for (const line of summaryLines) {
55
+ console.log(chalk.dim(line));
56
+ }
57
+ }
58
+ const statusLabel = d.status && d.status !== 'active'
59
+ ? chalk.yellow(` [${d.status}]`)
60
+ : '';
61
+ console.log(chalk.dim(` id: ${d.id}`) + statusLabel);
62
+ console.log('');
63
+ }
64
+ // Contextual commercial hooks based on result count
65
+ if (count > 0 && count < 5) {
66
+ console.log(chalk.dim(' Add more sources for richer cross-tool context:'));
67
+ console.log(chalk.dim(' align import linear # or jira, slack, notion, confluence'));
68
+ console.log('');
69
+ }
70
+ else if (count >= 5) {
71
+ console.log(chalk.dim(' Share this graph with your team: https://align.tech/pricing'));
72
+ console.log('');
73
+ }
74
+ }
75
+ catch (err) {
76
+ spinner.fail(chalk.red(err.message));
77
+ process.exit(1);
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=why.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}