@pushary/agent-hooks 1.9.63 → 1.9.65

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 (129) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +1 -1
  3. package/dist/{api-UHUUAONF.js → api-32B3XLJR.js} +10 -11
  4. package/dist/bin/pushary-bell-hook.js +27 -30
  5. package/dist/bin/pushary-bell.js +12 -13
  6. package/dist/bin/pushary-claude.js +28 -31
  7. package/dist/bin/pushary-clean.js +68 -43
  8. package/dist/bin/pushary-codex-bridge.js +22 -24
  9. package/dist/bin/pushary-codex-hook.js +34 -37
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +13 -15
  12. package/dist/bin/pushary-connect.js +26 -29
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +39 -42
  15. package/dist/bin/pushary-disconnect.js +62 -43
  16. package/dist/bin/pushary-doctor.js +109 -44
  17. package/dist/bin/pushary-elicitation-hook.js +27 -30
  18. package/dist/bin/pushary-gemini-bridge.js +16 -18
  19. package/dist/bin/pushary-gemini-hook.js +29 -32
  20. package/dist/bin/pushary-hook.js +31 -34
  21. package/dist/bin/pushary-login.js +19 -20
  22. package/dist/bin/pushary-logout.js +26 -29
  23. package/dist/bin/pushary-mcp.js +11 -12
  24. package/dist/bin/pushary-mode.js +14 -15
  25. package/dist/bin/pushary-notification-hook.js +26 -29
  26. package/dist/bin/pushary-opencode-hook.js +28 -31
  27. package/dist/bin/pushary-permission-denied-hook.js +31 -34
  28. package/dist/bin/pushary-permission-hook.js +30 -33
  29. package/dist/bin/pushary-post-hook.js +26 -29
  30. package/dist/bin/pushary-prompt-hook.js +26 -29
  31. package/dist/bin/pushary-session-end-hook.js +28 -31
  32. package/dist/bin/pushary-session-start-hook.js +35 -38
  33. package/dist/bin/pushary-setup.js +129 -74
  34. package/dist/bin/pushary-stats.js +5 -5
  35. package/dist/bin/pushary-status.js +31 -34
  36. package/dist/bin/pushary-stop-hook.js +26 -29
  37. package/dist/bin/pushary-stopfailure-hook.js +26 -29
  38. package/dist/bin/pushary-suggestions.js +14 -15
  39. package/dist/bin/pushary-transcript-register.js +18 -21
  40. package/dist/bin/pushary-transcripts.js +17 -18
  41. package/dist/bin/pushary-upgrade.js +40 -44
  42. package/dist/bin/pushary-wait.js +14 -15
  43. package/dist/bin/pushary.js +7 -8
  44. package/dist/{chunk-V5W3CK7F.js → chunk-2VADJ6JH.js} +2 -2
  45. package/dist/{chunk-3GVV7XVT.js → chunk-2Z7I7DHT.js} +1 -1
  46. package/dist/{chunk-7GRQGXF4.js → chunk-3KXBRSL3.js} +1 -1
  47. package/dist/{chunk-P6RF4RQN.js → chunk-3LF7T3NW.js} +6 -6
  48. package/dist/{chunk-PXAOEFJZ.js → chunk-3UNAPXED.js} +14 -16
  49. package/dist/{chunk-TMGJAFSD.js → chunk-4LUWNBGD.js} +3 -3
  50. package/dist/{chunk-CLABCSZC.js → chunk-6CZX6YOE.js} +5 -5
  51. package/dist/{chunk-VFJSVPNL.js → chunk-7ILQX47W.js} +3 -3
  52. package/dist/{chunk-4WFAP6QN.js → chunk-ADXHPGBZ.js} +9 -11
  53. package/dist/{chunk-75ODMNOM.js → chunk-AN7C3CHH.js} +1 -1
  54. package/dist/{chunk-BQFL2ECS.js → chunk-ANP3DIST.js} +3 -57
  55. package/dist/chunk-ATPJGHUP.js +1201 -0
  56. package/dist/{chunk-6Z2VR3BA.js → chunk-BAGBCSXA.js} +1 -1
  57. package/dist/{chunk-WUOOZE5S.js → chunk-BEQ3MEE3.js} +2 -2
  58. package/dist/{chunk-ELAK46NR.js → chunk-BKCI53W6.js} +4 -4
  59. package/dist/{chunk-HAIXS4OX.js → chunk-CSKABVSH.js} +3 -3
  60. package/dist/{chunk-GNUARBRZ.js → chunk-CU2PXLZ6.js} +4 -4
  61. package/dist/{chunk-FVERRWDP.js → chunk-CZ65D6Q5.js} +2 -2
  62. package/dist/{chunk-PJ34FOIV.js → chunk-DM24VZOI.js} +5 -5
  63. package/dist/{chunk-TBKHQWIH.js → chunk-DTVHZDYM.js} +5 -5
  64. package/dist/{chunk-PIQ4HHA2.js → chunk-DXMUJTYF.js} +4 -6
  65. package/dist/{chunk-IOH2T3CB.js → chunk-ED2SWTPC.js} +4 -4
  66. package/dist/{chunk-FAF5AW3P.js → chunk-EEVE7H5Z.js} +4 -4
  67. package/dist/{chunk-EHHTQURL.js → chunk-F56GTJFG.js} +5 -5
  68. package/dist/{chunk-GZS72NCF.js → chunk-FFSIYBBU.js} +4 -4
  69. package/dist/{chunk-L5CDGXPO.js → chunk-FWS2KLV2.js} +4 -4
  70. package/dist/{chunk-T3GHXR6N.js → chunk-GA257T2E.js} +5 -5
  71. package/dist/{chunk-SKUSGWFK.js → chunk-GTBWWCCM.js} +6 -6
  72. package/dist/{chunk-YK6GR4GU.js → chunk-HDGB6SQ4.js} +2 -2
  73. package/dist/{chunk-OY6Z4IKB.js → chunk-HIYLAC3C.js} +3 -3
  74. package/dist/{chunk-RAJ3QEIL.js → chunk-HVOQUPSO.js} +1 -1
  75. package/dist/{chunk-KUCL7ETL.js → chunk-I2UBF2SS.js} +1 -1
  76. package/dist/{chunk-VHZAJ6IB.js → chunk-ICFHMJTW.js} +3 -3
  77. package/dist/{chunk-HZ72EMJE.js → chunk-ITYKN2K3.js} +2 -2
  78. package/dist/{chunk-XBTWG2VL.js → chunk-IZVEBBDH.js} +5 -5
  79. package/dist/{chunk-VN7XH6TU.js → chunk-JCWHOB36.js} +2 -2
  80. package/dist/{chunk-5JK3DQGZ.js → chunk-JFKMPLNF.js} +2 -2
  81. package/dist/{chunk-FEAGK25K.js → chunk-LMC5UPL7.js} +1 -1
  82. package/dist/{chunk-7NCLUA65.js → chunk-MNKIR2ZB.js} +11 -0
  83. package/dist/{chunk-SARPHHTT.js → chunk-NOH3EJFH.js} +1 -1
  84. package/dist/{chunk-OP5IBEV7.js → chunk-NUEPJ5W6.js} +2 -2
  85. package/dist/{chunk-OU3BYBJ3.js → chunk-OA6EADFT.js} +3 -3
  86. package/dist/{chunk-LGZ545TA.js → chunk-ONBL2GCU.js} +12 -6
  87. package/dist/{chunk-LTT54NOU.js → chunk-P5HZEGT7.js} +65 -8
  88. package/dist/{chunk-YMZOM6BD.js → chunk-PP7FC3Y7.js} +10 -10
  89. package/dist/{chunk-T6XQNOZV.js → chunk-Q2BD4IBX.js} +12 -12
  90. package/dist/{chunk-DMNLFWGY.js → chunk-QNZ6G3LY.js} +210 -151
  91. package/dist/{chunk-BCVCUDFI.js → chunk-QSW3HAKI.js} +1 -1
  92. package/dist/{chunk-HOIO66DU.js → chunk-R4FL5JHK.js} +4 -4
  93. package/dist/{chunk-VUFHYMSP.js → chunk-RABLE5R6.js} +1 -1
  94. package/dist/{chunk-2MZ6ROWZ.js → chunk-RRHHWYPX.js} +6 -6
  95. package/dist/{chunk-5LOP4AVD.js → chunk-SCMEVDAR.js} +128 -26
  96. package/dist/{chunk-XE5N352V.js → chunk-SROWUG5W.js} +1 -1
  97. package/dist/{chunk-QW3FRUFB.js → chunk-SZBMTOUZ.js} +1 -1
  98. package/dist/{chunk-V7N5NOZV.js → chunk-TJUJAK5L.js} +1 -1
  99. package/dist/{chunk-OJEIS5L2.js → chunk-TK4JU2F7.js} +1 -1
  100. package/dist/{chunk-VDBXSUXP.js → chunk-U2P2LQ5B.js} +7 -7
  101. package/dist/{chunk-AB3VAQ25.js → chunk-UHS5MMAI.js} +3 -3
  102. package/dist/{chunk-OW6VBXXI.js → chunk-UM2X7HL6.js} +63 -36
  103. package/dist/{chunk-KL76XWZ7.js → chunk-UMTMFDL2.js} +1 -1
  104. package/dist/{chunk-MRCVYYPW.js → chunk-VHKK3US3.js} +3 -3
  105. package/dist/{chunk-S2Z6VWHH.js → chunk-W5L2ZLHE.js} +6 -7
  106. package/dist/{chunk-EQ26IKZM.js → chunk-WOHP7EL6.js} +7 -6
  107. package/dist/{chunk-3QLFB2EY.js → chunk-WY6YAMZW.js} +37 -214
  108. package/dist/{chunk-XO3KAH7K.js → chunk-XJIIU36L.js} +1 -1
  109. package/dist/{chunk-QC2W42DE.js → chunk-XZCJC3QO.js} +12 -12
  110. package/dist/{chunk-BUQU3OPX.js → chunk-Y64JGYTB.js} +1 -1
  111. package/dist/{chunk-KLZZI5TU.js → chunk-Z3M627TQ.js} +1 -1
  112. package/dist/{codex-app-cards-switch-LXMAIOFB.js → codex-app-cards-switch-HK4RMOBI.js} +11 -12
  113. package/dist/{codex-desktop-launch-VE5RLFUU.js → codex-desktop-launch-OCO6N7SA.js} +1 -1
  114. package/dist/{codex-session-launch-XZZWXCPK.js → codex-session-launch-ETZQTVFS.js} +19 -21
  115. package/dist/{config-PPX25AV5.js → config-YY54G3CC.js} +3 -3
  116. package/dist/{global-upgrade-NRMHNLNU.js → global-upgrade-5DN5G3ZQ.js} +10 -12
  117. package/dist/{identity-ZFQR7JNW.js → identity-EGL6HAWG.js} +4 -5
  118. package/dist/{live-capabilities-SJRYRKNB.js → live-capabilities-WU3FYJJG.js} +5 -7
  119. package/dist/{paths-7VTVOQXJ.js → paths-ZG6KDM6Y.js} +7 -3
  120. package/dist/reapply-AQLNCCTE.js +63 -0
  121. package/dist/src/index.js +20 -23
  122. package/dist/{upgrade-lock-VAYJZVTB.js → upgrade-lock-BIRXIKHJ.js} +4 -5
  123. package/dist/{usage-C4DIYUR6.js → usage-43C2DHDU.js} +3 -3
  124. package/package.json +1 -1
  125. package/dist/chunk-6ICPEJY5.js +0 -20
  126. package/dist/chunk-MK4USZYQ.js +0 -615
  127. package/dist/chunk-QENTGE75.js +0 -86
  128. package/dist/chunk-VC3HFFMQ.js +0 -41
  129. package/dist/reapply-WOANOIRZ.js +0 -64
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-KEPESIIR.js";
5
5
  import {
6
6
  runBrowserLogin
7
- } from "../chunk-SARPHHTT.js";
7
+ } from "../chunk-NOH3EJFH.js";
8
8
  import {
9
9
  INSTALL_NODE_STEP,
10
10
  NPM_FILE_IN_USE_STEP,
@@ -17,33 +17,33 @@ import {
17
17
  phoneStartServiceState,
18
18
  renderCommandSurface,
19
19
  unverifiedKeyClosingReason
20
- } from "../chunk-TMGJAFSD.js";
20
+ } from "../chunk-4LUWNBGD.js";
21
21
  import {
22
22
  coworkOutput,
23
23
  coworkSelection
24
- } from "../chunk-MRCVYYPW.js";
24
+ } from "../chunk-VHKK3US3.js";
25
25
  import "../chunk-PUZZELE6.js";
