pushary 1.9.109 → 1.9.111

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 (127) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{api-YCDTPFT7.js → api-AESRTYYT.js} +11 -10
  3. package/dist/bin/pushary-audit.js +3 -3
  4. package/dist/bin/pushary-bell-hook.js +27 -26
  5. package/dist/bin/pushary-bell.js +10 -10
  6. package/dist/bin/pushary-claude.js +25 -24
  7. package/dist/bin/pushary-clean.js +34 -33
  8. package/dist/bin/pushary-codex-bridge.js +21 -20
  9. package/dist/bin/pushary-codex-hook.js +32 -31
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +15 -14
  12. package/dist/bin/pushary-connect.js +28 -27
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +41 -40
  15. package/dist/bin/pushary-disconnect.js +27 -26
  16. package/dist/bin/pushary-display-hook.js +17 -16
  17. package/dist/bin/pushary-doctor.js +42 -41
  18. package/dist/bin/pushary-elicitation-hook.js +27 -26
  19. package/dist/bin/pushary-gemini-bridge.js +15 -14
  20. package/dist/bin/pushary-gemini-hook.js +29 -28
  21. package/dist/bin/pushary-hook.js +32 -31
  22. package/dist/bin/pushary-login.js +21 -20
  23. package/dist/bin/pushary-logout.js +26 -25
  24. package/dist/bin/pushary-mcp.js +12 -11
  25. package/dist/bin/pushary-mode.js +15 -15
  26. package/dist/bin/pushary-notification-hook.js +26 -25
  27. package/dist/bin/pushary-opencode-hook.js +28 -27
  28. package/dist/bin/pushary-permission-denied-hook.js +32 -31
  29. package/dist/bin/pushary-permission-hook.js +32 -31
  30. package/dist/bin/pushary-post-hook.js +26 -25
  31. package/dist/bin/pushary-prompt-hook.js +26 -25
  32. package/dist/bin/pushary-session-end-hook.js +26 -25
  33. package/dist/bin/pushary-session-start-hook.js +35 -34
  34. package/dist/bin/pushary-setup.js +46 -45
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +32 -31
  37. package/dist/bin/pushary-stop-hook.js +26 -25
  38. package/dist/bin/pushary-stopfailure-hook.js +26 -25
  39. package/dist/bin/pushary-suggestions.js +15 -15
  40. package/dist/bin/pushary-transcript-register.js +17 -16
  41. package/dist/bin/pushary-transcripts.js +25 -24
  42. package/dist/bin/pushary-upgrade.js +40 -39
  43. package/dist/bin/pushary-wait.js +15 -15
  44. package/dist/bin/pushary.js +7 -7
  45. package/dist/{chunk-BDAT6H7J.js → chunk-262UYDKT.js} +6 -3
  46. package/dist/{chunk-QMUSLBVA.js → chunk-2MOWY5QL.js} +5 -5
  47. package/dist/{chunk-QPNYMNB7.js → chunk-37F75NBN.js} +2 -2
  48. package/dist/{chunk-BFXJUZUH.js → chunk-3AX5BKYN.js} +2 -2
  49. package/dist/{chunk-DYA7VIL6.js → chunk-4AKZALX4.js} +14 -14
  50. package/dist/{chunk-FIFSPMQZ.js → chunk-4M6VUUTX.js} +3 -3
  51. package/dist/{chunk-K6E24TJ6.js → chunk-54DPX27B.js} +1 -1
  52. package/dist/{chunk-BUBLUKJM.js → chunk-56ANL3UO.js} +13 -10
  53. package/dist/{chunk-4BDOUP4B.js → chunk-5EEW4WIS.js} +5 -5
  54. package/dist/{chunk-G6PHMB3F.js → chunk-5RVL2CQK.js} +3 -3
  55. package/dist/{chunk-7VIJBCMF.js → chunk-75UJ7W6H.js} +2 -2
  56. package/dist/{chunk-F3O5VDQL.js → chunk-76ATPJN2.js} +4 -4
  57. package/dist/{chunk-PEWTRW6S.js → chunk-7HDO5W4C.js} +24 -16
  58. package/dist/{chunk-PZ3X6NFM.js → chunk-AW7IJ56H.js} +4 -4
  59. package/dist/{chunk-3X3FNKAE.js → chunk-BH5WEDQ4.js} +1 -1
  60. package/dist/{chunk-U6LVSHBR.js → chunk-BM32JPXJ.js} +7 -7
  61. package/dist/{chunk-XUKBMRT2.js → chunk-CIT4NO5H.js} +4 -4
  62. package/dist/{chunk-KCKLLGMW.js → chunk-DEHWKUKF.js} +4 -4
  63. package/dist/{chunk-SALM3IYQ.js → chunk-DZE26BID.js} +467 -28
  64. package/dist/{chunk-FR25IWL7.js → chunk-EPMIBLCE.js} +9 -6
  65. package/dist/{chunk-EMEF7ALE.js → chunk-FE7HSLTK.js} +5 -5
  66. package/dist/{chunk-UC2NBQS3.js → chunk-FYVRA5GN.js} +1 -1
  67. package/dist/{chunk-GU7AN46G.js → chunk-G2TTGQ5A.js} +10 -10
  68. package/dist/{chunk-7S262556.js → chunk-G42VQNBC.js} +1 -1
  69. package/dist/{chunk-KCDWWT42.js → chunk-GXTW3W45.js} +1 -1
  70. package/dist/{chunk-MYDTSPIZ.js → chunk-KHWNW4AS.js} +1 -1
  71. package/dist/{chunk-S442423U.js → chunk-KICQRZAT.js} +1 -1
  72. package/dist/{chunk-ULTBTBMV.js → chunk-KLCT2YQD.js} +6 -6
  73. package/dist/{chunk-S7LMAMMY.js → chunk-LDE7L7XO.js} +4 -4
  74. package/dist/{chunk-R7D2YAXW.js → chunk-LMECI62A.js} +6 -6
  75. package/dist/{chunk-I4THVOUC.js → chunk-LTVILMEZ.js} +2 -2
  76. package/dist/{chunk-7KBKJ2KH.js → chunk-LUFKWK7N.js} +3 -3
  77. package/dist/{chunk-VZVEZILS.js → chunk-M73Q37LC.js} +2 -2
  78. package/dist/{chunk-WU3TP2TP.js → chunk-N2VH44GL.js} +6 -6
  79. package/dist/{chunk-ANKVTTB3.js → chunk-NHDTSA7V.js} +1 -1
  80. package/dist/{chunk-4SUNBCR6.js → chunk-NUU2JVOG.js} +3 -3
  81. package/dist/{chunk-UK4Z3X75.js → chunk-NVPCETJ3.js} +1 -1
  82. package/dist/{chunk-3YY6CUU7.js → chunk-NZZFIIH6.js} +4 -4
  83. package/dist/{chunk-ZMZG32RS.js → chunk-O2MZQPP4.js} +7 -3
  84. package/dist/{chunk-RXRKX646.js → chunk-O76PTPKP.js} +1 -1
  85. package/dist/{chunk-QNUGTQKZ.js → chunk-OECCPPO6.js} +3 -3
  86. package/dist/{chunk-KK5YNO2M.js → chunk-PCFIYMK4.js} +2 -2
  87. package/dist/{chunk-X5VHTPAD.js → chunk-PTBWLU4G.js} +5 -5
  88. package/dist/chunk-PYAPWXVP.js +81 -0
  89. package/dist/{chunk-6OSRPTDX.js → chunk-Q63L3VBY.js} +4 -4
  90. package/dist/{chunk-MAWFWQLR.js → chunk-QQMT2JIC.js} +3 -3
  91. package/dist/{chunk-SDZBQQEK.js → chunk-QVGE26SZ.js} +4 -4
  92. package/dist/{chunk-HLZIHAUY.js → chunk-R3KDA7JB.js} +3 -3
  93. package/dist/{chunk-YB2S73VZ.js → chunk-RBM2ROSY.js} +1 -1
  94. package/dist/{chunk-T3B2L64E.js → chunk-RFFIAX33.js} +2 -2
  95. package/dist/{chunk-S2NBNU4K.js → chunk-RUORT3DE.js} +5 -5
  96. package/dist/{chunk-J5EAU44S.js → chunk-SDQQ43FT.js} +1 -1
  97. package/dist/{chunk-II6M23WI.js → chunk-SSW4QRGU.js} +6 -6
  98. package/dist/{chunk-FYK7JV2R.js → chunk-TILEGY4M.js} +11 -8
  99. package/dist/{chunk-VKGSGULO.js → chunk-UN2QALQO.js} +5 -5
  100. package/dist/{chunk-TKJJWIR4.js → chunk-VA4OGALQ.js} +2 -2
  101. package/dist/{chunk-V25XPPEY.js → chunk-WO46WX65.js} +2 -2
  102. package/dist/{chunk-M6SP3FZF.js → chunk-X2XXKXC5.js} +3 -3
  103. package/dist/{chunk-JOF3TPDT.js → chunk-X5P3IO37.js} +2 -2
  104. package/dist/{chunk-4472LNSQ.js → chunk-XJ4PMNCR.js} +1 -1
  105. package/dist/{chunk-P7LHBBM5.js → chunk-Y3N7LIFV.js} +3 -3
  106. package/dist/{chunk-GNOSBEUB.js → chunk-YBQF7DCL.js} +1 -1
  107. package/dist/{chunk-3OPHZY7L.js → chunk-YHHWO4IU.js} +1 -1
  108. package/dist/{chunk-MMHBNMHK.js → chunk-YI5I2TF3.js} +3 -3
  109. package/dist/{chunk-F7BLCVHZ.js → chunk-YILMWIZN.js} +2 -2
  110. package/dist/{chunk-SCQRKKGL.js → chunk-YNTB3MIQ.js} +1 -1
  111. package/dist/{chunk-3SFUJREU.js → chunk-YQMARTNQ.js} +2 -2
  112. package/dist/{chunk-TIU3TP36.js → chunk-YXFLZ2LO.js} +2 -2
  113. package/dist/{chunk-H3FRQS4V.js → chunk-ZLLQO4RU.js} +6 -6
  114. package/dist/{codex-app-cards-switch-CQIIZDPU.js → codex-app-cards-switch-SXY732CY.js} +11 -11
  115. package/dist/{codex-card-routing-KIFZHIHM.js → codex-card-routing-K5FNOTBK.js} +2 -2
  116. package/dist/{codex-desktop-launch-YPISWZJX.js → codex-desktop-launch-SMWGCLWW.js} +1 -1
  117. package/dist/{codex-session-launch-ZL5WZXD7.js → codex-session-launch-MDMNYCCG.js} +18 -17
  118. package/dist/{config-3V3AT3AR.js → config-3R7UVC67.js} +3 -3
  119. package/dist/{global-upgrade-DI4JAPW6.js → global-upgrade-2BXXJQHR.js} +9 -9
  120. package/dist/{identity-XP7JUJJR.js → identity-N45XKYBA.js} +4 -4
  121. package/dist/{live-capabilities-TFDE3XNS.js → live-capabilities-YT7CENI2.js} +4 -4
  122. package/dist/{paths-ZC5TUIHB.js → paths-A2TITMY3.js} +3 -3
  123. package/dist/{reapply-T2BYF7XY.js → reapply-O4TGPUVZ.js} +28 -27
  124. package/dist/src/index.js +31 -30
  125. package/dist/{upgrade-lock-IWVHMUXK.js → upgrade-lock-HYD3MFFS.js} +4 -4
  126. package/dist/{usage-Z6WWH3ED.js → usage-PTPB2XF6.js} +3 -3
  127. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  readMacAppAgentKey
