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
@@ -14,7 +14,7 @@ import {
14
14
  describeIdleWindow,
15
15
  idleDeadlinePassed,
16
16
  startProcessOwnership
17
- } from "./chunk-JLUMELYR.js";
17
+ } from "./chunk-O55LZDLD.js";
18
18
  import {
19
19
  repositoryScopeFor
20
20
  } from "./chunk-2QWQCU7L.js";
@@ -24,14 +24,14 @@ import {
24
24
  isWaitForAnswerResponse,
25
25
  withdrawQuestion,
26
26
  writeDegraded
27
- } from "./chunk-7ZTVBYPE.js";
27
+ } from "./chunk-HVJIITL4.js";
28
28
  import {
29
29
  callMcpTool,
30
30
  isRetryable
31
- } from "./chunk-SO44USAF.js";
31
+ } from "./chunk-ALRDG7SI.js";
32
32
  import {
33
33
  spawnClaude
34
- } from "./chunk-XHKBHWLX.js";
34
+ } from "./chunk-NKV5AALF.js";
35
35
  import {
36
36
  AGENT_QUESTION_DESCRIPTION_MAX,
37
37
  AGENT_QUESTION_HEADER_MAX,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  cursorGateOwnsClaudeCall,
3
3
  readCursorGateRegistration
4
- } from "./chunk-C2L477NM.js";
4
+ } from "./chunk-Z7RGHFAW.js";
5
5
  import {
6
6
  registerTranscript
7
- } from "./chunk-QPS5STKF.js";
7
+ } from "./chunk-WVFKRWPE.js";
8
8
  import {
9
9
  namedEvent
10
- } from "./chunk-BLBK7VV7.js";
10
+ } from "./chunk-KEJFRU2Q.js";
11
11
  import {
12
12
  writeDegraded
13
- } from "./chunk-7ZTVBYPE.js";
13
+ } from "./chunk-HVJIITL4.js";
14
14
  import {
15
15
  claudeShapedHookInput,
16
16
  hookCompatibleProfileBySource,
@@ -6,17 +6,17 @@ import {
6
6
  McpToolError,
7
7
  SubscriptionRequiredError,
8
8
  callMcpTool
9
- } from "./chunk-SO44USAF.js";
9
+ } from "./chunk-ALRDG7SI.js";
10
10
  import {
11
11
  installNetworkDefaults,
12
12
  isNetworkFailure
13
- } from "./chunk-2M7ZV6NA.js";
13
+ } from "./chunk-E27MPYOC.js";
14
14
  import {
15
15
  fetchAsCredential
16
16
  } from "./chunk-E5LU5MJ2.js";
17
17
  import {
18
18
  clientReportClaims
19
- } from "./chunk-EUIDFLPM.js";
19
+ } from "./chunk-LCFSGKQW.js";
20
20
  import {
21
21
  getApiKey,
22
22
  getBaseUrl
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  APPROVAL_RULES_PATH,
3
3
  canChangeApprovalSettings
4
- } from "./chunk-DK6R5IVR.js";
4
+ } from "./chunk-VRUVMUHN.js";
5
5
  import {
6
6
  callMcpTool
7
- } from "./chunk-SO44USAF.js";
7
+ } from "./chunk-ALRDG7SI.js";
8
8
  import {
9
9
  absoluteUrl
10
- } from "./chunk-B5OX2WCA.js";
10
+ } from "./chunk-J35EMNLD.js";
11
11
  import {
12
12
  getBaseUrl
13
13
  } from "./chunk-2M7FELUY.js";
