@pushary/agent-hooks 1.6.4 → 1.7.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 (98) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +3 -2
  3. package/dist/bin/pushary-bell-hook.js +23 -24
  4. package/dist/bin/pushary-bell.js +9 -10
  5. package/dist/bin/pushary-claude.js +27 -28
  6. package/dist/bin/pushary-clean.js +85 -28
  7. package/dist/bin/pushary-codex-bridge.js +17 -18
  8. package/dist/bin/pushary-codex-hook.js +30 -31
  9. package/dist/bin/pushary-codex.js +12 -13
  10. package/dist/bin/pushary-connect.js +13 -14
  11. package/dist/bin/pushary-cowork.js +5 -6
  12. package/dist/bin/pushary-daemon.js +27 -28
  13. package/dist/bin/pushary-disconnect.js +17 -18
  14. package/dist/bin/pushary-doctor.js +71 -36
  15. package/dist/bin/pushary-elicitation-hook.js +24 -25
  16. package/dist/bin/pushary-gemini-bridge.js +12 -13
  17. package/dist/bin/pushary-gemini-hook.js +27 -28
  18. package/dist/bin/pushary-hook.js +31 -32
  19. package/dist/bin/pushary-login.js +13 -15
  20. package/dist/bin/pushary-logout.js +7 -8
  21. package/dist/bin/pushary-mcp.d.ts +1 -0
  22. package/dist/bin/pushary-mcp.js +56 -0
  23. package/dist/bin/pushary-mode.js +9 -10
  24. package/dist/bin/pushary-notification-hook.js +27 -28
  25. package/dist/bin/pushary-opencode-hook.js +26 -27
  26. package/dist/bin/pushary-permission-denied-hook.js +31 -32
  27. package/dist/bin/pushary-permission-hook.js +30 -31
  28. package/dist/bin/pushary-post-hook.js +27 -28
  29. package/dist/bin/pushary-prompt-hook.js +27 -28
  30. package/dist/bin/pushary-session-end-hook.js +27 -28
  31. package/dist/bin/pushary-session-start-hook.js +31 -32
  32. package/dist/bin/pushary-setup.js +183 -73
  33. package/dist/bin/pushary-stats.js +5 -6
  34. package/dist/bin/pushary-status.js +15 -16
  35. package/dist/bin/pushary-stop-hook.js +27 -28
  36. package/dist/bin/pushary-stopfailure-hook.js +27 -28
  37. package/dist/bin/pushary-suggestions.js +4 -4
  38. package/dist/bin/pushary-transcript-register.js +19 -20
  39. package/dist/bin/pushary-transcripts.js +7 -8
  40. package/dist/bin/pushary-upgrade.js +20 -21
  41. package/dist/bin/pushary-wait.js +9 -10
  42. package/dist/bin/pushary.js +6 -7
  43. package/dist/{chunk-5UWV5GHM.js → chunk-2C7CCWVX.js} +1 -1
  44. package/dist/{chunk-P4BNYJ5Q.js → chunk-2PS6QWDW.js} +2 -2
  45. package/dist/{chunk-JOGA3TL2.js → chunk-4F46VIEE.js} +6 -6
  46. package/dist/{chunk-NYMPLNV3.js → chunk-52NVBNJT.js} +3 -3
  47. package/dist/{chunk-I3XJATMR.js → chunk-5HLTWFJ6.js} +1 -1
  48. package/dist/{chunk-HUB4Q35G.js → chunk-6ADZQFVW.js} +1 -1
  49. package/dist/{chunk-OZE2TQX5.js → chunk-73T6MSU5.js} +5 -5
  50. package/dist/{chunk-53DN77WB.js → chunk-7OS4IHGI.js} +2 -2
  51. package/dist/{chunk-BY2CRWBO.js → chunk-B234346F.js} +1 -1
  52. package/dist/{chunk-EA3IELHP.js → chunk-B3UXMSMW.js} +6 -2
  53. package/dist/{chunk-3VZX4NSP.js → chunk-B3YQANFN.js} +1 -1
  54. package/dist/{chunk-VA2R64I7.js → chunk-B76WVEDX.js} +1 -1
  55. package/dist/{chunk-YPONELWS.js → chunk-BBKNJJVX.js} +6 -6
  56. package/dist/{chunk-XOMH53NB.js → chunk-BH2SKSSK.js} +1 -1
  57. package/dist/{chunk-P4UYILQK.js → chunk-BWYJ6AAF.js} +2 -2
  58. package/dist/{chunk-I2YUMZLE.js → chunk-CVALVGA7.js} +1 -1
  59. package/dist/{chunk-6NLWK6ZV.js → chunk-D6BULEJW.js} +2 -2
  60. package/dist/{chunk-N62KAMMY.js → chunk-DANOZVZK.js} +1 -1
  61. package/dist/{chunk-K32C2RGK.js → chunk-DNJUSFBL.js} +11 -5
  62. package/dist/{chunk-5U3FJ6YF.js → chunk-DVQDPI3T.js} +8 -8
  63. package/dist/{chunk-YUGGNZSF.js → chunk-DZURML2D.js} +1 -1
  64. package/dist/{chunk-D3K2FPPJ.js → chunk-EAQMWJPG.js} +8 -8
  65. package/dist/{chunk-EREBZHN2.js → chunk-EGKXSQCY.js} +4 -4
  66. package/dist/{chunk-XJG2FUWS.js → chunk-HDRNWNVP.js} +6 -6
  67. package/dist/{chunk-H6XU22TN.js → chunk-IJ6ECPA6.js} +8 -8
  68. package/dist/{chunk-3LU74H52.js → chunk-J2355HR7.js} +1 -1
  69. package/dist/{chunk-BJENQBMH.js → chunk-JNXVOU6Y.js} +8 -4
  70. package/dist/{chunk-GBL4BTG3.js → chunk-JXUAXO74.js} +2 -2
  71. package/dist/{chunk-DESAUCH2.js → chunk-KW2RRR7D.js} +4 -6
  72. package/dist/{chunk-66H2QQAK.js → chunk-KXMZMZD3.js} +1 -1
  73. package/dist/{chunk-ZA5UXRNE.js → chunk-KYQXUGH7.js} +3 -3
  74. package/dist/{chunk-NFH73H5B.js → chunk-L4H2Q2S4.js} +276 -19
  75. package/dist/{chunk-LDRGVXLR.js → chunk-LEZFOTMI.js} +1 -1
  76. package/dist/{chunk-PBKEYMAO.js → chunk-O2LEPIU6.js} +1 -1
  77. package/dist/{chunk-YXPGFRRW.js → chunk-PQ4F64M2.js} +3 -3
  78. package/dist/{chunk-LFMOYHPY.js → chunk-PUDBG3GM.js} +1 -1
  79. package/dist/{chunk-YQMFGWBD.js → chunk-QXAK5RFU.js} +1 -1
  80. package/dist/{chunk-5SWQZ6HY.js → chunk-R2XCLT6I.js} +4 -4
  81. package/dist/{chunk-VHNDE3ZD.js → chunk-ROQK7IN3.js} +2 -2
  82. package/dist/{chunk-GU3EJCVV.js → chunk-S3UD4V6W.js} +39 -0
  83. package/dist/{chunk-PJF7L7AA.js → chunk-SQRWHALT.js} +2 -2
  84. package/dist/{chunk-UAP556WK.js → chunk-UC65FJJT.js} +2 -2
  85. package/dist/{chunk-R4HVHTNA.js → chunk-UOAQ6QMP.js} +2 -2
  86. package/dist/{chunk-OSJEMXSR.js → chunk-V4AQBAVG.js} +1 -1
  87. package/dist/{chunk-VOCZHOXV.js → chunk-V6QRSU2G.js} +4 -4
  88. package/dist/{chunk-LQI7W4RG.js → chunk-VKVIAZQO.js} +1 -1
  89. package/dist/{chunk-LJEL7IB5.js → chunk-WUNZAE7I.js} +5 -5
  90. package/dist/{chunk-UGKDBJJX.js → chunk-X6KDKOV5.js} +3 -3
  91. package/dist/{chunk-DZTKLE7Q.js → chunk-XNCMT7YY.js} +1 -1
  92. package/dist/{chunk-CAS7GFWI.js → chunk-YROGUPOZ.js} +75 -5
  93. package/dist/chunk-YYINL576.js +120 -0
  94. package/dist/{chunk-7CLTSZOL.js → chunk-ZQ7IDOKY.js} +3 -3
  95. package/dist/{reapply-4DAJKNVP.js → reapply-6PH3FMPX.js} +9 -10
  96. package/dist/src/index.js +19 -20
  97. package/package.json +2 -1
  98. package/dist/chunk-HWJW3CPO.js +0 -65
