@pushary/agent-hooks 1.7.3 → 1.8.1

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 (108) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +39 -19
  3. package/data/SKILL.md +8 -8
  4. package/data/cowork/SKILL.md +2 -2
  5. package/data/cursor-plugin/README.md +2 -2
  6. package/data/cursor-plugin/scripts/pushary-gate.mjs +2 -21
  7. package/data/cursor-plugin/scripts/redaction.mjs +53 -0
  8. package/data/cursor-plugin/skills/pushary/SKILL.md +7 -7
  9. package/data/vscode-plugin/README.md +4 -4
  10. package/data/vscode-plugin/scripts/pushary-gate.mjs +3 -23
  11. package/data/vscode-plugin/scripts/redaction.mjs +53 -0
  12. package/data/vscode-plugin/skills/pushary/SKILL.md +7 -7
  13. package/dist/bin/pushary-bell-hook.js +23 -23
  14. package/dist/bin/pushary-bell.js +9 -9
  15. package/dist/bin/pushary-claude.js +26 -26
  16. package/dist/bin/pushary-clean.js +97 -111
  17. package/dist/bin/pushary-codex-bridge.js +18 -18
  18. package/dist/bin/pushary-codex-hook.js +42 -43
  19. package/dist/bin/pushary-codex.js +13 -13
  20. package/dist/bin/pushary-connect.js +13 -13
  21. package/dist/bin/pushary-cowork.js +5 -5
  22. package/dist/bin/pushary-daemon.js +27 -27
  23. package/dist/bin/pushary-disconnect.js +18 -18
  24. package/dist/bin/pushary-doctor.js +92 -86
  25. package/dist/bin/pushary-elicitation-hook.js +25 -25
  26. package/dist/bin/pushary-gemini-bridge.js +12 -12
  27. package/dist/bin/pushary-gemini-hook.js +29 -30
  28. package/dist/bin/pushary-hook.js +32 -32
  29. package/dist/bin/pushary-login.js +12 -12
  30. package/dist/bin/pushary-logout.js +7 -7
  31. package/dist/bin/pushary-mcp.js +85 -28
  32. package/dist/bin/pushary-mode.js +9 -9
  33. package/dist/bin/pushary-notification-hook.js +28 -28
  34. package/dist/bin/pushary-opencode-hook.js +28 -29
  35. package/dist/bin/pushary-permission-denied-hook.js +32 -32
  36. package/dist/bin/pushary-permission-hook.js +31 -31
  37. package/dist/bin/pushary-post-hook.js +28 -28
  38. package/dist/bin/pushary-prompt-hook.js +28 -28
  39. package/dist/bin/pushary-session-end-hook.js +28 -28
  40. package/dist/bin/pushary-session-start-hook.js +32 -32
  41. package/dist/bin/pushary-setup.js +62 -129
  42. package/dist/bin/pushary-stats.js +5 -5
  43. package/dist/bin/pushary-status.js +15 -15
  44. package/dist/bin/pushary-stop-hook.js +28 -28
  45. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  46. package/dist/bin/pushary-suggestions.js +4 -4
  47. package/dist/bin/pushary-transcript-register.js +19 -19
  48. package/dist/bin/pushary-transcripts.js +7 -7
  49. package/dist/bin/pushary-upgrade.js +236 -110
  50. package/dist/bin/pushary-wait.js +9 -9
  51. package/dist/bin/pushary.js +6 -6
  52. package/dist/{chunk-DUQO4C4I.js → chunk-2SLCHCVN.js} +3 -3
  53. package/dist/{chunk-YYCTF4Q5.js → chunk-35X5UDML.js} +7 -7
  54. package/dist/{chunk-OVC5QXN5.js → chunk-4A3UQERT.js} +1 -1
  55. package/dist/chunk-5DGNEUXK.js +73 -0
  56. package/dist/{chunk-62CVUUNU.js → chunk-5Y2DY6X4.js} +2 -2
  57. package/dist/{chunk-G4GLCLKK.js → chunk-5YY3IJT4.js} +159 -36
  58. package/dist/{chunk-KJXUIPS4.js → chunk-64H5IZZD.js} +28 -16
  59. package/dist/{chunk-OTNOANMX.js → chunk-6TK4IY3A.js} +8 -8
  60. package/dist/{chunk-LPNJLKBQ.js → chunk-72WOCX22.js} +1 -1
  61. package/dist/{chunk-IRZG3HEU.js → chunk-7ITOAMCD.js} +1 -1
  62. package/dist/{chunk-G62JL2NT.js → chunk-7U7ZWUTR.js} +1 -1
  63. package/dist/{chunk-IPSRMLCJ.js → chunk-ASWRMBOM.js} +1 -1
  64. package/dist/{chunk-5S2VBSJI.js → chunk-CB23AO4D.js} +2 -2
  65. package/dist/{chunk-VKVSRCBO.js → chunk-CHMOVJ2M.js} +1 -1
  66. package/dist/{chunk-BGBLLHZ4.js → chunk-DLEKCAQL.js} +1 -1
  67. package/dist/{chunk-EEEJ2JIL.js → chunk-DVW2MYCM.js} +3 -3
  68. package/dist/{chunk-AWVNAYGD.js → chunk-DXBS2EL7.js} +1 -1
  69. package/dist/{chunk-ZKJ34T2F.js → chunk-EIGJYCOE.js} +31 -17
  70. package/dist/{chunk-U6RVDUJ5.js → chunk-F6NTWZZC.js} +283 -41
  71. package/dist/{chunk-7RUJKCR4.js → chunk-FLQPM2GQ.js} +2 -2
  72. package/dist/{chunk-TCVMK6GI.js → chunk-GBNQXYN4.js} +4 -4
  73. package/dist/{chunk-G6RRVJOG.js → chunk-GH6KGWMC.js} +6 -6
  74. package/dist/chunk-GU3EJCVV.js +43 -0
  75. package/dist/{chunk-6JQFIHZC.js → chunk-HBWC3JVZ.js} +3 -3
  76. package/dist/{chunk-IWJKSIB4.js → chunk-HMNR7B2F.js} +1 -1
  77. package/dist/{chunk-NOI3XTCY.js → chunk-HOEB6AKG.js} +1 -1
  78. package/dist/{chunk-62VT3BPH.js → chunk-HQRCVEI2.js} +32 -17
  79. package/dist/{chunk-MIXWMA73.js → chunk-HTEGMMT3.js} +3 -3
  80. package/dist/{chunk-BIH2Y2HP.js → chunk-HVDMGDYV.js} +2 -2
  81. package/dist/{chunk-VE7TXLR4.js → chunk-I4HKMUZQ.js} +3 -3
  82. package/dist/{chunk-YPUBA2FL.js → chunk-INSMZNS7.js} +5 -5
  83. package/dist/{chunk-G3OMOTJ4.js → chunk-JRQRNNGA.js} +3 -3
  84. package/dist/{chunk-N5MZH5A6.js → chunk-KB2FTO4O.js} +4 -4
  85. package/dist/{chunk-O3JDWNLU.js → chunk-LK2S5XIV.js} +183 -28
  86. package/dist/{chunk-YC27PROF.js → chunk-MMVCI6DT.js} +20 -5
  87. package/dist/{chunk-3EUBQARL.js → chunk-MYHG7PX2.js} +1 -1
  88. package/dist/{chunk-EADXTSHE.js → chunk-N6JJJTPH.js} +6 -3
  89. package/dist/{chunk-PRNFSORD.js → chunk-NHCUXTEM.js} +1 -1
  90. package/dist/{chunk-KEL5MXRL.js → chunk-NOLPURUI.js} +1 -1
  91. package/dist/{chunk-WTJM7PSL.js → chunk-OCVVSRDA.js} +3 -3
  92. package/dist/{chunk-R6OYCUNK.js → chunk-ON5JW2HP.js} +1 -1
  93. package/dist/{chunk-UOQRM7JQ.js → chunk-QB6QYZ6B.js} +5 -5
  94. package/dist/{chunk-7OA34PNW.js → chunk-T55H6YEP.js} +40 -10
  95. package/dist/{chunk-D6OODZCM.js → chunk-TJMAXQ5Q.js} +2 -2
  96. package/dist/{chunk-WGMW7OXW.js → chunk-TKQ6LZQZ.js} +6 -6
  97. package/dist/{chunk-WPX67AKT.js → chunk-UMMCHS6P.js} +1 -1
  98. package/dist/{chunk-MZBRL5H5.js → chunk-UPLV5AJF.js} +108 -25
  99. package/dist/{chunk-P2VIBGXA.js → chunk-URNXU3FO.js} +1 -1
  100. package/dist/{chunk-EUGNVLMG.js → chunk-VFFHQC7W.js} +3 -1
  101. package/dist/{chunk-Y4ZH64UK.js → chunk-VZMIHERK.js} +2 -2
  102. package/dist/{chunk-RLW3JWDY.js → chunk-W2LJ4O3A.js} +2 -2
  103. package/dist/{chunk-LHC45YUC.js → chunk-ZJYJAD52.js} +1 -1
  104. package/dist/{reapply-PH5T4BGR.js → reapply-ICGTBHVE.js} +9 -9
  105. package/dist/src/index.js +20 -20
  106. package/package.json +1 -1
  107. package/dist/chunk-5GB22QYL.js +0 -255
  108. package/dist/chunk-VYPJHGG6.js +0 -92
