pushary 1.9.126 → 1.9.128

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 (110) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{api-KE4OJ3NK.js → api-JRRKVMXE.js} +8 -8
  3. package/dist/bin/pushary-audit.js +2 -2
  4. package/dist/bin/pushary-bell-hook.js +17 -17
  5. package/dist/bin/pushary-bell.js +5 -5
  6. package/dist/bin/pushary-claude.js +18 -16
  7. package/dist/bin/pushary-clean.js +27 -27
  8. package/dist/bin/pushary-codex-bridge.js +13 -13
  9. package/dist/bin/pushary-codex-hook.js +23 -23
  10. package/dist/bin/pushary-codex-session.js +7 -7
  11. package/dist/bin/pushary-codex.js +9 -9
  12. package/dist/bin/pushary-connect.js +19 -19
  13. package/dist/bin/pushary-cowork.js +2 -2
  14. package/dist/bin/pushary-daemon.js +100 -38
  15. package/dist/bin/pushary-disconnect.js +19 -19
  16. package/dist/bin/pushary-display-hook.js +9 -9
  17. package/dist/bin/pushary-doctor.js +31 -31
  18. package/dist/bin/pushary-elicitation-hook.js +18 -18
  19. package/dist/bin/pushary-gemini-bridge.js +8 -8
  20. package/dist/bin/pushary-gemini-hook.js +21 -21
  21. package/dist/bin/pushary-hook.js +23 -23
  22. package/dist/bin/pushary-login.js +14 -14
  23. package/dist/bin/pushary-logout.js +17 -17
  24. package/dist/bin/pushary-mcp.js +9 -9
  25. package/dist/bin/pushary-mode.js +9 -9
  26. package/dist/bin/pushary-notification-hook.js +17 -17
  27. package/dist/bin/pushary-opencode-hook.js +20 -20
  28. package/dist/bin/pushary-permission-denied-hook.js +22 -22
  29. package/dist/bin/pushary-permission-hook.js +22 -22
  30. package/dist/bin/pushary-post-hook.js +17 -17
  31. package/dist/bin/pushary-prompt-hook.js +17 -17
  32. package/dist/bin/pushary-session-end-hook.js +17 -17
  33. package/dist/bin/pushary-session-start-hook.js +26 -26
  34. package/dist/bin/pushary-setup.js +37 -37
  35. package/dist/bin/pushary-stats.js +2 -2
  36. package/dist/bin/pushary-status.js +23 -23
  37. package/dist/bin/pushary-stop-hook.js +17 -17
  38. package/dist/bin/pushary-stopfailure-hook.js +17 -17
  39. package/dist/bin/pushary-suggestions.js +9 -9
  40. package/dist/bin/pushary-transcript-register.js +9 -9
  41. package/dist/bin/pushary-transcripts.js +17 -17
  42. package/dist/bin/pushary-upgrade.js +33 -33
  43. package/dist/bin/pushary-wait.js +9 -9
  44. package/dist/bin/pushary.js +5 -5
  45. package/dist/{chunk-UXGGVCH5.js → chunk-27GQFR5J.js} +5 -5
  46. package/dist/{chunk-MKUFVNZL.js → chunk-2FIS7KDD.js} +1 -1
  47. package/dist/{chunk-7LZQK7EB.js → chunk-2XTK53YK.js} +4 -4
  48. package/dist/{chunk-JW6JSBGS.js → chunk-44ONTVVI.js} +1 -1
  49. package/dist/{chunk-6IL3DQY6.js → chunk-4B3KU7O4.js} +9 -9
  50. package/dist/{chunk-MXUQJIQS.js → chunk-4CSFH736.js} +2 -2
  51. package/dist/{chunk-LRS26PXE.js → chunk-5QFC3NCU.js} +3 -3
  52. package/dist/{chunk-YT47T5TM.js → chunk-A5GLAQNK.js} +3 -3
  53. package/dist/{chunk-7M5M3CF5.js → chunk-ABMXITA2.js} +2 -2
  54. package/dist/{chunk-SO44USAF.js → chunk-ALRDG7SI.js} +2 -2
  55. package/dist/{chunk-27FILS44.js → chunk-BZUQXL43.js} +4 -4
  56. package/dist/{chunk-I2D23TBS.js → chunk-DPXOELLZ.js} +2 -2
  57. package/dist/{chunk-2M7ZV6NA.js → chunk-E27MPYOC.js} +2 -2
  58. package/dist/{chunk-FN77IVAI.js → chunk-E66FG2DC.js} +3 -3
  59. package/dist/{chunk-PO5Z73HT.js → chunk-FMUNFP4O.js} +1 -1
  60. package/dist/{chunk-YWA4Q42Z.js → chunk-FNLUSPM7.js} +1 -1
  61. package/dist/{chunk-DRYQ7RLF.js → chunk-FXLWWEVQ.js} +1 -1
  62. package/dist/{chunk-I365OPWV.js → chunk-GFCAZD2W.js} +5 -5
  63. package/dist/{chunk-6VMEUCKP.js → chunk-H6MBABPQ.js} +4 -4
  64. package/dist/{chunk-MBSM6GX5.js → chunk-HHI3MSJJ.js} +4 -4
  65. package/dist/{chunk-7ZTVBYPE.js → chunk-HVJIITL4.js} +3 -3
  66. package/dist/{chunk-2FOCCDVV.js → chunk-IRZNQAQO.js} +3 -3
  67. package/dist/{chunk-YANGE5FG.js → chunk-IYM3CXWZ.js} +6 -6
  68. package/dist/{chunk-B5OX2WCA.js → chunk-J35EMNLD.js} +1 -1
  69. package/dist/{chunk-S7QATB3I.js → chunk-K256TL7E.js} +4 -4
  70. package/dist/{chunk-BLBK7VV7.js → chunk-KEJFRU2Q.js} +3 -3
  71. package/dist/{chunk-WCPLMERI.js → chunk-LBROBXUC.js} +4 -4
  72. package/dist/{chunk-EUIDFLPM.js → chunk-LCFSGKQW.js} +2 -2
  73. package/dist/{chunk-4HDFEBPU.js → chunk-LG3B5BDP.js} +7 -7
  74. package/dist/{chunk-OPBPSPMU.js → chunk-LHDKVRIP.js} +3 -3
  75. package/dist/chunk-NKV5AALF.js +62 -0
  76. package/dist/{chunk-JLUMELYR.js → chunk-O55LZDLD.js} +1 -1
  77. package/dist/{chunk-SNF3OTPB.js → chunk-ODUAW2CX.js} +4 -4
  78. package/dist/{chunk-LAPXXS6K.js → chunk-OKCK7DNN.js} +2 -2
  79. package/dist/{chunk-6MFX5NIX.js → chunk-PWC4IK4J.js} +1 -1
  80. package/dist/{chunk-Q3KKA5IZ.js → chunk-PWTW7E5H.js} +2 -2
  81. package/dist/{chunk-MFVKY6NV.js → chunk-RK5VSHBW.js} +2 -2
  82. package/dist/{chunk-RBPPX663.js → chunk-TQBYF3W6.js} +1 -1
  83. package/dist/{chunk-P2WA3YY2.js → chunk-VIUANC2F.js} +1 -1
  84. package/dist/{chunk-STGEWWFW.js → chunk-VKIQR33O.js} +2 -2
  85. package/dist/{chunk-NZEFACKS.js → chunk-VQJT6X3B.js} +2 -2
  86. package/dist/{chunk-DK6R5IVR.js → chunk-VRUVMUHN.js} +1 -1
  87. package/dist/{chunk-ZVU6WMMU.js → chunk-WIIMW5YO.js} +31 -3
  88. package/dist/{chunk-KQKHSJOM.js → chunk-WJ4W33WN.js} +4 -4
  89. package/dist/{chunk-QPS5STKF.js → chunk-WVFKRWPE.js} +3 -3
  90. package/dist/{chunk-YZ74AFIU.js → chunk-X4MUM7JK.js} +3 -3
  91. package/dist/{chunk-EBJ5QUVE.js → chunk-XNKE67NJ.js} +1 -1
  92. package/dist/{chunk-RF66KSSY.js → chunk-XOYZK3XP.js} +2 -2
  93. package/dist/{chunk-XUN23MM6.js → chunk-XRJU7CZ2.js} +2 -2
  94. package/dist/{chunk-IA3E675D.js → chunk-XSG42MMY.js} +1 -1
  95. package/dist/{chunk-PO6ECYXG.js → chunk-YZHVM5LY.js} +1 -1
  96. package/dist/{chunk-C2L477NM.js → chunk-Z7RGHFAW.js} +3 -3
  97. package/dist/{chunk-5WF4NBHQ.js → chunk-ZLWWDEQB.js} +9 -9
  98. package/dist/{codex-app-cards-switch-4BHVMMAM.js → codex-app-cards-switch-SC3YKXBG.js} +8 -8
  99. package/dist/{codex-desktop-launch-45I4Y5PM.js → codex-desktop-launch-2ODSLA7V.js} +1 -1
  100. package/dist/{codex-session-launch-DANHY5JS.js → codex-session-launch-AD3AVJC4.js} +13 -13
  101. package/dist/{global-upgrade-SIAPPAFR.js → global-upgrade-LBL5RJV5.js} +8 -8
  102. package/dist/{identity-DCDWOISV.js → identity-RCT5QKWZ.js} +4 -4
  103. package/dist/{live-capabilities-VB7PM2DJ.js → live-capabilities-WZHU2A5C.js} +4 -4
  104. package/dist/{paths-346XNBFK.js → paths-JK4EFG5J.js} +3 -3
  105. package/dist/{reapply-6AMFTGQY.js → reapply-4V5AZJFZ.js} +21 -21
  106. package/dist/src/index.js +22 -22
  107. package/dist/{upgrade-lock-YT4O5QW6.js → upgrade-lock-MU5RYC57.js} +4 -4
  108. package/dist/{usage-MUXR5SZ7.js → usage-UO3T2VK7.js} +2 -2
  109. package/package.json +1 -1
  110. package/dist/chunk-XHKBHWLX.js +0 -14
