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,426 +0,0 @@
1
- /**
2
- * ProjectManager handles project lifecycle and metadata management
3
- *
4
- * This manager is responsible for:
5
- * - Creating new projects from git URLs
6
- * - Managing project metadata
7
- * - Coordinating with GitManager for repository cloning
8
- * - Providing CRUD operations for projects
9
- */
10
- import { join } from "path";
11
- import { realpathSync } from "fs";
12
- import { rm } from "fs/promises";
13
- import { spawnShell } from "../../core/utils.js";
14
- import { CommitMethods } from "@tarsk/shared";
15
- import { ProcessManager } from "../../agent/agent.process-manager.js";
16
- import { suggestRunCommand } from "../../core/run-command-detector.js";
17
- import { OpenWithHandler } from "./projects.open-with.js";
18
- import { ProjectCreator } from "./projects.creator.js";
19
- import { TerminalSessionManager } from "./terminal-session-manager.js";
20
- /**
21
- * ProjectManagerImpl provides the implementation for project operations
22
- */
23
- export class ProjectManagerImpl {
24
- rootFolder;
25
- metadataManager;
26
- processManager;
27
- openWithHandler;
28
- projectCreator;
29
- terminalSessionManager;
30
- /**
31
- * Create a new ProjectManager
32
- * @param rootFolder - Base directory where projects will be stored
33
- * @param metadataManager - Manager for persisting metadata
34
- * @param gitManager - Manager for git operations
35
- * @param processingStateManager - Optional manager for processing state (for spinner during clone)
36
- *
37
- * Requirements:
38
- * - 1.1 - WHEN a user provides a git URL to create a new Project, THE CLI SHALL clone the repository into a folder under the Root_Folder
39
- * - 1.4 - THE CLI SHALL determine the storage path for each Project folder
40
- */
41
- constructor(rootFolder, metadataManager, gitManager, processingStateManager) {
42
- this.rootFolder = rootFolder;
43
- this.metadataManager = metadataManager;
44
- this.processManager = new ProcessManager();
45
- this.terminalSessionManager = new TerminalSessionManager();
46
- this.openWithHandler = new OpenWithHandler((id) => this.getProject(id), metadataManager);
47
- this.projectCreator = new ProjectCreator(rootFolder, metadataManager, gitManager, processingStateManager, {
48
- suggestRunCommand: (id) => this.suggestRunCommand(id),
49
- updateRunCommand: (id, cmd) => this.updateRunCommand(id, cmd),
50
- });
51
- }
52
- /**
53
- * Creates a new project from a git URL
54
- *
55
- * This method:
56
- * 1. Validates the git URL
57
- * 2. Generates a unique project ID
58
- * 3. Derives the project name from the git URL
59
- * 4. Generates the project path
60
- * 5. Delegates to GitManager for cloning
61
- * 6. Saves project metadata
62
- * 7. Yields progress events during the operation
63
- * 8. Creates an initial thread automatically
64
- *
65
- * @param gitUrl - The git repository URL
66
- * @yields ProjectEvent objects during the creation process
67
- *
68
- * Requirements:
69
- * - 1.1 - WHEN a user provides a git URL to create a new Project, THE CLI SHALL clone the repository into a folder under the Root_Folder
70
- * - 1.2 - WHEN a Project is created, THE App SHALL display the Project in the Side_Panel with its associated Thread
71
- * - 1.4 - THE CLI SHALL determine the storage path for each Project folder
72
- * - 1.5 - WHEN a Project folder is created, THE System SHALL associate it with the provided git URL
73
- */
74
- async *createProject(gitUrl, commitMethod = CommitMethods.PullRequest) {
75
- yield* this.projectCreator.createProject(gitUrl, commitMethod);
76
- }
77
- /**
78
- * Creates a new project from a local folder via native OS dialog.
79
- */
80
- async *createProjectFromFolder() {
81
- yield* this.projectCreator.createProjectFromFolder();
82
- }
83
- /**
84
- * Creates a new project by scaffolding a web app, then git init and initial thread.
85
- */
86
- async *createProjectFromScaffold(projectName, templateId, packageManager) {
87
- yield* this.projectCreator.createProjectFromScaffold(projectName, templateId, packageManager);
88
- }
89
- /**
90
- * Gets a project by ID
91
- * @param projectId - The project ID
92
- * @returns The project or null if not found
93
- */
94
- async getProject(projectId) {
95
- const projects = await this.metadataManager.loadProjects();
96
- return projects.find((p) => p.id === projectId) ?? null;
97
- }
98
- /**
99
- * Lists all projects
100
- * @returns Array of all projects
101
- */
102
- async listProjects() {
103
- return await this.metadataManager.loadProjects();
104
- }
105
- /**
106
- * Deletes a project and all its threads (cascade delete)
107
- *
108
- * This method:
109
- * 1. Finds the project by ID
110
- * 2. Removes all associated threads from metadata
111
- * 3. Removes the project directory from filesystem
112
- * 4. Removes the project from metadata
113
- *
114
- * @param projectId - The project ID to delete
115
- * @throws Error if project not found
116
- *
117
- * Requirements:
118
- * - 1.1 - Cascade delete for projects (remove all threads)
119
- */
120
- async deleteProject(projectId) {
121
- const projects = await this.metadataManager.loadProjects();
122
- const projectIndex = projects.findIndex((p) => p.id === projectId);
123
- if (projectIndex === -1) {
124
- throw new Error(`Project not found: ${projectId}`);
125
- }
126
- const project = projects[projectIndex];
127
- // Load threads and remove all threads associated with this project
128
- const threads = await this.metadataManager.loadThreads();
129
- const remainingThreads = threads.filter((t) => t.projectId !== projectId);
130
- await this.metadataManager.saveThreads(remainingThreads);
131
- // Remove project directory from filesystem
132
- try {
133
- await rm(project.path, { recursive: true, force: true });
134
- }
135
- catch (error) {
136
- throw new Error(`Failed to remove project directory: ${error instanceof Error ? error.message : String(error)}`);
137
- }
138
- // Remove project from metadata
139
- projects.splice(projectIndex, 1);
140
- await this.metadataManager.saveProjects(projects);
141
- }
142
- /**
143
- * Gets the root folder path
144
- * @returns The root folder path
145
- */
146
- getRootFolder() {
147
- return this.rootFolder;
148
- }
149
- async openWith(projectId, program) {
150
- return this.openWithHandler.openWith(projectId, program);
151
- }
152
- async updateOpenWith(projectId, program) {
153
- return this.openWithHandler.updateOpenWith(projectId, program);
154
- }
155
- /**
156
- * Saves (adds or updates) a command for a project
157
- * @param projectId - The project ID
158
- * @param command - The command to save
159
- */
160
- async saveCommand(projectId, command) {
161
- const projects = await this.metadataManager.loadProjects();
162
- const projectIndex = projects.findIndex((p) => p.id === projectId);
163
- if (projectIndex === -1) {
164
- throw new Error(`Project not found: ${projectId}`);
165
- }
166
- const project = projects[projectIndex];
167
- project.commands ??= [];
168
- const commandIndex = project.commands.findIndex((c) => c.id === command.id);
169
- if (commandIndex !== -1) {
170
- project.commands[commandIndex] = command;
171
- }
172
- else {
173
- project.commands.push(command);
174
- }
175
- await this.metadataManager.saveProjects(projects);
176
- }
177
- /**
178
- * Deletes a command from a project
179
- * @param projectId - The project ID
180
- * @param commandId - The ID of the command to delete
181
- */
182
- async deleteCommand(projectId, commandId) {
183
- const projects = await this.metadataManager.loadProjects();
184
- const projectIndex = projects.findIndex((p) => p.id === projectId);
185
- if (projectIndex === -1) {
186
- throw new Error(`Project not found: ${projectId}`);
187
- }
188
- const project = projects[projectIndex];
189
- if (project.commands) {
190
- project.commands = project.commands.filter((c) => c.id !== commandId);
191
- }
192
- await this.metadataManager.saveProjects(projects);
193
- }
194
- /**
195
- * Updates the project's setup script
196
- * @param projectId - The project ID
197
- * @param setupScript - The setup script to run after clone (or null to clear)
198
- */
199
- async updateSetupScript(projectId, setupScript) {
200
- const projects = await this.metadataManager.loadProjects();
201
- const projectIndex = projects.findIndex((p) => p.id === projectId);
202
- if (projectIndex === -1) {
203
- throw new Error(`Project not found: ${projectId}`);
204
- }
205
- // Update the project's setup script
206
- if (setupScript === null || setupScript === "") {
207
- delete projects[projectIndex].setupScript;
208
- }
209
- else {
210
- projects[projectIndex].setupScript = setupScript;
211
- }
212
- await this.metadataManager.saveProjects(projects);
213
- }
214
- /**
215
- * Updates the project's name
216
- * @param projectId - The project ID
217
- * @param name - The new project name
218
- */
219
- async updateProjectName(projectId, name) {
220
- const projects = await this.metadataManager.loadProjects();
221
- const projectIndex = projects.findIndex((p) => p.id === projectId);
222
- if (projectIndex === -1) {
223
- throw new Error(`Project not found: ${projectId}`);
224
- }
225
- if (!name || typeof name !== "string" || name.trim() === "") {
226
- throw new Error("Project name cannot be empty");
227
- }
228
- projects[projectIndex].name = name.trim();
229
- await this.metadataManager.saveProjects(projects);
230
- }
231
- /**
232
- * Runs a command in a thread's directory
233
- * @param threadId - The thread ID where to run the command
234
- * @param commandLine - The command line to execute
235
- * @param cwd - Optional working directory relative to thread path
236
- */
237
- async *runCommand(threadId, commandLine, cwd) {
238
- const threads = await this.metadataManager.loadThreads();
239
- const thread = threads.find((t) => t.id === threadId);
240
- if (!thread) {
241
- throw new Error(`Thread not found: ${threadId}`);
242
- }
243
- // Get or create terminal session for this thread
244
- const session = this.terminalSessionManager.getOrCreateSession(threadId, thread.path);
245
- // Determine the working directory for this command
246
- let workingDir;
247
- if (cwd) {
248
- // If explicit cwd provided, use it (absolute or relative to thread path)
249
- workingDir = cwd.startsWith("/") ? cwd : join(thread.path, cwd);
250
- // Update the session's working directory when explicit cwd is provided
251
- this.terminalSessionManager.updateWorkingDirectory(threadId, workingDir);
252
- }
253
- else {
254
- // Use the session's current working directory
255
- workingDir = session.currentWorkingDirectory;
256
- }
257
- // Emit the current working directory so the client always has an absolute path
258
- yield { type: "cwd", path: workingDir };
259
- // Use shell for complex command lines
260
- // Append a command to output the final working directory after the command runs
261
- const child = spawnShell(`${commandLine}; printf "\n___CWD___%s\n" "$(pwd)"`, {
262
- cwd: workingDir,
263
- stdio: ["pipe", "pipe", "pipe"],
264
- });
265
- const decoder = new TextDecoder();
266
- const outputBuffer = [];
267
- let isDone = false;
268
- if (child.stdout) {
269
- child.stdout.on("data", (data) => {
270
- const text = decoder.decode(data);
271
- // Check if this chunk contains our CWD marker
272
- if (text.includes("___CWD___")) {
273
- const parts = text.split("___CWD___");
274
- if (parts[0])
275
- outputBuffer.push(parts[0]);
276
- const newCwd = parts[1].trim();
277
- if (newCwd) {
278
- try {
279
- const realNewCwd = realpathSync(newCwd);
280
- outputBuffer.push({ type: "cwd", path: realNewCwd });
281
- // Update the session's working directory when it changes
282
- this.terminalSessionManager.updateWorkingDirectory(threadId, realNewCwd);
283
- }
284
- catch {
285
- outputBuffer.push({ type: "cwd", path: newCwd });
286
- // Update the session's working directory even if realpath fails
287
- this.terminalSessionManager.updateWorkingDirectory(threadId, newCwd);
288
- }
289
- }
290
- }
291
- else {
292
- outputBuffer.push(text);
293
- }
294
- });
295
- }
296
- if (child.stderr) {
297
- child.stderr.on("data", (data) => {
298
- outputBuffer.push({ type: "error", message: decoder.decode(data) });
299
- });
300
- }
301
- child.on("close", (code) => {
302
- if (code !== 0) {
303
- outputBuffer.push({ type: "error", message: `Process exited with code ${code}` });
304
- }
305
- isDone = true;
306
- });
307
- child.on("error", (err) => {
308
- outputBuffer.push({ type: "error", message: err.message });
309
- isDone = true;
310
- });
311
- while (!isDone || outputBuffer.length > 0) {
312
- if (outputBuffer.length > 0) {
313
- yield outputBuffer.shift();
314
- }
315
- else {
316
- await new Promise((resolve) => setTimeout(resolve, 50));
317
- }
318
- }
319
- }
320
- /**
321
- * Suggests a run command based on package.json
322
- * @param projectId - The project ID
323
- * @returns Suggested run command or null if none detected
324
- */
325
- async suggestRunCommand(projectId) {
326
- const project = await this.getProject(projectId);
327
- if (!project) {
328
- throw new Error(`Project not found: ${projectId}`);
329
- }
330
- // Get the first thread's path where the actual repository code lives
331
- // (project.path is just a container for threads)
332
- const threads = await this.metadataManager.loadThreads();
333
- const projectThreads = threads.filter((t) => t.projectId === projectId);
334
- if (projectThreads.length === 0) {
335
- return null;
336
- }
337
- return suggestRunCommand(projectThreads[0].path);
338
- }
339
- /**
340
- * Updates the project's run command
341
- * @param projectId - The project ID
342
- * @param runCommand - The run command (e.g., "npm run dev") or null to clear
343
- */
344
- async updateRunCommand(projectId, runCommand) {
345
- const projects = await this.metadataManager.loadProjects();
346
- const project = projects.find((p) => p.id === projectId);
347
- if (!project) {
348
- throw new Error(`Project not found: ${projectId}`);
349
- }
350
- project.runCommand = runCommand ?? undefined;
351
- await this.metadataManager.saveProjects(projects);
352
- }
353
- /**
354
- * Updates the project's commit method
355
- * @param projectId - The project ID
356
- * @param commitMethod - The commit method (PullRequest or Direct)
357
- */
358
- async updateCommitMethod(projectId, commitMethod) {
359
- const projects = await this.metadataManager.loadProjects();
360
- const project = projects.find((p) => p.id === projectId);
361
- if (!project) {
362
- throw new Error(`Project not found: ${projectId}`);
363
- }
364
- project.commitMethod = commitMethod;
365
- await this.metadataManager.saveProjects(projects);
366
- }
367
- /**
368
- * Starts running a dev server process for a project
369
- * @param projectId - The project ID
370
- * @yields ProcessOutput events during the process
371
- */
372
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
373
- async *startRunningProcess(projectId, threadId) {
374
- console.log("CLI Manager: startRunningProcess called for project:", projectId, "thread:", threadId);
375
- const project = await this.getProject(projectId);
376
- if (!project) {
377
- throw new Error(`Project not found: ${projectId}`);
378
- }
379
- if (!project.runCommand) {
380
- throw new Error(`No run command defined for project: ${projectId}`);
381
- }
382
- // Use the provided threadId or fall back to the first thread
383
- const targetThreadId = threadId ?? project.threads?.[0];
384
- if (!targetThreadId) {
385
- throw new Error(`No thread specified and no threads found for project: ${projectId}`);
386
- }
387
- try {
388
- const threads = await this.metadataManager.loadThreads();
389
- const thread = threads.find((t) => t.id === targetThreadId);
390
- if (!thread) {
391
- console.warn("[start-running-process] Thread not found for project", projectId, "targetThreadId:", targetThreadId, "available:", project.threads);
392
- throw new Error(`Thread not found for project: ${projectId} with threadId: ${targetThreadId}`);
393
- }
394
- console.log("[start-running-process] Starting process with command:", project.runCommand, "in thread path:", thread.path);
395
- yield* this.processManager.runProcess(projectId, project.runCommand, thread.path, targetThreadId);
396
- }
397
- catch (error) {
398
- console.error("[start-running-process] Error starting process:", error);
399
- throw error;
400
- }
401
- }
402
- /**
403
- * Stops a running dev server process for a project
404
- * @param projectId - The project ID
405
- * @returns true if process was stopped, false if no process was running
406
- */
407
- async stopRunningProcess(projectId) {
408
- // Try to get the thread ID for this project to clear the cache
409
- const project = await this.getProject(projectId);
410
- let threadId;
411
- if (project) {
412
- // Use the first thread associated with this project
413
- threadId = project.threads?.[0];
414
- }
415
- return this.processManager.stopProcess(projectId, threadId);
416
- }
417
- /**
418
- * Checks if a process is running for a project
419
- * @param projectId - The project ID
420
- * @returns true if a process is running
421
- */
422
- async isProcessRunning(projectId) {
423
- return this.processManager.isRunning(projectId);
424
- }
425
- }
426
- //# sourceMappingURL=projects.manager.js.map
@@ -1,27 +0,0 @@
1
- /**
2
- * Open-with: open a project in an external program (Cursor, VS Code, Terminal, etc.)
3
- * and persist the project's open-with preference.
4
- */
5
- import type { Project } from "@tarsk/shared";
6
- import type { MetadataManager } from "../metadata/metadata.manager.js";
7
- /**
8
- * Validates if a program is supported.
9
- * Returns null if valid, or an error message if invalid.
10
- */
11
- export declare function validateProgram(program: string | undefined): string | null;
12
- export type GetProject = (projectId: string) => Promise<Project | null>;
13
- /**
14
- * Handles opening a project in an external program and updating the open-with preference.
15
- */
16
- export declare class OpenWithHandler {
17
- private getProject;
18
- private metadataManager;
19
- constructor(getProject: GetProject, metadataManager: MetadataManager);
20
- openWith(projectId: string, program: string): Promise<void>;
21
- /**
22
- * Opens the OS default terminal in the specified directory.
23
- */
24
- private openTerminal;
25
- updateOpenWith(projectId: string, program: string): Promise<void>;
26
- }
27
- //# sourceMappingURL=projects.open-with.d.ts.map
@@ -1,156 +0,0 @@
1
- /**
2
- * Open-with: open a project in an external program (Cursor, VS Code, Terminal, etc.)
3
- * and persist the project's open-with preference.
4
- */
5
- import { spawnProcess } from "../../core/utils.js";
6
- import open from "open";
7
- import { AVAILABLE_PROGRAMS, PROGRAM_APP_NAMES } from "@tarsk/shared";
8
- /**
9
- * Validates if a program is supported.
10
- * Returns null if valid, or an error message if invalid.
11
- */
12
- export function validateProgram(program) {
13
- if (!program) {
14
- return "Program is required";
15
- }
16
- if (!AVAILABLE_PROGRAMS.includes(program)) {
17
- return `Invalid program. Must be one of: ${AVAILABLE_PROGRAMS.join(", ")}`;
18
- }
19
- return null;
20
- }
21
- /**
22
- * Handles opening a project in an external program and updating the open-with preference.
23
- */
24
- export class OpenWithHandler {
25
- getProject;
26
- metadataManager;
27
- constructor(getProject, metadataManager) {
28
- this.getProject = getProject;
29
- this.metadataManager = metadataManager;
30
- }
31
- async openWith(projectId, program) {
32
- console.log("[openWith] Request: projectId=%s program=%s", projectId, program);
33
- const programError = validateProgram(program);
34
- if (programError) {
35
- throw new Error(programError);
36
- }
37
- const project = await this.getProject(projectId);
38
- if (!project) {
39
- console.error("[openWith] Project not found:", projectId);
40
- throw new Error(`Project not found: ${projectId}`);
41
- }
42
- const projectPath = project.path;
43
- console.log(`[ai] Open with ${program}`);
44
- if (program === "Terminal") {
45
- await this.openTerminal(projectPath);
46
- return;
47
- }
48
- const appNames = PROGRAM_APP_NAMES[program];
49
- if (!appNames) {
50
- throw new Error(`Unsupported program: ${program}`);
51
- }
52
- console.log("[openWith] projectPath=%s platform=%s app=%j", projectPath, process.platform, appNames);
53
- try {
54
- await open(projectPath, {
55
- app: { name: appNames },
56
- });
57
- console.log("[openWith] open() completed successfully");
58
- }
59
- catch (error) {
60
- const message = error instanceof Error ? error.message : String(error);
61
- console.error("[openWith] open() error:", message);
62
- throw new Error(`Failed to open ${program}: ${message}`);
63
- }
64
- }
65
- /**
66
- * Opens the OS default terminal in the specified directory.
67
- */
68
- async openTerminal(projectPath) {
69
- console.log("[openTerminal] Starting terminal launch...");
70
- console.log("[openTerminal] Platform:", process.platform);
71
- console.log("[openTerminal] Project path:", projectPath);
72
- try {
73
- if (process.platform === "darwin") {
74
- console.log("[openTerminal] Detected macOS - spawning sh with open command");
75
- const child = spawnProcess("sh", ["-c", `open -a Terminal '${projectPath}'`], {
76
- detached: true,
77
- stdio: "ignore",
78
- });
79
- console.log("[openTerminal] Spawn returned, pid:", child.pid);
80
- child.unref();
81
- console.log("[openTerminal] macOS Terminal opened successfully");
82
- }
83
- else if (process.platform === "linux") {
84
- console.log("[openTerminal] Detected Linux - trying terminal emulators");
85
- const terminals = [
86
- {
87
- cmd: "gnome-terminal",
88
- args: ["--working-directory=" + projectPath],
89
- },
90
- {
91
- cmd: "xfce4-terminal",
92
- args: ["--working-directory=" + projectPath],
93
- },
94
- { cmd: "konsole", args: ["--workdir", projectPath] },
95
- { cmd: "xterm", args: ["-e", `sh -c 'cd "${projectPath}" && bash'`] },
96
- ];
97
- let opened = false;
98
- for (const terminal of terminals) {
99
- try {
100
- console.log("[openTerminal] Attempting to spawn:", terminal.cmd);
101
- const child = spawnProcess(terminal.cmd, terminal.args, {
102
- detached: true,
103
- stdio: "ignore",
104
- });
105
- console.log("[openTerminal] Spawn returned, pid:", child.pid);
106
- child.unref();
107
- console.log("[openTerminal] Linux terminal opened with:", terminal.cmd);
108
- opened = true;
109
- break;
110
- }
111
- catch (err) {
112
- console.log("[openTerminal] Failed to open with", terminal.cmd, ":", err instanceof Error ? err.message : String(err));
113
- continue;
114
- }
115
- }
116
- if (!opened) {
117
- throw new Error("No supported terminal found (gnome-terminal, xfce4-terminal, konsole, or xterm required)");
118
- }
119
- }
120
- else if (process.platform === "win32") {
121
- console.log("[openTerminal] Detected Windows - spawning cmd.exe");
122
- const child = spawnProcess("cmd.exe", ["/k", `cd /d "${projectPath}"`], {
123
- detached: true,
124
- stdio: "ignore",
125
- shell: true,
126
- });
127
- console.log("[openTerminal] Spawn returned, pid:", child.pid);
128
- child.unref();
129
- console.log("[openTerminal] Windows terminal opened successfully");
130
- }
131
- else {
132
- throw new Error(`Unsupported platform: ${process.platform}`);
133
- }
134
- }
135
- catch (error) {
136
- const message = error instanceof Error ? error.message : String(error);
137
- console.error("[openTerminal] Fatal error:", message);
138
- console.error("[openTerminal] Error stack:", error instanceof Error ? error.stack : "No stack trace");
139
- throw new Error(`Failed to open terminal: ${message}`);
140
- }
141
- }
142
- async updateOpenWith(projectId, program) {
143
- const programError = validateProgram(program);
144
- if (programError) {
145
- throw new Error(programError);
146
- }
147
- const projects = await this.metadataManager.loadProjects();
148
- const projectIndex = projects.findIndex((p) => p.id === projectId);
149
- if (projectIndex === -1) {
150
- throw new Error(`Project not found: ${projectId}`);
151
- }
152
- projects[projectIndex].openWith = program;
153
- await this.metadataManager.saveProjects(projects);
154
- }
155
- }
156
- //# sourceMappingURL=projects.open-with.js.map
@@ -1,20 +0,0 @@
1
- /**
2
- * Project routes for the REST API
3
- *
4
- * Handles all project-related operations:
5
- * - POST /api/projects - Create a new project
6
- * - GET /api/projects - List all projects
7
- * - GET /api/projects/:id - Get project details
8
- * - DELETE /api/projects/:id - Delete a project
9
- */
10
- import { Hono } from "hono";
11
- import { ProjectManager } from "../projects/projects.manager.js";
12
- import { ThreadManager } from "../threads/threads.manager.js";
13
- /**
14
- * Creates project routes
15
- * @param projectManager - The ProjectManager instance
16
- * @param threadManager - The ThreadManager instance
17
- * @returns Hono router with project routes
18
- */
19
- export declare function createProjectRoutes(projectManager: ProjectManager, threadManager: ThreadManager): Hono;
20
- //# sourceMappingURL=projects.routes.d.ts.map