@pushary/agent-hooks 0.98.0 → 1.0.0

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 (81) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/bin/pushary-bell-hook.js +20 -19
  3. package/dist/bin/pushary-bell.js +7 -6
  4. package/dist/bin/pushary-claude.js +24 -25
  5. package/dist/bin/pushary-clean.js +61 -18
  6. package/dist/bin/pushary-codex-bridge.js +11 -10
  7. package/dist/bin/pushary-codex-hook.js +43 -35
  8. package/dist/bin/pushary-codex.js +7 -7
  9. package/dist/bin/pushary-connect.js +7 -6
  10. package/dist/bin/pushary-cowork.js +3 -3
  11. package/dist/bin/pushary-daemon.js +24 -23
  12. package/dist/bin/pushary-disconnect.js +48 -7
  13. package/dist/bin/pushary-doctor.js +61 -21
  14. package/dist/bin/pushary-elicitation-hook.js +19 -18
  15. package/dist/bin/pushary-gemini-bridge.js +10 -9
  16. package/dist/bin/pushary-gemini-hook.js +27 -28
  17. package/dist/bin/pushary-hook.js +63 -34
  18. package/dist/bin/pushary-login.js +8 -7
  19. package/dist/bin/pushary-logout.js +5 -4
  20. package/dist/bin/pushary-mode.js +3 -3
  21. package/dist/bin/pushary-notification-hook.js +28 -22
  22. package/dist/bin/pushary-opencode-hook.js +29 -30
  23. package/dist/bin/pushary-permission-denied-hook.js +26 -24
  24. package/dist/bin/pushary-permission-hook.js +34 -25
  25. package/dist/bin/pushary-post-hook.js +32 -23
  26. package/dist/bin/pushary-prompt-hook.js +28 -22
  27. package/dist/bin/pushary-session-end-hook.js +28 -22
  28. package/dist/bin/pushary-session-start-hook.js +32 -26
  29. package/dist/bin/pushary-setup.js +146 -37
  30. package/dist/bin/pushary-stats.js +2 -2
  31. package/dist/bin/pushary-status.js +11 -10
  32. package/dist/bin/pushary-stop-hook.js +29 -23
  33. package/dist/bin/pushary-stopfailure-hook.js +28 -22
  34. package/dist/bin/pushary-transcript-register.js +18 -17
  35. package/dist/bin/pushary-transcripts.js +6 -5
  36. package/dist/bin/pushary-upgrade.js +15 -14
  37. package/dist/bin/pushary-wait.js +3 -3
  38. package/dist/{chunk-HFQ7WSHZ.js → chunk-2PS3DTHQ.js} +7 -4
  39. package/dist/{chunk-W2MG2P46.js → chunk-2SL5X7UB.js} +9 -6
  40. package/dist/{chunk-53QCTSWY.js → chunk-3C4ERARU.js} +4 -4
  41. package/dist/{chunk-LBNAGGLV.js → chunk-3UUAK2AK.js} +3 -2
  42. package/dist/{chunk-V47GITZV.js → chunk-447SBIC7.js} +15 -2
  43. package/dist/{chunk-VZD2GEKB.js → chunk-4LL6LG5X.js} +1 -43
  44. package/dist/{chunk-WU6LSXJ6.js → chunk-7WMFPYR5.js} +2 -2
  45. package/dist/{chunk-XPPXOKIG.js → chunk-7ZDFVWRR.js} +1 -1
  46. package/dist/chunk-A3D43VXO.js +44 -0
  47. package/dist/{chunk-3RVCQDC4.js → chunk-BOZETFXB.js} +1 -1
  48. package/dist/{chunk-LX4NNYII.js → chunk-BPD4P3NN.js} +2 -2
  49. package/dist/{chunk-IRLTW6KF.js → chunk-CDTGL7TT.js} +1 -1
  50. package/dist/{chunk-CP34FI4B.js → chunk-D2N2EJH2.js} +2 -2
  51. package/dist/{chunk-J44RPHUZ.js → chunk-DMJTWULU.js} +2 -2
  52. package/dist/{chunk-SJLGOVC6.js → chunk-DOYARIYB.js} +4 -2
  53. package/dist/{chunk-XOOWC62T.js → chunk-DUOG74E7.js} +1 -1
  54. package/dist/{chunk-OPR2BPD4.js → chunk-EMCNSBF3.js} +1 -1
  55. package/dist/{chunk-5KLAETSU.js → chunk-GTR72MIU.js} +1 -1
  56. package/dist/{chunk-5B5QV3KC.js → chunk-HGEI7SVM.js} +8 -8
  57. package/dist/chunk-HS2KEAFD.js +224 -0
  58. package/dist/{chunk-6CYB77VD.js → chunk-I3TWY7GH.js} +30 -29
  59. package/dist/{chunk-NQGYPTJQ.js → chunk-IBU7UU3R.js} +1 -1
  60. package/dist/{chunk-M4TVEMLH.js → chunk-IWZG2Y4Z.js} +1 -1
  61. package/dist/{chunk-TZHDKRMG.js → chunk-IYA3NCZG.js} +2 -2
  62. package/dist/{chunk-XL3RKJYQ.js → chunk-LTPQKBJH.js} +65 -30
  63. package/dist/{chunk-YJDRHQLG.js → chunk-MDV7ZRAT.js} +698 -43
  64. package/dist/{chunk-QXIF6R4P.js → chunk-MGI6MLFU.js} +16 -16
  65. package/dist/{chunk-DOD3A6EU.js → chunk-MSOFZYI3.js} +4 -4
  66. package/dist/{chunk-JQU6PMH4.js → chunk-R744XA2M.js} +62 -45
  67. package/dist/{chunk-FAJ4R7IB.js → chunk-RFNMSC6N.js} +1 -1
  68. package/dist/{chunk-NIXVMMJM.js → chunk-S2W4ZSHE.js} +1 -1
  69. package/dist/{chunk-OUAE3GKO.js → chunk-TTBRBWAK.js} +278 -1
  70. package/dist/{chunk-6C6MS57P.js → chunk-TVY7AT6O.js} +1 -1
  71. package/dist/{chunk-2GLOHBYB.js → chunk-UWQVODHT.js} +1 -1
  72. package/dist/{chunk-6LRGZJFB.js → chunk-XK34HTMW.js} +10 -6
  73. package/dist/{chunk-SI7GYBQP.js → chunk-XKDKUFMP.js} +1 -1
  74. package/dist/{chunk-HB2KB7QL.js → chunk-XNXIMIFY.js} +1 -1
  75. package/dist/{chunk-K6CH5NVW.js → chunk-Y55JNI2I.js} +1 -1
  76. package/dist/{chunk-OBYC6SN4.js → chunk-YKLCWWEI.js} +1 -1
  77. package/dist/{chunk-B35OCFXH.js → chunk-ZZIUQVAN.js} +4 -4
  78. package/dist/reapply-I4NB5SSM.js +30 -0
  79. package/dist/src/index.js +13 -10
  80. package/package.json +1 -1
  81. package/dist/chunk-A76GNRIK.js +0 -608
