@raidiant/notifai 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +20 -4
  2. package/dist/atomic-file.d.ts +4 -0
  3. package/dist/atomic-file.js +60 -10
  4. package/dist/atomic-file.js.map +1 -1
  5. package/dist/client.d.ts +25 -2
  6. package/dist/client.js +45 -1
  7. package/dist/client.js.map +1 -1
  8. package/dist/commands.d.ts +56 -7
  9. package/dist/commands.js +980 -318
  10. package/dist/commands.js.map +1 -1
  11. package/dist/config-schema.d.ts +1 -1
  12. package/dist/config-schema.js +46 -8
  13. package/dist/config-schema.js.map +1 -1
  14. package/dist/config.d.ts +38 -3
  15. package/dist/config.js +61 -14
  16. package/dist/config.js.map +1 -1
  17. package/dist/file-lock.d.ts +26 -0
  18. package/dist/file-lock.js +268 -0
  19. package/dist/file-lock.js.map +1 -0
  20. package/dist/harnesses.d.ts +28 -0
  21. package/dist/harnesses.js +40 -0
  22. package/dist/harnesses.js.map +1 -0
  23. package/dist/hook-adapter.d.ts +27 -0
  24. package/dist/hook-adapter.js +188 -0
  25. package/dist/hook-adapter.js.map +1 -0
  26. package/dist/hook-input.d.ts +10 -0
  27. package/dist/hook-input.js +64 -0
  28. package/dist/hook-input.js.map +1 -0
  29. package/dist/hooks.d.ts +66 -10
  30. package/dist/hooks.js +751 -276
  31. package/dist/hooks.js.map +1 -1
  32. package/dist/install-hooks.d.ts +40 -16
  33. package/dist/install-hooks.js +217 -73
  34. package/dist/install-hooks.js.map +1 -1
  35. package/dist/interactive.d.ts +1 -1
  36. package/dist/interactive.js +3 -3
  37. package/dist/interactive.js.map +1 -1
  38. package/dist/logging.d.ts +142 -0
  39. package/dist/logging.js +533 -0
  40. package/dist/logging.js.map +1 -0
  41. package/dist/main.js +97 -36
  42. package/dist/main.js.map +1 -1
  43. package/dist/opencode-plugin.d.ts +7 -7
  44. package/dist/opencode-plugin.js +12 -13
  45. package/dist/opencode-plugin.js.map +1 -1
  46. package/dist/ui/config-view.js +3 -0
  47. package/dist/ui/config-view.js.map +1 -1
  48. package/dist/ui/theme.d.ts +1 -1
  49. package/package.json +3 -2
  50. package/src/atomic-file.ts +86 -7
  51. package/src/client.test.ts +12 -0
  52. package/src/client.ts +72 -4
  53. package/src/commands.test.ts +891 -43
  54. package/src/commands.ts +1133 -332
  55. package/src/config-schema.ts +51 -9
  56. package/src/config.test.ts +6 -5
  57. package/src/config.ts +85 -16
  58. package/src/file-lock-process-worker.test.ts +64 -0
  59. package/src/file-lock.test.ts +279 -0
  60. package/src/file-lock.ts +318 -0
  61. package/src/harnesses.test.ts +48 -0
  62. package/src/harnesses.ts +59 -0
  63. package/src/hook-adapter.test.ts +187 -0
  64. package/src/hook-adapter.ts +212 -0
  65. package/src/hook-input.test.ts +39 -0
  66. package/src/hook-input.ts +72 -0
  67. package/src/hooks.test.ts +1318 -240
  68. package/src/hooks.ts +1046 -296
  69. package/src/install-hooks.test.ts +90 -41
  70. package/src/install-hooks.ts +259 -74
  71. package/src/interactive.ts +3 -3
  72. package/src/logging-process-worker.test.ts +39 -0
  73. package/src/logging.test.ts +453 -0
  74. package/src/logging.ts +639 -0
  75. package/src/main.ts +113 -32
  76. package/src/opencode-plugin.ts +15 -16
  77. package/src/session-end-log-lock-worker.test.ts +35 -0
  78. package/src/skill.test.ts +11 -0
  79. package/src/ui/config-view.test.ts +4 -2
  80. package/src/ui/config-view.ts +3 -0
@@ -1,8 +1,13 @@
1
- import { existsSync, readFileSync, statSync, } from 'node:fs';
1
+ import { existsSync, lstatSync, readFileSync, realpathSync, statSync, } from 'node:fs';
2
+ import { createHash } from 'node:crypto';
2
3
  import os from 'node:os';
3
4
  import path from 'node:path';
