@oxagen/cli 0.5.0 → 0.6.1

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 (702) hide show
  1. package/README.md +66 -3
  2. package/dist/agent/__tests__/code-graph.test.d.ts +2 -0
  3. package/dist/agent/__tests__/code-graph.test.d.ts.map +1 -0
  4. package/dist/agent/__tests__/code-graph.test.js +83 -0
  5. package/dist/agent/__tests__/code-graph.test.js.map +1 -0
  6. package/dist/agent/__tests__/evaluator.test.d.ts +2 -0
  7. package/dist/agent/__tests__/evaluator.test.d.ts.map +1 -0
  8. package/dist/agent/__tests__/evaluator.test.js +96 -0
  9. package/dist/agent/__tests__/evaluator.test.js.map +1 -0
  10. package/dist/agent/__tests__/fleet-memory.test.d.ts +2 -0
  11. package/dist/agent/__tests__/fleet-memory.test.d.ts.map +1 -0
  12. package/dist/agent/__tests__/fleet-memory.test.js +107 -0
  13. package/dist/agent/__tests__/fleet-memory.test.js.map +1 -0
  14. package/dist/agent/__tests__/fleet-store.test.d.ts +2 -0
  15. package/dist/agent/__tests__/fleet-store.test.d.ts.map +1 -0
  16. package/dist/agent/__tests__/fleet-store.test.js +93 -0
  17. package/dist/agent/__tests__/fleet-store.test.js.map +1 -0
  18. package/dist/agent/__tests__/git-isolation.test.d.ts +2 -0
  19. package/dist/agent/__tests__/git-isolation.test.d.ts.map +1 -0
  20. package/dist/agent/__tests__/git-isolation.test.js +119 -0
  21. package/dist/agent/__tests__/git-isolation.test.js.map +1 -0
  22. package/dist/agent/__tests__/judge.test.d.ts +2 -0
  23. package/dist/agent/__tests__/judge.test.d.ts.map +1 -0
  24. package/dist/agent/__tests__/judge.test.js +140 -0
  25. package/dist/agent/__tests__/judge.test.js.map +1 -0
  26. package/dist/agent/__tests__/loop-errors.test.d.ts +2 -0
  27. package/dist/agent/__tests__/loop-errors.test.d.ts.map +1 -0
  28. package/dist/agent/__tests__/loop-errors.test.js +75 -0
  29. package/dist/agent/__tests__/loop-errors.test.js.map +1 -0
  30. package/dist/agent/__tests__/loop-gating.test.d.ts +2 -0
  31. package/dist/agent/__tests__/loop-gating.test.d.ts.map +1 -0
  32. package/dist/agent/__tests__/loop-gating.test.js +94 -0
  33. package/dist/agent/__tests__/loop-gating.test.js.map +1 -0
  34. package/dist/agent/__tests__/model-router.test.d.ts +2 -0
  35. package/dist/agent/__tests__/model-router.test.d.ts.map +1 -0
  36. package/dist/agent/__tests__/model-router.test.js +138 -0
  37. package/dist/agent/__tests__/model-router.test.js.map +1 -0
  38. package/dist/agent/__tests__/orchestrator-isolation.test.d.ts +2 -0
  39. package/dist/agent/__tests__/orchestrator-isolation.test.d.ts.map +1 -0
  40. package/dist/agent/__tests__/orchestrator-isolation.test.js +134 -0
  41. package/dist/agent/__tests__/orchestrator-isolation.test.js.map +1 -0
  42. package/dist/agent/__tests__/orchestrator.test.d.ts +2 -0
  43. package/dist/agent/__tests__/orchestrator.test.d.ts.map +1 -0
  44. package/dist/agent/__tests__/orchestrator.test.js +201 -0
  45. package/dist/agent/__tests__/orchestrator.test.js.map +1 -0
  46. package/dist/agent/__tests__/permissions.test.d.ts +2 -0
  47. package/dist/agent/__tests__/permissions.test.d.ts.map +1 -0
  48. package/dist/agent/__tests__/permissions.test.js +206 -0
  49. package/dist/agent/__tests__/permissions.test.js.map +1 -0
  50. package/dist/agent/__tests__/pipeline-telemetry.test.d.ts +2 -0
  51. package/dist/agent/__tests__/pipeline-telemetry.test.d.ts.map +1 -0
  52. package/dist/agent/__tests__/pipeline-telemetry.test.js +158 -0
  53. package/dist/agent/__tests__/pipeline-telemetry.test.js.map +1 -0
  54. package/dist/agent/__tests__/pipeline.test.d.ts +2 -0
  55. package/dist/agent/__tests__/pipeline.test.d.ts.map +1 -0
  56. package/dist/agent/__tests__/pipeline.test.js +235 -0
  57. package/dist/agent/__tests__/pipeline.test.js.map +1 -0
  58. package/dist/agent/__tests__/planner.test.d.ts +2 -0
  59. package/dist/agent/__tests__/planner.test.d.ts.map +1 -0
  60. package/dist/agent/__tests__/planner.test.js +98 -0
  61. package/dist/agent/__tests__/planner.test.js.map +1 -0
  62. package/dist/agent/__tests__/prompt-enhancer.test.d.ts +2 -0
  63. package/dist/agent/__tests__/prompt-enhancer.test.d.ts.map +1 -0
  64. package/dist/agent/__tests__/prompt-enhancer.test.js +107 -0
  65. package/dist/agent/__tests__/prompt-enhancer.test.js.map +1 -0
  66. package/dist/agent/__tests__/rate-card.test.d.ts +2 -0
  67. package/dist/agent/__tests__/rate-card.test.d.ts.map +1 -0
  68. package/dist/agent/__tests__/rate-card.test.js +69 -0
  69. package/dist/agent/__tests__/rate-card.test.js.map +1 -0
  70. package/dist/agent/__tests__/system-prompt.test.d.ts +2 -0
  71. package/dist/agent/__tests__/system-prompt.test.d.ts.map +1 -0
  72. package/dist/agent/__tests__/system-prompt.test.js +29 -0
  73. package/dist/agent/__tests__/system-prompt.test.js.map +1 -0
  74. package/dist/agent/__tests__/trace-format-verbose.test.d.ts +2 -0
  75. package/dist/agent/__tests__/trace-format-verbose.test.d.ts.map +1 -0
  76. package/dist/agent/__tests__/trace-format-verbose.test.js +93 -0
  77. package/dist/agent/__tests__/trace-format-verbose.test.js.map +1 -0
  78. package/dist/agent/__tests__/trace-format.test.d.ts +2 -0
  79. package/dist/agent/__tests__/trace-format.test.d.ts.map +1 -0
  80. package/dist/agent/__tests__/trace-format.test.js +104 -0
  81. package/dist/agent/__tests__/trace-format.test.js.map +1 -0
  82. package/dist/agent/__tests__/trace-store.test.d.ts +2 -0
  83. package/dist/agent/__tests__/trace-store.test.d.ts.map +1 -0
  84. package/dist/agent/__tests__/trace-store.test.js +113 -0
  85. package/dist/agent/__tests__/trace-store.test.js.map +1 -0
  86. package/dist/agent/__tests__/verbose-log.test.d.ts +2 -0
  87. package/dist/agent/__tests__/verbose-log.test.d.ts.map +1 -0
  88. package/dist/agent/__tests__/verbose-log.test.js +69 -0
  89. package/dist/agent/__tests__/verbose-log.test.js.map +1 -0
  90. package/dist/agent/code-graph.d.ts +18 -0
  91. package/dist/agent/code-graph.d.ts.map +1 -0
  92. package/dist/agent/code-graph.js +119 -0
  93. package/dist/agent/code-graph.js.map +1 -0
  94. package/dist/agent/env.d.ts +11 -0
  95. package/dist/agent/env.d.ts.map +1 -0
  96. package/dist/agent/env.js +82 -0
  97. package/dist/agent/env.js.map +1 -0
  98. package/dist/agent/evaluator.d.ts +13 -0
  99. package/dist/agent/evaluator.d.ts.map +1 -0
  100. package/dist/agent/evaluator.js +150 -0
  101. package/dist/agent/evaluator.js.map +1 -0
  102. package/dist/agent/fleet/git-isolation.d.ts +142 -0
  103. package/dist/agent/fleet/git-isolation.d.ts.map +1 -0
  104. package/dist/agent/fleet/git-isolation.js +290 -0
  105. package/dist/agent/fleet/git-isolation.js.map +1 -0
  106. package/dist/agent/fleet/memory.d.ts +21 -0
  107. package/dist/agent/fleet/memory.d.ts.map +1 -0
  108. package/dist/agent/fleet/memory.js +129 -0
  109. package/dist/agent/fleet/memory.js.map +1 -0
  110. package/dist/agent/fleet/orchestrator.d.ts +108 -0
  111. package/dist/agent/fleet/orchestrator.d.ts.map +1 -0
  112. package/dist/agent/fleet/orchestrator.js +358 -0
  113. package/dist/agent/fleet/orchestrator.js.map +1 -0
  114. package/dist/agent/fleet/store.d.ts +13 -0
  115. package/dist/agent/fleet/store.d.ts.map +1 -0
  116. package/dist/agent/fleet/store.js +79 -0
  117. package/dist/agent/fleet/store.js.map +1 -0
  118. package/dist/agent/fleet/types.d.ts +107 -0
  119. package/dist/agent/fleet/types.d.ts.map +1 -0
  120. package/dist/agent/fleet/types.js +17 -0
  121. package/dist/agent/fleet/types.js.map +1 -0
  122. package/dist/agent/judge.d.ts +46 -0
  123. package/dist/agent/judge.d.ts.map +1 -0
  124. package/dist/agent/judge.js +182 -0
  125. package/dist/agent/judge.js.map +1 -0
  126. package/dist/agent/loop.d.ts +96 -0
  127. package/dist/agent/loop.d.ts.map +1 -0
  128. package/dist/agent/loop.js +233 -0
  129. package/dist/agent/loop.js.map +1 -0
  130. package/dist/agent/memory.d.ts +14 -0
  131. package/dist/agent/memory.d.ts.map +1 -0
  132. package/dist/agent/memory.js +118 -0
  133. package/dist/agent/memory.js.map +1 -0
  134. package/dist/agent/model-router.d.ts +65 -0
  135. package/dist/agent/model-router.d.ts.map +1 -0
  136. package/dist/agent/model-router.js +118 -0
  137. package/dist/agent/model-router.js.map +1 -0
  138. package/dist/agent/model.d.ts +9 -0
  139. package/dist/agent/model.d.ts.map +1 -0
  140. package/dist/agent/model.js +24 -0
  141. package/dist/agent/model.js.map +1 -0
  142. package/dist/agent/permissions.d.ts +103 -0
  143. package/dist/agent/permissions.d.ts.map +1 -0
  144. package/dist/agent/permissions.js +245 -0
  145. package/dist/agent/permissions.js.map +1 -0
  146. package/dist/agent/pipeline.d.ts +92 -0
  147. package/dist/agent/pipeline.d.ts.map +1 -0
  148. package/dist/agent/pipeline.js +371 -0
  149. package/dist/agent/pipeline.js.map +1 -0
  150. package/dist/agent/planner.d.ts +19 -0
  151. package/dist/agent/planner.d.ts.map +1 -0
  152. package/dist/agent/planner.js +139 -0
  153. package/dist/agent/planner.js.map +1 -0
  154. package/dist/agent/project-context.d.ts +13 -0
  155. package/dist/agent/project-context.d.ts.map +1 -0
  156. package/dist/agent/project-context.js +66 -0
  157. package/dist/agent/project-context.js.map +1 -0
  158. package/dist/agent/prompt-enhancer.d.ts +46 -0
  159. package/dist/agent/prompt-enhancer.d.ts.map +1 -0
  160. package/dist/agent/prompt-enhancer.js +137 -0
  161. package/dist/agent/prompt-enhancer.js.map +1 -0
  162. package/dist/agent/rate-card.d.ts +77 -0
  163. package/dist/agent/rate-card.d.ts.map +1 -0
  164. package/dist/agent/rate-card.js +99 -0
  165. package/dist/agent/rate-card.js.map +1 -0
  166. package/dist/agent/system-prompt.d.ts +14 -0
  167. package/dist/agent/system-prompt.d.ts.map +1 -0
  168. package/dist/agent/system-prompt.js +47 -0
  169. package/dist/agent/system-prompt.js.map +1 -0
  170. package/dist/agent/tools.d.ts +23 -0
  171. package/dist/agent/tools.d.ts.map +1 -0
  172. package/dist/agent/tools.js +354 -0
  173. package/dist/agent/tools.js.map +1 -0
  174. package/dist/agent/trace-format.d.ts +13 -0
  175. package/dist/agent/trace-format.d.ts.map +1 -0
  176. package/dist/agent/trace-format.js +188 -0
  177. package/dist/agent/trace-format.js.map +1 -0
  178. package/dist/agent/trace-store.d.ts +19 -0
  179. package/dist/agent/trace-store.d.ts.map +1 -0
  180. package/dist/agent/trace-store.js +82 -0
  181. package/dist/agent/trace-store.js.map +1 -0
  182. package/dist/agent/trace.d.ts +180 -0
  183. package/dist/agent/trace.d.ts.map +1 -0
  184. package/dist/agent/trace.js +2 -0
  185. package/dist/agent/trace.js.map +1 -0
  186. package/dist/agent/verbose-log.d.ts +8 -0
  187. package/dist/agent/verbose-log.d.ts.map +1 -0
  188. package/dist/agent/verbose-log.js +53 -0
  189. package/dist/agent/verbose-log.js.map +1 -0
  190. package/dist/agents/__tests__/loader.test.d.ts +2 -0
  191. package/dist/agents/__tests__/loader.test.d.ts.map +1 -0
  192. package/dist/agents/__tests__/loader.test.js +88 -0
  193. package/dist/agents/__tests__/loader.test.js.map +1 -0
  194. package/dist/agents/__tests__/tools.test.d.ts +2 -0
  195. package/dist/agents/__tests__/tools.test.d.ts.map +1 -0
  196. package/dist/agents/__tests__/tools.test.js +40 -0
  197. package/dist/agents/__tests__/tools.test.js.map +1 -0
  198. package/dist/agents/index.d.ts +12 -0
  199. package/dist/agents/index.d.ts.map +1 -0
  200. package/dist/agents/index.js +4 -0
  201. package/dist/agents/index.js.map +1 -0
  202. package/dist/agents/loader.d.ts +25 -0
  203. package/dist/agents/loader.d.ts.map +1 -0
  204. package/dist/agents/loader.js +133 -0
  205. package/dist/agents/loader.js.map +1 -0
  206. package/dist/agents/tools.d.ts +14 -0
  207. package/dist/agents/tools.d.ts.map +1 -0
  208. package/dist/agents/tools.js +21 -0
  209. package/dist/agents/tools.js.map +1 -0
  210. package/dist/agents/types.d.ts +27 -0
  211. package/dist/agents/types.d.ts.map +1 -0
  212. package/dist/agents/types.js +11 -0
  213. package/dist/agents/types.js.map +1 -0
  214. package/dist/agents/write.d.ts +10 -0
  215. package/dist/agents/write.d.ts.map +1 -0
  216. package/dist/agents/write.js +28 -0
  217. package/dist/agents/write.js.map +1 -0
  218. package/dist/commands/__tests__/agent.test.d.ts +2 -0
  219. package/dist/commands/__tests__/agent.test.d.ts.map +1 -0
  220. package/dist/commands/__tests__/agent.test.js +82 -0
  221. package/dist/commands/__tests__/agent.test.js.map +1 -0
  222. package/dist/commands/__tests__/command.test.d.ts +2 -0
  223. package/dist/commands/__tests__/command.test.d.ts.map +1 -0
  224. package/dist/commands/__tests__/command.test.js +73 -0
  225. package/dist/commands/__tests__/command.test.js.map +1 -0
  226. package/dist/commands/__tests__/cost.test.d.ts +2 -0
  227. package/dist/commands/__tests__/cost.test.d.ts.map +1 -0
  228. package/dist/commands/__tests__/cost.test.js +139 -0
  229. package/dist/commands/__tests__/cost.test.js.map +1 -0
  230. package/dist/commands/__tests__/graph.pull.test.d.ts +2 -0
  231. package/dist/commands/__tests__/graph.pull.test.d.ts.map +1 -0
  232. package/dist/commands/__tests__/graph.pull.test.js +259 -0
  233. package/dist/commands/__tests__/graph.pull.test.js.map +1 -0
  234. package/dist/commands/__tests__/mcp.test.d.ts +2 -0
  235. package/dist/commands/__tests__/mcp.test.d.ts.map +1 -0
  236. package/dist/commands/__tests__/mcp.test.js +88 -0
  237. package/dist/commands/__tests__/mcp.test.js.map +1 -0
  238. package/dist/commands/__tests__/replay.test.d.ts +2 -0
  239. package/dist/commands/__tests__/replay.test.d.ts.map +1 -0
  240. package/dist/commands/__tests__/replay.test.js +76 -0
  241. package/dist/commands/__tests__/replay.test.js.map +1 -0
  242. package/dist/commands/__tests__/rules.test.d.ts +2 -0
  243. package/dist/commands/__tests__/rules.test.d.ts.map +1 -0
  244. package/dist/commands/__tests__/rules.test.js +95 -0
  245. package/dist/commands/__tests__/rules.test.js.map +1 -0
  246. package/dist/commands/__tests__/settings.test.d.ts +2 -0
  247. package/dist/commands/__tests__/settings.test.d.ts.map +1 -0
  248. package/dist/commands/__tests__/settings.test.js +83 -0
  249. package/dist/commands/__tests__/settings.test.js.map +1 -0
  250. package/dist/commands/agent.d.ts +15 -0
  251. package/dist/commands/agent.d.ts.map +1 -0
  252. package/dist/commands/agent.js +58 -0
  253. package/dist/commands/agent.js.map +1 -0
  254. package/dist/commands/agent.skill.load.d.ts +3 -0
  255. package/dist/commands/agent.skill.load.d.ts.map +1 -0
  256. package/dist/commands/agent.skill.load.js +57 -0
  257. package/dist/commands/agent.skill.load.js.map +1 -0
  258. package/dist/commands/code.d.ts +14 -0
  259. package/dist/commands/code.d.ts.map +1 -0
  260. package/dist/commands/code.js +100 -0
  261. package/dist/commands/code.js.map +1 -0
  262. package/dist/commands/command.d.ts +17 -0
  263. package/dist/commands/command.d.ts.map +1 -0
  264. package/dist/commands/command.js +74 -0
  265. package/dist/commands/command.js.map +1 -0
  266. package/dist/commands/config.d.ts +2 -0
  267. package/dist/commands/config.d.ts.map +1 -0
  268. package/dist/commands/config.js +66 -0
  269. package/dist/commands/config.js.map +1 -0
  270. package/dist/commands/cost.d.ts +10 -0
  271. package/dist/commands/cost.d.ts.map +1 -0
  272. package/dist/commands/cost.js +140 -0
  273. package/dist/commands/cost.js.map +1 -0
  274. package/dist/commands/env.d.ts +19 -0
  275. package/dist/commands/env.d.ts.map +1 -0
  276. package/dist/commands/env.js +64 -0
  277. package/dist/commands/env.js.map +1 -0
  278. package/dist/commands/graph.pull.d.ts +15 -0
  279. package/dist/commands/graph.pull.d.ts.map +1 -0
  280. package/dist/commands/graph.pull.js +137 -0
  281. package/dist/commands/graph.pull.js.map +1 -0
  282. package/dist/commands/graph.search.d.ts +10 -0
  283. package/dist/commands/graph.search.d.ts.map +1 -0
  284. package/dist/commands/graph.search.js +25 -0
  285. package/dist/commands/graph.search.js.map +1 -0
  286. package/dist/commands/graph.status.d.ts +10 -0
  287. package/dist/commands/graph.status.d.ts.map +1 -0
  288. package/dist/commands/graph.status.js +75 -0
  289. package/dist/commands/graph.status.js.map +1 -0
  290. package/dist/commands/mcp.add.d.ts +13 -0
  291. package/dist/commands/mcp.add.d.ts.map +1 -0
  292. package/dist/commands/mcp.add.js +110 -0
  293. package/dist/commands/mcp.add.js.map +1 -0
  294. package/dist/commands/mcp.auth.d.ts +10 -0
  295. package/dist/commands/mcp.auth.d.ts.map +1 -0
  296. package/dist/commands/mcp.auth.js +132 -0
  297. package/dist/commands/mcp.auth.js.map +1 -0
  298. package/dist/commands/mcp.check.d.ts +10 -0
  299. package/dist/commands/mcp.check.d.ts.map +1 -0
  300. package/dist/commands/mcp.check.js +114 -0
  301. package/dist/commands/mcp.check.js.map +1 -0
  302. package/dist/commands/mcp.d.ts +18 -0
  303. package/dist/commands/mcp.d.ts.map +1 -0
  304. package/dist/commands/mcp.js +183 -0
  305. package/dist/commands/mcp.js.map +1 -0
  306. package/dist/commands/mcp.list.d.ts +9 -0
  307. package/dist/commands/mcp.list.d.ts.map +1 -0
  308. package/dist/commands/mcp.list.js +93 -0
  309. package/dist/commands/mcp.list.js.map +1 -0
  310. package/dist/commands/mcp.permit.d.ts +12 -0
  311. package/dist/commands/mcp.permit.d.ts.map +1 -0
  312. package/dist/commands/mcp.permit.js +117 -0
  313. package/dist/commands/mcp.permit.js.map +1 -0
  314. package/dist/commands/mcp.remove.d.ts +9 -0
  315. package/dist/commands/mcp.remove.d.ts.map +1 -0
  316. package/dist/commands/mcp.remove.js +65 -0
  317. package/dist/commands/mcp.remove.js.map +1 -0
  318. package/dist/commands/plugin.org.install_bulk.js +1 -1
  319. package/dist/commands/plugin.org.install_bulk.js.map +1 -1
  320. package/dist/commands/privacy.erase.test.js +7 -0
  321. package/dist/commands/privacy.erase.test.js.map +1 -1
  322. package/dist/commands/replay.d.ts +5 -0
  323. package/dist/commands/replay.d.ts.map +1 -0
  324. package/dist/commands/replay.js +28 -0
  325. package/dist/commands/replay.js.map +1 -0
  326. package/dist/commands/rules.d.ts +19 -0
  327. package/dist/commands/rules.d.ts.map +1 -0
  328. package/dist/commands/rules.js +96 -0
  329. package/dist/commands/rules.js.map +1 -0
  330. package/dist/commands/schema/schema.config.d.ts +3 -0
  331. package/dist/commands/schema/schema.config.d.ts.map +1 -0
  332. package/dist/commands/schema/schema.config.js +34 -0
  333. package/dist/commands/schema/schema.config.js.map +1 -0
  334. package/dist/commands/schema/schema.disable.d.ts +3 -0
  335. package/dist/commands/schema/schema.disable.d.ts.map +1 -0
  336. package/dist/commands/schema/schema.disable.js +22 -0
  337. package/dist/commands/schema/schema.disable.js.map +1 -0
  338. package/dist/commands/schema/schema.enable.d.ts +3 -0
  339. package/dist/commands/schema/schema.enable.d.ts.map +1 -0
  340. package/dist/commands/schema/schema.enable.js +22 -0
  341. package/dist/commands/schema/schema.enable.js.map +1 -0
  342. package/dist/commands/schema/schema.export.d.ts +3 -0
  343. package/dist/commands/schema/schema.export.d.ts.map +1 -0
  344. package/dist/commands/schema/schema.export.js +31 -0
  345. package/dist/commands/schema/schema.export.js.map +1 -0
  346. package/dist/commands/schema/schema.get.d.ts +3 -0
  347. package/dist/commands/schema/schema.get.d.ts.map +1 -0
  348. package/dist/commands/schema/schema.get.js +23 -0
  349. package/dist/commands/schema/schema.get.js.map +1 -0
  350. package/dist/commands/schema/schema.label.d.ts +5 -0
  351. package/dist/commands/schema/schema.label.d.ts.map +1 -0
  352. package/dist/commands/schema/schema.label.js +60 -0
  353. package/dist/commands/schema/schema.label.js.map +1 -0
  354. package/dist/commands/schema/schema.list.d.ts +3 -0
  355. package/dist/commands/schema/schema.list.d.ts.map +1 -0
  356. package/dist/commands/schema/schema.list.js +30 -0
  357. package/dist/commands/schema/schema.list.js.map +1 -0
  358. package/dist/commands/schema/schema.prop.d.ts +5 -0
  359. package/dist/commands/schema/schema.prop.d.ts.map +1 -0
  360. package/dist/commands/schema/schema.prop.js +72 -0
  361. package/dist/commands/schema/schema.prop.js.map +1 -0
  362. package/dist/commands/schema/schema.reconcile.d.ts +10 -0
  363. package/dist/commands/schema/schema.reconcile.d.ts.map +1 -0
  364. package/dist/commands/schema/schema.reconcile.js +65 -0
  365. package/dist/commands/schema/schema.reconcile.js.map +1 -0
  366. package/dist/commands/schema/schema.rel.d.ts +5 -0
  367. package/dist/commands/schema/schema.rel.d.ts.map +1 -0
  368. package/dist/commands/schema/schema.rel.js +65 -0
  369. package/dist/commands/schema/schema.rel.js.map +1 -0
  370. package/dist/commands/schema/schema.version.d.ts +7 -0
  371. package/dist/commands/schema/schema.version.d.ts.map +1 -0
  372. package/dist/commands/schema/schema.version.js +96 -0
  373. package/dist/commands/schema/schema.version.js.map +1 -0
  374. package/dist/commands/secret.d.ts +23 -0
  375. package/dist/commands/secret.d.ts.map +1 -0
  376. package/dist/commands/secret.js +90 -0
  377. package/dist/commands/secret.js.map +1 -0
  378. package/dist/commands/settings.d.ts +10 -0
  379. package/dist/commands/settings.d.ts.map +1 -0
  380. package/dist/commands/settings.js +117 -0
  381. package/dist/commands/settings.js.map +1 -0
  382. package/dist/commands/skill.create.d.ts +3 -0
  383. package/dist/commands/skill.create.d.ts.map +1 -0
  384. package/dist/commands/skill.create.js +52 -0
  385. package/dist/commands/skill.create.js.map +1 -0
  386. package/dist/commands/skill.enable.d.ts +3 -0
  387. package/dist/commands/skill.enable.d.ts.map +1 -0
  388. package/dist/commands/skill.enable.js +31 -0
  389. package/dist/commands/skill.enable.js.map +1 -0
  390. package/dist/commands.test.js +1291 -281
  391. package/dist/commands.test.js.map +1 -1
  392. package/dist/components/DevStatus.d.ts.map +1 -1
  393. package/dist/components/DevStatus.js +3 -2
  394. package/dist/components/DevStatus.js.map +1 -1
  395. package/dist/daemon/client.d.ts +30 -0
  396. package/dist/daemon/client.d.ts.map +1 -0
  397. package/dist/daemon/client.js +97 -0
  398. package/dist/daemon/client.js.map +1 -0
  399. package/dist/daemon/code-graph/builder.d.ts +6 -0
  400. package/dist/daemon/code-graph/builder.d.ts.map +1 -0
  401. package/dist/daemon/code-graph/builder.js +215 -0
  402. package/dist/daemon/code-graph/builder.js.map +1 -0
  403. package/dist/daemon/code-graph/query.d.ts +29 -0
  404. package/dist/daemon/code-graph/query.d.ts.map +1 -0
  405. package/dist/daemon/code-graph/query.js +98 -0
  406. package/dist/daemon/code-graph/query.js.map +1 -0
  407. package/dist/daemon/code-graph/types.d.ts +37 -0
  408. package/dist/daemon/code-graph/types.d.ts.map +1 -0
  409. package/dist/daemon/code-graph/types.js +5 -0
  410. package/dist/daemon/code-graph/types.js.map +1 -0
  411. package/dist/daemon/code-graph/watcher.d.ts +37 -0
  412. package/dist/daemon/code-graph/watcher.d.ts.map +1 -0
  413. package/dist/daemon/code-graph/watcher.js +79 -0
  414. package/dist/daemon/code-graph/watcher.js.map +1 -0
  415. package/dist/daemon/lifecycle.d.ts +6 -0
  416. package/dist/daemon/lifecycle.d.ts.map +1 -0
  417. package/dist/daemon/lifecycle.js +132 -0
  418. package/dist/daemon/lifecycle.js.map +1 -0
  419. package/dist/daemon/protocol.d.ts +113 -0
  420. package/dist/daemon/protocol.d.ts.map +1 -0
  421. package/dist/daemon/protocol.js +16 -0
  422. package/dist/daemon/protocol.js.map +1 -0
  423. package/dist/daemon/server.d.ts +26 -0
  424. package/dist/daemon/server.d.ts.map +1 -0
  425. package/dist/daemon/server.js +168 -0
  426. package/dist/daemon/server.js.map +1 -0
  427. package/dist/index.d.ts +1 -1
  428. package/dist/index.js +559 -357
  429. package/dist/index.js.map +1 -1
  430. package/dist/lib/api.d.ts +5 -0
  431. package/dist/lib/api.d.ts.map +1 -0
  432. package/dist/lib/api.js +52 -0
  433. package/dist/lib/api.js.map +1 -0
  434. package/dist/lib/config.d.ts +5 -0
  435. package/dist/lib/config.d.ts.map +1 -1
  436. package/dist/lib/config.js +8 -2
  437. package/dist/lib/config.js.map +1 -1
  438. package/dist/lib/differential-context.d.ts +46 -0
  439. package/dist/lib/differential-context.d.ts.map +1 -0
  440. package/dist/lib/differential-context.js +89 -0
  441. package/dist/lib/differential-context.js.map +1 -0
  442. package/dist/lib/resolve.d.ts +3 -0
  443. package/dist/lib/resolve.d.ts.map +1 -0
  444. package/dist/lib/resolve.js +29 -0
  445. package/dist/lib/resolve.js.map +1 -0
  446. package/dist/lib/structured-tool-io.d.ts +31 -0
  447. package/dist/lib/structured-tool-io.d.ts.map +1 -0
  448. package/dist/lib/structured-tool-io.js +56 -0
  449. package/dist/lib/structured-tool-io.js.map +1 -0
  450. package/dist/mcp/__tests__/client.test.d.ts +2 -0
  451. package/dist/mcp/__tests__/client.test.d.ts.map +1 -0
  452. package/dist/mcp/__tests__/client.test.js +101 -0
  453. package/dist/mcp/__tests__/client.test.js.map +1 -0
  454. package/dist/mcp/client.d.ts +89 -0
  455. package/dist/mcp/client.d.ts.map +1 -0
  456. package/dist/mcp/client.js +201 -0
  457. package/dist/mcp/client.js.map +1 -0
  458. package/dist/repl/__tests__/_queue_demo.test.d.ts +2 -0
  459. package/dist/repl/__tests__/_queue_demo.test.d.ts.map +1 -0
  460. package/dist/repl/__tests__/_queue_demo.test.js +40 -0
  461. package/dist/repl/__tests__/_queue_demo.test.js.map +1 -0
  462. package/dist/repl/__tests__/components.test.d.ts +2 -0
  463. package/dist/repl/__tests__/components.test.d.ts.map +1 -0
  464. package/dist/repl/__tests__/components.test.js +87 -0
  465. package/dist/repl/__tests__/components.test.js.map +1 -0
  466. package/dist/repl/__tests__/interactive.queue.test.d.ts +2 -0
  467. package/dist/repl/__tests__/interactive.queue.test.d.ts.map +1 -0
  468. package/dist/repl/__tests__/interactive.queue.test.js +124 -0
  469. package/dist/repl/__tests__/interactive.queue.test.js.map +1 -0
  470. package/dist/repl/components.d.ts +76 -0
  471. package/dist/repl/components.d.ts.map +1 -0
  472. package/dist/repl/components.js +182 -0
  473. package/dist/repl/components.js.map +1 -0
  474. package/dist/repl/interactive.d.ts +17 -0
  475. package/dist/repl/interactive.d.ts.map +1 -0
  476. package/dist/repl/interactive.js +439 -0
  477. package/dist/repl/interactive.js.map +1 -0
  478. package/dist/repl/one-shot.d.ts +25 -0
  479. package/dist/repl/one-shot.d.ts.map +1 -0
  480. package/dist/repl/one-shot.js +153 -0
  481. package/dist/repl/one-shot.js.map +1 -0
  482. package/dist/rules/__tests__/enforce.test.d.ts +2 -0
  483. package/dist/rules/__tests__/enforce.test.d.ts.map +1 -0
  484. package/dist/rules/__tests__/enforce.test.js +58 -0
  485. package/dist/rules/__tests__/enforce.test.js.map +1 -0
  486. package/dist/rules/__tests__/loader.test.d.ts +2 -0
  487. package/dist/rules/__tests__/loader.test.d.ts.map +1 -0
  488. package/dist/rules/__tests__/loader.test.js +54 -0
  489. package/dist/rules/__tests__/loader.test.js.map +1 -0
  490. package/dist/rules/enforce.d.ts +23 -0
  491. package/dist/rules/enforce.d.ts.map +1 -0
  492. package/dist/rules/enforce.js +36 -0
  493. package/dist/rules/enforce.js.map +1 -0
  494. package/dist/rules/index.d.ts +10 -0
  495. package/dist/rules/index.d.ts.map +1 -0
  496. package/dist/rules/index.js +4 -0
  497. package/dist/rules/index.js.map +1 -0
  498. package/dist/rules/loader.d.ts +10 -0
  499. package/dist/rules/loader.d.ts.map +1 -0
  500. package/dist/rules/loader.js +77 -0
  501. package/dist/rules/loader.js.map +1 -0
  502. package/dist/rules/types.d.ts +39 -0
  503. package/dist/rules/types.d.ts.map +1 -0
  504. package/dist/rules/types.js +16 -0
  505. package/dist/rules/types.js.map +1 -0
  506. package/dist/rules/write.d.ts +10 -0
  507. package/dist/rules/write.d.ts.map +1 -0
  508. package/dist/rules/write.js +28 -0
  509. package/dist/rules/write.js.map +1 -0
  510. package/dist/settings/__tests__/gate.test.d.ts +2 -0
  511. package/dist/settings/__tests__/gate.test.d.ts.map +1 -0
  512. package/dist/settings/__tests__/gate.test.js +137 -0
  513. package/dist/settings/__tests__/gate.test.js.map +1 -0
  514. package/dist/settings/__tests__/hooks.test.d.ts +2 -0
  515. package/dist/settings/__tests__/hooks.test.d.ts.map +1 -0
  516. package/dist/settings/__tests__/hooks.test.js +103 -0
  517. package/dist/settings/__tests__/hooks.test.js.map +1 -0
  518. package/dist/settings/__tests__/mcp-write.test.d.ts +2 -0
  519. package/dist/settings/__tests__/mcp-write.test.d.ts.map +1 -0
  520. package/dist/settings/__tests__/mcp-write.test.js +77 -0
  521. package/dist/settings/__tests__/mcp-write.test.js.map +1 -0
  522. package/dist/settings/__tests__/permissions-gate.test.d.ts +2 -0
  523. package/dist/settings/__tests__/permissions-gate.test.d.ts.map +1 -0
  524. package/dist/settings/__tests__/permissions-gate.test.js +75 -0
  525. package/dist/settings/__tests__/permissions-gate.test.js.map +1 -0
  526. package/dist/settings/__tests__/resolve.test.d.ts +2 -0
  527. package/dist/settings/__tests__/resolve.test.d.ts.map +1 -0
  528. package/dist/settings/__tests__/resolve.test.js +109 -0
  529. package/dist/settings/__tests__/resolve.test.js.map +1 -0
  530. package/dist/settings/__tests__/runtime.test.d.ts +2 -0
  531. package/dist/settings/__tests__/runtime.test.d.ts.map +1 -0
  532. package/dist/settings/__tests__/runtime.test.js +72 -0
  533. package/dist/settings/__tests__/runtime.test.js.map +1 -0
  534. package/dist/settings/__tests__/schema.test.d.ts +2 -0
  535. package/dist/settings/__tests__/schema.test.d.ts.map +1 -0
  536. package/dist/settings/__tests__/schema.test.js +55 -0
  537. package/dist/settings/__tests__/schema.test.js.map +1 -0
  538. package/dist/settings/__tests__/write.test.d.ts +2 -0
  539. package/dist/settings/__tests__/write.test.d.ts.map +1 -0
  540. package/dist/settings/__tests__/write.test.js +61 -0
  541. package/dist/settings/__tests__/write.test.js.map +1 -0
  542. package/dist/settings/gate.d.ts +34 -0
  543. package/dist/settings/gate.d.ts.map +1 -0
  544. package/dist/settings/gate.js +50 -0
  545. package/dist/settings/gate.js.map +1 -0
  546. package/dist/settings/hooks.d.ts +26 -0
  547. package/dist/settings/hooks.d.ts.map +1 -0
  548. package/dist/settings/hooks.js +115 -0
  549. package/dist/settings/hooks.js.map +1 -0
  550. package/dist/settings/index.d.ts +23 -0
  551. package/dist/settings/index.d.ts.map +1 -0
  552. package/dist/settings/index.js +23 -0
  553. package/dist/settings/index.js.map +1 -0
  554. package/dist/settings/mcp-write.d.ts +41 -0
  555. package/dist/settings/mcp-write.d.ts.map +1 -0
  556. package/dist/settings/mcp-write.js +61 -0
  557. package/dist/settings/mcp-write.js.map +1 -0
  558. package/dist/settings/permissions-gate.d.ts +19 -0
  559. package/dist/settings/permissions-gate.d.ts.map +1 -0
  560. package/dist/settings/permissions-gate.js +103 -0
  561. package/dist/settings/permissions-gate.js.map +1 -0
  562. package/dist/settings/resolve.d.ts +37 -0
  563. package/dist/settings/resolve.d.ts.map +1 -0
  564. package/dist/settings/resolve.js +169 -0
  565. package/dist/settings/resolve.js.map +1 -0
  566. package/dist/settings/runtime.d.ts +28 -0
  567. package/dist/settings/runtime.d.ts.map +1 -0
  568. package/dist/settings/runtime.js +45 -0
  569. package/dist/settings/runtime.js.map +1 -0
  570. package/dist/settings/schema.d.ts +1387 -0
  571. package/dist/settings/schema.d.ts.map +1 -0
  572. package/dist/settings/schema.js +146 -0
  573. package/dist/settings/schema.js.map +1 -0
  574. package/dist/settings/write.d.ts +37 -0
  575. package/dist/settings/write.d.ts.map +1 -0
  576. package/dist/settings/write.js +85 -0
  577. package/dist/settings/write.js.map +1 -0
  578. package/dist/slash/__tests__/expand.test.d.ts +2 -0
  579. package/dist/slash/__tests__/expand.test.d.ts.map +1 -0
  580. package/dist/slash/__tests__/expand.test.js +44 -0
  581. package/dist/slash/__tests__/expand.test.js.map +1 -0
  582. package/dist/slash/__tests__/loader.test.d.ts +2 -0
  583. package/dist/slash/__tests__/loader.test.d.ts.map +1 -0
  584. package/dist/slash/__tests__/loader.test.js +48 -0
  585. package/dist/slash/__tests__/loader.test.js.map +1 -0
  586. package/dist/slash/expand.d.ts +32 -0
  587. package/dist/slash/expand.d.ts.map +1 -0
  588. package/dist/slash/expand.js +48 -0
  589. package/dist/slash/expand.js.map +1 -0
  590. package/dist/slash/index.d.ts +11 -0
  591. package/dist/slash/index.d.ts.map +1 -0
  592. package/dist/slash/index.js +4 -0
  593. package/dist/slash/index.js.map +1 -0
  594. package/dist/slash/loader.d.ts +10 -0
  595. package/dist/slash/loader.d.ts.map +1 -0
  596. package/dist/slash/loader.js +64 -0
  597. package/dist/slash/loader.js.map +1 -0
  598. package/dist/slash/types.d.ts +24 -0
  599. package/dist/slash/types.d.ts.map +1 -0
  600. package/dist/slash/types.js +11 -0
  601. package/dist/slash/types.js.map +1 -0
  602. package/dist/slash/write.d.ts +10 -0
  603. package/dist/slash/write.d.ts.map +1 -0
  604. package/dist/slash/write.js +26 -0
  605. package/dist/slash/write.js.map +1 -0
  606. package/dist/tui/__tests__/app.test.d.ts +2 -0
  607. package/dist/tui/__tests__/app.test.d.ts.map +1 -0
  608. package/dist/tui/__tests__/app.test.js +136 -0
  609. package/dist/tui/__tests__/app.test.js.map +1 -0
  610. package/dist/tui/__tests__/banner.test.d.ts +2 -0
  611. package/dist/tui/__tests__/banner.test.d.ts.map +1 -0
  612. package/dist/tui/__tests__/banner.test.js +15 -0
  613. package/dist/tui/__tests__/banner.test.js.map +1 -0
  614. package/dist/tui/__tests__/command-form.test.d.ts +2 -0
  615. package/dist/tui/__tests__/command-form.test.d.ts.map +1 -0
  616. package/dist/tui/__tests__/command-form.test.js +96 -0
  617. package/dist/tui/__tests__/command-form.test.js.map +1 -0
  618. package/dist/tui/__tests__/command-tree.test.d.ts +2 -0
  619. package/dist/tui/__tests__/command-tree.test.d.ts.map +1 -0
  620. package/dist/tui/__tests__/command-tree.test.js +55 -0
  621. package/dist/tui/__tests__/command-tree.test.js.map +1 -0
  622. package/dist/tui/__tests__/runner.test.d.ts +2 -0
  623. package/dist/tui/__tests__/runner.test.d.ts.map +1 -0
  624. package/dist/tui/__tests__/runner.test.js +38 -0
  625. package/dist/tui/__tests__/runner.test.js.map +1 -0
  626. package/dist/tui/__tests__/theme.test.d.ts +2 -0
  627. package/dist/tui/__tests__/theme.test.d.ts.map +1 -0
  628. package/dist/tui/__tests__/theme.test.js +11 -0
  629. package/dist/tui/__tests__/theme.test.js.map +1 -0
  630. package/dist/tui/agent-view/activity-feed.d.ts +3 -0
  631. package/dist/tui/agent-view/activity-feed.d.ts.map +1 -0
  632. package/dist/tui/agent-view/activity-feed.js +34 -0
  633. package/dist/tui/agent-view/activity-feed.js.map +1 -0
  634. package/dist/tui/agent-view/budget-bar.d.ts +3 -0
  635. package/dist/tui/agent-view/budget-bar.d.ts.map +1 -0
  636. package/dist/tui/agent-view/budget-bar.js +53 -0
  637. package/dist/tui/agent-view/budget-bar.js.map +1 -0
  638. package/dist/tui/agent-view/compile-panel.d.ts +3 -0
  639. package/dist/tui/agent-view/compile-panel.d.ts.map +1 -0
  640. package/dist/tui/agent-view/compile-panel.js +34 -0
  641. package/dist/tui/agent-view/compile-panel.js.map +1 -0
  642. package/dist/tui/agent-view/index.d.ts +4 -0
  643. package/dist/tui/agent-view/index.d.ts.map +1 -0
  644. package/dist/tui/agent-view/index.js +31 -0
  645. package/dist/tui/agent-view/index.js.map +1 -0
  646. package/dist/tui/agent-view/memory-panel.d.ts +3 -0
  647. package/dist/tui/agent-view/memory-panel.d.ts.map +1 -0
  648. package/dist/tui/agent-view/memory-panel.js +80 -0
  649. package/dist/tui/agent-view/memory-panel.js.map +1 -0
  650. package/dist/tui/agent-view/session-panel.d.ts +3 -0
  651. package/dist/tui/agent-view/session-panel.d.ts.map +1 -0
  652. package/dist/tui/agent-view/session-panel.js +44 -0
  653. package/dist/tui/agent-view/session-panel.js.map +1 -0
  654. package/dist/tui/agent-view/status-bar.d.ts +7 -0
  655. package/dist/tui/agent-view/status-bar.d.ts.map +1 -0
  656. package/dist/tui/agent-view/status-bar.js +22 -0
  657. package/dist/tui/agent-view/status-bar.js.map +1 -0
  658. package/dist/tui/app.d.ts +9 -0
  659. package/dist/tui/app.d.ts.map +1 -0
  660. package/dist/tui/app.js +115 -0
  661. package/dist/tui/app.js.map +1 -0
  662. package/dist/tui/banner.d.ts +5 -0
  663. package/dist/tui/banner.d.ts.map +1 -0
  664. package/dist/tui/banner.js +17 -0
  665. package/dist/tui/banner.js.map +1 -0
  666. package/dist/tui/command-form.d.ts +9 -0
  667. package/dist/tui/command-form.d.ts.map +1 -0
  668. package/dist/tui/command-form.js +76 -0
  669. package/dist/tui/command-form.js.map +1 -0
  670. package/dist/tui/command-tree.d.ts +30 -0
  671. package/dist/tui/command-tree.d.ts.map +1 -0
  672. package/dist/tui/command-tree.js +43 -0
  673. package/dist/tui/command-tree.js.map +1 -0
  674. package/dist/tui/fleet-view/agent-row.d.ts +10 -0
  675. package/dist/tui/fleet-view/agent-row.d.ts.map +1 -0
  676. package/dist/tui/fleet-view/agent-row.js +80 -0
  677. package/dist/tui/fleet-view/agent-row.js.map +1 -0
  678. package/dist/tui/fleet-view/dispatch-input.d.ts +5 -0
  679. package/dist/tui/fleet-view/dispatch-input.d.ts.map +1 -0
  680. package/dist/tui/fleet-view/dispatch-input.js +36 -0
  681. package/dist/tui/fleet-view/dispatch-input.js.map +1 -0
  682. package/dist/tui/fleet-view/fleet-app.d.ts +11 -0
  683. package/dist/tui/fleet-view/fleet-app.d.ts.map +1 -0
  684. package/dist/tui/fleet-view/fleet-app.js +95 -0
  685. package/dist/tui/fleet-view/fleet-app.js.map +1 -0
  686. package/dist/tui/fleet-view/fleet-summary.d.ts +6 -0
  687. package/dist/tui/fleet-view/fleet-summary.d.ts.map +1 -0
  688. package/dist/tui/fleet-view/fleet-summary.js +19 -0
  689. package/dist/tui/fleet-view/fleet-summary.js.map +1 -0
  690. package/dist/tui/fleet-view/index.d.ts +16 -0
  691. package/dist/tui/fleet-view/index.d.ts.map +1 -0
  692. package/dist/tui/fleet-view/index.js +65 -0
  693. package/dist/tui/fleet-view/index.js.map +1 -0
  694. package/dist/tui/runner.d.ts +7 -0
  695. package/dist/tui/runner.d.ts.map +1 -0
  696. package/dist/tui/runner.js +36 -0
  697. package/dist/tui/runner.js.map +1 -0
  698. package/dist/tui/theme.d.ts +8 -0
  699. package/dist/tui/theme.d.ts.map +1 -0
  700. package/dist/tui/theme.js +10 -0
  701. package/dist/tui/theme.js.map +1 -0
  702. package/package.json +16 -7
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Turn-trace persistence — durable storage for the pipeline's per-turn records.
3
+ *
4
+ * Traces live as JSON under `~/.config/oxagen/traces/<project>.json` (one file per
5
+ * project, keyed by the working-directory name, consistent with the fleet store).
6
+ * Persisting them is what makes `/replay` work across turns and even across
7
+ * sessions: the user can always pull up the original prompt, the enhanced prompt,
8
+ * the model that was selected, the advisor that judged it, and the full chain of
9
+ * thought for any recent turn.
10
+ */
11
+ import { mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
12
+ import { homedir } from "node:os";
13
+ import { basename, dirname, join } from "node:path";
14
+ /** Keep history bounded — the most recent N turns are plenty for replay. */
15
+ const MAX_TRACES = 100;
16
+ function projectKey(cwd) {
17
+ return basename(cwd) || "default";
18
+ }
19
+ function storePath(cwd) {
20
+ return join(homedir(), ".config", "oxagen", "traces", `${projectKey(cwd)}.json`);
21
+ }
22
+ function read(cwd) {
23
+ const path = storePath(cwd);
24
+ if (!existsSync(path))
25
+ return { traces: [] };
26
+ try {
27
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
28
+ return { traces: Array.isArray(parsed.traces) ? parsed.traces : [] };
29
+ }
30
+ catch {
31
+ return { traces: [] };
32
+ }
33
+ }
34
+ function write(cwd, data) {
35
+ const path = storePath(cwd);
36
+ try {
37
+ mkdirSync(dirname(path), { recursive: true });
38
+ writeFileSync(path, JSON.stringify(data, null, 2), "utf8");
39
+ }
40
+ catch {
41
+ /* persistence is best-effort — a failed write must never break a turn */
42
+ }
43
+ }
44
+ /** Open the trace store for a working directory. */
45
+ export function openTraceStore(cwd) {
46
+ return {
47
+ record(trace) {
48
+ const data = read(cwd);
49
+ const idx = data.traces.findIndex((t) => t.id === trace.id);
50
+ if (idx >= 0)
51
+ data.traces[idx] = trace;
52
+ else
53
+ data.traces.unshift(trace);
54
+ data.traces = data.traces.slice(0, MAX_TRACES);
55
+ write(cwd, data);
56
+ },
57
+ get(id) {
58
+ return read(cwd).traces.find((t) => t.id === id);
59
+ },
60
+ list() {
61
+ return read(cwd).traces;
62
+ },
63
+ last() {
64
+ return read(cwd).traces[0];
65
+ },
66
+ resolve(arg) {
67
+ const traces = read(cwd).traces;
68
+ const trimmed = arg.trim();
69
+ if (!trimmed)
70
+ return traces[0];
71
+ // A small positive integer is a 1-based recency index.
72
+ if (/^\d{1,3}$/.test(trimmed)) {
73
+ const n = Number.parseInt(trimmed, 10);
74
+ if (n >= 1 && n <= traces.length)
75
+ return traces[n - 1];
76
+ }
77
+ return (traces.find((t) => t.id === trimmed) ??
78
+ traces.find((t) => t.id.startsWith(trimmed)));
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=trace-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-store.js","sourceRoot":"","sources":["../../src/agent/trace-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGpD,4EAA4E;AAC5E,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnF,CAAC;AAMD,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAwB,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,GAAW,EAAE,IAAgB;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC;AAkBD,oDAAoD;AACpD,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO;QACL,MAAM,CAAC,KAAK;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,GAAG,IAAI,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;gBAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/C,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,EAAE;YACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAC1B,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG;YACT,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YAChC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,uDAAuD;YACvD,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,CACL,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAC7C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Turn-trace types — the spine of the CLI's evaluation → enhancement → judging
3
+ * pipeline and the data the `/replay` command renders.
4
+ *
5
+ * Every user prompt becomes a {@link TurnTrace}: what the user typed, how the
6
+ * cheap evaluator scored it, the context the enhancer injected, which model was
7
+ * selected and why, what the advisor judge concluded about completeness, and the
8
+ * full chain of thought from each stage. The trace is persisted so the whole
9
+ * process stays inspectable after the fact — nothing about how the agent reached
10
+ * its answer is hidden from the user.
11
+ *
12
+ * These types are framework-free (no Ink, no AI SDK) so the engine, the store,
13
+ * and their tests never import a renderer or hit the gateway.
14
+ */
15
+ import type { ModelTier, UsageTotals } from "./fleet/types.js";
16
+ /** A stage of the turn pipeline, in execution order. */
17
+ export type StageKind = "evaluate" | "enhance" | "route" | "execute" | "judge" | "revise" | "complete";
18
+ /**
19
+ * A live progress event the pipeline emits at each stage so the REPL can show
20
+ * the user exactly what is happening, in real time.
21
+ */
22
+ export interface StageEvent {
23
+ kind: StageKind;
24
+ /** One-line, human-readable label for the status stream. */
25
+ label: string;
26
+ /** Optional extra detail (a model slug, a score, a verdict). */
27
+ detail?: string;
28
+ }
29
+ /**
30
+ * The cheap model's read of the user's prompt: how complete and how complex it
31
+ * is, what context to pull, and a noise-removed rewrite.
32
+ */
33
+ export interface PromptEvaluation {
34
+ /** 0–100: how complete/actionable the prompt is on its own. */
35
+ completeness: number;
36
+ /** 0–100: how much work / risk / blast-radius the request implies. */
37
+ complexity: number;
38
+ /** Tier the evaluator recommends for the work. */
39
+ recommendedTier: ModelTier;
40
+ /** Information the prompt is missing (empty when it is self-contained). */
41
+ missing: string[];
42
+ /** Symbols / file paths / topics worth retrieving from the code graph. */
43
+ contextQueries: string[];
44
+ /** The prompt rewritten: filler removed, intent sharpened, meaning preserved. */
45
+ refinedPrompt: string;
46
+ /** What was pruned from the original prompt, and (briefly) why. */
47
+ removed: string[];
48
+ /** The evaluator's chain of thought. */
49
+ reasoning: string;
50
+ /** True when the scores came from the heuristic fallback (model unavailable). */
51
+ fallback: boolean;
52
+ /** Model slug used for the evaluation. */
53
+ model: string;
54
+ usage: UsageTotals;
55
+ }
56
+ /** Which candidates the enhancer mined and which actually resolved. */
57
+ export interface ContextRetrieval {
58
+ /** Symbol-like candidates queried against the code graph. */
59
+ symbolsQueried: string[];
60
+ /** File-path candidates queried against the code graph. */
61
+ pathsQueried: string[];
62
+ /** Candidates that resolved to something real. */
63
+ resolved: string[];
64
+ /** Candidates that resolved to nothing (no code-graph hit). */
65
+ unresolved: string[];
66
+ }
67
+ /** What the enhancer added to the prompt before handing it to the executor. */
68
+ export interface EnhancementTrace {
69
+ /** The final prompt handed to the executor (refined + injected context). */
70
+ prompt: string;
71
+ /** The injected context block alone (empty when nothing was found). */
72
+ context: string;
73
+ /** Symbol/path tokens that resolved to something in the code graph. */
74
+ resolved: string[];
75
+ /** How many past-work lessons were recalled and injected. */
76
+ lessonCount: number;
77
+ /** Where the injected context came from. */
78
+ source: "none" | "code-graph" | "memory" | "code-graph+memory";
79
+ /** Epoch ms the context-gathering started (verbose turns). */
80
+ startedAt?: number;
81
+ /** Epoch ms the context-gathering finished (verbose turns). */
82
+ finishedAt?: number;
83
+ /** Wall-clock ms spent gathering + injecting context. */
84
+ durationMs?: number;
85
+ /** Per-candidate retrieval breakdown (verbose turns). */
86
+ retrieval?: ContextRetrieval;
87
+ }
88
+ /**
89
+ * Timing + model + cost for one pipeline phase — the headline of verbose mode.
90
+ * One per phase occurrence (so each execute/judge revision round gets its own).
91
+ */
92
+ export interface PhaseStat {
93
+ /** Which phase: evaluate | enhance | route | execute | judge. */
94
+ phase: StageKind;
95
+ /** Round index for repeated phases (execute/judge); 0 for single-shot phases. */
96
+ round: number;
97
+ startedAt: number;
98
+ finishedAt: number;
99
+ durationMs: number;
100
+ /** The model that did this phase's work (absent for non-LLM phases). */
101
+ model?: string;
102
+ /** Tokens + dollar cost attributable to this phase (zero for non-LLM phases). */
103
+ usage: UsageTotals;
104
+ }
105
+ /** One tool invocation: what was called, with what, what came back, how long. */
106
+ export interface ToolEvent {
107
+ name: string;
108
+ /** Tool input, JSON-stringified and truncated. */
109
+ input: string;
110
+ /** Tool result, JSON-stringified and truncated (verbose turns). */
111
+ result?: string;
112
+ startedAt: number;
113
+ finishedAt: number;
114
+ durationMs: number;
115
+ /** False when the tool reported an error. */
116
+ ok: boolean;
117
+ }
118
+ /** The advisor judge's verdict on whether the agent's work is actually done. */
119
+ export interface JudgeVerdict {
120
+ /** True only when every part of the request was addressed with real changes. */
121
+ complete: boolean;
122
+ /** 0–100 confidence in the verdict. */
123
+ confidence: number;
124
+ /** Concrete gaps the judge found (empty when complete). */
125
+ findings: string[];
126
+ /** What the agent still needs to do (empty when complete). */
127
+ remainingWork: string[];
128
+ /** The judge's chain of thought. */
129
+ reasoning: string;
130
+ /** Model slug used for the judgement — always distinct from the executor. */
131
+ model: string;
132
+ /** True when the verdict came from the heuristic fallback (model unavailable). */
133
+ fallback: boolean;
134
+ usage: UsageTotals;
135
+ }
136
+ /**
137
+ * The complete record of one turn through the pipeline. Persisted by the trace
138
+ * store and rendered by `/replay`.
139
+ */
140
+ export interface TurnTrace {
141
+ id: string;
142
+ createdAt: number;
143
+ cwd: string;
144
+ /** Exactly what the user typed, verbatim. */
145
+ originalPrompt: string;
146
+ evaluation: PromptEvaluation;
147
+ enhancement: EnhancementTrace;
148
+ /** Concrete gateway model slug chosen for execution. */
149
+ selectedModel: string;
150
+ /** Tier of the selected executor model. */
151
+ selectedTier: ModelTier;
152
+ /** One-line reason the executor model was chosen. */
153
+ selectionRationale: string;
154
+ /** The agent's final assistant text (truncated for storage). */
155
+ response: string;
156
+ /** Relative paths the agent wrote or edited, from tool activity. */
157
+ filesTouched: string[];
158
+ /** Shell commands the agent ran, from tool activity. */
159
+ commandsRun: string[];
160
+ /** One verdict per judge round; index 0 is the initial completeness check. */
161
+ judgeRounds: JudgeVerdict[];
162
+ /** Whether the pipeline drove the agent to a state the judge calls complete. */
163
+ finalComplete: boolean;
164
+ /** Tool-loop steps taken across all execution rounds. */
165
+ steps: number;
166
+ /** Token + cost totals across evaluator + executor + judge calls. */
167
+ usage: UsageTotals;
168
+ durationMs: number;
169
+ /**
170
+ * Per-phase timing + model + token/cost breakdown. Present on verbose turns;
171
+ * lets you see exactly which model spent which dollars on which phase (enhance
172
+ * vs work vs review) and how long each took. Optional for backward-compat.
173
+ */
174
+ phases?: PhaseStat[];
175
+ /** Every tool call + result with timing (verbose turns). */
176
+ toolEvents?: ToolEvent[];
177
+ /** True when this turn was captured in verbose mode. */
178
+ verbose?: boolean;
179
+ }
180
+ //# sourceMappingURL=trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/agent/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/agent/trace.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { TurnTrace } from "./trace.js";
2
+ /** Path of the JSONL verbose log for a working directory. */
3
+ export declare function verboseLogPath(cwd: string): string;
4
+ /** Append one turn's trace to the verbose JSONL stream. Best-effort. */
5
+ export declare function appendVerboseLog(cwd: string, trace: TurnTrace): void;
6
+ /** Read every record from the verbose JSONL stream (skipping malformed lines). */
7
+ export declare function readVerboseLog(cwd: string): TurnTrace[];
8
+ //# sourceMappingURL=verbose-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose-log.d.ts","sourceRoot":"","sources":["../../src/agent/verbose-log.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAQpE;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAcvD"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Verbose structured-log stream.
3
+ *
4
+ * When a session runs in `/verbose` mode, every turn's full {@link TurnTrace} is
5
+ * appended — one JSON object per line (JSONL) — to a per-project log under
6
+ * `~/.config/oxagen/verbose/<project>.jsonl`. Unlike the trace *store* (which is
7
+ * capped at the latest 100 turns for `/replay`), this stream is append-only and
8
+ * complete: it is the machine-readable record you analyze to prove the agent is
9
+ * fast, cheap, and self-improving — feed it to `jq`, a notebook, or a dashboard.
10
+ *
11
+ * Writes are best-effort: a failed log write must never break a turn.
12
+ */
13
+ import { appendFileSync, mkdirSync, existsSync, readFileSync } from "node:fs";
14
+ import { homedir } from "node:os";
15
+ import { basename, dirname, join } from "node:path";
16
+ function projectKey(cwd) {
17
+ return basename(cwd) || "default";
18
+ }
19
+ /** Path of the JSONL verbose log for a working directory. */
20
+ export function verboseLogPath(cwd) {
21
+ return join(homedir(), ".config", "oxagen", "verbose", `${projectKey(cwd)}.jsonl`);
22
+ }
23
+ /** Append one turn's trace to the verbose JSONL stream. Best-effort. */
24
+ export function appendVerboseLog(cwd, trace) {
25
+ const path = verboseLogPath(cwd);
26
+ try {
27
+ mkdirSync(dirname(path), { recursive: true });
28
+ appendFileSync(path, JSON.stringify(trace) + "\n", "utf8");
29
+ }
30
+ catch {
31
+ /* logging is best-effort — never break a turn over it */
32
+ }
33
+ }
34
+ /** Read every record from the verbose JSONL stream (skipping malformed lines). */
35
+ export function readVerboseLog(cwd) {
36
+ const path = verboseLogPath(cwd);
37
+ if (!existsSync(path))
38
+ return [];
39
+ const out = [];
40
+ for (const line of readFileSync(path, "utf8").split("\n")) {
41
+ const trimmed = line.trim();
42
+ if (!trimmed)
43
+ continue;
44
+ try {
45
+ out.push(JSON.parse(trimmed));
46
+ }
47
+ catch {
48
+ /* skip a corrupt/partial line rather than failing the whole read */
49
+ }
50
+ }
51
+ return out;
52
+ }
53
+ //# sourceMappingURL=verbose-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose-log.js","sourceRoot":"","sources":["../../src/agent/verbose-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGpD,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAAgB;IAC5D,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/loader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { loadAgents, getAgent, parseFrontmatter } from "../loader.js";
6
+ import { clearSettingsCache } from "../../settings/resolve.js";
7
+ let dir;
8
+ let userDir;
9
+ let userSettings;
10
+ function writeAgent(rel, body) {
11
+ const path = join(dir, rel);
12
+ mkdirSync(join(path, ".."), { recursive: true });
13
+ writeFileSync(path, body, "utf8");
14
+ }
15
+ function load() {
16
+ return loadAgents({
17
+ cwd: dir,
18
+ userAgentsDir: userDir,
19
+ settingsOptions: { userSettingsPath: userSettings },
20
+ });
21
+ }
22
+ beforeEach(() => {
23
+ dir = mkdtempSync(join(tmpdir(), "oxagen-agents-"));
24
+ userDir = join(dir, "user-agents");
25
+ userSettings = join(dir, "user-settings.json");
26
+ clearSettingsCache();
27
+ });
28
+ afterEach(() => {
29
+ rmSync(dir, { recursive: true, force: true });
30
+ clearSettingsCache();
31
+ });
32
+ describe("parseFrontmatter", () => {
33
+ it("splits frontmatter and body", () => {
34
+ const { data, body } = parseFrontmatter("---\nname: x\ndescription: hi\n---\nThe prompt.");
35
+ expect(data["name"]).toBe("x");
36
+ expect(data["description"]).toBe("hi");
37
+ expect(body).toBe("The prompt.");
38
+ });
39
+ it("treats content without frontmatter as all body", () => {
40
+ expect(parseFrontmatter("just a prompt").body).toBe("just a prompt");
41
+ });
42
+ it("strips quotes from values", () => {
43
+ expect(parseFrontmatter('---\nmodel: "a/b"\n---\nx').data["model"]).toBe("a/b");
44
+ });
45
+ });
46
+ describe("loadAgents", () => {
47
+ it("loads an agent from .oxagen/agents and parses frontmatter + tools", () => {
48
+ writeAgent(".oxagen/agents/reviewer.md", "---\nname: reviewer\ndescription: Reviews code\ntools: Read, Grep\nmodel: a/b\n---\nYou review code.");
49
+ const agent = load().get("reviewer");
50
+ expect(agent?.description).toBe("Reviews code");
51
+ expect(agent?.tools).toEqual(["Read", "Grep"]);
52
+ expect(agent?.model).toBe("a/b");
53
+ expect(agent?.systemPrompt).toBe("You review code.");
54
+ });
55
+ it("parses a bracketed tools list", () => {
56
+ writeAgent(".oxagen/agents/a.md", "---\ntools: [Read, Bash]\n---\nbody");
57
+ expect(load().get("a")?.tools).toEqual(["Read", "Bash"]);
58
+ });
59
+ it("defaults the name to the filename and tools to undefined", () => {
60
+ writeAgent(".oxagen/agents/helper.md", "---\ndescription: d\n---\nbody");
61
+ const a = load().get("helper");
62
+ expect(a?.name).toBe("helper");
63
+ expect(a?.tools).toBeUndefined();
64
+ });
65
+ it(".oxagen overrides .claude overrides user, and settings.agents overrides files", () => {
66
+ mkdirSync(userDir, { recursive: true });
67
+ writeFileSync(join(userDir, "r.md"), "---\nname: r\n---\nuser version");
68
+ writeAgent(".claude/agents/r.md", "---\nname: r\n---\nclaude version");
69
+ expect(load().get("r")?.systemPrompt).toBe("claude version");
70
+ writeAgent(".oxagen/agents/r.md", "---\nname: r\n---\noxagen version");
71
+ expect(load().get("r")?.systemPrompt).toBe("oxagen version");
72
+ writeFileSync(userSettings, JSON.stringify({ agents: { r: { prompt: "inline version" } } }));
73
+ clearSettingsCache();
74
+ const a = load().get("r");
75
+ expect(a?.systemPrompt).toBe("inline version");
76
+ expect(a?.source).toBe("settings.json");
77
+ });
78
+ it("ignores files with no name or no body", () => {
79
+ writeAgent(".oxagen/agents/empty.md", "---\nname: empty\n---\n");
80
+ expect(load().has("empty")).toBe(false);
81
+ });
82
+ it("getAgent returns one agent or null", () => {
83
+ writeAgent(".oxagen/agents/solo.md", "---\nname: solo\n---\nbody");
84
+ expect(getAgent("solo", { cwd: dir, userAgentsDir: userDir, settingsOptions: { userSettingsPath: userSettings } })?.name).toBe("solo");
85
+ expect(getAgent("nope", { cwd: dir, userAgentsDir: userDir, settingsOptions: { userSettingsPath: userSettings } })).toBeNull();
86
+ });
87
+ });
88
+ //# sourceMappingURL=loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/loader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { tool } from "ai";
3
+ import { z } from "zod";
4
+ import { toolAllowedForAgent, filterToolsForAgent } from "../tools.js";
5
+ describe("toolAllowedForAgent", () => {
6
+ it("inherits everything when the allowlist is undefined", () => {
7
+ expect(toolAllowedForAgent("bash", undefined)).toBe(true);
8
+ });
9
+ it("matches local tools by canonical name", () => {
10
+ // Read covers read_file/grep/glob/list_dir/code_graph
11
+ expect(toolAllowedForAgent("read_file", ["Read"])).toBe(true);
12
+ expect(toolAllowedForAgent("grep", ["Read"])).toBe(true);
13
+ expect(toolAllowedForAgent("bash", ["Read"])).toBe(false);
14
+ expect(toolAllowedForAgent("bash", ["Bash"])).toBe(true);
15
+ });
16
+ it("matches the raw tool name too", () => {
17
+ expect(toolAllowedForAgent("write_file", ["write_file"])).toBe(true);
18
+ });
19
+ it("globs MCP tool names", () => {
20
+ expect(toolAllowedForAgent("mcp__github__create_issue", ["mcp__github__*"])).toBe(true);
21
+ expect(toolAllowedForAgent("mcp__other__x", ["mcp__github__*"])).toBe(false);
22
+ });
23
+ });
24
+ describe("filterToolsForAgent", () => {
25
+ const make = () => ({
26
+ read_file: tool({ description: "", inputSchema: z.object({}), execute: async () => "" }),
27
+ bash: tool({ description: "", inputSchema: z.object({}), execute: async () => "" }),
28
+ mcp__github__create_issue: tool({ description: "", inputSchema: z.object({}), execute: async () => "" }),
29
+ });
30
+ it("returns the same set when no allowlist", () => {
31
+ const t = make();
32
+ expect(filterToolsForAgent(t, undefined)).toBe(t);
33
+ });
34
+ it("keeps only allowed tools", () => {
35
+ const filtered = filterToolsForAgent(make(), ["Read", "mcp__github__*"]);
36
+ expect(Object.keys(filtered).sort()).toEqual(["mcp__github__create_issue", "read_file"]);
37
+ expect(filtered).not.toHaveProperty("bash");
38
+ });
39
+ });
40
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @module agents — Named agent definitions for the CLI.
3
+ *
4
+ * Reusable personas (system prompt + tool allowlist + model) loaded from
5
+ * markdown or settings.json, dispatched by the fleet planner or run directly
6
+ * with `--agent <name>`.
7
+ */
8
+ export type { AgentDefinition } from "./types.js";
9
+ export { loadAgents, getAgent, parseFrontmatter, type LoadAgentsOptions } from "./loader.js";
10
+ export { filterToolsForAgent, toolAllowedForAgent } from "./tools.js";
11
+ export { scaffoldAgent } from "./write.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { loadAgents, getAgent, parseFrontmatter } from "./loader.js";
2
+ export { filterToolsForAgent, toolAllowedForAgent } from "./tools.js";
3
+ export { scaffoldAgent } from "./write.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agents/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type ResolveSettingsOptions } from "../settings/resolve.js";
2
+ import type { AgentDefinition } from "./types.js";
3
+ export interface LoadAgentsOptions {
4
+ /** Project root (where `.oxagen`/`.claude` live). Defaults to process.cwd(). */
5
+ cwd?: string;
6
+ /** Override the user agents dir (testing). */
7
+ userAgentsDir?: string;
8
+ /** Resolver overrides so inline `settings.agents` is read from the same place (testing). */
9
+ settingsOptions?: ResolveSettingsOptions;
10
+ }
11
+ interface Frontmatter {
12
+ data: Record<string, string>;
13
+ body: string;
14
+ }
15
+ /** Split `---\n…\n---\nbody` into single-line key/value frontmatter + body. */
16
+ export declare function parseFrontmatter(raw: string): Frontmatter;
17
+ /**
18
+ * Load every agent definition visible from `cwd`, merged by name across sources.
19
+ * Returns the registry keyed by agent name.
20
+ */
21
+ export declare function loadAgents(opts?: LoadAgentsOptions): Map<string, AgentDefinition>;
22
+ /** Resolve one agent by name (or null). Convenience over {@link loadAgents}. */
23
+ export declare function getAgent(name: string, opts?: LoadAgentsOptions): AgentDefinition | null;
24
+ export {};
25
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/agents/loader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4FAA4F;IAC5F,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAwBzD;AAgDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CA6BrF;AAED,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,eAAe,GAAG,IAAI,CAE3F"}