26
26
  import {
27
27
  clearDeclinedAgent,
28
28
  declinedAgentForSetupChoice
29
- } from "../chunk-XBTWG2VL.js";
29
+ } from "../chunk-IZVEBBDH.js";
30
30
  import {
31
31
  describeVersionManagerPin,
32
32
  saveSetupFailure,
33
33
  versionManagerOf
34
- } from "../chunk-HAIXS4OX.js";
34
+ } from "../chunk-CSKABVSH.js";
35
35
  import {
36
36
  codexTrustOutcome,
37
37
  describeCodexTrustConfirmation,
38
38
  needsCodexTrustStep
39
- } from "../chunk-VN7XH6TU.js";
39
+ } from "../chunk-JCWHOB36.js";
40
40
  import {
41
41
  describeWaitLadder
42
42
  } from "../chunk-CVWG2N3Y.js";
43
43
  import {
44
44
  writeJsonError,
45
45
  writeStdoutFully
46
- } from "../chunk-3GVV7XVT.js";
46
+ } from "../chunk-2Z7I7DHT.js";
47
47
  import {
48
48
  BROWSER_CONNECT_COMMAND,
49
49
  confirmAppConnection,
@@ -52,7 +52,7 @@ import {
52
52
  pairingEscapeApplies,
53
53
  printConnectInstructions,
54
54
  waitForYourPhone
55
- } from "../chunk-FAF5AW3P.js";
55
+ } from "../chunk-EEVE7H5Z.js";
56
56
  import "../chunk-3EGEA4KH.js";
