@pushary/agent-hooks 1.9.4 → 1.9.6

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 (99) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/data/cowork/SKILL.md +11 -10
  3. package/dist/bin/pushary-bell-hook.js +23 -23
  4. package/dist/bin/pushary-bell.js +9 -9
  5. package/dist/bin/pushary-claude.js +26 -26
  6. package/dist/bin/pushary-clean.js +28 -28
  7. package/dist/bin/pushary-codex-bridge.js +18 -18
  8. package/dist/bin/pushary-codex-hook.js +31 -31
  9. package/dist/bin/pushary-codex.js +13 -13
  10. package/dist/bin/pushary-connect.js +13 -13
  11. package/dist/bin/pushary-cowork.js +5 -5
  12. package/dist/bin/pushary-daemon.js +26 -26
  13. package/dist/bin/pushary-disconnect.js +18 -18
  14. package/dist/bin/pushary-doctor.js +30 -30
  15. package/dist/bin/pushary-elicitation-hook.js +25 -25
  16. package/dist/bin/pushary-gemini-bridge.js +13 -13
  17. package/dist/bin/pushary-gemini-hook.js +28 -28
  18. package/dist/bin/pushary-hook.js +32 -32
  19. package/dist/bin/pushary-login.js +12 -12
  20. package/dist/bin/pushary-logout.js +7 -7
  21. package/dist/bin/pushary-mcp.js +9 -9
  22. package/dist/bin/pushary-mode.js +9 -9
  23. package/dist/bin/pushary-notification-hook.js +28 -28
  24. package/dist/bin/pushary-opencode-hook.js +27 -27
  25. package/dist/bin/pushary-permission-denied-hook.js +32 -32
  26. package/dist/bin/pushary-permission-hook.js +31 -31
  27. package/dist/bin/pushary-post-hook.js +28 -28
  28. package/dist/bin/pushary-prompt-hook.js +28 -28
  29. package/dist/bin/pushary-session-end-hook.js +28 -28
  30. package/dist/bin/pushary-session-start-hook.js +31 -31
  31. package/dist/bin/pushary-setup.js +73 -42
  32. package/dist/bin/pushary-stats.js +5 -5
  33. package/dist/bin/pushary-status.js +15 -15
  34. package/dist/bin/pushary-stop-hook.js +28 -28
  35. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  36. package/dist/bin/pushary-suggestions.js +4 -4
  37. package/dist/bin/pushary-transcript-register.js +19 -19
  38. package/dist/bin/pushary-transcripts.js +7 -7
  39. package/dist/bin/pushary-upgrade.js +21 -21
  40. package/dist/bin/pushary-wait.js +9 -9
  41. package/dist/bin/pushary.js +6 -6
  42. package/dist/{chunk-KO7UOTLD.js → chunk-2I23NFVT.js} +5 -5
  43. package/dist/{chunk-4GTXFYQ7.js → chunk-2QRE6QH2.js} +1 -1
  44. package/dist/{chunk-FSFI2PQL.js → chunk-3BUAEQCY.js} +1 -1
  45. package/dist/{chunk-7MO3CNBX.js → chunk-4QKM44N6.js} +3 -3
  46. package/dist/{chunk-Q4RF7EEP.js → chunk-5AXCOTIT.js} +1 -1
  47. package/dist/{chunk-ZPTSEJMD.js → chunk-5BHROGRB.js} +2 -2
  48. package/dist/{chunk-2OPAES7P.js → chunk-5PMTC2CB.js} +6 -6
  49. package/dist/{chunk-NGD7H3GZ.js → chunk-6GERGJHF.js} +2 -2
  50. package/dist/{chunk-U3DBAX7P.js → chunk-75CA37FZ.js} +2 -2
  51. package/dist/{chunk-ZV32QRBR.js → chunk-7JTVYR5B.js} +1 -1
  52. package/dist/{chunk-NZJ5LFMX.js → chunk-BSZ7VBVT.js} +10 -10
  53. package/dist/{chunk-HIQNUBWO.js → chunk-BVCHY4OY.js} +2 -2
  54. package/dist/{chunk-P3REVSM5.js → chunk-CBVDW2N6.js} +3 -3
  55. package/dist/{chunk-CJFVYYKM.js → chunk-CCDVL63C.js} +9 -9
  56. package/dist/{chunk-VRYOALHQ.js → chunk-D7SOOVHX.js} +3 -3
  57. package/dist/{chunk-PPC4FZKJ.js → chunk-DA4FTGTK.js} +4 -4
  58. package/dist/{chunk-Q7KSRRQ4.js → chunk-DGQTJDSJ.js} +1 -1
  59. package/dist/{chunk-HBUQ2EQD.js → chunk-DJ4BB264.js} +1 -1
  60. package/dist/{chunk-NP5RJL34.js → chunk-EVFY3VE6.js} +1 -1
  61. package/dist/{chunk-HPXFPXW7.js → chunk-EZAFBC2C.js} +1 -1
  62. package/dist/{chunk-FLUECSUC.js → chunk-F56SB65Y.js} +2 -2
  63. package/dist/{chunk-DEWCUHOY.js → chunk-FBD3QGVJ.js} +2 -2
  64. package/dist/{chunk-552AGATI.js → chunk-GQHZIBAZ.js} +1 -1
  65. package/dist/{chunk-5IIAUWEJ.js → chunk-HJXZJF6O.js} +4 -4
  66. package/dist/{chunk-KA2GI53J.js → chunk-HT3WMM6Q.js} +1 -1
  67. package/dist/{chunk-G2YXIZZS.js → chunk-HWQNQVY6.js} +2 -2
  68. package/dist/{chunk-QVUOPB32.js → chunk-IMGJYFCX.js} +2 -2
  69. package/dist/{chunk-ZUZKHTPJ.js → chunk-IR5FRUPQ.js} +3 -3
  70. package/dist/{chunk-WEK6US33.js → chunk-JUFKJCZG.js} +1 -1
  71. package/dist/{chunk-34JHGOYO.js → chunk-KK54WQ74.js} +1 -1
  72. package/dist/{chunk-EZFE4PC3.js → chunk-L6USMDTW.js} +1 -1
  73. package/dist/{chunk-Q7FLA4N3.js → chunk-LBLCFD5K.js} +1 -1
  74. package/dist/{chunk-AGW7PMMO.js → chunk-MKJ3RTUS.js} +2 -2
  75. package/dist/{chunk-GB2U4QVF.js → chunk-NVGDMTX3.js} +4 -4
  76. package/dist/{chunk-OEMF3KJ3.js → chunk-PYZC54KA.js} +5 -5
  77. package/dist/{chunk-2UWD2WZC.js → chunk-Q23MMVTD.js} +1 -1
  78. package/dist/{chunk-JDUWMJDP.js → chunk-Q4E56K4X.js} +15 -3
  79. package/dist/{chunk-OXJRUMZT.js → chunk-RDK7FX5F.js} +1 -1
  80. package/dist/{chunk-ZDKGUHPW.js → chunk-RIC6OOJX.js} +1 -1
  81. package/dist/{chunk-FANGHYW5.js → chunk-SJN22ADZ.js} +1 -1
  82. package/dist/{chunk-GOWCPJTP.js → chunk-SNJ3BOCP.js} +2 -2
  83. package/dist/{chunk-MH6SJHUE.js → chunk-SPXBXN23.js} +1 -1
  84. package/dist/{chunk-7FVC3RGF.js → chunk-SVTHEMM3.js} +6 -6
  85. package/dist/{chunk-VRPNTJX3.js → chunk-TE5M6GGK.js} +5 -5
  86. package/dist/{chunk-CVVPUVBD.js → chunk-UKNKYTTY.js} +3 -3
  87. package/dist/{chunk-AMFNJPJ5.js → chunk-VRT3EEZN.js} +8 -8
  88. package/dist/{chunk-WRDMCP4G.js → chunk-W4Q7NFXU.js} +3 -3
  89. package/dist/{chunk-UWMEY4RS.js → chunk-WN6WYUCV.js} +5 -5
  90. package/dist/{chunk-AUS3LY4N.js → chunk-WUKUXICK.js} +2 -2
  91. package/dist/{chunk-BPGATW2F.js → chunk-YPXUD6DW.js} +4 -4
  92. package/dist/{chunk-WL4YO6CO.js → chunk-ZC3TF4LR.js} +8 -7
  93. package/dist/{chunk-SJC5TXK7.js → chunk-ZPW4MJOV.js} +3 -3
  94. package/dist/{global-upgrade-VEQ4KQEW.js → global-upgrade-7F5RP45B.js} +6 -6
  95. package/dist/{paths-QTOUBV2V.js → paths-MELXIVBO.js} +2 -2
  96. package/dist/{reapply-T5PLCAGP.js → reapply-NOB2Q6C4.js} +8 -8
  97. package/dist/src/index.js +20 -20
  98. package/dist/{upgrade-lock-KFZBAPNU.js → upgrade-lock-AHRBA66K.js} +3 -3
  99. package/package.json +1 -1
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  describeKeyCheck,
6
6
  keyCheckFromResponse
