pushary 1.9.36 → 1.9.37

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 (101) hide show
  1. package/CHANGELOG.md +5 -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 +24 -24
  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 +65 -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-2DZBIELP.js → chunk-235LKHLW.js} +166 -67
  42. package/dist/{chunk-RYXSY3RH.js → chunk-2WZJHJAB.js} +5 -5
  43. package/dist/{chunk-GTEF64CJ.js → chunk-3Y73MQPF.js} +1 -1
  44. package/dist/{chunk-JAA7YJJZ.js → chunk-4OQHT5IJ.js} +4 -4
  45. package/dist/{chunk-ULDOQF4Q.js → chunk-6SYU5LVK.js} +3 -3
  46. package/dist/{chunk-DC6KHRVH.js → chunk-6VUVVVVN.js} +1 -1
  47. package/dist/{chunk-PRKH662J.js → chunk-AZXPJLKC.js} +1 -1
  48. package/dist/{chunk-CHNSFTD5.js → chunk-B7SE22M7.js} +2 -2
  49. package/dist/{chunk-ML42WKI7.js → chunk-DG5QHKJA.js} +3 -3
  50. package/dist/{chunk-GNESC5EF.js → chunk-DYALNCS6.js} +3 -3
  51. package/dist/{chunk-4E4PZQFE.js → chunk-EK6PRPCY.js} +4 -4
  52. package/dist/{chunk-Y5FCB66K.js → chunk-F3J6JFR2.js} +5 -5
  53. package/dist/{chunk-MBBPLF5T.js → chunk-FFRH7KZP.js} +2 -2
  54. package/dist/{chunk-TRNSODJ6.js → chunk-GKTVIN4F.js} +1 -1
  55. package/dist/{chunk-YRAPCLOB.js → chunk-GQSJVYKN.js} +6 -6
  56. package/dist/{chunk-VRALPR4B.js → chunk-GSP7CC52.js} +4 -4
  57. package/dist/{chunk-5S2P2CK6.js → chunk-GUHM2UQO.js} +2 -2
  58. package/dist/{chunk-FBKGGIFB.js → chunk-HA22GGDG.js} +5 -5
  59. package/dist/{chunk-CHWJ7ZXI.js → chunk-HJF57K2U.js} +5 -5
  60. package/dist/{chunk-J36W6ARB.js → chunk-HK2RPWAD.js} +1 -1
  61. package/dist/{chunk-QPUTCMAK.js → chunk-HQR6DYVG.js} +1 -1
  62. package/dist/{chunk-55XIK7YS.js → chunk-ISNGKZG4.js} +1 -1
  63. package/dist/{chunk-ETGGQWBR.js → chunk-JLQV3XLV.js} +4 -4
  64. package/dist/{chunk-EH635XAR.js → chunk-JMLJHKJN.js} +2 -2
  65. package/dist/{chunk-SHLLDMPM.js → chunk-KHLYOIPY.js} +4 -4
  66. package/dist/{chunk-RNRCOOQZ.js → chunk-KZ3XE3JG.js} +34 -109
  67. package/dist/{chunk-H3MOTS2C.js → chunk-MAGB6VW6.js} +1 -1
  68. package/dist/{chunk-42FTY5II.js → chunk-N5WEEYV6.js} +3 -3
  69. package/dist/{chunk-7GQILLZD.js → chunk-NDQXKLGE.js} +5 -5
  70. package/dist/{chunk-NE5OPCD5.js → chunk-NPE44CX4.js} +4 -4
  71. package/dist/{chunk-CRZ4CP7C.js → chunk-NWSWP3KY.js} +3 -3
  72. package/dist/{chunk-UDHT3W7I.js → chunk-OSLC7G3D.js} +2 -2
  73. package/dist/{chunk-HCKBZYBW.js → chunk-PDDJKGIW.js} +2 -2
  74. package/dist/chunk-PDRKQSC6.js +184 -0
  75. package/dist/{chunk-X4BPD5RD.js → chunk-PYWLW7PC.js} +1 -1
  76. package/dist/{chunk-4NMDFPK7.js → chunk-Q3TCLMYC.js} +5 -5
  77. package/dist/{chunk-EQXMVKKD.js → chunk-Q52PBCN7.js} +1 -1
  78. package/dist/{chunk-U2PUHT4W.js → chunk-QUKATQ66.js} +1 -1
  79. package/dist/{chunk-K5X25GUV.js → chunk-RFIHLLRH.js} +9 -6
  80. package/dist/{chunk-5ML6E3L7.js → chunk-SNI4FGOV.js} +1 -1
  81. package/dist/{chunk-556JCOMK.js → chunk-SNUNAIKK.js} +4 -4
  82. package/dist/{chunk-CRZKFEEO.js → chunk-T2NKNQPM.js} +2 -2
  83. package/dist/{chunk-F5W7B7YT.js → chunk-UEIL72RN.js} +1 -1
  84. package/dist/{chunk-KCUTE3EB.js → chunk-UK3WY3LE.js} +2 -2
  85. package/dist/{chunk-QHL3Y6D2.js → chunk-UKCGR5T2.js} +2 -2
  86. package/dist/{chunk-L25KSDIB.js → chunk-V7Q7DQXL.js} +8 -8
  87. package/dist/{chunk-EGTVN6YV.js → chunk-VA36Q6BD.js} +1 -1
  88. package/dist/{chunk-JWURAYXK.js → chunk-VMIDUNOT.js} +2 -2
  89. package/dist/{chunk-6LKIK7V2.js → chunk-W73URGML.js} +8 -8
  90. package/dist/{chunk-LL256PHP.js → chunk-WXA3CFZR.js} +1 -1
  91. package/dist/{chunk-26AEFJSK.js → chunk-YNJ372JU.js} +2 -2
  92. package/dist/{chunk-BS64ZHTB.js → chunk-Z5ORWTY3.js} +3 -3
  93. package/dist/{chunk-7MOFAAZ3.js → chunk-ZMR3DSMH.js} +4 -4
  94. package/dist/{chunk-IPYCRJGM.js → chunk-ZQD6GVS7.js} +7 -7
  95. package/dist/{global-upgrade-EF6RZBPU.js → global-upgrade-R57HCUTC.js} +6 -6
  96. package/dist/{paths-F645XTFZ.js → paths-G2AYNZCD.js} +2 -2
  97. package/dist/{reapply-HJOTWJAN.js → reapply-FHCOPXEN.js} +20 -20
  98. package/dist/src/index.js +19 -19
  99. package/dist/{upgrade-lock-APUN7YKQ.js → upgrade-lock-3I7AF7E3.js} +3 -3
  100. package/package.json +1 -1
  101. package/dist/chunk-MNXHKEXB.js +0 -71
