@markusylisiurunen/tau 0.3.76 → 0.3.78

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 (285) hide show
  1. package/dist/core/agent/agent_runtime.js +6 -11
  2. package/dist/core/agent/agent_runtime.js.map +1 -1
  3. package/dist/core/cli.js +2 -5
  4. package/dist/core/cli.js.map +1 -1
  5. package/dist/core/commands/registry.js +2 -1
  6. package/dist/core/commands/registry.js.map +1 -1
  7. package/dist/core/config/builtin_themes.js +0 -30
  8. package/dist/core/config/builtin_themes.js.map +1 -1
  9. package/dist/core/config/content_loader.js +19 -308
  10. package/dist/core/config/content_loader.js.map +1 -1
  11. package/dist/core/config/index.js +1 -1
  12. package/dist/core/config/index.js.map +1 -1
  13. package/dist/core/config/paths.js +0 -1
  14. package/dist/core/config/paths.js.map +1 -1
  15. package/dist/core/config/runtime.js +2 -3
  16. package/dist/core/config/runtime.js.map +1 -1
  17. package/dist/core/config/runtime_config_snapshot.js +0 -1
  18. package/dist/core/config/runtime_config_snapshot.js.map +1 -1
  19. package/dist/core/config/schema.js +17 -234
  20. package/dist/core/config/schema.js.map +1 -1
  21. package/dist/core/config/skills_loader.js +0 -8
  22. package/dist/core/config/skills_loader.js.map +1 -1
  23. package/dist/core/config/theme_variants.js.map +1 -1
  24. package/dist/core/config/virtual_bundle.js +3 -9
  25. package/dist/core/config/virtual_bundle.js.map +1 -1
  26. package/dist/core/config/virtual_defaults.js +0 -2
  27. package/dist/core/config/virtual_defaults.js.map +1 -1
  28. package/dist/core/debug.js +8 -25
  29. package/dist/core/debug.js.map +1 -1
  30. package/dist/core/diff_review/bridge.js +2 -24
  31. package/dist/core/diff_review/bridge.js.map +1 -1
  32. package/dist/core/index.js +0 -1
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/models/catalog.js +2 -3
  35. package/dist/core/models/catalog.js.map +1 -1
  36. package/dist/core/personas.js +7 -89
  37. package/dist/core/personas.js.map +1 -1
  38. package/dist/core/runtime/agent_model.js +0 -2
  39. package/dist/core/runtime/agent_model.js.map +1 -1
  40. package/dist/core/runtime/chat_runtime.js +4 -6
  41. package/dist/core/runtime/chat_runtime.js.map +1 -1
  42. package/dist/core/runtime/session_prompt_composer.js +12 -27
  43. package/dist/core/runtime/session_prompt_composer.js.map +1 -1
  44. package/dist/core/static/index.js +4 -7
  45. package/dist/core/static/index.js.map +1 -1
  46. package/dist/core/static/tau_docs/client-tools.md +1 -1
  47. package/dist/core/static/tau_docs/config-reference.md +30 -153
  48. package/dist/core/static/tau_docs/configuration.md +9 -21
  49. package/dist/core/static/tau_docs/credentials.md +9 -28
  50. package/dist/core/static/tau_docs/image-generation.md +1 -1
  51. package/dist/core/static/tau_docs/node-sdk.md +1 -1
  52. package/dist/core/static/tau_docs/ownership-and-scope.md +5 -5
  53. package/dist/core/static/tau_docs/pdf-unpacking.md +1 -1
  54. package/dist/core/static/tau_docs/personas.md +9 -20
  55. package/dist/core/static/tau_docs/prompts-and-project-context.md +1 -11
  56. package/dist/core/static/tau_docs/remote-sessions.md +6 -22
  57. package/dist/core/static/tau_docs/security.md +2 -2
  58. package/dist/core/static/tau_docs/session-protocol-methods.md +1 -7
  59. package/dist/core/static/tau_docs/session-protocol.md +2 -0
  60. package/dist/core/static/tau_docs/sessions.md +2 -14
  61. package/dist/core/static/tau_docs/skills.md +1 -23
  62. package/dist/core/static/tau_docs/speech-generation.md +1 -1
  63. package/dist/core/static/tau_docs/subagents.md +26 -99
  64. package/dist/core/static/tau_docs/telegram.md +14 -22
  65. package/dist/core/static/tau_docs/tools.md +6 -6
  66. package/dist/core/static/tau_docs/troubleshooting.md +19 -20
  67. package/dist/core/static/tau_docs/tui.md +18 -44
  68. package/dist/core/subagents/agent_supervisor.js +5 -6
  69. package/dist/core/subagents/agent_supervisor.js.map +1 -1
  70. package/dist/core/subagents/format.js +1 -1
  71. package/dist/core/subagents/format.js.map +1 -1
  72. package/dist/core/subagents/prompt.js +7 -0
  73. package/dist/core/subagents/prompt.js.map +1 -0
  74. package/dist/core/subagents/registry.js +14 -43
  75. package/dist/core/subagents/registry.js.map +1 -1
  76. package/dist/core/subagents/types.js +2 -2
  77. package/dist/core/subagents/types.js.map +1 -1
  78. package/dist/core/telegram/adapter.js +23 -30
  79. package/dist/core/telegram/adapter.js.map +1 -1
  80. package/dist/core/telegram/cli.js +4 -5
  81. package/dist/core/telegram/cli.js.map +1 -1
  82. package/dist/core/telegram/config.js +32 -57
  83. package/dist/core/telegram/config.js.map +1 -1
  84. package/dist/core/telegram/local_session_client.js +0 -3
  85. package/dist/core/telegram/local_session_client.js.map +1 -1
  86. package/dist/core/telegram/runtime.js +3 -5
  87. package/dist/core/telegram/runtime.js.map +1 -1
  88. package/dist/core/telegram/session_manager.js +29 -52
  89. package/dist/core/telegram/session_manager.js.map +1 -1
  90. package/dist/core/telegram/tts.js +11 -9
  91. package/dist/core/telegram/tts.js.map +1 -1
  92. package/dist/core/telegram/workspace.js +13 -18
  93. package/dist/core/telegram/workspace.js.map +1 -1
  94. package/dist/core/tool/image_generate.js +37 -14
  95. package/dist/core/tool/image_generate.js.map +1 -1
  96. package/dist/core/tool/media.js +84 -4
  97. package/dist/core/tool/media.js.map +1 -1
  98. package/dist/core/tool/pdf_unpack.js +17 -10
  99. package/dist/core/tool/pdf_unpack.js.map +1 -1
  100. package/dist/core/tool/speech_generate.js +30 -13
  101. package/dist/core/tool/speech_generate.js.map +1 -1
  102. package/dist/core/tools/catalog.js +10 -5
  103. package/dist/core/tools/catalog.js.map +1 -1
  104. package/dist/core/tools/send_input_to_agent.js +1 -1
  105. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  106. package/dist/core/tools/spawn_agent.js +13 -30
  107. package/dist/core/tools/spawn_agent.js.map +1 -1
  108. package/dist/core/tools/view_image.js +12 -17
  109. package/dist/core/tools/view_image.js.map +1 -1
  110. package/dist/core/types.js.map +1 -1
  111. package/dist/core/usage/logs.js.map +1 -1
  112. package/dist/core/utils/gemini_transcription.js +5 -95
  113. package/dist/core/utils/gemini_transcription.js.map +1 -1
  114. package/dist/core/utils/{gemini_speech.js → speech.js} +167 -428
  115. package/dist/core/utils/speech.js.map +1 -0
  116. package/dist/core/utils/speech_to_text.js +24 -52
  117. package/dist/core/utils/speech_to_text.js.map +1 -1
  118. package/dist/core/utils/speech_to_text_keywords.js +65 -0
  119. package/dist/core/utils/speech_to_text_keywords.js.map +1 -1
  120. package/dist/core/version.js +1 -1
  121. package/dist/diff_tool/app/dist/assets/{angular-html-BjHlbeCk.js → angular-html-CnO8qept.js} +1 -1
  122. package/dist/diff_tool/app/dist/assets/{angular-ts-5J5hsUV-.js → angular-ts-DPXUio9Z.js} +1 -1
  123. package/dist/diff_tool/app/dist/assets/{apl-ChIs51_N.js → apl-X8YsymsQ.js} +1 -1
  124. package/dist/diff_tool/app/dist/assets/{astro-RtGdbaIT.js → astro-BQ9k8AQ0.js} +1 -1
  125. package/dist/diff_tool/app/dist/assets/{blade-Cuc0ZzS1.js → blade-DZ1LYIzB.js} +1 -1
  126. package/dist/diff_tool/app/dist/assets/{c-IpjS3QEt.js → c-VLTwNh7z.js} +1 -1
  127. package/dist/diff_tool/app/dist/assets/{chapel-BvHOmF40.js → chapel-5s-sGN8D.js} +1 -1
  128. package/dist/diff_tool/app/dist/assets/{cobol-BWLkapNx.js → cobol-C9RzwrVu.js} +1 -1
  129. package/dist/diff_tool/app/dist/assets/{coffee-lfdf_MuK.js → coffee-BHvjZ343.js} +1 -1
  130. package/dist/diff_tool/app/dist/assets/{cpp-GvMfdutG.js → cpp-CBTVXbBp.js} +1 -1
  131. package/dist/diff_tool/app/dist/assets/{crystal--kdmUeXB.js → crystal-DQJua4y4.js} +1 -1
  132. package/dist/diff_tool/app/dist/assets/{css-CnlOazId.js → css-BQflXFb6.js} +1 -1
  133. package/dist/diff_tool/app/dist/assets/{edge-CwnxQiFe.js → edge-BmdmXGH4.js} +1 -1
  134. package/dist/diff_tool/app/dist/assets/{elixir-BVO19qQd.js → elixir-oiOLs98L.js} +1 -1
  135. package/dist/diff_tool/app/dist/assets/{elm-BK3istEo.js → elm-BgYuiU4E.js} +1 -1
  136. package/dist/diff_tool/app/dist/assets/{erb-CO4uKwKD.js → erb-CvFrXpyY.js} +1 -1
  137. package/dist/diff_tool/app/dist/assets/{git-rebase-CDrrgbGV.js → git-rebase-D3Zo1BLH.js} +1 -1
  138. package/dist/diff_tool/app/dist/assets/{glimmer-js-7CFSyo6c.js → glimmer-js-B4-8E3lJ.js} +1 -1
  139. package/dist/diff_tool/app/dist/assets/{glimmer-ts-Ofllf2Yo.js → glimmer-ts-CtKkD0t_.js} +1 -1
  140. package/dist/diff_tool/app/dist/assets/{glsl-K_36bq1K.js → glsl-BAqforx_.js} +1 -1
  141. package/dist/diff_tool/app/dist/assets/{graphql-BMZnssUN.js → graphql-DuE1RMyL.js} +1 -1
  142. package/dist/diff_tool/app/dist/assets/{hack-MG_t8QNs.js → hack-CHBcXjz1.js} +1 -1
  143. package/dist/diff_tool/app/dist/assets/{haml-0hDK-uCt.js → haml-DAs2z3tD.js} +1 -1
  144. package/dist/diff_tool/app/dist/assets/{handlebars-D4_MRJPB.js → handlebars-CfAla6QK.js} +1 -1
  145. package/dist/diff_tool/app/dist/assets/{html-BCi--7qp.js → html-D5co0BLD.js} +1 -1
  146. package/dist/diff_tool/app/dist/assets/{html-derivative-DYq2AWiD.js → html-derivative-BZaWEmAT.js} +1 -1
  147. package/dist/diff_tool/app/dist/assets/{http-BmLFm2Pm.js → http-Cii5MjJE.js} +1 -1
  148. package/dist/diff_tool/app/dist/assets/{hurl-CT71cK69.js → hurl-Bur-XdJO.js} +1 -1
  149. package/dist/diff_tool/app/dist/assets/index-CZUi_I-p.js +340 -0
  150. package/dist/diff_tool/app/dist/assets/{java-Bm2FCq-d.js → java-DN39wI4w.js} +1 -1
  151. package/dist/diff_tool/app/dist/assets/{javascript-C7oEny21.js → javascript-VUReF1H4.js} +1 -1
  152. package/dist/diff_tool/app/dist/assets/{jinja-igQBS-SS.js → jinja-BcrfV1JB.js} +1 -1
  153. package/dist/diff_tool/app/dist/assets/{jison-BrOUp4rK.js → jison-Bez5Mtmy.js} +1 -1
  154. package/dist/diff_tool/app/dist/assets/{json-DsuR7Nai.js → json-ChV8m0Le.js} +1 -1
  155. package/dist/diff_tool/app/dist/assets/{jsx-BdomFXcA.js → jsx-D0SXNtM0.js} +1 -1
  156. package/dist/diff_tool/app/dist/assets/{julia-DqOG4pbM.js → julia-DvhpcBwG.js} +1 -1
  157. package/dist/diff_tool/app/dist/assets/{just-ZrSTuT0n.js → just-BGwe8S6x.js} +1 -1
  158. package/dist/diff_tool/app/dist/assets/{latex-DbmtZIwN.js → latex-pWSag83P.js} +1 -1
  159. package/dist/diff_tool/app/dist/assets/{liquid-DKnUlRIp.js → liquid-UdnqDjKz.js} +1 -1
  160. package/dist/diff_tool/app/dist/assets/{lua-Cyq3f59a.js → lua-CjDHeHEr.js} +1 -1
  161. package/dist/diff_tool/app/dist/assets/{marko-hmOsFPHQ.js → marko-yLX6iW68.js} +1 -1
  162. package/dist/diff_tool/app/dist/assets/{mdc-BnnQmDC-.js → mdc-BOLj6Oyq.js} +1 -1
  163. package/dist/diff_tool/app/dist/assets/{nginx-C0zLUSna.js → nginx-5r5xPc2T.js} +1 -1
  164. package/dist/diff_tool/app/dist/assets/{nim-Oljl3c5n.js → nim-9exKQYMz.js} +1 -1
  165. package/dist/diff_tool/app/dist/assets/{org-Cp4CA-0c.js → org-B2fpAlbt.js} +1 -1
  166. package/dist/diff_tool/app/dist/assets/{perl-DstDVYmJ.js → perl-DV2fcwyY.js} +1 -1
  167. package/dist/diff_tool/app/dist/assets/{php-Cc3bNZ7J.js → php-D-AthX_E.js} +1 -1
  168. package/dist/diff_tool/app/dist/assets/{pug-B3xDUzl0.js → pug-DuKcQxFj.js} +1 -1
  169. package/dist/diff_tool/app/dist/assets/{qml-B9iDahKk.js → qml-C16b4SYx.js} +1 -1
  170. package/dist/diff_tool/app/dist/assets/{r-B7M5ZSBC.js → r-B1ZldnJf.js} +1 -1
  171. package/dist/diff_tool/app/dist/assets/{razor-BlfV6bjQ.js → razor-TYmslaAB.js} +1 -1
  172. package/dist/diff_tool/app/dist/assets/{regexp-BVT0NBj6.js → regexp-dWCffmDD.js} +1 -1
  173. package/dist/diff_tool/app/dist/assets/{rst-Cq-Mcher.js → rst-DEkLr2YR.js} +1 -1
  174. package/dist/diff_tool/app/dist/assets/{ruby-5uCK_s01.js → ruby-BJnJzr4u.js} +1 -1
  175. package/dist/diff_tool/app/dist/assets/{sas-m4dYluKN.js → sas-DeRsDbUE.js} +1 -1
  176. package/dist/diff_tool/app/dist/assets/{scss-DFiJcBQH.js → scss-SGV_CwKm.js} +1 -1
  177. package/dist/diff_tool/app/dist/assets/{shellscript-DCtSkJJQ.js → shellscript-BI7khmmR.js} +1 -1
  178. package/dist/diff_tool/app/dist/assets/{shellsession-_DntbpLM.js → shellsession-Nupw_Vvw.js} +1 -1
  179. package/dist/diff_tool/app/dist/assets/{soy-Dd1fWsG8.js → soy-B96cBzxv.js} +1 -1
  180. package/dist/diff_tool/app/dist/assets/{sql-Bygp5F-5.js → sql-CsIdKfaO.js} +1 -1
  181. package/dist/diff_tool/app/dist/assets/{stata-CqIA1VQD.js → stata-Dnq48cE6.js} +1 -1
  182. package/dist/diff_tool/app/dist/assets/{surrealql-C2-2C-z3.js → surrealql-D6lw4TiD.js} +1 -1
  183. package/dist/diff_tool/app/dist/assets/{svelte-CrTy7VSb.js → svelte-ChVoq9tB.js} +1 -1
  184. package/dist/diff_tool/app/dist/assets/{templ-B_h9AHFJ.js → templ-Dh1EXuHD.js} +1 -1
  185. package/dist/diff_tool/app/dist/assets/{tex-AwlGuBDG.js → tex-KTYusNFe.js} +1 -1
  186. package/dist/diff_tool/app/dist/assets/{ts-tags--oqU6stH.js → ts-tags-DC2RU1_R.js} +1 -1
  187. package/dist/diff_tool/app/dist/assets/{tsx-Cx-oUPFA.js → tsx-DtIM39Jy.js} +1 -1
  188. package/dist/diff_tool/app/dist/assets/{twig-DMQw3R9O.js → twig-C6D_TA3n.js} +1 -1
  189. package/dist/diff_tool/app/dist/assets/{typescript-BCtu9W7E.js → typescript-BGAE5iuw.js} +1 -1
  190. package/dist/diff_tool/app/dist/assets/{typst-jGrqJHSo.js → typst-nWoGZ22y.js} +1 -1
  191. package/dist/diff_tool/app/dist/assets/{vue-html-DTMalvg7.js → vue-html-prNdIjLu.js} +1 -1
  192. package/dist/diff_tool/app/dist/assets/{vue-GFZcsvXd.js → vue-iyHf-l4z.js} +1 -1
  193. package/dist/diff_tool/app/dist/assets/{vue-vine-BwDeqLrM.js → vue-vine-KSSlnVeg.js} +1 -1
  194. package/dist/diff_tool/app/dist/assets/{xml-CoXyuOzf.js → xml-DdCC83Xd.js} +1 -1
  195. package/dist/diff_tool/app/dist/assets/{xsl-BQFm34CN.js → xsl-DSqZxsez.js} +1 -1
  196. package/dist/diff_tool/app/dist/assets/{yaml-CbO2A_pF.js → yaml-CZcBUWvf.js} +1 -1
  197. package/dist/diff_tool/app/dist/index.html +1 -1
  198. package/dist/diff_tool/http_server.js +2 -9
  199. package/dist/diff_tool/http_server.js.map +1 -1
  200. package/dist/diff_tool/index.js +2 -2
  201. package/dist/diff_tool/index.js.map +1 -1
  202. package/dist/diff_tool/launcher.js +14 -8
  203. package/dist/diff_tool/launcher.js.map +1 -1
  204. package/dist/diff_tool/protocol_client.js +0 -7
  205. package/dist/diff_tool/protocol_client.js.map +1 -1
  206. package/dist/diff_tool/review_state.js +4 -10
  207. package/dist/diff_tool/review_state.js.map +1 -1
  208. package/dist/diff_tool/review_state_persistence.js +12 -7
  209. package/dist/diff_tool/review_state_persistence.js.map +1 -1
  210. package/dist/diff_tool/shared_types.js +0 -48
  211. package/dist/diff_tool/shared_types.js.map +1 -1
  212. package/dist/execution/fly_sprite_execution_environment.js +4 -2
  213. package/dist/execution/fly_sprite_execution_environment.js.map +1 -1
  214. package/dist/host/execution_runtime.js +1 -1
  215. package/dist/host/execution_runtime.js.map +1 -1
  216. package/dist/host/hosted_ephemeral_agent_session.js +1 -1
  217. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  218. package/dist/host/local_session_host.js +8 -18
  219. package/dist/host/local_session_host.js.map +1 -1
  220. package/dist/main.js +7 -93
  221. package/dist/main.js.map +1 -1
  222. package/dist/protocol/index.d.ts +1 -1
  223. package/dist/protocol/index.js.map +1 -1
  224. package/dist/protocol/session_protocol.d.ts +4 -23
  225. package/dist/protocol/session_protocol.js +3 -30
  226. package/dist/protocol/session_protocol.js.map +1 -1
  227. package/dist/sdk/local_client.js +0 -6
  228. package/dist/sdk/local_client.js.map +1 -1
  229. package/dist/store/session_snapshot_migrations.js +32 -1
  230. package/dist/store/session_snapshot_migrations.js.map +1 -1
  231. package/dist/tui/chat_controller/diff_review_service.js +0 -15
  232. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  233. package/dist/tui/chat_view.js +6 -4
  234. package/dist/tui/chat_view.js.map +1 -1
  235. package/dist/tui/listen_capture.js +7 -26
  236. package/dist/tui/listen_capture.js.map +1 -1
  237. package/dist/tui/session_chat_app.js +4 -21
  238. package/dist/tui/session_chat_app.js.map +1 -1
  239. package/dist/tui/session_chat_controller.js +81 -59
  240. package/dist/tui/session_chat_controller.js.map +1 -1
  241. package/dist/tui/speech_playback.js +10 -8
  242. package/dist/tui/speech_playback.js.map +1 -1
  243. package/dist/tui/ui/custom_editor.js +21 -15
  244. package/dist/tui/ui/custom_editor.js.map +1 -1
  245. package/dist/tui/ui/pending_messages.js +2 -1
  246. package/dist/tui/ui/pending_messages.js.map +1 -1
  247. package/dist/tui/ui/slash_autocomplete.js +1 -8
  248. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  249. package/dist/tui/ui/subagent_panel.js +1 -12
  250. package/dist/tui/ui/subagent_panel.js.map +1 -1
  251. package/package.json +3 -3
  252. package/dist/core/config/diff_tool.js +0 -51
  253. package/dist/core/config/diff_tool.js.map +0 -1
  254. package/dist/core/install/cli.js +0 -260
  255. package/dist/core/install/cli.js.map +0 -1
  256. package/dist/core/models/tau_model_overrides.js +0 -4
  257. package/dist/core/models/tau_model_overrides.js.map +0 -1
  258. package/dist/core/subagents/default.js +0 -8
  259. package/dist/core/subagents/default.js.map +0 -1
  260. package/dist/core/utils/gemini_speech.js.map +0 -1
  261. package/dist/core/utils/openai_transcription.js +0 -594
  262. package/dist/core/utils/openai_transcription.js.map +0 -1
  263. package/dist/diff_tool/app/dist/assets/index-DyaXBald.js +0 -340
  264. package/dist/execution/cloudflare_sandbox_execution_environment.js +0 -563
  265. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +0 -1
  266. package/dist/execution/sandbox_tool_helpers.js +0 -30
  267. package/dist/execution/sandbox_tool_helpers.js.map +0 -1
  268. package/dist/starter/prompts/approval-review-branch.md +0 -7
  269. package/dist/starter/prompts/approval-review-current-changes.md +0 -7
  270. package/dist/starter/prompts/approval-review-last-commit.md +0 -7
  271. package/dist/starter/prompts/commit-all.md +0 -9
  272. package/dist/starter/prompts/commit-staged.md +0 -9
  273. package/dist/starter/prompts/guided-review-branch.md +0 -7
  274. package/dist/starter/prompts/guided-review-current-changes.md +0 -7
  275. package/dist/starter/prompts/guided-review-last-commit.md +0 -7
  276. package/dist/starter/prompts/plan.md +0 -7
  277. package/dist/starter/prompts/review-branch.md +0 -7
  278. package/dist/starter/prompts/review-current-changes.md +0 -7
  279. package/dist/starter/prompts/review-last-commit.md +0 -7
  280. package/dist/starter/prompts/rewrite-prompt.md +0 -89
  281. package/dist/starter/skills/approval-review/SKILL.md +0 -219
  282. package/dist/starter/skills/code-review/SKILL.md +0 -102
  283. package/dist/starter/skills/guided-review/SKILL.md +0 -152
  284. package/dist/starter/skills/plan/SKILL.md +0 -53
  285. /package/dist/core/static/prompts/{default-subagent-wrapper.md → subagent-wrapper.md} +0 -0
