pushary 1.9.62 → 1.9.63

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 (123) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +1 -1
  3. package/dist/{api-7HLZRIUV.js → api-UHUUAONF.js} +10 -10
  4. package/dist/bin/pushary-bell-hook.js +27 -27
  5. package/dist/bin/pushary-bell.js +12 -12
  6. package/dist/bin/pushary-claude.js +28 -28
  7. package/dist/bin/pushary-clean.js +35 -34
  8. package/dist/bin/pushary-codex-bridge.js +21 -21
  9. package/dist/bin/pushary-codex-hook.js +35 -35
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +14 -14
  12. package/dist/bin/pushary-connect.js +27 -27
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +39 -38
  15. package/dist/bin/pushary-disconnect.js +30 -29
  16. package/dist/bin/pushary-doctor.js +45 -43
  17. package/dist/bin/pushary-elicitation-hook.js +28 -28
  18. package/dist/bin/pushary-gemini-bridge.js +15 -15
  19. package/dist/bin/pushary-gemini-hook.js +30 -30
  20. package/dist/bin/pushary-hook.js +31 -31
  21. package/dist/bin/pushary-login.js +27 -15
  22. package/dist/bin/pushary-logout.js +28 -28
  23. package/dist/bin/pushary-mcp.js +11 -11
  24. package/dist/bin/pushary-mode.js +14 -14
  25. package/dist/bin/pushary-notification-hook.js +26 -26
  26. package/dist/bin/pushary-opencode-hook.js +29 -29
  27. package/dist/bin/pushary-permission-denied-hook.js +31 -31
  28. package/dist/bin/pushary-permission-hook.js +30 -30
  29. package/dist/bin/pushary-post-hook.js +26 -26
  30. package/dist/bin/pushary-prompt-hook.js +26 -26
  31. package/dist/bin/pushary-session-end-hook.js +26 -26
  32. package/dist/bin/pushary-session-start-hook.js +34 -33
  33. package/dist/bin/pushary-setup.js +114 -4204
  34. package/dist/bin/pushary-stats.js +5 -5
  35. package/dist/bin/pushary-status.js +32 -32
  36. package/dist/bin/pushary-stop-hook.js +26 -26
  37. package/dist/bin/pushary-stopfailure-hook.js +26 -26
  38. package/dist/bin/pushary-suggestions.js +14 -14
  39. package/dist/bin/pushary-transcript-register.js +18 -18
  40. package/dist/bin/pushary-transcripts.js +62 -9
  41. package/dist/bin/pushary-upgrade.js +43 -41
  42. package/dist/bin/pushary-wait.js +14 -14
  43. package/dist/bin/pushary.js +7 -7
  44. package/dist/{chunk-67Q3Q5IO.js → chunk-2MZ6ROWZ.js} +6 -6
  45. package/dist/{chunk-7GU4PXE5.js → chunk-3GVV7XVT.js} +1 -1
  46. package/dist/{chunk-557ZE5EX.js → chunk-3QLFB2EY.js} +4 -4
  47. package/dist/{chunk-5R23J52J.js → chunk-4WFAP6QN.js} +10 -10
  48. package/dist/{chunk-UWCPY4RY.js → chunk-5JK3DQGZ.js} +2 -2
  49. package/dist/{chunk-CFIQ3252.js → chunk-5LOP4AVD.js} +3 -3
  50. package/dist/{chunk-FG5HMJ7C.js → chunk-6Z2VR3BA.js} +4 -2
  51. package/dist/{chunk-OZRT64BB.js → chunk-75ODMNOM.js} +1 -1
  52. package/dist/{chunk-4K6YZPZ3.js → chunk-7GRQGXF4.js} +1 -1
  53. package/dist/{chunk-FXECTHAG.js → chunk-7NCLUA65.js} +26 -4
  54. package/dist/{chunk-Q4WTIKM6.js → chunk-AB3VAQ25.js} +3 -3
  55. package/dist/{chunk-7ETELRQX.js → chunk-BCVCUDFI.js} +16 -5
  56. package/dist/{chunk-LCNN7UOE.js → chunk-BQFL2ECS.js} +3 -3
  57. package/dist/{chunk-DFKEJARZ.js → chunk-BUQU3OPX.js} +1 -1
  58. package/dist/{chunk-RFCEVROB.js → chunk-CLABCSZC.js} +4 -4
  59. package/dist/{chunk-LILS32LF.js → chunk-DMNLFWGY.js} +7 -108
  60. package/dist/{chunk-SDOWT67G.js → chunk-EHHTQURL.js} +5 -5
  61. package/dist/{chunk-ESXGCZDA.js → chunk-ELAK46NR.js} +4 -4
  62. package/dist/{chunk-ZJFJUAHS.js → chunk-EQ26IKZM.js} +6 -6
  63. package/dist/{chunk-NZLQ6GMX.js → chunk-FAF5AW3P.js} +9 -9
  64. package/dist/{chunk-A4CZPUQ6.js → chunk-FEAGK25K.js} +1 -1
  65. package/dist/{chunk-3LBB7GVF.js → chunk-GNUARBRZ.js} +4 -4
  66. package/dist/{chunk-AFV3FQNG.js → chunk-GZS72NCF.js} +4 -4
  67. package/dist/{chunk-3YGUWPNZ.js → chunk-HAIXS4OX.js} +2 -2
  68. package/dist/{chunk-TMHE5CVX.js → chunk-HOIO66DU.js} +3 -3
  69. package/dist/{chunk-NAZRRXZM.js → chunk-HZ72EMJE.js} +2 -2
  70. package/dist/{chunk-W3CBFLIX.js → chunk-IOH2T3CB.js} +17 -3
  71. package/dist/chunk-KEPESIIR.js +4117 -0
  72. package/dist/{chunk-3IFCXMC6.js → chunk-KL76XWZ7.js} +1 -1
  73. package/dist/{chunk-F35YILEN.js → chunk-KLZZI5TU.js} +1 -1
  74. package/dist/{chunk-GV43RXR2.js → chunk-KUCL7ETL.js} +1 -1
  75. package/dist/{chunk-G3ZDCYMU.js → chunk-L5CDGXPO.js} +3 -3
  76. package/dist/{chunk-EA6574W2.js → chunk-LGZ545TA.js} +5 -5
  77. package/dist/{chunk-6HIYOY6I.js → chunk-LTT54NOU.js} +8 -8
  78. package/dist/{chunk-6YSEOXP5.js → chunk-MK4USZYQ.js} +2 -2
  79. package/dist/{chunk-FX7KDF47.js → chunk-MRCVYYPW.js} +3 -3
  80. package/dist/{chunk-ZEDGKCCM.js → chunk-OJEIS5L2.js} +1 -1
  81. package/dist/{chunk-GFAG72LR.js → chunk-OP5IBEV7.js} +7 -3
  82. package/dist/{chunk-SJCPIYWJ.js → chunk-OU3BYBJ3.js} +2 -2
  83. package/dist/{chunk-W6MYFAOK.js → chunk-OW6VBXXI.js} +15 -15
  84. package/dist/{chunk-R3CLBNST.js → chunk-OY6Z4IKB.js} +1 -1
  85. package/dist/{chunk-SJJYXMJP.js → chunk-P6RF4RQN.js} +6 -6
  86. package/dist/{chunk-7E2ZN7XA.js → chunk-PIQ4HHA2.js} +5 -5
  87. package/dist/{chunk-VF3IL56Q.js → chunk-PJ34FOIV.js} +4 -4
  88. package/dist/{chunk-LWR5VKNC.js → chunk-PXAOEFJZ.js} +11 -11
  89. package/dist/{chunk-7EHZXZB2.js → chunk-QC2W42DE.js} +12 -12
  90. package/dist/{chunk-7NXB7OVX.js → chunk-RAJ3QEIL.js} +1 -1
  91. package/dist/chunk-S2Z6VWHH.js +112 -0
  92. package/dist/{chunk-MYEALNW6.js → chunk-SARPHHTT.js} +1 -1
  93. package/dist/{chunk-7NJ4TDUH.js → chunk-SKUSGWFK.js} +5 -5
  94. package/dist/{chunk-YQK72JGV.js → chunk-T3GHXR6N.js} +5 -5
  95. package/dist/{chunk-EUNSJKJJ.js → chunk-T6XQNOZV.js} +22 -15
  96. package/dist/{chunk-RSNN2TPE.js → chunk-TBKHQWIH.js} +9 -9
  97. package/dist/{chunk-M7MEVILL.js → chunk-TMGJAFSD.js} +4 -4
  98. package/dist/{chunk-PSCXEH42.js → chunk-V5W3CK7F.js} +2 -2
  99. package/dist/{chunk-UUAVYIWJ.js → chunk-V7N5NOZV.js} +4 -2
  100. package/dist/{chunk-LL2KHEJH.js → chunk-VC3HFFMQ.js} +1 -1
  101. package/dist/{chunk-QIPW7OVB.js → chunk-VDBXSUXP.js} +6 -6
  102. package/dist/{chunk-HSRNWCXJ.js → chunk-VFJSVPNL.js} +3 -3
  103. package/dist/{chunk-RU37NSZH.js → chunk-VHZAJ6IB.js} +3 -3
  104. package/dist/{chunk-BIUSODLS.js → chunk-VN7XH6TU.js} +2 -2
  105. package/dist/{chunk-EO6CL4PD.js → chunk-WUOOZE5S.js} +2 -2
  106. package/dist/{chunk-6JAWNRDR.js → chunk-XBTWG2VL.js} +4 -4
  107. package/dist/{chunk-MURJ4WAL.js → chunk-XE5N352V.js} +1 -1
  108. package/dist/{chunk-44FNEAXK.js → chunk-XO3KAH7K.js} +1 -1
  109. package/dist/{chunk-EVZDYG7L.js → chunk-YK6GR4GU.js} +2 -2
  110. package/dist/{chunk-FYS27SUS.js → chunk-YMZOM6BD.js} +6 -6
  111. package/dist/{codex-app-cards-switch-IIL7IPP6.js → codex-app-cards-switch-LXMAIOFB.js} +11 -11
  112. package/dist/{codex-desktop-launch-XCLMYVBD.js → codex-desktop-launch-VE5RLFUU.js} +1 -1
  113. package/dist/{codex-session-launch-UMVALJ3A.js → codex-session-launch-XZZWXCPK.js} +18 -18
  114. package/dist/{config-5N3GUJD5.js → config-PPX25AV5.js} +3 -3
  115. package/dist/{global-upgrade-5F4CSXED.js → global-upgrade-NRMHNLNU.js} +9 -9
  116. package/dist/{identity-7ULYW4RL.js → identity-ZFQR7JNW.js} +4 -4
  117. package/dist/{live-capabilities-QTSFXA6T.js → live-capabilities-SJRYRKNB.js} +4 -4
  118. package/dist/{paths-HEMK2ALW.js → paths-7VTVOQXJ.js} +3 -3
  119. package/dist/{reapply-AMFKVYZV.js → reapply-WOANOIRZ.js} +27 -26
  120. package/dist/src/index.js +21 -21
  121. package/dist/{upgrade-lock-IAZC5644.js → upgrade-lock-VAYJZVTB.js} +4 -4
  122. package/dist/{usage-NEFDYSRT.js → usage-C4DIYUR6.js} +3 -3
  123. package/package.json +1 -1
