@pushary/agent-hooks 0.89.9 → 0.89.11

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 (68) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/bin/pushary-bell-hook.js +4 -4
  3. package/dist/bin/pushary-bell.js +7 -7
  4. package/dist/bin/pushary-claude.js +84 -36
  5. package/dist/bin/pushary-clean.js +52 -45
  6. package/dist/bin/pushary-codex-bridge.js +15 -9
  7. package/dist/bin/pushary-codex-hook.js +12 -8
  8. package/dist/bin/pushary-codex.js +7 -7
  9. package/dist/bin/pushary-connect.js +6 -6
  10. package/dist/bin/pushary-daemon.js +16 -16
  11. package/dist/bin/pushary-disconnect.js +34 -9
  12. package/dist/bin/pushary-doctor.js +19 -19
  13. package/dist/bin/pushary-elicitation-hook.js +4 -4
  14. package/dist/bin/pushary-gemini-bridge.js +15 -8
  15. package/dist/bin/pushary-gemini-hook.js +8 -8
  16. package/dist/bin/pushary-hook.js +11 -10
  17. package/dist/bin/pushary-login.js +4 -4
  18. package/dist/bin/pushary-logout.js +4 -4
  19. package/dist/bin/pushary-mode.js +3 -3
  20. package/dist/bin/pushary-notification-hook.js +7 -7
  21. package/dist/bin/pushary-opencode-hook.js +8 -8
  22. package/dist/bin/pushary-permission-denied-hook.js +11 -10
  23. package/dist/bin/pushary-permission-hook.js +11 -10
  24. package/dist/bin/pushary-post-hook.js +7 -7
  25. package/dist/bin/pushary-prompt-hook.js +7 -7
  26. package/dist/bin/pushary-session-end-hook.js +7 -7
  27. package/dist/bin/pushary-session-start-hook.js +7 -7
  28. package/dist/bin/pushary-setup.js +52 -54
  29. package/dist/bin/pushary-stats.js +2 -2
  30. package/dist/bin/pushary-status.js +8 -8
  31. package/dist/bin/pushary-stop-hook.js +7 -7
  32. package/dist/bin/pushary-stopfailure-hook.js +7 -7
  33. package/dist/bin/pushary-upgrade.js +15 -15
  34. package/dist/bin/pushary-wait.js +3 -3
  35. package/dist/{chunk-SS72Z7FV.js → chunk-253WC6O5.js} +1 -1
  36. package/dist/{chunk-T3LRWZKI.js → chunk-2LPEZYMC.js} +1 -1
  37. package/dist/{chunk-O5B7EK5U.js → chunk-34GN3IPX.js} +1 -1
  38. package/dist/{chunk-V6N4Q223.js → chunk-3CUDMTL4.js} +1 -1
  39. package/dist/{chunk-VZKXBFUA.js → chunk-3HFK3UXM.js} +1 -1
  40. package/dist/{chunk-543KNJKC.js → chunk-3SQYKLBW.js} +3 -3
  41. package/dist/{chunk-ATBKJNWS.js → chunk-6EKQZA6R.js} +5 -1
  42. package/dist/{chunk-NKHEHEUM.js → chunk-6XUABEX2.js} +1 -1
  43. package/dist/{chunk-I5L6SK5V.js → chunk-BLODMQKJ.js} +1 -1
  44. package/dist/{chunk-DKDDLF5P.js → chunk-DKWM5T3P.js} +1 -1
  45. package/dist/{chunk-4XZCDSNG.js → chunk-FXIL7RCL.js} +5 -5
  46. package/dist/{chunk-BAE45YLP.js → chunk-FZ73G2RO.js} +3 -3
  47. package/dist/{chunk-PMHTCDEO.js → chunk-IUN6VOKV.js} +1 -1
  48. package/dist/{chunk-OFRNZWC4.js → chunk-IUWRVTQK.js} +1 -1
  49. package/dist/{chunk-EJT2ER6G.js → chunk-J4K75V4D.js} +46 -35
  50. package/dist/{chunk-GKAKAOKC.js → chunk-JHJHCMAF.js} +65 -12
  51. package/dist/{chunk-J2JZJZKB.js → chunk-KVE5RCQL.js} +1 -1
  52. package/dist/{chunk-A4O5ROZK.js → chunk-MZGWKIUZ.js} +2 -2
  53. package/dist/chunk-NCVIWGVA.js +18 -0
  54. package/dist/{chunk-C623LWJR.js → chunk-OLAGKKSR.js} +1 -1
  55. package/dist/{chunk-EA3E74P2.js → chunk-PZRWFWSR.js} +6 -6
  56. package/dist/{chunk-VA7VUNRD.js → chunk-Q223OM5J.js} +58 -8
  57. package/dist/{chunk-GMI5QZLG.js → chunk-QA72MKIT.js} +5 -1
  58. package/dist/{chunk-AIGDBRIJ.js → chunk-SYUIXXQW.js} +1 -1
  59. package/dist/{chunk-TF247BET.js → chunk-TEZ2FZD6.js} +1 -1
  60. package/dist/{chunk-KOPUTJQC.js → chunk-TG3T3M4K.js} +1 -1
  61. package/dist/{chunk-FX5QSMPY.js → chunk-TRVIRETT.js} +1 -1
  62. package/dist/{chunk-U5TQCQ25.js → chunk-TY5HVMXT.js} +1 -1
  63. package/dist/chunk-UDBJHQMG.js +240 -0
  64. package/dist/{chunk-PZA7G4CN.js → chunk-X4ZUUFKV.js} +1 -0
  65. package/dist/{chunk-L4C2JXJS.js → chunk-X6RXX2NF.js} +5 -0
  66. package/dist/src/index.d.ts +5 -0
  67. package/dist/src/index.js +11 -10
  68. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnFailedResponse
4
- } from "../chunk-SS72Z7FV.js";
5
- import "../chunk-I5L6SK5V.js";
4
+ } from "../chunk-253WC6O5.js";
5
+ import "../chunk-BLODMQKJ.js";
6
6
  import {
7
7
  createIo
8
8
  } from "../chunk-5RUIFDTP.js";
@@ -25,7 +25,7 @@ import {
25
25
  getApiKey,
26
26
  getBaseUrl
27
27
  } from "../chunk-2UMNXADU.js";
28
- import "../chunk-L4C2JXJS.js";
28
+ import "../chunk-X6RXX2NF.js";
29
29
 
30
30
  // bin/pushary-mode.ts
31
31
  exitOnHelpFlag("mode");
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleNotification
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-notification-hook.ts
22
22
  var main = async () => {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  isGatingMoment,
4
4
  recordKeylessMoment
5
- } from "../chunk-VZKXBFUA.js";
5
+ } from "../chunk-3HFK3UXM.js";
6
6
  import {
7
7
  readHookInput
8
8
  } from "../chunk-6CUUA7HO.js";
@@ -19,7 +19,7 @@ import {
19
19
  policyRequestFor,
20
20
  readLastPrompt,
21
21
  repoKeyFor
22
- } from "../chunk-4XZCDSNG.js";
22
+ } from "../chunk-FXIL7RCL.js";
23
23
  import {
24
24
  DEFAULT_SESSION,
25
25
  askUser,
@@ -27,7 +27,7 @@ import {
27
27
  savePendingQuestion,
28
28
  sendNotification,
29
29
  waitForAnswer
30
- } from "../chunk-GKAKAOKC.js";
30
+ } from "../chunk-JHJHCMAF.js";
31
31
  import {
32
32
  HOOK_FALLBACK_MAX,
33
33
  OPENCODE_TOOL_NAMES,
@@ -36,14 +36,14 @@ import {
36
36
  deriveToolTarget,
37
37
  describeToolCall,
38
38
  scopePathFor
39
- } from "../chunk-KOPUTJQC.js";
39
+ } from "../chunk-TG3T3M4K.js";
40
40
  import {
41
41
  getMachineId
42
- } from "../chunk-DKDDLF5P.js";
43
- import "../chunk-GMI5QZLG.js";
42
+ } from "../chunk-DKWM5T3P.js";
43
+ import "../chunk-QA72MKIT.js";
44
44
  import "../chunk-BSZYIAZL.js";