@@ -2,12 +2,12 @@
2
2
  import {
3
3
  coworkOutput,
4
4
  parseCoworkOptions
5
- } from "../chunk-CP34FI4B.js";
5
+ } from "../chunk-D2N2EJH2.js";
6
6
  import {
7
7
  canOpenBrowser,
8
8
  openInBrowser
9
9
  } from "../chunk-PUZZELE6.js";
10
- import "../chunk-LBNAGGLV.js";
10
+ import "../chunk-3UUAK2AK.js";
11
11
  import {
12
12
  exitOnHelpFlag
13
13
  } from "../chunk-GOQHN2UH.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "../chunk-KZERVKTD.js";
23
23
  import {
24
24
  CLAUDE_CONNECTOR_GUIDE
25
- } from "../chunk-OUAE3GKO.js";
25
+ } from "../chunk-TTBRBWAK.js";
26
26
 
27
27
  // bin/pushary-cowork.ts
28
28
  exitOnHelpFlag("cowork");
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  inspectConfiguredManagedProviders
4
- } from "../chunk-JQU6PMH4.js";
5
- import "../chunk-K6CH5NVW.js";
4
+ } from "../chunk-R744XA2M.js";
5
+ import "../chunk-Y55JNI2I.js";
6
6
  import {
7
7
  HEARTBEAT_INTERVAL_MS,
8
8
  sendHeartbeat
9
- } from "../chunk-B35OCFXH.js";
10
- import "../chunk-QXIF6R4P.js";
9
+ } from "../chunk-ZZIUQVAN.js";
10
+ import "../chunk-MGI6MLFU.js";
11
11
  import {
12
12
  detectProviderLiveCapabilities,
13
13
  hasSpawnProvider,
14
14
  resolveControlPolicy
15
- } from "../chunk-TZHDKRMG.js";
15
+ } from "../chunk-IYA3NCZG.js";
16
16
  import {
17
17
  SESSION_REAP_SILENCE_MS,
18
18
  describeIdleWindow,
@@ -20,15 +20,15 @@ import {
20
20
  listProcessProofs,
21
21
  ownsLiveProcess,
22
22
  silentSpawnedProofs
23
- } from "../chunk-J44RPHUZ.js";
23
+ } from "../chunk-DMJTWULU.js";
24
24
  import {
25
25
  startRegisteredTranscripts
26
- } from "../chunk-5B5QV3KC.js";
27
- import "../chunk-OBYC6SN4.js";
28
- import "../chunk-W2MG2P46.js";
29
- import "../chunk-LBNAGGLV.js";
30
- import "../chunk-IRLTW6KF.js";
31
- import "../chunk-6LRGZJFB.js";
26
+ } from "../chunk-HGEI7SVM.js";
27
+ import "../chunk-YKLCWWEI.js";
28
+ import "../chunk-2SL5X7UB.js";
29
+ import "../chunk-3UUAK2AK.js";
30
+ import "../chunk-CDTGL7TT.js";
31
+ import "../chunk-XK34HTMW.js";
32
32
  import {
33
33
  DAEMON_LEASE_RENEW_INTERVAL_MS,
34
34
  acquireDaemonLease,
@@ -45,22 +45,22 @@ import {
45
45
  requestDaemonHandoff,
46
46
  stopDaemonRunning,
47
47
  writeDaemonNeedsLogin
48
- } from "../chunk-DOD3A6EU.js";
49
- import "../chunk-HFQ7WSHZ.js";
50
- import "../chunk-2GLOHBYB.js";
51
- import "../chunk-XPPXOKIG.js";
48
+ } from "../chunk-MSOFZYI3.js";
49
+ import "../chunk-2PS3DTHQ.js";
50
+ import "../chunk-UWQVODHT.js";
51
+ import "../chunk-7ZDFVWRR.js";
52
52
  import "../chunk-EQRS3SGM.js";
