carrick 0.3.84 → 0.3.86

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 (47) hide show
  1. package/README.md +15 -0
  2. package/bin/carrick.mjs +89 -0
  3. package/dist/auth/credentials.d.ts +9 -0
  4. package/dist/auth/credentials.js +13 -2
  5. package/dist/auth/credentials.js.map +1 -1
  6. package/dist/auth/read.d.ts +4 -4
  7. package/dist/global-install.d.ts +183 -0
  8. package/dist/global-install.js +393 -0
  9. package/dist/global-install.js.map +1 -0
  10. package/dist/hook/post-edit.js +10 -0
  11. package/dist/hook/post-edit.js.map +1 -1
  12. package/dist/hook/session-start.js +34 -0
  13. package/dist/hook/session-start.js.map +1 -1
  14. package/dist/hook/stop.js +18 -4
  15. package/dist/hook/stop.js.map +1 -1
  16. package/dist/hook/user-prompt.js +16 -4
  17. package/dist/hook/user-prompt.js.map +1 -1
  18. package/dist/init/doctor.d.ts +40 -0
  19. package/dist/init/doctor.js +125 -0
  20. package/dist/init/doctor.js.map +1 -1
  21. package/dist/init/outdated.d.ts +47 -0
  22. package/dist/init/outdated.js +104 -0
  23. package/dist/init/outdated.js.map +1 -1
  24. package/dist/init/projects.d.ts +2 -2
  25. package/dist/init/run.d.ts +9 -0
  26. package/dist/init/run.js +57 -12
  27. package/dist/init/run.js.map +1 -1
  28. package/dist/scan.d.ts +26 -0
  29. package/dist/scan.js +92 -0
  30. package/dist/scan.js.map +1 -1
  31. package/dist/update-check.d.ts +1 -0
  32. package/dist/update-check.js +25 -0
  33. package/dist/update-check.js.map +1 -0
  34. package/dist/update.d.ts +128 -0
  35. package/dist/update.js +398 -0
  36. package/dist/update.js.map +1 -0
  37. package/package.json +7 -7
  38. package/sidecar/dist/src/capture/anchors.js +69 -8
  39. package/sidecar/dist/src/capture/api.d.ts +4 -1
  40. package/sidecar/dist/src/capture/deep-walk.js +4 -1
  41. package/sidecar/dist/src/capture/node-builder.d.ts +28 -1
  42. package/sidecar/dist/src/capture/node-builder.js +89 -3
  43. package/sidecar/dist/src/capture/unresolved.d.ts +7 -0
  44. package/sidecar/dist/src/capture/unresolved.js +1 -1
  45. package/sidecar/dist/src/type-inferrer.d.ts +128 -5
  46. package/sidecar/dist/src/type-inferrer.js +444 -17
  47. package/templates/skills/carrick-census.md +3 -1
