@mc1global/opencode-jarvis 0.1.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 (415) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +171 -0
  3. package/dist/application/context-memory/dtos.d.ts +100 -0
  4. package/dist/application/context-memory/dtos.d.ts.map +1 -0
  5. package/dist/application/context-memory/dtos.js +11 -0
  6. package/dist/application/context-memory/dtos.js.map +1 -0
  7. package/dist/application/context-memory/note-use-cases.d.ts +22 -0
  8. package/dist/application/context-memory/note-use-cases.d.ts.map +1 -0
  9. package/dist/application/context-memory/note-use-cases.js +76 -0
  10. package/dist/application/context-memory/note-use-cases.js.map +1 -0
  11. package/dist/application/context-memory/session-use-cases.d.ts +23 -0
  12. package/dist/application/context-memory/session-use-cases.d.ts.map +1 -0
  13. package/dist/application/context-memory/session-use-cases.js +63 -0
  14. package/dist/application/context-memory/session-use-cases.js.map +1 -0
  15. package/dist/application/context-memory/todo-use-cases.d.ts +25 -0
  16. package/dist/application/context-memory/todo-use-cases.d.ts.map +1 -0
  17. package/dist/application/context-memory/todo-use-cases.js +100 -0
  18. package/dist/application/context-memory/todo-use-cases.js.map +1 -0
  19. package/dist/application/domain-map/dtos.d.ts +58 -0
  20. package/dist/application/domain-map/dtos.d.ts.map +1 -0
  21. package/dist/application/domain-map/dtos.js +11 -0
  22. package/dist/application/domain-map/dtos.js.map +1 -0
  23. package/dist/application/domain-map/use-cases.d.ts +64 -0
  24. package/dist/application/domain-map/use-cases.d.ts.map +1 -0
  25. package/dist/application/domain-map/use-cases.js +217 -0
  26. package/dist/application/domain-map/use-cases.js.map +1 -0
  27. package/dist/application/environment/dtos.d.ts +74 -0
  28. package/dist/application/environment/dtos.d.ts.map +1 -0
  29. package/dist/application/environment/dtos.js +10 -0
  30. package/dist/application/environment/dtos.js.map +1 -0
  31. package/dist/application/environment/use-cases.d.ts +29 -0
  32. package/dist/application/environment/use-cases.d.ts.map +1 -0
  33. package/dist/application/environment/use-cases.js +232 -0
  34. package/dist/application/environment/use-cases.js.map +1 -0
  35. package/dist/application/governance/validation-use-cases.d.ts +45 -0
  36. package/dist/application/governance/validation-use-cases.d.ts.map +1 -0
  37. package/dist/application/governance/validation-use-cases.js +51 -0
  38. package/dist/application/governance/validation-use-cases.js.map +1 -0
  39. package/dist/application/kanban/board-use-cases.d.ts +45 -0
  40. package/dist/application/kanban/board-use-cases.d.ts.map +1 -0
  41. package/dist/application/kanban/board-use-cases.js +124 -0
  42. package/dist/application/kanban/board-use-cases.js.map +1 -0
  43. package/dist/application/kanban/card-use-cases.d.ts +32 -0
  44. package/dist/application/kanban/card-use-cases.d.ts.map +1 -0
  45. package/dist/application/kanban/card-use-cases.js +204 -0
  46. package/dist/application/kanban/card-use-cases.js.map +1 -0
  47. package/dist/application/kanban/dtos.d.ts +165 -0
  48. package/dist/application/kanban/dtos.d.ts.map +1 -0
  49. package/dist/application/kanban/dtos.js +11 -0
  50. package/dist/application/kanban/dtos.js.map +1 -0
  51. package/dist/application/kanban/sprint-use-cases.d.ts +34 -0
  52. package/dist/application/kanban/sprint-use-cases.d.ts.map +1 -0
  53. package/dist/application/kanban/sprint-use-cases.js +243 -0
  54. package/dist/application/kanban/sprint-use-cases.js.map +1 -0
  55. package/dist/application/rag/dtos.d.ts +113 -0
  56. package/dist/application/rag/dtos.d.ts.map +1 -0
  57. package/dist/application/rag/dtos.js +11 -0
  58. package/dist/application/rag/dtos.js.map +1 -0
  59. package/dist/application/rag/oracle-use-cases.d.ts +30 -0
  60. package/dist/application/rag/oracle-use-cases.d.ts.map +1 -0
  61. package/dist/application/rag/oracle-use-cases.js +91 -0
  62. package/dist/application/rag/oracle-use-cases.js.map +1 -0
  63. package/dist/application/rag/use-cases.d.ts +34 -0
  64. package/dist/application/rag/use-cases.d.ts.map +1 -0
  65. package/dist/application/rag/use-cases.js +234 -0
  66. package/dist/application/rag/use-cases.js.map +1 -0
  67. package/dist/application/token-metrics/dtos.d.ts +126 -0
  68. package/dist/application/token-metrics/dtos.d.ts.map +1 -0
  69. package/dist/application/token-metrics/dtos.js +11 -0
  70. package/dist/application/token-metrics/dtos.js.map +1 -0
  71. package/dist/application/token-metrics/tracking-use-cases.d.ts +33 -0
  72. package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -0
  73. package/dist/application/token-metrics/tracking-use-cases.js +220 -0
  74. package/dist/application/token-metrics/tracking-use-cases.js.map +1 -0
  75. package/dist/application/vault/dtos.d.ts +91 -0
  76. package/dist/application/vault/dtos.d.ts.map +1 -0
  77. package/dist/application/vault/dtos.js +11 -0
  78. package/dist/application/vault/dtos.js.map +1 -0
  79. package/dist/application/vault/use-cases.d.ts +30 -0
  80. package/dist/application/vault/use-cases.d.ts.map +1 -0
  81. package/dist/application/vault/use-cases.js +307 -0
  82. package/dist/application/vault/use-cases.js.map +1 -0
  83. package/dist/application/vault/vault-manager.d.ts +47 -0
  84. package/dist/application/vault/vault-manager.d.ts.map +1 -0
  85. package/dist/application/vault/vault-manager.js +272 -0
  86. package/dist/application/vault/vault-manager.js.map +1 -0
  87. package/dist/application/workspace-registry/dtos.d.ts +91 -0
  88. package/dist/application/workspace-registry/dtos.d.ts.map +1 -0
  89. package/dist/application/workspace-registry/dtos.js +11 -0
  90. package/dist/application/workspace-registry/dtos.js.map +1 -0
  91. package/dist/application/workspace-registry/use-cases.d.ts +29 -0
  92. package/dist/application/workspace-registry/use-cases.d.ts.map +1 -0
  93. package/dist/application/workspace-registry/use-cases.js +249 -0
  94. package/dist/application/workspace-registry/use-cases.js.map +1 -0
  95. package/dist/domain/context-memory/entities.d.ts +123 -0
  96. package/dist/domain/context-memory/entities.d.ts.map +1 -0
  97. package/dist/domain/context-memory/entities.js +229 -0
  98. package/dist/domain/context-memory/entities.js.map +1 -0
  99. package/dist/domain/context-memory/repositories.d.ts +46 -0
  100. package/dist/domain/context-memory/repositories.d.ts.map +1 -0
  101. package/dist/domain/context-memory/repositories.js +2 -0
  102. package/dist/domain/context-memory/repositories.js.map +1 -0
  103. package/dist/domain/context-memory/services.d.ts +62 -0
  104. package/dist/domain/context-memory/services.d.ts.map +1 -0
  105. package/dist/domain/context-memory/services.js +162 -0
  106. package/dist/domain/context-memory/services.js.map +1 -0
  107. package/dist/domain/context-memory/value-objects.d.ts +65 -0
  108. package/dist/domain/context-memory/value-objects.d.ts.map +1 -0
  109. package/dist/domain/context-memory/value-objects.js +105 -0
  110. package/dist/domain/context-memory/value-objects.js.map +1 -0
  111. package/dist/domain/domain-map/repositories.d.ts +126 -0
  112. package/dist/domain/domain-map/repositories.d.ts.map +1 -0
  113. package/dist/domain/domain-map/repositories.js +2 -0
  114. package/dist/domain/domain-map/repositories.js.map +1 -0
  115. package/dist/domain/domain-map/services.d.ts +108 -0
  116. package/dist/domain/domain-map/services.d.ts.map +1 -0
  117. package/dist/domain/domain-map/services.js +335 -0
  118. package/dist/domain/domain-map/services.js.map +1 -0
  119. package/dist/domain/domain-map/value-objects.d.ts +186 -0
  120. package/dist/domain/domain-map/value-objects.d.ts.map +1 -0
  121. package/dist/domain/domain-map/value-objects.js +215 -0
  122. package/dist/domain/domain-map/value-objects.js.map +1 -0
  123. package/dist/domain/environment/entities.d.ts +93 -0
  124. package/dist/domain/environment/entities.d.ts.map +1 -0
  125. package/dist/domain/environment/entities.js +207 -0
  126. package/dist/domain/environment/entities.js.map +1 -0
  127. package/dist/domain/environment/renderers.d.ts +30 -0
  128. package/dist/domain/environment/renderers.d.ts.map +1 -0
  129. package/dist/domain/environment/renderers.js +139 -0
  130. package/dist/domain/environment/renderers.js.map +1 -0
  131. package/dist/domain/environment/repositories.d.ts +73 -0
  132. package/dist/domain/environment/repositories.d.ts.map +1 -0
  133. package/dist/domain/environment/repositories.js +16 -0
  134. package/dist/domain/environment/repositories.js.map +1 -0
  135. package/dist/domain/environment/services.d.ts +62 -0
  136. package/dist/domain/environment/services.d.ts.map +1 -0
  137. package/dist/domain/environment/services.js +282 -0
  138. package/dist/domain/environment/services.js.map +1 -0
  139. package/dist/domain/environment/value-objects.d.ts +127 -0
  140. package/dist/domain/environment/value-objects.d.ts.map +1 -0
  141. package/dist/domain/environment/value-objects.js +179 -0
  142. package/dist/domain/environment/value-objects.js.map +1 -0
  143. package/dist/domain/governance/policies.d.ts +42 -0
  144. package/dist/domain/governance/policies.d.ts.map +1 -0
  145. package/dist/domain/governance/policies.js +304 -0
  146. package/dist/domain/governance/policies.js.map +1 -0
  147. package/dist/domain/governance/services.d.ts +38 -0
  148. package/dist/domain/governance/services.d.ts.map +1 -0
  149. package/dist/domain/governance/services.js +42 -0
  150. package/dist/domain/governance/services.js.map +1 -0
  151. package/dist/domain/kanban/entities.d.ts +105 -0
  152. package/dist/domain/kanban/entities.d.ts.map +1 -0
  153. package/dist/domain/kanban/entities.js +211 -0
  154. package/dist/domain/kanban/entities.js.map +1 -0
  155. package/dist/domain/kanban/grooming.d.ts +40 -0
  156. package/dist/domain/kanban/grooming.d.ts.map +1 -0
  157. package/dist/domain/kanban/grooming.js +50 -0
  158. package/dist/domain/kanban/grooming.js.map +1 -0
  159. package/dist/domain/kanban/repositories.d.ts +41 -0
  160. package/dist/domain/kanban/repositories.d.ts.map +1 -0
  161. package/dist/domain/kanban/repositories.js +2 -0
  162. package/dist/domain/kanban/repositories.js.map +1 -0
  163. package/dist/domain/kanban/services.d.ts +49 -0
  164. package/dist/domain/kanban/services.d.ts.map +1 -0
  165. package/dist/domain/kanban/services.js +154 -0
  166. package/dist/domain/kanban/services.js.map +1 -0
  167. package/dist/domain/kanban/sprint.d.ts +103 -0
  168. package/dist/domain/kanban/sprint.d.ts.map +1 -0
  169. package/dist/domain/kanban/sprint.js +192 -0
  170. package/dist/domain/kanban/sprint.js.map +1 -0
  171. package/dist/domain/kanban/value-objects.d.ts +91 -0
  172. package/dist/domain/kanban/value-objects.d.ts.map +1 -0
  173. package/dist/domain/kanban/value-objects.js +167 -0
  174. package/dist/domain/kanban/value-objects.js.map +1 -0
  175. package/dist/domain/rag/repositories.d.ts +152 -0
  176. package/dist/domain/rag/repositories.d.ts.map +1 -0
  177. package/dist/domain/rag/repositories.js +2 -0
  178. package/dist/domain/rag/repositories.js.map +1 -0
  179. package/dist/domain/rag/services.d.ts +57 -0
  180. package/dist/domain/rag/services.d.ts.map +1 -0
  181. package/dist/domain/rag/services.js +224 -0
  182. package/dist/domain/rag/services.js.map +1 -0
  183. package/dist/domain/rag/value-objects.d.ts +118 -0
  184. package/dist/domain/rag/value-objects.d.ts.map +1 -0
  185. package/dist/domain/rag/value-objects.js +114 -0
  186. package/dist/domain/rag/value-objects.js.map +1 -0
  187. package/dist/domain/shared/value-objects.d.ts +56 -0
  188. package/dist/domain/shared/value-objects.d.ts.map +1 -0
  189. package/dist/domain/shared/value-objects.js +89 -0
  190. package/dist/domain/shared/value-objects.js.map +1 -0
  191. package/dist/domain/token-metrics/entities.d.ts +90 -0
  192. package/dist/domain/token-metrics/entities.d.ts.map +1 -0
  193. package/dist/domain/token-metrics/entities.js +115 -0
  194. package/dist/domain/token-metrics/entities.js.map +1 -0
  195. package/dist/domain/token-metrics/repositories.d.ts +93 -0
  196. package/dist/domain/token-metrics/repositories.d.ts.map +1 -0
  197. package/dist/domain/token-metrics/repositories.js +2 -0
  198. package/dist/domain/token-metrics/repositories.js.map +1 -0
  199. package/dist/domain/token-metrics/value-objects.d.ts +81 -0
  200. package/dist/domain/token-metrics/value-objects.d.ts.map +1 -0
  201. package/dist/domain/token-metrics/value-objects.js +144 -0
  202. package/dist/domain/token-metrics/value-objects.js.map +1 -0
  203. package/dist/domain/vault/canvas.d.ts +70 -0
  204. package/dist/domain/vault/canvas.d.ts.map +1 -0
  205. package/dist/domain/vault/canvas.js +70 -0
  206. package/dist/domain/vault/canvas.js.map +1 -0
  207. package/dist/domain/vault/document.d.ts +71 -0
  208. package/dist/domain/vault/document.d.ts.map +1 -0
  209. package/dist/domain/vault/document.js +244 -0
  210. package/dist/domain/vault/document.js.map +1 -0
  211. package/dist/domain/vault/repositories.d.ts +35 -0
  212. package/dist/domain/vault/repositories.d.ts.map +1 -0
  213. package/dist/domain/vault/repositories.js +2 -0
  214. package/dist/domain/vault/repositories.js.map +1 -0
  215. package/dist/domain/vault/section.d.ts +33 -0
  216. package/dist/domain/vault/section.d.ts.map +1 -0
  217. package/dist/domain/vault/section.js +39 -0
  218. package/dist/domain/vault/section.js.map +1 -0
  219. package/dist/domain/vault/services.d.ts +48 -0
  220. package/dist/domain/vault/services.d.ts.map +1 -0
  221. package/dist/domain/vault/services.js +249 -0
  222. package/dist/domain/vault/services.js.map +1 -0
  223. package/dist/domain/vault/table.d.ts +58 -0
  224. package/dist/domain/vault/table.d.ts.map +1 -0
  225. package/dist/domain/vault/table.js +204 -0
  226. package/dist/domain/vault/table.js.map +1 -0
  227. package/dist/domain/vault/timeline.d.ts +53 -0
  228. package/dist/domain/vault/timeline.d.ts.map +1 -0
  229. package/dist/domain/vault/timeline.js +214 -0
  230. package/dist/domain/vault/timeline.js.map +1 -0
  231. package/dist/domain/vault/value-objects.d.ts +45 -0
  232. package/dist/domain/vault/value-objects.d.ts.map +1 -0
  233. package/dist/domain/vault/value-objects.js +89 -0
  234. package/dist/domain/vault/value-objects.js.map +1 -0
  235. package/dist/domain/workspace-registry/entities.d.ts +57 -0
  236. package/dist/domain/workspace-registry/entities.d.ts.map +1 -0
  237. package/dist/domain/workspace-registry/entities.js +148 -0
  238. package/dist/domain/workspace-registry/entities.js.map +1 -0
  239. package/dist/domain/workspace-registry/repositories.d.ts +57 -0
  240. package/dist/domain/workspace-registry/repositories.d.ts.map +1 -0
  241. package/dist/domain/workspace-registry/repositories.js +12 -0
  242. package/dist/domain/workspace-registry/repositories.js.map +1 -0
  243. package/dist/domain/workspace-registry/services.d.ts +56 -0
  244. package/dist/domain/workspace-registry/services.d.ts.map +1 -0
  245. package/dist/domain/workspace-registry/services.js +283 -0
  246. package/dist/domain/workspace-registry/services.js.map +1 -0
  247. package/dist/domain/workspace-registry/value-objects.d.ts +113 -0
  248. package/dist/domain/workspace-registry/value-objects.d.ts.map +1 -0
  249. package/dist/domain/workspace-registry/value-objects.js +235 -0
  250. package/dist/domain/workspace-registry/value-objects.js.map +1 -0
  251. package/dist/hooks/context-compacting.d.ts +35 -0
  252. package/dist/hooks/context-compacting.d.ts.map +1 -0
  253. package/dist/hooks/context-compacting.js +48 -0
  254. package/dist/hooks/context-compacting.js.map +1 -0
  255. package/dist/hooks/event-handlers.d.ts +39 -0
  256. package/dist/hooks/event-handlers.d.ts.map +1 -0
  257. package/dist/hooks/event-handlers.js +75 -0
  258. package/dist/hooks/event-handlers.js.map +1 -0
  259. package/dist/hooks/guardrails.d.ts +33 -0
  260. package/dist/hooks/guardrails.d.ts.map +1 -0
  261. package/dist/hooks/guardrails.js +22 -0
  262. package/dist/hooks/guardrails.js.map +1 -0
  263. package/dist/hooks/shell-env.d.ts +28 -0
  264. package/dist/hooks/shell-env.d.ts.map +1 -0
  265. package/dist/hooks/shell-env.js +17 -0
  266. package/dist/hooks/shell-env.js.map +1 -0
  267. package/dist/index.d.ts +16 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +349 -0
  270. package/dist/index.js.map +1 -0
  271. package/dist/infrastructure/context-memory/note-repository.d.ts +26 -0
  272. package/dist/infrastructure/context-memory/note-repository.d.ts.map +1 -0
  273. package/dist/infrastructure/context-memory/note-repository.js +87 -0
  274. package/dist/infrastructure/context-memory/note-repository.js.map +1 -0
  275. package/dist/infrastructure/context-memory/search-repository.d.ts +20 -0
  276. package/dist/infrastructure/context-memory/search-repository.d.ts.map +1 -0
  277. package/dist/infrastructure/context-memory/search-repository.js +44 -0
  278. package/dist/infrastructure/context-memory/search-repository.js.map +1 -0
  279. package/dist/infrastructure/context-memory/session-repository.d.ts +26 -0
  280. package/dist/infrastructure/context-memory/session-repository.d.ts.map +1 -0
  281. package/dist/infrastructure/context-memory/session-repository.js +79 -0
  282. package/dist/infrastructure/context-memory/session-repository.js.map +1 -0
  283. package/dist/infrastructure/context-memory/todo-repository.d.ts +26 -0
  284. package/dist/infrastructure/context-memory/todo-repository.d.ts.map +1 -0
  285. package/dist/infrastructure/context-memory/todo-repository.js +105 -0
  286. package/dist/infrastructure/context-memory/todo-repository.js.map +1 -0
  287. package/dist/infrastructure/database/sqlite-adapter.d.ts +60 -0
  288. package/dist/infrastructure/database/sqlite-adapter.d.ts.map +1 -0
  289. package/dist/infrastructure/database/sqlite-adapter.js +93 -0
  290. package/dist/infrastructure/database/sqlite-adapter.js.map +1 -0
  291. package/dist/infrastructure/domain-map/llm-analyzer.d.ts +60 -0
  292. package/dist/infrastructure/domain-map/llm-analyzer.d.ts.map +1 -0
  293. package/dist/infrastructure/domain-map/llm-analyzer.js +249 -0
  294. package/dist/infrastructure/domain-map/llm-analyzer.js.map +1 -0
  295. package/dist/infrastructure/domain-map/lsp-adapter.d.ts +61 -0
  296. package/dist/infrastructure/domain-map/lsp-adapter.d.ts.map +1 -0
  297. package/dist/infrastructure/domain-map/lsp-adapter.js +210 -0
  298. package/dist/infrastructure/domain-map/lsp-adapter.js.map +1 -0
  299. package/dist/infrastructure/domain-map/lsp-configs.d.ts +53 -0
  300. package/dist/infrastructure/domain-map/lsp-configs.d.ts.map +1 -0
  301. package/dist/infrastructure/domain-map/lsp-configs.js +274 -0
  302. package/dist/infrastructure/domain-map/lsp-configs.js.map +1 -0
  303. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts +132 -0
  304. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts.map +1 -0
  305. package/dist/infrastructure/domain-map/lsp-json-rpc.js +320 -0
  306. package/dist/infrastructure/domain-map/lsp-json-rpc.js.map +1 -0
  307. package/dist/infrastructure/domain-map/project-scanner.d.ts +43 -0
  308. package/dist/infrastructure/domain-map/project-scanner.d.ts.map +1 -0
  309. package/dist/infrastructure/domain-map/project-scanner.js +193 -0
  310. package/dist/infrastructure/domain-map/project-scanner.js.map +1 -0
  311. package/dist/infrastructure/environment/environment-repository.d.ts +33 -0
  312. package/dist/infrastructure/environment/environment-repository.d.ts.map +1 -0
  313. package/dist/infrastructure/environment/environment-repository.js +161 -0
  314. package/dist/infrastructure/environment/environment-repository.js.map +1 -0
  315. package/dist/infrastructure/environment/scanner-adapter.d.ts +23 -0
  316. package/dist/infrastructure/environment/scanner-adapter.d.ts.map +1 -0
  317. package/dist/infrastructure/environment/scanner-adapter.js +102 -0
  318. package/dist/infrastructure/environment/scanner-adapter.js.map +1 -0
  319. package/dist/infrastructure/kanban/card-repository.d.ts +41 -0
  320. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -0
  321. package/dist/infrastructure/kanban/card-repository.js +185 -0
  322. package/dist/infrastructure/kanban/card-repository.js.map +1 -0
  323. package/dist/infrastructure/kanban/sprint-repository.d.ts +40 -0
  324. package/dist/infrastructure/kanban/sprint-repository.d.ts.map +1 -0
  325. package/dist/infrastructure/kanban/sprint-repository.js +186 -0
  326. package/dist/infrastructure/kanban/sprint-repository.js.map +1 -0
  327. package/dist/infrastructure/rag/file-discovery.d.ts +19 -0
  328. package/dist/infrastructure/rag/file-discovery.d.ts.map +1 -0
  329. package/dist/infrastructure/rag/file-discovery.js +201 -0
  330. package/dist/infrastructure/rag/file-discovery.js.map +1 -0
  331. package/dist/infrastructure/rag/ollama-embeddings.d.ts +18 -0
  332. package/dist/infrastructure/rag/ollama-embeddings.d.ts.map +1 -0
  333. package/dist/infrastructure/rag/ollama-embeddings.js +54 -0
  334. package/dist/infrastructure/rag/ollama-embeddings.js.map +1 -0
  335. package/dist/infrastructure/rag/text-splitter.d.ts +19 -0
  336. package/dist/infrastructure/rag/text-splitter.d.ts.map +1 -0
  337. package/dist/infrastructure/rag/text-splitter.js +38 -0
  338. package/dist/infrastructure/rag/text-splitter.js.map +1 -0
  339. package/dist/infrastructure/rag/vectra-adapter.d.ts +38 -0
  340. package/dist/infrastructure/rag/vectra-adapter.d.ts.map +1 -0
  341. package/dist/infrastructure/rag/vectra-adapter.js +275 -0
  342. package/dist/infrastructure/rag/vectra-adapter.js.map +1 -0
  343. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts +29 -0
  344. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts.map +1 -0
  345. package/dist/infrastructure/token-metrics/token-metrics-repository.js +254 -0
  346. package/dist/infrastructure/token-metrics/token-metrics-repository.js.map +1 -0
  347. package/dist/infrastructure/vault/markdown-parser.d.ts +35 -0
  348. package/dist/infrastructure/vault/markdown-parser.d.ts.map +1 -0
  349. package/dist/infrastructure/vault/markdown-parser.js +145 -0
  350. package/dist/infrastructure/vault/markdown-parser.js.map +1 -0
  351. package/dist/infrastructure/vault/vault-fs-adapter.d.ts +17 -0
  352. package/dist/infrastructure/vault/vault-fs-adapter.d.ts.map +1 -0
  353. package/dist/infrastructure/vault/vault-fs-adapter.js +105 -0
  354. package/dist/infrastructure/vault/vault-fs-adapter.js.map +1 -0
  355. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts +27 -0
  356. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts.map +1 -0
  357. package/dist/infrastructure/workspace-registry/dependency-repository.js +89 -0
  358. package/dist/infrastructure/workspace-registry/dependency-repository.js.map +1 -0
  359. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts +28 -0
  360. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts.map +1 -0
  361. package/dist/infrastructure/workspace-registry/workspace-repository.js +108 -0
  362. package/dist/infrastructure/workspace-registry/workspace-repository.js.map +1 -0
  363. package/dist/tools/agent-tools.d.ts +14 -0
  364. package/dist/tools/agent-tools.d.ts.map +1 -0
  365. package/dist/tools/agent-tools.js +238 -0
  366. package/dist/tools/agent-tools.js.map +1 -0
  367. package/dist/tools/context-memory-tools.d.ts +16 -0
  368. package/dist/tools/context-memory-tools.d.ts.map +1 -0
  369. package/dist/tools/context-memory-tools.js +242 -0
  370. package/dist/tools/context-memory-tools.js.map +1 -0
  371. package/dist/tools/data-tools.d.ts +3 -0
  372. package/dist/tools/data-tools.d.ts.map +1 -0
  373. package/dist/tools/data-tools.js +383 -0
  374. package/dist/tools/data-tools.js.map +1 -0
  375. package/dist/tools/domain-map-tools.d.ts +41 -0
  376. package/dist/tools/domain-map-tools.d.ts.map +1 -0
  377. package/dist/tools/domain-map-tools.js +134 -0
  378. package/dist/tools/domain-map-tools.js.map +1 -0
  379. package/dist/tools/environment-tools.d.ts +85 -0
  380. package/dist/tools/environment-tools.d.ts.map +1 -0
  381. package/dist/tools/environment-tools.js +223 -0
  382. package/dist/tools/environment-tools.js.map +1 -0
  383. package/dist/tools/governance-tools.d.ts +7 -0
  384. package/dist/tools/governance-tools.d.ts.map +1 -0
  385. package/dist/tools/governance-tools.js +73 -0
  386. package/dist/tools/governance-tools.js.map +1 -0
  387. package/dist/tools/kanban-board-tools.d.ts +11 -0
  388. package/dist/tools/kanban-board-tools.d.ts.map +1 -0
  389. package/dist/tools/kanban-board-tools.js +354 -0
  390. package/dist/tools/kanban-board-tools.js.map +1 -0
  391. package/dist/tools/kanban-card-tools.d.ts +11 -0
  392. package/dist/tools/kanban-card-tools.d.ts.map +1 -0
  393. package/dist/tools/kanban-card-tools.js +407 -0
  394. package/dist/tools/kanban-card-tools.js.map +1 -0
  395. package/dist/tools/rag-tools.d.ts +10 -0
  396. package/dist/tools/rag-tools.d.ts.map +1 -0
  397. package/dist/tools/rag-tools.js +279 -0
  398. package/dist/tools/rag-tools.js.map +1 -0
  399. package/dist/tools/token-metrics-tools.d.ts +98 -0
  400. package/dist/tools/token-metrics-tools.d.ts.map +1 -0
  401. package/dist/tools/token-metrics-tools.js +287 -0
  402. package/dist/tools/token-metrics-tools.js.map +1 -0
  403. package/dist/tools/vault-manage-tool.d.ts +7 -0
  404. package/dist/tools/vault-manage-tool.d.ts.map +1 -0
  405. package/dist/tools/vault-manage-tool.js +193 -0
  406. package/dist/tools/vault-manage-tool.js.map +1 -0
  407. package/dist/tools/vault-tools.d.ts +7 -0
  408. package/dist/tools/vault-tools.d.ts.map +1 -0
  409. package/dist/tools/vault-tools.js +348 -0
  410. package/dist/tools/vault-tools.js.map +1 -0
  411. package/dist/tools/workspace-registry-tools.d.ts +93 -0
  412. package/dist/tools/workspace-registry-tools.d.ts.map +1 -0
  413. package/dist/tools/workspace-registry-tools.js +217 -0
  414. package/dist/tools/workspace-registry-tools.js.map +1 -0
  415. package/package.json +59 -0
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Environment Management - Renderers
3
+ *
4
+ * Pure formatting functions for environment display and MCP instruction generation.
5
+ * Extracted from EnvironmentDomainService to respect the 500-line file limit.
6
+ *
7
+ * These are stateless functions that take an Environment entity and produce
8
+ * formatted strings for tool output.
9
+ *
10
+ * SOLID: SRP - rendering/formatting only
11
+ */
12
+ // ── MCP Instruction Renderers ────────────────────────────────────────
13
+ /**
14
+ * Generates container-use MCP tool instructions for creating an environment.
15
+ * The agent should execute these instructions via the container-use MCP server.
16
+ */
17
+ export function renderCreateInstructions(environment) {
18
+ const lines = [
19
+ "## Container-Use Environment Creation Instructions",
20
+ "",
21
+ `Use the **container-use MCP tools** to create environment \`${environment.name.value}\`:`,
22
+ "",
23
+ "1. Call `environment_create` with:",
24
+ ` - name: \`${environment.name.value}\``,
25
+ ];
26
+ const config = environment.containerConfig;
27
+ if (config.baseImage !== undefined) {
28
+ lines.push(` - base_image: \`${config.baseImage}\``);
29
+ }
30
+ lines.push("", "2. After creation, call `environment_run_cmd` to set up the environment:");
31
+ if (config.setupCommands.length > 0) {
32
+ lines.push(" Setup commands:");
33
+ for (const cmd of config.setupCommands) {
34
+ lines.push(` - \`${cmd}\``);
35
+ }
36
+ }
37
+ if (config.installCommands.length > 0) {
38
+ lines.push(" Install commands:");
39
+ for (const cmd of config.installCommands) {
40
+ lines.push(` - \`${cmd}\``);
41
+ }
42
+ }
43
+ if (Object.keys(config.envVars).length > 0) {
44
+ lines.push("", "3. Set environment variables via `environment_config`:");
45
+ for (const [key, val] of Object.entries(config.envVars)) {
46
+ lines.push(` - ${key}=${val}`);
47
+ }
48
+ }
49
+ lines.push("", `Branch: \`${environment.branchName}\``, `Purpose: ${environment.purpose}`);
50
+ if (environment.cardId !== undefined) {
51
+ lines.push(`Linked Card: ${environment.cardId}`);
52
+ }
53
+ lines.push("", "After the environment is created and verified, call `env-status` with", `action \`activate\` to mark ${environment.id.value} as active.`);
54
+ return lines.join("\n");
55
+ }
56
+ /**
57
+ * Generates instructions for merging an environment back.
58
+ */
59
+ export function renderMergeInstructions(environment) {
60
+ const lines = [
61
+ "## Container-Use Environment Merge Instructions",
62
+ "",
63
+ `Merge environment \`${environment.name.value}\` (branch \`${environment.branchName}\`):`,
64
+ "",
65
+ `Strategy: **${environment.mergeStrategy}**`,
66
+ "",
67
+ ];
68
+ switch (environment.mergeStrategy) {
69
+ case "squash":
70
+ lines.push("1. Use container-use CLI `merge` command (or git squash merge)", ` - \`container-use merge ${environment.name.value}\``);
71
+ break;
72
+ case "merge-commit":
73
+ lines.push("1. Use container-use CLI `merge` command", ` - \`container-use merge ${environment.name.value}\``);
74
+ break;
75
+ case "rebase":
76
+ lines.push("1. Use container-use CLI `checkout` then rebase", ` - \`container-use checkout ${environment.name.value}\``, " - Then rebase onto main branch");
77
+ break;
78
+ }
79
+ lines.push("", "2. After successful merge, call `env-status` with", ` action \`complete-merge\` to mark ${environment.id.value} as merged.`, "", "3. If merge conflicts occur, resolve them and call `env-status` with", ` action \`revert-merge\` to return ${environment.id.value} to active status.`);
80
+ return lines.join("\n");
81
+ }
82
+ // ── Display Renderers ────────────────────────────────────────────────
83
+ /**
84
+ * Renders a summary of an environment for display.
85
+ */
86
+ export function renderEnvironmentSummary(environment) {
87
+ const lines = [
88
+ `Environment: ${environment.id.value}`,
89
+ `Name: ${environment.name.value}`,
90
+ `Branch: ${environment.branchName}`,
91
+ `Status: ${environment.status}`,
92
+ `Purpose: ${environment.purpose}`,
93
+ `Description: ${environment.description}`,
94
+ `Merge Strategy: ${environment.mergeStrategy}`,
95
+ ];
96
+ if (environment.cardId !== undefined) {
97
+ lines.push(`Linked Card: ${environment.cardId}`);
98
+ }
99
+ const config = environment.containerConfig;
100
+ if (config.baseImage !== undefined) {
101
+ lines.push(`Base Image: ${config.baseImage}`);
102
+ }
103
+ if (config.setupCommands.length > 0) {
104
+ lines.push(`Setup Commands: ${config.setupCommands.join("; ")}`);
105
+ }
106
+ if (config.installCommands.length > 0) {
107
+ lines.push(`Install Commands: ${config.installCommands.join("; ")}`);
108
+ }
109
+ if (Object.keys(config.envVars).length > 0) {
110
+ const vars = Object.entries(config.envVars)
111
+ .map(([k, v]) => `${k}=${v}`)
112
+ .join(", ");
113
+ lines.push(`Env Vars: ${vars}`);
114
+ }
115
+ if (environment.mergeCommitSha !== undefined) {
116
+ lines.push(`Merge Commit: ${environment.mergeCommitSha}`);
117
+ }
118
+ if (environment.errorMessage !== undefined) {
119
+ lines.push(`Error: ${environment.errorMessage}`);
120
+ }
121
+ lines.push("", `Created: ${environment.createdAt.toISO()}`, `Updated: ${environment.updatedAt.toISO()}`);
122
+ return lines.join("\n");
123
+ }
124
+ /**
125
+ * Renders a compact list of environments for display.
126
+ */
127
+ export function renderEnvironmentList(environments) {
128
+ if (environments.length === 0) {
129
+ return "No environments found.";
130
+ }
131
+ const lines = [`Environments (${environments.length}):`, ""];
132
+ for (const env of environments) {
133
+ const cardInfo = env.cardId !== undefined ? ` [${env.cardId}]` : "";
134
+ const errorInfo = env.errorMessage !== undefined ? ` (${env.errorMessage})` : "";
135
+ lines.push(` ${env.id.value} | ${env.name.value} | ${env.status} | ${env.purpose}${cardInfo}${errorInfo}`);
136
+ }
137
+ return lines.join("\n");
138
+ }
139
+ //# sourceMappingURL=renderers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../src/domain/environment/renderers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Environment Management - Repository Ports
3
+ *
4
+ * Interfaces for environment persistence and external integrations.
5
+ * Implementations live in the infrastructure layer.
6
+ *
7
+ * Two port types:
8
+ * - EnvironmentRepository: Persistence for environment metadata (local jarvis.db)
9
+ * - EnvironmentScannerPort: Narrow adapter wrapping domain-map's ProjectScannerPort
10
+ *
11
+ * DDD: Repository interfaces in domain, implementations in infrastructure
12
+ * SOLID: DIP - domain depends on abstractions, not concrete persistence
13
+ * SOLID: ISP - separate interfaces for persistence vs scanning
14
+ */
15
+ import type { WorkspaceId } from "../shared/value-objects.js";
16
+ import type { Environment } from "./entities.js";
17
+ import type { EnvironmentId, EnvironmentName, EnvironmentStatus } from "./value-objects.js";
18
+ /**
19
+ * Persistence port for the Environment aggregate root.
20
+ * Stored in the per-project database ({project}/.jarvis/jarvis.db).
21
+ */
22
+ export interface EnvironmentRepository {
23
+ /** Persist a new or updated environment. */
24
+ save(environment: Environment): Promise<void>;
25
+ /** Find environment by its sequential ID. */
26
+ findById(id: EnvironmentId): Promise<Environment | null>;
27
+ /** Find environment by its container-use name. */
28
+ findByName(name: EnvironmentName): Promise<Environment | null>;
29
+ /** List all environments for the current workspace. */
30
+ findByWorkspace(workspaceId: WorkspaceId): Promise<readonly Environment[]>;
31
+ /** List environments filtered by status. */
32
+ findByStatus(workspaceId: WorkspaceId, status: EnvironmentStatus): Promise<readonly Environment[]>;
33
+ /** Find all environments linked to a specific kanban card. */
34
+ findByCard(cardId: string): Promise<readonly Environment[]>;
35
+ /** Find all active (non-terminal) environments. */
36
+ findActive(workspaceId: WorkspaceId): Promise<readonly Environment[]>;
37
+ /** Delete an environment record. */
38
+ delete(id: EnvironmentId): Promise<void>;
39
+ /** Check if an environment with this ID exists. */
40
+ exists(id: EnvironmentId): Promise<boolean>;
41
+ /** Check if an environment with this name exists. */
42
+ existsByName(name: EnvironmentName): Promise<boolean>;
43
+ /** Get the next sequence number for EnvironmentId generation. */
44
+ nextSequence(workspaceId: WorkspaceId): Promise<number>;
45
+ }
46
+ /**
47
+ * Lightweight project info used for environment initialization.
48
+ * This is a narrow subset of what domain-map's ProjectScannerPort provides.
49
+ * Keeps the environment bounded context decoupled from domain-map internals.
50
+ */
51
+ export interface EnvironmentProjectInfo {
52
+ readonly primaryLanguage: string;
53
+ readonly frameworks: readonly string[];
54
+ readonly totalFiles: number;
55
+ readonly totalLines: number;
56
+ }
57
+ /**
58
+ * Port for scanning project directories to detect language and frameworks.
59
+ * Used by env-init to auto-detect container configuration.
60
+ *
61
+ * Infrastructure implements this as a thin adapter wrapping
62
+ * domain-map's FileProjectScanner behind this narrow interface.
63
+ * This prevents a domain-layer cross-context dependency.
64
+ */
65
+ export interface EnvironmentScannerPort {
66
+ /**
67
+ * Scan a project directory and return lightweight project info.
68
+ * @param directory - Absolute path to the project root
69
+ * @returns Project info for container configuration auto-detection
70
+ */
71
+ scanProject(directory: string): Promise<EnvironmentProjectInfo>;
72
+ }
73
+ //# sourceMappingURL=repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../../src/domain/environment/repositories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAI5B;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEzD,kDAAkD;IAClD,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE/D,uDAAuD;IACvD,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAE3E,4CAA4C;IAC5C,YAAY,CACV,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAEnC,8DAA8D;IAC9D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAE5D,mDAAmD;IACnD,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAEtE,oCAAoC;IACpC,MAAM,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,mDAAmD;IACnD,MAAM,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C,qDAAqD;IACrD,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,iEAAiE;IACjE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzD;AAID;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACjE"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Environment Management - Repository Ports
3
+ *
4
+ * Interfaces for environment persistence and external integrations.
5
+ * Implementations live in the infrastructure layer.
6
+ *
7
+ * Two port types:
8
+ * - EnvironmentRepository: Persistence for environment metadata (local jarvis.db)
9
+ * - EnvironmentScannerPort: Narrow adapter wrapping domain-map's ProjectScannerPort
10
+ *
11
+ * DDD: Repository interfaces in domain, implementations in infrastructure
12
+ * SOLID: DIP - domain depends on abstractions, not concrete persistence
13
+ * SOLID: ISP - separate interfaces for persistence vs scanning
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../src/domain/environment/repositories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Environment Management - Domain Services
3
+ *
4
+ * Business logic for environment lifecycle management, card linkage,
5
+ * and container configuration. The plugin manages metadata only —
6
+ * the agent invokes container-use MCP tools for actual container operations.
7
+ *
8
+ * Key responsibilities:
9
+ * - Create/track environment records linked to kanban cards
10
+ * - Validate state transitions
11
+ * - Generate MCP tool instructions for the agent
12
+ * - Render environment summaries
13
+ *
14
+ * DDD: Domain Service (stateless, operates on entities via repositories)
15
+ * SOLID: SRP - environment orchestration logic only
16
+ * SOLID: DIP - depends on repository interfaces, not implementations
17
+ */
18
+ import type { Result } from "../shared/value-objects.js";
19
+ import { Environment } from "./entities.js";
20
+ import type { EnvironmentPurpose, MergeStrategy } from "./value-objects.js";
21
+ import type { EnvironmentRepository } from "./repositories.js";
22
+ export declare function suggestBaseImage(language: string): string | undefined;
23
+ export declare class EnvironmentDomainService {
24
+ private readonly environmentRepo;
25
+ constructor(environmentRepo: EnvironmentRepository);
26
+ /**
27
+ * Creates a new environment record.
28
+ * Does NOT create the actual container — returns instructions for the agent.
29
+ */
30
+ createEnvironment(workspaceId: string, name: string, purpose: EnvironmentPurpose, description: string, options?: {
31
+ readonly cardId?: string;
32
+ readonly baseImage?: string;
33
+ readonly setupCommands?: readonly string[];
34
+ readonly installCommands?: readonly string[];
35
+ readonly envVars?: Readonly<Record<string, string>>;
36
+ readonly mergeStrategy?: MergeStrategy;
37
+ }): Promise<Result<Environment>>;
38
+ activateEnvironment(envId: string): Promise<Result<Environment>>;
39
+ failEnvironment(envId: string, errorMessage: string): Promise<Result<Environment>>;
40
+ startMerge(envId: string): Promise<Result<Environment>>;
41
+ completeMerge(envId: string, commitSha?: string): Promise<Result<Environment>>;
42
+ revertMerge(envId: string, reason: string): Promise<Result<Environment>>;
43
+ startDelete(envId: string): Promise<Result<Environment>>;
44
+ markDeleted(envId: string): Promise<Result<Environment>>;
45
+ linkCard(envId: string, cardId: string): Promise<Result<Environment>>;
46
+ unlinkCard(envId: string): Promise<Result<Environment>>;
47
+ getEnvironment(envId: string): Promise<Result<Environment>>;
48
+ getEnvironmentByName(name: string): Promise<Result<Environment>>;
49
+ listEnvironments(workspaceId: string): Promise<readonly Environment[]>;
50
+ listActiveEnvironments(workspaceId: string): Promise<readonly Environment[]>;
51
+ findByCard(cardId: string): Promise<readonly Environment[]>;
52
+ /** Generates container-use MCP tool instructions for creating an environment. */
53
+ renderCreateInstructions(environment: Environment): string;
54
+ /** Generates instructions for merging an environment back. */
55
+ renderMergeInstructions(environment: Environment): string;
56
+ /** Renders a summary of an environment for display. */
57
+ renderEnvironmentSummary(environment: Environment): string;
58
+ /** Renders a compact list of environments for display. */
59
+ renderEnvironmentList(environments: readonly Environment[]): string;
60
+ private findEnvironment;
61
+ }
62
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/domain/environment/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Environment Management - Domain Services
3
+ *
4
+ * Business logic for environment lifecycle management, card linkage,
5
+ * and container configuration. The plugin manages metadata only —
6
+ * the agent invokes container-use MCP tools for actual container operations.
7
+ *
8
+ * Key responsibilities:
9
+ * - Create/track environment records linked to kanban cards
10
+ * - Validate state transitions
11
+ * - Generate MCP tool instructions for the agent
12
+ * - Render environment summaries
13
+ *
14
+ * DDD: Domain Service (stateless, operates on entities via repositories)
15
+ * SOLID: SRP - environment orchestration logic only
16
+ * SOLID: DIP - depends on repository interfaces, not implementations
17
+ */
18
+ import { WorkspaceId, ok, fail } from "../shared/value-objects.js";
19
+ import { Environment } from "./entities.js";
20
+ import { EnvironmentId, EnvironmentName, createContainerConfig, } from "./value-objects.js";
21
+ import { renderCreateInstructions, renderMergeInstructions, renderEnvironmentSummary, renderEnvironmentList, } from "./renderers.js";
22
+ // ── Base Image Mapping ───────────────────────────────────────────────
23
+ /**
24
+ * Suggests a base Docker image based on the primary language.
25
+ * These are container-use defaults — the user can override.
26
+ */
27
+ const BASE_IMAGE_MAP = {
28
+ typescript: "node:20-slim",
29
+ javascript: "node:20-slim",
30
+ python: "python:3.12-slim",
31
+ swift: "swift:5.9-slim",
32
+ java: "eclipse-temurin:21-jdk",
33
+ kotlin: "eclipse-temurin:21-jdk",
34
+ csharp: "mcr.microsoft.com/dotnet/sdk:8.0",
35
+ go: "golang:1.22-alpine",
36
+ rust: "rust:1.77-slim",
37
+ c: "gcc:13-bookworm",
38
+ cpp: "gcc:13-bookworm",
39
+ dart: "dart:stable",
40
+ ruby: "ruby:3.3-slim",
41
+ php: "php:8.3-cli",
42
+ elixir: "elixir:1.16-slim",
43
+ };
44
+ export function suggestBaseImage(language) {
45
+ return BASE_IMAGE_MAP[language.toLowerCase()];
46
+ }
47
+ // ── Environment Domain Service ───────────────────────────────────────
48
+ export class EnvironmentDomainService {
49
+ environmentRepo;
50
+ constructor(environmentRepo) {
51
+ this.environmentRepo = environmentRepo;
52
+ }
53
+ // ── Creation ─────────────────────────────────────────────────────
54
+ /**
55
+ * Creates a new environment record.
56
+ * Does NOT create the actual container — returns instructions for the agent.
57
+ */
58
+ async createEnvironment(workspaceId, name, purpose, description, options) {
59
+ const wsId = WorkspaceId.create(workspaceId);
60
+ // Validate environment name
61
+ let envName;
62
+ try {
63
+ envName = EnvironmentName.create(name);
64
+ }
65
+ catch (e) {
66
+ return fail(e.message);
67
+ }
68
+ // Check for duplicate name
69
+ const existsByName = await this.environmentRepo.existsByName(envName);
70
+ if (existsByName) {
71
+ return fail(`Environment with name "${name}" already exists`);
72
+ }
73
+ // Generate next sequential ID
74
+ const sequence = await this.environmentRepo.nextSequence(wsId);
75
+ const envId = EnvironmentId.create(sequence);
76
+ const containerConfig = createContainerConfig({
77
+ ...(options?.baseImage !== undefined
78
+ ? { baseImage: options.baseImage }
79
+ : {}),
80
+ ...(options?.setupCommands !== undefined
81
+ ? { setupCommands: options.setupCommands }
82
+ : {}),
83
+ ...(options?.installCommands !== undefined
84
+ ? { installCommands: options.installCommands }
85
+ : {}),
86
+ ...(options?.envVars !== undefined ? { envVars: options.envVars } : {}),
87
+ });
88
+ const creationData = {
89
+ id: envId,
90
+ name: envName,
91
+ ...(options?.cardId !== undefined
92
+ ? { cardId: options.cardId }
93
+ : { cardId: undefined }),
94
+ purpose,
95
+ description: description.trim(),
96
+ containerConfig,
97
+ mergeStrategy: options?.mergeStrategy ?? "squash",
98
+ };
99
+ const environment = Environment.create(creationData);
100
+ await this.environmentRepo.save(environment);
101
+ return ok(environment);
102
+ }
103
+ // ── Lifecycle ────────────────────────────────────────────────────
104
+ async activateEnvironment(envId) {
105
+ const environment = await this.findEnvironment(envId);
106
+ if (environment === null) {
107
+ return fail(`Environment "${envId}" not found`);
108
+ }
109
+ try {
110
+ environment.markActive();
111
+ }
112
+ catch (e) {
113
+ return fail(e.message);
114
+ }
115
+ await this.environmentRepo.save(environment);
116
+ return ok(environment);
117
+ }
118
+ async failEnvironment(envId, errorMessage) {
119
+ const environment = await this.findEnvironment(envId);
120
+ if (environment === null) {
121
+ return fail(`Environment "${envId}" not found`);
122
+ }
123
+ try {
124
+ environment.markFailed(errorMessage);
125
+ }
126
+ catch (e) {
127
+ return fail(e.message);
128
+ }
129
+ await this.environmentRepo.save(environment);
130
+ return ok(environment);
131
+ }
132
+ async startMerge(envId) {
133
+ const environment = await this.findEnvironment(envId);
134
+ if (environment === null) {
135
+ return fail(`Environment "${envId}" not found`);
136
+ }
137
+ try {
138
+ environment.startMerge();
139
+ }
140
+ catch (e) {
141
+ return fail(e.message);
142
+ }
143
+ await this.environmentRepo.save(environment);
144
+ return ok(environment);
145
+ }
146
+ async completeMerge(envId, commitSha) {
147
+ const environment = await this.findEnvironment(envId);
148
+ if (environment === null) {
149
+ return fail(`Environment "${envId}" not found`);
150
+ }
151
+ try {
152
+ environment.completeMerge(commitSha);
153
+ }
154
+ catch (e) {
155
+ return fail(e.message);
156
+ }
157
+ await this.environmentRepo.save(environment);
158
+ return ok(environment);
159
+ }
160
+ async revertMerge(envId, reason) {
161
+ const environment = await this.findEnvironment(envId);
162
+ if (environment === null) {
163
+ return fail(`Environment "${envId}" not found`);
164
+ }
165
+ try {
166
+ environment.revertMerge(reason);
167
+ }
168
+ catch (e) {
169
+ return fail(e.message);
170
+ }
171
+ await this.environmentRepo.save(environment);
172
+ return ok(environment);
173
+ }
174
+ async startDelete(envId) {
175
+ const environment = await this.findEnvironment(envId);
176
+ if (environment === null) {
177
+ return fail(`Environment "${envId}" not found`);
178
+ }
179
+ try {
180
+ environment.startDelete();
181
+ }
182
+ catch (e) {
183
+ return fail(e.message);
184
+ }
185
+ await this.environmentRepo.save(environment);
186
+ return ok(environment);
187
+ }
188
+ async markDeleted(envId) {
189
+ const environment = await this.findEnvironment(envId);
190
+ if (environment === null) {
191
+ return fail(`Environment "${envId}" not found`);
192
+ }
193
+ try {
194
+ environment.markDeleted();
195
+ }
196
+ catch (e) {
197
+ return fail(e.message);
198
+ }
199
+ await this.environmentRepo.save(environment);
200
+ return ok(environment);
201
+ }
202
+ // ── Card Linkage ─────────────────────────────────────────────────
203
+ async linkCard(envId, cardId) {
204
+ const environment = await this.findEnvironment(envId);
205
+ if (environment === null) {
206
+ return fail(`Environment "${envId}" not found`);
207
+ }
208
+ try {
209
+ environment.linkCard(cardId);
210
+ }
211
+ catch (e) {
212
+ return fail(e.message);
213
+ }
214
+ await this.environmentRepo.save(environment);
215
+ return ok(environment);
216
+ }
217
+ async unlinkCard(envId) {
218
+ const environment = await this.findEnvironment(envId);
219
+ if (environment === null) {
220
+ return fail(`Environment "${envId}" not found`);
221
+ }
222
+ environment.unlinkCard();
223
+ await this.environmentRepo.save(environment);
224
+ return ok(environment);
225
+ }
226
+ // ── Queries ──────────────────────────────────────────────────────
227
+ async getEnvironment(envId) {
228
+ const environment = await this.findEnvironment(envId);
229
+ if (environment === null) {
230
+ return fail(`Environment "${envId}" not found`);
231
+ }
232
+ return ok(environment);
233
+ }
234
+ async getEnvironmentByName(name) {
235
+ let envName;
236
+ try {
237
+ envName = EnvironmentName.create(name);
238
+ }
239
+ catch (e) {
240
+ return fail(e.message);
241
+ }
242
+ const environment = await this.environmentRepo.findByName(envName);
243
+ if (environment === null) {
244
+ return fail(`Environment with name "${name}" not found`);
245
+ }
246
+ return ok(environment);
247
+ }
248
+ async listEnvironments(workspaceId) {
249
+ const wsId = WorkspaceId.create(workspaceId);
250
+ return this.environmentRepo.findByWorkspace(wsId);
251
+ }
252
+ async listActiveEnvironments(workspaceId) {
253
+ const wsId = WorkspaceId.create(workspaceId);
254
+ return this.environmentRepo.findActive(wsId);
255
+ }
256
+ async findByCard(cardId) {
257
+ return this.environmentRepo.findByCard(cardId);
258
+ }
259
+ // ── Rendering (delegates to renderers.ts) ─────────────────────────
260
+ /** Generates container-use MCP tool instructions for creating an environment. */
261
+ renderCreateInstructions(environment) {
262
+ return renderCreateInstructions(environment);
263
+ }
264
+ /** Generates instructions for merging an environment back. */
265
+ renderMergeInstructions(environment) {
266
+ return renderMergeInstructions(environment);
267
+ }
268
+ /** Renders a summary of an environment for display. */
269
+ renderEnvironmentSummary(environment) {
270
+ return renderEnvironmentSummary(environment);
271
+ }
272
+ /** Renders a compact list of environments for display. */
273
+ renderEnvironmentList(environments) {
274
+ return renderEnvironmentList(environments);
275
+ }
276
+ // ── Private Helpers ──────────────────────────────────────────────
277
+ async findEnvironment(envId) {
278
+ const id = EnvironmentId.from(envId);
279
+ return this.environmentRepo.findById(id);
280
+ }
281
+ }
282
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/domain/environment/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,wEAAwE;AAExE;;;GAGG;AACH,MAAM,cAAc,GAAqC;IACvD,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,cAAc;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,gBAAgB;IACvB,IAAI,EAAE,wBAAwB;IAC9B,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,kCAAkC;IAC1C,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,gBAAgB;IACtB,CAAC,EAAE,iBAAiB;IACpB,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,eAAe;IACrB,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,wEAAwE;AAExE,MAAM,OAAO,wBAAwB;IACN;IAA7B,YAA6B,eAAsC;QAAtC,oBAAe,GAAf,eAAe,CAAuB;IAAG,CAAC;IAEvE,oEAAoE;IAEpE;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CACrB,WAAmB,EACnB,IAAY,EACZ,OAA2B,EAC3B,WAAmB,EACnB,OAOC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE7C,4BAA4B;QAC5B,IAAI,OAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,0BAA0B,IAAI,kBAAkB,CAAC,CAAC;QAChE,CAAC;QAED,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,eAAe,GAAG,qBAAqB,CAAC;YAC5C,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS;gBAClC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;gBAClC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS;gBACtC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE;gBAC9C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,MAAM,YAAY,GAA4B;YAC5C,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS;gBAC/B,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBAC5B,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC1B,OAAO;YACP,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE;YAC/B,eAAe;YACf,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,QAAQ;SAClD,CAAC;QAEF,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,oEAAoE;IAEpE,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,YAAoB;QAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,SAAkB;QAElB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,KAAa,EACb,MAAc;QAEd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,oEAAoE;IAEpE,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,MAAc;QAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACH,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa;QAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,WAAW,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,oEAAoE;IAEpE,KAAK,CAAC,cAAc,CAAC,KAAa;QAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,gBAAgB,KAAK,aAAa,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY;QACrC,IAAI,OAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAE,CAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,0BAA0B,IAAI,aAAa,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,WAAmB;QAEnB,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,qEAAqE;IAErE,iFAAiF;IACjF,wBAAwB,CAAC,WAAwB;QAC/C,OAAO,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,8DAA8D;IAC9D,uBAAuB,CAAC,WAAwB;QAC9C,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,uDAAuD;IACvD,wBAAwB,CAAC,WAAwB;QAC/C,OAAO,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,0DAA0D;IAC1D,qBAAqB,CAAC,YAAoC;QACxD,OAAO,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED,oEAAoE;IAE5D,KAAK,CAAC,eAAe,CAAC,KAAa;QACzC,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF"}