@@ -1,11 +1,9 @@
1
1
  import {
2
2
  HOOK_BUDGETS,
3
3
  HOOK_LOCATOR_BINARY,
4
+ isReleaseVersion,
4
5
  withHookHoldBudget
5
- } from "./chunk-CAS7GFWI.js";
6
- import {
7
- isReleaseVersion
8
- } from "./chunk-HWJW3CPO.js";
6
+ } from "./chunk-YROGUPOZ.js";
9
7
 
10
8
  // src/npm.ts
11
9
  import { execFileSync, execSync } from "child_process";
@@ -634,6 +632,10 @@ var codexAgentsMd2 = () => join3(codexHome(), "AGENTS.md");
634
632
  var geminiSettings = () => join3(homedir2(), ".gemini", "settings.json");
635
633
  var geminiMd = () => join3(homedir2(), ".gemini", "GEMINI.md");
636
634
  var pusharyConfigFile = () => join3(homedir2(), ".pushary", "config.json");
635
+ var fxConfigDir = () => join3(homedir2(), ".fx");
636
+ var fxMcpProfile = () => join3(fxConfigDir(), "mcp.json");
637
+ var fxSettings = () => join3(fxConfigDir(), "settings.json");
638
+ var fxAgentsMd = () => join3(fxConfigDir(), "AGENTS.md");
637
639
 