@@ -3,10 +3,10 @@ import {
3
3
  forkFinishWithUpgradeLock,
4
4
  installWithUpgradeLock,
5
5
  releaseAutoUpdateLock
6
- } from "./chunk-I2D23TBS.js";
6
+ } from "./chunk-DPXOELLZ.js";
7
7
  import {
8
8
  phoneStartIsRequired
9
- } from "./chunk-MXUQJIQS.js";
9
+ } from "./chunk-4CSFH736.js";
10
10
  import {
11
11
  describeAutoUpdateCheck,
12
12
  globalInstallLocation,
@@ -18,19 +18,19 @@ import {
18
18
  readAutoUpdateState,
19
19
  updateAutoUpdateState,
20
20
  upgradeEntryFor
21
- } from "./chunk-STGEWWFW.js";
21
+ } from "./chunk-VKIQR33O.js";
22
22
  import {
23
23
  autoUpdateLock,
24
24
  autoUpdateLog,
25
25
  autoUpdateState
26
- } from "./chunk-EUIDFLPM.js";
26
+ } from "./chunk-LCFSGKQW.js";
27
27
  import {
28
28
  execNpm,
29
29
  fetchLatestPublishedVersion,
30
30
  npmErrorMessage,
31
31
  readGlobalCliInstallAt,
32
32
  readGlobalPrefix
33
- } from "./chunk-KQKHSJOM.js";
33
+ } from "./chunk-WJ4W33WN.js";
34
34
  import {
35
35
  EXIT
36
36
  } from "./chunk-BG4HHB7E.js";
@@ -45,7 +45,7 @@ import {
45
45
  isSameMajorVersion,
46
46
  ownPackageRoot,
47
47
  packageVersionAt
48
- } from "./chunk-ZVU6WMMU.js";
48
+ } from "./chunk-WIIMW5YO.js";
49
49
 
50
50
  // src/global-upgrade.ts
51
51
  import { existsSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-2M7ZV6NA.js";
3
+ } from "./chunk-E27MPYOC.js";
4
4
  import {
5
5
  getBaseUrl
6
6
  } from "./chunk-2M7FELUY.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  announceSubscriptionRequired,
3
3
  isDeferAnswer
4
- } from "./chunk-JW6JSBGS.js";
4
+ } from "./chunk-44ONTVVI.js";
5
5
  import {
6
6
  askUser,
7
7
  isDecisionStopped,
8
8
  isQuestionLimitRefusal,
9
9
  waitForQuestion
10
- } from "./chunk-7ZTVBYPE.js";
10
+ } from "./chunk-HVJIITL4.js";
11
11
  import {
12
12
  SubscriptionRequiredError
13
- } from "./chunk-SO44USAF.js";
13
+ } from "./chunk-ALRDG7SI.js";
14
14
  import {
15
15
  getMachineId
16
- } from "./chunk-RBPPX663.js";
16
+ } from "./chunk-TQBYF3W6.js";
17
17
  import {
18
18
  ASK_CONTEXT_MAX,
19
19
  agentQuestionContext,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  CLAUDE_CODE_AGENT
3
- } from "./chunk-I365OPWV.js";
3
+ } from "./chunk-GFCAZD2W.js";
4
4
  import {
5
5
  addGeminiMcpServer,
6
6
  removeGeminiMcpServer
7
- } from "./chunk-Q3KKA5IZ.js";
7
+ } from "./chunk-PWTW7E5H.js";
8
8
  import {
9
9
  compatibleToolLookup
10
10
  } from "./chunk-7OSBFMRV.js";
@@ -19,7 +19,7 @@ import {
19
19
  isPusharyHook,
20
20
  registerHookEntry,
21
21
  removeClaudeMcpServers
22
- } from "./chunk-EUIDFLPM.js";
22
+ } from "./chunk-LCFSGKQW.js";
23
23
  import {
24
24
  HOOK_COMPATIBLE_PROFILES,
25
25
  PHONE_ANSWERED_TOOLS,
@@ -3,17 +3,17 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-MXUQJIQS.js";
6
+ } from "./chunk-4CSFH736.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-UXGGVCH5.js";
13
+ } from "./chunk-27GQFR5J.js";
14
14
  import {
15
15
  getMachineId
16
- } from "./chunk-RBPPX663.js";
16
+ } from "./chunk-TQBYF3W6.js";
17
17
  import {
18
18
  readControlMode,
19
19
  readKeySource
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-2M7FELUY.js";
24
24
  import {
25
25
  getPackageVersion
26
- } from "./chunk-ZVU6WMMU.js";
26
+ } from "./chunk-WIIMW5YO.js";
27
27
 