@@ -0,0 +1,184 @@
1
+ import {
2
+ announceSubscriptionRequired,
3
+ isDeferAnswer
4
+ } from "./chunk-6VUVVVVN.js";
5
+ import {
6
+ AUTO_DECISION_WINDOW_MS,
7
+ DEFAULT_SESSION,
8
+ claimThrottle,
9
+ deriveToolTarget,
10
+ permissionDeniedAction,
11
+ releaseThrottle,
12
+ reportEvent
13
+ } from "./chunk-W73URGML.js";
14
+ import {
15
+ askUser,
16
+ isDecisionStopped,
17
+ waitForQuestion
18
+ } from "./chunk-HA22GGDG.js";
19
+ import {
20
+ SubscriptionRequiredError
21
+ } from "./chunk-Z5ORWTY3.js";
22
+ import {
23
+ getMachineId
24
+ } from "./chunk-VA36Q6BD.js";
25
+ import {
26
+ machineDecisionFor,
27
+ parseAgentQuestionAnswers,
28
+ shouldDeferToNativeMode,
29
+ wireVerdictFor
30
+ } from "./chunk-235LKHLW.js";
31
+
32
+ // src/machine-decision-audit.ts
33
+ import { basename } from "path";
34
+ var reportMachineDenial = async (input, verdict, agent) => {
35
+ const decision = machineDecisionFor(wireVerdictFor(verdict, 0));
36
+ if (!decision) return;
37
+ const sessionKey = input.session_id || DEFAULT_SESSION;
38
+ const toolTarget = deriveToolTarget(input.tool_name, input.tool_input);
39
+ const throttleKey = `machinedecision:${agent.type}:${sessionKey}:${input.tool_name}:${decision.origin}:${toolTarget ?? ""}`;
40
+ const throttle = claimThrottle(throttleKey, AUTO_DECISION_WINDOW_MS);
41
+ if (throttle === "throttled") return;
42
+ if (throttle === "unavailable") {
43
+ console.error("[Pushary] Could not access the audit throttle; reporting this denial without deduplication.");
44
+ }
45
+ try {
46
+ const response = await reportEvent({
47
+ event: "permission_denied",
48
+ occurredAt: (/* @__PURE__ */ new Date()).toISOString(),
49
+ toolUseId: input.tool_use_id,
50
+ agentType: agent.type,
51
+ agentName: `${agent.label} - ${basename(input.cwd ?? process.cwd())}`,
52
+ action: permissionDeniedAction(input.tool_name),
53
+ sessionId: input.session_id,
54
+ decisionSource: "policy_auto",
55
+ decisionOrigin: decision.origin,
56
+ decisionOutcome: decision.outcome,
57
+ toolName: input.tool_name,
58
+ toolTarget
59
+ }, { maxAttempts: 1, timeoutMs: 800, requireOk: true, skipDrain: true });
60
+ if (response?.ok !== true) throw new Error("Audit delivery was not acknowledged");
61
+ } catch {
62
+ console.error("[Pushary] Could not record the machine denial. The action remains blocked; its audit delivery will be retried on the next matching denial.");
63
+ if (throttle === "passed") {
64
+ try {
65
+ releaseThrottle(throttleKey);
66
+ } catch {
67
+ console.error("[Pushary] Could not reset the failed audit throttle.");
68
+ }
69
+ }
70
+ }
71
+ };
72
+
73
+ // src/native-defer.ts
74
+ var nativeDeferOptions = () => {
75
+ const respect = process.env.PUSHARY_RESPECT_PERMISSION_MODE;
76
+ const bypass = process.env.PUSHARY_DEFER_BYPASS;
77
+ return {
78
+ respectPermissionMode: !(respect === "0" || respect === "false"),
79
+ deferBypass: bypass === "1" || bypass === "true"
80
+ };
81
+ };
82
+ var defersToNativeMode = (permissionMode, toolName) => shouldDeferToNativeMode(permissionMode, toolName, nativeDeferOptions());
83
+
84
+ // src/agent-question-ask.ts
85
+ var STOPPED = { kind: "stopped" };
86
+ var UNAVAILABLE = { kind: "unavailable" };
87
+ var UNANSWERED = { kind: "unanswered" };
88
+ var answeredWith = (answers) => ({ kind: "answered", answers });
89
+ var failedAskOutcome = (error, sessionId) => outcomeOfFailedAsk(error, sessionId, UNAVAILABLE) ?? UNANSWERED;
90
+ var withLabels = (question) => ({
91
+ ...question,
92
+ labels: question.options.map((option) => option.label)
93
+ });
94
+ var withoutLabels = ({ labels: _, ...question }) => question;
95
+ var outcomeOfFailedAsk = (error, sessionId, failure) => {
96
+ if (!(error instanceof SubscriptionRequiredError)) return failure;
97
+ announceSubscriptionRequired(error.upgradeUrl, sessionId);
98
+ return void 0;
99
+ };
100
+ var storedWaitDeadline = (result, requestedDeadline) => {
101
+ const stored = result.waitEndsAt ? Date.parse(result.waitEndsAt) : Number.NaN;
102
+ return Number.isFinite(stored) ? Math.min(stored, requestedDeadline) : requestedDeadline;
103
+ };
104
+ var questionContext = (question, index, total, project) => {
105
+ const subject = question.header ? `${question.header}: your agent is asking in ${project}` : `Your agent is asking in ${project}`;
106
+ return total > 1 ? `${subject} (${index + 1} of ${total})` : subject;
107
+ };
108
+ var legacyAnswerMap = (question, value) => JSON.stringify({ [question.question]: question.multiSelect ? JSON.stringify([value]) : value });
109
+ var askAsOneCard = async (apiKey, call, only, labelled) => {
110
+ let result;
111
+ try {
112
+ result = await askUser(apiKey, {
113
+ question: only.question,
114
+ type: "select",
115
+ options: [...only.labels],
116
+ questions: labelled.map(withoutLabels),
117
+ context: questionContext(only, 0, 1, call.projectName),
118
+ agentName: call.agentName,
119
+ sessionId: call.sessionId,
120
+ machineId: getMachineId(),
121
+ toolName: call.toolName,
122
+ toolUseId: call.toolUseId,
123
+ waitEndsAt: new Date(call.deadline).toISOString()
124
+ });
125
+ } catch (error) {
126
+ return failedAskOutcome(error, call.sessionId);
127
+ }
128
+ if (isDecisionStopped(result)) return STOPPED;
129
+ const answer = await waitForQuestion(apiKey, result, storedWaitDeadline(result, call.deadline));
130
+ if (isDecisionStopped(answer)) return STOPPED;
131
+ const values = answer.answered && answer.value ? parseAgentQuestionAnswers(labelled, answer.value) : null;
132
+ if (!values || isDeferAnswer(answer.value)) {
133
+ return UNANSWERED;
134
+ }
135
+ return answeredWith(values);
136
+ };
137
+ var askQuestionByQuestion = async (apiKey, call, labelled) => {
138
+ const answers = {};
139
+ for (const [index, question] of labelled.entries()) {
140
+ let result;
141
+ try {
142
+ result = await askUser(apiKey, {
143
+ question: question.question,
144
+ type: "select",
145
+ options: [...question.labels],
146
+ questions: [withoutLabels(question)],
147
+ context: questionContext(question, index, labelled.length, call.projectName),
148
+ agentName: call.agentName,
149
+ sessionId: call.sessionId,
150
+ machineId: getMachineId(),
151
+ toolName: call.toolName,
152
+ toolUseId: call.toolUseId ? `${call.toolUseId}#q${index}` : void 0,
153
+ waitEndsAt: new Date(call.deadline).toISOString()
154
+ });
155
+ } catch (error) {
156
+ return failedAskOutcome(error, call.sessionId);
157
+ }
158
+ if (isDecisionStopped(result)) return STOPPED;
159
+ const answer = await waitForQuestion(apiKey, result, storedWaitDeadline(result, call.deadline));
160
+ if (isDecisionStopped(answer)) return STOPPED;
161
+ const legacyValue = answer.answered ? answer.value?.trim() : void 0;
162
+ const values = legacyValue ? parseAgentQuestionAnswers([question], legacyValue) ?? parseAgentQuestionAnswers([question], legacyAnswerMap(question, legacyValue)) : null;
163
+ const value = values?.[question.question];
164
+ if (!value || isDeferAnswer(answer.value)) {
165
+ return UNANSWERED;
166
+ }
167
+ answers[question.question] = value;
168
+ }
169
+ return answeredWith(answers);
170
+ };
171
+ var askAgentQuestions = (apiKey, call, questions) => {
172
+ const labelled = questions.map(withLabels);
173
+ const [only, ...rest] = labelled;
174
+ if (!only) return Promise.resolve(UNANSWERED);
175
+ return rest.length === 0 ? askAsOneCard(apiKey, call, only, labelled) : askQuestionByQuestion(apiKey, call, labelled);
176
+ };
177
+
178
+ export {
179
+ reportMachineDenial,
180
+ defersToNativeMode,
181
+ outcomeOfFailedAsk,
182
+ storedWaitDeadline,
183
+ askAgentQuestions
184
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-PRKH662J.js";
3
+ } from "./chunk-AZXPJLKC.js";
4
4
 
