@pushary/agent-hooks 1.9.28 → 1.9.30

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 (100) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/bin/pushary-bell-hook.js +25 -25
  3. package/dist/bin/pushary-bell.js +9 -9
  4. package/dist/bin/pushary-claude.js +31 -27
  5. package/dist/bin/pushary-clean.js +29 -29
  6. package/dist/bin/pushary-codex-bridge.js +17 -17
  7. package/dist/bin/pushary-codex-hook.js +42 -41
  8. package/dist/bin/pushary-codex.js +12 -12
  9. package/dist/bin/pushary-connect.js +24 -24
  10. package/dist/bin/pushary-cowork.js +5 -5
  11. package/dist/bin/pushary-daemon.js +32 -32
  12. package/dist/bin/pushary-disconnect.js +24 -24
  13. package/dist/bin/pushary-doctor.js +33 -33
  14. package/dist/bin/pushary-elicitation-hook.js +25 -25
  15. package/dist/bin/pushary-gemini-bridge.js +13 -13
  16. package/dist/bin/pushary-gemini-hook.js +27 -27
  17. package/dist/bin/pushary-hook.js +29 -29
  18. package/dist/bin/pushary-login.js +12 -12
  19. package/dist/bin/pushary-logout.js +24 -24
  20. package/dist/bin/pushary-mcp.js +9 -9
  21. package/dist/bin/pushary-mode.js +12 -12
  22. package/dist/bin/pushary-notification-hook.js +24 -24
  23. package/dist/bin/pushary-opencode-hook.js +26 -26
  24. package/dist/bin/pushary-permission-denied-hook.js +29 -29
  25. package/dist/bin/pushary-permission-hook.js +28 -28
  26. package/dist/bin/pushary-post-hook.js +24 -24
  27. package/dist/bin/pushary-prompt-hook.js +24 -24
  28. package/dist/bin/pushary-session-end-hook.js +24 -24
  29. package/dist/bin/pushary-session-start-hook.js +28 -28
  30. package/dist/bin/pushary-setup.js +35 -35
  31. package/dist/bin/pushary-stats.js +5 -5
  32. package/dist/bin/pushary-status.js +26 -26
  33. package/dist/bin/pushary-stop-hook.js +24 -24
  34. package/dist/bin/pushary-stopfailure-hook.js +24 -24
  35. package/dist/bin/pushary-suggestions.js +12 -12
  36. package/dist/bin/pushary-transcript-register.js +17 -17
  37. package/dist/bin/pushary-transcripts.js +7 -7
  38. package/dist/bin/pushary-upgrade.js +30 -30
  39. package/dist/bin/pushary-wait.js +12 -12
  40. package/dist/bin/pushary.js +6 -6
  41. package/dist/{chunk-BXUYF5HB.js → chunk-2OIGS4P2.js} +3 -3
  42. package/dist/{chunk-TAPGV2YV.js → chunk-2QEW5FJK.js} +4 -4
  43. package/dist/{chunk-VAJLOCFP.js → chunk-2VQULZ4L.js} +2 -2
  44. package/dist/{chunk-A24TEUD6.js → chunk-3FIKV3PW.js} +21 -18
  45. package/dist/{chunk-BG7T5MNV.js → chunk-3HTCA4SQ.js} +1 -1
  46. package/dist/{chunk-56U55YDV.js → chunk-3QKX22ZA.js} +3 -3
  47. package/dist/{chunk-MNHY3EIN.js → chunk-434NFCK2.js} +1 -1
  48. package/dist/{chunk-IWYBFBRW.js → chunk-4GIGQIRN.js} +2 -2
  49. package/dist/{chunk-IWPQBWFN.js → chunk-6DJBVMTR.js} +1 -1
  50. package/dist/{chunk-74YRZTGP.js → chunk-6R22H57A.js} +2 -2
  51. package/dist/{chunk-ZREXC363.js → chunk-7JO33ODX.js} +3 -3
  52. package/dist/{chunk-W6MUIG6S.js → chunk-AO75FKBR.js} +3 -3
  53. package/dist/{chunk-7TBCGHJT.js → chunk-CI2H3U7O.js} +2 -2
  54. package/dist/{chunk-URZOKMAV.js → chunk-CS5JKDWW.js} +2 -2
  55. package/dist/{chunk-SGAQYFGS.js → chunk-DP6FJABB.js} +1 -1
  56. package/dist/{chunk-FYYWKCPO.js → chunk-DU6UZXGV.js} +2 -2
  57. package/dist/{chunk-HRAZMBUX.js → chunk-E2WJLU5U.js} +1 -1
  58. package/dist/{chunk-YW7JQ7Z4.js → chunk-EDEEITT3.js} +5 -5
  59. package/dist/{chunk-COEOZ2NC.js → chunk-GFY6XONT.js} +5 -5
  60. package/dist/{chunk-UMTGSFAI.js → chunk-GSMB7FWI.js} +7 -7
  61. package/dist/{chunk-S3NAONBN.js → chunk-H7HRHS3M.js} +4 -4
  62. package/dist/{chunk-3OFFLLSJ.js → chunk-HMA7QQ3P.js} +4 -4
  63. package/dist/{chunk-AXGA3WJI.js → chunk-IMUCTAM2.js} +1 -1
  64. package/dist/{chunk-ZH32OREM.js → chunk-J3HI2SRD.js} +1 -1
  65. package/dist/{chunk-7DXPQW2H.js → chunk-JBVKA3UR.js} +943 -79
  66. package/dist/{chunk-EP425PGA.js → chunk-JHVSVVHB.js} +8 -8
  67. package/dist/{chunk-ICMVPBRQ.js → chunk-KHYUAZPL.js} +2 -2
  68. package/dist/{chunk-L5ZMZOQL.js → chunk-KRZECDHA.js} +2 -2
  69. package/dist/{chunk-ZX5ISG5O.js → chunk-KT4SP73I.js} +4 -4
  70. package/dist/{chunk-IDXEDMWI.js → chunk-LD3A63IE.js} +3 -3
  71. package/dist/{chunk-YTCMVHW5.js → chunk-MTPE6BW7.js} +1 -1
  72. package/dist/{chunk-CJTTAF4O.js → chunk-MYTWZ33A.js} +3 -3
  73. package/dist/{chunk-VYKUGORF.js → chunk-NKDK3H3I.js} +4 -4
  74. package/dist/{chunk-64LLZV5F.js → chunk-OARF7TWF.js} +6 -6
  75. package/dist/{chunk-3TF5FHAT.js → chunk-OQ5K6QHU.js} +6 -5
  76. package/dist/{chunk-ME2PKG7C.js → chunk-PGFLQXW5.js} +2 -2
  77. package/dist/{chunk-7ZWU4BNG.js → chunk-PWQN4D6R.js} +5 -5
  78. package/dist/{chunk-V5BIWNB3.js → chunk-Q6HJD6SH.js} +1 -1
  79. package/dist/{chunk-VU6O4P2N.js → chunk-QYD5TN2J.js} +5 -5
  80. package/dist/{chunk-OQKV3OXH.js → chunk-RZTWWE26.js} +1 -1
  81. package/dist/{chunk-GXZFDZJG.js → chunk-S6J3A4DF.js} +1 -1
  82. package/dist/{chunk-EBO5KWWC.js → chunk-SAGO6JNL.js} +1 -1
  83. package/dist/{chunk-AR7XOG6W.js → chunk-SM4P6VIY.js} +1 -1
  84. package/dist/{chunk-7RKX7WRQ.js → chunk-SMA7LUCS.js} +1 -1
  85. package/dist/{chunk-43DOHHZZ.js → chunk-SMAY3CGD.js} +2 -2
  86. package/dist/{chunk-FY2XCYLK.js → chunk-T4KXYKDL.js} +5 -5
  87. package/dist/{chunk-UJZ3KD4E.js → chunk-V2FRBKMP.js} +2 -2
  88. package/dist/{chunk-YRB2VBKK.js → chunk-VTTHXOCR.js} +2 -2
  89. package/dist/{chunk-5NXOJ3JG.js → chunk-XKSAXKRY.js} +3 -3
  90. package/dist/{chunk-FD3QASU3.js → chunk-XLNSQLTV.js} +12 -12
  91. package/dist/{chunk-OK4WDRGM.js → chunk-XNKFK27C.js} +1 -1
  92. package/dist/{chunk-JOZWN4YI.js → chunk-XZRRYMY2.js} +4 -4
  93. package/dist/{chunk-WIAWMH6T.js → chunk-YZPCDR32.js} +4 -4
  94. package/dist/{chunk-ZMWCN3QS.js → chunk-ZLKJHXSC.js} +4 -4
  95. package/dist/{global-upgrade-MBW4MRJ2.js → global-upgrade-JDZPAQ6B.js} +6 -6
  96. package/dist/{paths-H4XMIYUS.js → paths-4QBYMQHK.js} +2 -2
  97. package/dist/{reapply-JFEY77OC.js → reapply-26GMHUWI.js} +20 -20
  98. package/dist/src/index.js +19 -19
  99. package/dist/{upgrade-lock-2RGMG5ZV.js → upgrade-lock-DIRCINDI.js} +3 -3
  100. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.30