3
- } from "./chunk-F3O5VDQL.js";
3
+ } from "./chunk-76ATPJN2.js";
4
4
  import {
5
5
  API_KEYS_PATH
6
- } from "./chunk-7VIJBCMF.js";
6
+ } from "./chunk-75UJ7W6H.js";
7
7
  import {
8
8
  absoluteUrl
9
- } from "./chunk-QNUGTQKZ.js";
9
+ } from "./chunk-OECCPPO6.js";
10
10
  import {
11
11
  findExportedKeyLines,
12
12
  isAdoptedMacAppKey,
@@ -16,10 +16,10 @@ import {
16
16
  readConfigFileKey,
17
17
  readKeySource,
18
18
  readMacAppKeyPrefix
19
- } from "./chunk-4SUNBCR6.js";
19
+ } from "./chunk-NUU2JVOG.js";
20
20
  import {
21
21
  isValidApiKey
22
- } from "./chunk-SALM3IYQ.js";
22
+ } from "./chunk-DZE26BID.js";
23
23
 
24
24
  // src/key-revocation.ts
25
25
  var SELF_REVOKE_PATH = "/api/v1/server/keys/self/revoke";
@@ -24,7 +24,7 @@ import {
24
24
  reportableSessionId,
25
25
  toToolLookup,
26
26
  truncateLine
27
- } from "./chunk-SALM3IYQ.js";
27
+ } from "./chunk-DZE26BID.js";
28
28
 
