@pushary/agent-hooks 0.89.3 → 0.89.5

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 (58) hide show
  1. package/README.md +40 -0
  2. package/dist/bin/pushary-bell-hook.js +3 -3
  3. package/dist/bin/pushary-bell.js +9 -10
  4. package/dist/bin/pushary-claude.js +62 -26
  5. package/dist/bin/pushary-clean.js +25 -7
  6. package/dist/bin/pushary-codex-bridge.js +4 -5
  7. package/dist/bin/pushary-codex-hook.js +8 -7
  8. package/dist/bin/pushary-codex.js +6 -4
  9. package/dist/bin/pushary-connect.js +4 -4
  10. package/dist/bin/pushary-daemon.js +155 -40
  11. package/dist/bin/pushary-disconnect.js +3 -4
  12. package/dist/bin/pushary-doctor.js +77 -39
  13. package/dist/bin/pushary-elicitation-hook.js +4 -2
  14. package/dist/bin/pushary-gemini-bridge.js +3 -4
  15. package/dist/bin/pushary-gemini-hook.js +6 -4
  16. package/dist/bin/pushary-hook.js +9 -7
  17. package/dist/bin/pushary-login.js +4 -4
  18. package/dist/bin/pushary-logout.js +5 -6
  19. package/dist/bin/pushary-mode.js +2 -2
  20. package/dist/bin/pushary-notification-hook.js +6 -4
  21. package/dist/bin/pushary-opencode-hook.js +14 -6
  22. package/dist/bin/pushary-permission-denied-hook.js +7 -5
  23. package/dist/bin/pushary-permission-hook.js +7 -5
  24. package/dist/bin/pushary-post-hook.js +6 -4
  25. package/dist/bin/pushary-prompt-hook.js +6 -4
  26. package/dist/bin/pushary-session-end-hook.js +6 -4
  27. package/dist/bin/pushary-session-start-hook.js +6 -4
  28. package/dist/bin/pushary-setup.js +125 -39
  29. package/dist/bin/pushary-stats.js +2 -2
  30. package/dist/bin/pushary-status.js +7 -6
  31. package/dist/bin/pushary-stop-hook.js +6 -4
  32. package/dist/bin/pushary-stopfailure-hook.js +6 -4
  33. package/dist/bin/pushary-suggestions.js +2 -2
  34. package/dist/bin/pushary-upgrade.js +110 -46
  35. package/dist/bin/pushary-wait.js +2 -2
  36. package/dist/bin/pushary.js +1 -1
  37. package/dist/chunk-2HYPZLYY.js +45 -0
  38. package/dist/{chunk-GOEXZ5QJ.js → chunk-3XTFX4CL.js} +10 -2
  39. package/dist/{chunk-ZYPS2XMT.js → chunk-4ZHQNBDP.js} +1 -1
  40. package/dist/{chunk-HUJAAWNL.js → chunk-GKAKAOKC.js} +10 -3
  41. package/dist/{chunk-LGXTBUT4.js → chunk-KOPUTJQC.js} +1 -0
  42. package/dist/{chunk-LALHWDWL.js → chunk-L3YUHEB6.js} +16 -4
  43. package/dist/{chunk-SQOFGPNX.js → chunk-LURY4WNF.js} +1 -1
  44. package/dist/{chunk-JT6TIBYH.js → chunk-MZBT2LXW.js} +4 -4
  45. package/dist/{chunk-3UBYTSCY.js → chunk-NFI2K2ZQ.js} +15 -7
  46. package/dist/chunk-NKHEHEUM.js +56 -0
  47. package/dist/{chunk-3O2XPYLF.js → chunk-OBI4YMCT.js} +1 -1
  48. package/dist/{chunk-LUCFN47K.js → chunk-QH4AA7QV.js} +1 -1
  49. package/dist/chunk-TRQ46MXR.js +648 -0
  50. package/dist/{chunk-VKVHY5HD.js → chunk-V37ZXMH3.js} +11 -3
  51. package/dist/{chunk-MHBC2XUP.js → chunk-VP7SDXYG.js} +1 -1
  52. package/dist/{chunk-B7JE4XHD.js → chunk-WQGMUIDW.js} +1 -1
  53. package/dist/src/index.js +7 -5
  54. package/package.json +1 -1
  55. package/dist/chunk-GIRT7677.js +0 -11
  56. package/dist/chunk-K42SZKYF.js +0 -343
  57. package/dist/chunk-NRGRUOAR.js +0 -25
  58. package/dist/chunk-RN3NOEJF.js +0 -9