4
+
5
+ - "Always allow PowerShell" and "Always allow Monitor" now ask about the same consequences "Always allow Bash" does. A Monitor command is judged exactly as the same Bash command. In PowerShell that includes `Remove-Item -Recurse`, `irm ... | iex`, a downloaded script then run, `Set-Content .env`, `Stop-Service`, `Format-Volume` and a recursive `Get-ChildItem` piped to `Remove-Item`. A plain `Remove-Item file.txt`, `git push`, `Stop-Process`, `-WhatIf` and every read such as `Get-ChildItem` keep running.
6
+ - A `*` approve rule no longer runs a destructive PowerShell or Monitor command, such as `Remove-Item -Recurse -Force ~`, `cmd /c rd /s` or `rm -rf ~`, without asking. It asks, as it already did for Bash.
7
+ - Codex: a call nobody answers is now refused instead of passed back to Codex, which ran calls it does not ask about itself. Only a rule you set to approve on timeout lets it run.
8
+ - A call refused because your phone approvals for a session are paused now says so, and tells you to tap Approve on the notification to resume. It used to say "No response within timeout".
9
+ - Codex: a GitHub, Stripe, AWS or Twilio write behind `caffeinate`, `stdbuf` or `flock` now asks, and `gh` asks about anything that is not a known read, such as `gh extension install`, `gh ssh-key add` or `gh label clone`. `gh pr co` now runs like `gh pr checkout`.
10
+ - Codex: a patch to a GitHub workflow or secrets file now asks however its path is capitalised, so `.GitHub/Workflows/ci.yml` no longer runs unasked.
11
+ - When two of your rules hold a call equally, Pushary now uses the one that refuses it if nobody answers, whatever order the rules are in.
12
+ - Antigravity CLI: input to a running command that is not text is now refused instead of shown as blank input.
13
+
14
+ ## 1.9.29
15
+
16
+ - Codex: answering "Handle on your machine" now always refuses the call, and tells you to ask Codex to run it again while you are at your computer, or to run it yourself. In Codex's default modes the call used to pass back to Codex, and a call Codex does not ask about itself, such as a remote API write or a file deletion, could run without anyone approving it.
17
+ - In a session started from your phone, "Handle on your machine" now refuses the call with the same reason every agent without an approval prompt of its own gives.
18
+
3
19
  ## 1.9.28