28
28
  // src/machines.ts
29
29
  import { hostname } from "os";
@@ -3,13 +3,13 @@ import {
3
3
  formatVersion,
4
4
  quoteIfNeeded,
5
5
  shellDoubleQuoted
6
- } from "./chunk-KQKHSJOM.js";
6
+ } from "./chunk-WJ4W33WN.js";
7
7
  import {
8
8
  writeFileAtomic
9
9
  } from "./chunk-T5I4PKOQ.js";
10
10
  import {
11
11
  cmdShimScriptOf
12
- } from "./chunk-ZVU6WMMU.js";
12
+ } from "./chunk-WIIMW5YO.js";
13
13
  import {
14
14
  CLAUDE_MCP_PRETOOLUSE_MATCHER,
15
15
  CLAUDE_PRETOOLUSE_MATCHER,
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  MANAGED_CLAUDE_SETTINGS_BY_PLATFORM
3
- } from "./chunk-PO6ECYXG.js";
3
+ } from "./chunk-YZHVM5LY.js";
4
4
  import {
5
5
  declinedAgentsFile,
6
6
  readDeclinedAgents
7
- } from "./chunk-EBJ5QUVE.js";
7
+ } from "./chunk-XNKE67NJ.js";
8
8
  import {
9
9
  OPENCODE_HOOK_BINARY,
10
10
  openCodeConfigDir,
11
11
  openCodePluginArgv,
12
12
  openCodePluginFile
13
- } from "./chunk-YZ74AFIU.js";
13
+ } from "./chunk-X4MUM7JK.js";
14
14
  import {
15
15
  liveCursorGateCoverage
16
- } from "./chunk-C2L477NM.js";
16
+ } from "./chunk-Z7RGHFAW.js";
17
17
  import {
18
18
  compatibleConfigFile,
19
19
  compatibleHookEvents,
20
20
  grokHome,
21
21
  parseConfigDocument
22
- } from "./chunk-BLBK7VV7.js";
22
+ } from "./chunk-KEJFRU2Q.js";
23
23
  import {
24
24
  DEFAULT_HOOKS_KEY_PATH,
25
25
  GEMINI_HOOK_BINARY,
26
26
  GEMINI_HOOK_EVENTS,
27
27
  hooksAt
28
- } from "./chunk-Q3KKA5IZ.js";
28
+ } from "./chunk-PWTW7E5H.js";
29
29
  import {
30
30
  CODEX_EARLIER_APPROVAL_MATCHERS,
31
31
  CODEX_HOOK_BINARY,
@@ -53,7 +53,7 @@ import {
53
53
  parseHookArgv,
54
54
  parseHookCommand,
55
55
  supportedClaudeEvents
56
- } from "./chunk-EUIDFLPM.js";
56
+ } from "./chunk-LCFSGKQW.js";
57
57
  import {
58
58
  readRegularJsonFile,
59
59
  readRegularTextFile
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  compatibleConfigFile,
3
3
  hasCompatibleHooks
4
- } from "./chunk-BLBK7VV7.js";
4
+ } from "./chunk-KEJFRU2Q.js";
5
5
  import {
6
6
  pusharyHookExecutable
7
- } from "./chunk-Q3KKA5IZ.js";
7
+ } from "./chunk-PWTW7E5H.js";
8
8
  import {
9
9
  isProtectedByScope,
10
10
  registerHookEntry
11
- } from "./chunk-EUIDFLPM.js";
11
+ } from "./chunk-LCFSGKQW.js";
12
12
  import {
13
13
  isRecord
14
14
  } from "./chunk-HI5YJFKW.js";