29
29
  // ../hook-mapping/src/commit-receipt.ts
30
30
  var COMMIT_OUTPUT_MAX_LENGTH = 65536;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ensureCodexTrustsPusharyHooks
3
- } from "./chunk-BFXJUZUH.js";
3
+ } from "./chunk-3AX5BKYN.js";
4
4
  import {
5
5
  hermesReceiptPaths,
6
6
  hermesSetupPredatesThePluginFolder,
7
7
  installHermesPlugin,
8
8
  refreshHermesPluginFiles,
9
9
  shippedHermesPlugin
10
- } from "./chunk-FIFSPMQZ.js";
10
+ } from "./chunk-4M6VUUTX.js";
11
11
  import {
12
12
  fxIgnoresInstructionsFile,
13
13
  fxInstructionsBody,
@@ -16,7 +16,7 @@ import {
16
16
  macAppFxBridge,
17
17
  refreshClineKey,
18
18
  switchFxHttpEntryToBridge
19
- } from "./chunk-4BDOUP4B.js";
19
+ } from "./chunk-5EEW4WIS.js";
20
20
  import {
21
21
  OPENCODE_HOOK_BINARY,
22
22
  agentHookOwner,
@@ -28,16 +28,16 @@ import {
28
28
  openCodePluginDir,
29
29
  openCodeWired,
30
30
  withOpenCodeAskRules
31
- } from "./chunk-VKGSGULO.js";
31
+ } from "./chunk-UN2QALQO.js";
32
32
  import {
33
33
  detectClaudeVersion
34
- } from "./chunk-V25XPPEY.js";
34
+ } from "./chunk-WO46WX65.js";
35
35
  import {
36
36
  addCompatibleHooks,
37
37
  compatibleConfigFile,
38
38
  compatibleInstructionsFile,
39
39
  hasCompatibleHooks
40
- } from "./chunk-S2NBNU4K.js";
40
+ } from "./chunk-RUORT3DE.js";
41
41
  import {
42
42
  GEMINI_HOOK_BINARY,
43
43
  addGeminiHooks,
@@ -49,7 +49,7 @@ import {
49
49
  geminiWired,
50
50
  hasGeminiHooks,
51
51
  planHooks
52
- } from "./chunk-3YY6CUU7.js";
52
+ } from "./chunk-NZZFIIH6.js";
53
53
  import {
54
54
  CLAUDE_HOOK_BINARY,
55
55
  CLAUDE_HOOK_EVENTS,
@@ -95,13 +95,13 @@ import {
95
95
  renderAgentInstructions,
96
96
  supportedClaudeEvents,
97
97
  vscodePluginMcp
98
- } from "./chunk-KK5YNO2M.js";
98
+ } from "./chunk-PCFIYMK4.js";
99
99
  import {
100
100
  formatVersion,
101
101
  hookCommandsUseBareNames,
102
102
  resolveGlobalBinDir,
103
103
  resolveGlobalBinary
104
- } from "./chunk-MAWFWQLR.js";
104
+ } from "./chunk-QQMT2JIC.js";
105
105
  import {
106
106
  readJsonSafe,
107
107
  writeFileAtomic,
@@ -111,7 +111,7 @@ import {
111
111
  HOOK_COMPATIBLE_PROFILES,
112
112
  isCompatibleAgentType,
113
113
  isRecord
114
- } from "./chunk-SALM3IYQ.js";
114
+ } from "./chunk-DZE26BID.js";
115
115
 
