tarsk 0.3.43 → 0.4.4

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 (414) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/agent.error-utils.d.ts +14 -0
  3. package/dist/agent/agent.error-utils.js +52 -0
  4. package/dist/agent/agent.event-transformer.d.ts +55 -0
  5. package/dist/agent/agent.event-transformer.js +175 -0
  6. package/dist/agent/agent.executor.d.ts +26 -0
  7. package/dist/agent/agent.executor.js +286 -0
  8. package/dist/agent/agent.model-resolver.d.ts +22 -0
  9. package/dist/agent/agent.model-resolver.js +67 -0
  10. package/dist/agent/agent.process-manager.d.ts +57 -0
  11. package/dist/agent/agent.process-manager.js +262 -0
  12. package/dist/agent/agent.processing-state-manager.d.ts +74 -0
  13. package/dist/agent/agent.processing-state-manager.js +87 -0
  14. package/dist/agent/agent.prompt-loader.d.ts +16 -0
  15. package/dist/agent/agent.prompt-loader.js +227 -0
  16. package/dist/agent/agent.subagent-executor.d.ts +35 -0
  17. package/dist/agent/agent.subagent-executor.js +135 -0
  18. package/dist/bun/index.d.ts +2 -0
  19. package/dist/bun/index.js +165 -0
  20. package/dist/cli.d.ts +3 -0
  21. package/dist/cli.js +22 -0
  22. package/dist/core/crypto.d.ts +29 -0
  23. package/dist/core/crypto.js +166 -0
  24. package/dist/core/dev-server-cache.d.ts +46 -0
  25. package/dist/core/dev-server-cache.js +59 -0
  26. package/dist/core/env-manager.d.ts +3 -0
  27. package/dist/core/env-manager.js +60 -0
  28. package/dist/core/error-responses.d.ts +61 -0
  29. package/dist/core/error-responses.js +64 -0
  30. package/dist/core/logger.d.ts +10 -0
  31. package/dist/core/logger.js +47 -0
  32. package/dist/core/paths.d.ts +22 -0
  33. package/dist/core/paths.js +26 -0
  34. package/dist/core/random-words.d.ts +18 -0
  35. package/dist/core/random-words.js +135 -0
  36. package/dist/core/response-builder.d.ts +50 -0
  37. package/dist/core/response-builder.js +56 -0
  38. package/dist/core/route-helpers.d.ts +47 -0
  39. package/dist/core/route-helpers.js +54 -0
  40. package/dist/core/run-command-detector.d.ts +26 -0
  41. package/dist/core/run-command-detector.js +98 -0
  42. package/dist/core/stream-helper.d.ts +44 -0
  43. package/dist/core/stream-helper.js +50 -0
  44. package/dist/core/utils.d.ts +43 -0
  45. package/dist/core/utils.js +113 -0
  46. package/dist/core/validation.d.ts +10 -0
  47. package/dist/core/validation.js +20 -0
  48. package/dist/database/database.d.ts +40 -0
  49. package/dist/database/database.encryption.d.ts +33 -0
  50. package/dist/database/database.encryption.js +62 -0
  51. package/dist/database/database.js +480 -0
  52. package/dist/database/database.state.d.ts +52 -0
  53. package/dist/database/database.state.js +119 -0
  54. package/dist/database/database.test-utils.d.ts +22 -0
  55. package/dist/database/database.test-utils.js +39 -0
  56. package/dist/database/database.types.d.ts +3 -0
  57. package/dist/database/database.types.js +2 -0
  58. package/dist/features/agents/agents.manager.d.ts +24 -0
  59. package/dist/features/agents/agents.manager.js +200 -0
  60. package/dist/features/ask-user/ask-user.routes.d.ts +9 -0
  61. package/dist/features/ask-user/ask-user.routes.js +35 -0
  62. package/dist/features/chat/chat-delete.route.d.ts +15 -0
  63. package/dist/features/chat/chat-delete.route.js +36 -0
  64. package/dist/features/chat/chat-post.route.d.ts +11 -0
  65. package/dist/features/chat/chat-post.route.js +270 -0
  66. package/dist/features/chat/chat-stop.route.d.ts +21 -0
  67. package/dist/features/chat/chat-stop.route.js +22 -0
  68. package/dist/features/chat/chat-subscribe.route.d.ts +9 -0
  69. package/dist/features/chat/chat-subscribe.route.js +71 -0
  70. package/dist/features/chat/chat.routes.d.ts +22 -0
  71. package/dist/features/chat/chat.routes.js +29 -0
  72. package/dist/features/conversations/conversations-delete.route.d.ts +16 -0
  73. package/dist/features/conversations/conversations-delete.route.js +34 -0
  74. package/dist/features/conversations/conversations-get-all.route.d.ts +16 -0
  75. package/dist/features/conversations/conversations-get-all.route.js +39 -0
  76. package/dist/features/conversations/conversations-get-by-id.route.d.ts +16 -0
  77. package/dist/features/conversations/conversations-get-by-id.route.js +38 -0
  78. package/dist/features/conversations/conversations-get-deleted.route.d.ts +15 -0
  79. package/dist/features/conversations/conversations-get-deleted.route.js +34 -0
  80. package/dist/features/conversations/conversations-get-messages.route.d.ts +16 -0
  81. package/dist/features/conversations/conversations-get-messages.route.js +49 -0
  82. package/dist/features/conversations/conversations.content.d.ts +28 -0
  83. package/dist/features/conversations/conversations.content.js +142 -0
  84. package/dist/features/conversations/conversations.database.d.ts +108 -0
  85. package/dist/features/conversations/conversations.database.js +373 -0
  86. package/dist/features/conversations/conversations.manager.d.ts +130 -0
  87. package/dist/features/conversations/conversations.manager.js +162 -0
  88. package/dist/features/conversations/conversations.routes.d.ts +21 -0
  89. package/dist/features/conversations/conversations.routes.js +38 -0
  90. package/dist/features/conversations/token-usage.route.d.ts +41 -0
  91. package/dist/features/conversations/token-usage.route.js +419 -0
  92. package/dist/features/git/git-commit.route.d.ts +12 -0
  93. package/dist/features/git/git-commit.route.js +39 -0
  94. package/dist/features/git/git-create-branch.route.d.ts +28 -0
  95. package/dist/features/git/git-create-branch.route.js +119 -0
  96. package/dist/features/git/git-create-pr.route.d.ts +13 -0
  97. package/dist/features/git/git-create-pr.route.js +50 -0
  98. package/dist/features/git/git-create-repo.route.d.ts +14 -0
  99. package/dist/features/git/git-create-repo.route.js +108 -0
  100. package/dist/features/git/git-diff.route.d.ts +30 -0
  101. package/dist/features/git/git-diff.route.js +189 -0
  102. package/dist/features/git/git-fetch.route.d.ts +12 -0
  103. package/dist/features/git/git-fetch.route.js +31 -0
  104. package/dist/features/git/git-generate-commit-message.route.d.ts +12 -0
  105. package/dist/features/git/git-generate-commit-message.route.js +76 -0
  106. package/dist/features/git/git-generate-pr-info.route.d.ts +13 -0
  107. package/dist/features/git/git-generate-pr-info.route.js +147 -0
  108. package/dist/features/git/git-github-status.route.d.ts +16 -0
  109. package/dist/features/git/git-github-status.route.js +68 -0
  110. package/dist/features/git/git-log.route.d.ts +17 -0
  111. package/dist/features/git/git-log.route.js +33 -0
  112. package/dist/features/git/git-pr-status.route.d.ts +15 -0
  113. package/dist/features/git/git-pr-status.route.js +33 -0
  114. package/dist/features/git/git-pull.route.d.ts +12 -0
  115. package/dist/features/git/git-pull.route.js +35 -0
  116. package/dist/features/git/git-push.route.d.ts +12 -0
  117. package/dist/features/git/git-push.route.js +46 -0
  118. package/dist/features/git/git-status-cache.database.d.ts +7 -0
  119. package/dist/features/git/git-status-cache.database.js +53 -0
  120. package/dist/features/git/git-status.route.d.ts +15 -0
  121. package/dist/features/git/git-status.route.js +62 -0
  122. package/dist/features/git/git-sync-branch.route.d.ts +4 -0
  123. package/dist/features/git/git-sync-branch.route.js +208 -0
  124. package/dist/features/git/git-unified-status.route.d.ts +30 -0
  125. package/dist/features/git/git-unified-status.route.js +165 -0
  126. package/dist/features/git/git-username.route.d.ts +3 -0
  127. package/dist/features/git/git-username.route.js +24 -0
  128. package/dist/features/git/git.manager.d.ts +139 -0
  129. package/dist/features/git/git.manager.js +352 -0
  130. package/dist/features/git/git.routes.d.ts +4 -0
  131. package/dist/features/git/git.routes.js +116 -0
  132. package/dist/features/git/git.utils.d.ts +82 -0
  133. package/dist/features/git/git.utils.js +1040 -0
  134. package/dist/features/mcp/mcp.config.d.ts +27 -0
  135. package/dist/features/mcp/mcp.config.js +148 -0
  136. package/dist/features/mcp/mcp.manager.d.ts +61 -0
  137. package/dist/features/mcp/mcp.manager.js +254 -0
  138. package/dist/features/mcp/mcp.popular.json +103 -0
  139. package/dist/features/mcp/mcp.routes.d.ts +13 -0
  140. package/dist/features/mcp/mcp.routes.js +159 -0
  141. package/dist/features/mcp/mcp.types.d.ts +80 -0
  142. package/dist/features/mcp/mcp.types.js +8 -0
  143. package/dist/features/metadata/metadata.manager.d.ts +126 -0
  144. package/dist/features/metadata/metadata.manager.js +423 -0
  145. package/dist/features/models/model-info-aihubmix.d.ts +25 -0
  146. package/dist/features/models/model-info-aihubmix.js +117 -0
  147. package/dist/features/models/model-info-openrouter.d.ts +25 -0
  148. package/dist/features/models/model-info-openrouter.js +104 -0
  149. package/dist/features/models/model-info.d.ts +37 -0
  150. package/dist/features/models/model-info.js +39 -0
  151. package/dist/features/models/models-catalog.d.ts +49 -0
  152. package/dist/features/models/models-catalog.js +80 -0
  153. package/dist/features/models/models-catalog.route.d.ts +43 -0
  154. package/dist/features/models/models-catalog.route.js +15 -0
  155. package/dist/features/models/models-get-available.route.d.ts +36 -0
  156. package/dist/features/models/models-get-available.route.js +66 -0
  157. package/dist/features/models/models-get-enabled.route.d.ts +33 -0
  158. package/dist/features/models/models-get-enabled.route.js +45 -0
  159. package/dist/features/models/models-get-model-info.route.d.ts +31 -0
  160. package/dist/features/models/models-get-model-info.route.js +84 -0
  161. package/dist/features/models/models-model-disable.route.d.ts +15 -0
  162. package/dist/features/models/models-model-disable.route.js +20 -0
  163. package/dist/features/models/models-model-enable.route.d.ts +13 -0
  164. package/dist/features/models/models-model-enable.route.js +20 -0
  165. package/dist/features/models/models-provider-refresh.route.d.ts +17 -0
  166. package/dist/features/models/models-provider-refresh.route.js +20 -0
  167. package/dist/features/models/models.manager.d.ts +58 -0
  168. package/dist/features/models/models.manager.js +138 -0
  169. package/dist/features/models/models.routes.d.ts +18 -0
  170. package/dist/features/models/models.routes.js +83 -0
  171. package/dist/features/models/open-router-models.d.ts +38 -0
  172. package/dist/features/models/open-router-models.js +73 -0
  173. package/dist/features/models/openai-models.d.ts +63 -0
  174. package/dist/features/models/openai-models.js +150 -0
  175. package/dist/features/onboarding/onboarding-get-git-check.route.d.ts +11 -0
  176. package/dist/features/onboarding/onboarding-get-git-check.route.js +28 -0
  177. package/dist/features/onboarding/onboarding-get-status.route.d.ts +12 -0
  178. package/dist/features/onboarding/onboarding-get-status.route.js +15 -0
  179. package/dist/features/onboarding/onboarding-post-complete.route.d.ts +12 -0
  180. package/dist/features/onboarding/onboarding-post-complete.route.js +15 -0
  181. package/dist/features/onboarding/onboarding-post-reset.route.d.ts +12 -0
  182. package/dist/features/onboarding/onboarding-post-reset.route.js +15 -0
  183. package/dist/features/onboarding/onboarding.routes.d.ts +18 -0
  184. package/dist/features/onboarding/onboarding.routes.js +28 -0
  185. package/dist/features/project-todos/project-todos.database.d.ts +38 -0
  186. package/dist/features/project-todos/project-todos.database.js +91 -0
  187. package/dist/features/project-todos/project-todos.routes.d.ts +4 -0
  188. package/dist/features/project-todos/project-todos.routes.js +94 -0
  189. package/dist/features/projects/projects-ai-files.route.d.ts +148 -0
  190. package/dist/features/projects/projects-ai-files.route.js +425 -0
  191. package/dist/features/projects/projects-commands.route.d.ts +27 -0
  192. package/dist/features/projects/projects-commands.route.js +39 -0
  193. package/dist/features/projects/projects-create.route.d.ts +19 -0
  194. package/dist/features/projects/projects-create.route.js +37 -0
  195. package/dist/features/projects/projects-delete.route.d.ts +24 -0
  196. package/dist/features/projects/projects-delete.route.js +34 -0
  197. package/dist/features/projects/projects-get.route.d.ts +47 -0
  198. package/dist/features/projects/projects-get.route.js +36 -0
  199. package/dist/features/projects/projects-list.route.d.ts +58 -0
  200. package/dist/features/projects/projects-list.route.js +59 -0
  201. package/dist/features/projects/projects-open-folder.route.d.ts +10 -0
  202. package/dist/features/projects/projects-open-folder.route.js +11 -0
  203. package/dist/features/projects/projects-open.route.d.ts +26 -0
  204. package/dist/features/projects/projects-open.route.js +49 -0
  205. package/dist/features/projects/projects-package-scripts.route.d.ts +15 -0
  206. package/dist/features/projects/projects-package-scripts.route.js +96 -0
  207. package/dist/features/projects/projects-run-command.route.d.ts +8 -0
  208. package/dist/features/projects/projects-run-command.route.js +21 -0
  209. package/dist/features/projects/projects-run.route.d.ts +51 -0
  210. package/dist/features/projects/projects-run.route.js +74 -0
  211. package/dist/features/projects/projects-update.route.d.ts +24 -0
  212. package/dist/features/projects/projects-update.route.js +81 -0
  213. package/dist/features/projects/projects.creator.d.ts +33 -0
  214. package/dist/features/projects/projects.creator.js +555 -0
  215. package/dist/features/projects/projects.database.d.ts +61 -0
  216. package/dist/features/projects/projects.database.js +212 -0
  217. package/dist/features/projects/projects.manager.d.ts +291 -0
  218. package/dist/features/projects/projects.manager.js +426 -0
  219. package/dist/features/projects/projects.open-with.d.ts +27 -0
  220. package/dist/features/projects/projects.open-with.js +156 -0
  221. package/dist/features/projects/projects.routes.d.ts +20 -0
  222. package/dist/features/projects/projects.routes.js +255 -0
  223. package/dist/features/projects/terminal-session-manager.d.ts +55 -0
  224. package/dist/features/projects/terminal-session-manager.js +90 -0
  225. package/dist/features/providers/provider-resolver.d.ts +13 -0
  226. package/dist/features/providers/provider-resolver.js +22 -0
  227. package/dist/features/providers/providers-get-credits.route.d.ts +15 -0
  228. package/dist/features/providers/providers-get-credits.route.js +51 -0
  229. package/dist/features/providers/providers-get.route.d.ts +16 -0
  230. package/dist/features/providers/providers-get.route.js +32 -0
  231. package/dist/features/providers/providers-open-external.route.d.ts +15 -0
  232. package/dist/features/providers/providers-open-external.route.js +49 -0
  233. package/dist/features/providers/providers-post-bulk-keys.route.d.ts +14 -0
  234. package/dist/features/providers/providers-post-bulk-keys.route.js +31 -0
  235. package/dist/features/providers/providers-post-keys.route.d.ts +14 -0
  236. package/dist/features/providers/providers-post-keys.route.js +25 -0
  237. package/dist/features/providers/providers.routes.d.ts +19 -0
  238. package/dist/features/providers/providers.routes.js +31 -0
  239. package/dist/features/rules/rules-post.route.d.ts +43 -0
  240. package/dist/features/rules/rules-post.route.js +89 -0
  241. package/dist/features/rules/rules.manager.d.ts +36 -0
  242. package/dist/features/rules/rules.manager.js +203 -0
  243. package/dist/features/rules/rules.routes.d.ts +12 -0
  244. package/dist/features/rules/rules.routes.js +13 -0
  245. package/dist/features/run/run-get-running.route.d.ts +15 -0
  246. package/dist/features/run/run-get-running.route.js +21 -0
  247. package/dist/features/run/run-post-start.route.d.ts +8 -0
  248. package/dist/features/run/run-post-start.route.js +21 -0
  249. package/dist/features/run/run-post-stop.route.d.ts +15 -0
  250. package/dist/features/run/run-post-stop.route.js +24 -0
  251. package/dist/features/run/run-post-suggest.route.d.ts +15 -0
  252. package/dist/features/run/run-post-suggest.route.js +21 -0
  253. package/dist/features/run/run-put-command.route.d.ts +15 -0
  254. package/dist/features/run/run-put-command.route.js +24 -0
  255. package/dist/features/run/run.routes.d.ts +19 -0
  256. package/dist/features/run/run.routes.js +31 -0
  257. package/dist/features/scaffold/index.d.ts +7 -0
  258. package/dist/features/scaffold/index.js +5 -0
  259. package/dist/features/scaffold/scaffold-get-templates.route.d.ts +27 -0
  260. package/dist/features/scaffold/scaffold-get-templates.route.js +17 -0
  261. package/dist/features/scaffold/scaffold-post.route.d.ts +8 -0
  262. package/dist/features/scaffold/scaffold-post.route.js +30 -0
  263. package/dist/features/scaffold/scaffold.routes.d.ts +10 -0
  264. package/dist/features/scaffold/scaffold.routes.js +16 -0
  265. package/dist/features/scaffold/scaffold.runner.d.ts +48 -0
  266. package/dist/features/scaffold/scaffold.runner.js +475 -0
  267. package/dist/features/scaffold/scaffold.types.d.ts +26 -0
  268. package/dist/features/scaffold/scaffold.types.js +5 -0
  269. package/dist/features/skills/skills.activation.d.ts +31 -0
  270. package/dist/features/skills/skills.activation.js +155 -0
  271. package/dist/features/skills/skills.manager.d.ts +35 -0
  272. package/dist/features/skills/skills.manager.js +251 -0
  273. package/dist/features/slash-commands/slash-commands-delete.route.d.ts +23 -0
  274. package/dist/features/slash-commands/slash-commands-delete.route.js +36 -0
  275. package/dist/features/slash-commands/slash-commands-get.route.d.ts +53 -0
  276. package/dist/features/slash-commands/slash-commands-get.route.js +54 -0
  277. package/dist/features/slash-commands/slash-commands-post.route.d.ts +39 -0
  278. package/dist/features/slash-commands/slash-commands-post.route.js +70 -0
  279. package/dist/features/slash-commands/slash-commands-put.route.d.ts +23 -0
  280. package/dist/features/slash-commands/slash-commands-put.route.js +36 -0
  281. package/dist/features/slash-commands/slash-commands.manager.d.ts +46 -0
  282. package/dist/features/slash-commands/slash-commands.manager.js +265 -0
  283. package/dist/features/slash-commands/slash-commands.routes.d.ts +13 -0
  284. package/dist/features/slash-commands/slash-commands.routes.js +20 -0
  285. package/dist/features/threads/threads-ai-files.route.d.ts +153 -0
  286. package/dist/features/threads/threads-ai-files.route.js +287 -0
  287. package/dist/features/threads/threads-conversation-folder-path.route.d.ts +14 -0
  288. package/dist/features/threads/threads-conversation-folder-path.route.js +23 -0
  289. package/dist/features/threads/threads-create.route.d.ts +22 -0
  290. package/dist/features/threads/threads-create.route.js +60 -0
  291. package/dist/features/threads/threads-delete.route.d.ts +25 -0
  292. package/dist/features/threads/threads-delete.route.js +35 -0
  293. package/dist/features/threads/threads-files.route.d.ts +15 -0
  294. package/dist/features/threads/threads-files.route.js +20 -0
  295. package/dist/features/threads/threads-fix-comments.route.d.ts +26 -0
  296. package/dist/features/threads/threads-fix-comments.route.js +45 -0
  297. package/dist/features/threads/threads-get.route.d.ts +30 -0
  298. package/dist/features/threads/threads-get.route.js +38 -0
  299. package/dist/features/threads/threads-list.route.d.ts +56 -0
  300. package/dist/features/threads/threads-list.route.js +58 -0
  301. package/dist/features/threads/threads-messages.route.d.ts +28 -0
  302. package/dist/features/threads/threads-messages.route.js +110 -0
  303. package/dist/features/threads/threads-open.route.d.ts +26 -0
  304. package/dist/features/threads/threads-open.route.js +62 -0
  305. package/dist/features/threads/threads-select.route.d.ts +25 -0
  306. package/dist/features/threads/threads-select.route.js +35 -0
  307. package/dist/features/threads/threads-update.route.d.ts +15 -0
  308. package/dist/features/threads/threads-update.route.js +30 -0
  309. package/dist/features/threads/threads.database.d.ts +68 -0
  310. package/dist/features/threads/threads.database.js +215 -0
  311. package/dist/features/threads/threads.manager.d.ts +204 -0
  312. package/dist/features/threads/threads.manager.js +505 -0
  313. package/dist/features/threads/threads.routes.d.ts +20 -0
  314. package/dist/features/threads/threads.routes.js +230 -0
  315. package/dist/features/todos/todos.database.d.ts +14 -0
  316. package/dist/features/todos/todos.database.js +31 -0
  317. package/dist/features/updates/updates.routes.d.ts +13 -0
  318. package/dist/features/updates/updates.routes.js +40 -0
  319. package/dist/index.d.ts +3 -0
  320. package/dist/index.js +37 -10022
  321. package/dist/project-analyzer.d.ts +26 -0
  322. package/dist/project-analyzer.js +307 -0
  323. package/dist/public/assets/add-agent-view-B9IQjAwU.js +1 -0
  324. package/dist/public/assets/add-rule-view-BdZHurB3.js +7 -0
  325. package/dist/public/assets/add-skill-view-Cuu6Z0fr.js +1 -0
  326. package/dist/public/assets/add-slash-command-view-uW75Jvbh.js +1 -0
  327. package/dist/public/assets/conversation-history-view-D0OBxJMC.js +1 -0
  328. package/dist/public/assets/dialogs-config-DiFQjCeA.js +46 -0
  329. package/dist/public/assets/diff-view-B5XBM5UZ.js +3 -0
  330. package/dist/public/assets/file-tree-sidebar-DMX7fHi7.js +1 -0
  331. package/dist/public/assets/files-view-CUZn7G0o.js +1 -0
  332. package/dist/public/assets/history-view-B8HM78Wa.js +1 -0
  333. package/dist/public/assets/index-C-p81QYw.js +17 -0
  334. package/dist/public/assets/index-DhVMb7D6.css +1 -0
  335. package/dist/public/assets/mcp-manager-CEm1L3dn.js +1 -0
  336. package/dist/public/assets/mcp-server-edit-view-BAwMNOAH.js +5 -0
  337. package/dist/public/assets/mcp-servers-sidebar-Ncxq9Oj5.js +1 -0
  338. package/dist/public/assets/mcp-view-Cz7nelGQ.js +1 -0
  339. package/dist/public/assets/monaco-DvsnxTfD.js +11 -0
  340. package/dist/public/assets/onboarding-CvpvkF3X.js +1 -0
  341. package/dist/public/assets/onboarding-dialog-CKJw0ULj.js +1 -0
  342. package/dist/public/assets/project-settings-view-DJ1uvrTL.js +1 -0
  343. package/dist/public/assets/provider-details-view-CkS6WbnK.js +1 -0
  344. package/dist/public/assets/providers-sidebar-C4MF6i9d.js +1 -0
  345. package/dist/public/assets/radio-group-BItFbSTw.js +1 -0
  346. package/dist/public/assets/react-vendor-DkKo9QGO.js +17 -0
  347. package/dist/public/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  348. package/dist/public/assets/settings-view-C45kmAGH.js +2 -0
  349. package/dist/public/assets/store-BVVGurzl.js +2 -0
  350. package/dist/public/assets/use-toast-DEJkXPN4.js +1 -0
  351. package/dist/public/assets/utils-DY_quHB8.js +1 -0
  352. package/dist/public/fonts/google-sans.ttf +0 -0
  353. package/dist/public/fonts/zalando.ttf +0 -0
  354. package/dist/public/ide/android-studio.svg +1 -0
  355. package/dist/public/ide/cursor.svg +12 -0
  356. package/dist/public/ide/kiro.svg +11 -0
  357. package/dist/public/ide/terminal.svg +7 -0
  358. package/dist/public/ide/vscode.svg +2 -0
  359. package/dist/public/ide/windsurf.svg +3 -0
  360. package/dist/public/ide/xcode.svg +2 -0
  361. package/dist/public/index.html +13 -9
  362. package/dist/scaffold-templates.json +3 -12
  363. package/dist/server.d.ts +12 -0
  364. package/dist/server.js +142 -0
  365. package/dist/tools/agent-tool.d.ts +49 -0
  366. package/dist/tools/agent-tool.js +131 -0
  367. package/dist/tools/ask-user.d.ts +25 -0
  368. package/dist/tools/ask-user.js +74 -0
  369. package/dist/tools/ast-grep.d.ts +28 -0
  370. package/dist/tools/ast-grep.js +273 -0
  371. package/dist/tools/bash.d.ts +33 -0
  372. package/dist/tools/bash.js +186 -0
  373. package/dist/tools/edit-diff.d.ts +24 -0
  374. package/dist/tools/edit-diff.js +136 -0
  375. package/dist/tools/edit.d.ts +28 -0
  376. package/dist/tools/edit.js +78 -0
  377. package/dist/tools/find.d.ts +31 -0
  378. package/dist/tools/find.js +117 -0
  379. package/dist/tools/grep.d.ts +37 -0
  380. package/dist/tools/grep.js +231 -0
  381. package/dist/tools/index.d.ts +93 -0
  382. package/dist/tools/index.js +110 -0
  383. package/dist/tools/ls.d.ts +31 -0
  384. package/dist/tools/ls.js +108 -0
  385. package/dist/tools/mcp-tools.d.ts +31 -0
  386. package/dist/tools/mcp-tools.js +59 -0
  387. package/dist/tools/path-utils.d.ts +14 -0
  388. package/dist/tools/path-utils.js +87 -0
  389. package/dist/tools/read.d.ts +27 -0
  390. package/dist/tools/read.js +86 -0
  391. package/dist/tools/resolve-bin.d.ts +5 -0
  392. package/dist/tools/resolve-bin.js +28 -0
  393. package/dist/tools/shell.d.ts +7 -0
  394. package/dist/tools/shell.js +143 -0
  395. package/dist/tools/skill-reference-tool.d.ts +30 -0
  396. package/dist/tools/skill-reference-tool.js +171 -0
  397. package/dist/tools/skill-tool.d.ts +33 -0
  398. package/dist/tools/skill-tool.js +213 -0
  399. package/dist/tools/todo.d.ts +20 -0
  400. package/dist/tools/todo.js +168 -0
  401. package/dist/tools/tool-helpers.d.ts +78 -0
  402. package/dist/tools/tool-helpers.js +109 -0
  403. package/dist/tools/truncate.d.ts +31 -0
  404. package/dist/tools/truncate.js +164 -0
  405. package/dist/tools/write.d.ts +21 -0
  406. package/dist/tools/write.js +65 -0
  407. package/package.json +33 -27
  408. package/dist/public/assets/index-6jySngUQ.css +0 -1
  409. package/dist/public/assets/index-BjFpLTSj.js +0 -18
  410. package/dist/public/assets/monaco-w6PwaWGP.js +0 -11
  411. package/dist/public/assets/radix-ui-e1yigncZ.js +0 -1
  412. package/dist/public/assets/react-vendor-B6JfXZmN.js +0 -59
  413. package/dist/public/assets/ui-styling-CyCIFleB.js +0 -1
  414. package/dist/public/assets/utils-Dd_itR7L.js +0 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Skill Manager
