@namzu/sdk 51.1.0 → 52.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 (323) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/agents/QueryAgent.d.ts.map +1 -1
  3. package/dist/agents/QueryAgent.js +2 -0
  4. package/dist/agents/QueryAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts +1 -1
  6. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/examples/SupervisorAgent.d.ts +42 -0
  9. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  10. package/dist/agents/examples/SupervisorAgent.js +80 -4
  11. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  12. package/dist/agents/index.d.ts +1 -1
  13. package/dist/agents/index.d.ts.map +1 -1
  14. package/dist/agents/index.js.map +1 -1
  15. package/dist/authorization/protected-paths.d.ts +36 -0
  16. package/dist/authorization/protected-paths.d.ts.map +1 -0
  17. package/dist/authorization/protected-paths.js +107 -0
  18. package/dist/authorization/protected-paths.js.map +1 -0
  19. package/dist/authorization/readonly-commands.d.ts +39 -0
  20. package/dist/authorization/readonly-commands.d.ts.map +1 -0
  21. package/dist/authorization/readonly-commands.js +797 -0
  22. package/dist/authorization/readonly-commands.js.map +1 -0
  23. package/dist/authorization/readonly-flags.d.ts +19 -0
  24. package/dist/authorization/readonly-flags.d.ts.map +1 -0
  25. package/dist/authorization/readonly-flags.js +178 -0
  26. package/dist/authorization/readonly-flags.js.map +1 -0
  27. package/dist/authorization/removal.d.ts +52 -0
  28. package/dist/authorization/removal.d.ts.map +1 -0
  29. package/dist/authorization/removal.js +283 -0
  30. package/dist/authorization/removal.js.map +1 -0
  31. package/dist/authorization/shell-paths.d.ts +66 -0
  32. package/dist/authorization/shell-paths.d.ts.map +1 -0
  33. package/dist/authorization/shell-paths.js +697 -0
  34. package/dist/authorization/shell-paths.js.map +1 -0
  35. package/dist/bridge/acp/update.d.ts.map +1 -1
  36. package/dist/bridge/acp/update.js +1 -0
  37. package/dist/bridge/acp/update.js.map +1 -1
  38. package/dist/compaction/context-window.d.ts +24 -0
  39. package/dist/compaction/context-window.d.ts.map +1 -1
  40. package/dist/compaction/context-window.js +34 -0
  41. package/dist/compaction/context-window.js.map +1 -1
  42. package/dist/compaction/manual.d.ts.map +1 -1
  43. package/dist/compaction/manual.js +10 -2
  44. package/dist/compaction/manual.js.map +1 -1
  45. package/dist/compaction/plan.d.ts +4 -0
  46. package/dist/compaction/plan.d.ts.map +1 -1
  47. package/dist/compaction/plan.js +6 -2
  48. package/dist/compaction/plan.js.map +1 -1
  49. package/dist/compaction/verifier.d.ts +11 -1
  50. package/dist/compaction/verifier.d.ts.map +1 -1
  51. package/dist/compaction/verifier.js +19 -7
  52. package/dist/compaction/verifier.js.map +1 -1
  53. package/dist/config/runtime.d.ts +55 -7
  54. package/dist/config/runtime.d.ts.map +1 -1
  55. package/dist/config/runtime.js +23 -2
  56. package/dist/config/runtime.js.map +1 -1
  57. package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
  58. package/dist/connector/web/guarded-fetch.js +24 -0
  59. package/dist/connector/web/guarded-fetch.js.map +1 -1
  60. package/dist/connector/web/index.d.ts +1 -1
  61. package/dist/connector/web/index.d.ts.map +1 -1
  62. package/dist/connector/web/page.d.ts +59 -0
  63. package/dist/connector/web/page.d.ts.map +1 -0
  64. package/dist/connector/web/page.js +112 -0
  65. package/dist/connector/web/page.js.map +1 -0
  66. package/dist/connector/web/types.d.ts +47 -0
  67. package/dist/connector/web/types.d.ts.map +1 -1
  68. package/dist/connector/web/types.js.map +1 -1
  69. package/dist/constants/continuation.d.ts +8 -0
  70. package/dist/constants/continuation.d.ts.map +1 -1
  71. package/dist/constants/continuation.js +8 -0
  72. package/dist/constants/continuation.js.map +1 -1
  73. package/dist/constants/plugin/index.d.ts +1 -1
  74. package/dist/constants/plugin/index.d.ts.map +1 -1
  75. package/dist/constants/plugin/index.js +1 -1
  76. package/dist/constants/plugin/index.js.map +1 -1
  77. package/dist/manager/agent/lifecycle.d.ts +7 -0
  78. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  79. package/dist/manager/agent/lifecycle.js +11 -2
  80. package/dist/manager/agent/lifecycle.js.map +1 -1
  81. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  82. package/dist/manager/session/turn-recorder.js +4 -2
  83. package/dist/manager/session/turn-recorder.js.map +1 -1
  84. package/dist/plugin/index.d.ts +1 -1
  85. package/dist/plugin/index.d.ts.map +1 -1
  86. package/dist/plugin/index.js +1 -1
  87. package/dist/plugin/index.js.map +1 -1
  88. package/dist/plugin/lifecycle.d.ts +6 -0
  89. package/dist/plugin/lifecycle.d.ts.map +1 -1
  90. package/dist/plugin/lifecycle.js +98 -114
  91. package/dist/plugin/lifecycle.js.map +1 -1
  92. package/dist/plugin/shell-hook.d.ts +90 -22
  93. package/dist/plugin/shell-hook.d.ts.map +1 -1
  94. package/dist/plugin/shell-hook.js +434 -41
  95. package/dist/plugin/shell-hook.js.map +1 -1
  96. package/dist/public-runtime.d.ts +4 -1
  97. package/dist/public-runtime.d.ts.map +1 -1
  98. package/dist/public-runtime.js +4 -1
  99. package/dist/public-runtime.js.map +1 -1
  100. package/dist/public-types.d.ts +2 -2
  101. package/dist/public-types.d.ts.map +1 -1
  102. package/dist/runtime/jobs/registry.d.ts +21 -0
  103. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  104. package/dist/runtime/jobs/registry.js +15 -2
  105. package/dist/runtime/jobs/registry.js.map +1 -1
  106. package/dist/runtime/query/executor/tool-call-admission.d.ts +10 -0
  107. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  108. package/dist/runtime/query/executor/tool-call-admission.js +74 -13
  109. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  110. package/dist/runtime/query/executor.d.ts +41 -2
  111. package/dist/runtime/query/executor.d.ts.map +1 -1
  112. package/dist/runtime/query/executor.js +190 -6
  113. package/dist/runtime/query/executor.js.map +1 -1
  114. package/dist/runtime/query/finalize-turn.d.ts +6 -0
  115. package/dist/runtime/query/finalize-turn.d.ts.map +1 -1
  116. package/dist/runtime/query/finalize-turn.js +1 -1
  117. package/dist/runtime/query/finalize-turn.js.map +1 -1
  118. package/dist/runtime/query/index.d.ts +29 -0
  119. package/dist/runtime/query/index.d.ts.map +1 -1
  120. package/dist/runtime/query/index.js +15 -3
  121. package/dist/runtime/query/index.js.map +1 -1
  122. package/dist/runtime/query/iteration/index.d.ts +31 -0
  123. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  124. package/dist/runtime/query/iteration/index.js +216 -7
  125. package/dist/runtime/query/iteration/index.js.map +1 -1
  126. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts +58 -0
  127. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts.map +1 -0
  128. package/dist/runtime/query/iteration/phases/compaction-breaker.js +91 -0
  129. package/dist/runtime/query/iteration/phases/compaction-breaker.js.map +1 -0
  130. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  131. package/dist/runtime/query/iteration/phases/compaction.js +89 -7
  132. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  133. package/dist/runtime/query/iteration/phases/context.d.ts +10 -0
  134. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  135. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  136. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  137. package/dist/runtime/query/iteration/phases/tool-review.js +165 -2
  138. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  139. package/dist/runtime/query/path-escalation.d.ts +36 -0
  140. package/dist/runtime/query/path-escalation.d.ts.map +1 -0
  141. package/dist/runtime/query/path-escalation.js +184 -0
  142. package/dist/runtime/query/path-escalation.js.map +1 -0
  143. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  144. package/dist/runtime/query/plugin-hooks.js +8 -0
  145. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  146. package/dist/runtime/query/reminders.d.ts +35 -0
  147. package/dist/runtime/query/reminders.d.ts.map +1 -0
  148. package/dist/runtime/query/reminders.js +7 -0
  149. package/dist/runtime/query/reminders.js.map +1 -0
  150. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  151. package/dist/runtime/query/resume-pending.js +26 -0
  152. package/dist/runtime/query/resume-pending.js.map +1 -1
  153. package/dist/runtime/query/review-policy.d.ts +26 -0
  154. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  155. package/dist/runtime/query/review-policy.js +79 -5
  156. package/dist/runtime/query/review-policy.js.map +1 -1
  157. package/dist/runtime/query/tool-output-budget.d.ts +46 -0
  158. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  159. package/dist/runtime/query/tool-output-budget.js +85 -1
  160. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  161. package/dist/runtime/query/tooling.d.ts +1 -0
  162. package/dist/runtime/query/tooling.d.ts.map +1 -1
  163. package/dist/runtime/query/tooling.js +5 -0
  164. package/dist/runtime/query/tooling.js.map +1 -1
  165. package/dist/session/paths.d.ts +5 -1
  166. package/dist/session/paths.d.ts.map +1 -1
  167. package/dist/session/paths.js +8 -0
  168. package/dist/session/paths.js.map +1 -1
  169. package/dist/store/memory/disk.d.ts.map +1 -1
  170. package/dist/store/memory/disk.js +2 -2
  171. package/dist/store/memory/disk.js.map +1 -1
  172. package/dist/store/memory/markdown.d.ts.map +1 -1
  173. package/dist/store/memory/markdown.js +2 -2
  174. package/dist/store/memory/markdown.js.map +1 -1
  175. package/dist/store/memory/naming.d.ts +9 -0
  176. package/dist/store/memory/naming.d.ts.map +1 -1
  177. package/dist/store/memory/naming.js +12 -0
  178. package/dist/store/memory/naming.js.map +1 -1
  179. package/dist/tools/builtins/bash.d.ts +30 -1
  180. package/dist/tools/builtins/bash.d.ts.map +1 -1
  181. package/dist/tools/builtins/bash.js +170 -26
  182. package/dist/tools/builtins/bash.js.map +1 -1
  183. package/dist/tools/builtins/content-fingerprint.d.ts +2 -0
  184. package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
  185. package/dist/tools/builtins/content-fingerprint.js +4 -0
  186. package/dist/tools/builtins/content-fingerprint.js.map +1 -1
  187. package/dist/tools/builtins/edit.d.ts.map +1 -1
  188. package/dist/tools/builtins/edit.js +60 -18
  189. package/dist/tools/builtins/edit.js.map +1 -1
  190. package/dist/tools/builtins/grep.d.ts +8 -1
  191. package/dist/tools/builtins/grep.d.ts.map +1 -1
  192. package/dist/tools/builtins/grep.js +152 -33
  193. package/dist/tools/builtins/grep.js.map +1 -1
  194. package/dist/tools/builtins/read-file.d.ts +1 -0
  195. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  196. package/dist/tools/builtins/read-file.js +44 -5
  197. package/dist/tools/builtins/read-file.js.map +1 -1
  198. package/dist/tools/builtins/read-render.d.ts +52 -0
  199. package/dist/tools/builtins/read-render.d.ts.map +1 -1
  200. package/dist/tools/builtins/read-render.js +143 -0
  201. package/dist/tools/builtins/read-render.js.map +1 -1
  202. package/dist/tools/builtins/web.d.ts +13 -2
  203. package/dist/tools/builtins/web.d.ts.map +1 -1
  204. package/dist/tools/builtins/web.js +225 -32
  205. package/dist/tools/builtins/web.js.map +1 -1
  206. package/dist/tools/coordinator/ask-user-question.d.ts +2 -0
  207. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  208. package/dist/tools/coordinator/ask-user-question.js +256 -92
  209. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  210. package/dist/tools/coordinator/question-options.d.ts +1 -0
  211. package/dist/tools/coordinator/question-options.d.ts.map +1 -1
  212. package/dist/tools/coordinator/question-options.js +6 -1
  213. package/dist/tools/coordinator/question-options.js.map +1 -1
  214. package/dist/tools/defineTool.d.ts +4 -1
  215. package/dist/tools/defineTool.d.ts.map +1 -1
  216. package/dist/tools/defineTool.js +6 -1
  217. package/dist/tools/defineTool.js.map +1 -1
  218. package/dist/tools/paths.d.ts +6 -0
  219. package/dist/tools/paths.d.ts.map +1 -1
  220. package/dist/tools/paths.js +1 -1
  221. package/dist/tools/paths.js.map +1 -1
  222. package/dist/types/agent/query.d.ts +3 -0
  223. package/dist/types/agent/query.d.ts.map +1 -1
  224. package/dist/types/errors/catalog.js +1 -1
  225. package/dist/types/errors/catalog.js.map +1 -1
  226. package/dist/types/hitl/index.d.ts +104 -0
  227. package/dist/types/hitl/index.d.ts.map +1 -1
  228. package/dist/types/hitl/index.js.map +1 -1
  229. package/dist/types/message/index.d.ts +1 -1
  230. package/dist/types/message/index.d.ts.map +1 -1
  231. package/dist/types/message/index.js +2 -0
  232. package/dist/types/message/index.js.map +1 -1
  233. package/dist/types/plugin/index.d.ts +93 -19
  234. package/dist/types/plugin/index.d.ts.map +1 -1
  235. package/dist/types/plugin/index.js +3 -0
  236. package/dist/types/plugin/index.js.map +1 -1
  237. package/dist/types/provider/errors.d.ts +19 -0
  238. package/dist/types/provider/errors.d.ts.map +1 -1
  239. package/dist/types/provider/errors.js +24 -0
  240. package/dist/types/provider/errors.js.map +1 -1
  241. package/dist/types/session/events.d.ts +10 -2
  242. package/dist/types/session/events.d.ts.map +1 -1
  243. package/dist/types/session/events.js.map +1 -1
  244. package/dist/types/session/records.d.ts +9 -9
  245. package/dist/types/session/records.d.ts.map +1 -1
  246. package/dist/types/session/records.js +1 -0
  247. package/dist/types/session/records.js.map +1 -1
  248. package/dist/types/session/stop-reason.d.ts +5 -0
  249. package/dist/types/session/stop-reason.d.ts.map +1 -1
  250. package/dist/types/tool/index.d.ts +52 -0
  251. package/dist/types/tool/index.d.ts.map +1 -1
  252. package/dist/types/tool/index.js.map +1 -1
  253. package/package.json +4 -2
  254. package/src/agents/QueryAgent.ts +5 -1
  255. package/src/agents/SupervisorAgent.ts +1 -1
  256. package/src/agents/examples/SupervisorAgent.ts +217 -106
  257. package/src/agents/index.ts +1 -1
  258. package/src/authorization/protected-paths.ts +110 -0
  259. package/src/authorization/readonly-commands.ts +771 -0
  260. package/src/authorization/readonly-flags.ts +196 -0
  261. package/src/authorization/removal.ts +326 -0
  262. package/src/authorization/shell-paths.ts +927 -0
  263. package/src/bridge/acp/update.ts +1 -0
  264. package/src/compaction/context-window.ts +41 -0
  265. package/src/compaction/manual.ts +10 -2
  266. package/src/compaction/plan.ts +11 -2
  267. package/src/compaction/verifier.ts +28 -3
  268. package/src/config/runtime.ts +23 -2
  269. package/src/connector/web/guarded-fetch.ts +26 -0
  270. package/src/connector/web/index.ts +3 -0
  271. package/src/connector/web/page.ts +130 -0
  272. package/src/connector/web/types.ts +47 -0
  273. package/src/constants/continuation.ts +10 -0
  274. package/src/constants/plugin/index.ts +1 -1
  275. package/src/manager/agent/lifecycle.ts +12 -4
  276. package/src/manager/session/turn-recorder.ts +10 -2
  277. package/src/plugin/index.ts +1 -0
  278. package/src/plugin/lifecycle.ts +107 -119
  279. package/src/plugin/shell-hook.ts +477 -43
  280. package/src/public-runtime.ts +8 -0
  281. package/src/public-types.ts +4 -0
  282. package/src/runtime/jobs/registry.ts +39 -2
  283. package/src/runtime/query/executor/tool-call-admission.ts +79 -13
  284. package/src/runtime/query/executor.ts +242 -8
  285. package/src/runtime/query/finalize-turn.ts +7 -1
  286. package/src/runtime/query/index.ts +45 -3
  287. package/src/runtime/query/iteration/index.ts +251 -12
  288. package/src/runtime/query/iteration/phases/compaction-breaker.ts +106 -0
  289. package/src/runtime/query/iteration/phases/compaction.ts +99 -12
  290. package/src/runtime/query/iteration/phases/context.ts +11 -0
  291. package/src/runtime/query/iteration/phases/tool-review.ts +177 -2
  292. package/src/runtime/query/path-escalation.ts +204 -0
  293. package/src/runtime/query/plugin-hooks.ts +8 -0
  294. package/src/runtime/query/reminders.ts +45 -0
  295. package/src/runtime/query/resume-pending.ts +27 -0
  296. package/src/runtime/query/review-policy.ts +106 -5
  297. package/src/runtime/query/tool-output-budget.ts +115 -1
  298. package/src/runtime/query/tooling.ts +6 -0
  299. package/src/session/paths.ts +11 -1
  300. package/src/store/memory/disk.ts +2 -1
  301. package/src/store/memory/markdown.ts +2 -1
  302. package/src/store/memory/naming.ts +13 -0
  303. package/src/tools/builtins/bash.ts +203 -34
  304. package/src/tools/builtins/content-fingerprint.ts +5 -0
  305. package/src/tools/builtins/edit.ts +69 -19
  306. package/src/tools/builtins/grep.ts +159 -38
  307. package/src/tools/builtins/read-file.ts +48 -5
  308. package/src/tools/builtins/read-render.ts +193 -0
  309. package/src/tools/builtins/web.ts +258 -33
  310. package/src/tools/coordinator/ask-user-question.ts +309 -103
  311. package/src/tools/coordinator/question-options.ts +8 -1
  312. package/src/tools/defineTool.ts +11 -2
  313. package/src/tools/paths.ts +1 -1
  314. package/src/types/agent/query.ts +3 -0
  315. package/src/types/errors/catalog.ts +1 -1
  316. package/src/types/hitl/index.ts +104 -0
  317. package/src/types/message/index.ts +2 -0
  318. package/src/types/plugin/index.ts +101 -18
  319. package/src/types/provider/errors.ts +33 -0
  320. package/src/types/session/events.ts +10 -2
  321. package/src/types/session/records.ts +1 -0
  322. package/src/types/session/stop-reason.ts +5 -0
  323. package/src/types/tool/index.ts +53 -2