5
5
  // src/transcript-api.ts
6
6
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -2,23 +2,23 @@ import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  GEMINI_HOOK_EVENTS,
4
4
  hasGeminiHooks
5
- } from "./chunk-ULDOQF4Q.js";
5
+ } from "./chunk-6SYU5LVK.js";
6
6
  import {
7
7
  AGENT_CHOICES
8
- } from "./chunk-EQXMVKKD.js";
8
+ } from "./chunk-Q52PBCN7.js";
9
9
  import {
10
10
  BELL_HOOK_BINARY
11
- } from "./chunk-5ML6E3L7.js";
11
+ } from "./chunk-SNI4FGOV.js";
12
12
  import {
13
13
  CODEX_HOOK_EVENTS,
14
14
  hasCodexHooks,
15
15
  holdBudgetOf
16
- } from "./chunk-K5X25GUV.js";
16
+ } from "./chunk-RFIHLLRH.js";
17
17
  import {
18
18
  CURSOR_GATE_EVENTS,
19
19
  HOOK_LOCATOR_BINARY,
20
20
  hookCommandHoldBudget
21
- } from "./chunk-2DZBIELP.js";
21
+ } from "./chunk-235LKHLW.js";
22
22
 
23
23
  // src/diagnostics/bridge.ts
24
24
  import { execFileSync } from "child_process";
