carrick 0.3.82 → 0.3.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +62 -30
  2. package/bin/carrick.mjs +45 -2
  3. package/dist/contract.d.ts +17 -0
  4. package/dist/contract.js.map +1 -1
  5. package/dist/hook/apply-patch.d.ts +13 -0
  6. package/dist/hook/apply-patch.js +100 -0
  7. package/dist/hook/apply-patch.js.map +1 -0
  8. package/dist/hook/post-edit.d.ts +30 -1
  9. package/dist/hook/post-edit.js +95 -24
  10. package/dist/hook/post-edit.js.map +1 -1
  11. package/dist/hook/reuse.d.ts +97 -0
  12. package/dist/hook/reuse.js +245 -0
  13. package/dist/hook/reuse.js.map +1 -0
  14. package/dist/hook/stop.d.ts +3 -0
  15. package/dist/hook/stop.js +76 -0
  16. package/dist/hook/stop.js.map +1 -0
  17. package/dist/hook/user-prompt.d.ts +9 -0
  18. package/dist/hook/user-prompt.js +79 -0
  19. package/dist/hook/user-prompt.js.map +1 -0
  20. package/dist/init/codex.d.ts +51 -0
  21. package/dist/init/codex.js +167 -0
  22. package/dist/init/codex.js.map +1 -0
  23. package/dist/init/connect.d.ts +13 -0
  24. package/dist/init/connect.js +21 -15
  25. package/dist/init/connect.js.map +1 -1
  26. package/dist/init/doctor.d.ts +57 -0
  27. package/dist/init/doctor.js +132 -3
  28. package/dist/init/doctor.js.map +1 -1
  29. package/dist/init/files.d.ts +15 -0
  30. package/dist/init/files.js +20 -1
  31. package/dist/init/files.js.map +1 -1
  32. package/dist/init/hosted.d.ts +30 -5
  33. package/dist/init/hosted.js +75 -9
  34. package/dist/init/hosted.js.map +1 -1
  35. package/dist/init/mcp.d.ts +45 -30
  36. package/dist/init/mcp.js +47 -88
  37. package/dist/init/mcp.js.map +1 -1
  38. package/dist/init/outdated.d.ts +54 -0
  39. package/dist/init/outdated.js +175 -0
  40. package/dist/init/outdated.js.map +1 -0
  41. package/dist/init/output.d.ts +72 -3
  42. package/dist/init/output.js +187 -23
  43. package/dist/init/output.js.map +1 -1
  44. package/dist/init/projects.d.ts +27 -13
  45. package/dist/init/projects.js +48 -50
  46. package/dist/init/projects.js.map +1 -1
  47. package/dist/init/remove.d.ts +0 -2
  48. package/dist/init/remove.js +61 -15
  49. package/dist/init/remove.js.map +1 -1
  50. package/dist/init/repos.d.ts +34 -0
  51. package/dist/init/repos.js +77 -0
  52. package/dist/init/repos.js.map +1 -1
  53. package/dist/init/run.d.ts +148 -26
  54. package/dist/init/run.js +577 -125
  55. package/dist/init/run.js.map +1 -1
  56. package/dist/init/settings.d.ts +20 -0
  57. package/dist/init/settings.js +42 -4
  58. package/dist/init/settings.js.map +1 -1
  59. package/dist/init/task-skills.d.ts +27 -0
  60. package/dist/init/task-skills.js +64 -1
  61. package/dist/init/task-skills.js.map +1 -1
  62. package/dist/init/workspace-file.d.ts +73 -0
  63. package/dist/init/workspace-file.js +173 -0
  64. package/dist/init/workspace-file.js.map +1 -0
  65. package/dist/render.d.ts +16 -0
  66. package/dist/render.js +57 -6
  67. package/dist/render.js.map +1 -1
  68. package/package.json +7 -6
  69. package/plugin/hooks/hooks.json +11 -0
  70. package/sidecar/dist/src/capture/api.d.ts +23 -1
  71. package/sidecar/dist/src/capture/check-classify.d.ts +10 -1
  72. package/sidecar/dist/src/capture/check-classify.js +96 -9
  73. package/sidecar/dist/src/capture/check-deep.d.ts +16 -4
  74. package/sidecar/dist/src/capture/check-deep.js +21 -17
  75. package/sidecar/dist/src/capture/check-fields.d.ts +112 -0
  76. package/sidecar/dist/src/capture/check-fields.js +311 -0
  77. package/sidecar/dist/src/capture/check-probe.d.ts +21 -1
  78. package/sidecar/dist/src/capture/check-probe.js +39 -0
  79. package/sidecar/dist/src/capture/check.js +14 -2
  80. package/sidecar/dist/src/capture/index.js +6 -1
  81. package/sidecar/dist/src/capture/self-check.d.ts +6 -1
  82. package/sidecar/dist/src/capture/self-check.js +65 -11
  83. package/sidecar/dist/src/validators.d.ts +40 -40
  84. package/sidecar/dist/src/validators.js +6 -1
  85. package/templates/skills/carrick-census.md +18 -9
  86. package/templates/skills/carrick-drift.md +7 -1
  87. package/templates/skills/carrick-impact.md +3 -1
  88. package/templates/skills/carrick-reuse.md +43 -26