116
116
  // src/reapply.ts
117
117
  import { dirname, join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readTranscriptPreference
3
- } from "./chunk-4SUNBCR6.js";
3
+ } from "./chunk-NUU2JVOG.js";
4
4
 
5
5
  // src/transcript-setting.ts
6
6
  var transcriptEnvironmentPreference = () => {
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-BG4HHB7E.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-SALM3IYQ.js";
10
+ } from "./chunk-DZE26BID.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-SALM3IYQ.js";
5
+ } from "./chunk-DZE26BID.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_HOLD_BUDGET_ENV,
3
3
  hookHoldBudgetProof
4
- } from "./chunk-SALM3IYQ.js";
4
+ } from "./chunk-DZE26BID.js";
5
5
 
6
6
  // src/hold-budget.ts
7
7
  var takeHookHoldBudget = (args = process.argv.slice(2), env = process.env) => {
@@ -4,7 +4,7 @@ import {
4
4
  postLiveSession,
5
5
  postLiveSessionUntilAccepted,
6
6
  startLiveSessionHeartbeat
7
- } from "./chunk-SCQRKKGL.js";
7
+ } from "./chunk-YNTB3MIQ.js";
8
8
  import {
9
9
  CommandReceipts,
10
10
  controllerCommandSchema
@@ -14,21 +14,21 @@ import {
14
14
  describeIdleWindow,
15
15
  idleDeadlinePassed,
16
16
  startProcessOwnership
17
- } from "./chunk-QPNYMNB7.js";
17
+ } from "./chunk-37F75NBN.js";
18
18
  import {
19
19
  repositoryScopeFor
20
- } from "./chunk-UK4Z3X75.js";
20
+ } from "./chunk-NVPCETJ3.js";
21
21
  import {
22
22
  isAskUserResponse,
23
23
  isDecisionStopped,
24
24
  isWaitForAnswerResponse,
25
25
  withdrawQuestion,
26
26
  writeDegraded
27
- } from "./chunk-FYK7JV2R.js";
27
+ } from "./chunk-TILEGY4M.js";
28
28
  import {
29
29
  callMcpTool,
30
30
  isRetryable
31
- } from "./chunk-FR25IWL7.js";
31
+ } from "./chunk-EPMIBLCE.js";
32
32
  import {
33
33
  spawnClaude
34
34
  } from "./chunk-XHKBHWLX.js";
