@nexus-cortex/cli 4.26.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 (465) hide show
  1. package/.cortex/agents/AGENT_PROFILE_GUIDE.md +307 -0
  2. package/.cortex/agents/README.md +268 -0
  3. package/.cortex/agents/a-frontend-landing-page-designer.md +41 -0
  4. package/.cortex/agents/autoresearch-agent.md +49 -0
  5. package/.cortex/agents/code-reviewer.md +63 -0
  6. package/.cortex/agents/context-research.md +26 -0
  7. package/.cortex/agents/doc-writer.md +92 -0
  8. package/.cortex/agents/explore.md +63 -0
  9. package/.cortex/agents/new-model-api-integrator-analyst.md +41 -0
  10. package/.cortex/agents/plan.md +109 -0
  11. package/.cortex/agents/pr-architecture-reviewer.md +77 -0
  12. package/.cortex/agents/pr-code-quality.md +78 -0
  13. package/.cortex/agents/pr-implementer.md +50 -0
  14. package/.cortex/agents/pr-security-auditor.md +62 -0
  15. package/.cortex/agents/pr-test-writer.md +67 -0
  16. package/.cortex/agents/refactor.md +118 -0
  17. package/.cortex/agents/test-writer.md +72 -0
  18. package/.cortex/agents/web-researcher.md +72 -0
  19. package/.cortex/bench/tasks/sample-tasks.json +20 -0
  20. package/.cortex/commands/compare.md +14 -0
  21. package/.cortex/commands/deps.md +16 -0
  22. package/.cortex/commands/diff.md +14 -0
  23. package/.cortex/commands/explain.md +16 -0
  24. package/.cortex/commands/find-bug.md +13 -0
  25. package/.cortex/commands/profile.md +15 -0
  26. package/.cortex/commands/review.md +18 -0
  27. package/.cortex/commands/search.md +16 -0
  28. package/.cortex/commands/test.md +15 -0
  29. package/.cortex/permissions.dev.json +20 -0
  30. package/.cortex/permissions.example.json +71 -0
  31. package/.cortex/permissions.prod.json +63 -0
  32. package/.cortex/permissions.test.json +19 -0
  33. package/.cortex/skills/autoresearch/SKILL.md +77 -0
  34. package/.cortex/skills/autoresearch/personas/README.md +45 -0
  35. package/.cortex/skills/autoresearch/personas/aggressive-refactor.md +25 -0
  36. package/.cortex/skills/autoresearch/personas/creative.md +29 -0
  37. package/.cortex/skills/autoresearch/personas/perf-hunter.md +27 -0
  38. package/.cortex/skills/autoresearch/personas/precise.md +23 -0
  39. package/.cortex/skills/autoresearch/personas/root-cause.md +26 -0
  40. package/.cortex/skills/autoresearch/personas/security-auditor.md +29 -0
  41. package/.cortex/skills/autoresearch/personas/skeptic-reviewer.md +31 -0
  42. package/.cortex/skills/autoresearch/personas/test-first.md +25 -0
  43. package/.cortex/skills/best-of-n/SKILL.md +76 -0
  44. package/.cortex/skills/cortex/SKILL.md +834 -0
  45. package/.cortex/skills/cortex-bench/SKILL.md +354 -0
  46. package/.cortex/skills/docx/SKILL.md +83 -0
  47. package/.cortex/skills/pdf-documents/SKILL.md +297 -0
  48. package/.cortex/skills/pdf-documents/sections/01-image-acquisition.md +132 -0
  49. package/.cortex/skills/pdf-documents/sections/02-ai-image-generation.md +274 -0
  50. package/.cortex/skills/pdf-documents/sections/03-paper-sizes.md +89 -0
  51. package/.cortex/skills/pdf-documents/sections/04-design-system.md +549 -0
  52. package/.cortex/skills/pdf-documents/sections/05-css-print-rules.md +135 -0
  53. package/.cortex/skills/pdf-documents/sections/06-svg-charts.md +100 -0
  54. package/.cortex/skills/pdf-documents/sections/07-templates.md +224 -0
  55. package/.cortex/skills/pdf-documents/sections/08-scaled-output.md +164 -0
  56. package/.cortex/skills/pdf-documents/sections/09-preview-qa.md +66 -0
  57. package/.cortex/skills/pdf-documents/sections/10-reading-pdfs.md +499 -0
  58. package/.cortex/skills/pdf-documents/sections/11-form-filling.md +241 -0
  59. package/.cortex/skills/pptx/SKILL.md +90 -0
  60. package/.cortex/skills/resume-analyst/SKILL.md +373 -0
  61. package/.cortex/skills/verify-work/SKILL.md +74 -0
  62. package/.cortex/skills/xlsx/SKILL.md +101 -0
  63. package/.cortex/system-messages/messages/WORK_QUALITY.md +159 -0
  64. package/.cortex/system-messages/registry.json +18 -0
  65. package/LICENSE +202 -0
  66. package/NOTICE +2 -0
  67. package/README.md +13 -0
  68. package/bin/cortex.js +548 -0
  69. package/dist/agent-mode.d.ts +21 -0
  70. package/dist/agent-mode.d.ts.map +1 -0
  71. package/dist/agent-mode.js +511 -0
  72. package/dist/agent-mode.js.map +1 -0
  73. package/dist/client/CortexClient.d.ts +84 -0
  74. package/dist/client/CortexClient.d.ts.map +1 -0
  75. package/dist/client/CortexClient.js +163 -0
  76. package/dist/client/CortexClient.js.map +1 -0
  77. package/dist/commands/artifact/list.d.ts +15 -0
  78. package/dist/commands/artifact/list.d.ts.map +1 -0
  79. package/dist/commands/artifact/list.js +89 -0
  80. package/dist/commands/artifact/list.js.map +1 -0
  81. package/dist/commands/artifact/restart.d.ts +13 -0
  82. package/dist/commands/artifact/restart.d.ts.map +1 -0
  83. package/dist/commands/artifact/restart.js +56 -0
  84. package/dist/commands/artifact/restart.js.map +1 -0
  85. package/dist/commands/artifact/status.d.ts +13 -0
  86. package/dist/commands/artifact/status.d.ts.map +1 -0
  87. package/dist/commands/artifact/status.js +100 -0
  88. package/dist/commands/artifact/status.js.map +1 -0
  89. package/dist/commands/artifact/stop.d.ts +13 -0
  90. package/dist/commands/artifact/stop.d.ts.map +1 -0
  91. package/dist/commands/artifact/stop.js +50 -0
  92. package/dist/commands/artifact/stop.js.map +1 -0
  93. package/dist/commands/autoresearch/bench.d.ts +32 -0
  94. package/dist/commands/autoresearch/bench.d.ts.map +1 -0
  95. package/dist/commands/autoresearch/bench.js +123 -0
  96. package/dist/commands/autoresearch/bench.js.map +1 -0
  97. package/dist/commands/autoresearch/commandRunner.d.ts +35 -0
  98. package/dist/commands/autoresearch/commandRunner.d.ts.map +1 -0
  99. package/dist/commands/autoresearch/commandRunner.js +91 -0
  100. package/dist/commands/autoresearch/commandRunner.js.map +1 -0
  101. package/dist/commands/autoresearch/evaluate.d.ts +18 -0
  102. package/dist/commands/autoresearch/evaluate.d.ts.map +1 -0
  103. package/dist/commands/autoresearch/evaluate.js +117 -0
  104. package/dist/commands/autoresearch/evaluate.js.map +1 -0
  105. package/dist/commands/autoresearch/experiment.d.ts +38 -0
  106. package/dist/commands/autoresearch/experiment.d.ts.map +1 -0
  107. package/dist/commands/autoresearch/experiment.js +168 -0
  108. package/dist/commands/autoresearch/experiment.js.map +1 -0
  109. package/dist/commands/autoresearch/fix.d.ts +10 -0
  110. package/dist/commands/autoresearch/fix.d.ts.map +1 -0
  111. package/dist/commands/autoresearch/fix.js +86 -0
  112. package/dist/commands/autoresearch/fix.js.map +1 -0
  113. package/dist/commands/autoresearch/harnessProcess.d.ts +48 -0
  114. package/dist/commands/autoresearch/harnessProcess.d.ts.map +1 -0
  115. package/dist/commands/autoresearch/harnessProcess.js +140 -0
  116. package/dist/commands/autoresearch/harnessProcess.js.map +1 -0
  117. package/dist/commands/autoresearch/list.d.ts +6 -0
  118. package/dist/commands/autoresearch/list.d.ts.map +1 -0
  119. package/dist/commands/autoresearch/list.js +38 -0
  120. package/dist/commands/autoresearch/list.js.map +1 -0
  121. package/dist/commands/autoresearch/loop.d.ts +26 -0
  122. package/dist/commands/autoresearch/loop.d.ts.map +1 -0
  123. package/dist/commands/autoresearch/loop.js +242 -0
  124. package/dist/commands/autoresearch/loop.js.map +1 -0
  125. package/dist/commands/cache/metrics.d.ts +13 -0
  126. package/dist/commands/cache/metrics.d.ts.map +1 -0
  127. package/dist/commands/cache/metrics.js +77 -0
  128. package/dist/commands/cache/metrics.js.map +1 -0
  129. package/dist/commands/chat/AgenticChat.d.ts +39 -0
  130. package/dist/commands/chat/AgenticChat.d.ts.map +1 -0
  131. package/dist/commands/chat/AgenticChat.js +201 -0
  132. package/dist/commands/chat/AgenticChat.js.map +1 -0
  133. package/dist/commands/chat/renderers/CodeRenderer.d.ts +36 -0
  134. package/dist/commands/chat/renderers/CodeRenderer.d.ts.map +1 -0
  135. package/dist/commands/chat/renderers/CodeRenderer.js +85 -0
  136. package/dist/commands/chat/renderers/CodeRenderer.js.map +1 -0
  137. package/dist/commands/chat/renderers/ToolRenderer.d.ts +30 -0
  138. package/dist/commands/chat/renderers/ToolRenderer.d.ts.map +1 -0
  139. package/dist/commands/chat/renderers/ToolRenderer.js +93 -0
  140. package/dist/commands/chat/renderers/ToolRenderer.js.map +1 -0
  141. package/dist/commands/chat/single-message.d.ts +15 -0
  142. package/dist/commands/chat/single-message.d.ts.map +1 -0
  143. package/dist/commands/chat/single-message.js +85 -0
  144. package/dist/commands/chat/single-message.js.map +1 -0
  145. package/dist/commands/config/categories.d.ts +8 -0
  146. package/dist/commands/config/categories.d.ts.map +1 -0
  147. package/dist/commands/config/categories.js +75 -0
  148. package/dist/commands/config/categories.js.map +1 -0
  149. package/dist/commands/config/category.d.ts +8 -0
  150. package/dist/commands/config/category.d.ts.map +1 -0
  151. package/dist/commands/config/category.js +81 -0
  152. package/dist/commands/config/category.js.map +1 -0
  153. package/dist/commands/config/get.d.ts +9 -0
  154. package/dist/commands/config/get.d.ts.map +1 -0
  155. package/dist/commands/config/get.js +98 -0
  156. package/dist/commands/config/get.js.map +1 -0
  157. package/dist/commands/config/reset.d.ts +6 -0
  158. package/dist/commands/config/reset.d.ts.map +1 -0
  159. package/dist/commands/config/reset.js +68 -0
  160. package/dist/commands/config/reset.js.map +1 -0
  161. package/dist/commands/config/set.d.ts +6 -0
  162. package/dist/commands/config/set.d.ts.map +1 -0
  163. package/dist/commands/config/set.js +60 -0
  164. package/dist/commands/config/set.js.map +1 -0
  165. package/dist/commands/config/utils.d.ts +14 -0
  166. package/dist/commands/config/utils.d.ts.map +1 -0
  167. package/dist/commands/config/utils.js +54 -0
  168. package/dist/commands/config/utils.js.map +1 -0
  169. package/dist/commands/context/boundaries.d.ts +13 -0
  170. package/dist/commands/context/boundaries.d.ts.map +1 -0
  171. package/dist/commands/context/boundaries.js +45 -0
  172. package/dist/commands/context/boundaries.js.map +1 -0
  173. package/dist/commands/context/compact.d.ts +13 -0
  174. package/dist/commands/context/compact.d.ts.map +1 -0
  175. package/dist/commands/context/compact.js +41 -0
  176. package/dist/commands/context/compact.js.map +1 -0
  177. package/dist/commands/context/savings.d.ts +13 -0
  178. package/dist/commands/context/savings.d.ts.map +1 -0
  179. package/dist/commands/context/savings.js +49 -0
  180. package/dist/commands/context/savings.js.map +1 -0
  181. package/dist/commands/context/status.d.ts +13 -0
  182. package/dist/commands/context/status.d.ts.map +1 -0
  183. package/dist/commands/context/status.js +52 -0
  184. package/dist/commands/context/status.js.map +1 -0
  185. package/dist/commands/context/strategy.d.ts +13 -0
  186. package/dist/commands/context/strategy.d.ts.map +1 -0
  187. package/dist/commands/context/strategy.js +66 -0
  188. package/dist/commands/context/strategy.js.map +1 -0
  189. package/dist/commands/mcp/disable.d.ts +5 -0
  190. package/dist/commands/mcp/disable.d.ts.map +1 -0
  191. package/dist/commands/mcp/disable.js +26 -0
  192. package/dist/commands/mcp/disable.js.map +1 -0
  193. package/dist/commands/mcp/edit.d.ts +9 -0
  194. package/dist/commands/mcp/edit.d.ts.map +1 -0
  195. package/dist/commands/mcp/edit.js +62 -0
  196. package/dist/commands/mcp/edit.js.map +1 -0
  197. package/dist/commands/mcp/enable.d.ts +5 -0
  198. package/dist/commands/mcp/enable.d.ts.map +1 -0
  199. package/dist/commands/mcp/enable.js +27 -0
  200. package/dist/commands/mcp/enable.js.map +1 -0
  201. package/dist/commands/mcp/init.d.ts +9 -0
  202. package/dist/commands/mcp/init.d.ts.map +1 -0
  203. package/dist/commands/mcp/init.js +97 -0
  204. package/dist/commands/mcp/init.js.map +1 -0
  205. package/dist/commands/mcp/list.d.ts +6 -0
  206. package/dist/commands/mcp/list.d.ts.map +1 -0
  207. package/dist/commands/mcp/list.js +56 -0
  208. package/dist/commands/mcp/list.js.map +1 -0
  209. package/dist/commands/mcp/server.d.ts +6 -0
  210. package/dist/commands/mcp/server.d.ts.map +1 -0
  211. package/dist/commands/mcp/server.js +44 -0
  212. package/dist/commands/mcp/server.js.map +1 -0
  213. package/dist/commands/mcp/status.d.ts +6 -0
  214. package/dist/commands/mcp/status.d.ts.map +1 -0
  215. package/dist/commands/mcp/status.js +43 -0
  216. package/dist/commands/mcp/status.js.map +1 -0
  217. package/dist/commands/mcp/tools.d.ts +7 -0
  218. package/dist/commands/mcp/tools.d.ts.map +1 -0
  219. package/dist/commands/mcp/tools.js +82 -0
  220. package/dist/commands/mcp/tools.js.map +1 -0
  221. package/dist/commands/mcp/validate.d.ts +8 -0
  222. package/dist/commands/mcp/validate.d.ts.map +1 -0
  223. package/dist/commands/mcp/validate.js +121 -0
  224. package/dist/commands/mcp/validate.js.map +1 -0
  225. package/dist/commands/middleware/config.d.ts +13 -0
  226. package/dist/commands/middleware/config.d.ts.map +1 -0
  227. package/dist/commands/middleware/config.js +87 -0
  228. package/dist/commands/middleware/config.js.map +1 -0
  229. package/dist/commands/middleware/disable.d.ts +13 -0
  230. package/dist/commands/middleware/disable.d.ts.map +1 -0
  231. package/dist/commands/middleware/disable.js +50 -0
  232. package/dist/commands/middleware/disable.js.map +1 -0
  233. package/dist/commands/middleware/enable.d.ts +13 -0
  234. package/dist/commands/middleware/enable.d.ts.map +1 -0
  235. package/dist/commands/middleware/enable.js +50 -0
  236. package/dist/commands/middleware/enable.js.map +1 -0
  237. package/dist/commands/middleware/list.d.ts +13 -0
  238. package/dist/commands/middleware/list.d.ts.map +1 -0
  239. package/dist/commands/middleware/list.js +64 -0
  240. package/dist/commands/middleware/list.js.map +1 -0
  241. package/dist/commands/middleware/status.d.ts +13 -0
  242. package/dist/commands/middleware/status.d.ts.map +1 -0
  243. package/dist/commands/middleware/status.js +80 -0
  244. package/dist/commands/middleware/status.js.map +1 -0
  245. package/dist/commands/models/compare.d.ts +9 -0
  246. package/dist/commands/models/compare.d.ts.map +1 -0
  247. package/dist/commands/models/compare.js +76 -0
  248. package/dist/commands/models/compare.js.map +1 -0
  249. package/dist/commands/models/cost.d.ts +9 -0
  250. package/dist/commands/models/cost.d.ts.map +1 -0
  251. package/dist/commands/models/cost.js +64 -0
  252. package/dist/commands/models/cost.js.map +1 -0
  253. package/dist/commands/models/info.d.ts +9 -0
  254. package/dist/commands/models/info.d.ts.map +1 -0
  255. package/dist/commands/models/info.js +61 -0
  256. package/dist/commands/models/info.js.map +1 -0
  257. package/dist/commands/models/list.d.ts +6 -0
  258. package/dist/commands/models/list.d.ts.map +1 -0
  259. package/dist/commands/models/list.js +66 -0
  260. package/dist/commands/models/list.js.map +1 -0
  261. package/dist/commands/models/providers.d.ts +13 -0
  262. package/dist/commands/models/providers.d.ts.map +1 -0
  263. package/dist/commands/models/providers.js +45 -0
  264. package/dist/commands/models/providers.js.map +1 -0
  265. package/dist/commands/models/search.d.ts +10 -0
  266. package/dist/commands/models/search.d.ts.map +1 -0
  267. package/dist/commands/models/search.js +56 -0
  268. package/dist/commands/models/search.js.map +1 -0
  269. package/dist/commands/models/switch.d.ts +14 -0
  270. package/dist/commands/models/switch.d.ts.map +1 -0
  271. package/dist/commands/models/switch.js +67 -0
  272. package/dist/commands/models/switch.js.map +1 -0
  273. package/dist/commands/permissions/auto-approve.d.ts +13 -0
  274. package/dist/commands/permissions/auto-approve.d.ts.map +1 -0
  275. package/dist/commands/permissions/auto-approve.js +53 -0
  276. package/dist/commands/permissions/auto-approve.js.map +1 -0
  277. package/dist/commands/permissions/grant.d.ts +13 -0
  278. package/dist/commands/permissions/grant.d.ts.map +1 -0
  279. package/dist/commands/permissions/grant.js +46 -0
  280. package/dist/commands/permissions/grant.js.map +1 -0
  281. package/dist/commands/permissions/mode.d.ts +12 -0
  282. package/dist/commands/permissions/mode.d.ts.map +1 -0
  283. package/dist/commands/permissions/mode.js +61 -0
  284. package/dist/commands/permissions/mode.js.map +1 -0
  285. package/dist/commands/permissions/policies.d.ts +13 -0
  286. package/dist/commands/permissions/policies.d.ts.map +1 -0
  287. package/dist/commands/permissions/policies.js +47 -0
  288. package/dist/commands/permissions/policies.js.map +1 -0
  289. package/dist/commands/permissions/revoke.d.ts +13 -0
  290. package/dist/commands/permissions/revoke.d.ts.map +1 -0
  291. package/dist/commands/permissions/revoke.js +46 -0
  292. package/dist/commands/permissions/revoke.js.map +1 -0
  293. package/dist/commands/permissions/set.d.ts +13 -0
  294. package/dist/commands/permissions/set.d.ts.map +1 -0
  295. package/dist/commands/permissions/set.js +57 -0
  296. package/dist/commands/permissions/set.js.map +1 -0
  297. package/dist/commands/permissions/tools.d.ts +13 -0
  298. package/dist/commands/permissions/tools.d.ts.map +1 -0
  299. package/dist/commands/permissions/tools.js +50 -0
  300. package/dist/commands/permissions/tools.js.map +1 -0
  301. package/dist/commands/server/start.d.ts +11 -0
  302. package/dist/commands/server/start.d.ts.map +1 -0
  303. package/dist/commands/server/start.js +58 -0
  304. package/dist/commands/server/start.js.map +1 -0
  305. package/dist/commands/session/checkpoints.d.ts +6 -0
  306. package/dist/commands/session/checkpoints.d.ts.map +1 -0
  307. package/dist/commands/session/checkpoints.js +41 -0
  308. package/dist/commands/session/checkpoints.js.map +1 -0
  309. package/dist/commands/session/compact.d.ts +13 -0
  310. package/dist/commands/session/compact.d.ts.map +1 -0
  311. package/dist/commands/session/compact.js +56 -0
  312. package/dist/commands/session/compact.js.map +1 -0
  313. package/dist/commands/session/export.d.ts +6 -0
  314. package/dist/commands/session/export.d.ts.map +1 -0
  315. package/dist/commands/session/export.js +31 -0
  316. package/dist/commands/session/export.js.map +1 -0
  317. package/dist/commands/session/list.d.ts +7 -0
  318. package/dist/commands/session/list.d.ts.map +1 -0
  319. package/dist/commands/session/list.js +63 -0
  320. package/dist/commands/session/list.js.map +1 -0
  321. package/dist/commands/session/new.d.ts +8 -0
  322. package/dist/commands/session/new.d.ts.map +1 -0
  323. package/dist/commands/session/new.js +23 -0
  324. package/dist/commands/session/new.js.map +1 -0
  325. package/dist/commands/session/resume.d.ts +6 -0
  326. package/dist/commands/session/resume.d.ts.map +1 -0
  327. package/dist/commands/session/resume.js +32 -0
  328. package/dist/commands/session/resume.js.map +1 -0
  329. package/dist/commands/session/search.d.ts +10 -0
  330. package/dist/commands/session/search.d.ts.map +1 -0
  331. package/dist/commands/session/search.js +65 -0
  332. package/dist/commands/session/search.js.map +1 -0
  333. package/dist/commands/session/stats.d.ts +6 -0
  334. package/dist/commands/session/stats.d.ts.map +1 -0
  335. package/dist/commands/session/stats.js +58 -0
  336. package/dist/commands/session/stats.js.map +1 -0
  337. package/dist/commands/session/view.d.ts +6 -0
  338. package/dist/commands/session/view.d.ts.map +1 -0
  339. package/dist/commands/session/view.js +65 -0
  340. package/dist/commands/session/view.js.map +1 -0
  341. package/dist/commands/slash/CommandPalette.d.ts +60 -0
  342. package/dist/commands/slash/CommandPalette.d.ts.map +1 -0
  343. package/dist/commands/slash/CommandPalette.js +351 -0
  344. package/dist/commands/slash/CommandPalette.js.map +1 -0
  345. package/dist/commands/slash/SlashCommandParser.d.ts +11 -0
  346. package/dist/commands/slash/SlashCommandParser.d.ts.map +1 -0
  347. package/dist/commands/slash/SlashCommandParser.js +11 -0
  348. package/dist/commands/slash/SlashCommandParser.js.map +1 -0
  349. package/dist/commands/slash/SlashCommandRegistry.d.ts +11 -0
  350. package/dist/commands/slash/SlashCommandRegistry.d.ts.map +1 -0
  351. package/dist/commands/slash/SlashCommandRegistry.js +11 -0
  352. package/dist/commands/slash/SlashCommandRegistry.js.map +1 -0
  353. package/dist/commands/slash/index.d.ts +11 -0
  354. package/dist/commands/slash/index.d.ts.map +1 -0
  355. package/dist/commands/slash/index.js +13 -0
  356. package/dist/commands/slash/index.js.map +1 -0
  357. package/dist/commands/system-messages/list.d.ts +13 -0
  358. package/dist/commands/system-messages/list.d.ts.map +1 -0
  359. package/dist/commands/system-messages/list.js +54 -0
  360. package/dist/commands/system-messages/list.js.map +1 -0
  361. package/dist/commands/system-messages/reload.d.ts +13 -0
  362. package/dist/commands/system-messages/reload.d.ts.map +1 -0
  363. package/dist/commands/system-messages/reload.js +36 -0
  364. package/dist/commands/system-messages/reload.js.map +1 -0
  365. package/dist/commands/system-messages/view.d.ts +13 -0
  366. package/dist/commands/system-messages/view.d.ts.map +1 -0
  367. package/dist/commands/system-messages/view.js +52 -0
  368. package/dist/commands/system-messages/view.js.map +1 -0
  369. package/dist/commands/tmux/list.d.ts +13 -0
  370. package/dist/commands/tmux/list.d.ts.map +1 -0
  371. package/dist/commands/tmux/list.js +68 -0
  372. package/dist/commands/tmux/list.js.map +1 -0
  373. package/dist/commands/tools/info.d.ts +13 -0
  374. package/dist/commands/tools/info.d.ts.map +1 -0
  375. package/dist/commands/tools/info.js +82 -0
  376. package/dist/commands/tools/info.js.map +1 -0
  377. package/dist/commands/tools/list.d.ts +14 -0
  378. package/dist/commands/tools/list.d.ts.map +1 -0
  379. package/dist/commands/tools/list.js +67 -0
  380. package/dist/commands/tools/list.js.map +1 -0
  381. package/dist/config/ConfigManager.d.ts +40 -0
  382. package/dist/config/ConfigManager.d.ts.map +1 -0
  383. package/dist/config/ConfigManager.js +162 -0
  384. package/dist/config/ConfigManager.js.map +1 -0
  385. package/dist/config/extension.d.ts +12 -0
  386. package/dist/config/extension.d.ts.map +1 -0
  387. package/dist/config/extension.js +5 -0
  388. package/dist/config/extension.js.map +1 -0
  389. package/dist/config/settings.d.ts +42 -0
  390. package/dist/config/settings.d.ts.map +1 -0
  391. package/dist/config/settings.js +32 -0
  392. package/dist/config/settings.js.map +1 -0
  393. package/dist/index.d.ts +3 -0
  394. package/dist/index.d.ts.map +1 -0
  395. package/dist/index.js +883 -0
  396. package/dist/index.js.map +1 -0
  397. package/dist/orchestrator/OrchestratorClient.d.ts +385 -0
  398. package/dist/orchestrator/OrchestratorClient.d.ts.map +1 -0
  399. package/dist/orchestrator/OrchestratorClient.js +1195 -0
  400. package/dist/orchestrator/OrchestratorClient.js.map +1 -0
  401. package/dist/themes/DefaultTheme.d.ts +9 -0
  402. package/dist/themes/DefaultTheme.d.ts.map +1 -0
  403. package/dist/themes/DefaultTheme.js +29 -0
  404. package/dist/themes/DefaultTheme.js.map +1 -0
  405. package/dist/themes/MinimalTheme.d.ts +9 -0
  406. package/dist/themes/MinimalTheme.d.ts.map +1 -0
  407. package/dist/themes/MinimalTheme.js +29 -0
  408. package/dist/themes/MinimalTheme.js.map +1 -0
  409. package/dist/themes/Theme.interface.d.ts +36 -0
  410. package/dist/themes/Theme.interface.d.ts.map +1 -0
  411. package/dist/themes/Theme.interface.js +5 -0
  412. package/dist/themes/Theme.interface.js.map +1 -0
  413. package/dist/themes/ThemeManager.d.ts +63 -0
  414. package/dist/themes/ThemeManager.d.ts.map +1 -0
  415. package/dist/themes/ThemeManager.js +257 -0
  416. package/dist/themes/ThemeManager.js.map +1 -0
  417. package/dist/themes/colors.d.ts +108 -0
  418. package/dist/themes/colors.d.ts.map +1 -0
  419. package/dist/themes/colors.js +284 -0
  420. package/dist/themes/colors.js.map +1 -0
  421. package/dist/themes/createTheme.d.ts +40 -0
  422. package/dist/themes/createTheme.d.ts.map +1 -0
  423. package/dist/themes/createTheme.js +114 -0
  424. package/dist/themes/createTheme.js.map +1 -0
  425. package/dist/themes/themeDefinitions.d.ts +27 -0
  426. package/dist/themes/themeDefinitions.d.ts.map +1 -0
  427. package/dist/themes/themeDefinitions.js +244 -0
  428. package/dist/themes/themeDefinitions.js.map +1 -0
  429. package/dist/utils/CodeDiffRenderer.d.ts +124 -0
  430. package/dist/utils/CodeDiffRenderer.d.ts.map +1 -0
  431. package/dist/utils/CodeDiffRenderer.js +257 -0
  432. package/dist/utils/CodeDiffRenderer.js.map +1 -0
  433. package/dist/utils/MarkdownRenderer.d.ts +74 -0
  434. package/dist/utils/MarkdownRenderer.d.ts.map +1 -0
  435. package/dist/utils/MarkdownRenderer.js +260 -0
  436. package/dist/utils/MarkdownRenderer.js.map +1 -0
  437. package/dist/utils/MessageRenderer.d.ts +200 -0
  438. package/dist/utils/MessageRenderer.d.ts.map +1 -0
  439. package/dist/utils/MessageRenderer.js +283 -0
  440. package/dist/utils/MessageRenderer.js.map +1 -0
  441. package/dist/utils/ToolFormatter.d.ts +103 -0
  442. package/dist/utils/ToolFormatter.d.ts.map +1 -0
  443. package/dist/utils/ToolFormatter.js +357 -0
  444. package/dist/utils/ToolFormatter.js.map +1 -0
  445. package/dist/utils/boxDrawing.d.ts +23 -0
  446. package/dist/utils/boxDrawing.d.ts.map +1 -0
  447. package/dist/utils/boxDrawing.js +78 -0
  448. package/dist/utils/boxDrawing.js.map +1 -0
  449. package/dist/utils/checks.d.ts +9 -0
  450. package/dist/utils/checks.d.ts.map +1 -0
  451. package/dist/utils/checks.js +11 -0
  452. package/dist/utils/checks.js.map +1 -0
  453. package/dist/utils/events.d.ts +24 -0
  454. package/dist/utils/events.d.ts.map +1 -0
  455. package/dist/utils/events.js +17 -0
  456. package/dist/utils/events.js.map +1 -0
  457. package/dist/utils/formatters.d.ts +255 -0
  458. package/dist/utils/formatters.d.ts.map +1 -0
  459. package/dist/utils/formatters.js +361 -0
  460. package/dist/utils/formatters.js.map +1 -0
  461. package/dist/utils/math.d.ts +11 -0
  462. package/dist/utils/math.d.ts.map +1 -0
  463. package/dist/utils/math.js +13 -0
  464. package/dist/utils/math.js.map +1 -0
  465. package/package.json +82 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * `cortex autoresearch loop` — the autonomous recursive loop: pick a goal, fix it in an
