tarsk 0.4.4 → 0.4.6

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 (366) hide show
  1. package/dist/index.js +447375 -37
  2. package/package.json +2 -2
  3. package/dist/agent/agent.error-utils.d.ts +0 -14
  4. package/dist/agent/agent.error-utils.js +0 -52
  5. package/dist/agent/agent.event-transformer.d.ts +0 -55
  6. package/dist/agent/agent.event-transformer.js +0 -175
  7. package/dist/agent/agent.executor.d.ts +0 -26
  8. package/dist/agent/agent.executor.js +0 -286
  9. package/dist/agent/agent.model-resolver.d.ts +0 -22
  10. package/dist/agent/agent.model-resolver.js +0 -67
  11. package/dist/agent/agent.process-manager.d.ts +0 -57
  12. package/dist/agent/agent.process-manager.js +0 -262
  13. package/dist/agent/agent.processing-state-manager.d.ts +0 -74
  14. package/dist/agent/agent.processing-state-manager.js +0 -87
  15. package/dist/agent/agent.prompt-loader.d.ts +0 -16
  16. package/dist/agent/agent.prompt-loader.js +0 -227
  17. package/dist/agent/agent.subagent-executor.d.ts +0 -35
  18. package/dist/agent/agent.subagent-executor.js +0 -135
  19. package/dist/bun/index.d.ts +0 -2
  20. package/dist/bun/index.js +0 -165
  21. package/dist/cli.d.ts +0 -3
  22. package/dist/cli.js +0 -22
  23. package/dist/core/crypto.d.ts +0 -29
  24. package/dist/core/crypto.js +0 -166
  25. package/dist/core/dev-server-cache.d.ts +0 -46
  26. package/dist/core/dev-server-cache.js +0 -59
  27. package/dist/core/env-manager.d.ts +0 -3
  28. package/dist/core/env-manager.js +0 -60
  29. package/dist/core/error-responses.d.ts +0 -61
  30. package/dist/core/error-responses.js +0 -64
  31. package/dist/core/logger.d.ts +0 -10
  32. package/dist/core/logger.js +0 -47
  33. package/dist/core/paths.d.ts +0 -22
  34. package/dist/core/paths.js +0 -26
  35. package/dist/core/random-words.d.ts +0 -18
  36. package/dist/core/random-words.js +0 -135
  37. package/dist/core/response-builder.d.ts +0 -50
  38. package/dist/core/response-builder.js +0 -56
  39. package/dist/core/route-helpers.d.ts +0 -47
  40. package/dist/core/route-helpers.js +0 -54
  41. package/dist/core/run-command-detector.d.ts +0 -26
  42. package/dist/core/run-command-detector.js +0 -98
  43. package/dist/core/stream-helper.d.ts +0 -44
  44. package/dist/core/stream-helper.js +0 -50
  45. package/dist/core/utils.d.ts +0 -43
  46. package/dist/core/utils.js +0 -113
  47. package/dist/core/validation.d.ts +0 -10
  48. package/dist/core/validation.js +0 -20
  49. package/dist/database/database.d.ts +0 -40
  50. package/dist/database/database.encryption.d.ts +0 -33
  51. package/dist/database/database.encryption.js +0 -62
  52. package/dist/database/database.js +0 -480
  53. package/dist/database/database.state.d.ts +0 -52
  54. package/dist/database/database.state.js +0 -119
  55. package/dist/database/database.test-utils.d.ts +0 -22
  56. package/dist/database/database.test-utils.js +0 -39
  57. package/dist/database/database.types.d.ts +0 -3
  58. package/dist/database/database.types.js +0 -2
  59. package/dist/features/agents/agents.manager.d.ts +0 -24
  60. package/dist/features/agents/agents.manager.js +0 -200
  61. package/dist/features/ask-user/ask-user.routes.d.ts +0 -9
  62. package/dist/features/ask-user/ask-user.routes.js +0 -35
  63. package/dist/features/chat/chat-delete.route.d.ts +0 -15
  64. package/dist/features/chat/chat-delete.route.js +0 -36
  65. package/dist/features/chat/chat-post.route.d.ts +0 -11
  66. package/dist/features/chat/chat-post.route.js +0 -270
  67. package/dist/features/chat/chat-stop.route.d.ts +0 -21
  68. package/dist/features/chat/chat-stop.route.js +0 -22
  69. package/dist/features/chat/chat-subscribe.route.d.ts +0 -9
  70. package/dist/features/chat/chat-subscribe.route.js +0 -71
  71. package/dist/features/chat/chat.routes.d.ts +0 -22
  72. package/dist/features/chat/chat.routes.js +0 -29
  73. package/dist/features/conversations/conversations-delete.route.d.ts +0 -16
  74. package/dist/features/conversations/conversations-delete.route.js +0 -34
  75. package/dist/features/conversations/conversations-get-all.route.d.ts +0 -16
  76. package/dist/features/conversations/conversations-get-all.route.js +0 -39
  77. package/dist/features/conversations/conversations-get-by-id.route.d.ts +0 -16
  78. package/dist/features/conversations/conversations-get-by-id.route.js +0 -38
  79. package/dist/features/conversations/conversations-get-deleted.route.d.ts +0 -15
  80. package/dist/features/conversations/conversations-get-deleted.route.js +0 -34
  81. package/dist/features/conversations/conversations-get-messages.route.d.ts +0 -16
  82. package/dist/features/conversations/conversations-get-messages.route.js +0 -49
  83. package/dist/features/conversations/conversations.content.d.ts +0 -28
  84. package/dist/features/conversations/conversations.content.js +0 -142
  85. package/dist/features/conversations/conversations.database.d.ts +0 -108
  86. package/dist/features/conversations/conversations.database.js +0 -373
  87. package/dist/features/conversations/conversations.manager.d.ts +0 -130
  88. package/dist/features/conversations/conversations.manager.js +0 -162
  89. package/dist/features/conversations/conversations.routes.d.ts +0 -21
  90. package/dist/features/conversations/conversations.routes.js +0 -38
  91. package/dist/features/conversations/token-usage.route.d.ts +0 -41
  92. package/dist/features/conversations/token-usage.route.js +0 -419
  93. package/dist/features/git/git-commit.route.d.ts +0 -12
  94. package/dist/features/git/git-commit.route.js +0 -39
  95. package/dist/features/git/git-create-branch.route.d.ts +0 -28
  96. package/dist/features/git/git-create-branch.route.js +0 -119
  97. package/dist/features/git/git-create-pr.route.d.ts +0 -13
  98. package/dist/features/git/git-create-pr.route.js +0 -50
  99. package/dist/features/git/git-create-repo.route.d.ts +0 -14
  100. package/dist/features/git/git-create-repo.route.js +0 -108
  101. package/dist/features/git/git-diff.route.d.ts +0 -30
  102. package/dist/features/git/git-diff.route.js +0 -189
  103. package/dist/features/git/git-fetch.route.d.ts +0 -12
  104. package/dist/features/git/git-fetch.route.js +0 -31
  105. package/dist/features/git/git-generate-commit-message.route.d.ts +0 -12
  106. package/dist/features/git/git-generate-commit-message.route.js +0 -76
  107. package/dist/features/git/git-generate-pr-info.route.d.ts +0 -13
  108. package/dist/features/git/git-generate-pr-info.route.js +0 -147
  109. package/dist/features/git/git-github-status.route.d.ts +0 -16
  110. package/dist/features/git/git-github-status.route.js +0 -68
  111. package/dist/features/git/git-log.route.d.ts +0 -17
  112. package/dist/features/git/git-log.route.js +0 -33
  113. package/dist/features/git/git-pr-status.route.d.ts +0 -15
  114. package/dist/features/git/git-pr-status.route.js +0 -33
  115. package/dist/features/git/git-pull.route.d.ts +0 -12
  116. package/dist/features/git/git-pull.route.js +0 -35
  117. package/dist/features/git/git-push.route.d.ts +0 -12
  118. package/dist/features/git/git-push.route.js +0 -46
  119. package/dist/features/git/git-status-cache.database.d.ts +0 -7
  120. package/dist/features/git/git-status-cache.database.js +0 -53
  121. package/dist/features/git/git-status.route.d.ts +0 -15
  122. package/dist/features/git/git-status.route.js +0 -62
  123. package/dist/features/git/git-sync-branch.route.d.ts +0 -4
  124. package/dist/features/git/git-sync-branch.route.js +0 -208
  125. package/dist/features/git/git-unified-status.route.d.ts +0 -30
  126. package/dist/features/git/git-unified-status.route.js +0 -165
  127. package/dist/features/git/git-username.route.d.ts +0 -3
  128. package/dist/features/git/git-username.route.js +0 -24
  129. package/dist/features/git/git.manager.d.ts +0 -139
  130. package/dist/features/git/git.manager.js +0 -352
  131. package/dist/features/git/git.routes.d.ts +0 -4
  132. package/dist/features/git/git.routes.js +0 -116
  133. package/dist/features/git/git.utils.d.ts +0 -82
  134. package/dist/features/git/git.utils.js +0 -1040
  135. package/dist/features/mcp/mcp.config.d.ts +0 -27
  136. package/dist/features/mcp/mcp.config.js +0 -148
  137. package/dist/features/mcp/mcp.manager.d.ts +0 -61
  138. package/dist/features/mcp/mcp.manager.js +0 -254
  139. package/dist/features/mcp/mcp.popular.json +0 -103
  140. package/dist/features/mcp/mcp.routes.d.ts +0 -13
  141. package/dist/features/mcp/mcp.routes.js +0 -159
  142. package/dist/features/mcp/mcp.types.d.ts +0 -80
  143. package/dist/features/mcp/mcp.types.js +0 -8
  144. package/dist/features/metadata/metadata.manager.d.ts +0 -126
  145. package/dist/features/metadata/metadata.manager.js +0 -423
  146. package/dist/features/models/model-info-aihubmix.d.ts +0 -25
  147. package/dist/features/models/model-info-aihubmix.js +0 -117
  148. package/dist/features/models/model-info-openrouter.d.ts +0 -25
  149. package/dist/features/models/model-info-openrouter.js +0 -104
  150. package/dist/features/models/model-info.d.ts +0 -37
  151. package/dist/features/models/model-info.js +0 -39
  152. package/dist/features/models/models-catalog.d.ts +0 -49
  153. package/dist/features/models/models-catalog.js +0 -80
  154. package/dist/features/models/models-catalog.route.d.ts +0 -43
  155. package/dist/features/models/models-catalog.route.js +0 -15
  156. package/dist/features/models/models-get-available.route.d.ts +0 -36
  157. package/dist/features/models/models-get-available.route.js +0 -66
  158. package/dist/features/models/models-get-enabled.route.d.ts +0 -33
  159. package/dist/features/models/models-get-enabled.route.js +0 -45
  160. package/dist/features/models/models-get-model-info.route.d.ts +0 -31
  161. package/dist/features/models/models-get-model-info.route.js +0 -84
  162. package/dist/features/models/models-model-disable.route.d.ts +0 -15
  163. package/dist/features/models/models-model-disable.route.js +0 -20
  164. package/dist/features/models/models-model-enable.route.d.ts +0 -13
  165. package/dist/features/models/models-model-enable.route.js +0 -20
  166. package/dist/features/models/models-provider-refresh.route.d.ts +0 -17
  167. package/dist/features/models/models-provider-refresh.route.js +0 -20
  168. package/dist/features/models/models.manager.d.ts +0 -58
  169. package/dist/features/models/models.manager.js +0 -138
  170. package/dist/features/models/models.routes.d.ts +0 -18
  171. package/dist/features/models/models.routes.js +0 -83
  172. package/dist/features/models/open-router-models.d.ts +0 -38
  173. package/dist/features/models/open-router-models.js +0 -73
  174. package/dist/features/models/openai-models.d.ts +0 -63
  175. package/dist/features/models/openai-models.js +0 -150
  176. package/dist/features/onboarding/onboarding-get-git-check.route.d.ts +0 -11
  177. package/dist/features/onboarding/onboarding-get-git-check.route.js +0 -28
  178. package/dist/features/onboarding/onboarding-get-status.route.d.ts +0 -12
  179. package/dist/features/onboarding/onboarding-get-status.route.js +0 -15
  180. package/dist/features/onboarding/onboarding-post-complete.route.d.ts +0 -12
  181. package/dist/features/onboarding/onboarding-post-complete.route.js +0 -15
  182. package/dist/features/onboarding/onboarding-post-reset.route.d.ts +0 -12
  183. package/dist/features/onboarding/onboarding-post-reset.route.js +0 -15
  184. package/dist/features/onboarding/onboarding.routes.d.ts +0 -18
  185. package/dist/features/onboarding/onboarding.routes.js +0 -28
  186. package/dist/features/project-todos/project-todos.database.d.ts +0 -38
  187. package/dist/features/project-todos/project-todos.database.js +0 -91
  188. package/dist/features/project-todos/project-todos.routes.d.ts +0 -4
  189. package/dist/features/project-todos/project-todos.routes.js +0 -94
  190. package/dist/features/projects/projects-ai-files.route.d.ts +0 -148
  191. package/dist/features/projects/projects-ai-files.route.js +0 -425
  192. package/dist/features/projects/projects-commands.route.d.ts +0 -27
  193. package/dist/features/projects/projects-commands.route.js +0 -39
  194. package/dist/features/projects/projects-create.route.d.ts +0 -19
  195. package/dist/features/projects/projects-create.route.js +0 -37
  196. package/dist/features/projects/projects-delete.route.d.ts +0 -24
  197. package/dist/features/projects/projects-delete.route.js +0 -34
  198. package/dist/features/projects/projects-get.route.d.ts +0 -47
  199. package/dist/features/projects/projects-get.route.js +0 -36
  200. package/dist/features/projects/projects-list.route.d.ts +0 -58
  201. package/dist/features/projects/projects-list.route.js +0 -59
  202. package/dist/features/projects/projects-open-folder.route.d.ts +0 -10
  203. package/dist/features/projects/projects-open-folder.route.js +0 -11
  204. package/dist/features/projects/projects-open.route.d.ts +0 -26
  205. package/dist/features/projects/projects-open.route.js +0 -49
  206. package/dist/features/projects/projects-package-scripts.route.d.ts +0 -15
  207. package/dist/features/projects/projects-package-scripts.route.js +0 -96
  208. package/dist/features/projects/projects-run-command.route.d.ts +0 -8
  209. package/dist/features/projects/projects-run-command.route.js +0 -21
  210. package/dist/features/projects/projects-run.route.d.ts +0 -51
  211. package/dist/features/projects/projects-run.route.js +0 -74
  212. package/dist/features/projects/projects-update.route.d.ts +0 -24
  213. package/dist/features/projects/projects-update.route.js +0 -81
  214. package/dist/features/projects/projects.creator.d.ts +0 -33
  215. package/dist/features/projects/projects.creator.js +0 -555
  216. package/dist/features/projects/projects.database.d.ts +0 -61
  217. package/dist/features/projects/projects.database.js +0 -212
  218. package/dist/features/projects/projects.manager.d.ts +0 -291
  219. package/dist/features/projects/projects.manager.js +0 -426
  220. package/dist/features/projects/projects.open-with.d.ts +0 -27
  221. package/dist/features/projects/projects.open-with.js +0 -156
  222. package/dist/features/projects/projects.routes.d.ts +0 -20
  223. package/dist/features/projects/projects.routes.js +0 -255
  224. package/dist/features/projects/terminal-session-manager.d.ts +0 -55
  225. package/dist/features/projects/terminal-session-manager.js +0 -90
  226. package/dist/features/providers/provider-resolver.d.ts +0 -13
  227. package/dist/features/providers/provider-resolver.js +0 -22
  228. package/dist/features/providers/providers-get-credits.route.d.ts +0 -15
  229. package/dist/features/providers/providers-get-credits.route.js +0 -51
  230. package/dist/features/providers/providers-get.route.d.ts +0 -16
  231. package/dist/features/providers/providers-get.route.js +0 -32
  232. package/dist/features/providers/providers-open-external.route.d.ts +0 -15
  233. package/dist/features/providers/providers-open-external.route.js +0 -49
  234. package/dist/features/providers/providers-post-bulk-keys.route.d.ts +0 -14
  235. package/dist/features/providers/providers-post-bulk-keys.route.js +0 -31
  236. package/dist/features/providers/providers-post-keys.route.d.ts +0 -14
  237. package/dist/features/providers/providers-post-keys.route.js +0 -25
  238. package/dist/features/providers/providers.routes.d.ts +0 -19
  239. package/dist/features/providers/providers.routes.js +0 -31
  240. package/dist/features/rules/rules-post.route.d.ts +0 -43
  241. package/dist/features/rules/rules-post.route.js +0 -89
  242. package/dist/features/rules/rules.manager.d.ts +0 -36
  243. package/dist/features/rules/rules.manager.js +0 -203
  244. package/dist/features/rules/rules.routes.d.ts +0 -12
  245. package/dist/features/rules/rules.routes.js +0 -13
  246. package/dist/features/run/run-get-running.route.d.ts +0 -15
  247. package/dist/features/run/run-get-running.route.js +0 -21
  248. package/dist/features/run/run-post-start.route.d.ts +0 -8
  249. package/dist/features/run/run-post-start.route.js +0 -21
  250. package/dist/features/run/run-post-stop.route.d.ts +0 -15
  251. package/dist/features/run/run-post-stop.route.js +0 -24
  252. package/dist/features/run/run-post-suggest.route.d.ts +0 -15
  253. package/dist/features/run/run-post-suggest.route.js +0 -21
  254. package/dist/features/run/run-put-command.route.d.ts +0 -15
  255. package/dist/features/run/run-put-command.route.js +0 -24
  256. package/dist/features/run/run.routes.d.ts +0 -19
  257. package/dist/features/run/run.routes.js +0 -31
  258. package/dist/features/scaffold/index.d.ts +0 -7
  259. package/dist/features/scaffold/index.js +0 -5
  260. package/dist/features/scaffold/scaffold-get-templates.route.d.ts +0 -27
  261. package/dist/features/scaffold/scaffold-get-templates.route.js +0 -17
  262. package/dist/features/scaffold/scaffold-post.route.d.ts +0 -8
  263. package/dist/features/scaffold/scaffold-post.route.js +0 -30
  264. package/dist/features/scaffold/scaffold.routes.d.ts +0 -10
  265. package/dist/features/scaffold/scaffold.routes.js +0 -16
  266. package/dist/features/scaffold/scaffold.runner.d.ts +0 -48
  267. package/dist/features/scaffold/scaffold.runner.js +0 -475
  268. package/dist/features/scaffold/scaffold.types.d.ts +0 -26
  269. package/dist/features/scaffold/scaffold.types.js +0 -5
  270. package/dist/features/skills/skills.activation.d.ts +0 -31
  271. package/dist/features/skills/skills.activation.js +0 -155
  272. package/dist/features/skills/skills.manager.d.ts +0 -35
  273. package/dist/features/skills/skills.manager.js +0 -251
  274. package/dist/features/slash-commands/slash-commands-delete.route.d.ts +0 -23
  275. package/dist/features/slash-commands/slash-commands-delete.route.js +0 -36
  276. package/dist/features/slash-commands/slash-commands-get.route.d.ts +0 -53
  277. package/dist/features/slash-commands/slash-commands-get.route.js +0 -54
  278. package/dist/features/slash-commands/slash-commands-post.route.d.ts +0 -39
  279. package/dist/features/slash-commands/slash-commands-post.route.js +0 -70
  280. package/dist/features/slash-commands/slash-commands-put.route.d.ts +0 -23
  281. package/dist/features/slash-commands/slash-commands-put.route.js +0 -36
  282. package/dist/features/slash-commands/slash-commands.manager.d.ts +0 -46
  283. package/dist/features/slash-commands/slash-commands.manager.js +0 -265
  284. package/dist/features/slash-commands/slash-commands.routes.d.ts +0 -13
  285. package/dist/features/slash-commands/slash-commands.routes.js +0 -20
  286. package/dist/features/threads/threads-ai-files.route.d.ts +0 -153
  287. package/dist/features/threads/threads-ai-files.route.js +0 -287
  288. package/dist/features/threads/threads-conversation-folder-path.route.d.ts +0 -14
  289. package/dist/features/threads/threads-conversation-folder-path.route.js +0 -23
  290. package/dist/features/threads/threads-create.route.d.ts +0 -22
  291. package/dist/features/threads/threads-create.route.js +0 -60
  292. package/dist/features/threads/threads-delete.route.d.ts +0 -25
  293. package/dist/features/threads/threads-delete.route.js +0 -35
  294. package/dist/features/threads/threads-files.route.d.ts +0 -15
  295. package/dist/features/threads/threads-files.route.js +0 -20
  296. package/dist/features/threads/threads-fix-comments.route.d.ts +0 -26
  297. package/dist/features/threads/threads-fix-comments.route.js +0 -45
  298. package/dist/features/threads/threads-get.route.d.ts +0 -30
  299. package/dist/features/threads/threads-get.route.js +0 -38
  300. package/dist/features/threads/threads-list.route.d.ts +0 -56
  301. package/dist/features/threads/threads-list.route.js +0 -58
  302. package/dist/features/threads/threads-messages.route.d.ts +0 -28
  303. package/dist/features/threads/threads-messages.route.js +0 -110
  304. package/dist/features/threads/threads-open.route.d.ts +0 -26
  305. package/dist/features/threads/threads-open.route.js +0 -62
  306. package/dist/features/threads/threads-select.route.d.ts +0 -25
  307. package/dist/features/threads/threads-select.route.js +0 -35
  308. package/dist/features/threads/threads-update.route.d.ts +0 -15
  309. package/dist/features/threads/threads-update.route.js +0 -30
  310. package/dist/features/threads/threads.database.d.ts +0 -68
  311. package/dist/features/threads/threads.database.js +0 -215
  312. package/dist/features/threads/threads.manager.d.ts +0 -204
  313. package/dist/features/threads/threads.manager.js +0 -505
  314. package/dist/features/threads/threads.routes.d.ts +0 -20
  315. package/dist/features/threads/threads.routes.js +0 -230
  316. package/dist/features/todos/todos.database.d.ts +0 -14
  317. package/dist/features/todos/todos.database.js +0 -31
  318. package/dist/features/updates/updates.routes.d.ts +0 -13
  319. package/dist/features/updates/updates.routes.js +0 -40
  320. package/dist/index.d.ts +0 -3
  321. package/dist/project-analyzer.d.ts +0 -26
  322. package/dist/project-analyzer.js +0 -307
  323. package/dist/server.d.ts +0 -12
  324. package/dist/server.js +0 -142
  325. package/dist/tools/agent-tool.d.ts +0 -49
  326. package/dist/tools/agent-tool.js +0 -131
  327. package/dist/tools/ask-user.d.ts +0 -25
  328. package/dist/tools/ask-user.js +0 -74
  329. package/dist/tools/ast-grep.d.ts +0 -28
  330. package/dist/tools/ast-grep.js +0 -273
  331. package/dist/tools/bash.d.ts +0 -33
  332. package/dist/tools/bash.js +0 -186
  333. package/dist/tools/edit-diff.d.ts +0 -24
  334. package/dist/tools/edit-diff.js +0 -136
  335. package/dist/tools/edit.d.ts +0 -28
  336. package/dist/tools/edit.js +0 -78
  337. package/dist/tools/find.d.ts +0 -31
  338. package/dist/tools/find.js +0 -117
  339. package/dist/tools/grep.d.ts +0 -37
  340. package/dist/tools/grep.js +0 -231
  341. package/dist/tools/index.d.ts +0 -93
  342. package/dist/tools/index.js +0 -110
  343. package/dist/tools/ls.d.ts +0 -31
  344. package/dist/tools/ls.js +0 -108
  345. package/dist/tools/mcp-tools.d.ts +0 -31
  346. package/dist/tools/mcp-tools.js +0 -59
  347. package/dist/tools/path-utils.d.ts +0 -14
  348. package/dist/tools/path-utils.js +0 -87
  349. package/dist/tools/read.d.ts +0 -27
  350. package/dist/tools/read.js +0 -86
  351. package/dist/tools/resolve-bin.d.ts +0 -5
  352. package/dist/tools/resolve-bin.js +0 -28
  353. package/dist/tools/shell.d.ts +0 -7
  354. package/dist/tools/shell.js +0 -143
  355. package/dist/tools/skill-reference-tool.d.ts +0 -30
  356. package/dist/tools/skill-reference-tool.js +0 -171
  357. package/dist/tools/skill-tool.d.ts +0 -33
  358. package/dist/tools/skill-tool.js +0 -213
  359. package/dist/tools/todo.d.ts +0 -20
  360. package/dist/tools/todo.js +0 -168
  361. package/dist/tools/tool-helpers.d.ts +0 -78
  362. package/dist/tools/tool-helpers.js +0 -109
  363. package/dist/tools/truncate.d.ts +0 -31
  364. package/dist/tools/truncate.js +0 -164
  365. package/dist/tools/write.d.ts +0 -21
  366. package/dist/tools/write.js +0 -65
