@substrate-ai/core 0.19.54

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 (486) hide show
  1. package/README.md +55 -0
  2. package/dist/__tests__/adapter.test.d.ts +12 -0
  3. package/dist/__tests__/adapter.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapter.test.js +259 -0
  5. package/dist/__tests__/adapter.test.js.map +1 -0
  6. package/dist/__tests__/event-bus.test.d.ts +14 -0
  7. package/dist/__tests__/event-bus.test.d.ts.map +1 -0
  8. package/dist/__tests__/event-bus.test.js +199 -0
  9. package/dist/__tests__/event-bus.test.js.map +1 -0
  10. package/dist/__tests__/output-quality.test.d.ts +8 -0
  11. package/dist/__tests__/output-quality.test.d.ts.map +1 -0
  12. package/dist/__tests__/output-quality.test.js +166 -0
  13. package/dist/__tests__/output-quality.test.js.map +1 -0
  14. package/dist/__tests__/schema-suffix.test.d.ts +9 -0
  15. package/dist/__tests__/schema-suffix.test.d.ts.map +1 -0
  16. package/dist/__tests__/schema-suffix.test.js +126 -0
  17. package/dist/__tests__/schema-suffix.test.js.map +1 -0
  18. package/dist/__tests__/yaml-parser.test.d.ts +18 -0
  19. package/dist/__tests__/yaml-parser.test.d.ts.map +1 -0
  20. package/dist/__tests__/yaml-parser.test.js +475 -0
  21. package/dist/__tests__/yaml-parser.test.js.map +1 -0
  22. package/dist/__type-checks__.d.ts +11 -0
  23. package/dist/__type-checks__.d.ts.map +1 -0
  24. package/dist/__type-checks__.js +19 -0
  25. package/dist/__type-checks__.js.map +1 -0
  26. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts +12 -0
  27. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts.map +1 -0
  28. package/dist/adapters/__tests__/adapter-output-normalizer.test.js +193 -0
  29. package/dist/adapters/__tests__/adapter-output-normalizer.test.js.map +1 -0
  30. package/dist/adapters/adapter-format-error.d.ts +35 -0
  31. package/dist/adapters/adapter-format-error.d.ts.map +1 -0
  32. package/dist/adapters/adapter-format-error.js +38 -0
  33. package/dist/adapters/adapter-format-error.js.map +1 -0
  34. package/dist/adapters/adapter-output-normalizer.d.ts +50 -0
  35. package/dist/adapters/adapter-output-normalizer.d.ts.map +1 -0
  36. package/dist/adapters/adapter-output-normalizer.js +233 -0
  37. package/dist/adapters/adapter-output-normalizer.js.map +1 -0
  38. package/dist/adapters/adapter-registry.d.ts +50 -0
  39. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  40. package/dist/adapters/adapter-registry.js +101 -0
  41. package/dist/adapters/adapter-registry.js.map +1 -0
  42. package/dist/adapters/claude-adapter.d.ts +59 -0
  43. package/dist/adapters/claude-adapter.d.ts.map +1 -0
  44. package/dist/adapters/claude-adapter.js +367 -0
  45. package/dist/adapters/claude-adapter.js.map +1 -0
  46. package/dist/adapters/codex-adapter.d.ts +64 -0
  47. package/dist/adapters/codex-adapter.d.ts.map +1 -0
  48. package/dist/adapters/codex-adapter.js +263 -0
  49. package/dist/adapters/codex-adapter.js.map +1 -0
  50. package/dist/adapters/gemini-adapter.d.ts +57 -0
  51. package/dist/adapters/gemini-adapter.d.ts.map +1 -0
  52. package/dist/adapters/gemini-adapter.js +311 -0
  53. package/dist/adapters/gemini-adapter.js.map +1 -0
  54. package/dist/adapters/index.d.ts +10 -0
  55. package/dist/adapters/index.d.ts.map +1 -0
  56. package/dist/adapters/index.js +14 -0
  57. package/dist/adapters/index.js.map +1 -0
  58. package/dist/adapters/schemas.d.ts +137 -0
  59. package/dist/adapters/schemas.d.ts.map +1 -0
  60. package/dist/adapters/schemas.js +140 -0
  61. package/dist/adapters/schemas.js.map +1 -0
  62. package/dist/adapters/types.d.ts +245 -0
  63. package/dist/adapters/types.d.ts.map +1 -0
  64. package/dist/adapters/types.js +6 -0
  65. package/dist/adapters/types.js.map +1 -0
  66. package/dist/adapters/worker-adapter.d.ts +188 -0
  67. package/dist/adapters/worker-adapter.d.ts.map +1 -0
  68. package/dist/adapters/worker-adapter.js +19 -0
  69. package/dist/adapters/worker-adapter.js.map +1 -0
  70. package/dist/budget/budget-tracker.d.ts +22 -0
  71. package/dist/budget/budget-tracker.d.ts.map +1 -0
  72. package/dist/budget/budget-tracker.js +39 -0
  73. package/dist/budget/budget-tracker.js.map +1 -0
  74. package/dist/budget/index.d.ts +6 -0
  75. package/dist/budget/index.d.ts.map +1 -0
  76. package/dist/budget/index.js +5 -0
  77. package/dist/budget/index.js.map +1 -0
  78. package/dist/config/config-migrator.d.ts +58 -0
  79. package/dist/config/config-migrator.d.ts.map +1 -0
  80. package/dist/config/config-migrator.js +158 -0
  81. package/dist/config/config-migrator.js.map +1 -0
  82. package/dist/config/config-system-impl.d.ts +63 -0
  83. package/dist/config/config-system-impl.d.ts.map +1 -0
  84. package/dist/config/config-system-impl.js +364 -0
  85. package/dist/config/config-system-impl.js.map +1 -0
  86. package/dist/config/config-watcher.d.ts +59 -0
  87. package/dist/config/config-watcher.d.ts.map +1 -0
  88. package/dist/config/config-watcher.js +137 -0
  89. package/dist/config/config-watcher.js.map +1 -0
  90. package/dist/config/defaults.d.ts +13 -0
  91. package/dist/config/defaults.d.ts.map +1 -0
  92. package/dist/config/defaults.js +62 -0
  93. package/dist/config/defaults.js.map +1 -0
  94. package/dist/config/errors.d.ts +25 -0
  95. package/dist/config/errors.d.ts.map +1 -0
  96. package/dist/config/errors.js +49 -0
  97. package/dist/config/errors.js.map +1 -0
  98. package/dist/config/index.d.ts +19 -0
  99. package/dist/config/index.d.ts.map +1 -0
  100. package/dist/config/index.js +39 -0
  101. package/dist/config/index.js.map +1 -0
  102. package/dist/config/types.d.ts +456 -0
  103. package/dist/config/types.d.ts.map +1 -0
  104. package/dist/config/types.js +174 -0
  105. package/dist/config/types.js.map +1 -0
  106. package/dist/config/version-utils.d.ts +39 -0
  107. package/dist/config/version-utils.d.ts.map +1 -0
  108. package/dist/config/version-utils.js +66 -0
  109. package/dist/config/version-utils.js.map +1 -0
  110. package/dist/context/index.d.ts +2 -0
  111. package/dist/context/index.d.ts.map +1 -0
  112. package/dist/context/index.js +2 -0
  113. package/dist/context/index.js.map +1 -0
  114. package/dist/context/types.d.ts +113 -0
  115. package/dist/context/types.d.ts.map +1 -0
  116. package/dist/context/types.js +59 -0
  117. package/dist/context/types.js.map +1 -0
  118. package/dist/cost-tracker/cost-tracker-impl.d.ts +51 -0
  119. package/dist/cost-tracker/cost-tracker-impl.d.ts.map +1 -0
  120. package/dist/cost-tracker/cost-tracker-impl.js +85 -0
  121. package/dist/cost-tracker/cost-tracker-impl.js.map +1 -0
  122. package/dist/cost-tracker/cost-tracker-subscriber.d.ts +31 -0
  123. package/dist/cost-tracker/cost-tracker-subscriber.d.ts.map +1 -0
  124. package/dist/cost-tracker/cost-tracker-subscriber.js +116 -0
  125. package/dist/cost-tracker/cost-tracker-subscriber.js.map +1 -0
  126. package/dist/cost-tracker/index.d.ts +11 -0
  127. package/dist/cost-tracker/index.d.ts.map +1 -0
  128. package/dist/cost-tracker/index.js +7 -0
  129. package/dist/cost-tracker/index.js.map +1 -0
  130. package/dist/cost-tracker/token-rates.d.ts +25 -0
  131. package/dist/cost-tracker/token-rates.d.ts.map +1 -0
  132. package/dist/cost-tracker/token-rates.js +99 -0
  133. package/dist/cost-tracker/token-rates.js.map +1 -0
  134. package/dist/cost-tracker/types.d.ts +6 -0
  135. package/dist/cost-tracker/types.d.ts.map +1 -0
  136. package/dist/cost-tracker/types.js +2 -0
  137. package/dist/cost-tracker/types.js.map +1 -0
  138. package/dist/dispatch/dispatcher-impl.d.ts +92 -0
  139. package/dist/dispatch/dispatcher-impl.d.ts.map +1 -0
  140. package/dist/dispatch/dispatcher-impl.js +847 -0
  141. package/dist/dispatch/dispatcher-impl.js.map +1 -0
  142. package/dist/dispatch/index.d.ts +15 -0
  143. package/dist/dispatch/index.d.ts.map +1 -0
  144. package/dist/dispatch/index.js +14 -0
  145. package/dist/dispatch/index.js.map +1 -0
  146. package/dist/dispatch/interface-change-detector.d.ts +46 -0
  147. package/dist/dispatch/interface-change-detector.d.ts.map +1 -0
  148. package/dist/dispatch/interface-change-detector.js +135 -0
  149. package/dist/dispatch/interface-change-detector.js.map +1 -0
  150. package/dist/dispatch/output-quality.d.ts +43 -0
  151. package/dist/dispatch/output-quality.d.ts.map +1 -0
  152. package/dist/dispatch/output-quality.js +148 -0
  153. package/dist/dispatch/output-quality.js.map +1 -0
  154. package/dist/dispatch/types.d.ts +271 -0
  155. package/dist/dispatch/types.d.ts.map +1 -0
  156. package/dist/dispatch/types.js +76 -0
  157. package/dist/dispatch/types.js.map +1 -0
  158. package/dist/dispatch/yaml-parser.d.ts +40 -0
  159. package/dist/dispatch/yaml-parser.d.ts.map +1 -0
  160. package/dist/dispatch/yaml-parser.js +323 -0
  161. package/dist/dispatch/yaml-parser.js.map +1 -0
  162. package/dist/events/core-events.d.ts +288 -0
  163. package/dist/events/core-events.d.ts.map +1 -0
  164. package/dist/events/core-events.js +10 -0
  165. package/dist/events/core-events.js.map +1 -0
  166. package/dist/events/event-bus.d.ts +55 -0
  167. package/dist/events/event-bus.d.ts.map +1 -0
  168. package/dist/events/event-bus.js +52 -0
  169. package/dist/events/event-bus.js.map +1 -0
  170. package/dist/events/index.d.ts +9 -0
  171. package/dist/events/index.d.ts.map +1 -0
  172. package/dist/events/index.js +6 -0
  173. package/dist/events/index.js.map +1 -0
  174. package/dist/events/types.d.ts +21 -0
  175. package/dist/events/types.d.ts.map +1 -0
  176. package/dist/events/types.js +8 -0
  177. package/dist/events/types.js.map +1 -0
  178. package/dist/git/git-manager.d.ts +31 -0
  179. package/dist/git/git-manager.d.ts.map +1 -0
  180. package/dist/git/git-manager.js +46 -0
  181. package/dist/git/git-manager.js.map +1 -0
  182. package/dist/git/git-utils.d.ts +166 -0
  183. package/dist/git/git-utils.d.ts.map +1 -0
  184. package/dist/git/git-utils.js +347 -0
  185. package/dist/git/git-utils.js.map +1 -0
  186. package/dist/git/git-worktree-manager-impl.d.ts +58 -0
  187. package/dist/git/git-worktree-manager-impl.d.ts.map +1 -0
  188. package/dist/git/git-worktree-manager-impl.js +336 -0
  189. package/dist/git/git-worktree-manager-impl.js.map +1 -0
  190. package/dist/git/git-worktree-manager.d.ts +122 -0
  191. package/dist/git/git-worktree-manager.d.ts.map +1 -0
  192. package/dist/git/git-worktree-manager.js +14 -0
  193. package/dist/git/git-worktree-manager.js.map +1 -0
  194. package/dist/git/index.d.ts +11 -0
  195. package/dist/git/index.d.ts.map +1 -0
  196. package/dist/git/index.js +8 -0
  197. package/dist/git/index.js.map +1 -0
  198. package/dist/index.d.ts +33 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +47 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/llm/client.d.ts +42 -0
  203. package/dist/llm/client.d.ts.map +1 -0
  204. package/dist/llm/client.js +27 -0
  205. package/dist/llm/client.js.map +1 -0
  206. package/dist/monitor/index.d.ts +15 -0
  207. package/dist/monitor/index.d.ts.map +1 -0
  208. package/dist/monitor/index.js +9 -0
  209. package/dist/monitor/index.js.map +1 -0
  210. package/dist/monitor/monitor-agent-impl.d.ts +56 -0
  211. package/dist/monitor/monitor-agent-impl.d.ts.map +1 -0
  212. package/dist/monitor/monitor-agent-impl.js +178 -0
  213. package/dist/monitor/monitor-agent-impl.js.map +1 -0
  214. package/dist/monitor/monitor-agent.d.ts +36 -0
  215. package/dist/monitor/monitor-agent.d.ts.map +1 -0
  216. package/dist/monitor/monitor-agent.js +6 -0
  217. package/dist/monitor/monitor-agent.js.map +1 -0
  218. package/dist/monitor/performance-aggregates.d.ts +41 -0
  219. package/dist/monitor/performance-aggregates.d.ts.map +1 -0
  220. package/dist/monitor/performance-aggregates.js +6 -0
  221. package/dist/monitor/performance-aggregates.js.map +1 -0
  222. package/dist/monitor/recommendation-engine.d.ts +27 -0
  223. package/dist/monitor/recommendation-engine.d.ts.map +1 -0
  224. package/dist/monitor/recommendation-engine.js +140 -0
  225. package/dist/monitor/recommendation-engine.js.map +1 -0
  226. package/dist/monitor/recommendation-types.d.ts +30 -0
  227. package/dist/monitor/recommendation-types.d.ts.map +1 -0
  228. package/dist/monitor/recommendation-types.js +43 -0
  229. package/dist/monitor/recommendation-types.js.map +1 -0
  230. package/dist/monitor/report-generator.d.ts +48 -0
  231. package/dist/monitor/report-generator.d.ts.map +1 -0
  232. package/dist/monitor/report-generator.js +123 -0
  233. package/dist/monitor/report-generator.js.map +1 -0
  234. package/dist/monitor/task-type-classifier.d.ts +19 -0
  235. package/dist/monitor/task-type-classifier.d.ts.map +1 -0
  236. package/dist/monitor/task-type-classifier.js +68 -0
  237. package/dist/monitor/task-type-classifier.js.map +1 -0
  238. package/dist/persistence/adapter.d.ts +4 -0
  239. package/dist/persistence/adapter.d.ts.map +1 -0
  240. package/dist/persistence/adapter.js +56 -0
  241. package/dist/persistence/adapter.js.map +1 -0
  242. package/dist/persistence/cost-types.d.ts +87 -0
  243. package/dist/persistence/cost-types.d.ts.map +1 -0
  244. package/dist/persistence/cost-types.js +14 -0
  245. package/dist/persistence/cost-types.js.map +1 -0
  246. package/dist/persistence/dolt-adapter-transaction.test.d.ts +10 -0
  247. package/dist/persistence/dolt-adapter-transaction.test.d.ts.map +1 -0
  248. package/dist/persistence/dolt-adapter-transaction.test.js +359 -0
  249. package/dist/persistence/dolt-adapter-transaction.test.js.map +1 -0
  250. package/dist/persistence/dolt-adapter.d.ts +77 -0
  251. package/dist/persistence/dolt-adapter.d.ts.map +1 -0
  252. package/dist/persistence/dolt-adapter.js +98 -0
  253. package/dist/persistence/dolt-adapter.js.map +1 -0
  254. package/dist/persistence/dolt-client.d.ts +69 -0
  255. package/dist/persistence/dolt-client.d.ts.map +1 -0
  256. package/dist/persistence/dolt-client.js +278 -0
  257. package/dist/persistence/dolt-client.js.map +1 -0
  258. package/dist/persistence/dolt-errors.d.ts +10 -0
  259. package/dist/persistence/dolt-errors.d.ts.map +1 -0
  260. package/dist/persistence/dolt-errors.js +15 -0
  261. package/dist/persistence/dolt-errors.js.map +1 -0
  262. package/dist/persistence/dolt-init.d.ts +64 -0
  263. package/dist/persistence/dolt-init.d.ts.map +1 -0
  264. package/dist/persistence/dolt-init.js +233 -0
  265. package/dist/persistence/dolt-init.js.map +1 -0
  266. package/dist/persistence/index.d.ts +23 -0
  267. package/dist/persistence/index.d.ts.map +1 -0
  268. package/dist/persistence/index.js +23 -0
  269. package/dist/persistence/index.js.map +1 -0
  270. package/dist/persistence/memory-adapter.d.ts +156 -0
  271. package/dist/persistence/memory-adapter.d.ts.map +1 -0
  272. package/dist/persistence/memory-adapter.js +1167 -0
  273. package/dist/persistence/memory-adapter.js.map +1 -0
  274. package/dist/persistence/monitor-database.d.ts +113 -0
  275. package/dist/persistence/monitor-database.d.ts.map +1 -0
  276. package/dist/persistence/monitor-database.js +345 -0
  277. package/dist/persistence/monitor-database.js.map +1 -0
  278. package/dist/persistence/queries/amendments.d.ts +91 -0
  279. package/dist/persistence/queries/amendments.d.ts.map +1 -0
  280. package/dist/persistence/queries/amendments.js +185 -0
  281. package/dist/persistence/queries/amendments.js.map +1 -0
  282. package/dist/persistence/queries/cost.d.ts +130 -0
  283. package/dist/persistence/queries/cost.d.ts.map +1 -0
  284. package/dist/persistence/queries/cost.js +384 -0
  285. package/dist/persistence/queries/cost.js.map +1 -0
  286. package/dist/persistence/queries/decisions.d.ts +131 -0
  287. package/dist/persistence/queries/decisions.d.ts.map +1 -0
  288. package/dist/persistence/queries/decisions.js +339 -0
  289. package/dist/persistence/queries/decisions.js.map +1 -0
  290. package/dist/persistence/queries/metrics.d.ts +155 -0
  291. package/dist/persistence/queries/metrics.d.ts.map +1 -0
  292. package/dist/persistence/queries/metrics.js +237 -0
  293. package/dist/persistence/queries/metrics.js.map +1 -0
  294. package/dist/persistence/queries/retry-escalated.d.ts +35 -0
  295. package/dist/persistence/queries/retry-escalated.d.ts.map +1 -0
  296. package/dist/persistence/queries/retry-escalated.js +83 -0
  297. package/dist/persistence/queries/retry-escalated.js.map +1 -0
  298. package/dist/persistence/schema-version.d.ts +89 -0
  299. package/dist/persistence/schema-version.d.ts.map +1 -0
  300. package/dist/persistence/schema-version.js +67 -0
  301. package/dist/persistence/schema-version.js.map +1 -0
  302. package/dist/persistence/schema.d.ts +26 -0
  303. package/dist/persistence/schema.d.ts.map +1 -0
  304. package/dist/persistence/schema.js +509 -0
  305. package/dist/persistence/schema.js.map +1 -0
  306. package/dist/persistence/schemas/decisions.d.ts +176 -0
  307. package/dist/persistence/schemas/decisions.d.ts.map +1 -0
  308. package/dist/persistence/schemas/decisions.js +139 -0
  309. package/dist/persistence/schemas/decisions.js.map +1 -0
  310. package/dist/persistence/schemas/operational.d.ts +194 -0
  311. package/dist/persistence/schemas/operational.d.ts.map +1 -0
  312. package/dist/persistence/schemas/operational.js +197 -0
  313. package/dist/persistence/schemas/operational.js.map +1 -0
  314. package/dist/persistence/types.d.ts +98 -0
  315. package/dist/persistence/types.d.ts.map +1 -0
  316. package/dist/persistence/types.js +22 -0
  317. package/dist/persistence/types.js.map +1 -0
  318. package/dist/quality-gates/index.d.ts +2 -0
  319. package/dist/quality-gates/index.d.ts.map +1 -0
  320. package/dist/quality-gates/index.js +2 -0
  321. package/dist/quality-gates/index.js.map +1 -0
  322. package/dist/quality-gates/types.d.ts +106 -0
  323. package/dist/quality-gates/types.d.ts.map +1 -0
  324. package/dist/quality-gates/types.js +5 -0
  325. package/dist/quality-gates/types.js.map +1 -0
  326. package/dist/routing/index.d.ts +19 -0
  327. package/dist/routing/index.d.ts.map +1 -0
  328. package/dist/routing/index.js +32 -0
  329. package/dist/routing/index.js.map +1 -0
  330. package/dist/routing/model-routing-config.d.ts +75 -0
  331. package/dist/routing/model-routing-config.d.ts.map +1 -0
  332. package/dist/routing/model-routing-config.js +110 -0
  333. package/dist/routing/model-routing-config.js.map +1 -0
  334. package/dist/routing/model-routing-resolver.d.ts +48 -0
  335. package/dist/routing/model-routing-resolver.d.ts.map +1 -0
  336. package/dist/routing/model-routing-resolver.js +105 -0
  337. package/dist/routing/model-routing-resolver.js.map +1 -0
  338. package/dist/routing/model-tier.d.ts +21 -0
  339. package/dist/routing/model-tier.d.ts.map +1 -0
  340. package/dist/routing/model-tier.js +34 -0
  341. package/dist/routing/model-tier.js.map +1 -0
  342. package/dist/routing/provider-status.d.ts +99 -0
  343. package/dist/routing/provider-status.d.ts.map +1 -0
  344. package/dist/routing/provider-status.js +163 -0
  345. package/dist/routing/provider-status.js.map +1 -0
  346. package/dist/routing/routing-decision.d.ts +127 -0
  347. package/dist/routing/routing-decision.d.ts.map +1 -0
  348. package/dist/routing/routing-decision.js +111 -0
  349. package/dist/routing/routing-decision.js.map +1 -0
  350. package/dist/routing/routing-engine-impl.d.ts +132 -0
  351. package/dist/routing/routing-engine-impl.d.ts.map +1 -0
  352. package/dist/routing/routing-engine-impl.js +450 -0
  353. package/dist/routing/routing-engine-impl.js.map +1 -0
  354. package/dist/routing/routing-engine.d.ts +83 -0
  355. package/dist/routing/routing-engine.d.ts.map +1 -0
  356. package/dist/routing/routing-engine.js +24 -0
  357. package/dist/routing/routing-engine.js.map +1 -0
  358. package/dist/routing/routing-policy.d.ts +138 -0
  359. package/dist/routing/routing-policy.d.ts.map +1 -0
  360. package/dist/routing/routing-policy.js +159 -0
  361. package/dist/routing/routing-policy.js.map +1 -0
  362. package/dist/routing/routing-recommender.d.ts +60 -0
  363. package/dist/routing/routing-recommender.d.ts.map +1 -0
  364. package/dist/routing/routing-recommender.js +209 -0
  365. package/dist/routing/routing-recommender.js.map +1 -0
  366. package/dist/routing/routing-telemetry.d.ts +36 -0
  367. package/dist/routing/routing-telemetry.d.ts.map +1 -0
  368. package/dist/routing/routing-telemetry.js +39 -0
  369. package/dist/routing/routing-telemetry.js.map +1 -0
  370. package/dist/routing/routing-token-accumulator.d.ts +68 -0
  371. package/dist/routing/routing-token-accumulator.d.ts.map +1 -0
  372. package/dist/routing/routing-token-accumulator.js +111 -0
  373. package/dist/routing/routing-token-accumulator.js.map +1 -0
  374. package/dist/routing/routing-tuner.d.ts +69 -0
  375. package/dist/routing/routing-tuner.d.ts.map +1 -0
  376. package/dist/routing/routing-tuner.js +217 -0
  377. package/dist/routing/routing-tuner.js.map +1 -0
  378. package/dist/routing/types.d.ts +152 -0
  379. package/dist/routing/types.d.ts.map +1 -0
  380. package/dist/routing/types.js +13 -0
  381. package/dist/routing/types.js.map +1 -0
  382. package/dist/supervisor/analysis.d.ts +178 -0
  383. package/dist/supervisor/analysis.d.ts.map +1 -0
  384. package/dist/supervisor/analysis.js +420 -0
  385. package/dist/supervisor/analysis.js.map +1 -0
  386. package/dist/supervisor/experimenter.d.ts +118 -0
  387. package/dist/supervisor/experimenter.d.ts.map +1 -0
  388. package/dist/supervisor/experimenter.js +493 -0
  389. package/dist/supervisor/experimenter.js.map +1 -0
  390. package/dist/supervisor/index.d.ts +13 -0
  391. package/dist/supervisor/index.d.ts.map +1 -0
  392. package/dist/supervisor/index.js +11 -0
  393. package/dist/supervisor/index.js.map +1 -0
  394. package/dist/telemetry/batch-buffer.d.ts +53 -0
  395. package/dist/telemetry/batch-buffer.d.ts.map +1 -0
  396. package/dist/telemetry/batch-buffer.js +83 -0
  397. package/dist/telemetry/batch-buffer.js.map +1 -0
  398. package/dist/telemetry/categorizer.d.ts +65 -0
  399. package/dist/telemetry/categorizer.d.ts.map +1 -0
  400. package/dist/telemetry/categorizer.js +338 -0
  401. package/dist/telemetry/categorizer.js.map +1 -0
  402. package/dist/telemetry/consumer-analyzer.d.ts +53 -0
  403. package/dist/telemetry/consumer-analyzer.d.ts.map +1 -0
  404. package/dist/telemetry/consumer-analyzer.js +182 -0
  405. package/dist/telemetry/consumer-analyzer.js.map +1 -0
  406. package/dist/telemetry/cost-table.d.ts +36 -0
  407. package/dist/telemetry/cost-table.d.ts.map +1 -0
  408. package/dist/telemetry/cost-table.js +127 -0
  409. package/dist/telemetry/cost-table.js.map +1 -0
  410. package/dist/telemetry/efficiency-scorer.d.ts +103 -0
  411. package/dist/telemetry/efficiency-scorer.d.ts.map +1 -0
  412. package/dist/telemetry/efficiency-scorer.js +311 -0
  413. package/dist/telemetry/efficiency-scorer.js.map +1 -0
  414. package/dist/telemetry/index.d.ts +28 -0
  415. package/dist/telemetry/index.d.ts.map +1 -0
  416. package/dist/telemetry/index.js +37 -0
  417. package/dist/telemetry/index.js.map +1 -0
  418. package/dist/telemetry/ingestion-server.d.ts +99 -0
  419. package/dist/telemetry/ingestion-server.d.ts.map +1 -0
  420. package/dist/telemetry/ingestion-server.js +315 -0
  421. package/dist/telemetry/ingestion-server.js.map +1 -0
  422. package/dist/telemetry/log-turn-analyzer.d.ts +35 -0
  423. package/dist/telemetry/log-turn-analyzer.d.ts.map +1 -0
  424. package/dist/telemetry/log-turn-analyzer.js +132 -0
  425. package/dist/telemetry/log-turn-analyzer.js.map +1 -0
  426. package/dist/telemetry/normalizer.d.ts +43 -0
  427. package/dist/telemetry/normalizer.d.ts.map +1 -0
  428. package/dist/telemetry/normalizer.js +320 -0
  429. package/dist/telemetry/normalizer.js.map +1 -0
  430. package/dist/telemetry/recommender.d.ts +116 -0
  431. package/dist/telemetry/recommender.d.ts.map +1 -0
  432. package/dist/telemetry/recommender.js +532 -0
  433. package/dist/telemetry/recommender.js.map +1 -0
  434. package/dist/telemetry/source-detector.d.ts +19 -0
  435. package/dist/telemetry/source-detector.d.ts.map +1 -0
  436. package/dist/telemetry/source-detector.js +73 -0
  437. package/dist/telemetry/source-detector.js.map +1 -0
  438. package/dist/telemetry/task-baselines.d.ts +30 -0
  439. package/dist/telemetry/task-baselines.d.ts.map +1 -0
  440. package/dist/telemetry/task-baselines.js +44 -0
  441. package/dist/telemetry/task-baselines.js.map +1 -0
  442. package/dist/telemetry/telemetry-pipeline.d.ts +122 -0
  443. package/dist/telemetry/telemetry-pipeline.d.ts.map +1 -0
  444. package/dist/telemetry/telemetry-pipeline.js +349 -0
  445. package/dist/telemetry/telemetry-pipeline.js.map +1 -0
  446. package/dist/telemetry/timestamp-normalizer.d.ts +32 -0
  447. package/dist/telemetry/timestamp-normalizer.d.ts.map +1 -0
  448. package/dist/telemetry/timestamp-normalizer.js +133 -0
  449. package/dist/telemetry/timestamp-normalizer.js.map +1 -0
  450. package/dist/telemetry/token-extractor.d.ts +57 -0
  451. package/dist/telemetry/token-extractor.d.ts.map +1 -0
  452. package/dist/telemetry/token-extractor.js +200 -0
  453. package/dist/telemetry/token-extractor.js.map +1 -0
  454. package/dist/telemetry/turn-analyzer.d.ts +34 -0
  455. package/dist/telemetry/turn-analyzer.d.ts.map +1 -0
  456. package/dist/telemetry/turn-analyzer.js +101 -0
  457. package/dist/telemetry/turn-analyzer.js.map +1 -0
  458. package/dist/telemetry/types.d.ts +456 -0
  459. package/dist/telemetry/types.d.ts.map +1 -0
  460. package/dist/telemetry/types.js +186 -0
  461. package/dist/telemetry/types.js.map +1 -0
  462. package/dist/types.d.ts +80 -0
  463. package/dist/types.d.ts.map +1 -0
  464. package/dist/types.js +6 -0
  465. package/dist/types.js.map +1 -0
  466. package/dist/version-manager/index.d.ts +11 -0
  467. package/dist/version-manager/index.d.ts.map +1 -0
  468. package/dist/version-manager/index.js +8 -0
  469. package/dist/version-manager/index.js.map +1 -0
  470. package/dist/version-manager/update-checker.d.ts +44 -0
  471. package/dist/version-manager/update-checker.d.ts.map +1 -0
  472. package/dist/version-manager/update-checker.js +171 -0
  473. package/dist/version-manager/update-checker.js.map +1 -0
  474. package/dist/version-manager/version-cache.d.ts +42 -0
  475. package/dist/version-manager/version-cache.d.ts.map +1 -0
  476. package/dist/version-manager/version-cache.js +69 -0
  477. package/dist/version-manager/version-cache.js.map +1 -0
  478. package/dist/version-manager/version-manager-impl.d.ts +81 -0
  479. package/dist/version-manager/version-manager-impl.d.ts.map +1 -0
  480. package/dist/version-manager/version-manager-impl.js +223 -0
  481. package/dist/version-manager/version-manager-impl.js.map +1 -0
  482. package/dist/version-manager/version-manager.d.ts +70 -0
  483. package/dist/version-manager/version-manager.d.ts.map +1 -0
  484. package/dist/version-manager/version-manager.js +8 -0
  485. package/dist/version-manager/version-manager.js.map +1 -0
  486. package/package.json +27 -0