7
- } from "./chunk-7MO3CNBX.js";
7
+ } from "./chunk-4QKM44N6.js";
8
8
  import {
9
9
  EXIT
10
10
  } from "./chunk-KZERVKTD.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-AMFNJPJ5.js";
3
+ } from "./chunk-VRT3EEZN.js";
4
4
  import {
5
5
  writeDegraded
6
- } from "./chunk-PPC4FZKJ.js";
6
+ } from "./chunk-DA4FTGTK.js";
7
7
 
8
8
  // src/tool-hook-input.ts
9
9
  var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode"];
@@ -8,10 +8,10 @@ import {
8
8
  codexHooksJsonIn,
9
9
  isPusharyCodexCommand,
10
10
  resolvePathBinary
11
- } from "./chunk-5IIAUWEJ.js";
11
+ } from "./chunk-HJXZJF6O.js";
12
12
  import {
13
13
  getPackageVersion
14
- } from "./chunk-JDUWMJDP.js";
14
+ } from "./chunk-Q4E56K4X.js";
15
15
 
16
16
  // src/codex-app-server.ts
17
17
  import { existsSync, realpathSync } from "fs";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  supportedClaudeEvents
4
- } from "./chunk-CVVPUVBD.js";
4
+ } from "./chunk-UKNKYTTY.js";
5
5
  import {
6
6
  guardBinary,
7
7
  holdBudgetOf,
8
8
  isProtectedByScope,
9
9
  registerHookEntry
10
- } from "./chunk-5IIAUWEJ.js";
10
+ } from "./chunk-HJXZJF6O.js";
11
11
  import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  withHookHoldBudget
