pushary 1.9.122 → 1.9.123

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 (41) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/bin/pushary-bell-hook.js +3 -3
  3. package/dist/bin/pushary-claude.js +2 -2
  4. package/dist/bin/pushary-clean.js +3 -3
  5. package/dist/bin/pushary-codex-hook.js +4 -4
  6. package/dist/bin/pushary-codex-session.js +2 -2
  7. package/dist/bin/pushary-daemon.js +6 -6
  8. package/dist/bin/pushary-display-hook.js +2 -2
  9. package/dist/bin/pushary-doctor.js +2 -2
  10. package/dist/bin/pushary-elicitation-hook.js +3 -3
  11. package/dist/bin/pushary-gemini-hook.js +3 -3
  12. package/dist/bin/pushary-hook.js +4 -4
  13. package/dist/bin/pushary-login.js +1 -1
  14. package/dist/bin/pushary-notification-hook.js +3 -3
  15. package/dist/bin/pushary-opencode-hook.js +3 -3
  16. package/dist/bin/pushary-permission-denied-hook.js +4 -4
  17. package/dist/bin/pushary-permission-hook.js +4 -4
  18. package/dist/bin/pushary-post-hook.js +3 -3
  19. package/dist/bin/pushary-prompt-hook.js +3 -3
  20. package/dist/bin/pushary-session-end-hook.js +3 -3
  21. package/dist/bin/pushary-session-start-hook.js +4 -4
  22. package/dist/bin/pushary-setup.js +3 -3
  23. package/dist/bin/pushary-status.js +2 -2
  24. package/dist/bin/pushary-stop-hook.js +3 -3
  25. package/dist/bin/pushary-stopfailure-hook.js +3 -3
  26. package/dist/bin/pushary-transcript-register.js +2 -2
  27. package/dist/bin/pushary-transcripts.js +2 -2
  28. package/dist/bin/pushary-upgrade.js +3 -3
  29. package/dist/{chunk-E3LX6DEF.js → chunk-6YSUPE5Z.js} +2 -2
  30. package/dist/{chunk-XWFYR52C.js → chunk-AHB2CUJZ.js} +9 -1
  31. package/dist/{chunk-P6H2DI6T.js → chunk-GLFY52O2.js} +1 -1
  32. package/dist/{chunk-TJ32WT6M.js → chunk-IICWR257.js} +1 -1
  33. package/dist/{chunk-O2UMQKR4.js → chunk-JNHDKTXI.js} +1 -1
  34. package/dist/{chunk-ABYRJP4R.js → chunk-SPEUUVMN.js} +1 -1
  35. package/dist/{chunk-BHQYJFPY.js → chunk-WP2AHPRO.js} +1 -1
  36. package/dist/{chunk-WZWZ7UCN.js → chunk-ZBKM5V6B.js} +6 -3
  37. package/dist/{codex-app-cards-switch-HUU5TTBZ.js → codex-app-cards-switch-TGECJSVW.js} +3 -3
  38. package/dist/{codex-desktop-launch-QJOCWURE.js → codex-desktop-launch-F5SP75ED.js} +1 -1
  39. package/dist/{reapply-LMTBF3XQ.js → reapply-H6ETJ2QP.js} +1 -1
  40. package/dist/src/index.js +4 -4
  41. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.123
4
+
5
+ - The background daemon keeps running after your computer wakes from sleep. Before, a transcript hook that ran in the first 30 seconds after a long sleep could stop it, and phone start, transcript upload and the Claude wake inbox stayed off until a later hook started it again.
6
+ - `pushary upgrade` keeps the Gemini CLI settings file and the Cursor and VS Code plugin `mcp.json` files, which hold your Pushary key, readable only by you, as setup writes them. Before, upgrade left them at your default permissions.
7
+
3
8
  ## 1.9.122
4
9
 
5
10
  - Claude Code: a hook event removed from your settings now comes back at the next session start, whenever Pushary can find its installed hooks. Before, it stayed gone until Claude Code shipped a new version or you ran `pushary upgrade`. Newer events are not added back while the Claude Code version cannot be read.
@@ -4,14 +4,14 @@ import {
4
4
  } from "../chunk-BVI2N7QA.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-TJ32WT6M.js";
7
+ } from "../chunk-IICWR257.js";
8
8
  import "../chunk-C2L477NM.js";
9
- import "../chunk-O2UMQKR4.js";
9
+ import "../chunk-JNHDKTXI.js";
10
10
  import "../chunk-HXBQTPKC.js";
11
11
  import "../chunk-G66WIAST.js";
12
12
  import "../chunk-ZAYXOSEP.js";
13
13
  import "../chunk-WLC3AX6F.js";
14
- import "../chunk-XWFYR52C.js";
14
+ import "../chunk-AHB2CUJZ.js";
15
15
  import "../chunk-Q3KKA5IZ.js";
16
16
  import "../chunk-7OSBFMRV.js";
17
17
  import "../chunk-LS3CQ536.js";
@@ -24,7 +24,7 @@ import {
24
24
  registerTranscript,
25
25
  registeredTranscriptEnabled,
26
26
  startDraftPublisher
27
- } from "../chunk-O2UMQKR4.js";
27
+ } from "../chunk-JNHDKTXI.js";
28
28
  import "../chunk-HXBQTPKC.js";
29
29
  import "../chunk-G66WIAST.js";