@@ -1,31 +1,31 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  triggerAutoUpdate
4
- } from "../chunk-KJXUIPS4.js";
4
+ } from "../chunk-64H5IZZD.js";
5
5
  import {
6
6
  isGatingMoment,
7
7
  recordKeylessMoment
8
- } from "../chunk-IRZG3HEU.js";
8
+ } from "../chunk-7ITOAMCD.js";
9
9
  import {
10
10
  readHookInput
11
- } from "../chunk-7RUJKCR4.js";
11
+ } from "../chunk-FLQPM2GQ.js";
12
12
  import {
13
13
  announceSubscriptionRequired,
14
14
  denyReasonFrom,
15
15
  isDeferAnswer
16
16
  } from "../chunk-5OP5MQI7.js";
17
- import "../chunk-OTNOANMX.js";
17
+ import "../chunk-6TK4IY3A.js";
18
18
  import "../chunk-SGZJ5LYH.js";
19
- import "../chunk-TCVMK6GI.js";
20
- import "../chunk-BGBLLHZ4.js";
21
- import "../chunk-3EUBQARL.js";
22
- import "../chunk-WTJM7PSL.js";
23
- import "../chunk-ZKJ34T2F.js";
24
- import "../chunk-MIXWMA73.js";
25
- import "../chunk-NOI3XTCY.js";
26
- import "../chunk-P2VIBGXA.js";
27
- import "../chunk-WPX67AKT.js";
28
- import "../chunk-LPNJLKBQ.js";
19
+ import "../chunk-GBNQXYN4.js";
20
+ import "../chunk-DLEKCAQL.js";
21
+ import "../chunk-MYHG7PX2.js";
22
+ import "../chunk-OCVVSRDA.js";
23
+ import "../chunk-EIGJYCOE.js";
24
+ import "../chunk-HTEGMMT3.js";
25
+ import "../chunk-HOEB6AKG.js";
26
+ import "../chunk-URNXU3FO.js";
27
+ import "../chunk-UMMCHS6P.js";
28
+ import "../chunk-72WOCX22.js";
29
29
  import "../chunk-XHKBHWLX.js";