@@ -1,54 +1,54 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  printKeyCheck
4
- } from "../chunk-NZEFACKS.js";
4
+ } from "../chunk-VQJT6X3B.js";
5
5
  import {
6
6
  connectDevice,
7
7
  connectExistingApp,
8
8
  printConnectInstructions
9
- } from "../chunk-YWA4Q42Z.js";
9
+ } from "../chunk-FNLUSPM7.js";
10
10
  import "../chunk-3EGEA4KH.js";
11
- import "../chunk-2FOCCDVV.js";
11
+ import "../chunk-IRZNQAQO.js";
12
12
  import "../chunk-NLEHRQHL.js";
13
13
  import {
14
14
  CONNECTED_THROUGH_MAC_APP,
15
15
  PAIR_FROM_MAC_APP,
16
16
  readMacAppConnection
17
- } from "../chunk-LAPXXS6K.js";
18
- import "../chunk-DK6R5IVR.js";
17
+ } from "../chunk-OKCK7DNN.js";
18
+ import "../chunk-VRUVMUHN.js";
19
19
  import "../chunk-QCGNGEGE.js";
20
- import "../chunk-YZ74AFIU.js";
20
+ import "../chunk-X4MUM7JK.js";
21
21
  import {
22
22
  createIo
23
23
  } from "../chunk-FO3MDD26.js";