638
640
  export {
639
641
  registeredCommands,
@@ -707,5 +709,9 @@ export {
707
709
  codexAgentsMd2,
708
710
  geminiSettings,
709
711
  geminiMd,
710
- pusharyConfigFile
712
+ pusharyConfigFile,
713
+ fxConfigDir,
714
+ fxMcpProfile,
715
+ fxSettings,
716
+ fxAgentsMd
711
717
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  activeHookSource,
3
3
  activeIdentity
4
- } from "./chunk-LJEL7IB5.js";
4
+ } from "./chunk-WUNZAE7I.js";
5
5
  import {
6
6
  blockedActionFingerprint,
7
7
  defersToNativeMode,
@@ -9,11 +9,11 @@ import {
9
9
  hasBlockedActionHint,
10
10
  recordBlockedActionHint,
11
11
  reportMachineDenial
12
- } from "./chunk-NYMPLNV3.js";
12
+ } from "./chunk-52NVBNJT.js";
13
13
  import {
14
14
  isGatingMoment,
15
15
  recordKeylessMoment
16
- } from "./chunk-5UWV5GHM.js";
16
+ } from "./chunk-2C7CCWVX.js";
17
17
  import {
18
18
  denyReasonFrom,
19
19
  isDeferAnswer
@@ -36,7 +36,7 @@ import {
36
36
  reportEvent,
37
37
  scopePathFor,
38
38
  settleQuestionsForToolUse
39
- } from "./chunk-H6XU22TN.js";
39
+ } from "./chunk-IJ6ECPA6.js";
40
40
  import {
41
41
  DECISION_STOP_REASON,
42
42
  askUser,
@@ -48,14 +48,14 @@ import {
48
48
  requestGate,
49
49
  sendNotification,
50
50
  waitForQuestion
51
- } from "./chunk-EREBZHN2.js";
51
+ } from "./chunk-EGKXSQCY.js";
52
52
  import {
53
53
  getMachineId
54
- } from "./chunk-DZTKLE7Q.js";
54
+ } from "./chunk-XNCMT7YY.js";
55
55
  import {
56
56
  getApiKey,
57
57
  getBaseUrl
58
- } from "./chunk-OSJEMXSR.js";
58
+ } from "./chunk-V4AQBAVG.js";
59
59
  import {
60
60
  AGENT_QUESTION_STRATEGY,
61
61
  GATE_BLOCK_REASON_MAX_LENGTH,
@@ -83,7 +83,7 @@ import {
83
83
  parseAgentQuestions,
84
84
  resolveGate,
85
85
  stoppedOutput
86
- } from "./chunk-CAS7GFWI.js";
86
+ } from "./chunk-YROGUPOZ.js";
87
87
 
88
88
  // src/claude-permission-rules.ts
89
89
  import { readFileSync, statSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PRETOOLUSE_GATED_TOOLS
3
- } from "./chunk-CAS7GFWI.js";
3
+ } from "./chunk-YROGUPOZ.js";
4
4
 
5
5
  // src/claude-tools.ts
6
6
  var POSTTOOLUSE_MIRROR_ONLY_TOOLS = ["TodoWrite", "Task", "WebFetch", "WebSearch"];
@@ -6,38 +6,38 @@ import {
6
6
  } from "./chunk-SGZJ5LYH.js";