45
45
  import "../chunk-SAF6HGAA.js";
46
- import "../chunk-OFRNZWC4.js";
46
+ import "../chunk-IUWRVTQK.js";
47
47
  import "../chunk-7QLSKOSU.js";
48
48
  import "../chunk-KZERVKTD.js";
49
49
  import "../chunk-XX2V4QS5.js";
@@ -60,7 +60,7 @@ import {
60
60
  hookWaitDeadline,
61
61
  redactSecrets,
62
62
  resolveGate
63
- } from "../chunk-L4C2JXJS.js";
63
+ } from "../chunk-X6RXX2NF.js";
64
64
 
65
65
  // bin/pushary-opencode-hook.ts
66
66
  import { basename } from "path";
@@ -1,26 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionDenied
4
- } from "../chunk-EJT2ER6G.js";
5
- import "../chunk-ATBKJNWS.js";
6
- import "../chunk-VZKXBFUA.js";
4
+ } from "../chunk-J4K75V4D.js";
5
+ import "../chunk-6EKQZA6R.js";
6
+ import "../chunk-NCVIWGVA.js";
7
+ import "../chunk-3HFK3UXM.js";
7
8
  import {
8
9
  readHookInput
9
10
  } from "../chunk-6CUUA7HO.js";
10
11
  import "../chunk-YHG74UFF.js";
11
- import "../chunk-4XZCDSNG.js";
12
- import "../chunk-GKAKAOKC.js";
13
- import "../chunk-KOPUTJQC.js";
14
- import "../chunk-DKDDLF5P.js";
15
- import "../chunk-GMI5QZLG.js";
12
+ import "../chunk-FXIL7RCL.js";
13
+ import "../chunk-JHJHCMAF.js";
14
+ import "../chunk-TG3T3M4K.js";
15
+ import "../chunk-DKWM5T3P.js";
16
+ import "../chunk-QA72MKIT.js";
16
17
  import "../chunk-BSZYIAZL.js";
17
18
  import "../chunk-SAF6HGAA.js";
18
- import "../chunk-OFRNZWC4.js";
19
+ import "../chunk-IUWRVTQK.js";
19
20
  import "../chunk-7QLSKOSU.js";
20
21
  import "../chunk-KZERVKTD.js";
21
22
  import "../chunk-XX2V4QS5.js";
22
23
  import "../chunk-2UMNXADU.js";
23
- import "../chunk-L4C2JXJS.js";
24
+ import "../chunk-X6RXX2NF.js";
24
25
 
25
26
  // bin/pushary-permission-denied-hook.ts
26
27
  var main = async () => {
@@ -1,26 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePermissionRequest
4
- } from "../chunk-EJT2ER6G.js";
5
- import "../chunk-ATBKJNWS.js";
6
- import "../chunk-VZKXBFUA.js";
4
+ } from "../chunk-J4K75V4D.js";
5
+ import "../chunk-6EKQZA6R.js";
6
+ import "../chunk-NCVIWGVA.js";
7
+ import "../chunk-3HFK3UXM.js";
7
8
  import {
8
9
  readHookInput
9
10
  } from "../chunk-6CUUA7HO.js";
10
11
  import "../chunk-YHG74UFF.js";