30
30
  import {
@@ -43,7 +43,7 @@ import {
43
43
  } from "../chunk-WLC3AX6F.js";
44
44
  import {
45
45
  ensureDaemonRunning
46
- } from "../chunk-XWFYR52C.js";
46
+ } from "../chunk-AHB2CUJZ.js";
47
47
  import "../chunk-Q3KKA5IZ.js";
48
48
  import {
49
49
  UNNAMED_ACTION,
@@ -15,13 +15,13 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-E3LX6DEF.js";
18
+ } from "../chunk-6YSUPE5Z.js";
19
19
  import {
20
20
  PUSHARY_SKILL_NAME,
21
21
  PUSHARY_SKILL_SOURCE,
22
22
  createGuards
23
23
  } from "../chunk-J42EAEX3.js";
24
- import "../chunk-ABYRJP4R.js";
24
+ import "../chunk-SPEUUVMN.js";
25
25
  import "../chunk-XCEN33UP.js";
26
26
  import {
27
27
  describeCliKeyRevocation,
@@ -99,7 +99,7 @@ import {
99
99
  import "../chunk-WLC3AX6F.js";
100
100
  import {
101
101
  disableDaemonService
102
- } from "../chunk-XWFYR52C.js";
102
+ } from "../chunk-AHB2CUJZ.js";
103
103
  import {
104
104
  hookOwnerOf,
105
105
  isHookTakeoverReceipt,
@@ -23,13 +23,13 @@ import {
23
23
  } from "../chunk-STGEWWFW.js";
24
24
  import {
25
25
  readHookInput
26
- } from "../chunk-TJ32WT6M.js";
26
+ } from "../chunk-IICWR257.js";
27
27
  import "../chunk-C2L477NM.js";
28
28
  import {
29
29
  announceSubscriptionRequired,
30
30
  isDeferAnswer
31
31
  } from "../chunk-OJPHNITI.js";
32
- import "../chunk-O2UMQKR4.js";
32
+ import "../chunk-JNHDKTXI.js";
33
33
  import "../chunk-HXBQTPKC.js";
34
34
  import "../chunk-G66WIAST.js";
35
35
  import "../chunk-ZAYXOSEP.js";
@@ -65,7 +65,7 @@ import {
65
65
  toPolicyLookups,
66
66
  userScope
67
67
  } from "../chunk-WLC3AX6F.js";
68
- import "../chunk-XWFYR52C.js";
68
+ import "../chunk-AHB2CUJZ.js";
69
69
  import "../chunk-Q3KKA5IZ.js";
70
70
  import {
71
71
  codexReviewerDenialsSince,
@@ -806,7 +806,7 @@ var decidePreToolUse = async (input) => {
806
806
  };
807
807
  var repairCodexHoldsQuietly = async () => {
808
808
  try {
809
- const { repairCodexHolds } = await import("../reapply-LMTBF3XQ.js");
809
+ const { repairCodexHolds } = await import("../reapply-H6ETJ2QP.js");
810
810
  repairCodexHolds();
811
811
  } catch {
812
812
  return;
@@ -19,7 +19,7 @@ var desktopAccount = async () => {
19
19
  return null;
20
20
  }
21
21
  };
22
- var desktopLaunch = await import("../codex-desktop-launch-QJOCWURE.js").catch(() => null);
22
+ var desktopLaunch = await import("../codex-desktop-launch-F5SP75ED.js").catch(() => null);
23
23
  if (desktopLaunch === null && appBehindTheProxy !== void 0) {
24
24
  process.exitCode = await letCodexRunWithoutPushary(appBehindTheProxy, args.slice(3));
25
25
  } else {
@@ -27,7 +27,7 @@ if (desktopLaunch === null && appBehindTheProxy !== void 0) {
27
27
  const stop = () => abort.abort();
28
28
  if (!args[0]?.startsWith("--desktop")) for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) process.on(signal, stop);
29
29
  try {
30
- const { codexDesktopCommand } = desktopLaunch ?? await import("../codex-desktop-launch-QJOCWURE.js");
30
+ const { codexDesktopCommand } = desktopLaunch ?? await import("../codex-desktop-launch-F5SP75ED.js");
31
31
  const desktop = await codexDesktopCommand(args, [process.execPath, ...process.execArgv, process.argv[1], "codex"], desktopAccount);
32
32
  if (desktop !== null) process.exitCode = desktop;
33
33
  else {
@@ -5,13 +5,13 @@ import {
5
5
  } from "../chunk-MIO2IWCZ.js";
6
6
  import {
7
7
  inspectConfiguredManagedProviders
8
- } from "../chunk-WZWZ7UCN.js";
8
+ } from "../chunk-ZBKM5V6B.js";
9
9
  import "../chunk-PO6ECYXG.js";
10
10
  import "../chunk-EBJ5QUVE.js";
11
11
  import {
12
12
  HEARTBEAT_INTERVAL_MS,
13
13
  sendHeartbeat
14
- } from "../chunk-P6H2DI6T.js";
14
+ } from "../chunk-GLFY52O2.js";
15
15
  import "../chunk-27FILS44.js";
16
16
  import {
17
17
  readSignedOutDiagnosis
@@ -56,7 +56,7 @@ import {
56
56
  import "../chunk-C2L477NM.js";
57
57
  import {
58
58
  startRegisteredTranscripts
59
- } from "../chunk-O2UMQKR4.js";
59
+ } from "../chunk-JNHDKTXI.js";
60
60
  import "../chunk-HXBQTPKC.js";
61
61
  import "../chunk-G66WIAST.js";
62
62
  import "../chunk-ZAYXOSEP.js";
@@ -66,6 +66,7 @@ import {
66
66
  } from "../chunk-WLC3AX6F.js";
67
67
  import {
68
68
  DAEMON_LEASE_RENEW_INTERVAL_MS,
69
+ DAEMON_YIELD_CHECK_INTERVAL_MS,
69
70
  acquireDaemonLease,
70
71
  clearDaemonNeedsLogin,
71
72
  daemonServiceManagerAvailable,
@@ -80,7 +81,7 @@ import {
80
81
  requestDaemonHandoff,
81
82
  stopDaemonRunning,
82
83
  writeDaemonNeedsLogin
83
- } from "../chunk-XWFYR52C.js";
84
+ } from "../chunk-AHB2CUJZ.js";
84
85
  import {
85
86
  hookOwnerOf
86
87
  } from "../chunk-Q3KKA5IZ.js";
@@ -1482,7 +1483,6 @@ var REQUEST_TIMEOUT_MS = 1e4;
1482
1483
  var STOP_PROTOCOL_VERSION = 2;
1483
1484
  var MAX_SPAWNS_PER_WINDOW = 5;
1484
1485
  var SPAWN_WINDOW_MS = 6e4;
1485
- var VERSION_CHECK_INTERVAL_MS = 2e3;
1486
1486
  var CONTROL_PROBE_INTERVAL_MS = 6e4;
1487
1487
  var FLAG_SHAPED_PROMPT_MESSAGE = "The prompt looks like a command-line flag";
1488
1488
  var MAX_TRACKED_PROCESSES = 100;
@@ -2123,7 +2123,7 @@ var runSpawnDaemon = async () => {
2123
2123
  leaseRenewal = setInterval(() => daemonLease.renew(), DAEMON_LEASE_RENEW_INTERVAL_MS);
2124
2124
  versionWatch = setInterval(() => {
2125
2125
  if (daemonLease.shouldYield()) finish();
2126
- }, VERSION_CHECK_INTERVAL_MS);
2126
+ }, DAEMON_YIELD_CHECK_INTERVAL_MS);
2127
2127
  sessionReaper = setInterval(() => void reapSilentSessions(), SESSION_REAP_INTERVAL_MS);
2128
2128
  log(hasSpawnProvider(inventory.current.capabilities) ? `daemon online (pid ${process.pid}): this machine (${machineId}) can now be sent a new session from your phone. Ctrl-C to stop.` : `daemon online (pid ${process.pid}): no supported Claude, Codex, or Gemini CLI was found, so phone-start is unavailable. Ctrl-C to stop.`);
2129
2129
  timer = setTimeout(tick, 0);
@@ -5,10 +5,10 @@ import {
5
5
  loadSessionKey,
6
6
  registeredTranscriptEnabled,
7
7
  sessionKeyDirectory
8
- } from "../chunk-O2UMQKR4.js";
8
+ } from "../chunk-JNHDKTXI.js";
9
9
  import "../chunk-HXBQTPKC.js";
10
10
  import "../chunk-G66WIAST.js";
11
- import "../chunk-XWFYR52C.js";
11
+ import "../chunk-AHB2CUJZ.js";
12
12
  import "../chunk-Q3KKA5IZ.js";
13
13
  import "../chunk-7OSBFMRV.js";
14
14
  import "../chunk-LS3CQ536.js";
@@ -35,7 +35,7 @@ import {
35
35
  import {
36
36
  readMachineReadiness,
37
37
  readManagedControlEvidence
38
- } from "../chunk-P6H2DI6T.js";
38
+ } from "../chunk-GLFY52O2.js";
39
39
  import {
40
40
  assessCodexHookTrust,
41
41
  readCodexTrustForPusharyHooks
@@ -144,7 +144,7 @@ import {
144
144
  readDaemonNeedsLogin,
145
145
  readDaemonStatus,
146
146
  readInstalledDaemonService
147
- } from "../chunk-XWFYR52C.js";
147
+ } from "../chunk-AHB2CUJZ.js";
148
148
  import {
149
149
  GEMINI_HOOK_BINARY,
150
150
  claudeOtherHolders,
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
6
  import {
7
7
  announceSubscriptionRequired,
8
8
  isDeferAnswer
9
9
  } from "../chunk-OJPHNITI.js";
10
- import "../chunk-O2UMQKR4.js";
10
+ import "../chunk-JNHDKTXI.js";
11
11
  import "../chunk-HXBQTPKC.js";
12
12
  import "../chunk-G66WIAST.js";
13
13
  import "../chunk-ZAYXOSEP.js";
14
14
  import "../chunk-WLC3AX6F.js";
15
- import "../chunk-XWFYR52C.js";
15
+ import "../chunk-AHB2CUJZ.js";
16
16
  import "../chunk-Q3KKA5IZ.js";
17
17
  import "../chunk-7OSBFMRV.js";
18
18
  import "../chunk-LS3CQ536.js";
@@ -16,13 +16,13 @@ import {
16
16
  } from "../chunk-STGEWWFW.js";
17
17
  import {
18
18
  readHookInput
19
- } from "../chunk-TJ32WT6M.js";
19
+ } from "../chunk-IICWR257.js";
20
20
  import "../chunk-C2L477NM.js";
21
21
  import {
22
22
  announceSubscriptionRequired,
23
23
  isDeferAnswer
24
24
  } from "../chunk-OJPHNITI.js";
25
- import "../chunk-O2UMQKR4.js";
25
+ import "../chunk-JNHDKTXI.js";
26
26
  import "../chunk-HXBQTPKC.js";
27
27
  import "../chunk-G66WIAST.js";
28
28
  import "../chunk-ZAYXOSEP.js";
@@ -39,7 +39,7 @@ import {
39
39
  readLastUserPrompt,
40
40
  reportEvent
41
41
  } from "../chunk-WLC3AX6F.js";
42
- import "../chunk-XWFYR52C.js";
42
+ import "../chunk-AHB2CUJZ.js";
43
43
  import "../chunk-Q3KKA5IZ.js";
44
44
  import {
45
45
  deriveActionBody,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePreToolUse
4
- } from "../chunk-BHQYJFPY.js";
4
+ } from "../chunk-WP2AHPRO.js";
5
5
  import "../chunk-PO6ECYXG.js";
6
6
  import {
7
7
  exitOnHelpFlag
@@ -11,10 +11,10 @@ import "../chunk-2WGP6QE7.js";
11
11
  import "../chunk-7EYXAM63.js";
12
12
  import {
13
13
  readToolHookCall
14
- } from "../chunk-TJ32WT6M.js";
14
+ } from "../chunk-IICWR257.js";
15
15
  import "../chunk-C2L477NM.js";
16
16
  import "../chunk-OJPHNITI.js";
17
- import "../chunk-O2UMQKR4.js";
17
+ import "../chunk-JNHDKTXI.js";
18
18
  import "../chunk-HXBQTPKC.js";
19
19
  import "../chunk-G66WIAST.js";
20
20
  import {
@@ -23,7 +23,7 @@ import {
23
23
  profileFromArgv
24
24
  } from "../chunk-ZAYXOSEP.js";
25
25
  import "../chunk-WLC3AX6F.js";
26
- import "../chunk-XWFYR52C.js";
26
+ import "../chunk-AHB2CUJZ.js";
27
27
  import "../chunk-Q3KKA5IZ.js";
28
28
  import {
29
29
  canonicalGateInputs
@@ -25,7 +25,7 @@ import {
25
25
  import "../chunk-G66WIAST.js";
26
26
  import {
27
27
  recoverDaemonAfterLogin
28
- } from "../chunk-XWFYR52C.js";
28
+ } from "../chunk-AHB2CUJZ.js";
29
29
  import {
30
30
  parseFlags
31
31
  } from "../chunk-YPY4YCIZ.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
- import "../chunk-O2UMQKR4.js";
6
+ import "../chunk-JNHDKTXI.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  handleNotification
15
15
  } from "../chunk-WLC3AX6F.js";
16
- import "../chunk-XWFYR52C.js";
16
+ import "../chunk-AHB2CUJZ.js";
17
17
  import "../chunk-Q3KKA5IZ.js";
18
18
  import "../chunk-7OSBFMRV.js";
19
19
  import "../chunk-LS3CQ536.js";
@@ -13,13 +13,13 @@ import {
13
13
  } from "../chunk-7EYXAM63.js";
14
14
  import {
15
15
  readHookInput
16
- } from "../chunk-TJ32WT6M.js";
16
+ } from "../chunk-IICWR257.js";
17
17
  import "../chunk-C2L477NM.js";
18
18
  import {
19
19
  announceSubscriptionRequired,
20
20
  isDeferAnswer
21
21
  } from "../chunk-OJPHNITI.js";
22
- import "../chunk-O2UMQKR4.js";
22
+ import "../chunk-JNHDKTXI.js";
23
23
  import "../chunk-HXBQTPKC.js";
24
24
  import "../chunk-G66WIAST.js";
25
25
  import "../chunk-ZAYXOSEP.js";
@@ -33,7 +33,7 @@ import {
33
33
  policyRequestFor,
34
34
  readLastPrompt
35
35
  } from "../chunk-WLC3AX6F.js";
36
- import "../chunk-XWFYR52C.js";
36
+ import "../chunk-AHB2CUJZ.js";
37
37
  import "../chunk-Q3KKA5IZ.js";
38
38
  import {
39
39
  HOOK_FALLBACK_MAX,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionDenied
4
- } from "../chunk-BHQYJFPY.js";
4
+ } from "../chunk-WP2AHPRO.js";
5
5
  import "../chunk-PO6ECYXG.js";
6
6
  import {
7
7
  takeHookHoldBudget
@@ -11,15 +11,15 @@ import "../chunk-2WGP6QE7.js";
11
11
  import "../chunk-7EYXAM63.js";
12
12
  import {
13
13
  readHookInput
14
- } from "../chunk-TJ32WT6M.js";
14
+ } from "../chunk-IICWR257.js";
15
15
  import "../chunk-C2L477NM.js";
16
16
  import "../chunk-OJPHNITI.js";
17
- import "../chunk-O2UMQKR4.js";
17
+ import "../chunk-JNHDKTXI.js";
18
18
  import "../chunk-HXBQTPKC.js";
19
19
  import "../chunk-G66WIAST.js";
20
20
  import "../chunk-ZAYXOSEP.js";
21
21
  import "../chunk-WLC3AX6F.js";
22
- import "../chunk-XWFYR52C.js";
22
+ import "../chunk-AHB2CUJZ.js";
23
23
  import "../chunk-Q3KKA5IZ.js";
24
24
  import "../chunk-7OSBFMRV.js";
25
25
  import "../chunk-LS3CQ536.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionRequest
4
- } from "../chunk-BHQYJFPY.js";
4
+ } from "../chunk-WP2AHPRO.js";
5
5
  import "../chunk-PO6ECYXG.js";