@@ -23,13 +23,19 @@
23
23
  * one inherited from the host's own environment. A hook that needs "which
24
24
  * turn" has it exactly when there is one.
25
25
  *
26
- * Its exit code is its answer:
26
+ * Its answer is the exit code and, on exit `0`, an optional JSON object on
27
+ * stdout. The exit codes:
27
28
  *
28
- * - `0` — carry on.
29
- * - `2` — **block.** Before a tool (`pre_tool_use`) the call is skipped and the
30
- * model is told why, with the hook's stderr as the reason. On any other
31
- * event a 2 is reported and the turn carries on: there is nothing left to
32
- * block once the tool has run or the turn has started.
29
+ * - `0` — carry on. On `user_prompt_submit`, plain (non-JSON) stdout becomes
30
+ * context for the model.
31
+ * - `2` — **block**, read per event: before a tool (`pre_tool_use`) the call is
32
+ * skipped and the model is told why, with the hook's stderr as the reason;
33
+ * on `user_prompt_submit` the turn ends; on `turn_end` and `subagent_stop`
34
+ * the stderr is fed back to the model and the turn goes on; on
35
+ * `pre_compact` a compaction the context did not force is cancelled; on
36
+ * `post_tool_use` and `post_tool_use_failure` the stderr is shown to the
37
+ * model with that call's result. On every other event a 2 is reported and
38
+ * the turn carries on.
33
39
  * - anything else — the hook's own failure. Reported through the logger,