5
+ import { parse as parseToml } from 'smol-toml';
4
6
  import { atomicWriteFileSync } from './atomic-file.js';
7
+ import { hookAdapterPath } from './hook-adapter.js';
5
8
  import { opencodePluginPath, opencodePluginTarget } from './opencode-plugin.js';
9
+ import { HARNESSES, HOOK_TIMING } from './harnesses.js';
10
+ export { HARNESSES } from './harnesses.js';
6
11
  /**
7
12
  * The three joints the OpenCode plugin hooks into, as (harness event, the
8
13
  * `notifai hook` event it runs). The plugin is a module and has no settings
@@ -14,25 +19,12 @@ const OPENCODE_EVENTS = [
14
19
  ['SessionEnd', 'session-end'],
15
20
  ];
16
21
  /**
17
- * Harness hook installation.
18
- *
19
- * Claude Code's `settings.json` and Codex's `hooks.json` use the same shape —
20
- * `hooks` maps an event name to matcher groups, each holding command handlers
21
- * with an optional timeout — so one generator serves both. Only the file
22
- * location and the event set differ.
23
- *
24
- * Cursor's native format is flat and lower-camel-cased, while OpenCode's
25
- * extension point is a JavaScript plugin module. Each therefore has a bounded
26
- * adapter instead of being forced through this shared document shape.
27
- */
28
- export const HARNESSES = ['claude-code', 'codex', 'cursor', 'opencode'];
29
- /**
30
- * The command each hook runs. Uses the absolute interpreter and script path
31
- * rather than the bare binary name: hooks inherit a login-ish environment, and
32
- * a `notifai` that is only on an interactive shell's PATH fails silently.
22
+ * The command each hook runs. Harness definitions know only the stable
23
+ * user-level adapter. Mutable Node, package-manager, version, and checkout
24
+ * paths live behind that seam and never enter a trusted hook identity.
33
25
  */