@@ -10,7 +10,7 @@ import {
10
10
  isSetupConnectMode,
11
11
  isValidApiKey,
12
12
  normalizeAgentId
13
- } from "./chunk-2DZBIELP.js";
13
+ } from "./chunk-235LKHLW.js";
14
14
 
15
15
  // src/setup/options.ts
16
16
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PRETOOLUSE_GATED_TOOLS
3
- } from "./chunk-2DZBIELP.js";
3
+ } from "./chunk-235LKHLW.js";
4
4
 
5
5
  // src/claude-tools.ts
6
6
  var POSTTOOLUSE_MIRROR_ONLY_TOOLS = ["TodoWrite", "Task", "WebFetch", "WebSearch"];
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  CLI_PACKAGE_NAMES,
3
+ CODEX_QUESTION_TOOLS,
3
4
  HOOK_BUDGETS,
4
5
  HOOK_LOCATOR_BINARY,
5
6
  OWNERSHIP_PROBE_COMMAND,
@@ -13,7 +14,7 @@ import {
13
14
  isReleaseVersion,
14
15
  ownPackageName,
15
16
  withHookHoldBudget
16
- } from "./chunk-2DZBIELP.js";
17
+ } from "./chunk-235LKHLW.js";
17
18
 
18
19
  // src/setup/paths.ts