11
- import "../chunk-4XZCDSNG.js";
12
- import "../chunk-GKAKAOKC.js";
13
- import "../chunk-KOPUTJQC.js";
14
- import "../chunk-DKDDLF5P.js";
15
- import "../chunk-GMI5QZLG.js";
12
+ import "../chunk-FXIL7RCL.js";
13
+ import "../chunk-JHJHCMAF.js";
14
+ import "../chunk-TG3T3M4K.js";
15
+ import "../chunk-DKWM5T3P.js";
16
+ import "../chunk-QA72MKIT.js";
16
17
  import "../chunk-BSZYIAZL.js";
17
18
  import "../chunk-SAF6HGAA.js";
18
- import "../chunk-OFRNZWC4.js";
19
+ import "../chunk-IUWRVTQK.js";
19
20
  import "../chunk-7QLSKOSU.js";
20
21
  import "../chunk-KZERVKTD.js";
21
22
  import "../chunk-XX2V4QS5.js";
22
23
  import "../chunk-2UMNXADU.js";
23
- import "../chunk-L4C2JXJS.js";
24
+ import "../chunk-X6RXX2NF.js";
24
25
 
25
26
  // bin/pushary-permission-hook.ts
26
27
  var main = async () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handlePostToolUse
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-post-hook.ts
22
22
  var main = async () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleUserPrompt
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-prompt-hook.ts
22
22
  var main = async () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleSessionEnd
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-session-end-hook.ts
22
22
  var main = async () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleSessionStart
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-session-start-hook.ts
22
22
  var main = async () => {
@@ -1,18 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  detectClaudeVersion
4
- } from "../chunk-J2JZJZKB.js";
4
+ } from "../chunk-KVE5RCQL.js";
5
5
  import {
6
6
  claudeWired,
7
7
  codexWired,
8
8
  geminiWired
9
- } from "../chunk-BAE45YLP.js";
9
+ } from "../chunk-FZ73G2RO.js";
10
10
  import {
11
11
  waitForMachineReadiness
12
- } from "../chunk-U5TQCQ25.js";
12
+ } from "../chunk-TY5HVMXT.js";
13
13
  import {
14
14
  runBrowserLogin
15
15
  } from "../chunk-Z3Z4VK5F.js";
16
+ import {
17
+ HERMES_CONFIG_SCRIPT,
18
+ isHermesConfigReceipt,
19
+ resolveHermesPython,
20
+ runHermesPythonScript
21
+ } from "../chunk-UDBJHQMG.js";
16
22
  import {
17
23
  describeDetection,
18
24
  detectAllAgents,
@@ -24,7 +30,7 @@ import {
24
30
  shortenHome,
25
31
  vscodeSettingsTargets,
26
32
  writeInstructionBlock
27
- } from "../chunk-A4O5ROZK.js";
33
+ } from "../chunk-MZGWKIUZ.js";
28
34
  import {
29
35
  OPENCODE_HOOK_BINARY,
30
36
  addOpenCodeMcpServer,
@@ -35,7 +41,7 @@ import {
35
41
  openCodePluginDir,
36
42
  openCodePluginFile,
37
43
  openCodeWired
38
- } from "../chunk-O5B7EK5U.js";
44
+ } from "../chunk-34GN3IPX.js";
39
45
  import {
40
46
  GEMINI_HOOK_BINARY,
41
47
  addClaudeMcpServer,
@@ -43,15 +49,18 @@ import {
43
49
  addGeminiMcpServer,
44
50
  addPusharyHooks,
45
51
  addPusharyToolPermissions,
52
+ captureClaudeMcpServer,
46
53
  compareVersion,
47
- parseVersion
48
- } from "../chunk-VA7VUNRD.js";
49
- import "../chunk-ATBKJNWS.js";
54
+ isClaudeMcpSnapshot,
55
+ parseVersion,
56
+ updateClaudeMcpSnapshot
57
+ } from "../chunk-Q223OM5J.js";
58
+ import "../chunk-6EKQZA6R.js";
50
59
  import {
51
60
  guardBinary,
52
61
  guardNodeScript,
53
62
  guardedArgv
54
- } from "../chunk-AIGDBRIJ.js";
63
+ } from "../chunk-SYUIXXQW.js";
55
64
  import {
56
65
  daemonHasRemoteProof,
57
66
  daemonServiceManagerAvailable,
@@ -62,30 +71,31 @@ import {
62
71
  replaceDaemonService,
63
72
  stopDaemonService,
64
73
  waitForDaemonRemoteProof
65
- } from "../chunk-543KNJKC.js";
74
+ } from "../chunk-3SQYKLBW.js";
66
75
  import {
67
76
  detectProviderLiveCapabilities,
68
77
  hasSpawnProvider,
69
78
  resolveControlPolicy
70
- } from "../chunk-NKHEHEUM.js";
79
+ } from "../chunk-6XUABEX2.js";
71
80
  import "../chunk-XHKBHWLX.js";
