@code-yeongyu/senpi 2026.9.12 → 2026.9.13

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 (1562) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +1 -1
  3. package/dist/bun/cli.d.ts +2 -1
  4. package/dist/bun/cli.d.ts.map +1 -1
  5. package/dist/bun/cli.js +5 -8
  6. package/dist/bun/cli.js.map +1 -1
  7. package/dist/bun/runtime-setup.d.ts +2 -0
  8. package/dist/bun/runtime-setup.d.ts.map +1 -0
  9. package/dist/bun/runtime-setup.js +9 -0
  10. package/dist/bun/runtime-setup.js.map +1 -0
  11. package/dist/bun/sandbox-env-setup.d.ts +2 -0
  12. package/dist/bun/sandbox-env-setup.d.ts.map +1 -0
  13. package/dist/bun/sandbox-env-setup.js +4 -0
  14. package/dist/bun/sandbox-env-setup.js.map +1 -0
  15. package/dist/cli/config-selector.d.ts.map +1 -1
  16. package/dist/cli/config-selector.js +2 -1
  17. package/dist/cli/config-selector.js.map +1 -1
  18. package/dist/cli/setup.d.ts +2 -0
  19. package/dist/cli/setup.d.ts.map +1 -0
  20. package/dist/cli/setup.js +12 -0
  21. package/dist/cli/setup.js.map +1 -0
  22. package/dist/cli.js +3 -0
  23. package/dist/cli.js.map +1 -1
  24. package/dist/client/index.d.ts +1 -2
  25. package/dist/client/index.d.ts.map +1 -1
  26. package/dist/client/index.js +1 -2
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/config.d.ts +1 -0
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +1 -0
  31. package/dist/config.js.map +1 -1
  32. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  33. package/dist/core/agent-session-runtime.js +18 -6
  34. package/dist/core/agent-session-runtime.js.map +1 -1
  35. package/dist/core/agent-session.d.ts +54 -17
  36. package/dist/core/agent-session.d.ts.map +1 -1
  37. package/dist/core/agent-session.js +153 -157
  38. package/dist/core/agent-session.js.map +1 -1
  39. package/dist/core/compaction/branch-summarization.d.ts +1 -1
  40. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  41. package/dist/core/compaction/branch-summarization.js +6 -4
  42. package/dist/core/compaction/branch-summarization.js.map +1 -1
  43. package/dist/core/compaction-settings-access.d.ts +18 -2
  44. package/dist/core/compaction-settings-access.d.ts.map +1 -1
  45. package/dist/core/compaction-settings-access.js +35 -4
  46. package/dist/core/compaction-settings-access.js.map +1 -1
  47. package/dist/core/compaction-settings-resolver.d.ts +2 -2
  48. package/dist/core/compaction-settings-resolver.d.ts.map +1 -1
  49. package/dist/core/compaction-settings-resolver.js +6 -3
  50. package/dist/core/compaction-settings-resolver.js.map +1 -1
  51. package/dist/core/cursor-history-admission.d.ts +50 -0
  52. package/dist/core/cursor-history-admission.d.ts.map +1 -0
  53. package/dist/core/cursor-history-admission.js +130 -0
  54. package/dist/core/cursor-history-admission.js.map +1 -0
  55. package/dist/core/extensions/builtin/ask-user/extension.d.ts.map +1 -1
  56. package/dist/core/extensions/builtin/ask-user/extension.js +11 -0
  57. package/dist/core/extensions/builtin/ask-user/extension.js.map +1 -1
  58. package/dist/core/extensions/builtin/ask-user/notify.d.ts +12 -0
  59. package/dist/core/extensions/builtin/ask-user/notify.d.ts.map +1 -0
  60. package/dist/core/extensions/builtin/ask-user/notify.js +8 -0
  61. package/dist/core/extensions/builtin/ask-user/notify.js.map +1 -0
  62. package/dist/core/extensions/builtin/ask-user/resume.d.ts +1 -1
  63. package/dist/core/extensions/builtin/ask-user/resume.d.ts.map +1 -1
  64. package/dist/core/extensions/builtin/ask-user/resume.js +16 -11
  65. package/dist/core/extensions/builtin/ask-user/resume.js.map +1 -1
  66. package/dist/core/extensions/builtin/ask-user/tool.d.ts.map +1 -1
  67. package/dist/core/extensions/builtin/ask-user/tool.js +9 -4
  68. package/dist/core/extensions/builtin/ask-user/tool.js.map +1 -1
  69. package/dist/core/extensions/builtin/cursor-cli-oauth/models.d.ts.map +1 -1
  70. package/dist/core/extensions/builtin/cursor-cli-oauth/models.js +2 -1
  71. package/dist/core/extensions/builtin/cursor-cli-oauth/models.js.map +1 -1
  72. package/dist/core/extensions/builtin/hooks/config-loader.d.ts +2 -0
  73. package/dist/core/extensions/builtin/hooks/config-loader.d.ts.map +1 -1
  74. package/dist/core/extensions/builtin/hooks/config-loader.js +27 -0
  75. package/dist/core/extensions/builtin/hooks/config-loader.js.map +1 -1
  76. package/dist/core/extensions/builtin/hooks/dispatcher.js +1 -0
  77. package/dist/core/extensions/builtin/hooks/dispatcher.js.map +1 -1
  78. package/dist/core/extensions/builtin/hooks/index.d.ts.map +1 -1
  79. package/dist/core/extensions/builtin/hooks/index.js +41 -2
  80. package/dist/core/extensions/builtin/hooks/index.js.map +1 -1
  81. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts +18 -1
  82. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts.map +1 -1
  83. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js +36 -1
  84. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js.map +1 -1
  85. package/dist/core/extensions/builtin/hooks/matcher.js +1 -0
  86. package/dist/core/extensions/builtin/hooks/matcher.js.map +1 -1
  87. package/dist/core/extensions/builtin/hooks/output-parser.js +6 -0
  88. package/dist/core/extensions/builtin/hooks/output-parser.js.map +1 -1
  89. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts +2 -0
  90. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
  91. package/dist/core/extensions/builtin/hooks/trust-storage.js +13 -0
  92. package/dist/core/extensions/builtin/hooks/trust-storage.js.map +1 -1
  93. package/dist/core/extensions/builtin/hooks/types.d.ts +14 -2
  94. package/dist/core/extensions/builtin/hooks/types.d.ts.map +1 -1
  95. package/dist/core/extensions/builtin/hooks/types.js +1 -1
  96. package/dist/core/extensions/builtin/hooks/types.js.map +1 -1
  97. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  98. package/dist/core/extensions/builtin/prompt-preset/presets.js +7 -1
  99. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  100. package/dist/core/extensions/loader.d.ts.map +1 -1
  101. package/dist/core/extensions/loader.js +4 -2
  102. package/dist/core/extensions/loader.js.map +1 -1
  103. package/dist/core/keybindings.d.ts +10 -0
  104. package/dist/core/keybindings.d.ts.map +1 -1
  105. package/dist/core/keybindings.js +8 -0
  106. package/dist/core/keybindings.js.map +1 -1
  107. package/dist/core/messages.d.ts +1 -1
  108. package/dist/core/messages.d.ts.map +1 -1
  109. package/dist/core/messages.js.map +1 -1
  110. package/dist/core/model-registry.d.ts +5 -1
  111. package/dist/core/model-registry.d.ts.map +1 -1
  112. package/dist/core/model-registry.js +8 -0
  113. package/dist/core/model-registry.js.map +1 -1
  114. package/dist/core/model-resolver.d.ts.map +1 -1
  115. package/dist/core/model-resolver.js +2 -0
  116. package/dist/core/model-resolver.js.map +1 -1
  117. package/dist/core/model-runtime.d.ts +1 -0
  118. package/dist/core/model-runtime.d.ts.map +1 -1
  119. package/dist/core/model-runtime.js +5 -2
  120. package/dist/core/model-runtime.js.map +1 -1
  121. package/dist/core/retry-fallback/settings.d.ts +2 -0
  122. package/dist/core/retry-fallback/settings.d.ts.map +1 -1
  123. package/dist/core/retry-fallback/settings.js.map +1 -1
  124. package/dist/core/session-manager.d.ts +5 -2
  125. package/dist/core/session-manager.d.ts.map +1 -1
  126. package/dist/core/session-manager.js +68 -19
  127. package/dist/core/session-manager.js.map +1 -1
  128. package/dist/core/session-write-reservation.d.ts +9 -0
  129. package/dist/core/session-write-reservation.d.ts.map +1 -1
  130. package/dist/core/session-write-reservation.js +33 -0
  131. package/dist/core/session-write-reservation.js.map +1 -1
  132. package/dist/core/settings-manager.d.ts +12 -5
  133. package/dist/core/settings-manager.d.ts.map +1 -1
  134. package/dist/core/settings-manager.js +18 -6
  135. package/dist/core/settings-manager.js.map +1 -1
  136. package/dist/core/settings-public-types.d.ts +1 -1
  137. package/dist/core/settings-public-types.d.ts.map +1 -1
  138. package/dist/core/settings-public-types.js.map +1 -1
  139. package/dist/core/skills.d.ts +1 -1
  140. package/dist/core/skills.d.ts.map +1 -1
  141. package/dist/core/skills.js +6 -2
  142. package/dist/core/skills.js.map +1 -1
  143. package/dist/core/system-prompt.d.ts.map +1 -1
  144. package/dist/core/system-prompt.js +8 -9
  145. package/dist/core/system-prompt.js.map +1 -1
  146. package/dist/core/tools/bash.d.ts.map +1 -1
  147. package/dist/core/tools/bash.js +3 -142
  148. package/dist/core/tools/bash.js.map +1 -1
  149. package/dist/core/tools/edit.d.ts +1 -12
  150. package/dist/core/tools/edit.d.ts.map +1 -1
  151. package/dist/core/tools/edit.js +4 -168
  152. package/dist/core/tools/edit.js.map +1 -1
  153. package/dist/core/tools/find.d.ts.map +1 -1
  154. package/dist/core/tools/find.js +2 -53
  155. package/dist/core/tools/find.js.map +1 -1
  156. package/dist/core/tools/grep.d.ts.map +1 -1
  157. package/dist/core/tools/grep.js +2 -58
  158. package/dist/core/tools/grep.js.map +1 -1
  159. package/dist/core/tools/ls.d.ts.map +1 -1
  160. package/dist/core/tools/ls.js +2 -47
  161. package/dist/core/tools/ls.js.map +1 -1
  162. package/dist/core/tools/read.d.ts +1 -4
  163. package/dist/core/tools/read.d.ts.map +1 -1
  164. package/dist/core/tools/read.js +4 -141
  165. package/dist/core/tools/read.js.map +1 -1
  166. package/dist/core/tools/renderers/bash.d.ts +12 -0
  167. package/dist/core/tools/renderers/bash.d.ts.map +1 -0
  168. package/dist/core/tools/renderers/bash.js +156 -0
  169. package/dist/core/tools/renderers/bash.js.map +1 -0
  170. package/dist/core/tools/renderers/edit.d.ts +23 -0
  171. package/dist/core/tools/renderers/edit.d.ts.map +1 -0
  172. package/dist/core/tools/renderers/edit.js +172 -0
  173. package/dist/core/tools/renderers/edit.js.map +1 -0
  174. package/dist/core/tools/renderers/find.d.ts +10 -0
  175. package/dist/core/tools/renderers/find.d.ts.map +1 -0
  176. package/dist/core/tools/renderers/find.js +64 -0
  177. package/dist/core/tools/renderers/find.js.map +1 -0
  178. package/dist/core/tools/renderers/grep.d.ts +10 -0
  179. package/dist/core/tools/renderers/grep.d.ts.map +1 -0
  180. package/dist/core/tools/renderers/grep.js +69 -0
  181. package/dist/core/tools/renderers/grep.js.map +1 -0
  182. package/dist/core/tools/renderers/index.d.ts +28 -0
  183. package/dist/core/tools/renderers/index.d.ts.map +1 -0
  184. package/dist/core/tools/renderers/index.js +47 -0
  185. package/dist/core/tools/renderers/index.js.map +1 -0
  186. package/dist/core/tools/renderers/ls.d.ts +10 -0
  187. package/dist/core/tools/renderers/ls.d.ts.map +1 -0
  188. package/dist/core/tools/renderers/ls.js +58 -0
  189. package/dist/core/tools/renderers/ls.js.map +1 -0
  190. package/dist/core/tools/renderers/read.d.ts +19 -0
  191. package/dist/core/tools/renderers/read.d.ts.map +1 -0
  192. package/dist/core/tools/renderers/read.js +149 -0
  193. package/dist/core/tools/renderers/read.js.map +1 -0
  194. package/dist/core/tools/renderers/write.d.ts +10 -0
  195. package/dist/core/tools/renderers/write.d.ts.map +1 -0
  196. package/dist/core/tools/renderers/write.js +162 -0
  197. package/dist/core/tools/renderers/write.js.map +1 -0
  198. package/dist/core/tools/write.d.ts.map +1 -1
  199. package/dist/core/tools/write.js +4 -153
  200. package/dist/core/tools/write.js.map +1 -1
  201. package/dist/index.d.ts +2 -2
  202. package/dist/index.d.ts.map +1 -1
  203. package/dist/index.js.map +1 -1
  204. package/dist/migrations.d.ts.map +1 -1
  205. package/dist/migrations.js +2 -2
  206. package/dist/migrations.js.map +1 -1
  207. package/dist/modes/app-server/threads/turn-runtime.d.ts +3 -1
  208. package/dist/modes/app-server/threads/turn-runtime.d.ts.map +1 -1
  209. package/dist/modes/app-server/threads/turn-runtime.js.map +1 -1
  210. package/dist/modes/app-server/threads/turns.js +1 -1
  211. package/dist/modes/app-server/threads/turns.js.map +1 -1
  212. package/dist/modes/app-server/turn-adapter.js +4 -2
  213. package/dist/modes/app-server/turn-adapter.js.map +1 -1
  214. package/dist/modes/interactive/chat-viewport.d.ts +22 -0
  215. package/dist/modes/interactive/chat-viewport.d.ts.map +1 -0
  216. package/dist/modes/interactive/chat-viewport.js +29 -0
  217. package/dist/modes/interactive/chat-viewport.js.map +1 -0
  218. package/dist/modes/interactive/components/ask-user-answer-key.d.ts +14 -0
  219. package/dist/modes/interactive/components/ask-user-answer-key.d.ts.map +1 -0
  220. package/dist/modes/interactive/components/ask-user-answer-key.js +65 -0
  221. package/dist/modes/interactive/components/ask-user-answer-key.js.map +1 -0
  222. package/dist/modes/interactive/components/ask-user-async-widget.d.ts +17 -12
  223. package/dist/modes/interactive/components/ask-user-async-widget.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/ask-user-async-widget.js +47 -23
  225. package/dist/modes/interactive/components/ask-user-async-widget.js.map +1 -1
  226. package/dist/modes/interactive/components/assistant-message.d.ts +7 -0
  227. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/assistant-message.js +26 -2
  229. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  230. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts +4 -0
  231. package/dist/modes/interactive/components/assistant-render-descriptors.d.ts.map +1 -1
  232. package/dist/modes/interactive/components/assistant-render-descriptors.js +8 -5
  233. package/dist/modes/interactive/components/assistant-render-descriptors.js.map +1 -1
  234. package/dist/modes/interactive/components/custom-editor.d.ts +10 -1
  235. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  236. package/dist/modes/interactive/components/custom-editor.js +37 -1
  237. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  238. package/dist/modes/interactive/components/index.d.ts +1 -1
  239. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  240. package/dist/modes/interactive/components/index.js.map +1 -1
  241. package/dist/modes/interactive/components/scoped-models-selector.js +8 -8
  242. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  243. package/dist/modes/interactive/components/status-indicator.d.ts +4 -1
  244. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  245. package/dist/modes/interactive/components/status-indicator.js +14 -2
  246. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  247. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  248. package/dist/modes/interactive/components/thinking-selector.js +4 -4
  249. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  250. package/dist/modes/interactive/components/tool-execution-renderer.d.ts +4 -1
  251. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -1
  252. package/dist/modes/interactive/components/tool-execution-renderer.js +23 -10
  253. package/dist/modes/interactive/components/tool-execution-renderer.js.map +1 -1
  254. package/dist/modes/interactive/components/tool-execution-types.d.ts +18 -2
  255. package/dist/modes/interactive/components/tool-execution-types.d.ts.map +1 -1
  256. package/dist/modes/interactive/components/tool-execution-types.js.map +1 -1
  257. package/dist/modes/interactive/components/tool-execution.d.ts +3 -3
  258. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  259. package/dist/modes/interactive/components/tool-execution.js +5 -0
  260. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  261. package/dist/modes/interactive/interactive-mode.d.ts +10 -15
  262. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  263. package/dist/modes/interactive/interactive-mode.js +178 -138
  264. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  265. package/dist/modes/interactive/theme/dark.json +2 -1
  266. package/dist/modes/interactive/theme/grok-day.json +2 -1
  267. package/dist/modes/interactive/theme/grok-night.json +2 -1
  268. package/dist/modes/interactive/theme/light.json +2 -1
  269. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -0
  270. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  271. package/dist/modes/interactive/theme/theme-controller.js +5 -0
  272. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  273. package/dist/modes/interactive/theme/theme-json.d.ts +84 -0
  274. package/dist/modes/interactive/theme/theme-json.d.ts.map +1 -0
  275. package/dist/modes/interactive/theme/theme-json.js +130 -0
  276. package/dist/modes/interactive/theme/theme-json.js.map +1 -0
  277. package/dist/modes/interactive/theme/theme-schema.json +6 -2
  278. package/dist/modes/interactive/theme/theme.d.ts +10 -5
  279. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  280. package/dist/modes/interactive/theme/theme.js +14 -117
  281. package/dist/modes/interactive/theme/theme.js.map +1 -1
  282. package/dist/modes/interactive/tips/catalog/input-tips.d.ts +5 -0
  283. package/dist/modes/interactive/tips/catalog/input-tips.d.ts.map +1 -1
  284. package/dist/modes/interactive/tips/catalog/input-tips.js +5 -0
  285. package/dist/modes/interactive/tips/catalog/input-tips.js.map +1 -1
  286. package/dist/modes/interactive/tui-renderer.d.ts +21 -0
  287. package/dist/modes/interactive/tui-renderer.d.ts.map +1 -0
  288. package/dist/modes/interactive/tui-renderer.js +67 -0
  289. package/dist/modes/interactive/tui-renderer.js.map +1 -0
  290. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  291. package/dist/modes/rpc/connection-handler.js +8 -2
  292. package/dist/modes/rpc/connection-handler.js.map +1 -1
  293. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  294. package/dist/modes/rpc/rpc-client.js +11 -1
  295. package/dist/modes/rpc/rpc-client.js.map +1 -1
  296. package/dist/modes/rpc/rpc-types.d.ts +2 -1
  297. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  298. package/dist/modes/rpc/rpc-types.js +1 -0
  299. package/dist/modes/rpc/rpc-types.js.map +1 -1
  300. package/dist/modes/rpc/session-path-reservations.d.ts +30 -0
  301. package/dist/modes/rpc/session-path-reservations.d.ts.map +1 -0
  302. package/dist/modes/rpc/session-path-reservations.js +58 -0
  303. package/dist/modes/rpc/session-path-reservations.js.map +1 -0
  304. package/dist/modes/rpc/session-registry.d.ts +3 -1
  305. package/dist/modes/rpc/session-registry.d.ts.map +1 -1
  306. package/dist/modes/rpc/session-registry.js.map +1 -1
  307. package/dist/modes/rpc/session-worker-client.d.ts +10 -8
  308. package/dist/modes/rpc/session-worker-client.d.ts.map +1 -1
  309. package/dist/modes/rpc/session-worker-client.js +14 -23
  310. package/dist/modes/rpc/session-worker-client.js.map +1 -1
  311. package/dist/modes/rpc/session-worker-credit.d.ts +17 -0
  312. package/dist/modes/rpc/session-worker-credit.d.ts.map +1 -0
  313. package/dist/modes/rpc/session-worker-credit.js +39 -0
  314. package/dist/modes/rpc/session-worker-credit.js.map +1 -0
  315. package/dist/modes/rpc/session-worker-protocol.d.ts +10 -0
  316. package/dist/modes/rpc/session-worker-protocol.d.ts.map +1 -1
  317. package/dist/modes/rpc/session-worker-protocol.js +2 -0
  318. package/dist/modes/rpc/session-worker-protocol.js.map +1 -1
  319. package/dist/modes/rpc/session-worker-signals.d.ts +7 -0
  320. package/dist/modes/rpc/session-worker-signals.d.ts.map +1 -0
  321. package/dist/modes/rpc/session-worker-signals.js +19 -0
  322. package/dist/modes/rpc/session-worker-signals.js.map +1 -0
  323. package/dist/modes/rpc/session-worker.js +12 -16
  324. package/dist/modes/rpc/session-worker.js.map +1 -1
  325. package/dist/modes/rpc/worker-session-registry.d.ts +12 -0
  326. package/dist/modes/rpc/worker-session-registry.d.ts.map +1 -1
  327. package/dist/modes/rpc/worker-session-registry.js +51 -24
  328. package/dist/modes/rpc/worker-session-registry.js.map +1 -1
  329. package/dist/senpi +3 -0
  330. package/dist/utils/clipboard-command.d.ts +7 -0
  331. package/dist/utils/clipboard-command.d.ts.map +1 -0
  332. package/dist/utils/clipboard-command.js +45 -0
  333. package/dist/utils/clipboard-command.js.map +1 -0
  334. package/dist/utils/clipboard-image.d.ts.map +1 -1
  335. package/dist/utils/clipboard-image.js +52 -69
  336. package/dist/utils/clipboard-image.js.map +1 -1
  337. package/dist/utils/clipboard.d.ts.map +1 -1
  338. package/dist/utils/clipboard.js +49 -126
  339. package/dist/utils/clipboard.js.map +1 -1
  340. package/dist/utils/exif-orientation.d.ts.map +1 -1
  341. package/dist/utils/exif-orientation.js +2 -3
  342. package/dist/utils/exif-orientation.js.map +1 -1
  343. package/dist/utils/tools-manager.d.ts +1 -0
  344. package/dist/utils/tools-manager.d.ts.map +1 -1
  345. package/dist/utils/tools-manager.js +41 -19
  346. package/dist/utils/tools-manager.js.map +1 -1
  347. package/docs/compaction.md +39 -13
  348. package/docs/containerization.md +45 -0
  349. package/docs/development.md +19 -0
  350. package/docs/docs.json +4 -0
  351. package/docs/environment-variables.md +2 -0
  352. package/docs/extensions.md +21 -10
  353. package/docs/keybindings.md +7 -2
  354. package/docs/models.md +1 -1
  355. package/docs/providers.md +1 -1
  356. package/docs/rpc.md +16 -8
  357. package/docs/sdk.md +7 -0
  358. package/docs/session-format.md +52 -38
  359. package/docs/settings.md +40 -4
  360. package/docs/skills.md +1 -1
  361. package/docs/termux.md +0 -1
  362. package/docs/themes.md +8 -6
  363. package/docs/tui.md +22 -3
  364. package/examples/README.md +3 -0
  365. package/examples/extensions/dynamic-resources/dynamic.json +2 -0
  366. package/examples/plugins/pi-example-plugin/README.md +38 -0
  367. package/examples/plugins/pi-example-plugin/package.json +10 -0
  368. package/examples/plugins/pi-example-plugin/src/contract.ts +13 -0
  369. package/examples/plugins/pi-example-plugin/src/session.ts +23 -0
  370. package/examples/plugins/pi-example-plugin/src/tui.ts +31 -0
  371. package/node_modules/@aws-sdk/client-bedrock-runtime/dist-cjs/index.js +1 -1
  372. package/node_modules/@aws-sdk/client-bedrock-runtime/package.json +3 -3
  373. package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +5 -0
  374. package/node_modules/@aws-sdk/core/dist-es/submodules/util/hasOwn.js +3 -0
  375. package/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js +1 -0
  376. package/node_modules/@aws-sdk/core/dist-types/submodules/util/hasOwn.d.ts +4 -0
  377. package/node_modules/@aws-sdk/core/dist-types/submodules/util/index.d.ts +1 -0
  378. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/hasOwn.d.ts +1 -0
  379. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/index.d.ts +1 -0
  380. package/node_modules/@aws-sdk/core/package.json +1 -1
  381. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  382. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  383. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  384. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  385. package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +2 -0
  386. package/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js +2 -0
  387. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  388. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  389. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/LICENSE +201 -0
  390. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/README.md +62 -0
  391. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +158 -0
  392. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/constants.js +2 -0
  393. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js +16 -0
  394. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js +84 -0
  395. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js +8 -0
  396. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js +11 -0
  397. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js +10 -0
  398. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/index.js +4 -0
  399. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js +5 -0
  400. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js +7 -0
  401. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js +7 -0
  402. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js +8 -0
  403. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts +8 -0
  404. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts +18 -0
  405. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts +12 -0
  406. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts +9 -0
  407. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts +8 -0
  408. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts +7 -0
  409. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts +7 -0
  410. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts +18 -0
  411. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts +3 -0
  412. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts +8 -0
  413. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts +10 -0
  414. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts +5 -0
  415. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts +9 -0
  416. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts +7 -0
  417. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts +7 -0
  418. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts +3 -0
  419. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts +2 -0
  420. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts +1 -0
  421. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts +2 -0
  422. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts +5 -0
  423. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts +4 -0
  424. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts +5 -0
  425. package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +69 -0
  426. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  427. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  428. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  429. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  430. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  431. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  432. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  433. package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
  434. package/node_modules/@aws-sdk/token-providers/package.json +1 -1
  435. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +36 -0
  436. package/node_modules/@code-yeongyu/senpi-codemode/package.json +5 -5
  437. package/node_modules/@earendil-works/chord/README.md +205 -0
  438. package/node_modules/@earendil-works/chord/dist/api.d.ts +15 -0
  439. package/node_modules/@earendil-works/chord/dist/api.d.ts.map +1 -0
  440. package/node_modules/@earendil-works/chord/dist/api.js +72 -0
  441. package/node_modules/@earendil-works/chord/dist/api.js.map +1 -0
  442. package/node_modules/@earendil-works/chord/dist/bundler.d.ts +6 -0
  443. package/node_modules/@earendil-works/chord/dist/bundler.d.ts.map +1 -0
  444. package/node_modules/@earendil-works/chord/dist/bundler.js +3 -0
  445. package/node_modules/@earendil-works/chord/dist/bundler.js.map +1 -0
  446. package/node_modules/@earendil-works/chord/dist/context/index.d.ts +24 -0
  447. package/node_modules/@earendil-works/chord/dist/context/index.d.ts.map +1 -0
  448. package/node_modules/@earendil-works/chord/dist/context/index.js +97 -0
  449. package/node_modules/@earendil-works/chord/dist/context/index.js.map +1 -0
  450. package/node_modules/@earendil-works/chord/dist/delta/index.d.ts +119 -0
  451. package/node_modules/@earendil-works/chord/dist/delta/index.d.ts.map +1 -0
  452. package/node_modules/@earendil-works/chord/dist/delta/index.js +1209 -0
  453. package/node_modules/@earendil-works/chord/dist/delta/index.js.map +1 -0
  454. package/node_modules/@earendil-works/chord/dist/facets/host.d.ts +12 -0
  455. package/node_modules/@earendil-works/chord/dist/facets/host.d.ts.map +1 -0
  456. package/node_modules/@earendil-works/chord/dist/facets/host.js +762 -0
  457. package/node_modules/@earendil-works/chord/dist/facets/host.js.map +1 -0
  458. package/node_modules/@earendil-works/chord/dist/facets/loader.d.ts +3 -0
  459. package/node_modules/@earendil-works/chord/dist/facets/loader.d.ts.map +1 -0
  460. package/node_modules/@earendil-works/chord/dist/facets/loader.js +5 -0
  461. package/node_modules/@earendil-works/chord/dist/facets/loader.js.map +1 -0
  462. package/node_modules/@earendil-works/chord/dist/index.d.ts +11 -0
  463. package/node_modules/@earendil-works/chord/dist/index.d.ts.map +1 -0
  464. package/node_modules/@earendil-works/chord/dist/index.js +10 -0
  465. package/node_modules/@earendil-works/chord/dist/index.js.map +1 -0
  466. package/node_modules/@earendil-works/chord/dist/json.d.ts +4 -0
  467. package/node_modules/@earendil-works/chord/dist/json.d.ts.map +1 -0
  468. package/node_modules/@earendil-works/chord/dist/json.js +57 -0
  469. package/node_modules/@earendil-works/chord/dist/json.js.map +1 -0
  470. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.d.ts +30 -0
  471. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.d.ts.map +1 -0
  472. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.js +377 -0
  473. package/node_modules/@earendil-works/chord/dist/node/bundle-loader.js.map +1 -0
  474. package/node_modules/@earendil-works/chord/dist/node/bundle.d.ts +26 -0
  475. package/node_modules/@earendil-works/chord/dist/node/bundle.d.ts.map +1 -0
  476. package/node_modules/@earendil-works/chord/dist/node/bundle.js +183 -0
  477. package/node_modules/@earendil-works/chord/dist/node/bundle.js.map +1 -0
  478. package/node_modules/@earendil-works/chord/dist/node/manifest.d.ts +36 -0
  479. package/node_modules/@earendil-works/chord/dist/node/manifest.d.ts.map +1 -0
  480. package/node_modules/@earendil-works/chord/dist/node/manifest.js +6 -0
  481. package/node_modules/@earendil-works/chord/dist/node/manifest.js.map +1 -0
  482. package/node_modules/@earendil-works/chord/dist/node/package.d.ts +15 -0
  483. package/node_modules/@earendil-works/chord/dist/node/package.d.ts.map +1 -0
  484. package/node_modules/@earendil-works/chord/dist/node/package.js +199 -0
  485. package/node_modules/@earendil-works/chord/dist/node/package.js.map +1 -0
  486. package/node_modules/@earendil-works/chord/dist/node.d.ts +5 -0
  487. package/node_modules/@earendil-works/chord/dist/node.d.ts.map +1 -0
  488. package/node_modules/@earendil-works/chord/dist/node.js +3 -0
  489. package/node_modules/@earendil-works/chord/dist/node.js.map +1 -0
  490. package/node_modules/@earendil-works/chord/dist/services/consumer.d.ts +11 -0
  491. package/node_modules/@earendil-works/chord/dist/services/consumer.d.ts.map +1 -0
  492. package/node_modules/@earendil-works/chord/dist/services/consumer.js +535 -0
  493. package/node_modules/@earendil-works/chord/dist/services/consumer.js.map +1 -0
  494. package/node_modules/@earendil-works/chord/dist/services/errors.d.ts +8 -0
  495. package/node_modules/@earendil-works/chord/dist/services/errors.d.ts.map +1 -0
  496. package/node_modules/@earendil-works/chord/dist/services/errors.js +21 -0
  497. package/node_modules/@earendil-works/chord/dist/services/errors.js.map +1 -0
  498. package/node_modules/@earendil-works/chord/dist/services/handle.d.ts +15 -0
  499. package/node_modules/@earendil-works/chord/dist/services/handle.d.ts.map +1 -0
  500. package/node_modules/@earendil-works/chord/dist/services/handle.js +99 -0
  501. package/node_modules/@earendil-works/chord/dist/services/handle.js.map +1 -0
  502. package/node_modules/@earendil-works/chord/dist/services/instances.d.ts +25 -0
  503. package/node_modules/@earendil-works/chord/dist/services/instances.d.ts.map +1 -0
  504. package/node_modules/@earendil-works/chord/dist/services/instances.js +137 -0
  505. package/node_modules/@earendil-works/chord/dist/services/instances.js.map +1 -0
  506. package/node_modules/@earendil-works/chord/dist/services/loopback.d.ts +5 -0
  507. package/node_modules/@earendil-works/chord/dist/services/loopback.d.ts.map +1 -0
  508. package/node_modules/@earendil-works/chord/dist/services/loopback.js +15 -0
  509. package/node_modules/@earendil-works/chord/dist/services/loopback.js.map +1 -0
  510. package/node_modules/@earendil-works/chord/dist/services/provider.d.ts +37 -0
  511. package/node_modules/@earendil-works/chord/dist/services/provider.d.ts.map +1 -0
  512. package/node_modules/@earendil-works/chord/dist/services/provider.js +472 -0
  513. package/node_modules/@earendil-works/chord/dist/services/provider.js.map +1 -0
  514. package/node_modules/@earendil-works/chord/dist/services/state-codec.d.ts +15 -0
  515. package/node_modules/@earendil-works/chord/dist/services/state-codec.d.ts.map +1 -0
  516. package/node_modules/@earendil-works/chord/dist/services/state-codec.js +115 -0
  517. package/node_modules/@earendil-works/chord/dist/services/state-codec.js.map +1 -0
  518. package/node_modules/@earendil-works/chord/dist/services/state-internals.d.ts +11 -0
  519. package/node_modules/@earendil-works/chord/dist/services/state-internals.d.ts.map +1 -0
  520. package/node_modules/@earendil-works/chord/dist/services/state-internals.js +10 -0
  521. package/node_modules/@earendil-works/chord/dist/services/state-internals.js.map +1 -0
  522. package/node_modules/@earendil-works/chord/dist/services/state.d.ts +23 -0
  523. package/node_modules/@earendil-works/chord/dist/services/state.d.ts.map +1 -0
  524. package/node_modules/@earendil-works/chord/dist/services/state.js +124 -0
  525. package/node_modules/@earendil-works/chord/dist/services/state.js.map +1 -0
  526. package/node_modules/@earendil-works/chord/dist/services/wire.d.ts +60 -0
  527. package/node_modules/@earendil-works/chord/dist/services/wire.d.ts.map +1 -0
  528. package/node_modules/@earendil-works/chord/dist/services/wire.js +173 -0
  529. package/node_modules/@earendil-works/chord/dist/services/wire.js.map +1 -0
  530. package/node_modules/@earendil-works/chord/dist/types.d.ts +203 -0
  531. package/node_modules/@earendil-works/chord/dist/types.d.ts.map +1 -0
  532. package/node_modules/@earendil-works/chord/dist/types.js +2 -0
  533. package/node_modules/@earendil-works/chord/dist/types.js.map +1 -0
  534. package/node_modules/@earendil-works/chord/package.json +73 -0
  535. package/node_modules/@earendil-works/pi-agent-core/README.md +4 -0
  536. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +639 -384
  537. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  538. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +5 -250
  539. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  540. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +12 -6
  541. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  542. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +33 -27
  543. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  544. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +30 -8
  545. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  546. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +53 -64
  547. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  548. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.d.ts +9 -0
  549. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.d.ts.map +1 -0
  550. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.js +35 -0
  551. package/node_modules/@earendil-works/pi-agent-core/dist/harness/config.js.map +1 -0
  552. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.d.ts +9 -0
  553. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.d.ts.map +1 -0
  554. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.js +13 -0
  555. package/node_modules/@earendil-works/pi-agent-core/dist/harness/context.js.map +1 -0
  556. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +25 -28
  557. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  558. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +368 -125
  559. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  560. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts +20 -38
  561. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.d.ts.map +1 -1
  562. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.js +233 -55
  563. package/node_modules/@earendil-works/pi-agent-core/dist/harness/events.js.map +1 -1
  564. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.d.ts +42 -0
  565. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.d.ts.map +1 -0
  566. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.js +82 -0
  567. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/assistant.js.map +1 -0
  568. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.d.ts +22 -0
  569. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.d.ts.map +1 -0
  570. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.js +48 -0
  571. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/effect-gate.js.map +1 -0
  572. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.d.ts +67 -0
  573. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.d.ts.map +1 -0
  574. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.js +121 -0
  575. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution/tools.js.map +1 -0
  576. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.d.ts +38 -0
  577. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.d.ts.map +1 -0
  578. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.js +404 -0
  579. package/node_modules/@earendil-works/pi-agent-core/dist/harness/hooks.js.map +1 -0
  580. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +2 -2
  581. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  582. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  583. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts +3 -2
  584. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  585. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js +17 -17
  586. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  587. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts +93 -0
  588. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.d.ts.map +1 -1
  589. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js +39 -0
  590. package/node_modules/@earendil-works/pi-agent-core/dist/harness/result.js.map +1 -1
  591. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.d.ts +28 -0
  592. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.d.ts.map +1 -0
  593. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.js +173 -0
  594. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/boundary.js.map +1 -0
  595. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.d.ts +8 -0
  596. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.d.ts.map +1 -0
  597. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.js +133 -0
  598. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/checkpoint.js.map +1 -0
  599. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.d.ts +15 -0
  600. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.d.ts.map +1 -0
  601. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.js +179 -0
  602. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/deferred.js.map +1 -0
  603. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.d.ts +8 -0
  604. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.d.ts.map +1 -0
  605. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.js +205 -0
  606. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/generation.js.map +1 -0
  607. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.d.ts +5 -0
  608. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.d.ts.map +1 -0
  609. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.js +140 -0
  610. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/reconcile.js.map +1 -0
  611. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.d.ts +8 -0
  612. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.d.ts.map +1 -0
  613. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.js +85 -0
  614. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/recovery.js.map +1 -0
  615. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.d.ts +23 -0
  616. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.d.ts.map +1 -0
  617. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.js +394 -0
  618. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/response.js.map +1 -0
  619. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.d.ts +4 -0
  620. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.d.ts.map +1 -0
  621. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.js +34 -0
  622. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/retry.js.map +1 -0
  623. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.d.ts +32 -0
  624. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.d.ts.map +1 -0
  625. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.js +929 -0
  626. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/structural.js.map +1 -0
  627. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.d.ts +7 -0
  628. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.d.ts.map +1 -0
  629. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.js +49 -0
  630. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/terminal.js.map +1 -0
  631. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.d.ts +14 -0
  632. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.d.ts.map +1 -0
  633. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.js +244 -0
  634. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tool-placement.js.map +1 -0
  635. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.d.ts +6 -0
  636. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.d.ts.map +1 -0
  637. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.js +449 -0
  638. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive/tools.js.map +1 -0
  639. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.d.ts +6 -0
  640. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.d.ts.map +1 -0
  641. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.js +93 -0
  642. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/drive.js.map +1 -0
  643. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.d.ts +59 -0
  644. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.d.ts.map +1 -0
  645. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.js +302 -0
  646. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/harness.js.map +1 -0
  647. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.d.ts +2 -0
  648. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.d.ts.map +1 -0
  649. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.js +2 -0
  650. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/index.js.map +1 -0
  651. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.d.ts +118 -0
  652. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.d.ts.map +1 -0
  653. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.js +1559 -0
  654. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/lane.js.map +1 -0
  655. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.d.ts +15 -0
  656. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.d.ts.map +1 -0
  657. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.js +66 -0
  658. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/progress.js.map +1 -0
  659. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.d.ts +5 -0
  660. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.d.ts.map +1 -0
  661. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.js +240 -0
  662. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/reducer.js.map +1 -0
  663. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.d.ts +24 -0
  664. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.d.ts.map +1 -0
  665. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.js +117 -0
  666. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/restore.js.map +1 -0
  667. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.d.ts +21 -0
  668. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.d.ts.map +1 -0
  669. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.js +72 -0
  670. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/transcript.js.map +1 -0
  671. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.d.ts +105 -0
  672. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.d.ts.map +1 -0
  673. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.js +50 -0
  674. package/node_modules/@earendil-works/pi-agent-core/dist/harness/runtime/types.js.map +1 -0
  675. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.d.ts +53 -0
  676. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.d.ts.map +1 -0
  677. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.js +57 -0
  678. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/commit.js.map +1 -0
  679. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts +6 -19
  680. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.d.ts.map +1 -1
  681. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js +31 -53
  682. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/context.js.map +1 -1
  683. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.d.ts +21 -0
  684. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.d.ts.map +1 -0
  685. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.js +55 -0
  686. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork-policy.js.map +1 -0
  687. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.d.ts +16 -0
  688. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.d.ts.map +1 -0
  689. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.js +79 -0
  690. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/fork.js.map +1 -0
  691. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.d.ts +39 -0
  692. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.d.ts.map +1 -0
  693. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.js +269 -0
  694. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/in-memory-storage-state.js.map +1 -0
  695. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts +9 -5
  696. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.d.ts.map +1 -1
  697. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js +7 -4
  698. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/index.js.map +1 -1
  699. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts +19 -8
  700. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.d.ts.map +1 -1
  701. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js +34 -219
  702. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/codec.js.map +1 -1
  703. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.d.ts +38 -0
  704. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.d.ts.map +1 -0
  705. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.js +266 -0
  706. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/fork.js.map +1 -0
  707. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.d.ts +4 -0
  708. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.d.ts.map +1 -0
  709. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.js +4 -0
  710. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/index.js.map +1 -0
  711. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.d.ts +14 -0
  712. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.d.ts.map +1 -0
  713. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.js +86 -0
  714. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/io.js.map +1 -0
  715. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.d.ts +44 -0
  716. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.d.ts.map +1 -0
  717. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.js +454 -0
  718. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/legacy-v3.js.map +1 -0
  719. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts +27 -24
  720. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.d.ts.map +1 -1
  721. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js +276 -151
  722. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/repo.js.map +1 -1
  723. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts +39 -41
  724. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.d.ts.map +1 -1
  725. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js +175 -196
  726. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/storage.js.map +1 -1
  727. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts +23 -22
  728. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.d.ts.map +1 -1
  729. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js +2 -1
  730. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/types.js.map +1 -1
  731. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts +44 -40
  732. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.d.ts.map +1 -1
  733. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js +333 -115
  734. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory.js.map +1 -1
  735. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.d.ts +8 -0
  736. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.d.ts.map +1 -0
  737. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.js +22 -0
  738. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/mutation-line.js.map +1 -0
  739. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +78 -51
  740. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  741. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +327 -207
  742. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  743. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.d.ts +12 -0
  744. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.d.ts.map +1 -0
  745. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.js +24 -0
  746. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/datasets.js.map +1 -0
  747. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.d.ts +42 -0
  748. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.d.ts.map +1 -0
  749. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.js +127 -0
  750. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/session-repo.js.map +1 -0
  751. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.d.ts +25 -0
  752. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.d.ts.map +1 -0
  753. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.js +114 -0
  754. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/benchmark/storage.js.map +1 -0
  755. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.d.ts +23 -0
  756. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.d.ts.map +1 -0
  757. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.js +809 -0
  758. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/session-repo.js.map +1 -0
  759. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.d.ts +4 -0
  760. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.d.ts.map +1 -0
  761. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.js +600 -0
  762. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance/storage.js.map +1 -0
  763. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.d.ts +26 -0
  764. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.d.ts.map +1 -0
  765. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.js +103 -0
  766. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/gating-storage.js.map +1 -0
  767. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts +9 -2
  768. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.d.ts.map +1 -1
  769. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js +8 -1
  770. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/index.js.map +1 -1
  771. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.d.ts +11 -0
  772. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.d.ts.map +1 -0
  773. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.js +19 -0
  774. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/instrumented-storage.js.map +1 -0
  775. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.d.ts +20 -0
  776. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.d.ts.map +1 -0
  777. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.js +40 -0
  778. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/storage-decorator.js.map +1 -0
  779. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts +5 -7
  780. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.d.ts.map +1 -1
  781. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/types.js.map +1 -1
  782. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts +425 -265
  783. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.d.ts.map +1 -1
  784. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js +7 -7
  785. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/types.js.map +1 -1
  786. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.d.ts +95 -0
  787. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.d.ts.map +1 -0
  788. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.js +81 -0
  789. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/values.js.map +1 -0
  790. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts +3 -2
  791. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  792. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js +29 -26
  793. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  794. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts +64 -43
  795. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.d.ts.map +1 -1
  796. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js +45 -26
  797. package/node_modules/@earendil-works/pi-agent-core/dist/harness/telemetry.js.map +1 -1
  798. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts +4 -4
  799. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts.map +1 -1
  800. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js +66 -93
  801. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js.map +1 -1
  802. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.d.ts.map +1 -1
  803. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js +17 -13
  804. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js.map +1 -1
  805. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts +2 -1
  806. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts.map +1 -1
  807. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js +5 -5
  808. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js.map +1 -1
  809. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts +3 -2
  810. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts.map +1 -1
  811. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js +5 -5
  812. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js.map +1 -1
  813. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts +2 -1
  814. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts.map +1 -1
  815. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js +4 -6
  816. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js.map +1 -1
  817. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.d.ts.map +1 -1
  818. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +12 -8
  819. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js.map +1 -1
  820. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +128 -45
  821. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  822. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  823. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.d.ts +24 -0
  824. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.d.ts.map +1 -0
  825. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.js +79 -0
  826. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/adaptive-publisher.js.map +1 -0
  827. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.d.ts +31 -0
  828. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.d.ts.map +1 -0
  829. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.js +217 -0
  830. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/output-capture.js.map +1 -0
  831. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +19 -5
  832. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  833. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +65 -192
  834. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  835. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts +1 -0
  836. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts.map +1 -1
  837. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js +1 -1
  838. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  839. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.d.ts +4 -0
  840. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.d.ts.map +1 -0
  841. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.js +33 -0
  842. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/usage.js.map +1 -0
  843. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +4 -1
  844. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  845. package/node_modules/@earendil-works/pi-agent-core/dist/index.js +3 -6
  846. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  847. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.d.ts +24 -16
  848. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.d.ts.map +1 -1
  849. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.js +1 -1
  850. package/node_modules/@earendil-works/pi-agent-core/dist/search/index.js.map +1 -1
  851. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +2 -0
  852. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  853. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  854. package/node_modules/@earendil-works/pi-agent-core/package.json +27 -6
  855. package/node_modules/@earendil-works/pi-ai/README.md +39 -4
  856. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  857. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +8 -1
  858. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  859. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.d.ts +77 -0
  860. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.d.ts.map +1 -0
  861. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.js +72 -0
  862. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-ai-binding.js.map +1 -0
  863. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts +11 -0
  864. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.d.ts.map +1 -1
  865. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js +18 -0
  866. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent/measure.js.map +1 -1
  867. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts +1 -1
  868. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.d.ts.map +1 -1
  869. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +5 -1
  870. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  871. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +4 -1
  872. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  873. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  874. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +6 -3
  875. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  876. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  877. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +4 -1
  878. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  879. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  880. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +13 -3
  881. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  882. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.d.ts +32 -0
  883. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.d.ts.map +1 -0
  884. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.js +62 -0
  885. package/node_modules/@earendil-works/pi-ai/dist/cursor/context-limit-store.js.map +1 -0
  886. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.d.ts.map +1 -1
  887. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.js +2 -1
  888. package/node_modules/@earendil-works/pi-ai/dist/cursor/store-migration.js.map +1 -1
  889. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +2 -1
  890. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  891. package/node_modules/@earendil-works/pi-ai/dist/index.js +2 -1
  892. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  893. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +1 -0
  894. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  895. package/node_modules/@earendil-works/pi-ai/dist/models.js +5 -2
  896. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  897. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts +1 -1
  898. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts.map +1 -1
  899. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js.map +1 -1
  900. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  901. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js +4 -0
  902. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  903. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.d.ts.map +1 -1
  904. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js +2 -1
  905. package/node_modules/@earendil-works/pi-ai/dist/providers/cursor.js.map +1 -1
  906. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  907. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  908. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  909. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  910. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  911. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  912. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  913. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  914. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -1
  915. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-individual.json +1 -1
  916. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -1
  917. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  918. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xai.json +1 -1
  919. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js +5 -5
  920. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  921. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.d.ts.map +1 -1
  922. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js +4 -3
  923. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.js.map +1 -1
  924. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.d.ts +4 -0
  925. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.d.ts.map +1 -0
  926. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.js +22 -0
  927. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-headers.js.map +1 -0
  928. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.d.ts.map +1 -1
  929. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.js +5 -4
  930. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.js.map +1 -1
  931. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +16 -6
  932. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  933. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  934. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.d.ts +77 -0
  935. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.d.ts.map +1 -0
  936. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.js +427 -0
  937. package/node_modules/@earendil-works/pi-ai/dist/utils/assistant-message-frame.js.map +1 -0
  938. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.d.ts +12 -0
  939. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.d.ts.map +1 -0
  940. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.js +93 -0
  941. package/node_modules/@earendil-works/pi-ai/dist/utils/cursor-context-limit.js.map +1 -0
  942. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  943. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +25 -5
  944. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
  945. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +1 -1
  946. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  947. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js +5 -1
  948. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  949. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.d.ts +10 -1
  950. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.d.ts.map +1 -1
  951. package/node_modules/@earendil-works/pi-ai/dist/utils/retry-profile/types.js.map +1 -1
  952. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts +13 -2
  953. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  954. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +18 -7
  955. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  956. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts +2 -2
  957. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts.map +1 -1
  958. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.js +36 -31
  959. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.js.map +1 -1
  960. package/node_modules/@earendil-works/pi-ai/package.json +6 -6
  961. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  962. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  963. package/node_modules/@earendil-works/pi-tui/README.md +53 -4
  964. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts +21 -1
  965. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.d.ts.map +1 -1
  966. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.js +199 -42
  967. package/node_modules/@earendil-works/pi-tui/dist/alt-screen-search.js.map +1 -1
  968. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +3 -1
  969. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  970. package/node_modules/@earendil-works/pi-tui/dist/components/box.js +28 -0
  971. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +1 -1
  972. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
  973. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  974. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +98 -18
  975. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  976. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +12 -1
  977. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  978. package/node_modules/@earendil-works/pi-tui/dist/components/input.js +40 -6
  979. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  980. package/node_modules/@earendil-works/pi-tui/dist/components/latex.d.ts.map +1 -1
  981. package/node_modules/@earendil-works/pi-tui/dist/components/latex.js +7 -0
  982. package/node_modules/@earendil-works/pi-tui/dist/components/latex.js.map +1 -1
  983. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +3 -0
  984. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  985. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +20 -8
  986. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  987. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.d.ts +12 -0
  988. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.d.ts.map +1 -0
  989. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.js +19 -0
  990. package/node_modules/@earendil-works/pi-tui/dist/components/mouse-region.js.map +1 -0
  991. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts +6 -3
  992. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.d.ts.map +1 -1
  993. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js +6 -1
  994. package/node_modules/@earendil-works/pi-tui/dist/components/scroll-view.js.map +1 -1
  995. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +4 -1
  996. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  997. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js +48 -2
  998. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  999. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +5 -1
  1000. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  1001. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js +54 -5
  1002. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  1003. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +3 -1
  1004. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  1005. package/node_modules/@earendil-works/pi-tui/dist/index.js +3 -0
  1006. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  1007. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts +3 -1
  1008. package/node_modules/@earendil-works/pi-tui/dist/layout.d.ts.map +1 -1
  1009. package/node_modules/@earendil-works/pi-tui/dist/layout.js +32 -9
  1010. package/node_modules/@earendil-works/pi-tui/dist/layout.js.map +1 -1
  1011. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +2 -1
  1012. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -1
  1013. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +3 -44
  1014. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -1
  1015. package/node_modules/@earendil-works/pi-tui/dist/native-platform.d.ts +18 -0
  1016. package/node_modules/@earendil-works/pi-tui/dist/native-platform.d.ts.map +1 -0
  1017. package/node_modules/@earendil-works/pi-tui/dist/native-platform.js +42 -0
  1018. package/node_modules/@earendil-works/pi-tui/dist/native-platform.js.map +1 -0
  1019. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1020. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +2 -20
  1021. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1022. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +31 -1
  1023. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  1024. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +335 -41
  1025. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  1026. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +83 -5
  1027. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1028. package/node_modules/@earendil-works/pi-tui/dist/tui.js +118 -4
  1029. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1030. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +2 -0
  1031. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  1032. package/node_modules/@earendil-works/pi-tui/dist/utils.js +9 -0
  1033. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  1034. package/node_modules/@earendil-works/pi-tui/native/clipboard.h +170 -0
  1035. package/node_modules/@earendil-works/pi-tui/native/darwin/README.md +8 -6
  1036. package/node_modules/@earendil-works/pi-tui/native/darwin/build.sh +12 -5
  1037. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/{darwin-modifiers.node → darwin-platform.node} +0 -0
  1038. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/{darwin-modifiers.node → darwin-platform.node} +0 -0
  1039. package/node_modules/@earendil-works/pi-tui/native/darwin/src/darwin-platform.m +93 -0
  1040. package/node_modules/@earendil-works/pi-tui/native/linux/README.md +23 -0
  1041. package/node_modules/@earendil-works/pi-tui/native/linux/build.sh +65 -0
  1042. package/node_modules/@earendil-works/pi-tui/native/linux/prebuilds/linux-arm64/linux-platform-x11.node +0 -0
  1043. package/node_modules/@earendil-works/pi-tui/native/linux/prebuilds/linux-x64/linux-platform-x11.node +0 -0
  1044. package/node_modules/@earendil-works/pi-tui/native/linux/src/clipboard-worker.h +70 -0
  1045. package/node_modules/@earendil-works/pi-tui/native/linux/src/linux-platform-x11.c +274 -0
  1046. package/node_modules/@earendil-works/pi-tui/native/napi.h +89 -0
  1047. package/node_modules/@earendil-works/pi-tui/native/win32/README.md +18 -7
  1048. package/node_modules/@earendil-works/pi-tui/native/win32/build.mjs +7 -4
  1049. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-platform.node +0 -0
  1050. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-platform.node +0 -0
  1051. package/node_modules/@earendil-works/pi-tui/native/win32/src/win32-platform.c +241 -0
  1052. package/node_modules/@earendil-works/pi-tui/package.json +10 -3
  1053. package/node_modules/@google/genai/dist/genai.d.ts +1799 -289
  1054. package/node_modules/@google/genai/dist/index.cjs +319 -299
  1055. package/node_modules/@google/genai/dist/index.mjs +319 -299
  1056. package/node_modules/@google/genai/dist/index.mjs.map +1 -1
  1057. package/node_modules/@google/genai/dist/node/index.cjs +320 -300
  1058. package/node_modules/@google/genai/dist/node/index.mjs +320 -300
  1059. package/node_modules/@google/genai/dist/node/index.mjs.map +1 -1
  1060. package/node_modules/@google/genai/dist/node/node.d.ts +1799 -289
  1061. package/node_modules/@google/genai/dist/tokenizer/node.cjs +49 -2
  1062. package/node_modules/@google/genai/dist/tokenizer/node.d.ts +43 -3
  1063. package/node_modules/@google/genai/dist/tokenizer/node.mjs +49 -2
  1064. package/node_modules/@google/genai/dist/tokenizer/node.mjs.map +1 -1
  1065. package/node_modules/@google/genai/dist/vertex_internal/index.cjs +39 -3
  1066. package/node_modules/@google/genai/dist/vertex_internal/index.cjs.map +1 -1
  1067. package/node_modules/@google/genai/dist/vertex_internal/index.d.ts +51 -9
  1068. package/node_modules/@google/genai/dist/vertex_internal/index.js +39 -3
  1069. package/node_modules/@google/genai/dist/vertex_internal/index.js.map +1 -1
  1070. package/node_modules/@google/genai/dist/web/index.mjs +319 -299
  1071. package/node_modules/@google/genai/dist/web/index.mjs.map +1 -1
  1072. package/node_modules/@google/genai/dist/web/web.d.ts +1799 -289
  1073. package/node_modules/@google/genai/package.json +1 -1
  1074. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +11 -4
  1075. package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +1 -0
  1076. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +2 -3
  1077. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +8 -1
  1078. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/LICENSE +201 -0
  1079. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/README.md +115 -0
  1080. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-cjs/index.js +96 -0
  1081. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/abort-handler.js +1 -0
  1082. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/abort.js +1 -0
  1083. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js +5 -0
  1084. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js +1 -0
  1085. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js +1 -0
  1086. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/HttpSigner.js +1 -0
  1087. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js +1 -0
  1088. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/auth.js +5 -0
  1089. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/auth/index.js +2 -0
  1090. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js +1 -0
  1091. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/checksum.js +1 -0
  1092. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/client.js +1 -0
  1093. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/command.js +1 -0
  1094. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/config.js +1 -0
  1095. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/index.js +1 -0
  1096. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/manager.js +1 -0
  1097. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/connection/pool.js +1 -0
  1098. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/crypto.js +1 -0
  1099. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js +1 -0
  1100. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/encode.js +1 -0
  1101. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoint.js +5 -0
  1102. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/EndpointParameterInstructions.js +1 -0
  1103. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js +1 -0
  1104. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js +1 -0
  1105. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js +1 -0
  1106. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js +1 -0
  1107. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/index.js +1 -0
  1108. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/endpoints/shared.js +1 -0
  1109. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/eventStream.js +1 -0
  1110. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/checksum.js +38 -0
  1111. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js +7 -0
  1112. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js +1 -0
  1113. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/index.js +2 -0
  1114. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/extensions/retry.js +1 -0
  1115. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js +1 -0
  1116. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
  1117. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js +1 -0
  1118. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/http.js +5 -0
  1119. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js +1 -0
  1120. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js +1 -0
  1121. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/identity.js +1 -0
  1122. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/index.js +1 -0
  1123. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js +1 -0
  1124. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/index.js +7 -0
  1125. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/logger.js +1 -0
  1126. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/metrics.js +1 -0
  1127. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/middleware.js +1 -0
  1128. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/pagination.js +1 -0
  1129. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/profile.js +6 -0
  1130. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/response.js +1 -0
  1131. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/retry.js +1 -0
  1132. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js +1 -0
  1133. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/schema.js +1 -0
  1134. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/sentinels.js +1 -0
  1135. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/static-schemas.js +1 -0
  1136. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/schema/traits.js +1 -0
  1137. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/serde.js +1 -0
  1138. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/shapes.js +1 -0
  1139. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/signature.js +1 -0
  1140. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/stream.js +1 -0
  1141. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js +1 -0
  1142. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js +1 -0
  1143. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js +1 -0
  1144. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transfer.js +6 -0
  1145. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js +1 -0
  1146. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js +1 -0
  1147. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/exact.js +1 -0
  1148. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/mutable.js +1 -0
  1149. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/no-undefined.js +1 -0
  1150. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/transform/type-transform.js +1 -0
  1151. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/uri.js +1 -0
  1152. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/util.js +1 -0
  1153. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-es/waiter.js +1 -0
  1154. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/abort-handler.d.ts +7 -0
  1155. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/abort.d.ts +48 -0
  1156. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts +7 -0
  1157. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts +49 -0
  1158. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts +20 -0
  1159. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts +41 -0
  1160. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts +14 -0
  1161. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/auth.d.ts +59 -0
  1162. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/auth/index.d.ts +7 -0
  1163. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts +37 -0
  1164. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/checksum.d.ts +61 -0
  1165. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/client.d.ts +57 -0
  1166. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/command.d.ts +28 -0
  1167. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/config.d.ts +15 -0
  1168. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/index.d.ts +3 -0
  1169. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/manager.d.ts +34 -0
  1170. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/connection/pool.d.ts +32 -0
  1171. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/crypto.d.ts +58 -0
  1172. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts +24 -0
  1173. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/encode.d.ts +31 -0
  1174. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoint.d.ts +77 -0
  1175. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/EndpointParameterInstructions.d.ts +41 -0
  1176. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts +27 -0
  1177. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts +10 -0
  1178. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts +28 -0
  1179. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts +16 -0
  1180. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/index.d.ts +5 -0
  1181. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts +55 -0
  1182. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/eventStream.d.ts +137 -0
  1183. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts +58 -0
  1184. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts +32 -0
  1185. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts +9 -0
  1186. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/index.d.ts +6 -0
  1187. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/extensions/retry.d.ts +18 -0
  1188. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts +35 -0
  1189. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
  1190. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts +142 -0
  1191. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/http.d.ts +110 -0
  1192. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts +14 -0
  1193. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts +31 -0
  1194. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/identity.d.ts +15 -0
  1195. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/index.d.ts +4 -0
  1196. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts +14 -0
  1197. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/index.d.ts +52 -0
  1198. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/logger.d.ts +13 -0
  1199. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/metrics.d.ts +93 -0
  1200. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/middleware.d.ts +541 -0
  1201. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/pagination.d.ts +33 -0
  1202. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/profile.d.ts +30 -0
  1203. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/response.d.ts +40 -0
  1204. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/retry.d.ts +162 -0
  1205. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts +143 -0
  1206. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/schema.d.ts +236 -0
  1207. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts +65 -0
  1208. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts +99 -0
  1209. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/schema/traits.d.ts +46 -0
  1210. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/serde.d.ts +114 -0
  1211. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/shapes.d.ts +79 -0
  1212. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/signature.d.ts +172 -0
  1213. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/stream.d.ts +22 -0
  1214. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts +28 -0
  1215. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts +54 -0
  1216. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts +41 -0
  1217. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transfer.d.ts +42 -0
  1218. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts +26 -0
  1219. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts +73 -0
  1220. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/exact.d.ts +6 -0
  1221. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/mutable.d.ts +6 -0
  1222. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +68 -0
  1223. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts +39 -0
  1224. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts +7 -0
  1225. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts +45 -0
  1226. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts +7 -0
  1227. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts +49 -0
  1228. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts +20 -0
  1229. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts +41 -0
  1230. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts +14 -0
  1231. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts +59 -0
  1232. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts +7 -0
  1233. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts +37 -0
  1234. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts +61 -0
  1235. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts +57 -0
  1236. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts +28 -0
  1237. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts +15 -0
  1238. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts +3 -0
  1239. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts +34 -0
  1240. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts +32 -0
  1241. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts +58 -0
  1242. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts +40 -0
  1243. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts +31 -0
  1244. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts +77 -0
  1245. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointParameterInstructions.d.ts +41 -0
  1246. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts +27 -0
  1247. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts +10 -0
  1248. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts +28 -0
  1249. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts +16 -0
  1250. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts +5 -0
  1251. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts +55 -0
  1252. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts +137 -0
  1253. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts +58 -0
  1254. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts +32 -0
  1255. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts +9 -0
  1256. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts +6 -0
  1257. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts +18 -0
  1258. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts +35 -0
  1259. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
  1260. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts +142 -0
  1261. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +110 -0
  1262. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts +14 -0
  1263. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts +31 -0
  1264. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts +15 -0
  1265. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts +4 -0
  1266. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts +14 -0
  1267. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +52 -0
  1268. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts +13 -0
  1269. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/metrics.d.ts +93 -0
  1270. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +541 -0
  1271. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts +33 -0
  1272. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts +30 -0
  1273. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts +40 -0
  1274. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts +162 -0
  1275. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts +149 -0
  1276. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts +251 -0
  1277. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts +65 -0
  1278. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts +118 -0
  1279. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts +46 -0
  1280. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts +114 -0
  1281. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts +79 -0
  1282. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts +172 -0
  1283. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts +22 -0
  1284. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts +28 -0
  1285. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts +54 -0
  1286. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts +41 -0
  1287. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts +42 -0
  1288. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts +26 -0
  1289. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts +77 -0
  1290. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts +14 -0
  1291. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts +6 -0
  1292. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +88 -0
  1293. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts +40 -0
  1294. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts +17 -0
  1295. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts +192 -0
  1296. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts +35 -0
  1297. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/uri.d.ts +17 -0
  1298. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/util.d.ts +176 -0
  1299. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/dist-types/waiter.d.ts +35 -0
  1300. package/node_modules/@smithy/node-http-handler/node_modules/@smithy/types/package.json +50 -0
  1301. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  1302. package/node_modules/esbuild/LICENSE.md +21 -0
  1303. package/node_modules/esbuild/README.md +3 -0
  1304. package/node_modules/esbuild/bin/esbuild +223 -0
  1305. package/node_modules/esbuild/install.js +300 -0
  1306. package/node_modules/esbuild/lib/main.d.ts +720 -0
  1307. package/node_modules/esbuild/lib/main.js +2536 -0
  1308. package/node_modules/esbuild/package.json +47 -0
  1309. package/node_modules/ignore/README.md +52 -0
  1310. package/node_modules/ignore/index.js +785 -129
  1311. package/node_modules/ignore/legacy.js +660 -98
  1312. package/node_modules/ignore/package.json +10 -4
  1313. package/node_modules/marked/README.md +1 -0
  1314. package/node_modules/marked/lib/marked.d.ts +7 -0
  1315. package/node_modules/marked/lib/marked.esm.js +30 -30
  1316. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  1317. package/node_modules/marked/lib/marked.umd.js +30 -30
  1318. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  1319. package/node_modules/marked/man/marked.1 +1 -1
  1320. package/node_modules/marked/package.json +2 -2
  1321. package/node_modules/typebox/build/compile/validator.d.mts +1 -1
  1322. package/node_modules/typebox/build/compile/validator.mjs +1 -1
  1323. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
  1324. package/node_modules/typebox/build/format/iri.mjs +5 -1
  1325. package/node_modules/typebox/build/guard/emit.mjs +2 -4
  1326. package/node_modules/typebox/build/guard/guard.mjs +6 -18
  1327. package/node_modules/typebox/build/guard/string.mjs +16 -24
  1328. package/node_modules/typebox/build/schema/compile.d.mts +3 -2
  1329. package/node_modules/typebox/build/schema/compile.mjs +8 -8
  1330. package/node_modules/typebox/build/schema/engine/_context.d.mts +1 -6
  1331. package/node_modules/typebox/build/schema/engine/_context.mjs +9 -14
  1332. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
  1333. package/node_modules/typebox/build/schema/engine/_stack.d.mts +6 -2
  1334. package/node_modules/typebox/build/schema/engine/_stack.mjs +135 -32
  1335. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +16 -4
  1336. package/node_modules/typebox/build/schema/engine/allOf.mjs +2 -2
  1337. package/node_modules/typebox/build/schema/engine/anyOf.mjs +2 -2
  1338. package/node_modules/typebox/build/schema/engine/if.mjs +2 -2
  1339. package/node_modules/typebox/build/schema/engine/oneOf.mjs +2 -2
  1340. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +1 -3
  1341. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  1342. package/node_modules/typebox/build/schema/engine/schema.mjs +6 -0
  1343. package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +2 -2
  1344. package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +2 -2
  1345. package/node_modules/typebox/build/schema/errors.d.mts +2 -2
  1346. package/node_modules/typebox/build/schema/errors.mjs +7 -13
  1347. package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
  1348. package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
  1349. package/node_modules/typebox/build/schema/intern/intern.d.mts +14 -0
  1350. package/node_modules/typebox/build/schema/intern/intern.mjs +259 -0
  1351. package/node_modules/typebox/build/schema/parse.d.mts +1 -0
  1352. package/node_modules/typebox/build/schema/parse.mjs +10 -5
  1353. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +34 -3
  1354. package/node_modules/typebox/build/schema/resolve/resolve.mjs +198 -73
  1355. package/node_modules/typebox/build/schema/schema.d.mts +1 -0
  1356. package/node_modules/typebox/build/schema/schema.mjs +1 -0
  1357. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
  1358. package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
  1359. package/node_modules/typebox/package.json +1 -1
  1360. package/node_modules/typebox/readme.md +9 -5
  1361. package/node_modules/undici/docs/docs/api/Client.md +4 -0
  1362. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
  1363. package/node_modules/undici/docs/docs/api/EventSource.md +4 -0
  1364. package/node_modules/undici/docs/docs/api/Interceptors.md +7 -3
  1365. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +7 -1
  1366. package/node_modules/undici/lib/cache/memory-cache-store.js +2 -2
  1367. package/node_modules/undici/lib/core/symbols.js +2 -0
  1368. package/node_modules/undici/lib/dispatcher/agent.js +7 -2
  1369. package/node_modules/undici/lib/dispatcher/balanced-pool.js +7 -4
  1370. package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
  1371. package/node_modules/undici/lib/dispatcher/client-h2.js +43 -3
  1372. package/node_modules/undici/lib/dispatcher/client.js +3 -2
  1373. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
  1374. package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -1
  1375. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -0
  1376. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +10 -3
  1377. package/node_modules/undici/lib/dispatcher/proxy-agent.js +18 -1
  1378. package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
  1379. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
  1380. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +91 -21
  1381. package/node_modules/undici/lib/handler/cache-handler.js +29 -5
  1382. package/node_modules/undici/lib/handler/decorator-handler.js +7 -1
  1383. package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
  1384. package/node_modules/undici/lib/handler/redirect-handler.js +21 -4
  1385. package/node_modules/undici/lib/handler/retry-handler.js +148 -30
  1386. package/node_modules/undici/lib/interceptor/cache.js +65 -12
  1387. package/node_modules/undici/lib/interceptor/decompress.js +115 -13
  1388. package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
  1389. package/node_modules/undici/lib/interceptor/dns.js +7 -0
  1390. package/node_modules/undici/lib/interceptor/dump.js +10 -23
  1391. package/node_modules/undici/lib/mock/mock-agent.js +13 -1
  1392. package/node_modules/undici/lib/mock/mock-utils.js +11 -10
  1393. package/node_modules/undici/lib/util/cache.js +45 -3
  1394. package/node_modules/undici/lib/web/cookies/parse.js +150 -147
  1395. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
  1396. package/node_modules/undici/lib/web/eventsource/eventsource.js +13 -3
  1397. package/node_modules/undici/lib/web/fetch/index.js +6 -0
  1398. package/node_modules/undici/lib/web/fetch/request.js +2 -3
  1399. package/node_modules/undici/lib/web/fetch/util.js +6 -1
  1400. package/node_modules/undici/lib/web/webidl/index.js +3 -3
  1401. package/node_modules/undici/lib/web/websocket/connection.js +1 -1
  1402. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
  1403. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
  1404. package/node_modules/undici/package.json +3 -3
  1405. package/node_modules/undici/types/client.d.ts +10 -0
  1406. package/node_modules/undici/types/interceptors.d.ts +2 -0
  1407. package/node_modules/undici/types/mock-agent.d.ts +11 -10
  1408. package/node_modules/undici/types/socks5-proxy-agent.d.ts +2 -0
  1409. package/package.json +70 -49
  1410. package/vendor/pi-client/client.d.ts +20 -15
  1411. package/vendor/pi-client/client.d.ts.map +1 -1
  1412. package/vendor/pi-client/client.js +248 -245
  1413. package/vendor/pi-client/client.js.map +1 -1
  1414. package/vendor/pi-client/connection.d.ts +4 -3
  1415. package/vendor/pi-client/connection.d.ts.map +1 -1
  1416. package/vendor/pi-client/connection.js +13 -9
  1417. package/vendor/pi-client/connection.js.map +1 -1
  1418. package/vendor/pi-client/errors.d.ts +6 -15
  1419. package/vendor/pi-client/errors.d.ts.map +1 -1
  1420. package/vendor/pi-client/errors.js +10 -25
  1421. package/vendor/pi-client/errors.js.map +1 -1
  1422. package/vendor/pi-client/index.d.ts +3 -4
  1423. package/vendor/pi-client/index.d.ts.map +1 -1
  1424. package/vendor/pi-client/index.js +2 -2
  1425. package/vendor/pi-client/index.js.map +1 -1
  1426. package/vendor/pi-client/types.d.ts +14 -8
  1427. package/vendor/pi-client/types.d.ts.map +1 -1
  1428. package/vendor/pi-client/types.js.map +1 -1
  1429. package/vendor/pi-client/unix.d.ts +14 -1
  1430. package/vendor/pi-client/unix.d.ts.map +1 -1
  1431. package/vendor/pi-client/unix.js +138 -8
  1432. package/vendor/pi-client/unix.js.map +1 -1
  1433. package/vendor/pi-protocol/codec.d.ts +2 -4
  1434. package/vendor/pi-protocol/codec.d.ts.map +1 -1
  1435. package/vendor/pi-protocol/codec.js +7 -34
  1436. package/vendor/pi-protocol/codec.js.map +1 -1
  1437. package/vendor/pi-protocol/framing.d.ts +0 -2
  1438. package/vendor/pi-protocol/framing.d.ts.map +1 -1
  1439. package/vendor/pi-protocol/framing.js +0 -15
  1440. package/vendor/pi-protocol/framing.js.map +1 -1
  1441. package/vendor/pi-protocol/index.d.ts +1 -1
  1442. package/vendor/pi-protocol/index.d.ts.map +1 -1
  1443. package/vendor/pi-protocol/index.js +1 -1
  1444. package/vendor/pi-protocol/index.js.map +1 -1
  1445. package/vendor/pi-protocol/protocol.d.ts +167 -0
  1446. package/vendor/pi-protocol/protocol.d.ts.map +1 -0
  1447. package/vendor/pi-protocol/protocol.js +85 -0
  1448. package/vendor/pi-protocol/protocol.js.map +1 -0
  1449. package/dist/bun/register-bedrock.d.ts +0 -2
  1450. package/dist/bun/register-bedrock.d.ts.map +0 -1
  1451. package/dist/bun/register-bedrock.js +0 -4
  1452. package/dist/bun/register-bedrock.js.map +0 -1
  1453. package/dist/cli/experimental/auth.d.ts +0 -16
  1454. package/dist/cli/experimental/auth.d.ts.map +0 -1
  1455. package/dist/cli/experimental/auth.js +0 -13
  1456. package/dist/cli/experimental/auth.js.map +0 -1
  1457. package/dist/cli/experimental/cli.d.ts +0 -6
  1458. package/dist/cli/experimental/cli.d.ts.map +0 -1
  1459. package/dist/cli/experimental/cli.js +0 -5
  1460. package/dist/cli/experimental/cli.js.map +0 -1
  1461. package/dist/cli/experimental/command-options.d.ts +0 -17
  1462. package/dist/cli/experimental/command-options.d.ts.map +0 -1
  1463. package/dist/cli/experimental/command-options.js +0 -35
  1464. package/dist/cli/experimental/command-options.js.map +0 -1
  1465. package/dist/cli/experimental/command.d.ts +0 -63
  1466. package/dist/cli/experimental/command.d.ts.map +0 -1
  1467. package/dist/cli/experimental/command.js +0 -127
  1468. package/dist/cli/experimental/command.js.map +0 -1
  1469. package/dist/cli/experimental/commands/client.d.ts +0 -13
  1470. package/dist/cli/experimental/commands/client.d.ts.map +0 -1
  1471. package/dist/cli/experimental/commands/client.js +0 -25
  1472. package/dist/cli/experimental/commands/client.js.map +0 -1
  1473. package/dist/cli/experimental/commands/pi.d.ts +0 -15
  1474. package/dist/cli/experimental/commands/pi.d.ts.map +0 -1
  1475. package/dist/cli/experimental/commands/pi.js +0 -28
  1476. package/dist/cli/experimental/commands/pi.js.map +0 -1
  1477. package/dist/cli/experimental/commands/server.d.ts +0 -13
  1478. package/dist/cli/experimental/commands/server.d.ts.map +0 -1
  1479. package/dist/cli/experimental/commands/server.js +0 -25
  1480. package/dist/cli/experimental/commands/server.js.map +0 -1
  1481. package/dist/cli/experimental/transport-address.d.ts +0 -10
  1482. package/dist/cli/experimental/transport-address.d.ts.map +0 -1
  1483. package/dist/cli/experimental/transport-address.js +0 -38
  1484. package/dist/cli/experimental/transport-address.js.map +0 -1
  1485. package/dist/client/remote-session.d.ts +0 -53
  1486. package/dist/client/remote-session.d.ts.map +0 -1
  1487. package/dist/client/remote-session.js +0 -340
  1488. package/dist/client/remote-session.js.map +0 -1
  1489. package/dist/client/transcript.d.ts +0 -12
  1490. package/dist/client/transcript.d.ts.map +0 -1
  1491. package/dist/client/transcript.js +0 -98
  1492. package/dist/client/transcript.js.map +0 -1
  1493. package/dist/server/create-harness.d.ts +0 -26
  1494. package/dist/server/create-harness.d.ts.map +0 -1
  1495. package/dist/server/create-harness.js +0 -106
  1496. package/dist/server/create-harness.js.map +0 -1
  1497. package/dist/utils/clipboard-native.d.ts +0 -11
  1498. package/dist/utils/clipboard-native.d.ts.map +0 -1
  1499. package/dist/utils/clipboard-native.js +0 -20
  1500. package/dist/utils/clipboard-native.js.map +0 -1
  1501. package/docs/AGENTS.md +0 -67
  1502. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts +0 -100
  1503. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.d.ts.map +0 -1
  1504. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js +0 -420
  1505. package/node_modules/@earendil-works/pi-agent-core/dist/harness/reducer.js.map +0 -1
  1506. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts +0 -9
  1507. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.d.ts.map +0 -1
  1508. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js +0 -18
  1509. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl/errors.js.map +0 -1
  1510. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts +0 -3
  1511. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.d.ts.map +0 -1
  1512. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js +0 -2
  1513. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl.js.map +0 -1
  1514. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts +0 -65
  1515. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.d.ts.map +0 -1
  1516. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js +0 -320
  1517. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/state.js.map +0 -1
  1518. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts +0 -4
  1519. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.d.ts.map +0 -1
  1520. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js +0 -762
  1521. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/testing/conformance.js.map +0 -1
  1522. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.d.ts +0 -29
  1523. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.d.ts.map +0 -1
  1524. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js +0 -103
  1525. package/node_modules/@earendil-works/pi-agent-core/dist/search/scanning.js.map +0 -1
  1526. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.d.ts +0 -69
  1527. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.d.ts.map +0 -1
  1528. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.js +0 -159
  1529. package/node_modules/@earendil-works/pi-ai/dist/api/cloudflare-gateway-binding.js.map +0 -1
  1530. package/node_modules/@earendil-works/pi-tui/native/darwin/src/darwin-modifiers.c +0 -70
  1531. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1532. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1533. package/node_modules/@earendil-works/pi-tui/native/win32/src/win32-console-mode.c +0 -119
  1534. package/node_modules/@mariozechner/clipboard/.yarnrc.yml +0 -1
  1535. package/node_modules/@mariozechner/clipboard/Cargo.toml +0 -45
  1536. package/node_modules/@mariozechner/clipboard/README.md +0 -60
  1537. package/node_modules/@mariozechner/clipboard/build.rs +0 -5
  1538. package/node_modules/@mariozechner/clipboard/exp.ts +0 -12
  1539. package/node_modules/@mariozechner/clipboard/index.d.ts +0 -37
  1540. package/node_modules/@mariozechner/clipboard/index.js +0 -606
  1541. package/node_modules/@mariozechner/clipboard/package.json +0 -45
  1542. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/common.rs +0 -307
  1543. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/mod.rs +0 -93
  1544. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/ios.rs +0 -313
  1545. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/macos.rs +0 -471
  1546. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/mod.rs +0 -252
  1547. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/wayland.rs +0 -431
  1548. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/win.rs +0 -712
  1549. package/node_modules/@mariozechner/clipboard/src/clipboard_rs/platform/x11.rs +0 -916
  1550. package/node_modules/@mariozechner/clipboard/src/lib.rs +0 -194
  1551. package/vendor/pi-client/session-handle.d.ts +0 -54
  1552. package/vendor/pi-client/session-handle.d.ts.map +0 -1
  1553. package/vendor/pi-client/session-handle.js +0 -50
  1554. package/vendor/pi-client/session-handle.js.map +0 -1
  1555. package/vendor/pi-client/state.d.ts +0 -22
  1556. package/vendor/pi-client/state.d.ts.map +0 -1
  1557. package/vendor/pi-client/state.js +0 -145
  1558. package/vendor/pi-client/state.js.map +0 -1
  1559. package/vendor/pi-protocol/schemas.d.ts +0 -13739
  1560. package/vendor/pi-protocol/schemas.d.ts.map +0 -1
  1561. package/vendor/pi-protocol/schemas.js +0 -386
  1562. package/vendor/pi-protocol/schemas.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAyD,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAyB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAyB,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAA+C,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAgF/F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA4B;IACnE,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;IACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC5D,MAAM,eAAe,GAA4B,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,EAAE;QAC7D,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACvC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,mBAAmB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;gBAChD,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3F,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;gBACrF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;aAC5E,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,eAAe,CAAC;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;gBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;gBAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;aAClB,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,mBAAmB,CAAC;YAC5C,mBAAmB,IAAI,CAAC,CAAC;YACzB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACpE,CAAC;gBAAS,CAAC;YACV,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACtD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;oBACzB,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,mBAAmB,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC;IACF,CAAC,CAAC,CACF,CAAC;IACF,MAAM,oBAAoB,GAAG,SAAS;SACpC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;SACzE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACd,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW;QACnC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;QACzB,GAAG,EAAE,GAAG,CAAC,GAAG;KACZ,CAAC,CAAC,CAAC;IACL,MAAM,WAAW,GAAG;QACnB,GAAG,KAAK,CAAC,WAAW;QACpB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;QACvD,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;KACjE,CAAC;IACF,OAAO;QACN,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACtE,WAAW;QACX,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACjE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACpD,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,SAAS,EAAE,oBAAoB;KAC/B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,QAA0C,EAC1C,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA8B,EAAE,QAAyB;IACxF,MAAM,GAAG,GACR,OAAO,CAAC,MAAM,CAAC,aAAa;QAC5B,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS;YACnE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc;YAC/B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,SAAS,CAAC,GAAG,CAAC;SACnB,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,kBAAkB,CAAC,QAA0C;IACrE,OAAO,QAAQ;SACb,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;SAC/D,QAAQ,CACR,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACf,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAA2B,EAAE,KAA4B;IACjF,OAAO,CACN,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY;QACpD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CACtC,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAChC,QAAmC,EACnC,UAA0B,EAC1B,YAA0C;IAE1C,MAAM,OAAO,GAAG,oBAAoB,CACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EACpC,UAAU,EACV,YAAY,CACZ,CAAC;IACF,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM,KAAK,SAAS;YAAE,SAAS;QACnC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QACvF,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAClG,SAAS;QACV,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;YACrF,SAAS;QACV,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACtF,SAAS;QACV,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,iBAAiB,CACzB,KAA6B,EAC7B,SAAyC;IAEzC,QAAQ,KAAK,EAAE,CAAC;QACf,KAAK,YAAY;YAChB,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC;QAC/C,KAAK,aAAa,CAAC;QACnB,KAAK,kBAAkB,CAAC;QACxB,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa,CAAC;QACnB,KAAK,MAAM;YACV,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B,CAAC,SAAyC;IAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAC3E,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,iCAAiC,CAAC;QACtE,OAAO;YACN,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;YACnC,IAAI,EAAE,KAAK;YACX,mBAAmB,EAAE,KAAK;YAC1B,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;YAC1B,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;SACzC,CAAC;IACH,CAAC;IACD,IAAI,YAA6C,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,YAAY,GAAG,OAAO,CAAC;IAC1G,CAAC;IACD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAyC;IAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA4B;IACxD,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;AAClF,CAAC;AAED,SAAS,kBAAkB,CAC1B,IAAuB,EACvB,OAA4B,EAC5B,MAA0B,EAC1B,YAAsB;IAEtB,OAAO;QACN,IAAI;QACJ,GAAG,WAAW,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;QAC9B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;QAC7C,GAAG,iBAAiB,CAAC,YAAY,CAAC;KAClC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAA0B;IAC9C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAqB;IAC/C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,CAAC;AACzB,CAAC","sourcesContent":["import { stripAnsi } from \"../../../../utils/ansi.ts\";\nimport { type CommandHookRunOptions, type CommandHookRunResult, runCommandHook } from \"./command-runner.ts\";\nimport { matchingHookHandlers } from \"./matcher.ts\";\nimport { type ParsedHookOutput, parseHookOutput } from \"./output-parser.ts\";\nimport { type HookOutputPolicy, validateHookHandlerSafety } from \"./safety.ts\";\nimport { type HookTrustOptions, type HookTrustRecord, listHookTrustRecords } from \"./trust.ts\";\nimport type {\n\tExecutableHookHandler,\n\tHookDiagnostic,\n\tHookInputWire,\n\tHookSourceMetadata,\n\tHookTrustState,\n} from \"./types.ts\";\n\nexport type HookCommandRunner = (\n\thandler: ExecutableHookHandler,\n\tinput: HookInputWire,\n\toptions: CommandHookRunOptions,\n) => Promise<CommandHookRunResult>;\n\nexport type HookDispatchDecision =\n\t| { readonly kind: \"none\" }\n\t| {\n\t\t\treadonly kind: \"allow\" | \"block\";\n\t\t\treadonly reason?: string;\n\t\t\treadonly source: HookSourceMetadata;\n\t\t\treadonly sourceCommand: string;\n\t\t\treadonly updatedInput?: unknown;\n\t }\n\t| {\n\t\t\treadonly fallback: { readonly kind: \"block\"; readonly reason: string };\n\t\t\treadonly kind: \"ask\";\n\t\t\treadonly nativeRepresentable: false;\n\t\t\treadonly reason?: string;\n\t\t\treadonly source: HookSourceMetadata;\n\t\t\treadonly sourceCommand: string;\n\t };\n\nexport type HookDispatchSkipped = {\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handler: ExecutableHookHandler;\n\treadonly reason: \"disabled\" | \"untrusted\" | \"unsafe\";\n\treadonly record: HookTrustRecord;\n};\n\nexport type HookDispatchSummary = {\n\treadonly completionIndex: number;\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handler: ExecutableHookHandler;\n\treadonly output: ParsedHookOutput[\"output\"];\n\treadonly run: CommandHookRunResult;\n};\n\nexport type HookDispatchResult = {\n\treadonly decision: HookDispatchDecision;\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly executableHandlers: readonly ExecutableHookHandler[];\n\treadonly matchedHandlers: readonly ExecutableHookHandler[];\n\treadonly skipped: readonly HookDispatchSkipped[];\n\treadonly summaries: readonly HookDispatchSummary[];\n};\n\nexport type HookDispatchOptions = {\n\treadonly cwd: string;\n\treadonly envPassthrough?: readonly string[];\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly input: HookInputWire;\n\treadonly onRunningHandlersChange?: (running: readonly ExecutableHookHandler[]) => void;\n\treadonly outputPolicy?: HookOutputPolicy;\n\treadonly runCommand?: HookCommandRunner;\n\treadonly signal?: AbortSignal;\n\treadonly sourceEnv?: NodeJS.ProcessEnv;\n\treadonly trustOptions?: HookTrustOptions;\n\treadonly trustState: HookTrustState;\n};\n\ntype OrderedHandler = {\n\treadonly declarationIndex: number;\n\treadonly handler: ExecutableHookHandler;\n};\n\ntype RunnableHandler = OrderedHandler & {\n\treadonly record: HookTrustRecord;\n};\n\nexport async function dispatchHookEvent(options: HookDispatchOptions): Promise<HookDispatchResult> {\n\tconst match = matchingHookHandlers(options.input, options.handlers);\n\tconst ordered = declarationOrdered(match.handlers);\n\tconst selected = selectExecutableHandlers(ordered, options.trustState, options.trustOptions);\n\tlet nextCompletionIndex = 0;\n\tconst runner = options.runCommand ?? runCommandHook;\n\tconst notifyRunningChange = options.onRunningHandlersChange;\n\tconst runningHandlers: ExecutableHookHandler[] = [];\n\tconst completed = await Promise.all(\n\t\tselected.runnable.map(async ({ handler, declarationIndex }) => {\n\t\t\tif (notifyRunningChange !== undefined) {\n\t\t\t\trunningHandlers.push(handler);\n\t\t\t\tnotifyRunningChange([...runningHandlers]);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst run = await runner(handler, options.input, {\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\t...(options.envPassthrough === undefined ? {} : { envPassthrough: options.envPassthrough }),\n\t\t\t\t\t...(options.outputPolicy === undefined ? {} : { outputPolicy: options.outputPolicy }),\n\t\t\t\t\t...(options.signal === undefined ? {} : { signal: options.signal }),\n\t\t\t\t\t...(options.sourceEnv === undefined ? {} : { sourceEnv: options.sourceEnv }),\n\t\t\t\t});\n\t\t\t\tconst parsed = parseHookOutput({\n\t\t\t\t\tevent: options.input.event,\n\t\t\t\t\texitCode: run.exitCode ?? 1,\n\t\t\t\t\tsource: handler.source,\n\t\t\t\t\tstderr: run.stderr,\n\t\t\t\t\tstdout: run.stdout,\n\t\t\t\t});\n\t\t\t\tconst completionIndex = nextCompletionIndex;\n\t\t\t\tnextCompletionIndex += 1;\n\t\t\t\treturn { completionIndex, declarationIndex, handler, parsed, run };\n\t\t\t} finally {\n\t\t\t\tif (notifyRunningChange !== undefined) {\n\t\t\t\t\tconst runningIndex = runningHandlers.indexOf(handler);\n\t\t\t\t\tif (runningIndex !== -1) {\n\t\t\t\t\t\trunningHandlers.splice(runningIndex, 1);\n\t\t\t\t\t}\n\t\t\t\t\tnotifyRunningChange([...runningHandlers]);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t);\n\tconst declarationSummaries = completed\n\t\t.toSorted((left, right) => left.declarationIndex - right.declarationIndex)\n\t\t.map((run) => ({\n\t\t\tcompletionIndex: run.completionIndex,\n\t\t\tdiagnostics: run.parsed.diagnostics,\n\t\t\thandler: run.handler,\n\t\t\toutput: run.parsed.output,\n\t\t\trun: run.run,\n\t\t}));\n\tconst diagnostics = [\n\t\t...match.diagnostics,\n\t\t...selected.skipped.flatMap((skip) => skip.diagnostics),\n\t\t...declarationSummaries.flatMap((summary) => summary.diagnostics),\n\t];\n\treturn {\n\t\tdecision: aggregateDecision(options.input.event, declarationSummaries),\n\t\tdiagnostics,\n\t\texecutableHandlers: selected.runnable.map((item) => item.handler),\n\t\tmatchedHandlers: ordered.map((item) => item.handler),\n\t\tskipped: selected.skipped,\n\t\tsummaries: declarationSummaries,\n\t};\n}\n\nexport function runningHookHandlersStatusLabel(\n\thandlers: readonly ExecutableHookHandler[],\n\tplatform: NodeJS.Platform = process.platform,\n): string {\n\tconst label = handlers.map((handler) => hookHandlerStatusLabel(handler, platform)).join(\" · \");\n\treturn label.length <= 79 ? label : `${label.slice(0, 76)}...`;\n}\n\nfunction hookHandlerStatusLabel(handler: ExecutableHookHandler, platform: NodeJS.Platform): string {\n\tconst raw =\n\t\thandler.config.statusMessage ??\n\t\t(platform === \"win32\" && handler.config.commandWindows !== undefined\n\t\t\t? handler.config.commandWindows\n\t\t\t: handler.config.command);\n\treturn stripAnsi(raw)\n\t\t.replace(/[\\r\\n\\t]+/g, \" \")\n\t\t.replace(/[\\u0000-\\u001f\\u007f]+/g, \"\")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n}\n\nfunction declarationOrdered(handlers: readonly ExecutableHookHandler[]): readonly OrderedHandler[] {\n\treturn handlers\n\t\t.map((handler, index) => ({ declarationIndex: index, handler }))\n\t\t.toSorted(\n\t\t\t(left, right) =>\n\t\t\t\tcompareHandlers(left.handler, right.handler) || left.declarationIndex - right.declarationIndex,\n\t\t);\n}\n\nfunction compareHandlers(left: ExecutableHookHandler, right: ExecutableHookHandler): number {\n\treturn (\n\t\tleft.source.displayOrder - right.source.displayOrder ||\n\t\tleft.groupIndex - right.groupIndex ||\n\t\tleft.handlerIndex - right.handlerIndex\n\t);\n}\n\nfunction selectExecutableHandlers(\n\thandlers: readonly OrderedHandler[],\n\ttrustState: HookTrustState,\n\ttrustOptions: HookTrustOptions | undefined,\n): { readonly runnable: readonly RunnableHandler[]; readonly skipped: readonly HookDispatchSkipped[] } {\n\tconst records = listHookTrustRecords(\n\t\thandlers.map((item) => item.handler),\n\t\ttrustState,\n\t\ttrustOptions,\n\t);\n\tconst runnable: RunnableHandler[] = [];\n\tconst skipped: HookDispatchSkipped[] = [];\n\tfor (const [index, item] of handlers.entries()) {\n\t\tconst record = records[index];\n\t\tif (record === undefined) continue;\n\t\tconst safetyDiagnostics = validateHookHandlerSafety(item.handler);\n\t\tconst unsafe = safetyDiagnostics.some((diagnostic) => diagnostic.severity === \"error\");\n\t\tif (unsafe) {\n\t\t\tskipped.push({ diagnostics: safetyDiagnostics, handler: item.handler, reason: \"unsafe\", record });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!record.enabled) {\n\t\t\tskipped.push({ diagnostics: [], handler: item.handler, reason: \"disabled\", record });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!record.trusted) {\n\t\t\tskipped.push({ diagnostics: [], handler: item.handler, reason: \"untrusted\", record });\n\t\t\tcontinue;\n\t\t}\n\t\trunnable.push({ ...item, record });\n\t}\n\treturn { runnable, skipped };\n}\n\nfunction aggregateDecision(\n\tevent: HookInputWire[\"event\"],\n\tsummaries: readonly HookDispatchSummary[],\n): HookDispatchDecision {\n\tswitch (event) {\n\t\tcase \"PreToolUse\":\n\t\t\treturn aggregatePreToolUseDecision(summaries);\n\t\tcase \"PostToolUse\":\n\t\tcase \"UserPromptSubmit\":\n\t\tcase \"SessionStart\":\n\t\tcase \"PreCompact\":\n\t\tcase \"PostCompact\":\n\t\tcase \"Stop\":\n\t\t\treturn aggregateBlockingDecision(summaries);\n\t}\n}\n\nfunction aggregatePreToolUseDecision(summaries: readonly HookDispatchSummary[]): HookDispatchDecision {\n\tconst blocker = summaries.find(hasBlockingDecision);\n\tif (blocker !== undefined) {\n\t\treturn decisionWithSource(\"block\", blocker, blocker.output.reason);\n\t}\n\tconst ask = summaries.find((summary) => summary.output.decision === \"ask\");\n\tif (ask !== undefined) {\n\t\tconst reason = ask.output.reason ?? \"Hook requested manual approval.\";\n\t\treturn {\n\t\t\tfallback: { kind: \"block\", reason },\n\t\t\tkind: \"ask\",\n\t\t\tnativeRepresentable: false,\n\t\t\t...reasonField(ask.output.reason),\n\t\t\tsource: ask.handler.source,\n\t\t\tsourceCommand: ask.handler.config.command,\n\t\t};\n\t}\n\tlet allowSummary: HookDispatchSummary | undefined;\n\tfor (const summary of summaries) {\n\t\tif (summary.output.decision === \"allow\" || summary.output.decision === \"approve\") allowSummary = summary;\n\t}\n\tif (allowSummary !== undefined) {\n\t\treturn decisionWithSource(\"allow\", allowSummary, undefined, allowSummary.output.updatedInput);\n\t}\n\treturn { kind: \"none\" };\n}\n\nfunction aggregateBlockingDecision(summaries: readonly HookDispatchSummary[]): HookDispatchDecision {\n\tconst blocker = summaries.find(hasBlockingDecision);\n\tif (blocker !== undefined) {\n\t\treturn decisionWithSource(\"block\", blocker, blocker.output.reason ?? blocker.output.stopReason);\n\t}\n\treturn { kind: \"none\" };\n}\n\nfunction hasBlockingDecision(summary: HookDispatchSummary): boolean {\n\treturn summary.output.decision === \"block\" || summary.output.decision === \"deny\";\n}\n\nfunction decisionWithSource(\n\tkind: \"allow\" | \"block\",\n\tsummary: HookDispatchSummary,\n\treason: string | undefined,\n\tupdatedInput?: unknown,\n): HookDispatchDecision {\n\treturn {\n\t\tkind,\n\t\t...reasonField(reason),\n\t\tsource: summary.handler.source,\n\t\tsourceCommand: summary.handler.config.command,\n\t\t...updatedInputField(updatedInput),\n\t};\n}\n\nfunction reasonField(reason: string | undefined): { readonly reason?: string } {\n\tif (reason === undefined) {\n\t\treturn {};\n\t}\n\treturn { reason };\n}\n\nfunction updatedInputField(updatedInput: unknown): { readonly updatedInput?: unknown } {\n\tif (updatedInput === undefined) {\n\t\treturn {};\n\t}\n\treturn { updatedInput };\n}\n"]}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/dispatcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { stripAnsi } from \"../../../../utils/ansi.ts\";\nimport { type CommandHookRunOptions, type CommandHookRunResult, runCommandHook } from \"./command-runner.ts\";\nimport { matchingHookHandlers } from \"./matcher.ts\";\nimport { type ParsedHookOutput, parseHookOutput } from \"./output-parser.ts\";\nimport { type HookOutputPolicy, validateHookHandlerSafety } from \"./safety.ts\";\nimport { type HookTrustOptions, type HookTrustRecord, listHookTrustRecords } from \"./trust.ts\";\nimport type {\n\tExecutableHookHandler,\n\tHookDiagnostic,\n\tHookInputWire,\n\tHookSourceMetadata,\n\tHookTrustState,\n} from \"./types.ts\";\n\nexport type HookCommandRunner = (\n\thandler: ExecutableHookHandler,\n\tinput: HookInputWire,\n\toptions: CommandHookRunOptions,\n) => Promise<CommandHookRunResult>;\n\nexport type HookDispatchDecision =\n\t| { readonly kind: \"none\" }\n\t| {\n\t\t\treadonly kind: \"allow\" | \"block\";\n\t\t\treadonly reason?: string;\n\t\t\treadonly source: HookSourceMetadata;\n\t\t\treadonly sourceCommand: string;\n\t\t\treadonly updatedInput?: unknown;\n\t }\n\t| {\n\t\t\treadonly fallback: { readonly kind: \"block\"; readonly reason: string };\n\t\t\treadonly kind: \"ask\";\n\t\t\treadonly nativeRepresentable: false;\n\t\t\treadonly reason?: string;\n\t\t\treadonly source: HookSourceMetadata;\n\t\t\treadonly sourceCommand: string;\n\t };\n\nexport type HookDispatchSkipped = {\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handler: ExecutableHookHandler;\n\treadonly reason: \"disabled\" | \"untrusted\" | \"unsafe\";\n\treadonly record: HookTrustRecord;\n};\n\nexport type HookDispatchSummary = {\n\treadonly completionIndex: number;\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handler: ExecutableHookHandler;\n\treadonly output: ParsedHookOutput[\"output\"];\n\treadonly run: CommandHookRunResult;\n};\n\nexport type HookDispatchResult = {\n\treadonly decision: HookDispatchDecision;\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly executableHandlers: readonly ExecutableHookHandler[];\n\treadonly matchedHandlers: readonly ExecutableHookHandler[];\n\treadonly skipped: readonly HookDispatchSkipped[];\n\treadonly summaries: readonly HookDispatchSummary[];\n};\n\nexport type HookDispatchOptions = {\n\treadonly cwd: string;\n\treadonly envPassthrough?: readonly string[];\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly input: HookInputWire;\n\treadonly onRunningHandlersChange?: (running: readonly ExecutableHookHandler[]) => void;\n\treadonly outputPolicy?: HookOutputPolicy;\n\treadonly runCommand?: HookCommandRunner;\n\treadonly signal?: AbortSignal;\n\treadonly sourceEnv?: NodeJS.ProcessEnv;\n\treadonly trustOptions?: HookTrustOptions;\n\treadonly trustState: HookTrustState;\n};\n\ntype OrderedHandler = {\n\treadonly declarationIndex: number;\n\treadonly handler: ExecutableHookHandler;\n};\n\ntype RunnableHandler = OrderedHandler & {\n\treadonly record: HookTrustRecord;\n};\n\nexport async function dispatchHookEvent(options: HookDispatchOptions): Promise<HookDispatchResult> {\n\tconst match = matchingHookHandlers(options.input, options.handlers);\n\tconst ordered = declarationOrdered(match.handlers);\n\tconst selected = selectExecutableHandlers(ordered, options.trustState, options.trustOptions);\n\tlet nextCompletionIndex = 0;\n\tconst runner = options.runCommand ?? runCommandHook;\n\tconst notifyRunningChange = options.onRunningHandlersChange;\n\tconst runningHandlers: ExecutableHookHandler[] = [];\n\tconst completed = await Promise.all(\n\t\tselected.runnable.map(async ({ handler, declarationIndex }) => {\n\t\t\tif (notifyRunningChange !== undefined) {\n\t\t\t\trunningHandlers.push(handler);\n\t\t\t\tnotifyRunningChange([...runningHandlers]);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst run = await runner(handler, options.input, {\n\t\t\t\t\tcwd: options.cwd,\n\t\t\t\t\t...(options.envPassthrough === undefined ? {} : { envPassthrough: options.envPassthrough }),\n\t\t\t\t\t...(options.outputPolicy === undefined ? {} : { outputPolicy: options.outputPolicy }),\n\t\t\t\t\t...(options.signal === undefined ? {} : { signal: options.signal }),\n\t\t\t\t\t...(options.sourceEnv === undefined ? {} : { sourceEnv: options.sourceEnv }),\n\t\t\t\t});\n\t\t\t\tconst parsed = parseHookOutput({\n\t\t\t\t\tevent: options.input.event,\n\t\t\t\t\texitCode: run.exitCode ?? 1,\n\t\t\t\t\tsource: handler.source,\n\t\t\t\t\tstderr: run.stderr,\n\t\t\t\t\tstdout: run.stdout,\n\t\t\t\t});\n\t\t\t\tconst completionIndex = nextCompletionIndex;\n\t\t\t\tnextCompletionIndex += 1;\n\t\t\t\treturn { completionIndex, declarationIndex, handler, parsed, run };\n\t\t\t} finally {\n\t\t\t\tif (notifyRunningChange !== undefined) {\n\t\t\t\t\tconst runningIndex = runningHandlers.indexOf(handler);\n\t\t\t\t\tif (runningIndex !== -1) {\n\t\t\t\t\t\trunningHandlers.splice(runningIndex, 1);\n\t\t\t\t\t}\n\t\t\t\t\tnotifyRunningChange([...runningHandlers]);\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t);\n\tconst declarationSummaries = completed\n\t\t.toSorted((left, right) => left.declarationIndex - right.declarationIndex)\n\t\t.map((run) => ({\n\t\t\tcompletionIndex: run.completionIndex,\n\t\t\tdiagnostics: run.parsed.diagnostics,\n\t\t\thandler: run.handler,\n\t\t\toutput: run.parsed.output,\n\t\t\trun: run.run,\n\t\t}));\n\tconst diagnostics = [\n\t\t...match.diagnostics,\n\t\t...selected.skipped.flatMap((skip) => skip.diagnostics),\n\t\t...declarationSummaries.flatMap((summary) => summary.diagnostics),\n\t];\n\treturn {\n\t\tdecision: aggregateDecision(options.input.event, declarationSummaries),\n\t\tdiagnostics,\n\t\texecutableHandlers: selected.runnable.map((item) => item.handler),\n\t\tmatchedHandlers: ordered.map((item) => item.handler),\n\t\tskipped: selected.skipped,\n\t\tsummaries: declarationSummaries,\n\t};\n}\n\nexport function runningHookHandlersStatusLabel(\n\thandlers: readonly ExecutableHookHandler[],\n\tplatform: NodeJS.Platform = process.platform,\n): string {\n\tconst label = handlers.map((handler) => hookHandlerStatusLabel(handler, platform)).join(\" · \");\n\treturn label.length <= 79 ? label : `${label.slice(0, 76)}...`;\n}\n\nfunction hookHandlerStatusLabel(handler: ExecutableHookHandler, platform: NodeJS.Platform): string {\n\tconst raw =\n\t\thandler.config.statusMessage ??\n\t\t(platform === \"win32\" && handler.config.commandWindows !== undefined\n\t\t\t? handler.config.commandWindows\n\t\t\t: handler.config.command);\n\treturn stripAnsi(raw)\n\t\t.replace(/[\\r\\n\\t]+/g, \" \")\n\t\t.replace(/[\\u0000-\\u001f\\u007f]+/g, \"\")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n}\n\nfunction declarationOrdered(handlers: readonly ExecutableHookHandler[]): readonly OrderedHandler[] {\n\treturn handlers\n\t\t.map((handler, index) => ({ declarationIndex: index, handler }))\n\t\t.toSorted(\n\t\t\t(left, right) =>\n\t\t\t\tcompareHandlers(left.handler, right.handler) || left.declarationIndex - right.declarationIndex,\n\t\t);\n}\n\nfunction compareHandlers(left: ExecutableHookHandler, right: ExecutableHookHandler): number {\n\treturn (\n\t\tleft.source.displayOrder - right.source.displayOrder ||\n\t\tleft.groupIndex - right.groupIndex ||\n\t\tleft.handlerIndex - right.handlerIndex\n\t);\n}\n\nfunction selectExecutableHandlers(\n\thandlers: readonly OrderedHandler[],\n\ttrustState: HookTrustState,\n\ttrustOptions: HookTrustOptions | undefined,\n): { readonly runnable: readonly RunnableHandler[]; readonly skipped: readonly HookDispatchSkipped[] } {\n\tconst records = listHookTrustRecords(\n\t\thandlers.map((item) => item.handler),\n\t\ttrustState,\n\t\ttrustOptions,\n\t);\n\tconst runnable: RunnableHandler[] = [];\n\tconst skipped: HookDispatchSkipped[] = [];\n\tfor (const [index, item] of handlers.entries()) {\n\t\tconst record = records[index];\n\t\tif (record === undefined) continue;\n\t\tconst safetyDiagnostics = validateHookHandlerSafety(item.handler);\n\t\tconst unsafe = safetyDiagnostics.some((diagnostic) => diagnostic.severity === \"error\");\n\t\tif (unsafe) {\n\t\t\tskipped.push({ diagnostics: safetyDiagnostics, handler: item.handler, reason: \"unsafe\", record });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!record.enabled) {\n\t\t\tskipped.push({ diagnostics: [], handler: item.handler, reason: \"disabled\", record });\n\t\t\tcontinue;\n\t\t}\n\t\tif (!record.trusted) {\n\t\t\tskipped.push({ diagnostics: [], handler: item.handler, reason: \"untrusted\", record });\n\t\t\tcontinue;\n\t\t}\n\t\trunnable.push({ ...item, record });\n\t}\n\treturn { runnable, skipped };\n}\n\nfunction aggregateDecision(\n\tevent: HookInputWire[\"event\"],\n\tsummaries: readonly HookDispatchSummary[],\n): HookDispatchDecision {\n\tswitch (event) {\n\t\tcase \"PreToolUse\":\n\t\t\treturn aggregatePreToolUseDecision(summaries);\n\t\tcase \"PostToolUse\":\n\t\tcase \"UserPromptSubmit\":\n\t\tcase \"SessionStart\":\n\t\tcase \"PreCompact\":\n\t\tcase \"PostCompact\":\n\t\tcase \"Stop\":\n\t\tcase \"Notification\":\n\t\t\treturn aggregateBlockingDecision(summaries);\n\t}\n}\n\nfunction aggregatePreToolUseDecision(summaries: readonly HookDispatchSummary[]): HookDispatchDecision {\n\tconst blocker = summaries.find(hasBlockingDecision);\n\tif (blocker !== undefined) {\n\t\treturn decisionWithSource(\"block\", blocker, blocker.output.reason);\n\t}\n\tconst ask = summaries.find((summary) => summary.output.decision === \"ask\");\n\tif (ask !== undefined) {\n\t\tconst reason = ask.output.reason ?? \"Hook requested manual approval.\";\n\t\treturn {\n\t\t\tfallback: { kind: \"block\", reason },\n\t\t\tkind: \"ask\",\n\t\t\tnativeRepresentable: false,\n\t\t\t...reasonField(ask.output.reason),\n\t\t\tsource: ask.handler.source,\n\t\t\tsourceCommand: ask.handler.config.command,\n\t\t};\n\t}\n\tlet allowSummary: HookDispatchSummary | undefined;\n\tfor (const summary of summaries) {\n\t\tif (summary.output.decision === \"allow\" || summary.output.decision === \"approve\") allowSummary = summary;\n\t}\n\tif (allowSummary !== undefined) {\n\t\treturn decisionWithSource(\"allow\", allowSummary, undefined, allowSummary.output.updatedInput);\n\t}\n\treturn { kind: \"none\" };\n}\n\nfunction aggregateBlockingDecision(summaries: readonly HookDispatchSummary[]): HookDispatchDecision {\n\tconst blocker = summaries.find(hasBlockingDecision);\n\tif (blocker !== undefined) {\n\t\treturn decisionWithSource(\"block\", blocker, blocker.output.reason ?? blocker.output.stopReason);\n\t}\n\treturn { kind: \"none\" };\n}\n\nfunction hasBlockingDecision(summary: HookDispatchSummary): boolean {\n\treturn summary.output.decision === \"block\" || summary.output.decision === \"deny\";\n}\n\nfunction decisionWithSource(\n\tkind: \"allow\" | \"block\",\n\tsummary: HookDispatchSummary,\n\treason: string | undefined,\n\tupdatedInput?: unknown,\n): HookDispatchDecision {\n\treturn {\n\t\tkind,\n\t\t...reasonField(reason),\n\t\tsource: summary.handler.source,\n\t\tsourceCommand: summary.handler.config.command,\n\t\t...updatedInputField(updatedInput),\n\t};\n}\n\nfunction reasonField(reason: string | undefined): { readonly reason?: string } {\n\tif (reason === undefined) {\n\t\treturn {};\n\t}\n\treturn { reason };\n}\n\nfunction updatedInputField(updatedInput: unknown): { readonly updatedInput?: unknown } {\n\tif (updatedInput === undefined) {\n\t\treturn {};\n\t}\n\treturn { updatedInput };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA+B,YAAY,EAAuC,MAAM,gBAAgB,CAAC;AAqCrH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EACX,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAiN7D;AAmBD,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA+B,YAAY,EAAuC,MAAM,gBAAgB,CAAC;AA0CrH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EACX,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA0P7D;AAmBD,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,GAC7B,MAAM,YAAY,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