6
6
  import {
7
7
  takeHookHoldBudget
@@ -11,10 +11,10 @@ import "../chunk-2WGP6QE7.js";
11
11
  import "../chunk-7EYXAM63.js";
12
12
  import {
13
13
  readToolHookInput
14
- } from "../chunk-TJ32WT6M.js";
14
+ } from "../chunk-IICWR257.js";
15
15
  import "../chunk-C2L477NM.js";
16
16
  import "../chunk-OJPHNITI.js";
17
- import "../chunk-O2UMQKR4.js";
17
+ import "../chunk-JNHDKTXI.js";
18
18
  import "../chunk-HXBQTPKC.js";
19
19
  import "../chunk-G66WIAST.js";
20
20
  import {
@@ -23,7 +23,7 @@ import {
23
23
  profileFromArgv
24
24
  } from "../chunk-ZAYXOSEP.js";
25
25
  import "../chunk-WLC3AX6F.js";
26
- import "../chunk-XWFYR52C.js";
26
+ import "../chunk-AHB2CUJZ.js";
27
27
  import "../chunk-Q3KKA5IZ.js";
28
28
  import {
29
29
  canonicalGateInputs
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
- import "../chunk-O2UMQKR4.js";
6
+ import "../chunk-JNHDKTXI.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
@@ -18,7 +18,7 @@ import {
18
18
  handlePostToolUse,
19
19
  isCompactionEvent
20
20
  } from "../chunk-WLC3AX6F.js";
21
- import "../chunk-XWFYR52C.js";
21
+ import "../chunk-AHB2CUJZ.js";
22
22
  import "../chunk-Q3KKA5IZ.js";
23
23
  import "../chunk-7OSBFMRV.js";
24
24
  import "../chunk-LS3CQ536.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
- import "../chunk-O2UMQKR4.js";
6
+ import "../chunk-JNHDKTXI.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
@@ -14,7 +14,7 @@ import {
14
14
  emitHookOutput,
15
15
  handleUserPrompt
16
16
  } from "../chunk-WLC3AX6F.js";
17
- import "../chunk-XWFYR52C.js";
17
+ import "../chunk-AHB2CUJZ.js";
18
18
  import "../chunk-Q3KKA5IZ.js";
19
19
  import "../chunk-7OSBFMRV.js";
20
20
  import "../chunk-LS3CQ536.js";
@@ -5,9 +5,9 @@ import {
5
5
  import "../chunk-ROVLRXBI.js";
6
6
  import {
7
7
  readHookInput
8
- } from "../chunk-TJ32WT6M.js";
8
+ } from "../chunk-IICWR257.js";
9
9
  import "../chunk-C2L477NM.js";
10
- import "../chunk-O2UMQKR4.js";
10
+ import "../chunk-JNHDKTXI.js";
11
11
  import "../chunk-HXBQTPKC.js";
12
12
  import "../chunk-G66WIAST.js";
13
13
  import {
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  handleSessionEnd
19
19
  } from "../chunk-WLC3AX6F.js";
20
- import "../chunk-XWFYR52C.js";
20
+ import "../chunk-AHB2CUJZ.js";
21
21
  import "../chunk-Q3KKA5IZ.js";
22
22
  import "../chunk-7OSBFMRV.js";
23
23
  import "../chunk-LS3CQ536.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reapplyClaudeForVersion
4
- } from "../chunk-WZWZ7UCN.js";
4
+ } from "../chunk-ZBKM5V6B.js";
5
5
  import "../chunk-27FILS44.js";