4
20
 
5
21
  - Antigravity CLI: text agy sends to a command it left running (`manage_task` with `send_input`) now goes through Pushary and is judged as the shell command it types, so your `Bash` rules and safe read-only commands apply to it. It used to run with nobody asked, because connecting agy turns off its own prompt. Sending blank input, such as pressing Enter, asks your phone. Listing, checking and stopping agy's own background tasks run without a question.
@@ -1,41 +1,41 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-EBO5KWWC.js";
4
+ } from "../chunk-SAGO6JNL.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-3OFFLLSJ.js";
8
- import "../chunk-EP425PGA.js";
7
+ } from "../chunk-HMA7QQ3P.js";
8
+ import "../chunk-JHVSVVHB.js";
9
9
  import "../chunk-VTR4VRL2.js";
10
- import "../chunk-VU6O4P2N.js";
11
- import "../chunk-HRAZMBUX.js";
12
- import "../chunk-AXGA3WJI.js";
13
- import "../chunk-MNHY3EIN.js";
10
+ import "../chunk-QYD5TN2J.js";
11
+ import "../chunk-E2WJLU5U.js";
12
+ import "../chunk-IMUCTAM2.js";
13
+ import "../chunk-434NFCK2.js";
14
14
  import "../chunk-XHKBHWLX.js";