@@ -52,7 +52,7 @@ import {
52
52
  parseCodexQuestions,
53
53
  planElicitationAsk,
54
54
  readElicitationFields
55
- } from "./chunk-SALM3IYQ.js";
55
+ } from "./chunk-DZE26BID.js";
56
56
 
57
57
  // src/codex-question-owner.ts
58
58
  import { createHash } from "crypto";
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-WU3TP2TP.js";
15
+ } from "./chunk-N2VH44GL.js";
16
16
  import {
17
17
  humanIsTty,
18
18
  writeHuman
@@ -24,14 +24,14 @@ import {
24
24
  } from "./chunk-FO3MDD26.js";
25
25
  import {
26
26
  reportedInstallSource
27
- } from "./chunk-I4THVOUC.js";
27
+ } from "./chunk-LTVILMEZ.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-MYDTSPIZ.js";
30
+ } from "./chunk-KHWNW4AS.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-SALM3IYQ.js";
34
+ } from "./chunk-DZE26BID.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -2,10 +2,10 @@ import {
2
2
  SIGNED_OUT_ON_MAC_MESSAGE,
3
3
  describeSignedOutKey,
4
4
  readSignedOutDiagnosis
5
- } from "./chunk-TIU3TP36.js";
5
+ } from "./chunk-YXFLZ2LO.js";
6
6
  import {
7
7
  APPROVAL_RULES_PATH
8
- } from "./chunk-7VIJBCMF.js";
8
+ } from "./chunk-75UJ7W6H.js";
9
9
  import {
10
10
  createIo
11
11
  } from "./chunk-FO3MDD26.js";
@@ -14,19 +14,19 @@ import {
14
14
  checkApiKey,
15
15
  describeKeyCheck,
16
16
  keyCheckFromResponse
17
- } from "./chunk-QNUGTQKZ.js";
17
+ } from "./chunk-OECCPPO6.js";
18
18
  import {
19
19
  readKeySource
20
- } from "./chunk-4SUNBCR6.js";
20
+ } from "./chunk-NUU2JVOG.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-RXRKX646.js";
23
+ } from "./chunk-O76PTPKP.js";
24
24
  import {
25
25
  EXIT
26
26
  } from "./chunk-BG4HHB7E.js";
27
27
  import {
28
28
  KEY_SCOPE
29
- } from "./chunk-SALM3IYQ.js";
29
+ } from "./chunk-DZE26BID.js";
30
30
 
31
31
  // src/cli/report-key.ts
32
32
  var { dim, yellow } = createIo();
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-RXRKX646.js";
3
+ } from "./chunk-O76PTPKP.js";
4
4
  import {
5
5
  normalizeInstallSource
6
- } from "./chunk-SALM3IYQ.js";
6
+ } from "./chunk-DZE26BID.js";
7
7
 
8
8
  // src/install-source.ts
9
9
  import { readFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-K6E24TJ6.js";
3
+ } from "./chunk-54DPX27B.js";
4
4
  import {
5
5
  parseFlags
6
6
  } from "./chunk-YPY4YCIZ.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-YU2EUD7O.js";
10
10
  import {
11
11
  NPX_LATEST_COMMAND
12
- } from "./chunk-MYDTSPIZ.js";
12
+ } from "./chunk-KHWNW4AS.js";
13
13
  import {
14
14
  CLAUDE_CONNECTOR_GUIDE,
15
15
  CLAUDE_CONNECTOR_STEPS,
@@ -17,7 +17,7 @@ import {
17
17
  CLAUDE_CONNECTOR_URL,
18
18
  COWORK_CONNECTOR_LIMIT,
19
19
  COWORK_STANDING_INSTRUCTIONS
20
- } from "./chunk-SALM3IYQ.js";
20
+ } from "./chunk-DZE26BID.js";
21
21
 