53
- import "../chunk-NQGYPTJQ.js";
53
+ import "../chunk-IBU7UU3R.js";
54
54
  import {
55
55
  spawnClaude
56
56
  } from "../chunk-XHKBHWLX.js";
57
- import "../chunk-OPR2BPD4.js";
57
+ import "../chunk-EMCNSBF3.js";
58
58
  import {
59
59
  getMachineId
60
- } from "../chunk-WU6LSXJ6.js";
60
+ } from "../chunk-7WMFPYR5.js";
61
61
  import {
62
62
  resolveBinary
63
- } from "../chunk-XL3RKJYQ.js";
63
+ } from "../chunk-LTPQKBJH.js";
64
64
  import {
65
65
  writeHuman
66
66
  } from "../chunk-QCGNGEGE.js";
@@ -72,17 +72,18 @@ import "../chunk-GMXKITVA.js";
72
72
  import "../chunk-DINDL2CF.js";
73
73
  import {
74
74
  readControlMode
75
- } from "../chunk-SJLGOVC6.js";
75
+ } from "../chunk-DOYARIYB.js";
76
76
  import "../chunk-7QLSKOSU.js";
77
77
  import {
78
78
  EXIT
79
79
  } from "../chunk-KZERVKTD.js";
80
- import "../chunk-VZD2GEKB.js";
80
+ import "../chunk-A3D43VXO.js";
81
+ import "../chunk-4LL6LG5X.js";
81
82
  import {
82
83
  getApiKey,
83
84
  getBaseUrl
84
85
  } from "../chunk-2UMNXADU.js";
85
- import "../chunk-OUAE3GKO.js";
86
+ import "../chunk-TTBRBWAK.js";
86
87
 
87
88
  // src/spawn-daemon.ts
88
89
  import { execFileSync, spawn } from "child_process";
@@ -8,17 +8,28 @@ import {
8
8
  openCodePluginDir,
9
9
  openCodePluginFile,
10
10
  removeOpenCodeMcpServer
11
- } from "../chunk-HB2KB7QL.js";
11
+ } from "../chunk-XNXIMIFY.js";
12
+ import {
13
+ compatibleConfigFile,
14
+ compatibleMcpFile,
15
+ compatiblePermissionRuleFile,
16
+ removeCompatibleHooks,
17
+ removeCompatibleMcpServer
18
+ } from "../chunk-HS2KEAFD.js";
12
19
  import {
13
20
  isClaudeMcpSnapshot,
14
21
  removeClaudeMcpServers,
15
22
  removePusharySettings,
23
+ removePusharyToolPermissions,
16
24
  restoreClaudeMcpServer
17
- } from "../chunk-QXIF6R4P.js";
25
+ } from "../chunk-MGI6MLFU.js";
18
26
  import {
19
27
  removeGeminiSettings
20
- } from "../chunk-HFQ7WSHZ.js";
21
- import "../chunk-OPR2BPD4.js";
28
+ } from "../chunk-2PS3DTHQ.js";
29
+ import "../chunk-MDV7ZRAT.js";
30
+ import "../chunk-EMCNSBF3.js";
31
+ import "../chunk-LGXUGYUH.js";
32
+ import "../chunk-7WMFPYR5.js";
22
33
  import {
23
34
  claudeJson,
24
35
  claudeMcpReceipt,
@@ -32,16 +43,23 @@ import {
32
43
  geminiSettings,
33
44
  removeCodexHooks,
34
45
  removeCodexSettings
35
- } from "../chunk-XL3RKJYQ.js";
46
+ } from "../chunk-LTPQKBJH.js";
36
47
  import {
37
48
  exitOnHelpFlag
38
49
  } from "../chunk-GOQHN2UH.js";