24
24
  import {
25
25
  exitOnHelpFlag
26
- } from "../chunk-IA3E675D.js";
27
- import "../chunk-BLBK7VV7.js";
28
- import "../chunk-I365OPWV.js";
29
- import "../chunk-Q3KKA5IZ.js";
26
+ } from "../chunk-XSG42MMY.js";
27
+ import "../chunk-KEJFRU2Q.js";
28
+ import "../chunk-GFCAZD2W.js";
29
+ import "../chunk-PWTW7E5H.js";
30
30
  import "../chunk-7OSBFMRV.js";
31
31
  import "../chunk-LS3CQ536.js";
32
- import "../chunk-DRYQ7RLF.js";
32
+ import "../chunk-FXLWWEVQ.js";
33
33
  import {
34
34
  parseFlags
35
35
  } from "../chunk-YPY4YCIZ.js";
36
36
  import "../chunk-2QWQCU7L.js";
37
- import "../chunk-7ZTVBYPE.js";
37
+ import "../chunk-HVJIITL4.js";
38
38
  import "../chunk-POFBE6ZY.js";
39
- import "../chunk-SO44USAF.js";
39
+ import "../chunk-ALRDG7SI.js";
40
40
  import {
41
41
  checkApiKey
42
- } from "../chunk-B5OX2WCA.js";
43
- import "../chunk-2M7ZV6NA.js";
42
+ } from "../chunk-J35EMNLD.js";
43
+ import "../chunk-E27MPYOC.js";
44
44
  import "../chunk-E5LU5MJ2.js";
45
- import "../chunk-RBPPX663.js";
45
+ import "../chunk-TQBYF3W6.js";
46
46
  import {
47
47
  readKeySource
48
48
  } from "../chunk-SZV5SLSD.js";
49
49
  import "../chunk-NCHNITQW.js";