19
20
  import { homedir as homedir2 } from "os";
@@ -395,9 +396,9 @@ var installGlobally = (options) => {
395
396
  }
396
397
  const started = (async () => {
397
398
  if (!npmIsOnPath()) throw new NpmMissingError();
398
- const { withUpgradeLock } = await import("./global-upgrade-EF6RZBPU.js");
399
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-APUN7YKQ.js");
400
- const { autoUpdateLock: autoUpdateLock2 } = await import("./paths-F645XTFZ.js");
399
+ const { withUpgradeLock } = await import("./global-upgrade-R57HCUTC.js");
400
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-3I7AF7E3.js");
401
+ const { autoUpdateLock: autoUpdateLock2 } = await import("./paths-G2AYNZCD.js");
401
402
  let result = "skipped";
402
403
  const install = async () => {
403
404
  const platform = process.platform;
@@ -525,10 +526,12 @@ var codexHooksJsonIn = (home) => join2(home, "hooks.json");
525
526
  var codexHooksJson = () => codexHooksJsonIn(codexHome());
526
527
  var codexAgentsMd = () => join2(codexHome(), "AGENTS.md");
527
528
  var codexSkillDir = () => join2(codexHome(), "skills", "pushary");
529
+ var CODEX_TOOL_CALL_MATCHER = "Bash|apply_patch|mcp__.*";
530
+ var CODEX_PRE_TOOL_USE_MATCHER = [CODEX_TOOL_CALL_MATCHER, ...CODEX_QUESTION_TOOLS].join("|");
528
531
  var CODEX_HOOK_EVENTS = [
529
532
  { event: "PermissionRequest", delivery: "approval", timeout: HOOK_BUDGETS.codex.budgetSeconds, statusMessage: "Waiting for your phone" },
530
- { event: "PreToolUse", matcher: "Bash|apply_patch|mcp__.*", delivery: "approval", timeout: HOOK_BUDGETS.codex.budgetSeconds, statusMessage: "Checking Pushary policy" },
531
- { event: "PostToolUse", matcher: "Bash|apply_patch|mcp__.*", delivery: "telemetry", timeout: 10 },
533
+ { event: "PreToolUse", matcher: CODEX_PRE_TOOL_USE_MATCHER, delivery: "approval", timeout: HOOK_BUDGETS.codex.budgetSeconds, statusMessage: "Checking Pushary policy" },
534
+ { event: "PostToolUse", matcher: CODEX_TOOL_CALL_MATCHER, delivery: "telemetry", timeout: 10 },
532
535
  { event: "UserPromptSubmit", delivery: "telemetry", timeout: 10 },
533
536
  { event: "Stop", delivery: "rescue", timeout: HOOK_BUDGETS.codex.budgetSeconds, holds: true },
534
537
  // `clear` alongside startup and resume, matching what we already do on Claude
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  guardBinary
3
- } from "./chunk-K5X25GUV.js";
3
+ } from "./chunk-RFIHLLRH.js";
4
4
 
5
5
  // src/bell/install.ts
6
6
  import { join } from "path";
@@ -14,19 +14,19 @@ import {
14
14
  } from "./chunk-FO3MDD26.js";
15
15
  import {
16
16
  callMcpTool
17
- } from "./chunk-BS64ZHTB.js";
17
+ } from "./chunk-Z5ORWTY3.js";
18
18
  import {
19
19
  reportedInstallSource
20
- } from "./chunk-5S2P2CK6.js";
20
+ } from "./chunk-GUHM2UQO.js";
21
21
  import {
22
22
  NPX_LATEST_COMMAND
23
- } from "./chunk-LL256PHP.js";
23
+ } from "./chunk-WXA3CFZR.js";
24
24
  import {
25
25
  NO_PAIRING_COMPUTER,
26
26
  PAIR_TTL_SECONDS,
27
27
  classifyConfirmResponse,
28
28
  isAnswerSource
29
- } from "./chunk-2DZBIELP.js";
29
+ } from "./chunk-235LKHLW.js";
30
30
 