34
- export function hookCommand(execPath, scriptPath, event, harness) {
35
- return (`${quote(execPath)} ${quote(scriptPath)} hook ${event} ${OWNER_MARKER}` +
26
+ export function hookCommand(adapterPath, event, harness) {
27
+ return (`${quote(adapterPath)} hook ${event} ${OWNER_MARKER}` +
36
28
  (harness === undefined ? '' : ` --harness ${harness}`));
37
29
  }
38
30
  /**
@@ -59,25 +51,33 @@ export const OWNER_MARKER = '--owner notifai';
59
51
  function quote(value) {
60
52
  return `'${value.replaceAll("'", `'\\''`)}'`;
61
53
  }
62
- /** Command-hook harnesses kill at 600s; generated adapters use the same safe ceiling. */
63
- const HOOK_CEILING_SECONDS = 590;
64
- /** Grace, reply wait, and teardown headroom for any blocking turn-end adapter. */
65
- export function blockingHookTimeoutSeconds(graceSeconds, replyTimeoutSeconds) {
66
- return Math.min(HOOK_CEILING_SECONDS, graceSeconds + replyTimeoutSeconds + 60);
54
+ /** Generated blocking adapters grant the owner budget one fixed minute of host headroom. */
55
+ const HOOK_CEILING_SECONDS = HOOK_TIMING.totalSeconds + HOOK_TIMING.hostHeadroomSeconds;
56
+ /**
57
+ * Stable process budget for a blocking turn-end adapter.
58
+ *
59
+ * Codex trusts the exact serialized hook definition. Deriving this timeout
60
+ * from mutable question preferences meant changing `ask_grace_seconds`
61
+ * silently invalidated Stop trust while the other two handlers kept running.
62
+ * The runtime already fits grace and reply waiting inside the harness ceiling;
63
+ * the installed identity therefore stays at that ceiling across preferences.
64
+ */
65
+ export function blockingHookTimeoutSeconds() {
66
+ return HOOK_CEILING_SECONDS;
67
67
  }
68
68
  export function buildHookConfig(options) {
69
- const { execPath, scriptPath } = options;
70
- // Stop can spend the grace window AND then the reply wait, so the declared
71
- // timeout must cover both. Headroom on top so the harness never kills the
72
- // hook first; a killed hook loses the answer the user already gave.
73
- const blockingTimeout = blockingHookTimeoutSeconds(options.graceSeconds, options.replyTimeoutSeconds);
69
+ const { adapterPath } = options;
70
+ const hostOwnsStopTimeout = options.harness === 'codex';
71
+ // Runtime preferences fit inside this fixed process budget without becoming
72
+ // part of the serialized definition Codex asks the user to trust.
73
+ const blockingTimeout = blockingHookTimeoutSeconds();
74
74
  return {
75
75
  UserPromptSubmit: [
76
76
  {
77
77
  hooks: [
78
78
  {
79
79
  type: 'command',
80
- command: hookCommand(execPath, scriptPath, 'user-prompt-submit', options.harness),
80
+ command: hookCommand(adapterPath, 'user-prompt-submit', options.harness),
81
81
  // Claude Code caps UserPromptSubmit at 30s; stay well inside it so
82
82
  // a slow network can never delay the user's own prompt.
83
83
  timeout: 15,
@@ -90,8 +90,8 @@ export function buildHookConfig(options) {
90
90
  hooks: [
91
91
  {
92
92
  type: 'command',
93
- command: hookCommand(execPath, scriptPath, 'stop', options.harness),
94
- timeout: blockingTimeout,
93
+ command: hookCommand(adapterPath, 'stop', options.harness),
94
+ ...(hostOwnsStopTimeout ? {} : { timeout: blockingTimeout }),
95
95
  },
96
96
  ],
97
97
  },
@@ -101,7 +101,7 @@ export function buildHookConfig(options) {
101
101
  hooks: [
102
102
  {
103
103
  type: 'command',
104
- command: hookCommand(execPath, scriptPath, 'session-end', options.harness),
104
+ command: hookCommand(adapterPath, 'session-end', options.harness),
105
105
  // Both harnesses give SessionEnd a ~1-3s budget, so this handler
106
106
  // only touches local state.
107
107
  timeout: 3,
@@ -113,17 +113,17 @@ export function buildHookConfig(options) {
113
113
  }
114
114
  /** Cursor's native schema is flat and uses lower-camel lifecycle event names. */
115
115
  export function buildCursorHookConfig(options) {
116
- const blockingTimeout = blockingHookTimeoutSeconds(options.graceSeconds, options.replyTimeoutSeconds);
116
+ const blockingTimeout = blockingHookTimeoutSeconds();
117
117
  return {
118
118
  beforeSubmitPrompt: [
119
119
  {
120
- command: hookCommand(options.execPath, options.scriptPath, 'user-prompt-submit', 'cursor'),
120
+ command: hookCommand(options.adapterPath, 'user-prompt-submit', 'cursor'),
121
121
  timeout: 15,
122
122
  },
123
123
  ],
124
124
  stop: [
125
125
  {
126
- command: hookCommand(options.execPath, options.scriptPath, 'stop', 'cursor'),
126
+ command: hookCommand(options.adapterPath, 'stop', 'cursor'),
127
127
  timeout: blockingTimeout,
128
128
  // A continuation may register a real follow-up question. Match the
129
129
  // session-state cap so those chains are useful but never unbounded.
@@ -132,7 +132,7 @@ export function buildCursorHookConfig(options) {
132
132
  ],
133
133
  sessionEnd: [
134
134
  {
135
- command: hookCommand(options.execPath, options.scriptPath, 'session-end', 'cursor'),
135
+ command: hookCommand(options.adapterPath, 'session-end', 'cursor'),
136
136
  timeout: 3,
137
137
  },
138
138
  ],
@@ -144,25 +144,31 @@ export function buildCursorHookConfig(options) {
144
144
  * questions pushed to is not a property of the repository.
145
145
  */
146
146
  export function settingsFile(harness, global, cwd, env = process.env) {
147
- // OpenCode has no settings document to merge into — its adapter is a
148
- // generated plugin module, so it owns a whole file rather than a handler
149
- // inside one. `opencodePluginPath` is its equivalent.
150
- if (harness === 'opencode')
151
- return opencodePluginPath(global, cwd, env);
152
- if (harness === 'cursor') {
153
- const home = env['HOME'] !== undefined && env['HOME'] !== '' ? env['HOME'] : os.homedir();
154
- return global
155
- ? path.join(home, '.cursor', 'hooks.json')
156
- : path.join(cwd, '.cursor', 'hooks.json');
157
- }
158
- if (harness === 'claude-code') {
159
- return global
160
- ? path.join(configHome(env, 'CLAUDE_CONFIG_DIR', '.claude'), 'settings.json')
161
- : path.join(cwd, '.claude', 'settings.local.json');
147
+ switch (harness) {
148
+ // OpenCode has no settings document to merge into — its adapter is a
149
+ // generated plugin module, so it owns a whole file instead.
150
+ case 'opencode':
151
+ return opencodePluginPath(global, cwd, env);
152
+ case 'cursor': {
153
+ const home = env['HOME'] !== undefined && env['HOME'] !== '' ? env['HOME'] : os.homedir();
154
+ return global
155
+ ? path.join(home, '.cursor', 'hooks.json')
156
+ : path.join(cwd, '.cursor', 'hooks.json');
157
+ }
158
+ case 'claude-code':
159
+ return global
160
+ ? path.join(configHome(env, 'CLAUDE_CONFIG_DIR', '.claude'), 'settings.json')
161
+ : path.join(cwd, '.claude', 'settings.local.json');
162
+ case 'codex':
163
+ return global
164
+ ? path.join(configHome(env, 'CODEX_HOME', '.codex'), 'hooks.json')
165
+ : path.join(codexProjectRoot(cwd), '.codex', 'hooks.json');
166
+ default:
167
+ return assertNeverHarness(harness);
162
168
  }
163
- return global
164
- ? path.join(configHome(env, 'CODEX_HOME', '.codex'), 'hooks.json')
165
- : path.join(codexProjectRoot(cwd), '.codex', 'hooks.json');
169
+ }
170
+ function assertNeverHarness(harness) {
171
+ throw new Error(`Unsupported harness: ${String(harness)}`);
166
172
  }
167
173
  /**
168
174
  * Where Codex looks for a project's hooks — the **main** repository, not the
@@ -326,8 +332,9 @@ export function detectHarness(cwd) {
326
332
  function readCursorSettings(file) {
327
333
  if (!existsSync(file))
328
334
  return { version: 1 };
335
+ const source = readOwnedRegularFile(file);
329
336
  try {
330
- const parsed = JSON.parse(readFileSync(file, 'utf8'));
337
+ const parsed = JSON.parse(source);
331
338
  return typeof parsed === 'object' && parsed !== null
332
339
  ? parsed
333
340
  : { version: 1 };
@@ -341,7 +348,15 @@ function isOurCommand(command, scriptPath) {
341
348
  return true;
342
349
  return (command.includes(`${scriptPath}' hook `) ||
343
350
  command.includes(`${scriptPath}" hook `) ||
344
- command.includes(`${scriptPath} hook `));
351
+ command.includes(`${scriptPath} hook `) ||
352
+ isLegacyNotifaiCommand(command));
353
+ }
354
+ /** Cleanup-only recognition for unmistakable pre-marker Notifai commands. */
355
+ function isLegacyNotifaiCommand(command) {
356
+ const hook = `['"]?\\s+hook (?:user-prompt-submit|stop|session-end)\\b`;
357
+ return (new RegExp(`(?:^|[\\s'"])notifai(?:\\.cmd)?${hook}`).test(command) ||
358
+ new RegExp(`(?:^|[/\\\\])(?:notifai-public|notifai)[/\\\\]apps[/\\\\]cli[/\\\\]dist[/\\\\]main\\.js${hook}`, 'i').test(command) ||
359
+ new RegExp(`[/\\\\]node_modules[/\\\\]@raidiant[/\\\\]notifai[/\\\\]dist[/\\\\]main\\.js${hook}`, 'i').test(command));
345
360
  }
346
361
  export function mergeCursorHooks(existing, incoming, scriptPath) {
347
362
  const hooks = {};
@@ -381,8 +396,9 @@ export function removeCursorHooks(existing, scriptPath) {
381
396
  function readSettings(file) {
382
397
  if (!existsSync(file))
383
398
  return {};
399
+ const source = readOwnedRegularFile(file);
384
400
  try {
385
- const parsed = JSON.parse(readFileSync(file, 'utf8'));
401
+ const parsed = JSON.parse(source);
386
402
  return typeof parsed === 'object' && parsed !== null ? parsed : {};
387
403
  }
388
404
  catch {
@@ -470,7 +486,9 @@ export function removeHooks(existing, scriptPath) {
470
486
  * support.
471
487
  */
472
488
  export function applyPlan(file, document) {
473
- atomicWriteFileSync(file, `${JSON.stringify(document, null, 2)}\n`);
489
+ atomicWriteFileSync(file, `${JSON.stringify(document, null, 2)}\n`, {
490
+ requireCurrentUserOwner: true,
491
+ });
474
492
  }
475
493
  export function loadSettings(file) {
476
494
  return readSettings(file);
@@ -478,6 +496,100 @@ export function loadSettings(file) {
478
496
  export function loadCursorSettings(file) {
479
497
  return readCursorSettings(file);
480
498
  }
499
+ /** Codex's canonical event spelling inside its persisted trust keys. */
500
+ function codexEventName(event) {
501
+ return event.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();
502
+ }
503
+ /** Recursively sort object keys before hashing, matching Codex's canonical JSON. */
504
+ function canonicalValue(value) {
505
+ if (Array.isArray(value))
506
+ return value.map(canonicalValue);
507
+ if (typeof value !== 'object' || value === null)
508
+ return value;
509
+ return Object.fromEntries(Object.entries(value)
510
+ .sort(([left], [right]) => left.localeCompare(right))
511
+ .map(([key, child]) => [key, canonicalValue(child)]));
512
+ }
513
+ /**
514
+ * Best-effort mirror of the identity current Codex builds compare with
515
+ * `hooks.state.*.trusted_hash`. This persisted format is diagnostic evidence,
516
+ * not an API: Codex's `/hooks` UI remains authoritative and Notifai never
517
+ * writes the trust store.
518
+ */
519
+ export function codexHookIdentityHash(handler) {
520
+ const command = {
521
+ type: 'command',
522
+ command: handler.command,
523
+ timeout: Math.max(1, handler.timeout ?? 600),
524
+ async: handler.async ?? false,
525
+ ...(handler.statusMessage === undefined ? {} : { statusMessage: handler.statusMessage }),
526
+ };
527
+ const normalized = canonicalValue({
528
+ event_name: codexEventName(handler.event),
529
+ hooks: [command],
530
+ });
531
+ return `sha256:${createHash('sha256').update(JSON.stringify(normalized)).digest('hex')}`;
532
+ }
533
+ function codexTrustState(env) {
534
+ const file = path.join(configHome(env, 'CODEX_HOME', '.codex'), 'config.toml');
535
+ if (!existsSync(file))
536
+ return {};
537
+ try {
538
+ const parsed = parseToml(readFileSync(file, 'utf8'));
539
+ const hooks = parsed['hooks'];
540
+ if (typeof hooks !== 'object' || hooks === null)
541
+ return {};
542
+ const state = hooks['state'];
543
+ return typeof state === 'object' && state !== null ? state : {};
544
+ }
545
+ catch {
546
+ return {};
547
+ }
548
+ }
549
+ /** Best-effort mirror of current Codex's persisted key for one handler. */
550
+ export function codexTrustKey(installation, handler) {
551
+ let source = installation.file;
552
+ try {
553
+ source = path.join(realpathSync(path.dirname(source)), path.basename(source));
554
+ }
555
+ catch {
556
+ // Codex falls back to the logical source path when canonicalization fails,
557
+ // so the diagnostic must do the same.
558
+ }
559
+ return `${source}:${codexEventName(handler.event)}:${handler.groupIndex}:${handler.handlerIndex}`;
560
+ }
561
+ /**
562
+ * Trust defects that make installed Codex handlers look present while Codex
563
+ * skips them. Trust is user-owned; the supported repair is Codex's `/hooks`
564
+ * review UI, never writing the trust store on the user's behalf. Because the
565
+ * persisted shape is not a public Codex contract, this diagnosis can drift;
566
+ * `/hooks` remains the source of truth.
567
+ */
568
+ export function codexTrustProblems(installations, env = process.env) {
569
+ const state = codexTrustState(env);
570
+ return installations
571
+ .filter((installation) => installation.harness === 'codex')
572
+ .flatMap((installation) => installation.handlers.flatMap((handler) => {
573
+ const key = codexTrustKey(installation, handler);
574
+ const entry = state[key];
575
+ const trustedHash = typeof entry === 'object' && entry !== null
576
+ ? entry['trusted_hash']
577
+ : undefined;
578
+ const currentHash = codexHookIdentityHash(handler);
579
+ if (typeof entry === 'object' &&
580
+ entry !== null &&
581
+ entry['enabled'] === false) {
582
+ return [
583
+ `${handler.event} in ${installation.file} is disabled in Codex; open \`/hooks\` and enable the Notifai handler`,
584
+ ];
585
+ }
586
+ if (trustedHash === currentHash)
587
+ return [];
588
+ return [
589
+ `${handler.event} in ${installation.file} is ${typeof trustedHash === 'string' ? 'changed since it was trusted' : 'not trusted'}; open \`/hooks\` in Codex and approve the Notifai handler`,
590
+ ];
591
+ }));
592
+ }
481
593
  /**
482
594
  * Any Notifai handler, whatever checkout wrote it.
483
595
  *
@@ -492,7 +604,7 @@ function isNotifaiHandler(handler) {
492
604
  return isNotifaiCommand(handler.command);
493
605
  }
494
606
  /** Every place either harness would read a Notifai handler from. */
495
- export function findInstallations(cwd, env = process.env) {
607
+ export function findInstallations(cwd, env = process.env, adapterHome) {
496
608
  const found = [];
497
609
  for (const harness of HARNESSES) {
498
610
  for (const global of [false, true]) {
@@ -503,16 +615,31 @@ export function findInstallations(cwd, env = process.env) {
503
615
  // is reported as one installation covering all three events rather than
504
616
  // parsed for handlers.
505
617
  if (harness === 'opencode') {
506
- const target = opencodePluginTarget(readFileSync(file, 'utf8'));
618
+ let source;
619
+ try {
620
+ source = readOwnedRegularFile(file);
621
+ }
622
+ catch {
623
+ continue;
624
+ }
625
+ const target = opencodePluginTarget(source);
507
626
  if (target === null)
508
627
  continue;
628
+ const problems = [
629
+ ...(!target.current
630
+ ? ['obsolete OpenCode event wiring; rerun `notifai hooks install --harness opencode`']
631
+ : []),
632
+ ...(target.adapter !== hookAdapterPath(adapterHome)
633
+ ? [
634
+ 'OpenCode still names a mutable CLI or runtime path; rerun `notifai hooks install --harness opencode`',
635
+ ]
636
+ : []),
637
+ ];
509
638
  found.push({
510
639
  harness,
511
640
  file,
512
641
  global,
513
- ...(!target.current
514
- ? { problems: ['obsolete OpenCode event wiring; rerun `notifai hooks install --harness opencode`'] }
515
- : {}),
642
+ ...(problems.length > 0 ? { problems } : {}),
516
643
  // Reported as the command line the plugin will actually run, not as
517
644
  // the plugin's own path: every check downstream asks which build a
518
645
  // handler invokes, and for a module that answer lives inside it.
@@ -520,7 +647,7 @@ export function findInstallations(cwd, env = process.env) {
520
647
  event,
521
648
  groupIndex: 0,
522
649
  handlerIndex: 0,
523
- command: hookCommand(target.exec, target.script, hookEvent),
650
+ command: hookCommand(target.adapter, hookEvent, 'opencode'),
524
651
  ...(target.timeoutSeconds === undefined ? {} : { timeout: target.timeoutSeconds }),
525
652
  })),
526
653
  });
@@ -536,7 +663,7 @@ export function findInstallations(cwd, env = process.env) {
536
663
  }
537
664
  const handlers = locateCursorHandlers(document);
538
665
  if (handlers.length > 0) {
539
- const problems = harnessMarkerProblems(harness, handlers);
666
+ const problems = harnessMarkerProblems(harness, handlers, adapterHome);
540
667
  found.push({ harness, file, global, handlers, ...(problems.length > 0 ? { problems } : {}) });
541
668
  }
542
669
  continue;
@@ -550,19 +677,23 @@ export function findInstallations(cwd, env = process.env) {
550
677
  }
551
678
  const handlers = locateHandlers(document);
552
679
  if (handlers.length > 0) {
553
- const problems = harnessMarkerProblems(harness, handlers);
680
+ const problems = harnessMarkerProblems(harness, handlers, adapterHome);
554
681
  found.push({ harness, file, global, handlers, ...(problems.length > 0 ? { problems } : {}) });
555
682
  }
556
683
  }
557
684
  }
558
685
  return found;
559
686
  }
560
- function harnessMarkerProblems(harness, handlers) {
561
- return handlers.every((handler) => handler.command.includes(`--harness ${harness}`))
562
- ? []
563
- : [
564
- `installed commands do not stamp the ${harness} routing identity; rerun \`notifai hooks install --harness ${harness}\``,
565
- ];
687
+ function harnessMarkerProblems(harness, handlers, adapterHome) {
688
+ const problems = [];
689
+ if (!handlers.every((handler) => handler.command.includes(`--harness ${harness}`))) {
690
+ problems.push(`installed commands do not stamp the ${harness} routing identity; rerun \`notifai hooks install --harness ${harness}\``);
691
+ }
692
+ const expected = `${quote(hookAdapterPath(adapterHome))} hook `;
693
+ if (!handlers.every((handler) => handler.command.startsWith(expected))) {
694
+ problems.push('installed commands still name a mutable CLI or runtime path; rerun `notifai hooks install` to migrate to the stable adapter');
695
+ }
696
+ return problems;
566
697
  }
567
698
  function locateCursorHandlers(document) {
568
699
  const handlers = [];
@@ -593,6 +724,8 @@ function locateHandlers(document) {
593
724
  handlerIndex,
594
725
  command: handler.command,
595
726
  ...(handler.timeout === undefined ? {} : { timeout: handler.timeout }),
727
+ ...(handler.async === undefined ? {} : { async: handler.async }),
728
+ ...(handler.statusMessage === undefined ? {} : { statusMessage: handler.statusMessage }),
596
729
  });
597
730
  }
598
731
  });
@@ -604,4 +737,15 @@ function locateHandlers(document) {
604
737
  export function handlerEvent(command) {
605
738
  return / hook ([a-z-]+)/.exec(command)?.[1] ?? null;
606
739
  }
740
+ function readOwnedRegularFile(file) {
741
+ const stat = lstatSync(file);
742
+ if (stat.isSymbolicLink() || !stat.isFile()) {
743
+ throw new Error(`${file} is not a regular file; refusing to read it.`);
744
+ }
745
+ const uid = typeof process.getuid === 'function' ? process.getuid() : undefined;
746
+ if (uid !== undefined && stat.uid !== uid) {
747
+ throw new Error(`${file} is owned by uid ${stat.uid}, not the current user.`);
748
+ }
749
+ return readFileSync(file, 'utf8');
750
+ }
607
751
  //# sourceMappingURL=install-hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../src/install-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,GACT,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE/E;;;;GAIG;AACH,MAAM,eAAe,GAAG;IACtB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IAC1C,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,YAAY,EAAE,aAAa,CAAC;CACrB,CAAA;AAEV;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAA;AAyBhF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,UAAkB,EAClB,KAAa,EACb,OAAiB;IAEjB,OAAO,CACL,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,IAAI,YAAY,EAAE;QACvE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CACvD,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAA;AAE7C;;;;;GAKG;AACH,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAA;AAC9C,CAAC;AAaD,yFAAyF;AACzF,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAEhC,kFAAkF;AAClF,MAAM,UAAU,0BAA0B,CAAC,YAAoB,EAAE,mBAA2B;IAC1F,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,GAAG,mBAAmB,GAAG,EAAE,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IACxC,2EAA2E;IAC3E,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,eAAe,GAAG,0BAA0B,CAChD,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,mBAAmB,CAC5B,CAAA;IACD,OAAO;QACL,gBAAgB,EAAE;YAChB;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,OAAO,CAAC,OAAO,CAAC;wBACjF,mEAAmE;wBACnE,wDAAwD;wBACxD,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF;SACF;QACD,IAAI,EAAE;YACJ;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;wBACnE,OAAO,EAAE,eAAe;qBACzB;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC;wBAC1E,iEAAiE;wBACjE,4BAA4B;wBAC5B,OAAO,EAAE,CAAC;qBACX;iBACF;aACF;SACF;KACF,CAAA;AACH,CAAC;AAgBD,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,MAAM,eAAe,GAAG,0BAA0B,CAChD,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,mBAAmB,CAC5B,CAAA;IACD,OAAO;QACL,kBAAkB,EAAE;YAClB;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,oBAAoB,EAAE,QAAQ,CAAC;gBAC1F,OAAO,EAAE,EAAE;aACZ;SACF;QACD,IAAI,EAAE;YACJ;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC5E,OAAO,EAAE,eAAe;gBACxB,mEAAmE;gBACnE,oEAAoE;gBACpE,UAAU,EAAE,CAAC;aACd;SACF;QACD,UAAU,EAAE;YACV;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC;gBACnF,OAAO,EAAE,CAAC;aACX;SACF;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,MAAe,EACf,GAAW,EACX,MAAyB,OAAO,CAAC,GAAG;IAEpC,qEAAqE;IACrE,yEAAyE;IACzE,sDAAsD;IACtD,IAAI,OAAO,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACvE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACzF,OAAO,MAAM;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;IAC7C,CAAC;IACD,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,MAAM;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC;YAC7E,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,MAAM;QACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC;QAClE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;AAC9D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAC9B,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;QACpC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;QACzE,sEAAsE;QACtE,OAAO,GAAG,CAAA;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnF,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;AAC1C,CAAC;AAED,2EAA2E;AAC3E,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACpC,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAC/B,GAAG,GAAG,MAAM,CAAA;IACd,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAClE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC7C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAsB,EAAE,QAAgB,EAAE,QAAgB;IACnF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9B,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;AACjG,CAAC;AAED,uEAAuE;AACvE;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC3B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnE,OAAO,KAAK,CAAA;AACd,CAAC;AAED,2EAA2E;AAC3E,SAAS,qBAAqB;IAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IACzB,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACrE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9E,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAClE,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC;AAOD,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAClD,CAAC,CAAE,MAAiC;YACpC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,2CAA2C,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,UAAkB;IACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,SAAS,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,SAAS,CAAC;QACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,UAAU,QAAQ,CAAC,CACxC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgC,EAChC,QAA0B,EAC1B,UAAkB;IAElB,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QACxF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,KAAK,IAAI,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;gBACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IAChD,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,UAAkB;IAElB,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;QACxF,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IAChD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAC3F,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9D,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAE,MAA2B,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,2CAA2C,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAoB,EAAE,UAAkB;IAC5D,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAClD,CAAC;AAED,6EAA6E;AAC7E,SAAS,WAAW,CAAC,MAAmB,EAAE,UAAkB;IAC1D,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,MAAM,IAAI,GAAgB,EAAE,CAAA;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;YAC9C,IAAI,IAAI;gBAAE,OAAO,GAAG,IAAI,CAAA;YACxB,OAAO,CAAC,IAAI,CAAA;QACd,CAAC,CAAC,CAAA;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAClC,CAAC;AAUD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CACxB,QAA0B,EAC1B,QAAoB,EACpB,UAAkB;IAElB,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC7E,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,KAAK,IAAI,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;gBACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IAChD,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAChD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;IACrD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAA0B,EAAE,UAAkB;IACxE,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QACpE,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IAChD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;AAC/E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAmD;IACzF,mBAAmB,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC;AA2BD;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAoB;IAC5C,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC1C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAyB,OAAO,CAAC,GAAG;IACjF,MAAM,KAAK,GAAmB,EAAE,CAAA;IAChC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,SAAQ;YAC/B,wEAAwE;YACxE,wEAAwE;YACxE,uBAAuB;YACvB,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC/D,IAAI,MAAM,KAAK,IAAI;oBAAE,SAAQ;gBAC7B,KAAK,CAAC,IAAI,CAAC;oBACT,OAAO;oBACP,IAAI;oBACJ,MAAM;oBACN,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO;wBACjB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,kFAAkF,CAAC,EAAE;wBACpG,CAAC,CAAC,EAAE,CAAC;oBACP,oEAAoE;oBACpE,mEAAmE;oBACnE,iEAAiE;oBACjE,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;wBACrD,KAAK;wBACL,UAAU,EAAE,CAAC;wBACb,YAAY,EAAE,CAAC;wBACf,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;wBAC3D,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;qBACnF,CAAC,CAAC;iBACJ,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,IAAI,QAAgC,CAAA;gBACpC,IAAI,CAAC;oBACH,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;gBACrC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAQ;gBACV,CAAC;gBACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;gBAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;oBACzD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBAC/F,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,QAA0B,CAAA;YAC9B,IAAI,CAAC;gBACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAQ;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;YACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;gBACzD,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAC/F,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAAE,QAA4B;IAC3E,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,uCAAuC,OAAO,8DAA8D,OAAO,IAAI;SACxH,CAAA;AACP,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgC;IAC5D,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1E,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;YAC9C,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK;oBACL,UAAU,EAAE,CAAC;oBACb,YAAY;oBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;iBACvE,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,QAA0B;IAChD,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACnC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;gBAC7C,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9B,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK;wBACL,UAAU;wBACV,YAAY;wBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;qBACvE,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AACrD,CAAC"}
1
+ {"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../src/install-hooks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { type CommandDeps } from './commands.js';
2
2
  export declare function interactiveCommand(deps: CommandDeps, version: string): Promise<number>;
3
3
  /** Exported for the settings command to reuse the same key vocabulary. */
4
- export declare const INTERACTIVE_CONFIG_KEYS: readonly ["base_url", "wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "notify_criteria", "ask_notifications", "require_idle", "away_after_seconds", "hook_reply_timeout_seconds", "ask_grace_seconds"];
4
+ export declare const INTERACTIVE_CONFIG_KEYS: readonly ["base_url", "wait_seconds", "ttl_seconds", "collapse_key", "devices", "sound", "interruption_level", "project", "notify_criteria", "ask_notifications", "require_idle", "away_after_seconds", "hook_reply_timeout_seconds", "ask_grace_seconds", "log_level", "log_max_bytes", "log_max_files"];
@@ -518,9 +518,9 @@ async function routingScreen(deps, readiness) {
518
518
  const config = loadConfig({ cwd: deps.cwd, env: deps.env });
519
519
  const row = (label, value) => `${style.dim(label.padEnd(16))}${value}`;
520
520
  clack.note('When an agent registers a question, it appears in your terminal first.\n' +
521
- 'If you are still here, it stays here. Once you step away, it goes to\n' +
522
- 'your phone and Mac as a notification with real answer buttons, and\n' +
523
- 'your answer comes back to the agent.\n\n' +
521
+ 'After the grace below, it goes to your phone and Mac as a notification\n' +
522
+ 'with real answer buttons, and your answer comes back to the agent. Turn\n' +
523
+ 'on “Only when away” if local activity should keep it here instead.\n\n' +
524
524
  [
525
525
  row('Wired to', wiringSummary(hooks)),
526
526
  row('Send', config.ask_notifications.value ? 'yes' : 'no — questions stay in the terminal'),