@@ -0,0 +1,101 @@
1
+ /**
2
+ * AdapterRegistry — central registry for WorkerAdapter instances
3
+ *
4
+ * Discovers, health-checks, and stores all available CLI agent adapters.
5
+ * Unhealthy adapters are reported but do not block system startup.
6
+ */
7
+ import { ClaudeCodeAdapter } from './claude-adapter.js';
8
+ import { CodexCLIAdapter } from './codex-adapter.js';
9
+ import { GeminiCLIAdapter } from './gemini-adapter.js';
10
+ /**
11
+ * AdapterRegistry manages the lifecycle of WorkerAdapter instances.
12
+ *
13
+ * Usage:
14
+ * ```typescript
15
+ * const registry = new AdapterRegistry()
16
+ * const report = await registry.discoverAndRegister()
17
+ * const claude = registry.get('claude-code')
18
+ * ```
19
+ */
20
+ export class AdapterRegistry {
21
+ _adapters = new Map();
22
+ /**
23
+ * Register an adapter by its id.
24
+ * Overwrites any existing adapter with the same id.
25
+ */
26
+ register(adapter) {
27
+ this._adapters.set(adapter.id, adapter);
28
+ }
29
+ /**
30
+ * Retrieve a registered adapter by id.
31
+ * @returns The adapter, or undefined if not registered
32
+ */
33
+ get(id) {
34
+ return this._adapters.get(id);
35
+ }
36
+ /**
37
+ * Return all registered adapters as an array.
38
+ */
39
+ getAll() {
40
+ return Array.from(this._adapters.values());
41
+ }
42
+ /**
43
+ * Return all registered adapters that support plan generation.
44
+ */
45
+ getPlanningCapable() {
46
+ return this.getAll().filter((adapter) => adapter.getCapabilities().supportsPlanGeneration);
47
+ }
48
+ /**
49
+ * Instantiate all built-in adapters, run health checks sequentially,
50
+ * and register those that pass.
51
+ *
52
+ * Failed adapters are included in the report but do NOT prevent startup.
53
+ *
54
+ * @returns Discovery report with per-adapter results
55
+ */
56
+ async discoverAndRegister() {
57
+ const builtInAdapters = [
58
+ new ClaudeCodeAdapter(),
59
+ new CodexCLIAdapter(),
60
+ new GeminiCLIAdapter(),
61
+ ];
62
+ const results = [];
63
+ let registeredCount = 0;
64
+ let failedCount = 0;
65
+ for (const adapter of builtInAdapters) {
66
+ let healthResult;
67
+ try {
68
+ healthResult = await adapter.healthCheck();
69
+ }
70
+ catch (err) {
71
+ // Catch unexpected errors during health check — adapter should not throw
72
+ const message = err instanceof Error ? err.message : String(err);
73
+ healthResult = {
74
+ healthy: false,
75
+ error: `Unexpected error during health check: ${message}`,
76
+ supportsHeadless: false,
77
+ };
78
+ }
79
+ const registered = healthResult.healthy;
80
+ if (registered) {
81
+ this.register(adapter);
82
+ registeredCount++;
83
+ }
84
+ else {
85
+ failedCount++;
86
+ }
87
+ results.push({
88
+ adapterId: adapter.id,
89
+ displayName: adapter.displayName,
90
+ healthResult,
91
+ registered,
92
+ });
93
+ }
94
+ return {
95
+ registeredCount,
96
+ failedCount,
97
+ results,
98
+ };
99
+ }
100
+ }
101
+ //# sourceMappingURL=adapter-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-registry.js","sourceRoot":"","sources":["../../src/adapters/adapter-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;;;;;GASG;AACH,MAAM,OAAO,eAAe;IACT,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAA;IAE9D;;;OAGG;IACH,QAAQ,CAAC,OAAsB;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,EAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CACzB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,sBAAsB,CAC9D,CAAA;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,eAAe,GAAoB;YACvC,IAAI,iBAAiB,EAAE;YACvB,IAAI,eAAe,EAAE;YACrB,IAAI,gBAAgB,EAAE;SACvB,CAAA;QAED,MAAM,OAAO,GAA6B,EAAE,CAAA;QAC5C,IAAI,eAAe,GAAG,CAAC,CAAA;QACvB,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,YAAiC,CAAA;YAErC,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAA;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,yEAAyE;gBACzE,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChE,YAAY,GAAG;oBACb,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,yCAAyC,OAAO,EAAE;oBACzD,gBAAgB,EAAE,KAAK;iBACxB,CAAA;YACH,CAAC;YAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAA;YACvC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACtB,eAAe,EAAE,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,WAAW,EAAE,CAAA;YACf,CAAC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY;gBACZ,UAAU;aACX,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,eAAe;YACf,WAAW;YACX,OAAO;SACR,CAAA;IACH,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Claude Code adapter
3
+ *
4
+ * Implements WorkerAdapter for the Claude Code CLI agent.
5
+ * Binary: `claude`
6
+ * Output format: JSON via `--output-format json`
7
+ */
8
+ import type { AgentId } from '../types.js';
9
+ import type { WorkerAdapter } from './worker-adapter.js';
10
+ import type { SpawnCommand, AdapterOptions, AdapterCapabilities, AdapterHealthResult, TaskResult, TokenEstimate, PlanRequest, PlanParseResult } from './types.js';
11
+ import type { ILogger } from '../dispatch/types.js';
12
+ /**
13
+ * Adapter for the Claude Code CLI agent.
14
+ *
15
+ * Capabilities: JSON output, streaming, both billing modes, plan generation.
16
+ * Health check: runs `claude --version` to verify install.
17
+ * Billing detection: detects subscription vs API via version output or env.
18
+ */
19
+ export declare class ClaudeCodeAdapter implements WorkerAdapter {
20
+ readonly id: AgentId;
21
+ readonly displayName = "Claude Code";
22
+ readonly adapterVersion = "1.0.0";
23
+ private readonly _logger;
24
+ constructor(logger?: ILogger);
25
+ /**
26
+ * Verify the `claude` binary is installed and responsive.
27
+ * Detects subscription vs API billing mode.
28
+ */
29
+ healthCheck(): Promise<AdapterHealthResult>;
30
+ /**
31
+ * Build spawn command for a coding task.
32
+ * Uses: `claude -p --model <model> --dangerously-skip-permissions --system-prompt <minimal>`
33
+ * Prompt is delivered via stdin (not CLI arg) to avoid E2BIG on large prompts.
34
+ */
35
+ buildCommand(prompt: string, options: AdapterOptions): SpawnCommand;
36
+ /**
37
+ * Build spawn command for plan generation.
38
+ */
39
+ buildPlanningCommand(request: PlanRequest, options: AdapterOptions): SpawnCommand;
40
+ /**
41
+ * Parse Claude Code JSON output into a TaskResult.
42
+ */
43
+ parseOutput(stdout: string, stderr: string, exitCode: number): TaskResult;
44
+ /**
45
+ * Parse Claude plan generation output.
46
+ */
47
+ parsePlanOutput(stdout: string, stderr: string, exitCode: number): PlanParseResult;
48
+ /**
49
+ * Estimate token count using character-based heuristic.
50
+ */
51
+ estimateTokens(prompt: string): TokenEstimate;
52
+ /**
53
+ * Return Claude Code capabilities.
54
+ */
55
+ getCapabilities(): AdapterCapabilities;
56
+ private _detectBillingModes;
57
+ private _buildPlanningPrompt;
58
+ }
59
+ //# sourceMappingURL=claude-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,aAAa,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EAEhB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAkDnD;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAgB;IACpC,QAAQ,CAAC,WAAW,iBAAgB;IACpC,QAAQ,CAAC,cAAc,WAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,CAAC,EAAE,OAAO;IAK5B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAgCjD;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY;IA0FnE;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY;IA8BjF;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAuDzE;;OAEG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,eAAe;IAqDlB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAU7C;;OAEG;IACH,eAAe,IAAI,mBAAmB;IA6BtC,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,oBAAoB;CAgB7B"}
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Claude Code adapter
3
+ *
4
+ * Implements WorkerAdapter for the Claude Code CLI agent.
5
+ * Binary: `claude`
6
+ * Output format: JSON via `--output-format json`
7
+ */
8
+ import { exec } from 'node:child_process';
9
+ import { promisify } from 'node:util';
10
+ const execAsync = promisify(exec);
11
+ /** Default model used when none is specified */
12
+ const DEFAULT_MODEL = 'claude-sonnet-4-6';
13
+ /** Approximate characters per token for estimation */
14
+ const CHARS_PER_TOKEN = 3;
15
+ /** Estimated output token multiplier relative to input */
16
+ const OUTPUT_RATIO = 0.5;
17
+ /**
18
+ * Base system prompt for all Claude Code invocations.
19
+ * Replaces CLAUDE.md and auto-memory context so the subprocess does not
20
+ * re-read the orchestrator's own CLAUDE.md instructions.
21
+ */
22
+ const BASE_SYSTEM_PROMPT = `You are an autonomous coding agent implementing software requirements. ` +
23
+ `Follow the task description precisely, write clean and maintainable code, ` +
24
+ `and ensure all tests pass. Work methodically through each task in order.`;
25
+ /** Strip markdown code fences from LLM output (e.g. ```json ... ```) */
26
+ function stripCodeFences(raw) {
27
+ return raw.trim().replace(/^```(?:json)?\s*/i, '').replace(/\s*```\s*$/, '').trim();
28
+ }
29
+ /**
30
+ * Adapter for the Claude Code CLI agent.
31
+ *
32
+ * Capabilities: JSON output, streaming, both billing modes, plan generation.
33
+ * Health check: runs `claude --version` to verify install.
34
+ * Billing detection: detects subscription vs API via version output or env.
35
+ */
36
+ export class ClaudeCodeAdapter {
37
+ id = 'claude-code';
38
+ displayName = 'Claude Code';
39
+ adapterVersion = '1.0.0';
40
+ _logger;
41
+ constructor(logger) {
42
+ // Default to console if no logger is injected
43
+ this._logger = logger ?? console;
44
+ }
45
+ /**
46
+ * Verify the `claude` binary is installed and responsive.
47
+ * Detects subscription vs API billing mode.
48
+ */
49
+ async healthCheck() {
50
+ try {
51
+ const { stdout } = await execAsync('claude --version', { timeout: 10_000 });
52
+ const output = stdout.trim();
53
+ const detectedBillingModes = this._detectBillingModes(output);
54
+ let cliPath;
55
+ try {
56
+ const whichResult = await execAsync('which claude', { timeout: 5_000 });
57
+ cliPath = whichResult.stdout.trim();
58
+ }
59
+ catch {
60
+ // which is available on macOS and Linux (target platforms)
61
+ }
62
+ return {
63
+ healthy: true,
64
+ version: output,
65
+ ...(cliPath !== undefined ? { cliPath } : {}),
66
+ detectedBillingModes,
67
+ supportsHeadless: true,
68
+ };
69
+ }
70
+ catch (err) {
71
+ const message = err instanceof Error ? err.message : String(err);
72
+ return {
73
+ healthy: false,
74
+ error: `Claude CLI not available: ${message}`,
75
+ supportsHeadless: false,
76
+ };
77
+ }
78
+ }
79
+ /**
80
+ * Build spawn command for a coding task.
81
+ * Uses: `claude -p --model <model> --dangerously-skip-permissions --system-prompt <minimal>`
82
+ * Prompt is delivered via stdin (not CLI arg) to avoid E2BIG on large prompts.
83
+ */
84
+ buildCommand(prompt, options) {
85
+ const model = options.model ?? DEFAULT_MODEL;
86
+ // Do NOT use --output-format json: it wraps Claude's response in a JSON event
87
+ // envelope (type/result/usage), which prevents extractYamlBlock from finding
88
+ // the YAML result block in the raw stdout. Raw text output is required.
89
+ //
90
+ // --dangerously-skip-permissions: required for headless automated pipeline use.
91
+ // Without this, Claude in -p mode refuses to write files, asking for permission.
92
+ //
93
+ // --system-prompt: replaces CLAUDE.md and auto-memory context so the subprocess
94
+ // does not re-read the orchestrator's own CLAUDE.md instructions.
95
+ const args = [
96
+ '-p',
97
+ '--model',
98
+ model,
99
+ '--dangerously-skip-permissions',
100
+ ];
101
+ if (options.maxTurns !== undefined) {
102
+ args.push('--max-turns', String(options.maxTurns));
103
+ }
104
+ if (options.maxContextTokens !== undefined) {
105
+ args.push('--max-context-tokens', String(options.maxContextTokens));
106
+ }
107
+ if (options.additionalFlags && options.additionalFlags.length > 0) {
108
+ args.push(...options.additionalFlags);
109
+ }
110
+ // Build system prompt: base prompt + optional optimization directives
111
+ const systemPromptParts = [BASE_SYSTEM_PROMPT];
112
+ if (options.optimizationDirectives) {
113
+ systemPromptParts.push(`\n\n## Optimization Directives\n${options.optimizationDirectives}`);
114
+ }
115
+ args.push('--system-prompt', systemPromptParts.join(''));
116
+ // Build environment entries
117
+ const envEntries = {};
118
+ if (options.billingMode === 'api' && options.apiKey) {
119
+ envEntries.ANTHROPIC_API_KEY = options.apiKey;
120
+ }
121
+ if (options.otlpEndpoint) {
122
+ envEntries.CLAUDE_CODE_ENABLE_TELEMETRY = '1';
123
+ envEntries.OTEL_LOGS_EXPORTER = 'otlp';
124
+ envEntries.OTEL_METRICS_EXPORTER = 'otlp';
125
+ envEntries.OTEL_LOG_TOOL_DETAILS = '1';
126
+ envEntries.OTEL_METRIC_EXPORT_INTERVAL = '10000';
127
+ envEntries.OTEL_EXPORTER_OTLP_TIMEOUT = '5000';
128
+ envEntries.OTEL_EXPORTER_OTLP_ENDPOINT = options.otlpEndpoint;
129
+ envEntries.OTEL_EXPORTER_OTLP_PROTOCOL = 'http/json';
130
+ }
131
+ if (options.storyKey) {
132
+ const existing = envEntries.OTEL_RESOURCE_ATTRIBUTES ?? '';
133
+ const separator = existing.length > 0 ? ',' : '';
134
+ envEntries.OTEL_RESOURCE_ATTRIBUTES = `${existing}${separator}substrate.story_key=${options.storyKey}`;
135
+ }
136
+ if (options.taskType) {
137
+ const existing = envEntries.OTEL_RESOURCE_ATTRIBUTES ?? '';
138
+ const separator = existing.length > 0 ? ',' : '';
139
+ envEntries.OTEL_RESOURCE_ATTRIBUTES = `${existing}${separator}substrate.task_type=${options.taskType}`;
140
+ }
141
+ if (options.dispatchId) {
142
+ const existing = envEntries.OTEL_RESOURCE_ATTRIBUTES ?? '';
143
+ const separator = existing.length > 0 ? ',' : '';
144
+ envEntries.OTEL_RESOURCE_ATTRIBUTES = `${existing}${separator}substrate.dispatch_id=${options.dispatchId}`;
145
+ }
146
+ // Build unsetEnvKeys: always unset CLAUDECODE; also unset ANTHROPIC_API_KEY
147
+ // when not in API billing mode to prevent accidental credential leaks.
148
+ const unsetEnvKeys = ['CLAUDECODE'];
149
+ if (options.billingMode !== 'api') {
150
+ unsetEnvKeys.push('ANTHROPIC_API_KEY');
151
+ }
152
+ return {
153
+ binary: 'claude',
154
+ args,
155
+ env: envEntries,
156
+ unsetEnvKeys,
157
+ cwd: options.worktreePath,
158
+ stdin: prompt,
159
+ };
160
+ }
161
+ /**
162
+ * Build spawn command for plan generation.
163
+ */
164
+ buildPlanningCommand(request, options) {
165
+ const model = options.model ?? DEFAULT_MODEL;
166
+ const planningPrompt = this._buildPlanningPrompt(request);
167
+ // Prompt delivered via stdin (not CLI args) to avoid E2BIG on large prompts.
168
+ const args = [
169
+ '-p',
170
+ '--model',
171
+ model,
172
+ '--dangerously-skip-permissions',
173
+ ];
174
+ if (options.additionalFlags && options.additionalFlags.length > 0) {
175
+ args.push(...options.additionalFlags);
176
+ }
177
+ const envEntries = {};
178
+ if (options.billingMode === 'api' && options.apiKey) {
179
+ envEntries.ANTHROPIC_API_KEY = options.apiKey;
180
+ }
181
+ return {
182
+ binary: 'claude',
183
+ args,
184
+ env: envEntries,
185
+ cwd: options.worktreePath,
186
+ stdin: planningPrompt,
187
+ };
188
+ }
189
+ /**
190
+ * Parse Claude Code JSON output into a TaskResult.
191
+ */
192
+ parseOutput(stdout, stderr, exitCode) {
193
+ if (exitCode !== 0) {
194
+ return {
195
+ success: false,
196
+ output: stdout,
197
+ error: stderr || `Process exited with code ${String(exitCode)}`,
198
+ exitCode,
199
+ };
200
+ }
201
+ // Guard against empty stdout — treat as non-JSON fallback
202
+ if (stdout.trim() === '') {
203
+ return {
204
+ success: true,
205
+ output: '',
206
+ exitCode,
207
+ };
208
+ }
209
+ try {
210
+ const parsed = JSON.parse(stdout.trim());
211
+ const success = parsed.status === 'completed' ||
212
+ parsed.status === 'success' ||
213
+ (parsed.status === undefined && !parsed.error);
214
+ const inputTokens = parsed.metadata?.tokensUsed?.input ?? 0;
215
+ const outputTokens = parsed.metadata?.tokensUsed?.output ?? 0;
216
+ const hasTokens = inputTokens > 0 || outputTokens > 0;
217
+ const tokensUsed = hasTokens
218
+ ? { input: inputTokens, output: outputTokens, total: inputTokens + outputTokens }
219
+ : undefined;
220
+ const executionTime = parsed.metadata?.executionTime;
221
+ return {
222
+ success: success && !parsed.error,
223
+ output: parsed.output ?? stdout,
224
+ ...(parsed.error ? { error: parsed.error } : {}),
225
+ exitCode,
226
+ metadata: {
227
+ ...(executionTime !== undefined ? { executionTime } : {}),
228
+ ...(tokensUsed !== undefined ? { tokensUsed } : {}),
229
+ },
230
+ };
231
+ }
232
+ catch {
233
+ return {
234
+ success: true,
235
+ output: stdout,
236
+ exitCode,
237
+ };
238
+ }
239
+ }
240
+ /**
241
+ * Parse Claude plan generation output.
242
+ */
243
+ parsePlanOutput(stdout, stderr, exitCode) {
244
+ if (exitCode !== 0) {
245
+ return {
246
+ success: false,
247
+ tasks: [],
248
+ error: stderr || `Process exited with code ${String(exitCode)}`,
249
+ rawOutput: stdout,
250
+ };
251
+ }
252
+ if (stdout.trim() === '') {
253
+ return {
254
+ success: false,
255
+ tasks: [],
256
+ error: 'Empty output from plan generation',
257
+ rawOutput: stdout,
258
+ };
259
+ }
260
+ try {
261
+ const parsed = JSON.parse(stripCodeFences(stdout));
262
+ if (!Array.isArray(parsed.tasks)) {
263
+ return {
264
+ success: false,
265
+ tasks: [],
266
+ error: 'Plan output missing tasks array',
267
+ rawOutput: stdout,
268
+ };
269
+ }
270
+ const tasks = parsed.tasks.map((t) => ({
271
+ title: t.title ?? 'Untitled task',
272
+ description: t.description ?? '',
273
+ ...(t.complexity !== undefined ? { complexity: t.complexity } : {}),
274
+ ...(t.dependencies !== undefined ? { dependencies: t.dependencies } : {}),
275
+ }));
276
+ return {
277
+ success: true,
278
+ tasks,
279
+ rawOutput: stdout,
280
+ };
281
+ }
282
+ catch {
283
+ return {
284
+ success: false,
285
+ tasks: [],
286
+ error: 'Failed to parse Claude plan output as JSON',
287
+ rawOutput: stdout,
288
+ };
289
+ }
290
+ }
291
+ /**
292
+ * Estimate token count using character-based heuristic.
293
+ */
294
+ estimateTokens(prompt) {
295
+ const input = Math.ceil(prompt.length / CHARS_PER_TOKEN);
296
+ const output = Math.ceil(input * OUTPUT_RATIO);
297
+ return {
298
+ input,
299
+ output,
300
+ total: input + output,
301
+ };
302
+ }
303
+ /**
304
+ * Return Claude Code capabilities.
305
+ */
306
+ getCapabilities() {
307
+ return {
308
+ supportsJsonOutput: true,
309
+ supportsStreaming: true,
310
+ supportsSubscriptionBilling: true,
311
+ supportsApiBilling: true,
312
+ supportsPlanGeneration: true,
313
+ maxContextTokens: 200_000,
314
+ supportedTaskTypes: [
315
+ 'code',
316
+ 'refactor',
317
+ 'test',
318
+ 'review',
319
+ 'debug',
320
+ 'document',
321
+ 'analyze',
322
+ ],
323
+ supportedLanguages: ['*'],
324
+ supportsSystemPrompt: true,
325
+ supportsOtlpExport: true,
326
+ requiresYamlSuffix: false,
327
+ defaultMaxReviewCycles: 2,
328
+ };
329
+ }
330
+ // ---------------------------------------------------------------------------
331
+ // Private helpers
332
+ // ---------------------------------------------------------------------------
333
+ _detectBillingModes(versionOutput) {
334
+ // 1. If ADT_BILLING_MODE is explicitly set, respect it
335
+ const explicit = process.env.ADT_BILLING_MODE;
336
+ if (explicit === 'subscription' || explicit === 'api' || explicit === 'free') {
337
+ return [explicit];
338
+ }
339
+ // 2. Detect available billing modes
340
+ const modes = [];
341
+ if (process.env.ANTHROPIC_API_KEY) {
342
+ modes.push('api');
343
+ }
344
+ if (versionOutput.toLowerCase().includes('subscription')) {
345
+ modes.push('subscription');
346
+ }
347
+ // Claude supports both modes by default
348
+ if (modes.length === 0) {
349
+ return ['subscription', 'api'];
350
+ }
351
+ return modes;
352
+ }
353
+ _buildPlanningPrompt(request) {
354
+ const maxTasks = request.maxTasks ?? 10;
355
+ const contextSection = request.context
356
+ ? `\n\nAdditional context:\n${request.context}`
357
+ : '';
358
+ return (`Generate a detailed task plan for the following goal:\n${request.goal}${contextSection}\n\n` +
359
+ `Output a JSON object with a "tasks" array. Each task should have: ` +
360
+ `"title" (string), "description" (string), "complexity" (1-10 integer), ` +
361
+ `"dependencies" (array of task titles this depends on). ` +
362
+ `Produce at most ${String(maxTasks)} tasks. ` +
363
+ `Output ONLY raw valid JSON — no markdown, no code fences, no explanation. ` +
364
+ `Start your response with { and end with }.`);
365
+ }
366
+ }
367
+ //# sourceMappingURL=claude-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../../src/adapters/claude-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Codex CLI adapter
3
+ *
4
+ * Implements WorkerAdapter for the OpenAI Codex CLI agent.
5
+ * Binary: `codex`
6
+ * Execution: `codex exec --json` with task prompt on stdin
7
+ * Billing: Subscription (ChatGPT Plus/Pro via `codex login`) or API key
8
+ */
9
+ import type { AgentId } from '../types.js';
10
+ import type { WorkerAdapter } from './worker-adapter.js';
11
+ import type { SpawnCommand, AdapterOptions, AdapterCapabilities, AdapterHealthResult, TaskResult, TokenEstimate, PlanRequest, PlanParseResult } from './types.js';
12
+ import type { ILogger } from '../dispatch/types.js';
13
+ /**
14
+ * Adapter for the OpenAI Codex CLI agent.
15
+ *
16
+ * Codex CLI uses stdin for the prompt and outputs JSON when --json flag is used.
17
+ * Codex supports subscription billing (via `codex login`) and API key billing.
18
+ */
19
+ export declare class CodexCLIAdapter implements WorkerAdapter {
20
+ readonly id: AgentId;
21
+ readonly displayName = "Codex CLI";
22
+ readonly adapterVersion = "1.0.0";
23
+ private readonly _logger;
24
+ constructor(logger?: ILogger);
25
+ /**
26
+ * Verify the `codex` binary is installed and responsive.
27
+ */
28
+ healthCheck(): Promise<AdapterHealthResult>;
29
+ /**
30
+ * Build spawn command for a coding task.
31
+ * Uses: `codex exec` with prompt delivered via stdin.
32
+ *
33
+ * Do NOT use --json: it produces a JSONL event stream that prevents
34
+ * extractYamlBlock from finding the structured result block in stdout.
35
+ * Raw text output is required (same rationale as Claude adapter).
36
+ */
37
+ buildCommand(prompt: string, options: AdapterOptions): SpawnCommand;
38
+ /**
39
+ * Build spawn command for plan generation.
40
+ * Uses codex exec with a JSON plan generation prompt via stdin.
41
+ */
42
+ buildPlanningCommand(request: PlanRequest, options: AdapterOptions): SpawnCommand;
43
+ /**
44
+ * Parse Codex CLI output into a TaskResult.
45
+ *
46
+ * With raw text mode (no --json), stdout is the agent's direct output.
47
+ * YAML extraction happens in the dispatcher's extractYamlBlock, not here.
48
+ */
49
+ parseOutput(stdout: string, stderr: string, exitCode: number): TaskResult;
50
+ /**
51
+ * Parse Codex plan generation output.
52
+ */
53
+ parsePlanOutput(stdout: string, stderr: string, exitCode: number): PlanParseResult;
54
+ /**
55
+ * Estimate token count using character-based heuristic.
56
+ */
57
+ estimateTokens(prompt: string): TokenEstimate;
58
+ /**
59
+ * Return Codex CLI capabilities.
60
+ */
61
+ getCapabilities(): AdapterCapabilities;
62
+ private _buildPlanningPrompt;
63
+ }
64
+ //# sourceMappingURL=codex-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/codex-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,aAAa,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,eAAe,EAEhB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAyCnD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAU;IAC9B,QAAQ,CAAC,WAAW,eAAc;IAClC,QAAQ,CAAC,cAAc,WAAU;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,CAAC,EAAE,OAAO;IAK5B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IA8BjD;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY;IAuBnE;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,YAAY;IA2BjF;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAiBzE;;OAEG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,eAAe;IAsElB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa;IAU7C;;OAEG;IACH,eAAe,IAAI,mBAAmB;IA4BtC,OAAO,CAAC,oBAAoB;CAgB7B"}