31
31
  // src/reach.ts
32
32
  var reachVerdict = (channels) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-K5X25GUV.js";
3
+ } from "./chunk-RFIHLLRH.js";
4
4
  import {
5
5
  readJsonSafe,
6
6
  writeFileAtomic
@@ -13,7 +13,7 @@ import {
13
13
  serializeDeclinedAgents,
14
14
  withDeclinedAgent,
15
15
  withoutDeclinedAgent
16
- } from "./chunk-2DZBIELP.js";
16
+ } from "./chunk-235LKHLW.js";
17
17
 
18
18
  // src/declined-agents-file.ts
19
19
  import { join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-42FTY5II.js";
3
+ } from "./chunk-N5WEEYV6.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-BS64ZHTB.js";
3
+ } from "./chunk-Z5ORWTY3.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-LL256PHP.js";
6
+ } from "./chunk-WXA3CFZR.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-K5X25GUV.js";
3
+ } from "./chunk-RFIHLLRH.js";
4
4
  import {
5
5
  readJsonSafe
6
6
  } from "./chunk-AQFEP65J.js";
7
7
  import {
8
8
  isRecord
9
- } from "./chunk-2DZBIELP.js";
9
+ } from "./chunk-235LKHLW.js";
10
10
 
11
11
  // src/process-ownership.ts
12
12
  import { createHash, randomUUID } from "crypto";
@@ -6,38 +6,38 @@ import {
6
6
  } from "./chunk-DWQYCOPI.js";
7
7
  import {
8
8
  ensureDaemonRunning
9
- } from "./chunk-Y5FCB66K.js";
9
+ } from "./chunk-F3J6JFR2.js";
10
10
  import {
11
11
  buildTranscriptRecords,
12
12
  decodePublicKey,
13
13
  generateSessionKey,
14
14
  wrapSessionKey
15
- } from "./chunk-H3MOTS2C.js";
15
+ } from "./chunk-MAGB6VW6.js";
16
16
  import {
17
17
  fetchTranscriptRecipients,
18
18
  uploadTranscriptRecords
19
- } from "./chunk-X4BPD5RD.js";
19
+ } from "./chunk-PYWLW7PC.js";
20
20
  import {
21
21
  transcriptEnvironmentPreference,
22
22
  transcriptsEnabled
23
- } from "./chunk-QPUTCMAK.js";
23
+ } from "./chunk-HQR6DYVG.js";
24
24
  import {
25
25
  hookOwnerOf
26
- } from "./chunk-4NMDFPK7.js";
26
+ } from "./chunk-Q3TCLMYC.js";
27
27
  import {
28
28
  readTranscriptPreference
29
- } from "./chunk-42FTY5II.js";
29
+ } from "./chunk-N5WEEYV6.js";
30
30
  import {
31
31
  codexHome,
32
32
  pusharyDir
33
- } from "./chunk-K5X25GUV.js";
33
+ } from "./chunk-RFIHLLRH.js";
34
34
  import {
35
35
  writeJsonAtomic
36
36
  } from "./chunk-AQFEP65J.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
40
- } from "./chunk-PRKH662J.js";
40
+ } from "./chunk-AZXPJLKC.js";
41
41
 
42
42
  // src/transcript-registration.ts
43
43
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-K5X25GUV.js";
3
+ } from "./chunk-RFIHLLRH.js";
4
4
  import {
5
5
  writeFileAtomic
6
6
  } from "./chunk-AQFEP65J.js";