14
- } from "./chunk-JDUWMJDP.js";
14
+ } from "./chunk-Q4E56K4X.js";
15
15
 
16
16
  // src/claude-config.ts
17
17
  import { join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-EZFE4PC3.js";
3
+ } from "./chunk-L6USMDTW.js";
4
4
 
5
5
  // src/setup/codex-trust.ts
6
6
  var CODEX_TRUST_TELEMETRY = {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readTranscriptPreference
3
- } from "./chunk-ZPTSEJMD.js";
3
+ } from "./chunk-5BHROGRB.js";
4
4
 
5
5
  // src/transcript-setting.ts
6
6
  var transcriptEnvironmentPreference = () => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_AGENT_CHOICES
3
- } from "./chunk-JDUWMJDP.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/cli/commands.ts
6
6
  var NPX_LATEST_COMMAND = "npx pushary@latest";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-ZPTSEJMD.js";
3
+ } from "./chunk-5BHROGRB.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";
@@ -10,10 +10,10 @@ import {
10
10
  resolvePackageVersionFromBinary,
11
11
  resolvePathBinary,
12
12
  resolvePathBinaryAsync
13
- } from "./chunk-5IIAUWEJ.js";
13
+ } from "./chunk-HJXZJF6O.js";
14
14
  import {
15
15
  MANAGED_PROVIDERS
16
- } from "./chunk-JDUWMJDP.js";
16
+ } from "./chunk-Q4E56K4X.js";
17
17
 
18
18
  // src/setup/codex-install.ts
19
19
  var NATIVE_BINARY_MIN_BYTES = 20 * 1024 * 1024;
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-MH6SJHUE.js";
3
+ } from "./chunk-SPXBXN23.js";
4
4
  import {
5
5
  isBridgeLocator
6
- } from "./chunk-FANGHYW5.js";
6
+ } from "./chunk-SJN22ADZ.js";
7
7
  import {
8
8
  pusharyHookExecutable
9
- } from "./chunk-VRYOALHQ.js";
9
+ } from "./chunk-D7SOOVHX.js";
10
10
  import {
11
11
  BELL_HOOK_BINARY
12
- } from "./chunk-2UWD2WZC.js";
12
+ } from "./chunk-Q23MMVTD.js";
13
13
 
14
14
  // src/setup/hook-ownership.ts
