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,425 +0,0 @@
1
- /**
2
- * AI Files routes for the REST API
3
- *
4
- * Handles listing and editing AI-related files in a project:
5
- * - GET /api/projects/:id/ai-files - List AI file tree (skills, rules, commands, markdown files)
6
- * - GET /api/projects/:id/ai-file?path=... - Read file content
7
- * - PUT /api/projects/:id/ai-file - Write file content
8
- * - DELETE /api/projects/:id/ai-file?path=... - Delete file or folder
9
- * - POST /api/projects/:id/ai-files/skill - Create a new skill
10
- */
11
- import { readdir, readFile, writeFile, mkdir, access, rm } from "fs/promises";
12
- import { join, extname, basename } from "path";
13
- import { existsSync } from "fs";
14
- import { errorResponse } from "../../core/route-helpers.js";
15
- import { ErrorCodes } from "../../core/error-responses.js";
16
- const IGNORED_DIRS = new Set([
17
- ".git",
18
- "node_modules",
19
- ".tarsk",
20
- "dist",
21
- "build",
22
- ".next",
23
- "__pycache__",
24
- ".venv",
25
- "venv",
26
- ]);
27
- const MARKDOWN_EXTS = new Set([".md", ".mdc"]);
28
- /**
29
- * Recursively build a full file tree for a directory (all files).
30
- * Used for .agents/ subfolders.
31
- */
32
- async function buildFullTree(dirPath, relativeDirPath) {
33
- const nodes = [];
34
- try {
35
- const entries = await readdir(dirPath, { withFileTypes: true });
36
- for (const entry of entries) {
37
- const entryRelPath = join(relativeDirPath, entry.name);
38
- const entryAbsPath = join(dirPath, entry.name);
39
- if (entry.isDirectory()) {
40
- const children = await buildFullTree(entryAbsPath, entryRelPath);
41
- nodes.push({
42
- id: entryRelPath,
43
- name: entry.name,
44
- type: "folder",
45
- path: entryRelPath,
46
- children,
47
- });
48
- }
49
- else if (entry.isFile()) {
50
- nodes.push({
51
- id: entryRelPath,
52
- name: entry.name,
53
- type: "file",
54
- path: entryRelPath,
55
- });
56
- }
57
- }
58
- }
59
- catch {
60
- // Directory doesn't exist or can't be read
61
- }
62
- return nodes;
63
- }
64
- /**
65
- * Recursively find folders that contain markdown files, building a filtered tree.
66
- * Returns nodes for folders containing .md/.mdc files and the .md/.mdc files themselves.
67
- */
68
- async function buildMarkdownFilteredTree(dirPath, relativeDirPath) {
69
- const nodes = [];
70
- try {
71
- const entries = await readdir(dirPath, { withFileTypes: true });
72
- for (const entry of entries) {
73
- const entryRelPath = join(relativeDirPath, entry.name);
74
- const entryAbsPath = join(dirPath, entry.name);
75
- if (entry.isDirectory()) {
76
- if (IGNORED_DIRS.has(entry.name))
77
- continue;
78
- const children = await buildMarkdownFilteredTree(entryAbsPath, entryRelPath);
79
- if (children.length > 0) {
80
- nodes.push({
81
- id: entryRelPath,
82
- name: entry.name,
83
- type: "folder",
84
- path: entryRelPath,
85
- children,
86
- });
87
- }
88
- }
89
- else if (entry.isFile() && MARKDOWN_EXTS.has(extname(entry.name))) {
90
- nodes.push({
91
- id: entryRelPath,
92
- name: basename(entry.name, extname(entry.name)),
93
- type: "file",
94
- path: entryRelPath,
95
- });
96
- }
97
- }
98
- }
99
- catch {
100
- // Directory doesn't exist or can't be read
101
- }
102
- return nodes;
103
- }
104
- /**
105
- * Build the full AI file tree for a project or thread.
106
- * - Always shows .agents/skills, .agents/rules, .agents/commands (virtual if missing)
107
- * - Shows markdown files at root level
108
- * - Shows folders that contain markdown files
109
- */
110
- export async function buildAIFileTree(projectPath) {
111
- const nodes = [];
112
- // 1. Always-shown .agents subfolders
113
- const agentsFolders = [
114
- { key: "skills", label: "Skills" },
115
- { key: "rules", label: "Rules" },
116
- { key: "commands", label: "Commands" },
117
- { key: "agents", label: "Agents" },
118
- ];
119
- for (const { key, label } of agentsFolders) {
120
- const relPath = join(".agents", key);
121
- const absPath = join(projectPath, relPath);
122
- const exists = existsSync(absPath);
123
- if (exists) {
124
- const children = await buildFullTree(absPath, relPath);
125
- nodes.push({
126
- id: relPath,
127
- name: label,
128
- type: "folder",
129
- path: relPath,
130
- children,
131
- });
132
- }
133
- else {
134
- nodes.push({
135
- id: relPath,
136
- name: label,
137
- type: "folder",
138
- path: relPath,
139
- children: [],
140
- virtual: true,
141
- });
142
- }
143
- }
144
- // 2. Always add AGENTS.md as a virtual file in root
145
- nodes.push({
146
- id: "AGENTS.md",
147
- name: "AGENTS",
148
- type: "file",
149
- path: "AGENTS.md",
150
- virtual: true,
151
- });
152
- // 3. Scan root for markdown files and folders containing markdown files
153
- try {
154
- const rootEntries = await readdir(projectPath, { withFileTypes: true });
155
- for (const entry of rootEntries) {
156
- // Skip .agents (already handled), AGENTS.md (already added as virtual), and other ignored dirs
157
- if (entry.name === ".agents" || entry.name === "AGENTS.md" || IGNORED_DIRS.has(entry.name))
158
- continue;
159
- const entryRelPath = entry.name;
160
- const entryAbsPath = join(projectPath, entry.name);
161
- if (entry.isFile() && MARKDOWN_EXTS.has(extname(entry.name))) {
162
- nodes.push({
163
- id: entryRelPath,
164
- name: basename(entry.name, extname(entry.name)),
165
- type: "file",
166
- path: entryRelPath,
167
- });
168
- }
169
- else if (entry.isDirectory()) {
170
- const children = await buildMarkdownFilteredTree(entryAbsPath, entryRelPath);
171
- if (children.length > 0) {
172
- nodes.push({
173
- id: entryRelPath,
174
- name: entry.name,
175
- type: "folder",
176
- path: entryRelPath,
177
- children,
178
- });
179
- }
180
- }
181
- }
182
- }
183
- catch {
184
- // Can't read root directory
185
- }
186
- return nodes;
187
- }
188
- /**
189
- * Validate that a file path is safe (no path traversal, within project or thread)
190
- */
191
- export function validateFilePath(projectPath, filePath) {
192
- if (!filePath)
193
- return null;
194
- const abs = join(projectPath, filePath);
195
- if (!abs.startsWith(projectPath + "/") && abs !== projectPath)
196
- return null;
197
- return abs;
198
- }
199
- /**
200
- * GET /api/projects/:id/ai-files
201
- */
202
- export async function handleGetAIFiles(c, projectManager) {
203
- try {
204
- const projectId = c.req.param("id");
205
- const project = await projectManager.getProject(projectId);
206
- if (!project) {
207
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
208
- }
209
- const nodes = await buildAIFileTree(project.path);
210
- return c.json({ nodes });
211
- }
212
- catch (error) {
213
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to list AI files", 500, error instanceof Error ? error.message : String(error));
214
- }
215
- }
216
- /**
217
- * GET /api/projects/:id/ai-file?path=...
218
- */
219
- export async function handleGetAIFile(c, projectManager) {
220
- try {
221
- const projectId = c.req.param("id");
222
- const filePath = c.req.query("path");
223
- if (!filePath) {
224
- return c.json({ error: { code: "BAD_REQUEST", message: "path query parameter is required" } }, 400);
225
- }
226
- const project = await projectManager.getProject(projectId);
227
- if (!project) {
228
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
229
- }
230
- const absPath = validateFilePath(project.path, filePath);
231
- if (!absPath) {
232
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
233
- }
234
- // Special handling for AGENTS.md - return default content if it doesn't exist
235
- if (filePath === "AGENTS.md") {
236
- try {
237
- await access(absPath);
238
- }
239
- catch {
240
- // File doesn't exist, return default content
241
- const defaultContent = `# AGENTS.md
242
-
243
- This file contains configuration and instructions for AI agents working on this repository.
244
-
245
- ## Overview
246
- Add information about your project that would be helpful for AI agents to understand:
247
-
248
- - Project purpose and goals
249
- - Architecture and technology stack
250
- - Development workflows and conventions
251
- - Testing strategies
252
- - Deployment processes
253
-
254
- ## Guidelines
255
- Provide specific guidelines for AI agents:
256
-
257
- - Code style preferences
258
- - File organization patterns
259
- - Review processes
260
- - Communication protocols
261
-
262
- ## Resources
263
- Links to important documentation, tools, or references.
264
-
265
- ---
266
-
267
- *This file was automatically created. Edit it to provide context for AI agents.*
268
- `;
269
- return c.json({ content: defaultContent, path: filePath });
270
- }
271
- }
272
- try {
273
- await access(absPath);
274
- }
275
- catch {
276
- return c.json({ error: { code: "NOT_FOUND", message: `File not found: ${filePath}` } }, 404);
277
- }
278
- const content = await readFile(absPath, "utf-8");
279
- return c.json({ content, path: filePath });
280
- }
281
- catch (error) {
282
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to read file", 500, error instanceof Error ? error.message : String(error));
283
- }
284
- }
285
- /**
286
- * PUT /api/projects/:id/ai-file
287
- * Body: { path: string, content: string }
288
- */
289
- export async function handleSaveAIFile(c, projectManager) {
290
- try {
291
- const projectId = c.req.param("id");
292
- let body;
293
- try {
294
- body = await c.req.json();
295
- }
296
- catch {
297
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid JSON body" } }, 400);
298
- }
299
- const { path: filePath, content } = body;
300
- if (!filePath || content === undefined) {
301
- return c.json({ error: { code: "BAD_REQUEST", message: "path and content are required" } }, 400);
302
- }
303
- const project = await projectManager.getProject(projectId);
304
- if (!project) {
305
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
306
- }
307
- const absPath = validateFilePath(project.path, filePath);
308
- if (!absPath) {
309
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
310
- }
311
- // Ensure parent directory exists
312
- const parentDir = join(absPath, "..");
313
- await mkdir(parentDir, { recursive: true });
314
- await writeFile(absPath, content, "utf-8");
315
- return c.json({ success: true, path: filePath });
316
- }
317
- catch (error) {
318
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to save file", 500, error instanceof Error ? error.message : String(error));
319
- }
320
- }
321
- /**
322
- * DELETE /api/projects/:id/ai-file?path=...
323
- * Deletes a file or folder at the specified path
324
- */
325
- export async function handleDeleteAIFile(c, projectManager) {
326
- try {
327
- const projectId = c.req.param("id");
328
- const filePath = c.req.query("path");
329
- if (!filePath) {
330
- return c.json({ error: { code: "BAD_REQUEST", message: "path query parameter is required" } }, 400);
331
- }
332
- const project = await projectManager.getProject(projectId);
333
- if (!project) {
334
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
335
- }
336
- const absPath = validateFilePath(project.path, filePath);
337
- if (!absPath) {
338
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid file path" } }, 400);
339
- }
340
- try {
341
- await access(absPath);
342
- }
343
- catch {
344
- return c.json({ error: { code: "NOT_FOUND", message: `File or folder not found: ${filePath}` } }, 404);
345
- }
346
- // Delete file or folder recursively
347
- await rm(absPath, { recursive: true, force: true });
348
- return c.json({ success: true, path: filePath });
349
- }
350
- catch (error) {
351
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to delete file", 500, error instanceof Error ? error.message : String(error));
352
- }
353
- }
354
- /**
355
- * POST /api/projects/:id/ai-files/skill
356
- * Body: { name: string, description: string, isGlobal?: boolean }
357
- * Creates .agents/skills/{name}/SKILL.md
358
- */
359
- export async function handleCreateSkill(c, projectManager) {
360
- try {
361
- const projectId = c.req.param("id");
362
- let body;
363
- try {
364
- body = await c.req.json();
365
- }
366
- catch {
367
- return c.json({ error: { code: "BAD_REQUEST", message: "Invalid JSON body" } }, 400);
368
- }
369
- const { name, description, isGlobal } = body;
370
- if (!name || !description) {
371
- return c.json({ error: { code: "BAD_REQUEST", message: "name and description are required" } }, 400);
372
- }
373
- // Validate name: lowercase, alphanumeric and hyphens only
374
- if (!/^[a-z0-9-]+$/.test(name) ||
375
- name.startsWith("-") ||
376
- name.endsWith("-") ||
377
- name.includes("--")) {
378
- return c.json({
379
- error: {
380
- code: "BAD_REQUEST",
381
- message: "Skill name must be lowercase alphanumeric with hyphens (no leading/trailing/consecutive hyphens)",
382
- },
383
- }, 400);
384
- }
385
- if (isGlobal) {
386
- return c.json({
387
- error: {
388
- code: "BAD_REQUEST",
389
- message: "Global skills are not yet supported via this endpoint",
390
- },
391
- }, 400);
392
- }
393
- const project = await projectManager.getProject(projectId);
394
- if (!project) {
395
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, 404);
396
- }
397
- const skillRelPath = join(".agents", "skills", name);
398
- const skillAbsPath = join(project.path, skillRelPath);
399
- const skillFileRelPath = join(skillRelPath, "SKILL.md");
400
- const skillFileAbsPath = join(skillAbsPath, "SKILL.md");
401
- // Check skill doesn't already exist
402
- if (existsSync(skillAbsPath)) {
403
- return c.json({ error: { code: "CONFLICT", message: `Skill '${name}' already exists` } }, 409);
404
- }
405
- // Create skill directory and SKILL.md
406
- await mkdir(skillAbsPath, { recursive: true });
407
- const skillContent = `---
408
- name: ${name}
409
- description: ${description}
410
- ---
411
-
412
- 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.
413
- `;
414
- await writeFile(skillFileAbsPath, skillContent, "utf-8");
415
- return c.json({
416
- success: true,
417
- path: skillFileRelPath,
418
- content: skillContent,
419
- });
420
- }
421
- catch (error) {
422
- return errorResponse(c, ErrorCodes.INTERNAL_ERROR, "Failed to create skill", 500, error instanceof Error ? error.message : String(error));
423
- }
424
- }
425
- //# sourceMappingURL=projects-ai-files.route.js.map
@@ -1,27 +0,0 @@
1
- /**
2
- * POST /api/projects/:id/commands
3
- * Add or update a command for a project
4
- */
5
- import { Context } from "hono";
6
- import { ProjectManager } from "../projects/projects.manager.js";
7
- export declare function handleSaveCommand(c: Context, projectManager: ProjectManager): 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<import("hono/utils/types").JSONValue, any, "json">)>;
15
- /**
16
- * DELETE /api/projects/:id/commands/:commandId
17
- * Delete a command from a project
18
- */
19
- export declare function handleDeleteCommand(c: Context, projectManager: ProjectManager): Promise<(Response & import("hono").TypedResponse<{
20
- error: {
21
- code: string;
22
- message: string;
23
- details?: import("hono/utils/types").JSONValue | undefined;
24
- timestamp: string;
25
- };
26
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
27
- //# sourceMappingURL=projects-commands.route.d.ts.map
@@ -1,39 +0,0 @@
1
- /**
2
- * POST /api/projects/:id/commands
3
- * Add or update a command for a project
4
- */
5
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
6
- import { ErrorCodes } from "../../core/error-responses.js";
7
- export async function handleSaveCommand(c, projectManager) {
8
- try {
9
- const projectId = c.req.param("id");
10
- const command = await c.req.json();
11
- if (!projectId) {
12
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
13
- }
14
- await projectManager.saveCommand(projectId, command);
15
- return successResponse(c, { success: true, message: "Command saved" });
16
- }
17
- catch (error) {
18
- return errorResponse(c, ErrorCodes.SAVE_COMMAND_ERROR, "Failed to save command", 500, error instanceof Error ? error.message : String(error));
19
- }
20
- }
21
- /**
22
- * DELETE /api/projects/:id/commands/:commandId
23
- * Delete a command from a project
24
- */
25
- export async function handleDeleteCommand(c, projectManager) {
26
- try {
27
- const projectId = c.req.param("id");
28
- const commandId = c.req.param("commandId");
29
- if (!projectId || !commandId) {
30
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID and Command ID are required", 400);
31
- }
32
- await projectManager.deleteCommand(projectId, commandId);
33
- return successResponse(c, { success: true, message: "Command deleted" });
34
- }
35
- catch (error) {
36
- return errorResponse(c, ErrorCodes.DELETE_COMMAND_ERROR, "Failed to delete command", 500, error instanceof Error ? error.message : String(error));
37
- }
38
- }
39
- //# sourceMappingURL=projects-commands.route.js.map
@@ -1,19 +0,0 @@
1
- /**
2
- * POST /api/projects
3
- * Create a new project from a git URL
4
- *
5
- * Request body:
6
- * {
7
- * "gitUrl": "https://github.com/user/repo.git"
8
- * }
9
- *
10
- * Response: Newline-delimited JSON stream of ProjectEvent objects
11
- *
12
- * Requirements:
13
- * - 6.2 - THE App SHALL send a POST request with the git URL to the CLI
14
- * - 8.2 - THE CLI SHALL support streaming responses to the client
15
- */
16
- import { Context } from "hono";
17
- import { ProjectManager } from "../projects/projects.manager.js";
18
- export declare function handleCreateProject(c: Context, projectManager: ProjectManager): Promise<Response>;
19
- //# sourceMappingURL=projects-create.route.d.ts.map
@@ -1,37 +0,0 @@
1
- /**
2
- * POST /api/projects
3
- * Create a new project from a git URL
4
- *
5
- * Request body:
6
- * {
7
- * "gitUrl": "https://github.com/user/repo.git"
8
- * }
9
- *
10
- * Response: Newline-delimited JSON stream of ProjectEvent objects
11
- *
12
- * Requirements:
13
- * - 6.2 - THE App SHALL send a POST request with the git URL to the CLI
14
- * - 8.2 - THE CLI SHALL support streaming responses to the client
15
- */
16
- import { streamAsyncGenerator } from "../../core/stream-helper.js";
17
- import { CommitMethods, isValidCommitMethod } from "@tarsk/shared";
18
- import { errorResponse } from "../../core/route-helpers.js";
19
- import { ErrorCodes } from "../../core/error-responses.js";
20
- export async function handleCreateProject(c, projectManager) {
21
- try {
22
- const body = await c.req.json();
23
- const { gitUrl, commitMethod } = body;
24
- // Validate gitUrl is provided
25
- if (!gitUrl || typeof gitUrl !== "string") {
26
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "gitUrl is required and must be a string", 400);
27
- }
28
- // Validate commitMethod if provided (default to PullRequest)
29
- const method = isValidCommitMethod(commitMethod) ? commitMethod : CommitMethods.PullRequest;
30
- // Stream the project creation events
31
- return streamAsyncGenerator(c, projectManager.createProject(gitUrl, method));
32
- }
33
- catch (error) {
34
- return errorResponse(c, ErrorCodes.REQUEST_PARSE_ERROR, "Failed to parse request body", 400, error instanceof Error ? error.message : String(error));
35
- }
36
- }
37
- //# sourceMappingURL=projects-create.route.js.map
@@ -1,24 +0,0 @@
1
- /**
2
- * DELETE /api/projects/:id
3
- * Delete a project and all its threads
4
- *
5
- * Response:
6
- * {
7
- * "success": true,
8
- * "message": "Project deleted successfully"
9
- * }
10
- *
11
- * Requirements:
12
- * - 6.2 - THE CLI SHALL expose REST API endpoints for Project operations
13
- */
14
- import { Context } from "hono";
15
- import { ProjectManager } from "../projects/projects.manager.js";
16
- export declare function handleDeleteProject(c: Context, projectManager: ProjectManager): Promise<(Response & import("hono").TypedResponse<{
17
- error: {
18
- code: string;
19
- message: string;
20
- details?: import("hono/utils/types").JSONValue | undefined;
21
- timestamp: string;
22
- };
23
- }, any, "json">) | (Response & import("hono").TypedResponse<import("hono/utils/types").JSONValue, any, "json">)>;
24
- //# sourceMappingURL=projects-delete.route.d.ts.map
@@ -1,34 +0,0 @@
1
- /**
2
- * DELETE /api/projects/:id
3
- * Delete a project and all its threads
4
- *
5
- * Response:
6
- * {
7
- * "success": true,
8
- * "message": "Project deleted successfully"
9
- * }
10
- *
11
- * Requirements:
12
- * - 6.2 - THE CLI SHALL expose REST API endpoints for Project operations
13
- */
14
- import { errorResponse, successResponse } from "../../core/route-helpers.js";
15
- import { ErrorCodes } from "../../core/error-responses.js";
16
- export async function handleDeleteProject(c, projectManager) {
17
- try {
18
- const projectId = c.req.param("id");
19
- if (!projectId) {
20
- return errorResponse(c, ErrorCodes.INVALID_REQUEST, "Project ID is required", 400);
21
- }
22
- await projectManager.deleteProject(projectId);
23
- return successResponse(c, { success: true, message: "Project deleted successfully" });
24
- }
25
- catch (error) {
26
- const errorMessage = error instanceof Error ? error.message : String(error);
27
- // Check if it's a "not found" error
28
- if (errorMessage.includes("not found")) {
29
- return errorResponse(c, ErrorCodes.PROJECT_NOT_FOUND, errorMessage, 404);
30
- }
31
- return errorResponse(c, ErrorCodes.DELETE_PROJECT_ERROR, "Failed to delete project", 500, errorMessage);
32
- }
33
- }
34
- //# sourceMappingURL=projects-delete.route.js.map
@@ -1,47 +0,0 @@
1
- /**
2
- * GET /api/projects/:id
3
- * Get project details by ID
4
- *
5
- * Response:
6
- * {
7
- * "id": "uuid",
8
- * "name": "project-name",
9
- * "gitUrl": "https://github.com/user/repo.git",
10
- * "path": "/path/to/project",
11
- * "createdAt": "2024-01-01T00:00:00Z",
12
- * "threads": ["thread-id-1", "thread-id-2"]
13
- * }
14
- *
15
- * Requirements:
16
- * - 6.2 - THE CLI SHALL expose REST API endpoints for Project operations
17
- */
18
- import { Context } from "hono";
19
- import { ProjectManager } from "../projects/projects.manager.js";
20
- export declare function handleGetProject(c: Context, projectManager: ProjectManager): Promise<(Response & import("hono").TypedResponse<{
21
- error: {
22
- code: string;
23
- message: string;
24
- details?: import("hono/utils/types").JSONValue | undefined;
25
- timestamp: string;
26
- };
27
- }, any, "json">) | (Response & import("hono").TypedResponse<{
28
- id: string;
29
- name: string;
30
- gitUrl: string;
31
- path: string;
32
- createdAt: string;
33
- threads: string[];
34
- openWith?: string | undefined;
35
- commands?: {
36
- id: string;
37
- name: string;
38
- icon: string;
39
- commandLine: string;
40
- relativeFolder?: string | undefined;
41
- }[] | undefined;
42
- setupScript?: string | undefined;
43
- pendingSetupScripts?: string[] | undefined;
44
- runCommand?: string | undefined;
45
- commitMethod?: import("@tarsk/shared").CommitMethods | undefined;
46
- }, import("hono/utils/http-status").ContentfulStatusCode, "json">)>;
47
- //# sourceMappingURL=projects-get.route.d.ts.map