22
22
  // src/cli/cowork.ts
23
23
  import { readFileSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  claudeConfigDir
3
- } from "./chunk-KK5YNO2M.js";
3
+ } from "./chunk-PCFIYMK4.js";
4
4
  import {
5
5
  claudePermissionRulesFromSettings
6
- } from "./chunk-SALM3IYQ.js";
6
+ } from "./chunk-DZE26BID.js";
7
7
 
8
8
  // src/claude-permission-rules.ts
9
9
  import { readFileSync, statSync } from "fs";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  APPROVAL_RULES_PATH,
3
3
  canChangeApprovalSettings
4
- } from "./chunk-7VIJBCMF.js";
4
+ } from "./chunk-75UJ7W6H.js";
5
5
  import {
6
6
  callMcpTool
7
- } from "./chunk-FR25IWL7.js";
7
+ } from "./chunk-EPMIBLCE.js";
8
8
  import {
9
9
  absoluteUrl
10
- } from "./chunk-QNUGTQKZ.js";
10
+ } from "./chunk-OECCPPO6.js";
11
11
  import {
12
12
  getBaseUrl
13
- } from "./chunk-RXRKX646.js";
13
+ } from "./chunk-O76PTPKP.js";
14
14
  import {
15
15
  NPX_LATEST_COMMAND
16
- } from "./chunk-MYDTSPIZ.js";
16
+ } from "./chunk-KHWNW4AS.js";
17
17
  import {
18
18
  AGENT_STOP_DEFAULT_SECONDS,
19
19
  APPROVAL_MODE_META,
@@ -21,7 +21,7 @@ import {
21
21
  classifyConfirmResponse,
22
22
  isAnswerSource,
23
23
  roundTripAsk
24
- } from "./chunk-SALM3IYQ.js";
24
+ } from "./chunk-DZE26BID.js";
25
25
 
26
26
  // src/reach.ts
27
27
  var reachVerdict = (channels) => {
@@ -2,7 +2,7 @@ import {
2
2
  isApprovalMode,
3
3
  isRecord,
4
4
  isTimeoutAction
5
- } from "./chunk-SALM3IYQ.js";
5
+ } from "./chunk-DZE26BID.js";
6
6
 
7
7
  // src/cli/settings-response.ts
8
8
  var isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveInstallSourceFor
3
- } from "./chunk-I4THVOUC.js";
3
+ } from "./chunk-LTVILMEZ.js";
4
4
  import {
5
5
  configFilePath
6
- } from "./chunk-RXRKX646.js";
6
+ } from "./chunk-O76PTPKP.js";
7
7
  import {
8
8
  backupFile,
9
9
  readJsonSafe,
@@ -14,7 +14,7 @@ import {
14
14
  API_KEY_PREFIX_PATTERN,
15
15
  isRecord,
16
16
  isValidApiKey
17
- } from "./chunk-SALM3IYQ.js";
17
+ } from "./chunk-DZE26BID.js";
18
18
 
19
19
  // src/shell-alias.ts
20
20
  import { homedir } from "os";
@@ -2,7 +2,7 @@ import {
2
2
  localRepoKey,
3
3
  normalizeRepoRemote,
4
4
  parseGitBranch
5
- } from "./chunk-SALM3IYQ.js";
5
+ } from "./chunk-DZE26BID.js";
6
6
 
7
7
  // src/repo.ts
8
8
  import { existsSync, readFileSync, statSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-K6E24TJ6.js";
3
+ } from "./chunk-54DPX27B.js";
4
4
  import {
5
5
  BELL_HOOK_BINARY
6
- } from "./chunk-GNOSBEUB.js";
6
+ } from "./chunk-YBQF7DCL.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  CODEX_HOOK_EVENTS,
@@ -15,13 +15,13 @@ import {
15
15
  isBridgeLocator,
16
16
  isProtectedByScope,
17
17
  registerHookEntry
18
- } from "./chunk-KK5YNO2M.js";
18
+ } from "./chunk-PCFIYMK4.js";
19
19
  import {
20
20
  CURSOR_GATE_EVENTS,
21
21
  HOOK_BUDGETS,
22
22
  HOOK_LOCATOR_BINARY,
23
23
  hookCommandHoldBudget
24
- } from "./chunk-SALM3IYQ.js";
24
+ } from "./chunk-DZE26BID.js";
25
25
 
26
26
  // src/gemini-config.ts