15
15
  var commandsIn = (value) => {
@@ -3,7 +3,7 @@ import {
3
3
  finishWithUpgradeLock,
4
4
  installWithUpgradeLock,
5
5
  releaseAutoUpdateLock
6
- } from "./chunk-HPXFPXW7.js";
6
+ } from "./chunk-EZAFBC2C.js";
7
7
  import {
8
8
  describeAutoUpdateCheck,
9
9
  globalInstallLocation,
@@ -11,7 +11,7 @@ import {
11
11
  readAutoUpdateState,
12
12
  updateAutoUpdateState,
13
13
  upgradeEntryFor
14
- } from "./chunk-GOWCPJTP.js";
14
+ } from "./chunk-SNJ3BOCP.js";
15
15
  import {
16
16
  EXIT
17
17
  } from "./chunk-KZERVKTD.js";
@@ -24,10 +24,10 @@ import {
24
24
  npmErrorMessage,
25
25
  readGlobalCliInstallAt,
26
26
  readGlobalPrefix
27
- } from "./chunk-5IIAUWEJ.js";
27
+ } from "./chunk-HJXZJF6O.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-EZFE4PC3.js";
30
+ } from "./chunk-L6USMDTW.js";
31
31
  import {
32
32
  commandsPackage,
33
33
  globalUpgradeEntry,
@@ -36,7 +36,7 @@ import {
36
36
  isSameMajorVersion,
37
37
  ownPackageRoot,
38
38
  packageVersionAt
39
- } from "./chunk-JDUWMJDP.js";
39
+ } from "./chunk-Q4E56K4X.js";
40
40
 
41
41
  // src/global-upgrade.ts
42
42
  import { existsSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  guardBinary
3
- } from "./chunk-5IIAUWEJ.js";
3
+ } from "./chunk-HJXZJF6O.js";
4
4
 
5
5
  // src/bell/install.ts
6
6
  import { join } from "path";