6
6
  import "../chunk-7LZQK7EB.js";
7
7
  import "../chunk-SNF3OTPB.js";
@@ -15,9 +15,9 @@ import {
15
15
  } from "../chunk-STGEWWFW.js";
16
16
  import {
17
17
  readHookInput
18
- } from "../chunk-TJ32WT6M.js";
18
+ } from "../chunk-IICWR257.js";
19
19
  import "../chunk-C2L477NM.js";
20
- import "../chunk-O2UMQKR4.js";
20
+ import "../chunk-JNHDKTXI.js";
21
21
  import "../chunk-HXBQTPKC.js";
22
22
  import "../chunk-G66WIAST.js";
23
23
  import {
@@ -28,7 +28,7 @@ import {
28
28
  CLAUDE_CODE_AGENT,
29
29
  handleSessionStart
30
30
  } from "../chunk-WLC3AX6F.js";
31
- import "../chunk-XWFYR52C.js";
31
+ import "../chunk-AHB2CUJZ.js";
32
32
  import "../chunk-Q3KKA5IZ.js";
33
33
  import "../chunk-7OSBFMRV.js";
34
34
  import "../chunk-LS3CQ536.js";
@@ -94,7 +94,7 @@ import {
94
94
  import {
95
95
  readManagedControlEvidence,
96
96
  waitForMachineReadiness
97
- } from "../chunk-P6H2DI6T.js";
97
+ } from "../chunk-GLFY52O2.js";
98
98
  import {
99
99
  ensureCodexTrustsPusharyHooks
100
100
  } from "../chunk-27FILS44.js";
@@ -105,7 +105,7 @@ import {
105
105
  } from "../chunk-J42EAEX3.js";
106
106
  import {
107
107
  codexEngineBehindLauncher
108
- } from "../chunk-ABYRJP4R.js";
108
+ } from "../chunk-SPEUUVMN.js";
109
109
  import "../chunk-XCEN33UP.js";