@@ -4,10 +4,10 @@ import {
4
4
  keyPrefix,
5
5
  readConfigFileKey,
6
6
  readMacAppKeyPrefix
7
- } from "./chunk-42FTY5II.js";
7
+ } from "./chunk-N5WEEYV6.js";
8
8
  import {
9
9
  NPX_LATEST_COMMAND
10
- } from "./chunk-LL256PHP.js";
10
+ } from "./chunk-WXA3CFZR.js";
11
11
 
12
12
  // src/key-signed-out.ts
13
13
  var VERDICT_BY_CHECK = {
@@ -2,7 +2,7 @@ import {
2
2
  IDLE_PROMPT_NOTIFICATION,
3
3
  NOTIFICATION_PUSH_TYPES,
4
4
  POSTTOOLUSE_MIRROR_ONLY_TOOLS
5
- } from "./chunk-U2PUHT4W.js";
5
+ } from "./chunk-QUKATQ66.js";
6
6
  import {
7
7
  cancelQuestion,
8
8
  clientErrorKindOf,
@@ -10,26 +10,26 @@ import {
10
10
  reportClientError,
11
11
  sendNotification,
12
12
  waitForAnswer
13
- } from "./chunk-FBKGGIFB.js";
13
+ } from "./chunk-HA22GGDG.js";
14
14
  import {
15
15
  withRetry
16
- } from "./chunk-BS64ZHTB.js";
16
+ } from "./chunk-Z5ORWTY3.js";
17
17
  import {
18
18
  getMachineId
19
- } from "./chunk-EGTVN6YV.js";
19
+ } from "./chunk-VA36Q6BD.js";
20
20
  import {
21
21
  reportedInstallSource
22
- } from "./chunk-5S2P2CK6.js";
22
+ } from "./chunk-GUHM2UQO.js";
23
23
  import {
24
24
  canonicalJson
25
- } from "./chunk-K5X25GUV.js";
25
+ } from "./chunk-RFIHLLRH.js";
26
26
  import {
27
27
  writeFileAtomic
28
28
  } from "./chunk-AQFEP65J.js";
29
29
  import {
30
30
  getApiKey,
31
31
  getBaseUrl
32
- } from "./chunk-PRKH662J.js";
32
+ } from "./chunk-AZXPJLKC.js";
33
33
  import {
34
34
  ACTION_BODY_MAX,
35
35
  AGENTS,
@@ -64,7 +64,7 @@ import {
64
64
  toToolLookup,
65
65
  truncateLine,
66
66
  unansweredRefusalReason
67
- } from "./chunk-2DZBIELP.js";
67
+ } from "./chunk-235LKHLW.js";
68
68
 
69
69
  // ../hook-mapping/src/describe.ts
70
70
  import { isAbsolute, relative, resolve } from "path";
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-2DZBIELP.js";
5
+ } from "./chunk-235LKHLW.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -10,10 +10,10 @@ import {
10
10
  resolvePackageVersionFromBinary,
11
11
  resolvePathBinary,
12
12
  resolvePathBinaryAsync
13
- } from "./chunk-K5X25GUV.js";
13
+ } from "./chunk-RFIHLLRH.js";
14
14
  import {
15
15
  MANAGED_PROVIDERS
16
- } from "./chunk-2DZBIELP.js";
16
+ } from "./chunk-235LKHLW.js";
17
17
 
18
18
  // src/setup/codex-install.ts
19
19
  var NATIVE_BINARY_MIN_BYTES = 20 * 1024 * 1024;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  keyCheckFromResponse
3
- } from "./chunk-GNESC5EF.js";
3
+ } from "./chunk-DYALNCS6.js";
4
4
  import {
5
5
  installNetworkDefaults
6
- } from "./chunk-CRZ4CP7C.js";
6
+ } from "./chunk-NWSWP3KY.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-PRKH662J.js";
9
+ } from "./chunk-AZXPJLKC.js";
10
10
 
11
11
  // src/retry.ts
12
12
  var isRetryable = (err) => {
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-L25KSDIB.js";
3
+ } from "./chunk-V7Q7DQXL.js";
4
4
  import {
5
5
  namedEvent
6
- } from "./chunk-SHLLDMPM.js";
6
+ } from "./chunk-KHLYOIPY.js";
7
7
  import {
8
8
  writeDegraded
9
- } from "./chunk-FBKGGIFB.js";
9
+ } from "./chunk-HA22GGDG.js";
10
10
  import {
11
11
  claudeShapedHookInput,
12
12
  hookCompatibleProfileBySource,
13
13
  isGrokHookPayload,
14
14
  isGrokSessionEndStop
15
- } from "./chunk-2DZBIELP.js";
15
+ } from "./chunk-235LKHLW.js";
16
16
 