39
50
  import "../chunk-LZQVAEWP.js";
40
51
  import "../chunk-DINDL2CF.js";
52
+ import "../chunk-EYRGBYZG.js";
53
+ import "../chunk-SAF6HGAA.js";
54
+ import "../chunk-7QLSKOSU.js";
41
55
  import "../chunk-KZERVKTD.js";
56
+ import "../chunk-A3D43VXO.js";
57
+ import "../chunk-4LL6LG5X.js";
58
+ import "../chunk-2UMNXADU.js";
42
59
  import {
43
- DISCONNECTABLE_AGENTS
44
- } from "../chunk-OUAE3GKO.js";
60
+ DISCONNECTABLE_AGENTS,
61
+ hookCompatibleProfileBySource
62
+ } from "../chunk-TTBRBWAK.js";
45
63
 
46
64
  // bin/pushary-disconnect.ts
47
65
  import { readdirSync, readFileSync, rmSync, writeFileSync } from "fs";
@@ -103,8 +121,31 @@ var disconnectPlan = (agent) => {
103
121
  // that is otherwise the person's own.
104
122
  case "opencode":
105
123
  return [{ path: openCodeConfigFile(), format: "json", remove: removeOpenCodeMcpServer }];
124
+ case "qwen":
125
+ case "codebuddy":
126
+ case "qoder":
127
+ case "droid":
128
+ case "devin":
129
+ return compatibleDisconnectPlan(agent);
106
130
  }
107
131
  };
132
+ var compatibleDisconnectPlan = (source) => {
133
+ const profile = hookCompatibleProfileBySource(source);
134
+ if (!profile) return [];
135
+ const removers = /* @__PURE__ */ new Map();
136
+ const add = (path, remove) => {
137
+ if (!path) return;
138
+ removers.set(path, [...removers.get(path) ?? [], remove]);
139
+ };
140
+ add(compatibleConfigFile(profile), (config) => removeCompatibleHooks(config, profile));
141
+ add(compatibleMcpFile(profile), (config) => removeCompatibleMcpServer(config, profile));
142
+ add(compatiblePermissionRuleFile(profile), removePusharyToolPermissions);
143
+ return [...removers].map(([path, edits]) => ({
144
+ path,
145
+ format: "json",
146
+ remove: (config) => edits.reduce((changed, edit) => edit(config) || changed, false)
147
+ }));
148
+ };
108
149
  var disconnectRemovals = (agent) => {
109
150
  if (agent !== "opencode") return [];
110
151
  return [
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  readMachineReadiness,
11
11
  readManagedControlEvidence
12
- } from "../chunk-B35OCFXH.js";
12
+ } from "../chunk-ZZIUQVAN.js";
13
13
  import {
14
14
  CURSOR_GATE_SCRIPT
15
15
  } from "../chunk-KBITFQST.js";