57
57
  import {
58
58
  SETUP_AGENT_NAME,
@@ -60,14 +60,14 @@ import {
60
60
  describeRoundTripOutcome,
61
61
  roundTripEvidence,
62
62
  verifyRoundTrip
63
- } from "../chunk-VHZAJ6IB.js";
63
+ } from "../chunk-ICFHMJTW.js";
64
64
  import {
65
65
  readManagedControlEvidence,
66
66
  waitForMachineReadiness
67
- } from "../chunk-EHHTQURL.js";
67
+ } from "../chunk-F56GTJFG.js";
68
68
  import {
69
69
  ensureCodexTrustsPusharyHooks
70
- } from "../chunk-YK6GR4GU.js";
70
+ } from "../chunk-HDGB6SQ4.js";
71
71
  import {
72
72
  describeSetupSideEffects,
73
73
  installAgentSkill,
@@ -75,7 +75,7 @@ import {
75
75
  } from "../chunk-EUW7JL2K.js";
76
76
  import {
77
77
  codexEngineBehindLauncher
78
- } from "../chunk-5JK3DQGZ.js";
78
+ } from "../chunk-JFKMPLNF.js";
79
79
  import "../chunk-XCEN33UP.js";
80
80
  import {
81
81
  CURSOR_PLUGIN_BACKUP_INFIX,
@@ -85,7 +85,7 @@ import {
85
85
  soleGateFile,
86
86
  soleGateReceipt,
87
87
  soleGateReceiptFile
88
- } from "../chunk-GNUARBRZ.js";
88
+ } from "../chunk-CU2PXLZ6.js";
89
89
  import {
90
90
  HERMES_PIP_PACKAGE,
91
91
  describeDetection,
@@ -98,33 +98,28 @@ import {
98
98
  runHermesConfigScript,
99
99
  shortenHome,
100
100
  vscodeSettingsTargets
101
- } from "../chunk-LGZ545TA.js";
101
+ } from "../chunk-ONBL2GCU.js";
102
102
  import {
103
103
  mcpServerBearer,
104
104
  readMacAppAgentKey
105
- } from "../chunk-VDBXSUXP.js";
105
+ } from "../chunk-U2P2LQ5B.js";
106
106
  import {
107
107
  setHumanStream
108
108
  } from "../chunk-QCGNGEGE.js";