17
17
  // src/tool-hook-input.ts
18
18
  var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode"];
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ensureCodexTrustsPusharyHooks
3
- } from "./chunk-CHNSFTD5.js";
3
+ } from "./chunk-B7SE22M7.js";
4
4
  import {
5
5
  detectClaudeVersion
6
6
  } from "./chunk-RIVNNBEK.js";
@@ -12,7 +12,7 @@ import {
12
12
  openCodeHookArgv,
13
13
  openCodePluginDir,
14
14
  openCodeWired
15
- } from "./chunk-CHWJ7ZXI.js";
15
+ } from "./chunk-HJF57K2U.js";
16
16
  import {
17
17
  addClaudeMcpServer,
18
18
  addCompatibleHooks,
@@ -20,7 +20,7 @@ import {
20
20
  addPusharyToolPermissions,
21
21
  compatibleConfigFile,
22
22
  hasCompatibleHooks
23
- } from "./chunk-SHLLDMPM.js";
23
+ } from "./chunk-KHLYOIPY.js";
24
24
  import {
25
25
  claudeUnprovenHolds,
26
26
  claudeWired,
@@ -28,7 +28,7 @@ import {
28
28
  codexWired,
29
29
  geminiWired,
30
30
  planHooks
31
- } from "./chunk-4NMDFPK7.js";
31
+ } from "./chunk-Q3TCLMYC.js";
32
32
  import {
33
33
  CLAUDE_HOOK_BINARY,
34
34
  CLAUDE_HOOK_EVENTS,
@@ -39,7 +39,7 @@ import {
39
39
  needsReregistration,
40
40
  registrationSignatures,
41
41
  supportedClaudeEvents
42
- } from "./chunk-ULDOQF4Q.js";
42
+ } from "./chunk-6SYU5LVK.js";
43
43
  import {
44
44
  formatVersion
45
45
  } from "./chunk-6ICPEJY5.js";
@@ -63,7 +63,7 @@ import {
63
63
  resolveGlobalBinDir,
64
64
  resolveGlobalBinary,
65
65
  vscodePluginMcp
66
- } from "./chunk-K5X25GUV.js";
66
+ } from "./chunk-RFIHLLRH.js";
67
67
  import {
68
68
  readJsonSafe,
69
69
  writeFileAtomic,
@@ -73,7 +73,7 @@ import {
73
73
  HOOK_COMPATIBLE_PROFILES,
74
74
  isCompatibleAgentType,
75
75
  isRecord
76
- } from "./chunk-2DZBIELP.js";
76
+ } from "./chunk-235LKHLW.js";
77
77
 
78
78
  // src/reapply.ts
79
79
  import { dirname, join } from "path";
@@ -5,15 +5,15 @@ import {
5
5
  readGlobalUpgradeSubject,
6
6
  upgradeInstalledPackage,
7
7
  withUpgradeLock
8
- } from "./chunk-RYXSY3RH.js";
9
- import "./chunk-55XIK7YS.js";
10
- import "./chunk-HCKBZYBW.js";
8
+ } from "./chunk-2WZJHJAB.js";
9
+ import "./chunk-ISNGKZG4.js";
10
+ import "./chunk-PDDJKGIW.js";
11
11
  import "./chunk-POFBE6ZY.js";
12
12
  import "./chunk-KZERVKTD.js";
13
- import "./chunk-K5X25GUV.js";
13
+ import "./chunk-RFIHLLRH.js";
14
14
  import "./chunk-AQFEP65J.js";
15
- import "./chunk-LL256PHP.js";
16
- import "./chunk-2DZBIELP.js";
15
+ import "./chunk-WXA3CFZR.js";
16
+ import "./chunk-235LKHLW.js";
17
17
  export {
18
18
  finishGlobalUpgrade,
19
19
  finishUpgradeWithLock,
@@ -32,8 +32,8 @@ import {
32
32
  pusharyDir,
33
33
  vscodePluginDir,
34
34
  vscodePluginMcp
35
- } from "./chunk-K5X25GUV.js";
36
- import "./chunk-2DZBIELP.js";
35
+ } from "./chunk-RFIHLLRH.js";
36
+ import "./chunk-235LKHLW.js";
37
37
  export {
38
38
  autoUpdateLock,
39
39
  autoUpdateLog,