72
81
  import {
73
82
  installGlobally,
74
83
  npmErrorMessage,
75
84
  resolveGlobalBinDir,
76
85
  resolveGlobalBinary
77
- } from "../chunk-PZA7G4CN.js";
86
+ } from "../chunk-X4ZUUFKV.js";
78
87
  import {
79
88
  reportEvent
80
- } from "../chunk-4XZCDSNG.js";
81
- import "../chunk-GKAKAOKC.js";
82
- import "../chunk-KOPUTJQC.js";
83
- import "../chunk-DKDDLF5P.js";
89
+ } from "../chunk-FXIL7RCL.js";
90
+ import "../chunk-JHJHCMAF.js";
91
+ import "../chunk-TG3T3M4K.js";
92
+ import "../chunk-DKWM5T3P.js";
84
93
  import {
85
94
  addCodexHookTrust,
86
95
  addCodexHooks,
87
96
  addCodexMcpServer,
88
97
  claudeJson,
98
+ claudeMcpReceipt,
89
99
  claudeSettings,
90
100
  claudeSkillDir,
91
101
  codexAgentsMd2 as codexAgentsMd,
@@ -98,9 +108,10 @@ import {
98
108
  cursorUserHooks,
99
109
  geminiMd,
100
110
  geminiSettings,
111
+ hermesConfigReceipt,
101
112
  pusharyConfigFile,
102
113
  vscodePluginDir
103
- } from "../chunk-GMI5QZLG.js";
114
+ } from "../chunk-QA72MKIT.js";
104
115
  import {
105
116
  confirmAppConnection,
106
117
  connectDevice,
@@ -109,12 +120,12 @@ import {
109
120
  printConnectInstructions,
110
121
  setHumanStream,
111
122
  verifyRoundTrip
112
- } from "../chunk-T3LRWZKI.js";
123
+ } from "../chunk-2LPEZYMC.js";
113
124
  import "../chunk-3EGEA4KH.js";
114
125
  import {
115
126
  checkApiKey,
116
127
  describeKeyCheck
117
- } from "../chunk-I5L6SK5V.js";
128
+ } from "../chunk-BLODMQKJ.js";
118
129
  import {
119
130
  useColor
120
131
  } from "../chunk-5RUIFDTP.js";
@@ -126,7 +137,7 @@ import {
126
137
  readControlMode,
127
138
  readKeySource,
128
139
  writeKey
129
- } from "../chunk-V6N4Q223.js";
140
+ } from "../chunk-3CUDMTL4.js";
130
141
  import {
131
142
  parseFlags
132
143
  } from "../chunk-GMXKITVA.js";
@@ -143,7 +154,7 @@ import {
143
154
  } from "../chunk-DINDL2CF.js";
144
155
  import "../chunk-BSZYIAZL.js";
145
156
  import "../chunk-SAF6HGAA.js";
