@aligndottech/cli 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/connect.d.ts +11 -13
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +0 -21
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/import/confluence.js +2 -2
- package/dist/commands/import/confluence.js.map +1 -1
- package/dist/commands/import/docs.js +1 -1
- package/dist/commands/import/docs.js.map +1 -1
- package/dist/commands/import/git.js +1 -1
- package/dist/commands/import/git.js.map +1 -1
- package/dist/commands/import/github.js +1 -1
- package/dist/commands/import/github.js.map +1 -1
- package/dist/commands/import/gitlab.js +1 -1
- package/dist/commands/import/gitlab.js.map +1 -1
- package/dist/commands/import/jira.js +2 -2
- package/dist/commands/import/jira.js.map +1 -1
- package/dist/commands/import/linear.js +1 -1
- package/dist/commands/import/linear.js.map +1 -1
- package/dist/commands/import/notion.js +1 -1
- package/dist/commands/import/notion.js.map +1 -1
- package/dist/commands/import/sessions.d.ts +1 -1
- package/dist/commands/import/sessions.js +1 -1
- package/dist/commands/import/sessions.js.map +1 -1
- package/dist/commands/import/slack.js +1 -1
- package/dist/commands/import/slack.js.map +1 -1
- package/dist/commands/import/teams.js +1 -1
- package/dist/commands/import/teams.js.map +1 -1
- package/dist/commands/import/zoom.js +1 -1
- package/dist/commands/import/zoom.js.map +1 -1
- package/dist/commands/import.d.ts +24 -3
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +38 -21
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/mcp.d.ts +49 -3
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +214 -17
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/ratify.js +1 -1
- package/dist/commands/ratify.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +11 -1
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/search.js +1 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/why.js +3 -3
- package/dist/commands/why.js.map +1 -1
- package/dist/lib/capture-sources.d.ts +1 -1
- package/dist/lib/capture-sources.js +1 -1
- package/dist/lib/command-opts.d.ts +1 -1
- package/dist/lib/command-opts.js +1 -1
- package/dist/lib/commands-doc.d.ts.map +1 -1
- package/dist/lib/commands-doc.js +4 -1
- package/dist/lib/commands-doc.js.map +1 -1
- package/dist/lib/decision-refs.d.ts +1 -1
- package/dist/lib/decision-refs.js +1 -1
- package/dist/lib/errors.d.ts +1 -1
- package/dist/lib/errors.js +2 -2
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/fetchers/git.d.ts +1 -1
- package/dist/lib/fetchers/git.js +1 -1
- package/dist/lib/gateway-client.d.ts +70 -1
- package/dist/lib/gateway-client.d.ts.map +1 -1
- package/dist/lib/gateway-client.js +121 -8
- package/dist/lib/gateway-client.js.map +1 -1
- package/dist/lib/git.js +1 -1
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/import-defaults.d.ts +1 -1
- package/dist/lib/import-defaults.js +1 -1
- package/dist/lib/local-db.js +1 -1
- package/dist/lib/local-gateway-client.d.ts +1 -1
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +9 -1
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/mcp-timeline-tools.d.ts +128 -0
- package/dist/lib/mcp-timeline-tools.d.ts.map +1 -0
- package/dist/lib/mcp-timeline-tools.js +504 -0
- package/dist/lib/mcp-timeline-tools.js.map +1 -0
- package/dist/lib/personal-oauth.d.ts +1 -1
- package/dist/lib/personal-oauth.js +4 -4
- package/dist/lib/personal-oauth.js.map +1 -1
- package/dist/lib/resolve-env.d.ts +1 -1
- package/dist/lib/resolve-env.js +1 -1
- package/dist/lib/sessions/import-summary.d.ts +2 -2
- package/dist/lib/sessions/import-summary.js +1 -1
- package/dist/lib/sessions/registry.d.ts +1 -1
- package/dist/lib/sessions/registry.js +1 -1
- package/dist/lib/usage-telemetry.d.ts +2 -2
- package/dist/lib/usage-telemetry.js +2 -2
- package/package.json +1 -1
package/dist/commands/import.js
CHANGED
|
@@ -19,7 +19,7 @@ import { registerImportTeamsCommand } from './import/teams.js';
|
|
|
19
19
|
import { registerImportZoomCommand } from './import/zoom.js';
|
|
20
20
|
import { registerImportNotionCommand } from './import/notion.js';
|
|
21
21
|
import { registerImportSessionsCommand } from './import/sessions.js';
|
|
22
|
-
import {
|
|
22
|
+
import { runConnect } from './connect.js';
|
|
23
23
|
function renderProgress(jobs) {
|
|
24
24
|
process.stdout.write('\x1b[2K\r');
|
|
25
25
|
const running = jobs.filter(j => j.status === 'running');
|
|
@@ -107,7 +107,7 @@ function registerImportListCommands(importCmd) {
|
|
|
107
107
|
{ header: 'CONFIDENCE', width: 12 },
|
|
108
108
|
{ header: 'STATUS', width: 12 },
|
|
109
109
|
], suggestions.map(s => [s.id, s.suggested_title, (s.confidence ?? 0).toFixed(2), s.status]));
|
|
110
|
-
console.log(chalk.dim('Approve all: align
|
|
110
|
+
console.log(chalk.dim('Approve all: align connect --all --approve'));
|
|
111
111
|
console.log('');
|
|
112
112
|
}
|
|
113
113
|
catch (err) {
|
|
@@ -157,16 +157,46 @@ function registerImportListCommands(importCmd) {
|
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
160
|
+
* ALI-951: `import` was retired in 0.40.0, and a RETIRED command still has to exist.
|
|
161
|
+
*
|
|
162
|
+
* Deleting the alias outright is not the end state, because `align` has a default action for a
|
|
163
|
+
* free-text question (cli.ts's `program.action(runDefaultAction)`). With no `import` command
|
|
164
|
+
* registered, `align import git` parses as the QUESTION "import git", runs the default action
|
|
165
|
+
* and **exits 0** - so a script that has been importing for a year keeps reporting success and
|
|
166
|
+
* silently imports nothing. Measured on the built binary before this stub existed:
|
|
167
|
+
* `align import git` -> exit 0, and `align import git --approve` -> exit 1 with
|
|
168
|
+
* "unknown option '--approve'", which names neither the removal nor the replacement.
|
|
169
|
+
*
|
|
170
|
+
* So it stays registered, hidden from `--help`, accepting anything, and fails loudly naming the
|
|
171
|
+
* new spelling. `.error()` rather than `process.exit`, so exitOverride still works in a test.
|
|
172
|
+
* It has its own COMMAND_REGISTRY entry because help-tiers.test.ts requires every registered
|
|
173
|
+
* command to be claimed by exactly one - and it is deliberately NOT `internal`, which in this
|
|
174
|
+
* registry means "Align team only": a customer with the old spelling in a script is precisely
|
|
175
|
+
* who needs to reach it.
|
|
176
|
+
*/
|
|
177
|
+
export function registerRetiredImportCommand(program) {
|
|
178
|
+
const retired = program
|
|
179
|
+
.command('import [args...]', { hidden: true })
|
|
180
|
+
.allowUnknownOption()
|
|
181
|
+
.description('removed in 0.40.0 - use align connect')
|
|
182
|
+
.action((args) => {
|
|
183
|
+
const sub = args[0] ? ` ${args[0]}` : '';
|
|
184
|
+
retired.error(`align import${sub} was removed in 0.40.0. Use align connect${sub}. ` +
|
|
185
|
+
'The old spelling was deprecated in 0.38.0 and printed a line on every run until now.', { exitCode: 2 });
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The `connect` group (ALI-951). With no source and no `--all` it is the local picker
|
|
190
|
+
* (connect.ts); `connect <source>` runs that source's import; `--all` and a cloud env take
|
|
191
|
+
* the cloud scan below. `import` no longer reaches any of it - it is the retirement stub
|
|
192
|
+
* above, which exits 2 - so this group is the only live spelling.
|
|
193
|
+
*
|
|
163
194
|
* This file stays on the bare resolver on purpose - the scan's job endpoints exist only on
|
|
164
195
|
* the cloud gateway (import-env-parity.test.ts); the picker path resolves in connect.ts.
|
|
165
196
|
*/
|
|
166
197
|
export function registerImportCommand(program) {
|
|
167
198
|
const importCmd = program
|
|
168
199
|
.command('connect [connectors...]')
|
|
169
|
-
.alias('import')
|
|
170
200
|
.description('Connect a source and import its decisions. No source: pick from a list. --all: scan every connected cloud connector')
|
|
171
201
|
.option('--env <env>', 'Environment')
|
|
172
202
|
.option('--source <id>', 'The source to connect without the picker (github, jira, ...)')
|
|
@@ -179,19 +209,6 @@ export function registerImportCommand(program) {
|
|
|
179
209
|
.option('--from <date>', 'Start date ISO e.g. 2025-01-01')
|
|
180
210
|
.option('--to <date>', 'End date ISO')
|
|
181
211
|
.option('--approve', 'Auto-approve all suggestions when scan completes')
|
|
182
|
-
.hook('preAction', (thisCommand, actionCommand) => {
|
|
183
|
-
// ALI-951: one line per invocation, whichever subcommand ran, only through the alias.
|
|
184
|
-
// rawArgs lives on the root Commander parsed from; the walk finds it from any depth.
|
|
185
|
-
let root = thisCommand;
|
|
186
|
-
while (root.parent)
|
|
187
|
-
root = root.parent;
|
|
188
|
-
// rawArgs is set by parse() and absent from Commander's typings; process.argv is the
|
|
189
|
-
// same list on the real CLI, and only a test drives parse() with anything else.
|
|
190
|
-
const rawArgs = root.rawArgs ?? process.argv;
|
|
191
|
-
if (invokedAsImport(rawArgs)) {
|
|
192
|
-
console.error(chalk.yellow(importAliasLine(actionCommand === thisCommand ? undefined : actionCommand.name())));
|
|
193
|
-
}
|
|
194
|
-
})
|
|
195
212
|
.hook('preSubcommand', (thisCommand, subcommand) => {
|
|
196
213
|
// `--json` is honoured by the picker path only; a subcommand would parse it (Commander
|
|
197
214
|
// awards a parent flag to the parent) and then print its human report regardless.
|
|
@@ -309,7 +326,7 @@ export function registerImportCommand(program) {
|
|
|
309
326
|
console.log(chalk.green(`Approval queued as background job: ${result.job_id}`));
|
|
310
327
|
if (result.stream_url)
|
|
311
328
|
console.log(chalk.dim(`Stream: ${result.stream_url}`));
|
|
312
|
-
console.log(chalk.dim('Run `align
|
|
329
|
+
console.log(chalk.dim('Run `align connect list` to check progress.\n'));
|
|
313
330
|
}
|
|
314
331
|
else {
|
|
315
332
|
console.log(chalk.green(`Done. ${result.created_decisions} decision(s) added to the graph.\n`));
|
|
@@ -317,7 +334,7 @@ export function registerImportCommand(program) {
|
|
|
317
334
|
}
|
|
318
335
|
else {
|
|
319
336
|
console.log(chalk.dim(`Review at: ${resolveAppUrl(env)}/discover`));
|
|
320
|
-
console.log(chalk.dim(`Or approve all: align
|
|
337
|
+
console.log(chalk.dim(`Or approve all: align connect --all --approve\n`));
|
|
321
338
|
}
|
|
322
339
|
});
|
|
323
340
|
registerImportListCommands(importCmd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mcp.d.ts
CHANGED
|
@@ -2,7 +2,13 @@ import type { Command } from 'commander';
|
|
|
2
2
|
import { type EnvironmentConfig } from '../lib/config.js';
|
|
3
3
|
import { createGatewayClient } from '../lib/gateway-client.js';
|
|
4
4
|
export declare const ALIGN_MCP_INSTRUCTIONS: string;
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Server instructions for the environment actually being served.
|
|
7
|
+
*
|
|
8
|
+
* Budget: re-derive rather than trusting a number written here. mcp-graph-identity.test.ts
|
|
9
|
+
* pins both modes under 2048, and local is the binding case because its graph-identity suffix
|
|
10
|
+
* is the longest.
|
|
11
|
+
*/
|
|
6
12
|
export declare function instructionsFor(env: EnvironmentConfig): string;
|
|
7
13
|
/**
|
|
8
14
|
* Tool schemas with the retrieval tools' descriptions marked with the graph they search.
|
|
@@ -13,7 +19,7 @@ export declare function instructionsFor(env: EnvironmentConfig): string;
|
|
|
13
19
|
*/
|
|
14
20
|
export declare function toolSchemasFor(env: EnvironmentConfig): typeof TOOL_SCHEMAS;
|
|
15
21
|
export declare function serializeMcpResult(result: unknown): string;
|
|
16
|
-
export declare function dispatchTool(name: string, args: Record<string, unknown> | undefined, client: ReturnType<typeof createGatewayClient>, env: EnvironmentConfig): Promise<unknown>;
|
|
22
|
+
export declare function dispatchTool(name: string, args: Record<string, unknown> | undefined, client: ReturnType<typeof createGatewayClient>, env: EnvironmentConfig, createdBefore?: string): Promise<unknown>;
|
|
17
23
|
/**
|
|
18
24
|
* ALI-949: did this tool call hand the agent a real answer from the graph? The three tools
|
|
19
25
|
* an agent reaches for to GET something (ask, search, check) count; a non-empty conflicts
|
|
@@ -32,7 +38,7 @@ export declare function isFirstUsefulToolResult(name: string, result: unknown):
|
|
|
32
38
|
* make the agent the usual asker. The once-per-install guard is recordFunnelStage's, shared
|
|
33
39
|
* with `align ask`; fired without await so the tool response never waits on telemetry.
|
|
34
40
|
*/
|
|
35
|
-
export declare function createCallToolHandler(client: ReturnType<typeof createGatewayClient>, env: EnvironmentConfig): (request: {
|
|
41
|
+
export declare function createCallToolHandler(client: ReturnType<typeof createGatewayClient>, env: EnvironmentConfig, createdBefore?: string): (request: {
|
|
36
42
|
params: {
|
|
37
43
|
name: string;
|
|
38
44
|
arguments?: Record<string, unknown>;
|
|
@@ -69,6 +75,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
69
75
|
content?: undefined;
|
|
70
76
|
source_type?: undefined;
|
|
71
77
|
file_path?: undefined;
|
|
78
|
+
topic?: undefined;
|
|
72
79
|
};
|
|
73
80
|
required: string[];
|
|
74
81
|
};
|
|
@@ -99,6 +106,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
99
106
|
content?: undefined;
|
|
100
107
|
source_type?: undefined;
|
|
101
108
|
file_path?: undefined;
|
|
109
|
+
topic?: undefined;
|
|
102
110
|
};
|
|
103
111
|
required: string[];
|
|
104
112
|
};
|
|
@@ -129,6 +137,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
129
137
|
content?: undefined;
|
|
130
138
|
source_type?: undefined;
|
|
131
139
|
file_path?: undefined;
|
|
140
|
+
topic?: undefined;
|
|
132
141
|
};
|
|
133
142
|
required: string[];
|
|
134
143
|
};
|
|
@@ -155,6 +164,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
155
164
|
content?: undefined;
|
|
156
165
|
source_type?: undefined;
|
|
157
166
|
file_path?: undefined;
|
|
167
|
+
topic?: undefined;
|
|
158
168
|
};
|
|
159
169
|
required: string[];
|
|
160
170
|
};
|
|
@@ -187,6 +197,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
187
197
|
query?: undefined;
|
|
188
198
|
input?: undefined;
|
|
189
199
|
file_path?: undefined;
|
|
200
|
+
topic?: undefined;
|
|
190
201
|
};
|
|
191
202
|
required: string[];
|
|
192
203
|
};
|
|
@@ -213,6 +224,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
213
224
|
content?: undefined;
|
|
214
225
|
source_type?: undefined;
|
|
215
226
|
file_path?: undefined;
|
|
227
|
+
topic?: undefined;
|
|
216
228
|
};
|
|
217
229
|
required: string[];
|
|
218
230
|
};
|
|
@@ -236,6 +248,7 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
236
248
|
content?: undefined;
|
|
237
249
|
source_type?: undefined;
|
|
238
250
|
file_path?: undefined;
|
|
251
|
+
topic?: undefined;
|
|
239
252
|
};
|
|
240
253
|
required?: undefined;
|
|
241
254
|
};
|
|
@@ -265,9 +278,42 @@ export declare const TOOL_SCHEMAS: ({
|
|
|
265
278
|
decision_id?: undefined;
|
|
266
279
|
content?: undefined;
|
|
267
280
|
source_type?: undefined;
|
|
281
|
+
topic?: undefined;
|
|
282
|
+
};
|
|
283
|
+
required: string[];
|
|
284
|
+
};
|
|
285
|
+
} | {
|
|
286
|
+
name: string;
|
|
287
|
+
annotations: {
|
|
288
|
+
readonly readOnlyHint: true;
|
|
289
|
+
readonly destructiveHint: false;
|
|
290
|
+
};
|
|
291
|
+
description: string;
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: string;
|
|
294
|
+
properties: {
|
|
295
|
+
topic: {
|
|
296
|
+
type: string;
|
|
297
|
+
description: string;
|
|
298
|
+
};
|
|
299
|
+
limit: {
|
|
300
|
+
type: string;
|
|
301
|
+
description: string;
|
|
302
|
+
default?: undefined;
|
|
303
|
+
};
|
|
304
|
+
diff?: undefined;
|
|
305
|
+
context?: undefined;
|
|
306
|
+
question?: undefined;
|
|
307
|
+
query?: undefined;
|
|
308
|
+
input?: undefined;
|
|
309
|
+
decision_id?: undefined;
|
|
310
|
+
content?: undefined;
|
|
311
|
+
source_type?: undefined;
|
|
312
|
+
file_path?: undefined;
|
|
268
313
|
};
|
|
269
314
|
required: string[];
|
|
270
315
|
};
|
|
271
316
|
})[];
|
|
317
|
+
export declare function validateCreatedBeforeFlag(value: string, env: EnvironmentConfig): void;
|
|
272
318
|
export declare function registerMcpCommand(program: Command): void;
|
|
273
319
|
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -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;AAQzC,OAAO,EAAqB,KAAK,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,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;AAQzC,OAAO,EAAqB,KAAK,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AA+B/D,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AA+CF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAS9D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,YAAY,CAkC1E;AAOD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAE1D;AAMD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC9C,GAAG,EAAE,iBAAiB,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAuGlB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAU9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAC9C,GAAG,EAAE,iBAAiB,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAS7I;AAmBD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+JxB,CAAC;AAyCF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAkBrF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkEzD"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -13,18 +13,42 @@ import { commandIntro } from '../lib/brand.js';
|
|
|
13
13
|
import { recordFunnelStage } from '../lib/usage-telemetry.js';
|
|
14
14
|
import { inviteNudgeLine } from '../lib/invite-prompt.js';
|
|
15
15
|
import { renderMcpInstructions } from '../lib/mcp-instructions.shared.js';
|
|
16
|
+
import { DECISION_RATIONALE_TOOL, DECISION_TIMELINE_TOOL, shapeDecisionRationale, shapeTopicTimeline, STORY_GATE, TOPIC_TIMELINE_TOOL, } from '../lib/mcp-timeline-tools.js';
|
|
16
17
|
// Server-level instructions (ALI-120): surfaced to the agent so it reaches for Align
|
|
17
18
|
// proactively - without the user prompting - the moment this MCP server is connected.
|
|
18
19
|
//
|
|
19
20
|
// ONE text with the hosted server (ALI-952): the shared body lives in
|
|
20
21
|
// mcp-instructions.shared.ts, byte-identical to align-stack's copy and pinned by
|
|
21
22
|
// mcp-instructions-parity.test.ts. This server only supplies its names for the shared
|
|
22
|
-
// tokens
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
23
|
+
// tokens, plus the per-server lines for tools whose NAME differs between the two servers.
|
|
24
|
+
// Every tool it exposes is one the hosted server also has; the remaining hosted-only tools
|
|
25
|
+
// (check_proposed_action, rate_conflict, coach) are appended on that side.
|
|
26
|
+
//
|
|
27
|
+
// ALI-1070 added the first per-server line here: this server now exposes the topic timeline,
|
|
28
|
+
// so it carries the hosted guidance sentence rendered with ITS name for the tool. That line
|
|
29
|
+
// is CLOUD ONLY (see instructionsFor) because local mode has no implementation for it. The
|
|
30
|
+
// graph-identity suffix is also added per environment by instructionsFor, and the whole
|
|
31
|
+
// rendered text stays under the ~2KB Claude Code truncates server instructions to
|
|
32
|
+
// (mcp-graph-identity.test.ts).
|
|
27
33
|
export const ALIGN_MCP_INSTRUCTIONS = renderMcpInstructions({ check_alignment: 'align_check_alignment', search: 'align_ask' }, []);
|
|
34
|
+
/**
|
|
35
|
+
* F2 (Copilot, #296 inline at mcp.ts:52): the topic-timeline guidance is CLOUD ONLY.
|
|
36
|
+
*
|
|
37
|
+
* The first port put this line in the shared base, which `instructionsFor` serves to BOTH
|
|
38
|
+
* modes. Local mode has no `getTopicTimeline` - the local-mode Proxy throws on every call, and
|
|
39
|
+
* mcp-timeline-trio-local.test.ts measures exactly that - so the line shipped a
|
|
40
|
+
* guaranteed-fail instruction to every local user. An instruction naming a tool that cannot
|
|
41
|
+
* work is the defect this trio was ported as a trio to avoid, one level up.
|
|
42
|
+
*
|
|
43
|
+
* It stays a per-server line rather than moving into mcp-instructions.shared.ts because the
|
|
44
|
+
* two servers spell this tool differently (`get_topic_timeline` hosted,
|
|
45
|
+
* `align_get_topic_timeline` here), so it cannot live in a text with one spelling. align-stack
|
|
46
|
+
* keeps its own copy in HOSTED_ONLY_LINES for the same reason, which is why the byte-identical
|
|
47
|
+
* parity test is unaffected on both sides.
|
|
48
|
+
*/
|
|
49
|
+
const CLOUD_ONLY_LINES = [
|
|
50
|
+
`- For "the story on X" or "how did we end up here", call ${TOPIC_TIMELINE_TOOL} - it returns the whole supersession chain in one call.`,
|
|
51
|
+
];
|
|
28
52
|
/**
|
|
29
53
|
* Which decision graph THIS server reads, appended to the base instructions.
|
|
30
54
|
*
|
|
@@ -48,9 +72,18 @@ function graphIdentity(env) {
|
|
|
48
72
|
// graphs and answer the same question differently.
|
|
49
73
|
return `\n\nThis server reads the hosted Align graph at ${env.gatewayUrl}.`;
|
|
50
74
|
}
|
|
51
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Server instructions for the environment actually being served.
|
|
77
|
+
*
|
|
78
|
+
* Budget: re-derive rather than trusting a number written here. mcp-graph-identity.test.ts
|
|
79
|
+
* pins both modes under 2048, and local is the binding case because its graph-identity suffix
|
|
80
|
+
* is the longest.
|
|
81
|
+
*/
|
|
52
82
|
export function instructionsFor(env) {
|
|
53
|
-
|
|
83
|
+
const base = env.mode === 'local-embedded'
|
|
84
|
+
? ALIGN_MCP_INSTRUCTIONS
|
|
85
|
+
: renderMcpInstructions({ check_alignment: 'align_check_alignment', search: 'align_ask' }, CLOUD_ONLY_LINES);
|
|
86
|
+
return base + graphIdentity(env);
|
|
54
87
|
}
|
|
55
88
|
/**
|
|
56
89
|
* Tool schemas with the retrieval tools' descriptions marked with the graph they search.
|
|
@@ -72,9 +105,27 @@ export function toolSchemasFor(env) {
|
|
|
72
105
|
'results cover the same topic, prefer the one with the most recent decided_at or ' +
|
|
73
106
|
'created_at. That is a heuristic, not a verified status.'
|
|
74
107
|
: ` Searches the hosted Align graph at ${env.gatewayUrl}.`;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
108
|
+
/**
|
|
109
|
+
* ALI-1070 follow-up: the two tools local mode cannot serve say so.
|
|
110
|
+
*
|
|
111
|
+
* They stay REGISTERED - deregistering per mode is a larger change and the Proxy stub is
|
|
112
|
+
* honest when reached. What was missing is any way for an agent reading descriptions to know
|
|
113
|
+
* before it calls. The rationale tool is deliberately NOT marked: it works locally, because
|
|
114
|
+
* the local client implements getDecision, so a blanket warning over all three would be
|
|
115
|
+
* false about one of them.
|
|
116
|
+
*/
|
|
117
|
+
const cloudOnly = local
|
|
118
|
+
? ' NOT AVAILABLE IN LOCAL MODE: this local graph has no implementation for it, so the call will fail. Use align_ask to search the local graph instead, or a cloud environment for this tool.'
|
|
119
|
+
: '';
|
|
120
|
+
return TOOL_SCHEMAS.map(tool => {
|
|
121
|
+
if (tool.name === 'align_ask' || tool.name === 'align_search') {
|
|
122
|
+
return { ...tool, description: tool.description + suffix };
|
|
123
|
+
}
|
|
124
|
+
if (cloudOnly && (tool.name === TOPIC_TIMELINE_TOOL || tool.name === DECISION_TIMELINE_TOOL)) {
|
|
125
|
+
return { ...tool, description: tool.description + cloudOnly };
|
|
126
|
+
}
|
|
127
|
+
return tool;
|
|
128
|
+
});
|
|
78
129
|
}
|
|
79
130
|
// Heavy internal fields that bloat the model's context without helping it reason.
|
|
80
131
|
// MCP responses go straight into the agent's context window, so we omit these and
|
|
@@ -87,7 +138,7 @@ export function serializeMcpResult(result) {
|
|
|
87
138
|
// and pure so the routing - argument extraction, the align_capture URL->platform
|
|
88
139
|
// classifier, the local-mode raw-text rule, and the unknown-tool guard - is testable
|
|
89
140
|
// without standing up an MCP server. Returns the raw result; the caller serializes it.
|
|
90
|
-
export async function dispatchTool(name, args, client, env) {
|
|
141
|
+
export async function dispatchTool(name, args, client, env, createdBefore) {
|
|
91
142
|
// A required argument that never arrived used to reach the implementation and fail
|
|
92
143
|
// from wherever the undefined landed: a missing `diff` surfaced as the tokenizer's
|
|
93
144
|
// `text may not be null or undefined`, raised to the agent as JSON-RPC -32603. That
|
|
@@ -112,7 +163,7 @@ export async function dispatchTool(name, args, client, env) {
|
|
|
112
163
|
// semantic search (ALI-105); align_search's `query` is the same text under the old name.
|
|
113
164
|
case 'align_search':
|
|
114
165
|
case 'align_ask':
|
|
115
|
-
return client.searchDecisions((args?.['question'] ?? args?.['query']), args?.['limit'] ?? 8);
|
|
166
|
+
return client.searchDecisions((args?.['question'] ?? args?.['query']), args?.['limit'] ?? 8, createdBefore);
|
|
116
167
|
case 'align_capture': {
|
|
117
168
|
const input = args?.['input'];
|
|
118
169
|
let platform = 'cli';
|
|
@@ -147,7 +198,37 @@ export async function dispatchTool(name, args, client, env) {
|
|
|
147
198
|
case 'align_get_conflicts':
|
|
148
199
|
return client.getConflicts();
|
|
149
200
|
case 'align_get_related_decisions':
|
|
150
|
-
return client.searchDecisions(`${args?.['file_path']} ${args?.['context'] ?? ''}`, 5);
|
|
201
|
+
return client.searchDecisions(`${args?.['file_path']} ${args?.['context'] ?? ''}`, 5, createdBefore);
|
|
202
|
+
/**
|
|
203
|
+
* ALI-1070. The gateway already returns the whole story structure; what this arm adds is
|
|
204
|
+
* the projection and the RENDERING CONTRACT (mcp-timeline-tools.ts). Rows without the
|
|
205
|
+
* contract give a customer the data and not the ability to tell a supersession from a
|
|
206
|
+
* correction, which is the AlignBench split this port is measured on - so the shaping is
|
|
207
|
+
* not optional polish, it is the deliverable.
|
|
208
|
+
*
|
|
209
|
+
* `limit` is passed through undefined when the agent omitted it: the default lives in the
|
|
210
|
+
* client, so there is one writer of it.
|
|
211
|
+
*/
|
|
212
|
+
case TOPIC_TIMELINE_TOOL:
|
|
213
|
+
return shapeTopicTimeline(await client.getTopicTimeline(args?.['topic'], args?.['limit']), args?.['topic']);
|
|
214
|
+
/**
|
|
215
|
+
* Reuses getDecision - the hosted connector's getDecisionRationale is the same
|
|
216
|
+
* `GET /snapshots/:id`, so a second client method would be two writers of one call. It
|
|
217
|
+
* also means this tool WORKS IN LOCAL MODE for free: the local client implements
|
|
218
|
+
* getDecision, so the local-mode Proxy passes it straight through instead of throwing
|
|
219
|
+
* the cloud-only stub. The local row carries no decision_json, so the reasoning fields
|
|
220
|
+
* are thinner there - honest degradation, not a failure.
|
|
221
|
+
*/
|
|
222
|
+
case DECISION_RATIONALE_TOOL: {
|
|
223
|
+
// F7: PROJECTED, not returned raw. serializeMcpResult strips `decision_json`, which is
|
|
224
|
+
// where every field this tool promises lives - so the raw form answered with metadata
|
|
225
|
+
// and silently dropped the rationale. The raw id goes to the client (local mode does a
|
|
226
|
+
// database lookup with it); encoding is the HTTP boundary's job.
|
|
227
|
+
const row = await client.getDecision(args?.['decision_id']);
|
|
228
|
+
return shapeDecisionRationale(row, args?.['decision_id']);
|
|
229
|
+
}
|
|
230
|
+
case DECISION_TIMELINE_TOOL:
|
|
231
|
+
return client.getDecisionTimeline(args?.['decision_id']);
|
|
151
232
|
default:
|
|
152
233
|
throw new Error(`Unknown tool: ${name}`);
|
|
153
234
|
}
|
|
@@ -180,10 +261,10 @@ export function isFirstUsefulToolResult(name, result) {
|
|
|
180
261
|
* make the agent the usual asker. The once-per-install guard is recordFunnelStage's, shared
|
|
181
262
|
* with `align ask`; fired without await so the tool response never waits on telemetry.
|
|
182
263
|
*/
|
|
183
|
-
export function createCallToolHandler(client, env) {
|
|
264
|
+
export function createCallToolHandler(client, env, createdBefore) {
|
|
184
265
|
return async (request) => {
|
|
185
266
|
const { name, arguments: args } = request.params;
|
|
186
|
-
const result = await dispatchTool(name, args, client, env);
|
|
267
|
+
const result = await dispatchTool(name, args, client, env, createdBefore);
|
|
187
268
|
if (isFirstUsefulToolResult(name, result)) {
|
|
188
269
|
void recordFunnelStage(env, 'first_useful_decision', 'mcp');
|
|
189
270
|
}
|
|
@@ -306,7 +387,113 @@ export const TOOL_SCHEMAS = [
|
|
|
306
387
|
required: ['file_path'],
|
|
307
388
|
},
|
|
308
389
|
},
|
|
390
|
+
/**
|
|
391
|
+
* ALI-1070: the timeline trio, ported from the hosted server (mcp-align).
|
|
392
|
+
*
|
|
393
|
+
* APPENDED rather than ranked high on purpose. Order is the ranking an agent reads off
|
|
394
|
+
* tools/list, and the existing eight encode ALI-139's "prescription over retrieval"
|
|
395
|
+
* decision with the pre-flight check leading. Re-ranking that is a separate product call;
|
|
396
|
+
* the lever for routing an agent to the timeline tool is the instructions line above,
|
|
397
|
+
* which names it for exactly the questions it answers.
|
|
398
|
+
*
|
|
399
|
+
* All three are READS, so the write set stays at two (mcp-tool-annotations.test.ts).
|
|
400
|
+
*
|
|
401
|
+
* Registered next to each other, and the descriptions do the disambiguating, because the
|
|
402
|
+
* names are one word apart and an agent picks from descriptions alone.
|
|
403
|
+
*/
|
|
404
|
+
{
|
|
405
|
+
name: TOPIC_TIMELINE_TOOL,
|
|
406
|
+
annotations: READS,
|
|
407
|
+
// The full-render prose is GATED, not merely preceded by a compact sentence: this is the
|
|
408
|
+
// one surface some clients act on alone, and a description that says compact-by-default
|
|
409
|
+
// and then unconditionally prescribes the walk talks the default out of existence. The
|
|
410
|
+
// gate phrase is shared with the per-result message via STORY_GATE so the two surfaces
|
|
411
|
+
// cannot drift.
|
|
412
|
+
description: `Everything the team ever decided about a TOPIC, in time order, across every connected tool. Use for "what is the story on X", "how did we end up here", or onboarding onto an unfamiliar area. Includes superseded and archived decisions, because the retired past is what explains why the current answer is current. Not to be confused with ${DECISION_TIMELINE_TOOL}, which is the change history of ONE decision. Answer compactly by default: the current standard first in one sentence, the contested line when decisions disagree, up to three pivotal dated steps, a one-line chain summary, and the sharpest open question the chain leaves open - then offer the rest. Only when the user ${STORY_GATE} or asks the follow-up, render the full timeline: walk the supersession chain oldest first - which decision replaced which, active vs superseded - with each step's why from ${DECISION_RATIONALE_TOOL}, keep each decision's source_url inline with that decision rather than in a trailing sources list, put the status beside the title, and close with the still-open risks, each naming which decision it came from. When the payload carries \`still_open\`, those are the decisions' own stated open questions - close on them.`,
|
|
413
|
+
inputSchema: {
|
|
414
|
+
type: 'object',
|
|
415
|
+
properties: {
|
|
416
|
+
topic: { type: 'string', description: 'The topic to trace, e.g. "connection pooling" or "authentication strategy"' },
|
|
417
|
+
limit: { type: 'number', description: 'Max decisions to return (default 50, capped at 200)' },
|
|
418
|
+
},
|
|
419
|
+
required: ['topic'],
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
name: DECISION_RATIONALE_TOOL,
|
|
424
|
+
annotations: READS,
|
|
425
|
+
description: 'Retrieve the rationale, goals, risks, and context behind a specific decision. Use this when you need to understand WHY a decision was made - the reasoning, trade-offs, and constraints that led to it.',
|
|
426
|
+
inputSchema: {
|
|
427
|
+
type: 'object',
|
|
428
|
+
properties: {
|
|
429
|
+
decision_id: { type: 'string', description: 'The decision ID to retrieve rationale for' },
|
|
430
|
+
},
|
|
431
|
+
required: ['decision_id'],
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
name: DECISION_TIMELINE_TOOL,
|
|
436
|
+
annotations: READS,
|
|
437
|
+
description: 'Get the chronological history of events for a decision - when it was created, when conflicts were detected, when it was acknowledged or resolved. Use to understand how a decision has evolved over time.',
|
|
438
|
+
inputSchema: {
|
|
439
|
+
type: 'object',
|
|
440
|
+
properties: {
|
|
441
|
+
decision_id: { type: 'string', description: 'The decision ID to get history for' },
|
|
442
|
+
},
|
|
443
|
+
required: ['decision_id'],
|
|
444
|
+
},
|
|
445
|
+
},
|
|
309
446
|
];
|
|
447
|
+
/**
|
|
448
|
+
* ALI-1082: --created-before is a harness/audit-only bound (AlignBench's align arm passes
|
|
449
|
+
* it so it cannot see decisions the graph captured after a corpus item's frozen `asOf`).
|
|
450
|
+
* Fail closed at startup rather than silently accepting a value that does nothing:
|
|
451
|
+
*
|
|
452
|
+
* - Local-embedded mode has no server-side query to attach the bound to (the local graph
|
|
453
|
+
* answers from SQLite directly, not through the gateway route that enforces it), so a
|
|
454
|
+
* flag that appeared to work there would be lying.
|
|
455
|
+
* - Anything that is not an offset-bearing ISO-8601 instant is rejected the same way the
|
|
456
|
+
* gateway's own `created_before` filter rejects it (services/gateway/src/routes/
|
|
457
|
+
* decisions/smartSearchFilters.ts) - a bare calendar date (the shape the benchmark
|
|
458
|
+
* corpus's `asOf` field itself carries) is refused rather than coerced, because the
|
|
459
|
+
* caller must decide the instant in UTC, not have Postgres resolve a date-only literal
|
|
460
|
+
* against the session TimeZone.
|
|
461
|
+
*/
|
|
462
|
+
const OFFSET_ISO_PATTERN = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
|
|
463
|
+
// Copilot (#302, mcp.ts:514): the pattern above checks SHAPE, not that the digits form a
|
|
464
|
+
// real calendar instant - `Date.parse` silently rolls a non-existent day into the next
|
|
465
|
+
// month (`2026-02-31T00:00:00Z` -> 2026-03-03) instead of rejecting it, so a corrupted
|
|
466
|
+
// cutoff could pass the shape check and the fail-closed contract would be lying. This
|
|
467
|
+
// reconstructs the instant from its own matched components and rejects any value whose
|
|
468
|
+
// round trip does not land back on the digits the caller typed - which is what a bare
|
|
469
|
+
// `Date.parse` cannot distinguish from a value it silently normalised.
|
|
470
|
+
function isRealCalendarInstant(value, match) {
|
|
471
|
+
const [, year, month, day, hour, minute, second] = match.map(Number);
|
|
472
|
+
const asUtc = new Date(Date.UTC(year, month - 1, day, hour, minute, second));
|
|
473
|
+
if (Number.isNaN(asUtc.getTime()))
|
|
474
|
+
return false;
|
|
475
|
+
return (asUtc.getUTCFullYear() === year &&
|
|
476
|
+
asUtc.getUTCMonth() === month - 1 &&
|
|
477
|
+
asUtc.getUTCDate() === day &&
|
|
478
|
+
asUtc.getUTCHours() === hour &&
|
|
479
|
+
asUtc.getUTCMinutes() === minute &&
|
|
480
|
+
asUtc.getUTCSeconds() === second);
|
|
481
|
+
}
|
|
482
|
+
export function validateCreatedBeforeFlag(value, env) {
|
|
483
|
+
if (env.mode === 'local-embedded') {
|
|
484
|
+
throw new Error(`--created-before is not supported in local-embedded mode: the local graph has no ` +
|
|
485
|
+
`server-side query to enforce the bound against, so accepting it would silently do ` +
|
|
486
|
+
`nothing. Got: ${value}`);
|
|
487
|
+
}
|
|
488
|
+
const match = OFFSET_ISO_PATTERN.exec(value);
|
|
489
|
+
// The offset's own range (e.g. +99:99) and an out-of-range hour/minute/second (25:00,
|
|
490
|
+
// 00:61) are already rejected by Date.parse below - only the calendar-day case needs
|
|
491
|
+
// the reconstruction above, since JS normalises it instead of erroring.
|
|
492
|
+
if (!match || Number.isNaN(Date.parse(value)) || !isRealCalendarInstant(value, match)) {
|
|
493
|
+
throw new Error(`--created-before must be an offset-bearing ISO-8601 timestamp, e.g. ` +
|
|
494
|
+
`2026-08-11T00:00:00.000Z - a bare date is not enough, it must resolve to one real instant. Got: ${value}`);
|
|
495
|
+
}
|
|
496
|
+
}
|
|
310
497
|
export function registerMcpCommand(program) {
|
|
311
498
|
program
|
|
312
499
|
.command('mcp')
|
|
@@ -315,6 +502,7 @@ export function registerMcpCommand(program) {
|
|
|
315
502
|
.option('--setup', 'Interactively configure your MCP-capable agents to use Align as an MCP server')
|
|
316
503
|
.option('--install', 'Configure agents - alias for --setup')
|
|
317
504
|
.option('--remove', 'Remove Align from your agents\' MCP config')
|
|
505
|
+
.option('--created-before <iso>', 'Hide decisions captured at or after this ISO-8601 instant (benchmark/audit use)')
|
|
318
506
|
.addHelpText('after', `
|
|
319
507
|
Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
320
508
|
{
|
|
@@ -339,11 +527,20 @@ Claude Code config (~/.claude.json or workspace .mcp.json):
|
|
|
339
527
|
const resolvedEnv = resolveEnv(opts.env, { preferLocalEmbedded: true });
|
|
340
528
|
const env = config.getEnvironment(resolvedEnv);
|
|
341
529
|
const client = createGatewayClient(env);
|
|
530
|
+
// ALI-1082: fail closed BEFORE the server ever connects - a bound that silently does
|
|
531
|
+
// nothing is worse than no bound.
|
|
532
|
+
if (opts.createdBefore !== undefined) {
|
|
533
|
+
validateCreatedBeforeFlag(opts.createdBefore, env);
|
|
534
|
+
}
|
|
342
535
|
const server = new Server({ name: 'align', version }, { capabilities: { tools: {} }, instructions: instructionsFor(env) });
|
|
343
536
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: toolSchemasFor(env) }));
|
|
344
|
-
server.setRequestHandler(CallToolRequestSchema, createCallToolHandler(client, env));
|
|
537
|
+
server.setRequestHandler(CallToolRequestSchema, createCallToolHandler(client, env, opts.createdBefore));
|
|
345
538
|
// MCP protocol requires clean stdout; log startup to stderr
|
|
346
|
-
|
|
539
|
+
// ALI-1082: the cutoff is named in the banner whenever one is set, so a benchmark
|
|
540
|
+
// run's own transcript records that the bound was active - a bound nobody can see in
|
|
541
|
+
// the log is a bound nobody can audit afterwards.
|
|
542
|
+
const createdBeforeSuffix = opts.createdBefore !== undefined ? `, created-before: ${opts.createdBefore}` : '';
|
|
543
|
+
process.stderr.write(`align mcp server started (env: ${resolvedEnv}, gateway: ${env.gatewayUrl}${createdBeforeSuffix})\n`);
|
|
347
544
|
// ALI-938: a URL asks someone to go figure it out later; the invite command is
|
|
348
545
|
// something they can act on right there. See invite-prompt.ts.
|
|
349
546
|
process.stderr.write(`${inviteNudgeLine('value')}\n`);
|