carrick 0.3.65 → 0.3.67
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 +34 -0
- package/bin/carrick.mjs +9 -1
- package/dist/cli.d.ts +20 -2
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/contract.d.ts +40 -0
- package/dist/contract.js +4 -0
- package/dist/contract.js.map +1 -1
- package/dist/diagnostics.js +21 -2
- package/dist/diagnostics.js.map +1 -1
- package/dist/hook/post-edit.js +5 -1
- package/dist/hook/post-edit.js.map +1 -1
- package/dist/init/connect.js +10 -8
- package/dist/init/connect.js.map +1 -1
- package/dist/init/hosted.d.ts +23 -1
- package/dist/init/hosted.js +41 -32
- package/dist/init/hosted.js.map +1 -1
- package/dist/init/mcp.d.ts +35 -2
- package/dist/init/mcp.js +142 -15
- package/dist/init/mcp.js.map +1 -1
- package/dist/init/output.d.ts +71 -0
- package/dist/init/output.js +173 -0
- package/dist/init/output.js.map +1 -0
- package/dist/init/remove.d.ts +41 -0
- package/dist/init/remove.js +264 -0
- package/dist/init/remove.js.map +1 -0
- package/dist/init/repos.js +2 -2
- package/dist/init/repos.js.map +1 -1
- package/dist/init/run.d.ts +44 -30
- package/dist/init/run.js +160 -218
- package/dist/init/run.js.map +1 -1
- package/dist/init/settings.d.ts +15 -0
- package/dist/init/settings.js +38 -0
- package/dist/init/settings.js.map +1 -1
- package/dist/render.d.ts +24 -0
- package/dist/render.js +80 -1
- package/dist/render.js.map +1 -1
- package/package.json +8 -6
- package/sidecar/dist/src/capture/machinery.d.ts +10 -0
- package/sidecar/dist/src/capture/machinery.js +19 -9
- package/sidecar/dist/src/type-inferrer.d.ts +66 -4
- package/sidecar/dist/src/type-inferrer.js +249 -18
package/dist/init/hosted.js
CHANGED
|
@@ -30,7 +30,7 @@ import { nativeEnv, resolveNativeBinary } from "../native.js";
|
|
|
30
30
|
* in a sentence of its own. Its stdout is the index map, which this command
|
|
31
31
|
* summarises in its own words, so that is captured and dropped.
|
|
32
32
|
*/
|
|
33
|
-
function spawnNative(args) {
|
|
33
|
+
function spawnNative(args, quiet) {
|
|
34
34
|
const native = resolveNativeBinary();
|
|
35
35
|
if (!native.binary) {
|
|
36
36
|
return Promise.resolve({
|
|
@@ -39,7 +39,6 @@ function spawnNative(args) {
|
|
|
39
39
|
stderr: native.problem ?? "The Carrick scanner is not installed.",
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
const quiet = args.includes("--json");
|
|
43
42
|
return new Promise((resolve) => {
|
|
44
43
|
const child = spawn(native.binary, args, {
|
|
45
44
|
env: nativeEnv(),
|
|
@@ -56,7 +55,11 @@ function spawnNative(args) {
|
|
|
56
55
|
// Bounded: a scan of a large workspace prints thousands of lines, and
|
|
57
56
|
// all this holds them for is the sentence at the end.
|
|
58
57
|
stderr = `${stderr}${chunk}`.slice(-8192);
|
|
59
|
-
|
|
58
|
+
// Quiet under a spinner: a spinner owns its line and rewrites it, and a
|
|
59
|
+
// scanner line landing in the middle of that is a corrupted terminal.
|
|
60
|
+
// Where there is no spinner — a pipe, CI, an agent shell — the progress
|
|
61
|
+
// is the only sign a minutes-long read is alive (carrick#1021).
|
|
62
|
+
if (!quiet && !args.includes("--json"))
|
|
60
63
|
process.stderr.write(chunk);
|
|
61
64
|
});
|
|
62
65
|
child.on("error", (error) => resolve({ status: 1, stdout: "", stderr: error.message }));
|
|
@@ -71,6 +74,17 @@ function firstLine(text, fallback) {
|
|
|
71
74
|
.find((entry) => entry.length > 0);
|
|
72
75
|
return (line ?? fallback).replace(/^carrick(?: \w+)?: /, "");
|
|
73
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* A runner for the scanner, told whether the terminal is somebody else's.
|
|
79
|
+
*
|
|
80
|
+
* `quiet` is true while a spinner is showing: a spinner owns its line, and the
|
|
81
|
+
* scanner's progress landing in the middle of it corrupts the terminal. Without
|
|
82
|
+
* one — a pipe, CI, an agent's shell — the progress is the only sign a
|
|
83
|
+
* minutes-long read is alive (carrick#1021, carrick#1026).
|
|
84
|
+
*/
|
|
85
|
+
export function nativeRunner(quiet) {
|
|
86
|
+
return (args) => spawnNative(args, quiet);
|
|
87
|
+
}
|
|
74
88
|
/**
|
|
75
89
|
* Populate `.carrick/` from the hosted index, and say what arrived.
|
|
76
90
|
*
|
|
@@ -78,7 +92,7 @@ function firstLine(text, fallback) {
|
|
|
78
92
|
* wrote the proposal into — so the index this builds is the one every later
|
|
79
93
|
* read of that workspace finds.
|
|
80
94
|
*/
|
|
81
|
-
export async function downloadHostedIndex(workspace, run =
|
|
95
|
+
export async function downloadHostedIndex(workspace, run = nativeRunner(false)) {
|
|
82
96
|
const refreshed = await run(["refresh", "--workspace", workspace]);
|
|
83
97
|
if (refreshed.status !== 0) {
|
|
84
98
|
return { kind: "failed", problem: firstLine(refreshed.stderr, "the scanner gave no reason") };
|
|
@@ -104,13 +118,6 @@ export async function downloadHostedIndex(workspace, run = spawnNative) {
|
|
|
104
118
|
}
|
|
105
119
|
return { kind: "downloaded", services: enriched.length };
|
|
106
120
|
}
|
|
107
|
-
/**
|
|
108
|
-
* What init prints about it, indented into the closing block.
|
|
109
|
-
*
|
|
110
|
-
* Every branch states what happened and what this machine now holds. None of
|
|
111
|
-
* them forbids a command: the sentence that did told the reader not to run the
|
|
112
|
-
* only thing that would have given them an index (carrick#1020).
|
|
113
|
-
*/
|
|
114
121
|
/**
|
|
115
122
|
* Why a hosted index this machine asked for is not in the answer.
|
|
116
123
|
*
|
|
@@ -136,33 +143,35 @@ function stateClause(state) {
|
|
|
136
143
|
return `the hosted rows were not replayed (${state})`;
|
|
137
144
|
}
|
|
138
145
|
}
|
|
139
|
-
|
|
146
|
+
/**
|
|
147
|
+
* The one line init prints about it, and which marker it carries.
|
|
148
|
+
*
|
|
149
|
+
* Every branch states what happened and what this machine now holds. None of
|
|
150
|
+
* them forbids a command: the sentence that did told the reader not to run the
|
|
151
|
+
* only thing that would have given them an index (carrick#1020). A state with
|
|
152
|
+
* an instruction attached is a warning rather than a done line, and a read that
|
|
153
|
+
* produced nothing is a refusal (carrick#1026).
|
|
154
|
+
*
|
|
155
|
+
* This is the step's report, so it is also the line the spinner stops on: one
|
|
156
|
+
* line for the hosted read, in a terminal as everywhere else (carrick#1032).
|
|
157
|
+
*/
|
|
158
|
+
export function hostedReport(outcome) {
|
|
140
159
|
const plural = (count) => `${count} service${count === 1 ? "" : "s"}`;
|
|
141
160
|
switch (outcome.kind) {
|
|
142
161
|
case "downloaded":
|
|
143
|
-
return
|
|
144
|
-
` Hosted index for ${plural(outcome.services)} downloaded into .carrick/.`,
|
|
145
|
-
" `carrick status` says what it holds, and the hooks and the editor read it from there.",
|
|
146
|
-
" CI keeps the hosted copy current, so nothing was scanned into Carrick here and",
|
|
147
|
-
" nothing was paid for.",
|
|
148
|
-
];
|
|
162
|
+
return { kind: "done", text: `Hosted index for ${plural(outcome.services)} downloaded into .carrick/` };
|
|
149
163
|
case "version_mismatch":
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
];
|
|
164
|
+
return {
|
|
165
|
+
kind: "warn",
|
|
166
|
+
text: "Hosted index is older than this CLI: run `carrick index --detach` once from main",
|
|
167
|
+
};
|
|
155
168
|
case "local_only":
|
|
156
|
-
return
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
169
|
+
return {
|
|
170
|
+
kind: "warn",
|
|
171
|
+
text: `.carrick/ holds ${plural(outcome.services)} as this machine read them; ${stateClause(outcome.state)}`,
|
|
172
|
+
};
|
|
160
173
|
case "failed":
|
|
161
|
-
return
|
|
162
|
-
` The hosted index could not be read into .carrick/: ${outcome.problem}.`,
|
|
163
|
-
" `carrick status` has nothing to answer from until it can be; run carrick init again",
|
|
164
|
-
" once that is fixed.",
|
|
165
|
-
];
|
|
174
|
+
return { kind: "refuse", text: `Hosted index could not be read into .carrick/: ${outcome.problem}` };
|
|
166
175
|
}
|
|
167
176
|
}
|
|
168
177
|
//# sourceMappingURL=hosted.js.map
|
package/dist/init/hosted.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/init/hosted.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;AAClE,kBAAkB;AAClB,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,sEAAsE;AACtE,4EAA4E;AAC5E,oEAAoE;AACpE,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;AACzE,kBAAkB;AAElB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/init/hosted.ts"],"names":[],"mappings":"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"}
|
package/dist/init/mcp.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
export declare const MCP_URL = "https://api.carrick.tools/mcp";
|
|
2
2
|
export declare const MCP_NAME = "carrick";
|
|
3
3
|
export declare const MCP_LINE = "claude mcp add --scope user --transport http carrick https://api.carrick.tools/mcp";
|
|
4
|
+
/** The host an entry has to name before `carrick remove` will take it out. */
|
|
5
|
+
export declare const MCP_HOST: string;
|
|
4
6
|
/** Everything this module touches outside itself, so a test can state a machine. */
|
|
5
7
|
export type McpEnvironment = {
|
|
6
8
|
onPath: (command: string) => boolean;
|
|
7
9
|
/** Exit status of a command, or null when it could not be started. */
|
|
8
10
|
run: (command: string, args: string[]) => number | null;
|
|
11
|
+
/** A command's exit status and what it printed, for a read we have to parse. */
|
|
12
|
+
capture: (command: string, args: string[]) => {
|
|
13
|
+
status: number | null;
|
|
14
|
+
stdout: string;
|
|
15
|
+
};
|
|
9
16
|
home: string;
|
|
10
17
|
platform: NodeJS.Platform;
|
|
11
18
|
appData: string | null;
|
|
@@ -46,5 +53,31 @@ export declare function mergeServerEntry(client: FileClient, existing: string |
|
|
|
46
53
|
};
|
|
47
54
|
/** Configure every client this machine has. Empty when it has none. */
|
|
48
55
|
export declare function connectMcpClients(env?: McpEnvironment): McpOutcome[];
|
|
49
|
-
/**
|
|
50
|
-
export
|
|
56
|
+
/** What happened for one client when `carrick remove` ran (carrick#1034). */
|
|
57
|
+
export type McpRemoval = {
|
|
58
|
+
client: string;
|
|
59
|
+
/**
|
|
60
|
+
* `kept` is the one that matters: a server called `carrick` that names some
|
|
61
|
+
* other host is somebody else's, and this command will not take it out.
|
|
62
|
+
*/
|
|
63
|
+
state: "removed" | "absent" | "kept" | "failed";
|
|
64
|
+
detail: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* The inverse of `mergeServerEntry`: our entry out of a client's own file.
|
|
68
|
+
*
|
|
69
|
+
* Both containers are searched, for the same reason the writer reads the one
|
|
70
|
+
* the file already uses — the entry is wherever this client put it, not
|
|
71
|
+
* wherever the default says. The removal is gated on the URL: a server called
|
|
72
|
+
* `carrick` pointing at some other host was never written by `carrick init`,
|
|
73
|
+
* and a command that removes it is a command nobody can run safely.
|
|
74
|
+
*
|
|
75
|
+
* A container this leaves empty goes with the entry, so a file init created
|
|
76
|
+
* comes back out as the document it was merged into.
|
|
77
|
+
*/
|
|
78
|
+
export declare function removeServerEntry(existing: string | null): {
|
|
79
|
+
body: string;
|
|
80
|
+
state: "removed" | "absent" | "kept";
|
|
81
|
+
};
|
|
82
|
+
/** Take our server out of every client this machine has. */
|
|
83
|
+
export declare function disconnectMcpClients(env?: McpEnvironment): McpRemoval[];
|
package/dist/init/mcp.js
CHANGED
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
// directories are created by the client, never by us. Nothing here may throw:
|
|
24
24
|
// a client that cannot be configured falls back to a printed line, because a
|
|
25
25
|
// failed MCP write must not fail a setup that has already written files.
|
|
26
|
+
//
|
|
27
|
+
// The other half of each writer is here too, because `carrick remove` has to
|
|
28
|
+
// undo exactly what was done and by the same rules (carrick#1034): the same
|
|
29
|
+
// detection, the same container the file uses, and one gate of its own — an
|
|
30
|
+
// entry is only removed when it points at this server's host.
|
|
26
31
|
import fs from "node:fs";
|
|
27
32
|
import os from "node:os";
|
|
28
33
|
import path from "node:path";
|
|
@@ -30,6 +35,8 @@ import { spawnSync } from "node:child_process";
|
|
|
30
35
|
export const MCP_URL = "https://api.carrick.tools/mcp";
|
|
31
36
|
export const MCP_NAME = "carrick";
|
|
32
37
|
export const MCP_LINE = `claude mcp add --scope user --transport http ${MCP_NAME} ${MCP_URL}`;
|
|
38
|
+
/** The host an entry has to name before `carrick remove` will take it out. */
|
|
39
|
+
export const MCP_HOST = new URL(MCP_URL).hostname;
|
|
33
40
|
export function realEnvironment() {
|
|
34
41
|
return {
|
|
35
42
|
onPath: (command) => spawnSync(process.platform === "win32" ? "where" : "which", [command], {
|
|
@@ -40,6 +47,10 @@ export function realEnvironment() {
|
|
|
40
47
|
// A command that hangs or asks a question reads as one that did not
|
|
41
48
|
// configure anything, and the line to run by hand is printed instead.
|
|
42
49
|
run: (command, args) => spawnSync(command, args, { stdio: "ignore", timeout: 15_000 }).status,
|
|
50
|
+
capture: (command, args) => {
|
|
51
|
+
const result = spawnSync(command, args, { encoding: "utf8", timeout: 15_000 });
|
|
52
|
+
return { status: result.status, stdout: result.stdout ?? "" };
|
|
53
|
+
},
|
|
43
54
|
home: os.homedir(),
|
|
44
55
|
platform: process.platform,
|
|
45
56
|
appData: process.env["APPDATA"] ?? null,
|
|
@@ -214,22 +225,138 @@ export function connectMcpClients(env = realEnvironment()) {
|
|
|
214
225
|
}
|
|
215
226
|
return outcomes;
|
|
216
227
|
}
|
|
217
|
-
/** The
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
/** The URL an entry names, whichever key this client's file spells it with. */
|
|
229
|
+
function entryUrl(entry) {
|
|
230
|
+
const url = entry["url"] ?? entry["serverUrl"];
|
|
231
|
+
return typeof url === "string" ? url : null;
|
|
232
|
+
}
|
|
233
|
+
/** Whether a URL points at the Carrick MCP server this package installs. */
|
|
234
|
+
function isCarrickUrl(url) {
|
|
235
|
+
if (url === null)
|
|
236
|
+
return false;
|
|
237
|
+
try {
|
|
238
|
+
return new URL(url).hostname === MCP_HOST;
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* The inverse of `mergeServerEntry`: our entry out of a client's own file.
|
|
246
|
+
*
|
|
247
|
+
* Both containers are searched, for the same reason the writer reads the one
|
|
248
|
+
* the file already uses — the entry is wherever this client put it, not
|
|
249
|
+
* wherever the default says. The removal is gated on the URL: a server called
|
|
250
|
+
* `carrick` pointing at some other host was never written by `carrick init`,
|
|
251
|
+
* and a command that removes it is a command nobody can run safely.
|
|
252
|
+
*
|
|
253
|
+
* A container this leaves empty goes with the entry, so a file init created
|
|
254
|
+
* comes back out as the document it was merged into.
|
|
255
|
+
*/
|
|
256
|
+
export function removeServerEntry(existing) {
|
|
257
|
+
const source = existing === null || existing.trim() === "" ? "{}" : existing;
|
|
258
|
+
const document = JSON.parse(source);
|
|
259
|
+
if (!isRecord(document))
|
|
260
|
+
throw new Error("the file is not a JSON object");
|
|
261
|
+
const container = ["mcpServers", "servers"].find((key) => {
|
|
262
|
+
const servers = document[key];
|
|
263
|
+
return isRecord(servers) && MCP_NAME in servers;
|
|
264
|
+
});
|
|
265
|
+
if (container === undefined)
|
|
266
|
+
return { body: source, state: "absent" };
|
|
267
|
+
const servers = { ...document[container] };
|
|
268
|
+
const entry = servers[MCP_NAME];
|
|
269
|
+
if (!isRecord(entry) || !isCarrickUrl(entryUrl(entry))) {
|
|
270
|
+
return { body: source, state: "kept" };
|
|
271
|
+
}
|
|
272
|
+
delete servers[MCP_NAME];
|
|
273
|
+
const remaining = {};
|
|
274
|
+
for (const [key, value] of Object.entries(document)) {
|
|
275
|
+
if (key === container) {
|
|
276
|
+
// An empty container is a key that says nothing; the writer leaves no
|
|
277
|
+
// empty group behind either (`settings.ts`).
|
|
278
|
+
if (Object.keys(servers).length > 0)
|
|
279
|
+
remaining[key] = servers;
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
remaining[key] = value;
|
|
283
|
+
}
|
|
284
|
+
return { body: `${JSON.stringify(remaining, null, 2)}\n`, state: "removed" };
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Claude Code, through the command it ships.
|
|
288
|
+
*
|
|
289
|
+
* `mcp get` is read first for the same reason the writer reads it: it is the
|
|
290
|
+
* only statement of what this machine actually holds, and its URL line is what
|
|
291
|
+
* gates the removal. A server in another scope — a project's `.mcp.json`, a
|
|
292
|
+
* local one — is not what `carrick init` wrote, so the removal names the user
|
|
293
|
+
* scope and a failure prints the line that removes whatever is left.
|
|
294
|
+
*/
|
|
295
|
+
function disconnectClaudeCode(env) {
|
|
296
|
+
if (!env.onPath("claude") || !env.exists(path.join(env.home, ".claude")))
|
|
297
|
+
return null;
|
|
298
|
+
const read = env.capture("claude", ["mcp", "get", MCP_NAME]);
|
|
299
|
+
if (read.status !== 0)
|
|
300
|
+
return { client: "Claude Code", state: "absent", detail: "no carrick server" };
|
|
301
|
+
if (!read.stdout.includes(MCP_HOST)) {
|
|
302
|
+
return {
|
|
303
|
+
client: "Claude Code",
|
|
304
|
+
state: "kept",
|
|
305
|
+
detail: `"${MCP_NAME}" there does not point at ${MCP_HOST}, so it was left alone`,
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
const status = env.run("claude", ["mcp", "remove", "--scope", "user", MCP_NAME]);
|
|
309
|
+
return status === 0
|
|
310
|
+
? { client: "Claude Code", state: "removed", detail: "MCP server removed for this user" }
|
|
311
|
+
: {
|
|
312
|
+
client: "Claude Code",
|
|
313
|
+
state: "failed",
|
|
314
|
+
detail: `claude mcp remove ${MCP_NAME}`,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function disconnectFileClient(env, client) {
|
|
318
|
+
const directory = client.directory(env);
|
|
319
|
+
const file = client.file(env);
|
|
320
|
+
if (directory === null || file === null)
|
|
321
|
+
return null;
|
|
322
|
+
if (!env.exists(directory) && !env.exists(file))
|
|
323
|
+
return null;
|
|
324
|
+
const existing = env.readFile(file);
|
|
325
|
+
if (existing === null)
|
|
326
|
+
return null;
|
|
327
|
+
try {
|
|
328
|
+
const { body, state } = removeServerEntry(existing);
|
|
329
|
+
if (state === "absent")
|
|
330
|
+
return { client: client.name, state, detail: `no carrick server in ${file}` };
|
|
331
|
+
if (state === "kept") {
|
|
332
|
+
return {
|
|
333
|
+
client: client.name,
|
|
334
|
+
state,
|
|
335
|
+
detail: `"${MCP_NAME}" in ${file} does not point at ${MCP_HOST}, so it was left alone`,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
env.writeFile(file, body);
|
|
339
|
+
return { client: client.name, state: "removed", detail: file };
|
|
226
340
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
341
|
+
catch {
|
|
342
|
+
return {
|
|
343
|
+
client: client.name,
|
|
344
|
+
state: "failed",
|
|
345
|
+
detail: `${file} is not valid JSON. Remove "${MCP_NAME}" there by hand.`,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/** Take our server out of every client this machine has. */
|
|
350
|
+
export function disconnectMcpClients(env = realEnvironment()) {
|
|
351
|
+
const removals = [];
|
|
352
|
+
const claude = disconnectClaudeCode(env);
|
|
353
|
+
if (claude)
|
|
354
|
+
removals.push(claude);
|
|
355
|
+
for (const client of FILE_CLIENTS) {
|
|
356
|
+
const removal = disconnectFileClient(env, client);
|
|
357
|
+
if (removal)
|
|
358
|
+
removals.push(removal);
|
|
231
359
|
}
|
|
232
|
-
|
|
233
|
-
return lines;
|
|
360
|
+
return removals;
|
|
234
361
|
}
|
|
235
362
|
//# sourceMappingURL=mcp.js.map
|
package/dist/init/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/init/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/init/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Writable } from "node:stream";
|
|
2
|
+
export declare const DONE = "\u25C7";
|
|
3
|
+
export declare const WARN = "\u25B2";
|
|
4
|
+
export declare const REFUSE = "\u25A0";
|
|
5
|
+
export declare const DOCS = "https://docs.carrick.tools/quickstart";
|
|
6
|
+
/**
|
|
7
|
+
* What a step's work turned out to be: the line, and the marker it carries.
|
|
8
|
+
*
|
|
9
|
+
* The three kinds are the three markers, and they are the same three
|
|
10
|
+
* [`InitOutput`] prints by hand — a step is one of these lines, produced by
|
|
11
|
+
* work rather than by a decision already made.
|
|
12
|
+
*/
|
|
13
|
+
export type StepReport = {
|
|
14
|
+
kind: "done" | "warn" | "refuse";
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
/** Everything `init` prints or asks. */
|
|
18
|
+
export type InitOutput = {
|
|
19
|
+
/** A thing this run did. */
|
|
20
|
+
done(text: string): void;
|
|
21
|
+
/** Done, but something needs attention: the text says what to do. */
|
|
22
|
+
warn(text: string): void;
|
|
23
|
+
/** Not done: the text says why. */
|
|
24
|
+
refuse(text: string): void;
|
|
25
|
+
/** A line with no state of its own — a browser step, a list, a prompt. */
|
|
26
|
+
say(text: string): void;
|
|
27
|
+
/** The closing block: a title and the lines under it. */
|
|
28
|
+
note(title: string, body: string[]): void;
|
|
29
|
+
/**
|
|
30
|
+
* Run `work`, showing progress while it runs, and report what it did.
|
|
31
|
+
*
|
|
32
|
+
* One line for the whole step, whichever rendering this is: `report` turns
|
|
33
|
+
* the work's value into the line and the marker, and a spinner stops as that
|
|
34
|
+
* marker rather than repeating the label it started with (carrick#1032).
|
|
35
|
+
*/
|
|
36
|
+
step<T>(label: string, work: () => Promise<T>, report: (value: T) => StepReport): Promise<T>;
|
|
37
|
+
/** Yes or no, defaulting to yes, as the old readline prompt did. */
|
|
38
|
+
confirm(question: string): Promise<boolean>;
|
|
39
|
+
/** A typed answer, for the questions whose answer is not yes or no. */
|
|
40
|
+
ask(question: string): Promise<string>;
|
|
41
|
+
/** Dim a fragment, where this rendering has colour to dim it with. */
|
|
42
|
+
accent(text: string): string;
|
|
43
|
+
/** Whether the work under `step` may write to the terminal itself. */
|
|
44
|
+
readonly quiet: boolean;
|
|
45
|
+
};
|
|
46
|
+
/** Plain text: the same lines, no spinner, no colour, no gutter. */
|
|
47
|
+
export declare function plainOutput(write?: (text: string) => void): InitOutput;
|
|
48
|
+
/**
|
|
49
|
+
* clack's rendering, for a terminal.
|
|
50
|
+
*
|
|
51
|
+
* `output` is where the rendering goes. It is threaded into every clack call
|
|
52
|
+
* rather than left to the library's default because that is the only way this
|
|
53
|
+
* rendering can be read back: a terminal's own bytes are not capturable, and
|
|
54
|
+
* the plain one — which every executable test spawns — is a different renderer
|
|
55
|
+
* with different lines. A test that hands this a stream is the only thing that
|
|
56
|
+
* sees the interactive markers at all (carrick#1032).
|
|
57
|
+
*/
|
|
58
|
+
export declare function interactiveOutput(output?: Writable): InitOutput;
|
|
59
|
+
/**
|
|
60
|
+
* The rendering this terminal gets.
|
|
61
|
+
*
|
|
62
|
+
* stdout decides, not stdin: a run whose output is piped or captured is read
|
|
63
|
+
* as text by whatever holds the other end, and a spinner's rewrites and box
|
|
64
|
+
* art are noise there even when a terminal is still attached to the input.
|
|
65
|
+
*
|
|
66
|
+
* A width of zero is the second half of the test, and it is not hypothetical: a
|
|
67
|
+
* pty with no window size — which is what `script` and several agent harnesses
|
|
68
|
+
* hand a child — reports `isTTY` true and `columns` 0, and clack then wraps its
|
|
69
|
+
* box to one character per line. Measured on macOS, 2026-09-13 (carrick#1026).
|
|
70
|
+
*/
|
|
71
|
+
export declare function createOutput(tty?: boolean): InitOutput;
|