30
30
  import {
31
31
  UNNAMED_ACTION,
@@ -45,11 +45,11 @@ import {
45
45
  repoKeyFor,
46
46
  reportEvent,
47
47
  scopePathFor
48
- } from "../chunk-U6RVDUJ5.js";
48
+ } from "../chunk-F6NTWZZC.js";
49
49
  import {
50
50
  DEFAULT_SESSION
51
51
  } from "../chunk-N6IOSZOE.js";
52
- import "../chunk-EUGNVLMG.js";
52
+ import "../chunk-VFFHQC7W.js";
53
53
  import {
54
54
  DECISION_STOP_REASON,
55
55
  UNVERIFIABLE_APPROVAL_REASON,
@@ -58,41 +58,40 @@ import {
58
58
  isLocalQuestionHandoff,
59
59
  sendNotification,
60
60
  waitForQuestion
61
- } from "../chunk-YC27PROF.js";
61
+ } from "../chunk-MMVCI6DT.js";
62
62
  import {
63
63
  exitAfterClientReports
64
- } from "../chunk-N5MZH5A6.js";
64
+ } from "../chunk-KB2FTO4O.js";
65
65
  import "../chunk-POFBE6ZY.js";
66
66
  import "../chunk-GMXKITVA.js";
67
- import "../chunk-D6OODZCM.js";
67
+ import "../chunk-TJMAXQ5Q.js";
68
68
  import {
69
69
  SubscriptionRequiredError
70
- } from "../chunk-VE7TXLR4.js";
71
- import "../chunk-EEEJ2JIL.js";
72
- import "../chunk-DUQO4C4I.js";
70
+ } from "../chunk-I4HKMUZQ.js";
71
+ import "../chunk-DVW2MYCM.js";
72
+ import "../chunk-2SLCHCVN.js";
73
73
  import {
74
74
  getMachineId
75
- } from "../chunk-OVC5QXN5.js";
75
+ } from "../chunk-4A3UQERT.js";
76
76
  import "../chunk-7QLSKOSU.js";
77
77
  import {
78
78
  EXIT
79
79
  } from "../chunk-KZERVKTD.js";
