@gzoo/cortex 0.5.9

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 (377) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CLAUDE.md +180 -0
  3. package/CONTRIBUTING.md +52 -0
  4. package/LICENSE +21 -0
  5. package/README.md +259 -0
  6. package/dist/cortex-mcp.mjs +3153 -0
  7. package/dist/cortex.mjs +8213 -0
  8. package/icon.png +0 -0
  9. package/logo.png +0 -0
  10. package/package.json +86 -0
  11. package/packages/cli/dist/commands/config.d.ts +4 -0
  12. package/packages/cli/dist/commands/config.d.ts.map +1 -0
  13. package/packages/cli/dist/commands/config.js +419 -0
  14. package/packages/cli/dist/commands/config.js.map +1 -0
  15. package/packages/cli/dist/commands/contradictions.d.ts +3 -0
  16. package/packages/cli/dist/commands/contradictions.d.ts.map +1 -0
  17. package/packages/cli/dist/commands/contradictions.js +74 -0
  18. package/packages/cli/dist/commands/contradictions.js.map +1 -0
  19. package/packages/cli/dist/commands/costs.d.ts +3 -0
  20. package/packages/cli/dist/commands/costs.d.ts.map +1 -0
  21. package/packages/cli/dist/commands/costs.js +168 -0
  22. package/packages/cli/dist/commands/costs.js.map +1 -0
  23. package/packages/cli/dist/commands/db.d.ts +3 -0
  24. package/packages/cli/dist/commands/db.d.ts.map +1 -0
  25. package/packages/cli/dist/commands/db.js +139 -0
  26. package/packages/cli/dist/commands/db.js.map +1 -0
  27. package/packages/cli/dist/commands/find.d.ts +3 -0
  28. package/packages/cli/dist/commands/find.d.ts.map +1 -0
  29. package/packages/cli/dist/commands/find.js +139 -0
  30. package/packages/cli/dist/commands/find.js.map +1 -0
  31. package/packages/cli/dist/commands/ingest.d.ts +3 -0
  32. package/packages/cli/dist/commands/ingest.d.ts.map +1 -0
  33. package/packages/cli/dist/commands/ingest.js +179 -0
  34. package/packages/cli/dist/commands/ingest.js.map +1 -0
  35. package/packages/cli/dist/commands/init.d.ts +3 -0
  36. package/packages/cli/dist/commands/init.d.ts.map +1 -0
  37. package/packages/cli/dist/commands/init.js +285 -0
  38. package/packages/cli/dist/commands/init.js.map +1 -0
  39. package/packages/cli/dist/commands/mcp.d.ts +3 -0
  40. package/packages/cli/dist/commands/mcp.d.ts.map +1 -0
  41. package/packages/cli/dist/commands/mcp.js +65 -0
  42. package/packages/cli/dist/commands/mcp.js.map +1 -0
  43. package/packages/cli/dist/commands/models.d.ts +3 -0
  44. package/packages/cli/dist/commands/models.d.ts.map +1 -0
  45. package/packages/cli/dist/commands/models.js +245 -0
  46. package/packages/cli/dist/commands/models.js.map +1 -0
  47. package/packages/cli/dist/commands/privacy.d.ts +3 -0
  48. package/packages/cli/dist/commands/privacy.d.ts.map +1 -0
  49. package/packages/cli/dist/commands/privacy.js +140 -0
  50. package/packages/cli/dist/commands/privacy.js.map +1 -0
  51. package/packages/cli/dist/commands/projects.d.ts +3 -0
  52. package/packages/cli/dist/commands/projects.d.ts.map +1 -0
  53. package/packages/cli/dist/commands/projects.js +142 -0
  54. package/packages/cli/dist/commands/projects.js.map +1 -0
  55. package/packages/cli/dist/commands/query.d.ts +3 -0
  56. package/packages/cli/dist/commands/query.d.ts.map +1 -0
  57. package/packages/cli/dist/commands/query.js +153 -0
  58. package/packages/cli/dist/commands/query.js.map +1 -0
  59. package/packages/cli/dist/commands/report.d.ts +3 -0
  60. package/packages/cli/dist/commands/report.d.ts.map +1 -0
  61. package/packages/cli/dist/commands/report.js +144 -0
  62. package/packages/cli/dist/commands/report.js.map +1 -0
  63. package/packages/cli/dist/commands/resolve.d.ts +3 -0
  64. package/packages/cli/dist/commands/resolve.d.ts.map +1 -0
  65. package/packages/cli/dist/commands/resolve.js +119 -0
  66. package/packages/cli/dist/commands/resolve.js.map +1 -0
  67. package/packages/cli/dist/commands/serve.d.ts +3 -0
  68. package/packages/cli/dist/commands/serve.d.ts.map +1 -0
  69. package/packages/cli/dist/commands/serve.js +108 -0
  70. package/packages/cli/dist/commands/serve.js.map +1 -0
  71. package/packages/cli/dist/commands/status.d.ts +3 -0
  72. package/packages/cli/dist/commands/status.d.ts.map +1 -0
  73. package/packages/cli/dist/commands/status.js +230 -0
  74. package/packages/cli/dist/commands/status.js.map +1 -0
  75. package/packages/cli/dist/commands/stop.d.ts +5 -0
  76. package/packages/cli/dist/commands/stop.d.ts.map +1 -0
  77. package/packages/cli/dist/commands/stop.js +80 -0
  78. package/packages/cli/dist/commands/stop.js.map +1 -0
  79. package/packages/cli/dist/commands/watch.d.ts +3 -0
  80. package/packages/cli/dist/commands/watch.d.ts.map +1 -0
  81. package/packages/cli/dist/commands/watch.js +235 -0
  82. package/packages/cli/dist/commands/watch.js.map +1 -0
  83. package/packages/cli/dist/index.d.ts +9 -0
  84. package/packages/cli/dist/index.d.ts.map +1 -0
  85. package/packages/cli/dist/index.js +68 -0
  86. package/packages/cli/dist/index.js.map +1 -0
  87. package/packages/cli/package.json +37 -0
  88. package/packages/cli/tsconfig.json +16 -0
  89. package/packages/core/dist/config/loader.d.ts +11 -0
  90. package/packages/core/dist/config/loader.d.ts.map +1 -0
  91. package/packages/core/dist/config/loader.js +133 -0
  92. package/packages/core/dist/config/loader.js.map +1 -0
  93. package/packages/core/dist/config/project-registry.d.ts +71 -0
  94. package/packages/core/dist/config/project-registry.d.ts.map +1 -0
  95. package/packages/core/dist/config/project-registry.js +89 -0
  96. package/packages/core/dist/config/project-registry.js.map +1 -0
  97. package/packages/core/dist/config/schema.d.ts +909 -0
  98. package/packages/core/dist/config/schema.d.ts.map +1 -0
  99. package/packages/core/dist/config/schema.js +125 -0
  100. package/packages/core/dist/config/schema.js.map +1 -0
  101. package/packages/core/dist/errors/cortex-error.d.ts +58 -0
  102. package/packages/core/dist/errors/cortex-error.d.ts.map +1 -0
  103. package/packages/core/dist/errors/cortex-error.js +68 -0
  104. package/packages/core/dist/errors/cortex-error.js.map +1 -0
  105. package/packages/core/dist/events/event-bus.d.ts +10 -0
  106. package/packages/core/dist/events/event-bus.d.ts.map +1 -0
  107. package/packages/core/dist/events/event-bus.js +42 -0
  108. package/packages/core/dist/events/event-bus.js.map +1 -0
  109. package/packages/core/dist/index.d.ts +8 -0
  110. package/packages/core/dist/index.d.ts.map +1 -0
  111. package/packages/core/dist/index.js +22 -0
  112. package/packages/core/dist/index.js.map +1 -0
  113. package/packages/core/dist/logger.d.ts +16 -0
  114. package/packages/core/dist/logger.d.ts.map +1 -0
  115. package/packages/core/dist/logger.js +57 -0
  116. package/packages/core/dist/logger.js.map +1 -0
  117. package/packages/core/dist/types/config.d.ts +107 -0
  118. package/packages/core/dist/types/config.d.ts.map +1 -0
  119. package/packages/core/dist/types/config.js +2 -0
  120. package/packages/core/dist/types/config.js.map +1 -0
  121. package/packages/core/dist/types/entity.d.ts +35 -0
  122. package/packages/core/dist/types/entity.d.ts.map +1 -0
  123. package/packages/core/dist/types/entity.js +2 -0
  124. package/packages/core/dist/types/entity.js.map +1 -0
  125. package/packages/core/dist/types/events.d.ts +76 -0
  126. package/packages/core/dist/types/events.d.ts.map +1 -0
  127. package/packages/core/dist/types/events.js +2 -0
  128. package/packages/core/dist/types/events.js.map +1 -0
  129. package/packages/core/dist/types/file.d.ts +15 -0
  130. package/packages/core/dist/types/file.d.ts.map +1 -0
  131. package/packages/core/dist/types/file.js +2 -0
  132. package/packages/core/dist/types/file.js.map +1 -0
  133. package/packages/core/dist/types/graph.d.ts +93 -0
  134. package/packages/core/dist/types/graph.d.ts.map +1 -0
  135. package/packages/core/dist/types/graph.js +2 -0
  136. package/packages/core/dist/types/graph.js.map +1 -0
  137. package/packages/core/dist/types/index.d.ts +10 -0
  138. package/packages/core/dist/types/index.d.ts.map +1 -0
  139. package/packages/core/dist/types/index.js +2 -0
  140. package/packages/core/dist/types/index.js.map +1 -0
  141. package/packages/core/dist/types/llm.d.ts +95 -0
  142. package/packages/core/dist/types/llm.d.ts.map +1 -0
  143. package/packages/core/dist/types/llm.js +10 -0
  144. package/packages/core/dist/types/llm.js.map +1 -0
  145. package/packages/core/dist/types/project.d.ts +11 -0
  146. package/packages/core/dist/types/project.d.ts.map +1 -0
  147. package/packages/core/dist/types/project.js +2 -0
  148. package/packages/core/dist/types/project.js.map +1 -0
  149. package/packages/core/dist/types/relationship.d.ts +26 -0
  150. package/packages/core/dist/types/relationship.d.ts.map +1 -0
  151. package/packages/core/dist/types/relationship.js +2 -0
  152. package/packages/core/dist/types/relationship.js.map +1 -0
  153. package/packages/core/package.json +22 -0
  154. package/packages/core/tsconfig.json +9 -0
  155. package/packages/graph/dist/index.d.ts +4 -0
  156. package/packages/graph/dist/index.d.ts.map +1 -0
  157. package/packages/graph/dist/index.js +4 -0
  158. package/packages/graph/dist/index.js.map +1 -0
  159. package/packages/graph/dist/migrations/001-initial.d.ts +4 -0
  160. package/packages/graph/dist/migrations/001-initial.d.ts.map +1 -0
  161. package/packages/graph/dist/migrations/001-initial.js +134 -0
  162. package/packages/graph/dist/migrations/001-initial.js.map +1 -0
  163. package/packages/graph/dist/query-engine.d.ts +35 -0
  164. package/packages/graph/dist/query-engine.d.ts.map +1 -0
  165. package/packages/graph/dist/query-engine.js +185 -0
  166. package/packages/graph/dist/query-engine.js.map +1 -0
  167. package/packages/graph/dist/sqlite-store.d.ts +125 -0
  168. package/packages/graph/dist/sqlite-store.d.ts.map +1 -0
  169. package/packages/graph/dist/sqlite-store.js +632 -0
  170. package/packages/graph/dist/sqlite-store.js.map +1 -0
  171. package/packages/graph/dist/vector-store.d.ts +27 -0
  172. package/packages/graph/dist/vector-store.d.ts.map +1 -0
  173. package/packages/graph/dist/vector-store.js +85 -0
  174. package/packages/graph/dist/vector-store.js.map +1 -0
  175. package/packages/graph/package.json +27 -0
  176. package/packages/graph/tsconfig.json +12 -0
  177. package/packages/ingest/dist/chunker.d.ts +21 -0
  178. package/packages/ingest/dist/chunker.d.ts.map +1 -0
  179. package/packages/ingest/dist/chunker.js +118 -0
  180. package/packages/ingest/dist/chunker.js.map +1 -0
  181. package/packages/ingest/dist/index.d.ts +11 -0
  182. package/packages/ingest/dist/index.d.ts.map +1 -0
  183. package/packages/ingest/dist/index.js +14 -0
  184. package/packages/ingest/dist/index.js.map +1 -0
  185. package/packages/ingest/dist/parsers/conversation.d.ts +10 -0
  186. package/packages/ingest/dist/parsers/conversation.d.ts.map +1 -0
  187. package/packages/ingest/dist/parsers/conversation.js +150 -0
  188. package/packages/ingest/dist/parsers/conversation.js.map +1 -0
  189. package/packages/ingest/dist/parsers/index.d.ts +11 -0
  190. package/packages/ingest/dist/parsers/index.d.ts.map +1 -0
  191. package/packages/ingest/dist/parsers/index.js +42 -0
  192. package/packages/ingest/dist/parsers/index.js.map +1 -0
  193. package/packages/ingest/dist/parsers/json-parser.d.ts +6 -0
  194. package/packages/ingest/dist/parsers/json-parser.d.ts.map +1 -0
  195. package/packages/ingest/dist/parsers/json-parser.js +114 -0
  196. package/packages/ingest/dist/parsers/json-parser.js.map +1 -0
  197. package/packages/ingest/dist/parsers/markdown.d.ts +6 -0
  198. package/packages/ingest/dist/parsers/markdown.d.ts.map +1 -0
  199. package/packages/ingest/dist/parsers/markdown.js +116 -0
  200. package/packages/ingest/dist/parsers/markdown.js.map +1 -0
  201. package/packages/ingest/dist/parsers/types.d.ts +18 -0
  202. package/packages/ingest/dist/parsers/types.d.ts.map +1 -0
  203. package/packages/ingest/dist/parsers/types.js +2 -0
  204. package/packages/ingest/dist/parsers/types.js.map +1 -0
  205. package/packages/ingest/dist/parsers/typescript.d.ts +11 -0
  206. package/packages/ingest/dist/parsers/typescript.d.ts.map +1 -0
  207. package/packages/ingest/dist/parsers/typescript.js +197 -0
  208. package/packages/ingest/dist/parsers/typescript.js.map +1 -0
  209. package/packages/ingest/dist/parsers/yaml-parser.d.ts +6 -0
  210. package/packages/ingest/dist/parsers/yaml-parser.d.ts.map +1 -0
  211. package/packages/ingest/dist/parsers/yaml-parser.js +52 -0
  212. package/packages/ingest/dist/parsers/yaml-parser.js.map +1 -0
  213. package/packages/ingest/dist/pipeline.d.ts +30 -0
  214. package/packages/ingest/dist/pipeline.d.ts.map +1 -0
  215. package/packages/ingest/dist/pipeline.js +311 -0
  216. package/packages/ingest/dist/pipeline.js.map +1 -0
  217. package/packages/ingest/dist/post-ingest.d.ts +25 -0
  218. package/packages/ingest/dist/post-ingest.d.ts.map +1 -0
  219. package/packages/ingest/dist/post-ingest.js +171 -0
  220. package/packages/ingest/dist/post-ingest.js.map +1 -0
  221. package/packages/ingest/dist/watcher.d.ts +26 -0
  222. package/packages/ingest/dist/watcher.d.ts.map +1 -0
  223. package/packages/ingest/dist/watcher.js +142 -0
  224. package/packages/ingest/dist/watcher.js.map +1 -0
  225. package/packages/ingest/package.json +30 -0
  226. package/packages/ingest/tsconfig.json +14 -0
  227. package/packages/llm/dist/cache.d.ts +26 -0
  228. package/packages/llm/dist/cache.d.ts.map +1 -0
  229. package/packages/llm/dist/cache.js +60 -0
  230. package/packages/llm/dist/cache.js.map +1 -0
  231. package/packages/llm/dist/index.d.ts +15 -0
  232. package/packages/llm/dist/index.d.ts.map +1 -0
  233. package/packages/llm/dist/index.js +19 -0
  234. package/packages/llm/dist/index.js.map +1 -0
  235. package/packages/llm/dist/output-parser.d.ts +4 -0
  236. package/packages/llm/dist/output-parser.d.ts.map +1 -0
  237. package/packages/llm/dist/output-parser.js +207 -0
  238. package/packages/llm/dist/output-parser.js.map +1 -0
  239. package/packages/llm/dist/prompts/context-ranking.d.ts +33 -0
  240. package/packages/llm/dist/prompts/context-ranking.d.ts.map +1 -0
  241. package/packages/llm/dist/prompts/context-ranking.js +30 -0
  242. package/packages/llm/dist/prompts/context-ranking.js.map +1 -0
  243. package/packages/llm/dist/prompts/contradiction-detection.d.ts +46 -0
  244. package/packages/llm/dist/prompts/contradiction-detection.d.ts.map +1 -0
  245. package/packages/llm/dist/prompts/contradiction-detection.js +45 -0
  246. package/packages/llm/dist/prompts/contradiction-detection.js.map +1 -0
  247. package/packages/llm/dist/prompts/conversational-query.d.ts +29 -0
  248. package/packages/llm/dist/prompts/conversational-query.d.ts.map +1 -0
  249. package/packages/llm/dist/prompts/conversational-query.js +34 -0
  250. package/packages/llm/dist/prompts/conversational-query.js.map +1 -0
  251. package/packages/llm/dist/prompts/entity-extraction.d.ts +67 -0
  252. package/packages/llm/dist/prompts/entity-extraction.d.ts.map +1 -0
  253. package/packages/llm/dist/prompts/entity-extraction.js +76 -0
  254. package/packages/llm/dist/prompts/entity-extraction.js.map +1 -0
  255. package/packages/llm/dist/prompts/follow-up-generation.d.ts +25 -0
  256. package/packages/llm/dist/prompts/follow-up-generation.d.ts.map +1 -0
  257. package/packages/llm/dist/prompts/follow-up-generation.js +25 -0
  258. package/packages/llm/dist/prompts/follow-up-generation.js.map +1 -0
  259. package/packages/llm/dist/prompts/merge-detection.d.ts +41 -0
  260. package/packages/llm/dist/prompts/merge-detection.d.ts.map +1 -0
  261. package/packages/llm/dist/prompts/merge-detection.js +31 -0
  262. package/packages/llm/dist/prompts/merge-detection.js.map +1 -0
  263. package/packages/llm/dist/prompts/relationship-inference.d.ts +60 -0
  264. package/packages/llm/dist/prompts/relationship-inference.d.ts.map +1 -0
  265. package/packages/llm/dist/prompts/relationship-inference.js +66 -0
  266. package/packages/llm/dist/prompts/relationship-inference.js.map +1 -0
  267. package/packages/llm/dist/providers/anthropic.d.ts +39 -0
  268. package/packages/llm/dist/providers/anthropic.d.ts.map +1 -0
  269. package/packages/llm/dist/providers/anthropic.js +157 -0
  270. package/packages/llm/dist/providers/anthropic.js.map +1 -0
  271. package/packages/llm/dist/providers/ollama.d.ts +52 -0
  272. package/packages/llm/dist/providers/ollama.d.ts.map +1 -0
  273. package/packages/llm/dist/providers/ollama.js +297 -0
  274. package/packages/llm/dist/providers/ollama.js.map +1 -0
  275. package/packages/llm/dist/providers/openai-compatible.d.ts +40 -0
  276. package/packages/llm/dist/providers/openai-compatible.d.ts.map +1 -0
  277. package/packages/llm/dist/providers/openai-compatible.js +164 -0
  278. package/packages/llm/dist/providers/openai-compatible.js.map +1 -0
  279. package/packages/llm/dist/router.d.ts +87 -0
  280. package/packages/llm/dist/router.d.ts.map +1 -0
  281. package/packages/llm/dist/router.js +399 -0
  282. package/packages/llm/dist/router.js.map +1 -0
  283. package/packages/llm/dist/token-tracker.d.ts +24 -0
  284. package/packages/llm/dist/token-tracker.d.ts.map +1 -0
  285. package/packages/llm/dist/token-tracker.js +114 -0
  286. package/packages/llm/dist/token-tracker.js.map +1 -0
  287. package/packages/llm/package.json +25 -0
  288. package/packages/llm/tsconfig.json +12 -0
  289. package/packages/mcp/dist/index.d.ts +10 -0
  290. package/packages/mcp/dist/index.d.ts.map +1 -0
  291. package/packages/mcp/dist/index.js +33 -0
  292. package/packages/mcp/dist/index.js.map +1 -0
  293. package/packages/mcp/dist/server.d.ts +5 -0
  294. package/packages/mcp/dist/server.d.ts.map +1 -0
  295. package/packages/mcp/dist/server.js +87 -0
  296. package/packages/mcp/dist/server.js.map +1 -0
  297. package/packages/mcp/dist/store-factory.d.ts +8 -0
  298. package/packages/mcp/dist/store-factory.d.ts.map +1 -0
  299. package/packages/mcp/dist/store-factory.js +24 -0
  300. package/packages/mcp/dist/store-factory.js.map +1 -0
  301. package/packages/mcp/dist/tools/contradictions.d.ts +14 -0
  302. package/packages/mcp/dist/tools/contradictions.d.ts.map +1 -0
  303. package/packages/mcp/dist/tools/contradictions.js +33 -0
  304. package/packages/mcp/dist/tools/contradictions.js.map +1 -0
  305. package/packages/mcp/dist/tools/find.d.ts +37 -0
  306. package/packages/mcp/dist/tools/find.d.ts.map +1 -0
  307. package/packages/mcp/dist/tools/find.js +52 -0
  308. package/packages/mcp/dist/tools/find.js.map +1 -0
  309. package/packages/mcp/dist/tools/projects.d.ts +16 -0
  310. package/packages/mcp/dist/tools/projects.d.ts.map +1 -0
  311. package/packages/mcp/dist/tools/projects.js +17 -0
  312. package/packages/mcp/dist/tools/projects.js.map +1 -0
  313. package/packages/mcp/dist/tools/query.d.ts +20 -0
  314. package/packages/mcp/dist/tools/query.d.ts.map +1 -0
  315. package/packages/mcp/dist/tools/query.js +65 -0
  316. package/packages/mcp/dist/tools/query.js.map +1 -0
  317. package/packages/mcp/dist/tools/status.d.ts +15 -0
  318. package/packages/mcp/dist/tools/status.d.ts.map +1 -0
  319. package/packages/mcp/dist/tools/status.js +17 -0
  320. package/packages/mcp/dist/tools/status.js.map +1 -0
  321. package/packages/mcp/package.json +27 -0
  322. package/packages/mcp/tsconfig.json +14 -0
  323. package/packages/server/dist/index.d.ts +17 -0
  324. package/packages/server/dist/index.d.ts.map +1 -0
  325. package/packages/server/dist/index.js +170 -0
  326. package/packages/server/dist/index.js.map +1 -0
  327. package/packages/server/dist/middleware/auth.d.ts +9 -0
  328. package/packages/server/dist/middleware/auth.d.ts.map +1 -0
  329. package/packages/server/dist/middleware/auth.js +94 -0
  330. package/packages/server/dist/middleware/auth.js.map +1 -0
  331. package/packages/server/dist/routes/contradictions.d.ts +4 -0
  332. package/packages/server/dist/routes/contradictions.d.ts.map +1 -0
  333. package/packages/server/dist/routes/contradictions.js +63 -0
  334. package/packages/server/dist/routes/contradictions.js.map +1 -0
  335. package/packages/server/dist/routes/entities.d.ts +4 -0
  336. package/packages/server/dist/routes/entities.d.ts.map +1 -0
  337. package/packages/server/dist/routes/entities.js +61 -0
  338. package/packages/server/dist/routes/entities.js.map +1 -0
  339. package/packages/server/dist/routes/projects.d.ts +4 -0
  340. package/packages/server/dist/routes/projects.d.ts.map +1 -0
  341. package/packages/server/dist/routes/projects.js +35 -0
  342. package/packages/server/dist/routes/projects.js.map +1 -0
  343. package/packages/server/dist/routes/query.d.ts +4 -0
  344. package/packages/server/dist/routes/query.d.ts.map +1 -0
  345. package/packages/server/dist/routes/query.js +93 -0
  346. package/packages/server/dist/routes/query.js.map +1 -0
  347. package/packages/server/dist/routes/relationships.d.ts +4 -0
  348. package/packages/server/dist/routes/relationships.d.ts.map +1 -0
  349. package/packages/server/dist/routes/relationships.js +52 -0
  350. package/packages/server/dist/routes/relationships.js.map +1 -0
  351. package/packages/server/dist/routes/status.d.ts +4 -0
  352. package/packages/server/dist/routes/status.d.ts.map +1 -0
  353. package/packages/server/dist/routes/status.js +85 -0
  354. package/packages/server/dist/routes/status.js.map +1 -0
  355. package/packages/server/dist/ws/event-relay.d.ts +10 -0
  356. package/packages/server/dist/ws/event-relay.d.ts.map +1 -0
  357. package/packages/server/dist/ws/event-relay.js +83 -0
  358. package/packages/server/dist/ws/event-relay.js.map +1 -0
  359. package/packages/server/package.json +32 -0
  360. package/packages/server/tsconfig.json +15 -0
  361. package/packages/web/dist/assets/index-Bxjfq4I0.css +1 -0
  362. package/packages/web/dist/assets/index-MqwNS5FD.js +248 -0
  363. package/packages/web/dist/assets/index-MqwNS5FD.js.map +1 -0
  364. package/packages/web/dist/cortex-icon.svg +9 -0
  365. package/packages/web/dist/icon.png +0 -0
  366. package/packages/web/dist/index.html +14 -0
  367. package/packages/web/dist/logo.png +0 -0
  368. package/packages/web/index.html +13 -0
  369. package/packages/web/package.json +34 -0
  370. package/packages/web/public/cortex-icon.svg +9 -0
  371. package/packages/web/public/icon.png +0 -0
  372. package/packages/web/public/logo.png +0 -0
  373. package/packages/web/tsconfig.json +22 -0
  374. package/packages/web/vite.config.ts +20 -0
  375. package/tsconfig.base.json +18 -0
  376. package/tsconfig.json +12 -0
  377. package/vitest.config.ts +14 -0