3
+ *
4
+ * Loads and manages agent skills from SKILL.md files with frontmatter.
5
+ * Skills can be stored in:
6
+ * - Project-specific: ./.agents/skills/ (relative to thread path)
7
+ * - Global: ~/.agents/skills/
8
+ *
9
+ * Skills follow the Agent Skills format specification:
10
+ * https://agentskills.io/
11
+ */
12
+ import type { Skill } from "@tarsk/shared";
13
+ /**
14
+ * SkillManager handles loading and validating agent skills
15
+ */
16
+ export declare class SkillManager {
17
+ /**
18
+ * Load all available skills for a given thread
19
+ * Project skills override global ones with the same name
20
+ */
21
+ loadSkills(threadPath: string): Promise<Skill[]>;
22
+ /**
23
+ * Load skills from a specific directory
24
+ */
25
+ private loadSkillsFromDir;
26
+ /**
27
+ * Get a specific skill by name
28
+ */
29
+ getSkill(name: string, threadPath: string): Promise<Skill | null>;
30
+ /**
31
+ * Validate skill name format (public utility method)
32
+ */
33
+ validateSkillName(name: string): boolean;
34
+ }
35
+ //# sourceMappingURL=skills.manager.d.ts.map
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Skill Manager
3
+ *
4
+ * Loads and manages agent skills from SKILL.md files with frontmatter.
5
+ * Skills can be stored in:
6
+ * - Project-specific: ./.agents/skills/ (relative to thread path)
7
+ * - Global: ~/.agents/skills/
8
+ *
9
+ * Skills follow the Agent Skills format specification:
10
+ * https://agentskills.io/
11
+ */
12
+ import { readdir, readFile } from "fs/promises";
13
+ import { join } from "path";
14
+ import { existsSync } from "fs";
15
+ import { homedir } from "os";
16
+ /**
17
+ * Parse frontmatter from SKILL.md content
18
+ * Returns { metadata, content } where content is the body after frontmatter
19
+ */
20
+ function parseFrontmatter(markdown) {
21
+ const lines = markdown.split("\n");
22
+ // Check if file starts with ---
23
+ if (lines[0]?.trim() !== "---") {
24
+ return {
25
+ metadata: {},
26
+ content: markdown.trim(),
27
+ };
28
+ }
29
+ // Find the closing ---
30
+ let endIndex = -1;
31
+ for (let i = 1; i < lines.length; i++) {
32
+ if (lines[i]?.trim() === "---") {
33
+ endIndex = i;
34
+ break;
35
+ }
36
+ }
37
+ // No closing --- found
38
+ if (endIndex === -1) {
39
+ return {
40
+ metadata: {},
41
+ content: markdown.trim(),
42
+ };
43
+ }
44
+ // Parse frontmatter
45
+ const frontmatterLines = lines.slice(1, endIndex);
46
+ const metadata = {};
47
+ for (const line of frontmatterLines) {
48
+ const colonIndex = line.indexOf(":");
49
+ if (colonIndex === -1)
50
+ continue;
51
+ const key = line.slice(0, colonIndex).trim();
52
+ const value = line.slice(colonIndex + 1).trim();
53
+ // Map YAML keys to TypeScript property names
54
+ if (key === "name") {
55
+ metadata.name = value;
56
+ }
57
+ else if (key === "description") {
58
+ metadata.description = value;
59
+ }
60
+ else if (key === "license") {
61
+ metadata.license = value;
62
+ }
63
+ else if (key === "compatibility") {
64
+ metadata.compatibility = value;
65
+ }
66
+ else if (key === "allowed-tools") {
67
+ metadata.allowedTools = value;
68
+ }
69
+ else if (key === "metadata") {
70
+ // Parse metadata object (simple key:value pairs)
71
+ // For now, we'll skip nested metadata parsing
72
+ // This would require a proper YAML parser for full support
73
+ }
74
+ }
75
+ // Content is everything after the closing ---
76
+ const content = lines
77
+ .slice(endIndex + 1)
78
+ .join("\n")
79
+ .trim();
80
+ return { metadata, content };
81
+ }
82
+ /**
83
+ * Get the global skills directory path
84
+ */
85
+ function getGlobalSkillsDir() {
86
+ return join(homedir(), ".agents", "skills");
87
+ }
88
+ /**
89
+ * Get the project-specific skills directory path
90
+ */
91
+ function getProjectSkillsDir(threadPath) {
92
+ return join(threadPath, ".agents", "skills");
93
+ }
94
+ /**
95
+ * Validate skill name format
96
+ * - Must be 1-64 characters
97
+ * - Lowercase alphanumeric and hyphens only
98
+ * - Must not start or end with hyphen
99
+ * - Must not contain consecutive hyphens
100
+ */
101
+ function validateSkillName(name) {
102
+ if (!name || name.length === 0 || name.length > 64) {
103
+ return false;
104
+ }
105
+ // Check for valid characters (lowercase alphanumeric + hyphens)
106
+ if (!/^[a-z0-9-]+$/.test(name)) {
107
+ return false;
108
+ }
109
+ // Must not start or end with hyphen
110
+ if (name.startsWith("-") || name.endsWith("-")) {
111
+ return false;
112
+ }
113
+ // Must not contain consecutive hyphens
114
+ if (name.includes("--")) {
115
+ return false;
116
+ }
117
+ return true;
118
+ }
119
+ /**
120
+ * Validate skill description
121
+ * - Must be 1-1024 characters
122
+ * - Must be non-empty
123
+ */
124
+ function validateDescription(description) {
125
+ return !!description && description.length > 0 && description.length <= 1024;
126
+ }
127
+ /**
128
+ * SkillManager handles loading and validating agent skills
129
+ */
130
+ export class SkillManager {
131
+ /**
132
+ * Load all available skills for a given thread
133
+ * Project skills override global ones with the same name
134
+ */
135
+ async loadSkills(threadPath) {
136
+ const skills = new Map();
137
+ // Load global skills first
138
+ const globalDir = getGlobalSkillsDir();
139
+ if (existsSync(globalDir)) {
140
+ const globalSkills = await this.loadSkillsFromDir(globalDir, "global");
141
+ for (const skill of globalSkills) {
142
+ skills.set(skill.name, skill);
143
+ }
144
+ }
145
+ // Load project skills (override global)
146
+ const projectDir = getProjectSkillsDir(threadPath);
147
+ if (existsSync(projectDir)) {
148
+ const projectSkills = await this.loadSkillsFromDir(projectDir, "project");
149
+ for (const skill of projectSkills) {
150
+ skills.set(skill.name, skill);
151
+ }
152
+ }
153
+ return Array.from(skills.values());
154
+ }
155
+ /**
156
+ * Load skills from a specific directory
157
+ */
158
+ async loadSkillsFromDir(dir, scope) {
159
+ const skills = [];
160
+ try {
161
+ const entries = await readdir(dir, { withFileTypes: true });
162
+ for (const entry of entries) {
163
+ // Skills must be directories
164
+ if (!entry.isDirectory())
165
+ continue;
166
+ const skillDirName = entry.name;
167
+ const skillPath = join(dir, skillDirName);
168
+ const skillFilePath = join(skillPath, "SKILL.md");
169
+ // Skip if SKILL.md doesn't exist
170
+ if (!existsSync(skillFilePath)) {
171
+ console.warn(`Skipping skill directory ${skillDirName}: SKILL.md not found`);
172
+ continue;
173
+ }
174
+ try {
175
+ // Read and parse SKILL.md
176
+ const fileContent = await readFile(skillFilePath, "utf-8");
177
+ const { metadata, content } = parseFrontmatter(fileContent);
178
+ // Validate required fields
179
+ if (!metadata.name) {
180
+ console.warn(`Skipping skill in ${skillDirName}: missing 'name' in frontmatter`);
181
+ continue;
182
+ }
183
+ if (!metadata.description) {
184
+ console.warn(`Skipping skill in ${skillDirName}: missing 'description' in frontmatter`);
185
+ continue;
186
+ }
187
+ // Validate name format
188
+ if (!validateSkillName(metadata.name)) {
189
+ console.warn(`Skipping skill in ${skillDirName}: invalid name format '${metadata.name}'. ` +
190
+ `Name must be 1-64 chars, lowercase alphanumeric + hyphens, no leading/trailing/consecutive hyphens.`);
191
+ continue;
192
+ }
193
+ // Validate description length
194
+ if (!validateDescription(metadata.description)) {
195
+ console.warn(`Skipping skill in ${skillDirName}: description must be 1-1024 characters`);
196
+ continue;
197
+ }
198
+ // Validate that directory name matches frontmatter name
199
+ if (metadata.name !== skillDirName) {
200
+ console.warn(`Skipping skill in ${skillDirName}: directory name must match frontmatter name '${metadata.name}'`);
201
+ continue;
202
+ }
203
+ // Create skill object
204
+ const skill = {
205
+ name: metadata.name,
206
+ description: metadata.description,
207
+ scope,
208
+ skillPath,
209
+ instructions: content,
210
+ };
211
+ // Add optional fields if present
212
+ if (metadata.license) {
213
+ skill.license = metadata.license;
214
+ }
215
+ if (metadata.compatibility) {
216
+ skill.compatibility = metadata.compatibility;
217
+ }
218
+ if (metadata.metadata) {
219
+ skill.metadata = metadata.metadata;
220
+ }
221
+ if (metadata.allowedTools) {
222
+ skill.allowedTools = metadata.allowedTools;
223
+ }
224
+ skills.push(skill);
225
+ }
226
+ catch (error) {
227
+ console.error(`Failed to load skill from ${skillDirName}:`, error);
228
+ }
229
+ }
230
+ }
231
+ catch (error) {
232
+ // Directory doesn't exist or can't be read - that's okay
233
+ console.error(`Failed to load skills from ${dir}:`, error);
234
+ }
235
+ return skills;
236
+ }
237
+ /**
238
+ * Get a specific skill by name
239
+ */
240
+ async getSkill(name, threadPath) {
241
+ const skills = await this.loadSkills(threadPath);
242
+ return skills.find((skill) => skill.name === name) ?? null;
243
+ }
244
+ /**
245
+ * Validate skill name format (public utility method)
246
+ */
247
+ validateSkillName(name) {
248
+ return validateSkillName(name);
249
+ }
250
+ }
251
+ //# sourceMappingURL=skills.manager.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * DELETE /api/slash-commands
3
+ * Delete a slash command
4
+ * Body: { filePath }
5
+ */
6
+ import type { Context } from "hono";
7
+ export declare function deleteSlashCommand(c: Context): Promise<(Response & import("hono").TypedResponse<{
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ timestamp: string;
12
+ };
13
+ }, 400, "json">) | (Response & import("hono").TypedResponse<{
14
+ success: true;
15
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
16
+ error: {
17
+ code: string;
18
+ message: string;
19
+ details: import("hono/utils/types").JSONValue;
20
+ timestamp: string;
21
+ };
22
+ }, 500, "json">)>;
23
+ //# sourceMappingURL=slash-commands-delete.route.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * DELETE /api/slash-commands
3
+ * Delete a slash command
4
+ * Body: { filePath }
5
+ */
6
+ import { SlashCommandManager } from "../slash-commands/slash-commands.manager.js";
7
+ const slashCommandManager = new SlashCommandManager();
8
+ export async function deleteSlashCommand(c) {
9
+ try {
10
+ const body = await c.req.json();
11
+ const { filePath } = body;
12
+ if (!filePath) {
13
+ return c.json({
14
+ error: {
15
+ code: "MISSING_FILE_PATH",
16
+ message: "filePath is required",
17
+ timestamp: new Date().toISOString(),
18
+ },
19
+ }, 400);
20
+ }
21
+ await slashCommandManager.deleteCommand(filePath);
22
+ return c.json({ success: true });
23
+ }
24
+ catch (error) {
25
+ console.error("Failed to delete slash command:", error);
26
+ return c.json({
27
+ error: {
28
+ code: "DELETE_FAILED",
29
+ message: error instanceof Error ? error.message : "Failed to delete slash command",
30
+ details: error,
31
+ timestamp: new Date().toISOString(),
32
+ },
33
+ }, 500);
34
+ }
35
+ }
36
+ //# sourceMappingURL=slash-commands-delete.route.js.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * GET /api/slash-commands?threadId=xxx
3
+ * List all available slash commands for a thread
4
+ */
5
+ import type { Context } from "hono";
6
+ import type { ThreadManager } from "../threads/threads.manager.js";
7
+ export declare function getSlashCommands(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ timestamp: string;
12
+ };
13
+ }, 400, "json">) | (Response & import("hono").TypedResponse<{
14
+ error: {
15
+ code: string;
16
+ message: string;
17
+ timestamp: string;
18
+ };
19
+ }, 404, "json">) | (Response & import("hono").TypedResponse<{
20
+ commands: {
21
+ name: string;
22
+ content: string;
23
+ metadata: {
24
+ description?: string | undefined;
25
+ argumentHint?: string | undefined;
26
+ mode?: string | undefined;
27
+ };
28
+ scope: "project" | "global";
29
+ filePath: string;
30
+ isBuiltIn?: boolean | undefined;
31
+ }[];
32
+ skills?: {
33
+ name: string;
34
+ description: string;
35
+ scope: "project" | "global";
36
+ skillPath: string;
37
+ license?: string | undefined;
38
+ compatibility?: string | undefined;
39
+ metadata?: {
40
+ [x: string]: string;
41
+ } | undefined;
42
+ allowedTools?: string | undefined;
43
+ instructions: string;
44
+ }[] | undefined;
45
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
46
+ error: {
47
+ code: string;
48
+ message: string;
49
+ details: import("hono/utils/types").JSONValue;
50
+ timestamp: string;
51
+ };
52
+ }, 500, "json">)>;
53
+ //# sourceMappingURL=slash-commands-get.route.d.ts.map
@@ -0,0 +1,54 @@
1
+ /**
2
+ * GET /api/slash-commands?threadId=xxx
3
+ * List all available slash commands for a thread
4
+ */
5
+ import { SlashCommandManager } from "../slash-commands/slash-commands.manager.js";
6
+ import { SkillManager } from "../skills/skills.manager.js";
7
+ const slashCommandManager = new SlashCommandManager();
8
+ const skillManager = new SkillManager();
9
+ export async function getSlashCommands(c, threadManager) {
10
+ const threadId = c.req.query("threadId");
11
+ if (!threadId) {
12
+ return c.json({
13
+ error: {
14
+ code: "MISSING_THREAD_ID",
15
+ message: "threadId query parameter is required",
16
+ timestamp: new Date().toISOString(),
17
+ },
18
+ }, 400);
19
+ }
20
+ try {
21
+ // Get thread path from thread manager
22
+ const thread = await threadManager.getThread(threadId);
23
+ if (!thread) {
24
+ return c.json({
25
+ error: {
26
+ code: "THREAD_NOT_FOUND",
27
+ message: `Thread not found: ${threadId}`,
28
+ timestamp: new Date().toISOString(),
29
+ },
30
+ }, 404);
31
+ }
32
+ // Load commands for this thread
33
+ const commands = await slashCommandManager.loadCommands(thread.path);
34
+ // Load skills for this thread (for quick reference in command menu)
35
+ const skills = await skillManager.loadSkills(thread.path);
36
+ const response = {
37
+ commands,
38
+ skills,
39
+ };
40
+ return c.json(response);
41
+ }
42
+ catch (error) {
43
+ console.error("Failed to load slash commands:", error);
44
+ return c.json({
45
+ error: {
46
+ code: "LOAD_FAILED",
47
+ message: error instanceof Error ? error.message : "Failed to load slash commands",
48
+ details: error,
49
+ timestamp: new Date().toISOString(),
50
+ },
51
+ }, 500);
52
+ }
53
+ }
54
+ //# sourceMappingURL=slash-commands-get.route.js.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * POST /api/slash-commands
3
+ * Create a new slash command
4
+ * Body: { name, content?, metadata, scope, threadId? }
5
+ */
6
+ import type { Context } from "hono";
7
+ import type { ThreadManager } from "../threads/threads.manager.js";
8
+ export declare function createSlashCommand(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
9
+ error: {
10
+ code: string;
11
+ message: string;
12
+ timestamp: string;
13
+ };
14
+ }, 400, "json">) | (Response & import("hono").TypedResponse<{
15
+ error: {
16
+ code: string;
17
+ message: string;
18
+ timestamp: string;
19
+ };
20
+ }, 404, "json">) | (Response & import("hono").TypedResponse<{
21
+ name: string;
22
+ content: string;
23
+ metadata: {
24
+ description?: string | undefined;
25
+ argumentHint?: string | undefined;
26
+ mode?: string | undefined;
27
+ };
28
+ scope: "project" | "global";
29
+ filePath: string;
30
+ isBuiltIn?: boolean | undefined;
31
+ }, 201, "json">) | (Response & import("hono").TypedResponse<{
32
+ error: {
33
+ code: string;
34
+ message: string;
35
+ details: import("hono/utils/types").JSONValue;
36
+ timestamp: string;
37
+ };
38
+ }, 500, "json">)>;
39
+ //# sourceMappingURL=slash-commands-post.route.d.ts.map
@@ -0,0 +1,70 @@
1
+ /**
2
+ * POST /api/slash-commands
3
+ * Create a new slash command
4
+ * Body: { name, content?, metadata, scope, threadId? }
5
+ */
6
+ import { SlashCommandManager } from "../slash-commands/slash-commands.manager.js";
7
+ const slashCommandManager = new SlashCommandManager();
8
+ export async function createSlashCommand(c, threadManager) {
9
+ try {
10
+ const body = await c.req.json();
11
+ const { name, content, metadata, scope, threadId } = body;
12
+ if (!name) {
13
+ return c.json({
14
+ error: {
15
+ code: "MISSING_FIELDS",
16
+ message: "name is required",
17
+ timestamp: new Date().toISOString(),
18
+ },
19
+ }, 400);
20
+ }
21
+ if (scope !== "global" && scope !== "project") {
22
+ return c.json({
23
+ error: {
24
+ code: "INVALID_SCOPE",
25
+ message: 'scope must be either "global" or "project"',
26
+ timestamp: new Date().toISOString(),
27
+ },
28
+ }, 400);
29
+ }
30
+ // Get thread path if project scope
31
+ let threadPath;
32
+ if (scope === "project") {
33
+ if (!threadId) {
34
+ return c.json({
35
+ error: {
36
+ code: "MISSING_THREAD_ID",
37
+ message: "threadId is required for project-scoped commands",
38
+ timestamp: new Date().toISOString(),
39
+ },
40
+ }, 400);
41
+ }
42
+ const thread = await threadManager.getThread(threadId);
43
+ if (!thread) {
44
+ return c.json({
45
+ error: {
46
+ code: "THREAD_NOT_FOUND",
47
+ message: `Thread not found: ${threadId}`,
48
+ timestamp: new Date().toISOString(),
49
+ },
50
+ }, 404);
51
+ }
52
+ threadPath = thread.path;
53
+ }
54
+ // Create command
55
+ const command = await slashCommandManager.createCommand(name, content, metadata ?? {}, scope, threadPath);
56
+ return c.json(command, 201);
57
+ }
58
+ catch (error) {
59
+ console.error("Failed to create slash command:", error);
60
+ return c.json({
61
+ error: {
62
+ code: "CREATE_FAILED",
63
+ message: error instanceof Error ? error.message : "Failed to create slash command",
64
+ details: error,
65
+ timestamp: new Date().toISOString(),
66
+ },
67
+ }, 500);
68
+ }
69
+ }
70
+ //# sourceMappingURL=slash-commands-post.route.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * PUT /api/slash-commands
3
+ * Update an existing slash command
4
+ * Body: { filePath, content, metadata }
5
+ */
6
+ import type { Context } from "hono";
7
+ export declare function updateSlashCommand(c: Context): Promise<(Response & import("hono").TypedResponse<{
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ timestamp: string;
12
+ };
13
+ }, 400, "json">) | (Response & import("hono").TypedResponse<{
14
+ success: true;
15
+ }, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
16
+ error: {
17
+ code: string;
18
+ message: string;
19
+ details: import("hono/utils/types").JSONValue;
20
+ timestamp: string;
21
+ };
22
+ }, 500, "json">)>;
23
+ //# sourceMappingURL=slash-commands-put.route.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * PUT /api/slash-commands
3
+ * Update an existing slash command
4
+ * Body: { filePath, content, metadata }
5
+ */
6
+ import { SlashCommandManager } from "../slash-commands/slash-commands.manager.js";
7
+ const slashCommandManager = new SlashCommandManager();
8
+ export async function updateSlashCommand(c) {
9
+ try {
10
+ const body = await c.req.json();
11
+ const { filePath, content, metadata } = body;
12
+ if (!filePath || !content) {
13
+ return c.json({
14
+ error: {
15
+ code: "MISSING_FIELDS",
16
+ message: "filePath and content are required",
17
+ timestamp: new Date().toISOString(),
18
+ },
19
+ }, 400);
20
+ }
21
+ await slashCommandManager.updateCommand(filePath, content, metadata ?? {});
22
+ return c.json({ success: true });
23
+ }
24
+ catch (error) {
25
+ console.error("Failed to update slash command:", error);
26
+ return c.json({
27
+ error: {
28
+ code: "UPDATE_FAILED",
29
+ message: error instanceof Error ? error.message : "Failed to update slash command",
30
+ details: error,
31
+ timestamp: new Date().toISOString(),
32
+ },
33
+ }, 500);
34
+ }
35
+ }
36
+ //# sourceMappingURL=slash-commands-put.route.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Slash Command Manager
3
+ *
4
+ * Loads and manages slash commands from markdown files with frontmatter.
5
+ * Commands can be stored in:
6
+ * - Project-specific: ./.agents/commands/ (relative to thread path)
7
+ * - Global: ~/.agents/commands/
8
+ */
9
+ import type { SlashCommand, SlashCommandMetadata } from "@tarsk/shared";
10
+ /**
11
+ * SlashCommandManager handles loading, creating, and managing slash commands
12
+ */
13
+ export declare class SlashCommandManager {
14
+ /**
15
+ * Built-in commands that cannot be overridden
16
+ */
17
+ private static BUILT_IN_COMMANDS;
18
+ /**
19
+ * Load all available commands for a given thread
20
+ * Project commands override global ones with the same name
21
+ * Built-in commands cannot be overridden
22
+ */
23
+ loadCommands(threadPath: string): Promise<SlashCommand[]>;
24
+ /**
25
+ * Load commands from a specific directory
26
+ */
27
+ private loadCommandsFromDir;
28
+ /**
29
+ * Create a new command
30
+ * Creates the directory if it doesn't exist
31
+ */
32
+ createCommand(name: string, content: string, metadata: SlashCommandMetadata, scope: "global" | "project", threadPath?: string): Promise<SlashCommand>;
33
+ /**
34
+ * Update an existing command
35
+ */
36
+ updateCommand(filePath: string, content: string, metadata: SlashCommandMetadata): Promise<void>;
37
+ /**
38
+ * Delete a command
39
+ */
40
+ deleteCommand(filePath: string): Promise<void>;
41
+ /**
42
+ * Get a specific command by name
43
+ */
44
+ getCommand(name: string, threadPath: string): Promise<SlashCommand | null>;
45
+ }
46
+ //# sourceMappingURL=slash-commands.manager.d.ts.map