@@ -0,0 +1,62 @@
1
+ import {
2
+ isFile
3
+ } from "./chunk-T5I4PKOQ.js";
4
+ import {
5
+ cmdShimLaunchOf
6
+ } from "./chunk-WIIMW5YO.js";
7
+
8
+ // src/wrapper/spawnClaude.ts
9
+ import { spawn } from "child_process";
10
+ import { readFileSync } from "fs";
11
+ import { win32 } from "path";
12
+ var needsShell = (binary, platform = process.platform) => platform === "win32" && /\.(cmd|bat)$/i.test(binary);
13
+ var WINDOWS_NODE = "node.exe";
14
+ var WINDOWS_NODE_SHIMS = ["node.cmd", "node.bat"];
15
+ var SURROUNDING_QUOTES = /^"(.*)"$/;
16
+ var absolutePathEntries = (pathEnv) => pathEnv.split(";").map((entry) => entry.trim().replace(SURROUNDING_QUOTES, "$1")).filter((entry) => win32.isAbsolute(entry));
17
+ var firstNodeOnPath = (host) => {
18
+ for (const folder of absolutePathEntries(host.pathEnv)) {
19
+ const program = win32.join(folder, WINDOWS_NODE);
20
+ if (host.isFile(program)) return { kind: "program", path: program };
21
+ if (WINDOWS_NODE_SHIMS.some((shim) => host.isFile(win32.join(folder, shim)))) return { kind: "shim_comes_first" };
22
+ }
23
+ return { kind: "absent" };
24
+ };
25
+ var nodeTheShimWouldRun = (shim, host) => {
26
+ const besideShim = win32.join(win32.dirname(shim), WINDOWS_NODE);
27
+ if (host.isFile(besideShim)) return besideShim;
28
+ const onPath = firstNodeOnPath(host);
29
+ return onPath.kind === "program" ? onPath.path : host.execPath;
30
+ };
31
+ var pathOf = (env) => {
32
+ const key = Object.keys(env).find((name) => name.toUpperCase() === "PATH");
33
+ return key === void 0 ? "" : env[key] ?? "";
34
+ };
35
+ var processLaunchFor = (binary, args, host) => {
36
+ if (!needsShell(binary, host.platform)) return { kind: "direct", command: binary, args };
37
+ const shim = cmdShimLaunchOf(binary, host.readFile);
38
+ switch (shim.kind) {
39
+ case "node_script":
40
+ return { kind: "direct", command: nodeTheShimWouldRun(binary, host), args: [shim.script, ...args] };
41
+ case "executable":
42
+ return { kind: "direct", command: shim.executable, args };
43
+ case "unrecognised":
44
+ return { kind: "through_shell", command: `"${binary}"`, args };
45
+ }
46
+ };
47
+ var localShimHost = (env) => ({
48
+ platform: process.platform,
49
+ readFile: (path) => readFileSync(path, "utf8"),
50
+ isFile,
51
+ pathEnv: pathOf(env),
52
+ execPath: process.execPath
53
+ });
54
+ var spawnClaude = (binary, args, options) => {
55
+ const launch = processLaunchFor(binary, args, localShimHost(options.env ?? process.env));
56
+ return spawn(launch.command, [...launch.args], { ...options, shell: launch.kind === "through_shell" });
57
+ };
58
+
59
+ export {
60
+ needsShell,
61
+ spawnClaude
62
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-EUIDFLPM.js";
3
+ } from "./chunk-LCFSGKQW.js";
4
4
  import {
5
5
  readJsonSafe
6
6
  } from "./chunk-T5I4PKOQ.js";
@@ -4,10 +4,10 @@ import {
4
4
  configFailureKind,
5
5
  retryAgentCommand,
6
6
  writeSetupConfigFile
7
- } from "./chunk-MKUFVNZL.js";
7
+ } from "./chunk-2FIS7KDD.js";
8
8
  import {
9
9
  MCP_BRIDGE_BINARY
10
- } from "./chunk-PO5Z73HT.js";
10
+ } from "./chunk-FMUNFP4O.js";
11
11
  import {
12
12
  KEY_FILE_MODE
13
13
  } from "./chunk-SZV5SLSD.js";