80
- import "../chunk-62CVUUNU.js";
81
- import "../chunk-MZBRL5H5.js";
80
+ import "../chunk-5Y2DY6X4.js";
81
+ import "../chunk-UPLV5AJF.js";
82
82
  import "../chunk-T7E75EKA.js";
83
83
  import {
84
84
  getApiKey
85
- } from "../chunk-R6OYCUNK.js";
86
- import "../chunk-YYCTF4Q5.js";
85
+ } from "../chunk-ON5JW2HP.js";
86
+ import "../chunk-35X5UDML.js";
87
87
  import {
88
- DECISION_LINE_MAX,
89
88
  KILL_REASON,
90
89
  effectiveWaitSeconds,
91
90
  gateOutputFor,
92
91
  hookWaitClamped,
93
92
  hookWaitDeadline,
94
93
  resolveGate
95
- } from "../chunk-G4GLCLKK.js";
94
+ } from "../chunk-5YY3IJT4.js";
96
95
 
97
96
  // bin/pushary-gemini-hook.ts
98
97
  import { basename } from "path";
@@ -185,7 +184,7 @@ var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, pollInterval
185
184
  toolName: lookup.tool,
186
185
  toolTarget: deriveToolTarget(lookup.tool, lookup.input),
187
186
  intent: readLastPrompt(input.session_id || DEFAULT_SESSION) ?? (input.transcript_path ? readLastUserPrompt(input.transcript_path) : void 0),
188
- action: description.slice(0, DECISION_LINE_MAX),
187
+ action: description,
189
188
  blocker: deriveBlocker(mode),
190
189
  actionBody: deriveActionBody(input.tool_name ?? "", input.tool_input ?? {}),
191
190
  repoKey: repoKeyFor(input.cwd)
@@ -1,63 +1,63 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handlePreToolUse
4
- } from "../chunk-62VT3BPH.js";
4
+ } from "../chunk-HQRCVEI2.js";
5
5
  import {
6
6
  activeHookSource,
7
7
  normalizeToolCall,
8
8
  profileFromArgv
9
- } from "../chunk-UOQRM7JQ.js";
10
- import "../chunk-G3OMOTJ4.js";
11
- import "../chunk-5GB22QYL.js";
12
- import "../chunk-IRZG3HEU.js";
9
+ } from "../chunk-QB6QYZ6B.js";
10
+ import "../chunk-JRQRNNGA.js";
11
+ import "../chunk-5DGNEUXK.js";
12
+ import "../chunk-7ITOAMCD.js";
13
13
  import {
14
14
  readToolHookInput
15
- } from "../chunk-7RUJKCR4.js";
15
+ } from "../chunk-FLQPM2GQ.js";
16
16
  import "../chunk-5OP5MQI7.js";
17
- import "../chunk-OTNOANMX.js";
17
+ import "../chunk-6TK4IY3A.js";
18
18
  import "../chunk-SGZJ5LYH.js";
19
- import "../chunk-TCVMK6GI.js";
20
- import "../chunk-BGBLLHZ4.js";
21
- import "../chunk-3EUBQARL.js";
22
- import "../chunk-WTJM7PSL.js";
23
- import "../chunk-ZKJ34T2F.js";
24
- import "../chunk-MIXWMA73.js";
25
- import "../chunk-NOI3XTCY.js";
26
- import "../chunk-P2VIBGXA.js";
27
- import "../chunk-WPX67AKT.js";
28
- import "../chunk-LPNJLKBQ.js";
19
+ import "../chunk-GBNQXYN4.js";
20
+ import "../chunk-DLEKCAQL.js";
21
+ import "../chunk-MYHG7PX2.js";
22
+ import "../chunk-OCVVSRDA.js";
23
+ import "../chunk-EIGJYCOE.js";
24
+ import "../chunk-HTEGMMT3.js";
25
+ import "../chunk-HOEB6AKG.js";
26
+ import "../chunk-URNXU3FO.js";
27
+ import "../chunk-UMMCHS6P.js";
28
+ import "../chunk-72WOCX22.js";
29
29
  import "../chunk-XHKBHWLX.js";
30
30
  import {
31
31
  canonicalGateInputs
32
- } from "../chunk-U6RVDUJ5.js";
32
+ } from "../chunk-F6NTWZZC.js";
33
33
  import "../chunk-N6IOSZOE.js";
34
- import "../chunk-EUGNVLMG.js";
35
- import "../chunk-YC27PROF.js";
34
+ import "../chunk-VFFHQC7W.js";
35
+ import "../chunk-MMVCI6DT.js";
36
36
  import {
37
37
  exitAfterClientReports
38
- } from "../chunk-N5MZH5A6.js";
38
+ } from "../chunk-KB2FTO4O.js";
39
39
  import "../chunk-POFBE6ZY.js";