@@ -20,29 +20,37 @@ import {
20
20
  hasInstructionBlock,
21
21
  isDetected,
22
22
  isPluginRegistered,
23
+ shortenHome,
23
24
  vscodeSettingsTargets
24
- } from "../chunk-V47GITZV.js";
25
+ } from "../chunk-447SBIC7.js";
25
26
  import {
26
27
  OPENCODE_PLUGIN_PLACEHOLDER,
27
28
  openCodePluginDir,
28
29
  openCodePluginFile,
29
30
  openCodeWired
30
- } from "../chunk-HB2KB7QL.js";
31
- import "../chunk-QXIF6R4P.js";
31
+ } from "../chunk-XNXIMIFY.js";
32
+ import {
33
+ compatibleConfigFile,
34
+ compatibleInstructionsFile,
35
+ compatibleMcpFile,
36
+ hasCompatibleHooks,
37
+ missingCompatibleHookEvents
38
+ } from "../chunk-HS2KEAFD.js";
39
+ import "../chunk-MGI6MLFU.js";
32
40
  import {
33
41
  detectProviderLiveCapabilities,
34
42
  hasSpawnProvider,
35
43
  resolveControlPolicy
36
- } from "../chunk-TZHDKRMG.js";
44
+ } from "../chunk-IYA3NCZG.js";
37
45
  import {
38
46
  readLedgerSummary
39
- } from "../chunk-XOOWC62T.js";
47
+ } from "../chunk-DUOG74E7.js";
40
48
  import {
41
49
  describeBridgeResolution,
42
50
  isBridgeLocator,
43
51
  liveBridgeProbe,
44
52
  resolveBridgeStub
45
- } from "../chunk-IRLTW6KF.js";
53
+ } from "../chunk-CDTGL7TT.js";
46
54
  import {
47
55
  claudeOtherHolders,
48
56
  claudeUnprovenHolds,
@@ -59,7 +67,7 @@ import {
59
67
  geminiWired,
60
68
  holdsLong,
61
69
  pusharyHookExecutable
62
- } from "../chunk-6LRGZJFB.js";
70
+ } from "../chunk-XK34HTMW.js";
63
71
  import {
64
72
  daemonHasRemoteProof,
65
73
  daemonServiceManagerAvailable,
@@ -68,18 +76,19 @@ import {
68
76
  readDaemonNeedsLogin,
69
77
  readDaemonStatus,
70
78
  readInstalledDaemonService
71
- } from "../chunk-DOD3A6EU.js";
79
+ } from "../chunk-MSOFZYI3.js";
72
80
  import {
73
81
  GEMINI_HOOK_BINARY,
74
82
  hasGeminiHooks,
75
83
  missingGeminiHookEvents
76
- } from "../chunk-HFQ7WSHZ.js";
84
+ } from "../chunk-2PS3DTHQ.js";
77
85
  import "../chunk-XHKBHWLX.js";
78
- import "../chunk-A76GNRIK.js";
79
- import "../chunk-OPR2BPD4.js";
86
+ import "../chunk-MDV7ZRAT.js";
87
+ import "../chunk-EMCNSBF3.js";
88
+ import "../chunk-LGXUGYUH.js";
80
89
  import {
81
90
  getMachineId
82
- } from "../chunk-WU6LSXJ6.js";
91
+ } from "../chunk-7WMFPYR5.js";
83
92
  import {
84
93
  CODEX_HOOK_EVENTS,
85
94
  claudeJson,
@@ -102,7 +111,7 @@ import {
102
111
  pusharyConfigFile,
103
112
  readCodexMcpAuth,
104
113
  vscodePluginDir
105
- } from "../chunk-XL3RKJYQ.js";
114
+ } from "../chunk-LTPQKBJH.js";
106
115
  import {
107
116
  describeReach,
108
117
  describeRoundTrip,
@@ -110,12 +119,12 @@ import {
110
119
  reachVerdict,
111
120
  roundTripEvidence,
112
121
  verifyRoundTrip
113
- } from "../chunk-LX4NNYII.js";
122
+ } from "../chunk-BPD4P3NN.js";
114
123
  import "../chunk-3EGEA4KH.js";
115
124
  import {
116
125
  checkApiKey,
117
126
  describeKeyCheck
118
- } from "../chunk-3RVCQDC4.js";
127
+ } from "../chunk-BOZETFXB.js";
119
128
  import "../chunk-QCGNGEGE.js";
