@nexus-ai-nexoralabs/cli 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 (411) hide show
  1. package/.env.example +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +106 -0
  4. package/dist/api/index.d.ts +81 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +224 -0
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/chat/chatService.d.ts +49 -0
  9. package/dist/chat/chatService.d.ts.map +1 -0
  10. package/dist/chat/chatService.js +163 -0
  11. package/dist/chat/chatService.js.map +1 -0
  12. package/dist/chat/contextBuilder.d.ts +19 -0
  13. package/dist/chat/contextBuilder.d.ts.map +1 -0
  14. package/dist/chat/contextBuilder.js +43 -0
  15. package/dist/chat/contextBuilder.js.map +1 -0
  16. package/dist/chat/conversationService.d.ts +25 -0
  17. package/dist/chat/conversationService.d.ts.map +1 -0
  18. package/dist/chat/conversationService.js +55 -0
  19. package/dist/chat/conversationService.js.map +1 -0
  20. package/dist/chat/index.d.ts +6 -0
  21. package/dist/chat/index.d.ts.map +1 -0
  22. package/dist/chat/index.js +6 -0
  23. package/dist/chat/index.js.map +1 -0
  24. package/dist/chat/messageService.d.ts +18 -0
  25. package/dist/chat/messageService.d.ts.map +1 -0
  26. package/dist/chat/messageService.js +26 -0
  27. package/dist/chat/messageService.js.map +1 -0
  28. package/dist/chat/promptTemplates.d.ts +19 -0
  29. package/dist/chat/promptTemplates.d.ts.map +1 -0
  30. package/dist/chat/promptTemplates.js +32 -0
  31. package/dist/chat/promptTemplates.js.map +1 -0
  32. package/dist/cli/agentRunner.d.ts +126 -0
  33. package/dist/cli/agentRunner.d.ts.map +1 -0
  34. package/dist/cli/agentRunner.js +892 -0
  35. package/dist/cli/agentRunner.js.map +1 -0
  36. package/dist/cli/bin.d.ts +14 -0
  37. package/dist/cli/bin.d.ts.map +1 -0
  38. package/dist/cli/bin.js +20 -0
  39. package/dist/cli/bin.js.map +1 -0
  40. package/dist/cli/index.d.ts +3 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +2 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/inputEngine.d.ts +76 -0
  45. package/dist/cli/inputEngine.d.ts.map +1 -0
  46. package/dist/cli/inputEngine.js +281 -0
  47. package/dist/cli/inputEngine.js.map +1 -0
  48. package/dist/cli/main.d.ts +9 -0
  49. package/dist/cli/main.d.ts.map +1 -0
  50. package/dist/cli/main.js +144 -0
  51. package/dist/cli/main.js.map +1 -0
  52. package/dist/cli/uiFormatters.d.ts +108 -0
  53. package/dist/cli/uiFormatters.d.ts.map +1 -0
  54. package/dist/cli/uiFormatters.js +925 -0
  55. package/dist/cli/uiFormatters.js.map +1 -0
  56. package/dist/common/logger.d.ts +13 -0
  57. package/dist/common/logger.d.ts.map +1 -0
  58. package/dist/common/logger.js +43 -0
  59. package/dist/common/logger.js.map +1 -0
  60. package/dist/config/firstRunHealthCheck.d.ts +50 -0
  61. package/dist/config/firstRunHealthCheck.d.ts.map +1 -0
  62. package/dist/config/firstRunHealthCheck.js +196 -0
  63. package/dist/config/firstRunHealthCheck.js.map +1 -0
  64. package/dist/config/firstRunService.d.ts +53 -0
  65. package/dist/config/firstRunService.d.ts.map +1 -0
  66. package/dist/config/firstRunService.js +93 -0
  67. package/dist/config/firstRunService.js.map +1 -0
  68. package/dist/config/index.d.ts +30 -0
  69. package/dist/config/index.d.ts.map +1 -0
  70. package/dist/config/index.js +65 -0
  71. package/dist/config/index.js.map +1 -0
  72. package/dist/config/productionPaths.d.ts +34 -0
  73. package/dist/config/productionPaths.d.ts.map +1 -0
  74. package/dist/config/productionPaths.js +95 -0
  75. package/dist/config/productionPaths.js.map +1 -0
  76. package/dist/config/workspaceService.d.ts +42 -0
  77. package/dist/config/workspaceService.d.ts.map +1 -0
  78. package/dist/config/workspaceService.js +218 -0
  79. package/dist/config/workspaceService.js.map +1 -0
  80. package/dist/desktop/appWindow.d.ts +21 -0
  81. package/dist/desktop/appWindow.d.ts.map +1 -0
  82. package/dist/desktop/appWindow.js +77 -0
  83. package/dist/desktop/appWindow.js.map +1 -0
  84. package/dist/desktop/main.d.ts +14 -0
  85. package/dist/desktop/main.d.ts.map +1 -0
  86. package/dist/desktop/main.js +90 -0
  87. package/dist/desktop/main.js.map +1 -0
  88. package/dist/desktop/preload.d.ts +14 -0
  89. package/dist/desktop/preload.d.ts.map +1 -0
  90. package/dist/desktop/preload.js +20 -0
  91. package/dist/desktop/preload.js.map +1 -0
  92. package/dist/intelligence/index.d.ts +33 -0
  93. package/dist/intelligence/index.d.ts.map +1 -0
  94. package/dist/intelligence/index.js +82 -0
  95. package/dist/intelligence/index.js.map +1 -0
  96. package/dist/intelligence/modelGateway.d.ts +35 -0
  97. package/dist/intelligence/modelGateway.d.ts.map +1 -0
  98. package/dist/intelligence/modelGateway.js +123 -0
  99. package/dist/intelligence/modelGateway.js.map +1 -0
  100. package/dist/intelligence/modelRegistry.d.ts +17 -0
  101. package/dist/intelligence/modelRegistry.d.ts.map +1 -0
  102. package/dist/intelligence/modelRegistry.js +87 -0
  103. package/dist/intelligence/modelRegistry.js.map +1 -0
  104. package/dist/intelligence/modelRouter.d.ts +76 -0
  105. package/dist/intelligence/modelRouter.d.ts.map +1 -0
  106. package/dist/intelligence/modelRouter.js +256 -0
  107. package/dist/intelligence/modelRouter.js.map +1 -0
  108. package/dist/intelligence/ollamaAdapter.d.ts +49 -0
  109. package/dist/intelligence/ollamaAdapter.d.ts.map +1 -0
  110. package/dist/intelligence/ollamaAdapter.js +197 -0
  111. package/dist/intelligence/ollamaAdapter.js.map +1 -0
  112. package/dist/intelligence/prototype/runPrototype.d.ts +14 -0
  113. package/dist/intelligence/prototype/runPrototype.d.ts.map +1 -0
  114. package/dist/intelligence/prototype/runPrototype.js +87 -0
  115. package/dist/intelligence/prototype/runPrototype.js.map +1 -0
  116. package/dist/intelligence/providers/embeddedInferenceProvider.d.ts +29 -0
  117. package/dist/intelligence/providers/embeddedInferenceProvider.d.ts.map +1 -0
  118. package/dist/intelligence/providers/embeddedInferenceProvider.js +162 -0
  119. package/dist/intelligence/providers/embeddedInferenceProvider.js.map +1 -0
  120. package/dist/intelligence/providers/index.d.ts +4 -0
  121. package/dist/intelligence/providers/index.d.ts.map +1 -0
  122. package/dist/intelligence/providers/index.js +4 -0
  123. package/dist/intelligence/providers/index.js.map +1 -0
  124. package/dist/intelligence/providers/inferenceProvider.d.ts +98 -0
  125. package/dist/intelligence/providers/inferenceProvider.d.ts.map +1 -0
  126. package/dist/intelligence/providers/inferenceProvider.js +9 -0
  127. package/dist/intelligence/providers/inferenceProvider.js.map +1 -0
  128. package/dist/intelligence/providers/ollamaInferenceProvider.d.ts +17 -0
  129. package/dist/intelligence/providers/ollamaInferenceProvider.d.ts.map +1 -0
  130. package/dist/intelligence/providers/ollamaInferenceProvider.js +103 -0
  131. package/dist/intelligence/providers/ollamaInferenceProvider.js.map +1 -0
  132. package/dist/intelligence/provisioning/hardwareDetector.d.ts +5 -0
  133. package/dist/intelligence/provisioning/hardwareDetector.d.ts.map +1 -0
  134. package/dist/intelligence/provisioning/hardwareDetector.js +48 -0
  135. package/dist/intelligence/provisioning/hardwareDetector.js.map +1 -0
  136. package/dist/intelligence/provisioning/index.d.ts +12 -0
  137. package/dist/intelligence/provisioning/index.d.ts.map +1 -0
  138. package/dist/intelligence/provisioning/index.js +12 -0
  139. package/dist/intelligence/provisioning/index.js.map +1 -0
  140. package/dist/intelligence/provisioning/modelDownloader.d.ts +22 -0
  141. package/dist/intelligence/provisioning/modelDownloader.d.ts.map +1 -0
  142. package/dist/intelligence/provisioning/modelDownloader.js +134 -0
  143. package/dist/intelligence/provisioning/modelDownloader.js.map +1 -0
  144. package/dist/intelligence/provisioning/modelManifest.d.ts +10 -0
  145. package/dist/intelligence/provisioning/modelManifest.d.ts.map +1 -0
  146. package/dist/intelligence/provisioning/modelManifest.js +72 -0
  147. package/dist/intelligence/provisioning/modelManifest.js.map +1 -0
  148. package/dist/intelligence/provisioning/modelSelector.d.ts +14 -0
  149. package/dist/intelligence/provisioning/modelSelector.d.ts.map +1 -0
  150. package/dist/intelligence/provisioning/modelSelector.js +40 -0
  151. package/dist/intelligence/provisioning/modelSelector.js.map +1 -0
  152. package/dist/intelligence/provisioning/modelStorage.d.ts +12 -0
  153. package/dist/intelligence/provisioning/modelStorage.d.ts.map +1 -0
  154. package/dist/intelligence/provisioning/modelStorage.js +66 -0
  155. package/dist/intelligence/provisioning/modelStorage.js.map +1 -0
  156. package/dist/intelligence/provisioning/modelUpdater.d.ts +29 -0
  157. package/dist/intelligence/provisioning/modelUpdater.d.ts.map +1 -0
  158. package/dist/intelligence/provisioning/modelUpdater.js +89 -0
  159. package/dist/intelligence/provisioning/modelUpdater.js.map +1 -0
  160. package/dist/intelligence/provisioning/modelVerifier.d.ts +16 -0
  161. package/dist/intelligence/provisioning/modelVerifier.d.ts.map +1 -0
  162. package/dist/intelligence/provisioning/modelVerifier.js +108 -0
  163. package/dist/intelligence/provisioning/modelVerifier.js.map +1 -0
  164. package/dist/intelligence/provisioning/nativeRuntime.d.ts +18 -0
  165. package/dist/intelligence/provisioning/nativeRuntime.d.ts.map +1 -0
  166. package/dist/intelligence/provisioning/nativeRuntime.js +78 -0
  167. package/dist/intelligence/provisioning/nativeRuntime.js.map +1 -0
  168. package/dist/intelligence/provisioning/platformDetector.d.ts +15 -0
  169. package/dist/intelligence/provisioning/platformDetector.d.ts.map +1 -0
  170. package/dist/intelligence/provisioning/platformDetector.js +40 -0
  171. package/dist/intelligence/provisioning/platformDetector.js.map +1 -0
  172. package/dist/intelligence/provisioning/setupState.d.ts +10 -0
  173. package/dist/intelligence/provisioning/setupState.d.ts.map +1 -0
  174. package/dist/intelligence/provisioning/setupState.js +59 -0
  175. package/dist/intelligence/provisioning/setupState.js.map +1 -0
  176. package/dist/intelligence/provisioning/types.d.ts +51 -0
  177. package/dist/intelligence/provisioning/types.d.ts.map +1 -0
  178. package/dist/intelligence/provisioning/types.js +2 -0
  179. package/dist/intelligence/provisioning/types.js.map +1 -0
  180. package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts +26 -0
  181. package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts.map +1 -0
  182. package/dist/intelligence/runtime/embeddedRuntimeAdapter.js +119 -0
  183. package/dist/intelligence/runtime/embeddedRuntimeAdapter.js.map +1 -0
  184. package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts +28 -0
  185. package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts.map +1 -0
  186. package/dist/intelligence/runtime/ollamaRuntimeAdapter.js +131 -0
  187. package/dist/intelligence/runtime/ollamaRuntimeAdapter.js.map +1 -0
  188. package/dist/intelligence/runtime/runtimeManager.d.ts +37 -0
  189. package/dist/intelligence/runtime/runtimeManager.d.ts.map +1 -0
  190. package/dist/intelligence/runtime/runtimeManager.js +168 -0
  191. package/dist/intelligence/runtime/runtimeManager.js.map +1 -0
  192. package/dist/intelligence/runtime/types.d.ts +56 -0
  193. package/dist/intelligence/runtime/types.d.ts.map +1 -0
  194. package/dist/intelligence/runtime/types.js +7 -0
  195. package/dist/intelligence/runtime/types.js.map +1 -0
  196. package/dist/knowledge/chunker.d.ts +18 -0
  197. package/dist/knowledge/chunker.d.ts.map +1 -0
  198. package/dist/knowledge/chunker.js +55 -0
  199. package/dist/knowledge/chunker.js.map +1 -0
  200. package/dist/knowledge/citationService.d.ts +26 -0
  201. package/dist/knowledge/citationService.d.ts.map +1 -0
  202. package/dist/knowledge/citationService.js +47 -0
  203. package/dist/knowledge/citationService.js.map +1 -0
  204. package/dist/knowledge/embeddings.d.ts +11 -0
  205. package/dist/knowledge/embeddings.d.ts.map +1 -0
  206. package/dist/knowledge/embeddings.js +28 -0
  207. package/dist/knowledge/embeddings.js.map +1 -0
  208. package/dist/knowledge/hybridSearch.d.ts +13 -0
  209. package/dist/knowledge/hybridSearch.d.ts.map +1 -0
  210. package/dist/knowledge/hybridSearch.js +38 -0
  211. package/dist/knowledge/hybridSearch.js.map +1 -0
  212. package/dist/knowledge/index.d.ts +25 -0
  213. package/dist/knowledge/index.d.ts.map +1 -0
  214. package/dist/knowledge/index.js +37 -0
  215. package/dist/knowledge/index.js.map +1 -0
  216. package/dist/knowledge/parsers.d.ts +20 -0
  217. package/dist/knowledge/parsers.d.ts.map +1 -0
  218. package/dist/knowledge/parsers.js +94 -0
  219. package/dist/knowledge/parsers.js.map +1 -0
  220. package/dist/knowledge/ragEngine.d.ts +24 -0
  221. package/dist/knowledge/ragEngine.d.ts.map +1 -0
  222. package/dist/knowledge/ragEngine.js +121 -0
  223. package/dist/knowledge/ragEngine.js.map +1 -0
  224. package/dist/knowledge/reranker.d.ts +10 -0
  225. package/dist/knowledge/reranker.d.ts.map +1 -0
  226. package/dist/knowledge/reranker.js +11 -0
  227. package/dist/knowledge/reranker.js.map +1 -0
  228. package/dist/knowledge/vectorStore.d.ts +22 -0
  229. package/dist/knowledge/vectorStore.d.ts.map +1 -0
  230. package/dist/knowledge/vectorStore.js +74 -0
  231. package/dist/knowledge/vectorStore.js.map +1 -0
  232. package/dist/main.d.ts +2 -0
  233. package/dist/main.d.ts.map +1 -0
  234. package/dist/main.js +113 -0
  235. package/dist/main.js.map +1 -0
  236. package/dist/orchestration/agentExecutionService.d.ts +29 -0
  237. package/dist/orchestration/agentExecutionService.d.ts.map +1 -0
  238. package/dist/orchestration/agentExecutionService.js +306 -0
  239. package/dist/orchestration/agentExecutionService.js.map +1 -0
  240. package/dist/orchestration/agentStateMachine.d.ts +29 -0
  241. package/dist/orchestration/agentStateMachine.d.ts.map +1 -0
  242. package/dist/orchestration/agentStateMachine.js +153 -0
  243. package/dist/orchestration/agentStateMachine.js.map +1 -0
  244. package/dist/orchestration/agentTaskService.d.ts +44 -0
  245. package/dist/orchestration/agentTaskService.d.ts.map +1 -0
  246. package/dist/orchestration/agentTaskService.js +168 -0
  247. package/dist/orchestration/agentTaskService.js.map +1 -0
  248. package/dist/orchestration/codingAgentDiscovery.d.ts +32 -0
  249. package/dist/orchestration/codingAgentDiscovery.d.ts.map +1 -0
  250. package/dist/orchestration/codingAgentDiscovery.js +148 -0
  251. package/dist/orchestration/codingAgentDiscovery.js.map +1 -0
  252. package/dist/orchestration/codingAgentService.d.ts +40 -0
  253. package/dist/orchestration/codingAgentService.d.ts.map +1 -0
  254. package/dist/orchestration/codingAgentService.js +319 -0
  255. package/dist/orchestration/codingAgentService.js.map +1 -0
  256. package/dist/orchestration/codingAgentTypes.d.ts +111 -0
  257. package/dist/orchestration/codingAgentTypes.d.ts.map +1 -0
  258. package/dist/orchestration/codingAgentTypes.js +32 -0
  259. package/dist/orchestration/codingAgentTypes.js.map +1 -0
  260. package/dist/orchestration/codingAgentVerifier.d.ts +34 -0
  261. package/dist/orchestration/codingAgentVerifier.d.ts.map +1 -0
  262. package/dist/orchestration/codingAgentVerifier.js +109 -0
  263. package/dist/orchestration/codingAgentVerifier.js.map +1 -0
  264. package/dist/orchestration/codingRepairService.d.ts +34 -0
  265. package/dist/orchestration/codingRepairService.d.ts.map +1 -0
  266. package/dist/orchestration/codingRepairService.js +120 -0
  267. package/dist/orchestration/codingRepairService.js.map +1 -0
  268. package/dist/orchestration/goalCompletionVerifier.d.ts +36 -0
  269. package/dist/orchestration/goalCompletionVerifier.d.ts.map +1 -0
  270. package/dist/orchestration/goalCompletionVerifier.js +165 -0
  271. package/dist/orchestration/goalCompletionVerifier.js.map +1 -0
  272. package/dist/orchestration/humanApprovalService.d.ts +89 -0
  273. package/dist/orchestration/humanApprovalService.d.ts.map +1 -0
  274. package/dist/orchestration/humanApprovalService.js +346 -0
  275. package/dist/orchestration/humanApprovalService.js.map +1 -0
  276. package/dist/orchestration/index.d.ts +47 -0
  277. package/dist/orchestration/index.d.ts.map +1 -0
  278. package/dist/orchestration/index.js +67 -0
  279. package/dist/orchestration/index.js.map +1 -0
  280. package/dist/orchestration/planner.d.ts +105 -0
  281. package/dist/orchestration/planner.d.ts.map +1 -0
  282. package/dist/orchestration/planner.js +692 -0
  283. package/dist/orchestration/planner.js.map +1 -0
  284. package/dist/orchestration/types.d.ts +109 -0
  285. package/dist/orchestration/types.d.ts.map +1 -0
  286. package/dist/orchestration/types.js +20 -0
  287. package/dist/orchestration/types.js.map +1 -0
  288. package/dist/preview/previewServer.d.ts +39 -0
  289. package/dist/preview/previewServer.d.ts.map +1 -0
  290. package/dist/preview/previewServer.js +228 -0
  291. package/dist/preview/previewServer.js.map +1 -0
  292. package/dist/preview/previewService.d.ts +43 -0
  293. package/dist/preview/previewService.d.ts.map +1 -0
  294. package/dist/preview/previewService.js +289 -0
  295. package/dist/preview/previewService.js.map +1 -0
  296. package/dist/preview/previewTypes.d.ts +35 -0
  297. package/dist/preview/previewTypes.d.ts.map +1 -0
  298. package/dist/preview/previewTypes.js +5 -0
  299. package/dist/preview/previewTypes.js.map +1 -0
  300. package/dist/storage/database.d.ts +12 -0
  301. package/dist/storage/database.d.ts.map +1 -0
  302. package/dist/storage/database.js +46 -0
  303. package/dist/storage/database.js.map +1 -0
  304. package/dist/storage/health.d.ts +17 -0
  305. package/dist/storage/health.d.ts.map +1 -0
  306. package/dist/storage/health.js +48 -0
  307. package/dist/storage/health.js.map +1 -0
  308. package/dist/storage/index.d.ts +45 -0
  309. package/dist/storage/index.d.ts.map +1 -0
  310. package/dist/storage/index.js +96 -0
  311. package/dist/storage/index.js.map +1 -0
  312. package/dist/storage/migration.d.ts +17 -0
  313. package/dist/storage/migration.d.ts.map +1 -0
  314. package/dist/storage/migration.js +354 -0
  315. package/dist/storage/migration.js.map +1 -0
  316. package/dist/storage/projectService.d.ts +19 -0
  317. package/dist/storage/projectService.d.ts.map +1 -0
  318. package/dist/storage/projectService.js +29 -0
  319. package/dist/storage/projectService.js.map +1 -0
  320. package/dist/storage/repositories/agentTaskRepository.d.ts +34 -0
  321. package/dist/storage/repositories/agentTaskRepository.d.ts.map +1 -0
  322. package/dist/storage/repositories/agentTaskRepository.js +128 -0
  323. package/dist/storage/repositories/agentTaskRepository.js.map +1 -0
  324. package/dist/storage/repositories/approvalRepository.d.ts +20 -0
  325. package/dist/storage/repositories/approvalRepository.d.ts.map +1 -0
  326. package/dist/storage/repositories/approvalRepository.js +116 -0
  327. package/dist/storage/repositories/approvalRepository.js.map +1 -0
  328. package/dist/storage/repositories/conversationRepository.d.ts +16 -0
  329. package/dist/storage/repositories/conversationRepository.d.ts.map +1 -0
  330. package/dist/storage/repositories/conversationRepository.js +50 -0
  331. package/dist/storage/repositories/conversationRepository.js.map +1 -0
  332. package/dist/storage/repositories/knowledgeRepository.d.ts +109 -0
  333. package/dist/storage/repositories/knowledgeRepository.d.ts.map +1 -0
  334. package/dist/storage/repositories/knowledgeRepository.js +177 -0
  335. package/dist/storage/repositories/knowledgeRepository.js.map +1 -0
  336. package/dist/storage/repositories/messageRepository.d.ts +13 -0
  337. package/dist/storage/repositories/messageRepository.d.ts.map +1 -0
  338. package/dist/storage/repositories/messageRepository.js +39 -0
  339. package/dist/storage/repositories/messageRepository.js.map +1 -0
  340. package/dist/storage/repositories/modelsRepository.d.ts +39 -0
  341. package/dist/storage/repositories/modelsRepository.d.ts.map +1 -0
  342. package/dist/storage/repositories/modelsRepository.js +92 -0
  343. package/dist/storage/repositories/modelsRepository.js.map +1 -0
  344. package/dist/storage/repositories/projectRepository.d.ts +14 -0
  345. package/dist/storage/repositories/projectRepository.d.ts.map +1 -0
  346. package/dist/storage/repositories/projectRepository.js +44 -0
  347. package/dist/storage/repositories/projectRepository.js.map +1 -0
  348. package/dist/storage/repositories/settingsRepository.d.ts +10 -0
  349. package/dist/storage/repositories/settingsRepository.d.ts.map +1 -0
  350. package/dist/storage/repositories/settingsRepository.js +27 -0
  351. package/dist/storage/repositories/settingsRepository.js.map +1 -0
  352. package/dist/storage/repositories/types.d.ts +56 -0
  353. package/dist/storage/repositories/types.d.ts.map +1 -0
  354. package/dist/storage/repositories/types.js +2 -0
  355. package/dist/storage/repositories/types.js.map +1 -0
  356. package/dist/tools/adapters/filesystemAdapter.d.ts +121 -0
  357. package/dist/tools/adapters/filesystemAdapter.d.ts.map +1 -0
  358. package/dist/tools/adapters/filesystemAdapter.js +808 -0
  359. package/dist/tools/adapters/filesystemAdapter.js.map +1 -0
  360. package/dist/tools/adapters/terminalAdapter.d.ts +67 -0
  361. package/dist/tools/adapters/terminalAdapter.d.ts.map +1 -0
  362. package/dist/tools/adapters/terminalAdapter.js +487 -0
  363. package/dist/tools/adapters/terminalAdapter.js.map +1 -0
  364. package/dist/tools/adapters/terminalCommandPolicy.d.ts +44 -0
  365. package/dist/tools/adapters/terminalCommandPolicy.d.ts.map +1 -0
  366. package/dist/tools/adapters/terminalCommandPolicy.js +422 -0
  367. package/dist/tools/adapters/terminalCommandPolicy.js.map +1 -0
  368. package/dist/tools/adapters/terminalTypes.d.ts +111 -0
  369. package/dist/tools/adapters/terminalTypes.d.ts.map +1 -0
  370. package/dist/tools/adapters/terminalTypes.js +26 -0
  371. package/dist/tools/adapters/terminalTypes.js.map +1 -0
  372. package/dist/tools/approvalGate.d.ts +24 -0
  373. package/dist/tools/approvalGate.d.ts.map +1 -0
  374. package/dist/tools/approvalGate.js +137 -0
  375. package/dist/tools/approvalGate.js.map +1 -0
  376. package/dist/tools/approvalPolicyEngine.d.ts +32 -0
  377. package/dist/tools/approvalPolicyEngine.d.ts.map +1 -0
  378. package/dist/tools/approvalPolicyEngine.js +141 -0
  379. package/dist/tools/approvalPolicyEngine.js.map +1 -0
  380. package/dist/tools/approvalTypes.d.ts +67 -0
  381. package/dist/tools/approvalTypes.d.ts.map +1 -0
  382. package/dist/tools/approvalTypes.js +23 -0
  383. package/dist/tools/approvalTypes.js.map +1 -0
  384. package/dist/tools/index.d.ts +72 -0
  385. package/dist/tools/index.d.ts.map +1 -0
  386. package/dist/tools/index.js +353 -0
  387. package/dist/tools/index.js.map +1 -0
  388. package/dist/tools/permissionEngine.d.ts +27 -0
  389. package/dist/tools/permissionEngine.d.ts.map +1 -0
  390. package/dist/tools/permissionEngine.js +130 -0
  391. package/dist/tools/permissionEngine.js.map +1 -0
  392. package/dist/tools/toolExecutor.d.ts +37 -0
  393. package/dist/tools/toolExecutor.d.ts.map +1 -0
  394. package/dist/tools/toolExecutor.js +440 -0
  395. package/dist/tools/toolExecutor.js.map +1 -0
  396. package/dist/tools/toolRegistry.d.ts +34 -0
  397. package/dist/tools/toolRegistry.d.ts.map +1 -0
  398. package/dist/tools/toolRegistry.js +92 -0
  399. package/dist/tools/toolRegistry.js.map +1 -0
  400. package/dist/tools/types.d.ts +82 -0
  401. package/dist/tools/types.d.ts.map +1 -0
  402. package/dist/tools/types.js +33 -0
  403. package/dist/tools/types.js.map +1 -0
  404. package/dist/ui/public/app.js +777 -0
  405. package/dist/ui/public/index.html +117 -0
  406. package/dist/ui/public/styles.css +413 -0
  407. package/dist/ui/server.d.ts +27 -0
  408. package/dist/ui/server.d.ts.map +1 -0
  409. package/dist/ui/server.js +373 -0
  410. package/dist/ui/server.js.map +1 -0
  411. package/package.json +63 -0
