@mnemonik/cli 7.111.10 → 7.112.3

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 (55) hide show
  1. package/dist/auth/credentials.d.ts +7 -2
  2. package/dist/auth/credentials.d.ts.map +1 -1
  3. package/dist/auth/credentials.js +311 -98
  4. package/dist/auth/index.d.ts +15 -0
  5. package/dist/auth/index.d.ts.map +1 -1
  6. package/dist/auth/index.js +72 -15
  7. package/dist/auth/index.js.map +1 -1
  8. package/dist/auth/installSession.js +3 -2
  9. package/dist/auth/status.js +3 -2
  10. package/dist/diagnostics.js +315 -102
  11. package/dist/digests.json +53 -53
  12. package/dist/identity/migrate.js +40 -2
  13. package/dist/install/hosts.js +3 -2
  14. package/dist/install/journal.js +40 -2
  15. package/dist/install/journey.js +40 -2
  16. package/dist/install/ownership.js +40 -2
  17. package/dist/install/transaction.d.ts +1 -3
  18. package/dist/install/transaction.d.ts.map +1 -1
  19. package/dist/install/transaction.js +67 -16
  20. package/dist/install/transaction.js.map +1 -1
  21. package/dist/install/ui.d.ts.map +1 -1
  22. package/dist/install/ui.js +42 -2
  23. package/dist/install/ui.js.map +1 -1
  24. package/dist/installSession.js +3 -2
  25. package/dist/installation.js +40 -2
  26. package/dist/launcher.js +40 -2
  27. package/dist/preflight.js +4 -3
  28. package/dist/project/eligibility.js +40 -2
  29. package/dist/project/records.js +40 -2
  30. package/dist/project.d.ts +11 -2
  31. package/dist/project.d.ts.map +1 -1
  32. package/dist/project.js +46 -4
  33. package/dist/project.js.map +1 -1
  34. package/dist/router.js +41 -3
  35. package/dist/runtime/releaseSource.js +40 -2
  36. package/dist/runtime/selfUpdate.js +40 -2
  37. package/dist/runtime/signers.js +242 -50
  38. package/dist/runtime/store.js +34 -0
  39. package/dist/runtime/updateCheck.js +40 -2
  40. package/dist/sbom.json +21 -21
  41. package/dist/scanner/control.js +40 -2
  42. package/dist/scanner/data.js +3 -2
  43. package/dist/scanner/discover.js +4 -3
  44. package/dist/scanner/enable.js +40 -2
  45. package/dist/scanner/picker.js +3 -2
  46. package/dist/scanner/service.js +40 -2
  47. package/dist/scanner/update.js +40 -2
  48. package/dist/scanner-release.json +29 -29
  49. package/dist/status.js +44 -6
  50. package/dist/transport/server.d.ts +21 -2
  51. package/dist/transport/server.d.ts.map +1 -1
  52. package/dist/transport/server.js +15 -1
  53. package/dist/transport/server.js.map +1 -1
  54. package/dist/vendor/local-setup.js +40 -2
  55. package/package.json +31 -31
@@ -501,6 +501,13 @@ var require_ignore = __commonJS({
501
501
  }
502
502
  });
503
503
 
504
+ // packages/shared/dist/hookTimeouts.js
505
+ var init_hookTimeouts = __esm({
506
+ "packages/shared/dist/hookTimeouts.js"() {
507
+ "use strict";
508
+ }
509
+ });
510
+
504
511
  // packages/shared/dist/runtimeSigners.js
505
512
  import { basename, dirname as dirname2, join as join2, resolve, sep, win32 } from "node:path";
506
513
  import { execFile, execFileSync } from "node:child_process";
@@ -618,11 +625,37 @@ var init_runtimeReader = __esm({
618
625
  });
619
626
 
620
627
  // packages/shared/dist/projectSetupHandoff.js
