tarsk 0.6.87 → 0.6.88

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 (257) hide show
  1. package/dist/bundled-skills/email-me/SKILL.md +15 -0
  2. package/dist/bundled-skills/email-me/scripts/__tests__/email_me.test.js +64 -0
  3. package/dist/bundled-skills/email-me/scripts/email_me.js +45 -0
  4. package/dist/bundled-skills/handoff/SKILL.md +19 -0
  5. package/dist/bundled-skills/tarsk-agent/SKILL.md +372 -0
  6. package/dist/bundled-skills/tarsk-ask-user/SKILL.md +18 -0
  7. package/dist/bundled-skills/tarsk-ask-user/scripts/ask_user.js +101 -0
  8. package/dist/bundled-skills/tarsk-bash/SKILL.md +17 -0
  9. package/dist/bundled-skills/tarsk-bash/scripts/bash.js +248 -0
  10. package/dist/bundled-skills/tarsk-browser/SKILL.md +17 -0
  11. package/dist/bundled-skills/tarsk-browser/scripts/browser.js +252 -0
  12. package/dist/bundled-skills/tarsk-chat-title/SKILL.md +14 -0
  13. package/dist/bundled-skills/tarsk-chat-title/scripts/chat_title.js +37 -0
  14. package/dist/bundled-skills/tarsk-connect-mcp/SKILL.md +23 -0
  15. package/dist/bundled-skills/tarsk-connect-mcp/scripts/__tests__/connect_mcp.test.js +68 -0
  16. package/dist/bundled-skills/tarsk-connect-mcp/scripts/connect_mcp.js +119 -0
  17. package/dist/bundled-skills/tarsk-create-project/SKILL.md +25 -0
  18. package/dist/bundled-skills/tarsk-create-project/scripts/__tests__/create_project.test.js +94 -0
  19. package/dist/bundled-skills/tarsk-create-project/scripts/create_project.js +88 -0
  20. package/dist/bundled-skills/tarsk-edit/SKILL.md +18 -0
  21. package/dist/bundled-skills/tarsk-edit/scripts/edit.js +118 -0
  22. package/dist/bundled-skills/tarsk-execute-skill-script/SKILL.md +19 -0
  23. package/dist/bundled-skills/tarsk-execute-skill-script/scripts/execute_skill_script.js +77 -0
  24. package/dist/bundled-skills/tarsk-fetch/SKILL.md +18 -0
  25. package/dist/bundled-skills/tarsk-fetch/scripts/fetch.js +38 -0
  26. package/dist/bundled-skills/tarsk-find/SKILL.md +16 -0
  27. package/dist/bundled-skills/tarsk-find/scripts/find.js +78 -0
  28. package/dist/bundled-skills/tarsk-find-images/SKILL.md +18 -0
  29. package/dist/bundled-skills/tarsk-find-images/scripts/find_images.js +78 -0
  30. package/dist/bundled-skills/tarsk-generate-image/SKILL.md +18 -0
  31. package/dist/bundled-skills/tarsk-generate-image/scripts/generate_image.js +55 -0
  32. package/dist/bundled-skills/tarsk-get-observation/SKILL.md +19 -0
  33. package/dist/bundled-skills/tarsk-get-observation/scripts/get_observation.js +293 -0
  34. package/dist/bundled-skills/tarsk-grep/SKILL.md +16 -0
  35. package/dist/bundled-skills/tarsk-grep/scripts/grep.js +174 -0
  36. package/dist/bundled-skills/tarsk-history/SKILL.md +15 -0
  37. package/dist/bundled-skills/tarsk-history/scripts/history.js +68 -0
  38. package/dist/bundled-skills/tarsk-improve/SKILL.md +232 -0
  39. package/dist/bundled-skills/tarsk-improve/references/signals.md +16 -0
  40. package/dist/bundled-skills/tarsk-improve/scripts/durable-runs.ts +635 -0
  41. package/dist/bundled-skills/tarsk-improve/scripts/ensure-exported.ts +238 -0
  42. package/dist/bundled-skills/tarsk-improve/scripts/export-tool-skills-lib.ts +299 -0
  43. package/dist/bundled-skills/tarsk-improve/scripts/summarize-session.ts +126 -0
  44. package/dist/bundled-skills/tarsk-jobs/SKILL.md +18 -0
  45. package/dist/bundled-skills/tarsk-jobs/scripts/job_kill.js +45 -0
  46. package/dist/bundled-skills/tarsk-jobs/scripts/job_list.js +64 -0
  47. package/dist/bundled-skills/tarsk-jobs/scripts/job_output.js +66 -0
  48. package/dist/bundled-skills/tarsk-notes/SKILL.md +17 -0
  49. package/dist/bundled-skills/tarsk-notes/scripts/notes.js +86 -0
  50. package/dist/bundled-skills/tarsk-projects/SKILL.md +18 -0
  51. package/dist/bundled-skills/tarsk-projects/scripts/projects.js +54 -0
  52. package/dist/bundled-skills/tarsk-prompt-project/SKILL.md +18 -0
  53. package/dist/bundled-skills/tarsk-prompt-project/scripts/prompt_project.js +58 -0
  54. package/dist/bundled-skills/tarsk-propose-branch/SKILL.md +16 -0
  55. package/dist/bundled-skills/tarsk-propose-branch/scripts/propose_branch.js +45 -0
  56. package/dist/bundled-skills/tarsk-read/SKILL.md +17 -0
  57. package/dist/bundled-skills/tarsk-read/scripts/read.js +331 -0
  58. package/dist/bundled-skills/tarsk-read-skill/SKILL.md +16 -0
  59. package/dist/bundled-skills/tarsk-read-skill/scripts/read_skill.js +37 -0
  60. package/dist/bundled-skills/tarsk-read-skill-reference/SKILL.md +19 -0
  61. package/dist/bundled-skills/tarsk-read-skill-reference/scripts/read_skill_reference.js +60 -0
  62. package/dist/bundled-skills/tarsk-run-js/SKILL.md +18 -0
  63. package/dist/bundled-skills/tarsk-run-js/scripts/run_js.js +192 -0
  64. package/dist/bundled-skills/tarsk-tasks/SKILL.md +18 -0
  65. package/dist/bundled-skills/tarsk-tasks/scripts/tasks.js +96 -0
  66. package/dist/bundled-skills/tarsk-todo/SKILL.md +16 -0
  67. package/dist/bundled-skills/tarsk-todo/scripts/todo.js +165 -0
  68. package/dist/bundled-skills/tarsk-web-search/SKILL.md +15 -0
  69. package/dist/bundled-skills/tarsk-web-search/scripts/web_search.js +120 -0
  70. package/dist/bundled-skills/tarsk-write/SKILL.md +16 -0
  71. package/dist/bundled-skills/tarsk-write/scripts/write.js +57 -0
  72. package/dist/index.js +215804 -210026
  73. package/dist/node_modules/@libsql/darwin-arm64/README.md +3 -0
  74. package/dist/node_modules/@libsql/{darwin-x64 → darwin-arm64}/index.node +0 -0
  75. package/dist/node_modules/@libsql/{darwin-x64 → darwin-arm64}/package.json +6 -6
  76. package/dist/public/assets/account-view-DkuCOxkE.js +1 -0
  77. package/dist/public/assets/{alert-dialog-DVaEQlVa.js → alert-dialog-BcZULJsX.js} +1 -1
  78. package/dist/public/assets/api-B_GSyYGh.js +1 -0
  79. package/dist/public/assets/api-C4ukGdyH.js +2 -0
  80. package/dist/public/assets/{async-error-boundary-DH6Sqgmt.js → async-error-boundary-FT8_xvjy.js} +1 -1
  81. package/dist/public/assets/browser-tab-DCjHytQ8.js +12 -0
  82. package/dist/public/assets/button-DDaJhJP1.js +1 -0
  83. package/dist/public/assets/{card-BkOGFps5.js → card-DAc45J1v.js} +1 -1
  84. package/dist/public/assets/chat-dock-context-a2bV9cnz.js +1 -0
  85. package/dist/public/assets/chat-handlers-context-2xSKzkKa.js +9 -0
  86. package/dist/public/assets/commit-dialog-C1oUFznJ.js +1 -0
  87. package/dist/public/assets/{commit-error-dialog-D3S6kRVr.js → commit-error-dialog--NTHg7Aw.js} +1 -1
  88. package/dist/public/assets/{commit-method-fields-BEKfSRyW.js → commit-method-fields-Xt3vbwUg.js} +1 -1
  89. package/dist/public/assets/{conversation-history-view-CVMD8hUU.js → conversation-history-view-CdfE7JTD.js} +1 -1
  90. package/dist/public/assets/{create-project-dialog-nquqlloK.js → create-project-dialog-BdR6iQE9.js} +2 -2
  91. package/dist/public/assets/{create-project-workspace-C4tXAUWJ.js → create-project-workspace-DSTTGom_.js} +2 -2
  92. package/dist/public/assets/create-repo-dialog-gw-8Rpdm.js +1 -0
  93. package/dist/public/assets/{delete-confirm-dialog-SpYpU1AX.js → delete-confirm-dialog-D1N86piR.js} +1 -1
  94. package/dist/public/assets/dialog-D_12AsZd.js +1 -0
  95. package/dist/public/assets/diff-view-B6JJNyn1.js +4 -0
  96. package/dist/public/assets/{dist-NcyjV9Gu.js → dist-2xH_pFmV.js} +1 -1
  97. package/dist/public/assets/{dist-BTu7PDzc.js → dist-AbkJBHH5.js} +1 -1
  98. package/dist/public/assets/{dist-lFBinzor.js → dist-B-h6Wj39.js} +1 -1
  99. package/dist/public/assets/dist-CgbWuuq4.js +1 -0
  100. package/dist/public/assets/{dist-f54JuzFV.js → dist-DOz2WXwX.js} +1 -1
  101. package/dist/public/assets/{dist-CqrmQxmV.js → dist-DfnQ9YJh.js} +1 -1
  102. package/dist/public/assets/{dist-BOfRC57H.js → dist-JGbQ_EJY.js} +1 -1
  103. package/dist/public/assets/{dist-ButPmyjr.js → dist-pCVg1Jdl.js} +1 -1
  104. package/dist/public/assets/dist-v_MvKS2-.js +2 -0
  105. package/dist/public/assets/{es2015-CE7VcoOH.js → es2015-eNVkKfFF.js} +1 -1
  106. package/dist/public/assets/{explorer-file-drop-CEbBlDEp.js → explorer-file-drop-CzyAqZgf.js} +1 -1
  107. package/dist/public/assets/{explorer-monaco-editor-Bgo9Y1cP.js → explorer-monaco-editor-ChJZBFy5.js} +1 -1
  108. package/dist/public/assets/explorer-tab-view-CiUPh4uK.js +2 -0
  109. package/dist/public/assets/explorer-tree-BA12VLz_.js +1 -0
  110. package/dist/public/assets/{explorer-view-BuTa_0Uq.js → explorer-view-Daxl93oM.js} +3 -3
  111. package/dist/public/assets/git-history-dialog-Dqj1p35g.js +1 -0
  112. package/dist/public/assets/index-CoY8DilQ.js +97 -0
  113. package/dist/public/assets/index-D14wLW4o.css +1 -0
  114. package/dist/public/assets/{label-C31qF5zZ.js → label-BCs5CZEs.js} +1 -1
  115. package/dist/public/assets/markdown-renderer-D2VcKU4g.js +10 -0
  116. package/dist/public/assets/{mcp-manager-C3K_62H2.js → mcp-manager-D1HmLT3t.js} +1 -1
  117. package/dist/public/assets/{minus-l6BdrAEk.js → minus-CgQcbBQT.js} +1 -1
  118. package/dist/public/assets/{model-list-controls-DwW8S18v.js → model-list-controls-rXmaDp2r.js} +1 -1
  119. package/dist/public/assets/onboarding-dialog-DSqBJyBa.js +1 -0
  120. package/dist/public/assets/{pill-tabs-CmvvHdKG.js → pill-tabs-DtdTmrg7.js} +1 -1
  121. package/dist/public/assets/progress-indicator-hJ74ac5W.js +1 -0
  122. package/dist/public/assets/project-coding-view-DP4qKePE.js +1 -0
  123. package/dist/public/assets/{project-danger-zone-view-D18k4pUF.js → project-danger-zone-view-CGxIenpr.js} +1 -1
  124. package/dist/public/assets/{project-env-vars-view-BWFqoaFD.js → project-env-vars-view-DKyQkh7h.js} +1 -1
  125. package/dist/public/assets/project-model-aliases-view-BewwJZAx.js +1 -0
  126. package/dist/public/assets/project-settings-view-CE4nAz5B.js +1 -0
  127. package/dist/public/assets/{project-tools-view-DT87KPjE.js → project-tools-view-CbDfst02.js} +1 -1
  128. package/dist/public/assets/providers-list-view-BtwccvX2.js +1 -0
  129. package/dist/public/assets/pull-request-dialog-nKYATjbm.js +1 -0
  130. package/dist/public/assets/pull-with-changes-dialog-zzoFzCv4.js +1 -0
  131. package/dist/public/assets/push-before-pr-dialog-DH91JHEC.js +1 -0
  132. package/dist/public/assets/remote-media-url-CyuN31H_.js +1 -0
  133. package/dist/public/assets/{scroll-area-BWc4OPsj.js → scroll-area-CGEZ1gAL.js} +1 -1
  134. package/dist/public/assets/{select-B6RizwDW.js → select-BR2pG61R.js} +1 -1
  135. package/dist/public/assets/settings-general-tabs-view-BWR0UX2P.js +2 -0
  136. package/dist/public/assets/settings-general-view-BhtrDmJH.js +1 -0
  137. package/dist/public/assets/{settings-list-D35rpAof.js → settings-list-Dgip9HpD.js} +1 -1
  138. package/dist/public/assets/settings-logs-view-CS29x4VT.js +5 -0
  139. package/dist/public/assets/settings-mcp-servers-view-B5ithpfh.js +5 -0
  140. package/dist/public/assets/settings-models-view-DS7nm54P.js +1 -0
  141. package/dist/public/assets/settings-plugins-view-avaUE36r.js +2 -0
  142. package/dist/public/assets/settings-providers-view-B39k1iRQ.js +2 -0
  143. package/dist/public/assets/settings-remote-machines-view-BXondQG_.js +1 -0
  144. package/dist/public/assets/settings-setup-view-I5MGUi_D.js +2 -0
  145. package/dist/public/assets/settings-skills-view-BKrUABbi.js +2 -0
  146. package/dist/public/assets/{settings-slack-view-DkclyaBc.js → settings-slack-view-B0p-96GC.js} +1 -1
  147. package/dist/public/assets/settings-slash-commands-view-DA1scWv1.js +1 -0
  148. package/dist/public/assets/{settings-statistics-view-B03ZZjEy.js → settings-statistics-view-B3g6BD7p.js} +1 -1
  149. package/dist/public/assets/settings-storage-view-BJvjhI4f.js +1 -0
  150. package/dist/public/assets/settings-subagents-view-BziLwvNq.js +2 -0
  151. package/dist/public/assets/settings-system-prompt-view-BqAk56cD.js +1 -0
  152. package/dist/public/assets/{settings-tab-bar-ajzyt79U.js → settings-tab-bar-DYzU_lmi.js} +1 -1
  153. package/dist/public/assets/settings-view-zjMs7jNe.js +2 -0
  154. package/dist/public/assets/{slug-utils-D2jhPz-o.js → slug-utils-CO6nui1C.js} +1 -1
  155. package/dist/public/assets/square-CtxvwmM2.js +1 -0
  156. package/dist/public/assets/store-W78TGOIO.js +8 -0
  157. package/dist/public/assets/{table-C3Hc0Gwy.js → table-CQMqIW_-.js} +1 -1
  158. package/dist/public/assets/task-utils-BZPVmvY4.js +1 -0
  159. package/dist/public/assets/tasks-view-wFf77AQX.js +1 -0
  160. package/dist/public/assets/{terminal-panel-DCKqScJu.js → terminal-panel-Bm_ZelN-.js} +2 -2
  161. package/dist/public/assets/{toggle-group-DqSxGqvP.js → toggle-group-CPmseZfb.js} +1 -1
  162. package/dist/public/assets/{tooltip-CJKJfu0l.js → tooltip-CqwCZ7wt.js} +1 -1
  163. package/dist/public/assets/{use-account-settings-query-AUeOqKvo.js → use-account-settings-query-C-zOdREq.js} +1 -1
  164. package/dist/public/assets/{use-active-dock-panel-instance-BvAhUd_V.js → use-active-dock-panel-instance-4Ss8lB9K.js} +1 -1
  165. package/dist/public/assets/use-browser-overlay-block-CO1pUEAZ.js +1 -0
  166. package/dist/public/assets/use-git-check-CumqGAvN.js +1 -0
  167. package/dist/public/assets/{use-installed-ai-files-iy_AB0dN.js → use-installed-ai-files-DQey9Zm3.js} +1 -1
  168. package/dist/public/assets/use-open-chat-dock-panel-DqfWJ8e8.js +1 -0
  169. package/dist/public/assets/use-projects-CizIH2Fa.js +2 -0
  170. package/dist/public/assets/utils-CqsIXqSC.js +1 -0
  171. package/dist/public/assets/web-BNWoiS4w.js +1 -0
  172. package/dist/public/assets/web-CGP-jEpi.js +1 -0
  173. package/dist/public/assets/web-CKC9gpFi.js +1 -0
  174. package/dist/public/assets/web-Dlo3GwCf.js +1 -0
  175. package/dist/public/fonts/schibsted-grotesk-latin-ext-wght-normal.woff2 +0 -0
  176. package/dist/public/fonts/schibsted-grotesk-latin-wght-normal.woff2 +0 -0
  177. package/dist/public/index.html +45 -45
  178. package/package.json +6 -6
  179. package/dist/node_modules/@libsql/darwin-x64/README.md +0 -3
  180. package/dist/public/assets/account-view-5q3pHEHY.js +0 -1
  181. package/dist/public/assets/ai-spinner-DHwhlk4j.js +0 -1
  182. package/dist/public/assets/api-BdebJfuN.js +0 -1
  183. package/dist/public/assets/api-COO2LfdU.js +0 -2
  184. package/dist/public/assets/browser-overlay-block-CiDtkfup.js +0 -1
  185. package/dist/public/assets/browser-tab-CVdYLmW5.js +0 -12
  186. package/dist/public/assets/button-Dp5XDZNR.js +0 -1
  187. package/dist/public/assets/chat-dock-context-ymLoO90X.js +0 -1
  188. package/dist/public/assets/checkbox-D-BV8-Z_.js +0 -1
  189. package/dist/public/assets/commit-dialog-CEbCFh1x.js +0 -1
  190. package/dist/public/assets/create-repo-dialog-B5IE3pUJ.js +0 -1
  191. package/dist/public/assets/dialog-pHPeIGaB.js +0 -1
  192. package/dist/public/assets/diff-view-Cy6nPdX-.js +0 -4
  193. package/dist/public/assets/dist-D5vgS4RP.js +0 -2
  194. package/dist/public/assets/explorer-tab-view-C-8QZO9S.js +0 -2
  195. package/dist/public/assets/explorer-tree-HrLSFgcI.js +0 -1
  196. package/dist/public/assets/git-history-dialog-ClfF5IOn.js +0 -1
  197. package/dist/public/assets/index-BBLA5zVt.css +0 -1
  198. package/dist/public/assets/index-CalVAwXj.js +0 -104
  199. package/dist/public/assets/markdown-renderer-DXRBG7uP.js +0 -10
  200. package/dist/public/assets/onboarding-dialog-BtLy0wjC.js +0 -1
  201. package/dist/public/assets/progress-indicator-4zQXqOqP.js +0 -1
  202. package/dist/public/assets/project-coding-view-CyJwnJes.js +0 -1
  203. package/dist/public/assets/project-model-aliases-view-D3tYNkkM.js +0 -1
  204. package/dist/public/assets/project-settings-view-0oN9vFvD.js +0 -1
  205. package/dist/public/assets/providers-list-view-DCnh0W-5.js +0 -1
  206. package/dist/public/assets/pull-request-dialog-BdJxYQwu.js +0 -1
  207. package/dist/public/assets/pull-with-changes-dialog-Do9x9neW.js +0 -1
  208. package/dist/public/assets/push-before-pr-dialog-C-9z2O0-.js +0 -1
  209. package/dist/public/assets/remote-media-url-B8OFqxOM.js +0 -1
  210. package/dist/public/assets/settings-general-tabs-view-Dcek-ysB.js +0 -2
  211. package/dist/public/assets/settings-general-view-DhA2N6G5.js +0 -1
  212. package/dist/public/assets/settings-logs-view-eEUTIMeb.js +0 -5
  213. package/dist/public/assets/settings-mcp-servers-view-_oeuVkUe.js +0 -5
  214. package/dist/public/assets/settings-models-view-DW-ZmVup.js +0 -1
  215. package/dist/public/assets/settings-plugins-view-DTooco_c.js +0 -2
  216. package/dist/public/assets/settings-providers-view-CEeJkhg9.js +0 -2
  217. package/dist/public/assets/settings-remote-machines-view--UB8GlCK.js +0 -1
  218. package/dist/public/assets/settings-setup-view-DFL6DlYS.js +0 -2
  219. package/dist/public/assets/settings-skills-view-xS569-Kb.js +0 -2
  220. package/dist/public/assets/settings-slash-commands-view-DrCiayfq.js +0 -1
  221. package/dist/public/assets/settings-storage-view-CQnaVOt_.js +0 -1
  222. package/dist/public/assets/settings-subagents-view-DIctUJcE.js +0 -2
  223. package/dist/public/assets/settings-system-prompt-view-BMDbrFRR.js +0 -1
  224. package/dist/public/assets/settings-view-8M6sbGiX.js +0 -2
  225. package/dist/public/assets/store-CxUwqrZ5.js +0 -8
  226. package/dist/public/assets/task-utils-WAei2PDi.js +0 -1
  227. package/dist/public/assets/tasks-view-DKyqgGdE.js +0 -1
  228. package/dist/public/assets/use-browser-overlay-block-z9imTmiZ.js +0 -1
  229. package/dist/public/assets/use-git-check-B_5Jak2s.js +0 -1
  230. package/dist/public/assets/use-open-chat-dock-panel-w3hc5Vxn.js +0 -1
  231. package/dist/public/assets/use-projects-BmhAMgxB.js +0 -2
  232. package/dist/public/assets/utils-mYB1USG6.js +0 -1
  233. package/dist/public/assets/web-C6Gm4nQ0.js +0 -1
  234. package/dist/public/assets/web-DFlyNg8o.js +0 -1
  235. package/dist/public/assets/web-DlEPs8Xe.js +0 -1
  236. package/dist/public/assets/web-Gx3xReQH.js +0 -1
  237. package/dist/public/backgrounds/arctic-tundra.avif +0 -0
  238. package/dist/public/backgrounds/autumn-leaves.avif +0 -0
  239. package/dist/public/backgrounds/coastal-cliff.avif +0 -0
  240. package/dist/public/backgrounds/floating-waterfall.avif +0 -0
  241. package/dist/public/backgrounds/forest-path.avif +0 -0
  242. package/dist/public/backgrounds/garden-path.avif +0 -0
  243. package/dist/public/backgrounds/glow-marsh.avif +0 -0
  244. package/dist/public/backgrounds/golden-wheat.avif +0 -0
  245. package/dist/public/backgrounds/moon-desert.avif +0 -0
  246. package/dist/public/backgrounds/night-pond.avif +0 -0
  247. package/dist/public/backgrounds/prairie-grassland.avif +0 -0
  248. package/dist/public/backgrounds/river-winding.avif +0 -0
  249. package/dist/public/backgrounds/salt-flat.avif +0 -0
  250. package/dist/public/backgrounds/salt-marsh.avif +0 -0
  251. package/dist/public/backgrounds/sandy-beach.avif +0 -0
  252. package/dist/public/backgrounds/snow-river.avif +0 -0
  253. package/dist/public/backgrounds/sunset-pond.avif +0 -0
  254. package/dist/public/fonts/plus-jakarta-sans-cyrillic-ext-wght-normal.woff2 +0 -0
  255. package/dist/public/fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
  256. package/dist/public/fonts/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
  257. package/dist/public/fonts/plus-jakarta-sans-vietnamese-wght-normal.woff2 +0 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * job_kill — messaging in the Skill; owner-scoped kill via context.jobs (host).