27
27
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-FR25IWL7.js";
3
+ } from "./chunk-EPMIBLCE.js";
4
+ import {
5
+ fetchAsCredential
6
+ } from "./chunk-PYAPWXVP.js";
4
7
  import {
5
8
  NPX_LATEST_COMMAND
6
- } from "./chunk-MYDTSPIZ.js";
9
+ } from "./chunk-KHWNW4AS.js";
7
10
 
8
11
  // src/mcp-stdio-bridge.ts
9
12
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -98,12 +101,13 @@ var createMcpStdioBridge = (deps) => {
98
101
  if (!answered.has(request.id)) await deps.emit(bridgeError(request.id, message));
99
102
  }
100
103
  };
101
- const post = async (line, apiKey) => deps.fetchImpl(deps.endpoint, {
104
+ const requestFor = (line, apiKey) => ({
102
105
  method: "POST",
103
106
  headers: headersFor(apiKey),
104
107
  body: line,
105
108
  signal: AbortSignal.timeout(deps.timeoutMs ?? MCP_BRIDGE_REQUEST_TIMEOUT_MS)
106
109
  });
110
+ const post = async (line, apiKey) => apiKey === null ? deps.fetchImpl(deps.endpoint, requestFor(line, apiKey)) : fetchAsCredential(apiKey, deps.endpoint, requestFor(line, apiKey), deps.fetchImpl);
107
111
  const forward = async (line) => {
108
112
  const parsed = parseBridgeLine(line);
109
113
  if (!parsed.ok) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-MYDTSPIZ.js";
3
+ } from "./chunk-KHWNW4AS.js";
4
4
 
5
5
  // src/config.ts
6
6
  import { readFileSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-G6PHMB3F.js";
3
+ } from "./chunk-5RVL2CQK.js";
4
4
  import {
5
5
  getBaseUrl
6
- } from "./chunk-RXRKX646.js";
6
+ } from "./chunk-O76PTPKP.js";
7
7
  import {
8
8
  NetworkError
9
9
  } from "./chunk-YU2EUD7O.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-SALM3IYQ.js";
16
+ } from "./chunk-DZE26BID.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;
@@ -3,7 +3,7 @@ import {
3
3
  formatVersion,
4
4
  quoteIfNeeded,
5
5
  shellDoubleQuoted
6
- } from "./chunk-MAWFWQLR.js";
6
+ } from "./chunk-QQMT2JIC.js";
7
7
  import {
8
8
  writeFileAtomic
9
9
  } from "./chunk-T5I4PKOQ.js";
@@ -17,7 +17,7 @@ import {
17
17
  HOOK_LOCATOR_BINARY,
18
18
  PRETOOLUSE_GATED_TOOLS,
19
19
  withHookHoldBudget
20
- } from "./chunk-SALM3IYQ.js";
20
+ } from "./chunk-DZE26BID.js";
21
21
 
22
22
  // src/setup/paths.ts
23
23
  import { createHash as createHash2 } from "crypto";
@@ -3,24 +3,24 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-M6SP3FZF.js";
6
+ } from "./chunk-X2XXKXC5.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-II6M23WI.js";
13
+ } from "./chunk-SSW4QRGU.js";
14
14
  import {
15
15
  getMachineId
16
- } from "./chunk-J5EAU44S.js";
16
+ } from "./chunk-SDQQ43FT.js";
17
17
  import {
18
18
  readControlMode,
19
19
  readKeySource
20
- } from "./chunk-4SUNBCR6.js";
20
+ } from "./chunk-NUU2JVOG.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-RXRKX646.js";
23
+ } from "./chunk-O76PTPKP.js";
24
24
  import {
25
25
  getPackageVersion
26
26
  } from "./chunk-ZVU6WMMU.js";