@@ -32,10 +32,10 @@ import {
32
32
  withClinePusharyServer,
33
33
  withRefreshedClineKey,
34
34
  withoutClinePusharyServer
35
- } from "./chunk-EUIDFLPM.js";
35
+ } from "./chunk-LCFSGKQW.js";
36
36
  import {
37
37
  resolveGlobalBinary
38
- } from "./chunk-KQKHSJOM.js";
38
+ } from "./chunk-WJ4W33WN.js";
39
39
  import {
40
40
  readJsonSafe,
41
41
  writeFileAtomic,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  macAppBridgeAvailable
3
- } from "./chunk-YZ74AFIU.js";
3
+ } from "./chunk-X4MUM7JK.js";
4
4
  import {
5
5
  keyPrefix
6
6
  } from "./chunk-SZV5SLSD.js";
7
7
  import {
8
8
  bridgeAgentKey
9
- } from "./chunk-EUIDFLPM.js";
9
+ } from "./chunk-LCFSGKQW.js";
10
10
  import {
11
11
  readJsonSafe
12
12
  } from "./chunk-T5I4PKOQ.js";
@@ -4,7 +4,7 @@ import {
4
4
  claimThrottle,
5
5
  releaseThrottle,
6
6
  reportEvent
7
- } from "./chunk-I365OPWV.js";
7
+ } from "./chunk-GFCAZD2W.js";
8
8
  import {
9
9
  deriveToolTarget,
10
10
  permissionDeniedAction
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-LS3CQ536.js";
4
4
  import {
5
5
  BELL_HOOK_BINARY
6
- } from "./chunk-DRYQ7RLF.js";
6
+ } from "./chunk-FXLWWEVQ.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  CODEX_HOOK_EVENTS,
@@ -15,7 +15,7 @@ import {
15
15
  isBridgeLocator,
16
16
  isProtectedByScope,
17
17
  registerHookEntry
18
- } from "./chunk-EUIDFLPM.js";
18
+ } from "./chunk-LCFSGKQW.js";
19
19
  import {
20
20
  CURSOR_GATE_EVENTS,
21
21
  HOOK_BUDGETS,
@@ -9,13 +9,13 @@ import {
9
9
  installedCodexApp,
10
10
  readCodexAppRuntime,
11
11
  shellQuoted
12
- } from "./chunk-XUN23MM6.js";
12
+ } from "./chunk-XRJU7CZ2.js";
13
13
  import {
14
14
  writeHuman
15
15
  } from "./chunk-QCGNGEGE.js";
16
16
  import {
17
17
  xml
18
- } from "./chunk-UXGGVCH5.js";
18
+ } from "./chunk-27GQFR5J.js";
19
19
  import {
20
20
  writeFileAtomic
21
21
  } from "./chunk-T5I4PKOQ.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-EUIDFLPM.js";
3
+ } from "./chunk-LCFSGKQW.js";
4
4
  import {
5
5
  writeFileAtomic
6
6
  } from "./chunk-T5I4PKOQ.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ROVLRXBI.js";
4
4
  import {
5
5
  parseVersion
6
- } from "./chunk-KQKHSJOM.js";
6
+ } from "./chunk-WJ4W33WN.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-HI5YJFKW.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-EUIDFLPM.js";
6
+ } from "./chunk-LCFSGKQW.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-ZVU6WMMU.js";
17
+ } from "./chunk-WIIMW5YO.js";
18
18
  import {
19
19
  isAutoUpdateResult
20
20
  } from "./chunk-HI5YJFKW.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-NLEHRQHL.js";
6
6
  import {
7
7
  APPROVAL_RULES_PATH
8
- } from "./chunk-DK6R5IVR.js";
8
+ } from "./chunk-VRUVMUHN.js";
9
9
  import {
10
10
  createIo
11
11
  } from "./chunk-FO3MDD26.js";