50
- import "../chunk-EUIDFLPM.js";
51
- import "../chunk-KQKHSJOM.js";
50
+ import "../chunk-LCFSGKQW.js";
51
+ import "../chunk-WJ4W33WN.js";
52
52
  import "../chunk-2M7FELUY.js";
53
53
  import {
54
54
  UsageError
@@ -60,7 +60,7 @@ import {
60
60
  import {
61
61
  isInvocationOf
62
62
  } from "../chunk-5S32WI3B.js";
63
- import "../chunk-ZVU6WMMU.js";
63
+ import "../chunk-WIIMW5YO.js";
64
64
  import "../chunk-HI5YJFKW.js";
65
65
  import "../chunk-MLKGABMK.js";
66
66
 
@@ -9,7 +9,7 @@ import {
9
9
  } from "../chunk-PUZZELE6.js";
10
10
  import {
11
11
  exitOnHelpFlag
12
- } from "../chunk-IA3E675D.js";
12
+ } from "../chunk-XSG42MMY.js";
13
13
  import "../chunk-LS3CQ536.js";
14
14
  import "../chunk-YPY4YCIZ.js";
15
15
  import {
@@ -19,7 +19,7 @@ import {
19
19
  EXIT
20
20
  } from "../chunk-BG4HHB7E.js";
21
21
  import "../chunk-5S32WI3B.js";
22
- import "../chunk-ZVU6WMMU.js";
22
+ import "../chunk-WIIMW5YO.js";
23
23
  import {
24
24
  CLAUDE_CONNECTOR_GUIDE
25
25
  } from "../chunk-HI5YJFKW.js";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  readHookWiring,
4
4
  readHookWiringSafely
5
- } from "../chunk-4HDFEBPU.js";
5
+ } from "../chunk-LG3B5BDP.js";
6
6
  import {
7
7
  inspectConfiguredManagedProviders
8
- } from "../chunk-5WF4NBHQ.js";
9
- import "../chunk-PO6ECYXG.js";
10
- import "../chunk-EBJ5QUVE.js";
8
+ } from "../chunk-ZLWWDEQB.js";
9
+ import "../chunk-YZHVM5LY.js";
10
+ import "../chunk-XNKE67NJ.js";
11
11
  import {
12
12
  HEARTBEAT_INTERVAL_MS,
13
13
  sendHeartbeat
14
- } from "../chunk-WCPLMERI.js";
15
- import "../chunk-27FILS44.js";
14
+ } from "../chunk-LBROBXUC.js";
15
+ import "../chunk-BZUQXL43.js";
16
16
  import {
17
17
  readSignedOutDiagnosis
18
18
  } from "../chunk-NLEHRQHL.js";
@@ -20,17 +20,17 @@ import {
20
20
  HERMES_INSTALL_MARKER_FILE,
21
21
  defaultHermesHome,
22
22
  parseHermesInstallMarker
23
- } from "../chunk-7LZQK7EB.js";
23
+ } from "../chunk-2XTK53YK.js";
24
24
  import {
25
25
  writeHuman
26
26
  } from "../chunk-QCGNGEGE.js";
27
- import "../chunk-SNF3OTPB.js";
28
- import "../chunk-MKUFVNZL.js";
29
- import "../chunk-PO5Z73HT.js";
30
- import "../chunk-YZ74AFIU.js";
27
+ import "../chunk-ODUAW2CX.js";
28
+ import "../chunk-2FIS7KDD.js";
29
+ import "../chunk-FMUNFP4O.js";
30
+ import "../chunk-X4MUM7JK.js";
31
31
  import {
32
32
  exitOnHelpFlag
33
- } from "../chunk-IA3E675D.js";
33
+ } from "../chunk-XSG42MMY.js";
34
34
  import {
35
35
  codexBinaryIsBroken,
36
36
  detectProviderLiveCapabilities,
@@ -39,8 +39,8 @@ import {
39
39
  launchableProviders,
40
40
  resolveControlPolicy,
41
41
  trackProviderInventory
42
- } from "../chunk-MXUQJIQS.js";
43
- import "../chunk-P2WA3YY2.js";
42
+ } from "../chunk-4CSFH736.js";
43
+ import "../chunk-VIUANC2F.js";
44
44
  import {
45
45
  SESSION_REAP_SILENCE_MS,
46
46
  describeIdleWindow,
@@ -48,22 +48,22 @@ import {
48
48
  listProcessProofs,
49
49
  ownsLiveProcess,
50
50
  silentSpawnedProofs
51
- } from "../chunk-JLUMELYR.js";
51
+ } from "../chunk-O55LZDLD.js";
52
52
  import "../chunk-ROVLRXBI.js";