15
- import "../chunk-ZX5ISG5O.js";
16
- import "../chunk-COEOZ2NC.js";
17
- import "../chunk-BXUYF5HB.js";
18
- import "../chunk-SGAQYFGS.js";
19
- import "../chunk-GXZFDZJG.js";
15
+ import "../chunk-KT4SP73I.js";
16
+ import "../chunk-GFY6XONT.js";
17
+ import "../chunk-2OIGS4P2.js";
18
+ import "../chunk-DP6FJABB.js";
19
+ import "../chunk-S6J3A4DF.js";
20
20
  import "../chunk-GMXKITVA.js";
21
21
  import "../chunk-6ICPEJY5.js";
22
- import "../chunk-IDXEDMWI.js";
23
- import "../chunk-FD3QASU3.js";
24
- import "../chunk-V5BIWNB3.js";
25
- import "../chunk-3TF5FHAT.js";
22
+ import "../chunk-LD3A63IE.js";
23
+ import "../chunk-XLNSQLTV.js";
24
+ import "../chunk-Q6HJD6SH.js";
25
+ import "../chunk-OQ5K6QHU.js";
26
26
  import "../chunk-POFBE6ZY.js";
27
- import "../chunk-ZREXC363.js";
28
- import "../chunk-5NXOJ3JG.js";
29
- import "../chunk-56U55YDV.js";
30
- import "../chunk-IWPQBWFN.js";
27
+ import "../chunk-7JO33ODX.js";
28
+ import "../chunk-XKSAXKRY.js";
29
+ import "../chunk-3QKX22ZA.js";
30
+ import "../chunk-6DJBVMTR.js";
31
31
  import "../chunk-7QLSKOSU.js";
32
32
  import "../chunk-KZERVKTD.js";
33
- import "../chunk-L5ZMZOQL.js";
34
- import "../chunk-TAPGV2YV.js";
33
+ import "../chunk-KRZECDHA.js";
34
+ import "../chunk-2QEW5FJK.js";
35
35
  import "../chunk-AQFEP65J.js";
36
- import "../chunk-OK4WDRGM.js";
37
- import "../chunk-7RKX7WRQ.js";
38
- import "../chunk-7DXPQW2H.js";
36
+ import "../chunk-XNKFK27C.js";
37
+ import "../chunk-SMA7LUCS.js";
38
+ import "../chunk-JBVKA3UR.js";
39
39
 
40
40
  // bin/pushary-bell-hook.ts
41
41
  var main = async () => {
@@ -5,39 +5,39 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-EBO5KWWC.js";
8
+ } from "../chunk-SAGO6JNL.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-74YRZTGP.js";
14
+ } from "../chunk-6R22H57A.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-GXZFDZJG.js";
19
+ } from "../chunk-S6J3A4DF.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-GMXKITVA.js";
23
- import "../chunk-IDXEDMWI.js";
23
+ import "../chunk-LD3A63IE.js";
24
24
  import "../chunk-7QLSKOSU.js";
25
25
  import {
26
26
  EXIT
27
27
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-L5ZMZOQL.js";
28
+ import "../chunk-KRZECDHA.js";
29
29
  import {
30
30
  claudeSettings
31
- } from "../chunk-TAPGV2YV.js";
31
+ } from "../chunk-2QEW5FJK.js";
32
32
  import {
33
33
  readJsonSafe,
34
34
  writeJsonAtomic
35
35
  } from "../chunk-AQFEP65J.js";
36
- import "../chunk-OK4WDRGM.js";
37
- import "../chunk-7RKX7WRQ.js";
36
+ import "../chunk-XNKFK27C.js";
37
+ import "../chunk-SMA7LUCS.js";
38
38
  import {
39
39
  isRecord
40
- } from "../chunk-7DXPQW2H.js";
40
+ } from "../chunk-JBVKA3UR.js";
41
41
 
42
42
  // bin/pushary-bell.ts
43
43
  exitOnHelpFlag("bell");
@@ -8,39 +8,39 @@ import {
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-URZOKMAV.js";
11
+ } from "../chunk-CS5JKDWW.js";
12
12
  import {
13
13
  announceSubscriptionRequired,
14
14
  isDeferAnswer
15
- } from "../chunk-ZH32OREM.js";
15
+ } from "../chunk-J3HI2SRD.js";
16
16
  import {
17
17
  claudeTranscriptPath,
18
18
  loadSessionKey,
19
19
  registerTranscript,
20
20
  registeredTranscriptEnabled
21
- } from "../chunk-EP425PGA.js";
21
+ } from "../chunk-JHVSVVHB.js";
22
22
  import "../chunk-VTR4VRL2.js";