@@ -14,7 +14,7 @@ import {
14
14
  checkApiKey,
15
15
  describeKeyCheck,
16
16
  keyCheckFromResponse
17
- } from "./chunk-B5OX2WCA.js";
17
+ } from "./chunk-J35EMNLD.js";
18
18
  import {
19
19
  readKeySource
20
20
  } from "./chunk-SZV5SLSD.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  absoluteUrl
3
- } from "./chunk-B5OX2WCA.js";
3
+ } from "./chunk-J35EMNLD.js";
4
4
  import {
5
5
  KEY_SCOPE
6
6
  } from "./chunk-HI5YJFKW.js";
@@ -44,14 +44,41 @@ var cmdShimTarget = (shimDir, contents) => {
44
44
  return relativeTarget === void 0 ? void 0 : win32.resolve(shimDir, relativeTarget);
45
45
  };
46
46
  var CMD_SHIM = /\.cmd$/i;
47
- var cmdShimScriptOf = (shim, readFile) => {
48
- if (!CMD_SHIM.test(shim)) return void 0;
47
+ var readShim = (shim, readFile) => {
49
48
  try {
50
- return cmdShimTarget(win32.dirname(shim), readFile(shim));
49
+ return readFile(shim);
51
50
  } catch {
52
51
  return void 0;
53
52
  }
54
53
  };
54
+ var cmdShimScriptOf = (shim, readFile) => {
55
+ if (!CMD_SHIM.test(shim)) return void 0;
56
+ const contents = readShim(shim, readFile);
57
+ return contents === void 0 ? void 0 : cmdShimTarget(win32.dirname(shim), contents);
58
+ };
59
+ var UNRECOGNISED_SHIM = { kind: "unrecognised" };
60
+ var CMD_SHIM_NODE_LAUNCH = /"%_prog%"[ \t]+"%(?:~dp0|dp0%)\\([^"]+?)"[ \t]+%[*]/;
61
+ var CMD_SHIM_PROGRAM_IS_NODE = /^\s*SET "_prog=node"\s*$/im;
62
+ var CMD_SHIM_SETS_ANOTHER_VARIABLE = /^\s*@?SET\s+(?!"_prog=|PATHEXT=|dp0=)/im;
63
+ var CMD_SHIM_RUNS_A_PROGRAM = /%_prog%/i;
64
+ var CMD_SHIM_FORWARDED_ARGUMENTS = /%[*]/g;
65
+ var CMD_SHIM_EXECUTABLE_LAUNCH = /"%(?:~dp0|dp0%)\\([^"]+?\.exe)"[ \t]+%[*]/i;
66
+ var executableShimLaunch = (shimDir, contents) => {
67
+ const executable = CMD_SHIM_EXECUTABLE_LAUNCH.exec(contents)?.[1];
68
+ return executable === void 0 ? UNRECOGNISED_SHIM : { kind: "executable", executable: win32.resolve(shimDir, executable) };
69
+ };
70
+ var forwardsArgumentsOnce = (contents) => (contents.match(CMD_SHIM_FORWARDED_ARGUMENTS)?.length ?? 0) === 1;
71
+ var cmdShimLaunchOf = (shim, readFile) => {
72
+ if (!CMD_SHIM.test(shim)) return UNRECOGNISED_SHIM;
73
+ const contents = readShim(shim, readFile);
74
+ if (contents === void 0 || CMD_SHIM_SETS_ANOTHER_VARIABLE.test(contents) || !forwardsArgumentsOnce(contents)) return UNRECOGNISED_SHIM;
75
+ const shimDir = win32.dirname(shim);
76
+ const nodeTarget = CMD_SHIM_NODE_LAUNCH.exec(contents)?.[1];
77
+ if (nodeTarget !== void 0) {
78
+ return CMD_SHIM_PROGRAM_IS_NODE.test(contents) ? { kind: "node_script", script: win32.resolve(shimDir, nodeTarget) } : UNRECOGNISED_SHIM;
79
+ }
80
+ return CMD_SHIM_RUNS_A_PROGRAM.test(contents) ? UNRECOGNISED_SHIM : executableShimLaunch(shimDir, contents);
81
+ };
55
82
  var launchedPackage = (ownName) => ownName ?? LEGACY_PACKAGE;