@@ -520,6 +520,8 @@ var redactSecretsDeep = (text) => redactSecrets(text).replace(HIGH_ENTROPY_RULE.
520
520
 
521
521
  // ../contracts/src/shell-analysis.ts
522
522
  var SHELL_WORD_SEPARATOR = /[ \t\n]/;
523
+ var ARITHMETIC_EVALUATING_EXPANSION = /\$[#+=~^]*(?:[A-Za-z_][A-Za-z0-9_]*|[0-9]+|[-?$!@*#])?\[/;
524
+ var VISIBLE_ESCAPE = /\\[\s\S]/g;
523
525
  var trimShellWhitespace = (command) => command.replace(/^[ \t\n]+|[ \t\n]+$/g, "");
524
526
  var DOUBLE_QUOTE_ESCAPABLE = /* @__PURE__ */ new Set(['"', "\\", "$", "`"]);
525
527
  var SEGMENT_SEPARATORS = /* @__PURE__ */ new Set([";", "\n", "&", "|"]);
@@ -576,6 +578,14 @@ var shellVisibleText = (command) => {
576
578
  }
577
579
  return visible;
578
580
  };
581
+ var isInertOutsideExpansion = ({ quote, kind }) => kind === "escape" || kind === "text" && quote === "'";
582
+ var opensArithmeticEvaluation = (command) => {
583
+ const lexemes = scanShell(command);
584
+ if (lexemes === null) return true;
585
+ const expandableText = lexemes.map((lexeme) => isInertOutsideExpansion(lexeme) ? "_".repeat(lexeme.text.length) : lexeme.text).join("");
586
+ return ARITHMETIC_EVALUATING_EXPANSION.test(expandableText);
587
+ };
588
+ var withoutShellEscapes = (visible) => visible.replace(VISIBLE_ESCAPE, (escape) => "_".repeat(escape.length));
579
589
  var shellWordsOf = (command) => {
580
590
  const lexemes = scanShell(command);
581
591
  if (lexemes === null) return null;
@@ -1047,7 +1057,6 @@ var SAFE_SHELL_COMMANDS = /* @__PURE__ */ new Set([
1047
1057
  "tail",
1048
1058
  "wc",
1049
1059
  "echo",
1050
- "printf",
1051
1060
  "which",
1052
1061
  "type",
1053
1062
  "whoami",
@@ -1220,6 +1229,7 @@ var isSafeSimpleCommand = (segment) => {
1220
1229
  }
1221
1230
  if (exe === "sed") return isPrintOnlySed(tokens.slice(1));
1222
1231
  if (exe === "date") return isReadOnlyDate(tokens.slice(1));
1232
+ if (exe === "printf") return isOutputOnlyPrintf(tokens.slice(1));
1223
1233
  return SAFE_SHELL_COMMANDS.has(exe);
1224
1234
  };
1225
1235
  var SED_PRINT_ONLY_SCRIPT = /^(?:\d+|\$)(?:,(?:\d+|\$))?p$/;
@@ -1229,11 +1239,12 @@ var DATE_UTC_FLAG = "-u";
1229
1239
  var isFlagToken = (token) => token.startsWith("-");
1230
1240
  var isPrintOnlySed = (args) => args[0] === SED_QUIET_FLAG && SED_PRINT_ONLY_SCRIPT.test(args[1] ?? "") && !args.slice(2).some(isFlagToken);
1231
1241
  var isReadOnlyDate = (args) => args.every((arg) => arg.startsWith(DATE_FORMAT_PREFIX) || arg === DATE_UTC_FLAG);
1242
+ var isOutputOnlyPrintf = (args) => args[0] === END_OF_OPTIONS || !isFlagToken(args[0] ?? "");
1232
1243
  var READ_ONLY_SEGMENT_SEPARATOR = /&&|\|\||[;|]/g;
1233
1244
  var PIPELINE_CHAIN_SEPARATOR = /&&|\|\||;/g;
1234
1245
  var EXPANSION_THAT_CAN_BECOME_A_FLAG = /\$|(?:^|\s)[*?[]/;
1235
1246
  var SHELL_QUOTE_CHARACTERS = /['"]/g;
1236
- var INSPECTED_ARGUMENT_COMMANDS = /* @__PURE__ */ new Set(["git", "find", "sed", "date"]);
1247
+ var INSPECTED_ARGUMENT_COMMANDS = /* @__PURE__ */ new Set(["git", "find", "sed", "date", "printf"]);
1237
1248
  var argumentsMayExpand = (segment) => {
1238
1249
  const visible = shellVisibleText(segment);
1239
1250
  return visible === null || EXPANSION_THAT_CAN_BECOME_A_FLAG.test(visible.replace(SHELL_QUOTE_CHARACTERS, ""));
@@ -1242,7 +1253,7 @@ var blankedSafeRedirections = (text) => text.replace(SAFE_REDIRECTION, (redirect
1242
1253
  var segmentsSplitWhereVisible = (command, visible, separators) => {
1243
1254
  const segments = [];
1244
1255
  let start = 0;
1245
- for (const separator of visible.matchAll(separators)) {
1256
+ for (const separator of withoutShellEscapes(visible).matchAll(separators)) {
1246
1257
  segments.push(command.slice(start, separator.index));
1247
1258
  start = separator.index + separator[0].length;
1248
1259
  }
@@ -1257,6 +1268,7 @@ var isSafeReadOnlyCommand = (command) => {
1257
1268
  if (visible === null || /[`{}]|\$'/.test(visible)) return false;
1258
1269
  if (/\\(?![()!])/.test(visible)) return false;
1259
1270
  if (/(?<!\\)[()]/.test(visible)) return false;
1271
+ if (opensArithmeticEvaluation(trimmed)) return false;
1260
1272
  const visibleWithoutRedirection = blankedSafeRedirections(visible);
1261
1273
  if (/[<>]/.test(visibleWithoutRedirection)) return false;
1262
1274
  if (visibleWithoutRedirection.replace(/&&/g, " ").includes("&")) return false;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-5IIAUWEJ.js";
3
+ } from "./chunk-HJXZJF6O.js";
4
4
  import {
5
5
  readJsonSafe
6
6
  } from "./chunk-T7E75EKA.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_BUDGETS,
3
3
  OPENCODE_APPROVAL_EVENT
4
- } from "./chunk-JDUWMJDP.js";
4
+ } from "./chunk-Q4E56K4X.js";
5
5
 
6
6
  // src/opencode-plugin.ts
7
7
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HOOK_LOCATOR_BINARY
3
- } from "./chunk-JDUWMJDP.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/diagnostics/bridge.ts
6
6
  import { execFileSync } from "child_process";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-5IIAUWEJ.js";
6
+ } from "./chunk-HJXZJF6O.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
@@ -14,7 +14,7 @@ import {
14
14
  cliPackagePathSegments,
15
15
  globalUpgradeEntry,
16
16
  ownPackageRoot
17
- } from "./chunk-JDUWMJDP.js";
17
+ } from "./chunk-Q4E56K4X.js";
18
18
 
19
19
  // src/auto-update.ts
20
20
  import { spawn } from "child_process";
@@ -9,7 +9,7 @@ import {
9
9
  SETUP_CONNECT_MODES,
10
10
  isSetupConnectMode,
11
11
  isValidApiKey
12
- } from "./chunk-JDUWMJDP.js";
12
+ } from "./chunk-Q4E56K4X.js";
13
13
 
14
14
  // src/setup/options.ts
15
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
@@ -3,27 +3,27 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-AGW7PMMO.js";
6
+ } from "./chunk-MKJ3RTUS.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-WL4YO6CO.js";
13
+ } from "./chunk-ZC3TF4LR.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-ZPTSEJMD.js";
17
+ } from "./chunk-5BHROGRB.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-FSFI2PQL.js";
20
+ } from "./chunk-3BUAEQCY.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-4GTXFYQ7.js";
23
+ } from "./chunk-2QRE6QH2.js";
24
24
  import {
25
25
  getPackageVersion
26
- } from "./chunk-JDUWMJDP.js";
26
+ } from "./chunk-Q4E56K4X.js";
27
27
 
28
28
  // src/machines.ts
29
29
  import { hostname } from "os";
@@ -3,28 +3,28 @@ import {
3
3
  addPusharyToolPermissions,
4
4
  isPusharyHook,
5
5
  removeClaudeMcpServers
6
- } from "./chunk-ZUZKHTPJ.js";
6
+ } from "./chunk-IR5FRUPQ.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  addGeminiMcpServer,
10
10
  removeGeminiMcpServer
11
- } from "./chunk-CVVPUVBD.js";
11
+ } from "./chunk-UKNKYTTY.js";
12
12
  import {
13
13
  CLAUDE_CODE_AGENT,
14
14
  parseApplyPatchFiles
15
- } from "./chunk-CJFVYYKM.js";
15
+ } from "./chunk-CCDVL63C.js";
16
16
  import {
17
17
  guardBinary,
18
18
  holdBudgetOf,
19
19
  registerHookEntry
20
- } from "./chunk-5IIAUWEJ.js";
20
+ } from "./chunk-HJXZJF6O.js";
21
21
  import {
22
22
  PHONE_ANSWERED_TOOLS,
23
23
  hookCompatibleProfile,
24
24
  hookCompatibleProfileBySource,
25
25
  toToolLookup,
26
26
  withHookHoldBudget
27
- } from "./chunk-JDUWMJDP.js";
27
+ } from "./chunk-Q4E56K4X.js";
28
28
 
29
29
  // src/compatible-config.ts
30
30
  import { homedir } from "os";
@@ -5,16 +5,16 @@ import {
5
5
  import {
6
6
  NOTIFICATION_MATCHED_TYPES,
7
7
  POSTTOOLUSE_MIRRORED_TOOLS
8
- } from "./chunk-HBUQ2EQD.js";
8
+ } from "./chunk-DJ4BB264.js";
9
9
  import {
10
10
  isProtectedByScope,
11
11
  registerHookEntry
12
- } from "./chunk-5IIAUWEJ.js";
12
+ } from "./chunk-HJXZJF6O.js";
13
13
  import {
14
14
  CLAUDE_PRETOOLUSE_MATCHER,
15
15
  HOOK_BUDGETS,
16
16
  HOOK_LOCATOR_BINARY
17
- } from "./chunk-JDUWMJDP.js";
17
+ } from "./chunk-Q4E56K4X.js";
18
18
 
19
19
  // src/gemini-config.ts
20
20
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -6,38 +6,38 @@ import {
6
6
  } from "./chunk-SGZJ5LYH.js";
7
7
  import {
8
8
  hookOwnerOf
9
- } from "./chunk-GB2U4QVF.js";
9
+ } from "./chunk-NVGDMTX3.js";
10
10
  import {
11
11
  ensureDaemonRunning
12
- } from "./chunk-WL4YO6CO.js";
12
+ } from "./chunk-ZC3TF4LR.js";
13
13
  import {
14
14
  buildTranscriptRecords,
15
15
  decodePublicKey,
16
16
  generateSessionKey,
17
17
  wrapSessionKey
18
- } from "./chunk-Q4RF7EEP.js";
18
+ } from "./chunk-5AXCOTIT.js";
19
19
  import {
20
20
  fetchTranscriptRecipients,
21
21
  uploadTranscriptRecords
22
- } from "./chunk-ZV32QRBR.js";
22
+ } from "./chunk-7JTVYR5B.js";
23
23
  import {
24
24
  transcriptEnvironmentPreference,
25
25
  transcriptsEnabled
26
- } from "./chunk-34JHGOYO.js";
26
+ } from "./chunk-KK54WQ74.js";
27
27
  import {
28
28
  readTranscriptPreference
29
- } from "./chunk-ZPTSEJMD.js";
29
+ } from "./chunk-5BHROGRB.js";
30
30
  import {
31
31
  codexHome,
32
32
  pusharyDir
33
- } from "./chunk-5IIAUWEJ.js";
33
+ } from "./chunk-HJXZJF6O.js";
34
34
  import {
35
35
  writeJsonAtomic
36
36
  } from "./chunk-T7E75EKA.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
40
- } from "./chunk-4GTXFYQ7.js";
40
+ } from "./chunk-2QRE6QH2.js";
41
41
 
42
42
  // src/transcript-registration.ts
43
43
  import { createHash } from "crypto";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-FSFI2PQL.js";
3
+ } from "./chunk-3BUAEQCY.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-7QLSKOSU.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-4GTXFYQ7.js";
9
+ } from "./chunk-2QRE6QH2.js";
10
10
  import {
11
11
  clientContextHeaders,
12
12
  getPackageVersion
13
- } from "./chunk-JDUWMJDP.js";
13
+ } from "./chunk-Q4E56K4X.js";
14
14
 
15
15
  // src/cli/net.ts
16
16
  import { createRequire } from "module";
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  clientErrorKindOf,
3
3
  reportClientError
4
- } from "./chunk-PPC4FZKJ.js";
4
+ } from "./chunk-DA4FTGTK.js";
5
5
  import {
6
6
  SubscriptionRequiredError,
7
7
  callMcpTool
8
- } from "./chunk-SJC5TXK7.js";
8
+ } from "./chunk-ZPW4MJOV.js";
9
9
  import {
10
10
  installNetworkDefaults
11
- } from "./chunk-WRDMCP4G.js";
11
+ } from "./chunk-W4Q7NFXU.js";
12
12
  import {
13
13
  getBaseUrl
14
- } from "./chunk-4GTXFYQ7.js";
14
+ } from "./chunk-2QRE6QH2.js";
15
15
  import {
16
16
  ASK_AGENT_NAME_MAX,
17
17
  ASK_QUESTION_MAX,
18
18
  DECISION_LINE_MAX,
19
19
  truncateLine
20
- } from "./chunk-JDUWMJDP.js";
20
+ } from "./chunk-Q4E56K4X.js";
21
21
 
22
22
  // src/api.ts
23
23
  import { randomUUID } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-SJC5TXK7.js";
3
+ } from "./chunk-ZPW4MJOV.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-EZFE4PC3.js";
6
+ } from "./chunk-L6USMDTW.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -14,19 +14,19 @@ import {
14
14
  } from "./chunk-U4TMAANR.js";
15
15
  import {
16
16
  callMcpTool
17
- } from "./chunk-SJC5TXK7.js";
17
+ } from "./chunk-ZPW4MJOV.js";
18
18
  import {
19
19
  reportedInstallSource
20
- } from "./chunk-U3DBAX7P.js";
20
+ } from "./chunk-75CA37FZ.js";
21
21
  import {
22
22
  NPX_LATEST_COMMAND
23
- } from "./chunk-EZFE4PC3.js";
23
+ } from "./chunk-L6USMDTW.js";
24
24
  import {
25
25
  NO_PAIRING_COMPUTER,
26
26
  PAIR_TTL_SECONDS,
27
27
  classifyConfirmResponse,
28
28
  isAnswerSource
29
- } from "./chunk-JDUWMJDP.js";
29
+ } from "./chunk-Q4E56K4X.js";
30
30
 
31
31
  // src/reach.ts
32
32
  var reachVerdict = (channels) => {
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-ZPTSEJMD.js";
7
+ } from "./chunk-5BHROGRB.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-FSFI2PQL.js";
10
+ } from "./chunk-3BUAEQCY.js";
11
11
  import {
12
12
  pusharyDir,
13
13
  resolveGlobalBinary
14
- } from "./chunk-5IIAUWEJ.js";
14
+ } from "./chunk-HJXZJF6O.js";
15
15
  import {
16
16
  readJsonSafe,
17
17
  writeFileAtomic,
@@ -20,14 +20,14 @@ import {
20
20
  } from "./chunk-T7E75EKA.js";
21
21
  import {
22
22
  getApiKey
23
- } from "./chunk-4GTXFYQ7.js";
23
+ } from "./chunk-2QRE6QH2.js";
24
24
  import {
25
25
  CLI_PACKAGE_NAMES,
26
26
  cmdShimTarget,
27
27
  getPackageVersion,
28
28
  globalPackageFolder,
29
29
  globalRootFor
30
- } from "./chunk-JDUWMJDP.js";
30
+ } from "./chunk-Q4E56K4X.js";
31
31
 
32
32
  // src/daemon-lifecycle.ts
33
33
  import { dirname, join, win32 as win32Path } from "path";
@@ -38,6 +38,7 @@ import { execFileSync } from "child_process";
38
38
  var daemonNeedsHandoff = (status) => status.kind === "version-mismatch" || status.kind === "configuration-mismatch" || status.kind === "unresponsive" && status.processAlive === true;
39
39
  var DAEMON_REMOTE_PROOF_MAX_AGE_MS = 18e4;
40
40
  var DAEMON_REMOTE_PROOF_CLOCK_SKEW_MS = 3e4;
41
+ var DAEMON_STARTUP_TIMEOUT_MS = 3e4;
41
42
  var remoteProofIsFresh = (timestamp, now) => {
42
43
  if (timestamp === null) return false;
43
44
  const age = now - Date.parse(timestamp);
@@ -1070,7 +1071,7 @@ var ensureDaemonRunning = async (options = {}) => {
1070
1071
  }
1071
1072
  const sleep = options.sleep ?? wait;
1072
1073
  const pollIntervalMs = options.pollIntervalMs ?? 50;
1073
- const attempts = Math.max(1, Math.ceil((options.waitTimeoutMs ?? 5e3) / pollIntervalMs));
1074
+ const attempts = Math.max(1, Math.ceil((options.waitTimeoutMs ?? DAEMON_STARTUP_TIMEOUT_MS) / pollIntervalMs));
1074
1075
  if (handoffStatus.kind === "running") return { kind: "running", status: handoffStatus };
1075
1076
  if (daemonNeedsHandoff(handoffStatus)) {
1076
1077
  return { kind: "unavailable", status: handoffStatus, detail: "unhealthy daemon did not yield" };
@@ -1095,7 +1096,7 @@ var ensureDaemonRunning = async (options = {}) => {
1095
1096
  var waitForDaemonRemoteProof = async (options = {}) => {
1096
1097
  const sleep = options.sleep ?? wait;
1097
1098
  const pollIntervalMs = options.pollIntervalMs ?? 250;
1098
- const attempts = Math.max(1, Math.ceil((options.waitTimeoutMs ?? 5e3) / pollIntervalMs));
1099
+ const attempts = Math.max(1, Math.ceil((options.waitTimeoutMs ?? DAEMON_STARTUP_TIMEOUT_MS) / pollIntervalMs));
1099
1100
  let status = readDaemonStatus(options);
1100
1101
  for (let attempt = 0; attempt < attempts; attempt++) {
1101
1102
  status = readDaemonStatus(options);
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  keyCheckFromResponse
3
- } from "./chunk-7MO3CNBX.js";
3
+ } from "./chunk-4QKM44N6.js";
4
4
  import {
5
5
  installNetworkDefaults
6
- } from "./chunk-WRDMCP4G.js";
6
+ } from "./chunk-W4Q7NFXU.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-4GTXFYQ7.js";
9
+ } from "./chunk-2QRE6QH2.js";
10
10
 
11
11
  // src/retry.ts
12
12
  var isRetryable = (err) => {
@@ -5,15 +5,15 @@ import {
5
5
  readGlobalUpgradeSubject,
6
6
  upgradeInstalledPackage,
7
7
  withUpgradeLock
8
- } from "./chunk-OEMF3KJ3.js";
9
- import "./chunk-HPXFPXW7.js";
10
- import "./chunk-GOWCPJTP.js";
8
+ } from "./chunk-PYZC54KA.js";
9
+ import "./chunk-EZAFBC2C.js";
10
+ import "./chunk-SNJ3BOCP.js";
11
11
  import "./chunk-POFBE6ZY.js";
12
12
  import "./chunk-KZERVKTD.js";
13
- import "./chunk-5IIAUWEJ.js";
13
+ import "./chunk-HJXZJF6O.js";
14
14
  import "./chunk-T7E75EKA.js";
15
- import "./chunk-EZFE4PC3.js";
16
- import "./chunk-JDUWMJDP.js";
15
+ import "./chunk-L6USMDTW.js";
16
+ import "./chunk-Q4E56K4X.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-5IIAUWEJ.js";
36
- import "./chunk-JDUWMJDP.js";
35
+ } from "./chunk-HJXZJF6O.js";
36
+ import "./chunk-Q4E56K4X.js";
37
37
  export {
38
38
  autoUpdateLock,
39
39
  autoUpdateLog,