40
40
  import {
41
41
  exitOnHelpFlag
42
- } from "../chunk-5S2VBSJI.js";
42
+ } from "../chunk-CB23AO4D.js";
43
43
  import "../chunk-GMXKITVA.js";
44
- import "../chunk-D6OODZCM.js";
45
- import "../chunk-VE7TXLR4.js";
46
- import "../chunk-EEEJ2JIL.js";
47
- import "../chunk-DUQO4C4I.js";
48
- import "../chunk-OVC5QXN5.js";
44
+ import "../chunk-TJMAXQ5Q.js";
45
+ import "../chunk-I4HKMUZQ.js";
46
+ import "../chunk-DVW2MYCM.js";
47
+ import "../chunk-2SLCHCVN.js";
48
+ import "../chunk-4A3UQERT.js";
49
49
  import "../chunk-7QLSKOSU.js";
50
50
  import {
51
51
  EXIT
52
52
  } from "../chunk-KZERVKTD.js";
53
- import "../chunk-62CVUUNU.js";
54
- import "../chunk-MZBRL5H5.js";
53
+ import "../chunk-5Y2DY6X4.js";
54
+ import "../chunk-UPLV5AJF.js";
55
55
  import "../chunk-T7E75EKA.js";
56
- import "../chunk-R6OYCUNK.js";
57
- import "../chunk-YYCTF4Q5.js";
56
+ import "../chunk-ON5JW2HP.js";
57
+ import "../chunk-35X5UDML.js";
58
58
  import {
59
59
  renderPreToolUseVerdict
60
- } from "../chunk-G4GLCLKK.js";
60
+ } from "../chunk-5YY3IJT4.js";
61
61
 
62
62
  // bin/pushary-hook.ts
63
63
  exitOnHelpFlag("hook");
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runBrowserLogin
4
- } from "../chunk-G62JL2NT.js";
4
+ } from "../chunk-7U7ZWUTR.js";
5
5
  import "../chunk-PUZZELE6.js";
6
6
  import {
7
7
  recoverDaemonAfterLogin
8
- } from "../chunk-ZKJ34T2F.js";
8
+ } from "../chunk-EIGJYCOE.js";
9
9
  import "../chunk-XHKBHWLX.js";
10
10
  import "../chunk-3EGEA4KH.js";
11
11
  import {
@@ -13,7 +13,7 @@ import {
13
13
  } from "../chunk-U4TMAANR.js";
14
14
  import {
15
15
  exitOnHelpFlag
16
- } from "../chunk-5S2VBSJI.js";
16
+ } from "../chunk-CB23AO4D.js";
17
17
  import {
18
18
  parseFlags
19
19
  } from "../chunk-GMXKITVA.js";
@@ -22,28 +22,28 @@ import {
22
22
  readControlMode,
23
23
  readKeySource,
24
24
  writeKey
25
- } from "../chunk-D6OODZCM.js";
25
+ } from "../chunk-TJMAXQ5Q.js";
26
26
  import {
27
27
  checkApiKey,
28
28
  describeKeyCheck
29
- } from "../chunk-EEEJ2JIL.js";
30
- import "../chunk-DUQO4C4I.js";
31
- import "../chunk-OVC5QXN5.js";
29
+ } from "../chunk-DVW2MYCM.js";
30
+ import "../chunk-2SLCHCVN.js";
31
+ import "../chunk-4A3UQERT.js";
32
32
  import {
33
33
  UsageError
34
34
  } from "../chunk-7QLSKOSU.js";
35
35
  import {
36
36
  EXIT
37
37
  } from "../chunk-KZERVKTD.js";
38
- import "../chunk-62CVUUNU.js";
39
- import "../chunk-MZBRL5H5.js";
38
+ import "../chunk-5Y2DY6X4.js";
39
+ import "../chunk-UPLV5AJF.js";
40
40
  import "../chunk-T7E75EKA.js";
41
- import "../chunk-R6OYCUNK.js";
42
- import "../chunk-YYCTF4Q5.js";
41
+ import "../chunk-ON5JW2HP.js";
42
+ import "../chunk-35X5UDML.js";
43
43
  import {
44
44
  getPackageVersion,
45
45
  isValidApiKey
46
- } from "../chunk-G4GLCLKK.js";
46
+ } from "../chunk-5YY3IJT4.js";
47
47
 
48
48
  // bin/pushary-login.ts
49
49
  exitOnHelpFlag("login");
@@ -4,33 +4,33 @@ import {
4
4
  } from "../chunk-U4TMAANR.js";