56
83
  var globalInstallTarget = (owner, ownName) => {
57
84
  switch (owner.kind) {
@@ -163,6 +190,7 @@ export {
163
190
  decideCommandOwner,
164
191
  cmdShimTarget,
165
192
  cmdShimScriptOf,
193
+ cmdShimLaunchOf,
166
194
  launchedPackage,
167
195
  globalInstallTarget,
168
196
  classifyGlobalFolder,
@@ -10,7 +10,7 @@ import {
10
10
  globalRootFor,
11
11
  isReleaseVersion,
12
12
  ownPackageName
13
- } from "./chunk-ZVU6WMMU.js";
13
+ } from "./chunk-WIIMW5YO.js";
14
14
 
15
15
  // src/shell-quote.ts
16
16
  var shellDoubleQuoted = (text) => `"${text.replace(/(["\\$`])/g, "\\$1")}"`;
@@ -399,9 +399,9 @@ var installGlobally = (options) => {
399
399
  }
400
400
  const started = (async () => {
401
401
  if (!npmIsOnPath()) throw new NpmMissingError();
402
- const { withUpgradeLock } = await import("./global-upgrade-SIAPPAFR.js");
403
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-YT4O5QW6.js");
404
- const { autoUpdateLock } = await import("./paths-346XNBFK.js");
402
+ const { withUpgradeLock } = await import("./global-upgrade-LBL5RJV5.js");
403
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-MU5RYC57.js");
404
+ const { autoUpdateLock } = await import("./paths-JK4EFG5J.js");
405
405
  let result = "skipped";
406
406
  const install = async () => {
407
407
  const platform = process.platform;
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-G66WIAST.js";
8
8
  import {
9
9
  ensureDaemonRunning
10
- } from "./chunk-UXGGVCH5.js";
10
+ } from "./chunk-27GQFR5J.js";
11
11
  import {
12
12
  hookOwnerOf
13
- } from "./chunk-Q3KKA5IZ.js";
13
+ } from "./chunk-PWTW7E5H.js";
14
14
  import {
15
15
  hookMeaning
16
16
  } from "./chunk-7OSBFMRV.js";
@@ -42,7 +42,7 @@ import {
42
42
  claudeConfigDir,
43
43
  codexHome,
44
44
  pusharyDir
45
- } from "./chunk-EUIDFLPM.js";
45
+ } from "./chunk-LCFSGKQW.js";
46
46
  import {
47
47
  getApiKey,
48
48
  getBaseUrl
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  compatibleConfigFile
3
- } from "./chunk-BLBK7VV7.js";
3
+ } from "./chunk-KEJFRU2Q.js";
4
4
  import {
5
5
  hookOwnerOf,
6
6
  hookOwnerOfCommands
7
- } from "./chunk-Q3KKA5IZ.js";
7
+ } from "./chunk-PWTW7E5H.js";
8
8
  import {
9
9
  AGENT_CHOICES
10
10
  } from "./chunk-LS3CQ536.js";
@@ -19,7 +19,7 @@ import {
19
19
  resolveBridgeStub,
20
20
  vscodePluginDir,
21
21
  windowsNodeLauncherFor
22
- } from "./chunk-EUIDFLPM.js";
22
+ } from "./chunk-LCFSGKQW.js";
23
23
  import {
24
24
  readJsonSafe
25
25
  } from "./chunk-T5I4PKOQ.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-EUIDFLPM.js";
3
+ } from "./chunk-LCFSGKQW.js";
4
4
  import {
5
5
  readRegularJsonFile,
6
6
  writeFileAtomic