@@ -2,29 +2,29 @@
2
2
  import {
3
3
  waitResponse,
4
4
  waitWindowResponse
5
- } from "../chunk-7NXB7OVX.js";
5
+ } from "../chunk-RAJ3QEIL.js";
6
6
  import {
7
7
  describeWaitLadder
8
8
  } from "../chunk-CVWG2N3Y.js";
9
9
  import {
10
10
  exitOnFailedSettingsRequest
11
- } from "../chunk-AFV3FQNG.js";
12
- import "../chunk-NAZRRXZM.js";
11
+ } from "../chunk-GZS72NCF.js";
12
+ import "../chunk-HZ72EMJE.js";
13
13
  import {
14
14
  createIo
15
15
  } from "../chunk-FO3MDD26.js";
16
16
  import {
17
17
  exitOnHelpFlag
18
- } from "../chunk-OZRT64BB.js";
18
+ } from "../chunk-75ODMNOM.js";
19
19
  import {
20
20
  parseFlags
21
21
  } from "../chunk-NMUI3ZWG.js";
22
- import "../chunk-W3CBFLIX.js";
23
- import "../chunk-Q4WTIKM6.js";
22
+ import "../chunk-IOH2T3CB.js";
23
+ import "../chunk-AB3VAQ25.js";
24
24
  import {
25
25
  pusharyFetch
26
- } from "../chunk-HSRNWCXJ.js";
27
- import "../chunk-G3ZDCYMU.js";
26
+ } from "../chunk-VFJSVPNL.js";
27
+ import "../chunk-L5CDGXPO.js";
28
28
  import {
29
29
  UsageError,
30
30
  exitCodeFor
@@ -32,17 +32,17 @@ import {
32
32
  import {
33
33
  EXIT
34
34
  } from "../chunk-KZERVKTD.js";
35
- import "../chunk-PSCXEH42.js";
36
- import "../chunk-6YSEOXP5.js";
37
- import "../chunk-CFIQ3252.js";
35
+ import "../chunk-V5W3CK7F.js";
38
36
  import "../chunk-QENTGE75.js";
37
+ import "../chunk-MK4USZYQ.js";
38
+ import "../chunk-5LOP4AVD.js";
39
39
  import {
40
40
  getApiKey,
41
41
  getBaseUrl
42
- } from "../chunk-DFKEJARZ.js";
43
- import "../chunk-FG5HMJ7C.js";
42
+ } from "../chunk-BUQU3OPX.js";
43
+ import "../chunk-6Z2VR3BA.js";
44
44
  import "../chunk-QTOLNRET.js";
45
- import "../chunk-FXECTHAG.js";
45
+ import "../chunk-7NCLUA65.js";
46
46
  import "../chunk-MLKGABMK.js";
47
47
 
48
48
  // bin/pushary-wait.ts
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  installNetworkDefaults
4
- } from "../chunk-HSRNWCXJ.js";
5
- import "../chunk-G3ZDCYMU.js";
4
+ } from "../chunk-VFJSVPNL.js";
5
+ import "../chunk-L5CDGXPO.js";
6
6
  import "../chunk-PPY5N2E6.js";