120
129
  import {
121
130
  createIo
@@ -134,7 +143,7 @@ import {
134
143
  keyPrefix,
135
144
  readControlMode,
136
145
  readKeySource
137
- } from "../chunk-SJLGOVC6.js";
146
+ } from "../chunk-DOYARIYB.js";
138
147
  import {
139
148
  callMcpTool,
140
149
  sendMcpRequest
@@ -146,17 +155,19 @@ import {
146
155
  import {
147
156
  EXIT
148
157
  } from "../chunk-KZERVKTD.js";
149
- import "../chunk-VZD2GEKB.js";
158
+ import "../chunk-A3D43VXO.js";
159
+ import "../chunk-4LL6LG5X.js";
150
160
  import {
151
161
  getBaseUrl
152
162
  } from "../chunk-2UMNXADU.js";
153
163
  import {
154
164
  AGENTS,
155
165
  CURSOR_GATE_EVENTS,
166
+ HOOK_COMPATIBLE_PROFILES,
156
167
  HOOK_LOCATOR_BINARY,
157
168
  hookActivationResult,
158
169
  isHookActivationReport
159
- } from "../chunk-OUAE3GKO.js";
170
+ } from "../chunk-TTBRBWAK.js";
160
171
 
161
172
  // bin/pushary-doctor.ts
162
173
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -496,7 +507,7 @@ var main = async () => {
496
507
  check(present, `Claude Code: ${label}`, present ? void 0 : "missing \u2014 run npx @pushary/agent-hooks@latest upgrade");
497
508
  }
498
509
  for (const event of claudeUnprovenHolds(settings)) {
499
- console.log(` ${warn} Claude Code: ${event} hook predates the hold budget ${dim("(an auto-mode block only notifies; run npx @pushary/agent-hooks@latest upgrade)")}`);
510
+ console.log(` ${warn} Claude Code: ${event} hook carries no current hold budget ${dim("(an auto-mode block only notifies; run npx @pushary/agent-hooks@latest upgrade)")}`);
500
511
  }
501
512
  const preHookCommand = extractAgentHookCommand(hooks?.PreToolUse, "pushary-hook");
502
513
  if (preHookCommand) {
@@ -596,7 +607,7 @@ var main = async () => {
596
607
  }
597
608
  }
598
609
  for (const event of codexUnprovenHolds(codexHooksConfig)) {
599
- console.log(` ${warn} Codex: ${event} hook predates the hold budget ${dim("(an auto-reviewer denial is not asked about; run npx @pushary/agent-hooks@latest upgrade)")}`);
610
+ console.log(` ${warn} Codex: ${event} hook carries no current hold budget ${dim("(an auto-reviewer denial is not asked about; run npx @pushary/agent-hooks@latest upgrade)")}`);
600
611
  }
601
612
  } else {
602
613
  check(!!codexNotifyPath, "Codex: notify handler configured (deprecated)", codexNotifyPath ? "upgrade Codex and re-run setup for native hooks" : "missing, re-run setup");
@@ -661,6 +672,35 @@ var main = async () => {
661
672
  } else {
662
673
  skipped("Gemini CLI", installed("gemini_cli") ? "installed, but Pushary is not set up for it" : "not installed");
663
674
  }
675
+ for (const profile of HOOK_COMPATIBLE_PROFILES) {
676
+ const configPath = compatibleConfigFile(profile);
677
+ const config = readJson(configPath);
678
+ if (!config || !hasCompatibleHooks(config, profile)) {
679
+ skipped(profile.label, installed(profile.agentType) ? "installed, but Pushary is not set up for it" : "not installed");
680
+ continue;
681
+ }
682
+ checking(profile.label);
683
+ const missing = missingCompatibleHookEvents(config, profile);
684
+ check(
685
+ missing.length === 0,
686
+ `${profile.label}: native hooks installed`,
687
+ missing.length === 0 ? shortenHome(configPath) : `missing ${missing.join(", ")} \u2014 re-run setup`
688
+ );
689
+ const mcpPath = compatibleMcpFile(profile);
690
+ if (mcpPath) {
691
+ const hasServer = Boolean(readJson(mcpPath)?.mcpServers?.pushary);
692
+ check(hasServer, `${profile.label}: MCP server`, hasServer ? shortenHome(mcpPath) : "missing \u2014 re-run setup");
693
+ }
694
+ const instructionsPath = compatibleInstructionsFile(profile);
695
+ if (instructionsPath) {
696
+ const present = hasInstructionBlock(instructionsPath);
697
+ check(
698
+ present,
699
+ `${profile.label}: proactive instructions`,
700
+ present ? shortenHome(instructionsPath) : "missing \u2014 re-run setup so it asks via push, not the terminal"
701
+ );
702
+ }
703
+ }
664
704
  const configuredManagedProviders = [
665
705
  ...claudeInPlay ? ["claude"] : [],
666
706
  ...codexInPlay ? ["codex"] : [],
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-M4TVEMLH.js";
4
+ } from "../chunk-IWZG2Y4Z.js";
5
5
  import {
6
6
  isDeferAnswer
7
7
  } from "../chunk-YHG74UFF.js";
8
- import "../chunk-5B5QV3KC.js";
9
- import "../chunk-OBYC6SN4.js";
10
- import "../chunk-W2MG2P46.js";
11
- import "../chunk-LBNAGGLV.js";
12
- import "../chunk-IRLTW6KF.js";
13
- import "../chunk-6LRGZJFB.js";
14
- import "../chunk-DOD3A6EU.js";
15
- import "../chunk-HFQ7WSHZ.js";
16
- import "../chunk-2GLOHBYB.js";
17
- import "../chunk-XPPXOKIG.js";
8
+ import "../chunk-HGEI7SVM.js";
9
+ import "../chunk-YKLCWWEI.js";
10
+ import "../chunk-2SL5X7UB.js";
11
+ import "../chunk-3UUAK2AK.js";
12
+ import "../chunk-CDTGL7TT.js";
13
+ import "../chunk-XK34HTMW.js";
14
+ import "../chunk-MSOFZYI3.js";
15
+ import "../chunk-2PS3DTHQ.js";
16
+ import "../chunk-UWQVODHT.js";
17
+ import "../chunk-7ZDFVWRR.js";
18
18
  import "../chunk-EQRS3SGM.js";
19
- import "../chunk-NQGYPTJQ.js";
19
+ import "../chunk-IBU7UU3R.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
- import "../chunk-OPR2BPD4.js";
21
+ import "../chunk-EMCNSBF3.js";
22
22
  import {
23
23
  askUser,
24
24
  isDecisionStopped,
@@ -26,16 +26,17 @@ import {
26
26
  } from "../chunk-LGXUGYUH.js";
27
27
  import {
28
28
  getMachineId
29
- } from "../chunk-WU6LSXJ6.js";
30
- import "../chunk-XL3RKJYQ.js";
29
+ } from "../chunk-7WMFPYR5.js";
30
+ import "../chunk-LTPQKBJH.js";
31
31
  import "../chunk-GMXKITVA.js";
32
32
  import "../chunk-DINDL2CF.js";
33
- import "../chunk-SJLGOVC6.js";
33
+ import "../chunk-DOYARIYB.js";
34
34
  import "../chunk-EYRGBYZG.js";
35
35
  import "../chunk-SAF6HGAA.js";
36
36
  import "../chunk-7QLSKOSU.js";
37
37
  import "../chunk-KZERVKTD.js";
38
- import "../chunk-VZD2GEKB.js";
38
+ import "../chunk-A3D43VXO.js";
39
+ import "../chunk-4LL6LG5X.js";
39
40
  import {
40
41
  getApiKey
41
42
  } from "../chunk-2UMNXADU.js";
@@ -49,7 +50,7 @@ import {
49
50
  planElicitationAsk,
50
51
  readElicitationFields,
51
52
  renderElicitationOutput
52
- } from "../chunk-OUAE3GKO.js";
53
+ } from "../chunk-TTBRBWAK.js";
53
54
 