23
23
  import {
24
24
  ensureDaemonRunning
25
- } from "../chunk-VU6O4P2N.js";
25
+ } from "../chunk-QYD5TN2J.js";
26
26
  import {
27
27
  encryptRecord
28
- } from "../chunk-HRAZMBUX.js";
29
- import "../chunk-AXGA3WJI.js";
28
+ } from "../chunk-E2WJLU5U.js";
29
+ import "../chunk-IMUCTAM2.js";
30
30
  import {
31
31
  transcriptsEnabled
32
- } from "../chunk-MNHY3EIN.js";
32
+ } from "../chunk-434NFCK2.js";
33
33
  import {
34
34
  needsShell,
35
35
  spawnClaude
36
36
  } from "../chunk-XHKBHWLX.js";
37
- import "../chunk-COEOZ2NC.js";
38
- import "../chunk-BXUYF5HB.js";
39
- import "../chunk-SGAQYFGS.js";
40
- import "../chunk-GXZFDZJG.js";
37
+ import "../chunk-GFY6XONT.js";
38
+ import "../chunk-2OIGS4P2.js";
39
+ import "../chunk-DP6FJABB.js";
40
+ import "../chunk-S6J3A4DF.js";
41
41
  import "../chunk-GMXKITVA.js";
42
42
  import "../chunk-6ICPEJY5.js";
43
- import "../chunk-IDXEDMWI.js";
43
+ import "../chunk-LD3A63IE.js";
44
44
  import {
45
45
  DEFAULT_SESSION,
46
46
  UNNAMED_ACTION,
@@ -58,47 +58,50 @@ import {
58
58
  reportEvent,
59
59
  savePendingCommand,
60
60
  scopePathFor
61
- } from "../chunk-FD3QASU3.js";
62
- import "../chunk-V5BIWNB3.js";
61
+ } from "../chunk-XLNSQLTV.js";
62
+ import "../chunk-Q6HJD6SH.js";
63
63
  import {
64
64
  askUser,
65
65
  cancelQuestion,
66
+ isAwayPaused,
66
67
  isDecisionStopped,
67
68
  isLocalQuestionHandoff,
68
69
  nextLongPollMs,
69
70
  waitForAnswer,
70
71
  waitsForThePhone,
71
72
  withdrawQuestion
72
- } from "../chunk-3TF5FHAT.js";
73
+ } from "../chunk-OQ5K6QHU.js";
73
74
  import "../chunk-POFBE6ZY.js";
74
75
  import {
75
76
  SubscriptionRequiredError
76
- } from "../chunk-ZREXC363.js";
77
- import "../chunk-5NXOJ3JG.js";
78
- import "../chunk-56U55YDV.js";
77
+ } from "../chunk-7JO33ODX.js";
78
+ import "../chunk-XKSAXKRY.js";
79
+ import "../chunk-3QKX22ZA.js";
79
80
  import {
80
81
  getMachineId
81
- } from "../chunk-IWPQBWFN.js";
82
+ } from "../chunk-6DJBVMTR.js";
82
83
  import "../chunk-7QLSKOSU.js";
83
84
  import "../chunk-KZERVKTD.js";
84
- import "../chunk-L5ZMZOQL.js";
85
- import "../chunk-TAPGV2YV.js";
85
+ import "../chunk-KRZECDHA.js";
86
+ import "../chunk-2QEW5FJK.js";
86
87
  import "../chunk-AQFEP65J.js";
87
88
  import {
88
89
  getApiKey,
89
90
  getBaseUrl
90
- } from "../chunk-OK4WDRGM.js";
91
+ } from "../chunk-XNKFK27C.js";
91
92
  import {
92
93
  NPX_LATEST_COMMAND
93
- } from "../chunk-7RKX7WRQ.js";
94
+ } from "../chunk-SMA7LUCS.js";
94
95
  import {
95
96
  DECISION_STOP_REASON,
97
+ HAND_BACK_WITHOUT_A_PROMPT,
96
98
  KILL_REASON,
99
+ SESSION_PAUSED_REASON,
97
100
  UNVERIFIABLE_APPROVAL_REASON,
98
101
  redactSecretsFromContent,
99
102
  resolveGate,
100
103
  timeoutActionWithoutLocalPrompt
101
- } from "../chunk-7DXPQW2H.js";
104
+ } from "../chunk-JBVKA3UR.js";
102
105
 