package/README.md CHANGED
@@ -113,6 +113,46 @@ npx @pushary/agent-hooks@latest doctor
113
113
 
114
114
  Any other MCP client can use notify and ask by pointing at the Pushary MCP endpoint directly.
115
115
 
116
+ ## Control an agent from your phone
117
+
118
+ The Pushary app can start an agent on a connected computer and send instructions
119
+ to a running session. It is deliberately not a remote shell: the phone submits a
120
+ task to the selected agent, and the agent still runs with its normal permissions,
121
+ hooks, and approval policy on your computer.
122
+
123
+ | Control | Claude Code | Codex | Gemini CLI | Other agents |
124
+ |---------|:-----------:|:-----:|:----------:|:------------:|
125
+ | Start a new session | yes | yes | yes | no |
126
+ | Send an instruction to a live session | yes | yes | yes | wrapper-dependent |
127
+ | Approve, deny, and answer | yes | yes | yes | yes via MCP |
128
+
129
+ Requirements and limits:
130
+
131
+ - Run setup once. It installs a per-user background service using LaunchAgent on
132
+ macOS, systemd on Linux, or Task Scheduler on Windows.
133
+ - The computer must be awake, logged in, online, and have the selected agent CLI
134
+ installed. Pushary advertises only providers it finds on that machine.
135
+ - Start and Send require Face ID, Touch ID, or the device passcode. Controls are
136
+ hidden when the machine or session has no recent live consumer.
137
+ - An instruction may remain queued on Pushary's server for up to one hour while
138
+ delivery retries. It is delivered to the agent session, never executed as a
139
+ raw terminal command.
140
+ - Agent control requires a paid plan after the trial. Current terms are on the
141
+ [pricing page](https://pushary.com/pricing).
142
+
143
+ Service lifecycle is explicit and cross-platform:
144
+
145
+ ```bash
146
+ pushary daemon status
147
+ pushary daemon install
148
+ pushary daemon stop
149
+ pushary daemon restart
150
+ pushary daemon uninstall
151
+ ```
152
+
153
+ `pushary setup` installs and verifies the service. `pushary upgrade` refreshes it,
154
+ and `pushary clean` stops and removes it.
155
+
116
156
  ## Hook events, gated by version
117
157
 
118
158
  Claude Code 2.1.239 names thirty-one hook events and the set grows release by release,
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-B7JE4XHD.js";
4
+ } from "../chunk-WQGMUIDW.js";
5
5
  import {
6
6
  readHookInput
7
7
  } from "../chunk-6CUUA7HO.js";
8
- import "../chunk-LALHWDWL.js";
8
+ import "../chunk-L3YUHEB6.js";
9
9
  import "../chunk-BC3VCZ3E.js";
10
- import "../chunk-6MTNS63X.js";
11
10
  import "../chunk-OFRNZWC4.js";
11
+ import "../chunk-6MTNS63X.js";
12
12
  import "../chunk-2UMNXADU.js";
13
13
  import "../chunk-L4C2JXJS.js";
14
14
 
@@ -5,37 +5,36 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-B7JE4XHD.js";
8
+ } from "../chunk-WQGMUIDW.js";
9
9
  import {
10
10
  guardBinary
11
11
  } from "../chunk-AIGDBRIJ.js";
12
12
  import "../chunk-PZA7G4CN.js";
13
13
  import {
14
14
  claudeSettings
15
- } from "../chunk-VKVHY5HD.js";
16
- import "../chunk-GIRT7677.js";
15
+ } from "../chunk-V37ZXMH3.js";
17
16
  import {
18
17
  createIo
19
18
  } from "../chunk-5RUIFDTP.js";
20
- import "../chunk-LALHWDWL.js";
19
+ import "../chunk-L3YUHEB6.js";
21
20
  import {
22
21
  parseFlags
23
22
  } from "../chunk-GMXKITVA.js";