@@ -1,287 +0,0 @@
1
- /**
2
- * AI Files routes for threads REST API
3
- *
4
- * Handles listing and editing AI-related files in a thread's path:
5
- * - GET /api/threads/:id/ai-files - List AI file tree (skills, rules, commands, markdown files)
6
- * - GET /api/threads/:id/ai-file?path=... - Read file content
7
- * - PUT /api/threads/:id/ai-file - Write file content
8
- * - DELETE /api/threads/:id/ai-file?path=... - Delete file or folder
9
- * - POST /api/threads/:id/ai-files/skill - Create a new skill
10
- */
11
- import { readFile, writeFile, mkdir, access, rm } from "fs/promises";
12
- import { join } from "path";
13
- import { existsSync } from "fs";
14
- import { errorResponse } from "../../core/route-helpers.js";
15
- import { ErrorCodes } from "../../core/error-responses.js";
16
- import { buildAIFileTree, validateFilePath } from "../projects/projects-ai-files.route.js";
17
- /**
18
- * GET /api/threads/:id/ai-files
19
- */
20
- export async function handleGetThreadAIFiles(c, threadManager) {
21
- try {
22
- const threadId = c.req.param("id");
23
- const thread = await threadManager.getThread(threadId);
24
- if (!thread) {
25
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
26
- }
27
- const nodes = await buildAIFileTree(thread.path);
28
- return c.json({ nodes });
29
- }
30
- catch (error) {
31
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to list AI files", 500, error instanceof Error ? error.message : String(error));
32
- }
33
- }
34
- /**
35
- * GET /api/threads/:id/ai-file?path=...
36
- */
37
- export async function handleGetThreadAIFile(c, threadManager) {
38
- try {
39
- const threadId = c.req.param("id");
40
- const filePath = c.req.query("path");
41
- if (!filePath) {
42
- return c.json({ error: { code: "BAD_REQUEST", message: "path query parameter is required" } }, 400);
43
- }
44
- const thread = await threadManager.getThread(threadId);
45
- if (!thread) {
46
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
47
- }
48
- const absPath = validateFilePath(thread.path, filePath);
49
- if (!absPath) {
50
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
51
- }
52
- // Special handling for AGENTS.md - return default content if it doesn't exist
53
- if (filePath === "AGENTS.md") {
54
- try {
55
- await access(absPath);
56
- }
57
- catch {
58
- const defaultContent = `# AGENTS.md
59
-
60
- This file contains configuration and instructions for AI agents working on this repository.
61
-
62
- ## Overview
63
- Add information about your project that would be helpful for AI agents to understand:
64
-
65
- - Project purpose and goals
66
- - Architecture and technology stack
67
- - Development workflows and conventions
68
- - Testing strategies
69
- - Deployment processes
70
-
71
- ## Guidelines
72
- Provide specific guidelines for AI agents:
73
-
74
- - Code style preferences
75
- - File organization patterns
76
- - Review processes
77
- - Communication protocols
78
-
79
- ## Resources
80
- Links to important documentation, tools, or references.
81
-
82
- ---
83
-
84
- *This file was automatically created. Edit it to provide context for AI agents.*
85
- `;
86
- return c.json({ content: defaultContent, path: filePath });
87
- }
88
- }
89
- try {
90
- await access(absPath);
91
- }
92
- catch {
93
- return c.json({ error: { code: "NOT_FOUND", message: `File not found: ${filePath}` } }, 404);
94
- }
95
- const content = await readFile(absPath, "utf-8");
96
- return c.json({ content, path: filePath });
97
- }
98
- catch (error) {
99
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to read file", 500, error instanceof Error ? error.message : String(error));
100
- }
101
- }
102
- /**
103
- * PUT /api/threads/:id/ai-file
104
- * Body: { path: string, content: string }
105
- */
106
- export async function handleSaveThreadAIFile(c, threadManager) {
107
- try {
108
- const threadId = c.req.param("id");
109
- let body;
110
- try {
111
- body = await c.req.json();
112
- }
113
- catch {
114
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid JSON body" } }, 400);
115
- }
116
- const { path: filePath, content } = body;
117
- if (!filePath || content === undefined) {
118
- return c.json({ error: { code: "BAD_REQUEST", message: "path and content are required" } }, 400);
119
- }
120
- const thread = await threadManager.getThread(threadId);
121
- if (!thread) {
122
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
123
- }
124
- const absPath = validateFilePath(thread.path, filePath);
125
- if (!absPath) {
126
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
127
- }
128
- const parentDir = join(absPath, "..");
129
- await mkdir(parentDir, { recursive: true });
130
- await writeFile(absPath, content, "utf-8");
131
- return c.json({ success: true, path: filePath });
132
- }
133
- catch (error) {
134
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to save file", 500, error instanceof Error ? error.message : String(error));
135
- }
136
- }
137
- /**
138
- * DELETE /api/threads/:id/ai-file?path=...
139
- */
140
- export async function handleDeleteThreadAIFile(c, threadManager) {
141
- try {
142
- const threadId = c.req.param("id");
143
- const filePath = c.req.query("path");
144
- if (!filePath) {
145
- return c.json({ error: { code: "BAD_REQUEST", message: "path query parameter is required" } }, 400);
146
- }
147
- const thread = await threadManager.getThread(threadId);
148
- if (!thread) {
149
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
150
- }
151
- const absPath = validateFilePath(thread.path, filePath);
152
- if (!absPath) {
153
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
154
- }
155
- try {
156
- await access(absPath);
157
- }
158
- catch {
159
- return c.json({ error: { code: "NOT_FOUND", message: `File or folder not found: ${filePath}` } }, 404);
160
- }
161
- await rm(absPath, { recursive: true, force: true });
162
- return c.json({ success: true, path: filePath });
163
- }
164
- catch (error) {
165
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to delete file", 500, error instanceof Error ? error.message : String(error));
166
- }
167
- }
168
- /**
169
- * POST /api/threads/:id/ai-files/agent
170
- * Body: { name: string, description: string, tools?: string }
171
- */
172
- export async function handleCreateThreadAgent(c, threadManager) {
173
- try {
174
- const threadId = c.req.param("id");
175
- let body;
176
- try {
177
- body = await c.req.json();
178
- }
179
- catch {
180
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid JSON body" } }, 400);
181
- }
182
- const { name, description, tools } = body;
183
- if (!name || !description) {
184
- return c.json({ error: { code: "BAD_REQUEST", message: "name and description are required" } }, 400);
185
- }
186
- if (!/^[a-z0-9-]+$/.test(name) ||
187
- name.startsWith("-") ||
188
- name.endsWith("-") ||
189
- name.includes("--")) {
190
- return c.json({
191
- error: {
192
- code: "BAD_REQUEST",
193
- message: "Agent name must be lowercase alphanumeric with hyphens (no leading/trailing/consecutive hyphens)",
194
- },
195
- }, 400);
196
- }
197
- const thread = await threadManager.getThread(threadId);
198
- if (!thread) {
199
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
200
- }
201
- const agentRelPath = join(".agents", "agents", name);
202
- const agentAbsPath = join(thread.path, agentRelPath);
203
- const agentFileRelPath = join(agentRelPath, "AGENT.md");
204
- const agentFileAbsPath = join(agentAbsPath, "AGENT.md");
205
- if (existsSync(agentAbsPath)) {
206
- return c.json({ error: { code: "CONFLICT", message: `Agent '${name}' already exists` } }, 409);
207
- }
208
- await mkdir(agentAbsPath, { recursive: true });
209
- const toolsLine = tools ? `\ntools: ${tools}` : "";
210
- const agentContent = `---
211
- name: ${name}
212
- description: ${description}${toolsLine}
213
- ---
214
-
215
- Place your agent system prompt here as markdown. This will be used as the system prompt when this agent is invoked as a subagent.
216
- `;
217
- await writeFile(agentFileAbsPath, agentContent, "utf-8");
218
- return c.json({
219
- success: true,
220
- path: agentFileRelPath,
221
- content: agentContent,
222
- });
223
- }
224
- catch (error) {
225
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to create agent", 500, error instanceof Error ? error.message : String(error));
226
- }
227
- }
228
- /**
229
- * POST /api/threads/:id/ai-files/skill
230
- * Body: { name: string, description: string }
231
- */
232
- export async function handleCreateThreadSkill(c, threadManager) {
233
- try {
234
- const threadId = c.req.param("id");
235
- let body;
236
- try {
237
- body = await c.req.json();
238
- }
239
- catch {
240
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid JSON body" } }, 400);
241
- }
242
- const { name, description } = body;
243
- if (!name || !description) {
244
- return c.json({ error: { code: "BAD_REQUEST", message: "name and description are required" } }, 400);
245
- }
246
- if (!/^[a-z0-9-]+$/.test(name) ||
247
- name.startsWith("-") ||
248
- name.endsWith("-") ||
249
- name.includes("--")) {
250
- return c.json({
251
- error: {
252
- code: "BAD_REQUEST",
253
- message: "Skill name must be lowercase alphanumeric with hyphens (no leading/trailing/consecutive hyphens)",
254
- },
255
- }, 400);
256
- }
257
- const thread = await threadManager.getThread(threadId);
258
- if (!thread) {
259
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
260
- }
261
- const skillRelPath = join(".agents", "skills", name);
262
- const skillAbsPath = join(thread.path, skillRelPath);
263
- const skillFileRelPath = join(skillRelPath, "SKILL.md");
264
- const skillFileAbsPath = join(skillAbsPath, "SKILL.md");
265
- if (existsSync(skillAbsPath)) {
266
- return c.json({ error: { code: "CONFLICT", message: `Skill '${name}' already exists` } }, 409);
267
- }
268
- await mkdir(skillAbsPath, { recursive: true });
269
- const skillContent = `---
270
- name: ${name}
271
- description: ${description}
272
- ---
273
-
274
- Place your skill instructions here as markdown. This will be used when Tarsk is prompted with a request related to the description of this skill.
275
- `;
276
- await writeFile(skillFileAbsPath, skillContent, "utf-8");
277
- return c.json({
278
- success: true,
279
- path: skillFileRelPath,
280
- content: skillContent,
281
- });
282
- }
283
- catch (error) {
284
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to create skill", 500, error instanceof Error ? error.message : String(error));
285
- }
286
- }
287
- //# sourceMappingURL=threads-ai-files.route.js.map
@@ -1,14 +0,0 @@
1
- /**
2
- * GET /api/threads/:id/conversation-folder-path
3
- * Return the absolute path to the folder containing the conversation history JSON for this thread.
4
- */
5
- import { Context } from "hono";
6
- export declare function handleGetConversationFolderPath(c: Context): Promise<(Response & import("hono").TypedResponse<{
7
- error: {
8
- code: string;
9
- message: string;
10
- details?: import("hono/utils/types").JSONValue | undefined;
11
- timestamp: string;
12
- };
13
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
14
- //# sourceMappingURL=threads-conversation-folder-path.route.d.ts.map
@@ -1,23 +0,0 @@
1
- /**
2
- * GET /api/threads/:id/conversation-folder-path
3
- * Return the absolute path to the folder containing the conversation history JSON for this thread.
4
- */
5
- import { join } from "path";
6
- import { getDataDir } from "../../core/paths.js";
7
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
8
- import { ErrorCodes } from "../../core/error-responses.js";
9
- export async function handleGetConversationFolderPath(c) {
10
- try {
11
- const threadId = c.req.param("id");
12
- if (!threadId) {
13
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
14
- }
15
- const path = join(getDataDir(), threadId);
16
- return successResponse(c, { path });
17
- }
18
- catch (error) {
19
- const errorMessage = error instanceof Error ? error.message : String(error);
20
- return errorResponse(c, ErrorCodes.PATH_ERROR, "Failed to get conversation folder path", 500, errorMessage);
21
- }
22
- }
23
- //# sourceMappingURL=threads-conversation-folder-path.route.js.map
@@ -1,22 +0,0 @@
1
- /**
2
- * POST /api/threads
3
- * Create a new thread for a project
4
- *
5
- * Request body:
6
- * {
7
- * "projectId": "uuid",
8
- * "title": "Optional thread title"
9
- * }
10
- *
11
- * Response: Newline-delimited JSON stream of ThreadEvent objects
12
- *
13
- * Requirements:
14
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
15
- * - 8.3 - WHEN creating a Thread, THE App SHALL send a POST request with the Project identifier to the CLI
16
- * - 8.4 - THE CLI SHALL support streaming responses to the client
17
- */
18
- import { Context } from "hono";
19
- import type { ThreadManager } from "../threads/threads.manager.js";
20
- import type { GitManager } from "../git/git.manager.js";
21
- export declare function handleCreateThread(c: Context, threadManager: ThreadManager, gitManager: GitManager): Promise<Response>;
22
- //# sourceMappingURL=threads-create.route.d.ts.map
@@ -1,60 +0,0 @@
1
- /**
2
- * POST /api/threads
3
- * Create a new thread for a project
4
- *
5
- * Request body:
6
- * {
7
- * "projectId": "uuid",
8
- * "title": "Optional thread title"
9
- * }
10
- *
11
- * Response: Newline-delimited JSON stream of ThreadEvent objects
12
- *
13
- * Requirements:
14
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
15
- * - 8.3 - WHEN creating a Thread, THE App SHALL send a POST request with the Project identifier to the CLI
16
- * - 8.4 - THE CLI SHALL support streaming responses to the client
17
- */
18
- import { streamAsyncGenerator } from "../../core/stream-helper.js";
19
- import { validateThreadName } from "../../core/validation.js";
20
- import { errorResponse } from "../../core/route-helpers.js";
21
- import { ErrorCodes } from "../../core/error-responses.js";
22
- import { generateRandomThreadName } from "../../core/random-words.js";
23
- export async function handleCreateThread(c, threadManager, gitManager) {
24
- try {
25
- const body = await c.req.json();
26
- const { projectId, title } = body;
27
- // Validate projectId is provided
28
- if (!projectId || typeof projectId !== "string") {
29
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "projectId is required and must be a string", 400);
30
- }
31
- // Validate title if provided
32
- if (title !== undefined && typeof title !== "string") {
33
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "title must be a string if provided", 400);
34
- }
35
- // Validate thread name (empty/whitespace is allowed, will auto-generate)
36
- if (title && title.trim() !== "") {
37
- const nameError = validateThreadName(title);
38
- if (nameError) {
39
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, nameError, 400);
40
- }
41
- // Check for duplicate branch names — if duplicate, fall back to a random name
42
- const existingThreads = await threadManager.listThreads(projectId);
43
- const sanitizedNewName = gitManager.sanitizeBranchName(title);
44
- const existingSanitized = existingThreads.map((t) => gitManager.sanitizeBranchName(t.title));
45
- if (existingSanitized.includes(sanitizedNewName)) {
46
- let fallbackTitle = generateRandomThreadName();
47
- while (existingSanitized.includes(gitManager.sanitizeBranchName(fallbackTitle))) {
48
- fallbackTitle = generateRandomThreadName();
49
- }
50
- return streamAsyncGenerator(c, threadManager.createThread(projectId, fallbackTitle));
51
- }
52
- }
53
- // Stream the thread creation events
54
- return streamAsyncGenerator(c, threadManager.createThread(projectId, title));
55
- }
56
- catch (error) {
57
- return errorResponse(c, ErrorCodes.REQUEST_PARSE_ERROR, "Failed to parse request body", 400, error instanceof Error ? error.message : String(error));
58
- }
59
- }
60
- //# sourceMappingURL=threads-create.route.js.map
@@ -1,25 +0,0 @@
1
- /**
2
- * DELETE /api/threads/:id
3
- * Delete a thread
4
- *
5
- * Response:
6
- * {
7
- * "success": true,
8
- * "message": "Thread deleted successfully"
9
- * }
10
- *
11
- * Requirements:
12
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
13
- * - 8.4 - WHEN deleting a Thread, THE App SHALL send a DELETE request with the Thread identifier to the CLI
14
- */
15
- import { Context } from "hono";
16
- import type { ThreadManager } from "../threads/threads.manager.js";
17
- export declare function handleDeleteThread(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
18
- error: {
19
- code: string;
20
- message: string;
21
- details?: import("hono/utils/types").JSONValue | undefined;
22
- timestamp: string;
23
- };
24
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
25
- //# sourceMappingURL=threads-delete.route.d.ts.map
@@ -1,35 +0,0 @@
1
- /**
2
- * DELETE /api/threads/:id
3
- * Delete a thread
4
- *
5
- * Response:
6
- * {
7
- * "success": true,
8
- * "message": "Thread deleted successfully"
9
- * }
10
- *
11
- * Requirements:
12
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
13
- * - 8.4 - WHEN deleting a Thread, THE App SHALL send a DELETE request with the Thread identifier to the CLI
14
- */
15
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
16
- import { ErrorCodes } from "../../core/error-responses.js";
17
- export async function handleDeleteThread(c, threadManager) {
18
- try {
19
- const threadId = c.req.param("id");
20
- if (!threadId) {
21
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
22
- }
23
- await threadManager.deleteThread(threadId);
24
- return successResponse(c, { success: true, message: "Thread deleted successfully" });
25
- }
26
- catch (error) {
27
- const errorMessage = error instanceof Error ? error.message : String(error);
28
- // Check if it's a "not found" error
29
- if (errorMessage.includes("not found")) {
30
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, errorMessage, 404);
31
- }
32
- return errorResponse(c, ErrorCodes.DELETE_THREAD_ERROR, "Failed to delete thread", 500, errorMessage);
33
- }
34
- }
35
- //# sourceMappingURL=threads-delete.route.js.map
@@ -1,15 +0,0 @@
1
- /**
2
- * GET /api/threads/:id/files
3
- * List all files in a thread's directory
4
- */
5
- import { Context } from "hono";
6
- import type { ThreadManager } from "../threads/threads.manager.js";
7
- export declare function handleListThreadFiles(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
8
- error: {
9
- code: string;
10
- message: string;
11
- details?: import("hono/utils/types").JSONValue | undefined;
12
- timestamp: string;
13
- };
14
- }, any, "json">) | (Response & import("hono").TypedResponse<string[], import("hono/utils/http-status").ContentfulStatusCode, "json">)>;
15
- //# sourceMappingURL=threads-files.route.d.ts.map
@@ -1,20 +0,0 @@
1
- /**
2
- * GET /api/threads/:id/files
3
- * List all files in a thread's directory
4
- */
5
- import { errorResponse } from "../../core/route-helpers.js";
6
- import { ErrorCodes } from "../../core/error-responses.js";
7
- export async function handleListThreadFiles(c, threadManager) {
8
- try {
9
- const threadId = c.req.param("id");
10
- if (!threadId) {
11
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
12
- }
13
- const files = await threadManager.listFiles(threadId);
14
- return c.json(files);
15
- }
16
- catch (error) {
17
- return errorResponse(c, ErrorCodes.LIST_THREAD_FILES_ERROR, "Failed to list thread files", 500, error instanceof Error ? error.message : String(error));
18
- }
19
- }
20
- //# sourceMappingURL=threads-files.route.js.map
@@ -1,26 +0,0 @@
1
- /**
2
- * POST /api/threads/:id/fix-comments
3
- * Converts diff review comments into todos in the database.
4
- *
5
- * Request body:
6
- * {
7
- * "comments": DiffCommentRecord[]
8
- * }
9
- *
10
- * Response:
11
- * {
12
- * "prompt": string,
13
- * "todos": TodoRecord[]
14
- * }
15
- */
16
- import type { Context } from "hono";
17
- import type { ThreadManager } from "./threads.manager.js";
18
- export declare function handleFixComments(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
19
- error: {
20
- code: string;
21
- message: string;
22
- details?: import("hono/utils/types").JSONValue | undefined;
23
- timestamp: string;
24
- };
25
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
26
- //# sourceMappingURL=threads-fix-comments.route.d.ts.map
@@ -1,45 +0,0 @@
1
- /**
2
- * POST /api/threads/:id/fix-comments
3
- * Converts diff review comments into todos in the database.
4
- *
5
- * Request body:
6
- * {
7
- * "comments": DiffCommentRecord[]
8
- * }
9
- *
10
- * Response:
11
- * {
12
- * "prompt": string,
13
- * "todos": TodoRecord[]
14
- * }
15
- */
16
- import { addTodos, clearTodos } from "../todos/todos.database.js";
17
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
18
- import { ErrorCodes } from "../../core/error-responses.js";
19
- export async function handleFixComments(c, threadManager) {
20
- try {
21
- const threadId = c.req.param("id");
22
- if (!threadId) {
23
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
24
- }
25
- const thread = await threadManager.getThread(threadId);
26
- if (!thread) {
27
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
28
- }
29
- const body = await c.req.json();
30
- const { comments } = body;
31
- if (!Array.isArray(comments) || comments.length === 0) {
32
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "comments must be a non-empty array", 400);
33
- }
34
- // Clear existing todos and insert one per comment
35
- await clearTodos(threadId);
36
- const descriptions = comments.map((c, i) => `${i + 1}. ${c.filePath} line ${c.lineNumber}: \`${c.lineContent.trim()}\` — ${c.comment}`);
37
- const todos = await addTodos(threadId, descriptions);
38
- const prompt = `${comments.length} code review comment${comments.length === 1 ? " has" : "s have"} been added as todos. First, call the todo list tool to display the tasks. Then work through each todo and implement the required changes.`;
39
- return successResponse(c, { prompt, todos });
40
- }
41
- catch (error) {
42
- return errorResponse(c, ErrorCodes.REQUEST_PARSE_ERROR, "Failed to process fix-comments request", 500, error instanceof Error ? error.message : String(error));
43
- }
44
- }
45
- //# sourceMappingURL=threads-fix-comments.route.js.map
@@ -1,30 +0,0 @@
1
- /**
2
- * GET /api/threads/:id
3
- * Get details of a specific thread
4
- *
5
- * Response:
6
- * {
7
- * "id": "uuid",
8
- * "projectId": "uuid",
9
- * "title": "Thread title",
10
- * "path": "/path/to/thread",
11
- * "currentBranch": "branch-name",
12
- * "createdAt": "2024-01-01T00:00:00Z",
13
- * "currentConversationId": "uuid",
14
- * "status": "active"
15
- * }
16
- *
17
- * Requirements:
18
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
19
- */
20
- import { Context } from "hono";
21
- import type { ThreadManager } from "./threads.manager.js";
22
- export declare function handleGetThread(c: Context, threadManager: ThreadManager): Promise<(Response & import("hono").TypedResponse<{
23
- error: {
24
- code: string;
25
- message: string;
26
- details?: import("hono/utils/types").JSONValue | undefined;
27
- timestamp: string;
28
- };
29
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
30
- //# sourceMappingURL=threads-get.route.d.ts.map
@@ -1,38 +0,0 @@
1
- /**
2
- * GET /api/threads/:id
3
- * Get details of a specific thread
4
- *
5
- * Response:
6
- * {
7
- * "id": "uuid",
8
- * "projectId": "uuid",
9
- * "title": "Thread title",
10
- * "path": "/path/to/thread",
11
- * "currentBranch": "branch-name",
12
- * "createdAt": "2024-01-01T00:00:00Z",
13
- * "currentConversationId": "uuid",
14
- * "status": "active"
15
- * }
16
- *
17
- * Requirements:
18
- * - 6.3 - THE CLI SHALL expose REST API endpoints for Thread operations
19
- */
20
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
21
- import { ErrorCodes } from "../../core/error-responses.js";
22
- export async function handleGetThread(c, threadManager) {
23
- try {
24
- const threadId = c.req.param("id");
25
- if (!threadId) {
26
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Thread ID is required", 400);
27
- }
28
- const thread = await threadManager.getThread(threadId);
29
- if (!thread) {
30
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, `Thread not found: ${threadId}`, 404);
31
- }
32
- return successResponse(c, thread);
33
- }
34
- catch (error) {
35
- return errorResponse(c, ErrorCodes.THREAD_NOT_FOUND, "Failed to get thread", 500, error instanceof Error ? error.message : String(error));
36
- }
37
- }
38
- //# sourceMappingURL=threads-get.route.js.map