110
110
  import {
111
111
  CURSOR_PLUGIN_BACKUP_INFIX,
@@ -257,7 +257,7 @@ import {
257
257
  serviceNodeFor,
258
258
  stopDaemonService,
259
259
  waitForDaemonRemoteProof
260
- } from "../chunk-XWFYR52C.js";
260
+ } from "../chunk-AHB2CUJZ.js";
261
261
  import {
262
262
  GEMINI_HOOK_BINARY,
263
263
  GEMINI_HOOK_EVENTS,
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  describeLastSeen,
15
15
  listMachines
16
- } from "../chunk-P6H2DI6T.js";
16
+ } from "../chunk-GLFY52O2.js";
17
17
  import {
18
18
  SIGNED_OUT_ON_MAC_MESSAGE,
19
19
  activeKeyVerdictOf,
@@ -39,7 +39,7 @@ import "../chunk-P2WA3YY2.js";
39
39
  import "../chunk-ROVLRXBI.js";
40
40
  import "../chunk-ZAYXOSEP.js";
41
41
  import "../chunk-WLC3AX6F.js";
42
- import "../chunk-XWFYR52C.js";
42
+ import "../chunk-AHB2CUJZ.js";
43
43
  import "../chunk-Q3KKA5IZ.js";
44
44
  import "../chunk-7OSBFMRV.js";
45
45
  import "../chunk-LS3CQ536.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
- import "../chunk-O2UMQKR4.js";
6
+ import "../chunk-JNHDKTXI.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
@@ -16,7 +16,7 @@ import {
16
16
  handleSubagentStop,
17
17
  isSubagentStop
18
18
  } from "../chunk-WLC3AX6F.js";
19
- import "../chunk-XWFYR52C.js";
19
+ import "../chunk-AHB2CUJZ.js";
20
20
  import "../chunk-Q3KKA5IZ.js";
21
21
  import "../chunk-7OSBFMRV.js";
22
22
  import "../chunk-LS3CQ536.js";
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-TJ32WT6M.js";
4
+ } from "../chunk-IICWR257.js";
5
5
  import "../chunk-C2L477NM.js";
