@aligndottech/cli 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +180 -40
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +25 -15
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/drift.d.ts.map +1 -1
- package/dist/commands/drift.js +3 -1
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/import/teams.d.ts +3 -0
- package/dist/commands/import/teams.d.ts.map +1 -0
- package/dist/commands/import/teams.js +42 -0
- package/dist/commands/import/teams.js.map +1 -0
- package/dist/commands/import/zoom.d.ts +3 -0
- package/dist/commands/import/zoom.d.ts.map +1 -0
- package/dist/commands/import/zoom.js +39 -0
- package/dist/commands/import/zoom.js.map +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +4 -0
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/links.d.ts.map +1 -1
- package/dist/commands/links.js +4 -0
- package/dist/commands/links.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +70 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/setup.d.ts +3 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +330 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/why.d.ts +3 -0
- package/dist/commands/why.d.ts.map +1 -0
- package/dist/commands/why.js +97 -0
- package/dist/commands/why.js.map +1 -0
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/fetchers/git.d.ts +5 -0
- package/dist/lib/fetchers/git.d.ts.map +1 -0
- package/dist/lib/fetchers/git.js +15 -0
- package/dist/lib/fetchers/git.js.map +1 -0
- package/dist/lib/fetchers/teams.d.ts +6 -0
- package/dist/lib/fetchers/teams.d.ts.map +1 -0
- package/dist/lib/fetchers/teams.js +62 -0
- package/dist/lib/fetchers/teams.js.map +1 -0
- package/dist/lib/fetchers/zoom.d.ts +7 -0
- package/dist/lib/fetchers/zoom.d.ts.map +1 -0
- package/dist/lib/fetchers/zoom.js +60 -0
- package/dist/lib/fetchers/zoom.js.map +1 -0
- package/dist/lib/gateway-client.d.ts +4 -1
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +9 -2
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/local-llm.d.ts +11 -0
- package/dist/lib/local-llm.d.ts.map +1 -0
- package/dist/lib/local-llm.js +169 -0
- package/dist/lib/local-llm.js.map +1 -0
- package/dist/lib/mcp-setup.d.ts +8 -0
- package/dist/lib/mcp-setup.d.ts.map +1 -0
- package/dist/lib/mcp-setup.js +67 -0
- package/dist/lib/mcp-setup.js.map +1 -0
- package/dist/lib/personal-import.d.ts +1 -1
- package/dist/lib/personal-import.d.ts.map +1 -1
- package/dist/lib/personal-import.js +2 -1
- package/dist/lib/personal-import.js.map +1 -1
- package/dist/lib/why-normalise.d.ts +2 -0
- package/dist/lib/why-normalise.d.ts.map +1 -0
- package/dist/lib/why-normalise.js +39 -0
- package/dist/lib/why-normalise.js.map +1 -0
- package/package.json +14 -10
|
@@ -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,
|
|
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"}
|
package/dist/commands/links.js
CHANGED
|
@@ -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;
|
|
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;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2GzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqGzD"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { resolveEnv } from '../lib/resolve-env.js';
|
|
2
|
+
import pkg from '../../package.json' with { type: 'json' };
|
|
3
|
+
const { version } = pkg;
|
|
2
4
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
5
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
6
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import * as p from '@clack/prompts';
|
|
8
|
+
import chalk from 'chalk';
|
|
5
9
|
import { createConfigStore } from '../lib/config.js';
|
|
6
10
|
import { createGatewayClient } from '../lib/gateway-client.js';
|
|
11
|
+
import { detectEditors, writeMcpConfig } from '../lib/mcp-setup.js';
|
|
12
|
+
import { normaliseWhyQuery } from '../lib/why-normalise.js';
|
|
7
13
|
const TOOL_SCHEMAS = [
|
|
8
14
|
{
|
|
9
15
|
name: 'align_search',
|
|
@@ -17,6 +23,18 @@ const TOOL_SCHEMAS = [
|
|
|
17
23
|
required: ['query'],
|
|
18
24
|
},
|
|
19
25
|
},
|
|
26
|
+
{
|
|
27
|
+
name: 'align_ask',
|
|
28
|
+
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.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
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")' },
|
|
33
|
+
limit: { type: 'number', description: 'Max answers (default: 8)', default: 8 },
|
|
34
|
+
},
|
|
35
|
+
required: ['question'],
|
|
36
|
+
},
|
|
37
|
+
},
|
|
20
38
|
{
|
|
21
39
|
name: 'align_capture',
|
|
22
40
|
description: 'Capture a new decision. Accepts a URL (Slack/Jira/GitHub/Confluence/etc.) or raw text.',
|
|
@@ -90,6 +108,7 @@ export function registerMcpCommand(program) {
|
|
|
90
108
|
.command('mcp')
|
|
91
109
|
.description('Run Align as an MCP server for Claude Code, Cursor, or Windsurf')
|
|
92
110
|
.option('--env <env>', 'Environment')
|
|
111
|
+
.option('--setup', 'Interactively configure editors (Claude, Cursor) to use Align as an MCP server')
|
|
93
112
|
.addHelpText('after', `
|
|
94
113
|
Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
95
114
|
{
|
|
@@ -99,10 +118,15 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
|
99
118
|
}
|
|
100
119
|
`)
|
|
101
120
|
.action(async (opts) => {
|
|
121
|
+
if (opts.setup) {
|
|
122
|
+
await runMcpSetup(opts.env);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
102
125
|
const config = createConfigStore();
|
|
103
|
-
const
|
|
126
|
+
const resolvedEnv = resolveEnv(opts.env);
|
|
127
|
+
const env = config.getEnvironment(resolvedEnv);
|
|
104
128
|
const client = createGatewayClient(env);
|
|
105
|
-
const server = new Server({ name: 'align', version
|
|
129
|
+
const server = new Server({ name: 'align', version }, { capabilities: { tools: {} } });
|
|
106
130
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOL_SCHEMAS }));
|
|
107
131
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
108
132
|
const { name, arguments: args } = request.params;
|
|
@@ -111,6 +135,9 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
|
111
135
|
case 'align_search':
|
|
112
136
|
result = await client.searchDecisions(args?.['query'], args?.['limit']);
|
|
113
137
|
break;
|
|
138
|
+
case 'align_ask':
|
|
139
|
+
result = await client.searchDecisions(normaliseWhyQuery(args?.['question']), args?.['limit'] ?? 8);
|
|
140
|
+
break;
|
|
114
141
|
case 'align_capture': {
|
|
115
142
|
const input = args?.['input'];
|
|
116
143
|
let platform = 'web';
|
|
@@ -154,9 +181,49 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
|
154
181
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
155
182
|
});
|
|
156
183
|
// MCP protocol requires clean stdout; log startup to stderr
|
|
157
|
-
process.stderr.write(`align mcp server started (env: ${
|
|
184
|
+
process.stderr.write(`align mcp server started (env: ${resolvedEnv}, gateway: ${env.gatewayUrl})\n`);
|
|
185
|
+
process.stderr.write('Want your whole team to have this context? https://align.tech/pricing\n');
|
|
158
186
|
const transport = new StdioServerTransport();
|
|
159
187
|
await server.connect(transport);
|
|
160
188
|
});
|
|
161
189
|
}
|
|
190
|
+
async function runMcpSetup(env) {
|
|
191
|
+
p.intro(chalk.bgBlue.white(' align mcp --setup '));
|
|
192
|
+
const editors = detectEditors();
|
|
193
|
+
if (!editors.length) {
|
|
194
|
+
const envArgs = env && env !== 'prod' ? `, "--env", "${env}"` : '';
|
|
195
|
+
p.log.warn('No editors detected automatically.\n' +
|
|
196
|
+
'Add this config manually to your editor\'s MCP settings:\n\n' +
|
|
197
|
+
` { "mcpServers": { "align": { "command": "align", "args": ["mcp"${envArgs}] } } }`);
|
|
198
|
+
p.outro('Done.');
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
p.log.info(`Detected ${editors.length} editor${editors.length > 1 ? 's' : ''}:`);
|
|
202
|
+
for (const e of editors)
|
|
203
|
+
p.log.info(` ${e.name} - ${e.configPath}`);
|
|
204
|
+
console.log('');
|
|
205
|
+
const selected = await p.multiselect({
|
|
206
|
+
message: 'Which editors should use Align as an MCP server?',
|
|
207
|
+
options: editors.map(e => ({ value: e.name, label: e.name })),
|
|
208
|
+
required: true,
|
|
209
|
+
});
|
|
210
|
+
if (p.isCancel(selected)) {
|
|
211
|
+
p.cancel('Cancelled.');
|
|
212
|
+
process.exit(0);
|
|
213
|
+
}
|
|
214
|
+
for (const name of selected) {
|
|
215
|
+
const target = editors.find(e => e.name === name);
|
|
216
|
+
const spinner = p.spinner();
|
|
217
|
+
spinner.start(`Configuring ${name}...`);
|
|
218
|
+
try {
|
|
219
|
+
writeMcpConfig(target, env === 'prod' || !env ? undefined : env);
|
|
220
|
+
spinner.stop(`${name}: align added to MCP servers`);
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
spinner.stop(`${name}: failed - ${err.message}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
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')}`;
|
|
227
|
+
p.outro(outroText);
|
|
228
|
+
}
|
|
162
229
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -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,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,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0EzD"}
|