7
7
  import {
8
8
  EXIT
9
9
  } from "../chunk-KZERVKTD.js";
10
- import "../chunk-6YSEOXP5.js";
11
- import "../chunk-CFIQ3252.js";
12
10
  import "../chunk-QENTGE75.js";
13
- import "../chunk-DFKEJARZ.js";
11
+ import "../chunk-MK4USZYQ.js";
12
+ import "../chunk-5LOP4AVD.js";
13
+ import "../chunk-BUQU3OPX.js";
14
14
  import {
15
15
  LISTED_COMMANDS,
16
16
  renderHelp,
17
17
  resolveCommandName
18
- } from "../chunk-FG5HMJ7C.js";
18
+ } from "../chunk-6Z2VR3BA.js";
19
19
  import {
20
20
  getPackageVersion
21
21
  } from "../chunk-QTOLNRET.js";
22
- import "../chunk-FXECTHAG.js";
22
+ import "../chunk-7NCLUA65.js";
23
23
  import "../chunk-MLKGABMK.js";
24
24
 
25
25
  // src/cli/runtime.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  announceSubscriptionRequired,
3
3
  isDeferAnswer
4
- } from "./chunk-3IFCXMC6.js";
4
+ } from "./chunk-KL76XWZ7.js";
5
5
  import {
6
6
  AUTO_DECISION_WINDOW_MS,
7
7
  DEFAULT_SESSION,
@@ -10,19 +10,19 @@ import {
10
10
  permissionDeniedAction,
11
11
  releaseThrottle,
12
12
  reportEvent
13
- } from "./chunk-LWR5VKNC.js";
13
+ } from "./chunk-PXAOEFJZ.js";
14
14
  import {
15
15
  askUser,
16
16
  isDecisionStopped,
17
17
  isQuestionLimitRefusal,
18
18
  waitForQuestion
19
- } from "./chunk-RSNN2TPE.js";
19
+ } from "./chunk-TBKHQWIH.js";
20
20
  import {
21
21
  SubscriptionRequiredError
22
- } from "./chunk-ESXGCZDA.js";
22
+ } from "./chunk-ELAK46NR.js";
23
23
  import {
24
24
  getMachineId
25
- } from "./chunk-G3ZDCYMU.js";
25
+ } from "./chunk-L5CDGXPO.js";
26
26
  import {
27
27
  ASK_CONTEXT_MAX,
28
28
  agentQuestionContext,
@@ -34,7 +34,7 @@ import {
34
34
  questionsShownAsASet,
35
35
  shouldDeferToNativeMode,
36
36
  wireVerdictFor
37
- } from "./chunk-FXECTHAG.js";
37
+ } from "./chunk-7NCLUA65.js";
38
38
 