6
- import "../chunk-O2UMQKR4.js";
6
+ import "../chunk-JNHDKTXI.js";
7
7
  import "../chunk-HXBQTPKC.js";
8
8
  import "../chunk-G66WIAST.js";
9
9
  import {
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  handleStopFailure
15
15
  } from "../chunk-WLC3AX6F.js";
16
- import "../chunk-XWFYR52C.js";
16
+ import "../chunk-AHB2CUJZ.js";
17
17
  import "../chunk-Q3KKA5IZ.js";
18
18
  import "../chunk-7OSBFMRV.js";
19
19
  import "../chunk-LS3CQ536.js";
@@ -5,10 +5,10 @@ import {
5
5
  } from "../chunk-P3VVRBBI.js";
6
6
  import {
7
7
  registerTranscript
8
- } from "../chunk-O2UMQKR4.js";
8
+ } from "../chunk-JNHDKTXI.js";
9
9
  import "../chunk-HXBQTPKC.js";
10
10
  import "../chunk-G66WIAST.js";
11
- import "../chunk-XWFYR52C.js";
11
+ import "../chunk-AHB2CUJZ.js";
12
12
  import "../chunk-Q3KKA5IZ.js";
13
13
  import "../chunk-7OSBFMRV.js";
14
14
  import "../chunk-LS3CQ536.js";
@@ -21,10 +21,10 @@ import {
21
21
  snapshotRecipientPinFile,
22
22
  trustPhoneRecipient,
23
23
  verifyTrustedRecipients
24
- } from "../chunk-O2UMQKR4.js";
24
+ } from "../chunk-JNHDKTXI.js";
25
25
  import "../chunk-HXBQTPKC.js";
26
26
  import "../chunk-G66WIAST.js";
27
- import "../chunk-XWFYR52C.js";
27
+ import "../chunk-AHB2CUJZ.js";
28
28
  import "../chunk-Q3KKA5IZ.js";
29
29
  import "../chunk-7OSBFMRV.js";
30
30
  import "../chunk-LS3CQ536.js";
@@ -28,7 +28,7 @@ import {
28
28
  import {
29
29
  ensureCodexTrustAfterReapply,
30
30
  reapplyAllAgents
31
- } from "../chunk-WZWZ7UCN.js";
31
+ } from "../chunk-ZBKM5V6B.js";
32
32
  import {
33
33
  HERMES_RESTART_COMMAND,
34
34
  describeCodexTrustConfirmation
@@ -36,7 +36,7 @@ import {
36
36
  import "../chunk-2FOCCDVV.js";
37
37
  import {
38
38
  waitForMachineReadiness
39
- } from "../chunk-P6H2DI6T.js";
39
+ } from "../chunk-GLFY52O2.js";
40
40
  import "../chunk-27FILS44.js";
41
41
  import {
42
42
  readMacAppAgentKey
@@ -91,7 +91,7 @@ import {
91
91
  replaceDaemonService,
92
92
  stopDaemonService,
93
93
  waitForDaemonRemoteProof
94
- } from "../chunk-XWFYR52C.js";
94
+ } from "../chunk-AHB2CUJZ.js";
95
95
  import "../chunk-Q3KKA5IZ.js";
96
96
  import "../chunk-7OSBFMRV.js";
97
97
  import "../chunk-LS3CQ536.js";
@@ -9,13 +9,13 @@ import {
9
9
  installedCodexApp,
10
10
  readCodexAppRuntime,
11
11
  shellQuoted
12
- } from "./chunk-ABYRJP4R.js";
12
+ } from "./chunk-SPEUUVMN.js";
13
13
  import {
14
14
  writeHuman
15
15
  } from "./chunk-QCGNGEGE.js";