628
+ var PROJECT_ENSURE_TIMEOUT_MS, SUPERVISOR, RUN_STALE_MS;
621
629
  var init_projectSetupHandoff = __esm({
622
630
  "packages/shared/dist/projectSetupHandoff.js"() {
623
631
  "use strict";
624
632
  init_runtimeSigners();
633
+ init_hookTimeouts();
625
634
  init_runtimeReader();
635
+ PROJECT_ENSURE_TIMEOUT_MS = 3e4;
636
+ SUPERVISOR = `
637
+ const { execFile } = require('node:child_process');
638
+ const { writeFileSync, renameSync } = require('node:fs');
639
+ const [out, bin, ...args] = process.argv.slice(1);
640
+ let input = '';
641
+ process.stdin.setEncoding('utf8');
642
+ process.stdin.on('data', (chunk) => (input += chunk));
643
+ process.stdin.on('end', () => {
644
+ const child = execFile(
645
+ process.execPath,
646
+ [bin, ...args],
647
+ { shell: false, timeout: ${PROJECT_ENSURE_TIMEOUT_MS}, killSignal: 'SIGKILL', maxBuffer: 64 * 1024, env: process.env },
648
+ (error, stdout) => {
649
+ const result = { code: error ? (typeof error.code === 'number' ? error.code : null) : 0, killed: !!(error && error.killed), stdout: String(stdout) };
650
+ writeFileSync(out + '.tmp', JSON.stringify(result), { mode: 0o600 });
651
+ renameSync(out + '.tmp', out);
652
+ }
653
+ );
654
+ child.stdin.on('error', () => {});
655
+ child.stdin.end(input);
656
+ });
657
+ `;
658
+ RUN_STALE_MS = PROJECT_ENSURE_TIMEOUT_MS + 1e4;
626
659
  }
627
660
  });
628
661
 
