@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,46 @@
1
+ import { type FleetMemory } from "./fleet/memory.js";
2
+ import type { MemoryRecord } from "./fleet/types.js";
3
+ import type { ContextRetrieval } from "./trace.js";
4
+ export interface EnhanceOptions {
5
+ prompt: string;
6
+ cwd: string;
7
+ /** Fleet memory to recall past lessons from (optional). */
8
+ memory?: FleetMemory | null;
9
+ /** Max distinct symbols/paths to look up (default 6). */
10
+ maxSymbols?: number;
11
+ /**
12
+ * Extra retrieval hints (e.g. the evaluator's `contextQueries`): symbol names,
13
+ * file paths, or topics. They are mined for candidates and looked up in the code
14
+ * graph, but never appended to the visible prompt text — only what they resolve
15
+ * to is injected.
16
+ */
17
+ extraQueries?: string[];
18
+ }
19
+ export interface EnhanceResult {
20
+ /** The original prompt with the retrieved context appended. */
21
+ prompt: string;
22
+ /** The retrieved context block alone (empty if nothing was found). */
23
+ context: string;
24
+ /** Symbol/path tokens that resolved to something in the code graph. */
25
+ resolved: string[];
26
+ /** Lessons recalled from fleet memory. */
27
+ lessons: MemoryRecord[];
28
+ /** Epoch ms context-gathering started. */
29
+ startedAt: number;
30
+ /** Epoch ms context-gathering finished. */
31
+ finishedAt: number;
32
+ /** Wall-clock ms spent gathering + injecting context. */
33
+ durationMs: number;
34
+ /** Which candidates were mined and which resolved (for verbose telemetry). */
35
+ retrieval: ContextRetrieval;
36
+ }
37
+ /**
38
+ * Pull likely code references out of a natural-language prompt: backticked spans,
39
+ * file paths, and identifier-shaped tokens (CamelCase / snake_case / dotted).
40
+ */
41
+ export declare function extractCandidates(prompt: string): {
42
+ symbols: string[];
43
+ paths: string[];
44
+ };
45
+ export declare function enhancePrompt(opts: EnhanceOptions): Promise<EnhanceResult>;
46
+ //# sourceMappingURL=prompt-enhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-enhancer.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-enhancer.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0CAA0C;IAC1C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAwBxF;AAOD,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA2FhF"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Automatic prompt enhancement.
3
+ *
4
+ * Before a prompt is handed to the agent (or split into a plan), this enriches it
5
+ * with the context the CLI already has about the repository: the code graph (a
6
+ * local symbol + import index — where things are defined, what imports them) and
7
+ * the fleet's recorded lessons. The user types "fix the login bug"; the agent
8
+ * receives that plus the exact files and symbols involved and the gotchas it
9
+ * learned last time. That is what makes the agent both faster (less blind
10
+ * grepping) and cheaper (fewer exploratory tool calls before it acts).
11
+ *
12
+ * The code graph is the knowledge graph the CLI carries offline; when the
13
+ * platform knowledge graph is reachable it can augment this, but enhancement
14
+ * never depends on the network and degrades to a no-op if the graph can't build.
15
+ */
16
+ import { queryCodeGraph } from "./code-graph.js";
17
+ import { formatLessons } from "./fleet/memory.js";
18
+ const CODEY_EXT = /\.(ts|tsx|js|jsx|mjs|cjs|json|md|mdx|css|scss|sql|py|go|rs|sh|yml|yaml|toml)$/;
19
+ /**
20
+ * Pull likely code references out of a natural-language prompt: backticked spans,
21
+ * file paths, and identifier-shaped tokens (CamelCase / snake_case / dotted).
22
+ */
23
+ export function extractCandidates(prompt) {
24
+ const symbols = new Set();
25
+ const paths = new Set();
26
+ // Backticked spans are the strongest signal — the user is quoting code.
27
+ for (const m of prompt.matchAll(/`([^`]+)`/g)) {
28
+ const inner = (m[1] ?? "").trim();
29
+ if (!inner)
30
+ continue;
31
+ if (inner.includes("/") || CODEY_EXT.test(inner))
32
+ paths.add(inner);
33
+ else if (/^[\w.$]+$/.test(inner))
34
+ symbols.add(inner);
35
+ }
36
+ // Bare file paths and identifiers in the surrounding prose.
37
+ for (const m of prompt.matchAll(/[A-Za-z0-9_./-]+/g)) {
38
+ const tok = m[0];
39
+ if (CODEY_EXT.test(tok) || (tok.includes("/") && tok.length > 3)) {
40
+ paths.add(tok.replace(/^\.\//, ""));
41
+ }
42
+ else if (/^[A-Z][A-Za-z0-9]{2,}$/.test(tok) || /^[a-z]+_[a-z0-9_]+$/.test(tok)) {
43
+ // CamelCase (Foo, GraphNode) or snake_case (build_tools) — likely symbols.
44
+ symbols.add(tok);
45
+ }
46
+ }
47
+ return { symbols: [...symbols], paths: [...paths] };
48
+ }
49
+ /** True when a code-graph result string represents a real hit (not a "No …" miss). */
50
+ function isHit(result) {
51
+ return result.length > 0 && !/^No (symbols?|file) /.test(result) && !/^Nothing imports/.test(result);
52
+ }
53
+ export async function enhancePrompt(opts) {
54
+ const { prompt, cwd } = opts;
55
+ const max = opts.maxSymbols ?? 6;
56
+ const startedAt = Date.now();
57
+ // Lessons first — they need no code graph and must surface even if it fails.
58
+ const lessons = opts.memory?.recall(prompt, { limit: 4 }) ?? [];
59
+ const sections = [];
60
+ const resolved = [];
61
+ const symbolsQueried = [];
62
+ const pathsQueried = [];
63
+ try {
64
+ const { symbols, paths } = extractCandidates(prompt);
65
+ // Evaluator-supplied hints are authoritative — the model explicitly named them
66
+ // — so classify each directly (like a backticked span) rather than mining it
67
+ // from prose. They sharpen retrieval without polluting the visible prompt text.
68
+ const symSet = new Set(symbols);
69
+ const pathSet = new Set(paths);
70
+ for (const q of opts.extraQueries ?? []) {
71
+ const t = q.trim();
72
+ if (!t)
73
+ continue;
74
+ if (t.includes("/") || CODEY_EXT.test(t))
75
+ pathSet.add(t.replace(/^\.\//, ""));
76
+ else if (/^[\w.$]+$/.test(t))
77
+ symSet.add(t);
78
+ // Multi-word topics that aren't identifiers are skipped — they won't resolve.
79
+ }
80
+ // Symbol definitions — "where is X defined".
81
+ for (const sym of [...symSet].slice(0, max)) {
82
+ symbolsQueried.push(sym);
83
+ const res = await queryCodeGraph(cwd, "search", sym, 4);
84
+ if (isHit(res)) {
85
+ sections.push(`Definitions of \`${sym}\`:\n${res}`);
86
+ resolved.push(sym);
87
+ }
88
+ }
89
+ // File context — symbols a referenced file defines, plus its dependents
90
+ // (what a change to it could break). This is the impact-analysis the agent
91
+ // would otherwise have to discover by hand.
92
+ for (const p of [...pathSet].slice(0, max)) {
93
+ pathsQueried.push(p);
94
+ const syms = await queryCodeGraph(cwd, "file_symbols", p, 12);
95
+ if (isHit(syms)) {
96
+ sections.push(`Symbols in ${p}:\n${syms}`);
97
+ resolved.push(p);
98
+ const deps = await queryCodeGraph(cwd, "dependents", p, 8);
99
+ if (isHit(deps))
100
+ sections.push(deps);
101
+ }
102
+ }
103
+ }
104
+ catch {
105
+ /* code graph unavailable (e.g. unreadable cwd) — enhancement is optional */
106
+ }
107
+ const parts = [];
108
+ if (sections.length > 0) {
109
+ parts.push("## Relevant code context (auto-retrieved from the code graph)\n" +
110
+ "Use this to skip exploration and go straight to the right files.\n\n" +
111
+ sections.join("\n\n"));
112
+ }
113
+ if (lessons.length > 0) {
114
+ parts.push("## Lessons from past work on this repo (recalled memory)\n" + formatLessons(lessons));
115
+ }
116
+ const context = parts.join("\n\n");
117
+ const enhanced = context ? `${prompt}\n\n${context}` : prompt;
118
+ const finishedAt = Date.now();
119
+ const resolvedSet = new Set(resolved);
120
+ const retrieval = {
121
+ symbolsQueried,
122
+ pathsQueried,
123
+ resolved,
124
+ unresolved: [...symbolsQueried, ...pathsQueried].filter((c) => !resolvedSet.has(c)),
125
+ };
126
+ return {
127
+ prompt: enhanced,
128
+ context,
129
+ resolved,
130
+ lessons,
131
+ startedAt,
132
+ finishedAt,
133
+ durationMs: finishedAt - startedAt,
134
+ retrieval,
135
+ };
136
+ }
137
+ //# sourceMappingURL=prompt-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-enhancer.js","sourceRoot":"","sources":["../../src/agent/prompt-enhancer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * The model rate card — baked into the CLI so projecting cost is trivial.
3
+ *
4
+ * `oxagen` is deliberately *not* pinned to one model vendor: the cost router
5
+ * picks the cheapest sufficient model, and this card is how the CLI prices any
6
+ * model's token usage in dollars — for live per-turn reporting, for `oxagen
7
+ * cost` projections, and for proving one model/run is cheaper than another.
8
+ *
9
+ * The numbers (USD per 1,000,000 tokens) mirror `packages/billing/src/pricing.ts`
10
+ * (the platform's single source of truth); they are vendored here only so the
11
+ * standalone `oxagen` bin stays lean and does not pull in @oxagen/billing
12
+ * (Stripe et al.). Keep them in sync. This module is the ONE place rates live in
13
+ * the CLI — `model-router.ts` re-exports from here, so there is no second copy.
14
+ */
15
+ /** USD price per 1,000,000 tokens, split by direction. */
16
+ export interface ModelRate {
17
+ inputPer1M: number;
18
+ outputPer1M: number;
19
+ }
20
+ /** One priced model family. Matched by longest `family` prefix on the slug. */
21
+ export interface RateCardEntry {
22
+ /** Bare family prefix matched against the slug (e.g. "claude-opus"). */
23
+ family: string;
24
+ /** Human label for tables and reports. */
25
+ label: string;
26
+ /** Provider, so cost projections can group/compare by vendor. */
27
+ vendor: string;
28
+ rate: ModelRate;
29
+ }
30
+ /**
31
+ * The rate card. Order matters: longest/most-specific prefixes first so
32
+ * "gpt-4o-mini" wins over "gpt-4o". Add a row to price a new family.
33
+ */
34
+ export declare const RATE_CARD: RateCardEntry[];
35
+ /** Sonnet — used when a slug matches no family, so a run is never zero-charged. */
36
+ export declare const FALLBACK_RATE: ModelRate;
37
+ /** Strip "vendor/" and match the bare family. Exported for display/grouping. */
38
+ export declare function familyOf(model: string): string;
39
+ /** Resolve a gateway slug (e.g. "anthropic/claude-opus-4.8") to its token rate. */
40
+ export declare function rateFor(model: string): ModelRate;
41
+ /** The card entry that prices a slug, or undefined when it falls back. */
42
+ export declare function entryFor(model: string): RateCardEntry | undefined;
43
+ /** Token usage for pricing. Either direction may be absent (treated as 0). */
44
+ export interface TokenUsage {
45
+ inputTokens?: number;
46
+ outputTokens?: number;
47
+ }
48
+ /** Estimated provider cost in USD for a token usage on a given model. */
49
+ export declare function estimateCostUsd(model: string, usage: TokenUsage): number;
50
+ /** Format a USD amount compactly ("$0.0042", "$1.20", "<$0.0001", "$0"). */
51
+ export declare function formatUsd(usd: number): string;
52
+ /** A fully broken-out cost projection for one model + token usage. */
53
+ export interface CostProjection {
54
+ model: string;
55
+ family: string;
56
+ label: string;
57
+ vendor: string;
58
+ inputTokens: number;
59
+ outputTokens: number;
60
+ inputCostUsd: number;
61
+ outputCostUsd: number;
62
+ totalUsd: number;
63
+ /** True when no card entry matched and the fallback rate was used. */
64
+ fallback: boolean;
65
+ }
66
+ /** Project the dollar cost of a token usage on a specific model. */
67
+ export declare function projectCost(model: string, usage: TokenUsage): CostProjection;
68
+ /**
69
+ * Price the same token usage across EVERY family in the card, cheapest first.
70
+ * This is the "prove it's the cheapest" primitive: hold the work constant, vary
71
+ * the model, and see the dollar spread — the whole point of not being pinned to
72
+ * one vendor.
73
+ */
74
+ export declare function compareModels(usage: TokenUsage): CostProjection[];
75
+ /** The full rate card (for `oxagen cost --rates`). */
76
+ export declare function listRateCard(): RateCardEntry[];
77
+ //# sourceMappingURL=rate-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../../src/agent/rate-card.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,aAAa,EAQpC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,SAAkD,CAAC;AAE/E,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAMhD;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAGjE;AAED,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAKxE;AAED,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CAmB5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,EAAE,CAIjE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The model rate card — baked into the CLI so projecting cost is trivial.
3
+ *
4
+ * `oxagen` is deliberately *not* pinned to one model vendor: the cost router
5
+ * picks the cheapest sufficient model, and this card is how the CLI prices any
6
+ * model's token usage in dollars — for live per-turn reporting, for `oxagen
7
+ * cost` projections, and for proving one model/run is cheaper than another.
8
+ *
9
+ * The numbers (USD per 1,000,000 tokens) mirror `packages/billing/src/pricing.ts`
10
+ * (the platform's single source of truth); they are vendored here only so the
11
+ * standalone `oxagen` bin stays lean and does not pull in @oxagen/billing
12
+ * (Stripe et al.). Keep them in sync. This module is the ONE place rates live in
13
+ * the CLI — `model-router.ts` re-exports from here, so there is no second copy.
14
+ */
15
+ /**
16
+ * The rate card. Order matters: longest/most-specific prefixes first so
17
+ * "gpt-4o-mini" wins over "gpt-4o". Add a row to price a new family.
18
+ */
19
+ export const RATE_CARD = [
20
+ { family: "claude-opus", label: "Claude Opus", vendor: "anthropic", rate: { inputPer1M: 15.0, outputPer1M: 75.0 } },
21
+ { family: "claude-sonnet", label: "Claude Sonnet", vendor: "anthropic", rate: { inputPer1M: 3.0, outputPer1M: 15.0 } },
22
+ { family: "claude-haiku", label: "Claude Haiku", vendor: "anthropic", rate: { inputPer1M: 1.0, outputPer1M: 5.0 } },
23
+ { family: "gpt-5", label: "GPT-5", vendor: "openai", rate: { inputPer1M: 1.25, outputPer1M: 10.0 } },
24
+ { family: "gpt-4o-mini", label: "GPT-4o mini", vendor: "openai", rate: { inputPer1M: 0.15, outputPer1M: 0.6 } },
25
+ { family: "gpt-4o", label: "GPT-4o", vendor: "openai", rate: { inputPer1M: 2.5, outputPer1M: 10.0 } },
26
+ { family: "gemini", label: "Gemini", vendor: "google", rate: { inputPer1M: 1.25, outputPer1M: 5.0 } },
27
+ ];
28
+ /** Sonnet — used when a slug matches no family, so a run is never zero-charged. */
29
+ export const FALLBACK_RATE = { inputPer1M: 3.0, outputPer1M: 15.0 };
30
+ /** Strip "vendor/" and match the bare family. Exported for display/grouping. */
31
+ export function familyOf(model) {
32
+ return model.split("/").pop() ?? model;
33
+ }
34
+ /** Resolve a gateway slug (e.g. "anthropic/claude-opus-4.8") to its token rate. */
35
+ export function rateFor(model) {
36
+ const family = familyOf(model);
37
+ for (const entry of RATE_CARD) {
38
+ if (family.startsWith(entry.family))
39
+ return entry.rate;
40
+ }
41
+ return FALLBACK_RATE;
42
+ }
43
+ /** The card entry that prices a slug, or undefined when it falls back. */
44
+ export function entryFor(model) {
45
+ const family = familyOf(model);
46
+ return RATE_CARD.find((e) => family.startsWith(e.family));
47
+ }
48
+ /** Estimated provider cost in USD for a token usage on a given model. */
49
+ export function estimateCostUsd(model, usage) {
50
+ const rate = rateFor(model);
51
+ const inCost = ((usage.inputTokens ?? 0) / 1_000_000) * rate.inputPer1M;
52
+ const outCost = ((usage.outputTokens ?? 0) / 1_000_000) * rate.outputPer1M;
53
+ return inCost + outCost;
54
+ }
55
+ /** Format a USD amount compactly ("$0.0042", "$1.20", "<$0.0001", "$0"). */
56
+ export function formatUsd(usd) {
57
+ if (usd === 0)
58
+ return "$0";
59
+ if (usd < 0.0001)
60
+ return "<$0.0001";
61
+ if (usd < 1)
62
+ return `$${usd.toFixed(4)}`;
63
+ return `$${usd.toFixed(2)}`;
64
+ }
65
+ /** Project the dollar cost of a token usage on a specific model. */
66
+ export function projectCost(model, usage) {
67
+ const entry = entryFor(model);
68
+ const rate = entry?.rate ?? FALLBACK_RATE;
69
+ const input = usage.inputTokens ?? 0;
70
+ const output = usage.outputTokens ?? 0;
71
+ const inputCostUsd = (input / 1_000_000) * rate.inputPer1M;
72
+ const outputCostUsd = (output / 1_000_000) * rate.outputPer1M;
73
+ return {
74
+ model,
75
+ family: entry?.family ?? familyOf(model),
76
+ label: entry?.label ?? familyOf(model),
77
+ vendor: entry?.vendor ?? "unknown",
78
+ inputTokens: input,
79
+ outputTokens: output,
80
+ inputCostUsd,
81
+ outputCostUsd,
82
+ totalUsd: inputCostUsd + outputCostUsd,
83
+ fallback: !entry,
84
+ };
85
+ }
86
+ /**
87
+ * Price the same token usage across EVERY family in the card, cheapest first.
88
+ * This is the "prove it's the cheapest" primitive: hold the work constant, vary
89
+ * the model, and see the dollar spread — the whole point of not being pinned to
90
+ * one vendor.
91
+ */
92
+ export function compareModels(usage) {
93
+ return RATE_CARD.map((e) => projectCost(`${e.vendor}/${e.family}`, usage)).sort((a, b) => a.totalUsd - b.totalUsd);
94
+ }
95
+ /** The full rate card (for `oxagen cost --rates`). */
96
+ export function listRateCard() {
97
+ return RATE_CARD;
98
+ }
99
+ //# sourceMappingURL=rate-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-card.js","sourceRoot":"","sources":["../../src/agent/rate-card.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ProjectContext } from "./project-context.js";
2
+ export interface SystemPromptOptions {
3
+ cwd: string;
4
+ projectContext?: ProjectContext;
5
+ /** When true, the agent must not mutate the filesystem or run commands. */
6
+ readOnly?: boolean;
7
+ /** A named agent persona whose prompt replaces the default identity. */
8
+ agent?: {
9
+ name: string;
10
+ systemPrompt: string;
11
+ };
12
+ }
13
+ export declare function buildSystemPrompt(opts: SystemPromptOptions): string;
14
+ //# sourceMappingURL=system-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAoDnE"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * System prompt for the local agentic coding loop.
3
+ *
4
+ * Intentionally compact and stable: a stable prefix keeps the provider prompt
5
+ * cache warm across turns (cache-aware layout — see CONTEXT_ENGINE_SPEC).
6
+ * Project rules are loaded once per session and included here (stable). Per-turn
7
+ * recalled memory is injected by the loop as a separate section, not here.
8
+ */
9
+ import { platform, release } from "node:os";
10
+ export function buildSystemPrompt(opts) {
11
+ const { cwd, projectContext, readOnly, agent } = opts;
12
+ const preamble = agent
13
+ ? [
14
+ agent.systemPrompt.trim(),
15
+ "",
16
+ "You operate locally in the user's terminal, on the working directory, using the provided tools.",
17
+ ]
18
+ : [
19
+ "You are oxagen, an agentic coding assistant running locally in the user's terminal,",
20
+ "backed by Oxagen's knowledge-graph context engine.",
21
+ "You operate directly on the user's working directory using the provided tools.",
22
+ ];
23
+ const lines = [
24
+ ...preamble,
25
+ "",
26
+ "Operating rules:",
27
+ "- Act, don't narrate intentions at length. Read before you edit, and edit precisely.",
28
+ "- Prefer `edit_file` for surgical changes; only `write_file` for new files or full rewrites.",
29
+ "- Before editing a file you have not read this session, `read_file` it first.",
30
+ "- Use `grep` and `glob` to locate code instead of guessing paths.",
31
+ "- Use `code_graph` for structural questions — `search` to find where a symbol is",
32
+ " defined, `dependents` to see what imports a file before you change it. It is a",
33
+ " precomputed symbol/import index, more precise than grep for those questions.",
34
+ "- Use `bash` for builds, tests, git, and anything the dedicated tools don't cover.",
35
+ "- Keep changes minimal and consistent with the surrounding code's style and conventions.",
36
+ "- When the task is done, give a short summary of what changed. Do not pad the response.",
37
+ ];
38
+ if (readOnly) {
39
+ lines.push("", "READ-ONLY MODE: you may read, search, and explain, but you MUST NOT modify files or run commands.", "The write_file, edit_file, and bash tools are disabled. Explain the change instead of making it.");
40
+ }
41
+ lines.push("", `Environment: ${platform()} ${release()} · cwd: ${cwd}`);
42
+ if (projectContext && projectContext.text) {
43
+ lines.push("", `## Project rules (from ${projectContext.sources.join(", ")})`, "Follow these as binding instructions for this repository:", "", projectContext.text);
44
+ }
45
+ return lines.join("\n");
46
+ }
47
+ //# sourceMappingURL=system-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAY5C,MAAM,UAAU,iBAAiB,CAAC,IAAyB;IACzD,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK;QACpB,CAAC,CAAC;YACE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE;YACzB,EAAE;YACF,iGAAiG;SAClG;QACH,CAAC,CAAC;YACE,qFAAqF;YACrF,oDAAoD;YACpD,gFAAgF;SACjF,CAAC;IAEN,MAAM,KAAK,GAAG;QACZ,GAAG,QAAQ;QACX,EAAE;QACF,kBAAkB;QAClB,sFAAsF;QACtF,8FAA8F;QAC9F,+EAA+E;QAC/E,mEAAmE;QACnE,kFAAkF;QAClF,kFAAkF;QAClF,gFAAgF;QAChF,oFAAoF;QACpF,0FAA0F;QAC1F,yFAAyF;KAC1F,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CACR,EAAE,EACF,mGAAmG,EACnG,kGAAkG,CACnG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,QAAQ,EAAE,IAAI,OAAO,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;IAExE,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,EAAE,EACF,0BAA0B,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAC9D,2DAA2D,EAC3D,EAAE,EACF,cAAc,CAAC,IAAI,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Local coding tools for the agent loop.
3
+ *
4
+ * These are the host-filesystem / shell primitives that Claude Code-style
5
+ * agentic coding needs and that the Oxagen platform deliberately does NOT expose
6
+ * (the platform only has a sandboxed `agent.code.execute`, not host-fs tools).
7
+ * Each is an AI SDK `tool()` whose `execute` operates on the local working
8
+ * directory and returns a string the model can read.
9
+ *
10
+ * Safety: the mutating tools (`write_file`, `edit_file`, `bash`) are routed
11
+ * through a {@link PermissionBroker} when one is supplied — each call is checked
12
+ * (and, in `ask` mode, approved by the human) before it runs. `--readonly`
13
+ * withholds them entirely. With no broker the tools run ungated (the fleet
14
+ * orchestrator runs its own policy), so callers that face a user — the REPL and
15
+ * one-shot — always supply one.
16
+ */
17
+ import { type ToolSet } from "ai";
18
+ import { type PermissionBroker } from "./permissions.js";
19
+ export declare function buildTools(cwd: string, opts?: {
20
+ readOnly?: boolean;
21
+ broker?: PermissionBroker;
22
+ }): ToolSet;
23
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAOxC,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA4EpF,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAO,GAC3D,OAAO,CAiQT"}