@@ -1,563 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { dirname } from "node:path/posix";
3
- import { applyBashCommand, applyBashEnvironment, applyCommandEnvironment, DEFAULT_COMMAND_CAPTURE_BYTES, ToolExecutionBackendError, } from "../core/tools/execution_backend.js";
4
- import { assertFileWithinMaxBytes, buildWriteFileResult, NODE_LIST_DIR_SCRIPT, } from "./sandbox_tool_helpers.js";
5
- import { ToolBackendExecutionEnvironment } from "./tool_backend_execution_environment.js";
6
- const DEFAULT_HOME = "/home/sandbox";
7
- const HELPER_OPERATION_TIMEOUT_MS = 30_000;
8
- export class CloudflareSandboxExecutionEnvironment extends ToolBackendExecutionEnvironment {
9
- kind = "cloudflare-sandbox";
10
- constructor(options) {
11
- super({
12
- snapshot: {
13
- kind: "cloudflare-sandbox",
14
- bridgeId: options.bridgeId,
15
- sandboxId: options.sandboxId,
16
- cwd: options.cwd,
17
- home: options.home,
18
- },
19
- backend: options.backend,
20
- });
21
- }
22
- }
23
- export class CloudflareSandboxExecutionEnvironmentResolver {
24
- bridges;
25
- env;
26
- fetch;
27
- constructor(options) {
28
- this.bridges = options.bridges;
29
- this.env = options.env ?? process.env;
30
- this.fetch = options.fetch ?? fetch;
31
- }
32
- async resolve(input) {
33
- if (input.kind !== "cloudflare-sandbox") {
34
- throw new Error(`unsupported execution environment kind '${input.kind}'`);
35
- }
36
- return this.createEnvironment(input);
37
- }
38
- canRestore(snapshot) {
39
- return snapshot.kind === "cloudflare-sandbox" && snapshot.bridgeId in this.bridges;
40
- }
41
- async restore(snapshot) {
42
- if (snapshot.kind !== "cloudflare-sandbox") {
43
- throw new Error(`unsupported execution environment kind '${snapshot.kind}'`);
44
- }
45
- return this.createEnvironment(snapshot);
46
- }
47
- createEnvironment(input) {
48
- const bridge = this.bridges[input.bridgeId];
49
- if (!bridge) {
50
- throw new Error(`unknown Cloudflare Sandbox bridge '${input.bridgeId}'`);
51
- }
52
- const apiKey = bridge.apiKey ?? (bridge.apiKeyEnv ? this.env[bridge.apiKeyEnv] : undefined);
53
- const client = new CloudflareSandboxBridgeClient({
54
- bridgeId: input.bridgeId,
55
- baseUrl: bridge.url,
56
- apiKey,
57
- fetch: this.fetch,
58
- });
59
- const backend = createCloudflareSandboxToolExecutionBackend({
60
- client,
61
- sandboxId: input.sandboxId,
62
- cwd: input.cwd,
63
- });
64
- return new CloudflareSandboxExecutionEnvironment({
65
- bridgeId: input.bridgeId,
66
- sandboxId: input.sandboxId,
67
- cwd: input.cwd,
68
- home: "home" in input ? input.home : (bridge.home ?? DEFAULT_HOME),
69
- backend,
70
- });
71
- }
72
- }
73
- export function createCloudflareSandboxToolExecutionBackend(options) {
74
- const { client, sandboxId } = options;
75
- const commandSessions = new Map();
76
- const commandQueues = new Map();
77
- const cleanupPromises = new Set();
78
- const disposeAbortController = new AbortController();
79
- let disposed = false;
80
- const assertActive = () => {
81
- if (disposed) {
82
- throw new Error("Cloudflare Sandbox execution backend is disposed");
83
- }
84
- };
85
- const createHelperSignal = () => AbortSignal.any([
86
- disposeAbortController.signal,
87
- AbortSignal.timeout(HELPER_OPERATION_TIMEOUT_MS),
88
- ]);
89
- const ensureCommandSession = async (cwd, signal) => {
90
- const existing = commandSessions.get(cwd);
91
- if (existing) {
92
- return (await existing).id;
93
- }
94
- const sessionPromise = client
95
- .createSession(sandboxId, { cwd, signal })
96
- .then((id) => ({ id, cwd }))
97
- .catch((err) => {
98
- if (commandSessions.get(cwd) === sessionPromise) {
99
- commandSessions.delete(cwd);
100
- }
101
- throw err;
102
- });
103
- commandSessions.set(cwd, sessionPromise);
104
- return (await sessionPromise).id;
105
- };
106
- const resetCommandSession = async (cwd) => {
107
- const sessionPromise = commandSessions.get(cwd);
108
- commandSessions.delete(cwd);
109
- const session = await sessionPromise?.catch(() => undefined);
110
- if (session) {
111
- await client
112
- .deleteSession(sandboxId, session.id, AbortSignal.timeout(HELPER_OPERATION_TIMEOUT_MS))
113
- .catch(() => { });
114
- }
115
- };
116
- const scheduleCommandSessionReset = (cwd) => {
117
- const cleanup = resetCommandSession(cwd);
118
- cleanupPromises.add(cleanup);
119
- void cleanup.then(() => cleanupPromises.delete(cleanup), () => cleanupPromises.delete(cleanup));
120
- };
121
- const resetAllCommandSessions = async () => {
122
- const sessionPromises = [...commandSessions.values()];
123
- commandSessions.clear();
124
- await Promise.all(sessionPromises.map(async (sessionPromise) => {
125
- const session = await sessionPromise.catch(() => undefined);
126
- if (session) {
127
- await client
128
- .deleteSession(sandboxId, session.id, AbortSignal.timeout(HELPER_OPERATION_TIMEOUT_MS))
129
- .catch(() => { });
130
- }
131
- }));
132
- };
133
- const runQueued = async (cwd, signal, task) => {
134
- assertActive();
135
- const previous = commandQueues.get(cwd) ?? Promise.resolve();
136
- const run = (async () => {
137
- await waitForQueue(previous, signal);
138
- signal.throwIfAborted();
139
- assertActive();
140
- return await task();
141
- })();
142
- const tail = run.then(() => undefined, () => undefined);
143
- commandQueues.set(cwd, tail);
144
- try {
145
- return await run;
146
- }
147
- finally {
148
- if (commandQueues.get(cwd) === tail) {
149
- commandQueues.delete(cwd);
150
- }
151
- }
152
- };
153
- const runCommand = async (argv, runOptions = {}) => {
154
- assertActive();
155
- const cwd = runOptions.cwd ?? options.cwd;
156
- const timeoutSignal = runOptions.timeoutMs !== undefined &&
157
- Number.isFinite(runOptions.timeoutMs) &&
158
- runOptions.timeoutMs > 0
159
- ? AbortSignal.timeout(runOptions.timeoutMs)
160
- : undefined;
161
- const signal = AbortSignal.any([disposeAbortController.signal, runOptions.signal, timeoutSignal].filter((candidate) => candidate !== undefined));
162
- const stdinPath = runOptions.stdin !== undefined ? `/tmp/tau-exec-${randomUUID()}.stdin` : undefined;
163
- let dedicatedSessionId;
164
- let sessionAcquired = false;
165
- try {
166
- const execute = async () => {
167
- if (stdinPath && runOptions.stdin) {
168
- await client.writeFile(sandboxId, stdinPath, runOptions.stdin, signal);
169
- }
170
- if (runOptions.onStarted) {
171
- dedicatedSessionId = await client.createSession(sandboxId, { cwd, signal });
172
- }
173
- const sessionId = dedicatedSessionId ?? (await ensureCommandSession(cwd, signal));
174
- sessionAcquired = true;
175
- const executionArgv = stdinPath
176
- ? ["bash", "-c", 'exec "$@" < "$0"', stdinPath, ...argv]
177
- : argv;
178
- return await client.exec(sandboxId, {
179
- argv: applyCommandEnvironment(executionArgv, runOptions.env),
180
- cwd,
181
- timeoutMs: runOptions.timeoutMs,
182
- signal,
183
- onStarted: runOptions.onStarted,
184
- onOutput: runOptions.onOutput,
185
- maxCaptureBytes: runOptions.maxCaptureBytes,
186
- sessionId,
187
- });
188
- };
189
- return await (runOptions.onStarted ? execute() : runQueued(cwd, signal, execute));
190
- }
191
- catch (error) {
192
- if (!runOptions.onStarted && sessionAcquired && (signal.aborted || isAbortError(error))) {
193
- scheduleCommandSessionReset(cwd);
194
- }
195
- if (timeoutSignal?.aborted) {
196
- return terminatedExecutionResult("timeout");
197
- }
198
- if (runOptions.signal?.aborted || disposeAbortController.signal.aborted) {
199
- return terminatedExecutionResult("abort");
200
- }
201
- throw error;
202
- }
203
- finally {
204
- if (dedicatedSessionId) {
205
- await client.deleteSession(sandboxId, dedicatedSessionId, AbortSignal.timeout(HELPER_OPERATION_TIMEOUT_MS));
206
- }
207
- if (stdinPath) {
208
- await client
209
- .exec(sandboxId, {
210
- argv: ["rm", "-f", "--", stdinPath],
211
- cwd,
212
- timeoutMs: HELPER_OPERATION_TIMEOUT_MS,
213
- signal: AbortSignal.timeout(HELPER_OPERATION_TIMEOUT_MS),
214
- maxCaptureBytes: 1024,
215
- })
216
- .catch(() => { });
217
- }
218
- }
219
- };
220
- const runBash = (command, runOptions = {}) => runCommand(["bash", "-lc", applyBashCommand(command), ...(runOptions.args ?? [])], {
221
- ...runOptions,
222
- env: applyBashEnvironment(runOptions.env),
223
- });
224
- const runNodeScript = (script, args = [], runOptions = {}) => runBash('exec "$0" "$@"', {
225
- ...runOptions,
226
- args: ["node", "-e", script, ...args],
227
- });
228
- return {
229
- async dispose() {
230
- if (disposed) {
231
- return;
232
- }
233
- disposed = true;
234
- disposeAbortController.abort();
235
- await Promise.allSettled(commandQueues.values());
236
- await resetAllCommandSessions();
237
- await Promise.allSettled(cleanupPromises);
238
- },
239
- runBash,
240
- runNodeScript,
241
- async readFile(path) {
242
- assertActive();
243
- const content = await client.readFile(sandboxId, path, undefined, createHelperSignal());
244
- return { path, content: content.toString("utf-8") };
245
- },
246
- async readFileBinary(path, readOptions = {}) {
247
- assertActive();
248
- const content = await client.readFile(sandboxId, path, readOptions.maxBytes, createHelperSignal());
249
- const bytes = content.byteLength;
250
- assertFileWithinMaxBytes(bytes, readOptions.maxBytes);
251
- return { path, content, bytes };
252
- },
253
- async writeFile(path, content) {
254
- assertActive();
255
- const dir = dirname(path);
256
- if (dir && dir !== ".") {
257
- await runBash('exec "$0" "$@"', { args: ["mkdir", "-p", dir] });
258
- }
259
- await client.writeFile(sandboxId, path, Buffer.from(content, "utf-8"), createHelperSignal());
260
- return buildWriteFileResult(path, content);
261
- },
262
- async writeFileBinary(path, content) {
263
- assertActive();
264
- const dir = dirname(path);
265
- if (dir && dir !== ".") {
266
- await runBash('exec "$0" "$@"', { args: ["mkdir", "-p", dir] });
267
- }
268
- await client.writeFile(sandboxId, path, content, createHelperSignal());
269
- return { path, bytes: content.byteLength };
270
- },
271
- async listDir(path) {
272
- assertActive();
273
- const result = await runNodeScript(NODE_LIST_DIR_SCRIPT, [path]);
274
- if (result.exitCode !== 0) {
275
- throw new Error(result.output.trim() || `list failed for ${path}`);
276
- }
277
- const entries = JSON.parse(result.stdout);
278
- return { path, entries };
279
- },
280
- };
281
- }
282
- async function waitForQueue(queue, signal) {
283
- signal.throwIfAborted();
284
- await new Promise((resolve, reject) => {
285
- const onAbort = () => {
286
- signal.removeEventListener("abort", onAbort);
287
- reject(signal.reason);
288
- };
289
- signal.addEventListener("abort", onAbort, { once: true });
290
- void queue.then(() => {
291
- signal.removeEventListener("abort", onAbort);
292
- resolve();
293
- }, (error) => {
294
- signal.removeEventListener("abort", onAbort);
295
- reject(error);
296
- });
297
- });
298
- }
299
- export class CloudflareSandboxBridgeClient {
300
- bridgeId;
301
- baseUrl;
302
- apiKey;
303
- fetch;
304
- constructor(options) {
305
- this.bridgeId = options.bridgeId;
306
- this.baseUrl = options.baseUrl.replace(/\/+$/, "");
307
- this.apiKey = options.apiKey;
308
- this.fetch = options.fetch;
309
- }
310
- async exec(sandboxId, options) {
311
- const controller = new AbortController();
312
- const abort = () => controller.abort();
313
- options.signal?.addEventListener("abort", abort, { once: true });
314
- if (options.signal?.aborted) {
315
- controller.abort();
316
- }
317
- try {
318
- const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/exec`, {
319
- method: "POST",
320
- headers: {
321
- "Content-Type": "application/json",
322
- ...(options.sessionId ? { "Session-Id": options.sessionId } : {}),
323
- },
324
- body: JSON.stringify({
325
- argv: options.argv,
326
- ...(options.cwd ? { cwd: options.cwd } : {}),
327
- ...(options.timeoutMs !== undefined ? { timeout_ms: options.timeoutMs } : {}),
328
- }),
329
- signal: controller.signal,
330
- });
331
- if (!response.ok) {
332
- throw await this.createHttpError(response);
333
- }
334
- if (!response.body) {
335
- throw new Error(`Cloudflare Sandbox bridge '${this.bridgeId}' returned an empty exec body`);
336
- }
337
- options.onStarted?.();
338
- return await parseExecSse(response.body, options.maxCaptureBytes, options.onOutput);
339
- }
340
- finally {
341
- options.signal?.removeEventListener("abort", abort);
342
- }
343
- }
344
- async readFile(sandboxId, path, maxBytes, signal) {
345
- const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${encodeBridgeFilePath(path)}`, { method: "GET", signal });
346
- if (!response.ok) {
347
- throw await this.createHttpError(response);
348
- }
349
- const contentLength = Number(response.headers.get("Content-Length"));
350
- if (Number.isFinite(contentLength)) {
351
- try {
352
- assertFileWithinMaxBytes(contentLength, maxBytes);
353
- }
354
- catch (error) {
355
- await response.body?.cancel().catch(() => { });
356
- throw error;
357
- }
358
- }
359
- if (!response.body) {
360
- return Buffer.alloc(0);
361
- }
362
- const reader = response.body.getReader();
363
- const chunks = [];
364
- let bytes = 0;
365
- while (true) {
366
- const { done, value } = await reader.read();
367
- if (done)
368
- break;
369
- const chunk = Buffer.from(value);
370
- bytes += chunk.byteLength;
371
- try {
372
- assertFileWithinMaxBytes(bytes, maxBytes);
373
- }
374
- catch (error) {
375
- await reader.cancel().catch(() => { });
376
- throw error;
377
- }
378
- chunks.push(chunk);
379
- }
380
- return Buffer.concat(chunks, bytes);
381
- }
382
- async writeFile(sandboxId, path, content, signal) {
383
- const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/file/${encodeBridgeFilePath(path)}`, { method: "PUT", body: Uint8Array.from(content), signal });
384
- if (!response.ok) {
385
- throw await this.createHttpError(response);
386
- }
387
- }
388
- async createSession(sandboxId, options) {
389
- const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/session`, {
390
- method: "POST",
391
- headers: { "Content-Type": "application/json" },
392
- body: JSON.stringify({ id: randomUUID(), cwd: options.cwd }),
393
- signal: options.signal,
394
- });
395
- if (!response.ok) {
396
- throw await this.createHttpError(response);
397
- }
398
- const body = (await response.json());
399
- if (typeof body.id !== "string" || !body.id) {
400
- throw new Error(`Cloudflare Sandbox bridge '${this.bridgeId}' returned an invalid session`);
401
- }
402
- return body.id;
403
- }
404
- async deleteSession(sandboxId, sessionId, signal) {
405
- const response = await this.request(`/v1/sandbox/${encodeURIComponent(sandboxId)}/session/${encodeURIComponent(sessionId)}`, { method: "DELETE", signal });
406
- if (!response.ok) {
407
- throw await this.createHttpError(response);
408
- }
409
- }
410
- request(path, init) {
411
- return this.fetch(`${this.baseUrl}${path}`, {
412
- ...init,
413
- headers: {
414
- ...(this.apiKey ? { Authorization: `Bearer ${this.apiKey}` } : {}),
415
- ...init.headers,
416
- },
417
- });
418
- }
419
- async createHttpError(response) {
420
- let detail = "";
421
- try {
422
- const body = (await response.json());
423
- detail = body.error || body.code || "";
424
- }
425
- catch {
426
- detail = await response.text().catch(() => "");
427
- }
428
- const message = `Cloudflare Sandbox bridge '${this.bridgeId}' request failed (${response.status})${detail ? `: ${detail}` : ""}`;
429
- return response.status === 404
430
- ? new ToolExecutionBackendError("not-found", message)
431
- : new Error(message);
432
- }
433
- }
434
- function terminatedExecutionResult(reason) {
435
- return {
436
- output: "",
437
- stdout: "",
438
- stderr: "",
439
- exitCode: null,
440
- truncated: false,
441
- timedOut: reason === "timeout",
442
- aborted: reason === "abort",
443
- closeSignal: null,
444
- };
445
- }
446
- async function parseExecSse(body, maxCaptureBytes = DEFAULT_COMMAND_CAPTURE_BYTES, onOutput) {
447
- const reader = body.getReader();
448
- const decoder = new TextDecoder();
449
- let buffer = "";
450
- const output = new ExecCaptureBuffer(maxCaptureBytes);
451
- const stdout = new ExecCaptureBuffer(maxCaptureBytes);
452
- const stderr = new ExecCaptureBuffer(maxCaptureBytes);
453
- let exitCode = null;
454
- let truncated = false;
455
- const appendOutput = (target, chunk) => {
456
- onOutput?.(chunk);
457
- truncated = output.append(chunk) || truncated;
458
- if (target === "stdout") {
459
- truncated = stdout.append(chunk) || truncated;
460
- }
461
- else {
462
- truncated = stderr.append(chunk) || truncated;
463
- }
464
- };
465
- const processEvent = (raw) => {
466
- const lines = raw.split("\n");
467
- let event = "message";
468
- const dataLines = [];
469
- for (const line of lines) {
470
- if (line.startsWith("event:")) {
471
- event = line.slice("event:".length).trim();
472
- }
473
- else if (line.startsWith("data:")) {
474
- dataLines.push(line.slice("data:".length).trimStart());
475
- }
476
- }
477
- const data = dataLines.join("\n");
478
- if (event === "stdout" || event === "stderr") {
479
- appendOutput(event, Buffer.from(data, "base64"));
480
- }
481
- else if (event === "exit") {
482
- const parsed = JSON.parse(data);
483
- exitCode = typeof parsed.exit_code === "number" ? parsed.exit_code : null;
484
- }
485
- else if (event === "error") {
486
- const parsed = JSON.parse(data);
487
- throw new Error(parsed.error || parsed.code || "Cloudflare Sandbox exec failed");
488
- }
489
- };
490
- while (true) {
491
- const { done, value } = await reader.read();
492
- if (done)
493
- break;
494
- buffer += decoder.decode(value, { stream: true });
495
- let splitIndex = buffer.indexOf("\n\n");
496
- while (splitIndex !== -1) {
497
- const raw = buffer.slice(0, splitIndex);
498
- buffer = buffer.slice(splitIndex + 2);
499
- if (raw.trim()) {
500
- processEvent(raw);
501
- }
502
- splitIndex = buffer.indexOf("\n\n");
503
- }
504
- }
505
- buffer += decoder.decode();
506
- if (buffer.trim()) {
507
- processEvent(buffer);
508
- }
509
- return {
510
- output: output.toString(),
511
- stdout: stdout.toString(),
512
- stderr: stderr.toString(),
513
- exitCode,
514
- truncated,
515
- timedOut: false,
516
- aborted: false,
517
- closeSignal: null,
518
- };
519
- }
520
- class ExecCaptureBuffer {
521
- maxBytes;
522
- chunks = [];
523
- bytes = 0;
524
- constructor(maxBytes) {
525
- this.maxBytes = maxBytes;
526
- }
527
- append(value) {
528
- this.chunks.push(value);
529
- this.bytes += value.byteLength;
530
- let truncated = false;
531
- while (this.bytes > this.maxBytes && this.chunks.length > 0) {
532
- const excessBytes = this.bytes - this.maxBytes;
533
- const first = this.chunks[0];
534
- if (first.byteLength <= excessBytes) {
535
- this.chunks.shift();
536
- this.bytes -= first.byteLength;
537
- }
538
- else {
539
- this.chunks[0] = first.subarray(excessBytes);
540
- this.bytes -= excessBytes;
541
- }
542
- truncated = true;
543
- }
544
- return truncated;
545
- }
546
- toString() {
547
- return Buffer.concat(this.chunks, this.bytes).toString("utf-8");
548
- }
549
- }
550
- function encodeBridgeFilePath(path) {
551
- return path
552
- .replace(/^\/+/, "")
553
- .split("/")
554
- .map((part) => encodeURIComponent(part))
555
- .join("/");
556
- }
557
- function isAbortError(err) {
558
- return (typeof err === "object" &&
559
- err !== null &&
560
- "name" in err &&
561
- err.name === "AbortError");
562
- }
563
- //# sourceMappingURL=cloudflare_sandbox_execution_environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloudflare_sandbox_execution_environment.js","sourceRoot":"","sources":["../../src/execution/cloudflare_sandbox_execution_environment.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import { formatBytes } from "../core/utils/truncate.js";
2
- export const NODE_LIST_DIR_SCRIPT = [
3
- "const fs = require('fs');",
4
- "const path = process.argv[1];",
5
- "const entries = fs.readdirSync(path, { withFileTypes: true }).map((entry) => ({",
6
- "name: entry.name,",
7
- "isDirectory: entry.isDirectory(),",
8
- "isSymlink: entry.isSymbolicLink(),",
9
- "}));",
10
- "console.log(JSON.stringify(entries));",
11
- ].join("");
12
- export function shellQuote(arg) {
13
- if (/^[A-Za-z0-9@%+=:,./-]+$/.test(arg)) {
14
- return arg;
15
- }
16
- return `'${arg.replaceAll("'", "'\\''")}'`;
17
- }
18
- export function assertFileWithinMaxBytes(bytes, maxBytes) {
19
- if (maxBytes !== undefined && bytes > maxBytes) {
20
- throw new Error(`file exceeds maximum size of ${formatBytes(maxBytes)} (got ${formatBytes(bytes)}).`);
21
- }
22
- }
23
- export function buildWriteFileResult(path, content) {
24
- return {
25
- path,
26
- bytes: Buffer.byteLength(content, "utf-8"),
27
- lines: content.split("\n").length,
28
- };
29
- }
30
- //# sourceMappingURL=sandbox_tool_helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox_tool_helpers.js","sourceRoot":"","sources":["../../src/execution/sandbox_tool_helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,2BAA2B;IAC3B,+BAA+B;IAC/B,iFAAiF;IACjF,mBAAmB;IACnB,mCAAmC;IACnC,oCAAoC;IACpC,MAAM;IACN,uCAAuC;CACxC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,QAA4B;IAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,gCAAgC,WAAW,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,KAAK,CAAC,IAAI,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,OAAe;IAChE,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM;KAClC,CAAC;AACJ,CAAC"}
@@ -1,7 +0,0 @@
1
- ---
2
- id: "approval-review-branch"
3
- label: "approval review of current branch"
4
- description: "review current branch decisions without requiring an implementation walkthrough"
5
- ---
6
-
7
- Use @@skill:approval-review. Review the current branch diff against main for a decision-maker who has not read the issue, discussion, diff, or source. Investigate the complete target first, then guide me through the material decisions from broadest to narrowest, one fully resolved question at a time. Do not ask the first question until the investigation and decision map are complete.
@@ -1,7 +0,0 @@
1
- ---
2
- id: "approval-review-current-changes"
3
- label: "approval review of current changes"
4
- description: "review current change decisions without requiring an implementation walkthrough"
5
- ---
6
-
7
- Use @@skill:approval-review. Review the current changes for a decision-maker who has not read their supporting discussion, diff, or source. Investigate the complete target first, then guide me through the material decisions from broadest to narrowest, one fully resolved question at a time. Do not ask the first question until the investigation and decision map are complete.
@@ -1,7 +0,0 @@
1
- ---
2
- id: "approval-review-last-commit"
3
- label: "approval review of most recent commit"
4
- description: "review the most recent commit decisions without requiring an implementation walkthrough"
5
- ---
6
-
7
- Use @@skill:approval-review. Review the most recent commit for a decision-maker who has not read its supporting issue, discussion, diff, or source. Investigate the complete target first, then guide me through the material decisions from broadest to narrowest, one fully resolved question at a time. Do not ask the first question until the investigation and decision map are complete.