24
23
  import {
25
24
  exitOnHelpFlag
26
- } from "../chunk-SQOFGPNX.js";
27
- import "../chunk-GOEXZ5QJ.js";
25
+ } from "../chunk-LURY4WNF.js";
26
+ import "../chunk-3XTFX4CL.js";
28
27
  import "../chunk-BC3VCZ3E.js";
29
28
  import "../chunk-DINDL2CF.js";
30
- import {
31
- readJsonSafe,
32
- writeJsonAtomic
33
- } from "../chunk-6MTNS63X.js";
34
29
  import "../chunk-OFRNZWC4.js";
35
30
  import "../chunk-7QLSKOSU.js";
36
31
  import {
37
32
  EXIT
38
33
  } from "../chunk-KZERVKTD.js";
34
+ import {
35
+ readJsonSafe,
36
+ writeJsonAtomic
37
+ } from "../chunk-6MTNS63X.js";
39
38
  import "../chunk-2UMNXADU.js";
40
39
  import "../chunk-L4C2JXJS.js";
41
40
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ensureDaemonRunning
4
- } from "../chunk-K42SZKYF.js";
4
+ } from "../chunk-TRQ46MXR.js";
5
5
  import {
6
6
  buildTranscriptRecords,
7
7
  decodePublicKey,
@@ -13,48 +13,48 @@ import {
13
13
  import {
14
14
  startProcessOwnership,
15
15
  withSpawnProcessOwnership
16
- } from "../chunk-ZYPS2XMT.js";
16
+ } from "../chunk-4ZHQNBDP.js";
17
17
  import {
18
18
  needsShell,
19
19
  spawnClaude
20
20
  } from "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-PZA7G4CN.js";
22
- import "../chunk-VKVHY5HD.js";
23
22
  import {
24
23
  isDeferAnswer
25
24
  } from "../chunk-YHG74UFF.js";
26
- import "../chunk-GIRT7677.js";
27
25
  import {
28
26
  fetchModeState,
29
27
  getPolicy,
30
28
  repoKeyFor,
31
29
  reportEvent
32
- } from "../chunk-3UBYTSCY.js";
30
+ } from "../chunk-NFI2K2ZQ.js";
33
31
  import {
34
32
  DEFAULT_SESSION,
35
33
  askUser,
36
34
  cancelQuestion,
37
35
  markPendingCommandDelivered,
36
+ markPendingCommandFailed,
38
37
  readPendingCommand,
39
38
  removePendingCommand,
40
39
  savePendingCommand,
41
40
  waitForAnswer
42
- } from "../chunk-HUJAAWNL.js";
41
+ } from "../chunk-GKAKAOKC.js";
43
42
  import {
44
43
  deriveToolTarget,
45
44
  describeToolCall,
46
45
  scopePathFor
47
- } from "../chunk-LGXTBUT4.js";
46
+ } from "../chunk-KOPUTJQC.js";
48
47
  import {
49
48
  getMachineId
50
- } from "../chunk-RN3NOEJF.js";
49
+ } from "../chunk-2HYPZLYY.js";
50
+ import "../chunk-V37ZXMH3.js";
51
51
  import "../chunk-DINDL2CF.js";
52
- import "../chunk-6MTNS63X.js";
53
52
  import "../chunk-BSZYIAZL.js";
54
53
  import "../chunk-SAF6HGAA.js";
55
54
  import "../chunk-OFRNZWC4.js";
56
55
  import "../chunk-7QLSKOSU.js";
57
56
  import "../chunk-KZERVKTD.js";