109
109
  import {
110
- CODEX_INSTRUCTIONS_LABEL,
111
110
  FX_PUSHARY_TOOLS_RULE,
112
111
  FX_QUESTION_TOOL,
113
- GEMINI_INSTRUCTIONS_LABEL,
114
- OPENCODE_INSTRUCTIONS_LABEL,
115
- SHARED_AGENTS_MD_LABEL,
112
+ configureClineServer,
116
113
  configureFxSettings,
117
114
  fxIgnoresInstructionsFile,
118
115
  fxInstructionsBody,
119
116
  fxPusharyEntry,
117
+ inspectClineInstallation,
120
118
  inspectFxInstallation,
121
119
  readFxProfileForSetup,
122
- renderAgentInstructions,
123
- renderProjectAgentInstructions,
124
120
  withFxPusharyServer,
125
- writeFxProfile,
126
- writeInstructionBlock
127
- } from "../chunk-DMNLFWGY.js";
121
+ writeFxProfile
122
+ } from "../chunk-QNZ6G3LY.js";
128
123
  import {
129
124
  AgentConfigError,
130
125
  afterAgentFailureNote,
@@ -137,10 +132,10 @@ import {
137
132
  retryAgentCommand,
138
133
  writeSetupConfigFile,
139
134
  writeSetupConfigJson
140
- } from "../chunk-S2Z6VWHH.js";
135
+ } from "../chunk-W5L2ZLHE.js";
141
136
  import {
142
137
  MCP_BRIDGE_BINARY
143
- } from "../chunk-WUOOZE5S.js";
138
+ } from "../chunk-BEQ3MEE3.js";
144
139
  import {
145
140
  OPENCODE_HOOK_BINARY,
146
141
  addOpenCodeMcpServer,
@@ -153,10 +148,12 @@ import {
153
148
  openCodeConfigFile,
154
149
  openCodeHookArgv,
155
150
  openCodeInstructionsFile,
151
+ openCodePermissionsLeftOpen,
156
152
  openCodePluginDir,
157
153
  openCodePluginFile,
158
- openCodeWired
159
- } from "../chunk-LTT54NOU.js";
154
+ openCodeWired,
155
+ withOpenCodeAskRules
156
+ } from "../chunk-P5HZEGT7.js";
160
157
  import {
161
158
  ansiPainter,
162
159
  createIo,
@@ -172,23 +169,19 @@ import {
172
169
  nodeCodexInstallProbe,
173
170
  phoneStartIsRequired,
174
171
  resolveControlPolicy
175
- } from "../chunk-HOIO66DU.js";
172
+ } from "../chunk-R4FL5JHK.js";
176
173
  import {
177
174
  detectClaudeVersion
178
- } from "../chunk-OY6Z4IKB.js";
179
- import "../chunk-VUFHYMSP.js";
175
+ } from "../chunk-HIYLAC3C.js";
176
+ import "../chunk-RABLE5R6.js";
180
177
  import {
181
178
  describeAutoUpdateAnnouncement,
182
179
  takeAutoUpdateAnnouncement
183
- } from "../chunk-PJ34FOIV.js";
180
+ } from "../chunk-DM24VZOI.js";
184
181
  import {
185
- addClaudeMcpServer,
186
182
  addCompatibleHooks,
187
183
  addCompatibleMcpServer,
188
184
  addCompatibleToolPermissions,
189
- addPusharyHooks,
190
- addPusharyToolPermissions,
191
- captureClaudeMcpServer,
192
185
  compatibleConfigFile,
193
186
  compatibleFilePath,
194
187
  compatibleHookEvents,
@@ -197,10 +190,8 @@ import {
197
190
  compatiblePermissionRuleFile,
198
191
  compatibleRecord,
199
192
  compatibleTargetPaths,
200
- hasCompatibleHooks,
201
- isClaudeMcpSnapshot,
202
- updateClaudeMcpSnapshot
203
- } from "../chunk-3QLFB2EY.js";
193
+ hasCompatibleHooks
194
+ } from "../chunk-WY6YAMZW.js";
204
195
  import {
205
196
  DAEMON_COLD_START_TIMEOUT_MS,
206
197
  clearDaemonNeedsLogin,
@@ -215,7 +206,7 @@ import {
215
206
  replaceDaemonService,
216
207
  stopDaemonService,
217
208
  waitForDaemonRemoteProof
218
- } from "../chunk-4WFAP6QN.js";
209
+ } from "../chunk-ADXHPGBZ.js";
219
210
  import {
220
211
  KEEP_HINT,
221
212
  captureHookTakeover,
@@ -227,29 +218,25 @@ import {
227
218
  geminiWired,
228
219
  planHooks,
229
220
  pusharyHookExecutable
230
- } from "../chunk-SKUSGWFK.js";
221
+ } from "../chunk-GTBWWCCM.js";
231
222
  import {
232
223
  GEMINI_HOOK_BINARY,
233
224
  GEMINI_HOOK_EVENTS,
234
225
  addGeminiHooks,
235
226
  addGeminiMcpServer
236
- } from "../chunk-BQFL2ECS.js";
227
+ } from "../chunk-ANP3DIST.js";
237
228
  import {
238
229
  AGENT_CHOICES,
239
230
  effectiveControlMode,
240
231
  effectiveVerify,
241
232
  parseSetupOptions
242
- } from "../chunk-XE5N352V.js";
243
- import "../chunk-KLZZI5TU.js";
233
+ } from "../chunk-SROWUG5W.js";
234
+ import "../chunk-Z3M627TQ.js";
244
235
  import "../chunk-NMUI3ZWG.js";