103
106
  // src/wrapper/localPassthrough.ts
104
107
  var SIGNAL_NUMBERS = {
@@ -430,6 +433,7 @@ var BoundedInputQueue = class {
430
433
 
431
434
  // src/wrapper/approver.ts
432
435
  var DEFAULT_MAX_CONCURRENT = 16;
436
+ var NO_APPROVAL_IN_TIME = "No approval received in time";
433
437
  var NO_LOCAL_APPROVAL_UI = "This remote session has no local approval UI. Continue in an interactive session or choose a mode that permits remote approval.";
434
438
  var SUBSCRIPTION_REQUIRED_NO_LOCAL_APPROVAL_UI = "Your Pushary workspace has no active subscription, so approvals cannot reach your phone, and this remote session has no local approval UI. Continue in an interactive session.";
435
439
  var DEFAULT_APPROVAL_WINDOW_MS = 5 * 6e4;
@@ -455,7 +459,7 @@ var createRemoteApprover = (deps) => {
455
459
  const ceiling = policy.timeoutAction === "wait" ? MAX_APPROVAL_WINDOW_MS : base;
456
460
  return Math.min(Math.max(base, 15e3), Math.max(ceiling, 15e3));
457
461
  };
458
- const applyTimeout = (policy, input) => timeoutActionWithoutLocalPrompt(policy) === "approve" ? allow(input) : deny("No approval received in time");
462
+ const applyTimeout = (policy, input, paused) => timeoutActionWithoutLocalPrompt(policy) === "approve" ? allow(input) : deny(paused ? SESSION_PAUSED_REASON : NO_APPROVAL_IN_TIME);
459
463
  const waitForPhone = async (entry, correlationId, windowMs) => {
460
464
  const deadline = now() + windowMs;
461
465
  while (now() < deadline && !entry.controller.signal.aborted) {
@@ -553,11 +557,11 @@ var createRemoteApprover = (deps) => {
553
557
  }
554
558
  answered = answer.answered;
555
559
  if (answer.answered) {
556
- if (isDeferAnswer(answer.value)) return deny("Deferred \u2014 handle it on the machine");
560
+ if (isDeferAnswer(answer.value)) return deny(HAND_BACK_WITHOUT_A_PROMPT.reason);
557
561
  return answer.value === "yes" ? allow(input) : deny("Denied from your phone");
558
562
  }
559
563
  if (localHandoff) return deny(NO_LOCAL_APPROVAL_UI);
560
- return applyTimeout(policy, input);
564
+ return applyTimeout(policy, input, isAwayPaused(question));
561
565
  } catch {
562
566
  return deny("Approval unavailable; denied by default");
563
567
  } finally {
@@ -9,12 +9,12 @@ import {
9
9
  planCliKeyRevocations,
10
10
  readCliHeldKeys,
11
11
  revokeCliKeys
12
- } from "../chunk-FY2XCYLK.js";
12
+ } from "../chunk-T4KXYKDL.js";
13
13
  import {
14
14
  isCursorPluginLeftover,
15
15
  releaseSoleGate,
16
16
  withoutPusharyCursorHooks
17
- } from "../chunk-ZMWCN3QS.js";
17
+ } from "../chunk-ZLKJHXSC.js";
18
18
  import {
19
19
  HERMES_PIP_PACKAGE,
20
20
  readHermesStatus,
@@ -23,25 +23,25 @@ import {
23
23
  shortenHome,
24
24
  unregisterPluginLocation,
25
25
  vscodeSettingsTargets
26
- } from "../chunk-W6MUIG6S.js";
26
+ } from "../chunk-AO75FKBR.js";
27
27
  import {
28
28
  planFxRemoval,
29
29
  removeInstructionBlock
30
- } from "../chunk-WIAWMH6T.js";
31
- import "../chunk-FYYWKCPO.js";
30
+ } from "../chunk-YZPCDR32.js";
31
+ import "../chunk-DU6UZXGV.js";
32
32
  import {
33
33
  disableDaemonService
34
- } from "../chunk-VU6O4P2N.js";
34
+ } from "../chunk-QYD5TN2J.js";
35
35
  import "../chunk-XHKBHWLX.js";
