@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,320 @@
1
+ /**
2
+ * TelemetryNormalizer — transforms raw OTLP payloads into normalized models.
3
+ *
4
+ * Accepts raw OTLP JSON objects (traces or logs) and returns arrays of
5
+ * `NormalizedSpan` or `NormalizedLog` objects suitable for downstream analysis.
6
+ *
7
+ * Design invariants:
8
+ * - Never throws from public methods — returns empty array on any error
9
+ * - Constructor injection of ILogger for testability
10
+ * - No external dependencies beyond built-in Node.js and internal modules
11
+ */
12
+ import { estimateCost } from './cost-table.js';
13
+ import { normalizeTimestamp } from './timestamp-normalizer.js';
14
+ import { extractTokensFromAttributes, extractTokensFromBody, mergeTokenCounts, } from './token-extractor.js';
15
+ // ---------------------------------------------------------------------------
16
+ // Helpers
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Extract a string value from an OTLP attribute array by key.
20
+ */
21
+ function getAttrString(attrs, key) {
22
+ if (!Array.isArray(attrs))
23
+ return undefined;
24
+ const entry = attrs.find((a) => a?.key === key);
25
+ if (!entry?.value)
26
+ return undefined;
27
+ return (entry.value.stringValue ??
28
+ (entry.value.intValue !== undefined ? String(entry.value.intValue) : undefined) ??
29
+ (entry.value.doubleValue !== undefined ? String(entry.value.doubleValue) : undefined));
30
+ }
31
+ /**
32
+ * Determine source from resource attributes service.name.
33
+ */
34
+ function resolveSource(resourceAttrs) {
35
+ const serviceName = getAttrString(resourceAttrs, 'service.name');
36
+ if (!serviceName)
37
+ return 'unknown';
38
+ const lower = serviceName.toLowerCase();
39
+ if (lower.includes('claude'))
40
+ return 'claude-code';
41
+ if (lower.includes('codex') || lower.includes('openai'))
42
+ return 'codex';
43
+ if (lower.includes('local'))
44
+ return 'local-llm';
45
+ return serviceName;
46
+ }
47
+ /**
48
+ * Resolve model from span attributes (tries multiple known keys).
49
+ */
50
+ function resolveModel(attrs) {
51
+ const modelKeys = [
52
+ 'gen_ai.request.model',
53
+ 'gen_ai.response.model',
54
+ 'llm.request.model',
55
+ 'anthropic.model',
56
+ 'openai.model',
57
+ 'model',
58
+ ];
59
+ for (const key of modelKeys) {
60
+ const val = getAttrString(attrs, key);
61
+ if (val)
62
+ return val;
63
+ }
64
+ return undefined;
65
+ }
66
+ /**
67
+ * Resolve provider from span attributes.
68
+ */
69
+ function resolveProvider(attrs, source) {
70
+ const providerVal = getAttrString(attrs, 'gen_ai.system');
71
+ if (providerVal)
72
+ return providerVal;
73
+ if (source === 'claude-code')
74
+ return 'anthropic';
75
+ if (source === 'codex')
76
+ return 'openai';
77
+ return undefined;
78
+ }
79
+ /**
80
+ * Extract the body string from a log record body field.
81
+ */
82
+ function extractBodyString(body) {
83
+ if (!body)
84
+ return undefined;
85
+ if (typeof body === 'string')
86
+ return body;
87
+ if (typeof body === 'object' && body.stringValue)
88
+ return body.stringValue;
89
+ return undefined;
90
+ }
91
+ /**
92
+ * Generate a unique log record ID.
93
+ */
94
+ let _logIdCounter = 0;
95
+ function generateLogId() {
96
+ return `log-${Date.now()}-${++_logIdCounter}`;
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // TelemetryNormalizer
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Transforms raw OTLP payloads into normalized telemetry models.
103
+ *
104
+ * Inject an `ILogger` for structured logging.
105
+ * All public methods return empty arrays on any error — never throw.
106
+ */
107
+ export class TelemetryNormalizer {
108
+ _logger;
109
+ constructor(logger) {
110
+ this._logger = logger;
111
+ }
112
+ // -------------------------------------------------------------------------
113
+ // normalizeSpan
114
+ // -------------------------------------------------------------------------
115
+ /**
116
+ * Normalize a raw OTLP trace payload into an array of `NormalizedSpan`.
117
+ *
118
+ * @param raw - Raw OTLP trace payload (resourceSpans structure)
119
+ * @returns Array of normalized spans; empty on error or empty input
120
+ */
121
+ normalizeSpan(raw) {
122
+ try {
123
+ return this._normalizeSpanInternal(raw);
124
+ }
125
+ catch (err) {
126
+ this._logger.warn({ err }, 'TelemetryNormalizer.normalizeSpan: unexpected error');
127
+ return [];
128
+ }
129
+ }
130
+ _normalizeSpanInternal(raw) {
131
+ if (!raw || typeof raw !== 'object')
132
+ return [];
133
+ const payload = raw;
134
+ if (!Array.isArray(payload.resourceSpans))
135
+ return [];
136
+ const results = [];
137
+ for (const resourceSpan of payload.resourceSpans) {
138
+ if (!resourceSpan)
139
+ continue;
140
+ const resourceAttrs = resourceSpan.resource?.attributes;
141
+ const source = resolveSource(resourceAttrs);
142
+ if (!Array.isArray(resourceSpan.scopeSpans))
143
+ continue;
144
+ for (const scopeSpan of resourceSpan.scopeSpans) {
145
+ if (!Array.isArray(scopeSpan?.spans))
146
+ continue;
147
+ for (const span of scopeSpan.spans) {
148
+ if (!span)
149
+ continue;
150
+ try {
151
+ const normalized = this._normalizeOneSpan(span, resourceAttrs, source);
152
+ results.push(normalized);
153
+ }
154
+ catch (err) {
155
+ this._logger.warn({ err, spanId: span.spanId }, 'Failed to normalize span — skipping');
156
+ }
157
+ }
158
+ }
159
+ }
160
+ return results;
161
+ }
162
+ _normalizeOneSpan(span, resourceAttrs, source) {
163
+ const spanId = span.spanId ?? '';
164
+ const traceId = span.traceId ?? '';
165
+ const name = span.name ?? '';
166
+ const model = resolveModel(span.attributes) ?? resolveModel(resourceAttrs);
167
+ const provider = resolveProvider(span.attributes, source);
168
+ const operationName = getAttrString(span.attributes, 'gen_ai.operation.name') ?? name;
169
+ // Timestamps
170
+ const startTime = normalizeTimestamp(span.startTimeUnixNano);
171
+ const endTime = span.endTimeUnixNano ? normalizeTimestamp(span.endTimeUnixNano) : undefined;
172
+ const durationMs = endTime !== undefined ? endTime - startTime : 0;
173
+ // Token extraction
174
+ const fromAttrs = extractTokensFromAttributes(span.attributes);
175
+ const bodyStr = getAttrString(span.attributes, 'llm.response.body') ??
176
+ getAttrString(span.attributes, 'gen_ai.response.body');
177
+ const fromBody = extractTokensFromBody(bodyStr);
178
+ const tokens = mergeTokenCounts(fromAttrs, fromBody);
179
+ // Story key
180
+ const storyKey = getAttrString(span.attributes, 'substrate.story_key') ??
181
+ getAttrString(resourceAttrs, 'substrate.story_key');
182
+ // Cost
183
+ const costUsd = model ? estimateCost(model, tokens) : 0;
184
+ // Flatten attributes to record
185
+ const attributesRecord = {};
186
+ if (Array.isArray(span.attributes)) {
187
+ for (const attr of span.attributes) {
188
+ if (attr?.key) {
189
+ attributesRecord[attr.key] =
190
+ attr.value?.stringValue ??
191
+ attr.value?.intValue ??
192
+ attr.value?.doubleValue ??
193
+ attr.value?.boolValue;
194
+ }
195
+ }
196
+ }
197
+ return {
198
+ spanId,
199
+ traceId,
200
+ ...(span.parentSpanId !== undefined && { parentSpanId: span.parentSpanId }),
201
+ name,
202
+ source,
203
+ ...(model !== undefined && { model }),
204
+ ...(provider !== undefined && { provider }),
205
+ operationName,
206
+ ...(storyKey !== undefined && { storyKey }),
207
+ inputTokens: tokens.input,
208
+ outputTokens: tokens.output,
209
+ cacheReadTokens: tokens.cacheRead,
210
+ cacheCreationTokens: tokens.cacheCreation,
211
+ costUsd,
212
+ durationMs,
213
+ startTime,
214
+ ...(endTime !== undefined && { endTime }),
215
+ attributes: attributesRecord,
216
+ ...(span.events !== undefined && { events: span.events }),
217
+ };
218
+ }
219
+ // -------------------------------------------------------------------------
220
+ // normalizeLog
221
+ // -------------------------------------------------------------------------
222
+ /**
223
+ * Normalize a raw OTLP log payload into an array of `NormalizedLog`.
224
+ *
225
+ * @param raw - Raw OTLP log payload (resourceLogs structure)
226
+ * @param dispatchContext - Optional dispatch context to stamp on each log (Story 30-1)
227
+ * @returns Array of normalized logs; empty on error or empty input
228
+ */
229
+ normalizeLog(raw, dispatchContext) {
230
+ try {
231
+ return this._normalizeLogInternal(raw, dispatchContext);
232
+ }
233
+ catch (err) {
234
+ this._logger.warn({ err }, 'TelemetryNormalizer.normalizeLog: unexpected error');
235
+ return [];
236
+ }
237
+ }
238
+ _normalizeLogInternal(raw, dispatchContext) {
239
+ if (!raw || typeof raw !== 'object')
240
+ return [];
241
+ const payload = raw;
242
+ if (!Array.isArray(payload.resourceLogs))
243
+ return [];
244
+ const results = [];
245
+ for (const resourceLog of payload.resourceLogs) {
246
+ if (!resourceLog)
247
+ continue;
248
+ const resourceAttrs = resourceLog.resource?.attributes;
249
+ if (!Array.isArray(resourceLog.scopeLogs))
250
+ continue;
251
+ for (const scopeLog of resourceLog.scopeLogs) {
252
+ if (!Array.isArray(scopeLog?.logRecords))
253
+ continue;
254
+ for (const record of scopeLog.logRecords) {
255
+ if (!record)
256
+ continue;
257
+ try {
258
+ const normalized = this._normalizeOneLog(record, resourceAttrs, dispatchContext);
259
+ results.push(normalized);
260
+ }
261
+ catch (err) {
262
+ this._logger.warn({ err }, 'Failed to normalize log record — skipping');
263
+ }
264
+ }
265
+ }
266
+ }
267
+ return results;
268
+ }
269
+ _normalizeOneLog(record, resourceAttrs, dispatchContext) {
270
+ const logId = record.logRecordId ?? generateLogId();
271
+ const timestamp = normalizeTimestamp(record.timeUnixNano);
272
+ const bodyStr = extractBodyString(record.body);
273
+ // Extract from attributes
274
+ const fromAttrs = extractTokensFromAttributes(record.attributes);
275
+ const fromBody = extractTokensFromBody(bodyStr);
276
+ const tokens = mergeTokenCounts(fromAttrs, fromBody);
277
+ // Event name
278
+ const eventName = getAttrString(record.attributes, 'event.name') ??
279
+ getAttrString(record.attributes, 'gen_ai.event.name') ??
280
+ getAttrString(record.attributes, 'event_name');
281
+ // Session id
282
+ const sessionId = getAttrString(record.attributes, 'session.id') ??
283
+ getAttrString(record.attributes, 'gen_ai.session.id') ??
284
+ getAttrString(resourceAttrs, 'session.id');
285
+ // Tool name
286
+ const toolName = getAttrString(record.attributes, 'tool.name') ??
287
+ getAttrString(record.attributes, 'gen_ai.tool.name') ??
288
+ getAttrString(record.attributes, 'tool_name');
289
+ // Model
290
+ const model = resolveModel(record.attributes) ?? resolveModel(resourceAttrs);
291
+ // Story key
292
+ const storyKey = getAttrString(record.attributes, 'substrate.story_key') ??
293
+ getAttrString(resourceAttrs, 'substrate.story_key');
294
+ // Cost
295
+ const costUsd = model ? estimateCost(model, tokens) : 0;
296
+ return {
297
+ logId,
298
+ ...(record.traceId !== undefined && { traceId: record.traceId }),
299
+ ...(record.spanId !== undefined && { spanId: record.spanId }),
300
+ timestamp,
301
+ ...(record.severityText !== undefined && { severity: record.severityText }),
302
+ ...(bodyStr !== undefined && { body: bodyStr }),
303
+ ...(eventName !== undefined && { eventName }),
304
+ ...(sessionId !== undefined && { sessionId }),
305
+ ...(toolName !== undefined && { toolName }),
306
+ inputTokens: tokens.input,
307
+ outputTokens: tokens.output,
308
+ cacheReadTokens: tokens.cacheRead,
309
+ costUsd,
310
+ ...(model !== undefined && { model }),
311
+ ...(storyKey !== undefined && { storyKey }),
312
+ ...(dispatchContext !== undefined && {
313
+ taskType: dispatchContext.taskType,
314
+ phase: dispatchContext.phase,
315
+ dispatchId: dispatchContext.dispatchId,
316
+ }),
317
+ };
318
+ }
319
+ }
320
+ //# sourceMappingURL=normalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizer.js","sourceRoot":"","sources":["../../src/telemetry/normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Recommender — analyzes telemetry context and generates actionable recommendations.
3
+ *
4
+ * Implements 9 rules across three categories:
5
+ * - Consumer rules: biggest_consumers, large_file_reads, expensive_bash, repeated_tool_calls
6
+ * - Context/trend rules: context_growth_spike, growing_categories
7
+ * - Efficiency rules: cache_efficiency, per_model_comparison, cache_delta_regression
8
+ *
9
+ * Architecture constraints:
10
+ * - Pure analysis service — no DB access; caller assembles RecommenderContext
11
+ * - Constructor injection: accepts ILogger (defaults to console)
12
+ * - No Math.random() or Date.now() — all timestamps injected via context.generatedAt
13
+ * - ID generation: sha256(ruleId:storyKey:actionTarget:index) via node:crypto
14
+ *
15
+ * Migrated to @substrate-ai/core in story 41-6b.
16
+ */
17
+ import type { ILogger } from '../dispatch/types.js';
18
+ import type { Recommendation, RecommenderContext, IRecommender } from './types.js';
19
+ export declare class Recommender implements IRecommender {
20
+ private readonly _logger;
21
+ constructor(logger?: ILogger);
22
+ /**
23
+ * Run all rules against the given context and return sorted recommendations.
24
+ * Output is sorted: critical → warning → info, then by potentialSavingsTokens descending.
25
+ * No Date.now() or Math.random() is called — generatedAt comes from context.
26
+ */
27
+ analyze(context: RecommenderContext): Recommendation[];
28
+ /**
29
+ * Generate a 16-char hex ID from the sha256 of `ruleId:storyKey:actionTarget:index`.
30
+ */
31
+ private _makeId;
32
+ /**
33
+ * Map a token percentage to a severity level.
34
+ * >25% → critical, >10% → warning, ≤10% → info.
35
+ */
36
+ private _assignSeverity;
37
+ /**
38
+ * Compute total tokens across all spans. Guards against empty arrays.
39
+ */
40
+ private _totalSpanTokens;
41
+ /**
42
+ * Minimum absolute token count for a consumer to be flagged.
43
+ * Below this, the consumer is too small to be actionable regardless of percentage.
44
+ */
45
+ private static readonly MIN_SIGNIFICANT_TOKENS;
46
+ /**
47
+ * Identify top 3 token consumers (by inputTokens + outputTokens) where pct >5%
48
+ * AND absolute tokens exceed MIN_SIGNIFICANT_TOKENS.
49
+ *
50
+ * Filters out model-only consumers (empty toolName, format "model|") since those
51
+ * just indicate which model ran — not an actionable optimization target.
52
+ *
53
+ * Severity factors both percentage share and absolute magnitude:
54
+ * - percentage-based tier via _assignSeverity()
55
+ * - capped at 'warning' when absolute tokens < 50,000
56
+ * - capped at 'info' when absolute tokens < 20,000
57
+ */
58
+ private _runBiggestConsumers;
59
+ /**
60
+ * Flag file-read spans with inputTokens > 3000.
61
+ * Suggest using line ranges to reduce token count.
62
+ */
63
+ private _runLargeFileReads;
64
+ /**
65
+ * Flag bash/execute_command spans with outputTokens > 3000.
66
+ * Suggest filtering or truncating command output.
67
+ */
68
+ private _runExpensiveBash;
69
+ /**
70
+ * Detect tool calls with the same actionTarget appearing more than once.
71
+ * Suggests caching the result to avoid redundant token consumption.
72
+ */
73
+ private _runRepeatedToolCalls;
74
+ /**
75
+ * Flag turns where isContextSpike is true.
76
+ * Severity is always at least 'warning'.
77
+ */
78
+ private _runContextGrowthSpikes;
79
+ /**
80
+ * Categories whose growth is inherent to normal agentic work and not actionable.
81
+ * tool_outputs grows as the agent reads files, runs commands, etc. — expected behavior.
82
+ * conversation_history grows naturally as conversations progress.
83
+ */
84
+ private static readonly EXPECTED_GROWTH_CATEGORIES;
85
+ /**
86
+ * Flag semantic categories with trend === 'growing'.
87
+ * Severity is 'info' by default; 'warning' if percentage > 25%.
88
+ * Skips categories whose growth is inherent to normal agentic work.
89
+ */
90
+ private _runGrowingCategories;
91
+ /**
92
+ * If cache hit rate < 30%, flag the worst-performing operations and compute
93
+ * potential savings as totalCacheMissTokens * 0.5.
94
+ */
95
+ private _runCacheEfficiency;
96
+ /**
97
+ * Models known to be intentionally routed for lightweight tasks.
98
+ * These should not be flagged as "underperforming" — the orchestrator chose them
99
+ * deliberately for cost/speed reasons, not as a performance optimization target.
100
+ */
101
+ private static readonly INTENTIONAL_LIGHTWEIGHT_MODELS;
102
+ /**
103
+ * If more than one model is present, flag the underperforming model.
104
+ * Severity is 'info' by default; 'warning' if cache efficiency gap > 20pp.
105
+ * Skips flagging models that are intentionally routed for lightweight tasks.
106
+ */
107
+ private _runModelComparison;
108
+ /**
109
+ * Detect significant cache hit rate drops between consecutive dispatches.
110
+ * >30pp drop → warning; >50pp drop → critical.
111
+ * Requires dispatchScores with at least 2 entries; otherwise returns [].
112
+ */
113
+ private _runCacheDeltaRegression;
114
+ private _isToolNameMatch;
115
+ }
116
+ //# sourceMappingURL=recommender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommender.d.ts","sourceRoot":"","sources":["../../src/telemetry/recommender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,YAAY,EAKb,MAAM,YAAY,CAAA;AAMnB,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,CAAC,EAAE,OAAO;IAQ5B;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAAE;IAkCtD;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEvD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAiD5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkC1B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgE7B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA0C/B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAGhD;IAEF;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA6D3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAGpD;IAEF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAuChC,OAAO,CAAC,gBAAgB;CAWzB"}