+ import { formatResultText } from "../ask-user/format.js";
3
+ import { ASK_USER_SETTLED_EVENT } from "../ask-user/notify.js";
2
4
  import { registerHooksCommand } from "./command.js";
3
- import { loadHookConfigSources } from "./config-loader.js";
5
+ import { loadHookConfigSources, loadHookConfigSourcesAsync } from "./config-loader.js";
4
6
  import { dispatchHookEvent, runningHookHandlersStatusLabel } from "./dispatcher.js";
5
- import { buildPostCompactHookInput, buildPreCompactHookInput, buildSessionStartHookInput, dispatchLifecycleHookEvent, postCompactResultDetails, preCompactResultDetails, recordLifecycleHookResult, sessionBeforeCompactResult, sessionStartResultDetails, } from "./lifecycle-adapter.js";
7
+ import { buildNotificationHookInput, buildPostCompactHookInput, buildPreCompactHookInput, buildSessionStartHookInput, dispatchLifecycleHookEvent, dispatchNotificationHookEvent, notificationResultDetails, postCompactResultDetails, preCompactResultDetails, recordLifecycleHookResult, sessionBeforeCompactResult, sessionStartResultDetails, } from "./lifecycle-adapter.js";
6
8
  import { appendSystemMessages, buildUserPromptHookInput, formatPromptContextMessage, HOOK_CUSTOM_MESSAGE_TYPE, promptBlockReasonFromResult, promptContextFromResult, safeDiagnosticDetails, } from "./prompt-adapter.js";