54
55
  // bin/pushary-elicitation-hook.ts
55
56
  import { basename } from "path";
@@ -5,35 +5,36 @@ import {
5
5
  postLiveSession,
6
6
  postLiveSessionUntilAccepted,
7
7
  startLiveSessionHeartbeat
8
- } from "../chunk-5KLAETSU.js";
8
+ } from "../chunk-GTR72MIU.js";
9
9
  import {
10
10
  SESSION_IDLE_TIMEOUT_MS,
11
11
  describeIdleWindow,
12
12
  idleDeadlinePassed,
13
13
  startProcessOwnership,
14
14
  withSpawnProcessOwnership
15
- } from "../chunk-J44RPHUZ.js";
16
- import "../chunk-XPPXOKIG.js";
15
+ } from "../chunk-DMJTWULU.js";
16
+ import "../chunk-7ZDFVWRR.js";
17
17
  import "../chunk-EQRS3SGM.js";
18
18
  import {
19
19
  transcriptsEnabled
20
- } from "../chunk-NQGYPTJQ.js";
20
+ } from "../chunk-IBU7UU3R.js";
21
21
  import {
22
22
  spawnClaude
23
23
  } from "../chunk-XHKBHWLX.js";
24
24
  import {
25
25
  getMachineId
26
- } from "../chunk-WU6LSXJ6.js";
26
+ } from "../chunk-7WMFPYR5.js";
27
27
  import {
28
28
  resolveBinary
29
- } from "../chunk-XL3RKJYQ.js";
30
- import "../chunk-SJLGOVC6.js";
31
- import "../chunk-VZD2GEKB.js";
29
+ } from "../chunk-LTPQKBJH.js";
30
+ import "../chunk-DOYARIYB.js";
31
+ import "../chunk-A3D43VXO.js";
32
+ import "../chunk-4LL6LG5X.js";
32
33
  import {
33
34
  getApiKey,
34
35
  getBaseUrl
35
36
  } from "../chunk-2UMNXADU.js";
36
- import "../chunk-OUAE3GKO.js";
37
+ import "../chunk-TTBRBWAK.js";
37
38
 
38
39
  // bin/pushary-gemini-bridge.ts
39
40
  import { existsSync } from "fs";