57
+ import "../chunk-6MTNS63X.js";
58
58
  import {
59
59
  getApiKey,
60
60
  getBaseUrl
@@ -299,14 +299,14 @@ var BoundedInputQueue = class {
299
299
  this.coalesce = options.coalesce;
300
300
  }
301
301
  push(item) {
302
- if (this.closed) return;
302
+ if (this.closed) return false;
303
303
  this.pushedCount++;
304
304
  if (this.waiter) {
305
305
  const resolve2 = this.waiter;
306
306
  this.waiter = void 0;
307
307
  this.deliveredCount++;
308
308
  resolve2({ value: item, done: false });
309
- return;
309
+ return true;
310
310
  }
311
311
  this.buffer.push(item);
312
312
  while (this.buffer.length > this.cap) {
@@ -314,6 +314,7 @@ var BoundedInputQueue = class {
314
314
  this.droppedCount++;
315
315
  this.onDrop?.(dropped, this.droppedCount);
316
316
  }
317
+ return true;
317
318
  }
318
319
  // Mark done. Any parked consumer completes; further push() is ignored. The
319
320
  // buffer is cleared so nothing is retained after shutdown.
@@ -620,10 +621,20 @@ var startCommandPoller = (opts) => {
620
621
  errorStreak = 0;
621
622
  if (command) {
622
623
  idleTicks = 0;
624
+ const text = typeof command === "string" ? command : command.text;
625
+ let accepted = false;
623
626
  try {
624
- opts.onCommand(command);
627
+ accepted = opts.onCommand(text) !== false;
625
628
  } catch {
626
629
  }
630
+ if (typeof command !== "string") {
631
+ const state = accepted ? "delivered" : "failed";
632
+ if (command.acknowledge) {
633
+ await command.acknowledge(state).catch(() => false);
634
+ } else if (opts.ackCommand) {
635
+ await opts.ackCommand(opts.apiKey, command.id, state).catch(() => false);
636
+ }
637
+ }
627
638
  } else {
628
639
  idleTicks++;
629
640
  }
@@ -667,27 +678,40 @@ var pollAgent = async (apiKey, sessionId, wantCommand, signal, baseUrl = getBase
667
678
  });
668
679
  if (!response.ok) return { command: null, mode: null };
669
680
  const data = await response.json();
670
- const acknowledge = async (id) => {
681
+ const acknowledge = async (id, state) => {
682
+ const persisted = state === "delivered" ? markPendingCommandDelivered(sessionKey, id, receiptNamespace) : markPendingCommandFailed(sessionKey, id, receiptNamespace);
683
+ if (!persisted) return false;
671
684
  try {
672
685
  const acknowledged = await fetch(`${baseUrl}/api/agent/command/ack`, {
673
686
  method: "POST",
674
687
  headers: { "Content-Type": "application/json", Authorization: `Bearer ${apiKey}` },
675
- body: JSON.stringify({ commandId: id, sessionId: sessionId ?? null, machineId, state: "delivered" }),
688
+ body: JSON.stringify({
689
+ commandId: id,
690
+ sessionId: sessionId ?? null,
691
+ machineId,
692
+ state,
693
+ ...state === "failed" ? { failureCode: "consumer_rejected" } : {}
694
+ }),
676
695
  signal
677
696
  });
697
+ if (acknowledged.ok) removePendingCommand(sessionKey, id, receiptNamespace);
678
698
  return acknowledged.ok;
679
699
  } catch {
680
700
  return false;
681
701
  }
682
702
  };
703
+ const claimedCommand = (id, text) => ({
704
+ id,
705
+ text,
706
+ acknowledge: (state) => acknowledge(id, state)
707
+ });
683
708
  let command = typeof data.command === "string" && data.command.length > 0 ? data.command : null;
684
709
  if (storedCommand) {
685
- const acknowledged = await acknowledge(storedCommand.id);
686
- if (acknowledged && storedCommand.delivered) removePendingCommand(sessionKey, storedCommand.id, receiptNamespace);
687
- if (acknowledged && !storedCommand.delivered && markPendingCommandDelivered(sessionKey, storedCommand.id, receiptNamespace)) {
688
- command = storedCommand.text;
689
- } else {
710
+ if (storedCommand.delivered || storedCommand.failed) {
711
+ await acknowledge(storedCommand.id, storedCommand.failed ? "failed" : "delivered");
690
712
  command = null;
713
+ } else {
714
+ command = claimedCommand(storedCommand.id, storedCommand.text);
691
715
  }
692
716
  } else if (data.command && typeof data.command === "object") {
693
717
  const claimed = data.command;
@@ -698,7 +722,7 @@ var pollAgent = async (apiKey, sessionId, wantCommand, signal, baseUrl = getBase
698
722
  expiresAtMs: typeof claimed.expiresAtMs === "number" ? claimed.expiresAtMs : Date.now() + 36e5,
699
723
  delivered: false
700
724
  }, receiptNamespace);
701
- command = saved && await acknowledge(claimed.id) && markPendingCommandDelivered(sessionKey, claimed.id, receiptNamespace) ? claimed.text : null;
725
+ command = saved ? claimedCommand(claimed.id, claimed.text) : null;
702
726
  }
703
727
  }
704
728
  const m = data.override?.mode;
@@ -843,15 +867,26 @@ var createRelayClient = (options) => {
843
867
  break;
844
868
  case "command":
845
869
  if (seenSet.has(frame.id)) {
846
- sendFrame({ v: PROTOCOL_VERSION, t: "ack", id: frame.id });
870
+ sendFrame({ v: PROTOCOL_VERSION, t: "ack", id: frame.id, state: "delivered" });
847
871
  break;
848
872
  }
873
+ let accepted = false;
849
874
  try {
850
- options.onCommand(frame.text);
851
- rememberCommand(frame.id);
852
- sendFrame({ v: PROTOCOL_VERSION, t: "ack", id: frame.id });
875
+ accepted = options.onCommand(frame.text) !== false;
853
876
  } catch {
854
877
  }
878
+ if (accepted) {
879
+ rememberCommand(frame.id);
880
+ sendFrame({ v: PROTOCOL_VERSION, t: "ack", id: frame.id, state: "delivered" });
881
+ } else {
882
+ sendFrame({
883
+ v: PROTOCOL_VERSION,
884
+ t: "ack",
885
+ id: frame.id,
886
+ state: "failed",
887
+ failureCode: "consumer_rejected"
888
+ });
889
+ }
855
890
  break;
856
891
  case "ping":
857
892
  sendFrame({ v: PROTOCOL_VERSION, t: "pong" });
@@ -1402,10 +1437,11 @@ var runDualMode = async (binary, args2, startingMode) => {
1402
1437
  noticedUnavailable = true;
1403
1438
  process.stderr.write("[pushary] phone control is unavailable this run; the instruction was not delivered.\n");
1404
1439
  }
1405
- return;
1440
+ return false;
1406
1441
  }
1407
- input.push(userMessage(command));
1442
+ if (!input.push(userMessage(command))) return false;
1408
1443
  activeLeg?.onPhoneCommand();
1444
+ return true;
1409
1445
  };
1410
1446
  const streamMessage = (message) => {
1411
1447
  if (message.type === "assistant") {
@@ -4,7 +4,7 @@ import {
4
4
  shortenHome,
5
5
  unregisterPluginLocation,
6
6
  vscodeSettingsTargets
7
- } from "../chunk-LUCFN47K.js";
7
+ } from "../chunk-QH4AA7QV.js";
8
8
  import "../chunk-O5B7EK5U.js";
9
9
  import {
10
10
  removeClaudeMcpServers,
@@ -13,9 +13,15 @@ import {
13
13
  } from "../chunk-7TS2G4QG.js";
14
14
  import "../chunk-ATBKJNWS.js";
15
15
  import "../chunk-AIGDBRIJ.js";
16
+ import {
17
+ disableDaemonService
18
+ } from "../chunk-TRQ46MXR.js";
19
+ import "../chunk-XHKBHWLX.js";
16
20
  import {
17
21
  execNpm
18
22
  } from "../chunk-PZA7G4CN.js";
23
+ import "../chunk-KOPUTJQC.js";
24
+ import "../chunk-2HYPZLYY.js";
19
25
  import {
20
26
  claudeJson,
21
27
  claudeSettings,
@@ -35,16 +41,14 @@ import {
35
41
  removeCodexHookTrust,
36
42
  removeCodexHooks,
37
43
  vscodePluginDir
38
- } from "../chunk-VKVHY5HD.js";
39
- import "../chunk-GIRT7677.js";
40
- import "../chunk-LGXTBUT4.js";
44
+ } from "../chunk-V37ZXMH3.js";
41
45
  import {
42
46
  rejectUnknownFlags
43
47
  } from "../chunk-GMXKITVA.js";
44
48
  import {
45
49
  exitOnHelpFlag
46
- } from "../chunk-SQOFGPNX.js";
47
- import "../chunk-GOEXZ5QJ.js";
50
+ } from "../chunk-LURY4WNF.js";
51
+ import "../chunk-3XTFX4CL.js";
48
52
  import {
49
53
  removeClaudeAlias
50
54
  } from "../chunk-BC3VCZ3E.js";
@@ -53,6 +57,8 @@ import "../chunk-7QLSKOSU.js";
53
57
  import {
54
58
  EXIT
55
59
  } from "../chunk-KZERVKTD.js";
60
+ import "../chunk-6MTNS63X.js";
61
+ import "../chunk-2UMNXADU.js";
56
62
  import {
57
63
  CURSOR_GATE_EVENTS
58
64
  } from "../chunk-L4C2JXJS.js";
@@ -136,6 +142,13 @@ var guards = createGuards(() => dryRun, wouldNote);
136
142
  var guardedWrite = (path, contents) => guards.write(path, contents);
137
143
  var guardedRemove = (path, options) => guards.remove(path, options);
138
144
  var guardedExec = (command, options, describe) => guards.exec(command, options ?? {}, describe);
145
+ var guardedDaemonRemoval = async () => {
146
+ if (dryRun) {
147
+ wouldNote("stop and uninstall", "Pushary background service");
148
+ return true;
149
+ }
150
+ return (await disableDaemonService()).kind === "ok";
151
+ };
139
152
  var guardedInstructionBlockRemoval = (path) => {
140
153
  if (!dryRun) return removeInstructionBlock(path);
141
154
  if (!existsSync(path)) return false;
@@ -421,6 +434,12 @@ var main = async () => {
421
434
  } else {
422
435
  console.log(` ${skip} claude alias ${dim("(not set)")}`);
423
436
  }
437
+ if (await guardedDaemonRemoval()) {
438
+ console.log(` ${check} Background service ${dim(did("uninstalled"))}`);
439
+ } else {
440
+ incompleteClean = true;
441
+ console.log(` ${cross} Background service ${dim("(could not stop or uninstall)")}`);
442
+ }
424
443
  if (existsSync(PUSHARY_DIR)) {
425
444
  guardedRemove(PUSHARY_DIR);
426
445
  console.log(` ${check} Local state ${dim("(~/.pushary removed: stored API key, ledger)")}`);
@@ -464,7 +483,6 @@ var main = async () => {
464
483
  console.log(` ${dim("It still has the")} ${bold("claude")} ${dim("alias loaded from before. Run")} ${bold("unalias claude")}`);
465
484
  console.log(` ${dim("(or open a new terminal) so")} ${bold("claude")} ${dim("runs Claude Code again.")}`);
466
485
  }
467
- console.log(` ${dim("If a")} ${bold("pushary claude")} ${dim("or")} ${bold("pushary daemon")} ${dim("is still running anywhere, stop it (Ctrl-C).")}`);
468
486
  console.log();
469
487
  if (incompleteClean) process.exit(EXIT.FAILED);
470
488
  };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import "../chunk-NRGRUOAR.js";
2
+ import "../chunk-NKHEHEUM.js";
3
3
  import {
4
4
  LiveTranscriptRelay,
5
5
  liveSessionSleep,
@@ -11,18 +11,17 @@ import "../chunk-PMHTCDEO.js";
11
11
  import {
12
12
  startProcessOwnership,
13
13
  withSpawnProcessOwnership
14
- } from "../chunk-ZYPS2XMT.js";
14
+ } from "../chunk-4ZHQNBDP.js";
15
15
  import {
16
16
  spawnClaude
17
17
  } from "../chunk-XHKBHWLX.js";
18
18
  import {
19
19
  resolveBinary
20
20
  } from "../chunk-PZA7G4CN.js";
21
- import "../chunk-VKVHY5HD.js";
22
- import "../chunk-GIRT7677.js";
23
21
  import {
24
22
  getMachineId
25
- } from "../chunk-RN3NOEJF.js";
23
+ } from "../chunk-2HYPZLYY.js";
24
+ import "../chunk-V37ZXMH3.js";
26
25
  import "../chunk-6MTNS63X.js";
27
26
  import {
28
27
  getApiKey,
@@ -10,9 +10,6 @@ import {
10
10
  denyReasonFrom,
11
11
  isDeferAnswer
12
12
  } from "../chunk-YHG74UFF.js";
13
- import {
14
- canonicalJson
15
- } from "../chunk-GIRT7677.js";
16
13
  import {
17
14
  CODEX_AGENT,
18
15
  codexAllow,
@@ -34,7 +31,7 @@ import {
34
31
  toCodexWire,
35
32
  toPolicyLookup,
36
33
  toPolicyLookups
37
- } from "../chunk-3UBYTSCY.js";
34
+ } from "../chunk-NFI2K2ZQ.js";
38
35
  import {
39
36
  DEFAULT_SESSION,
40
37
  askUser,
@@ -42,22 +39,26 @@ import {
42
39
  pollForAnswer,
43
40
  savePendingQuestion,
44
41
  sendNotification
45
- } from "../chunk-HUJAAWNL.js";
42
+ } from "../chunk-GKAKAOKC.js";
46
43
  import {
47
44
  deriveActionBody,
48
45
  deriveBlocker,
49
46
  deriveToolTarget,
50
47
  describeToolCall,
51
48
  scopePathFor
52
- } from "../chunk-LGXTBUT4.js";
49
+ } from "../chunk-KOPUTJQC.js";
53
50
  import {
54
51
  getMachineId
55
- } from "../chunk-RN3NOEJF.js";
52
+ } from "../chunk-2HYPZLYY.js";
53
+ import {
54
+ canonicalJson
55
+ } from "../chunk-V37ZXMH3.js";
56
56
  import "../chunk-BSZYIAZL.js";
57
57
  import "../chunk-SAF6HGAA.js";
58
58
  import "../chunk-OFRNZWC4.js";
59
59
  import "../chunk-7QLSKOSU.js";
60
60
  import "../chunk-KZERVKTD.js";
61
+ import "../chunk-6MTNS63X.js";
61
62
  import {
62
63
  getApiKey
63
64
  } from "../chunk-2UMNXADU.js";
@@ -1,20 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reportEvent
4
- } from "../chunk-3UBYTSCY.js";
4
+ } from "../chunk-NFI2K2ZQ.js";
5
5
  import {
6
6
  askUser,
7
7
  waitForAnswer
8
- } from "../chunk-HUJAAWNL.js";
9
- import "../chunk-LGXTBUT4.js";
8
+ } from "../chunk-GKAKAOKC.js";
9
+ import "../chunk-KOPUTJQC.js";
10
10
  import {
11
11
  getMachineId
12
- } from "../chunk-RN3NOEJF.js";
12
+ } from "../chunk-2HYPZLYY.js";
13
+ import "../chunk-V37ZXMH3.js";
13
14
  import "../chunk-BSZYIAZL.js";