7
9
  import { applyStopHookResult, buildStopHookInput, createStopTurnTracker } from "./stop-adapter.js";
8
10
  import { applyPostToolUseResult, applyPreToolUseResult, buildPostToolUseHookInput, buildPreToolUseHookInput, toolContextsFromResult, } from "./tool-adapter.js";
@@ -36,6 +38,43 @@ export default function hooksExtension(pi) {
36
38
  const trust = mergeTrustStates(storage.read("global"), ctx.isProjectTrusted() ? storage.read("project") : emptyHookTrustState());
37
39
  return { parsed, trust, storage };
38
40
  };
41
+ pi.events.on(ASK_USER_SETTLED_EVENT, async (data) => {
42
+ const { ctx, request, response, variant } = data;
43
+ const headers = request.questions.map((question) => question.header).join(", ");
44
+ // Capture session identity before asynchronous I/O or a session switch.
45
+ const input = buildNotificationHookInput({
46
+ kind: response.status === "timed_out" ? "ask-user-timeout" : "ask-user-settled",
47
+ message: response.status === "timed_out"
48
+ ? `Question timed out (${headers}): ${formatResultText(variant, response, request.questions)}`
49
+ : `Question ${response.status} (${headers})`,
50
+ requestId: request.requestId,
51
+ source: "ask-user",
52
+ status: response.status,
53
+ title: headers,
54
+ }, ctx);
55
+ const sources = ctx.getLoadedHookSources?.() ?? fallbackHookSources(ctx.cwd);
56
+ const parsed = await loadHookConfigSourcesAsync(sources);
57
+ const handlers = parsed.executableHandlers.filter((handler) => handler.event === "Notification");
58
+ if (handlers.length === 0)
59
+ return;
60
+ const storage = new FileHookStateStorage({ agentDir: sources.agentDir, cwd: sources.cwd });
61
+ const [globalTrust, projectTrust] = await Promise.all([
62
+ storage.readAsync("global"),
63
+ ctx.isProjectTrusted() ? storage.readAsync("project") : emptyHookTrustState(),
64
+ ]);
65
+ const result = await dispatchNotificationHookEvent({
66
+ cwd: ctx.cwd,
67
+ handlers,
68
+ input,
69
+ ...(ctx.signal === undefined ? {} : { signal: ctx.signal }),
70
+ trustState: mergeTrustStates(globalTrust, projectTrust),
71
+ });
72
+ const details = notificationResultDetails(result);
73
+ recordLifecycleHookResult(pi, "Notification", {
74
+ ...details,
75
+ diagnostics: [...parsed.diagnostics, ...details.diagnostics],
76
+ });
77
+ });
39
78
  pi.on("session_start", async (event, ctx) => {
40
79
  const state = refreshState(ctx);
41
80
  const input = buildSessionStartHookInput(event, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport type { BeforeAgentStartEventResult, ExtensionAPI, ExtensionContext, LoadedHookSources } from \"../../types.ts\";\nimport { registerHooksCommand } from \"./command.ts\";\nimport { loadHookConfigSources } from \"./config-loader.ts\";\nimport { dispatchHookEvent, runningHookHandlersStatusLabel } from \"./dispatcher.ts\";\nimport {\n\tbuildPostCompactHookInput,\n\tbuildPreCompactHookInput,\n\tbuildSessionStartHookInput,\n\tdispatchLifecycleHookEvent,\n\tpostCompactResultDetails,\n\tpreCompactResultDetails,\n\trecordLifecycleHookResult,\n\tsessionBeforeCompactResult,\n\tsessionStartResultDetails,\n} from \"./lifecycle-adapter.ts\";\nimport {\n\tappendSystemMessages,\n\tbuildUserPromptHookInput,\n\tformatPromptContextMessage,\n\tHOOK_CUSTOM_MESSAGE_TYPE,\n\ttype PendingPromptHookContext,\n\tpromptBlockReasonFromResult,\n\tpromptContextFromResult,\n\tsafeDiagnosticDetails,\n} from \"./prompt-adapter.ts\";\nimport { applyStopHookResult, buildStopHookInput, createStopTurnTracker } from \"./stop-adapter.ts\";\nimport {\n\tapplyPostToolUseResult,\n\tapplyPreToolUseResult,\n\tbuildPostToolUseHookInput,\n\tbuildPreToolUseHookInput,\n\ttoolContextsFromResult,\n} from \"./tool-adapter.ts\";\nimport { emptyHookTrustState } from \"./trust.ts\";\nimport { FileHookStateStorage } from \"./trust-storage.ts\";\nimport type { HookTrustState } from \"./types.ts\";\n\nexport { parseHookConfig } from \"./schema.ts\";\nexport type {\n\tCommandHookConfig,\n\tExecutableHookHandler,\n\tHookDiagnostic,\n\tHookDiagnosticCode,\n\tHookInputWire,\n\tHookOutputWire,\n\tHookRuntimeState,\n\tHookSourceMetadata,\n\tHookTrustEntry,\n\tHookTrustState,\n\tParsedHookConfig,\n\tSupportedHookEvent,\n\tUnsupportedKnownHookEvent,\n} from \"./types.ts\";\n\nexport default function hooksExtension(pi: ExtensionAPI): void {\n\tconst pendingPromptContexts: PendingPromptHookContext[] = [];\n\tconst pendingPreToolContexts = new Map<string, readonly string[]>();\n\tconst stopTurnTracker = createStopTurnTracker();\n\n\tconst refreshState = (ctx: ExtensionContext) => {\n\t\tconst sources = ctx.getLoadedHookSources?.() ?? fallbackHookSources(ctx.cwd);\n\t\tconst parsed = loadHookConfigSources({\n\t\t\tagentDir: sources.agentDir,\n\t\t\tcwd: sources.cwd,\n\t\t\tfileSystem: {\n\t\t\t\treadTextFile(path) {\n\t\t\t\t\treturn existsSync(path) ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\t\t},\n\t\t\t},\n\t\t\tglobalHookSourcePaths: sources.globalHookSourcePaths,\n\t\t\tglobalHooksPath: sources.globalHooksPath,\n\t\t\tglobalSettingsHooks: sources.globalSettingsHooks,\n\t\t\tpreSessionHookSourcePaths: sources.preSessionHookSourcePaths,\n\t\t\tprojectHookSourcePaths: sources.projectHookSourcePaths,\n\t\t\tprojectHooksPath: sources.projectHooksPath,\n\t\t\tprojectSettingsHooks: sources.projectSettingsHooks,\n\t\t\truntimeHookSourcePaths: sources.runtimeHookSourcePaths,\n\t\t});\n\t\tconst storage = new FileHookStateStorage({ agentDir: sources.agentDir, cwd: sources.cwd });\n\t\tconst trust = mergeTrustStates(\n\t\t\tstorage.read(\"global\"),\n\t\t\tctx.isProjectTrusted() ? storage.read(\"project\") : emptyHookTrustState(),\n\t\t);\n\t\treturn { parsed, trust, storage };\n\t};\n\n\tpi.on(\"session_start\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst input = buildSessionStartHookInput(event, ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput,\n\t\t\tmatcherInputs: [\"SessionStart\", event.reason],\n\t\t\t...(ctx.signal === undefined ? {} : { signal: ctx.signal }),\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\trecordLifecycleHookResult(pi, \"SessionStart\", sessionStartResultDetails(result));\n\t});\n\n\tpi.on(\"input\", async (event, ctx) => {\n\t\tif (event.source === \"extension\") return undefined;\n\t\tstopTurnTracker.reset();\n\t\tpendingPromptContexts.splice(0);\n\t\tconst state = refreshState(ctx);\n\t\tconst input = buildUserPromptHookInput({\n\t\t\tcwd: ctx.cwd,\n\t\t\tpermissionMode: \"default\",\n\t\t\tprompt: event.text,\n\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\ttranscriptPath: ctx.sessionManager.getSessionFile(),\n\t\t});\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput,\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tif (result.decision.kind === \"block\") {\n\t\t\tconst reason = promptBlockReasonFromResult(result);\n\t\t\tctx.ui.notify(reason, \"warning\");\n\t\t\tpi.sendMessage(\n\t\t\t\t{\n\t\t\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\t\t\tcontent: reason,\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tdetails: {\n\t\t\t\t\t\tdecision: \"block\",\n\t\t\t\t\t\tevent: \"UserPromptSubmit\",\n\t\t\t\t\t\tsourcePath: result.decision.source.sourcePath,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ triggerTurn: false },\n\t\t\t);\n\t\t\treturn { action: \"handled\" };\n\t\t}\n\t\tif (ctx.isIdle()) {\n\t\t\tconst pending = promptContextFromResult(result);\n\t\t\tif (pending !== undefined) {\n\t\t\t\tpendingPromptContexts.push(pending);\n\t\t\t}\n\t\t}\n\t\treturn { action: \"continue\" };\n\t});\n\n\tpi.on(\"before_agent_start\", async (event) => {\n\t\tconst pending = pendingPromptContexts.shift();\n\t\tif (pending === undefined) return undefined;\n\n\t\tconst messageContent = formatPromptContextMessage(pending);\n\t\tconst systemPrompt = appendSystemMessages(event.systemPrompt, pending.systemMessages);\n\t\tif (messageContent === undefined && systemPrompt === event.systemPrompt) return undefined;\n\n\t\tconst result: BeforeAgentStartEventResult = {};\n\t\tif (messageContent !== undefined) {\n\t\t\tresult.message = {\n\t\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\t\tcontent: messageContent,\n\t\t\t\tdisplay: false,\n\t\t\t\tdetails: {\n\t\t\t\t\tevent: \"UserPromptSubmit\",\n\t\t\t\t\tdiagnostics: pending.diagnostics.map(safeDiagnosticDetails),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (systemPrompt !== event.systemPrompt) {\n\t\t\tresult.systemPrompt = systemPrompt;\n\t\t}\n\t\treturn result;\n\t});\n\n\tpi.on(\"tool_call\", async (event, ctx) => {\n\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPreToolUseHookInput(event, ctx),\n\t\t\tonRunningHandlersChange: (running) => {\n\t\t\t\tif (running.length === 0) return;\n\t\t\t\tctx.updateToolHookStatus?.(runningHookHandlersStatusLabel(running));\n\t\t\t},\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tconst toolResult = applyPreToolUseResult(event, result);\n\t\tif (toolResult?.block) {\n\t\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\t\treturn toolResult;\n\t\t}\n\t\tconst contexts = toolContextsFromResult(result);\n\t\tif (contexts.length > 0) {\n\t\t\tpendingPreToolContexts.set(event.toolCallId, contexts);\n\t\t}\n\t\treturn toolResult;\n\t});\n\n\tpi.on(\"tool_result\", async (event, ctx) => {\n\t\tconst preToolContexts = pendingPreToolContexts.get(event.toolCallId) ?? [];\n\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPostToolUseHookInput(event, ctx),\n\t\t\tonRunningHandlersChange: (running) => {\n\t\t\t\tif (running.length === 0) return;\n\t\t\t\tctx.updateToolHookStatus?.(runningHookHandlersStatusLabel(running));\n\t\t\t},\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\treturn applyPostToolUseResult(event, result, preToolContexts);\n\t});\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPreCompactHookInput(event, ctx),\n\t\t\tmatcherInputs: [\"PreCompact\", event.reason],\n\t\t\tsignal: event.signal,\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tconst details = preCompactResultDetails(result);\n\t\trecordLifecycleHookResult(pi, \"PreCompact\", details, { compactionRequestId: event.requestId });\n\t\treturn sessionBeforeCompactResult(details);\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tif (!event.accepted) return undefined;\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPostCompactHookInput(event, ctx),\n\t\t\tmatcherInputs: [\"PostCompact\", event.reason],\n\t\t\t...(ctx.signal === undefined ? {} : { signal: ctx.signal }),\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\trecordLifecycleHookResult(pi, \"PostCompact\", postCompactResultDetails(result));\n\t\treturn undefined;\n\t});\n\n\tpi.on(\"agent_end\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildStopHookInput(event, ctx),\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tawait applyStopHookResult(pi, ctx, result, stopTurnTracker.turnKey(ctx));\n\t});\n\n\tregisterHooksCommand(pi, refreshState);\n}\n\nfunction mergeTrustStates(globalState: HookTrustState, projectState: HookTrustState): HookTrustState {\n\treturn { version: 1, hooks: { ...globalState.hooks, ...projectState.hooks } };\n}\n\nfunction fallbackHookSources(cwd: string): LoadedHookSources {\n\treturn {\n\t\tagentDir: cwd,\n\t\tcwd,\n\t\tglobalHookSourcePaths: [],\n\t\tglobalHooksPath: `${cwd}/hooks.json`,\n\t\tpreSessionHookSourcePaths: [],\n\t\tprojectHookSourcePaths: [],\n\t\tprojectHooksPath: `${cwd}/.senpi/hooks.json`,\n\t\truntimeHookSourcePaths: [],\n\t};\n}\n\nexport {\n\tSUPPORTED_HOOK_EVENTS,\n\tUNSUPPORTED_HANDLER_TYPES,\n\tUNSUPPORTED_KNOWN_HOOK_EVENTS,\n} from \"./types.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport type { BeforeAgentStartEventResult, ExtensionAPI, ExtensionContext, LoadedHookSources } from \"../../types.ts\";\nimport { formatResultText } from \"../ask-user/format.ts\";\nimport { ASK_USER_SETTLED_EVENT, type AskUserSettledEvent } from \"../ask-user/notify.ts\";\nimport { registerHooksCommand } from \"./command.ts\";\nimport { loadHookConfigSources, loadHookConfigSourcesAsync } from \"./config-loader.ts\";\nimport { dispatchHookEvent, runningHookHandlersStatusLabel } from \"./dispatcher.ts\";\nimport {\n\tbuildNotificationHookInput,\n\tbuildPostCompactHookInput,\n\tbuildPreCompactHookInput,\n\tbuildSessionStartHookInput,\n\tdispatchLifecycleHookEvent,\n\tdispatchNotificationHookEvent,\n\tnotificationResultDetails,\n\tpostCompactResultDetails,\n\tpreCompactResultDetails,\n\trecordLifecycleHookResult,\n\tsessionBeforeCompactResult,\n\tsessionStartResultDetails,\n} from \"./lifecycle-adapter.ts\";\nimport {\n\tappendSystemMessages,\n\tbuildUserPromptHookInput,\n\tformatPromptContextMessage,\n\tHOOK_CUSTOM_MESSAGE_TYPE,\n\ttype PendingPromptHookContext,\n\tpromptBlockReasonFromResult,\n\tpromptContextFromResult,\n\tsafeDiagnosticDetails,\n} from \"./prompt-adapter.ts\";\nimport { applyStopHookResult, buildStopHookInput, createStopTurnTracker } from \"./stop-adapter.ts\";\nimport {\n\tapplyPostToolUseResult,\n\tapplyPreToolUseResult,\n\tbuildPostToolUseHookInput,\n\tbuildPreToolUseHookInput,\n\ttoolContextsFromResult,\n} from \"./tool-adapter.ts\";\nimport { emptyHookTrustState } from \"./trust.ts\";\nimport { FileHookStateStorage } from \"./trust-storage.ts\";\nimport type { HookTrustState } from \"./types.ts\";\n\nexport { parseHookConfig } from \"./schema.ts\";\nexport type {\n\tCommandHookConfig,\n\tExecutableHookHandler,\n\tHookDiagnostic,\n\tHookDiagnosticCode,\n\tHookInputWire,\n\tHookOutputWire,\n\tHookRuntimeState,\n\tHookSourceMetadata,\n\tHookTrustEntry,\n\tHookTrustState,\n\tParsedHookConfig,\n\tSupportedHookEvent,\n\tUnsupportedKnownHookEvent,\n} from \"./types.ts\";\n\nexport default function hooksExtension(pi: ExtensionAPI): void {\n\tconst pendingPromptContexts: PendingPromptHookContext[] = [];\n\tconst pendingPreToolContexts = new Map<string, readonly string[]>();\n\tconst stopTurnTracker = createStopTurnTracker();\n\n\tconst refreshState = (ctx: ExtensionContext) => {\n\t\tconst sources = ctx.getLoadedHookSources?.() ?? fallbackHookSources(ctx.cwd);\n\t\tconst parsed = loadHookConfigSources({\n\t\t\tagentDir: sources.agentDir,\n\t\t\tcwd: sources.cwd,\n\t\t\tfileSystem: {\n\t\t\t\treadTextFile(path) {\n\t\t\t\t\treturn existsSync(path) ? readFileSync(path, \"utf-8\") : undefined;\n\t\t\t\t},\n\t\t\t},\n\t\t\tglobalHookSourcePaths: sources.globalHookSourcePaths,\n\t\t\tglobalHooksPath: sources.globalHooksPath,\n\t\t\tglobalSettingsHooks: sources.globalSettingsHooks,\n\t\t\tpreSessionHookSourcePaths: sources.preSessionHookSourcePaths,\n\t\t\tprojectHookSourcePaths: sources.projectHookSourcePaths,\n\t\t\tprojectHooksPath: sources.projectHooksPath,\n\t\t\tprojectSettingsHooks: sources.projectSettingsHooks,\n\t\t\truntimeHookSourcePaths: sources.runtimeHookSourcePaths,\n\t\t});\n\t\tconst storage = new FileHookStateStorage({ agentDir: sources.agentDir, cwd: sources.cwd });\n\t\tconst trust = mergeTrustStates(\n\t\t\tstorage.read(\"global\"),\n\t\t\tctx.isProjectTrusted() ? storage.read(\"project\") : emptyHookTrustState(),\n\t\t);\n\t\treturn { parsed, trust, storage };\n\t};\n\n\tpi.events.on(ASK_USER_SETTLED_EVENT, async (data) => {\n\t\tconst { ctx, request, response, variant } = data as AskUserSettledEvent;\n\t\tconst headers = request.questions.map((question) => question.header).join(\", \");\n\t\t// Capture session identity before asynchronous I/O or a session switch.\n\t\tconst input = buildNotificationHookInput(\n\t\t\t{\n\t\t\t\tkind: response.status === \"timed_out\" ? \"ask-user-timeout\" : \"ask-user-settled\",\n\t\t\t\tmessage:\n\t\t\t\t\tresponse.status === \"timed_out\"\n\t\t\t\t\t\t? `Question timed out (${headers}): ${formatResultText(variant, response, request.questions)}`\n\t\t\t\t\t\t: `Question ${response.status} (${headers})`,\n\t\t\t\trequestId: request.requestId,\n\t\t\t\tsource: \"ask-user\",\n\t\t\t\tstatus: response.status,\n\t\t\t\ttitle: headers,\n\t\t\t},\n\t\t\tctx,\n\t\t);\n\t\tconst sources = ctx.getLoadedHookSources?.() ?? fallbackHookSources(ctx.cwd);\n\t\tconst parsed = await loadHookConfigSourcesAsync(sources);\n\t\tconst handlers = parsed.executableHandlers.filter((handler) => handler.event === \"Notification\");\n\t\tif (handlers.length === 0) return;\n\t\tconst storage = new FileHookStateStorage({ agentDir: sources.agentDir, cwd: sources.cwd });\n\t\tconst [globalTrust, projectTrust] = await Promise.all([\n\t\t\tstorage.readAsync(\"global\"),\n\t\t\tctx.isProjectTrusted() ? storage.readAsync(\"project\") : emptyHookTrustState(),\n\t\t]);\n\t\tconst result = await dispatchNotificationHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers,\n\t\t\tinput,\n\t\t\t...(ctx.signal === undefined ? {} : { signal: ctx.signal }),\n\t\t\ttrustState: mergeTrustStates(globalTrust, projectTrust),\n\t\t});\n\t\tconst details = notificationResultDetails(result);\n\t\trecordLifecycleHookResult(pi, \"Notification\", {\n\t\t\t...details,\n\t\t\tdiagnostics: [...parsed.diagnostics, ...details.diagnostics],\n\t\t});\n\t});\n\n\tpi.on(\"session_start\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst input = buildSessionStartHookInput(event, ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput,\n\t\t\tmatcherInputs: [\"SessionStart\", event.reason],\n\t\t\t...(ctx.signal === undefined ? {} : { signal: ctx.signal }),\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\trecordLifecycleHookResult(pi, \"SessionStart\", sessionStartResultDetails(result));\n\t});\n\n\tpi.on(\"input\", async (event, ctx) => {\n\t\tif (event.source === \"extension\") return undefined;\n\t\tstopTurnTracker.reset();\n\t\tpendingPromptContexts.splice(0);\n\t\tconst state = refreshState(ctx);\n\t\tconst input = buildUserPromptHookInput({\n\t\t\tcwd: ctx.cwd,\n\t\t\tpermissionMode: \"default\",\n\t\t\tprompt: event.text,\n\t\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\t\ttranscriptPath: ctx.sessionManager.getSessionFile(),\n\t\t});\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput,\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tif (result.decision.kind === \"block\") {\n\t\t\tconst reason = promptBlockReasonFromResult(result);\n\t\t\tctx.ui.notify(reason, \"warning\");\n\t\t\tpi.sendMessage(\n\t\t\t\t{\n\t\t\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\t\t\tcontent: reason,\n\t\t\t\t\tdisplay: false,\n\t\t\t\t\tdetails: {\n\t\t\t\t\t\tdecision: \"block\",\n\t\t\t\t\t\tevent: \"UserPromptSubmit\",\n\t\t\t\t\t\tsourcePath: result.decision.source.sourcePath,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ triggerTurn: false },\n\t\t\t);\n\t\t\treturn { action: \"handled\" };\n\t\t}\n\t\tif (ctx.isIdle()) {\n\t\t\tconst pending = promptContextFromResult(result);\n\t\t\tif (pending !== undefined) {\n\t\t\t\tpendingPromptContexts.push(pending);\n\t\t\t}\n\t\t}\n\t\treturn { action: \"continue\" };\n\t});\n\n\tpi.on(\"before_agent_start\", async (event) => {\n\t\tconst pending = pendingPromptContexts.shift();\n\t\tif (pending === undefined) return undefined;\n\n\t\tconst messageContent = formatPromptContextMessage(pending);\n\t\tconst systemPrompt = appendSystemMessages(event.systemPrompt, pending.systemMessages);\n\t\tif (messageContent === undefined && systemPrompt === event.systemPrompt) return undefined;\n\n\t\tconst result: BeforeAgentStartEventResult = {};\n\t\tif (messageContent !== undefined) {\n\t\t\tresult.message = {\n\t\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\t\tcontent: messageContent,\n\t\t\t\tdisplay: false,\n\t\t\t\tdetails: {\n\t\t\t\t\tevent: \"UserPromptSubmit\",\n\t\t\t\t\tdiagnostics: pending.diagnostics.map(safeDiagnosticDetails),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tif (systemPrompt !== event.systemPrompt) {\n\t\t\tresult.systemPrompt = systemPrompt;\n\t\t}\n\t\treturn result;\n\t});\n\n\tpi.on(\"tool_call\", async (event, ctx) => {\n\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPreToolUseHookInput(event, ctx),\n\t\t\tonRunningHandlersChange: (running) => {\n\t\t\t\tif (running.length === 0) return;\n\t\t\t\tctx.updateToolHookStatus?.(runningHookHandlersStatusLabel(running));\n\t\t\t},\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tconst toolResult = applyPreToolUseResult(event, result);\n\t\tif (toolResult?.block) {\n\t\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\t\treturn toolResult;\n\t\t}\n\t\tconst contexts = toolContextsFromResult(result);\n\t\tif (contexts.length > 0) {\n\t\t\tpendingPreToolContexts.set(event.toolCallId, contexts);\n\t\t}\n\t\treturn toolResult;\n\t});\n\n\tpi.on(\"tool_result\", async (event, ctx) => {\n\t\tconst preToolContexts = pendingPreToolContexts.get(event.toolCallId) ?? [];\n\t\tpendingPreToolContexts.delete(event.toolCallId);\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPostToolUseHookInput(event, ctx),\n\t\t\tonRunningHandlersChange: (running) => {\n\t\t\t\tif (running.length === 0) return;\n\t\t\t\tctx.updateToolHookStatus?.(runningHookHandlersStatusLabel(running));\n\t\t\t},\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\treturn applyPostToolUseResult(event, result, preToolContexts);\n\t});\n\n\tpi.on(\"session_before_compact\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPreCompactHookInput(event, ctx),\n\t\t\tmatcherInputs: [\"PreCompact\", event.reason],\n\t\t\tsignal: event.signal,\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tconst details = preCompactResultDetails(result);\n\t\trecordLifecycleHookResult(pi, \"PreCompact\", details, { compactionRequestId: event.requestId });\n\t\treturn sessionBeforeCompactResult(details);\n\t});\n\n\tpi.on(\"session_compact\", async (event, ctx) => {\n\t\tif (!event.accepted) return undefined;\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchLifecycleHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildPostCompactHookInput(event, ctx),\n\t\t\tmatcherInputs: [\"PostCompact\", event.reason],\n\t\t\t...(ctx.signal === undefined ? {} : { signal: ctx.signal }),\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\trecordLifecycleHookResult(pi, \"PostCompact\", postCompactResultDetails(result));\n\t\treturn undefined;\n\t});\n\n\tpi.on(\"agent_end\", async (event, ctx) => {\n\t\tconst state = refreshState(ctx);\n\t\tconst result = await dispatchHookEvent({\n\t\t\tcwd: ctx.cwd,\n\t\t\thandlers: state.parsed.executableHandlers,\n\t\t\tinput: buildStopHookInput(event, ctx),\n\t\t\tsignal: ctx.signal,\n\t\t\ttrustOptions: { platform: process.platform },\n\t\t\ttrustState: state.trust,\n\t\t});\n\t\tawait applyStopHookResult(pi, ctx, result, stopTurnTracker.turnKey(ctx));\n\t});\n\n\tregisterHooksCommand(pi, refreshState);\n}\n\nfunction mergeTrustStates(globalState: HookTrustState, projectState: HookTrustState): HookTrustState {\n\treturn { version: 1, hooks: { ...globalState.hooks, ...projectState.hooks } };\n}\n\nfunction fallbackHookSources(cwd: string): LoadedHookSources {\n\treturn {\n\t\tagentDir: cwd,\n\t\tcwd,\n\t\tglobalHookSourcePaths: [],\n\t\tglobalHooksPath: `${cwd}/hooks.json`,\n\t\tpreSessionHookSourcePaths: [],\n\t\tprojectHookSourcePaths: [],\n\t\tprojectHooksPath: `${cwd}/.senpi/hooks.json`,\n\t\truntimeHookSourcePaths: [],\n\t};\n}\n\nexport {\n\tSUPPORTED_HOOK_EVENTS,\n\tUNSUPPORTED_HANDLER_TYPES,\n\tUNSUPPORTED_KNOWN_HOOK_EVENTS,\n} from \"./types.ts\";\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { ExtensionAPI, ExtensionContext, SessionBeforeCompactEvent, SessionBeforeCompactResult, SessionCompactEvent, SessionStartEvent } from "../../types.ts";
2
2
  import { type HookDispatchResult } from "./dispatcher.ts";
3
3
  import type { ExecutableHookHandler, HookDiagnostic, HookInputWire, HookTrustState } from "./types.ts";
4
- type LifecycleHookEvent = "SessionStart" | "PreCompact" | "PostCompact";
4
+ type LifecycleHookEvent = "SessionStart" | "PreCompact" | "PostCompact" | "Notification";
5
5
  type LifecycleDispatchOptions = {
6
6
  readonly cwd: string;
7
7
  readonly handlers: readonly ExecutableHookHandler[];
@@ -18,6 +18,23 @@ type LifecycleResultDetails = {
18
18
  };
19
19
  export declare function buildSessionStartHookInput(event: SessionStartEvent, ctx: ExtensionContext): HookInputWire;
20
20
  export declare function buildPreCompactHookInput(event: SessionBeforeCompactEvent, ctx: ExtensionContext): HookInputWire;
21
+ export type NotificationHookInput = {
22
+ readonly message: string;
23
+ readonly kind: string;
24
+ readonly title?: string;
25
+ readonly source?: string;
26
+ readonly requestId?: string;
27
+ readonly status?: string;
28
+ };
29
+ export declare function buildNotificationHookInput(input: NotificationHookInput, ctx: ExtensionContext): HookInputWire;
30
+ export declare function dispatchNotificationHookEvent(options: {
31
+ cwd: string;
32
+ handlers: readonly ExecutableHookHandler[];
33
+ input: HookInputWire;
34
+ signal?: AbortSignal;
35
+ trustState: HookTrustState;
36
+ }): Promise<HookDispatchResult | undefined>;
37
+ export declare function notificationResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails;
21
38
  export declare function buildPostCompactHookInput(event: SessionCompactEvent, ctx: ExtensionContext): HookInputWire;
22
39
  export declare function dispatchLifecycleHookEvent(options: LifecycleDispatchOptions): Promise<HookDispatchResult | undefined>;
23
40
  export declare function sessionStartResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/lifecycle-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvG,KAAK,kBAAkB,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;AAExE,KAAK,wBAAwB,GAAG;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACpC,CAAC;AAcF,KAAK,sBAAsB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAWzG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,yBAAyB,EAAE,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAa/G;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB,GAAG,aAAa,CAa1G;AAED,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,wBAAwB,GAC/B,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAuBzC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,sBAAsB,CAExG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,sBAAsB,CActG;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GAAG,sBAAsB,CAEvG;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,sBAAsB,GAAG,0BAA0B,GAAG,SAAS,CAElH;AAED,wBAAgB,yBAAyB,CACxC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,EACrC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,IAAI,CAiBN"}
1
+ {"version":3,"file":"lifecycle-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/lifecycle-adapter.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,39 @@ export function buildPreCompactHookInput(event, ctx) {
28
28
  ...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),
29
29
  };
30
30
  }
31
+ export function buildNotificationHookInput(input, ctx) {
32
+ const transcriptPath = ctx.sessionManager.getSessionFile();
33
+ return {
34
+ cwd: ctx.cwd,
35
+ event: "Notification",
36
+ hook_event_name: "Notification",
37
+ kind: input.kind,
38
+ message: input.message,
39
+ session_id: ctx.sessionManager.getSessionId(),
40
+ ...(input.title === undefined ? {} : { title: input.title }),
41
+ ...(input.source === undefined ? {} : { notification_source: input.source }),
42
+ ...(input.requestId === undefined ? {} : { request_id: input.requestId }),
43
+ ...(input.status === undefined ? {} : { status: input.status }),
44
+ ...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),
45
+ };
46
+ }
47
+ export async function dispatchNotificationHookEvent(options) {
48
+ return dispatchLifecycleHookEvent({
49
+ cwd: options.cwd,
50
+ handlers: options.handlers,
51
+ input: options.input,
52
+ matcherInputs: ["Notification"],
53
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
54
+ trustState: options.trustState,
55
+ });
56
+ }
57
+ export function notificationResultDetails(result) {
58
+ return {
59
+ cancel: false,
60
+ contexts: result?.summaries.flatMap((summary) => summary.output.additionalContext === undefined ? [] : [summary.output.additionalContext]) ?? [],
61
+ diagnostics: result === undefined ? [] : [...result.diagnostics, ...commandFailureDiagnostics("Notification", result)],
62
+ };
63
+ }
31
64
  export function buildPostCompactHookInput(event, ctx) {
32
65
  const transcriptPath = ctx.sessionManager.getSessionFile();
33
66
  return {
@@ -124,7 +157,9 @@ function selectLifecycleHandlers(options) {
124
157
  }, handler.source));
125
158
  continue;
126
159
  }