16
16
  import {
17
17
  xml
18
- } from "./chunk-XWFYR52C.js";
18
+ } from "./chunk-AHB2CUJZ.js";
19
19
  import {
20
20
  writeFileAtomic
21
21
  } from "./chunk-T5I4PKOQ.js";
@@ -41,7 +41,8 @@ import { createHash, randomUUID } from "crypto";
41
41
  import { homedir, userInfo } from "os";
42
42
  import { execFileSync } from "child_process";
43
43
  var daemonIsServing = (status) => status.kind === "running" || status.kind === "version-mismatch" || status.kind === "configuration-mismatch";
44
- var daemonNeedsHandoff = (status) => status.kind === "version-mismatch" || status.kind === "configuration-mismatch" || status.kind === "unresponsive" && status.processAlive === true;
44
+ var isAliveWithStaleLease = (status) => status.kind === "unresponsive" && status.processAlive === true;
45
+ var daemonNeedsHandoff = (status) => status.kind === "version-mismatch" || status.kind === "configuration-mismatch" || isAliveWithStaleLease(status);
45
46
  var daemonProcessIsThere = (status) => daemonIsServing(status) || daemonNeedsHandoff(status);
46
47
  var DAEMON_REMOTE_PROOF_MAX_AGE_MS = 18e4;
47
48
  var DAEMON_REMOTE_PROOF_CLOCK_SKEW_MS = 3e4;
@@ -109,6 +110,7 @@ var lockPath = (dir) => join(dir, "daemon.lock");
109
110
  var targetPath = (dir) => join(dir, "daemon-target.json");
110
111
  var DAEMON_LEASE_RENEW_INTERVAL_MS = 3e4;
111
112
  var LOCAL_LEASE_TIMEOUT_MS = DAEMON_LEASE_RENEW_INTERVAL_MS * 3;
113
+ var DAEMON_YIELD_CHECK_INTERVAL_MS = 2e3;
112
114
  var buildDaemonLaunch = (input) => input.siblingEntry ? { command: input.execPath, args: [input.siblingEntry], shell: false } : {
113
115
  command: input.daemonBinary,
114
116
  args: [],
@@ -1065,6 +1067,8 @@ var launchInstalledDaemon = (options) => {
1065
1067
  });
1066
1068
  spawnDetachedDaemon(plan, { spawnImpl: options.spawnImpl });
1067
1069
  };