245
236
  import {
246
237
  transcriptPreferenceForSetup
247
- } from "../chunk-OJEIS5L2.js";
238
+ } from "../chunk-TK4JU2F7.js";
248
239
  import "../chunk-XHKBHWLX.js";
249
- import {
250
- compareVersion,
251
- parseVersion
252
- } from "../chunk-6ICPEJY5.js";
253
240
  import {
254
241
  KEY_FILE_MODE,
255
242
  exportLine,
@@ -262,7 +249,7 @@ import {
262
249
  recordMacAppKeyPrefix,
263
250
  resolveShellRc,
264
251
  writeKey
265
- } from "../chunk-IOH2T3CB.js";
252
+ } from "../chunk-ED2SWTPC.js";
266
253
  import {
267
254
  CODEX_ENGINE_DIRECTORY,
268
255
  CODEX_ENGINE_ENTRYPOINT,
@@ -271,41 +258,49 @@ import {
271
258
  } from "../chunk-E46NE7FB.js";
272
259
  import {
273
260
  reportEvent
274
- } from "../chunk-PXAOEFJZ.js";
275
- import "../chunk-VC3HFFMQ.js";
276
- import "../chunk-7GRQGXF4.js";
277
- import "../chunk-TBKHQWIH.js";
261
+ } from "../chunk-3UNAPXED.js";
262
+ import "../chunk-3KXBRSL3.js";
263
+ import "../chunk-DTVHZDYM.js";
278
264
  import "../chunk-POFBE6ZY.js";
279
- import "../chunk-ELAK46NR.js";
265
+ import "../chunk-BKCI53W6.js";
280
266
  import {
281
267
  checkApiKey,
282
268
  describeKeyCheck,
283
269
  samePusharyAccount
284
- } from "../chunk-AB3VAQ25.js";
285
- import "../chunk-VFJSVPNL.js";
286
- import "../chunk-L5CDGXPO.js";
270
+ } from "../chunk-UHS5MMAI.js";
271
+ import "../chunk-7ILQX47W.js";
272
+ import "../chunk-FWS2KLV2.js";
287
273
  import {
288
274
  UsageError
289
275
  } from "../chunk-PPY5N2E6.js";
290
276
  import {
291
277
  EXIT
292
278
  } from "../chunk-KZERVKTD.js";
293
- import "../chunk-V5W3CK7F.js";
294
- import {
295
- backupFile,
296
- readJsonSafe
297
- } from "../chunk-QENTGE75.js";
279
+ import "../chunk-2VADJ6JH.js";
298
280
  import {
281
+ CLINE_AUTO_APPROVE_STEP,
282
+ CLINE_RELOAD_STEP,
283
+ CODEX_INSTRUCTIONS_LABEL,
299
284
  CODEX_RESTART_AFTER_TRANSPORT_CHANGE,
285
+ GEMINI_INSTRUCTIONS_LABEL,
286
+ OPENCODE_INSTRUCTIONS_LABEL,
287
+ SHARED_AGENTS_MD_LABEL,
288
+ addClaudeMcpServer,
300
289
  addCodexHookTrust,
301
290
  addCodexHooks,
302
291
  addCodexMcpServer,
292
+ addPusharyHooks,
293
+ addPusharyToolPermissions,
303
294
  autoUpdateState,
295
+ captureClaudeMcpServer,
304
296
  captureCodexHookTrust,
305
297
  claudeJson,
306
298
  claudeMcpReceipt,
307
299
  claudeSettings,
308
300
  claudeSkillDir,
301
+ clineInstructionsBody,
302
+ clineMcpSettings,
303
+ clineRules,
309
304
  codexAgentsMd2 as codexAgentsMd,
310
305
  codexConfigToml,
311
306
  codexHome,
@@ -331,27 +326,36 @@ import {
331
326
  guardedArgv,
332
327
  hermesConfigReceipt,
333
328
  hookTakeoverReceipt,
329
+ isClaudeMcpSnapshot,
334
330
  pusharyConfigFile,
335
331
  readCodexMcpAuth,
332
+ renderAgentInstructions,
333
+ renderProjectAgentInstructions,
334
+ updateClaudeMcpSnapshot,
336
335
  vscodePluginDir,
337
- vscodePluginMcp
338
- } from "../chunk-MK4USZYQ.js";
336
+ vscodePluginMcp,
337
+ writeInstructionBlock
338
+ } from "../chunk-ATPJGHUP.js";
339
339
  import {
340
340
  NpmMissingError,
341
+ backupFile,
342
+ compareVersion,
341
343
  fetchLatestPublishedVersion,
342
344
  installGlobally,
343
345
  npmInstallFailure,
346
+ parseVersion,
344
347
  plannedGlobalPackage,
348
+ readJsonSafe,
345
349
  resolveGlobalBinDir,
346
350
  resolveGlobalBinary
347
- } from "../chunk-5LOP4AVD.js";
351
+ } from "../chunk-SCMEVDAR.js";
348
352
  import {
349
353
  getBaseUrl
350
- } from "../chunk-BUQU3OPX.js";
354
+ } from "../chunk-Y64JGYTB.js";
351
355
  import {
352
356
  NPX_LATEST_COMMAND,
353
357
  renderCommandHelp
354
- } from "../chunk-6Z2VR3BA.js";
358
+ } from "../chunk-BAGBCSXA.js";
355
359
  import {
356
360
  getPackageVersion,
357
361
  isNewerVersion,
@@ -370,7 +374,7 @@ import {
370
374
  isRecord,
371
375
  isTimeoutAction,
372
376
  isValidApiKey
373
- } from "../chunk-7NCLUA65.js";
377
+ } from "../chunk-MNKIR2ZB.js";
374
378
  import "../chunk-MLKGABMK.js";