53
53
  import {
54
54
  readLocalAutoUpdateReport
55
- } from "../chunk-STGEWWFW.js";
56
- import "../chunk-C2L477NM.js";
55
+ } from "../chunk-VKIQR33O.js";
56
+ import "../chunk-Z7RGHFAW.js";
57
57
  import {
58
58
  startRegisteredTranscripts
59
- } from "../chunk-QPS5STKF.js";
59
+ } from "../chunk-WVFKRWPE.js";
60
60
  import "../chunk-HXBQTPKC.js";
61
61
  import "../chunk-G66WIAST.js";
62
- import "../chunk-BLBK7VV7.js";
62
+ import "../chunk-KEJFRU2Q.js";
63
63
  import {
64
64
  pendingCommandReceipts,
65
65
  removePendingCommand
66
- } from "../chunk-I365OPWV.js";
66
+ } from "../chunk-GFCAZD2W.js";
67
67
  import {
68
68
  DAEMON_LEASE_RENEW_INTERVAL_MS,
69
69
  DAEMON_YIELD_CHECK_INTERVAL_MS,
@@ -81,30 +81,30 @@ import {
81
81
  requestDaemonHandoff,
82
82
  stopDaemonRunning,
83
83
  writeDaemonNeedsLogin
84
- } from "../chunk-UXGGVCH5.js";
84
+ } from "../chunk-27GQFR5J.js";
85
85
  import {
86
86
  hookOwnerOf
87
- } from "../chunk-Q3KKA5IZ.js";
87
+ } from "../chunk-PWTW7E5H.js";
88
88
  import "../chunk-7OSBFMRV.js";
89
89
  import "../chunk-LS3CQ536.js";
90
- import "../chunk-DRYQ7RLF.js";
90
+ import "../chunk-FXLWWEVQ.js";
91
91
  import "../chunk-YPY4YCIZ.js";
92
92
  import "../chunk-5MITA7MU.js";
93
93
  import "../chunk-XMSDA5WA.js";
94
94
  import "../chunk-AH4NLZTT.js";
95
95
  import "../chunk-2QWQCU7L.js";
96
- import "../chunk-7ZTVBYPE.js";
96
+ import "../chunk-HVJIITL4.js";
97
97
  import "../chunk-POFBE6ZY.js";
98
- import "../chunk-SO44USAF.js";
99
- import "../chunk-B5OX2WCA.js";
100
- import "../chunk-2M7ZV6NA.js";
98
+ import "../chunk-ALRDG7SI.js";
99
+ import "../chunk-J35EMNLD.js";
100
+ import "../chunk-E27MPYOC.js";
101
101
  import {
102
102
  spawnClaude
103
- } from "../chunk-XHKBHWLX.js";
103
+ } from "../chunk-NKV5AALF.js";
104
104
  import "../chunk-E5LU5MJ2.js";
105
105
  import {
106
106
  getMachineId
107
- } from "../chunk-RBPPX663.js";
107
+ } from "../chunk-TQBYF3W6.js";
108
108
  import {
109
109
  readControlMode
110
110
  } from "../chunk-SZV5SLSD.js";
@@ -112,10 +112,10 @@ import "../chunk-NCHNITQW.js";
112
112
  import {
113
113
  claudeConfigDir,
114
114
  codexHome
115
- } from "../chunk-EUIDFLPM.js";
115
+ } from "../chunk-LCFSGKQW.js";
116
116
  import {
117
117
  resolveBinary
118
- } from "../chunk-KQKHSJOM.js";
118
+ } from "../chunk-WJ4W33WN.js";
119
119
  import {
120
120
  getApiKey,
121
121
  getBaseUrl
@@ -128,7 +128,7 @@ import {
128
128
  EXIT
129
129
  } from "../chunk-BG4HHB7E.js";
130
130
  import "../chunk-5S32WI3B.js";
131
- import "../chunk-ZVU6WMMU.js";
131
+ import "../chunk-WIIMW5YO.js";
132
132
  import {
133
133
  CLAUDE_INBOX,
134
134
  CLAUDE_INBOX_MAX_SESSIONS,
@@ -179,7 +179,8 @@ import {
179
179
  openSync,
180
180
  writeSync,
181
181
  fsyncSync,
182
- closeSync
182
+ closeSync,
183
+ unlinkSync
183
184
  } from "fs";
184
185
  import { dirname, join, resolve } from "path";
185
186
  var privateNode = (path, kind) => {
@@ -311,13 +312,21 @@ var controlRequest = (path, request, timeout) => new Promise((resolve3, reject)
311
312
  s.destroy();
312
313
  });
313
314
  });