14
15
  import "../chunk-SAF6HGAA.js";
15
16
  import "../chunk-OFRNZWC4.js";
16
17
  import "../chunk-7QLSKOSU.js";
17
18
  import "../chunk-KZERVKTD.js";
19
+ import "../chunk-6MTNS63X.js";
18
20
  import {
19
21
  getApiKey
20
22
  } from "../chunk-2UMNXADU.js";
@@ -16,17 +16,16 @@ import {
16
16
  } from "../chunk-5RUIFDTP.js";
17
17
  import {
18
18
  readKeySource
19
- } from "../chunk-LALHWDWL.js";
19
+ } from "../chunk-L3YUHEB6.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-GMXKITVA.js";
23
23
  import {
24
24
  exitOnHelpFlag
25
- } from "../chunk-SQOFGPNX.js";
26
- import "../chunk-GOEXZ5QJ.js";
25
+ } from "../chunk-LURY4WNF.js";
26
+ import "../chunk-3XTFX4CL.js";
27
27
  import "../chunk-BC3VCZ3E.js";
28
28
  import "../chunk-DINDL2CF.js";
29
- import "../chunk-6MTNS63X.js";
30
29
  import "../chunk-BSZYIAZL.js";
31
30
  import "../chunk-SAF6HGAA.js";
32
31
  import "../chunk-OFRNZWC4.js";
@@ -36,6 +35,7 @@ import {
36
35
  import {
37
36
  EXIT
38
37
  } from "../chunk-KZERVKTD.js";
38
+ import "../chunk-6MTNS63X.js";
39
39
  import "../chunk-2UMNXADU.js";
40
40
  import "../chunk-L4C2JXJS.js";
41
41