375
379
 
376
380
  // bin/pushary-setup.ts
@@ -401,6 +405,7 @@ var agentSetupTargets = (exists) => ({
401
405
  openCodeInstructionsFile()
402
406
  ],
403
407
  fx: [fxMcpProfile(), fxSettings(), fxAgentsMd()],
408
+ cline: [clineMcpSettings(), clineRules()],
404
409
  ...compatibleRecord((profile) => compatibleTargetPaths(profile)),
405
410
  custom: ["nothing (prints connection details only)"]
406
411
  });
@@ -1858,6 +1863,37 @@ var setupFx = async () => {
1858
1863
  noteManual("Restart fx, or run /mcp reload in a running session.");
1859
1864
  return "configured";
1860
1865
  };
1866
+ var clineWired = () => inspectClineInstallation(clineMcpSettings(), void 0).configured;
1867
+ var quotedServerNames = (names) => names.map((name) => `"${name}"`).join(", ");
1868
+ var reportOtherClinePusharyServers = (names) => {
1869
+ if (names.length === 0) return;
1870
+ const listed = quotedServerNames(names);
1871
+ console.log(` ${yellow("!")} Cline also has ${listed} pointing at Pushary, so it would see Pushary's tools twice.`);
1872
+ noteManual(`Remove ${listed} from Cline's MCP settings (${shortenHome(clineMcpSettings())}); setup added "pushary" with your key.`);
1873
+ };
1874
+ var setupCline = async (apiKey) => {
1875
+ console.log(`
1876
+ ${bold("Setting up Cline")}
1877
+ `);
1878
+ let configured = { otherServers: [] };
1879
+ await spinner(`Adding the Pushary MCP server (${shortenHome(clineMcpSettings())})`, async () => {
1880
+ configured = configureClineServer(clineMcpSettings(), apiKey);
1881
+ });
1882
+ await spinner(`Teaching Cline to ask via push (${shortenHome(clineRules())})`, async () => {
1883
+ writeInstructionBlock(clineRules(), clineInstructionsBody());
1884
+ });
1885
+ reportOtherClinePusharyServers(configured.otherServers);
1886
+ console.log();
1887
+ console.log(` ${dim("What this configured:")}`);
1888
+ console.log(` ${dim("\u2022")} MCP server ${bold("pushary")} in Cline's shared settings, signed in with your key, for the VS Code extension and the Cline CLI`);
1889
+ console.log(` ${dim("\u2022")} Global rule: Cline asks through Pushary when you may be away and tells you when a task finishes`);
1890
+ console.log(` ${dim("\u2022")} Cline's own approval prompts stay in VS Code; Pushary cannot answer them`);
1891
+ console.log(` ${dim(CLINE_AUTO_APPROVE_STEP)}`);
1892
+ console.log(` ${dim(CLINE_RELOAD_STEP)}`);
1893
+ noteManual(CLINE_AUTO_APPROVE_STEP);
1894
+ noteManual(CLINE_RELOAD_STEP);
1895
+ return "configured";
1896
+ };
1861
1897
  var setupCustom = async (apiKey, context) => {
1862
1898
  console.log(`
1863
1899
  ${bold("Connect any other agent (MCP or HTTP)")}
@@ -1915,6 +1951,16 @@ var setupGemini = async (apiKey) => {
1915
1951
  noteManual("Restart Gemini CLI to load the new config.");
1916
1952
  };
1917
1953
  var OPENCODE_INSTRUCTIONS = openCodeInstructionsFile;
1954
+ var openCodeApprovalLines = (change, leftOpen) => {
1955
+ const added = change.kind === "added" ? ` ${dim(`(set ${change.added.join(", ")} to "ask" in opencode.json)`)}` : "";
1956
+ if (leftOpen.length === 0) {
1957
+ return [` ${dim("\u2022")} Approvals: OpenCode asks before ${bold("bash")}, ${bold("edit")} and ${bold("webfetch")}, and Pushary answers by your rules or on your phone${added}`];
1958
+ }
1959
+ return [
1960
+ ` ${yellow("!")} OpenCode runs ${leftOpen.map((name) => bold(name)).join(", ")} without asking, so Pushary never sees ${leftOpen.length === 1 ? "it" : "them"}.`,
1961
+ ` ${dim(`Set ${leftOpen.join(", ")} to "ask" under permission in ${openCodeConfigFile()} to approve from your phone.`)}`
1962
+ ];
1963
+ };
1918
1964
  var setupOpenCode = async (apiKey) => {
1919
1965
  console.log(`
1920
1966
  ${bold("Setting up OpenCode")}
@@ -1928,10 +1974,15 @@ var setupOpenCode = async (apiKey) => {
1928
1974
  await spinner(`Writing the Pushary plugin (${openCodePluginFile()})`, async () => {
1929
1975
  installOpenCodePlugin(openCodeHookArgv(resolveGlobalBinary(OPENCODE_HOOK_BINARY)), openCodePluginDir());
1930
1976
  });
1931
- await spinner(`Adding MCP server (${openCodeConfigFile()})`, async () => {
1977
+ let askRules = { kind: "present" };
1978
+ let leftOpen = [];
1979
+ await spinner(`Adding MCP server and approval rules (${openCodeConfigFile()})`, async () => {
1932
1980
  const config = readAgentJson(openCodeConfigFile());
1933
1981
  addOpenCodeMcpServer(config, apiKey);
1934
- writeSetupConfigJson(openCodeConfigFile(), config, KEY_FILE_MODE);
1982
+ const withRules = withOpenCodeAskRules(config);
1983
+ askRules = withRules.change;
1984
+ leftOpen = openCodePermissionsLeftOpen(withRules.config);
1985
+ writeSetupConfigJson(openCodeConfigFile(), withRules.config, KEY_FILE_MODE);
1935
1986
  });
1936
1987
  await spinner("Teaching OpenCode to ask via push", async () => {
1937
1988
  writeInstructionBlock(OPENCODE_INSTRUCTIONS(), renderAgentInstructions(OPENCODE_INSTRUCTIONS_LABEL));
@@ -1940,8 +1991,7 @@ var setupOpenCode = async (apiKey) => {
1940
1991
  console.log(` ${dim("What this configured:")}`);
1941
1992
  console.log(` ${dim("\u2022")} Plugin: ${openCodePluginFile()}`);
1942
1993
  console.log(` ${dim("\u2022")} MCP server: OpenCode can send notifications and ask questions`);
1943
- console.log(` ${dim("\u2022")} Approvals: a permission OpenCode raises is answered from your phone`);
1944
- console.log(` ${dim("\u2022")} Gate covers ${bold("bash")}, ${bold("edit")}, ${bold("write")} and ${bold("webfetch")}`);
1994
+ for (const line of openCodeApprovalLines(askRules, leftOpen)) console.log(line);
1945
1995
  console.log(` ${dim("\u2022")} Receipts: tool results, prompts and turn boundaries reach your account`);
1946
1996
  console.log(` ${dim("Restart OpenCode to load the plugin.")}`);
1947
1997
  noteManual("Restart OpenCode to load the plugin.");
@@ -2042,6 +2092,8 @@ var agentIsWired = (agent) => {
2042
2092
  return openCodeWired();
2043
2093
  case "fx":
2044
2094
  return fxWired();
2095
+ case "cline":
2096
+ return clineWired();
2045
2097
  default: {
2046
2098
  const profile = hookCompatibleProfile(agent);
2047
2099
  if (!profile) return true;
@@ -2168,6 +2220,7 @@ var AGENT_SETUP = {
2168
2220
  vscode: setupVsCode,
2169
2221
  opencode: setupOpenCode,
2170
2222
  fx: setupFx,
2223
+ cline: setupCline,
2171
2224
  ...COMPATIBLE_SETUP,
2172
2225
  custom: setupCustom
2173
2226
  };
@@ -2280,6 +2333,7 @@ var AGENT_NAMES = {
2280
2333
  vscode: "VS Code",
2281
2334
  opencode: "OpenCode",
2282
2335
  fx: "fx",
2336
+ cline: "Cline",
2283
2337
  ...compatibleRecord((profile) => profile.label),
2284
2338
  custom: "Other"
2285
2339
  };
@@ -2292,6 +2346,7 @@ var AGENT_CAPABILITIES = {
2292
2346
  vscode: "agent plugin + permission gate",
2293
2347
  opencode: "generated plugin + permission gate",
2294
2348
  fx: "MCP through a local bridge + questions via push",
2349
+ cline: "MCP with your key + global rule",
2295
2350
  ...compatibleRecord((profile) => profile.mcp ? "MCP + native hooks" : "native hooks"),
2296
2351
  custom: "any MCP or HTTP agent (Windsurf, n8n, custom)"
2297
2352
  };
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-75ODMNOM.js";
4
+ } from "../chunk-AN7C3CHH.js";
5
5
  import {
6
6
  readLedgerSummary
7
- } from "../chunk-XO3KAH7K.js";
7
+ } from "../chunk-XJIIU36L.js";
8
8
  import "../chunk-KZERVKTD.js";
9
9
  import {
10
10
  getApiKey
11
- } from "../chunk-BUQU3OPX.js";
12
- import "../chunk-6Z2VR3BA.js";
11
+ } from "../chunk-Y64JGYTB.js";
12
+ import "../chunk-BAGBCSXA.js";
13
13
  import "../chunk-QTOLNRET.js";
14
- import "../chunk-7NCLUA65.js";
14
+ import "../chunk-MNKIR2ZB.js";
15
15
  import "../chunk-MLKGABMK.js";
16
16
 
17
17
  // bin/pushary-stats.ts
@@ -1,80 +1,77 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeJsonError
4
- } from "../chunk-3GVV7XVT.js";
4
+ } from "../chunk-2Z7I7DHT.js";
5
5
  import {
6
6
  fetchChannels
7
- } from "../chunk-FAF5AW3P.js";
7
+ } from "../chunk-EEVE7H5Z.js";
8
8
  import "../chunk-3EGEA4KH.js";
9
9
  import {
10
10
  describeReach,
11
11
  reachVerdict
12
- } from "../chunk-VHZAJ6IB.js";
12
+ } from "../chunk-ICFHMJTW.js";
13
13
  import {
14
14
  describeLastSeen,
15
15
  listMachines
16
- } from "../chunk-EHHTQURL.js";
16
+ } from "../chunk-F56GTJFG.js";
17
17
  import {
18
18
  CONNECTED_THROUGH_MAC_APP,
19
19
  readMacAppConnectionWhenKeyless
20
- } from "../chunk-VDBXSUXP.js";
20
+ } from "../chunk-U2P2LQ5B.js";
21
21
  import "../chunk-QCGNGEGE.js";
22
22
  import {
23
23
  SIGNED_OUT_ON_MAC_MESSAGE,
24
24
  activeKeyVerdictOf,
25
25
  describeSignedOutKey,
26
26
  readSignedOutDiagnosis
27
- } from "../chunk-HZ72EMJE.js";
28
- import "../chunk-LTT54NOU.js";
27
+ } from "../chunk-ITYKN2K3.js";
28
+ import "../chunk-P5HZEGT7.js";
29
29
  import {
30
30
  createIo
31
31
  } from "../chunk-FO3MDD26.js";