39
39
  // src/machine-decision-audit.ts
40
40
  import { basename } from "path";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-KZERVKTD.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-FXECTHAG.js";
10
+ } from "./chunk-7NCLUA65.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -3,18 +3,18 @@ import {
3
3
  addGeminiMcpServer,
4
4
  removeGeminiMcpServer,
5
5
  supportedClaudeEvents
6
- } from "./chunk-LCNN7UOE.js";
6
+ } from "./chunk-BQFL2ECS.js";
7
7
  import {
8
8
  CLAUDE_CODE_AGENT,
9
9
  compatibleToolLookup
10
- } from "./chunk-LWR5VKNC.js";
10
+ } from "./chunk-PXAOEFJZ.js";
11
11
  import {
12
12
  guardBinary,
13
13
  guardBinaryRefusing,
14
14
  holdBudgetOf,
15
15
  isProtectedByScope,
16
16
  registerHookEntry
17
- } from "./chunk-6YSEOXP5.js";
17
+ } from "./chunk-MK4USZYQ.js";
18
18
  import {
19
19
  HOOK_COMPATIBLE_PROFILES,
20
20
  HOOK_LOCATOR_BINARY,
@@ -26,7 +26,7 @@ import {
26
26
  pusharyMissingReason,
27
27
  refusalOutput,
28
28
  withHookHoldBudget
29
- } from "./chunk-FXECTHAG.js";
29
+ } from "./chunk-7NCLUA65.js";
30
30
 
31
31
  // src/claude-config.ts
32
32
  import { join } from "path";
@@ -4,25 +4,25 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-W3CBFLIX.js";
7
+ } from "./chunk-IOH2T3CB.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-G3ZDCYMU.js";
11
- import {
12
- pusharyDir
13
- } from "./chunk-6YSEOXP5.js";
14
- import {
15
- resolveGlobalBinary
16
- } from "./chunk-CFIQ3252.js";
10
+ } from "./chunk-L5CDGXPO.js";
17
11
  import {
18
12
  readJsonSafe,
19
13
  writeFileAtomic,
20
14
  writeJsonAtomic,
21
15
  writeJsonAtomicDurable
22
16
  } from "./chunk-QENTGE75.js";
17
+ import {
18
+ pusharyDir
19
+ } from "./chunk-MK4USZYQ.js";
20
+ import {
21
+ resolveGlobalBinary
22
+ } from "./chunk-5LOP4AVD.js";
23
23
  import {
24
24
  getApiKey
25
- } from "./chunk-DFKEJARZ.js";
25
+ } from "./chunk-BUQU3OPX.js";
26
26
  import {
27
27
  CLI_PACKAGE_NAMES,
28
28
  cmdShimTarget,
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-QTOLNRET.js";
33
33
  import {
34
34
  isRecord
35
- } from "./chunk-FXECTHAG.js";
35
+ } from "./chunk-7NCLUA65.js";
36
36
 
37
37
  // src/daemon-lifecycle.ts
38
38
  import { dirname, join, win32 as win32Path } from "path";
@@ -294,7 +294,7 @@ var loadedOnce = (load) => {
294
294
  };
295
295
 
296
296
  // src/codex-desktop-proxy.ts
297
- var loadThePhone = () => import("./api-7HLZRIUV.js");
297
+ var loadThePhone = () => import("./api-UHUUAONF.js");
298
298
  var theFirstCardLoadsAgain = () => {
299
299
  };
300
300
  var APP_SERVER_COMMAND = "app-server";
@@ -827,7 +827,7 @@ var codexDesktopCommand = async (args, entry, readAccount) => {
827
827
  return runCodexDesktopProxy(engine2, args.slice(3), readAccount, { watchesForCards: layoutIsKnown });
828
828
  }
829
829
  if (args[0] === APP_CARDS_FLAG) {
830
- const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-IIL7IPP6.js");
830
+ const { codexAppCardsCommandOnThisMac } = await import("./codex-app-cards-switch-LXMAIOFB.js");
831
831
  return codexAppCardsCommandOnThisMac(args.slice(1), entry, readAccount);
832
832
  }