127
- const match = matchesLifecycleMatcher(handler, options.matcherInputs);
160
+ const match = handler.event === "Notification"
161
+ ? { diagnostics: [], matched: true }
162
+ : matchesLifecycleMatcher(handler, options.matcherInputs);
128
163
  diagnostics.push(...match.diagnostics);
129
164
  if (match.matched)
130
165
  matched.push(handler);
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-adapter.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/lifecycle-adapter.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAA2B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAiCrF,MAAM,UAAU,0BAA0B,CAAC,KAAwB,EAAE,GAAqB;IACzF,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC3D,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,cAAc;QACrB,eAAe,EAAE,cAAc;QAC/B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;QAC5C,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;QAC7C,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;KAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAgC,EAAE,GAAqB;IAC/F,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC3D,OAAO;QACN,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,YAAY;QACnB,eAAe,EAAE,YAAY;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;QAC7C,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACpG,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;KAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0B,EAAE,GAAqB;IAC1F,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IAC3D,OAAO;QACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,KAAK,EAAE,aAAa;QACpB,eAAe,EAAE,aAAa;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE;QAC7C,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;KAC5E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,OAAiC;IAEjC,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5F,MAAM,eAAe,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,MAAM,KAAK,GAA4D,EAAE,CAAC;IAC1E,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACvC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE;YAC3D,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,0BAA0B;SACrC,CAAC,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACtC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,eAAe;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC5C,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE;KACjC,CAAC,CAAC;IACH,OAAO;QACN,GAAG,MAAM;QACT,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;KAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAsC;IAC/E,OAAO,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAsC;IAC7E,MAAM,OAAO,GAAG,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,MAAM,EAAE,QAAQ,KAAK,OAAO,IAAI,MAAM,EAAE,QAAQ,KAAK,MAAM,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,MAAM,GAAG,uBAAuB,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO;QACN,GAAG,OAAO;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;KAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAsC;IAC9E,OAAO,sBAAsB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAA+B;IACzE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,EAAqC,EACrC,KAAyB,EACzB,OAA+B,EAC/B,OAA0C;IAE1C,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO;IAC9G,MAAM,OAAO,GACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,KAAK,oBAAoB,CAAC,CAAC;IAChH,EAAE,CAAC,WAAW,CACb;QACC,UAAU,EAAE,wBAAwB;QACpC,OAAO;QACP,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACR,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC3D,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC;SAC3G;KACD,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACtB,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAiC;IACjE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK;YAAE,SAAS;QACpD,IAAI,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,WAAW,CAAC,IAAI,CACf,UAAU,CACT;gBACC,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,4EAA4E;gBACrF,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS;aACnB,EACD,OAAO,CAAC,MAAM,CACd,CACD,CAAC;YACF,SAAS;QACV,CAAC;QACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QACtE,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC;IAC9F,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,4BAA4B,CAAC,OAA8B,EAAE,KAAoB;IACzF,OAAO,KAAK,CAAC,KAAK,KAAK,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC;AAClH,CAAC;AAED,SAAS,uBAAuB,CAC/B,OAA8B,EAC9B,MAAyB;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACtE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,cAAc,GAAG,OAAO;SAC5B,KAAK,CAAC,MAAM,CAAC;SACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAClG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YAClC,OAAO;gBACN,WAAW,EAAE;oBACZ,UAAU,CACT;wBACC,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,OAAO,EAAE,8DAA8D,KAAK,CAAC,OAAO,EAAE;wBACtF,IAAI,EAAE,SAAS,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,UAAU,WAAW;wBAC7D,QAAQ,EAAE,SAAS;qBACnB,EACD,OAAO,CAAC,MAAM,CACd;iBACD;gBACD,OAAO,EAAE,cAAc;aACvB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA8B;IAC5D,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;KACtB,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC9B,KAAyB,EACzB,MAAsC;IAEtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,MAAM,EAAE,iBAAiB,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC,GAAG,gCAAgC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/G,OAAO;QACN,MAAM,EAAE,KAAK,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO;QAClE,QAAQ;QACR,WAAW;QACX,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3C,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAyB,EAAE,MAA0B;IACvF,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,KAAK,YAAY,CAAC;YAAE,OAAO,EAAE,CAAC;QACpG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjH,OAAO;YACN,UAAU,CACT;gBACC,IAAI,EAAE,cAAc;gBACpB,KAAK;gBACL,OAAO,EAAE,uBAAuB,MAAM,GAAG;gBACzC,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,SAAS;aACnB,EACD,OAAO,CAAC,OAAO,CAAC,MAAM,CACtB;SACD,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CACxC,OAA8B,EAC9B,MAAuC;IAEvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,WAAW,GAAqB,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC5C,WAAW,CAAC,IAAI,CACf,UAAU,CACT;YACC,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,sEAAsE;YAC/E,IAAI,EAAE,6CAA6C;YACnD,QAAQ,EAAE,SAAS;SACnB,EACD,OAAO,CAAC,MAAM,CACd,CACD,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC7C,WAAW,CAAC,IAAI,CACf,UAAU,CACT;YACC,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,6EAA6E;YACtF,IAAI,EAAE,8CAA8C;YACpD,QAAQ,EAAE,SAAS;SACnB,EACD,OAAO,CAAC,MAAM,CACd,CACD,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyB,EAAE,MAAc;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,KAAK,YAAY,WAAW;YAAE,OAAO,SAAS,CAAC;QACnD,MAAM,KAAK,CAAC;IACb,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,IAAI,QAAQ,EAAE,aAAa,KAAK,SAAS,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAChG,OAAO;QACN,GAAG,SAAS,CAAC,QAAQ,EAAE,iBAAiB,IAAI,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QAC1F,GAAG,SAAS,CAAC,QAAQ,EAAE,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;QAC7F,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;QACzC,GAAG,SAAS,CAAC,QAAQ,EAAE,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC3E,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CACjB,KAAc,EACd,GAAM;IAEN,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAmC,CAAC;AACzF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC","sourcesContent":["import type {\n\tExtensionAPI,\n\tExtensionContext,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeCompactResult,\n\tSessionCompactEvent,\n\tSessionStartEvent,\n} from \"../../types.ts\";\nimport { diagnostic } from \"./diagnostics.ts\";\nimport { dispatchHookEvent, type HookDispatchResult } from \"./dispatcher.ts\";\nimport { HOOK_CUSTOM_MESSAGE_TYPE, safeDiagnosticDetails } from \"./prompt-adapter.ts\";\nimport { createHookTrustEntry, hookTrustId, listHookTrustRecords } from \"./trust.ts\";\nimport type { ExecutableHookHandler, HookDiagnostic, HookInputWire, HookTrustState } from \"./types.ts\";\n\ntype LifecycleHookEvent = \"SessionStart\" | \"PreCompact\" | \"PostCompact\";\n\ntype LifecycleDispatchOptions = {\n\treadonly cwd: string;\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly input: HookInputWire;\n\treadonly matcherInputs: readonly string[];\n\treadonly signal?: AbortSignal;\n\treadonly trustState: HookTrustState;\n};\n\ntype LifecycleDispatchSelection = {\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handlers: readonly ExecutableHookHandler[];\n};\n\ntype LifecycleHookOutput = {\n\treadonly additionalContext?: string;\n\treadonly customInstructions?: string;\n\treadonly decision?: string;\n\treadonly reason?: string;\n};\n\ntype LifecycleResultDetails = {\n\treadonly cancel: boolean;\n\treadonly contexts: readonly string[];\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly reason?: string;\n};\n\nexport function buildSessionStartHookInput(event: SessionStartEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tevent: \"SessionStart\",\n\t\thook_event_name: \"SessionStart\",\n\t\treason: event.reason,\n\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport function buildPreCompactHookInput(event: SessionBeforeCompactEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tevent: \"PreCompact\",\n\t\thook_event_name: \"PreCompact\",\n\t\treason: event.reason,\n\t\trequest_id: event.requestId,\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\twill_retry: event.willRetry,\n\t\t...(event.customInstructions === undefined ? {} : { custom_instructions: event.customInstructions }),\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport function buildPostCompactHookInput(event: SessionCompactEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\taccepted: event.accepted,\n\t\tcwd: ctx.cwd,\n\t\tevent: \"PostCompact\",\n\t\thook_event_name: \"PostCompact\",\n\t\treason: event.reason,\n\t\trequest_id: event.requestId,\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\twill_retry: event.willRetry,\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport async function dispatchLifecycleHookEvent(\n\toptions: LifecycleDispatchOptions,\n): Promise<HookDispatchResult | undefined> {\n\tconst selection = selectLifecycleHandlers(options);\n\tif (selection.handlers.length === 0 && selection.diagnostics.length === 0) return undefined;\n\tconst trustedHandlers = selection.handlers.map((handler) => stripLifecycleMatcher(handler));\n\tconst hooks: Record<string, ReturnType<typeof createHookTrustEntry>> = {};\n\tfor (const handler of trustedHandlers) {\n\t\thooks[hookTrustId(handler)] = createHookTrustEntry(handler, {\n\t\t\tplatform: process.platform,\n\t\t\tupdatedAt: \"2026-06-29T00:00:00.000Z\",\n\t\t});\n\t}\n\tconst result = await dispatchHookEvent({\n\t\tcwd: options.cwd,\n\t\thandlers: trustedHandlers,\n\t\tinput: options.input,\n\t\t...(options.signal === undefined ? {} : { signal: options.signal }),\n\t\ttrustOptions: { platform: process.platform },\n\t\ttrustState: { hooks, version: 1 },\n\t});\n\treturn {\n\t\t...result,\n\t\tdiagnostics: [...selection.diagnostics, ...result.diagnostics],\n\t};\n}\n\nexport function sessionStartResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\treturn lifecycleResultDetails(\"SessionStart\", result);\n}\n\nexport function preCompactResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\tconst details = lifecycleResultDetails(\"PreCompact\", result);\n\tif (details.cancel) return details;\n\tconst blocker = result?.summaries.find((summary) => {\n\t\tconst output = readLifecycleHookOutput(\"PreCompact\", summary.run.stdout);\n\t\treturn output?.decision === \"block\" || output?.decision === \"deny\";\n\t});\n\tif (blocker === undefined) return details;\n\tconst output = readLifecycleHookOutput(\"PreCompact\", blocker.run.stdout);\n\treturn {\n\t\t...details,\n\t\tcancel: true,\n\t\t...(output?.reason === undefined ? {} : { reason: output.reason }),\n\t};\n}\n\nexport function postCompactResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\treturn lifecycleResultDetails(\"PostCompact\", result);\n}\n\nexport function sessionBeforeCompactResult(details: LifecycleResultDetails): SessionBeforeCompactResult | undefined {\n\treturn details.cancel ? { cancel: true } : undefined;\n}\n\nexport function recordLifecycleHookResult(\n\tpi: Pick<ExtensionAPI, \"sendMessage\">,\n\tevent: LifecycleHookEvent,\n\tdetails: LifecycleResultDetails,\n\toptions?: { compactionRequestId?: string },\n): void {\n\tif (details.contexts.length === 0 && details.diagnostics.length === 0 && details.reason === undefined) return;\n\tconst content =\n\t\tdetails.contexts.length > 0 ? details.contexts.join(\"\\n\\n\") : (details.reason ?? `${event} hook diagnostics.`);\n\tpi.sendMessage(\n\t\t{\n\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\tcontent,\n\t\t\tdisplay: false,\n\t\t\tdetails: {\n\t\t\t\tevent,\n\t\t\t\tdiagnostics: details.diagnostics.map(safeDiagnosticDetails),\n\t\t\t\t...(options?.compactionRequestId === undefined ? {} : { compactionRequestId: options.compactionRequestId }),\n\t\t\t},\n\t\t},\n\t\t{ triggerTurn: false },\n\t);\n}\n\nfunction selectLifecycleHandlers(options: LifecycleDispatchOptions): LifecycleDispatchSelection {\n\tconst matched: ExecutableHookHandler[] = [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\tfor (const handler of options.handlers) {\n\t\tif (handler.event !== options.input.event) continue;\n\t\tif (isInitialRuntimeSessionStart(handler, options.input)) {\n\t\t\tdiagnostics.push(\n\t\t\t\tdiagnostic(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: \"unsupported_event\",\n\t\t\t\t\t\tevent: \"SessionStart\",\n\t\t\t\t\t\tmessage: \"Runtime SessionStart hooks are loaded for reload or the next session only.\",\n\t\t\t\t\t\tpath: \"hooks.SessionStart\",\n\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t},\n\t\t\t\t\thandler.source,\n\t\t\t\t),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\tconst match = matchesLifecycleMatcher(handler, options.matcherInputs);\n\t\tdiagnostics.push(...match.diagnostics);\n\t\tif (match.matched) matched.push(handler);\n\t}\n\tconst trustRecords = listHookTrustRecords(matched, options.trustState, { platform: process.platform });\n\tconst trusted = matched.filter((_handler, index) => trustRecords[index]?.executable === true);\n\treturn { diagnostics, handlers: trusted };\n}\n\nfunction isInitialRuntimeSessionStart(handler: ExecutableHookHandler, input: HookInputWire): boolean {\n\treturn input.event === \"SessionStart\" && input.reason === \"startup\" && handler.source.discoveredAt === \"runtime\";\n}\n\nfunction matchesLifecycleMatcher(\n\thandler: ExecutableHookHandler,\n\tinputs: readonly string[],\n): { readonly diagnostics: readonly HookDiagnostic[]; readonly matched: boolean } {\n\tconst matcher = handler.matcher?.trim();\n\tif (matcher === undefined || matcher.length === 0 || matcher === \"*\") {\n\t\treturn { diagnostics: [], matched: true };\n\t}\n\tconst literalMatched = matcher\n\t\t.split(/[|,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter((part) => part.length > 0)\n\t\t.some((part) => inputs.includes(part));\n\ttry {\n\t\tconst regex = new RegExp(matcher);\n\t\treturn { diagnostics: [], matched: literalMatched || inputs.some((input) => regex.test(input)) };\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) {\n\t\t\treturn {\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: \"invalid_matcher\",\n\t\t\t\t\t\t\tevent: handler.event,\n\t\t\t\t\t\t\tmessage: `Hook matcher is not a valid JavaScript regular expression: ${error.message}`,\n\t\t\t\t\t\t\tpath: `hooks.${handler.event}[${handler.groupIndex}].matcher`,\n\t\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\thandler.source,\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t\tmatched: literalMatched,\n\t\t\t};\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction stripLifecycleMatcher(handler: ExecutableHookHandler): ExecutableHookHandler {\n\treturn {\n\t\tconfig: handler.config,\n\t\tevent: handler.event,\n\t\tgroupIndex: handler.groupIndex,\n\t\thandlerIndex: handler.handlerIndex,\n\t\tsource: handler.source,\n\t};\n}\n\nfunction lifecycleResultDetails(\n\tevent: LifecycleHookEvent,\n\tresult: HookDispatchResult | undefined,\n): LifecycleResultDetails {\n\tif (result === undefined) {\n\t\treturn { cancel: false, contexts: [], diagnostics: [] };\n\t}\n\tconst diagnostics = [...result.diagnostics, ...commandFailureDiagnostics(event, result)];\n\tconst contexts: string[] = [];\n\tfor (const summary of result.summaries) {\n\t\tconst output = readLifecycleHookOutput(event, summary.run.stdout);\n\t\tif (output?.additionalContext !== undefined && event !== \"PreCompact\") {\n\t\t\tcontexts.push(output.additionalContext);\n\t\t}\n\t\tif (event === \"PreCompact\") {\n\t\t\tdiagnostics.push(...preCompactUnsupportedDiagnostics(summary.handler, output));\n\t\t}\n\t}\n\tconst reason = event === \"PreCompact\" && result.decision.kind === \"block\" ? result.decision.reason : undefined;\n\treturn {\n\t\tcancel: event === \"PreCompact\" && result.decision.kind === \"block\",\n\t\tcontexts,\n\t\tdiagnostics,\n\t\t...(reason === undefined ? {} : { reason }),\n\t};\n}\n\nfunction commandFailureDiagnostics(event: LifecycleHookEvent, result: HookDispatchResult): readonly HookDiagnostic[] {\n\treturn result.summaries.flatMap((summary) => {\n\t\tif (summary.run.exitCode === 0 || (summary.run.exitCode === 2 && event === \"PreCompact\")) return [];\n\t\tconst status = summary.run.exitCode === null ? \"without an exit code\" : `with exit code ${summary.run.exitCode}`;\n\t\treturn [\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid_root\",\n\t\t\t\t\tevent,\n\t\t\t\t\tmessage: `Hook command failed ${status}.`,\n\t\t\t\t\tpath: \"process.exitCode\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\tsummary.handler.source,\n\t\t\t),\n\t\t];\n\t});\n}\n\nfunction preCompactUnsupportedDiagnostics(\n\thandler: ExecutableHookHandler,\n\toutput: LifecycleHookOutput | undefined,\n): readonly HookDiagnostic[] {\n\tif (output === undefined) return [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\tif (output.additionalContext !== undefined) {\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"unsupported_field\",\n\t\t\t\t\tevent: \"PreCompact\",\n\t\t\t\t\tmessage: \"PreCompact additionalContext is diagnostic-only in builtin hooks v1.\",\n\t\t\t\t\tpath: \"stdout.hookSpecificOutput.additionalContext\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\thandler.source,\n\t\t\t),\n\t\t);\n\t}\n\tif (output.customInstructions !== undefined) {\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"unsupported_field\",\n\t\t\t\t\tevent: \"PreCompact\",\n\t\t\t\t\tmessage: \"PreCompact customInstructions cannot mutate compaction in builtin hooks v1.\",\n\t\t\t\t\tpath: \"stdout.hookSpecificOutput.customInstructions\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\thandler.source,\n\t\t\t),\n\t\t);\n\t}\n\treturn diagnostics;\n}\n\nfunction readLifecycleHookOutput(event: LifecycleHookEvent, stdout: string): LifecycleHookOutput | undefined {\n\tconst trimmed = stdout.trim();\n\tif (trimmed.length === 0) return undefined;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(trimmed);\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) return undefined;\n\t\tthrow error;\n\t}\n\tif (!isRecord(parsed)) return undefined;\n\tconst specific = isRecord(parsed.hookSpecificOutput) ? parsed.hookSpecificOutput : undefined;\n\tif (specific?.hookEventName !== undefined && specific.hookEventName !== event) return undefined;\n\treturn {\n\t\t...textField(specific?.additionalContext ?? parsed.additionalContext, \"additionalContext\"),\n\t\t...textField(specific?.customInstructions ?? parsed.customInstructions, \"customInstructions\"),\n\t\t...textField(parsed.decision, \"decision\"),\n\t\t...textField(specific?.permissionDecisionReason ?? parsed.reason, \"reason\"),\n\t};\n}\n\nfunction textField<K extends keyof LifecycleHookOutput>(\n\tvalue: unknown,\n\tkey: K,\n): Pick<LifecycleHookOutput, K> | Record<string, never> {\n\tif (typeof value !== \"string\") return {};\n\tconst trimmed = value.trim();\n\treturn trimmed.length === 0 ? {} : ({ [key]: trimmed } as Pick<LifecycleHookOutput, K>);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
1
+ {"version":3,"file":"lifecycle-adapter.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/lifecycle-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tExtensionAPI,\n\tExtensionContext,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeCompactResult,\n\tSessionCompactEvent,\n\tSessionStartEvent,\n} from \"../../types.ts\";\nimport { diagnostic } from \"./diagnostics.ts\";\nimport { dispatchHookEvent, type HookDispatchResult } from \"./dispatcher.ts\";\nimport { HOOK_CUSTOM_MESSAGE_TYPE, safeDiagnosticDetails } from \"./prompt-adapter.ts\";\nimport { createHookTrustEntry, hookTrustId, listHookTrustRecords } from \"./trust.ts\";\nimport type { ExecutableHookHandler, HookDiagnostic, HookInputWire, HookTrustState } from \"./types.ts\";\n\ntype LifecycleHookEvent = \"SessionStart\" | \"PreCompact\" | \"PostCompact\" | \"Notification\";\n\ntype LifecycleDispatchOptions = {\n\treadonly cwd: string;\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly input: HookInputWire;\n\treadonly matcherInputs: readonly string[];\n\treadonly signal?: AbortSignal;\n\treadonly trustState: HookTrustState;\n};\n\ntype LifecycleDispatchSelection = {\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly handlers: readonly ExecutableHookHandler[];\n};\n\ntype LifecycleHookOutput = {\n\treadonly additionalContext?: string;\n\treadonly customInstructions?: string;\n\treadonly decision?: string;\n\treadonly reason?: string;\n};\n\ntype LifecycleResultDetails = {\n\treadonly cancel: boolean;\n\treadonly contexts: readonly string[];\n\treadonly diagnostics: readonly HookDiagnostic[];\n\treadonly reason?: string;\n};\n\nexport function buildSessionStartHookInput(event: SessionStartEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tevent: \"SessionStart\",\n\t\thook_event_name: \"SessionStart\",\n\t\treason: event.reason,\n\t\tsessionId: ctx.sessionManager.getSessionId(),\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport function buildPreCompactHookInput(event: SessionBeforeCompactEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tevent: \"PreCompact\",\n\t\thook_event_name: \"PreCompact\",\n\t\treason: event.reason,\n\t\trequest_id: event.requestId,\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\twill_retry: event.willRetry,\n\t\t...(event.customInstructions === undefined ? {} : { custom_instructions: event.customInstructions }),\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport type NotificationHookInput = {\n\treadonly message: string;\n\treadonly kind: string;\n\treadonly title?: string;\n\treadonly source?: string;\n\treadonly requestId?: string;\n\treadonly status?: string;\n};\n\nexport function buildNotificationHookInput(input: NotificationHookInput, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\tcwd: ctx.cwd,\n\t\tevent: \"Notification\",\n\t\thook_event_name: \"Notification\",\n\t\tkind: input.kind,\n\t\tmessage: input.message,\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\t...(input.title === undefined ? {} : { title: input.title }),\n\t\t...(input.source === undefined ? {} : { notification_source: input.source }),\n\t\t...(input.requestId === undefined ? {} : { request_id: input.requestId }),\n\t\t...(input.status === undefined ? {} : { status: input.status }),\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport async function dispatchNotificationHookEvent(options: {\n\tcwd: string;\n\thandlers: readonly ExecutableHookHandler[];\n\tinput: HookInputWire;\n\tsignal?: AbortSignal;\n\ttrustState: HookTrustState;\n}): Promise<HookDispatchResult | undefined> {\n\treturn dispatchLifecycleHookEvent({\n\t\tcwd: options.cwd,\n\t\thandlers: options.handlers,\n\t\tinput: options.input,\n\t\tmatcherInputs: [\"Notification\"],\n\t\t...(options.signal === undefined ? {} : { signal: options.signal }),\n\t\ttrustState: options.trustState,\n\t});\n}\n\nexport function notificationResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\treturn {\n\t\tcancel: false,\n\t\tcontexts:\n\t\t\tresult?.summaries.flatMap((summary) =>\n\t\t\t\tsummary.output.additionalContext === undefined ? [] : [summary.output.additionalContext],\n\t\t\t) ?? [],\n\t\tdiagnostics:\n\t\t\tresult === undefined ? [] : [...result.diagnostics, ...commandFailureDiagnostics(\"Notification\", result)],\n\t};\n}\n\nexport function buildPostCompactHookInput(event: SessionCompactEvent, ctx: ExtensionContext): HookInputWire {\n\tconst transcriptPath = ctx.sessionManager.getSessionFile();\n\treturn {\n\t\taccepted: event.accepted,\n\t\tcwd: ctx.cwd,\n\t\tevent: \"PostCompact\",\n\t\thook_event_name: \"PostCompact\",\n\t\treason: event.reason,\n\t\trequest_id: event.requestId,\n\t\tsession_id: ctx.sessionManager.getSessionId(),\n\t\twill_retry: event.willRetry,\n\t\t...(transcriptPath === undefined ? {} : { transcript_path: transcriptPath }),\n\t};\n}\n\nexport async function dispatchLifecycleHookEvent(\n\toptions: LifecycleDispatchOptions,\n): Promise<HookDispatchResult | undefined> {\n\tconst selection = selectLifecycleHandlers(options);\n\tif (selection.handlers.length === 0 && selection.diagnostics.length === 0) return undefined;\n\tconst trustedHandlers = selection.handlers.map((handler) => stripLifecycleMatcher(handler));\n\tconst hooks: Record<string, ReturnType<typeof createHookTrustEntry>> = {};\n\tfor (const handler of trustedHandlers) {\n\t\thooks[hookTrustId(handler)] = createHookTrustEntry(handler, {\n\t\t\tplatform: process.platform,\n\t\t\tupdatedAt: \"2026-06-29T00:00:00.000Z\",\n\t\t});\n\t}\n\tconst result = await dispatchHookEvent({\n\t\tcwd: options.cwd,\n\t\thandlers: trustedHandlers,\n\t\tinput: options.input,\n\t\t...(options.signal === undefined ? {} : { signal: options.signal }),\n\t\ttrustOptions: { platform: process.platform },\n\t\ttrustState: { hooks, version: 1 },\n\t});\n\treturn {\n\t\t...result,\n\t\tdiagnostics: [...selection.diagnostics, ...result.diagnostics],\n\t};\n}\n\nexport function sessionStartResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\treturn lifecycleResultDetails(\"SessionStart\", result);\n}\n\nexport function preCompactResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\tconst details = lifecycleResultDetails(\"PreCompact\", result);\n\tif (details.cancel) return details;\n\tconst blocker = result?.summaries.find((summary) => {\n\t\tconst output = readLifecycleHookOutput(\"PreCompact\", summary.run.stdout);\n\t\treturn output?.decision === \"block\" || output?.decision === \"deny\";\n\t});\n\tif (blocker === undefined) return details;\n\tconst output = readLifecycleHookOutput(\"PreCompact\", blocker.run.stdout);\n\treturn {\n\t\t...details,\n\t\tcancel: true,\n\t\t...(output?.reason === undefined ? {} : { reason: output.reason }),\n\t};\n}\n\nexport function postCompactResultDetails(result: HookDispatchResult | undefined): LifecycleResultDetails {\n\treturn lifecycleResultDetails(\"PostCompact\", result);\n}\n\nexport function sessionBeforeCompactResult(details: LifecycleResultDetails): SessionBeforeCompactResult | undefined {\n\treturn details.cancel ? { cancel: true } : undefined;\n}\n\nexport function recordLifecycleHookResult(\n\tpi: Pick<ExtensionAPI, \"sendMessage\">,\n\tevent: LifecycleHookEvent,\n\tdetails: LifecycleResultDetails,\n\toptions?: { compactionRequestId?: string },\n): void {\n\tif (details.contexts.length === 0 && details.diagnostics.length === 0 && details.reason === undefined) return;\n\tconst content =\n\t\tdetails.contexts.length > 0 ? details.contexts.join(\"\\n\\n\") : (details.reason ?? `${event} hook diagnostics.`);\n\tpi.sendMessage(\n\t\t{\n\t\t\tcustomType: HOOK_CUSTOM_MESSAGE_TYPE,\n\t\t\tcontent,\n\t\t\tdisplay: false,\n\t\t\tdetails: {\n\t\t\t\tevent,\n\t\t\t\tdiagnostics: details.diagnostics.map(safeDiagnosticDetails),\n\t\t\t\t...(options?.compactionRequestId === undefined ? {} : { compactionRequestId: options.compactionRequestId }),\n\t\t\t},\n\t\t},\n\t\t{ triggerTurn: false },\n\t);\n}\n\nfunction selectLifecycleHandlers(options: LifecycleDispatchOptions): LifecycleDispatchSelection {\n\tconst matched: ExecutableHookHandler[] = [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\tfor (const handler of options.handlers) {\n\t\tif (handler.event !== options.input.event) continue;\n\t\tif (isInitialRuntimeSessionStart(handler, options.input)) {\n\t\t\tdiagnostics.push(\n\t\t\t\tdiagnostic(\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: \"unsupported_event\",\n\t\t\t\t\t\tevent: \"SessionStart\",\n\t\t\t\t\t\tmessage: \"Runtime SessionStart hooks are loaded for reload or the next session only.\",\n\t\t\t\t\t\tpath: \"hooks.SessionStart\",\n\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t},\n\t\t\t\t\thandler.source,\n\t\t\t\t),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\tconst match =\n\t\t\thandler.event === \"Notification\"\n\t\t\t\t? { diagnostics: [], matched: true }\n\t\t\t\t: matchesLifecycleMatcher(handler, options.matcherInputs);\n\t\tdiagnostics.push(...match.diagnostics);\n\t\tif (match.matched) matched.push(handler);\n\t}\n\tconst trustRecords = listHookTrustRecords(matched, options.trustState, { platform: process.platform });\n\tconst trusted = matched.filter((_handler, index) => trustRecords[index]?.executable === true);\n\treturn { diagnostics, handlers: trusted };\n}\n\nfunction isInitialRuntimeSessionStart(handler: ExecutableHookHandler, input: HookInputWire): boolean {\n\treturn input.event === \"SessionStart\" && input.reason === \"startup\" && handler.source.discoveredAt === \"runtime\";\n}\n\nfunction matchesLifecycleMatcher(\n\thandler: ExecutableHookHandler,\n\tinputs: readonly string[],\n): { readonly diagnostics: readonly HookDiagnostic[]; readonly matched: boolean } {\n\tconst matcher = handler.matcher?.trim();\n\tif (matcher === undefined || matcher.length === 0 || matcher === \"*\") {\n\t\treturn { diagnostics: [], matched: true };\n\t}\n\tconst literalMatched = matcher\n\t\t.split(/[|,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter((part) => part.length > 0)\n\t\t.some((part) => inputs.includes(part));\n\ttry {\n\t\tconst regex = new RegExp(matcher);\n\t\treturn { diagnostics: [], matched: literalMatched || inputs.some((input) => regex.test(input)) };\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) {\n\t\t\treturn {\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: \"invalid_matcher\",\n\t\t\t\t\t\t\tevent: handler.event,\n\t\t\t\t\t\t\tmessage: `Hook matcher is not a valid JavaScript regular expression: ${error.message}`,\n\t\t\t\t\t\t\tpath: `hooks.${handler.event}[${handler.groupIndex}].matcher`,\n\t\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\thandler.source,\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t\tmatched: literalMatched,\n\t\t\t};\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nfunction stripLifecycleMatcher(handler: ExecutableHookHandler): ExecutableHookHandler {\n\treturn {\n\t\tconfig: handler.config,\n\t\tevent: handler.event,\n\t\tgroupIndex: handler.groupIndex,\n\t\thandlerIndex: handler.handlerIndex,\n\t\tsource: handler.source,\n\t};\n}\n\nfunction lifecycleResultDetails(\n\tevent: LifecycleHookEvent,\n\tresult: HookDispatchResult | undefined,\n): LifecycleResultDetails {\n\tif (result === undefined) {\n\t\treturn { cancel: false, contexts: [], diagnostics: [] };\n\t}\n\tconst diagnostics = [...result.diagnostics, ...commandFailureDiagnostics(event, result)];\n\tconst contexts: string[] = [];\n\tfor (const summary of result.summaries) {\n\t\tconst output = readLifecycleHookOutput(event, summary.run.stdout);\n\t\tif (output?.additionalContext !== undefined && event !== \"PreCompact\") {\n\t\t\tcontexts.push(output.additionalContext);\n\t\t}\n\t\tif (event === \"PreCompact\") {\n\t\t\tdiagnostics.push(...preCompactUnsupportedDiagnostics(summary.handler, output));\n\t\t}\n\t}\n\tconst reason = event === \"PreCompact\" && result.decision.kind === \"block\" ? result.decision.reason : undefined;\n\treturn {\n\t\tcancel: event === \"PreCompact\" && result.decision.kind === \"block\",\n\t\tcontexts,\n\t\tdiagnostics,\n\t\t...(reason === undefined ? {} : { reason }),\n\t};\n}\n\nfunction commandFailureDiagnostics(event: LifecycleHookEvent, result: HookDispatchResult): readonly HookDiagnostic[] {\n\treturn result.summaries.flatMap((summary) => {\n\t\tif (summary.run.exitCode === 0 || (summary.run.exitCode === 2 && event === \"PreCompact\")) return [];\n\t\tconst status = summary.run.exitCode === null ? \"without an exit code\" : `with exit code ${summary.run.exitCode}`;\n\t\treturn [\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"invalid_root\",\n\t\t\t\t\tevent,\n\t\t\t\t\tmessage: `Hook command failed ${status}.`,\n\t\t\t\t\tpath: \"process.exitCode\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\tsummary.handler.source,\n\t\t\t),\n\t\t];\n\t});\n}\n\nfunction preCompactUnsupportedDiagnostics(\n\thandler: ExecutableHookHandler,\n\toutput: LifecycleHookOutput | undefined,\n): readonly HookDiagnostic[] {\n\tif (output === undefined) return [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\tif (output.additionalContext !== undefined) {\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"unsupported_field\",\n\t\t\t\t\tevent: \"PreCompact\",\n\t\t\t\t\tmessage: \"PreCompact additionalContext is diagnostic-only in builtin hooks v1.\",\n\t\t\t\t\tpath: \"stdout.hookSpecificOutput.additionalContext\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\thandler.source,\n\t\t\t),\n\t\t);\n\t}\n\tif (output.customInstructions !== undefined) {\n\t\tdiagnostics.push(\n\t\t\tdiagnostic(\n\t\t\t\t{\n\t\t\t\t\tcode: \"unsupported_field\",\n\t\t\t\t\tevent: \"PreCompact\",\n\t\t\t\t\tmessage: \"PreCompact customInstructions cannot mutate compaction in builtin hooks v1.\",\n\t\t\t\t\tpath: \"stdout.hookSpecificOutput.customInstructions\",\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t},\n\t\t\t\thandler.source,\n\t\t\t),\n\t\t);\n\t}\n\treturn diagnostics;\n}\n\nfunction readLifecycleHookOutput(event: LifecycleHookEvent, stdout: string): LifecycleHookOutput | undefined {\n\tconst trimmed = stdout.trim();\n\tif (trimmed.length === 0) return undefined;\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(trimmed);\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) return undefined;\n\t\tthrow error;\n\t}\n\tif (!isRecord(parsed)) return undefined;\n\tconst specific = isRecord(parsed.hookSpecificOutput) ? parsed.hookSpecificOutput : undefined;\n\tif (specific?.hookEventName !== undefined && specific.hookEventName !== event) return undefined;\n\treturn {\n\t\t...textField(specific?.additionalContext ?? parsed.additionalContext, \"additionalContext\"),\n\t\t...textField(specific?.customInstructions ?? parsed.customInstructions, \"customInstructions\"),\n\t\t...textField(parsed.decision, \"decision\"),\n\t\t...textField(specific?.permissionDecisionReason ?? parsed.reason, \"reason\"),\n\t};\n}\n\nfunction textField<K extends keyof LifecycleHookOutput>(\n\tvalue: unknown,\n\tkey: K,\n): Pick<LifecycleHookOutput, K> | Record<string, never> {\n\tif (typeof value !== \"string\") return {};\n\tconst trimmed = value.trim();\n\treturn trimmed.length === 0 ? {} : ({ [key]: trimmed } as Pick<LifecycleHookOutput, K>);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
@@ -41,6 +41,7 @@ function matcherSubject(input) {
41
41
  switch (input.event) {
42
42
  case "UserPromptSubmit":
43
43
  case "Stop":
44
+ case "Notification":
44
45
  return { kind: "ignored" };
45
46
  case "PreToolUse":
46
47
  case "PostToolUse":
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/matcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { diagnostic } from \"./diagnostics.ts\";\nimport type { ExecutableHookHandler, HookDiagnostic, HookInputWire } from \"./types.ts\";\n\nexport type HookMatcherResult = {\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly diagnostics: readonly HookDiagnostic[];\n};\n\ntype MatcherSubject = { readonly kind: \"ignored\" } | { readonly kind: \"inputs\"; readonly inputs: readonly string[] };\n\nconst TOOL_MATCHER_ALIASES: Readonly<Record<string, readonly string[]>> = {\n\tapply_patch: [\"ApplyPatch\", \"functions.apply_patch\"],\n\tbash: [\"Bash\", \"Shell\", \"shell\", \"exec_command\", \"functions.exec_command\"],\n\tcreate_goal: [\"CreateGoal\"],\n\tedit: [\"Edit\", \"MultiEdit\", \"multi_edit\"],\n\tfind: [\"Find\", \"Glob\", \"glob\", \"file_search\"],\n\tget_goal: [\"GetGoal\"],\n\tgrep: [\"Grep\", \"Search\", \"grep_app\"],\n\tls: [\"LS\", \"List\", \"list\"],\n\tread: [\"Read\", \"open\", \"read_file\"],\n\ttodo: [\"Todo\"],\n\ttodoread: [\"TodoRead\"],\n\ttodowrite: [\"TodoWrite\"],\n\tupdate_goal: [\"UpdateGoal\"],\n\tweb_search: [\"WebSearch\", \"web-search\"],\n\twebfetch: [\"WebFetch\", \"web_fetch\", \"web-fetch\"],\n\twrite: [\"Write\", \"write_file\"],\n} as const;\n\nexport function matchingHookHandlers(\n\tinput: HookInputWire,\n\thandlers: readonly ExecutableHookHandler[],\n): HookMatcherResult {\n\tconst subject = matcherSubject(input);\n\tconst selected: ExecutableHookHandler[] = [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\n\tfor (const handler of handlers) {\n\t\tif (handler.event !== input.event) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (subject.kind === \"ignored\") {\n\t\t\tselected.push(handler);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst match = matchesMatcher(handler, subject.inputs);\n\t\tdiagnostics.push(...match.diagnostics);\n\t\tif (match.matched) {\n\t\t\tselected.push(handler);\n\t\t}\n\t}\n\n\treturn { handlers: selected, diagnostics };\n}\n\nfunction matcherSubject(input: HookInputWire): MatcherSubject {\n\tswitch (input.event) {\n\t\tcase \"UserPromptSubmit\":\n\t\tcase \"Stop\":\n\t\t\treturn { kind: \"ignored\" };\n\t\tcase \"PreToolUse\":\n\t\tcase \"PostToolUse\":\n\t\t\treturn { kind: \"inputs\", inputs: toolMatcherInputs(input.toolName) };\n\t\tcase \"SessionStart\":\n\t\tcase \"PreCompact\":\n\t\tcase \"PostCompact\":\n\t\t\treturn { kind: \"inputs\", inputs: [input.event] };\n\t}\n}\n\nfunction toolMatcherInputs(toolName: string): readonly string[] {\n\tconst values = new Set<string>();\n\taddMatcherInput(values, toolName);\n\n\tconst lowerToolName = toolName.toLowerCase();\n\taddMatcherInput(values, lowerToolName);\n\taddMatcherInput(values, toClaudeToolName(lowerToolName));\n\n\tfor (const alias of TOOL_MATCHER_ALIASES[lowerToolName] ?? []) {\n\t\taddMatcherInput(values, alias);\n\t}\n\n\treturn [...values];\n}\n\nfunction addMatcherInput(values: Set<string>, value: string): void {\n\tconst trimmed = value.trim();\n\tif (trimmed.length > 0) {\n\t\tvalues.add(trimmed);\n\t}\n}\n\nfunction toClaudeToolName(toolName: string): string {\n\treturn toolName\n\t\t.split(/[-_]/)\n\t\t.filter((part) => part.length > 0)\n\t\t.map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n\t\t.join(\"\");\n}\n\nfunction matchesMatcher(\n\thandler: ExecutableHookHandler,\n\tinputs: readonly string[],\n): { readonly matched: boolean; readonly diagnostics: readonly HookDiagnostic[] } {\n\tconst matcher = handler.matcher?.trim();\n\tif (matcher === undefined || matcher.length === 0 || matcher === \"*\") {\n\t\treturn { matched: true, diagnostics: [] };\n\t}\n\n\tconst literalMatched = matcher\n\t\t.split(/[|,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter((part) => part.length > 0)\n\t\t.some((part) => inputs.includes(part));\n\n\ttry {\n\t\tconst regex = new RegExp(matcher);\n\t\treturn { matched: literalMatched || inputs.some((input) => regex.test(input)), diagnostics: [] };\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) {\n\t\t\treturn {\n\t\t\t\tmatched: literalMatched,\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: \"invalid_matcher\",\n\t\t\t\t\t\t\tevent: handler.event,\n\t\t\t\t\t\t\tmessage: `Hook matcher is not a valid JavaScript regular expression: ${error.message}`,\n\t\t\t\t\t\t\tpath: `hooks.${handler.event}[${handler.groupIndex}].matcher`,\n\t\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\thandler.source,\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t\tthrow error;\n\t}\n}\n"]}
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/hooks/matcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { diagnostic } from \"./diagnostics.ts\";\nimport type { ExecutableHookHandler, HookDiagnostic, HookInputWire } from \"./types.ts\";\n\nexport type HookMatcherResult = {\n\treadonly handlers: readonly ExecutableHookHandler[];\n\treadonly diagnostics: readonly HookDiagnostic[];\n};\n\ntype MatcherSubject = { readonly kind: \"ignored\" } | { readonly kind: \"inputs\"; readonly inputs: readonly string[] };\n\nconst TOOL_MATCHER_ALIASES: Readonly<Record<string, readonly string[]>> = {\n\tapply_patch: [\"ApplyPatch\", \"functions.apply_patch\"],\n\tbash: [\"Bash\", \"Shell\", \"shell\", \"exec_command\", \"functions.exec_command\"],\n\tcreate_goal: [\"CreateGoal\"],\n\tedit: [\"Edit\", \"MultiEdit\", \"multi_edit\"],\n\tfind: [\"Find\", \"Glob\", \"glob\", \"file_search\"],\n\tget_goal: [\"GetGoal\"],\n\tgrep: [\"Grep\", \"Search\", \"grep_app\"],\n\tls: [\"LS\", \"List\", \"list\"],\n\tread: [\"Read\", \"open\", \"read_file\"],\n\ttodo: [\"Todo\"],\n\ttodoread: [\"TodoRead\"],\n\ttodowrite: [\"TodoWrite\"],\n\tupdate_goal: [\"UpdateGoal\"],\n\tweb_search: [\"WebSearch\", \"web-search\"],\n\twebfetch: [\"WebFetch\", \"web_fetch\", \"web-fetch\"],\n\twrite: [\"Write\", \"write_file\"],\n} as const;\n\nexport function matchingHookHandlers(\n\tinput: HookInputWire,\n\thandlers: readonly ExecutableHookHandler[],\n): HookMatcherResult {\n\tconst subject = matcherSubject(input);\n\tconst selected: ExecutableHookHandler[] = [];\n\tconst diagnostics: HookDiagnostic[] = [];\n\n\tfor (const handler of handlers) {\n\t\tif (handler.event !== input.event) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (subject.kind === \"ignored\") {\n\t\t\tselected.push(handler);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst match = matchesMatcher(handler, subject.inputs);\n\t\tdiagnostics.push(...match.diagnostics);\n\t\tif (match.matched) {\n\t\t\tselected.push(handler);\n\t\t}\n\t}\n\n\treturn { handlers: selected, diagnostics };\n}\n\nfunction matcherSubject(input: HookInputWire): MatcherSubject {\n\tswitch (input.event) {\n\t\tcase \"UserPromptSubmit\":\n\t\tcase \"Stop\":\n\t\tcase \"Notification\":\n\t\t\treturn { kind: \"ignored\" };\n\t\tcase \"PreToolUse\":\n\t\tcase \"PostToolUse\":\n\t\t\treturn { kind: \"inputs\", inputs: toolMatcherInputs(input.toolName) };\n\t\tcase \"SessionStart\":\n\t\tcase \"PreCompact\":\n\t\tcase \"PostCompact\":\n\t\t\treturn { kind: \"inputs\", inputs: [input.event] };\n\t}\n}\n\nfunction toolMatcherInputs(toolName: string): readonly string[] {\n\tconst values = new Set<string>();\n\taddMatcherInput(values, toolName);\n\n\tconst lowerToolName = toolName.toLowerCase();\n\taddMatcherInput(values, lowerToolName);\n\taddMatcherInput(values, toClaudeToolName(lowerToolName));\n\n\tfor (const alias of TOOL_MATCHER_ALIASES[lowerToolName] ?? []) {\n\t\taddMatcherInput(values, alias);\n\t}\n\n\treturn [...values];\n}\n\nfunction addMatcherInput(values: Set<string>, value: string): void {\n\tconst trimmed = value.trim();\n\tif (trimmed.length > 0) {\n\t\tvalues.add(trimmed);\n\t}\n}\n\nfunction toClaudeToolName(toolName: string): string {\n\treturn toolName\n\t\t.split(/[-_]/)\n\t\t.filter((part) => part.length > 0)\n\t\t.map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n\t\t.join(\"\");\n}\n\nfunction matchesMatcher(\n\thandler: ExecutableHookHandler,\n\tinputs: readonly string[],\n): { readonly matched: boolean; readonly diagnostics: readonly HookDiagnostic[] } {\n\tconst matcher = handler.matcher?.trim();\n\tif (matcher === undefined || matcher.length === 0 || matcher === \"*\") {\n\t\treturn { matched: true, diagnostics: [] };\n\t}\n\n\tconst literalMatched = matcher\n\t\t.split(/[|,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter((part) => part.length > 0)\n\t\t.some((part) => inputs.includes(part));\n\n\ttry {\n\t\tconst regex = new RegExp(matcher);\n\t\treturn { matched: literalMatched || inputs.some((input) => regex.test(input)), diagnostics: [] };\n\t} catch (error) {\n\t\tif (error instanceof SyntaxError) {\n\t\t\treturn {\n\t\t\t\tmatched: literalMatched,\n\t\t\t\tdiagnostics: [\n\t\t\t\t\tdiagnostic(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcode: \"invalid_matcher\",\n\t\t\t\t\t\t\tevent: handler.event,\n\t\t\t\t\t\t\tmessage: `Hook matcher is not a valid JavaScript regular expression: ${error.message}`,\n\t\t\t\t\t\t\tpath: `hooks.${handler.event}[${handler.groupIndex}].matcher`,\n\t\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\thandler.source,\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\t\tthrow error;\n\t}\n}\n"]}
@@ -95,6 +95,12 @@ function parseEvent(parsed, specific, state) {
95
95
  copyText(parsed.reason, "reason", state);
96
96
  copyText(specific?.additionalContext ?? parsed.additionalContext, "additionalContext", state);
97
97
  return;
98
+ case "Notification":
99
+ copyText(specific?.additionalContext ?? parsed.additionalContext, "additionalContext", state);
100
+ if (parsed.decision !== undefined) {
101
+ add(state, "unsupported_field", "stdout.decision", "Notification does not support decisions.", "warning");
102
+ }
103
+ return;
98
104
  case "SessionStart":
99
105
  copyText(specific?.additionalContext ?? parsed.additionalContext, "additionalContext", state);
100
106
  if (parsed.decision !== undefined) {