315
+ var JOURNAL_FILE = /^[0-9a-f]{64}\.json$/;
316
+ var outlivedTheServersCommand = (age, nowMs, monotonicNowMs) => nowMs - age.submittedAtMs >= COMMAND_RECOVERY.receiptRetentionMs && monotonicNowMs - age.firstSeenMonotonicMs >= COMMAND_RECOVERY.retrySendWindowMs;
317
+ var isMissingFile = (error) => error instanceof Error && "code" in error && error.code === "ENOENT";
314
318
  var NativeHostClient = class {
315
319
  constructor(options) {
316
320
  this.options = options;
317
321
  this.timeout = options.timeoutMs ?? NATIVE_INPUT.rpcTimeoutMs;
322
+ this.monotonicNow = options.monotonicNow ?? (() => performance.now());
318
323
  }
319
324
  timeout;
320
325
  lastDiscoveryFailure = null;
326
+ journalsOfOthers = /* @__PURE__ */ new Set();
327
+ settledJournals = /* @__PURE__ */ new Map();
328
+ firstSeenMonotonicMs = /* @__PURE__ */ new Map();
329
+ monotonicNow;
321
330
  async connect() {
322
331
  if ((this.options.platform ?? process.platform) !== "darwin")
323
332
  throw new Error("native host platform unqualified");
@@ -557,21 +566,74 @@ var NativeHostClient = class {
557
566
  ...hermesCursor ? { hermesCursor } : {}
558
567
  };
559
568
  } catch (e) {
560
- if (e instanceof Error && "code" in e && e.code === "ENOENT") return null;
569
+ if (isMissingFile(e)) return null;
561
570
  throw e;
562
571
  }
563
572
  }