34
40
  * never blocking. A formatter that crashed must not stop the agent editing,
35
41
  * and a script missing its interpreter (127) must not read as "forbidden".
@@ -37,12 +43,41 @@
37
43
  * `2` rather than any non-zero, because a verdict and a failure are different
38
44
  * facts and one exit code cannot carry both.
39
45
  *
40
- * ## What a hook cannot do here
46
+ * ## The JSON answer
41
47
  *
42
- * Modify a tool's input or replace its result. The hook protocol allows both
43
- * (`modify`, `replace`); this adapter exposes neither, because a shell command
44
- * that rewrites what the model asked for deserves its own design and audit,
45
- * not a JSON field on stdout nobody reviewed.
48
+ * Exit `0` with a JSON object on stdout carries the fields below. Output that
49
+ * does not start with `{` is plain text and is not read as JSON; output that
50
+ * starts with `{` but does not parse, or has a field of the wrong type, is
51
+ * reported and ignored, and the call carries on.
52
+ *
53
+ * - `continue: false` with `stopReason` — stop the turn after the current
54
+ * step; `stopReason` is shown to the operator.
55
+ * - `decision: "block"` with `reason` — refuse; `decision: "approve"` allows a
56
+ * tool call or a permission request.
57
+ * - `systemMessage` — a warning for the operator, reported through the logger.
58
+ * - `suppressOutput` — keep this hook's stdout out of the debug log.
59
+ * - `hookSpecificOutput` with `hookEventName` naming this event (Namzu's
60
+ * name or the reference spelling `PreToolUse`, `Stop`, ...):
61
+ * `permissionDecision` (`allow`, `deny` or `ask`) with
62
+ * `permissionDecisionReason`, `updatedInput` and `additionalContext` for
63
+ * `pre_tool_use`; `additionalContext` for `user_prompt_submit`,
64
+ * `post_tool_use`, `post_tool_use_failure`, `turn_end`, `subagent_stop`,
65
+ * `session_start`, `notification`; and for `permission_request` a `decision`
66
+ * `{ behavior: "allow" }` or `{ behavior: "deny", message, interrupt }`.
67
+ *
68
+ * ## What a hook may decide, and what it may not
69
+ *
70
+ * A hook may rewrite a tool call's input (`updatedInput`) and answer a
71
+ * permission question. Both stay inside the kernel's own rules:
72
+ *
73
+ * - `updatedInput` goes through the same validation as a model-supplied
74
+ * input, and the rewritten call is then checked by the authorization gate
75
+ * and the review policy as it now reads.
76
+ * - `allow` stands in for a person's yes only on a call that would have been
77
+ * asked about because it changes something. It never covers a sandbox
78
+ * escape, a path outside the roots, a call the tool always asks about, a
79
+ * call a rule sent to review explicitly, or a destructive one, and it
80
+ * never reopens what a rule denied. `deny` always wins over `allow`.
46
81
  *
