devchain-cli 0.9.1 → 0.10.0

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 (353) hide show
  1. package/dist/cli.js +985 -194
  2. package/dist/drizzle/0042_nice_flatman.sql +10 -0
  3. package/dist/drizzle/0043_majestic_starhawk.sql +10 -0
  4. package/dist/drizzle/0044_supreme_joshua_kane.sql +57 -0
  5. package/dist/drizzle/0045_provider_auto_compact_threshold.sql +11 -0
  6. package/dist/drizzle/0046_worktrees_owner_project_id.sql +3 -0
  7. package/dist/drizzle/meta/0042_snapshot.json +4171 -0
  8. package/dist/drizzle/meta/0043_snapshot.json +4231 -0
  9. package/dist/drizzle/meta/0044_snapshot.json +4620 -0
  10. package/dist/drizzle/meta/_journal.json +35 -0
  11. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +18 -0
  12. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
  13. package/dist/node_modules/@devchain/shared/schemas/export-schema.js +6 -0
  14. package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
  15. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  16. package/dist/server/app.main.module.d.ts +4 -0
  17. package/dist/server/app.main.module.js +102 -0
  18. package/dist/server/app.main.module.js.map +1 -0
  19. package/dist/server/app.module.d.ts +1 -4
  20. package/dist/server/app.module.js +2 -78
  21. package/dist/server/app.module.js.map +1 -1
  22. package/dist/server/app.normal.module.d.ts +4 -0
  23. package/dist/server/app.normal.module.js +90 -0
  24. package/dist/server/app.normal.module.js.map +1 -0
  25. package/dist/server/common/config/env.config.d.ts +81 -1
  26. package/dist/server/common/config/env.config.js +52 -2
  27. package/dist/server/common/config/env.config.js.map +1 -1
  28. package/dist/server/common/templates-directory.d.ts +8 -0
  29. package/dist/server/common/templates-directory.js +56 -0
  30. package/dist/server/common/templates-directory.js.map +1 -0
  31. package/dist/server/main.js +58 -7
  32. package/dist/server/main.js.map +1 -1
  33. package/dist/server/modules/chat/dtos/chat.dto.d.ts +2 -2
  34. package/dist/server/modules/core/controllers/health.controller.d.ts +4 -0
  35. package/dist/server/modules/core/controllers/health.controller.js +22 -1
  36. package/dist/server/modules/core/controllers/health.controller.js.map +1 -1
  37. package/dist/server/modules/core/controllers/runtime.controller.d.ts +18 -0
  38. package/dist/server/modules/core/controllers/runtime.controller.js +130 -0
  39. package/dist/server/modules/core/controllers/runtime.controller.js.map +1 -0
  40. package/dist/server/modules/core/core-common.module.d.ts +2 -0
  41. package/dist/server/modules/core/core-common.module.js +24 -0
  42. package/dist/server/modules/core/core-common.module.js.map +1 -0
  43. package/dist/server/modules/core/core-main-health.module.d.ts +2 -0
  44. package/dist/server/modules/core/core-main-health.module.js +32 -0
  45. package/dist/server/modules/core/core-main-health.module.js.map +1 -0
  46. package/dist/server/modules/core/core-normal-health.module.d.ts +2 -0
  47. package/dist/server/modules/core/core-normal-health.module.js +29 -0
  48. package/dist/server/modules/core/core-normal-health.module.js.map +1 -0
  49. package/dist/server/modules/core/core-normal.module.d.ts +2 -0
  50. package/dist/server/modules/core/core-normal.module.js +28 -0
  51. package/dist/server/modules/core/core-normal.module.js.map +1 -0
  52. package/dist/server/modules/core/core.module.js +4 -11
  53. package/dist/server/modules/core/core.module.js.map +1 -1
  54. package/dist/server/modules/core/services/health.service.d.ts +13 -0
  55. package/dist/server/modules/core/services/health.service.js +39 -0
  56. package/dist/server/modules/core/services/health.service.js.map +1 -0
  57. package/dist/server/modules/core/services/main-readiness-checker.service.d.ts +14 -0
  58. package/dist/server/modules/core/services/main-readiness-checker.service.js +82 -0
  59. package/dist/server/modules/core/services/main-readiness-checker.service.js.map +1 -0
  60. package/dist/server/modules/core/services/normal-readiness-checker.service.d.ts +13 -0
  61. package/dist/server/modules/core/services/normal-readiness-checker.service.js +67 -0
  62. package/dist/server/modules/core/services/normal-readiness-checker.service.js.map +1 -0
  63. package/dist/server/modules/core/services/preflight.service.d.ts +1 -0
  64. package/dist/server/modules/core/services/preflight.service.js +18 -1
  65. package/dist/server/modules/core/services/preflight.service.js.map +1 -1
  66. package/dist/server/modules/core/services/provider-mcp-ensure.service.js +8 -0
  67. package/dist/server/modules/core/services/provider-mcp-ensure.service.js.map +1 -1
  68. package/dist/server/modules/epics/epics.module.js +2 -2
  69. package/dist/server/modules/epics/epics.module.js.map +1 -1
  70. package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +39 -0
  71. package/dist/server/modules/events/catalog/claude.hooks.session.started.js +20 -0
  72. package/dist/server/modules/events/catalog/claude.hooks.session.started.js.map +1 -0
  73. package/dist/server/modules/events/catalog/epic.created.d.ts +2 -2
  74. package/dist/server/modules/events/catalog/index.d.ts +38 -4
  75. package/dist/server/modules/events/catalog/index.js +2 -0
  76. package/dist/server/modules/events/catalog/index.js.map +1 -1
  77. package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +2 -2
  78. package/dist/server/modules/events/controllers/event-log.controller.d.ts +1 -1
  79. package/dist/server/modules/events/controllers/event-log.controller.js +11 -9
  80. package/dist/server/modules/events/controllers/event-log.controller.js.map +1 -1
  81. package/dist/server/modules/events/dtos/event-log.dto.d.ts +1 -0
  82. package/dist/server/modules/events/events-domain.module.d.ts +2 -0
  83. package/dist/server/modules/events/events-domain.module.js +42 -0
  84. package/dist/server/modules/events/events-domain.module.js.map +1 -0
  85. package/dist/server/modules/events/events-infra.module.d.ts +2 -0
  86. package/dist/server/modules/events/events-infra.module.js +26 -0
  87. package/dist/server/modules/events/events-infra.module.js.map +1 -0
  88. package/dist/server/modules/events/events.module.js +4 -27
  89. package/dist/server/modules/events/events.module.js.map +1 -1
  90. package/dist/server/modules/events/index.d.ts +2 -0
  91. package/dist/server/modules/events/index.js +2 -0
  92. package/dist/server/modules/events/index.js.map +1 -1
  93. package/dist/server/modules/events/services/event-log.service.d.ts +8 -1
  94. package/dist/server/modules/events/services/event-log.service.js +41 -0
  95. package/dist/server/modules/events/services/event-log.service.js.map +1 -1
  96. package/dist/server/modules/events/subscribers/index.js +2 -0
  97. package/dist/server/modules/events/subscribers/index.js.map +1 -1
  98. package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.d.ts +8 -0
  99. package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.js +48 -0
  100. package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.js.map +1 -0
  101. package/dist/server/modules/git/dtos/git.dto.d.ts +1 -1
  102. package/dist/server/modules/guests/guests.module.js +2 -2
  103. package/dist/server/modules/guests/guests.module.js.map +1 -1
  104. package/dist/server/modules/hooks/controllers/hooks.controller.d.ts +7 -0
  105. package/dist/server/modules/hooks/controllers/hooks.controller.js +49 -0
  106. package/dist/server/modules/hooks/controllers/hooks.controller.js.map +1 -0
  107. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +41 -0
  108. package/dist/server/modules/hooks/dtos/hook-event.dto.js +19 -0
  109. package/dist/server/modules/hooks/dtos/hook-event.dto.js.map +1 -0
  110. package/dist/server/modules/hooks/hooks.module.d.ts +2 -0
  111. package/dist/server/modules/hooks/hooks.module.js +27 -0
  112. package/dist/server/modules/hooks/hooks.module.js.map +1 -0
  113. package/dist/server/modules/hooks/services/hooks-config.service.d.ts +5 -0
  114. package/dist/server/modules/hooks/services/hooks-config.service.js +215 -0
  115. package/dist/server/modules/hooks/services/hooks-config.service.js.map +1 -0
  116. package/dist/server/modules/hooks/services/hooks.service.d.ts +11 -0
  117. package/dist/server/modules/hooks/services/hooks.service.js +83 -0
  118. package/dist/server/modules/hooks/services/hooks.service.js.map +1 -0
  119. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +14 -14
  120. package/dist/server/modules/mcp/mcp.module.js +2 -2
  121. package/dist/server/modules/mcp/mcp.module.js.map +1 -1
  122. package/dist/server/modules/orchestrator/docker/docker.module.d.ts +2 -0
  123. package/dist/server/modules/orchestrator/docker/docker.module.js +22 -0
  124. package/dist/server/modules/orchestrator/docker/docker.module.js.map +1 -0
  125. package/dist/server/modules/orchestrator/docker/index.d.ts +3 -0
  126. package/dist/server/modules/orchestrator/docker/index.js +20 -0
  127. package/dist/server/modules/orchestrator/docker/index.js.map +1 -0
  128. package/dist/server/modules/orchestrator/docker/services/docker.service.d.ts +85 -0
  129. package/dist/server/modules/orchestrator/docker/services/docker.service.js +745 -0
  130. package/dist/server/modules/orchestrator/docker/services/docker.service.js.map +1 -0
  131. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.d.ts +11 -0
  132. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js +181 -0
  133. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js.map +1 -0
  134. package/dist/server/modules/orchestrator/git/controllers/git.controller.d.ts +8 -0
  135. package/dist/server/modules/orchestrator/git/controllers/git.controller.js +38 -0
  136. package/dist/server/modules/orchestrator/git/controllers/git.controller.js.map +1 -0
  137. package/dist/server/modules/orchestrator/git/git.module.d.ts +2 -0
  138. package/dist/server/modules/orchestrator/git/git.module.js +23 -0
  139. package/dist/server/modules/orchestrator/git/git.module.js.map +1 -0
  140. package/dist/server/modules/orchestrator/git/index.d.ts +3 -0
  141. package/dist/server/modules/orchestrator/git/index.js +20 -0
  142. package/dist/server/modules/orchestrator/git/index.js.map +1 -0
  143. package/dist/server/modules/orchestrator/git/services/git-worktree.service.d.ts +83 -0
  144. package/dist/server/modules/orchestrator/git/services/git-worktree.service.js +474 -0
  145. package/dist/server/modules/orchestrator/git/services/git-worktree.service.js.map +1 -0
  146. package/dist/server/modules/orchestrator/index.d.ts +6 -0
  147. package/dist/server/modules/orchestrator/index.js +23 -0
  148. package/dist/server/modules/orchestrator/index.js.map +1 -0
  149. package/dist/server/modules/orchestrator/orchestrator-storage/db/index.d.ts +1 -0
  150. package/dist/server/modules/orchestrator/orchestrator-storage/db/index.js +18 -0
  151. package/dist/server/modules/orchestrator/orchestrator-storage/db/index.js.map +1 -0
  152. package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.d.ts +5 -0
  153. package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.js +10 -0
  154. package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.js.map +1 -0
  155. package/dist/server/modules/orchestrator/orchestrator-storage/index.d.ts +2 -0
  156. package/dist/server/modules/orchestrator/orchestrator-storage/index.js +19 -0
  157. package/dist/server/modules/orchestrator/orchestrator-storage/index.js.map +1 -0
  158. package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.d.ts +2 -0
  159. package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.js +23 -0
  160. package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.js.map +1 -0
  161. package/dist/server/modules/orchestrator/proxy/index.d.ts +2 -0
  162. package/dist/server/modules/orchestrator/proxy/index.js +19 -0
  163. package/dist/server/modules/orchestrator/proxy/index.js.map +1 -0
  164. package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.d.ts +2 -0
  165. package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.js +22 -0
  166. package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.js.map +1 -0
  167. package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.d.ts +18 -0
  168. package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.js +192 -0
  169. package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.js.map +1 -0
  170. package/dist/server/modules/orchestrator/sync/controllers/overview.controller.d.ts +9 -0
  171. package/dist/server/modules/orchestrator/sync/controllers/overview.controller.js +66 -0
  172. package/dist/server/modules/orchestrator/sync/controllers/overview.controller.js.map +1 -0
  173. package/dist/server/modules/orchestrator/sync/dtos/overview.dto.d.ts +52 -0
  174. package/dist/server/modules/orchestrator/sync/dtos/overview.dto.js +3 -0
  175. package/dist/server/modules/orchestrator/sync/dtos/overview.dto.js.map +1 -0
  176. package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.d.ts +5 -0
  177. package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.js +3 -0
  178. package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.js.map +1 -0
  179. package/dist/server/modules/orchestrator/sync/events/task-merge.events.d.ts +4 -0
  180. package/dist/server/modules/orchestrator/sync/events/task-merge.events.js +5 -0
  181. package/dist/server/modules/orchestrator/sync/events/task-merge.events.js.map +1 -0
  182. package/dist/server/modules/orchestrator/sync/index.d.ts +7 -0
  183. package/dist/server/modules/orchestrator/sync/index.js +24 -0
  184. package/dist/server/modules/orchestrator/sync/index.js.map +1 -0
  185. package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.d.ts +31 -0
  186. package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.js +410 -0
  187. package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.js.map +1 -0
  188. package/dist/server/modules/orchestrator/sync/services/task-merge.service.d.ts +44 -0
  189. package/dist/server/modules/orchestrator/sync/services/task-merge.service.js +730 -0
  190. package/dist/server/modules/orchestrator/sync/services/task-merge.service.js.map +1 -0
  191. package/dist/server/modules/orchestrator/sync/sync.module.d.ts +2 -0
  192. package/dist/server/modules/orchestrator/sync/sync.module.js +36 -0
  193. package/dist/server/modules/orchestrator/sync/sync.module.js.map +1 -0
  194. package/dist/server/modules/orchestrator/ui/app/lib/worktrees.d.ts +118 -0
  195. package/dist/server/modules/orchestrator/ui/app/lib/worktrees.js +297 -0
  196. package/dist/server/modules/orchestrator/ui/app/lib/worktrees.js.map +1 -0
  197. package/dist/server/modules/orchestrator/ui/app/orchestrator-app.d.ts +17 -0
  198. package/dist/server/modules/orchestrator/ui/app/orchestrator-app.js +752 -0
  199. package/dist/server/modules/orchestrator/ui/app/orchestrator-app.js.map +1 -0
  200. package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.d.ts +15 -0
  201. package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.js +85 -0
  202. package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.js.map +1 -0
  203. package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.d.ts +29 -0
  204. package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.js +272 -0
  205. package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.js.map +1 -0
  206. package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.d.ts +109 -0
  207. package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.js +57 -0
  208. package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.js.map +1 -0
  209. package/dist/server/modules/orchestrator/worktrees/events/worktree.events.d.ts +4 -0
  210. package/dist/server/modules/orchestrator/worktrees/events/worktree.events.js +5 -0
  211. package/dist/server/modules/orchestrator/worktrees/events/worktree.events.js.map +1 -0
  212. package/dist/server/modules/orchestrator/worktrees/index.d.ts +7 -0
  213. package/dist/server/modules/orchestrator/worktrees/index.js +24 -0
  214. package/dist/server/modules/orchestrator/worktrees/index.js.map +1 -0
  215. package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.d.ts +18 -0
  216. package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.js +198 -0
  217. package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.js.map +1 -0
  218. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.d.ts +87 -0
  219. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js +1380 -0
  220. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js.map +1 -0
  221. package/dist/server/modules/orchestrator/worktrees/worktree-validation.d.ts +4 -0
  222. package/dist/server/modules/orchestrator/worktrees/worktree-validation.js +43 -0
  223. package/dist/server/modules/orchestrator/worktrees/worktree-validation.js.map +1 -0
  224. package/dist/server/modules/orchestrator/worktrees/worktrees.module.d.ts +2 -0
  225. package/dist/server/modules/orchestrator/worktrees/worktrees.module.js +44 -0
  226. package/dist/server/modules/orchestrator/worktrees/worktrees.module.js.map +1 -0
  227. package/dist/server/modules/orchestrator/worktrees/worktrees.store.d.ts +38 -0
  228. package/dist/server/modules/orchestrator/worktrees/worktrees.store.js +5 -0
  229. package/dist/server/modules/orchestrator/worktrees/worktrees.store.js.map +1 -0
  230. package/dist/server/modules/profiles/dto.d.ts +4 -4
  231. package/dist/server/modules/projects/controllers/projects.controller.d.ts +13 -3
  232. package/dist/server/modules/projects/controllers/projects.controller.js +55 -7
  233. package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
  234. package/dist/server/modules/projects/projects.module.js +3 -2
  235. package/dist/server/modules/projects/projects.module.js.map +1 -1
  236. package/dist/server/modules/projects/services/main-project-bootstrap.service.d.ts +11 -0
  237. package/dist/server/modules/projects/services/main-project-bootstrap.service.js +76 -0
  238. package/dist/server/modules/projects/services/main-project-bootstrap.service.js.map +1 -0
  239. package/dist/server/modules/projects/services/projects.service.d.ts +8 -0
  240. package/dist/server/modules/projects/services/projects.service.js +115 -37
  241. package/dist/server/modules/projects/services/projects.service.js.map +1 -1
  242. package/dist/server/modules/providers/adapters/gemini.adapter.d.ts +1 -1
  243. package/dist/server/modules/providers/adapters/gemini.adapter.js +6 -4
  244. package/dist/server/modules/providers/adapters/gemini.adapter.js.map +1 -1
  245. package/dist/server/modules/providers/controllers/providers.controller.d.ts +3 -0
  246. package/dist/server/modules/providers/controllers/providers.controller.js +28 -0
  247. package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
  248. package/dist/server/modules/providers/providers.module.js +2 -2
  249. package/dist/server/modules/providers/providers.module.js.map +1 -1
  250. package/dist/server/modules/registry/services/unified-template.service.js +6 -18
  251. package/dist/server/modules/registry/services/unified-template.service.js.map +1 -1
  252. package/dist/server/modules/reviews/dtos/review.dto.d.ts +4 -4
  253. package/dist/server/modules/reviews/reviews.module.js +2 -2
  254. package/dist/server/modules/reviews/reviews.module.js.map +1 -1
  255. package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.d.ts +3 -0
  256. package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.js +89 -0
  257. package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.js.map +1 -0
  258. package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.d.ts +3 -0
  259. package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.js +60 -0
  260. package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.js.map +1 -0
  261. package/dist/server/modules/seeders/services/data-seeder.service.js +4 -0
  262. package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
  263. package/dist/server/modules/sessions/services/sessions.service.d.ts +3 -1
  264. package/dist/server/modules/sessions/services/sessions.service.js +79 -22
  265. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  266. package/dist/server/modules/sessions/sessions.module.js +6 -4
  267. package/dist/server/modules/sessions/sessions.module.js.map +1 -1
  268. package/dist/server/modules/sessions/utils/claude-config.d.ts +6 -2
  269. package/dist/server/modules/sessions/utils/claude-config.js +19 -6
  270. package/dist/server/modules/sessions/utils/claude-config.js.map +1 -1
  271. package/dist/server/modules/settings/dtos/settings.dto.d.ts +4 -4
  272. package/dist/server/modules/skills/adapters/github-skill-source.base.d.ts +2 -5
  273. package/dist/server/modules/skills/adapters/github-skill-source.base.js +31 -100
  274. package/dist/server/modules/skills/adapters/github-skill-source.base.js.map +1 -1
  275. package/dist/server/modules/skills/adapters/local-skill-source.adapter.d.ts +16 -0
  276. package/dist/server/modules/skills/adapters/local-skill-source.adapter.js +265 -0
  277. package/dist/server/modules/skills/adapters/local-skill-source.adapter.js.map +1 -0
  278. package/dist/server/modules/skills/adapters/skill-parsing.utils.d.ts +32 -0
  279. package/dist/server/modules/skills/adapters/skill-parsing.utils.js +169 -0
  280. package/dist/server/modules/skills/adapters/skill-parsing.utils.js.map +1 -0
  281. package/dist/server/modules/skills/controllers/local-sources.controller.d.ts +12 -0
  282. package/dist/server/modules/skills/controllers/local-sources.controller.js +71 -0
  283. package/dist/server/modules/skills/controllers/local-sources.controller.js.map +1 -0
  284. package/dist/server/modules/skills/controllers/skills.controller.d.ts +11 -1
  285. package/dist/server/modules/skills/controllers/skills.controller.js +35 -3
  286. package/dist/server/modules/skills/controllers/skills.controller.js.map +1 -1
  287. package/dist/server/modules/skills/dtos/community-sources.dto.d.ts +2 -2
  288. package/dist/server/modules/skills/dtos/local-sources.dto.d.ts +42 -0
  289. package/dist/server/modules/skills/dtos/local-sources.dto.js +30 -0
  290. package/dist/server/modules/skills/dtos/local-sources.dto.js.map +1 -0
  291. package/dist/server/modules/skills/dtos/skill.dto.d.ts +23 -7
  292. package/dist/server/modules/skills/dtos/skill.dto.js +7 -1
  293. package/dist/server/modules/skills/dtos/skill.dto.js.map +1 -1
  294. package/dist/server/modules/skills/services/community-sources.service.d.ts +8 -1
  295. package/dist/server/modules/skills/services/community-sources.service.js +62 -3
  296. package/dist/server/modules/skills/services/community-sources.service.js.map +1 -1
  297. package/dist/server/modules/skills/services/local-sources.service.d.ts +20 -0
  298. package/dist/server/modules/skills/services/local-sources.service.js +206 -0
  299. package/dist/server/modules/skills/services/local-sources.service.js.map +1 -0
  300. package/dist/server/modules/skills/services/skill-source-registry.service.d.ts +11 -0
  301. package/dist/server/modules/skills/services/skill-source-registry.service.js +99 -3
  302. package/dist/server/modules/skills/services/skill-source-registry.service.js.map +1 -1
  303. package/dist/server/modules/skills/services/skill-sync.service.d.ts +4 -0
  304. package/dist/server/modules/skills/services/skill-sync.service.js +93 -0
  305. package/dist/server/modules/skills/services/skill-sync.service.js.map +1 -1
  306. package/dist/server/modules/skills/services/skills.service.d.ts +14 -2
  307. package/dist/server/modules/skills/services/skills.service.js +125 -23
  308. package/dist/server/modules/skills/services/skills.service.js.map +1 -1
  309. package/dist/server/modules/skills/skills.module.js +4 -1
  310. package/dist/server/modules/skills/skills.module.js.map +1 -1
  311. package/dist/server/modules/storage/db/schema.d.ts +1115 -102
  312. package/dist/server/modules/storage/db/schema.js +81 -1
  313. package/dist/server/modules/storage/db/schema.js.map +1 -1
  314. package/dist/server/modules/storage/db/sqlite-json.d.ts +2 -0
  315. package/dist/server/modules/storage/db/sqlite-json.js +8 -0
  316. package/dist/server/modules/storage/db/sqlite-json.js.map +1 -0
  317. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +17 -2
  318. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  319. package/dist/server/modules/storage/local/local-storage.service.d.ts +19 -2
  320. package/dist/server/modules/storage/local/local-storage.service.js +313 -5
  321. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  322. package/dist/server/modules/storage/models/domain.models.d.ts +10 -0
  323. package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +16 -16
  324. package/dist/server/modules/subscribers/events/event-fields-catalog.js +18 -0
  325. package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -1
  326. package/dist/server/modules/subscribers/subscribers.module.js +2 -2
  327. package/dist/server/modules/subscribers/subscribers.module.js.map +1 -1
  328. package/dist/server/modules/terminal/gateways/terminal.gateway.js +7 -2
  329. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  330. package/dist/server/modules/terminal/services/tmux.service.d.ts +9 -0
  331. package/dist/server/modules/terminal/services/tmux.service.js +55 -5
  332. package/dist/server/modules/terminal/services/tmux.service.js.map +1 -1
  333. package/dist/server/modules/terminal/terminal.module.js +2 -2
  334. package/dist/server/modules/terminal/terminal.module.js.map +1 -1
  335. package/dist/server/modules/watchers/watchers.module.js +2 -2
  336. package/dist/server/modules/watchers/watchers.module.js.map +1 -1
  337. package/dist/server/templates/3-agents-dev.json +662 -0
  338. package/dist/server/templates/{dev-loop.json → 5-agents-dev.json} +174 -100
  339. package/dist/server/test-setup.js +7 -0
  340. package/dist/server/test-setup.js.map +1 -1
  341. package/dist/server/tsconfig.tsbuildinfo +1 -1
  342. package/dist/server/ui/assets/ReviewDetailPage-CZZQtaY7.js +1 -0
  343. package/dist/server/ui/assets/{ReviewsPage-C98ST0lf.js → ReviewsPage-C209GLQG.js} +1 -1
  344. package/dist/server/ui/assets/index-DvRuLfpZ.css +32 -0
  345. package/dist/server/ui/assets/index-Th1FDtKR.js +977 -0
  346. package/dist/server/ui/assets/{useReviewSubscription-CmLuF45Z.js → useReviewSubscription-Dcabsa78.js} +1 -1
  347. package/dist/server/ui/index.html +2 -2
  348. package/dist/templates/3-agents-dev.json +662 -0
  349. package/dist/templates/{dev-loop.json → 5-agents-dev.json} +174 -100
  350. package/package.json +19 -1
  351. package/dist/server/ui/assets/ReviewDetailPage-D13dH7Wh.js +0 -6
  352. package/dist/server/ui/assets/index-C8Dc1yQf.js +0 -945
  353. package/dist/server/ui/assets/index-DZkJ40z9.css +0 -32
