@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,230 @@
1
+ import { resolve } from 'node:path';
2
+ import { statSync } from 'node:fs';
3
+ import chalk from 'chalk';
4
+ import { loadConfig, createLogger, setGlobalLogLevel } from '@cortex/core';
5
+ import { SQLiteStore } from '@cortex/graph';
6
+ import { Router } from '@cortex/llm';
7
+ const logger = createLogger('cli:status');
8
+ async function checkOllamaAvailable(host) {
9
+ try {
10
+ const controller = new AbortController();
11
+ const timeoutId = setTimeout(() => controller.abort(), 3000);
12
+ const response = await fetch(`${host}/api/tags`, { signal: controller.signal });
13
+ clearTimeout(timeoutId);
14
+ return response.ok;
15
+ }
16
+ catch {
17
+ return false;
18
+ }
19
+ }
20
+ export function registerStatusCommand(program) {
21
+ program
22
+ .command('status')
23
+ .description('System dashboard — graph stats, LLM status, costs')
24
+ .action(async () => {
25
+ const globals = program.opts();
26
+ await runStatus(globals);
27
+ });
28
+ }
29
+ function formatBytes(bytes) {
30
+ if (bytes === 0)
31
+ return '0 B';
32
+ const units = ['B', 'KB', 'MB', 'GB'];
33
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
34
+ const value = bytes / Math.pow(1024, i);
35
+ return `${value.toFixed(1)} ${units[i]}`;
36
+ }
37
+ async function runStatus(globals) {
38
+ const config = loadConfig({ configDir: globals.config ? resolve(globals.config) : undefined });
39
+ const store = new SQLiteStore({ dbPath: config.graph.dbPath, backupOnStartup: false });
40
+ try {
41
+ const stats = await store.getStats();
42
+ const projects = await store.listProjects();
43
+ // Get vector DB size
44
+ let vectorSizeBytes = 0;
45
+ try {
46
+ const vectorStat = statSync(config.graph.vectorDbPath);
47
+ vectorSizeBytes = vectorStat.size;
48
+ }
49
+ catch {
50
+ // Vector DB may not exist yet
51
+ }
52
+ // Check LLM availability
53
+ const apiKeySource = config.llm.cloud.apiKeySource;
54
+ const apiKeyEnvVar = apiKeySource.startsWith("env:") ? apiKeySource.slice(4) : undefined;
55
+ const hasApiKey = apiKeyEnvVar ? Boolean(process.env[apiKeyEnvVar]) : false;
56
+ const mode = config.llm.mode;
57
+ const ollamaAvailable = mode !== 'cloud-first' ? await checkOllamaAvailable(config.llm.local.host) : false;
58
+ // Suppress log output in JSON mode so Router init logs don't pollute stdout
59
+ if (globals.json)
60
+ setGlobalLogLevel('error');
61
+ // Compute local savings estimate: tokens processed by Ollama Ɨ Haiku cloud rate
62
+ const router = new Router({ config });
63
+ const tracker = router.getTracker();
64
+ const summary = tracker.getSummary();
65
+ const localTokens = tracker.getRecords()
66
+ .filter((r) => r.provider === 'ollama')
67
+ .reduce((sum, r) => sum + r.inputTokens + r.outputTokens, 0);
68
+ const HAIKU_RATE_PER_M = 2.4; // blended input+output Haiku rate
69
+ const localSavingsUsd = (localTokens / 1_000_000) * HAIKU_RATE_PER_M;
70
+ const localProvider = router.getLocalProvider();
71
+ if (globals.json) {
72
+ console.log(JSON.stringify({
73
+ graph: {
74
+ entities: stats.entityCount,
75
+ relationships: stats.relationshipCount,
76
+ contradictions: stats.contradictionCount,
77
+ },
78
+ projects: projects.map((p) => p.name),
79
+ files: {
80
+ tracked: stats.fileCount,
81
+ },
82
+ storage: {
83
+ sqliteBytes: stats.dbSizeBytes,
84
+ vectorBytes: vectorSizeBytes,
85
+ },
86
+ llm: {
87
+ mode: mode,
88
+ cloud: {
89
+ provider: config.llm.cloud.provider,
90
+ available: hasApiKey,
91
+ },
92
+ local: {
93
+ provider: 'ollama',
94
+ available: ollamaAvailable,
95
+ host: config.llm.local.host,
96
+ model: config.llm.local.model,
97
+ numCtx: localProvider?.getNumCtx() ?? config.llm.local.numCtx,
98
+ },
99
+ },
100
+ budget: {
101
+ monthlyLimitUsd: config.llm.budget.monthlyLimitUsd,
102
+ spentThisMonthUsd: summary.totalCostUsd,
103
+ localSavingsUsd: Math.round(localSavingsUsd * 100) / 100,
104
+ },
105
+ }));
106
+ store.close();
107
+ return;
108
+ }
109
+ // Header
110
+ console.log('');
111
+ console.log(chalk.bold.cyan('CORTEX STATUS'));
112
+ console.log(chalk.dim('─'.repeat(50)));
113
+ // Graph stats
114
+ console.log(chalk.white('Graph: ') +
115
+ chalk.bold(`${stats.entityCount.toLocaleString()}`) + ' entities | ' +
116
+ chalk.bold(`${stats.relationshipCount.toLocaleString()}`) + ' relationships | ' +
117
+ chalk.bold(`${stats.contradictionCount}`) + ' contradictions');
118
+ // Projects
119
+ console.log(chalk.white('Projects: ') +
120
+ `${projects.length} watched`);
121
+ for (const p of projects) {
122
+ console.log(chalk.dim(` ${p.name} → ${p.rootPath}`));
123
+ }
124
+ // Files
125
+ console.log(chalk.white('Files: ') +
126
+ `${stats.fileCount} tracked`);
127
+ // Storage
128
+ console.log(chalk.white('Storage: ') +
129
+ `${formatBytes(stats.dbSizeBytes)} (SQLite) | ${formatBytes(vectorSizeBytes)} (vectors)`);
130
+ console.log('');
131
+ // LLM Mode + provider block
132
+ const numCtx = localProvider?.getNumCtx() ?? config.llm.local.numCtx;
133
+ const numGpu = localProvider?.getNumGpu() ?? config.llm.local.numGpu;
134
+ console.log(chalk.white('LLM Mode: ') + mode);
135
+ const cloudLabel = `${config.llm.cloud.models.primary} / ${config.llm.cloud.models.fast} (${config.llm.cloud.provider})`;
136
+ const localLabel = `${config.llm.local.model} @ ${config.llm.local.host}`;
137
+ const localDetail = `${numCtx.toLocaleString()} ctx | GPU: ${numGpu === -1 ? 'auto' : numGpu} layers | ~30 tok/s est.`;
138
+ if (mode === 'cloud-first') {
139
+ const llmStatus = hasApiKey ? chalk.green('āœ“') : chalk.red('āœ—');
140
+ console.log(chalk.white(' Cloud: ') + `${llmStatus} ${cloudLabel}`);
141
+ }
142
+ else if (mode === 'local-only') {
143
+ const llmStatus = ollamaAvailable ? chalk.green('āœ“') : chalk.red('āœ—');
144
+ console.log(chalk.white(' Local: ') + `${llmStatus} ${localLabel}`);
145
+ console.log(chalk.dim(` ${localDetail}`));
146
+ }
147
+ else if (mode === 'local-first') {
148
+ const localStatus = ollamaAvailable ? chalk.green('āœ“') : chalk.red('āœ—');
149
+ const cloudStatus = hasApiKey ? chalk.green('āœ“') : chalk.yellow('ā—‹');
150
+ console.log(chalk.white(' Cloud: ') + `${cloudStatus} ${cloudLabel}`);
151
+ console.log(chalk.white(' Local: ') + `${localStatus} ${localLabel}`);
152
+ if (ollamaAvailable) {
153
+ console.log(chalk.dim(` ${localDetail}`));
154
+ }
155
+ }
156
+ else {
157
+ // hybrid
158
+ const localStatus = ollamaAvailable ? chalk.green('āœ“') : chalk.yellow('ā—‹');
159
+ const cloudStatus = hasApiKey ? chalk.green('āœ“') : chalk.red('āœ—');
160
+ console.log(chalk.white(' Cloud: ') + `${cloudStatus} ${cloudLabel}`);
161
+ console.log(chalk.white(' Local: ') + `${localStatus} ${localLabel}`);
162
+ if (ollamaAvailable) {
163
+ console.log(chalk.dim(` ${localDetail}`));
164
+ }
165
+ }
166
+ console.log('');
167
+ // Budget + savings
168
+ const budgetLimit = config.llm.budget.monthlyLimitUsd;
169
+ const spentUsd = summary.totalCostUsd;
170
+ const usedPct = budgetLimit > 0 ? ((spentUsd / budgetLimit) * 100).toFixed(1) : '0.0';
171
+ console.log(chalk.white('Cost: ') +
172
+ `$${spentUsd.toFixed(2)} / $${budgetLimit.toFixed(2)} this month (${usedPct}%)`);
173
+ if (localSavingsUsd > 0) {
174
+ console.log(chalk.dim(` Savings from local: ~$${localSavingsUsd.toFixed(2)} est.`));
175
+ }
176
+ console.log('');
177
+ // Overall status based on mode
178
+ let statusOk = false;
179
+ let statusMsg = '';
180
+ if (mode === 'local-only') {
181
+ statusOk = ollamaAvailable;
182
+ statusMsg = ollamaAvailable
183
+ ? 'āœ“ Fully operational'
184
+ : `⚠ Ollama not available at ${config.llm.local.host}. Run \`ollama serve\`.`;
185
+ }
186
+ else if (mode === 'local-first') {
187
+ statusOk = ollamaAvailable || hasApiKey;
188
+ if (ollamaAvailable) {
189
+ statusMsg = 'āœ“ Fully operational (using Ollama)';
190
+ }
191
+ else if (hasApiKey) {
192
+ statusMsg = '⚠ Ollama unavailable, using cloud fallback';
193
+ }
194
+ else {
195
+ statusMsg = '⚠ No LLM available. Start Ollama or set API key.';
196
+ }
197
+ }
198
+ else if (mode === 'hybrid') {
199
+ statusOk = hasApiKey || ollamaAvailable;
200
+ if (hasApiKey && ollamaAvailable) {
201
+ statusMsg = 'āœ“ Fully operational (hybrid mode)';
202
+ }
203
+ else if (hasApiKey) {
204
+ statusMsg = '⚠ Ollama unavailable, cloud-only';
205
+ }
206
+ else if (ollamaAvailable) {
207
+ statusMsg = '⚠ API key not set, local-only';
208
+ }
209
+ else {
210
+ statusMsg = '⚠ No LLM available';
211
+ }
212
+ }
213
+ else {
214
+ // cloud-first
215
+ statusOk = hasApiKey;
216
+ statusMsg = hasApiKey
217
+ ? 'āœ“ Fully operational'
218
+ : '⚠ API key not set. Run `cortex init` or set ' + (apiKeyEnvVar ?? 'your cloud API key env var') + '.';
219
+ }
220
+ console.log(chalk.white('Status: ') +
221
+ (statusOk ? chalk.green(statusMsg) : chalk.yellow(statusMsg)));
222
+ console.log('');
223
+ }
224
+ catch (err) {
225
+ logger.error('Status check failed', { error: err instanceof Error ? err.message : String(err) });
226
+ console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
227
+ }
228
+ store.close();
229
+ }
230
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ export declare function stopServer(): boolean;
3
+ export declare function registerStopCommand(program: Command): void;
4
+ export declare function registerRestartCommand(program: Command): void;
5
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,UAAU,IAAI,OAAO,CAWpC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO1D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2B7D"}
@@ -0,0 +1,80 @@
1
+ import { resolve } from 'node:path';
2
+ import { readFileSync, unlinkSync, existsSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ const PID_FILE = resolve(homedir(), '.cortex', 'cortex.pid');
5
+ function readPid() {
6
+ try {
7
+ const pid = Number(readFileSync(PID_FILE, 'utf-8').trim());
8
+ return Number.isFinite(pid) ? pid : null;
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ }
14
+ function isRunning(pid) {
15
+ try {
16
+ process.kill(pid, 0);
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ export function stopServer() {
24
+ const pid = readPid();
25
+ if (!pid || !isRunning(pid)) {
26
+ if (pid && existsSync(PID_FILE))
27
+ unlinkSync(PID_FILE);
28
+ console.log('Cortex is not running.');
29
+ return false;
30
+ }
31
+ process.kill(pid, 'SIGTERM');
32
+ console.log(`Cortex (PID ${pid}) stopped.`);
33
+ try {
34
+ unlinkSync(PID_FILE);
35
+ }
36
+ catch { /* ok */ }
37
+ return true;
38
+ }
39
+ export function registerStopCommand(program) {
40
+ program
41
+ .command('stop')
42
+ .description('Stop the running Cortex server')
43
+ .action(() => {
44
+ stopServer();
45
+ });
46
+ }
47
+ export function registerRestartCommand(program) {
48
+ program
49
+ .command('restart')
50
+ .description('Restart the Cortex server (stop + serve)')
51
+ .option('--port <port>', 'Port to listen on (default: 3710)', '3710')
52
+ .option('--host <host>', 'Host to bind to (default: 127.0.0.1)', '127.0.0.1')
53
+ .option('--no-watch', 'Disable file watcher')
54
+ .action(async (opts) => {
55
+ const pid = readPid();
56
+ if (pid && isRunning(pid)) {
57
+ process.kill(pid, 'SIGTERM');
58
+ console.log(`Stopped Cortex (PID ${pid}).`);
59
+ try {
60
+ unlinkSync(PID_FILE);
61
+ }
62
+ catch { /* ok */ }
63
+ // Wait for process to fully exit and release port
64
+ for (let i = 0; i < 10; i++) {
65
+ await new Promise(r => setTimeout(r, 500));
66
+ if (!isRunning(pid))
67
+ break;
68
+ }
69
+ }
70
+ console.log('Starting Cortex...');
71
+ const serveCmd = program.commands.find(c => c.name() === 'serve');
72
+ if (serveCmd) {
73
+ const args = ['--port', opts.port, '--host', opts.host];
74
+ if (!opts.watch)
75
+ args.push('--no-watch');
76
+ await serveCmd.parseAsync(args, { from: 'user' });
77
+ }
78
+ });
79
+ }
80
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWatchCommand(program: Command): void;
3
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3D"}
@@ -0,0 +1,235 @@
1
+ import { resolve, join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { loadConfig, findConfigFile, createLogger, setGlobalLogLevel, eventBus, getProject, updateProjectLastWatched } from '@cortex/core';
6
+ import { SQLiteStore } from '@cortex/graph';
7
+ import { Router } from '@cortex/llm';
8
+ import { FileWatcher, IngestionPipeline } from '@cortex/ingest';
9
+ const logger = createLogger('cli:watch');
10
+ export function registerWatchCommand(program) {
11
+ program
12
+ .command('watch [project]')
13
+ .description('Start file watcher + ingestion pipeline. Optionally specify a registered project name.')
14
+ .option('--no-confirm', 'Skip cost confirmation for bulk ingestion')
15
+ .action(async (projectName, opts) => {
16
+ const globals = program.opts();
17
+ await runWatch(projectName, opts, globals);
18
+ });
19
+ }
20
+ async function runWatch(projectName, opts, globals) {
21
+ let projectRoot;
22
+ let projectDisplayName = projectName;
23
+ // If project name provided, look it up in the registry
24
+ if (projectName) {
25
+ const registeredProject = getProject(projectName);
26
+ if (!registeredProject) {
27
+ console.error(chalk.red(`Error: Project "${projectName}" is not registered.`));
28
+ console.log(chalk.dim('Register it with: cortex projects add <name> <path>'));
29
+ console.log(chalk.dim('Or list registered projects: cortex projects list'));
30
+ process.exit(1);
31
+ }
32
+ projectRoot = registeredProject.path;
33
+ // Check config exists
34
+ const configPath = join(projectRoot, 'cortex.config.json');
35
+ if (!existsSync(configPath)) {
36
+ console.error(chalk.red(`Error: No cortex.config.json found in ${projectRoot}`));
37
+ console.log(chalk.dim(`Run 'cd ${projectRoot} && cortex init' to create one.`));
38
+ process.exit(1);
39
+ }
40
+ // Update last watched timestamp
41
+ updateProjectLastWatched(projectName);
42
+ }
43
+ const configDir = globals.config ? resolve(globals.config) : projectRoot;
44
+ const configPath = findConfigFile(configDir);
45
+ if (!globals.quiet) {
46
+ console.log(chalk.dim(`Config: ${configPath ?? '(none found — using defaults)'}`));
47
+ }
48
+ const config = loadConfig({ configDir });
49
+ // Suppress noisy JSON log lines unless --verbose
50
+ if (!globals.verbose) {
51
+ setGlobalLogLevel('error');
52
+ }
53
+ if (!globals.quiet) {
54
+ if (projectDisplayName) {
55
+ console.log(chalk.bold(`\n⚔ Cortex Watch: ${chalk.cyan(projectDisplayName)}\n`));
56
+ }
57
+ else {
58
+ console.log(chalk.bold('\n⚔ Cortex Watch\n'));
59
+ }
60
+ }
61
+ // Initialize stores
62
+ const store = new SQLiteStore({
63
+ dbPath: config.graph.dbPath,
64
+ walMode: config.graph.walMode,
65
+ backupOnStartup: config.graph.backupOnStartup,
66
+ });
67
+ // Initialize router
68
+ const router = new Router({ config });
69
+ // Ensure project exists
70
+ const projects = await store.listProjects();
71
+ let project = projects[0];
72
+ if (!project) {
73
+ project = await store.createProject({
74
+ name: 'default',
75
+ rootPath: resolve(config.ingest.watchDirs[0] ?? '.'),
76
+ privacyLevel: config.privacy.defaultLevel,
77
+ fileCount: 0,
78
+ entityCount: 0,
79
+ });
80
+ }
81
+ // Create pipeline
82
+ const pipeline = new IngestionPipeline(router, store, {
83
+ projectId: project.id,
84
+ projectName: project.name,
85
+ projectRoot: project.rootPath,
86
+ maxFileSize: config.ingest.maxFileSize,
87
+ batchSize: config.ingest.batchSize,
88
+ projectPrivacyLevel: project.privacyLevel,
89
+ mergeConfidenceThreshold: config.graph.mergeConfidenceThreshold,
90
+ });
91
+ // Create watcher
92
+ const watcher = FileWatcher.fromConfig(config.ingest);
93
+ let ingestedCount = 0;
94
+ let entityCount = 0;
95
+ let errorCount = 0;
96
+ let shuttingDown = false;
97
+ // Concurrency-limited work queue
98
+ const MAX_CONCURRENT = config.ingest.batchSize;
99
+ let activeJobs = 0;
100
+ const queue = [];
101
+ const spinner = ora({ isSilent: globals.quiet });
102
+ async function processFile(path) {
103
+ if (shuttingDown)
104
+ return;
105
+ spinner.start(`Ingesting ${path}...`);
106
+ try {
107
+ const result = await pipeline.ingestFile(path);
108
+ if (shuttingDown)
109
+ return;
110
+ if (result.status === 'ingested') {
111
+ ingestedCount++;
112
+ entityCount += result.entityIds.length;
113
+ spinner.succeed(`${path} → ${result.entityIds.length} entities, ${result.relationshipIds.length} relationships`);
114
+ }
115
+ else if (result.status === 'skipped') {
116
+ spinner.info(`${path} — skipped${result.error ? ` (${result.error})` : ''}`);
117
+ }
118
+ else {
119
+ errorCount++;
120
+ spinner.fail(`${path} — failed: ${result.error}`);
121
+ }
122
+ }
123
+ catch (err) {
124
+ if (shuttingDown)
125
+ return;
126
+ errorCount++;
127
+ spinner.fail(`${path} — error: ${err instanceof Error ? err.message : String(err)}`);
128
+ }
129
+ }
130
+ function drainQueue() {
131
+ while (queue.length > 0 && activeJobs < MAX_CONCURRENT && !shuttingDown) {
132
+ const item = queue.shift();
133
+ if (!item)
134
+ break;
135
+ activeJobs++;
136
+ processFile(item.path)
137
+ .catch(() => { })
138
+ .finally(() => {
139
+ activeJobs--;
140
+ drainQueue();
141
+ });
142
+ }
143
+ }
144
+ watcher.onFileChange((path, changeType) => {
145
+ if (shuttingDown)
146
+ return;
147
+ if (changeType === 'unlink') {
148
+ logger.debug('File deleted', { path });
149
+ return;
150
+ }
151
+ queue.push({ path, changeType });
152
+ drainQueue();
153
+ });
154
+ watcher.start();
155
+ // Step 5: Subscribe to live alerts
156
+ eventBus.on('contradiction.detected', (event) => {
157
+ if (globals.quiet)
158
+ return;
159
+ spinner.stop();
160
+ const { contradiction: c } = event.payload;
161
+ const severityColor = c.severity === 'critical' ? chalk.red : c.severity === 'high' ? chalk.yellow : chalk.dim;
162
+ console.log(severityColor(`\n⚠ Contradiction [${c.severity}]: ${c.description}`));
163
+ if (c.suggestedResolution) {
164
+ console.log(chalk.dim(` Suggestion: ${c.suggestedResolution}`));
165
+ }
166
+ console.log(chalk.dim(` Resolve with: cortex resolve ${c.id} --action <action>\n`));
167
+ });
168
+ // Step 5b: Budget warning and exhaustion alerts
169
+ eventBus.on('budget.warning', (event) => {
170
+ if (globals.quiet)
171
+ return;
172
+ spinner.stop();
173
+ const { usedPercent, remainingUsd } = event.payload;
174
+ const color = usedPercent >= 90 ? chalk.red : chalk.yellow;
175
+ console.log(color(`\nšŸ’ø Budget: ${usedPercent}% used ($${remainingUsd.toFixed(2)} remaining)\n`));
176
+ });
177
+ eventBus.on('budget.exhausted', (event) => {
178
+ if (globals.quiet)
179
+ return;
180
+ spinner.stop();
181
+ const { totalSpentUsd } = event.payload;
182
+ console.log(chalk.red(`\nā›” Monthly budget exhausted ($${totalSpentUsd.toFixed(2)} spent)`));
183
+ console.log(chalk.dim(' All tasks are now routing to local Ollama. Run `cortex costs` for details.\n'));
184
+ });
185
+ if (!globals.quiet) {
186
+ console.log(chalk.dim(`Watching ${config.ingest.watchDirs.join(', ')} (Ctrl+C to stop)\n`));
187
+ }
188
+ // Handle shutdown — force exit on signal
189
+ const shutdown = () => {
190
+ if (shuttingDown) {
191
+ // Second Ctrl+C — force exit immediately
192
+ process.exit(1);
193
+ }
194
+ shuttingDown = true;
195
+ queue.length = 0; // Clear pending queue
196
+ if (!globals.quiet) {
197
+ spinner.stop();
198
+ console.log(chalk.dim('\n\nShutting down...'));
199
+ console.log(chalk.green(`\nāœ“ Session: ${ingestedCount} files, ${entityCount} entities, ${errorCount} errors`));
200
+ }
201
+ // Stop the watcher, close the store, then exit
202
+ watcher.stop()
203
+ .catch(() => { })
204
+ .finally(() => {
205
+ try {
206
+ store.close();
207
+ }
208
+ catch { /* ignore close errors */ }
209
+ process.exit(0);
210
+ });
211
+ // Force exit after 3 seconds if graceful shutdown hangs
212
+ // (e.g. in-flight API calls not completing)
213
+ const forceTimer = setTimeout(() => {
214
+ process.exit(0);
215
+ }, 3000);
216
+ forceTimer.unref();
217
+ };
218
+ process.on('SIGINT', shutdown);
219
+ process.on('SIGTERM', shutdown);
220
+ // Ensure raw Ctrl+C works even if ora or other libs intercept SIGINT
221
+ if (process.stdin.isTTY) {
222
+ process.stdin.setRawMode(true);
223
+ process.stdin.resume();
224
+ process.stdin.on('data', (data) => {
225
+ // Ctrl+C is byte 0x03
226
+ if (data[0] === 0x03) {
227
+ shutdown();
228
+ }
229
+ });
230
+ }
231
+ // Keep process alive — this promise never resolves;
232
+ // the process exits via signal handlers calling process.exit()
233
+ await new Promise(() => { });
234
+ }
235
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ export interface GlobalOptions {
3
+ config?: string;
4
+ verbose: boolean;
5
+ quiet: boolean;
6
+ json: boolean;
7
+ color: boolean;
8
+ }
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAiDA,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB"}