@@ -631,6 +664,7 @@ var init_hookRuntime = __esm({
631
664
  "packages/shared/dist/hookRuntime.js"() {
632
665
  "use strict";
633
666
  init_runtimeSigners();
667
+ init_hookTimeouts();
634
668
  init_repositoryRoot();
635
669
  init_runtimeReader();
636
670
  init_runtimeSigners();
@@ -2230,7 +2264,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
2230
2264
 
2231
2265
  Which tool for what:
2232
2266
  - memory_get: hydrates exact originals by id.
2233
- - memory_add: saves a discrete decision or root cause.
2267
+ - memory_add: saves a decision, a user's preference, or a root cause.
2234
2268
  - memory_state: corrects wrong, outdated, or conflicting memory.
2235
2269
  - memory_info: explains confidence or origin when memory looks suspect.
2236
2270
  - memory_links: connects related decisions so they surface together.
@@ -2239,7 +2273,8 @@ Which tool for what:
2239
2273
  - policy: stores durable enforced rules or preferences, not memories.
2240
2274
  - tasks: creates follow-up work and closes completed work.
2241
2275
  - code_search: finds conceptual code when source wording differs.
2242
- - memory_search: finds rationale, intent, decisions, and prior work.`;
2276
+ - memory_search: finds rationale, intent, decisions, and prior work.
2277
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
2243
2278
  function getMcpInstructions() {
2244
2279
  const process2 = globalThis.process;
2245
2280
  if (!process2?.env) {
@@ -6401,6 +6436,9 @@ var DEFAULT_OPTIONS = {
6401
6436
  };
6402
6437
  var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
6403
6438
 
6439
+ // packages/shared/dist/index.js
6440
+ init_hookTimeouts();
6441
+
6404
6442
  // packages/shared/dist/jitDeliveryAck.js
6405
6443
  init_runtimeSigners();
6406
6444
 
package/dist/sbom.json CHANGED
@@ -17,13 +17,13 @@
17
17
  }
18
18
  ],
19
19
  "component": {
20
- "bom-ref": "@mnemonik/cli@0.1.73",
20
+ "bom-ref": "@mnemonik/cli@0.1.77",
21
21
  "type": "library",
22
22
  "name": "@mnemonik/cli",
23
- "version": "0.1.73",
23
+ "version": "0.1.77",
24
24
  "scope": "required",
25
25
  "description": "Mnemonik installer and local project helper",
26
- "purl": "pkg:npm/%40mnemonik/cli@0.1.73",
26
+ "purl": "pkg:npm/%40mnemonik/cli@0.1.77",
27
27
  "properties": [],
28
28
  "externalReferences": [
29
29
  {
@@ -35,12 +35,12 @@
35
35
  },
36
36
  "components": [
37
37
  {
38
- "bom-ref": "@mnemonik/credentials@0.1.73",
38
+ "bom-ref": "@mnemonik/credentials@0.1.77",
39
39
  "type": "library",
40
40
  "name": "@mnemonik/credentials",
41
- "version": "0.1.73",
41
+ "version": "0.1.77",
42
42
  "scope": "required",
43
- "purl": "pkg:npm/%40mnemonik/credentials@0.1.73",
43
+ "purl": "pkg:npm/%40mnemonik/credentials@0.1.77",
44
44
  "properties": [],
45
45
  "externalReferences": [
46
46
  {
@@ -50,12 +50,12 @@
50
50
  ]
51
51
  },
52
52
  {
53
- "bom-ref": "@mnemonik/local-setup@0.1.73",
53
+ "bom-ref": "@mnemonik/local-setup@0.1.77",
54
54
  "type": "library",
55
55
  "name": "@mnemonik/local-setup",
56
- "version": "0.1.73",
56
+ "version": "0.1.77",
57
57
  "scope": "required",
58
- "purl": "pkg:npm/%40mnemonik/local-setup@0.1.73",
58
+ "purl": "pkg:npm/%40mnemonik/local-setup@0.1.77",
59
59
  "properties": [],
60
60
  "externalReferences": [
61
61
  {
@@ -65,14 +65,14 @@
65
65
  ]
66
66
  },
67
67
  {
68
- "bom-ref": "@mnemonik/shared@7.111.10",
68
+ "bom-ref": "@mnemonik/shared@7.112.3",
69
69
  "type": "library",
70
70
  "name": "@mnemonik/shared",
71
- "version": "7.111.10",
71
+ "version": "7.112.3",
72
72
  "scope": "required",
73
73
  "author": "Anthony",
74
74
  "description": "Shared constants and utilities for Mnemonik packages",
75
- "purl": "pkg:npm/%40mnemonik/shared@7.111.10",
75
+ "purl": "pkg:npm/%40mnemonik/shared@7.112.3",
76
76
  "properties": [],
77
77
  "externalReferences": [
78
78
  {
@@ -271,29 +271,29 @@
271
271
  ],
272
272
  "dependencies": [
273
273
  {
274
- "ref": "@mnemonik/cli@0.1.73",
274
+ "ref": "@mnemonik/cli@0.1.77",
275
275
  "dependsOn": [
276
- "@mnemonik/credentials@0.1.73",
277
- "@mnemonik/local-setup@0.1.73",
278
- "@mnemonik/shared@7.111.10",
276
+ "@mnemonik/credentials@0.1.77",
277
+ "@mnemonik/local-setup@0.1.77",
278
+ "@mnemonik/shared@7.112.3",
279
279
  "smol-toml@1.8.0"
280
280
  ]
281
281
  },
282
282
  {
283
- "ref": "@mnemonik/credentials@0.1.73",
283
+ "ref": "@mnemonik/credentials@0.1.77",
284
284
  "dependsOn": [
285
- "@mnemonik/local-setup@0.1.73"
285
+ "@mnemonik/local-setup@0.1.77"
286
286
  ]
287
287
  },
288
288
  {
289
- "ref": "@mnemonik/local-setup@0.1.73",
289
+ "ref": "@mnemonik/local-setup@0.1.77",
290
290
  "dependsOn": [
291
- "@mnemonik/shared@7.111.10",
291
+ "@mnemonik/shared@7.112.3",
292
292
  "proper-lockfile@4.1.2"
293
293
  ]
294
294
  },
295
295
  {
296
- "ref": "@mnemonik/shared@7.111.10",
296
+ "ref": "@mnemonik/shared@7.112.3",
297
297
  "dependsOn": [
298
298
  "ignore@7.0.6",
299
299
  "web-tree-sitter@0.26.13"
@@ -501,6 +501,13 @@ var require_ignore = __commonJS({
501
501
  }
502
502
  });
503
503
 
504
+ // packages/shared/dist/hookTimeouts.js
505
+ var init_hookTimeouts = __esm({
506
+ "packages/shared/dist/hookTimeouts.js"() {
507
+ "use strict";
508
+ }
509
+ });
510
+
504
511
  // packages/shared/dist/runtimeSigners.js
505
512
  import { basename, dirname as dirname2, join as join2, resolve, sep, win32 } from "node:path";
506
513
  import { execFile, execFileSync } from "node:child_process";
@@ -618,11 +625,37 @@ var init_runtimeReader = __esm({
618
625
  });
619
626
 
620
627
  // packages/shared/dist/projectSetupHandoff.js
628
+ var PROJECT_ENSURE_TIMEOUT_MS, SUPERVISOR, RUN_STALE_MS;
621
629
  var init_projectSetupHandoff = __esm({
622
630
  "packages/shared/dist/projectSetupHandoff.js"() {
623
631
  "use strict";
624
632
  init_runtimeSigners();
633
+ init_hookTimeouts();
625
634
  init_runtimeReader();
635
+ PROJECT_ENSURE_TIMEOUT_MS = 3e4;
636
+ SUPERVISOR = `
637
+ const { execFile } = require('node:child_process');
638
+ const { writeFileSync, renameSync } = require('node:fs');
639
+ const [out, bin, ...args] = process.argv.slice(1);
640
+ let input = '';
641
+ process.stdin.setEncoding('utf8');
642
+ process.stdin.on('data', (chunk) => (input += chunk));
643
+ process.stdin.on('end', () => {
644
+ const child = execFile(
645
+ process.execPath,
646
+ [bin, ...args],
647
+ { shell: false, timeout: ${PROJECT_ENSURE_TIMEOUT_MS}, killSignal: 'SIGKILL', maxBuffer: 64 * 1024, env: process.env },
648
+ (error, stdout) => {
649
+ const result = { code: error ? (typeof error.code === 'number' ? error.code : null) : 0, killed: !!(error && error.killed), stdout: String(stdout) };
650
+ writeFileSync(out + '.tmp', JSON.stringify(result), { mode: 0o600 });
651
+ renameSync(out + '.tmp', out);
652
+ }
653
+ );
654
+ child.stdin.on('error', () => {});
655
+ child.stdin.end(input);
656
+ });
657
+ `;
658
+ RUN_STALE_MS = PROJECT_ENSURE_TIMEOUT_MS + 1e4;
626
659
  }
627
660
  });
628
661
 
@@ -631,6 +664,7 @@ var init_hookRuntime = __esm({
631
664
  "packages/shared/dist/hookRuntime.js"() {
632
665
  "use strict";
633
666
  init_runtimeSigners();
667
+ init_hookTimeouts();
634
668
  init_repositoryRoot();
635
669
  init_runtimeReader();
636
670
  init_runtimeSigners();
@@ -2226,7 +2260,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
2226
2260
 
2227
2261
  Which tool for what:
2228
2262
  - memory_get: hydrates exact originals by id.
2229
- - memory_add: saves a discrete decision or root cause.
2263
+ - memory_add: saves a decision, a user's preference, or a root cause.
2230
2264
  - memory_state: corrects wrong, outdated, or conflicting memory.
2231
2265
  - memory_info: explains confidence or origin when memory looks suspect.
2232
2266
  - memory_links: connects related decisions so they surface together.
@@ -2235,7 +2269,8 @@ Which tool for what:
2235
2269
  - policy: stores durable enforced rules or preferences, not memories.
2236
2270
  - tasks: creates follow-up work and closes completed work.
2237
2271
  - code_search: finds conceptual code when source wording differs.
2238
- - memory_search: finds rationale, intent, decisions, and prior work.`;
2272
+ - memory_search: finds rationale, intent, decisions, and prior work.
2273
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
2239
2274
  function getMcpInstructions() {
2240
2275
  const process2 = globalThis.process;
2241
2276
  if (!process2?.env) {
@@ -6397,6 +6432,9 @@ var DEFAULT_OPTIONS = {
6397
6432
  };
6398
6433
  var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
6399
6434
 
6435
+ // packages/shared/dist/index.js
6436
+ init_hookTimeouts();
6437
+
6400
6438
  // packages/shared/dist/jitDeliveryAck.js
6401
6439
  init_runtimeSigners();
6402
6440
 
@@ -498,7 +498,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
498
498
 
499
499
  Which tool for what:
500
500
  - memory_get: hydrates exact originals by id.
501
- - memory_add: saves a discrete decision or root cause.
501
+ - memory_add: saves a decision, a user's preference, or a root cause.
502
502
  - memory_state: corrects wrong, outdated, or conflicting memory.
503
503
  - memory_info: explains confidence or origin when memory looks suspect.
504
504
  - memory_links: connects related decisions so they surface together.
@@ -507,7 +507,8 @@ Which tool for what:
507
507
  - policy: stores durable enforced rules or preferences, not memories.
508
508
  - tasks: creates follow-up work and closes completed work.
509
509
  - code_search: finds conceptual code when source wording differs.
510
- - memory_search: finds rationale, intent, decisions, and prior work.`;
510
+ - memory_search: finds rationale, intent, decisions, and prior work.
511
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
511
512
  function getMcpInstructions() {
512
513
  const process2 = globalThis.process;
513
514
  if (!process2?.env) {
@@ -503,7 +503,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
503
503
 
504
504
  Which tool for what:
505
505
  - memory_get: hydrates exact originals by id.
506
- - memory_add: saves a discrete decision or root cause.
506
+ - memory_add: saves a decision, a user's preference, or a root cause.
507
507
  - memory_state: corrects wrong, outdated, or conflicting memory.
508
508
  - memory_info: explains confidence or origin when memory looks suspect.
509
509
  - memory_links: connects related decisions so they surface together.
@@ -512,7 +512,8 @@ Which tool for what:
512
512
  - policy: stores durable enforced rules or preferences, not memories.
513
513
  - tasks: creates follow-up work and closes completed work.
514
514
  - code_search: finds conceptual code when source wording differs.
515
- - memory_search: finds rationale, intent, decisions, and prior work.`;
515
+ - memory_search: finds rationale, intent, decisions, and prior work.
516
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
516
517
  function getMcpInstructions() {
517
518
  const process2 = globalThis.process;
518
519
  if (!process2?.env) {
@@ -4898,7 +4899,7 @@ async function readIdentityFile(dir, options = {}) {
4898
4899
  if (options.selectedRoot) {
4899
4900
  try {
4900
4901
  const value = JSON.parse(text);
4901
- if (value && typeof value === "object" && !Array.isArray(value) && !("projectId" in value))
4902
+ if (value && typeof value === "object" && !Array.isArray(value) && !("projectId" in value) && (!("schemaVersion" in value) || value.schemaVersion === 1))
4902
4903
  return { kind: "absent" };
4903
4904
  } catch {
4904
4905
  }
@@ -501,6 +501,13 @@ var require_ignore = __commonJS({
501
501
  }
502
502
  });
503
503
 
504
+ // packages/shared/dist/hookTimeouts.js
505
+ var init_hookTimeouts = __esm({
506
+ "packages/shared/dist/hookTimeouts.js"() {
507
+ "use strict";
508
+ }
509
+ });
510
+
504
511
  // packages/shared/dist/runtimeSigners.js
505
512
  import { basename, dirname as dirname2, join as join2, resolve, sep, win32 } from "node:path";
506
513
  import { execFile, execFileSync } from "node:child_process";
@@ -618,11 +625,37 @@ var init_runtimeReader = __esm({
618
625
  });
619
626
 
620
627
  // packages/shared/dist/projectSetupHandoff.js
628
+ var PROJECT_ENSURE_TIMEOUT_MS, SUPERVISOR, RUN_STALE_MS;
621
629
  var init_projectSetupHandoff = __esm({
622
630
  "packages/shared/dist/projectSetupHandoff.js"() {
623
631
  "use strict";
624
632
  init_runtimeSigners();
633
+ init_hookTimeouts();
625
634
  init_runtimeReader();
635
+ PROJECT_ENSURE_TIMEOUT_MS = 3e4;
636
+ SUPERVISOR = `
637
+ const { execFile } = require('node:child_process');
638
+ const { writeFileSync, renameSync } = require('node:fs');
639
+ const [out, bin, ...args] = process.argv.slice(1);
640
+ let input = '';
641
+ process.stdin.setEncoding('utf8');
642
+ process.stdin.on('data', (chunk) => (input += chunk));
643
+ process.stdin.on('end', () => {
644
+ const child = execFile(
645
+ process.execPath,
646
+ [bin, ...args],
647
+ { shell: false, timeout: ${PROJECT_ENSURE_TIMEOUT_MS}, killSignal: 'SIGKILL', maxBuffer: 64 * 1024, env: process.env },
648
+ (error, stdout) => {
649
+ const result = { code: error ? (typeof error.code === 'number' ? error.code : null) : 0, killed: !!(error && error.killed), stdout: String(stdout) };
650
+ writeFileSync(out + '.tmp', JSON.stringify(result), { mode: 0o600 });
651
+ renameSync(out + '.tmp', out);
652
+ }
653
+ );
654
+ child.stdin.on('error', () => {});
655
+ child.stdin.end(input);
656
+ });
657
+ `;
658
+ RUN_STALE_MS = PROJECT_ENSURE_TIMEOUT_MS + 1e4;
626
659
  }
627
660
  });
628
661
 
@@ -631,6 +664,7 @@ var init_hookRuntime = __esm({
631
664
  "packages/shared/dist/hookRuntime.js"() {
632
665
  "use strict";
633
666
  init_runtimeSigners();
667
+ init_hookTimeouts();
634
668
  init_repositoryRoot();
635
669
  init_runtimeReader();
636
670
  init_runtimeSigners();
@@ -2232,7 +2266,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
2232
2266
 
2233
2267
  Which tool for what:
2234
2268
  - memory_get: hydrates exact originals by id.
2235
- - memory_add: saves a discrete decision or root cause.
2269
+ - memory_add: saves a decision, a user's preference, or a root cause.
2236
2270
  - memory_state: corrects wrong, outdated, or conflicting memory.
2237
2271
  - memory_info: explains confidence or origin when memory looks suspect.
2238
2272
  - memory_links: connects related decisions so they surface together.
@@ -2241,7 +2275,8 @@ Which tool for what:
2241
2275
  - policy: stores durable enforced rules or preferences, not memories.
2242
2276
  - tasks: creates follow-up work and closes completed work.
2243
2277
  - code_search: finds conceptual code when source wording differs.
2244
- - memory_search: finds rationale, intent, decisions, and prior work.`;
2278
+ - memory_search: finds rationale, intent, decisions, and prior work.
2279
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
2245
2280
  function getMcpInstructions() {
2246
2281
  const process2 = globalThis.process;
2247
2282
  if (!process2?.env) {
@@ -6403,6 +6438,9 @@ var DEFAULT_OPTIONS = {
6403
6438
  };
6404
6439
  var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
6405
6440
 
6441
+ // packages/shared/dist/index.js
6442
+ init_hookTimeouts();
6443
+
6406
6444
  // packages/shared/dist/jitDeliveryAck.js
6407
6445
  init_runtimeSigners();
6408
6446
 
@@ -503,7 +503,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
503
503
 
504
504
  Which tool for what:
505
505
  - memory_get: hydrates exact originals by id.
506
- - memory_add: saves a discrete decision or root cause.
506
+ - memory_add: saves a decision, a user's preference, or a root cause.
507
507
  - memory_state: corrects wrong, outdated, or conflicting memory.
508
508
  - memory_info: explains confidence or origin when memory looks suspect.
509
509
  - memory_links: connects related decisions so they surface together.
@@ -512,7 +512,8 @@ Which tool for what:
512
512
  - policy: stores durable enforced rules or preferences, not memories.
513
513
  - tasks: creates follow-up work and closes completed work.
514
514
  - code_search: finds conceptual code when source wording differs.
515
- - memory_search: finds rationale, intent, decisions, and prior work.`;
515
+ - memory_search: finds rationale, intent, decisions, and prior work.
516
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
516
517
  function getMcpInstructions() {
517
518
  const process2 = globalThis.process;
518
519
  if (!process2?.env) {
@@ -501,6 +501,13 @@ var require_ignore = __commonJS({
501
501
  }
502
502
  });
503
503
 
504
+ // packages/shared/dist/hookTimeouts.js
505
+ var init_hookTimeouts = __esm({
506
+ "packages/shared/dist/hookTimeouts.js"() {
507
+ "use strict";
508
+ }
509
+ });
510
+
504
511
  // packages/shared/dist/runtimeSigners.js
505
512
  import { basename, dirname as dirname2, join as join2, resolve, sep, win32 } from "node:path";
506
513
  import { execFile, execFileSync } from "node:child_process";
@@ -618,11 +625,37 @@ var init_runtimeReader = __esm({
618
625
  });
619
626
 
620
627
  // packages/shared/dist/projectSetupHandoff.js
628
+ var PROJECT_ENSURE_TIMEOUT_MS, SUPERVISOR, RUN_STALE_MS;
621
629
  var init_projectSetupHandoff = __esm({
622
630
  "packages/shared/dist/projectSetupHandoff.js"() {
623
631
  "use strict";
624
632
  init_runtimeSigners();
633
+ init_hookTimeouts();
625
634
  init_runtimeReader();
635
+ PROJECT_ENSURE_TIMEOUT_MS = 3e4;
636
+ SUPERVISOR = `
637
+ const { execFile } = require('node:child_process');
638
+ const { writeFileSync, renameSync } = require('node:fs');
639
+ const [out, bin, ...args] = process.argv.slice(1);
640
+ let input = '';
641
+ process.stdin.setEncoding('utf8');
642
+ process.stdin.on('data', (chunk) => (input += chunk));
643
+ process.stdin.on('end', () => {
644
+ const child = execFile(
645
+ process.execPath,
646
+ [bin, ...args],
647
+ { shell: false, timeout: ${PROJECT_ENSURE_TIMEOUT_MS}, killSignal: 'SIGKILL', maxBuffer: 64 * 1024, env: process.env },
648
+ (error, stdout) => {
649
+ const result = { code: error ? (typeof error.code === 'number' ? error.code : null) : 0, killed: !!(error && error.killed), stdout: String(stdout) };
650
+ writeFileSync(out + '.tmp', JSON.stringify(result), { mode: 0o600 });
651
+ renameSync(out + '.tmp', out);
652
+ }
653
+ );
654
+ child.stdin.on('error', () => {});
655
+ child.stdin.end(input);
656
+ });
657
+ `;
658
+ RUN_STALE_MS = PROJECT_ENSURE_TIMEOUT_MS + 1e4;
626
659
  }
627
660
  });
628
661
 
@@ -631,6 +664,7 @@ var init_hookRuntime = __esm({
631
664
  "packages/shared/dist/hookRuntime.js"() {
632
665
  "use strict";
633
666
  init_runtimeSigners();
667
+ init_hookTimeouts();
634
668
  init_repositoryRoot();
635
669
  init_runtimeReader();
636
670
  init_runtimeSigners();
@@ -2226,7 +2260,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
2226
2260
 
2227
2261
  Which tool for what:
2228
2262
  - memory_get: hydrates exact originals by id.
2229
- - memory_add: saves a discrete decision or root cause.
2263
+ - memory_add: saves a decision, a user's preference, or a root cause.
2230
2264
  - memory_state: corrects wrong, outdated, or conflicting memory.
2231
2265
  - memory_info: explains confidence or origin when memory looks suspect.
2232
2266
  - memory_links: connects related decisions so they surface together.
@@ -2235,7 +2269,8 @@ Which tool for what:
2235
2269
  - policy: stores durable enforced rules or preferences, not memories.
2236
2270
  - tasks: creates follow-up work and closes completed work.
2237
2271
  - code_search: finds conceptual code when source wording differs.
2238
- - memory_search: finds rationale, intent, decisions, and prior work.`;
2272
+ - memory_search: finds rationale, intent, decisions, and prior work.
2273
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
2239
2274
  function getMcpInstructions() {
2240
2275
  const process2 = globalThis.process;
2241
2276
  if (!process2?.env) {
@@ -6397,6 +6432,9 @@ var DEFAULT_OPTIONS = {
6397
6432
  };
6398
6433
  var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
6399
6434
 
6435
+ // packages/shared/dist/index.js
6436
+ init_hookTimeouts();
6437
+
6400
6438
  // packages/shared/dist/jitDeliveryAck.js
6401
6439
  init_runtimeSigners();
6402
6440
 
@@ -501,6 +501,13 @@ var require_ignore = __commonJS({
501
501
  }
502
502
  });
503
503
 
504
+ // packages/shared/dist/hookTimeouts.js
505
+ var init_hookTimeouts = __esm({
506
+ "packages/shared/dist/hookTimeouts.js"() {
507
+ "use strict";
508
+ }
509
+ });
510
+
504
511
  // packages/shared/dist/runtimeSigners.js
505
512
  import { basename, dirname as dirname2, join as join2, resolve, sep, win32 } from "node:path";
506
513
  import { execFile, execFileSync } from "node:child_process";
@@ -618,11 +625,37 @@ var init_runtimeReader = __esm({
618
625
  });
619
626
 
620
627
  // packages/shared/dist/projectSetupHandoff.js
628
+ var PROJECT_ENSURE_TIMEOUT_MS, SUPERVISOR, RUN_STALE_MS;
621
629
  var init_projectSetupHandoff = __esm({
622
630
  "packages/shared/dist/projectSetupHandoff.js"() {
623
631
  "use strict";
624
632
  init_runtimeSigners();
633
+ init_hookTimeouts();
625
634
  init_runtimeReader();
635
+ PROJECT_ENSURE_TIMEOUT_MS = 3e4;
636
+ SUPERVISOR = `
637
+ const { execFile } = require('node:child_process');
638
+ const { writeFileSync, renameSync } = require('node:fs');
639
+ const [out, bin, ...args] = process.argv.slice(1);
640
+ let input = '';
641
+ process.stdin.setEncoding('utf8');
642
+ process.stdin.on('data', (chunk) => (input += chunk));
643
+ process.stdin.on('end', () => {
644
+ const child = execFile(
645
+ process.execPath,
646
+ [bin, ...args],
647
+ { shell: false, timeout: ${PROJECT_ENSURE_TIMEOUT_MS}, killSignal: 'SIGKILL', maxBuffer: 64 * 1024, env: process.env },
648
+ (error, stdout) => {
649
+ const result = { code: error ? (typeof error.code === 'number' ? error.code : null) : 0, killed: !!(error && error.killed), stdout: String(stdout) };
650
+ writeFileSync(out + '.tmp', JSON.stringify(result), { mode: 0o600 });
651
+ renameSync(out + '.tmp', out);
652
+ }
653
+ );
654
+ child.stdin.on('error', () => {});
655
+ child.stdin.end(input);
656
+ });
657
+ `;
658
+ RUN_STALE_MS = PROJECT_ENSURE_TIMEOUT_MS + 1e4;
626
659
  }
627
660
  });
628
661
 
@@ -631,6 +664,7 @@ var init_hookRuntime = __esm({
631
664
  "packages/shared/dist/hookRuntime.js"() {
632
665
  "use strict";
633
666
  init_runtimeSigners();
667
+ init_hookTimeouts();
634
668
  init_repositoryRoot();
635
669
  init_runtimeReader();
636
670
  init_runtimeSigners();
@@ -2226,7 +2260,7 @@ Project work items live in tasks. A pending list requires action:"list" and stat
2226
2260
 
2227
2261
  Which tool for what:
2228
2262
  - memory_get: hydrates exact originals by id.
2229
- - memory_add: saves a discrete decision or root cause.
2263
+ - memory_add: saves a decision, a user's preference, or a root cause.
2230
2264
  - memory_state: corrects wrong, outdated, or conflicting memory.
2231
2265
  - memory_info: explains confidence or origin when memory looks suspect.
2232
2266
  - memory_links: connects related decisions so they surface together.
@@ -2235,7 +2269,8 @@ Which tool for what:
2235
2269
  - policy: stores durable enforced rules or preferences, not memories.
2236
2270
  - tasks: creates follow-up work and closes completed work.
2237
2271
  - code_search: finds conceptual code when source wording differs.
2238
- - memory_search: finds rationale, intent, decisions, and prior work.`;
2272
+ - memory_search: finds rationale, intent, decisions, and prior work.
2273
+ - memory_ingest: brings the project's docs and code comments into memory when asked.`;
2239
2274
  function getMcpInstructions() {
2240
2275
  const process2 = globalThis.process;
2241
2276
  if (!process2?.env) {
@@ -6397,6 +6432,9 @@ var DEFAULT_OPTIONS = {
6397
6432
  };
6398
6433
  var BUILT_IN_IGNORE_DIR_SET = new Set(BUILT_IN_IGNORE_DIRS);
6399
6434
 
6435
+ // packages/shared/dist/index.js
6436
+ init_hookTimeouts();
6437
+
6400
6438
  // packages/shared/dist/jitDeliveryAck.js
6401
6439
  init_runtimeSigners();
6402
6440