@@ -0,0 +1,11 @@
1
+ import { OnApplicationBootstrap } from '@nestjs/common';
2
+ import { StorageService } from '../../storage/interfaces/storage.interface';
3
+ export declare class MainProjectBootstrapService implements OnApplicationBootstrap {
4
+ private readonly storage;
5
+ private mainProjectId;
6
+ constructor(storage: StorageService);
7
+ onApplicationBootstrap(): Promise<void>;
8
+ getMainProjectId(): string | null;
9
+ ensureMainProjectId(): Promise<string | null>;
10
+ private deriveMainProjectName;
11
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MainProjectBootstrapService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const path_1 = require("path");
18
+ const env_config_1 = require("../../../common/config/env.config");
19
+ const logger_1 = require("../../../common/logging/logger");
20
+ const storage_interface_1 = require("../../storage/interfaces/storage.interface");
21
+ const logger = (0, logger_1.createLogger)('MainProjectBootstrapService');
22
+ let MainProjectBootstrapService = class MainProjectBootstrapService {
23
+ constructor(storage) {
24
+ this.storage = storage;
25
+ this.mainProjectId = null;
26
+ }
27
+ async onApplicationBootstrap() {
28
+ await this.ensureMainProjectId();
29
+ }
30
+ getMainProjectId() {
31
+ return this.mainProjectId;
32
+ }
33
+ async ensureMainProjectId() {
34
+ if (this.mainProjectId) {
35
+ return this.mainProjectId;
36
+ }
37
+ const env = (0, env_config_1.getEnvConfig)();
38
+ if (env.DEVCHAIN_MODE !== 'main') {
39
+ this.mainProjectId = null;
40
+ return null;
41
+ }
42
+ const repoRoot = (0, path_1.resolve)(env.REPO_ROOT ?? process.cwd());
43
+ const projects = await this.storage.listProjects({ limit: 1000, offset: 0 });
44
+ const byRepoRoot = projects.items.find((project) => (0, path_1.resolve)(project.rootPath) === repoRoot);
45
+ if (byRepoRoot) {
46
+ this.mainProjectId = byRepoRoot.id;
47
+ logger.info({ projectId: byRepoRoot.id, projectName: byRepoRoot.name, repoRoot }, 'Using existing main project for current repository root');
48
+ return this.mainProjectId;
49
+ }
50
+ if (projects.total > 0 && projects.items.length > 0) {
51
+ this.mainProjectId = projects.items[0].id;
52
+ logger.info({ projectId: this.mainProjectId, repoRoot }, 'Using existing project as main merge target');
53
+ return this.mainProjectId;
54
+ }
55
+ const created = await this.storage.createProject({
56
+ name: this.deriveMainProjectName(repoRoot),
57
+ description: 'Auto-created main project for merged worktree epics',
58
+ rootPath: repoRoot,
59
+ isTemplate: false,
60
+ });
61
+ this.mainProjectId = created.id;
62
+ logger.info({ projectId: created.id, projectName: created.name, repoRoot }, 'Created main project bootstrap target');
63
+ return this.mainProjectId;
64
+ }
65
+ deriveMainProjectName(repoRoot) {
66
+ const name = (0, path_1.basename)(repoRoot).trim();
67
+ return name.length > 0 ? name : 'Main';
68
+ }
69
+ };
70
+ exports.MainProjectBootstrapService = MainProjectBootstrapService;
71
+ exports.MainProjectBootstrapService = MainProjectBootstrapService = __decorate([
72
+ (0, common_1.Injectable)(),
73
+ __param(0, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
74
+ __metadata("design:paramtypes", [Object])
75
+ ], MainProjectBootstrapService);
76
+ //# sourceMappingURL=main-project-bootstrap.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-project-bootstrap.service.js","sourceRoot":"","sources":["../../../../src/modules/projects/services/main-project-bootstrap.service.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface CreateFromTemplateInput {
13
13
  name: string;
14
14
  description?: string | null;
15
15
  rootPath: string;
16
+ projectId?: string;
16
17
  slug?: string;
17
18
  version?: string | null;
18
19
  templatePath?: string;
@@ -137,6 +138,10 @@ export declare class ProjectsService {
137
138
  position: number;
138
139
  priority: number;
139
140
  }[];
141
+ providerSettings?: {
142
+ name: string;
143
+ autoCompactThreshold: number | null;
144
+ }[] | undefined;
140
145
  projectSettings?: {
141
146
  initialPromptTitle?: string;
142
147
  autoCleanStatusLabels?: string[];
@@ -319,6 +324,9 @@ export declare class ProjectsService {
319
324
  name: string;
320
325
  };
321
326
  familySlug?: string | null;
327
+ providerConfigs?: Array<{
328
+ providerName: string;
329
+ }>;
322
330
  }>, templateAgents: Array<{
323
331
  id?: string;
324
332
  name: string;
@@ -23,9 +23,9 @@ const logger_1 = require("../../../common/logging/logger");
23
23
  const error_types_1 = require("../../../common/errors/error-types");
24
24
  const path_1 = require("path");
25
25
  const fs_1 = require("fs");
26
- const env_config_1 = require("../../../common/config/env.config");
27
26
  const shared_1 = require("@devchain/shared");
28
27
  const unified_template_service_1 = require("../../registry/services/unified-template.service");
28
+ const templates_directory_1 = require("../../../common/templates-directory");
29
29
  const logger = (0, logger_1.createLogger)('ProjectsService');
30
30
  let ProjectsService = class ProjectsService {
31
31
  constructor(storage, sessions, settings, watchersService, watcherRunner, unifiedTemplateService) {
@@ -37,24 +37,12 @@ let ProjectsService = class ProjectsService {
37
37
  this.unifiedTemplateService = unifiedTemplateService;
38
38
  }
39
39
  findTemplatesDirectory() {
40
- const env = (0, env_config_1.getEnvConfig)();
41
- if (env.TEMPLATES_DIR) {
42
- if ((0, fs_1.existsSync)(env.TEMPLATES_DIR)) {
43
- logger.debug({ path: env.TEMPLATES_DIR }, 'Using TEMPLATES_DIR from environment');
44
- return env.TEMPLATES_DIR;
45
- }
46
- logger.warn({ path: env.TEMPLATES_DIR }, 'TEMPLATES_DIR set but path does not exist');
47
- }
48
- const possibleTemplatePaths = [
49
- (0, path_1.join)(__dirname, '..', '..', '..', '..', 'templates'),
50
- (0, path_1.join)(process.cwd(), 'apps', 'local-app', 'templates'),
51
- ];
52
- for (const path of possibleTemplatePaths) {
53
- if ((0, fs_1.existsSync)(path)) {
54
- logger.debug({ path }, 'Found templates directory');
55
- return path;
56
- }
40
+ const templatesDir = (0, templates_directory_1.resolveTemplatesDirectory)(__dirname);
41
+ if (templatesDir) {
42
+ logger.debug({ path: templatesDir }, 'Found templates directory');
43
+ return templatesDir;
57
44
  }
45
+ logger.warn('Templates directory not found in known locations');
58
46
  return null;
59
47
  }
60
48
  async listTemplates() {
@@ -143,26 +131,48 @@ let ProjectsService = class ProjectsService {
143
131
  }
144
132
  const familyResult = await this.computeFamilyAlternatives(payload.profiles, payload.agents);
145
133
  const needsMapping = familyResult.alternatives.some((alt) => !alt.defaultProviderAvailable);
146
- if (needsMapping && !input.familyProviderMappings) {
134
+ let effectiveFamilyProviderMappings = input.familyProviderMappings;
135
+ if (needsMapping && !effectiveFamilyProviderMappings) {
136
+ const autoMappings = {};
137
+ let canAutoSelect = familyResult.canImport;
138
+ for (const alt of familyResult.alternatives) {
139
+ if (!alt.defaultProviderAvailable) {
140
+ if (alt.availableProviders.length === 1) {
141
+ autoMappings[alt.familySlug] = alt.availableProviders[0];
142
+ }
143
+ else {
144
+ canAutoSelect = false;
145
+ }
146
+ }
147
+ }
148
+ if (canAutoSelect) {
149
+ effectiveFamilyProviderMappings = autoMappings;
150
+ logger.info({ autoMappings }, 'Auto-selected provider mappings for single-alternative families');
151
+ }
152
+ else {
153
+ return {
154
+ success: false,
155
+ providerMappingRequired: {
156
+ missingProviders: familyResult.missingProviders,
157
+ familyAlternatives: familyResult.alternatives,
158
+ canImport: familyResult.canImport,
159
+ },
160
+ };
161
+ }
162
+ }
163
+ if (!familyResult.canImport) {
147
164
  return {
148
165
  success: false,
149
166
  providerMappingRequired: {
150
167
  missingProviders: familyResult.missingProviders,
151
168
  familyAlternatives: familyResult.alternatives,
152
- canImport: familyResult.canImport,
169
+ canImport: false,
153
170
  },
154
171
  };
155
172
  }
156
- if (!familyResult.canImport) {
157
- throw new error_types_1.ValidationError('Cannot import: some profile families have no available providers', {
158
- hint: 'Install the required providers or use a different template',
159
- missingProviders: familyResult.missingProviders,
160
- familyAlternatives: familyResult.alternatives,
161
- });
162
- }
163
173
  const providerNames = new Set((payload.profiles ?? []).map((p) => p.provider.name.trim().toLowerCase()));
164
174
  const { available } = await this.resolveProviders(providerNames);
165
- const selectedProfilesByFamily = this.selectProfilesForFamilies(payload.profiles, payload.agents, input.familyProviderMappings, available);
175
+ const selectedProfilesByFamily = this.selectProfilesForFamilies(payload.profiles, payload.agents, effectiveFamilyProviderMappings, available);
166
176
  const templatePayload = {
167
177
  prompts: payload.prompts.map((p) => ({
168
178
  id: p.id,
@@ -205,12 +215,21 @@ let ProjectsService = class ProjectsService {
205
215
  })),
206
216
  initialPrompt: payload.initialPrompt,
207
217
  };
208
- const result = await this.storage.createProjectWithTemplate({
209
- name: input.name,
210
- description: input.description ?? null,
211
- rootPath: input.rootPath,
212
- isTemplate: false,
213
- }, templatePayload);
218
+ const result = input.projectId
219
+ ? await this.storage.createProjectWithTemplate({
220
+ name: input.name,
221
+ description: input.description ?? null,
222
+ rootPath: input.rootPath,
223
+ isTemplate: false,
224
+ }, templatePayload, {
225
+ projectId: input.projectId,
226
+ })
227
+ : await this.storage.createProjectWithTemplate({
228
+ name: input.name,
229
+ description: input.description ?? null,
230
+ rootPath: input.rootPath,
231
+ isTemplate: false,
232
+ }, templatePayload);
214
233
  const { agentNameToId: agentNameToNewId, profileNameToId: profileNameToNewId } = this.buildNameToIdMaps(templatePayload, result.mappings);
215
234
  const configLookupMap = new Map();
216
235
  for (const prof of selectedProfilesByFamily.profilesToCreate) {
@@ -274,7 +293,19 @@ let ProjectsService = class ProjectsService {
274
293
  logger.debug({ agentName: a.name, providerConfigId }, 'Updated agent with providerConfigId');
275
294
  }
276
295
  else {
277
- logger.warn({ agentName: a.name, providerConfigName: agentWithConfig.providerConfigName }, 'Provider config not found for agent in createFromTemplate');
296
+ const fallbackKey = Array.from(configLookupMap.keys()).find((key) => key.startsWith(`${newProfileId}:`));
297
+ if (fallbackKey) {
298
+ const fallbackConfigId = configLookupMap.get(fallbackKey);
299
+ await this.storage.updateAgent(newAgentId, { providerConfigId: fallbackConfigId });
300
+ logger.warn({
301
+ agentName: a.name,
302
+ providerConfigName: agentWithConfig.providerConfigName,
303
+ fallbackConfigId,
304
+ }, 'Agent providerConfigName unavailable, fell back to first available config');
305
+ }
306
+ else {
307
+ logger.warn({ agentName: a.name, providerConfigName: agentWithConfig.providerConfigName }, 'No provider config available for agent in createFromTemplate');
308
+ }
278
309
  }
279
310
  }
280
311
  for (const [newProfileId, { profileName, configNames }] of profilesWithProviderConfigs) {
@@ -282,8 +313,13 @@ let ProjectsService = class ProjectsService {
282
313
  for (const existingConfig of existingConfigs) {
283
314
  const isFromProviderConfigs = configNames.has(existingConfig.name.trim().toLowerCase());
284
315
  if (!isFromProviderConfigs && existingConfig.name === profileName) {
285
- await this.storage.deleteProfileProviderConfig(existingConfig.id);
286
- logger.debug({ profileName, configId: existingConfig.id }, 'Deleted duplicate config created by storage layer');
316
+ try {
317
+ await this.storage.deleteProfileProviderConfig(existingConfig.id);
318
+ logger.debug({ profileName, configId: existingConfig.id }, 'Deleted duplicate config created by storage layer');
319
+ }
320
+ catch {
321
+ logger.debug({ profileName, configId: existingConfig.id }, 'Skipped deleting default config — still referenced by agents');
322
+ }
287
323
  }
288
324
  }
289
325
  }
@@ -588,6 +624,15 @@ let ProjectsService = class ProjectsService {
588
624
  position: s.position,
589
625
  priority: s.priority,
590
626
  }));
627
+ const providerSettings = [];
628
+ for (const prov of providersMap.values()) {
629
+ if (prov.autoCompactThreshold != null) {
630
+ providerSettings.push({
631
+ name: prov.name,
632
+ autoCompactThreshold: prov.autoCompactThreshold,
633
+ });
634
+ }
635
+ }
591
636
  const existingMetadata = this.settings.getProjectTemplateMetadata(projectId);
592
637
  const manifest = {
593
638
  slug: existingMetadata?.templateSlug || this.slugify(project.name),
@@ -609,6 +654,7 @@ let ProjectsService = class ProjectsService {
609
654
  ? { promptId: initialPrompt.id, title: initialPrompt.title }
610
655
  : null,
611
656
  ...(Object.keys(projectSettings).length > 0 && { projectSettings }),
657
+ ...(providerSettings.length > 0 && { providerSettings }),
612
658
  watchers,
613
659
  subscribers,
614
660
  ...(presetsOverride !== undefined
@@ -1120,6 +1166,27 @@ let ProjectsService = class ProjectsService {
1120
1166
  await this.settings.clearProjectPresets(input.projectId);
1121
1167
  logger.info({ projectId: input.projectId }, 'Presets cleared during import (template has none)');
1122
1168
  }
1169
+ const importedProviderSettings = payload.providerSettings;
1170
+ if (importedProviderSettings && importedProviderSettings.length > 0) {
1171
+ const allProviders = await this.storage.listProviders();
1172
+ const providersByName = new Map(allProviders.items.map((p) => [p.name.trim().toLowerCase(), p]));
1173
+ for (const setting of importedProviderSettings) {
1174
+ const localProvider = providersByName.get(setting.name.trim().toLowerCase());
1175
+ if (!localProvider) {
1176
+ continue;
1177
+ }
1178
+ if (localProvider.autoCompactThreshold != null) {
1179
+ logger.debug({ providerName: setting.name, existing: localProvider.autoCompactThreshold }, 'Skipping providerSettings import: local threshold already set');
1180
+ continue;
1181
+ }
1182
+ if (setting.autoCompactThreshold != null) {
1183
+ await this.storage.updateProvider(localProvider.id, {
1184
+ autoCompactThreshold: setting.autoCompactThreshold,
1185
+ });
1186
+ logger.info({ providerName: setting.name, threshold: setting.autoCompactThreshold }, 'Applied autoCompactThreshold from template import');
1187
+ }
1188
+ }
1189
+ }
1123
1190
  return {
1124
1191
  success: true,
1125
1192
  mode: 'replace',
@@ -1207,6 +1274,17 @@ let ProjectsService = class ProjectsService {
1207
1274
  familyMap.set(providerName, []);
1208
1275
  }
1209
1276
  familyMap.get(providerName).push(prof.name);
1277
+ if (prof.providerConfigs) {
1278
+ for (const config of prof.providerConfigs) {
1279
+ const configProviderName = config.providerName.trim().toLowerCase();
1280
+ if (!familyMap.has(configProviderName)) {
1281
+ familyMap.set(configProviderName, []);
1282
+ }
1283
+ if (!familyMap.get(configProviderName).includes(prof.name)) {
1284
+ familyMap.get(configProviderName).push(prof.name);
1285
+ }
1286
+ }
1287
+ }
1210
1288
  }
1211
1289
  const alternatives = [];
1212
1290
  const allMissingProviders = new Set();