@@ -0,0 +1,179 @@
1
+ import { resolve, isAbsolute, extname, join } from 'node:path';
2
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
3
+ import chalk from 'chalk';
4
+ import { loadConfig, createLogger, getProject } from '@cortex/core';
5
+ import { SQLiteStore } from '@cortex/graph';
6
+ import { Router } from '@cortex/llm';
7
+ import { IngestionPipeline, getParser } from '@cortex/ingest';
8
+ const logger = createLogger('cli:ingest');
9
+ export function registerIngestCommand(program) {
10
+ program
11
+ .command('ingest <file-or-glob>')
12
+ .description('One-shot ingestion of a file or glob pattern into the knowledge graph')
13
+ .option('--project <name>', 'Project to attach entities to')
14
+ .option('--dry-run', 'Show what would be extracted without writing to DB', false)
15
+ .action(async (pattern, opts) => {
16
+ const globals = program.opts();
17
+ await runIngest(pattern, opts, globals);
18
+ });
19
+ }
20
+ async function runIngest(pattern, opts, globals) {
21
+ // Resolve project root
22
+ let projectRoot;
23
+ if (opts.project) {
24
+ const reg = getProject(opts.project);
25
+ if (!reg) {
26
+ console.error(chalk.red(`Error: Project "${opts.project}" is not registered.`));
27
+ console.log(chalk.dim('Register it with: cortex projects add <name> <path>'));
28
+ process.exit(1);
29
+ }
30
+ projectRoot = reg.path;
31
+ }
32
+ const config = loadConfig({ configDir: globals.config ? resolve(globals.config) : projectRoot });
33
+ // Resolve file paths from pattern
34
+ const resolvedPattern = isAbsolute(pattern) ? pattern : resolve(process.cwd(), pattern);
35
+ const filePaths = [];
36
+ if (resolvedPattern.includes('*')) {
37
+ // Simple glob: split into dir + file pattern
38
+ const lastSep = Math.max(resolvedPattern.lastIndexOf('/'), resolvedPattern.lastIndexOf('\\'));
39
+ const dir = lastSep >= 0 ? resolvedPattern.slice(0, lastSep) : process.cwd();
40
+ const filePattern = lastSep >= 0 ? resolvedPattern.slice(lastSep + 1) : resolvedPattern;
41
+ const regex = new RegExp('^' + filePattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
42
+ if (existsSync(dir)) {
43
+ for (const entry of readdirSync(dir)) {
44
+ if (regex.test(entry)) {
45
+ const full = join(dir, entry);
46
+ try {
47
+ if (statSync(full).isFile())
48
+ filePaths.push(full);
49
+ }
50
+ catch { /* skip inaccessible */ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ else {
56
+ if (!existsSync(resolvedPattern)) {
57
+ console.error(chalk.red(`Error: File not found: ${resolvedPattern}`));
58
+ process.exit(1);
59
+ }
60
+ filePaths.push(resolvedPattern);
61
+ }
62
+ if (filePaths.length === 0) {
63
+ console.log(chalk.yellow('No files matched the pattern.'));
64
+ process.exit(0);
65
+ }
66
+ if (!globals.quiet) {
67
+ if (opts.dryRun) {
68
+ console.log(chalk.bold(`\n🔍 Cortex Ingest (dry run) — ${filePaths.length} file(s)\n`));
69
+ }
70
+ else {
71
+ console.log(chalk.bold(`\n⚡ Cortex Ingest — ${filePaths.length} file(s)\n`));
72
+ }
73
+ }
74
+ if (opts.dryRun) {
75
+ // Dry run: parse files and count sections without writing to DB
76
+ let totalSections = 0;
77
+ for (const filePath of filePaths) {
78
+ try {
79
+ const ext = extname(filePath).slice(1).toLowerCase();
80
+ const content = readFileSync(filePath, 'utf-8');
81
+ const parser = getParser(ext, filePath, content);
82
+ if (!parser) {
83
+ console.log(chalk.dim(` − ${filePath} — unsupported type`));
84
+ continue;
85
+ }
86
+ const result = await parser.parse(content, filePath);
87
+ totalSections += result.sections.length;
88
+ console.log(chalk.dim(` ~ ${filePath} → ${result.sections.length} sections (est. ${result.sections.length * 3} entities)`));
89
+ }
90
+ catch (err) {
91
+ console.log(chalk.red(` ✗ ${filePath} — ${err instanceof Error ? err.message : String(err)}`));
92
+ }
93
+ }
94
+ console.log(chalk.dim(`\nDry run complete: ~${totalSections * 3} entities estimated across ${filePaths.length} file(s)`));
95
+ return;
96
+ }
97
+ // Real ingestion
98
+ const store = new SQLiteStore({
99
+ dbPath: config.graph.dbPath,
100
+ walMode: config.graph.walMode,
101
+ backupOnStartup: false,
102
+ });
103
+ const router = new Router({ config });
104
+ // Resolve project record
105
+ const projects = await store.listProjects();
106
+ let project = projects.find((p) => opts.project ? p.name === opts.project : true);
107
+ if (!project) {
108
+ project = await store.createProject({
109
+ name: opts.project ?? 'default',
110
+ rootPath: projectRoot ?? resolve(config.ingest.watchDirs[0] ?? '.'),
111
+ privacyLevel: config.privacy.defaultLevel,
112
+ fileCount: 0,
113
+ entityCount: 0,
114
+ });
115
+ }
116
+ const pipeline = new IngestionPipeline(router, store, {
117
+ projectId: project.id,
118
+ projectName: project.name,
119
+ projectRoot: project.rootPath,
120
+ maxFileSize: config.ingest.maxFileSize,
121
+ batchSize: config.ingest.batchSize,
122
+ projectPrivacyLevel: project.privacyLevel,
123
+ mergeConfidenceThreshold: config.graph.mergeConfidenceThreshold,
124
+ });
125
+ let totalEntities = 0;
126
+ let totalRelationships = 0;
127
+ let errorCount = 0;
128
+ if (globals.json) {
129
+ const results = [];
130
+ for (const filePath of filePaths) {
131
+ const result = await pipeline.ingestFile(filePath);
132
+ results.push({
133
+ file: filePath,
134
+ entities: result.entityIds.length,
135
+ relationships: result.relationshipIds.length,
136
+ status: result.status,
137
+ });
138
+ totalEntities += result.entityIds.length;
139
+ totalRelationships += result.relationshipIds.length;
140
+ if (result.status === 'failed')
141
+ errorCount++;
142
+ }
143
+ console.log(JSON.stringify({ files: results, total: { entities: totalEntities, relationships: totalRelationships } }));
144
+ store.close();
145
+ return;
146
+ }
147
+ console.log(chalk.dim(`Ingesting ${filePaths.length} file(s)...\n`));
148
+ for (const filePath of filePaths) {
149
+ try {
150
+ const result = await pipeline.ingestFile(filePath);
151
+ if (result.status === 'ingested') {
152
+ totalEntities += result.entityIds.length;
153
+ totalRelationships += result.relationshipIds.length;
154
+ console.log(chalk.green(` ✓ ${filePath}`) + chalk.dim(` → ${result.entityIds.length} entities, ${result.relationshipIds.length} relationships`));
155
+ }
156
+ else if (result.status === 'skipped') {
157
+ console.log(chalk.dim(` − ${filePath} — skipped${result.error ? ` (${result.error})` : ''}`));
158
+ }
159
+ else {
160
+ errorCount++;
161
+ console.log(chalk.red(` ✗ ${filePath} — failed: ${result.error}`));
162
+ }
163
+ }
164
+ catch (err) {
165
+ errorCount++;
166
+ logger.error('Ingest failed', { filePath, error: err instanceof Error ? err.message : String(err) });
167
+ console.log(chalk.red(` ✗ ${filePath} — error: ${err instanceof Error ? err.message : String(err)}`));
168
+ }
169
+ }
170
+ console.log('');
171
+ console.log(chalk.bold(`Total: ${totalEntities} entities, ${totalRelationships} relationships ingested`) +
172
+ (opts.project ? chalk.dim(` into project "${opts.project}"`) : ''));
173
+ if (errorCount > 0) {
174
+ console.log(chalk.yellow(` ${errorCount} file(s) failed`));
175
+ }
176
+ store.close();
177
+ process.exit(errorCount > 0 ? 1 : 0);
178
+ }
179
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/commands/ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInitCommand(program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU1D"}
@@ -0,0 +1,285 @@
1
+ import { writeFileSync, existsSync, mkdirSync, readFileSync } from 'node:fs';
2
+ import { resolve, join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import inquirer from 'inquirer';
5
+ import chalk from 'chalk';
6
+ import { getDefaultConfig, cortexConfigSchema } from '@cortex/core';
7
+ export function registerInitCommand(program) {
8
+ program
9
+ .command('init')
10
+ .description('Interactive setup wizard — creates cortex.config.json')
11
+ .option('--mode <mode>', 'LLM routing mode (cloud-first, hybrid, local-first, local-only)')
12
+ .option('--non-interactive', 'Use defaults, no prompts', false)
13
+ .action(async (opts) => {
14
+ const globals = program.opts();
15
+ await runInit(opts, globals);
16
+ });
17
+ }
18
+ // Model presets by VRAM tier
19
+ const GPU_PRESETS = {
20
+ high: { model: 'qwen2.5:14b-instruct-q5_K_M', numCtx: 8192, extractionLocal: true },
21
+ mid: { model: 'mistral:7b-instruct-q5_K_M', numCtx: 4096, extractionLocal: false },
22
+ low: { model: 'phi3:mini-4k-instruct-q4_K_M', numCtx: 2048, extractionLocal: false },
23
+ };
24
+ // Cloud provider presets
25
+ const CLOUD_PRESETS = {
26
+ anthropic: {
27
+ provider: 'anthropic',
28
+ baseUrl: undefined,
29
+ apiKeySource: 'env:CORTEX_ANTHROPIC_API_KEY',
30
+ envVar: 'CORTEX_ANTHROPIC_API_KEY',
31
+ models: { primary: 'claude-sonnet-4-5-20250929', fast: 'claude-haiku-4-5-20251001' },
32
+ promptCaching: true,
33
+ label: 'Anthropic (Claude)',
34
+ hint: 'Best quality, higher cost',
35
+ },
36
+ gemini: {
37
+ provider: 'openai-compatible',
38
+ baseUrl: 'https://generativelanguage.googleapis.com/v1beta/openai',
39
+ apiKeySource: 'env:CORTEX_GEMINI_API_KEY',
40
+ envVar: 'CORTEX_GEMINI_API_KEY',
41
+ models: { primary: 'gemini-2.5-flash', fast: 'gemini-2.5-flash' },
42
+ promptCaching: false,
43
+ label: 'Google Gemini',
44
+ hint: 'Very cheap, good quality',
45
+ },
46
+ groq: {
47
+ provider: 'openai-compatible',
48
+ baseUrl: 'https://api.groq.com/openai/v1',
49
+ apiKeySource: 'env:CORTEX_GROQ_API_KEY',
50
+ envVar: 'CORTEX_GROQ_API_KEY',
51
+ models: { primary: 'llama-3.3-70b-versatile', fast: 'llama-3.1-8b-instant' },
52
+ promptCaching: false,
53
+ label: 'Groq',
54
+ hint: 'Fast inference, free tier available',
55
+ },
56
+ openrouter: {
57
+ provider: 'openai-compatible',
58
+ baseUrl: 'https://openrouter.ai/api/v1',
59
+ apiKeySource: 'env:CORTEX_OPENROUTER_API_KEY',
60
+ envVar: 'CORTEX_OPENROUTER_API_KEY',
61
+ models: { primary: 'google/gemini-2.0-flash-001', fast: 'google/gemini-2.0-flash-lite-001' },
62
+ promptCaching: false,
63
+ label: 'OpenRouter',
64
+ hint: 'Access to many models via one key',
65
+ },
66
+ };
67
+ const VRAM_HINT = process.platform === 'darwin' ? '(Apple menu → About This Mac → More Info → Graphics)' :
68
+ process.platform === 'linux' ? '(run: nvidia-smi or rocm-smi)' :
69
+ '(Task Manager → Performance → GPU → Dedicated GPU Memory)';
70
+ async function runInit(opts, globals) {
71
+ const config = getDefaultConfig();
72
+ if (opts.nonInteractive) {
73
+ if (opts.mode)
74
+ config.llm.mode = opts.mode;
75
+ writeConfig(config, globals);
76
+ return;
77
+ }
78
+ if (!globals.quiet)
79
+ console.log(chalk.bold('\nCortex Setup\n'));
80
+ // ── Step 1: What do you have? (derives mode automatically) ────────────────
81
+ const { hasOllama } = await inquirer.prompt([{
82
+ type: 'confirm',
83
+ name: 'hasOllama',
84
+ message: 'Do you have Ollama installed and running locally?',
85
+ default: false,
86
+ }]);
87
+ const { hasApiKey } = await inquirer.prompt([{
88
+ type: 'confirm',
89
+ name: 'hasApiKey',
90
+ message: 'Do you have a cloud LLM API key? (Anthropic, Gemini, Groq, etc.)',
91
+ default: true,
92
+ }]);
93
+ // Derive mode from what the user has
94
+ let mode;
95
+ if (hasOllama && hasApiKey) {
96
+ mode = 'hybrid';
97
+ console.log(chalk.dim(' → Hybrid mode: GPU for ingestion, Claude for queries'));
98
+ }
99
+ else if (hasOllama) {
100
+ mode = 'local-only';
101
+ console.log(chalk.dim(' → Local-only mode: everything runs on your GPU'));
102
+ }
103
+ else {
104
+ mode = 'cloud-first';
105
+ console.log(chalk.dim(' → Cloud mode: everything runs via Claude API'));
106
+ }
107
+ config.llm.mode = mode;
108
+ const usesLocal = hasOllama;
109
+ const usesCloud = hasApiKey;
110
+ // ── Step 2: GPU tier (only when Ollama is involved) ───────────────────────
111
+ if (usesLocal) {
112
+ console.log('');
113
+ const { vramGb } = await inquirer.prompt([{
114
+ type: 'number',
115
+ name: 'vramGb',
116
+ message: `How many GB of VRAM does your GPU have? ${VRAM_HINT}`,
117
+ default: 8,
118
+ validate: (v) => (v > 0 && Number.isFinite(v)) || 'Enter a number greater than 0',
119
+ }]);
120
+ const gpuTier = vramGb >= 24 ? 'high' : vramGb >= 8 ? 'mid' : 'low';
121
+ const { useManual } = await inquirer.prompt([{
122
+ type: 'confirm',
123
+ name: 'useManual',
124
+ message: `Recommended model: ${GPU_PRESETS[gpuTier].model} — use a different one?`,
125
+ default: false,
126
+ }]);
127
+ if (useManual) {
128
+ const answers = await inquirer.prompt([
129
+ {
130
+ type: 'input',
131
+ name: 'model',
132
+ message: 'Ollama model name:',
133
+ default: config.llm.local.model,
134
+ },
135
+ {
136
+ type: 'number',
137
+ name: 'numCtx',
138
+ message: 'Context window (lower = less VRAM):',
139
+ default: config.llm.local.numCtx,
140
+ },
141
+ ]);
142
+ config.llm.local.model = answers.model;
143
+ config.llm.local.numCtx = answers.numCtx;
144
+ }
145
+ else {
146
+ const preset = GPU_PRESETS[gpuTier];
147
+ config.llm.local.model = preset.model;
148
+ config.llm.local.numCtx = preset.numCtx;
149
+ console.log(chalk.dim(` → run: ollama pull ${preset.model}`));
150
+ if (mode === 'hybrid') {
151
+ const extractionRoute = preset.extractionLocal ? 'local' : 'cloud';
152
+ config.llm.taskRouting = {
153
+ entity_extraction: extractionRoute,
154
+ relationship_inference: extractionRoute,
155
+ contradiction_detection: 'local',
156
+ conversational_query: 'cloud',
157
+ context_ranking: 'local',
158
+ embedding_generation: 'local',
159
+ };
160
+ if (!preset.extractionLocal) {
161
+ console.log(chalk.dim(' → File extraction routed to cloud (more reliable on 7B models)'));
162
+ }
163
+ }
164
+ }
165
+ }
166
+ // ── Step 3: Cloud provider selection + API key ─────────────────────────────
167
+ let selectedPresetKey = 'gemini';
168
+ if (usesCloud) {
169
+ console.log('');
170
+ const choices = Object.entries(CLOUD_PRESETS).map(([key, preset]) => ({
171
+ name: `${preset.label} — ${preset.hint}`,
172
+ value: key,
173
+ }));
174
+ const { cloudProvider } = await inquirer.prompt([{
175
+ type: 'list',
176
+ name: 'cloudProvider',
177
+ message: 'Which cloud LLM provider?',
178
+ choices,
179
+ default: 'gemini',
180
+ }]);
181
+ selectedPresetKey = cloudProvider;
182
+ const preset = CLOUD_PRESETS[selectedPresetKey];
183
+ config.llm.cloud.provider = preset.provider;
184
+ if (preset.baseUrl) {
185
+ config.llm.cloud.baseUrl = preset.baseUrl;
186
+ }
187
+ config.llm.cloud.apiKeySource = preset.apiKeySource;
188
+ config.llm.cloud.models = { ...preset.models };
189
+ config.llm.cloud.promptCaching = preset.promptCaching;
190
+ // Check if key is already set
191
+ const envVar = preset.envVar;
192
+ if (process.env[envVar]) {
193
+ console.log(chalk.green(` ✓ ${envVar} found in environment`));
194
+ }
195
+ else {
196
+ // Prompt for the key and save to ~/.cortex/.env
197
+ const { apiKey } = await inquirer.prompt([{
198
+ type: 'password',
199
+ name: 'apiKey',
200
+ message: `Paste your ${preset.label} API key:`,
201
+ mask: '*',
202
+ }]);
203
+ if (apiKey.trim()) {
204
+ writeEnvFile(envVar, apiKey.trim());
205
+ // Also set it for this process so subsequent steps can use it
206
+ process.env[envVar] = apiKey.trim();
207
+ console.log(chalk.green(` ✓ Saved to ~/.cortex/.env`));
208
+ }
209
+ else {
210
+ console.log(chalk.yellow(` ! No key provided — set ${envVar} later in ~/.cortex/.env`));
211
+ }
212
+ }
213
+ }
214
+ // ── Step 4: Watch directories ──────────────────────────────────────────────
215
+ console.log('');
216
+ const { watchDirs } = await inquirer.prompt([{
217
+ type: 'input',
218
+ name: 'watchDirs',
219
+ message: 'Directories to watch (comma-separated):',
220
+ default: '.',
221
+ }]);
222
+ config.ingest.watchDirs = watchDirs.split(',').map((d) => d.trim());
223
+ // ── Step 5: Monthly budget (if cloud involved) ─────────────────────────────
224
+ if (usesCloud) {
225
+ const { budget } = await inquirer.prompt([{
226
+ type: 'number',
227
+ name: 'budget',
228
+ message: 'Monthly LLM spend limit in USD (0 = no limit):',
229
+ default: 25,
230
+ }]);
231
+ config.llm.budget.monthlyLimitUsd = budget;
232
+ }
233
+ // ── Step 6: Write ──────────────────────────────────────────────────────────
234
+ writeConfig(config, globals);
235
+ }
236
+ function writeEnvFile(key, value) {
237
+ const cortexDir = join(homedir(), '.cortex');
238
+ if (!existsSync(cortexDir)) {
239
+ mkdirSync(cortexDir, { recursive: true });
240
+ }
241
+ const envPath = join(cortexDir, '.env');
242
+ let content = '';
243
+ if (existsSync(envPath)) {
244
+ content = readFileSync(envPath, 'utf-8');
245
+ // Replace existing key if present
246
+ const regex = new RegExp(`^${key}=.*$`, 'm');
247
+ if (regex.test(content)) {
248
+ content = content.replace(regex, `${key}=${value}`);
249
+ writeFileSync(envPath, content, { mode: 0o600 });
250
+ return;
251
+ }
252
+ // Ensure trailing newline before appending
253
+ if (content.length > 0 && !content.endsWith('\n')) {
254
+ content += '\n';
255
+ }
256
+ }
257
+ else {
258
+ content = '# Cortex API Keys\n# This file is loaded automatically by Cortex. Do not commit this file.\n\n';
259
+ }
260
+ content += `${key}=${value}\n`;
261
+ writeFileSync(envPath, content, { mode: 0o600 });
262
+ }
263
+ function writeConfig(config, globals) {
264
+ const validated = cortexConfigSchema.parse(config);
265
+ // Ensure ~/.cortex/ dir exists for DB, logs, etc.
266
+ const cortexDir = join(homedir(), '.cortex');
267
+ if (!existsSync(cortexDir)) {
268
+ mkdirSync(cortexDir, { recursive: true });
269
+ }
270
+ // Write config to --config dir if specified, otherwise cwd (per-project config)
271
+ const configPath = globals.config
272
+ ? resolve(globals.config, 'cortex.config.json')
273
+ : resolve(process.cwd(), 'cortex.config.json');
274
+ writeFileSync(configPath, JSON.stringify(validated, null, 2), { mode: 0o600 });
275
+ if (!globals.quiet) {
276
+ if (globals.json) {
277
+ console.log(JSON.stringify({ success: true, path: configPath }));
278
+ }
279
+ else {
280
+ console.log(chalk.green(`\n✓ Config written to ${configPath}`));
281
+ console.log(chalk.dim(' Run `cortex watch` to start.\n'));
282
+ }
283
+ }
284
+ }
285
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerMcpCommand(program: Command): void;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiDzD"}
@@ -0,0 +1,65 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { resolve, dirname } from 'node:path';
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import chalk from 'chalk';
5
+ function findPackageRoot(startDir) {
6
+ let dir = startDir;
7
+ for (let i = 0; i < 10; i++) {
8
+ try {
9
+ const pkgPath = resolve(dir, 'package.json');
10
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
11
+ if (pkg.name === 'gzoo-cortex')
12
+ return dir;
13
+ }
14
+ catch { /* keep looking */ }
15
+ const parent = dirname(dir);
16
+ if (parent === dir)
17
+ break;
18
+ dir = parent;
19
+ }
20
+ return startDir;
21
+ }
22
+ export function registerMcpCommand(program) {
23
+ program
24
+ .command('mcp')
25
+ .description('Start the Cortex MCP server (stdio transport for Claude Code)')
26
+ .option('--config-dir <path>', 'Directory containing cortex.config.json')
27
+ .action(async (opts) => {
28
+ const globals = program.opts();
29
+ const pkgRoot = findPackageRoot(import.meta.dirname);
30
+ const bundledMcp = resolve(pkgRoot, 'dist/cortex-mcp.mjs');
31
+ const workspaceMcp = resolve(pkgRoot, 'packages/mcp/dist/index.js');
32
+ const mcpEntry = existsSync(bundledMcp) ? bundledMcp : workspaceMcp;
33
+ if (!existsSync(mcpEntry)) {
34
+ console.error(chalk.red('Error: MCP server not built.'));
35
+ console.error(chalk.dim(`Expected: ${mcpEntry}`));
36
+ console.error(chalk.dim('Run npm run build first.'));
37
+ process.exit(1);
38
+ }
39
+ if (process.stdout.isTTY) {
40
+ process.stderr.write(chalk.yellow('\n[cortex mcp] Starting MCP server on stdio.\n') +
41
+ chalk.dim('This process blocks. It is meant to be launched by Claude Code, not run manually.\n') +
42
+ chalk.dim('Register with: claude mcp add cortex --scope user -- node ' + mcpEntry + '\n\n'));
43
+ }
44
+ const env = {
45
+ ...process.env,
46
+ CORTEX_LOG_LEVEL: 'error',
47
+ };
48
+ if (opts.configDir) {
49
+ env['CORTEX_CONFIG_DIR'] = resolve(opts.configDir);
50
+ }
51
+ if (globals.config) {
52
+ env['CORTEX_CONFIG_DIR'] = resolve(globals.config);
53
+ }
54
+ const child = spawn(process.execPath, [mcpEntry], {
55
+ stdio: 'inherit',
56
+ env,
57
+ });
58
+ child.on('exit', (code) => process.exit(code ?? 0));
59
+ child.on('error', (err) => {
60
+ process.stderr.write(`[cortex mcp] Error: ${err.message}\n`);
61
+ process.exit(1);
62
+ });
63
+ });
64
+ }
65
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerModelsCommand(program: Command): void;
3
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoC5D"}