@@ -2,29 +2,34 @@
2
2
  import {
3
3
  isGatingMoment,
4
4
  recordKeylessMoment
5
- } from "../chunk-XOOWC62T.js";
5
+ } from "../chunk-DUOG74E7.js";
6
6
  import {
7
7
  readHookInput
8
- } from "../chunk-M4TVEMLH.js";
8
+ } from "../chunk-IWZG2Y4Z.js";
9
9
  import {
10
10
  denyReasonFrom,
11
11
  isDeferAnswer
12
12
  } from "../chunk-YHG74UFF.js";
13
- import "../chunk-5B5QV3KC.js";
14
- import "../chunk-OBYC6SN4.js";
15
- import "../chunk-W2MG2P46.js";
16
- import "../chunk-LBNAGGLV.js";
17
- import "../chunk-IRLTW6KF.js";
18
- import "../chunk-6LRGZJFB.js";
19
- import "../chunk-DOD3A6EU.js";
20
- import "../chunk-HFQ7WSHZ.js";
21
- import "../chunk-2GLOHBYB.js";
22
- import "../chunk-XPPXOKIG.js";
13
+ import "../chunk-HGEI7SVM.js";
14
+ import "../chunk-YKLCWWEI.js";
15
+ import "../chunk-2SL5X7UB.js";
16
+ import "../chunk-3UUAK2AK.js";
17
+ import "../chunk-CDTGL7TT.js";
18
+ import "../chunk-XK34HTMW.js";
19
+ import "../chunk-MSOFZYI3.js";
20
+ import "../chunk-2PS3DTHQ.js";
21
+ import "../chunk-UWQVODHT.js";
22
+ import "../chunk-7ZDFVWRR.js";
23
23
  import "../chunk-EQRS3SGM.js";
24
- import "../chunk-NQGYPTJQ.js";
24
+ import "../chunk-IBU7UU3R.js";
25
25
  import "../chunk-XHKBHWLX.js";
26
26
  import {
27
27
  DEFAULT_SESSION,
28
+ UNNAMED_ACTION,
29
+ deriveActionBody,
30
+ deriveBlocker,
31
+ deriveToolTarget,
32
+ describeToolCall,
28
33
  fetchModeState,
29
34
  getPolicy,
30
35
  handlePostToolUse,
@@ -35,17 +40,10 @@ import {
35
40
  readLastPrompt,
36
41
  readLastUserPrompt,
37
42
  repoKeyFor,
38
- reportEvent
39
- } from "../chunk-YJDRHQLG.js";
40
- import {
41
- UNNAMED_ACTION,
42
- deriveActionBody,
43
- deriveBlocker,
44
- deriveToolTarget,
45
- describeToolCall,
43
+ reportEvent,
46
44
  scopePathFor
47
- } from "../chunk-A76GNRIK.js";
48
- import "../chunk-OPR2BPD4.js";
45
+ } from "../chunk-MDV7ZRAT.js";
46
+ import "../chunk-EMCNSBF3.js";
49
47
  import {
50
48
  DECISION_STOP_REASON,
51
49
  askUser,
@@ -56,16 +54,17 @@ import {
56
54
  } from "../chunk-LGXUGYUH.js";
57
55
  import {
58
56
  getMachineId
59
- } from "../chunk-WU6LSXJ6.js";
60
- import "../chunk-XL3RKJYQ.js";
57
+ } from "../chunk-7WMFPYR5.js";
58
+ import "../chunk-LTPQKBJH.js";
61
59
  import "../chunk-GMXKITVA.js";
62
60
  import "../chunk-DINDL2CF.js";
63
- import "../chunk-SJLGOVC6.js";
61
+ import "../chunk-DOYARIYB.js";
64
62
  import "../chunk-EYRGBYZG.js";
65
63
  import "../chunk-SAF6HGAA.js";
66
64
  import "../chunk-7QLSKOSU.js";
67
65
  import "../chunk-KZERVKTD.js";
68
- import "../chunk-VZD2GEKB.js";
66
+ import "../chunk-A3D43VXO.js";
67
+ import "../chunk-4LL6LG5X.js";
69
68
  import {
70
69
  getApiKey
71
70
  } from "../chunk-2UMNXADU.js";
@@ -77,7 +76,7 @@ import {
77
76
  hookWaitClamped,
78
77
  hookWaitDeadline,
79
78
  resolveGate
80
- } from "../chunk-OUAE3GKO.js";
79
+ } from "../chunk-TTBRBWAK.js";
81
80
 
82
81
  // bin/pushary-gemini-hook.ts
83
82
  import { basename } from "path";