833
833
  if (args.length > 2) throw new Error("Usage: pushary codex --desktop [path/to/Codex.app]");
@@ -366,9 +366,9 @@ var installGlobally = (options) => {
366
366
  }
367
367
  const started = (async () => {
368
368
  if (!npmIsOnPath()) throw new NpmMissingError();
369
- const { withUpgradeLock } = await import("./global-upgrade-5F4CSXED.js");
370
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-IAZC5644.js");
371
- const { autoUpdateLock } = await import("./paths-HEMK2ALW.js");
369
+ const { withUpgradeLock } = await import("./global-upgrade-NRMHNLNU.js");
370
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-VAYJZVTB.js");
371
+ const { autoUpdateLock } = await import("./paths-7VTVOQXJ.js");
372
372
  let result = "skipped";
373
373
  const install = async () => {
374
374
  const platform = process.platform;
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-FXECTHAG.js";
5
+ } from "./chunk-7NCLUA65.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -127,7 +127,7 @@ var COMMAND_LIST = [
127
127
  {
128
128
  name: "transcripts",
129
129
  module: "pushary-transcripts",
130
- summary: "Show or re-trust the keys this machine seals transcripts to",
130
+ summary: "Turn transcript sync on or off, or show and re-trust the keys it seals to",
131
131
  detail: [
132
132
  "Sync stops if the phone key or the compliance recovery key changes, because a",
133
133
  "change is either your reinstall or a server handing itself a copy. Compare the",
@@ -168,6 +168,8 @@ var COMMAND_OPTIONS = {
168
168
  ["--yes", "Remove everything without asking"]
169
169
  ],
170
170
  transcripts: [
171
+ ["on", "Sync encrypted transcripts from this machine so your phone shows the conversation"],
172
+ ["off", "Stop syncing transcripts from this machine"],
171
173
  ["status", "Show the pinned keys and their fingerprints (default)"],
172
174
  ["trust --rotate", "Accept the keys the server is offering now and resume syncing"]
173
175
  ],
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-FG5HMJ7C.js";
6
+ } from "./chunk-6Z2VR3BA.js";
7
7
  import {
8
8
  getPackageVersion
9
9
  } from "./chunk-QTOLNRET.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  localRepoKey,
3
3
  normalizeRepoRemote
4
- } from "./chunk-FXECTHAG.js";
4
+ } from "./chunk-7NCLUA65.js";
5
5
 
6
6
  // src/repo.ts
7
7
  import { existsSync, readFileSync, statSync } from "fs";
@@ -168,7 +168,8 @@ var defaults = {
168
168
  activationGuide: null,
169
169
  enforcementDetail: "Cooperative. The agent chooses when to ask; no native permission interception.",
170
170
  capabilityNote: "",
171
- documented: true
171
+ documented: true,
172
+ keepsSessionHistory: false
172
173
  };
173
174
  var AGENTS = {
174
175
  claude_code: {
@@ -184,7 +185,8 @@ var AGENTS = {
184
185
  enforcement: "enforced",
185
186
  connectVia: "Native hooks + MCP",
186
187
  setupCommand: PUSHARY_SETUP_COMMAND,
187
- enforcementDetail: "Shell, writes and edits, subject to Claude Code permission mode and explicit policy."
188
+ enforcementDetail: "Shell, writes and edits, subject to Claude Code permission mode and explicit policy.",
189
+ keepsSessionHistory: true
188
190
  },
189
191
  claude_chat: {
190
192
  ...defaults,
@@ -211,7 +213,8 @@ var AGENTS = {
211
213
  enforcement: "enforced",
212
214
  connectVia: "Native hooks + MCP",
213
215
  setupCommand: PUSHARY_SETUP_COMMAND,
214
- enforcementDetail: "Shell and apply_patch edits through native permission hooks; requires a compatible Codex runtime."
216
+ enforcementDetail: "Shell and apply_patch edits through native permission hooks; requires a compatible Codex runtime.",
217
+ keepsSessionHistory: true
215
218
  },
216
219
  chatgpt: {
217
220
  ...defaults,
@@ -231,7 +234,8 @@ var AGENTS = {
231
234
  enforcement: "enforced",
232
235
  connectVia: "Native hooks + MCP",
233
236
  setupCommand: PUSHARY_SETUP_COMMAND,
234
- enforcementDetail: "Shell, writes, edits and MCP calls through native BeforeTool hooks."
237
+ enforcementDetail: "Shell, writes, edits and MCP calls through native BeforeTool hooks.",
238
+ keepsSessionHistory: true
235
239
  },
236
240
  hermes: {
237
241
  ...defaults,
@@ -427,6 +431,9 @@ var POLICY_AGENTS = [...Object.values(AGENTS).flatMap((agent) => agent.policyAge
427
431
  var AGENT_LABELS_BY_TYPE = Object.fromEntries(
428
432
  Object.entries(AGENTS).flatMap(([id, agent]) => agent.hasStoredIdentity ? [[id, agent.label]] : [])
429
433
  );
434
+ var SESSION_HISTORY_AGENT_TYPES = Object.freeze(
435
+ Object.entries(AGENTS).flatMap(([id, agent]) => agent.keepsSessionHistory ? [id] : [])
436
+ );
430
437
  var DISCONNECTABLE_AGENTS = Object.freeze(Object.values(AGENTS).flatMap((agent) => agent.disconnectable && agent.hookSource !== null ? [agent.hookSource] : []));
431
438
  var REPO_AWARE_AGENTS = Object.freeze(Object.values(AGENTS).flatMap((agent) => agent.repoAware ? [agent.policyAgent] : []));
432
439
  var MANAGED_PROVIDERS = Object.freeze(Object.values(AGENTS).flatMap((agent) => agent.managedProvider ? [agent.hookSource] : []));
@@ -3039,6 +3046,20 @@ var codexNativeApprovalResponse = (approval, answer) => {
3039
3046
  return { decision: accepted ? "accept" : approval.negativeDecision };
3040
3047
  };
3041
3048
 
3049
+ // ../contracts/src/transcript-record.ts
3050
+ var COMPRESSED_TRANSCRIPT_RECORD_MARKER = 1;
3051
+ var TRANSCRIPT_RECORD_MAX_INFLATED_BYTES = 1024 * 1024;
3052
+ var compressionShrinks = (raw, deflated) => deflated.length + 1 < raw.length;
3053
+ var compressTranscriptRecord = (raw, deflateRaw) => {
3054
+ if (raw.length > TRANSCRIPT_RECORD_MAX_INFLATED_BYTES) return raw;
3055
+ const deflated = deflateRaw(raw);
3056
+ if (!compressionShrinks(raw, deflated)) return raw;
3057
+ const record3 = new Uint8Array(deflated.length + 1);
3058
+ record3[0] = COMPRESSED_TRANSCRIPT_RECORD_MARKER;
3059
+ record3.set(deflated, 1);
3060
+ return record3;
3061
+ };
3062
+
3042
3063
  // ../contracts/src/index.ts
3043
3064
  var KEY_SCOPES = ["full_access", "agent", "connector", "bound"];
3044
3065
  var normalizeKeyScope = (value) => typeof value === "string" && KEY_SCOPES.includes(value) ? value : null;
@@ -6338,6 +6359,7 @@ export {
6338
6359
  CODEX_NATIVE_APPROVAL_REPLIES,
6339
6360
  parseCodexNativeApproval,
6340
6361
  codexNativeApprovalResponse,
6362
+ compressTranscriptRecord,
6341
6363
  normalizeKeyScope,
6342
6364
  isApprovalMode,
6343
6365
  approvalModeWithoutLocalPrompt,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-HSRNWCXJ.js";
3
+ } from "./chunk-VFJSVPNL.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-PPY5N2E6.js";
@@ -9,11 +9,11 @@ import {
9
9
  } from "./chunk-KZERVKTD.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-DFKEJARZ.js";
12
+ } from "./chunk-BUQU3OPX.js";
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-FXECTHAG.js";
16
+ } from "./chunk-7NCLUA65.js";
17
17
 
18
18
  // src/session.ts
19
19
  var samePusharyAccount = (left, right) => left.kind === "ok" && right.kind === "ok" && left.identity.workspaceId !== "" && left.identity.workspaceId === right.identity.workspaceId && left.identity.siteId === right.identity.siteId;
@@ -1,9 +1,16 @@
1
1
  import {
2
+ compressTranscriptRecord,
2
3
  redactSecretsFromContent
3
- } from "./chunk-FXECTHAG.js";
4
+ } from "./chunk-7NCLUA65.js";
4
5
 
5
6
  // src/crypto.ts
6
7
  import nacl from "tweetnacl";
8
+
9
+ // ../contracts/src/transcript-record-node.ts
10
+ import { deflateRawSync, inflateRawSync } from "zlib";
11
+ var deflateRaw = (raw) => new Uint8Array(deflateRawSync(raw));
12
+
13
+ // src/crypto.ts
7
14
  var EPH_PUB_LEN = nacl.box.publicKeyLength;
8
15
  var BOX_NONCE_LEN = nacl.box.nonceLength;
9
16
  var SECRETBOX_NONCE_LEN = nacl.secretbox.nonceLength;
@@ -23,14 +30,17 @@ var wrapSessionKey = (sessionKey, accountPublicKey) => {
23
30
  bundle.set(box, EPH_PUB_LEN + BOX_NONCE_LEN);
24
31
  return toBase64(bundle);
25
32
  };
26
- var encryptRecord = (plaintext, sessionKey) => {
33
+ var sealRecordBytes = (plaintext, sessionKey) => {
27
34
  const nonce = nacl.randomBytes(SECRETBOX_NONCE_LEN);
28
- const box = nacl.secretbox(utf8Encode(plaintext), nonce, sessionKey);
35
+ const box = nacl.secretbox(plaintext, nonce, sessionKey);
29
36
  const bundle = new Uint8Array(SECRETBOX_NONCE_LEN + box.length);
30
37
  bundle.set(nonce, 0);
31
38
  bundle.set(box, SECRETBOX_NONCE_LEN);
32
39
  return toBase64(bundle);
33
40
  };
41
+ var encryptRecord = (plaintext, sessionKey) => sealRecordBytes(utf8Encode(plaintext), sessionKey);
42
+ var encryptCompressedRecord = (plaintext, sessionKey) => sealRecordBytes(compressTranscriptRecord(utf8Encode(plaintext), deflateRaw), sessionKey);
43
+ var recordSealerFor = (compressRecords) => compressRecords ? encryptCompressedRecord : encryptRecord;
34
44
 
35
45
  // src/transcript-capture.ts
36
46
  import { createHmac } from "crypto";
@@ -123,7 +133,7 @@ var redactDeep = (value) => {
123
133
  return value;
124
134
  };
125
135
  var localIdFor = (parsed, rawLine, sessionKey) => typeof parsed.uuid === "string" && parsed.uuid.length > 0 ? parsed.uuid : createHmac("sha256", sessionKey).update(rawLine).digest("hex").slice(0, 32);
126
- var buildTranscriptRecords = (lines, sessionKey, seen = /* @__PURE__ */ new Set()) => {
136
+ var buildTranscriptRecords = (lines, sessionKey, seen = /* @__PURE__ */ new Set(), sealRecord = encryptRecord) => {
127
137
  const records = [];
128
138
  const nextSeen = new Set(seen);
129
139
  for (const line of lines) {
@@ -142,7 +152,7 @@ var buildTranscriptRecords = (lines, sessionKey, seen = /* @__PURE__ */ new Set(
142
152
  nextSeen.add(localId);
143
153
  const redacted = redactDeep(parsed);
144
154
  fitWithinPlaintextBudget(redacted);
145
- const content = encryptRecord(JSON.stringify(redacted), sessionKey);
155
+ const content = sealRecord(JSON.stringify(redacted), sessionKey);
146
156
  records.push({ localId, content });
147
157
  }
148
158
  return { records, seen: nextSeen };
@@ -153,5 +163,6 @@ export {
153
163
  generateSessionKey,
154
164
  wrapSessionKey,
155
165
  encryptRecord,
166
+ recordSealerFor,
156
167
  buildTranscriptRecords
157
168
  };
@@ -5,16 +5,16 @@ import {
5
5
  import {
6
6
  NOTIFICATION_MATCHED_TYPES,
7
7
  POSTTOOLUSE_MIRRORED_TOOLS
8
- } from "./chunk-LL2KHEJH.js";
8
+ } from "./chunk-VC3HFFMQ.js";
9
9
  import {
10
10
  isProtectedByScope,
11
11
  registerHookEntry
12
- } from "./chunk-6YSEOXP5.js";
12
+ } from "./chunk-MK4USZYQ.js";
13
13
  import {
14
14
  CLAUDE_PRETOOLUSE_MATCHER,
15
15
  HOOK_BUDGETS,
16
16
  HOOK_LOCATOR_BINARY
17
- } from "./chunk-FXECTHAG.js";
17
+ } from "./chunk-7NCLUA65.js";
18
18
 
19
19
  // src/gemini-config.ts
20
20
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-FG5HMJ7C.js";
3
+ } from "./chunk-6Z2VR3BA.js";
4
4
 
5
5
  // src/config.ts
6
6
  import { readFileSync } from "fs";
@@ -1,12 +1,12 @@
1
- import {
2
- pusharyDir
3
- } from "./chunk-6YSEOXP5.js";
4
1
  import {
5
2
  readJsonSafe
6
3
  } from "./chunk-QENTGE75.js";
4
+ import {
5
+ pusharyDir
6
+ } from "./chunk-MK4USZYQ.js";
7
7
  import {
8
8
  isRecord
9
- } from "./chunk-FXECTHAG.js";
9
+ } from "./chunk-7NCLUA65.js";
10
10
 
11
11
  // src/process-ownership.ts
12
12
  import { createHash, randomUUID } from "crypto";
@@ -1,25 +1,19 @@
1
+ import {
2
+ AgentConfigError,
3
+ configFailureKind,
4
+ retryAgentCommand
5
+ } from "./chunk-S2Z6VWHH.js";
1
6
  import {
2
7
  MCP_BRIDGE_BINARY
3
- } from "./chunk-EO6CL4PD.js";
8
+ } from "./chunk-WUOOZE5S.js";
4
9
  import {
5
10
  KEY_FILE_MODE
6
- } from "./chunk-W3CBFLIX.js";
7
- import {
8
- NpmInstallError,
9
- NpmMissingError,
10
- NpmPermissionError
11
- } from "./chunk-CFIQ3252.js";
11
+ } from "./chunk-IOH2T3CB.js";
12
12
  import {
13
13
  readJsonSafe,
14
14
  writeFileAtomic,
15
15
  writeJsonAtomic
16
16
  } from "./chunk-QENTGE75.js";
17
- import {
18
- NPX_LATEST_COMMAND
19
- } from "./chunk-FG5HMJ7C.js";
20
- import {
21
- readSetupAgentFailures
22
- } from "./chunk-FXECTHAG.js";
23
17
 
24
18
  // src/instruction-file.ts
25
19
  import { accessSync, constants, existsSync, readFileSync, statSync, writeFileSync, mkdirSync, rmSync } from "fs";
@@ -517,89 +511,6 @@ var fxIgnoresInstructionsFile = (path, fxDir) => {
517
511
  }
518
512
  };
519
513
 
520
- // src/setup/config-write.ts
521
- var AgentConfigWriteError = class extends Error {
522
- constructor(error) {
523
- super(error instanceof Error ? error.message : String(error), { cause: error });
524
- this.name = "AgentConfigWriteError";
525
- }
526
- };
527
- var writeSetupConfigFile = (path, content, mode = 384) => {
528
- try {
529
- writeFileAtomic(path, content, mode);
530
- } catch (error) {
531
- throw new AgentConfigWriteError(error);
532
- }
533
- };
534
- var writeSetupConfigJson = (path, value, mode) => writeSetupConfigFile(path, `${JSON.stringify(value, null, 2)}
535
- `, mode);
536
-
537
- // src/setup/agent-failure.ts
538
- var AgentConfigError = class extends Error {
539
- kind;
540
- filePath;
541
- constructor(kind, filePath, message) {
542
- super(message);
543
- this.name = "AgentConfigError";
544
- this.kind = kind;
545
- this.filePath = filePath;
546
- }
547
- };
548
- var configFailureKind = (readFailure) => readFailure === "unparseable" ? "config-unparseable" : "config-unreadable";
549
- var AGENT_FAILURE_DETAILS = {
550
- "not-wired": "reported success but its config is not there.",
551
- "app-account-mismatch": "Pushary for Mac set it up with an account that does not match this setup, so it was left as it is."
552
- };
553
- var DESCRIBED_FAILURE_REMEDIES = {
554
- "not-wired": "retry-agent",
555
- "app-account-mismatch": "match-mac-account"
556
- };
557
- var describedAgentFailure = (agent, kind) => ({
558
- agent,
559
- kind,
560
- detail: AGENT_FAILURE_DETAILS[kind],
561
- remedy: DESCRIBED_FAILURE_REMEDIES[kind],
562
- stage: kind === "not-wired" ? "hook-validation" : "account-check"
563
- });
564
- var NPM_PERMISSION_REMEDIES = {
565
- "global-prefix": "fix-npm-prefix",
566
- "file-in-use": "close-node-programs"
567
- };
568
- var remedyForError = (error) => {
569
- if (error instanceof NpmMissingError) return "install-node";
570
- if (error instanceof NpmPermissionError) return NPM_PERMISSION_REMEDIES[error.kind];
571
- return "retry-agent";
572
- };
573
- var setupFailureDiagnostic = (error) => {
574
- if (error instanceof AgentConfigError) return { stage: "config-read" };
575
- if (error instanceof AgentConfigWriteError) return { stage: "config-write", diagnosticCode: "config-write-failed" };
576
- if (error instanceof NpmMissingError) return { stage: "runtime-install", diagnosticCode: "npm-missing" };
577
- if (error instanceof NpmPermissionError) {
578
- return { stage: "runtime-install", diagnosticCode: error.kind === "global-prefix" ? "npm-global-prefix-denied" : "npm-file-in-use" };
579
- }
580
- if (error instanceof NpmInstallError) return { stage: "runtime-install", diagnosticCode: "npm-install-failed" };
581
- return { stage: "unknown" };
582
- };
583
- var agentFailureFromError = (agent, error, describeError) => ({
584
- agent,
585
- kind: error instanceof AgentConfigError ? error.kind : "installer-error",
586
- detail: describeError(error),
587
- remedy: remedyForError(error),
588
- ...setupFailureDiagnostic(error)
589
- });
590
- var retryAgentCommand = (agent) => `${NPX_LATEST_COMMAND} setup --agents ${agent}`;
591
- var takeOverHooksCommand = (agent) => `${retryAgentCommand(agent)} --take-over-hooks`;
592
- var matchMacAccountStep = (agent, setupAccount) => `Sign Pushary for Mac into ${setupAccount ?? "this setup's account"}, or run ${takeOverHooksCommand(agent)}`;
593
- var UNCHECKED_ACCOUNT = "an account that could not be checked";
594
- var describeMacAccountMismatch = (mismatch) => [
595
- `${mismatch.agentName}: Pushary for Mac uses ${mismatch.macAccount ?? UNCHECKED_ACCOUNT}. This setup uses ${mismatch.setupAccount ?? UNCHECKED_ACCOUNT}.`,
596
- matchMacAccountStep(mismatch.agent, mismatch.setupAccount)
597
- ];
598
- var REMAINING_AGENTS_CONTINUE = "Other agents will continue. Re-run setup to retry.";
599
- var afterAgentFailureNote = (agentsStillToSetUp) => agentsStillToSetUp > 0 ? REMAINING_AGENTS_CONTINUE : null;
600
- var failedAgentsContext = (configuredAgentNames) => configuredAgentNames.length > 0 ? `(configured: ${configuredAgentNames.join(", ")})` : null;
601
- var agentFailureWire = (failures) => readSetupAgentFailures(failures);
602
-
603
514
  // src/fx-lifecycle.ts
604
515
  import { existsSync as existsSync3 } from "fs";
605
516
  import { join } from "path";
@@ -741,18 +652,6 @@ export {
741
652
  withFxPusharyServer,
742
653
  FX_QUESTION_TOOL,
743
654
  fxIgnoresInstructionsFile,
744
- writeSetupConfigFile,
745
- writeSetupConfigJson,
746
- AgentConfigError,
747
- configFailureKind,
748
- describedAgentFailure,
749
- agentFailureFromError,
750
- retryAgentCommand,
751
- matchMacAccountStep,
752
- describeMacAccountMismatch,
753
- afterAgentFailureNote,
754
- failedAgentsContext,
755
- agentFailureWire,
756
655
  readFxProfileForSetup,
757
656
  writeFxProfile,
758
657
  macAppFxBridge,