7
7
  import {
8
8
  hookOwnerOf
9
- } from "./chunk-5SWQZ6HY.js";
9
+ } from "./chunk-R2XCLT6I.js";
10
10
  import {
11
11
  ensureDaemonRunning
12
- } from "./chunk-OZE2TQX5.js";
12
+ } from "./chunk-73T6MSU5.js";
13
13
  import {
14
14
  buildTranscriptRecords,
15
15
  decodePublicKey,
16
16
  generateSessionKey,
17
17
  wrapSessionKey
18
- } from "./chunk-XOMH53NB.js";
18
+ } from "./chunk-BH2SKSSK.js";
19
19
  import {
20
20
  fetchTranscriptRecipients,
21
21
  uploadTranscriptRecords
22
- } from "./chunk-66H2QQAK.js";
22
+ } from "./chunk-KXMZMZD3.js";
23
23
  import {
24
24
  transcriptEnvironmentPreference,
25
25
  transcriptsEnabled
26
- } from "./chunk-VA2R64I7.js";
26
+ } from "./chunk-B76WVEDX.js";
27
27
  import {
28
28
  readTranscriptPreference
29
- } from "./chunk-R4HVHTNA.js";
29
+ } from "./chunk-UOAQ6QMP.js";
30
30
  import {
31
31
  codexHome,
32
32
  pusharyDir
33
- } from "./chunk-K32C2RGK.js";
33
+ } from "./chunk-DNJUSFBL.js";
34
34
  import {
35
35
  writeJsonAtomic
36
36
  } from "./chunk-T7E75EKA.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
40
- } from "./chunk-OSJEMXSR.js";
40
+ } from "./chunk-V4AQBAVG.js";
41
41
 
42
42
  // src/transcript-registration.ts
43
43
  import { createHash } from "crypto";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  clientErrorKindOf,
3
3
  reportClientError
4
- } from "./chunk-VOCZHOXV.js";
4
+ } from "./chunk-V6QRSU2G.js";
5
5
  import {
6
6
  callMcpTool
7
- } from "./chunk-BJENQBMH.js";
7
+ } from "./chunk-JNXVOU6Y.js";
8
8
  import {
9
9
  installNetworkDefaults
10
- } from "./chunk-DESAUCH2.js";
10
+ } from "./chunk-KW2RRR7D.js";
11
11
  import {
12
12
  getBaseUrl
13
- } from "./chunk-OSJEMXSR.js";
13
+ } from "./chunk-V4AQBAVG.js";
14
14
 
15
15
  // src/api.ts
16
16
  import { randomUUID } from "crypto";
@@ -12,17 +12,17 @@ import {
12
12
  } from "./chunk-5RUIFDTP.js";
13
13
  import {
14
14
  callMcpTool
15
- } from "./chunk-BJENQBMH.js";
15
+ } from "./chunk-JNXVOU6Y.js";
16
16
  import {
17
17
  reportedInstallSource
18
- } from "./chunk-VHNDE3ZD.js";
18
+ } from "./chunk-ROQK7IN3.js";
19
+ import {
20
+ NPX_LATEST_COMMAND
21
+ } from "./chunk-B3UXMSMW.js";
19
22
  import {
20
23
  PAIR_TTL_SECONDS,
21
24
  isAnswerSource
22
- } from "./chunk-CAS7GFWI.js";
23
- import {
24
- NPX_LATEST_COMMAND
25
- } from "./chunk-EA3IELHP.js";
25
+ } from "./chunk-YROGUPOZ.js";
26
26
 
27
27
  // src/reach.ts
28
28
  var reachVerdict = (channels) => {
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  NOTIFICATION_PUSH_TYPES,
3
3
  POSTTOOLUSE_MIRROR_ONLY_TOOLS
4
- } from "./chunk-YUGGNZSF.js";
4
+ } from "./chunk-DZURML2D.js";
5
5
  import {
6
6
  cancelQuestion,
7
7
  isPolicyConfig,
8
8
  sendNotification,
9
9
  waitForAnswer
10
- } from "./chunk-EREBZHN2.js";
10
+ } from "./chunk-EGKXSQCY.js";
11
11
  import {
12
12
  clientErrorKindOf,
13
13
  reportClientError
14
- } from "./chunk-VOCZHOXV.js";
14
+ } from "./chunk-V6QRSU2G.js";
15
15
  import {
16
16
  withRetry
17
- } from "./chunk-BJENQBMH.js";
17
+ } from "./chunk-JNXVOU6Y.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-DZTKLE7Q.js";
20
+ } from "./chunk-XNCMT7YY.js";
21
21
  import {
22
22
  reportedInstallSource
23
- } from "./chunk-VHNDE3ZD.js";
23
+ } from "./chunk-ROQK7IN3.js";
24
24
  import {
25
25
  getApiKey,
26
26
  getBaseUrl
27
- } from "./chunk-OSJEMXSR.js";
27
+ } from "./chunk-V4AQBAVG.js";
28
28
  import {
29
29
  ACTION_BODY_MAX,
30
30
  AGENT_LABELS_BY_TYPE,
@@ -48,7 +48,7 @@ import {
48
48
  resolveAutoResolveOrigin,
49
49
  resolvePolicy,
50
50
  toToolLookup
51
- } from "./chunk-CAS7GFWI.js";
51
+ } from "./chunk-YROGUPOZ.js";
52
52
 