36
- import "../chunk-VYKUGORF.js";
36
+ import "../chunk-NKDK3H3I.js";
37
37
  import {
38
38
  macAppKeepsMcpEntry,
39
39
  mcpServerBearer,
40
40
  pusharyKey,
41
41
  readMacAppAgentKey,
42
42
  setupReceiptKey
43
- } from "../chunk-S3NAONBN.js";
44
- import "../chunk-UJZ3KD4E.js";
43
+ } from "../chunk-H7HRHS3M.js";
44
+ import "../chunk-V2FRBKMP.js";
45
45
  import {
46
46
  OPENCODE_PLUGIN_SIBLING,
47
47
  OPENCODE_PLUGIN_SIBLING_CONTENTS,
@@ -53,14 +53,14 @@ import {
53
53
  openCodePluginDir,
54
54
  openCodePluginFile,
55
55
  removeOpenCodeMcpServer
56
- } from "../chunk-YW7JQ7Z4.js";
56
+ } from "../chunk-EDEEITT3.js";
57
57
  import {
58
58
  ansiPainter,
59
59
  useColor
60
60
  } from "../chunk-FO3MDD26.js";
61
61
  import {
62
62
  exitOnHelpFlag
63
- } from "../chunk-74YRZTGP.js";
63
+ } from "../chunk-6R22H57A.js";
64
64
  import {
65
65
  compatibleConfigFile,
66
66
  compatibleInstructionsFile,
@@ -73,7 +73,7 @@ import {
73
73
  removePusharySettings,
74
74
  removePusharyToolPermissions,
75
75
  restoreClaudeMcpServer
76
- } from "../chunk-ZX5ISG5O.js";
76
+ } from "../chunk-KT4SP73I.js";
77
77
  import {
78
78
  hookOwnerOf,
79
79
  isHookTakeoverReceipt,
@@ -81,12 +81,12 @@ import {
81
81
  resolveBridgeStub,
82
82
  restoreHookTakeover,
83
83
  restoreMcpServer
84
- } from "../chunk-COEOZ2NC.js";
84
+ } from "../chunk-GFY6XONT.js";
85
85
  import {
86
86
  removeGeminiSettings
87
- } from "../chunk-BXUYF5HB.js";
88
- import "../chunk-SGAQYFGS.js";
89
- import "../chunk-GXZFDZJG.js";
87
+ } from "../chunk-2OIGS4P2.js";
88
+ import "../chunk-DP6FJABB.js";
89
+ import "../chunk-S6J3A4DF.js";
90
90
  import {
91
91
  rejectUnknownFlags
92
92
  } from "../chunk-GMXKITVA.js";
@@ -96,20 +96,20 @@ import {
96
96
  isDisabledExport,
97
97
  removeClaudeAlias,
98
98
  shellProfileCandidates
99
- } from "../chunk-IDXEDMWI.js";
100
- import "../chunk-FD3QASU3.js";
101
- import "../chunk-V5BIWNB3.js";
102
- import "../chunk-3TF5FHAT.js";
99
+ } from "../chunk-LD3A63IE.js";
100
+ import "../chunk-XLNSQLTV.js";
101
+ import "../chunk-Q6HJD6SH.js";
102
+ import "../chunk-OQ5K6QHU.js";
103
103
  import "../chunk-POFBE6ZY.js";
104
- import "../chunk-ZREXC363.js";
105
- import "../chunk-5NXOJ3JG.js";
106
- import "../chunk-56U55YDV.js";
107
- import "../chunk-IWPQBWFN.js";
104
+ import "../chunk-7JO33ODX.js";
105
+ import "../chunk-XKSAXKRY.js";
106
+ import "../chunk-3QKX22ZA.js";
107
+ import "../chunk-6DJBVMTR.js";
108
108
  import "../chunk-7QLSKOSU.js";
109
109
  import {
110
110
  EXIT
111
111
  } from "../chunk-KZERVKTD.js";
112
- import "../chunk-L5ZMZOQL.js";
112
+ import "../chunk-KRZECDHA.js";
113
113
  import {
114
114
  claudeJson,
115
115
  claudeMcpReceipt,
@@ -146,14 +146,14 @@ import {
146
146
  restoreCodexHookTrust,
147
147
  vscodePluginDir,
148
148
  vscodePluginMcp
149
- } from "../chunk-TAPGV2YV.js";
149
+ } from "../chunk-2QEW5FJK.js";
150
150
  import "../chunk-AQFEP65J.js";