5
5
  import {
6
6
  exitOnHelpFlag
7
- } from "../chunk-5S2VBSJI.js";
7
+ } from "../chunk-CB23AO4D.js";
8
8
  import {
9
9
  parseFlags
10
10
  } from "../chunk-GMXKITVA.js";
11
11
  import {
12
12
  clearKey,
13
13
  readKeySource
14
- } from "../chunk-D6OODZCM.js";
14
+ } from "../chunk-TJMAXQ5Q.js";
15
15
  import {
16
16
  UsageError
17
17
  } from "../chunk-7QLSKOSU.js";
18
18
  import {
19
19
  EXIT
20
20
  } from "../chunk-KZERVKTD.js";
21
- import "../chunk-62CVUUNU.js";
21
+ import "../chunk-5Y2DY6X4.js";
22
22
  import {
23
23
  claudeJson,
24
24
  codexConfigToml,
25
25
  cursorUserMcp,
26
26
  geminiSettings
27
- } from "../chunk-MZBRL5H5.js";
27
+ } from "../chunk-UPLV5AJF.js";
28
28
  import "../chunk-T7E75EKA.js";
29
29
  import {
30
30
  getBaseUrl
31
- } from "../chunk-R6OYCUNK.js";
32
- import "../chunk-YYCTF4Q5.js";
33
- import "../chunk-G4GLCLKK.js";
31
+ } from "../chunk-ON5JW2HP.js";
32
+ import "../chunk-35X5UDML.js";
33
+ import "../chunk-5YY3IJT4.js";
34
34
 
35
35
  // bin/pushary-logout.ts
36
36
  import { existsSync } from "fs";
@@ -1,29 +1,98 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MCP_BRIDGE_PATH,
4
- createMcpStdioBridge
5
- } from "../chunk-7OA34PNW.js";
6
- import "../chunk-VE7TXLR4.js";
7
- import "../chunk-EEEJ2JIL.js";
4
+ bridgeError,
5
+ createMcpStdioBridge,
6
+ parseBridgeLine
7
+ } from "../chunk-T55H6YEP.js";
8
+ import "../chunk-I4HKMUZQ.js";
9
+ import "../chunk-DVW2MYCM.js";
8
10
  import {
9
11
  installNetworkDefaults
10
- } from "../chunk-DUQO4C4I.js";
11
- import "../chunk-OVC5QXN5.js";
12
+ } from "../chunk-2SLCHCVN.js";
13
+ import "../chunk-4A3UQERT.js";
12
14
  import "../chunk-7QLSKOSU.js";
13
15
  import {
14
16
  EXIT
15
17
  } from "../chunk-KZERVKTD.js";
16
- import "../chunk-MZBRL5H5.js";
18
+ import "../chunk-UPLV5AJF.js";
17
19
  import "../chunk-T7E75EKA.js";
18
20
  import {
19
21
  getApiKey,
20
22
  getBaseUrl
21
- } from "../chunk-R6OYCUNK.js";
22
- import "../chunk-YYCTF4Q5.js";
23
- import "../chunk-G4GLCLKK.js";
23
+ } from "../chunk-ON5JW2HP.js";
24
+ import "../chunk-35X5UDML.js";
25
+ import "../chunk-5YY3IJT4.js";
26
+
27
+ // src/mcp-stdio-stream.ts
28
+ var MCP_MAX_IN_FLIGHT = 16;
29
+ var MCP_CONTROL_RESERVE = 4;
30
+ var MCP_MAX_LINE_BYTES = 1024 * 1024;
31
+ var isControl = (line) => {
32
+ const parsed = parseBridgeLine(line);
33
+ if (!parsed.ok || typeof parsed.payload !== "object" || parsed.payload === null || Array.isArray(parsed.payload)) return false;
34
+ const message = parsed.payload;
35
+ if (!("method" in message)) return false;
36
+ if (message.method === "notifications/cancelled") return true;
37
+ if (message.method !== "tools/call" || !("params" in message)) return false;
38
+ const params = message.params;
39
+ return typeof params === "object" && params !== null && "name" in params && params.name === "cancel_question";
40
+ };
41
+ var writeMcpMessage = (output, message) => new Promise((resolve, reject) => {
42
+ output.write(`${JSON.stringify(message)}
43
+ `, (error) => error ? reject(error) : resolve());
44
+ });
45
+ var runMcpStdioStream = async (input, bridge2, emit) => {
46
+ const pending = /* @__PURE__ */ new Set();
47
+ let failure;
48
+ const line = Buffer.allocUnsafe(MCP_MAX_LINE_BYTES);
49
+ let lineLength = 0;
50
+ let discarding = false;
51
+ const forward = async (text) => {
52
+ if (!text.trim()) return;
53
+ const limit = MCP_MAX_IN_FLIGHT + (isControl(text) ? MCP_CONTROL_RESERVE : 0);
54
+ if (pending.size >= limit) {
55
+ await bridge2.reject(text, "Pushary MCP bridge is busy. Retry after an outstanding request finishes.");
56
+ return;
57
+ }
58
+ const task = bridge2.forward(text).catch((error) => {
59
+ failure = error;
60
+ }).finally(() => pending.delete(task));
61
+ pending.add(task);
62
+ };
63
+ try {
64
+ for await (const chunk of input) {
65
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
66
+ let start = 0;
67
+ while (start < bytes.length) {
68
+ if (failure) throw failure;
69
+ const newline = bytes.indexOf(10, start);
70
+ const end = newline < 0 ? bytes.length : newline;
71
+ if (!discarding) {
72
+ if (lineLength + end - start > MCP_MAX_LINE_BYTES) {
73
+ lineLength = 0;
74
+ discarding = true;
75
+ await emit(bridgeError(null, "MCP input line exceeds the 1 MiB limit."));
76
+ } else {
77
+ lineLength += bytes.copy(line, lineLength, start, end);
78
+ }
79
+ }
80
+ if (newline >= 0) {
81
+ if (!discarding) await forward(line.toString("utf8", 0, lineLength));
82
+ lineLength = 0;
83
+ discarding = false;
84
+ }
85
+ start = end + 1;
86
+ }
87
+ }
88
+ if (!discarding && lineLength > 0) await forward(line.toString("utf8", 0, lineLength));
89
+ } finally {
90
+ await Promise.all(pending);
91
+ }
92
+ if (failure) throw failure;
93
+ };
24
94
 