53
53
  // src/policy.ts
54
54
  import { createHash } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_HOLD_BUDGET_ENV,
3
3
  hookHoldBudgetProof
4
- } from "./chunk-CAS7GFWI.js";
4
+ } from "./chunk-YROGUPOZ.js";
5
5
 
6
6
  // src/hold-budget.ts
7
7
  var takeHookHoldBudget = (args = process.argv.slice(2), env = process.env) => {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  installNetworkDefaults
3
- } from "./chunk-DESAUCH2.js";
3
+ } from "./chunk-KW2RRR7D.js";
4
4
  import {
5
5
  getBaseUrl
6
- } from "./chunk-OSJEMXSR.js";
6
+ } from "./chunk-V4AQBAVG.js";
7
7
 
8
8
  // src/retry.ts
9
9
  var isRetryable = (err) => {
@@ -35,7 +35,7 @@ var withRetry = async (fn, options = {}) => {
35
35
 
36
36
  // src/mcp-http.ts
37
37
  installNetworkDefaults();
38
- var parseSseJson = (body) => {
38
+ var parseSseMessages = (body) => {
39
39
  const messages = [];
40
40
  for (const event of body.split(/\r?\n\r?\n/)) {
41
41
  const data = event.split(/\r?\n/).filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).join("\n").trim();
@@ -45,7 +45,10 @@ var parseSseJson = (body) => {
45
45
  } catch {
46
46
  }
47
47
  }
48
- const message = messages.at(-1);
48
+ return messages;
49
+ };
50
+ var parseSseJson = (body) => {
51
+ const message = parseSseMessages(body).at(-1);
49
52
  if (!message) throw new Error("Empty response from Pushary");
50
53
  return message;
51
54
  };
@@ -112,6 +115,7 @@ var callMcpTool = async (apiKey, toolName, params, options = {}) => {
112
115
 
113
116
  export {
114
117
  withRetry,
118
+ parseSseMessages,
115
119
  sendMcpRequest,
116
120
  callMcpTool
117
121
  };
@@ -2,10 +2,10 @@ import {
2
2
  resolveBinary,
3
3
  resolveGlobalPackageVersion,
4
4
  resolvePackageVersionFromBinary
5
- } from "./chunk-K32C2RGK.js";
5
+ } from "./chunk-DNJUSFBL.js";
6
6
  import {
7
7
  MANAGED_PROVIDERS
8
- } from "./chunk-CAS7GFWI.js";
8
+ } from "./chunk-YROGUPOZ.js";
9
9
 
10
10
  // src/live-capabilities.ts
11
11
  var CLAUDE_BRIDGE_CAPABILITY = "claude-bridge";
@@ -1,18 +1,16 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-DZTKLE7Q.js";
3
+ } from "./chunk-XNCMT7YY.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-7QLSKOSU.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-OSJEMXSR.js";
10
- import {
11
- clientContextHeaders
12
- } from "./chunk-CAS7GFWI.js";
9
+ } from "./chunk-V4AQBAVG.js";
13
10
  import {
11
+ clientContextHeaders,
14
12
  getPackageVersion
15
- } from "./chunk-HWJW3CPO.js";
13
+ } from "./chunk-YROGUPOZ.js";
16
14
 
17
15
  // src/cli/net.ts
18
16
  import { createRequire } from "module";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-OSJEMXSR.js";
3
+ } from "./chunk-V4AQBAVG.js";
4
4
 
5
5
  // src/transcript-api.ts
6
6
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  supportedClaudeEvents
4
- } from "./chunk-7CLTSZOL.js";
4
+ } from "./chunk-ZQ7IDOKY.js";
5
5
  import {
6
6
  guardBinary,
7
7
  holdBudgetOf,
8
8
  isProtectedByScope,
9
9
  registerHookEntry
10
- } from "./chunk-K32C2RGK.js";
10
+ } from "./chunk-DNJUSFBL.js";
11
11
  import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  withHookHoldBudget
14
- } from "./chunk-CAS7GFWI.js";
14
+ } from "./chunk-YROGUPOZ.js";
15
15
 
16
16
  // src/claude-config.ts
17
17
  import { join } from "path";