package/dist/init/mcp.js CHANGED
@@ -54,20 +54,6 @@ export function mcpLine(installId = installIdOrNull()) {
54
54
  const base = `claude mcp add --scope user --transport http ${MCP_NAME} ${MCP_URL}`;
55
55
  return installId === null ? base : `${base} --header "${INSTALL_ID_HEADER}: ${installId}"`;
56
56
  }
57
- /**
58
- * What puts the install id on a Claude Code entry that has none.
59
- *
60
- * `claude mcp add` will not edit an entry it already holds, so the id can only
61
- * go on by writing the entry again — and THAT is the user's call, not this
62
- * command's. Removing somebody's server takes with it anything else on the
63
- * entry and sends the next session back through the server's OAuth, which is
64
- * not a thing to do to a machine that was only being set up. So `carrick init`
65
- * prints this pair and changes nothing; the file clients, whose entries can be
66
- * merged in place, are still done for them.
67
- */
68
- export function claudeRestampLine(installId) {
69
- return `claude mcp remove --scope user ${MCP_NAME} && ${mcpLine(installId)}`;
70
- }
71
57
  export function realEnvironment() {
72
58
  return {
73
59
  onPath: (command) => spawnSync(process.platform === "win32" ? "where" : "which", [command], {
@@ -146,28 +132,6 @@ const FILE_CLIENTS = [
146
132
  function isRecord(value) {
147
133
  return typeof value === "object" && value !== null && !Array.isArray(value);
148
134
  }
149
- /**
150
- * Our entry with this machine's install id on it, or null to leave it alone.
151
- *
152
- * Three things make an existing entry none of our business: a client whose
153
- * format has no place to put a header, an entry naming some other host — the
154
- * same gate the remover uses — and one that already carries an id, which a
155
- * re-run must not churn. Everything else on the entry, every other header
156
- * included, is carried through: the id is added to what is there, never
157
- * written over it.
158
- */
159
- function stampInstallId(entry, client, installId) {
160
- if (!client.headers || installId === null)
161
- return null;
162
- if (!isRecord(entry) || !isCarrickUrl(entryUrl(entry)))
163
- return null;
164
- const headers = isRecord(entry["headers"]) ? { ...entry["headers"] } : {};
165
- const current = headers[INSTALL_ID_HEADER];
166
- if (typeof current === "string" && INSTALL_ID_PATTERN.test(current))
167
- return null;
168
- headers[INSTALL_ID_HEADER] = installId;
169
- return { ...entry, headers };
170
- }
171
135
  /** The document back, with `servers` in the container it came from. */
172
136
  function withServers(document, container, servers) {
173
137
  const merged = {};
@@ -198,16 +162,11 @@ export function mergeServerEntry(client, existing, installId = null) {
198
162
  ? "servers"
199
163
  : client.container;
200
164
  const servers = isRecord(document[container]) ? { ...document[container] } : {};
201
- if (MCP_NAME in servers) {
202
- // Connected already. The one thing still missing from an entry written
203
- // before this release is the install id, and adding it is the whole of
204
- // what init does to an entry it did not have to create (carrick-cloud#890).
205
- const stamped = stampInstallId(servers[MCP_NAME], client, installId);
206
- if (stamped === null)
207
- return { body: `${JSON.stringify(document, null, 2)}\n`, state: "present" };
208
- servers[MCP_NAME] = stamped;
209
- return { body: withServers(document, container, servers), state: "written" };
210
- }
165
+ // Connected already, and that is the end of it: an entry that answers is not
166
+ // edited to carry a header nobody asked for (see the note above
167
+ // `mergeServerEntry`'s file header).
168
+ if (MCP_NAME in servers)
169
+ return { body: `${JSON.stringify(document, null, 2)}\n`, state: "present" };
211
170
  // The URL key and the type field are read off a sibling where there is one.
212
171
  const siblings = Object.values(servers).filter(isRecord);
213
172
  const urlKey = siblings.some((entry) => "serverUrl" in entry)
@@ -246,14 +205,7 @@ function configureClaudeCode(env) {
246
205
  // from one that carries it.
247
206
  const read = env.capture("claude", ["mcp", "get", MCP_NAME]);
248
207
  if (read.status === 0) {
249
- const stamped = read.stdout.includes(INSTALL_ID_HEADER);
250
- if (stamped || installId === null || !read.stdout.includes(MCP_HOST)) {
251
- return { client: "Claude Code", state: "present", detail: `already connected as "${MCP_NAME}"` };
252
- }
253
- // Ours, and older than the header. The entry stays exactly as it is: see
254
- // `claudeRestampLine` for why this command will not take it out and write
255
- // it again on somebody's behalf.
256
- return { client: "Claude Code", state: "unstamped", detail: unstampedRepair(installId) };
208
+ return { client: "Claude Code", state: "present", detail: `already connected as "${MCP_NAME}"` };
257
209
  }
258
210
  const status = env.run("claude", claudeAddArgs(installId));
259
211
  return status === 0
@@ -286,13 +238,52 @@ function configureFileClient(env, client) {
286
238
  };
287
239
  }
288
240
  }
289
- /** Configure every client this machine has. Empty when it has none. */
290
- export function connectMcpClients(env = realEnvironment()) {
241
+ /** What each file client calls its command, for the stronger signal above. */
242
+ const CLIENT_COMMANDS = {
243
+ Cursor: "cursor",
244
+ Windsurf: "windsurf",
245
+ "VS Code": "code",
246
+ };
247
+ /**
248
+ * The editors this machine could have an entry written for, with their files.
249
+ *
250
+ * Everything outside the workspace that `carrick init` would touch is in this
251
+ * list, so the question it is printed under names every file the answer covers.
252
+ * An editor whose configuration directory is not there is not offered: it is
253
+ * not on this machine, and a question about it is a question about nothing.
254
+ */
255
+ export function offeredFileClients(env = realEnvironment()) {
256
+ const offered = [];
257
+ for (const client of FILE_CLIENTS) {
258
+ const directory = client.directory(env);
259
+ const file = client.file(env);
260
+ if (directory === null || file === null)
261
+ continue;
262
+ if (!env.exists(directory) && !env.exists(file))
263
+ continue;
264
+ const command = CLIENT_COMMANDS[client.name];
265
+ offered.push({ name: client.name, file, installed: command !== undefined && env.onPath(command) });
266
+ }
267
+ return offered;
268
+ }
269
+ /**
270
+ * Configure Claude Code, and the editors that were named in the answer.
271
+ *
272
+ * `editors` is the set of [`offeredFileClients`] names this run may write for.
273
+ * It is a parameter and not a detection because the detection is what the
274
+ * question was asked about: `~/.cursor/mcp.json` is somebody's file, outside
275
+ * the workspace, for an editor they may not use, and it used to be written on
276
+ * the strength of a yes to "Write the proposal and configure hooks?"
277
+ * (carrick#1365).
278
+ */
279
+ export function connectMcpClients(editors, env = realEnvironment()) {
291
280
  const outcomes = [];
292
281
  const claude = configureClaudeCode(env);
293
282
  if (claude)
294
283
  outcomes.push(claude);
295
284
  for (const client of FILE_CLIENTS) {
285
+ if (!editors.includes(client.name))
286
+ continue;
296
287
  const outcome = configureFileClient(env, client);
297
288
  if (outcome)
298
289
  outcomes.push(outcome);
@@ -304,30 +295,6 @@ function entryUrl(entry) {
304
295
  const url = entry["url"] ?? entry["serverUrl"];
305
296
  return typeof url === "string" ? url : null;
306
297
  }
307
- /** Whether an entry carries an install id the server would accept. */
308
- function hasInstallId(entry) {
309
- if (!isRecord(entry) || !isRecord(entry["headers"]))
310
- return false;
311
- const value = entry["headers"][INSTALL_ID_HEADER];
312
- return typeof value === "string" && INSTALL_ID_PATTERN.test(value);
313
- }
314
- /**
315
- * What is said about an entry with no install id, and what to do about it.
316
- *
317
- * An entry written before this release answers questions perfectly well; the
318
- * only thing wrong with it is that nothing it asks can be attributed to this
319
- * machine. For a client whose file is merged in place, the repair is the setup
320
- * command. For Claude Code, whose entry can only be stamped by writing it
321
- * again, it is the pair of commands that does that — printed, never run
322
- * (`claudeRestampLine`). A machine with no id yet is told to run the setup,
323
- * because that is what mints one.
324
- */
325
- const UNSTAMPED = "MCP entry has no install id; run carrick init";
326
- function unstampedRepair(installId) {
327
- return installId === null
328
- ? UNSTAMPED
329
- : `MCP entry has no install id. To add it: ${claudeRestampLine(installId)}`;
330
- }
331
298
  /** Whether a URL points at the Carrick MCP server this package installs. */
332
299
  function isCarrickUrl(url) {
333
300
  if (url === null)
@@ -470,10 +437,6 @@ export function inspectMcpClients(env = realEnvironment()) {
470
437
  detail: `"${MCP_NAME}" there does not point at ${MCP_HOST}`,
471
438
  });
472
439
  }
473
- else if (!read.stdout.includes(INSTALL_ID_HEADER)) {
474
- // Read, never minted: `carrick doctor` runs this one.
475
- found.push({ client: "Claude Code", state: "unstamped", detail: unstampedRepair(env.storedInstallId()) });
476
- }
477
440
  else {
478
441
  found.push({ client: "Claude Code", state: "connected", detail: MCP_URL });
479
442
  }
@@ -520,10 +483,6 @@ export function inspectMcpClients(env = realEnvironment()) {
520
483
  });
521
484
  continue;
522
485
  }
523
- if (client.headers && !hasInstallId(entry)) {
524
- found.push({ client: client.name, state: "unstamped", detail: UNSTAMPED });
525
- continue;
526
- }
527
486
  found.push({ client: client.name, state: "connected", detail: url ?? MCP_URL });
528
487
  }
529
488
  return found;
@@ -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,54 @@
1
+ /** What is installed here and is not what this version writes. */
2
+ export type Outdated = {
3
+ /** Skill files still ours, carrying a body an older version rendered. */
4
+ skills: string[];
5
+ /** Hook files whose entries are not the ones this version installs. */
6
+ hooks: string[];
7
+ };
8
+ /** Every file in it, for a caller that only needs the count and the names. */
9
+ export declare function outdatedFiles(found: Outdated): string[];
10
+ /**
11
+ * What an upgrade left behind in this workspace.
12
+ *
13
+ * Reads files and nothing else: no network, no subprocess, no client
14
+ * inspection — it runs from any command, so it has to cost nothing. The MCP
15
+ * entry is deliberately not here: reading it can spawn an agent client's own
16
+ * command, and `carrick doctor` is where that belongs.
17
+ */
18
+ export declare function outdatedInstall(workspace: string): Outdated;
19
+ /**
20
+ * The nearest folder at or above this one that `carrick init` has run in.
21
+ *
22
+ * The same marker every other surface roots on — the `.carrick` directory, not
23
+ * a settings file or a git repository — so a command typed inside one repo of
24
+ * a folder asks about the folder's install, which is the install there is.
25
+ * Null where there is none, and a machine that never ran init never hears from
26
+ * this.
27
+ */
28
+ export declare function initialisedRoot(from: string): string | null;
29
+ /**
30
+ * The one line, and how often it is allowed to be said.
31
+ *
32
+ * Once a day, from any command that prints for a person to read. It is a
33
+ * sentence about the install, not about the command somebody typed, so it goes
34
+ * to stderr and never into an answer.
35
+ */
36
+ export declare function noticeFile(home?: string): string;
37
+ /** Delete the throttle file, as `carrick remove` does. True when there was one. */
38
+ export declare function removeNotice(home?: string): boolean;
39
+ export type NoticeEnvironment = {
40
+ home: string;
41
+ now: Date;
42
+ };
43
+ /**
44
+ * The line to print here, or null.
45
+ *
46
+ * Null covers every ordinary run: a folder Carrick was never set up in, an
47
+ * install that is current, a day this has already been said on, and anything
48
+ * at all going wrong while asking. A command's real work must never fail
49
+ * because of a notice about it.
50
+ *
51
+ * The day is only recorded when there was something to say, so an install that
52
+ * goes out of date an hour from now is still named an hour from now.
53
+ */
54
+ export declare function refreshNotice(workspace: string, environment?: NoticeEnvironment): string | null;
@@ -0,0 +1,175 @@
1
+ // Files this package installed, and whether they are the ones it installs now.
2
+ //
3
+ // `npm install -g carrick@latest` changes the binary and nothing else. The
4
+ // hook entries in a settings file, the Codex ones, and the eight task skill
5
+ // bodies were written by whichever version first ran `carrick init` here, and
6
+ // nothing re-reads them: a repo can carry a hook that was replaced three
7
+ // releases ago and never be told (carrick#1333).
8
+ //
9
+ // What identifies a file as ours, and as current, is its content — not a
10
+ // version number written into it:
11
+ //
12
+ // * A **skill** carries a digest of the body this package rendered, and
13
+ // `inspectTaskSkills` compares it against the body this version renders. A
14
+ // release that does not change a skill leaves that skill current, which a
15
+ // version stamp could not say.
16
+ // * A **hook entry** is identified by what it runs: its event, matcher,
17
+ // command and timeout, which is exactly what `expectedCarrickHooks` states
18
+ // and what survives any formatter run over somebody's settings file. That
19
+ // is also why nothing here writes a marker into those files: a settings
20
+ // document belongs to the agent that validates it, and a key it does not
21
+ // know is a key it may one day reject — at which point every hook in the
22
+ // file stops running, silently, because the hooks are built never to fail an
23
+ // edit (carrick#837).
24
+ //
25
+ // The cost of reading content rather than a version is one consequence, and it
26
+ // is the right one: a hook entry somebody edited by hand reads the same as one
27
+ // an older version wrote, and `carrick init` rewrites it either way. Their
28
+ // file keeps everything else in it.
29
+ //
30
+ // The refresh is `carrick init` run again. It writes only what is still ours —
31
+ // an edited skill is named and left — so it is safe to run unattended.
32
+ // Reference: `docs/reference/task-skills.md`.
33
+ import fs from "node:fs";
34
+ import os from "node:os";
35
+ import path from "node:path";
36
+ import { ancestors, hasMarker } from "../root.js";
37
+ import { CODEX_HOOKS_FILE, codexInUse, expectedCodexHooks, readHooksFile } from "./codex.js";
38
+ import { expectedCarrickHooks, installedCarrickHooks, SETTINGS_FILES, } from "./settings.js";
39
+ import { inspectTaskSkills } from "./task-skills.js";
40
+ /** Every file in it, for a caller that only needs the count and the names. */
41
+ export function outdatedFiles(found) {
42
+ return [...found.hooks, ...found.skills];
43
+ }
44
+ /**
45
+ * Whether a hook document holds entries this version no longer writes.
46
+ *
47
+ * The prefix is the file's own, as `carrick doctor` reads it: an install on a
48
+ * machine with no `carrick` on PATH wrote absolute paths, and comparing those
49
+ * against a bare `carrick` would report every entry as wrong on every run.
50
+ * A file holding no entry of ours is not out of date — it is a file init has
51
+ * never written to, which is a different finding and not this one.
52
+ */
53
+ function entriesAreStale(body, expected) {
54
+ let installed;
55
+ try {
56
+ installed = installedCarrickHooks(body);
57
+ }
58
+ catch {
59
+ // Not JSON. `carrick doctor` says so in its own words; a line printed by
60
+ // an unrelated command must not be the way somebody learns it.
61
+ return false;
62
+ }
63
+ if (installed.length === 0)
64
+ return false;
65
+ const prefix = installed[0].command.split(/\s+hook\s+/)[0];
66
+ return expected(prefix).some((want) => !installed.some((have) => have.event === want.event &&
67
+ have.command === want.command &&
68
+ have.matcher === want.matcher &&
69
+ have.timeout === want.timeout));
70
+ }
71
+ /**
72
+ * What an upgrade left behind in this workspace.
73
+ *
74
+ * Reads files and nothing else: no network, no subprocess, no client
75
+ * inspection — it runs from any command, so it has to cost nothing. The MCP
76
+ * entry is deliberately not here: reading it can spawn an agent client's own
77
+ * command, and `carrick doctor` is where that belongs.
78
+ */
79
+ export function outdatedInstall(workspace) {
80
+ const skills = inspectTaskSkills(workspace)
81
+ .filter((skill) => skill.state === "ours" && !skill.current)
82
+ .map((skill) => skill.path);
83
+ const hooks = [];
84
+ for (const relative of SETTINGS_FILES) {
85
+ let body;
86
+ try {
87
+ body = fs.readFileSync(path.join(workspace, relative), "utf8");
88
+ }
89
+ catch {
90
+ continue;
91
+ }
92
+ if (entriesAreStale(body, expectedCarrickHooks))
93
+ hooks.push(relative);
94
+ }
95
+ if (codexInUse(workspace)) {
96
+ const body = readHooksFile(workspace);
97
+ if (body !== null && entriesAreStale(body, expectedCodexHooks))
98
+ hooks.push(CODEX_HOOKS_FILE);
99
+ }
100
+ return { skills, hooks };
101
+ }
102
+ /**
103
+ * The nearest folder at or above this one that `carrick init` has run in.
104
+ *
105
+ * The same marker every other surface roots on — the `.carrick` directory, not
106
+ * a settings file or a git repository — so a command typed inside one repo of
107
+ * a folder asks about the folder's install, which is the install there is.
108
+ * Null where there is none, and a machine that never ran init never hears from
109
+ * this.
110
+ */
111
+ export function initialisedRoot(from) {
112
+ return ancestors(from).find((directory) => hasMarker(directory)) ?? null;
113
+ }
114
+ /**
115
+ * The one line, and how often it is allowed to be said.
116
+ *
117
+ * Once a day, from any command that prints for a person to read. It is a
118
+ * sentence about the install, not about the command somebody typed, so it goes
119
+ * to stderr and never into an answer.
120
+ */
121
+ export function noticeFile(home = os.homedir()) {
122
+ return path.join(home, ".carrick", "last-notice");
123
+ }
124
+ /** Today, as the throttle file spells it. */
125
+ function today(now) {
126
+ return now.toISOString().slice(0, 10);
127
+ }
128
+ /** Delete the throttle file, as `carrick remove` does. True when there was one. */
129
+ export function removeNotice(home) {
130
+ try {
131
+ fs.rmSync(noticeFile(home));
132
+ return true;
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
138
+ /**
139
+ * The line to print here, or null.
140
+ *
141
+ * Null covers every ordinary run: a folder Carrick was never set up in, an
142
+ * install that is current, a day this has already been said on, and anything
143
+ * at all going wrong while asking. A command's real work must never fail
144
+ * because of a notice about it.
145
+ *
146
+ * The day is only recorded when there was something to say, so an install that
147
+ * goes out of date an hour from now is still named an hour from now.
148
+ */
149
+ export function refreshNotice(workspace, environment = { home: os.homedir(), now: new Date() }) {
150
+ try {
151
+ const file = noticeFile(environment.home);
152
+ let last;
153
+ try {
154
+ last = fs.readFileSync(file, "utf8").trim();
155
+ }
156
+ catch {
157
+ last = null;
158
+ }
159
+ if (last === today(environment.now))
160
+ return null;
161
+ const found = outdatedInstall(workspace);
162
+ const files = outdatedFiles(found);
163
+ if (files.length === 0)
164
+ return null;
165
+ fs.mkdirSync(path.dirname(file), { recursive: true });
166
+ fs.writeFileSync(file, `${today(environment.now)}\n`);
167
+ return `${files.length} file(s) here were written by an older carrick (${files
168
+ .slice(0, 2)
169
+ .join(", ")}${files.length > 2 ? ", …" : ""}). Run \`carrick init\` to refresh them.`;
170
+ }
171
+ catch {
172
+ return null;
173
+ }
174
+ }
175
+ //# sourceMappingURL=outdated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/init/outdated.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,52 @@
1
- import type { Writable } from "node:stream";
1
+ import type { Readable, Writable } from "node:stream";
2
2
  export declare const DONE = "\u25C7";
3
3
  export declare const WARN = "\u25B2";
4
4
  export declare const REFUSE = "\u25A0";
5
5
  export declare const DOCS = "https://docs.carrick.tools/quickstart";
6
+ /**
7
+ * A question the user ended rather than answered: Ctrl-C, Escape, or an input
8
+ * that closed under them.
9
+ *
10
+ * It is an error and not a value because every caller would otherwise have to
11
+ * remember that one of its answers means "stop", and one that forgot carried
12
+ * on with the wrong one: a cancelled project question was read as "leave it to
13
+ * the browser" and the run continued into the steps that question governed
14
+ * (carrick#1338). Thrown, it ends the run wherever it is asked, and `init`
15
+ * asks everything before it writes anything.
16
+ */
17
+ export declare class PromptCancelled extends Error {
18
+ constructor();
19
+ }
20
+ /** One row of a `choose`: what it is called, and what it is worth knowing. */
21
+ export type Choice = {
22
+ value: string;
23
+ label: string;
24
+ hint?: string;
25
+ };
26
+ /**
27
+ * How a `choose` opens, and whether it may be answered with nothing.
28
+ *
29
+ * `initial` is the set that starts selected, and it is a parameter rather than
30
+ * "all of them" because a default is a claim: the repos this install covers
31
+ * are preselected where something already says so, and an editor's
32
+ * configuration file outside the workspace is not preselected on the strength
33
+ * of a directory (carrick#1365).
34
+ */
35
+ export type ChoiceSet = {
36
+ initial: string[];
37
+ required: boolean;
38
+ };
39
+ /**
40
+ * The line that says what the keys do and where the answer stands.
41
+ *
42
+ * Said in words because the glyphs cannot say it: clack 1.8.1 draws the row
43
+ * under the cursor and an unselected row with the SAME character
44
+ * (`S_CHECKBOX_ACTIVE` and `S_CHECKBOX_INACTIVE` are both `◻`), so "the
45
+ * highlighted one" and "the ones that are in" are told apart by fill and
46
+ * colour alone. The picker below marks every row `[x]` or `[ ]` instead, and
47
+ * this line carries the count (carrick#1365).
48
+ */
49
+ export declare function chooseSentence(noun: string, selected: number, total: number): string;
6
50
  /**
7
51
  * What a step's work turned out to be: the line, and the marker it carries.
8
52
  *
@@ -57,13 +101,38 @@ export type InitOutput = {
57
101
  confirm(question: string): Promise<boolean>;
58
102
  /** A typed answer, for the questions whose answer is not yes or no. */
59
103
  ask(question: string): Promise<string>;
104
+ /**
105
+ * Which of these, opening on the set `config.initial` names.
106
+ *
107
+ * `config.required` decides whether an empty answer is one: the repos this
108
+ * install covers must include one repo, and "no editors" is an ordinary
109
+ * answer (carrick#1338, carrick#1365). `noun` is what a row is, for the
110
+ * sentence that says what the keys do.
111
+ */
112
+ choose(question: string, noun: string, options: Choice[], config: ChoiceSet): Promise<string[]>;
60
113
  /** Dim a fragment, where this rendering has colour to dim it with. */
61
114
  accent(text: string): string;
62
115
  /** Whether the work under `step` may write to the terminal itself. */
63
116
  readonly quiet: boolean;
64
117
  };
118
+ /**
119
+ * The numbers an answer names, or null when it names none of them.
120
+ *
121
+ * Empty is the marked set, not "all of them": the marks are what the rows
122
+ * above the question already state, and a reader pressing Enter is accepting
123
+ * what they can see (carrick#1365). `all` and `none` are the two words that
124
+ * say the whole and the empty set; `none` is refused where an empty answer is
125
+ * not one, which is the same refusal an out-of-range number gets.
126
+ */
127
+ export declare function chosenNumbers(answer: string, count: number, config: {
128
+ initial: number[];
129
+ required: boolean;
130
+ }): number[] | null;
65
131
  /** Plain text: the same lines, no spinner, no colour, no gutter. */
66
- export declare function plainOutput(write?: (text: string) => void): InitOutput;
132
+ export declare function plainOutput(write?: (text: string) => void, io?: {
133
+ input?: Readable;
134
+ output?: Writable;
135
+ }): InitOutput;
67
136
  /**
68
137
  * clack's rendering, for a terminal.
69
138
  *
@@ -74,7 +143,7 @@ export declare function plainOutput(write?: (text: string) => void): InitOutput;
74
143
  * with different lines. A test that hands this a stream is the only thing that
75
144
  * sees the interactive markers at all (carrick#1032).
76
145
  */
77
- export declare function interactiveOutput(output?: Writable): InitOutput;
146
+ export declare function interactiveOutput(output?: Writable, keys?: Readable): InitOutput;
78
147
  /**
79
148
  * The rendering this terminal gets.
80
149
  *