@@ -0,0 +1,81 @@
1
+ import {
2
+ CREDENTIAL_REJECTED,
3
+ CREDENTIAL_REJECTION_HEADER,
4
+ CREDENTIAL_REJECTION_STATUS,
5
+ MCP_CREDENTIAL_REJECTION_BODY,
6
+ isRecord,
7
+ responseRejectsCredential
8
+ } from "./chunk-DZE26BID.js";
9
+
10
+ // src/credential-rejection.ts
11
+ import { createHash, randomUUID } from "crypto";
12
+ import { readFileSync, renameSync, unlinkSync, writeFileSync } from "fs";
13
+ import { tmpdir } from "os";
14
+ import { join } from "path";
15
+ var CREDENTIAL_REJECTION_TTL_MS = 6e4;
16
+ var REMEMBERED_REJECTION_MODE = 384;
17
+ var serverOf = (url) => {
18
+ try {
19
+ return new URL(url).origin;
20
+ } catch {
21
+ return url;
22
+ }
23
+ };
24
+ var credentialFingerprint = (credential, url) => createHash("sha256").update(`credential:${serverOf(url)}
25
+ ${credential}`).digest("hex");
26
+ var credentialRejectionFile = (credential, url) => join(tmpdir(), `pushary-credential-${credentialFingerprint(credential, url).slice(0, 12)}.json`);
27
+ var isRememberedRejection = (value) => isRecord(value) && typeof value.fingerprint === "string" && typeof value.rejectedAt === "number" && Number.isFinite(value.rejectedAt);
28
+ var readRememberedRejection = (credential, url) => {
29
+ try {
30
+ const parsed = JSON.parse(readFileSync(credentialRejectionFile(credential, url), "utf-8"));
31
+ return isRememberedRejection(parsed) ? parsed : null;
32
+ } catch {
33
+ return null;
34
+ }
35
+ };
36
+ var credentialRecentlyRejected = (credential, url, now) => {
37
+ const remembered = readRememberedRejection(credential, url);
38
+ if (!remembered || remembered.fingerprint !== credentialFingerprint(credential, url)) return false;
39
+ const age = (now ?? Date.now()) - remembered.rejectedAt;
40
+ return age >= 0 && age < CREDENTIAL_REJECTION_TTL_MS;
41
+ };
42
+ var discardStagedRejection = (staged) => {
43
+ try {
44
+ unlinkSync(staged);
45
+ } catch {
46
+ return;
47
+ }
48
+ };
49
+ var rememberRejectedCredential = (credential, url, now = Date.now()) => {
50
+ const remembered = { fingerprint: credentialFingerprint(credential, url), rejectedAt: now };
51
+ const file = credentialRejectionFile(credential, url);
52
+ const staged = `${file}.${randomUUID()}.tmp`;
53
+ try {
54
+ writeFileSync(staged, JSON.stringify(remembered), { encoding: "utf-8", mode: REMEMBERED_REJECTION_MODE, flag: "wx" });
55
+ } catch {
56
+ return;
57
+ }
58
+ try {
59
+ renameSync(staged, file);
60
+ } catch {
61
+ discardStagedRejection(staged);
62
+ }
63
+ };
64
+ var rememberedRejectionResponse = () => new Response(MCP_CREDENTIAL_REJECTION_BODY, {
65
+ status: CREDENTIAL_REJECTION_STATUS,
66
+ statusText: "Unauthorized",
67
+ headers: { "content-type": "application/json", [CREDENTIAL_REJECTION_HEADER]: CREDENTIAL_REJECTED }
68
+ });
69
+ var fetchAsCredential = async (credential, url, init, fetchImpl = fetch) => {
70
+ if (credentialRecentlyRejected(credential, url)) {
71
+ init.signal?.throwIfAborted();
72
+ return rememberedRejectionResponse();
73
+ }
74
+ const response = await fetchImpl(url, init);
75
+ if (responseRejectsCredential(response.status, response.headers)) rememberRejectedCredential(credential, url);
76
+ return response;
77
+ };
78
+
79
+ export {
80
+ fetchAsCredential
81
+ };
@@ -13,16 +13,16 @@ import {
13
13
  } from "./chunk-G66WIAST.js";
14
14
  import {
15
15
  keyPrefix
16
- } from "./chunk-4SUNBCR6.js";
16
+ } from "./chunk-NUU2JVOG.js";
17
17
  import {
18
18
  getBaseUrl
19
- } from "./chunk-RXRKX646.js";
19
+ } from "./chunk-O76PTPKP.js";
20
20
  import {
21
21
  NPX_LATEST_COMMAND
22
- } from "./chunk-MYDTSPIZ.js";
22
+ } from "./chunk-KHWNW4AS.js";
23
23
  import {
24
24
  isValidApiKey
25
- } from "./chunk-SALM3IYQ.js";
25
+ } from "./chunk-DZE26BID.js";
26
26
 
27
27
  // src/cli/login-ui.ts
28
28
  import { hostname } from "os";
@@ -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-DI4JAPW6.js");
403
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-IWVHMUXK.js");
404
- const { autoUpdateLock } = await import("./paths-ZC5TUIHB.js");
402
+ const { withUpgradeLock } = await import("./global-upgrade-2BXXJQHR.js");
403
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-HYD3MFFS.js");
404
+ const { autoUpdateLock } = await import("./paths-A2TITMY3.js");
405
405
  let result = "skipped";
406
406
  const install = async () => {
407
407
  const platform = process.platform;