3
+ */
4
+
5
+ export const description =
6
+ "Stop a background job started with bash run_in_background, killing its process tree. A job " +
7
+ "that already settled has nothing left to kill unless it left a process behind holding its " +
8
+ "output pipes (a command that backgrounded a daemon); that tree is stopped too.";
9
+
10
+ export const parameters = {
11
+ type: "object",
12
+ required: ["jobId"],
13
+ properties: {
14
+ jobId: {
15
+ type: "string",
16
+ description: "The job id bash returned when the command was started with run_in_background",
17
+ },
18
+ },
19
+ };
20
+
21
+ function textResult(text) {
22
+ return { content: [{ type: "text", text }], details: undefined };
23
+ }
24
+
25
+ function formatJobStatus(job) {
26
+ return job.exitCode === null ? job.status : `${job.status}, exit ${job.exitCode}`;
27
+ }
28
+
29
+ /** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
30
+ export async function execute(args, context) {
31
+ const jobId = String(args.jobId ?? "");
32
+ const result = context.jobs.kill(jobId);
33
+ if (!result.ok) {
34
+ throw new Error(`Unknown job id: ${jobId}`);
35
+ }
36
+ if (result.outcome === "nothing_to_kill") {
37
+ return textResult(`Job ${jobId} had already settled (${result.status}); nothing to kill.`);
38
+ }
39
+ if (result.outcome === "stopped_leftover_tree") {
40
+ return textResult(
41
+ `Job ${jobId} had already settled (${formatJobStatus(result)}), but left a process running: stopped its tree.`,
42
+ );
43
+ }
44
+ return textResult(`Killed background job ${jobId}.`);
45
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * job_list — formatting in the Skill; registry access via context.jobs (host).
3
+ */
4
+
5
+ export const description =
6
+ "List the background jobs started in this session with bash run_in_background: each one's " +
7
+ "id, status, exit code, start time, and command. Use job_output to read a job's output and " +
8
+ "job_kill to stop one.";
9
+
10
+ export const parameters = {
11
+ type: "object",
12
+ properties: {},
13
+ };
14
+
15
+ const JOB_ID_COLUMN_WIDTH = 14;
16
+ const JOB_STATUS_COLUMN_WIDTH = 8;
17
+ const JOB_EXIT_COLUMN_WIDTH = 8;
18
+ const JOB_COMMAND_MAX_LENGTH = 60;
19
+
20
+ function textResult(text) {
21
+ return { content: [{ type: "text", text }], details: undefined };
22
+ }
23
+
24
+ function formatCommand(command) {
25
+ const oneLine = String(command).replace(/\s+/g, " ").trim();
26
+ if (oneLine.length <= JOB_COMMAND_MAX_LENGTH) return oneLine;
27
+ return `${oneLine.slice(0, JOB_COMMAND_MAX_LENGTH - 1)}…`;
28
+ }
29
+
30
+ function formatJobLine(job) {
31
+ const exit = job.exitCode === null ? "-" : String(job.exitCode);
32
+ return [
33
+ job.id.padEnd(JOB_ID_COLUMN_WIDTH),
34
+ job.status.padEnd(JOB_STATUS_COLUMN_WIDTH),
35
+ `exit ${exit}`.padEnd(JOB_EXIT_COLUMN_WIDTH),
36
+ new Date(job.startedAt).toISOString(),
37
+ formatCommand(job.command),
38
+ ].join(" ");
39
+ }
40
+
41
+ /** @param {unknown} _args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
42
+ export async function execute(_args, context) {
43
+ if (!context.jobs.available) {
44
+ return textResult(
45
+ "Background jobs are not available in this context. Run the command in the foreground.",
46
+ );
47
+ }
48
+ const jobs = context.jobs.list();
49
+ if (jobs.length === 0) {
50
+ return textResult("No background jobs.");
51
+ }
52
+ const header = [
53
+ "id".padEnd(JOB_ID_COLUMN_WIDTH),
54
+ "status".padEnd(JOB_STATUS_COLUMN_WIDTH),
55
+ "exit".padEnd(JOB_EXIT_COLUMN_WIDTH),
56
+ "startedAt",
57
+ "command",
58
+ ].join(" ");
59
+ return textResult(
60
+ [`${jobs.length} background job(s) in this session:`, header, ...jobs.map(formatJobLine)].join(
61
+ "\n",
62
+ ),
63
+ );
64
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * job_output — formatting in the Skill; owner-scoped read via context.jobs.
3
+ */
4
+
5
+ export const description =
6
+ "Read the retained output of a background job started with bash run_in_background. Returns " +
7
+ "what the job has produced so far — at once, not when the job finishes — so call it again " +
8
+ "later to see what is new; never `sleep` between reads. Pass offsetLines to page further " +
9
+ "back instead of the tail. Reports the job's status and the next offset while more output " +
10
+ "remains.";
11
+
12
+ export const parameters = {
13
+ type: "object",
14
+ required: ["jobId"],
15
+ properties: {
16
+ jobId: {
17
+ type: "string",
18
+ description: "The job id bash returned when the command was started with run_in_background",
19
+ },
20
+ offsetLines: {
21
+ type: "number",
22
+ description: "0-based line to start from. Omitted returns the tail of the retained output.",
23
+ },
24
+ limitLines: {
25
+ type: "number",
26
+ description: "Maximum lines to return (default 200).",
27
+ },
28
+ },
29
+ };
30
+
31
+ function textResult(text) {
32
+ return { content: [{ type: "text", text }], details: undefined };
33
+ }
34
+
35
+ function formatJobStatus(job) {
36
+ return job.exitCode === null ? job.status : `${job.status}, exit ${job.exitCode}`;
37
+ }
38
+
39
+ /** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
40
+ export async function execute(args, context) {
41
+ const jobId = String(args.jobId ?? "");
42
+ const page = context.jobs.readOutput(jobId, {
43
+ offsetLines: typeof args.offsetLines === "number" ? args.offsetLines : undefined,
44
+ limitLines: typeof args.limitLines === "number" ? args.limitLines : undefined,
45
+ });
46
+ if (!page) {
47
+ return textResult(`Unknown job id: ${jobId}`);
48
+ }
49
+ const firstLine = (page.nextOffset ?? page.totalLines) - page.lines.length;
50
+ const parts = [
51
+ `Job ${page.job.id} (${formatJobStatus(page.job)}): ${page.totalLines} retained line(s)`,
52
+ ];
53
+ if (page.totalLines > 0) {
54
+ parts.push(`Lines ${firstLine}-${page.totalLines - 1} of ${page.totalLines}:`);
55
+ }
56
+ parts.push(page.lines.length > 0 ? page.lines.join("\n") : "(no output yet)");
57
+ if (page.truncatedBytes) {
58
+ parts.push("[Earlier output was dropped as the job's output exceeded the retained tail]");
59
+ }
60
+ if (page.nextOffset !== undefined) {
61
+ parts.push(
62
+ `[More output: call job_output with jobId=${page.job.id} offsetLines=${page.nextOffset}]`,
63
+ );
64
+ }
65
+ return textResult(parts.join("\n"));
66
+ }
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: tarsk-notes
3
+ description: >-
4
+ Project notes storage for the agent. Publishes the notes Tool for durable
5
+ decisions, constraints, and state across context windows.
6
+ version: 2.0.0
7
+ tools:
8
+ - notes
9
+ deferred-tools:
10
+ - notes
11
+ disable-model-invocation: true
12
+ ---
13
+
14
+ # Notes
15
+
16
+ Publishes the `notes` Tool. Implementation: `scripts/notes.js`. Before editing,
17
+ read the `tarsk-agent` Skill (packaging + `context` API).
@@ -0,0 +1,86 @@
1
+ /**
2
+ * notes Tool — durable project notes via the Agent runtime.
3
+ */
4
+
5
+ export const description =
6
+ "Store durable project notes that survive fresh context windows. Record decisions, constraints, discoveries, and current state that must remain available later. Operations: list note metadata; read a named note in pages using offset; write or replace a note (empty content clears it); append an atomic newline-terminated record; search note names and bounded content excerpts. Keep notes concise, factual, and current.";
7
+
8
+ export const parameters = {
9
+ type: "object",
10
+ properties: {
11
+ op: {
12
+ type: "string",
13
+ enum: ["list", "read", "write", "append", "search"],
14
+ },
15
+ name: {
16
+ type: "string",
17
+ description: "Note name for read, write, or append",
18
+ },
19
+ content: {
20
+ type: "string",
21
+ description: "Content for write or append",
22
+ },
23
+ query: {
24
+ type: "string",
25
+ description: "Text to find for search",
26
+ },
27
+ offset: {
28
+ type: "integer",
29
+ minimum: 0,
30
+ description: "Character offset for read",
31
+ },
32
+ },
33
+ required: ["op"],
34
+ };
35
+
36
+ function textResult(text) {
37
+ return {
38
+ content: [{ type: "text", text }],
39
+ details: undefined,
40
+ };
41
+ }
42
+
43
+ function requireValue(value, field) {
44
+ if (!value?.trim()) {
45
+ throw new Error(`${field} is required for this operation`);
46
+ }
47
+ return value;
48
+ }
49
+
50
+ /** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
51
+ export async function execute(args, context) {
52
+ if (!context.projectId) {
53
+ return textResult("Context notes are unavailable because the project is not resolved.");
54
+ }
55
+
56
+ switch (args.op) {
57
+ case "list": {
58
+ const notes = await context.notes.list();
59
+ return textResult(JSON.stringify(notes));
60
+ }
61
+ case "read": {
62
+ const note = await context.notes.read(requireValue(args.name, "name"), args.offset ?? 0);
63
+ if (!note) {
64
+ return textResult("Note not found.");
65
+ }
66
+ return textResult(JSON.stringify(note));
67
+ }
68
+ case "write": {
69
+ const note = await context.notes.write(requireValue(args.name, "name"), args.content ?? "");
70
+ return textResult(note ? JSON.stringify(note) : "Note cleared.");
71
+ }
72
+ case "append": {
73
+ const note = await context.notes.append(
74
+ requireValue(args.name, "name"),
75
+ requireValue(args.content, "content"),
76
+ );
77
+ return textResult(JSON.stringify(note));
78
+ }
79
+ case "search": {
80
+ const notes = await context.notes.search(requireValue(args.query, "query"));
81
+ return textResult(JSON.stringify(notes));
82
+ }
83
+ default:
84
+ throw new Error(`Unknown notes op: ${String(args.op)}`);
85
+ }
86
+ }
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: tarsk-projects
3
+ description: >-
4
+ Tarsk Tool skill publishing: projects.
5
+ version: 2.0.0
6
+ tools:
7
+ - projects
8
+ deferred-tools:
9
+ - projects
10
+ disable-model-invocation: true
11
+ ---
12
+
13
+ # tarsk-projects
14
+
15
+ Publishes: projects.
16
+
17
+ Error copy and JSON wrapping live in `scripts/projects.js`. Host
18
+ `context.projects.query` returns structured data (DB / cross-project managers).
@@ -0,0 +1,54 @@
1
+ /**
2
+ * projects — model copy / JSON wrap in the Skill; host returns structured data.
3
+ */
4
+
5
+ export const description =
6
+ "List Projects (agents)\n (Threads, git status, processing, Conversation ids, hasLaunchModel, url).\n Always returns immediately. Pass projectId alone to filter; \n pass projectId+threadId+conversationId together to read a Conversation snapshot.\n Each Conversation includes url, a tarsk://chat deep link. Present it to the\n human as a markdown link (not inline code) so they can open that chat.";
7
+
8
+ export const parameters = {
9
+ type: "object",
10
+ properties: {
11
+ includeConversationHistory: {
12
+ description: "When true, list every Conversation on each Thread; default is Current only",
13
+ type: "boolean",
14
+ },
15
+ projectId: {
16
+ description:
17
+ "Alone (or with includeConversationHistory): filter the list to this Local Project. With threadId+conversationId: fetch that Conversation's current status and replies.",
18
+ type: "string",
19
+ },
20
+ threadId: {
21
+ description: "With projectId + conversationId, fetch Conversation replies",
22
+ type: "string",
23
+ },
24
+ conversationId: {
25
+ description: "With projectId + threadId, fetch Conversation replies",
26
+ type: "string",
27
+ },
28
+ waitMs: {
29
+ description: "Ignored. Get Projects always returns immediately. Do not pass this.",
30
+ type: "number",
31
+ },
32
+ },
33
+ };
34
+
35
+ const INCOMPLETE_IDS =
36
+ "Error: to fetch a Conversation after prompt_project, pass projectId, threadId, and conversationId together (copy the three ids from the prompt_project result). To list or filter projects, pass projectId alone (optional includeConversationHistory) without threadId/conversationId.";
37
+
38
+ /** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
39
+ export async function execute(args, context) {
40
+ try {
41
+ const data = await context.projects.query(args);
42
+ return {
43
+ content: [{ type: "text", text: JSON.stringify(data) }],
44
+ details: undefined,
45
+ };
46
+ } catch (error) {
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ const text = message === "INCOMPLETE_CONVERSATION_IDS" ? INCOMPLETE_IDS : `Error: ${message}`;
49
+ return {
50
+ content: [{ type: "text", text }],
51
+ details: undefined,
52
+ };
53
+ }
54
+ }
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: tarsk-prompt-project
3
+ description: >-
4
+ Tarsk Tool skill publishing: prompt_project.
5
+ version: 2.0.0
6
+ tools:
7
+ - prompt_project
8
+ deferred-tools:
9
+ - prompt_project
10
+ disable-model-invocation: true
11
+ ---
12
+
13
+ # tarsk-prompt-project
14
+
15
+ Publishes: prompt_project.
16
+
17
+ JSON / error formatting in `scripts/prompt_project.js`. Host
18
+ `context.projects.launch` runs cross-project delivery.
@@ -0,0 +1,58 @@
1
+ /**
2
+ * prompt_project — JSON / error copy in the Skill; host launches only.
3
+ */
4
+
5
+ export const description =
6
+ "Send a prompt to another Project (an agent with its own skills & tools).\n Deliver the prompt and start the target agent without waiting. A later Cross-project reply is delivered to this Conversation when the target’s first turn ends. Origin wake is on by default (this agent runs after the reply); set wake=false for fire-and-forget.\n Omit threadId to continue the Cross-project route for this Conversation and the target Project: the Thread this Conversation already prompts on that Project, or a new Thread (new branch) when there is none. New Chat resets the route. Pass freshThread: true to deliberately start a new Thread and move the route to it, or pass an explicit threadId to pin one (it also updates the route).\n Returns ids, url, createdThread, createdConversation, and isProcessing. The conversationId uniquely identifies this launch.";
7
+
8
+ export const parameters = {
9
+ type: "object",
10
+ required: ["projectId", "prompt"],
11
+ properties: {
12
+ projectId: {
13
+ description: "Target Local Project id (not the Current Project)",
14
+ type: "string",
15
+ },
16
+ prompt: {
17
+ description: "User message to send in a new Conversation on the target Thread",
18
+ type: "string",
19
+ },
20
+ threadId: {
21
+ description:
22
+ "Existing Thread id to pin this launch to; also updates the Cross-project route. Omit to continue the route: the Thread this Conversation already prompts on the Project, or a new Thread when there is none.",
23
+ type: "string",
24
+ },
25
+ freshThread: {
26
+ description:
27
+ "Deliberately start a NEW Thread on the Project and move this Conversation's route to it, even though a route already exists. Omit threadId when using this.",
28
+ type: "boolean",
29
+ },
30
+ wake: {
31
+ description:
32
+ "When true (default), delivering the Cross-project reply starts an Origin wake turn. Set false for fire-and-forget: the human still sees the reply, the origin agent does not run.",
33
+ type: "boolean",
34
+ },
35
+ label: {
36
+ description:
37
+ "Optional readable name for this launch so sibling launches to the same Project are easy to tell apart. The target Conversation id is still the correlator.",
38
+ type: "string",
39
+ },
40
+ },
41
+ };
42
+
43
+ /** @param {Record<string, unknown>} args @param {import("../../../../src/tools/agent-runtime/types.js").AgentRuntime} context */
44
+ export async function execute(args, context) {
45
+ try {
46
+ const data = await context.projects.launch(args);
47
+ return {
48
+ content: [{ type: "text", text: JSON.stringify(data) }],
49
+ details: undefined,
50
+ };
51
+ } catch (error) {
52
+ const message = error instanceof Error ? error.message : String(error);
53
+ return {
54
+ content: [{ type: "text", text: `Error: ${message}` }],
55
+ details: undefined,
56
+ };
57
+ }
58
+ }
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: tarsk-propose-branch
3
+ description: >-
4
+ Tarsk Tool skill publishing: propose_branch.
5
+ version: 2.0.0
6
+ tools:
7
+ - propose_branch
8
+ disable-model-invocation: true
9
+ ---
10
+
11
+ # tarsk-propose-branch
12
+
13
+ Publishes: propose_branch.
14
+
15
+ Execute logic lives entirely in `scripts/propose_branch.js` (no host API).
16
+ The Slack bridge reads `details.summary` / `details.fixPrompt` from the result.
@@ -0,0 +1,45 @@
1
+ /**
2
+ * propose_branch — logic entirely in the Skill (Slack bridge reads details).
3
+ */
4
+
5
+ export const description =
6
+ "Propose creating an isolated git branch so code can be changed. Use when the user wants a fix or edit that requires write tools. Do not claim you can edit files yourself — call this tool, then wait for their Create branch / Keep chatting choice in Slack.";
7
+
8
+ export const parameters = {
9
+ type: "object",
10
+ required: ["summary", "fixPrompt"],
11
+ properties: {
12
+ summary: {
13
+ description:
14
+ "Short Slack-facing explanation of the change you want to make (1–3 sentences). Shown with the Create branch confirmation.",
15
+ type: "string",
16
+ },
17
+ fixPrompt: {
18
+ description:
19
+ "The full prompt that should run on the new isolated branch after the user confirms Create branch. Include enough detail to implement the fix without the plan-chat transcript.",
20
+ type: "string",
21
+ },
22
+ },
23
+ };
24
+
25
+ /** @param {Record<string, unknown>} args */
26
+ export async function execute(args) {
27
+ const summary = String(args.summary ?? "");
28
+ const fixPrompt = String(args.fixPrompt ?? "");
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: [
34
+ "Confirmation posted to Slack (Create branch / Keep chatting).",
35
+ "Do not attempt edits. End your turn and wait — if they confirm, a separate full-tools turn will run the fix prompt on a new branch.",
36
+ `Summary: ${summary}`,
37
+ ].join("\n"),
38
+ },
39
+ ],
40
+ details: {
41
+ summary,
42
+ fixPrompt,
43
+ },
44
+ };
45
+ }
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: tarsk-read
3
+ description: >-
4
+ Tarsk Tool skill publishing: read.
5
+ version: 3.1.2
6
+ tools:
7
+ - read
8
+ disable-model-invocation: true
9
+ ---
10
+
11
+ # tarsk-read
12
+
13
+ Publishes: read.
14
+
15
+ Listing / footnote / unchanged copy in `scripts/read.js`. Host
16
+ `context.fs.read` returns structured data (cwd checks, image/pdf gates,
17
+ unchanged-cache). Selection (`select`) returns `{ status: "raw" }`.