32
32
  import {
33
33
  exitOnHelpFlag
34
- } from "../chunk-75ODMNOM.js";
35
- import "../chunk-HOIO66DU.js";
36
- import "../chunk-OY6Z4IKB.js";
37
- import "../chunk-VUFHYMSP.js";
38
- import "../chunk-3QLFB2EY.js";
39
- import "../chunk-4WFAP6QN.js";
40
- import "../chunk-SKUSGWFK.js";
41
- import "../chunk-BQFL2ECS.js";
42
- import "../chunk-XE5N352V.js";
43
- import "../chunk-KLZZI5TU.js";
34
+ } from "../chunk-AN7C3CHH.js";
35
+ import "../chunk-R4FL5JHK.js";
36
+ import "../chunk-HIYLAC3C.js";
37
+ import "../chunk-RABLE5R6.js";
38
+ import "../chunk-WY6YAMZW.js";
39
+ import "../chunk-ADXHPGBZ.js";
40
+ import "../chunk-GTBWWCCM.js";
41
+ import "../chunk-ANP3DIST.js";
42
+ import "../chunk-SROWUG5W.js";
43
+ import "../chunk-Z3M627TQ.js";
44
44
  import {
45
45
  rejectUnknownFlags
46
46
  } from "../chunk-NMUI3ZWG.js";