1070
+ var HANDOFF_WAIT_FLOOR_MS = DAEMON_YIELD_CHECK_INTERVAL_MS * 2;
1071
+ var waitsTooLittleForAHandoff = (options) => (options.waitTimeoutMs ?? DAEMON_STARTUP_TIMEOUT_MS) < HANDOFF_WAIT_FLOOR_MS;
1068
1072
  var ensureDaemonRunning = async (options = {}) => {
1069
1073
  const initial = readDaemonStatus(options);
1070
1074
  if (!(options.configured ?? hasConfiguration)()) {
@@ -1075,6 +1079,9 @@ var ensureDaemonRunning = async (options = {}) => {
1075
1079
  if (loginBlock.kind === "blocked") {
1076
1080
  return { kind: "unavailable", status: initial, detail: describeDaemonLoginBlock(loginBlock.record) };
1077
1081
  }
1082
+ if (waitsTooLittleForAHandoff(options) && isAliveWithStaleLease(initial)) {
1083
+ return { kind: "unavailable", status: initial, detail: "daemon lease is stale; left to renew it" };
1084
+ }
1078
1085
  let handoffStatus;
1079
1086
  try {
1080
1087
  handoffStatus = await requestDaemonHandoff(initial, options);
@@ -1129,6 +1136,7 @@ export {
1129
1136
  daemonHasRemoteProof,
1130
1137
  daemonServiceManagerAvailable,
1131
1138
  DAEMON_LEASE_RENEW_INTERVAL_MS,
1139
+ DAEMON_YIELD_CHECK_INTERVAL_MS,
1132
1140
  xml,
1133
1141
  serviceNodeFor,
1134
1142
  parseDaemonAction,
@@ -10,7 +10,7 @@ import {
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-XWFYR52C.js";
13
+ } from "./chunk-AHB2CUJZ.js";
14
14
  import {
15
15
  getMachineId
16
16
  } from "./chunk-RBPPX663.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-C2L477NM.js";
5
5
  import {
6
6
  registerTranscript
7
- } from "./chunk-O2UMQKR4.js";
7
+ } from "./chunk-JNHDKTXI.js";
8
8
  import {
9
9
  namedEvent
10
10
  } from "./chunk-ZAYXOSEP.js";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-G66WIAST.js";
8
8
  import {
9
9
  ensureDaemonRunning
10
- } from "./chunk-XWFYR52C.js";
10
+ } from "./chunk-AHB2CUJZ.js";
11
11
  import {
12
12
  hookOwnerOf
13
13
  } from "./chunk-Q3KKA5IZ.js";
@@ -1085,7 +1085,7 @@ var codexDesktopCommand = async (args, entry, readAccount) => {
1085
1085
  return runCodexDesktopProxy(engine2, args.slice(3), readAccount, { watchesForCards: layoutIsKnown });
1086
1086
  }
1087
1087
  if (args[0] === APP_CARDS_FLAG) {
1088
- const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-HUU5TTBZ.js");
1088
+ const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-TGECJSVW.js");
1089
1089
  return codexAppCardsCommandOnThisMac(args.slice(1), entry, readAccount);
1090
1090
  }
1091
1091
  if (args.length > 2) throw new Error("Usage: pushary codex --desktop [path/to/Codex.app]");
@@ -18,7 +18,7 @@ import {
18
18
  import {
19
19
  isAdmitted,
20
20
  readAdmissionRules
21
- } from "./chunk-TJ32WT6M.js";
21
+ } from "./chunk-IICWR257.js";
22
22
  import {
23
23
  isDeferAnswer,
24
24
  oncePerSession
@@ -50,6 +50,9 @@ import {
50
50
  hasGeminiHooks,
51
51
  planHooks
52
52
  } from "./chunk-Q3KKA5IZ.js";
53
+ import {
54
+ KEY_FILE_MODE
55
+ } from "./chunk-SZV5SLSD.js";
53
56
  import {
54
57
  CLAUDE_HOOK_BINARY,
55
58
  CLAUDE_HOOK_EVENTS,
@@ -207,7 +210,7 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
207
210
  if (!claudeJsonWritable) throw new Error(".claude.json could not be parsed");
208
211
  const cj = claudeJson2;
209
212
  addClaudeMcpServer(cj, apiKey);
210
- writeJsonAtomic(claudeJsonPath, cj, PRIVATE_TO_OWNER);
213
+ writeJsonAtomic(claudeJsonPath, cj, KEY_FILE_MODE);
211
214
  mcp = true;
212
215
  } catch {
213
216
  failed = true;
@@ -347,7 +350,7 @@ var reapplyGeminiSettings = (apiKey, paths = {}) => {
347
350
  if (apiKey) {
348
351
  addGeminiMcpServer(settings, apiKey);
349
352
  }
350
- writeJson(settingsPath, settings);
353
+ writeJsonAtomic(settingsPath, settings, KEY_FILE_MODE);
351
354
  hooks = true;
352
355
  mcp = Boolean(apiKey);
353
356
  } catch {
@@ -363,7 +366,7 @@ var reapplyPluginMcp = (mcpPath, apiKey) => {
363
366
  if (!apiKey) return { configured: true, reapplied: false, hooks: false, mcp: false };
364
367
  try {
365
368
  addClaudeMcpServer(mcpConfig, apiKey);
366
- writeJson(mcpPath, mcpConfig);
369
+ writeJsonAtomic(mcpPath, mcpConfig, KEY_FILE_MODE);
367
370
  return { configured: true, reapplied: true, hooks: false, mcp: true };
368
371
  } catch {
369
372
  return { configured: true, reapplied: false, hooks: false, mcp: false, failed: true };
@@ -22,11 +22,11 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-E3LX6DEF.js";
26
- import "./chunk-ABYRJP4R.js";
25
+ } from "./chunk-6YSUPE5Z.js";
26
+ import "./chunk-SPEUUVMN.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-XWFYR52C.js";
29
+ import "./chunk-AHB2CUJZ.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
31
  import "./chunk-RBPPX663.js";
32
32
  import "./chunk-SZV5SLSD.js";
@@ -11,7 +11,7 @@ import {
11
11
  installedCodexApp,
12
12
  shellQuoted,
13
13
  writeDesktopProxy
14
- } from "./chunk-ABYRJP4R.js";
14
+ } from "./chunk-SPEUUVMN.js";
15
15
  import "./chunk-XCEN33UP.js";
16
16
  import {
17
17
  CODEX_APP_LAUNCH_VARIABLE
@@ -12,7 +12,7 @@ import {
12
12
  reapplyOpenCodePlugin,
13
13
  reapplyVsCodePlugin,
14
14
  repairCodexHolds
15
- } from "./chunk-WZWZ7UCN.js";
15
+ } from "./chunk-ZBKM5V6B.js";
16
16
  import "./chunk-27FILS44.js";
17
17
  import "./chunk-7LZQK7EB.js";
18
18
  import "./chunk-SNF3OTPB.js";
package/dist/src/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  handlePreToolUse
3
- } from "../chunk-BHQYJFPY.js";
3
+ } from "../chunk-WP2AHPRO.js";
4
4
  import "../chunk-PO6ECYXG.js";
5
5
  import "../chunk-X6WYICTL.js";
6
6
  import "../chunk-2WGP6QE7.js";
7
7
  import "../chunk-7EYXAM63.js";
8
- import "../chunk-TJ32WT6M.js";
8
+ import "../chunk-IICWR257.js";
9
9
  import "../chunk-C2L477NM.js";
10
10
  import "../chunk-OJPHNITI.js";
11
- import "../chunk-O2UMQKR4.js";
11
+ import "../chunk-JNHDKTXI.js";
12
12
  import "../chunk-HXBQTPKC.js";
13
13
  import "../chunk-G66WIAST.js";
14
14
  import "../chunk-ZAYXOSEP.js";
@@ -21,7 +21,7 @@ import {
21
21
  handleStop,
22
22
  reportEvent
23
23
  } from "../chunk-WLC3AX6F.js";
24
- import "../chunk-XWFYR52C.js";
24
+ import "../chunk-AHB2CUJZ.js";
25
25
  import "../chunk-Q3KKA5IZ.js";
26
26
  import "../chunk-7OSBFMRV.js";
27
27
  import "../chunk-LS3CQ536.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pushary",
3
- "version": "1.9.122",
3
+ "version": "1.9.123",
4
4
  "description": "Human-in-the-loop (HITL) for AI agents: ask a person for approvals or answers by push notification. One command connects Claude Code, Codex, Cursor, Gemini CLI and more.",
5
5
  "keywords": [
6
6
  "pushary",