573
+ ownsJournal(raw) {
574
+ return raw.agent === this.options.agent && raw.settlementScope === this.options.settlementScope;
575
+ }
576
+ mayRemoveOwnJournals() {
577
+ return this.options.settlementScope !== void 0;
578
+ }
579
+ removeJournal(file) {
580
+ this.settledJournals.delete(file);
581
+ this.firstSeenMonotonicMs.delete(file);
582
+ try {
583
+ unlinkSync(join(this.options.journalDir, file));
584
+ } catch (error) {
585
+ if (!isMissingFile(error)) this.options.report?.(`could not remove a native-input journal: ${error instanceof Error ? error.message : String(error)}`);
586
+ }
587
+ }
588
+ observeJournalAge(file, submittedAtMs, monotonicNowMs) {
589
+ const firstSeen = this.firstSeenMonotonicMs.get(file) ?? monotonicNowMs;
590
+ this.firstSeenMonotonicMs.set(file, firstSeen);
591
+ return { submittedAtMs, firstSeenMonotonicMs: firstSeen };
592
+ }
593
+ removeSettledJournalsPastRetention(nowMs, monotonicNowMs) {
594
+ if (!this.mayRemoveOwnJournals()) return;
595
+ for (const [file, age] of [...this.settledJournals]) {
596
+ if (outlivedTheServersCommand(age, nowMs, monotonicNowMs)) this.removeJournal(file);
597
+ }
598
+ }
599
+ forgetJournalsNoLongerListed(listed) {
600
+ for (const file of [...this.journalsOfOthers]) if (!listed.has(file)) this.journalsOfOthers.delete(file);
601
+ for (const file of [...this.settledJournals.keys()]) if (!listed.has(file)) this.settledJournals.delete(file);
602
+ for (const file of [...this.firstSeenMonotonicMs.keys()]) if (!listed.has(file)) this.firstSeenMonotonicMs.delete(file);
603
+ }
604
+ needsReading(file) {
605
+ return JOURNAL_FILE.test(file) && !this.journalsOfOthers.has(file) && !this.settledJournals.has(file);
606
+ }
564
607
  pendingSettlements() {
608
+ const nowMs = Date.now();
609
+ const monotonicNowMs = this.monotonicNow();
610
+ this.removeSettledJournalsPastRetention(nowMs, monotonicNowMs);
565
611
  try {
566
- return readdirSync(this.options.journalDir).filter((file) => /^[0-9a-f]{64}\.json$/.test(file)).flatMap((file) => {
612
+ const listed = readdirSync(this.options.journalDir);
613
+ this.forgetJournalsNoLongerListed(new Set(listed));
614
+ return listed.filter((file) => this.needsReading(file)).flatMap((file) => {
567
615
  try {
568
616
  const raw = JSON.parse(
569
617
  readFileSync(join(this.options.journalDir, file), "utf8")
570
618
  );
571
619
  if (!nativeRecord(raw) || !nativeIdentifier(raw.sessionId) || !nativeIdentifier(raw.commandId))
572
620
  return [];
621
+ if (!this.ownsJournal(raw)) {
622
+ this.journalsOfOthers.add(file);
623
+ return [];
624
+ }
573
625
  const intent = this.readIntent(raw.sessionId, raw.commandId);
574
- return intent?.accepted && !intent.settled && intent.settlementScope === this.options.settlementScope ? [{ sessionId: intent.sessionId, commandId: intent.commandId }] : [];
626
+ if (!intent) return [];
627
+ const age = this.observeJournalAge(file, intent.submittedAtMs, monotonicNowMs);
628
+ if (this.mayRemoveOwnJournals() && outlivedTheServersCommand(age, nowMs, monotonicNowMs)) {
629
+ this.removeJournal(file);
630
+ return [];
631
+ }
632
+ if (intent.settled) {
633
+ this.settledJournals.set(file, age);
634
+ return [];
635
+ }
636
+ return intent.accepted ? [{ sessionId: intent.sessionId, commandId: intent.commandId }] : [];
575
637
  } catch {
576
638
  return [];
577
639
  }
@@ -971,7 +1033,7 @@ import {
971
1033
  readSync,
972
1034
  statSync,
973
1035
  writeFileSync,
974
- unlinkSync
1036
+ unlinkSync as unlinkSync2
975
1037
  } from "fs";
976
1038
  import { dirname as dirname2, isAbsolute, join as join3, resolve as resolve2 } from "path";
977
1039
  import { Socket } from "net";
@@ -1185,7 +1247,7 @@ var ClaudeInboxClient = class {
1185
1247
  return { file, attempt };
1186
1248
  });
1187
1249
  for (const name of files.slice(CLAUDE_WAKE.retainedAttempts))
1188
- unlinkSync(join3(directory, name));
1250
+ unlinkSync2(join3(directory, name));
1189
1251
  return attempts;
1190
1252
  }
1191
1253
  async wake(sessionId, signal) {
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  declinedAgentsFile,
4
4
  recordDeclinedAgent
5
- } from "../chunk-EBJ5QUVE.js";
5
+ } from "../chunk-XNKE67NJ.js";
6
6
  import {
7
7
  isCursorPluginLeftover,
8
8
  isPusharyCursorPluginManifest,
9
9
  releaseSoleGate
10
- } from "../chunk-OPBPSPMU.js";
10
+ } from "../chunk-LHDKVRIP.js";
11
11
  import {
12
12
  planFxRemoval,
13
13
  removeClineServer
14
- } from "../chunk-SNF3OTPB.js";
15
- import "../chunk-MKUFVNZL.js";
16
- import "../chunk-PO5Z73HT.js";
14
+ } from "../chunk-ODUAW2CX.js";
15
+ import "../chunk-2FIS7KDD.js";
16
+ import "../chunk-FMUNFP4O.js";
17
17
  import {
18
18
  OPENCODE_PLUGIN_SIBLING,
19
19
  OPENCODE_PLUGIN_SIBLING_CONTENTS,
@@ -25,10 +25,10 @@ import {
25
25
  openCodePluginDir,
26
26
  openCodePluginFile,
27
27
  removeOpenCodeMcpServer
28
- } from "../chunk-YZ74AFIU.js";
28
+ } from "../chunk-X4MUM7JK.js";
29
29
  import {
30
30
  exitOnHelpFlag
31
- } from "../chunk-IA3E675D.js";
31
+ } from "../chunk-XSG42MMY.js";
32
32
  import {
33
33
  compatibleConfigFile,
34
34
  compatibleDocuments,
@@ -38,25 +38,25 @@ import {
38
38
  isEmptiedPusharyOwnedDocument,
39
39
  removeCompatibleHooks,
40
40
  removeCompatibleMcpServer
41
- } from "../chunk-BLBK7VV7.js";
42
- import "../chunk-I365OPWV.js";
41
+ } from "../chunk-KEJFRU2Q.js";
42
+ import "../chunk-GFCAZD2W.js";
43
43
  import {
44
44
  removeGeminiSettings
45
- } from "../chunk-Q3KKA5IZ.js";
45
+ } from "../chunk-PWTW7E5H.js";
46
46
  import "../chunk-7OSBFMRV.js";