47
47
  import "../chunk-XHKBHWLX.js";
48
- import "../chunk-6ICPEJY5.js";
49
48
  import {
50
49
  readKeySource
51
- } from "../chunk-IOH2T3CB.js";
52
- import "../chunk-PXAOEFJZ.js";
53
- import "../chunk-VC3HFFMQ.js";
54
- import "../chunk-7GRQGXF4.js";
55
- import "../chunk-TBKHQWIH.js";
50
+ } from "../chunk-ED2SWTPC.js";
51
+ import "../chunk-3UNAPXED.js";
52
+ import "../chunk-3KXBRSL3.js";
53
+ import "../chunk-DTVHZDYM.js";
56
54
  import "../chunk-POFBE6ZY.js";
57
- import "../chunk-ELAK46NR.js";
55
+ import "../chunk-BKCI53W6.js";
58
56
  import {
59
57
  checkApiKey,
60
58
  describeKeyCheck
61
- } from "../chunk-AB3VAQ25.js";
62
- import "../chunk-VFJSVPNL.js";
63
- import "../chunk-L5CDGXPO.js";
59
+ } from "../chunk-UHS5MMAI.js";
60
+ import "../chunk-7ILQX47W.js";
61
+ import "../chunk-FWS2KLV2.js";
64
62
  import {
65
63
  UsageError
66
64
  } from "../chunk-PPY5N2E6.js";
67
65
  import {
68
66
  EXIT
69
67
  } from "../chunk-KZERVKTD.js";
70
- import "../chunk-V5W3CK7F.js";
71
- import "../chunk-QENTGE75.js";
72
- import "../chunk-MK4USZYQ.js";
73
- import "../chunk-5LOP4AVD.js";
74
- import "../chunk-BUQU3OPX.js";
75
- import "../chunk-6Z2VR3BA.js";
68
+ import "../chunk-2VADJ6JH.js";
69
+ import "../chunk-ATPJGHUP.js";
70
+ import "../chunk-SCMEVDAR.js";
71
+ import "../chunk-Y64JGYTB.js";
72
+ import "../chunk-BAGBCSXA.js";
76
73
  import "../chunk-QTOLNRET.js";
77
- import "../chunk-7NCLUA65.js";
74
+ import "../chunk-MNKIR2ZB.js";
78
75
  import "../chunk-MLKGABMK.js";
79
76
 
80
77
  // src/status.ts