25
95
  // bin/pushary-mcp.ts
26
- import { createInterface } from "readline";
27
96
  installNetworkDefaults();
28
97
  var readApiKey = () => {
29
98
  try {
@@ -32,26 +101,14 @@ var readApiKey = () => {
32
101
  return null;
33
102
  }
34
103
  };
35
- var writeMessage = (message) => {
36
- process.stdout.write(`${JSON.stringify(message)}
37
- `);
38
- };
104
+ var writeMessage = (message) => writeMcpMessage(process.stdout, message);
39
105
  var bridge = createMcpStdioBridge({
40
106
  endpoint: `${getBaseUrl()}${MCP_BRIDGE_PATH}`,
41
107
  apiKey: readApiKey,
42
108
  fetchImpl: globalThis.fetch,
43
109
  emit: writeMessage
44
110
  });
45
- var inFlight = /* @__PURE__ */ new Set();
46
- var forwardLine = (line) => {
47
- if (!line.trim()) return;
48
- const forwarding = bridge.forward(line).finally(() => inFlight.delete(forwarding));
49
- inFlight.add(forwarding);
50
- };
51
- var exitWhenDrained = async () => {
52
- await Promise.all(inFlight);
53
- process.stdout.write("", () => process.exit(EXIT.OK));
54
- };
55
- var lines = createInterface({ input: process.stdin, crlfDelay: Infinity });
56
- lines.on("line", forwardLine);
57
- lines.on("close", () => void exitWhenDrained());
111
+ runMcpStdioStream(process.stdin, bridge, writeMessage).catch((error) => {
112
+ console.error(error instanceof Error ? error.message : String(error));
113
+ process.exitCode = EXIT.FAILED;
114
+ });
@@ -1,33 +1,33 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnFailedResponse
4
- } from "../chunk-PRNFSORD.js";
4
+ } from "../chunk-NHCUXTEM.js";
5
5
  import {
6
6
  createIo
7
7
  } from "../chunk-U4TMAANR.js";
8
8
  import {
9
9
  exitOnHelpFlag
10
- } from "../chunk-5S2VBSJI.js";
10
+ } from "../chunk-CB23AO4D.js";
11
11
  import {
12
12
  rejectUnknownFlags
13
13
  } from "../chunk-GMXKITVA.js";
14
- import "../chunk-EEEJ2JIL.js";
15
- import "../chunk-DUQO4C4I.js";
16
- import "../chunk-OVC5QXN5.js";
14
+ import "../chunk-DVW2MYCM.js";
15
+ import "../chunk-2SLCHCVN.js";
16
+ import "../chunk-4A3UQERT.js";
17
17
  import {
18
18
  UsageError
19
19
  } from "../chunk-7QLSKOSU.js";
20
20
  import {
21
21
  EXIT
22
22
  } from "../chunk-KZERVKTD.js";
