@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,373 @@
1
+ /**
2
+ * NEXUS AI — Native Desktop UI Server (P7-D)
3
+ *
4
+ * Lightweight, zero-dependency HTTP API & static asset server built using Node's native `http` module.
5
+ * Serves the Single-Page Desktop Application and exposes REST endpoints bound strictly to 127.0.0.1.
6
+ *
7
+ * SECURITY INVARIANT:
8
+ * The UI Server is a pure proxy/adapter over `ApplicationApi`.
9
+ * It DOES NOT execute direct filesystem mutations, terminal processes, or database queries.
10
+ */
11
+ import * as http from 'http';
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import { fileURLToPath } from 'url';
15
+ import { Logger } from '../common/logger.js';
16
+ const __filename = fileURLToPath(import.meta.url);
17
+ const __dirname = path.dirname(__filename);
18
+ const PUBLIC_DIR = path.join(__dirname, 'public');
19
+ export class UIServer {
20
+ appApi;
21
+ server = null;
22
+ logger;
23
+ listeningPort;
24
+ constructor(appApi, port = 3000, logLevel = 'info') {
25
+ this.appApi = appApi;
26
+ this.listeningPort = port;
27
+ this.logger = new Logger('UIServer', logLevel);
28
+ }
29
+ getPort() {
30
+ return this.listeningPort;
31
+ }
32
+ getHttpServer() {
33
+ return this.server;
34
+ }
35
+ async start() {
36
+ return new Promise((resolve, reject) => {
37
+ this.server = http.createServer(async (req, res) => {
38
+ try {
39
+ await this.handleRequest(req, res);
40
+ }
41
+ catch (err) {
42
+ const msg = err instanceof Error ? err.message : String(err);
43
+ this.logger.error(`Error handling request ${req.url}: ${msg}`);
44
+ if (!res.headersSent) {
45
+ res.writeHead(500, { 'Content-Type': 'application/json' });
46
+ res.end(JSON.stringify({ error: 'Internal Server Error', detail: msg }));
47
+ }
48
+ }
49
+ });
50
+ this.server.on('error', (err) => {
51
+ this.logger.error(`HTTP Server error: ${err.message}`);
52
+ reject(err);
53
+ });
54
+ this.server.listen(this.listeningPort, '127.0.0.1', () => {
55
+ const address = this.server?.address();
56
+ if (typeof address === 'object' && address !== null) {
57
+ this.listeningPort = address.port;
58
+ }
59
+ this.logger.info(`NEXUS Desktop UI Server listening on http://127.0.0.1:${this.listeningPort}`);
60
+ resolve(this.listeningPort);
61
+ });
62
+ });
63
+ }
64
+ async stop() {
65
+ return new Promise((resolve) => {
66
+ if (!this.server) {
67
+ resolve();
68
+ return;
69
+ }
70
+ this.server.close(() => {
71
+ this.logger.info('Desktop UI Server stopped cleanly.');
72
+ this.server = null;
73
+ resolve();
74
+ });
75
+ });
76
+ }
77
+ async handleRequest(req, res) {
78
+ const url = new URL(req.url || '/', `http://${req.headers.host || '127.0.0.1'}`);
79
+ const pathname = url.pathname;
80
+ const method = (req.method || 'GET').toUpperCase();
81
+ // Security headers & CORS for localhost
82
+ res.setHeader('Access-Control-Allow-Origin', `http://127.0.0.1:${this.listeningPort}`);
83
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
84
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
85
+ res.setHeader('X-Content-Type-Options', 'nosniff');
86
+ res.setHeader('X-Frame-Options', 'DENY');
87
+ if (method === 'OPTIONS') {
88
+ res.writeHead(204);
89
+ res.end();
90
+ return;
91
+ }
92
+ // ── API ROUTES ─────────────────────────────────────────────────────────────
93
+ if (pathname.startsWith('/api/')) {
94
+ await this.handleApiRoute(pathname, method, req, res);
95
+ return;
96
+ }
97
+ // ── STATIC ASSETS ──────────────────────────────────────────────────────────
98
+ let filePath = path.join(PUBLIC_DIR, pathname === '/' ? 'index.html' : pathname);
99
+ // Prevent directory traversal out of public/
100
+ if (!path.resolve(filePath).startsWith(path.resolve(PUBLIC_DIR))) {
101
+ res.writeHead(403, { 'Content-Type': 'application/json' });
102
+ res.end(JSON.stringify({ error: 'Access Denied' }));
103
+ return;
104
+ }
105
+ if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) {
106
+ filePath = path.join(PUBLIC_DIR, 'index.html');
107
+ }
108
+ if (!fs.existsSync(filePath)) {
109
+ res.writeHead(404, { 'Content-Type': 'text/plain' });
110
+ res.end('NEXUS UI Asset Not Found');
111
+ return;
112
+ }
113
+ const ext = path.extname(filePath).toLowerCase();
114
+ const mimeTypes = {
115
+ '.html': 'text/html; charset=utf-8',
116
+ '.js': 'application/javascript; charset=utf-8',
117
+ '.css': 'text/css; charset=utf-8',
118
+ '.json': 'application/json',
119
+ '.png': 'image/png',
120
+ '.svg': 'image/svg+xml',
121
+ };
122
+ const contentType = mimeTypes[ext] || 'application/octet-stream';
123
+ res.writeHead(200, { 'Content-Type': contentType });
124
+ fs.createReadStream(filePath).pipe(res);
125
+ }
126
+ async handleApiRoute(pathname, method, req, res) {
127
+ const json = (data, statusCode = 200) => {
128
+ res.writeHead(statusCode, { 'Content-Type': 'application/json; charset=utf-8' });
129
+ res.end(JSON.stringify(data));
130
+ };
131
+ const readBody = async () => {
132
+ return new Promise((resolve, reject) => {
133
+ let body = '';
134
+ req.on('data', (chunk) => { body += chunk; });
135
+ req.on('end', () => {
136
+ if (!body.trim()) {
137
+ resolve({});
138
+ return;
139
+ }
140
+ try {
141
+ resolve(JSON.parse(body));
142
+ }
143
+ catch {
144
+ reject(new Error('Invalid JSON request payload'));
145
+ }
146
+ });
147
+ req.on('error', reject);
148
+ });
149
+ };
150
+ // 1. GET /api/health — System health report
151
+ if (pathname === '/api/health' && method === 'GET') {
152
+ const report = this.appApi.getHealthReport();
153
+ json(report);
154
+ return;
155
+ }
156
+ // 2. GET /api/first-run — First-run 9-check report
157
+ if (pathname === '/api/first-run' && method === 'GET') {
158
+ const report = await this.appApi.getFirstRunReport();
159
+ json(report);
160
+ return;
161
+ }
162
+ // 3. POST /api/workspace/validate — Safe workspace path validation
163
+ if (pathname === '/api/workspace/validate' && method === 'POST') {
164
+ const body = await readBody();
165
+ const rawPath = String(body.path || '');
166
+ const result = this.appApi.validateWorkspace(rawPath);
167
+ json(result);
168
+ return;
169
+ }
170
+ // 4. GET /api/runtime — AI runtime health & models
171
+ if (pathname === '/api/runtime' && method === 'GET') {
172
+ const health = await this.appApi.intelligence.runtimeManager.getHealth();
173
+ const models = await this.appApi.intelligence.runtimeManager.listModels();
174
+ json({ health, models });
175
+ return;
176
+ }
177
+ // 5. GET /api/models — ModelRegistry available models
178
+ if (pathname === '/api/models' && method === 'GET') {
179
+ const models = this.appApi.intelligence.registry?.getAvailableModels() ?? [];
180
+ json({ models });
181
+ return;
182
+ }
183
+ // 6. GET /api/tasks — List all tasks
184
+ if (pathname === '/api/tasks' && method === 'GET') {
185
+ const tasks = this.appApi.tasks?.listTasks() ?? [];
186
+ json({ tasks });
187
+ return;
188
+ }
189
+ // 7. GET /api/tasks/:id — Get task details
190
+ if (pathname.startsWith('/api/tasks/') && method === 'GET') {
191
+ const id = pathname.substring('/api/tasks/'.length);
192
+ try {
193
+ const task = this.appApi.tasks.getTask(id);
194
+ json({ task });
195
+ }
196
+ catch {
197
+ json({ error: `Task '${id}' not found` }, 404);
198
+ }
199
+ return;
200
+ }
201
+ // 8. POST /api/tasks — Create task and start background planning/execution pipeline asynchronously
202
+ if (pathname === '/api/tasks' && method === 'POST') {
203
+ const body = await readBody();
204
+ const prompt = String(body.prompt || body.title || '').trim();
205
+ if (!prompt) {
206
+ json({ error: 'Task prompt or title is required' }, 400);
207
+ return;
208
+ }
209
+ if (!this.appApi.planner || !this.appApi.execution) {
210
+ json({ error: 'Agent subsystems (planner/execution) are not initialized' }, 503);
211
+ return;
212
+ }
213
+ // Step 1: Create task
214
+ const title = prompt.length > 50 ? `${prompt.slice(0, 47)}...` : prompt;
215
+ const task = this.appApi.tasks.createTask({ title });
216
+ // Step 2: Launch planning & execution pipeline asynchronously in background
217
+ (async () => {
218
+ try {
219
+ this.appApi.tasks.transitionTask(task.id, { targetState: 'planning' });
220
+ const synthesis = await this.appApi.planner.synthesize(task.id, {
221
+ taskGoal: prompt,
222
+ temperature: 0.2,
223
+ });
224
+ if (!synthesis.success || !synthesis.plan) {
225
+ this.appApi.tasks.failTask(task.id, {
226
+ errorCategory: synthesis.errorCategory || 'PLAN_VALIDATION_FAILED',
227
+ });
228
+ return;
229
+ }
230
+ // Persist plan steps in SQLite database
231
+ const steps = synthesis.plan.steps;
232
+ this.appApi.tasks.setTaskPlan(task.id, JSON.stringify(steps));
233
+ // Step 3: Run execution loop (may pause at awaiting_approval)
234
+ await this.appApi.execution.runExecutionLoop(task.id, steps);
235
+ }
236
+ catch (err) {
237
+ const msg = err instanceof Error ? err.message : String(err);
238
+ this.logger.error(`Background task execution failed for task '${task.id}': ${msg}`);
239
+ try {
240
+ this.appApi.tasks.failTask(task.id, { errorCategory: 'EXECUTION_LOOP_FAILED' });
241
+ }
242
+ catch {
243
+ /* ignore transition errors if already terminal */
244
+ }
245
+ }
246
+ })();
247
+ json({ task: this.appApi.tasks.getTask(task.id) });
248
+ return;
249
+ }
250
+ // 9. GET /api/approvals — List pending approval requests
251
+ if (pathname === '/api/approvals' && method === 'GET') {
252
+ const approvals = this.appApi.approvals?.listPendingApprovals() ?? [];
253
+ json({ approvals });
254
+ return;
255
+ }
256
+ // 10. POST /api/approvals/:id/respond — Respond to an approval request and resume execution from SQLite plan
257
+ if (pathname.startsWith('/api/approvals/') && pathname.endsWith('/respond') && method === 'POST') {
258
+ const parts = pathname.split('/');
259
+ const approvalId = parts[3];
260
+ const body = await readBody();
261
+ const decision = String(body.decision || '').toUpperCase();
262
+ if (!['APPROVED', 'REJECTED'].includes(decision)) {
263
+ json({ error: 'Decision must be APPROVED or REJECTED' }, 400);
264
+ return;
265
+ }
266
+ let updatedApproval;
267
+ try {
268
+ updatedApproval = this.appApi.approvals?.respondToApproval(approvalId, {
269
+ decision: decision,
270
+ reason: body.reason ? String(body.reason) : undefined,
271
+ });
272
+ }
273
+ catch (err) {
274
+ const msg = err instanceof Error ? err.message : String(err);
275
+ json({ error: msg }, 400);
276
+ return;
277
+ }
278
+ // If decision was APPROVED and execution service is available, resume the execution loop using persisted plan steps from SQLite
279
+ if (decision === 'APPROVED' && updatedApproval && this.appApi.execution) {
280
+ const taskId = updatedApproval.taskId;
281
+ const task = this.appApi.tasks.getTask(taskId);
282
+ let planSteps = [];
283
+ if (task.plan) {
284
+ try {
285
+ const parsed = JSON.parse(task.plan);
286
+ planSteps = Array.isArray(parsed) ? parsed : (parsed.steps || []);
287
+ }
288
+ catch {
289
+ this.logger.error(`Failed to parse persisted plan for task '${taskId}'`);
290
+ }
291
+ }
292
+ if (planSteps.length > 0) {
293
+ try {
294
+ const resumedTask = await this.appApi.execution.runExecutionLoop(taskId, planSteps);
295
+ json({ approval: updatedApproval, task: resumedTask });
296
+ return;
297
+ }
298
+ catch (err) {
299
+ const msg = err instanceof Error ? err.message : String(err);
300
+ this.logger.error(`Execution resume failed for task '${taskId}' after approval: ${msg}`);
301
+ // Fall through to return approval without resumed task
302
+ }
303
+ }
304
+ else {
305
+ this.logger.warn(`No persisted plan steps found in SQLite for task '${taskId}' — cannot resume execution loop after approval.`);
306
+ }
307
+ }
308
+ json({ approval: updatedApproval });
309
+ return;
310
+ }
311
+ // 11. GET /api/workspace/tree — Read-only directory tree via ToolGateway
312
+ if (pathname === '/api/workspace/tree' && method === 'GET') {
313
+ let sessionTask = (this.appApi.tasks?.listTasks() || [])[0];
314
+ if (!sessionTask) {
315
+ sessionTask = this.appApi.tasks.createTask({ title: 'Desktop UI Exploration Session' });
316
+ }
317
+ const result = await this.appApi.tools.executeTool({
318
+ requestId: `ui-tree-${Date.now()}`,
319
+ taskId: sessionTask.id,
320
+ toolId: 'workspace_tree',
321
+ requestedCapabilities: ['filesystem.read'],
322
+ params: {},
323
+ });
324
+ json(result);
325
+ return;
326
+ }
327
+ // 12. POST /api/workspace/file — Read file content via ToolGateway
328
+ if (pathname === '/api/workspace/file' && method === 'POST') {
329
+ let sessionTask = (this.appApi.tasks?.listTasks() || [])[0];
330
+ if (!sessionTask) {
331
+ sessionTask = this.appApi.tasks.createTask({ title: 'Desktop UI Exploration Session' });
332
+ }
333
+ const body = await readBody();
334
+ const relPath = String(body.relativePath || body.path || '');
335
+ const result = await this.appApi.tools.executeTool({
336
+ requestId: `ui-read-${Date.now()}`,
337
+ taskId: sessionTask.id,
338
+ toolId: 'filesystem_read',
339
+ requestedCapabilities: ['filesystem.read'],
340
+ params: { relativePath: relPath },
341
+ });
342
+ json(result);
343
+ return;
344
+ }
345
+ // 13. GET /api/knowledge/collections — RAG collections
346
+ if (pathname === '/api/knowledge/collections' && method === 'GET') {
347
+ const collections = this.appApi.knowledge?.rag.listCollections() ?? [];
348
+ json({ collections });
349
+ return;
350
+ }
351
+ // 14. POST /api/knowledge/ingest — Ingest document into RAG
352
+ if (pathname === '/api/knowledge/ingest' && method === 'POST') {
353
+ const body = await readBody();
354
+ const filename = String(body.filename || 'untitled.md');
355
+ const text = String(body.text || '');
356
+ const collectionId = body.collectionId
357
+ ? String(body.collectionId)
358
+ : this.appApi.knowledge.rag.getOrCreateDefaultCollection().id;
359
+ const doc = await this.appApi.knowledge.rag.ingestText(filename, text, collectionId);
360
+ json({ document: doc });
361
+ return;
362
+ }
363
+ // 15. GET /api/activity — Activity timeline
364
+ if (pathname === '/api/activity' && method === 'GET') {
365
+ const timeline = this.appApi.getActivityTimeline();
366
+ json({ activity: timeline });
367
+ return;
368
+ }
369
+ // Route not found
370
+ json({ error: `API route not found: ${method} ${pathname}` }, 404);
371
+ }
372
+ }
373
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@nexus-ai-nexoralabs/cli",
3
+ "version": "0.1.0",
4
+ "description": "NEXUS AI — Local-first AI workstation CLI. Think, plan, execute — powered by local AI runtime.",
5
+ "main": "dist/cli/bin.js",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "bin": {
10
+ "nexus": "./dist/cli/bin.js"
11
+ },
12
+ "type": "module",
13
+ "preferGlobal": true,
14
+ "engines": {
15
+ "node": ">=20.0.0"
16
+ },
17
+ "files": [
18
+ "dist/",
19
+ "README.md",
20
+ "LICENSE",
21
+ ".env.example"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc && node -e \"fs.cpSync('src/ui/public', 'dist/ui/public', {recursive: true})\"",
25
+ "start": "node dist/cli/bin.js",
26
+ "dev": "tsx src/cli/bin.ts",
27
+ "agent": "tsx src/cli/main.ts",
28
+ "desktop:dev": "tsx src/desktop/main.ts",
29
+ "desktop:build": "npm run build",
30
+ "desktop:package": "electron-builder --dir",
31
+ "desktop:installer": "electron-builder",
32
+ "typecheck": "tsc --noEmit",
33
+ "lint": "eslint \"src/**/*.ts\"",
34
+ "test": "vitest run",
35
+ "pack:audit": "npm pack --dry-run"
36
+ },
37
+ "keywords": [
38
+ "nexus-ai",
39
+ "local-ai",
40
+ "ollama",
41
+ "rag",
42
+ "agents",
43
+ "workstation",
44
+ "cli"
45
+ ],
46
+ "author": "NEXUS AI Team",
47
+ "license": "MIT",
48
+ "devDependencies": {
49
+ "@types/better-sqlite3": "^9.6.0",
50
+ "@types/node": "^22.13.4",
51
+ "@typescript-eslint/eslint-plugin": "^8.24.0",
52
+ "@typescript-eslint/parser": "^8.24.0",
53
+ "electron": "^43.4.1",
54
+ "electron-builder": "^26.15.3",
55
+ "eslint": "^9.20.1",
56
+ "tsx": "^4.19.3",
57
+ "typescript": "^5.7.3",
58
+ "vitest": "^3.0.6"
59
+ },
60
+ "dependencies": {
61
+ "better-sqlite3": "^13.0.3"
62
+ }
63
+ }