@@ -0,0 +1,17 @@
1
+ import type { Database as DatabaseType } from 'better-sqlite3';
2
+ import { LogLevel } from '../common/logger.js';
3
+ export interface Migration {
4
+ version: number;
5
+ name: string;
6
+ up(db: DatabaseType): void;
7
+ }
8
+ export declare const MIGRATIONS: Migration[];
9
+ export declare class MigrationRunner {
10
+ private db;
11
+ private logger;
12
+ constructor(db: DatabaseType, logLevel?: LogLevel);
13
+ ensureMigrationTable(): void;
14
+ getCurrentVersion(): number;
15
+ runMigrations(): void;
16
+ }
17
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/storage/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EAsTjC,CAAC;AAEF,qBAAa,eAAe;IAIxB,OAAO,CAAC,EAAE;IAHZ,OAAO,CAAC,MAAM,CAAS;gBAGb,EAAE,EAAE,YAAY,EACxB,QAAQ,GAAE,QAAiB;IAK7B,oBAAoB,IAAI,IAAI;IAU5B,iBAAiB,IAAI,MAAM;IAQ3B,aAAa,IAAI,IAAI;CA2BtB"}
@@ -0,0 +1,354 @@
1
+ import { Logger } from '../common/logger.js';
2
+ export const MIGRATIONS = [
3
+ {
4
+ version: 1,
5
+ name: '001_initial_schema',
6
+ up(db) {
7
+ db.exec(`
8
+ CREATE TABLE IF NOT EXISTS projects (
9
+ id TEXT PRIMARY KEY,
10
+ name TEXT NOT NULL,
11
+ description TEXT,
12
+ workspace_path TEXT NOT NULL,
13
+ created_at TEXT NOT NULL,
14
+ updated_at TEXT NOT NULL
15
+ );
16
+
17
+ CREATE TABLE IF NOT EXISTS conversations (
18
+ id TEXT PRIMARY KEY,
19
+ project_id TEXT,
20
+ title TEXT NOT NULL,
21
+ mode TEXT NOT NULL DEFAULT 'chat',
22
+ created_at TEXT NOT NULL,
23
+ updated_at TEXT NOT NULL,
24
+ archived_at TEXT,
25
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
26
+ );
27
+
28
+ CREATE INDEX IF NOT EXISTS idx_conversations_project_id ON conversations(project_id);
29
+
30
+ CREATE TABLE IF NOT EXISTS messages (
31
+ id TEXT PRIMARY KEY,
32
+ conversation_id TEXT NOT NULL,
33
+ role TEXT NOT NULL,
34
+ content TEXT NOT NULL,
35
+ status TEXT NOT NULL DEFAULT 'completed',
36
+ created_at TEXT NOT NULL,
37
+ FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
38
+ );
39
+
40
+ CREATE INDEX IF NOT EXISTS idx_messages_conversation_id ON messages(conversation_id);
41
+
42
+ CREATE TABLE IF NOT EXISTS agent_tasks (
43
+ id TEXT PRIMARY KEY,
44
+ project_id TEXT,
45
+ title TEXT NOT NULL,
46
+ status TEXT NOT NULL DEFAULT 'queued',
47
+ plan TEXT,
48
+ created_at TEXT NOT NULL,
49
+ updated_at TEXT NOT NULL,
50
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
51
+ );
52
+
53
+ CREATE INDEX IF NOT EXISTS idx_agent_tasks_project_id ON agent_tasks(project_id);
54
+
55
+ CREATE TABLE IF NOT EXISTS settings (
56
+ key TEXT PRIMARY KEY,
57
+ value TEXT NOT NULL,
58
+ updated_at TEXT NOT NULL
59
+ );
60
+ `);
61
+ },
62
+ },
63
+ {
64
+ version: 2,
65
+ name: '002_model_registry',
66
+ up(db) {
67
+ db.exec(`
68
+ CREATE TABLE IF NOT EXISTS models (
69
+ id TEXT PRIMARY KEY,
70
+ name TEXT NOT NULL,
71
+ provider TEXT NOT NULL DEFAULT 'ollama',
72
+ version_tag TEXT,
73
+ capabilities TEXT NOT NULL,
74
+ context_limit INTEGER DEFAULT 4096,
75
+ is_available INTEGER NOT NULL DEFAULT 1,
76
+ updated_at TEXT NOT NULL
77
+ );
78
+
79
+ CREATE TABLE IF NOT EXISTS model_telemetry (
80
+ id TEXT PRIMARY KEY,
81
+ model_id TEXT NOT NULL,
82
+ status TEXT NOT NULL,
83
+ latency_ms INTEGER NOT NULL,
84
+ error_category TEXT,
85
+ created_at TEXT NOT NULL
86
+ );
87
+
88
+ CREATE INDEX IF NOT EXISTS idx_model_telemetry_model_id ON model_telemetry(model_id);
89
+ `);
90
+ },
91
+ },
92
+ {
93
+ version: 3,
94
+ name: '003_rag_engine',
95
+ up(db) {
96
+ db.exec(`
97
+ CREATE TABLE IF NOT EXISTS knowledge_collections (
98
+ id TEXT PRIMARY KEY,
99
+ name TEXT NOT NULL,
100
+ scope TEXT NOT NULL DEFAULT 'global',
101
+ project_id TEXT,
102
+ created_at TEXT NOT NULL,
103
+ updated_at TEXT NOT NULL,
104
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
105
+ );
106
+
107
+ CREATE TABLE IF NOT EXISTS documents (
108
+ id TEXT PRIMARY KEY,
109
+ collection_id TEXT NOT NULL,
110
+ filename TEXT NOT NULL,
111
+ source_path TEXT NOT NULL,
112
+ mime_type TEXT NOT NULL,
113
+ content_hash TEXT NOT NULL,
114
+ current_version INTEGER NOT NULL DEFAULT 1,
115
+ created_at TEXT NOT NULL,
116
+ updated_at TEXT NOT NULL,
117
+ FOREIGN KEY (collection_id) REFERENCES knowledge_collections(id) ON DELETE CASCADE
118
+ );
119
+
120
+ CREATE INDEX IF NOT EXISTS idx_documents_collection ON documents(collection_id);
121
+
122
+ CREATE TABLE IF NOT EXISTS document_versions (
123
+ id TEXT PRIMARY KEY,
124
+ document_id TEXT NOT NULL,
125
+ version INTEGER NOT NULL,
126
+ content TEXT NOT NULL,
127
+ created_at TEXT NOT NULL,
128
+ FOREIGN KEY (document_id) REFERENCES documents(id) ON DELETE CASCADE
129
+ );
130
+
131
+ CREATE TABLE IF NOT EXISTS document_chunks (
132
+ id TEXT PRIMARY KEY,
133
+ document_id TEXT NOT NULL,
134
+ version_id TEXT NOT NULL,
135
+ collection_id TEXT NOT NULL,
136
+ chunk_index INTEGER NOT NULL,
137
+ content TEXT NOT NULL,
138
+ section TEXT,
139
+ page_number INTEGER,
140
+ token_count INTEGER NOT NULL,
141
+ created_at TEXT NOT NULL,
142
+ FOREIGN KEY (document_id) REFERENCES documents(id) ON DELETE CASCADE
143
+ );
144
+
145
+ CREATE INDEX IF NOT EXISTS idx_chunks_collection ON document_chunks(collection_id);
146
+ CREATE INDEX IF NOT EXISTS idx_chunks_document ON document_chunks(document_id);
147
+
148
+ CREATE TABLE IF NOT EXISTS vector_embeddings (
149
+ id TEXT PRIMARY KEY,
150
+ chunk_id TEXT NOT NULL UNIQUE,
151
+ embedding_json TEXT NOT NULL,
152
+ dimension INTEGER NOT NULL,
153
+ model_name TEXT NOT NULL,
154
+ created_at TEXT NOT NULL,
155
+ FOREIGN KEY (chunk_id) REFERENCES document_chunks(id) ON DELETE CASCADE
156
+ );
157
+
158
+ CREATE INDEX IF NOT EXISTS idx_embeddings_chunk ON vector_embeddings(chunk_id);
159
+ `);
160
+ },
161
+ },
162
+ {
163
+ version: 4,
164
+ name: '004_agent_state_machine',
165
+ up(db) {
166
+ // SQLite does not support renaming columns in older versions.
167
+ // Recreate agent_tasks with the full P5-A state machine schema.
168
+ db.exec(`
169
+ CREATE TABLE IF NOT EXISTS agent_tasks_v2 (
170
+ id TEXT PRIMARY KEY,
171
+ project_id TEXT,
172
+ title TEXT NOT NULL,
173
+ state TEXT NOT NULL DEFAULT 'created',
174
+ current_step TEXT,
175
+ step_status TEXT NOT NULL DEFAULT 'idle',
176
+ attempt_count INTEGER NOT NULL DEFAULT 0,
177
+ error_category TEXT,
178
+ cancelled_at TEXT,
179
+ completed_at TEXT,
180
+ plan TEXT,
181
+ created_at TEXT NOT NULL,
182
+ updated_at TEXT NOT NULL,
183
+ FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
184
+ );
185
+
186
+ INSERT INTO agent_tasks_v2
187
+ (id, project_id, title, state, current_step, step_status,
188
+ attempt_count, error_category, cancelled_at, completed_at,
189
+ plan, created_at, updated_at)
190
+ SELECT
191
+ id, project_id, title,
192
+ CASE status
193
+ WHEN 'queued' THEN 'created'
194
+ WHEN 'planning' THEN 'planning'
195
+ WHEN 'running' THEN 'executing'
196
+ WHEN 'completed' THEN 'completed'
197
+ WHEN 'failed' THEN 'failed'
198
+ WHEN 'cancelled' THEN 'cancelled'
199
+ ELSE 'created'
200
+ END,
201
+ NULL, 'idle', 0, NULL, NULL, NULL,
202
+ plan, created_at, updated_at
203
+ FROM agent_tasks;
204
+
205
+ DROP TABLE agent_tasks;
206
+ ALTER TABLE agent_tasks_v2 RENAME TO agent_tasks;
207
+
208
+ CREATE INDEX IF NOT EXISTS idx_agent_tasks_project_id ON agent_tasks(project_id);
209
+ CREATE INDEX IF NOT EXISTS idx_agent_tasks_state ON agent_tasks(state);
210
+ `);
211
+ },
212
+ },
213
+ {
214
+ version: 5,
215
+ name: '005_agent_execution_steps',
216
+ up(db) {
217
+ db.exec(`
218
+ CREATE TABLE IF NOT EXISTS agent_execution_steps (
219
+ step_id TEXT PRIMARY KEY,
220
+ task_id TEXT NOT NULL,
221
+ sequence INTEGER NOT NULL,
222
+ step_type TEXT NOT NULL DEFAULT 'tool_execution',
223
+ status TEXT NOT NULL DEFAULT 'pending',
224
+ tool_id TEXT,
225
+ requested_capabilities TEXT,
226
+ params_json TEXT,
227
+ attempt_count INTEGER NOT NULL DEFAULT 0,
228
+ max_attempts INTEGER NOT NULL DEFAULT 3,
229
+ error_category TEXT,
230
+ error_message TEXT,
231
+ created_at TEXT NOT NULL,
232
+ updated_at TEXT NOT NULL,
233
+ FOREIGN KEY (task_id) REFERENCES agent_tasks(id) ON DELETE CASCADE
234
+ );
235
+
236
+ CREATE INDEX IF NOT EXISTS idx_execution_steps_task ON agent_execution_steps(task_id);
237
+ `);
238
+ },
239
+ },
240
+ {
241
+ version: 6,
242
+ name: '006_approval_requests',
243
+ up(db) {
244
+ db.exec(`
245
+ CREATE TABLE IF NOT EXISTS approval_requests (
246
+ approval_id TEXT PRIMARY KEY,
247
+ task_id TEXT NOT NULL,
248
+ plan_id TEXT,
249
+ step_id TEXT NOT NULL,
250
+ tool_id TEXT NOT NULL,
251
+ risk_level TEXT NOT NULL,
252
+ requested_capability TEXT NOT NULL,
253
+ status TEXT NOT NULL DEFAULT 'pending',
254
+ created_at TEXT NOT NULL,
255
+ resolved_at TEXT,
256
+ expires_at TEXT NOT NULL,
257
+ decision_reason TEXT,
258
+ FOREIGN KEY (task_id) REFERENCES agent_tasks(id) ON DELETE CASCADE
259
+ );
260
+
261
+ CREATE INDEX IF NOT EXISTS idx_approval_requests_task ON approval_requests(task_id);
262
+ CREATE INDEX IF NOT EXISTS idx_approval_requests_status ON approval_requests(status);
263
+ `);
264
+ },
265
+ },
266
+ {
267
+ version: 7,
268
+ name: '007_coding_agent_runs',
269
+ up(db) {
270
+ db.exec(`
271
+ CREATE TABLE IF NOT EXISTS coding_agent_runs (
272
+ run_id TEXT PRIMARY KEY,
273
+ task_id TEXT NOT NULL,
274
+ attempt_count INTEGER NOT NULL DEFAULT 1,
275
+ max_repair_attempts INTEGER NOT NULL DEFAULT 3,
276
+ status TEXT NOT NULL DEFAULT 'active',
277
+ discovered_context_json TEXT,
278
+ initial_plan_json TEXT,
279
+ last_validation_command TEXT,
280
+ last_validation_exit_code INTEGER,
281
+ last_validation_stdout TEXT,
282
+ last_validation_stderr TEXT,
283
+ is_verified INTEGER NOT NULL DEFAULT 0,
284
+ error_category TEXT,
285
+ created_at TEXT NOT NULL,
286
+ updated_at TEXT NOT NULL,
287
+ FOREIGN KEY (task_id) REFERENCES agent_tasks(id) ON DELETE CASCADE
288
+ );
289
+
290
+ CREATE TABLE IF NOT EXISTS coding_repair_attempts (
291
+ attempt_id TEXT PRIMARY KEY,
292
+ run_id TEXT NOT NULL,
293
+ task_id TEXT NOT NULL,
294
+ repair_attempt INTEGER NOT NULL,
295
+ failure_reason TEXT NOT NULL,
296
+ repair_plan_json TEXT,
297
+ validation_command TEXT,
298
+ exit_code INTEGER,
299
+ success INTEGER NOT NULL DEFAULT 0,
300
+ diff_summary TEXT,
301
+ error_category TEXT,
302
+ created_at TEXT NOT NULL,
303
+ FOREIGN KEY (run_id) REFERENCES coding_agent_runs(run_id) ON DELETE CASCADE,
304
+ FOREIGN KEY (task_id) REFERENCES agent_tasks(id) ON DELETE CASCADE
305
+ );
306
+
307
+ CREATE INDEX IF NOT EXISTS idx_coding_runs_task ON coding_agent_runs(task_id);
308
+ CREATE INDEX IF NOT EXISTS idx_coding_repairs_run ON coding_repair_attempts(run_id);
309
+ `);
310
+ },
311
+ },
312
+ ];
313
+ export class MigrationRunner {
314
+ db;
315
+ logger;
316
+ constructor(db, logLevel = 'info') {
317
+ this.db = db;
318
+ this.logger = new Logger('MigrationRunner', logLevel);
319
+ }
320
+ ensureMigrationTable() {
321
+ this.db.exec(`
322
+ CREATE TABLE IF NOT EXISTS schema_migrations (
323
+ version INTEGER PRIMARY KEY,
324
+ name TEXT NOT NULL,
325
+ applied_at TEXT NOT NULL
326
+ );
327
+ `);
328
+ }
329
+ getCurrentVersion() {
330
+ this.ensureMigrationTable();
331
+ const row = this.db.prepare('SELECT MAX(version) as currentVersion FROM schema_migrations').get();
332
+ return row?.currentVersion ?? 0;
333
+ }
334
+ runMigrations() {
335
+ this.ensureMigrationTable();
336
+ const currentVersion = this.getCurrentVersion();
337
+ const pending = MIGRATIONS.filter((m) => m.version > currentVersion).sort((a, b) => a.version - b.version);
338
+ if (pending.length === 0) {
339
+ this.logger.info(`Database schema up to date at version ${currentVersion}`);
340
+ return;
341
+ }
342
+ this.logger.info(`Applying ${pending.length} pending database migration(s)`);
343
+ for (const migration of pending) {
344
+ this.logger.info(`Running migration v${migration.version}: ${migration.name}`);
345
+ const executeMigration = this.db.transaction(() => {
346
+ migration.up(this.db);
347
+ this.db.prepare('INSERT INTO schema_migrations (version, name, applied_at) VALUES (?, ?, ?)').run(migration.version, migration.name, new Date().toISOString());
348
+ });
349
+ executeMigration();
350
+ this.logger.info(`Migration v${migration.version} successfully applied`);
351
+ }
352
+ }
353
+ }
354
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/storage/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ProjectRepository } from './repositories/projectRepository.js';
2
+ import type { Project } from './repositories/types.js';
3
+ import { LogLevel } from '../common/logger.js';
4
+ export interface CreateProjectDto {
5
+ id: string;
6
+ name: string;
7
+ description?: string | null;
8
+ workspacePath: string;
9
+ }
10
+ export declare class ProjectService {
11
+ private projectRepo;
12
+ private logger;
13
+ constructor(projectRepo: ProjectRepository, logLevel?: LogLevel);
14
+ createProject(dto: CreateProjectDto): Project;
15
+ getProject(id: string): Project | null;
16
+ listProjects(): Project[];
17
+ deleteProject(id: string): boolean;
18
+ }
19
+ //# sourceMappingURL=projectService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectService.d.ts","sourceRoot":"","sources":["../../src/storage/projectService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IAIvB,OAAO,CAAC,WAAW;IAHrB,OAAO,CAAC,MAAM,CAAS;gBAGb,WAAW,EAAE,iBAAiB,EACtC,QAAQ,GAAE,QAAiB;IAK7B,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO;IAU7C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAItC,YAAY,IAAI,OAAO,EAAE;IAIzB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAInC"}
@@ -0,0 +1,29 @@
1
+ import { Logger } from '../common/logger.js';
2
+ export class ProjectService {
3
+ projectRepo;
4
+ logger;
5
+ constructor(projectRepo, logLevel = 'info') {
6
+ this.projectRepo = projectRepo;
7
+ this.logger = new Logger('ProjectService', logLevel);
8
+ }
9
+ createProject(dto) {
10
+ this.logger.info(`Creating project '${dto.name}' (${dto.id})`);
11
+ return this.projectRepo.create({
12
+ id: dto.id,
13
+ name: dto.name,
14
+ description: dto.description ?? null,
15
+ workspacePath: dto.workspacePath,
16
+ });
17
+ }
18
+ getProject(id) {
19
+ return this.projectRepo.findById(id);
20
+ }
21
+ listProjects() {
22
+ return this.projectRepo.listAll();
23
+ }
24
+ deleteProject(id) {
25
+ this.logger.info(`Deleting project '${id}'`);
26
+ return this.projectRepo.deleteById(id);
27
+ }
28
+ }
29
+ //# sourceMappingURL=projectService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectService.js","sourceRoot":"","sources":["../../src/storage/projectService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,qBAAqB,CAAC;AASvD,MAAM,OAAO,cAAc;IAIf;IAHF,MAAM,CAAS;IAEvB,YACU,WAA8B,EACtC,WAAqB,MAAM;QADnB,gBAAW,GAAX,WAAW,CAAmB;QAGtC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,aAAa,CAAC,GAAqB;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7B,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACpC,aAAa,EAAE,GAAG,CAAC,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,EAAU;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ import type { Database } from 'better-sqlite3';
2
+ import type { AgentTask, AgentTaskState, AgentTaskStepStatus } from './types.js';
3
+ export interface UpdateStateParams {
4
+ state: AgentTaskState;
5
+ currentStep?: string | null;
6
+ stepStatus?: AgentTaskStepStatus;
7
+ attemptCount?: number;
8
+ errorCategory?: string | null;
9
+ cancelledAt?: string | null;
10
+ completedAt?: string | null;
11
+ plan?: string | null;
12
+ }
13
+ export declare class AgentTaskRepository {
14
+ private db;
15
+ constructor(db: Database);
16
+ create(task: Omit<AgentTask, 'createdAt' | 'updatedAt' | 'state' | 'currentStep' | 'stepStatus' | 'attemptCount' | 'errorCategory' | 'cancelledAt' | 'completedAt'> & {
17
+ state?: AgentTaskState;
18
+ currentStep?: string | null;
19
+ stepStatus?: AgentTaskStepStatus;
20
+ attemptCount?: number;
21
+ errorCategory?: string | null;
22
+ cancelledAt?: string | null;
23
+ completedAt?: string | null;
24
+ createdAt?: string;
25
+ updatedAt?: string;
26
+ }): AgentTask;
27
+ findById(id: string): AgentTask | null;
28
+ listByProject(projectId: string | null): AgentTask[];
29
+ listAll(): AgentTask[];
30
+ findByState(state: AgentTaskState): AgentTask[];
31
+ updateState(id: string, params: UpdateStateParams): boolean;
32
+ deleteById(id: string): boolean;
33
+ }
34
+ //# sourceMappingURL=agentTaskRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentTaskRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/agentTaskRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAoDjF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,qBAAa,mBAAmB;IAClB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEhC,MAAM,CACJ,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,aAAa,CAAC,GAAG;QAC7J,KAAK,CAAC,EAAE,cAAc,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,SAAS;IAkCZ,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAOtC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE;IAWpD,OAAO,IAAI,SAAS,EAAE;IAOtB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,EAAE;IAO/C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO;IA+B3D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAIhC"}
@@ -0,0 +1,128 @@
1
+ function rowToTask(row) {
2
+ return {
3
+ id: row.id,
4
+ projectId: row.projectId,
5
+ title: row.title,
6
+ state: row.state,
7
+ currentStep: row.currentStep,
8
+ stepStatus: row.stepStatus,
9
+ attemptCount: row.attemptCount,
10
+ errorCategory: row.errorCategory,
11
+ cancelledAt: row.cancelledAt,
12
+ completedAt: row.completedAt,
13
+ plan: row.plan,
14
+ createdAt: row.createdAt,
15
+ updatedAt: row.updatedAt,
16
+ };
17
+ }
18
+ const SELECT_COLS = `
19
+ id,
20
+ project_id AS projectId,
21
+ title,
22
+ state,
23
+ current_step AS currentStep,
24
+ step_status AS stepStatus,
25
+ attempt_count AS attemptCount,
26
+ error_category AS errorCategory,
27
+ cancelled_at AS cancelledAt,
28
+ completed_at AS completedAt,
29
+ plan,
30
+ created_at AS createdAt,
31
+ updated_at AS updatedAt
32
+ `;
33
+ export class AgentTaskRepository {
34
+ db;
35
+ constructor(db) {
36
+ this.db = db;
37
+ }
38
+ create(task) {
39
+ const now = new Date().toISOString();
40
+ const record = {
41
+ id: task.id,
42
+ projectId: task.projectId ?? null,
43
+ title: task.title,
44
+ state: task.state ?? 'created',
45
+ currentStep: task.currentStep ?? null,
46
+ stepStatus: task.stepStatus ?? 'idle',
47
+ attemptCount: task.attemptCount ?? 0,
48
+ errorCategory: task.errorCategory ?? null,
49
+ cancelledAt: task.cancelledAt ?? null,
50
+ completedAt: task.completedAt ?? null,
51
+ plan: task.plan ?? null,
52
+ createdAt: task.createdAt ?? now,
53
+ updatedAt: task.updatedAt ?? now,
54
+ };
55
+ this.db
56
+ .prepare(`INSERT INTO agent_tasks
57
+ (id, project_id, title, state, current_step, step_status,
58
+ attempt_count, error_category, cancelled_at, completed_at,
59
+ plan, created_at, updated_at)
60
+ VALUES
61
+ (@id, @projectId, @title, @state, @currentStep, @stepStatus,
62
+ @attemptCount, @errorCategory, @cancelledAt, @completedAt,
63
+ @plan, @createdAt, @updatedAt)`)
64
+ .run(record);
65
+ return record;
66
+ }
67
+ findById(id) {
68
+ const row = this.db
69
+ .prepare(`SELECT ${SELECT_COLS} FROM agent_tasks WHERE id = ?`)
70
+ .get(id);
71
+ return row ? rowToTask(row) : null;
72
+ }
73
+ listByProject(projectId) {
74
+ const rows = projectId
75
+ ? this.db
76
+ .prepare(`SELECT ${SELECT_COLS} FROM agent_tasks WHERE project_id = ? ORDER BY updated_at DESC`)
77
+ .all(projectId)
78
+ : this.db
79
+ .prepare(`SELECT ${SELECT_COLS} FROM agent_tasks WHERE project_id IS NULL ORDER BY updated_at DESC`)
80
+ .all();
81
+ return rows.map(rowToTask);
82
+ }
83
+ listAll() {
84
+ const rows = this.db
85
+ .prepare(`SELECT ${SELECT_COLS} FROM agent_tasks ORDER BY updated_at DESC`)
86
+ .all();
87
+ return rows.map(rowToTask);
88
+ }
89
+ findByState(state) {
90
+ const rows = this.db
91
+ .prepare(`SELECT ${SELECT_COLS} FROM agent_tasks WHERE state = ? ORDER BY updated_at DESC`)
92
+ .all(state);
93
+ return rows.map(rowToTask);
94
+ }
95
+ updateState(id, params) {
96
+ const now = new Date().toISOString();
97
+ const result = this.db
98
+ .prepare(`UPDATE agent_tasks SET
99
+ state = @state,
100
+ current_step = @currentStep,
101
+ step_status = @stepStatus,
102
+ attempt_count = @attemptCount,
103
+ error_category = @errorCategory,
104
+ cancelled_at = @cancelledAt,
105
+ completed_at = @completedAt,
106
+ plan = COALESCE(@plan, plan),
107
+ updated_at = @updatedAt
108
+ WHERE id = @id`)
109
+ .run({
110
+ id,
111
+ state: params.state,
112
+ currentStep: params.currentStep ?? null,
113
+ stepStatus: params.stepStatus ?? 'idle',
114
+ attemptCount: params.attemptCount ?? 0,
115
+ errorCategory: params.errorCategory ?? null,
116
+ cancelledAt: params.cancelledAt ?? null,
117
+ completedAt: params.completedAt ?? null,
118
+ plan: params.plan ?? null,
119
+ updatedAt: now,
120
+ });
121
+ return result.changes > 0;
122
+ }
123
+ deleteById(id) {
124
+ const result = this.db.prepare('DELETE FROM agent_tasks WHERE id = ?').run(id);
125
+ return result.changes > 0;
126
+ }
127
+ }
128
+ //# sourceMappingURL=agentTaskRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentTaskRepository.js","sourceRoot":"","sources":["../../../src/storage/repositories/agentTaskRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * NEXUS AI — Approval Repository
3
+ *
4
+ * Provides SQLite persistence for P5-F human approval requests.
5
+ */
6
+ import type { Database } from 'better-sqlite3';
7
+ import type { ApprovalRequest, ApprovalStatus } from '../../tools/approvalTypes.js';
8
+ export declare class ApprovalRepository {
9
+ private db;
10
+ constructor(db: Database);
11
+ create(request: ApprovalRequest): ApprovalRequest;
12
+ findById(approvalId: string): ApprovalRequest | null;
13
+ findByTaskId(taskId: string): ApprovalRequest[];
14
+ findPendingForStep(taskId: string, stepId: string): ApprovalRequest | null;
15
+ listPending(): ApprovalRequest[];
16
+ updateStatus(approvalId: string, status: ApprovalStatus, resolvedAt?: string, decisionReason?: string): boolean;
17
+ expireStaleApprovals(nowIso: string): number;
18
+ cancelPendingForTask(taskId: string, nowIso: string, reason?: string): number;
19
+ }
20
+ //# sourceMappingURL=approvalRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvalRepository.d.ts","sourceRoot":"","sources":["../../../src/storage/repositories/approvalRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAkDpF,qBAAa,kBAAkB;IACjB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEhC,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe;IA4BjD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQpD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAQ/C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAY1E,WAAW,IAAI,eAAe,EAAE;IAQhC,YAAY,CACV,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO;IAYV,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAY5C,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAyB,GAAG,MAAM;CAWhG"}