@@ -0,0 +1,393 @@
1
+ // Keeping the `carrick` a PATH lookup answers with level with the one this run
2
+ // is (carrick#1372).
3
+ //
4
+ // `npx carrick@latest` runs the published version out of a cache directory and
5
+ // changes nothing else on the machine. A global install from three releases ago
6
+ // stays exactly where it was, and it is the one that answers when an agent hook
7
+ // runs `carrick hook post-edit`, when a script types `carrick index`, and when a
8
+ // person opens a new shell. That is the "two versions on one machine in one
9
+ // morning" incident: the run a human watched was current and everything that
10
+ // ran afterwards was not.
11
+ //
12
+ // `src/update.ts` is the other half of this and does the opposite thing on
13
+ // purpose: it NOTIFIES, because it cannot know which of several possible
14
+ // installs a notice is about. This file only ever acts on an install that
15
+ // already exists, through the package manager that owns it, and never creates
16
+ // one without being told to. The four properties:
17
+ //
18
+ // 1. **Only an upgrade, only of what is there.** An older global is brought
19
+ // level with the running version. A global that is current, newer, or
20
+ // absent is left alone, and nothing is ever installed on a machine that has
21
+ // no global without a yes or `--install-global`.
22
+ // 2. **The owning manager, with its own configuration.** The command is the
23
+ // one for the shape the install is in (npm, pnpm, bun, volta). No flag of
24
+ // ours overrides a registry, a prefix or a release-age policy: a machine
25
+ // whose policy refuses this version is a machine that gets told, not one
26
+ // that gets overridden. A project `.npmrc` is not read in global mode
27
+ // (proved in `docs/reference/update-check.md`); a user-level one is, and
28
+ // its refusal is what the reader sees.
29
+ // 3. **It verifies.** After the install it resolves `carrick` again. A second
30
+ // install earlier on PATH, a version-manager shim, or an install that
31
+ // reported success and changed nothing all end with a line naming the path
32
+ // that is still stale and the command for it. The run never ends silently
33
+ // on an older binary.
34
+ // 4. **It never fails the command.** Every refusal, timeout and unreadable
35
+ // version prints and carries on. `CARRICK_NO_UPDATE_CHECK=1` turns it off
36
+ // along with the notice.
37
+ import fs from "node:fs";
38
+ import path from "node:path";
39
+ import { spawnSync } from "node:child_process";
40
+ import { packageRoot } from "./native.js";
41
+ import { currentVersion, inCi, installShape, isNewer, suppressed } from "./update.js";
42
+ /** The names a `carrick` on PATH goes by, most specific first. */
43
+ export function carrickNames(platform = process.platform) {
44
+ return platform === "win32" ? ["carrick.cmd", "carrick.exe", "carrick"] : ["carrick"];
45
+ }
46
+ function defaultExists(target) {
47
+ try {
48
+ return fs.existsSync(target);
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ }
54
+ function defaultReal(target) {
55
+ try {
56
+ return fs.realpathSync(target);
57
+ }
58
+ catch {
59
+ return target;
60
+ }
61
+ }
62
+ function slashed(value) {
63
+ return `/${value.split(path.sep).join("/")}/`;
64
+ }
65
+ /**
66
+ * A PATH entry that only exists while something is running, not a global.
67
+ *
68
+ * Two of them, and both are a `node_modules/.bin` directory: npx resolves a
69
+ * package into `_npx/<hash>/node_modules` and puts its `.bin` first, and
70
+ * `npm run` puts the repository's own `node_modules/.bin` there. No global bin
71
+ * directory is one — npm's is `<prefix>/bin`, and pnpm's, bun's and volta's are
72
+ * their own — so the shape of the directory is the whole test, and it holds
73
+ * however the package inside it is arranged.
74
+ *
75
+ * Deliberately NOT "the package this code is running from". A global install
76
+ * running `carrick doctor` IS the `carrick` on PATH, and skipping it would
77
+ * report the healthiest install shape there is as having nothing on PATH.
78
+ */
79
+ function transientBin(directory, binary, resolved) {
80
+ if (slashed(directory).endsWith("/node_modules/.bin/"))
81
+ return true;
82
+ return slashed(binary).includes("/_npx/") || slashed(resolved).includes("/_npx/");
83
+ }
84
+ /**
85
+ * The `carrick` a PATH lookup finds, skipping what only exists during a run.
86
+ *
87
+ * `which carrick` cannot answer this question. npm puts the exec tree's own
88
+ * `node_modules/.bin` at the front of PATH for the child it runs, so inside
89
+ * `npx carrick init` a `which` says `carrick` is on PATH on a machine where it
90
+ * is not — and `carrick init` then wrote a bare `carrick hook post-edit` into a
91
+ * settings file, naming a command that stopped existing when npx exited.
92
+ *
93
+ * File reads only: no `which`, no subprocess, so it costs nothing on a command
94
+ * that runs on every edit.
95
+ */
96
+ export function findCarrick(options = {}) {
97
+ const env = options.env ?? process.env;
98
+ const exists = options.exists ?? defaultExists;
99
+ const real = options.real ?? defaultReal;
100
+ const raw = env["PATH"] ?? env["Path"] ?? "";
101
+ for (const directory of raw.split(path.delimiter)) {
102
+ if (directory === "")
103
+ continue;
104
+ for (const name of carrickNames(options.platform)) {
105
+ const binary = path.join(directory, name);
106
+ if (!exists(binary))
107
+ continue;
108
+ const resolved = real(binary);
109
+ if (transientBin(directory, binary, resolved))
110
+ continue;
111
+ return { binary, real: resolved, version: null };
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ /** How far up from a binary a `package.json` of ours can be. */
117
+ const MANIFEST_DEPTH = 5;
118
+ /**
119
+ * The version of the install a binary belongs to.
120
+ *
121
+ * Read off the manifest above it wherever the path says — an npm global bin
122
+ * entry links straight into `lib/node_modules/carrick/bin`, so the answer is a
123
+ * file read. A shim that is a real file (volta, a `.cmd` on Windows) leads
124
+ * nowhere, and only then is the binary asked, with the version check turned off
125
+ * in the child so an older build does not fork a registry fetch from our probe.
126
+ */
127
+ export function installedVersion(found, options = {}) {
128
+ const read = options.read ?? ((target) => fs.readFileSync(target, "utf8"));
129
+ let directory = path.dirname(found.real);
130
+ for (let step = 0; step < MANIFEST_DEPTH; step += 1) {
131
+ try {
132
+ const manifest = JSON.parse(read(path.join(directory, "package.json")));
133
+ if (manifest?.name === "carrick" && typeof manifest.version === "string")
134
+ return manifest.version;
135
+ }
136
+ catch {
137
+ // Not there, not readable, or not ours. Keep walking up.
138
+ }
139
+ const parent = path.dirname(directory);
140
+ if (parent === directory)
141
+ break;
142
+ directory = parent;
143
+ }
144
+ const run = options.run ?? defaultAskVersion(options);
145
+ return run(found.binary);
146
+ }
147
+ function defaultAskVersion(options) {
148
+ const env = options.env ?? process.env;
149
+ const platform = options.platform ?? process.platform;
150
+ return (binary) => {
151
+ const answer = spawnSync(binary, ["--version"], {
152
+ encoding: "utf8",
153
+ timeout: 5000,
154
+ shell: platform === "win32",
155
+ env: { ...env, CARRICK_NO_UPDATE_CHECK: "1" },
156
+ });
157
+ if (answer.status !== 0 || typeof answer.stdout !== "string")
158
+ return null;
159
+ const first = answer.stdout.trim().split("\n")[0]?.trim();
160
+ return first && /^\d+\.\d+\.\d+$/.test(first) ? first : null;
161
+ };
162
+ }
163
+ /**
164
+ * The command that replaces a global install, for the manager that owns it.
165
+ *
166
+ * Null for the two shapes that are not a global: an npx cache directory, which
167
+ * is thrown away and re-resolved, and a project dependency, which belongs to
168
+ * whichever repository pins it and is not this run's to change. Both are
169
+ * reported rather than acted on.
170
+ *
171
+ * The version is pinned rather than `@latest` on purpose. The run knows which
172
+ * version it is, `@latest` is a second question for the registry, and a pinned
173
+ * spec is what makes the verification below a comparison rather than a guess.
174
+ */
175
+ export function globalCommand(kind, version) {
176
+ switch (kind) {
177
+ case "npm":
178
+ return ["npm", "install", "-g", `carrick@${version}`];
179
+ case "pnpm":
180
+ return ["pnpm", "add", "-g", `carrick@${version}`];
181
+ case "bun":
182
+ return ["bun", "add", "-g", `carrick@${version}`];
183
+ case "volta":
184
+ return ["volta", "install", `carrick@${version}`];
185
+ default:
186
+ return null;
187
+ }
188
+ }
189
+ /**
190
+ * The command for a machine that has no global carrick at all.
191
+ *
192
+ * The running copy's own shape names the manager: somebody running through
193
+ * `npx` has npm, and a project dependency says nothing about what its owner
194
+ * would want globally, so both answer npm.
195
+ */
196
+ export function firstGlobalCommand(kind, version) {
197
+ return globalCommand(kind === "npx" || kind === "project" ? "npm" : kind, version);
198
+ }
199
+ /** How long an install is given before it is a refusal with a reason. */
200
+ export const INSTALL_TIMEOUT_MS = 180_000;
201
+ /** The last thing a failed install said, for a reader who has to act on it. */
202
+ export function failureReason(result) {
203
+ if (result.error)
204
+ return result.error.message;
205
+ const said = `${result.stderr ?? ""}\n${result.stdout ?? ""}`
206
+ .split("\n")
207
+ .map((line) => line.trim())
208
+ .filter((line) => line !== "" && !line.startsWith("npm warn"));
209
+ const last = said[said.length - 1];
210
+ return last ?? `it exited ${result.status ?? "without a status"}`;
211
+ }
212
+ export function realMachine(env = process.env) {
213
+ return {
214
+ find: () => {
215
+ const found = findCarrick({ env });
216
+ if (!found)
217
+ return null;
218
+ return { ...found, version: installedVersion(found, { env }) };
219
+ },
220
+ shape: (found) => installShape(found.real, env),
221
+ install: (argv) => {
222
+ const answer = spawnSync(argv[0], argv.slice(1), {
223
+ encoding: "utf8",
224
+ timeout: INSTALL_TIMEOUT_MS,
225
+ // A manager on Windows is a `.cmd`, which Node will not run without
226
+ // one. Every word of this command is built here from a fixed list and
227
+ // a version this package's own manifest states.
228
+ shell: process.platform === "win32",
229
+ stdio: ["ignore", "pipe", "pipe"],
230
+ env,
231
+ });
232
+ if (answer.status === 0)
233
+ return { ok: true, reason: null };
234
+ return {
235
+ ok: false,
236
+ reason: failureReason({
237
+ status: answer.status,
238
+ stderr: answer.stderr ?? null,
239
+ stdout: answer.stdout ?? null,
240
+ error: answer.error ?? undefined,
241
+ }),
242
+ };
243
+ },
244
+ };
245
+ }
246
+ /**
247
+ * Bring an older global carrick level with this run, and say so.
248
+ *
249
+ * The ruling this implements: somebody who installed carrick globally has
250
+ * already chosen to have it on this machine, so bringing that choice up to date
251
+ * is inside what they agreed to and is not asked about. What is NOT inside it
252
+ * is creating an install they never asked for, forcing one past their machine's
253
+ * policy, or leaving them on an older binary without knowing.
254
+ */
255
+ export function syncGlobalInstall(options) {
256
+ const env = options.env ?? process.env;
257
+ const machine = options.machine ?? realMachine(env);
258
+ const running = options.running === undefined ? currentVersion() : options.running;
259
+ if (!running || !/^\d+\.\d+\.\d+$/.test(running)) {
260
+ return { kind: "skipped", why: "this build does not state a plain version", warning: null };
261
+ }
262
+ const found = machine.find();
263
+ if (!found)
264
+ return { kind: "skipped", why: "no carrick on PATH", warning: null };
265
+ if (found.version === null) {
266
+ // An install this cannot identify is one it will not install over. `carrick
267
+ // doctor` says so in its own words; a command doing something else is not
268
+ // where somebody should learn it.
269
+ return {
270
+ kind: "skipped",
271
+ why: `${found.binary} does not say which version it is`,
272
+ warning: null,
273
+ };
274
+ }
275
+ if (!isNewer(running, found.version)) {
276
+ return { kind: "current", version: found.version, warning: null };
277
+ }
278
+ const shape = machine.shape(found);
279
+ const argv = globalCommand(shape.kind, running);
280
+ if (!argv) {
281
+ // A project dependency or an npx cache answering `carrick`. Neither is this
282
+ // run's to replace, and both leave the reader on the older one.
283
+ const where = shape.manifest ? ` (pinned in ${shape.manifest})` : "";
284
+ return {
285
+ kind: "stale",
286
+ path: found.binary,
287
+ version: found.version,
288
+ command: shape.command,
289
+ warning: `\`carrick\` here runs ${found.version} from ${found.binary}${where}, not the ${running} this run is. Update it where it is pinned, or put a global install earlier on PATH.`,
290
+ };
291
+ }
292
+ const command = argv.join(" ");
293
+ options.say(`Upgrading the global carrick ${found.version} -> ${running} (${command})`);
294
+ const result = machine.install(argv);
295
+ if (!result.ok) {
296
+ return {
297
+ kind: "refused",
298
+ from: found.version,
299
+ to: running,
300
+ reason: result.reason ?? "",
301
+ command,
302
+ warning: `The global carrick is still ${found.version}: ${result.reason ?? "the install did not finish"}. Run \`${command}\` when that is sorted.`,
303
+ };
304
+ }
305
+ // The install said it worked, which is not the same as `carrick` now being
306
+ // the new one: a second install earlier on PATH, or a version manager's shim,
307
+ // answers first and was never touched by it.
308
+ const after = machine.find();
309
+ if (!after) {
310
+ return {
311
+ kind: "stale",
312
+ path: null,
313
+ version: null,
314
+ command,
315
+ warning: `carrick ${running} is installed and nothing answers to \`carrick\` on PATH. The directory ${argv[0]} installs into is not on it; add that directory, so your agent's hooks can run carrick by name.`,
316
+ };
317
+ }
318
+ if (after.version === running) {
319
+ options.say(`The global carrick is now ${running}.`);
320
+ return { kind: "upgraded", from: found.version, to: running, warning: null };
321
+ }
322
+ const theirs = (globalCommand(machine.shape(after).kind, running) ?? argv).join(" ");
323
+ return {
324
+ kind: "stale",
325
+ path: after.binary,
326
+ version: after.version,
327
+ command: theirs,
328
+ warning: `\`carrick\` still runs ${after.version ?? "an unknown version"} from ${after.binary}. Replace that one with \`${theirs}\`, or take it off PATH.`,
329
+ };
330
+ }
331
+ /**
332
+ * The commands this never runs on.
333
+ *
334
+ * `hook` and `lsp` speak a protocol and run on every edit; `remove` is somebody
335
+ * undoing this install, and upgrading one on the way out is the opposite of
336
+ * what they asked for. The three argument forms are the ones that answer in
337
+ * milliseconds and are typed to find something out, not to do work.
338
+ */
339
+ const NO_SYNC = new Set(["hook", "lsp", "remove", "--version", "-V", "--help", "-h"]);
340
+ /**
341
+ * Whether this invocation keeps the global install level.
342
+ *
343
+ * Only a run through npx. Every other shape IS the install a person would be
344
+ * upgrading: a global run of `carrick index` is already the version on PATH,
345
+ * and a project dependency belongs to the repository that pins it. npx is the
346
+ * one that leaves a second, older carrick behind it, and it is also the one the
347
+ * quickstart and the agents use.
348
+ *
349
+ * Never in CI: a build machine is thrown away, nothing on it is on PATH for a
350
+ * next run, and what runs there is the workflow's decision.
351
+ */
352
+ export function syncsOnThisRun(command, env = process.env, root = packageRoot()) {
353
+ if (command === undefined || NO_SYNC.has(command))
354
+ return false;
355
+ if (suppressed(env) || inCi(env))
356
+ return false;
357
+ return installShape(root, env).kind === "npx";
358
+ }
359
+ /**
360
+ * Offer a global install to a machine that has none, and never take one.
361
+ *
362
+ * The ruling: `--yes` answers for the workspace, so it prints the command and
363
+ * installs nothing; a terminal is asked; `--install-global` is the consent a
364
+ * script gives. What turns on the answer is the hook commands written
365
+ * immediately after this — with a global, they are the bare `carrick`, which
366
+ * survives the end of this npx run; without one, they name this install, which
367
+ * does not.
368
+ */
369
+ export async function offerGlobalInstall(options) {
370
+ const env = options.env ?? process.env;
371
+ const machine = options.machine ?? realMachine(env);
372
+ const running = options.running === undefined ? currentVersion() : options.running;
373
+ if (machine.find() !== null)
374
+ return "present";
375
+ if (!running || !/^\d+\.\d+\.\d+$/.test(running))
376
+ return "declined";
377
+ const argv = firstGlobalCommand(installShape(options.root ?? packageRoot(), env).kind, running);
378
+ const command = argv.join(" ");
379
+ const wanted = options.install ||
380
+ (!options.assumeYes &&
381
+ (await options.confirm(`Install carrick ${running} on this machine with \`${command}\`? Your agent's hooks then run it by name.`)));
382
+ if (!wanted) {
383
+ options.say(`\`carrick\` is not on PATH, so the hooks below name this install, which ends with this run. \`${command}\` puts it there for good.`);
384
+ return "declined";
385
+ }
386
+ options.say(`Installing carrick ${running} (${command})`);
387
+ const result = machine.install(argv);
388
+ if (result.ok && machine.find() !== null)
389
+ return "installed";
390
+ options.say(`carrick is still not on PATH: ${result.reason ?? "the install finished but nothing answers to `carrick`"}. Run \`${command}\` yourself for the short hook commands.`);
391
+ return "failed";
392
+ }
393
+ //# sourceMappingURL=global-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-install.js","sourceRoot":"","sources":["../src/global-install.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,8 @@ import { createLogger } from "../log.js";
21
21
  import { renderPostToolUse } from "../render.js";
22
22
  import { resolveRoot, rootNote } from "../root.js";
23
23
  import { patchedFiles } from "./apply-patch.js";
24
+ import { throttledVersionMismatch } from "../init/outdated.js";
25
+ import { currentVersion } from "../update.js";
24
26
  import { record } from "./reuse.js";
25
27
  const log = createLogger("carrick-hook");
26
28
  /** The files the index has rows for. */
@@ -143,6 +145,14 @@ async function main() {
143
145
  log(`the ${channel.channel} channel owns delivery in this install; printing nothing`);
144
146
  return;
145
147
  }
148
+ // The `carrick` this hook is running is whatever PATH answered with, which
149
+ // an upgrade elsewhere can leave behind (carrick#1372). Claimed at the last
150
+ // possible moment, so the once-a-day stamp is spent only on a line that is
151
+ // actually delivered, and inside `additionalContext` rather than on a bare
152
+ // stdout line, which this host reads as a malformed hook response.
153
+ const mismatch = throttledVersionMismatch(choice.root, currentVersion());
154
+ if (mismatch)
155
+ contexts.push(mismatch);
146
156
  if (contexts.length > 0)
147
157
  emit(contexts.join("\n\n"));
148
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"post-edit.js","sourceRoot":"","sources":["../../src/hook/post-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-edit.js","sourceRoot":"","sources":["../../src/hook/post-edit.ts"],"names":[],"mappings":"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"}
@@ -16,8 +16,27 @@ import { resolveChannel } from "../channel.js";
16
16
  import { createLogger } from "../log.js";
17
17
  import { renderSessionStart } from "../render.js";
18
18
  import { resolveRoot, rootNote } from "../root.js";
19
+ import { currentVersion, readUpdateState, suppressed, updateNotice } from "../update.js";
19
20
  import { refreshInBackground } from "./refresh.js";
21
+ import { versionMismatch } from "../init/outdated.js";
20
22
  const log = createLogger("carrick-session");
23
+ /**
24
+ * "Start of session, not mid session" — the moment a version notice is worth
25
+ * anything, because it is the moment before the agent does any work.
26
+ *
27
+ * Read from the cache only: a hook has a 300 ms budget and no business dialling
28
+ * a registry. The cache is refreshed by a detached child the shim starts, so
29
+ * what this prints is at most one run behind. On stdout, unlike the shim's
30
+ * stderr line, because stdout is what Claude Code adds to the session — the
31
+ * agent is the one that can act on it, and an agent that forgets to upgrade is
32
+ * the failure this exists for.
33
+ */
34
+ function versionLine() {
35
+ if (suppressed(process.env))
36
+ return null;
37
+ const state = readUpdateState(process.env);
38
+ return updateNotice(currentVersion(), state?.latest ?? null, { env: process.env });
39
+ }
21
40
  async function main() {
22
41
  if (resolveChannel({ hooksInstalled: true }).channel === "off") {
23
42
  log("CARRICK_CHANNEL=off; printing nothing");
@@ -31,6 +50,21 @@ async function main() {
31
50
  const note = rootNote(choice);
32
51
  if (note)
33
52
  log(note);
53
+ // Printed whatever the index turns out to say, and before the read that may
54
+ // have nothing to report: a machine with no index yet is a machine about to
55
+ // run its first scan, which is the worst moment to be on a stale build.
56
+ const version = versionLine();
57
+ if (version)
58
+ process.stdout.write(`${version}\n`);
59
+ // And the other mismatch: not "a newer one is published" but "the one
60
+ // answering this hook is not the one that wrote these files". Unthrottled,
61
+ // because this runs once per session and the agent about to work here is the
62
+ // reader who can act on it (carrick#1372).
63
+ if (choice.markerFound) {
64
+ const mismatch = versionMismatch(choice.root, currentVersion());
65
+ if (mismatch)
66
+ process.stdout.write(`${mismatch}\n`);
67
+ }
34
68
  const outcome = await status({ cwd: choice.root, workspace: choice.markerFound ? choice.root : null });
35
69
  if (!outcome.result) {
36
70
  log("no answer", outcome.failure ?? "");
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hook/session-start.ts"],"names":[],"mappings":";AACA,8EAA8E;AAC9E,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,0EAA0E;AAC1E,gEAAgE;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/D,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;QACzB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,IAAI;QACrD,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,wEAAwE;IACxE,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhE,6EAA6E;IAC7E,sEAAsE;IACtE,4DAA4D;IAC5D,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,IAAI,EAAE,CAAC;AACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hook/session-start.ts"],"names":[],"mappings":"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"}
package/dist/hook/stop.js CHANGED
@@ -22,6 +22,8 @@
22
22
  import { createLogger } from "../log.js";
23
23
  import { resolveChannel } from "../channel.js";
24
24
  import { drain } from "./reuse.js";
25
+ import { initialisedRoot, throttledVersionMismatch } from "../init/outdated.js";
26
+ import { currentVersion } from "../update.js";
25
27
  const log = createLogger("carrick-stop");
26
28
  async function readStdin() {
27
29
  const chunks = [];
@@ -64,12 +66,24 @@ async function main() {
64
66
  // (carrick#1335); the difference between the two hosts is the event name on
65
67
  // the wire and nothing else.
66
68
  const spoken = drain(session);
67
- if (spoken === null) {
69
+ const parts = [];
70
+ if (spoken === null)
68
71
  log(`nothing new in ${session}: everything recorded has been named`);
72
+ else
73
+ parts.push(spoken.line);
74
+ // The other thing a task's end is a good moment for: the `carrick` these
75
+ // hooks resolve is not the one that set this workspace up (carrick#1372).
76
+ // Once a day, through the same channel, because a mismatch stands until
77
+ // somebody fixes it and a line per turn would be noise.
78
+ const root = initialisedRoot(process.env["CLAUDE_PROJECT_DIR"] ?? process.cwd());
79
+ const mismatch = root === null ? null : throttledVersionMismatch(root, currentVersion());
80
+ if (mismatch)
81
+ parts.push(mismatch);
82
+ if (parts.length === 0)
69
83
  return;
70
- }
71
- process.stdout.write(emission(spoken.line));
72
- log(`named ${spoken.named} new function(s) to the model, of ${spoken.found} recorded`);
84
+ process.stdout.write(emission(parts.join("\n\n")));
85
+ if (spoken)
86
+ log(`named ${spoken.named} new function(s) to the model, of ${spoken.found} recorded`);
73
87
  }
74
88
  await main();
75
89
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hook/stop.ts"],"names":[],"mappings":";AACA,yEAAyE;AACzE,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,4EAA4E;AAC5E,yDAAyD;AACzD,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAQzC,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,kBAAkB,EAAE;YAClB,aAAa,EAAE,MAAM;YACrB,iBAAiB,EAAE,OAAO;SAC3B;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,0EAA0E;IAC1E,6EAA6E;IAC7E,yDAAyD;IACzD,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/D,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,IAAI,IAAI,CAAY,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,kDAAkD,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,4EAA4E;IAC5E,6BAA6B;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,kBAAkB,OAAO,sCAAsC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,MAAM,CAAC,KAAK,qCAAqC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,IAAI,EAAE,CAAC;AACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hook/stop.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@
25
25
  import { createLogger } from "../log.js";
26
26
  import { resolveChannel } from "../channel.js";
27
27
  import { drain } from "./reuse.js";
28
+ import { initialisedRoot, throttledVersionMismatch } from "../init/outdated.js";
29
+ import { currentVersion } from "../update.js";
28
30
  const log = createLogger("carrick-user-prompt");
29
31
  async function readStdin() {
30
32
  const chunks = [];
@@ -67,12 +69,22 @@ async function main() {
67
69
  return;
68
70
  }
69
71
  const spoken = drain(session);
70
- if (spoken === null) {
72
+ const parts = [];
73
+ if (spoken === null)
71
74
  log(`nothing new in ${session}: everything recorded has been named`);
75
+ else
76
+ parts.push(spoken.line);
77
+ // The same backstop the other hooks carry: this `carrick` is not the one
78
+ // that set this workspace up (carrick#1372), once a day per workspace.
79
+ const root = initialisedRoot(process.env["CLAUDE_PROJECT_DIR"] ?? process.cwd());
80
+ const mismatch = root === null ? null : throttledVersionMismatch(root, currentVersion());
81
+ if (mismatch)
82
+ parts.push(mismatch);
83
+ if (parts.length === 0)
72
84
  return;
73
- }
74
- process.stdout.write(emission(spoken.line));
75
- log(`named ${spoken.named} new function(s) to the model, of ${spoken.found} recorded`);
85
+ process.stdout.write(emission(parts.join("\n\n")));
86
+ if (spoken)
87
+ log(`named ${spoken.named} new function(s) to the model, of ${spoken.found} recorded`);
76
88
  }
77
89
  await main();
78
90
  process.exit(0);
@@ -1 +1 @@
1
- {"version":3,"file":"user-prompt.js","sourceRoot":"","sources":["../../src/hook/user-prompt.ts"],"names":[],"mappings":";AACA,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,8CAA8C;AAC9C,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,6EAA6E;AAC7E,wCAAwC;AACxC,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,2EAA2E;AAC3E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,8BAA8B;AAC9B,EAAE;AACF,iEAAiE;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,GAAG,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAMhD,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,kBAAkB,EAAE;YAClB,aAAa,EAAE,kBAAkB;YACjC,iBAAiB,EAAE,OAAO;SAC3B;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,0EAA0E;IAC1E,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/D,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,IAAI,IAAI,CAAY,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,kDAAkD,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,GAAG,CAAC,kBAAkB,OAAO,sCAAsC,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,MAAM,CAAC,KAAK,qCAAqC,MAAM,CAAC,KAAK,WAAW,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,IAAI,EAAE,CAAC;AACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"user-prompt.js","sourceRoot":"","sources":["../../src/hook/user-prompt.ts"],"names":[],"mappings":"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"}