151
151
  import {
152
152
  getBaseUrl
153
- } from "../chunk-OK4WDRGM.js";
153
+ } from "../chunk-XNKFK27C.js";
154
154
  import {
155
155
  NPX_LATEST_COMMAND
156
- } from "../chunk-7RKX7WRQ.js";
156
+ } from "../chunk-SMA7LUCS.js";
157
157
  import {
158
158
  CLI_PACKAGE_NAMES,
159
159
  HOOK_COMPATIBLE_PROFILES,
@@ -165,7 +165,7 @@ import {
165
165
  globalRootFor,
166
166
  isValidApiKey,
167
167
  redactSecrets
168
- } from "../chunk-7DXPQW2H.js";
168
+ } from "../chunk-JBVKA3UR.js";
169
169
 
170
170
  // bin/pushary-clean.ts
171
171
  import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
@@ -5,10 +5,10 @@ import {
5
5
  postLiveSession,
6
6
  postLiveSessionUntilAccepted,
7
7
  startLiveSessionHeartbeat
8
- } from "../chunk-VAJLOCFP.js";
8
+ } from "../chunk-2VQULZ4L.js";
9
9
  import {
10
10
  resolveProviderBinary
11
- } from "../chunk-7TBCGHJT.js";
11
+ } from "../chunk-CI2H3U7O.js";
12
12
  import "../chunk-RIVNNBEK.js";
13
13
  import {
14
14
  SESSION_IDLE_TIMEOUT_MS,
@@ -16,50 +16,50 @@ import {
16
16
  idleDeadlinePassed,
17
17
  startProcessOwnership,
18
18
  withSpawnProcessOwnership
19
- } from "../chunk-URZOKMAV.js";
20
- import "../chunk-HRAZMBUX.js";
21
- import "../chunk-AXGA3WJI.js";
19
+ } from "../chunk-CS5JKDWW.js";
20
+ import "../chunk-E2WJLU5U.js";
21
+ import "../chunk-IMUCTAM2.js";
22
22
  import {
23
23
  transcriptsEnabled
24
- } from "../chunk-MNHY3EIN.js";
24
+ } from "../chunk-434NFCK2.js";
25
25
  import {
26
26
  spawnClaude
27
27
  } from "../chunk-XHKBHWLX.js";
28
28
  import "../chunk-6ICPEJY5.js";
29
- import "../chunk-IDXEDMWI.js";
29
+ import "../chunk-LD3A63IE.js";
30
30
  import {
31
31
  isAskUserResponse,
32
32
  isDecisionStopped,
33
33
  isWaitForAnswerResponse,
34
34
  withdrawQuestion,
35
35
  writeDegraded
36
- } from "../chunk-3TF5FHAT.js";
36
+ } from "../chunk-OQ5K6QHU.js";
37
37
  import "../chunk-POFBE6ZY.js";
38
38
  import {
39
39
  callMcpTool
40
- } from "../chunk-ZREXC363.js";
41
- import "../chunk-5NXOJ3JG.js";
42
- import "../chunk-56U55YDV.js";
40
+ } from "../chunk-7JO33ODX.js";
41
+ import "../chunk-XKSAXKRY.js";
42
+ import "../chunk-3QKX22ZA.js";
43
43
  import {
44
44
  getMachineId
45
- } from "../chunk-IWPQBWFN.js";
45
+ } from "../chunk-6DJBVMTR.js";
46
46
  import "../chunk-7QLSKOSU.js";
47
47
  import "../chunk-KZERVKTD.js";
48
- import "../chunk-L5ZMZOQL.js";
49
- import "../chunk-TAPGV2YV.js";
48
+ import "../chunk-KRZECDHA.js";
49
+ import "../chunk-2QEW5FJK.js";
50
50
  import "../chunk-AQFEP65J.js";
51
51
  import {
52
52
  getApiKey,
53
53
  getBaseUrl
54
- } from "../chunk-OK4WDRGM.js";
55
- import "../chunk-7RKX7WRQ.js";
54
+ } from "../chunk-XNKFK27C.js";
55
+ import "../chunk-SMA7LUCS.js";
56
56
  import {
57
57
  elicitationContent,
58
58
  parseAgentQuestion,
59
59
  parseAgentQuestionAnswers,
60
60
  planElicitationAsk,
61
61
  readElicitationFields
62
- } from "../chunk-7DXPQW2H.js";
62
+ } from "../chunk-JBVKA3UR.js";
63
63
 
64
64
  // bin/pushary-codex-bridge.ts
65
65
  import { existsSync } from "fs";