3
+ * isolated worktree, measure base-vs-candidate through the gate, KEEP only what verifies,
4
+ * advance the base, and repeat until a stop condition. The single-process, local analogue
5
+ * of the NPC swarm — useful for "improve project X until the metric clears a bar" without
6
+ * the container infrastructure.
7
+ *
8
+ * Each round:
9
+ * 1. Goal = --prompt, else the highest-priority workable backlog deficiency.
10
+ * 2. Create a candidate worktree detached at the current base ref.
11
+ * 3. Mutate it: --fixer-cmd (any transformer), else the LLM `cortex autoresearch fix`.
12
+ * 4. Commit the candidate (no change → skip the round).
13
+ * 5. Run `cortex autoresearch experiment` (base vs candidate) and read the verdict.
14
+ * 6. ACCEPT = mergeEligible when a holdout is given (keep + FWER + holdout-verified); with
15
+ * no holdout, accept = keep-on-train (logged as UNVERIFIED — provide --holdout-set for
16
+ * the overfitting guard). On accept: advance base to the candidate + anchor the loop
17
+ * branch to it. On reject: drop the worktree.
18
+ * 7. Stop on: success metric met, max rounds, max consecutive stale rounds, or a dry backlog.
19
+ *
20
+ * GIT SAFETY: all work happens in throwaway worktrees off a dedicated loop branch
21
+ * (`autoresearch/loop-*`). The user's branch and working tree are never touched. Accepted
22
+ * candidate commits are anchored to the loop branch so detached-HEAD commits survive
23
+ * worktree removal; the operator merges the loop branch when satisfied.
24
+ */
25
+ import { execFileSync, spawnSync } from 'node:child_process';
26
+ import { mkdtempSync } from 'node:fs';
27
+ import { tmpdir } from 'node:os';
28
+ import { join, resolve } from 'node:path';
29
+ import { ResearchBacklog } from '@nexus-cortex/core';
30
+ import { ThemeManager } from '../../themes/ThemeManager.js';
31
+ function shQuote(s) { return `'${s.replace(/'/g, `'\\''`)}'`; }
32
+ export async function autoResearchLoop(options) {
33
+ const theme = ThemeManager.getTheme();
34
+ const json = !!options.json;
35
+ const log = (m) => { if (!json)
36
+ console.log(theme.colors.muted(` ${m}`)); };
37
+ const self = process.argv[1]; // re-invoke this same CLI for fix/experiment
38
+ const miss = [];
39
+ if (!options.repo)
40
+ miss.push('--repo');
41
+ if (!options.taskSet)
42
+ miss.push('--task-set');
43
+ if (miss.length) {
44
+ console.error(theme.colors.error(`Error: missing ${miss.join(', ')}`));
45
+ process.exit(1);
46
+ }
47
+ const repo = resolve(options.repo);
48
+ const git = (args, cwd = repo) => execFileSync('git', ['-C', cwd, ...args], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }).trim();
49
+ const sh = (cmd, cwd) => spawnSync('sh', ['-c', cmd], { cwd, stdio: json ? 'ignore' : 'inherit' });
50
+ let baseRef;
51
+ try {
52
+ baseRef = options.baseRef ?? git(['rev-parse', 'HEAD']);
53
+ }
54
+ catch {
55
+ console.error(theme.colors.error(`Error: ${repo} is not a git repository`));
56
+ process.exit(1);
57
+ return;
58
+ }
59
+ const maxRounds = Number(options.maxRounds ?? '10');
60
+ const maxStale = Number(options.maxStale ?? String(maxRounds));
61
+ const branch = options.branch ?? `autoresearch/loop-${baseRef.slice(0, 8)}`;
62
+ const store = options.cortexDir ? resolve(options.cortexDir) : repo;
63
+ const backlog = new ResearchBacklog(repo);
64
+ const successMetric = options.successMetric
65
+ ? { taskId: options.successMetric.split(':')[0], threshold: Number(options.successMetric.split(':')[1]) }
66
+ : undefined;
67
+ // The loop branch anchors accepted candidate commits (so detached worktree commits survive).
68
+ try {
69
+ git(['branch', '-f', branch, baseRef]);
70
+ }
71
+ catch { /* branch may already exist at ref */ }
72
+ const worktrees = [];
73
+ const addWorktree = (ref) => {
74
+ const dir = mkdtempSync(join(tmpdir(), 'arloop-'));
75
+ git(['worktree', 'add', '--detach', dir, ref]);
76
+ worktrees.push(dir);
77
+ return dir;
78
+ };
79
+ const removeWorktree = (dir) => { try {
80
+ git(['worktree', 'remove', '--force', dir]);
81
+ }
82
+ catch { /* */ } };
83
+ let baseDir = addWorktree(baseRef);
84
+ const rounds = [];
85
+ let stale = 0;
86
+ let stop = 'max-rounds';
87
+ if (!json)
88
+ console.log(`\n ${theme.colors.highlight('Auto-research loop')} repo=${repo} branch=${branch} base=${baseRef.slice(0, 8)} max=${maxRounds}\n`);
89
+ try {
90
+ for (let r = 1; r <= maxRounds; r++) {
91
+ // 1. Goal
92
+ let goal = options.prompt;
93
+ let defId;
94
+ if (!goal) {
95
+ const d = backlog.next();
96
+ if (!d) {
97
+ stop = 'backlog-dry';
98
+ break;
99
+ }
100
+ goal = d.description;
101
+ defId = d.id;
102
+ backlog.markInProgress(d.id, `loop-r${r}`);
103
+ }
104
+ // 2. Candidate worktree at the current base.
105
+ const candDir = addWorktree(baseRef);
106
+ // 3. Mutate (fixer).
107
+ log(`r${r}: fixing → ${goal.slice(0, 80)}`);
108
+ if (options.fixerCmd) {
109
+ const cmd = options.fixerCmd.replace(/\{prompt\}/g, shQuote(goal));
110
+ const f = sh(cmd, candDir);
111
+ if (f.status !== 0) {
112
+ log(`r${r}: fixer-cmd failed (exit ${f.status}) → skip`);
113
+ removeWorktree(candDir);
114
+ stale++;
115
+ if (stale >= maxStale) {
116
+ stop = 'max-stale';
117
+ break;
118
+ }
119
+ continue;
120
+ }
121
+ }
122
+ else {
123
+ const f = spawnSync('node', [self, 'autoresearch', 'fix', '--cwd', candDir, '--prompt', goal, '--json'], { stdio: json ? 'ignore' : 'inherit' });
124
+ if (f.status !== 0) {
125
+ log(`r${r}: fixer failed → skip`);
126
+ removeWorktree(candDir);
127
+ stale++;
128
+ if (stale >= maxStale) {
129
+ stop = 'max-stale';
130
+ break;
131
+ }
132
+ continue;
133
+ }
134
+ }
135
+ // 4. Commit candidate (no change → skip the round).
136
+ git(['add', '-A'], candDir);
137
+ const dirty = spawnSync('git', ['-C', candDir, 'diff', '--cached', '--quiet']).status !== 0;
138
+ if (!dirty) {
139
+ log(`r${r}: no change → skip`);
140
+ removeWorktree(candDir);
141
+ stale++;
142
+ if (stale >= maxStale) {
143
+ stop = 'max-stale';
144
+ break;
145
+ }
146
+ continue;
147
+ }
148
+ git(['commit', '-q', '-m', `autoresearch loop r${r}: ${goal.slice(0, 60)}`], candDir);
149
+ const candRef = git(['rev-parse', '--short', 'HEAD'], candDir);
150
+ // 5. Experiment base vs candidate (subprocess → JSON verdict).
151
+ const expArgs = ['autoresearch', 'experiment',
152
+ '--experiment-tag', `loop-r${r}`,
153
+ '--base-dir', baseDir, '--candidate-dir', candDir,
154
+ '--base-ref', git(['rev-parse', '--short', 'HEAD'], baseDir), '--candidate-ref', candRef,
155
+ '--task-set', resolve(options.taskSet), '--no-build',
156
+ '--cortex-dir', store, '--runs', options.runs ?? '3', '--json'];
157
+ if (options.holdoutSet)
158
+ expArgs.push('--holdout-set', resolve(options.holdoutSet));
159
+ if (options.model)
160
+ expArgs.push('--model', options.model);
161
+ if (options.temperature)
162
+ expArgs.push('--temperature', options.temperature);
163
+ if (options.strategy)
164
+ expArgs.push('--strategy', options.strategy);
165
+ if (options.runCmd) {
166
+ expArgs.push('--run-cmd', options.runCmd, '--accept-exit', options.acceptExit ?? '0');
167
+ if (options.buildCmd)
168
+ expArgs.push('--build-cmd', options.buildCmd);
169
+ }
170
+ const exp = spawnSync('node', [self, ...expArgs], { encoding: 'utf8' });
171
+ let res;
172
+ try {
173
+ res = JSON.parse(exp.stdout);
174
+ }
175
+ catch {
176
+ log(`r${r}: experiment produced no verdict → skip`);
177
+ removeWorktree(candDir);
178
+ stale++;
179
+ if (stale >= maxStale) {
180
+ stop = 'max-stale';
181
+ break;
182
+ }
183
+ continue;
184
+ }
185
+ const keep = res.verdict?.decision === 'keep';
186
+ const accept = options.holdoutSet ? !!res.mergeEligible : keep;
187
+ const candScore = (() => {
188
+ const s = res.benchSummaries?.candidate?.holdout ?? res.benchSummaries?.candidate?.train;
189
+ const t = s?.tasks?.find((x) => x.taskId === successMetric?.taskId);
190
+ return t?.meanScore;
191
+ })();
192
+ rounds.push({ round: r, candRef, decision: res.verdict?.decision, effect: res.verdict?.effect, mergeEligible: res.mergeEligible, accepted: accept, candScore });
193
+ log(`r${r}: ${res.verdict?.decision?.toUpperCase()} effect ${res.verdict?.effect} ${accept ? theme.colors.success('ACCEPT') : theme.colors.error('reject')}${options.holdoutSet ? '' : ' (train-only, UNVERIFIED — pass --holdout-set)'}`);
194
+ // 6. Advance or discard.
195
+ if (accept) {
196
+ git(['branch', '-f', branch, candRef]); // anchor the accepted commit
197
+ removeWorktree(baseDir); // old base
198
+ baseDir = candDir;
199
+ baseRef = candRef;
200
+ stale = 0;
201
+ if (defId) {
202
+ if (options.holdoutSet)
203
+ backlog.markVerified(defId, `loop-r${r}`);
204
+ else
205
+ backlog.markFixed(defId, candRef);
206
+ }
207
+ if (successMetric && candScore != null && candScore >= successMetric.threshold) {
208
+ stop = 'success';
209
+ break;
210
+ }
211
+ }
212
+ else {
213
+ if (!options.keepWorktrees)
214
+ removeWorktree(candDir);
215
+ stale++;
216
+ if (stale >= maxStale) {
217
+ stop = 'max-stale';
218
+ break;
219
+ }
220
+ }
221
+ }
222
+ }
223
+ finally {
224
+ // Anchor the final result on the loop branch, then clean every loop worktree.
225
+ try {
226
+ git(['branch', '-f', branch, baseRef]);
227
+ }
228
+ catch { /* */ }
229
+ for (const w of worktrees)
230
+ removeWorktree(w);
231
+ }
232
+ const out = { repo, branch, finalRef: baseRef, rounds: rounds.length, merges: rounds.filter(r => r.accepted).length, stop, history: rounds };
233
+ if (json) {
234
+ console.log(JSON.stringify(out, null, 2));
235
+ return;
236
+ }
237
+ console.log();
238
+ console.log(` ${theme.colors.highlight('Loop done')} stop=${stop} rounds=${rounds.length} merges=${out.merges}`);
239
+ console.log(theme.colors.muted(` Result on branch ${branch} → ${baseRef.slice(0, 8)}. Merge it when satisfied: git -C ${repo} merge ${branch}`));
240
+ console.log();
241
+ }
242
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/commands/autoresearch/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Cache Metrics Command
3
+ * Display prompt caching statistics
4
+ */
5
+ export interface CacheMetricsOptions {
6
+ serverUrl?: string;
7
+ json?: boolean;
8
+ }
9
+ /**
10
+ * Display cache metrics
11
+ */
12
+ export declare function cacheMetrics(_sessionId: string, options?: CacheMetricsOptions): Promise<void>;
13
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Cache Metrics Command
3
+ * Display prompt caching statistics
4
+ */
5
+ import { OrchestratorClient } from '../../orchestrator/OrchestratorClient.js';
6
+ import { ConfigManager } from '../../config/ConfigManager.js';
7
+ import { ThemeManager } from '../../themes/ThemeManager.js';
8
+ /**
9
+ * Display cache metrics
10
+ */
11
+ export async function cacheMetrics(_sessionId, options = {}) {
12
+ const config = await ConfigManager.load();
13
+ const theme = ThemeManager.getTheme();
14
+ // Determine mode from environment
15
+ const envMode = (process.env.CORTEX_MODE);
16
+ const mode = envMode === 'server' ? 'server' : 'direct';
17
+ const client = new OrchestratorClient({
18
+ mode,
19
+ serverUrl: options.serverUrl || config.serverUrl || 'http://localhost:4000',
20
+ debug: process.env.DEBUG === 'true'
21
+ });
22
+ try {
23
+ await client.initialize();
24
+ // Get cache metrics (sessionId not needed in direct mode)
25
+ const response = await client.getCacheMetrics();
26
+ // JSON output
27
+ if (options.json) {
28
+ console.log(JSON.stringify(response, null, 2));
29
+ return;
30
+ }
31
+ // Formatted output
32
+ console.log(theme.colors.primary('\n Prompt Caching Metrics\n'));
33
+ if (response.metrics) {
34
+ const m = response.metrics;
35
+ console.log(theme.colors.secondary('Cache Activity:'));
36
+ console.log(` Total Requests: ${theme.colors.highlight(m.requestCount?.toString() || '0')}`);
37
+ console.log(` Requests with Cache Hits: ${theme.colors.highlight(m.requestsWithCacheHits?.toString() || '0')}`);
38
+ if (m.overallCacheHitRate) {
39
+ const hitRate = (m.overallCacheHitRate * 100).toFixed(1);
40
+ console.log(` Hit Rate: ${theme.colors.success(hitRate + '%')}`);
41
+ }
42
+ console.log();
43
+ console.log(theme.colors.secondary('Token Usage:'));
44
+ console.log(` Total Input Tokens: ${theme.colors.highlight(m.totalInputTokens?.toLocaleString() || '0')}`);
45
+ console.log(` Cache Creation: ${theme.colors.highlight(m.totalCacheCreationTokens?.toLocaleString() || '0')}`);
46
+ console.log(` Cache Reads: ${theme.colors.success(m.totalCacheReadTokens?.toLocaleString() || '0')}`);
47
+ console.log(` Uncached: ${theme.colors.muted(m.totalUncachedInputTokens?.toLocaleString() || '0')}`);
48
+ if (m.overallCostSavingsRatio) {
49
+ const costSavings = (m.overallCostSavingsRatio * 100).toFixed(1);
50
+ console.log(` Est. Cost Savings: ${theme.colors.success(costSavings + '%')}`);
51
+ }
52
+ console.log();
53
+ // Show provider breakdown
54
+ if (m.byProvider && Object.keys(m.byProvider).length > 0) {
55
+ console.log(theme.colors.secondary('By Provider:'));
56
+ for (const [provider, pm] of Object.entries(m.byProvider)) {
57
+ const providerHitRate = pm.cacheHitRate ? `${(pm.cacheHitRate * 100).toFixed(1)}%` : '0%';
58
+ console.log(` ${provider}: ${theme.colors.highlight(pm.cacheReadTokens.toLocaleString())} cached (${providerHitRate})`);
59
+ }
60
+ console.log();
61
+ }
62
+ }
63
+ if (response.report) {
64
+ console.log(theme.colors.secondary('Report:'));
65
+ console.log(theme.colors.muted(response.report));
66
+ console.log();
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.error(theme.colors.error(`Error: ${error.message}`));
71
+ process.exitCode = 1;
72
+ }
73
+ finally {
74
+ await client.disconnect();
75
+ }
76
+ }
77
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/commands/cache/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Rich Agentic Chat Interface
3
+ * Orchestrates streaming responses with tool visualization
4
+ */
5
+ export interface AgenticChatOptions {
6
+ serverUrl?: string;
7
+ model?: string;
8
+ system?: string;
9
+ maxTokens?: number;
10
+ temperature?: number;
11
+ }
12
+ export declare class AgenticChat {
13
+ private client;
14
+ private messages;
15
+ private currentToolCalls;
16
+ private theme;
17
+ private extendedTheme;
18
+ private toolRenderer;
19
+ private rl;
20
+ private options;
21
+ constructor(options?: AgenticChatOptions);
22
+ /**
23
+ * Start the interactive chat
24
+ */
25
+ start(): Promise<void>;
26
+ /**
27
+ * Show prompt and handle user input
28
+ */
29
+ private prompt;
30
+ /**
31
+ * Handle a user message
32
+ */
33
+ private handleUserMessage;
34
+ /**
35
+ * Handle a stream event
36
+ */
37
+ private handleStreamEvent;
38
+ }
39
+ //# sourceMappingURL=AgenticChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgenticChat.d.ts","sourceRoot":"","sources":["../../../src/commands/chat/AgenticChat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB;IAW5C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B;;OAEG;IACH,OAAO,CAAC,MAAM;IAqCd;;OAEG;YACW,iBAAiB;IA6D/B;;OAEG;YACW,iBAAiB;CA6EhC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Rich Agentic Chat Interface
3
+ * Orchestrates streaming responses with tool visualization
4
+ */
5
+ import { CortexClient } from '../../client/CortexClient.js';
6
+ import { ThemeManager } from '../../themes/ThemeManager.js';
7
+ import { ToolRenderer } from './renderers/ToolRenderer.js';
8
+ import * as readline from 'readline';
9
+ export class AgenticChat {
10
+ client;
11
+ messages = [];
12
+ currentToolCalls = new Map();
13
+ theme = ThemeManager.getTheme();
14
+ extendedTheme = ThemeManager.getExtendedTheme();
15
+ toolRenderer;
16
+ rl;
17
+ options;
18
+ constructor(options = {}) {
19
+ this.options = options;
20
+ this.client = new CortexClient(options.serverUrl);
21
+ this.toolRenderer = new ToolRenderer(this.theme);
22
+ this.rl = readline.createInterface({
23
+ input: process.stdin,
24
+ output: process.stdout,
25
+ });
26
+ }
27
+ /**
28
+ * Start the interactive chat
29
+ */
30
+ async start() {
31
+ // Enhanced header with rounded box
32
+ console.log();
33
+ console.log(this.extendedTheme.doubleBox(`Nexus Cortex - Agentic Chat\n` +
34
+ `Advanced streaming with tool visualization\n` +
35
+ `Commands: "exit" to quit, "clear" to reset`, ' Agentic Mode'));
36
+ console.log();
37
+ if (this.options.model) {
38
+ console.log(this.extendedTheme.infoMessage(`Model: ${this.theme.colors.highlight(this.options.model)}`));
39
+ }
40
+ console.log(this.extendedTheme.dimmed('Real-time streaming • Tool execution • Enhanced feedback'));
41
+ console.log();
42
+ this.prompt();
43
+ }
44
+ /**
45
+ * Show prompt and handle user input
46
+ */
47
+ prompt() {
48
+ this.rl.question(this.theme.colors.info('\n❯ You: '), async (input) => {
49
+ const userInput = input.trim();
50
+ // Handle commands
51
+ if (userInput.toLowerCase() === 'exit') {
52
+ console.log();
53
+ console.log(this.extendedTheme.roundedBox('Thank you for using Agentic Chat!\n' +
54
+ 'Session saved automatically.', ' Goodbye'));
55
+ console.log();
56
+ this.rl.close();
57
+ return;
58
+ }
59
+ if (userInput.toLowerCase() === 'clear') {
60
+ this.messages.length = 0;
61
+ this.currentToolCalls.clear();
62
+ console.log();
63
+ console.log(this.extendedTheme.successMessage('Conversation history cleared'));
64
+ console.log();
65
+ this.prompt();
66
+ return;
67
+ }
68
+ if (!userInput) {
69
+ this.prompt();
70
+ return;
71
+ }
72
+ await this.handleUserMessage(userInput);
73
+ this.prompt();
74
+ });
75
+ }
76
+ /**
77
+ * Handle a user message
78
+ */
79
+ async handleUserMessage(input) {
80
+ // Add user message
81
+ this.messages.push({
82
+ role: 'user',
83
+ content: input,
84
+ });
85
+ try {
86
+ console.log();
87
+ console.log(this.theme.colors.secondary(' Assistant:'));
88
+ console.log(this.extendedTheme.dimmed('─'.repeat(50)));
89
+ console.log();
90
+ let currentText = '';
91
+ const contentBlocks = [];
92
+ // Stream the response
93
+ for await (const event of this.client.streamMessage(this.messages, {
94
+ model: this.options.model,
95
+ system: this.options.system,
96
+ max_tokens: this.options.maxTokens,
97
+ temperature: this.options.temperature,
98
+ tools: [], // Enable all tools
99
+ })) {
100
+ await this.handleStreamEvent(event, contentBlocks);
101
+ // Track text for final message
102
+ if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {
103
+ currentText += event.delta.text;
104
+ }
105
+ }
106
+ // Add assistant message to history
107
+ if (contentBlocks.length > 0 || currentText) {
108
+ this.messages.push({
109
+ role: 'assistant',
110
+ content: contentBlocks.length > 0 ? contentBlocks : currentText,
111
+ });
112
+ }
113
+ // Clear current tool calls for next message
114
+ this.currentToolCalls.clear();
115
+ // Show stats
116
+ console.log();
117
+ console.log(this.extendedTheme.dimmed('─'.repeat(50)));
118
+ console.log(this.extendedTheme.dimmed(`Messages: ${this.messages.length} | Tools used: ${contentBlocks.filter(b => b.type === 'tool_use').length}`));
119
+ }
120
+ catch (error) {
121
+ console.log();
122
+ console.log(this.extendedTheme.errorMessage(error.message));
123
+ console.log();
124
+ // Show helpful hints
125
+ if (error.message.includes('ECONNREFUSED')) {
126
+ console.log(this.extendedTheme.infoMessage('Hint: Server not responding'));
127
+ console.log(this.extendedTheme.dimmed(' Try: npm run dev:full'));
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Handle a stream event
133
+ */
134
+ async handleStreamEvent(event, contentBlocks) {
135
+ switch (event.type) {
136
+ case 'message_start':
137
+ // Message starting, no action needed
138
+ break;
139
+ case 'content_block_start':
140
+ if (event.content_block) {
141
+ contentBlocks.push(event.content_block);
142
+ // If it's a tool use, initialize tracking
143
+ if (event.content_block.type === 'tool_use') {
144
+ const toolCall = {
145
+ id: event.content_block.id || 'unknown',
146
+ name: event.content_block.name || 'unknown',
147
+ input: event.content_block.input || {},
148
+ status: 'running',
149
+ };
150
+ this.currentToolCalls.set(toolCall.id, toolCall);
151
+ // Render tool start
152
+ console.log('\n' + this.toolRenderer.renderToolStart(toolCall) + '\n');
153
+ }
154
+ }
155
+ break;
156
+ case 'content_block_delta':
157
+ if (event.delta?.type === 'text_delta') {
158
+ // Stream text character by character
159
+ process.stdout.write(event.delta.text);
160
+ }
161
+ else if (event.delta?.type === 'input_json_delta') {
162
+ // Tool input accumulation (if needed)
163
+ }
164
+ break;
165
+ case 'content_block_stop':
166
+ // Block completed
167
+ break;
168
+ case 'tool_result':
169
+ // Tool execution completed
170
+ const toolId = event.tool_use_id;
171
+ const toolCall = this.currentToolCalls.get(toolId);
172
+ if (toolCall) {
173
+ toolCall.status = event.is_error ? 'error' : 'success';
174
+ toolCall.result = event.content;
175
+ toolCall.error = event.is_error ? event.content : undefined;
176
+ // Render tool result
177
+ console.log(this.toolRenderer.renderToolResult(toolCall) + '\n');
178
+ // Add tool result to content blocks
179
+ contentBlocks.push({
180
+ type: 'tool_result',
181
+ tool_use_id: toolId,
182
+ content: event.content,
183
+ is_error: event.is_error,
184
+ });
185
+ }
186
+ break;
187
+ case 'message_delta':
188
+ // Usage stats, ignore for now
189
+ break;
190
+ case 'message_stop':
191
+ // Message complete
192
+ break;
193
+ default:
194
+ // Unknown event type
195
+ if (process.env.DEBUG) {
196
+ console.log(this.theme.colors.muted(`[Unknown event: ${event.type}]`));
197
+ }
198
+ }
199
+ }
200
+ }
201
+ //# sourceMappingURL=AgenticChat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgenticChat.js","sourceRoot":"","sources":["../../../src/commands/chat/AgenticChat.ts"],"names":[],"mappings":"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"}