47
47
  import "../chunk-LS3CQ536.js";
48
- import "../chunk-DRYQ7RLF.js";
48
+ import "../chunk-FXLWWEVQ.js";
49
49
  import {
50
50
  parseFlags
51
51
  } from "../chunk-YPY4YCIZ.js";
52
52
  import "../chunk-2QWQCU7L.js";
53
- import "../chunk-7ZTVBYPE.js";
53
+ import "../chunk-HVJIITL4.js";
54
54
  import "../chunk-POFBE6ZY.js";
55
- import "../chunk-SO44USAF.js";
56
- import "../chunk-B5OX2WCA.js";
57
- import "../chunk-2M7ZV6NA.js";
55
+ import "../chunk-ALRDG7SI.js";
56
+ import "../chunk-J35EMNLD.js";
57
+ import "../chunk-E27MPYOC.js";
58
58
  import "../chunk-E5LU5MJ2.js";
59
- import "../chunk-RBPPX663.js";
59
+ import "../chunk-TQBYF3W6.js";
60
60
  import "../chunk-SZV5SLSD.js";
61
61
  import "../chunk-NCHNITQW.js";
62
62
  import {
@@ -88,8 +88,8 @@ import {
88
88
  removePusharySettings,
89
89
  removePusharyToolPermissions,
90
90
  restoreClaudeMcpServer
91
- } from "../chunk-EUIDFLPM.js";
92
- import "../chunk-KQKHSJOM.js";
91
+ } from "../chunk-LCFSGKQW.js";
92
+ import "../chunk-WJ4W33WN.js";
93
93
  import "../chunk-2M7FELUY.js";
94
94
  import {
95
95
  UsageError
@@ -103,7 +103,7 @@ import {
103
103
  import {
104
104
  isInvocationOf
105
105
  } from "../chunk-5S32WI3B.js";
106
- import "../chunk-ZVU6WMMU.js";
106
+ import "../chunk-WIIMW5YO.js";
107
107
  import {
108
108
  DISCONNECTABLE_AGENTS,
109
109
  DISCONNECT_AGENT_IDS,
@@ -5,25 +5,25 @@ import {
5
5
  loadSessionKey,
6
6
  registeredTranscriptEnabled,
7
7
  sessionKeyDirectory
8
- } from "../chunk-QPS5STKF.js";
8
+ } from "../chunk-WVFKRWPE.js";
9
9
  import "../chunk-HXBQTPKC.js";
10
10
  import "../chunk-G66WIAST.js";
11
- import "../chunk-UXGGVCH5.js";
12
- import "../chunk-Q3KKA5IZ.js";
11
+ import "../chunk-27GQFR5J.js";
12
+ import "../chunk-PWTW7E5H.js";
13
13
  import "../chunk-7OSBFMRV.js";
14
14
  import "../chunk-LS3CQ536.js";
15
- import "../chunk-DRYQ7RLF.js";
15
+ import "../chunk-FXLWWEVQ.js";
16
16
  import "../chunk-YPY4YCIZ.js";
17
17
  import "../chunk-5MITA7MU.js";
18
18
  import "../chunk-XMSDA5WA.js";
19
19
  import "../chunk-AH4NLZTT.js";
20
- import "../chunk-XHKBHWLX.js";
20
+ import "../chunk-NKV5AALF.js";
21
21
  import "../chunk-E5LU5MJ2.js";
22
- import "../chunk-RBPPX663.js";
22
+ import "../chunk-TQBYF3W6.js";
23
23
  import "../chunk-SZV5SLSD.js";
24
24
  import "../chunk-NCHNITQW.js";
25
- import "../chunk-EUIDFLPM.js";
26
- import "../chunk-KQKHSJOM.js";
25
+ import "../chunk-LCFSGKQW.js";
26
+ import "../chunk-WJ4W33WN.js";
27
27
  import {
28
28
  getApiKey
29
29
  } from "../chunk-2M7FELUY.js";
@@ -31,7 +31,7 @@ import "../chunk-YU2EUD7O.js";
31
31
  import "../chunk-T5I4PKOQ.js";
32
32
  import "../chunk-BG4HHB7E.js";
33
33
  import "../chunk-5S32WI3B.js";
34
- import "../chunk-ZVU6WMMU.js";
34
+ import "../chunk-WIIMW5YO.js";
35
35
  import "../chunk-HI5YJFKW.js";
36
36
  import "../chunk-MLKGABMK.js";
37
37