146
- import "../chunk-OFRNZWC4.js";
157
+ import "../chunk-IUWRVTQK.js";
147
158
  import {
148
159
  UsageError
149
160
  } from "../chunk-7QLSKOSU.js";
@@ -160,12 +171,12 @@ import "../chunk-2UMNXADU.js";
160
171
  import {
161
172
  CURSOR_GATE_EVENTS,
162
173
  isValidApiKey
163
- } from "../chunk-L4C2JXJS.js";
174
+ } from "../chunk-X6RXX2NF.js";
164
175
 
165
176
  // bin/pushary-setup.ts
166
177
  import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, renameSync, realpathSync, readdirSync, statSync, openSync, readSync, closeSync } from "fs";
167
178
  import { join as join3, dirname as dirname2, basename } from "path";
168
- import { homedir, tmpdir } from "os";
179
+ import { homedir } from "os";
169
180
  import { execSync as execSync2 } from "child_process";
170
181
  import { checkbox, input, confirm } from "@inquirer/prompts";
171
182
  import { fileURLToPath } from "url";
@@ -600,6 +611,8 @@ var parseSetupOptions = (input2) => {
600
611
  // bin/pushary-setup.ts
601
612
  var CLAUDE_SETTINGS = claudeSettings();
602
613
  var CLAUDE_JSON = claudeJson();
614
+ var CLAUDE_MCP_RECEIPT = claudeMcpReceipt();
615
+ var HERMES_CONFIG_RECEIPT = hermesConfigReceipt();
603
616
  var CURSOR_PLUGIN_DIR = cursorPluginDir();
604
617
  var CURSOR_USER_HOOKS = cursorUserHooks();
605
618
  var VSCODE_PLUGIN_DIR = vscodePluginDir();
@@ -795,6 +808,17 @@ var setupClaudeCode = async (apiKey) => {
795
808
  await installGlobally2();
796
809
  const claudeJson2 = readAgentJson(CLAUDE_JSON);
797
810
  const settings = readAgentJson(CLAUDE_SETTINGS);
811
+ const mcpReceipt = readJsonSafe(CLAUDE_MCP_RECEIPT);
812
+ let mcpSnapshot;
813
+ if (mcpReceipt.kind === "missing") {
814
+ mcpSnapshot = captureClaudeMcpServer(claudeJson2, apiKey);
815
+ } else {
816
+ if (mcpReceipt.kind !== "ok" || !isClaudeMcpSnapshot(mcpReceipt.value)) {
817
+ throw new Error(`Cannot safely replace Claude's Pushary MCP entry: ${CLAUDE_MCP_RECEIPT} is unreadable or invalid.`);
818
+ }
819
+ mcpSnapshot = updateClaudeMcpSnapshot(mcpReceipt.value, apiKey);
820
+ }
821
+ writeJsonAtomic(CLAUDE_MCP_RECEIPT, mcpSnapshot, 384);
798
822
  await spinner("Adding MCP server (type: http)", async () => {
799
823
  addClaudeMcpServer(claudeJson2, apiKey);
800
824
  });
@@ -819,23 +843,6 @@ var setupClaudeCode = async (apiKey) => {
819
843
  console.log(` ${dim("\u2022")} Auto-allowed tools: no permission prompts for Pushary MCP calls`);
820
844
  };
821
845
  var IS_WINDOWS = process.platform === "win32";
822
- var resolveHermesPython = () => {
823
- try {
824
- const probe = IS_WINDOWS ? "where hermes" : "command -v hermes";
825
- const launcher = execSync2(probe, { encoding: "utf-8", stdio: "pipe", timeout: 5e3 }).split("\n")[0].trim();
826
- if (launcher && !IS_WINDOWS) {
827
- const shebang = readFileSync(launcher, "utf-8").split("\n", 1)[0];
828
- if (shebang.startsWith("#!")) {
829
- const interpreter = shebang.slice(2).trim().split(/\s+/)[0];
830
- if (interpreter && /python/i.test(interpreter) && existsSync(interpreter)) return interpreter;
831
- }
832
- }
833
- } catch {
834
- }
835
- const venvRoot = join3(homedir(), ".hermes", "hermes-agent", "venv");
836
- const candidates = IS_WINDOWS ? [join3(venvRoot, "Scripts", "python.exe"), join3(venvRoot, "Scripts", "python3.exe")] : [join3(venvRoot, "bin", "python3"), join3(venvRoot, "bin", "python")];
837
- return candidates.find(existsSync) ?? null;
838
- };
839
846
  var ensurePip = (python) => {
840
847
  try {
841
848
  execSync2(`"${python}" -m pip --version`, { stdio: "ignore", timeout: 15e3 });
@@ -848,20 +855,7 @@ var ensurePip = (python) => {
848
855
  }
849
856
  };
850
857
  var enablePusharyPlugin = (python) => {
851
- const snippet = 'from hermes_cli.config import load_config, save_config; c = load_config(); s = c.get("security") if isinstance(c.get("security"), dict) else {}; ap = s.get("approval") if isinstance(s.get("approval"), dict) else {}; ap["transport"] = "pushary"; ap["transport_fallback"] = "builtin"; s["approval"] = ap; c["security"] = s; p = c.get("plugins") if isinstance(c.get("plugins"), dict) else {}; e = p.get("enabled") if isinstance(p.get("enabled"), list) else []; p["enabled"] = (e + ["pushary"]) if "pushary" not in e else e; c["plugins"] = p; a = c.get("agent") if isinstance(c.get("agent"), dict) else {}; d = a.get("disabled_toolsets") if isinstance(a.get("disabled_toolsets"), list) else []; a["disabled_toolsets"] = (d + ["clarify"]) if "clarify" not in d else d; c["agent"] = a; save_config(c)';
852
- const scriptPath = join3(tmpdir(), `pushary-hermes-${process.pid}.py`);
853
- try {
854
- writeFileSync(scriptPath, snippet.split("; ").join("\n"), "utf-8");
855
- execSync2(`"${python}" "${scriptPath}"`, { stdio: "pipe", timeout: 15e3 });
856
- return true;
857
- } catch {
858
- return false;
859
- } finally {
860
- try {
861
- rmSync(scriptPath, { force: true });
862
- } catch {
863
- }
864
- }
858
+ return runHermesPythonScript(python, HERMES_CONFIG_SCRIPT, "setup", HERMES_CONFIG_RECEIPT);
865
859
  };
866
860
  var setupHermes = async (_apiKey) => {
867
861
  console.log(`
@@ -878,6 +872,10 @@ var setupHermes = async (_apiKey) => {
878
872
  noteManual("Install the Hermes plugin by hand: <hermes-python> -m pip install hermes-plugin-pushary");
879
873
  return "skipped";
880
874
  }
875
+ const existingReceipt = readJsonSafe(HERMES_CONFIG_RECEIPT);
876
+ if (existingReceipt.kind !== "missing" && (existingReceipt.kind !== "ok" || !isHermesConfigReceipt(existingReceipt.value))) {
877
+ throw new Error(`Cannot safely configure Hermes: ${HERMES_CONFIG_RECEIPT} is unreadable or invalid.`);
878
+ }
881
879
  await spinner("Installing hermes-plugin-pushary into Hermes\u2019 environment", async () => {
882
880
  ensurePip(python);
883
881
  execSync2(`"${python}" -m pip install --upgrade hermes-plugin-pushary`, { stdio: "pipe", timeout: 18e4 });
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readLedgerSummary
4
- } from "../chunk-VZKXBFUA.js";
4
+ } from "../chunk-3HFK3UXM.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
7
  } from "../chunk-LURY4WNF.js";
@@ -11,7 +11,7 @@ import "../chunk-KZERVKTD.js";
11
11
  import {
12
12
  getApiKey
13
13
  } from "../chunk-2UMNXADU.js";
14
- import "../chunk-L4C2JXJS.js";
14
+ import "../chunk-X6RXX2NF.js";
15
15
 
16
16
  // bin/pushary-stats.ts
17
17
  exitOnHelpFlag("stats");
@@ -2,25 +2,25 @@
2
2
  import {
3
3
  describeLastSeen,
4
4
  listMachines
5
- } from "../chunk-U5TQCQ25.js";
6
- import "../chunk-DKDDLF5P.js";
7
- import "../chunk-GMI5QZLG.js";
5
+ } from "../chunk-TY5HVMXT.js";
6
+ import "../chunk-DKWM5T3P.js";
7
+ import "../chunk-QA72MKIT.js";
8
8
  import {
9
9
  describeReach,
10
10
  fetchChannels,
11
11
  reachVerdict
12
- } from "../chunk-T3LRWZKI.js";
12
+ } from "../chunk-2LPEZYMC.js";
13
13
  import "../chunk-3EGEA4KH.js";
14
14
  import {
15
15
  checkApiKey,
16
16
  describeKeyCheck
17
- } from "../chunk-I5L6SK5V.js";
17
+ } from "../chunk-BLODMQKJ.js";
18
18
  import {
19
19
  createIo
20
20
  } from "../chunk-5RUIFDTP.js";
21
21
  import {
22
22
  readKeySource
23
- } from "../chunk-V6N4Q223.js";
23
+ } from "../chunk-3CUDMTL4.js";
24
24
  import {
25
25
  rejectUnknownFlags
26
26
  } from "../chunk-GMXKITVA.js";
@@ -32,7 +32,7 @@ import "../chunk-BC3VCZ3E.js";
32
32
  import "../chunk-DINDL2CF.js";
33
33
  import "../chunk-BSZYIAZL.js";
34
34
  import "../chunk-SAF6HGAA.js";
35
- import "../chunk-OFRNZWC4.js";
35
+ import "../chunk-IUWRVTQK.js";
36
36
  import {
37
37
  UsageError
38
38
  } from "../chunk-7QLSKOSU.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "../chunk-KZERVKTD.js";
42
42
  import "../chunk-XX2V4QS5.js";
43
43
  import "../chunk-2UMNXADU.js";
44
- import "../chunk-L4C2JXJS.js";
44
+ import "../chunk-X6RXX2NF.js";
45
45
 
46
46
  // src/status.ts
47
47
  var keySourceLine = (source) => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleStop
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-stop-hook.ts
22
22
  var main = async () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "../chunk-6CUUA7HO.js";
5
5
  import {
6
6
  handleStopFailure
7
- } from "../chunk-4XZCDSNG.js";
8
- import "../chunk-GKAKAOKC.js";
9
- import "../chunk-KOPUTJQC.js";
10
- import "../chunk-DKDDLF5P.js";
11
- import "../chunk-GMI5QZLG.js";
7
+ } from "../chunk-FXIL7RCL.js";
8
+ import "../chunk-JHJHCMAF.js";
9
+ import "../chunk-TG3T3M4K.js";
10
+ import "../chunk-DKWM5T3P.js";
11
+ import "../chunk-QA72MKIT.js";
12
12
  import "../chunk-BSZYIAZL.js";
13
13
  import "../chunk-SAF6HGAA.js";
14
- import "../chunk-OFRNZWC4.js";
14
+ import "../chunk-IUWRVTQK.js";
15
15
  import "../chunk-7QLSKOSU.js";
16
16
  import "../chunk-KZERVKTD.js";
17
17
  import "../chunk-XX2V4QS5.js";
18
18
  import "../chunk-2UMNXADU.js";
19
- import "../chunk-L4C2JXJS.js";
19
+ import "../chunk-X6RXX2NF.js";
20
20
 
21
21
  // bin/pushary-stopfailure-hook.ts
22
22
  var main = async () => {