47
82
  * ## Bounds
48
83
  *
@@ -53,10 +88,12 @@
53
88
  * {@link attachShellHooks}, and the refusal names the new one: a hook that
54
89
  * silently stopped firing is worse than a config that fails to load.
55
90
  *
56
- * Each hook has a deadline (`timeoutMs`, default 30 s, capped at ten minutes)
91
+ * Each hook has a deadline (`timeoutMs`, default ten minutes, also the cap)
57
92
  * and its output is captured to a bound. A hook that times out is reported
58
93
  * and does not block: one that could not answer in time has not answered no.
59
94
  */
95
+ import { decodedCommands, decomposeCommandLine } from '../authorization/command-line.js';
96
+ import { SKILL_TOOL_NAME_ALIASES, permissionPatternToRegExpSource, } from '../authorization/skill-grant.js';
60
97
  import { spawnHostShell } from '../tools/command-shell.js';
61
98
  import { RENAMED_PLUGIN_HOOK_EVENTS } from '../types/plugin/index.js';
62
99
  import { asPluginId } from '../utils/id.js';
@@ -67,6 +104,9 @@ export const SHELL_HOOK_EVENTS = [
67
104
  'session_end',
68
105
  'pre_tool_use',
69
106
  'post_tool_use',
107
+ 'post_tool_use_failure',
108
+ 'permission_request',
109
+ 'notification',
70
110
  'pre_compact',
71
111
  'post_compact',
72
112
  'subagent_stop',
@@ -75,28 +115,82 @@ export const SHELL_HOOK_EVENTS = [
75
115
  ];
76
116
  /** The plugin id host shell hooks register under when the host names none. */
77
117
  export const SHELL_HOOKS_PLUGIN_ID = asPluginId('6d6f6bec-9d54-485b-90ca-52edbac1009d');
78
- export const DEFAULT_SHELL_HOOK_TIMEOUT_MS = 30_000;
118
+ export const DEFAULT_SHELL_HOOK_TIMEOUT_MS = 600_000;
79
119
  export const MAX_SHELL_HOOK_TIMEOUT_MS = 10 * 60_000;
80
120
  /** Captured output bound per stream. */
81
121
  const MAX_CAPTURE_BYTES = 64 * 1024;
82
122
  /**
83
- * `matcher` against a tool name: `*`, or a `|`-separated list of names, each
84
- * of which may end in `*`. Case-sensitive, because tool names are. A matcher
85
- * on an event with no tool (`turn_start`) matches nothing unless it is `*`.
123
+ * `matcher` against a name (a tool's, or a notification's type).
124
+ *
125
+ * Empty or `*` matches everything. A list of names separated by `|` or `,`
126
+ * matches exactly, each part optionally ending in `*` as a prefix (the
127
+ * spelling this adapter has always taken). Anything else is a regular
128
+ * expression, tested unanchored against the name; one that does not compile
129
+ * matches nothing. Case-sensitive, because tool names are. A matcher on an
130
+ * event that has no name (`turn_start`) matches nothing unless it is `*`.
86
131
  */
87
132
  export function shellHookMatches(matcher, toolName) {
88
133
  if (matcher === undefined || matcher.trim() === '' || matcher.trim() === '*')
89
134
  return true;
90
135
  if (toolName === undefined)
91
136
  return false;
92
- return matcher.split('|').some((part) => {
93
- const candidate = part.trim();
94
- if (candidate.length === 0)
95
- return false;
96
- return candidate.endsWith('*')
137
+ const parts = matcher.split(/[|,]/).map((part) => part.trim());
138
+ if (parts.every((part) => /^[A-Za-z0-9_.:-]+\*?$/.test(part))) {
139
+ return parts.some((candidate) => candidate.endsWith('*')
97
140
  ? toolName.startsWith(candidate.slice(0, -1))
98
- : toolName === candidate;
99
- });
141
+ : toolName === candidate);
142
+ }
143
+ try {
144
+ return new RegExp(matcher).test(toolName);
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
150
+ /**
151
+ * A hook's `if` against one tool call: `Tool` or `Tool(pattern)`. The tool
152
+ * part is case-insensitive and takes the names skills write (`Bash`,
153
+ * `Read`). A pattern is matched against a shell tool's command line and only
154
+ * there; for a tool with no command line the filter cannot be read, which
155
+ * runs the hook.
156
+ */
157
+ export function shellHookIfMatches(filter, toolName, toolInput) {
158
+ if (filter === undefined || filter.trim() === '')
159
+ return true;
160
+ if (toolName === undefined)
161
+ return true;
162
+ const shape = /^([A-Za-z0-9_.-]+)(?:\(([\s\S]*)\))?$/.exec(filter.trim());
163
+ if (!shape)
164
+ return true;
165
+ const written = (shape[1] ?? '').toLowerCase();
166
+ const tool = SKILL_TOOL_NAME_ALIASES[written] ?? written;
167
+ if (tool !== toolName.toLowerCase())
168
+ return false;
169
+ const specifier = shape[2]?.trim();
170
+ if (specifier === undefined || specifier === '' || specifier.replaceAll('*', '') === '')
171
+ return true;
172
+ if (tool !== 'bash')
173
+ return true;
174
+ const line = toolInput !== null && typeof toolInput === 'object'
175
+ ? toolInput.command
176
+ : undefined;
177
+ if (typeof line !== 'string')
178
+ return false;
179
+ const pattern = specifier.endsWith(':*') ? `${specifier.slice(0, -2)} *` : specifier;
180
+ try {
181
+ const matcher = new RegExp(permissionPatternToRegExpSource(pattern));
182
+ const decomposed = decomposeCommandLine(line, 'sh');
183
+ // A line the reader cannot see through may run the very command the
184
+ // filter names, so the hook runs. A filter only ever narrows when the
185
+ // whole line is visible and none of its commands matches.
186
+ if (decomposed.opaque)
187
+ return true;
188
+ const candidates = [...decomposed.segments, ...decodedCommands(line, 'sh')].map((each) => each.trim());
189
+ return candidates.some((each) => matcher.test(each));
190
+ }
191
+ catch {
192
+ return true;
193
+ }
100
194
  }
101
195
  /** Run one hook command to completion, bounded by its deadline and capture. */
102
196
  export function runShellHook(entry, input, signal) {
@@ -113,6 +207,16 @@ export function runShellHook(entry, input, signal) {
113
207
  ...(input.toolName !== undefined ? { tool_name: input.toolName } : {}),
114
208
  ...(input.toolInput !== undefined ? { tool_input: input.toolInput } : {}),
115
209
  ...(input.toolResult !== undefined ? { tool_result: input.toolResult } : {}),
210
+ ...(input.event === 'post_tool_use_failure' && input.toolResult?.error !== undefined
211
+ ? { error: input.toolResult.error }
212
+ : {}),
213
+ ...(input.notification !== undefined
214
+ ? {
215
+ notification_type: input.notification.type,
216
+ message: input.notification.message,
217
+ }
218
+ : {}),
219
+ ...(input.stopHookActive === true ? { stop_hook_active: true } : {}),
116
220
  });
117
221
  const toolPath = pathOf(input.toolInput);
118
222
  // A hook outside a turn must not see a turn id, including one the host
@@ -234,6 +338,154 @@ function pathOf(toolInput) {
234
338
  }
235
339
  return undefined;
236
340
  }
341
+ /** The reference spelling of each event name, which a hook's JSON may use. */
342
+ const REFERENCE_EVENT_NAMES = {
343
+ user_prompt_submit: 'UserPromptSubmit',
344
+ session_start: 'SessionStart',
345
+ session_end: 'SessionEnd',
346
+ pre_tool_use: 'PreToolUse',
347
+ post_tool_use: 'PostToolUse',
348
+ post_tool_use_failure: 'PostToolUseFailure',
349
+ permission_request: 'PermissionRequest',
350
+ notification: 'Notification',
351
+ pre_compact: 'PreCompact',
352
+ post_compact: 'PostCompact',
353
+ subagent_stop: 'SubagentStop',
354
+ turn_end: 'Stop',
355
+ };
356
+ function isRecord(value) {
357
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
358
+ }
359
+ /**
360
+ * Read a hook's stdout as its JSON answer, or `undefined` when it is plain
361
+ * text. Strict about types the way the contract is: a wrong type anywhere
362
+ * sets the whole object aside rather than half-obeying it, so a typo in a
363
+ * guard's `decision` is reported instead of silently becoming "continue".
364
+ */
365
+ function readShellHookJson(event, stdout) {
366
+ const text = stdout.trim();
367
+ if (!text.startsWith('{'))
368
+ return undefined;
369
+ let parsed;
370
+ try {
371
+ parsed = JSON.parse(text);
372
+ }
373
+ catch (error) {
374
+ return {
375
+ invalid: `stdout starts with "{" but is not valid JSON (${error.message})`,
376
+ };
377
+ }
378
+ if (!isRecord(parsed))
379
+ return { invalid: 'stdout JSON is not an object' };
380
+ const optionalString = (key, from = parsed) => (typeof from[key] === 'string' ? from[key] : undefined);
381
+ const wrongType = (key, type, from = parsed) => {
382
+ const value = from[key];
383
+ if (value === undefined)
384
+ return undefined;
385
+ const fits = type === 'string' ? typeof value === 'string' : typeof value === 'boolean';
386
+ return fits ? undefined : `\`${key}\` must be a ${type}`;
387
+ };
388
+ for (const [key, type] of [
389
+ ['continue', 'boolean'],
390
+ ['suppressOutput', 'boolean'],
391
+ ['stopReason', 'string'],
392
+ ['reason', 'string'],
393
+ ['systemMessage', 'string'],
394
+ ]) {
395
+ const problem = wrongType(key, type);
396
+ if (problem)
397
+ return { invalid: problem };
398
+ }
399
+ if (parsed.decision !== undefined &&
400
+ parsed.decision !== 'approve' &&
401
+ parsed.decision !== 'block') {
402
+ return { invalid: '`decision` must be "approve" or "block"' };
403
+ }
404
+ const reading = {};
405
+ if (parsed.suppressOutput === true)
406
+ reading.suppressOutput = true;
407
+ const systemMessage = optionalString('systemMessage');
408
+ if (systemMessage)
409
+ reading.notice = systemMessage;
410
+ if (parsed.continue === false) {
411
+ reading.halt = {
412
+ reason: optionalString('stopReason') ?? 'Stopped by a hook',
413
+ };
414
+ }
415
+ const reason = optionalString('reason');
416
+ if (parsed.decision === 'block')
417
+ reading.block = reason ?? 'Blocked by hook';
418
+ if (parsed.decision === 'approve')
419
+ reading.permission = { decision: 'allow', ...(reason ? { reason } : {}) };
420
+ const specific = parsed.hookSpecificOutput;
421
+ if (specific === undefined)
422
+ return reading;
423
+ if (!isRecord(specific))
424
+ return { invalid: '`hookSpecificOutput` must be an object' };
425
+ const named = specific.hookEventName;
426
+ if (typeof named !== 'string') {
427
+ return { invalid: '`hookSpecificOutput` is missing its `hookEventName`' };
428
+ }
429
+ if (named !== event && named !== REFERENCE_EVENT_NAMES[event]) {
430
+ return {
431
+ invalid: `\`hookSpecificOutput.hookEventName\` is "${named}" but this hook ran for ${event}`,
432
+ };
433
+ }
434
+ for (const [key, type] of [
435
+ ['permissionDecisionReason', 'string'],
436
+ ['additionalContext', 'string'],
437
+ ]) {
438
+ const problem = wrongType(key, type, specific);
439
+ if (problem)
440
+ return { invalid: `hookSpecificOutput: ${problem}` };
441
+ }
442
+ const additional = optionalString('additionalContext', specific);
443
+ if (additional && additional.trim().length > 0)
444
+ reading.context = additional.trim();
445
+ if (event === 'pre_tool_use') {
446
+ const decision = specific.permissionDecision;
447
+ const why = optionalString('permissionDecisionReason', specific);
448
+ if (decision !== undefined) {
449
+ if (decision === 'deny')
450
+ reading.block = why ?? reason ?? 'Blocked by hook';
451
+ else if (decision === 'allow' || decision === 'ask') {
452
+ reading.permission = { decision, ...(why ? { reason: why } : {}) };
453
+ }
454
+ else if (decision !== 'defer') {
455
+ return {
456
+ invalid: '`permissionDecision` must be "allow", "deny" or "ask"',
457
+ };
458
+ }
459
+ // "defer" hands the decision to a separate permission service the kernel
460
+ // does not have: nothing is decided, and the ordinary rules apply.
461
+ }
462
+ if (specific.updatedInput !== undefined) {
463
+ if (!isRecord(specific.updatedInput))
464
+ return { invalid: '`updatedInput` must be an object' };
465
+ reading.updatedInput = specific.updatedInput;
466
+ }
467
+ }
468
+ if (event === 'permission_request') {
469
+ const decision = specific.decision;
470
+ if (!isRecord(decision)) {
471
+ return {
472
+ invalid: '`decision` must be {"behavior":"allow"} or {"behavior":"deny","message":"..."}',
473
+ };
474
+ }
475
+ if (decision.behavior === 'allow') {
476
+ reading.permission = { decision: 'allow' };
477
+ }
478
+ else if (decision.behavior === 'deny') {
479
+ reading.block = optionalString('message', decision) ?? 'Denied by hook';
480
+ if (decision.interrupt === true)
481
+ reading.halt = { reason: reading.block };
482
+ }
483
+ else {
484
+ return { invalid: '`decision.behavior` must be "allow" or "deny"' };
485
+ }
486
+ }
487
+ return reading;
488
+ }
237
489
  /**
238
490
  * The verdict, from the outcome and the event. Pure apart from the logger,
239
491
  * so the mapping — the part that decides what the model is told — is
@@ -255,42 +507,182 @@ export function shellHookVerdict(event, entry, outcome, log = NOOP_LOGGER) {
255
507
  log.warn('hook timed out', attrs);
256
508
  return { action: 'continue' };
257
509
  }
258
- if (outcome.exitCode === 0) {
510
+ if (outcome.exitCode === 2) {
511
+ const reason = outcome.stderr.trim() || outcome.stdout.trim() || `blocked by hook \`${entry.command}\``;
512
+ switch (event) {
513
+ case 'pre_tool_use':
514
+ case 'user_prompt_submit':
515
+ // Fed back to the model, and the turn goes on: the model is not
516
+ // finished until the hook is satisfied.
517
+ case 'turn_end':
518
+ case 'subagent_stop':
519
+ case 'pre_compact':
520
+ return { action: 'skip', reason };
521
+ // The call has run. What the hook has to say rides with its result.
522
+ case 'post_tool_use':
523
+ case 'post_tool_use_failure':
524
+ return { action: 'continue', context: reason };
525
+ default:
526
+ log.warn('hook returned 2 on an event it cannot block', {
527
+ ...attrs,
528
+ 'namzu.hook.reason': reason,
529
+ });
530
+ return { action: 'continue' };
531
+ }
532
+ }
533
+ if (outcome.exitCode !== 0) {
534
+ log.warn('hook failed', {
535
+ ...attrs,
536
+ 'namzu.hook.exit': outcome.exitCode ?? -1,
537
+ 'namzu.hook.stderr': outcome.stderr.trim().slice(0, 500),
538
+ });
539
+ return { action: 'continue' };
540
+ }
541
+ // Exit 0.
542
+ const text = outcome.stdout.trim();
543
+ const reading = readShellHookJson(event, outcome.stdout);
544
+ if (reading === undefined) {
259
545
  // On the prompt event, what the hook printed is context for the
260
546
  // model — the branch, the time, a ticket. Everywhere else stdout is
261
547
  // the operator's to read and the model's business not at all.
262
- const text = outcome.stdout.trim();
263
548
  if (event === 'user_prompt_submit' && text.length > 0)
264
549
  return { action: 'annotate', text };
265
550
  return { action: 'continue' };
266
551
  }
267
- if (outcome.exitCode === 2) {
268
- const reason = outcome.stderr.trim() || outcome.stdout.trim() || `blocked by hook \`${entry.command}\``;
269
- if (event === 'pre_tool_use' || event === 'user_prompt_submit')
270
- return { action: 'skip', reason };
271
- log.warn('hook returned 2 on an event it cannot block', {
552
+ if (reading.invalid !== undefined) {
553
+ log.warn('hook output ignored', {
272
554
  ...attrs,
273
- 'namzu.hook.reason': reason,
555
+ 'namzu.hook.problem': reading.invalid,
274
556
  });
275
557
  return { action: 'continue' };
276
558
  }
277
- log.warn('hook failed', {
278
- ...attrs,
279
- 'namzu.hook.exit': outcome.exitCode ?? -1,
280
- 'namzu.hook.stderr': outcome.stderr.trim().slice(0, 500),
281
- });
282
- return { action: 'continue' };
559
+ if (!reading.suppressOutput) {
560
+ log.debug('hook output', {
561
+ ...attrs,
562
+ 'namzu.hook.stdout': text.slice(0, 500),
563
+ });
564
+ }
565
+ if (reading.notice) {
566
+ log.warn('hook warning', { ...attrs, 'namzu.hook.notice': reading.notice });
567
+ }
568
+ const notes = {
569
+ ...(reading.context !== undefined ? { context: reading.context } : {}),
570
+ ...(reading.halt !== undefined ? { halt: reading.halt } : {}),
571
+ ...(reading.notice !== undefined ? { notice: reading.notice } : {}),
572
+ };
573
+ switch (event) {
574
+ case 'pre_tool_use': {
575
+ // A stop request also withholds the call: the hook asked for nothing
576
+ // further to happen.
577
+ const block = reading.block ?? reading.halt?.reason;
578
+ if (block !== undefined)
579
+ return { action: 'skip', reason: block, ...notes };
580
+ if (reading.updatedInput !== undefined) {
581
+ return {
582
+ action: 'modify',
583
+ input: reading.updatedInput,
584
+ ...(reading.permission ? { permission: reading.permission } : {}),
585
+ ...notes,
586
+ };
587
+ }
588
+ return {
589
+ action: 'continue',
590
+ ...(reading.permission ? { permission: reading.permission } : {}),
591
+ ...notes,
592
+ };
593
+ }
594
+ case 'user_prompt_submit': {
595
+ const block = reading.block ?? reading.halt?.reason;
596
+ if (block !== undefined)
597
+ return { action: 'skip', reason: block };
598
+ return reading.context !== undefined
599
+ ? { action: 'annotate', text: reading.context }
600
+ : { action: 'continue' };
601
+ }
602
+ case 'post_tool_use':
603
+ case 'post_tool_use_failure': {
604
+ // The call has run, so a "block" cannot undo it: its reason is what the
605
+ // model is told about the result.
606
+ const context = [reading.block, reading.context].filter(Boolean).join('\n');
607
+ return {
608
+ action: 'continue',
609
+ ...(context.length > 0 ? { context } : {}),
610
+ ...(reading.halt ? { halt: reading.halt } : {}),
611
+ ...(reading.notice ? { notice: reading.notice } : {}),
612
+ };
613
+ }
614
+ case 'turn_end':
615
+ case 'subagent_stop': {
616
+ // A stop request outranks keeping the turn going.
617
+ if (reading.halt) {
618
+ return {
619
+ action: 'continue',
620
+ halt: reading.halt,
621
+ ...(reading.notice ? { notice: reading.notice } : {}),
622
+ };
623
+ }
624
+ const feedback = reading.block ?? reading.context;
625
+ return feedback !== undefined
626
+ ? {
627
+ action: 'skip',
628
+ reason: feedback,
629
+ ...(reading.notice ? { notice: reading.notice } : {}),
630
+ }
631
+ : {
632
+ action: 'continue',
633
+ ...(reading.notice ? { notice: reading.notice } : {}),
634
+ };
635
+ }
636
+ case 'pre_compact':
637
+ return reading.block !== undefined
638
+ ? { action: 'skip', reason: reading.block, ...notes }
639
+ : { action: 'continue', ...notes };
640
+ case 'permission_request': {
641
+ if (reading.block !== undefined) {
642
+ return {
643
+ action: 'skip',
644
+ reason: reading.block,
645
+ ...(reading.halt ? { halt: reading.halt } : {}),
646
+ };
647
+ }
648
+ return {
649
+ action: 'continue',
650
+ ...(reading.permission ? { permission: reading.permission } : {}),
651
+ };
652
+ }
653
+ default:
654
+ // Nothing here can be changed by a verdict, but a stop request still
655
+ // can end the turn, and a warning still reaches the operator.
656
+ return {
657
+ action: 'continue',
658
+ ...(reading.halt ? { halt: reading.halt } : {}),
659
+ ...(reading.notice ? { notice: reading.notice } : {}),
660
+ };
661
+ }
283
662
  }
284
663
  /** One entry as a hook definition the lifecycle manager accepts. */
285
664
  export function createShellHook(event, entry, options) {
286
665
  const log = options.log ?? NOOP_LOGGER;
666
+ // `once` is per definition, and a definition is per session: the manager
667
+ // is built for one session and its hooks are attached to it.
668
+ let spent = false;
287
669
  // The shell verdict branches on `event`, but TypeScript cannot retain that
288
670
  // correlation across the async handler closure and the union of events.
289
671
  return {
290
672
  event,
673
+ ...(entry.statusMessage !== undefined ? { statusMessage: entry.statusMessage } : {}),
291
674
  handler: async (context) => {
292
- if (!shellHookMatches(entry.matcher, context.toolName))
675
+ if (spent)
676
+ return { action: 'continue' };
677
+ // A notification is matched on its type; every other event on the tool.
678
+ const subject = event === 'notification' ? context.notification?.type : context.toolName;
679
+ if (!shellHookMatches(entry.matcher, subject))
293
680
  return { action: 'continue' };
681
+ if (!shellHookIfMatches(entry.if, context.toolName, context.toolInput)) {
682
+ return { action: 'continue' };
683
+ }
684
+ if (entry.once === true)
685
+ spent = true;
294
686
  const outcome = await runShellHook(entry, {
295
687
  event,
296
688
  cwd: options.cwd,
@@ -317,6 +709,8 @@ export function createShellHook(event, entry, options) {
317
709
  },
318
710
  }
319
711
  : {}),
712
+ ...(context.notification !== undefined ? { notification: context.notification } : {}),
713
+ ...(context.stopHookActive === true ? { stopHookActive: true } : {}),
320
714
  }, context.signal);
321
715
  return shellHookVerdict(event, entry, outcome, log);
322
716
  },
@@ -324,9 +718,8 @@ export function createShellHook(event, entry, options) {
324
718
  }
325
719
  /**
326
720
  * Register every entry on the manager, in file order within an event. The
327
- * manager runs `post_*` hooks in reverse, as it does for plugins, so a
328
- * formatter registered last runs first after a write. Returns how many were
329
- * attached.
721
+ * manager starts all of an event's hooks together and reads their answers in
722
+ * that order. Returns how many were attached.
330
723
  *
331
724
  * Throws, before registering anything, when the config names a renamed event
332
725
  * (`run_start` and the rest); the message names the event that replaced it.
@@ -1 +1 @@
1
- {"version":3,"file":"shell-hook.js","sourceRoot":"","sources":["../../src/plugin/shell-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAS1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAuB3D,MAAM,CAAC,MAAM,iBAAiB,GAA8B;IAC3D,oBAAoB;IACpB,eAAe;IACf,aAAa;IACb,cAAc;IACd,eAAe;IACf,aAAa;IACb,cAAc;IACd,eAAe;IACf,YAAY;IACZ,UAAU;CACV,CAAA;AAiBD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,qBAAqB,GAAa,UAAU,CAAC,sCAAsC,CAAC,CAAA;AAEjG,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAA;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,GAAG,MAAM,CAAA;AACpD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEnC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,OAA2B,EAC3B,QAA4B;IAE5B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IACzF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QACxC,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAA;IAC1B,CAAC,CAAC,CAAA;AACH,CAAC;AAkCD,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAC3B,KAAqB,EACrB,KAAqB,EACrB,MAAoB;IAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACzB,yBAAyB,EACzB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,6BAA6B,CAAC,CAC7D,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACxC,uEAAuE;IACvE,kDAAkD;IAClD,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,CAAA;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,KAA+B,CAAA;QACnC,IAAI,CAAC;YACJ,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE;gBACrC,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,GAAG,EAAE;oBACJ,GAAG,SAAS;oBACZ,gBAAgB,EAAE,KAAK,CAAC,KAAK;oBAC7B,gBAAgB,EAAE,KAAK,CAAC,SAAS;oBACjC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5E,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE;gBACD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/B,iEAAiE;gBACjE,kEAAkE;gBAClE,+DAA+D;gBAC/D,mEAAmE;gBACnE,mEAAmE;gBACnE,0DAA0D;gBAC1D,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;gBACtC,mEAAmE;gBACnE,8EAA8E;gBAC9E,oCAAoC;gBACpC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC/B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAW,EAAE,CAAC;aACnE,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC;gBACP,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAClE,CAAC,CAAA;YACF,OAAM;QACP,CAAC;QACD,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAC1D,OAAO,CAAC,MAAM,IAAI,iBAAiB;YAClC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAClE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1C,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1C,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,CAAC,OAAyB,EAAE,EAAE;YAC5C,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7C,OAAO,CAAC,OAAO,CAAC,CAAA;QACjB,CAAC,CAAA;QACD,MAAM,QAAQ,GAAG,GAAG,EAAE;YACrB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;oBACnC,OAAM;gBACP,CAAC;gBAAC,MAAM,CAAC;oBACR,6DAA6D;oBAC7D,gDAAgD;gBACjD,CAAC;YACF,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtB,CAAC,CAAA;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,QAAQ,GAAG,IAAI,CAAA;YACf,QAAQ,EAAE,CAAA;QACX,CAAC,EAAE,SAAS,CAAC,CAAA;QACb,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QAChC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC;gBACN,QAAQ,EAAE,IAAI;gBACd,QAAQ;gBACR,MAAM;gBACN,MAAM;gBACN,UAAU,EAAE,KAAK,CAAC,OAAO;aACzB,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,oEAAoE;YACpE,iEAAiE;YACjE,IAAI,QAAQ,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACjC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;gBACvB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;YACxB,CAAC;QACF,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7B,kEAAkE;QACnE,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;AACH,CAAC;AAED,SAAS,MAAM,CAAC,SAAkB;IACjC,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzE,MAAM,MAAM,GAAG,SAAoC,CAAA;IACnD,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IAChE,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,KAAqB,EACrB,KAAqB,EACrB,OAAyB,EACzB,MAAc,WAAW;IAEzB,MAAM,KAAK,GAAG;QACb,kBAAkB,EAAE,KAAK;QACzB,oBAAoB,EAAE,KAAK,CAAC,OAAO;KACnC,CAAA;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,GAAG,KAAK;YACR,kBAAkB,EAAE,OAAO,CAAC,UAAU;SACtC,CAAC,CAAA;QACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACjC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,gEAAgE;QAChE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,KAAK,KAAK,oBAAoB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;QAC1F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,qBAAqB,KAAK,CAAC,OAAO,IAAI,CAAA;QACzF,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,oBAAoB;YAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;QAClC,GAAG,CAAC,IAAI,CAAC,6CAA6C,EAAE;YACvD,GAAG,KAAK;YACR,mBAAmB,EAAE,MAAM;SAC3B,CAAC,CAAA;QACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IAC9B,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QACvB,GAAG,KAAK;QACR,iBAAiB,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;KACxD,CAAC,CAAA;IACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC9B,CAAC;AAQD,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAC9B,KAAqB,EACrB,KAAqB,EACrB,OAAyB;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAA;IACtC,2EAA2E;IAC3E,wEAAwE;IACxE,OAAO;QACN,KAAK;QACL,OAAO,EAAE,KAAK,EAAE,OAA0B,EAAE,EAAE;YAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;YACrF,MAAM,OAAO,GAAG,MAAM,YAAY,CACjC,KAAK,EACL;gBACC,KAAK;gBACL,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;gBACpC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oBACtD,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;gBACN,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;oBACnC,CAAC,CAAC;wBACA,UAAU,EAAE;4BACX,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;4BACnC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;4BACjC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS;gCACzC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gCACrC,CAAC,CAAC,EAAE,CAAC;yBACN;qBACD;oBACF,CAAC,CAAC,EAAE,CAAC;aACN,EACD,OAAO,CAAC,MAAM,CACd,CAAA;YACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;KACuB,CAAA;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC/B,OAAqD,EACrD,KAAuB,EACvB,OAA4D;IAE5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAA;QAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACd,qBAAqB,GAAG,qBAAqB,OAAO,mCAAmC,CACvF,CAAA;QACF,CAAC;IACF,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,qBAAqB,CAAA;IAC1D,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;YACtE,KAAK,IAAI,CAAC,CAAA;QACX,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"shell-hook.js","sourceRoot":"","sources":["../../src/plugin/shell-hook.ts"],"names":[],"mappings":"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"}