23
- import "../chunk-MZBRL5H5.js";
23
+ import "../chunk-UPLV5AJF.js";
24
24
  import "../chunk-T7E75EKA.js";
25
25
  import {
26
26
  getApiKey,
27
27
  getBaseUrl
28
- } from "../chunk-R6OYCUNK.js";
29
- import "../chunk-YYCTF4Q5.js";
30
- import "../chunk-G4GLCLKK.js";
28
+ } from "../chunk-ON5JW2HP.js";
29
+ import "../chunk-35X5UDML.js";
30
+ import "../chunk-5YY3IJT4.js";
31
31
 
32
32
  // src/cli/mode-request.ts
33
33
  var parseDuration = (value) => {
@@ -2,46 +2,46 @@
2
2
  import {
3
3
  activeHookSource,
4
4
  activeIdentity
5
- } from "../chunk-UOQRM7JQ.js";
6
- import "../chunk-G3OMOTJ4.js";
5
+ } from "../chunk-QB6QYZ6B.js";
6
+ import "../chunk-JRQRNNGA.js";
7
7
  import {
8
8
  readHookInput
9
- } from "../chunk-7RUJKCR4.js";
10
- import "../chunk-OTNOANMX.js";
9
+ } from "../chunk-FLQPM2GQ.js";
10
+ import "../chunk-6TK4IY3A.js";
11
11
  import "../chunk-SGZJ5LYH.js";
12
- import "../chunk-TCVMK6GI.js";
13
- import "../chunk-BGBLLHZ4.js";
14
- import "../chunk-3EUBQARL.js";
15
- import "../chunk-WTJM7PSL.js";
16
- import "../chunk-ZKJ34T2F.js";
17
- import "../chunk-MIXWMA73.js";
18
- import "../chunk-NOI3XTCY.js";
19
- import "../chunk-P2VIBGXA.js";
20
- import "../chunk-WPX67AKT.js";
21
- import "../chunk-LPNJLKBQ.js";
12
+ import "../chunk-GBNQXYN4.js";
13
+ import "../chunk-DLEKCAQL.js";
14
+ import "../chunk-MYHG7PX2.js";
15
+ import "../chunk-OCVVSRDA.js";
16
+ import "../chunk-EIGJYCOE.js";
17
+ import "../chunk-HTEGMMT3.js";
18
+ import "../chunk-HOEB6AKG.js";
19
+ import "../chunk-URNXU3FO.js";
20
+ import "../chunk-UMMCHS6P.js";
21
+ import "../chunk-72WOCX22.js";
22
22
  import "../chunk-XHKBHWLX.js";
23
23
  import {
24
24
  handleNotification
25
- } from "../chunk-U6RVDUJ5.js";
25
+ } from "../chunk-F6NTWZZC.js";
26
26
  import "../chunk-N6IOSZOE.js";
27
- import "../chunk-EUGNVLMG.js";
28
- import "../chunk-YC27PROF.js";
29
- import "../chunk-N5MZH5A6.js";
27
+ import "../chunk-VFFHQC7W.js";
28
+ import "../chunk-MMVCI6DT.js";
29
+ import "../chunk-KB2FTO4O.js";
30
30
  import "../chunk-POFBE6ZY.js";
31
31
  import "../chunk-GMXKITVA.js";
32
- import "../chunk-D6OODZCM.js";
33
- import "../chunk-VE7TXLR4.js";
34
- import "../chunk-EEEJ2JIL.js";
35
- import "../chunk-DUQO4C4I.js";
36
- import "../chunk-OVC5QXN5.js";
32
+ import "../chunk-TJMAXQ5Q.js";
33
+ import "../chunk-I4HKMUZQ.js";
34
+ import "../chunk-DVW2MYCM.js";
35
+ import "../chunk-2SLCHCVN.js";
36
+ import "../chunk-4A3UQERT.js";
37
37
  import "../chunk-7QLSKOSU.js";
38
38
  import "../chunk-KZERVKTD.js";
39
- import "../chunk-62CVUUNU.js";
40
- import "../chunk-MZBRL5H5.js";
39
+ import "../chunk-5Y2DY6X4.js";
40
+ import "../chunk-UPLV5AJF.js";
41
41
  import "../chunk-T7E75EKA.js";
42
- import "../chunk-R6OYCUNK.js";
43
- import "../chunk-YYCTF4Q5.js";
44
- import "../chunk-G4GLCLKK.js";
42
+ import "../chunk-ON5JW2HP.js";
43
+ import "../chunk-35X5UDML.js";
44
+ import "../chunk-5YY3IJT4.js";
45
45
 
46
46
  // bin/pushary-notification-hook.ts
47
47
  var AGENT = activeIdentity(process.argv);