nodedex 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/adapters/claude-code-watcher.mjs +336 -0
  2. package/adapters/hermes-statedb-watcher.mjs +234 -0
  3. package/adapters/nodedex-capture-core.mjs +129 -0
  4. package/adapters/nodedex-capture.mjs +169 -0
  5. package/dist/agent-protocol.d.ts +7 -0
  6. package/dist/agent-protocol.d.ts.map +1 -0
  7. package/dist/agent-protocol.js +38 -0
  8. package/dist/agent-protocol.js.map +1 -0
  9. package/dist/api-server.d.ts +5 -0
  10. package/dist/api-server.d.ts.map +1 -0
  11. package/dist/api-server.js +351 -0
  12. package/dist/api-server.js.map +1 -0
  13. package/dist/boot-env.d.ts +2 -0
  14. package/dist/boot-env.d.ts.map +1 -0
  15. package/dist/boot-env.js +12 -0
  16. package/dist/boot-env.js.map +1 -0
  17. package/dist/engine/__tests__/search-core.test.d.ts +2 -0
  18. package/dist/engine/__tests__/search-core.test.d.ts.map +1 -0
  19. package/dist/engine/__tests__/search-core.test.js +139 -0
  20. package/dist/engine/__tests__/search-core.test.js.map +1 -0
  21. package/dist/engine/ai-provider.d.ts +45 -0
  22. package/dist/engine/ai-provider.d.ts.map +1 -0
  23. package/dist/engine/ai-provider.js +5 -0
  24. package/dist/engine/ai-provider.js.map +1 -0
  25. package/dist/engine/embeddings.d.ts +51 -0
  26. package/dist/engine/embeddings.d.ts.map +1 -0
  27. package/dist/engine/embeddings.js +89 -0
  28. package/dist/engine/embeddings.js.map +1 -0
  29. package/dist/engine/providers/__tests__/failure-policy.test.d.ts +2 -0
  30. package/dist/engine/providers/__tests__/failure-policy.test.d.ts.map +1 -0
  31. package/dist/engine/providers/__tests__/failure-policy.test.js +134 -0
  32. package/dist/engine/providers/__tests__/failure-policy.test.js.map +1 -0
  33. package/dist/engine/providers/__tests__/model-caps.test.d.ts +2 -0
  34. package/dist/engine/providers/__tests__/model-caps.test.d.ts.map +1 -0
  35. package/dist/engine/providers/__tests__/model-caps.test.js +38 -0
  36. package/dist/engine/providers/__tests__/model-caps.test.js.map +1 -0
  37. package/dist/engine/providers/__tests__/openai-structured.test.d.ts +2 -0
  38. package/dist/engine/providers/__tests__/openai-structured.test.d.ts.map +1 -0
  39. package/dist/engine/providers/__tests__/openai-structured.test.js +73 -0
  40. package/dist/engine/providers/__tests__/openai-structured.test.js.map +1 -0
  41. package/dist/engine/providers/__tests__/usage-ledger.test.d.ts +2 -0
  42. package/dist/engine/providers/__tests__/usage-ledger.test.d.ts.map +1 -0
  43. package/dist/engine/providers/__tests__/usage-ledger.test.js +108 -0
  44. package/dist/engine/providers/__tests__/usage-ledger.test.js.map +1 -0
  45. package/dist/engine/providers/anthropic.d.ts +17 -0
  46. package/dist/engine/providers/anthropic.d.ts.map +1 -0
  47. package/dist/engine/providers/anthropic.js +125 -0
  48. package/dist/engine/providers/anthropic.js.map +1 -0
  49. package/dist/engine/providers/failure-policy.d.ts +56 -0
  50. package/dist/engine/providers/failure-policy.d.ts.map +1 -0
  51. package/dist/engine/providers/failure-policy.js +120 -0
  52. package/dist/engine/providers/failure-policy.js.map +1 -0
  53. package/dist/engine/providers/gemini.d.ts +22 -0
  54. package/dist/engine/providers/gemini.d.ts.map +1 -0
  55. package/dist/engine/providers/gemini.js +180 -0
  56. package/dist/engine/providers/gemini.js.map +1 -0
  57. package/dist/engine/providers/index.d.ts +8 -0
  58. package/dist/engine/providers/index.d.ts.map +1 -0
  59. package/dist/engine/providers/index.js +67 -0
  60. package/dist/engine/providers/index.js.map +1 -0
  61. package/dist/engine/providers/local.d.ts +12 -0
  62. package/dist/engine/providers/local.d.ts.map +1 -0
  63. package/dist/engine/providers/local.js +46 -0
  64. package/dist/engine/providers/local.js.map +1 -0
  65. package/dist/engine/providers/model-caps.d.ts +6 -0
  66. package/dist/engine/providers/model-caps.d.ts.map +1 -0
  67. package/dist/engine/providers/model-caps.js +49 -0
  68. package/dist/engine/providers/model-caps.js.map +1 -0
  69. package/dist/engine/providers/openai.d.ts +30 -0
  70. package/dist/engine/providers/openai.d.ts.map +1 -0
  71. package/dist/engine/providers/openai.js +309 -0
  72. package/dist/engine/providers/openai.js.map +1 -0
  73. package/dist/engine/providers/usage-ledger.d.ts +69 -0
  74. package/dist/engine/providers/usage-ledger.d.ts.map +1 -0
  75. package/dist/engine/providers/usage-ledger.js +209 -0
  76. package/dist/engine/providers/usage-ledger.js.map +1 -0
  77. package/dist/engine/search-core.d.ts +40 -0
  78. package/dist/engine/search-core.d.ts.map +1 -0
  79. package/dist/engine/search-core.js +109 -0
  80. package/dist/engine/search-core.js.map +1 -0
  81. package/dist/engine/vector-math.d.ts +5 -0
  82. package/dist/engine/vector-math.d.ts.map +1 -0
  83. package/dist/engine/vector-math.js +25 -0
  84. package/dist/engine/vector-math.js.map +1 -0
  85. package/dist/home-env.d.ts +26 -0
  86. package/dist/home-env.d.ts.map +1 -0
  87. package/dist/home-env.js +87 -0
  88. package/dist/home-env.js.map +1 -0
  89. package/dist/mcp-server.d.ts +13 -0
  90. package/dist/mcp-server.d.ts.map +1 -0
  91. package/dist/mcp-server.js +79 -0
  92. package/dist/mcp-server.js.map +1 -0
  93. package/dist/middleware/auth.d.ts +23 -0
  94. package/dist/middleware/auth.d.ts.map +1 -0
  95. package/dist/middleware/auth.js +104 -0
  96. package/dist/middleware/auth.js.map +1 -0
  97. package/dist/middleware/auto-recall.d.ts +7 -0
  98. package/dist/middleware/auto-recall.d.ts.map +1 -0
  99. package/dist/middleware/auto-recall.js +257 -0
  100. package/dist/middleware/auto-recall.js.map +1 -0
  101. package/dist/middleware/auto-reflect.d.ts +4 -0
  102. package/dist/middleware/auto-reflect.d.ts.map +1 -0
  103. package/dist/middleware/auto-reflect.js +5 -0
  104. package/dist/middleware/auto-reflect.js.map +1 -0
  105. package/dist/middleware/reflect/apply-flag-verdict.d.ts +27 -0
  106. package/dist/middleware/reflect/apply-flag-verdict.d.ts.map +1 -0
  107. package/dist/middleware/reflect/apply-flag-verdict.js +57 -0
  108. package/dist/middleware/reflect/apply-flag-verdict.js.map +1 -0
  109. package/dist/middleware/reflect/arc-entity-resolve.d.ts +29 -0
  110. package/dist/middleware/reflect/arc-entity-resolve.d.ts.map +1 -0
  111. package/dist/middleware/reflect/arc-entity-resolve.js +356 -0
  112. package/dist/middleware/reflect/arc-entity-resolve.js.map +1 -0
  113. package/dist/middleware/reflect/arc-inactivity-timer.d.ts +47 -0
  114. package/dist/middleware/reflect/arc-inactivity-timer.d.ts.map +1 -0
  115. package/dist/middleware/reflect/arc-inactivity-timer.js +175 -0
  116. package/dist/middleware/reflect/arc-inactivity-timer.js.map +1 -0
  117. package/dist/middleware/reflect/arc-pipeline.d.ts +33 -0
  118. package/dist/middleware/reflect/arc-pipeline.d.ts.map +1 -0
  119. package/dist/middleware/reflect/arc-pipeline.js +498 -0
  120. package/dist/middleware/reflect/arc-pipeline.js.map +1 -0
  121. package/dist/middleware/reflect/comprehend-pergroup.d.ts +100 -0
  122. package/dist/middleware/reflect/comprehend-pergroup.d.ts.map +1 -0
  123. package/dist/middleware/reflect/comprehend-pergroup.js +610 -0
  124. package/dist/middleware/reflect/comprehend-pergroup.js.map +1 -0
  125. package/dist/middleware/reflect/comprehend.d.ts +237 -0
  126. package/dist/middleware/reflect/comprehend.d.ts.map +1 -0
  127. package/dist/middleware/reflect/comprehend.js +706 -0
  128. package/dist/middleware/reflect/comprehend.js.map +1 -0
  129. package/dist/middleware/reflect/config.d.ts +34 -0
  130. package/dist/middleware/reflect/config.d.ts.map +1 -0
  131. package/dist/middleware/reflect/config.js +131 -0
  132. package/dist/middleware/reflect/config.js.map +1 -0
  133. package/dist/middleware/reflect/context.d.ts +138 -0
  134. package/dist/middleware/reflect/context.d.ts.map +1 -0
  135. package/dist/middleware/reflect/context.js +619 -0
  136. package/dist/middleware/reflect/context.js.map +1 -0
  137. package/dist/middleware/reflect/cost-breakdown.d.ts +69 -0
  138. package/dist/middleware/reflect/cost-breakdown.d.ts.map +1 -0
  139. package/dist/middleware/reflect/cost-breakdown.js +63 -0
  140. package/dist/middleware/reflect/cost-breakdown.js.map +1 -0
  141. package/dist/middleware/reflect/cost-guard.d.ts +102 -0
  142. package/dist/middleware/reflect/cost-guard.d.ts.map +1 -0
  143. package/dist/middleware/reflect/cost-guard.js +243 -0
  144. package/dist/middleware/reflect/cost-guard.js.map +1 -0
  145. package/dist/middleware/reflect/cost-pricing.d.ts +54 -0
  146. package/dist/middleware/reflect/cost-pricing.d.ts.map +1 -0
  147. package/dist/middleware/reflect/cost-pricing.js +148 -0
  148. package/dist/middleware/reflect/cost-pricing.js.map +1 -0
  149. package/dist/middleware/reflect/cross-group-link.d.ts +61 -0
  150. package/dist/middleware/reflect/cross-group-link.d.ts.map +1 -0
  151. package/dist/middleware/reflect/cross-group-link.js +212 -0
  152. package/dist/middleware/reflect/cross-group-link.js.map +1 -0
  153. package/dist/middleware/reflect/dedup-by-source-and-value.d.ts +70 -0
  154. package/dist/middleware/reflect/dedup-by-source-and-value.d.ts.map +1 -0
  155. package/dist/middleware/reflect/dedup-by-source-and-value.js +0 -0
  156. package/dist/middleware/reflect/dedup-by-source-and-value.js.map +1 -0
  157. package/dist/middleware/reflect/describe-roots.d.ts +58 -0
  158. package/dist/middleware/reflect/describe-roots.d.ts.map +1 -0
  159. package/dist/middleware/reflect/describe-roots.js +266 -0
  160. package/dist/middleware/reflect/describe-roots.js.map +1 -0
  161. package/dist/middleware/reflect/flag-reviewer-startup.d.ts +16 -0
  162. package/dist/middleware/reflect/flag-reviewer-startup.d.ts.map +1 -0
  163. package/dist/middleware/reflect/flag-reviewer-startup.js +107 -0
  164. package/dist/middleware/reflect/flag-reviewer-startup.js.map +1 -0
  165. package/dist/middleware/reflect/flag-reviewer.d.ts +69 -0
  166. package/dist/middleware/reflect/flag-reviewer.d.ts.map +1 -0
  167. package/dist/middleware/reflect/flag-reviewer.js +520 -0
  168. package/dist/middleware/reflect/flag-reviewer.js.map +1 -0
  169. package/dist/middleware/reflect/inline-dedup.d.ts +26 -0
  170. package/dist/middleware/reflect/inline-dedup.d.ts.map +1 -0
  171. package/dist/middleware/reflect/inline-dedup.js +131 -0
  172. package/dist/middleware/reflect/inline-dedup.js.map +1 -0
  173. package/dist/middleware/reflect/justify-decisions.d.ts +37 -0
  174. package/dist/middleware/reflect/justify-decisions.d.ts.map +1 -0
  175. package/dist/middleware/reflect/justify-decisions.js +159 -0
  176. package/dist/middleware/reflect/justify-decisions.js.map +1 -0
  177. package/dist/middleware/reflect/nl-accept.d.ts +35 -0
  178. package/dist/middleware/reflect/nl-accept.d.ts.map +1 -0
  179. package/dist/middleware/reflect/nl-accept.js +167 -0
  180. package/dist/middleware/reflect/nl-accept.js.map +1 -0
  181. package/dist/middleware/reflect/pass0.d.ts +20 -0
  182. package/dist/middleware/reflect/pass0.d.ts.map +1 -0
  183. package/dist/middleware/reflect/pass0.js +423 -0
  184. package/dist/middleware/reflect/pass0.js.map +1 -0
  185. package/dist/middleware/reflect/pass1.d.ts +17 -0
  186. package/dist/middleware/reflect/pass1.d.ts.map +1 -0
  187. package/dist/middleware/reflect/pass1.js +241 -0
  188. package/dist/middleware/reflect/pass1.js.map +1 -0
  189. package/dist/middleware/reflect/pass2-quarantine.d.ts +129 -0
  190. package/dist/middleware/reflect/pass2-quarantine.d.ts.map +1 -0
  191. package/dist/middleware/reflect/pass2-quarantine.js +272 -0
  192. package/dist/middleware/reflect/pass2-quarantine.js.map +1 -0
  193. package/dist/middleware/reflect/pass2-seams.d.ts +205 -0
  194. package/dist/middleware/reflect/pass2-seams.d.ts.map +1 -0
  195. package/dist/middleware/reflect/pass2-seams.js +279 -0
  196. package/dist/middleware/reflect/pass2-seams.js.map +1 -0
  197. package/dist/middleware/reflect/pass2-split-orchestrator.d.ts +37 -0
  198. package/dist/middleware/reflect/pass2-split-orchestrator.d.ts.map +1 -0
  199. package/dist/middleware/reflect/pass2-split-orchestrator.js +531 -0
  200. package/dist/middleware/reflect/pass2-split-orchestrator.js.map +1 -0
  201. package/dist/middleware/reflect/pass2.d.ts +17 -0
  202. package/dist/middleware/reflect/pass2.d.ts.map +1 -0
  203. package/dist/middleware/reflect/pass2.js +324 -0
  204. package/dist/middleware/reflect/pass2.js.map +1 -0
  205. package/dist/middleware/reflect/pass2a.d.ts +141 -0
  206. package/dist/middleware/reflect/pass2a.d.ts.map +1 -0
  207. package/dist/middleware/reflect/pass2a.js +404 -0
  208. package/dist/middleware/reflect/pass2a.js.map +1 -0
  209. package/dist/middleware/reflect/pass2b.d.ts +108 -0
  210. package/dist/middleware/reflect/pass2b.d.ts.map +1 -0
  211. package/dist/middleware/reflect/pass2b.js +480 -0
  212. package/dist/middleware/reflect/pass2b.js.map +1 -0
  213. package/dist/middleware/reflect/pass2c.d.ts +113 -0
  214. package/dist/middleware/reflect/pass2c.d.ts.map +1 -0
  215. package/dist/middleware/reflect/pass2c.js +360 -0
  216. package/dist/middleware/reflect/pass2c.js.map +1 -0
  217. package/dist/middleware/reflect/pass3-batch.d.ts +62 -0
  218. package/dist/middleware/reflect/pass3-batch.d.ts.map +1 -0
  219. package/dist/middleware/reflect/pass3-batch.js +139 -0
  220. package/dist/middleware/reflect/pass3-batch.js.map +1 -0
  221. package/dist/middleware/reflect/pass3.d.ts +23 -0
  222. package/dist/middleware/reflect/pass3.d.ts.map +1 -0
  223. package/dist/middleware/reflect/pass3.js +371 -0
  224. package/dist/middleware/reflect/pass3.js.map +1 -0
  225. package/dist/middleware/reflect/pass4-slice.d.ts +25 -0
  226. package/dist/middleware/reflect/pass4-slice.d.ts.map +1 -0
  227. package/dist/middleware/reflect/pass4-slice.js +315 -0
  228. package/dist/middleware/reflect/pass4-slice.js.map +1 -0
  229. package/dist/middleware/reflect/pass4.d.ts +30 -0
  230. package/dist/middleware/reflect/pass4.d.ts.map +1 -0
  231. package/dist/middleware/reflect/pass4.js +193 -0
  232. package/dist/middleware/reflect/pass4.js.map +1 -0
  233. package/dist/middleware/reflect/pass5.d.ts +22 -0
  234. package/dist/middleware/reflect/pass5.d.ts.map +1 -0
  235. package/dist/middleware/reflect/pass5.js +178 -0
  236. package/dist/middleware/reflect/pass5.js.map +1 -0
  237. package/dist/middleware/reflect/pass_judge.d.ts +44 -0
  238. package/dist/middleware/reflect/pass_judge.d.ts.map +1 -0
  239. package/dist/middleware/reflect/pass_judge.js +263 -0
  240. package/dist/middleware/reflect/pass_judge.js.map +1 -0
  241. package/dist/middleware/reflect/pipeline-flags.d.ts +140 -0
  242. package/dist/middleware/reflect/pipeline-flags.d.ts.map +1 -0
  243. package/dist/middleware/reflect/pipeline-flags.js +314 -0
  244. package/dist/middleware/reflect/pipeline-flags.js.map +1 -0
  245. package/dist/middleware/reflect/pipeline.d.ts +237 -0
  246. package/dist/middleware/reflect/pipeline.d.ts.map +1 -0
  247. package/dist/middleware/reflect/pipeline.js +3114 -0
  248. package/dist/middleware/reflect/pipeline.js.map +1 -0
  249. package/dist/middleware/reflect/promptOverride.d.ts +14 -0
  250. package/dist/middleware/reflect/promptOverride.d.ts.map +1 -0
  251. package/dist/middleware/reflect/promptOverride.js +28 -0
  252. package/dist/middleware/reflect/promptOverride.js.map +1 -0
  253. package/dist/middleware/reflect/provenance-check.d.ts +48 -0
  254. package/dist/middleware/reflect/provenance-check.d.ts.map +1 -0
  255. package/dist/middleware/reflect/provenance-check.js +180 -0
  256. package/dist/middleware/reflect/provenance-check.js.map +1 -0
  257. package/dist/middleware/reflect/provenance-reviewer.d.ts +52 -0
  258. package/dist/middleware/reflect/provenance-reviewer.d.ts.map +1 -0
  259. package/dist/middleware/reflect/provenance-reviewer.js +253 -0
  260. package/dist/middleware/reflect/provenance-reviewer.js.map +1 -0
  261. package/dist/middleware/reflect/prune-collapsed-types.d.ts +11 -0
  262. package/dist/middleware/reflect/prune-collapsed-types.d.ts.map +1 -0
  263. package/dist/middleware/reflect/prune-collapsed-types.js +32 -0
  264. package/dist/middleware/reflect/prune-collapsed-types.js.map +1 -0
  265. package/dist/middleware/reflect/recognize-root.d.ts +75 -0
  266. package/dist/middleware/reflect/recognize-root.d.ts.map +1 -0
  267. package/dist/middleware/reflect/recognize-root.js +204 -0
  268. package/dist/middleware/reflect/recognize-root.js.map +1 -0
  269. package/dist/middleware/reflect/render-agent-flag.d.ts +25 -0
  270. package/dist/middleware/reflect/render-agent-flag.d.ts.map +1 -0
  271. package/dist/middleware/reflect/render-agent-flag.js +39 -0
  272. package/dist/middleware/reflect/render-agent-flag.js.map +1 -0
  273. package/dist/middleware/reflect/retrieve-graph-slice.d.ts +54 -0
  274. package/dist/middleware/reflect/retrieve-graph-slice.d.ts.map +1 -0
  275. package/dist/middleware/reflect/retrieve-graph-slice.js +173 -0
  276. package/dist/middleware/reflect/retrieve-graph-slice.js.map +1 -0
  277. package/dist/middleware/reflect/root-relatedness.d.ts +31 -0
  278. package/dist/middleware/reflect/root-relatedness.d.ts.map +1 -0
  279. package/dist/middleware/reflect/root-relatedness.js +92 -0
  280. package/dist/middleware/reflect/root-relatedness.js.map +1 -0
  281. package/dist/middleware/reflect/schema-heal.d.ts +22 -0
  282. package/dist/middleware/reflect/schema-heal.d.ts.map +1 -0
  283. package/dist/middleware/reflect/schema-heal.js +119 -0
  284. package/dist/middleware/reflect/schema-heal.js.map +1 -0
  285. package/dist/middleware/reflect/schema-validator.d.ts +85 -0
  286. package/dist/middleware/reflect/schema-validator.d.ts.map +1 -0
  287. package/dist/middleware/reflect/schema-validator.js +196 -0
  288. package/dist/middleware/reflect/schema-validator.js.map +1 -0
  289. package/dist/middleware/reflect/stage-audit-graph.d.ts +115 -0
  290. package/dist/middleware/reflect/stage-audit-graph.d.ts.map +1 -0
  291. package/dist/middleware/reflect/stage-audit-graph.js +563 -0
  292. package/dist/middleware/reflect/stage-audit-graph.js.map +1 -0
  293. package/dist/middleware/reflect/stage-d-resolve-graph.d.ts +87 -0
  294. package/dist/middleware/reflect/stage-d-resolve-graph.d.ts.map +1 -0
  295. package/dist/middleware/reflect/stage-d-resolve-graph.js +256 -0
  296. package/dist/middleware/reflect/stage-d-resolve-graph.js.map +1 -0
  297. package/dist/middleware/reflect/synthesizeFromSceneCard.d.ts +15 -0
  298. package/dist/middleware/reflect/synthesizeFromSceneCard.d.ts.map +1 -0
  299. package/dist/middleware/reflect/synthesizeFromSceneCard.js +91 -0
  300. package/dist/middleware/reflect/synthesizeFromSceneCard.js.map +1 -0
  301. package/dist/middleware/reflect/types.d.ts +261 -0
  302. package/dist/middleware/reflect/types.d.ts.map +1 -0
  303. package/dist/middleware/reflect/types.js +3 -0
  304. package/dist/middleware/reflect/types.js.map +1 -0
  305. package/dist/middleware/reflect/v2-integrate.d.ts +120 -0
  306. package/dist/middleware/reflect/v2-integrate.d.ts.map +1 -0
  307. package/dist/middleware/reflect/v2-integrate.js +388 -0
  308. package/dist/middleware/reflect/v2-integrate.js.map +1 -0
  309. package/dist/middleware/reflect/v2-judge.d.ts +44 -0
  310. package/dist/middleware/reflect/v2-judge.d.ts.map +1 -0
  311. package/dist/middleware/reflect/v2-judge.js +191 -0
  312. package/dist/middleware/reflect/v2-judge.js.map +1 -0
  313. package/dist/relation-sets.d.ts +2 -0
  314. package/dist/relation-sets.d.ts.map +1 -0
  315. package/dist/relation-sets.js +35 -0
  316. package/dist/relation-sets.js.map +1 -0
  317. package/dist/routes/__tests__/flags.test.d.ts +2 -0
  318. package/dist/routes/__tests__/flags.test.d.ts.map +1 -0
  319. package/dist/routes/__tests__/flags.test.js +257 -0
  320. package/dist/routes/__tests__/flags.test.js.map +1 -0
  321. package/dist/routes/__tests__/models-catalog.test.d.ts +2 -0
  322. package/dist/routes/__tests__/models-catalog.test.d.ts.map +1 -0
  323. package/dist/routes/__tests__/models-catalog.test.js +130 -0
  324. package/dist/routes/__tests__/models-catalog.test.js.map +1 -0
  325. package/dist/routes/__tests__/reflect-pause-drain.test.d.ts +2 -0
  326. package/dist/routes/__tests__/reflect-pause-drain.test.d.ts.map +1 -0
  327. package/dist/routes/__tests__/reflect-pause-drain.test.js +38 -0
  328. package/dist/routes/__tests__/reflect-pause-drain.test.js.map +1 -0
  329. package/dist/routes/__tests__/spend-pause-drain.test.d.ts +2 -0
  330. package/dist/routes/__tests__/spend-pause-drain.test.d.ts.map +1 -0
  331. package/dist/routes/__tests__/spend-pause-drain.test.js +38 -0
  332. package/dist/routes/__tests__/spend-pause-drain.test.js.map +1 -0
  333. package/dist/routes/admin.d.ts +49 -0
  334. package/dist/routes/admin.d.ts.map +1 -0
  335. package/dist/routes/admin.js +471 -0
  336. package/dist/routes/admin.js.map +1 -0
  337. package/dist/routes/blocks.d.ts +4 -0
  338. package/dist/routes/blocks.d.ts.map +1 -0
  339. package/dist/routes/blocks.js +893 -0
  340. package/dist/routes/blocks.js.map +1 -0
  341. package/dist/routes/chat-proxy.d.ts +5 -0
  342. package/dist/routes/chat-proxy.d.ts.map +1 -0
  343. package/dist/routes/chat-proxy.js +225 -0
  344. package/dist/routes/chat-proxy.js.map +1 -0
  345. package/dist/routes/conversations.d.ts +4 -0
  346. package/dist/routes/conversations.d.ts.map +1 -0
  347. package/dist/routes/conversations.js +139 -0
  348. package/dist/routes/conversations.js.map +1 -0
  349. package/dist/routes/flags.d.ts +4 -0
  350. package/dist/routes/flags.d.ts.map +1 -0
  351. package/dist/routes/flags.js +151 -0
  352. package/dist/routes/flags.js.map +1 -0
  353. package/dist/routes/inject.d.ts +4 -0
  354. package/dist/routes/inject.d.ts.map +1 -0
  355. package/dist/routes/inject.js +183 -0
  356. package/dist/routes/inject.js.map +1 -0
  357. package/dist/routes/mcp-http.d.ts +5 -0
  358. package/dist/routes/mcp-http.d.ts.map +1 -0
  359. package/dist/routes/mcp-http.js +94 -0
  360. package/dist/routes/mcp-http.js.map +1 -0
  361. package/dist/routes/quarantine.d.ts +4 -0
  362. package/dist/routes/quarantine.d.ts.map +1 -0
  363. package/dist/routes/quarantine.js +66 -0
  364. package/dist/routes/quarantine.js.map +1 -0
  365. package/dist/routes/recall.d.ts +5 -0
  366. package/dist/routes/recall.d.ts.map +1 -0
  367. package/dist/routes/recall.js +573 -0
  368. package/dist/routes/recall.js.map +1 -0
  369. package/dist/routes/reflect.d.ts +5 -0
  370. package/dist/routes/reflect.d.ts.map +1 -0
  371. package/dist/routes/reflect.js +231 -0
  372. package/dist/routes/reflect.js.map +1 -0
  373. package/dist/routes/session.d.ts +4 -0
  374. package/dist/routes/session.d.ts.map +1 -0
  375. package/dist/routes/session.js +418 -0
  376. package/dist/routes/session.js.map +1 -0
  377. package/dist/routes/state.d.ts +116 -0
  378. package/dist/routes/state.d.ts.map +1 -0
  379. package/dist/routes/state.js +621 -0
  380. package/dist/routes/state.js.map +1 -0
  381. package/dist/routes/usage.d.ts +3 -0
  382. package/dist/routes/usage.d.ts.map +1 -0
  383. package/dist/routes/usage.js +141 -0
  384. package/dist/routes/usage.js.map +1 -0
  385. package/dist/routes/workspace.d.ts +5 -0
  386. package/dist/routes/workspace.d.ts.map +1 -0
  387. package/dist/routes/workspace.js +435 -0
  388. package/dist/routes/workspace.js.map +1 -0
  389. package/dist/server.d.ts +13 -0
  390. package/dist/server.d.ts.map +1 -0
  391. package/dist/server.js +298 -0
  392. package/dist/server.js.map +1 -0
  393. package/dist/store/__tests__/backup.test.d.ts +2 -0
  394. package/dist/store/__tests__/backup.test.d.ts.map +1 -0
  395. package/dist/store/__tests__/backup.test.js +53 -0
  396. package/dist/store/__tests__/backup.test.js.map +1 -0
  397. package/dist/store/__tests__/quality.test.d.ts +2 -0
  398. package/dist/store/__tests__/quality.test.d.ts.map +1 -0
  399. package/dist/store/__tests__/quality.test.js +75 -0
  400. package/dist/store/__tests__/quality.test.js.map +1 -0
  401. package/dist/store/backup.d.ts +14 -0
  402. package/dist/store/backup.d.ts.map +1 -0
  403. package/dist/store/backup.js +95 -0
  404. package/dist/store/backup.js.map +1 -0
  405. package/dist/store/database.d.ts +407 -0
  406. package/dist/store/database.d.ts.map +1 -0
  407. package/dist/store/database.js +2004 -0
  408. package/dist/store/database.js.map +1 -0
  409. package/dist/store/quality.d.ts +25 -0
  410. package/dist/store/quality.d.ts.map +1 -0
  411. package/dist/store/quality.js +48 -0
  412. package/dist/store/quality.js.map +1 -0
  413. package/dist/tools/__tests__/assemble-block-chains.test.d.ts +2 -0
  414. package/dist/tools/__tests__/assemble-block-chains.test.d.ts.map +1 -0
  415. package/dist/tools/__tests__/assemble-block-chains.test.js +118 -0
  416. package/dist/tools/__tests__/assemble-block-chains.test.js.map +1 -0
  417. package/dist/tools/__tests__/filter-roots-by-concepts.test.d.ts +2 -0
  418. package/dist/tools/__tests__/filter-roots-by-concepts.test.d.ts.map +1 -0
  419. package/dist/tools/__tests__/filter-roots-by-concepts.test.js +68 -0
  420. package/dist/tools/__tests__/filter-roots-by-concepts.test.js.map +1 -0
  421. package/dist/tools/__tests__/flag-surface.test.d.ts +2 -0
  422. package/dist/tools/__tests__/flag-surface.test.d.ts.map +1 -0
  423. package/dist/tools/__tests__/flag-surface.test.js +130 -0
  424. package/dist/tools/__tests__/flag-surface.test.js.map +1 -0
  425. package/dist/tools/core.d.ts +5 -0
  426. package/dist/tools/core.d.ts.map +1 -0
  427. package/dist/tools/core.js +962 -0
  428. package/dist/tools/core.js.map +1 -0
  429. package/dist/tools/derive.d.ts +5 -0
  430. package/dist/tools/derive.d.ts.map +1 -0
  431. package/dist/tools/derive.js +182 -0
  432. package/dist/tools/derive.js.map +1 -0
  433. package/dist/tools/flag-surface.d.ts +26 -0
  434. package/dist/tools/flag-surface.d.ts.map +1 -0
  435. package/dist/tools/flag-surface.js +59 -0
  436. package/dist/tools/flag-surface.js.map +1 -0
  437. package/dist/tools/helpers.d.ts +99 -0
  438. package/dist/tools/helpers.d.ts.map +1 -0
  439. package/dist/tools/helpers.js +243 -0
  440. package/dist/tools/helpers.js.map +1 -0
  441. package/dist/tools/projects.d.ts +5 -0
  442. package/dist/tools/projects.d.ts.map +1 -0
  443. package/dist/tools/projects.js +175 -0
  444. package/dist/tools/projects.js.map +1 -0
  445. package/dist/tools/system.d.ts +5 -0
  446. package/dist/tools/system.d.ts.map +1 -0
  447. package/dist/tools/system.js +1361 -0
  448. package/dist/tools/system.js.map +1 -0
  449. package/dist/tools/tasks.d.ts +5 -0
  450. package/dist/tools/tasks.d.ts.map +1 -0
  451. package/dist/tools/tasks.js +289 -0
  452. package/dist/tools/tasks.js.map +1 -0
  453. package/package.json +69 -0
  454. package/scripts/nodedex-entry.mjs +396 -0
  455. package/tui-dist/App.js +185 -0
  456. package/tui-dist/api.js +197 -0
  457. package/tui-dist/cli.js +53 -0
  458. package/tui-dist/components.js +63 -0
  459. package/tui-dist/config.js +242 -0
  460. package/tui-dist/connect-snippets.js +98 -0
  461. package/tui-dist/feed.js +51 -0
  462. package/tui-dist/health.js +465 -0
  463. package/tui-dist/hooks.js +23 -0
  464. package/tui-dist/memory.js +220 -0
  465. package/tui-dist/onboarding.js +498 -0
  466. package/tui-dist/review.js +193 -0
  467. package/tui-dist/servers.js +556 -0
  468. package/tui-dist/smoke.js +15 -0
  469. package/tui-dist/theme.js +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/middleware/reflect/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ export type ProviderInfo = {
2
+ model?: string;
3
+ attempts?: Array<{
4
+ model: string;
5
+ outcome: string;
6
+ }>;
7
+ };
8
+ export type PassTokenStats = {
9
+ input: number;
10
+ thinking: number;
11
+ output: number;
12
+ calls: number;
13
+ };
14
+ export type PassCost = {
15
+ ran: boolean;
16
+ model: string | undefined;
17
+ usd: number | null;
18
+ };
19
+ export type CostBreakdownProviders = {
20
+ pass0?: ProviderInfo;
21
+ pass1?: ProviderInfo;
22
+ pass_judge?: ProviderInfo;
23
+ pass2?: ProviderInfo;
24
+ pass3?: ProviderInfo;
25
+ pass4?: ProviderInfo;
26
+ pass5?: ProviderInfo;
27
+ pass_c_resolve?: ProviderInfo;
28
+ pass_reviewer?: ProviderInfo;
29
+ };
30
+ export type CostBreakdownTokenStats = {
31
+ pass0: PassTokenStats;
32
+ pass1: PassTokenStats;
33
+ pass_judge: PassTokenStats;
34
+ pass2: PassTokenStats;
35
+ pass2a: PassTokenStats;
36
+ pass2b: PassTokenStats;
37
+ pass2c: PassTokenStats;
38
+ pass3: PassTokenStats;
39
+ pass4: PassTokenStats;
40
+ pass5: PassTokenStats;
41
+ pass_c_resolve: PassTokenStats;
42
+ pass_reviewer: PassTokenStats;
43
+ };
44
+ export type CostBreakdown = {
45
+ pricing_version: string;
46
+ pass0: PassCost;
47
+ pass1: PassCost;
48
+ pass_judge: PassCost;
49
+ pass2: PassCost;
50
+ pass2a: PassCost;
51
+ pass2b: PassCost;
52
+ pass2c: PassCost;
53
+ pass3: PassCost;
54
+ pass4: PassCost;
55
+ pass5: PassCost;
56
+ pass_c_resolve: PassCost;
57
+ pass_reviewer: PassCost;
58
+ total_usd: number | null;
59
+ };
60
+ /**
61
+ * Build the per-pass cost_breakdown record for the turn log.
62
+ *
63
+ * total_usd accumulates only RAN-passes:
64
+ * - ran:false → skip (non-contribution; was previously poisoning total to null)
65
+ * - ran:true + usd:null → real cost gap, total goes null
66
+ * - ran:true + usd:number → contributes to running total
67
+ */
68
+ export declare function buildCostBreakdown(providers: CostBreakdownProviders, tokenStats: CostBreakdownTokenStats): CostBreakdown;
69
+ //# sourceMappingURL=cost-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-breakdown.d.ts","sourceRoot":"","sources":["../../../src/middleware/reflect/cost-breakdown.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AACpG,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAChG,MAAM,MAAM,QAAQ,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,YAAY,CAAC;IAMrB,cAAc,CAAC,EAAE,YAAY,CAAC;IAM9B,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,cAAc,CAAC;IAC3B,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,UAAU,EAAE,QAAQ,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,cAAc,EAAE,QAAQ,CAAC;IACzB,aAAa,EAAE,QAAQ,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,sBAAsB,EACjC,UAAU,EAAE,uBAAuB,GAClC,aAAa,CA2Bf"}
@@ -0,0 +1,63 @@
1
+ // ═══════════════════════════════════════════════════════════════════════════════
2
+ // COST BREAKDOWN — uniform per-pass turn-log record (debt-4 §3, 2026-05-29)
3
+ //
4
+ // Pure-function extraction of the per-pass cost_breakdown construction that
5
+ // previously lived as an IIFE in pipeline.ts. Extracted so the three meaningful
6
+ // states (ran:false / ran:true+priced / ran:true+null) can be unit-tested
7
+ // directly without the integration-scale fixture cost.
8
+ //
9
+ // THE THREE STATES — each carries a different meaning a reader must distinguish:
10
+ // ran:false + usd:null → pass DID NOT RUN this turn (checkpoint resume
11
+ // skipped it; pipeline.ts:730-733 pre-populates
12
+ // pass1/2 from checkpoint, leaving _passNProvider
13
+ // unset). Non-contribution to total.
14
+ // ran:true + usd:number → ran, priced cleanly. Contributes to total.
15
+ // ran:true + usd:null → ran with UNKNOWN model — audit signal,
16
+ // pricing table doesn't know the model
17
+ // (don't fabricate). Poisons total_usd to null.
18
+ //
19
+ // Pre-debt-4 the per-pass record was just { model, usd } — readers couldn't
20
+ // distinguish "didn't run" (legitimate skip) from "ran but unpriced" (real
21
+ // audit gap). Today's S1.1 finding (turn-08 NULL = checkpoint resume) is the
22
+ // case that motivated this distinction.
23
+ // ═══════════════════════════════════════════════════════════════════════════════
24
+ import { computeCost, COST_PRICING_VERSION } from "./cost-pricing.js";
25
+ /**
26
+ * Build the per-pass cost_breakdown record for the turn log.
27
+ *
28
+ * total_usd accumulates only RAN-passes:
29
+ * - ran:false → skip (non-contribution; was previously poisoning total to null)
30
+ * - ran:true + usd:null → real cost gap, total goes null
31
+ * - ran:true + usd:number → contributes to running total
32
+ */
33
+ export function buildCostBreakdown(providers, tokenStats) {
34
+ const pass0 = { ran: !!providers.pass0, model: providers.pass0?.model, usd: computeCost(tokenStats.pass0, providers.pass0?.model) };
35
+ const pass1 = { ran: !!providers.pass1, model: providers.pass1?.model, usd: computeCost(tokenStats.pass1, providers.pass1?.model) };
36
+ const pass_judge = { ran: !!providers.pass_judge, model: providers.pass_judge?.model, usd: computeCost(tokenStats.pass_judge, providers.pass_judge?.model) };
37
+ const pass2 = { ran: !!providers.pass2, model: providers.pass2?.model, usd: computeCost(tokenStats.pass2, providers.pass2?.model) };
38
+ const pass2a = { ran: !!providers.pass2, model: providers.pass2?.model, usd: computeCost(tokenStats.pass2a, providers.pass2?.model) };
39
+ const pass2b = { ran: !!providers.pass2, model: providers.pass2?.model, usd: computeCost(tokenStats.pass2b, providers.pass2?.model) };
40
+ const pass2c = { ran: !!providers.pass2, model: providers.pass2?.model, usd: computeCost(tokenStats.pass2c, providers.pass2?.model) };
41
+ const pass3 = { ran: !!providers.pass3, model: providers.pass3?.model, usd: computeCost(tokenStats.pass3, providers.pass3?.model) };
42
+ const pass4 = { ran: !!providers.pass4, model: providers.pass4?.model, usd: computeCost(tokenStats.pass4, providers.pass4?.model) };
43
+ const pass5 = { ran: !!providers.pass5, model: providers.pass5?.model, usd: computeCost(tokenStats.pass5, providers.pass5?.model) };
44
+ const pass_c_resolve = { ran: !!providers.pass_c_resolve, model: providers.pass_c_resolve?.model, usd: computeCost(tokenStats.pass_c_resolve, providers.pass_c_resolve?.model) };
45
+ const pass_reviewer = { ran: !!providers.pass_reviewer, model: providers.pass_reviewer?.model, usd: computeCost(tokenStats.pass_reviewer, providers.pass_reviewer?.model) };
46
+ const passes = [pass0, pass1, pass_judge, pass2, pass2a, pass2b, pass2c, pass3, pass4, pass5, pass_c_resolve, pass_reviewer];
47
+ let total = 0;
48
+ for (const v of passes) {
49
+ if (!v.ran)
50
+ continue;
51
+ if (v.usd === null) {
52
+ total = null;
53
+ break;
54
+ }
55
+ total += v.usd;
56
+ }
57
+ return {
58
+ pricing_version: COST_PRICING_VERSION,
59
+ pass0, pass1, pass_judge, pass2, pass2a, pass2b, pass2c, pass3, pass4, pass5, pass_c_resolve, pass_reviewer,
60
+ total_usd: total,
61
+ };
62
+ }
63
+ //# sourceMappingURL=cost-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-breakdown.js","sourceRoot":"","sources":["../../../src/middleware/reflect/cost-breakdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ export interface BudgetConfig {
2
+ minCreditUsd: number | null;
3
+ dailyBudgetUsd: number | null;
4
+ }
5
+ export declare function readBudgetConfig(): BudgetConfig;
6
+ export type CreditStatus = {
7
+ kind: "ok";
8
+ remaining: number;
9
+ total_credits: number | null;
10
+ total_usage: number | null;
11
+ } | {
12
+ kind: "unconfigured";
13
+ } | {
14
+ kind: "error";
15
+ };
16
+ /**
17
+ * Live OpenRouter remaining credits, cached ~60s (the gate runs before every
18
+ * reflect job; we must not hammer the endpoint). Shared by /api/usage/balance
19
+ * and the breaker so both read one source.
20
+ */
21
+ export declare function fetchOpenRouterCredits(force?: boolean): Promise<CreditStatus>;
22
+ export interface BudgetVerdict {
23
+ tripped: boolean;
24
+ reason: string | null;
25
+ config: BudgetConfig;
26
+ observed: {
27
+ credit: CreditStatus;
28
+ spend24h: number;
29
+ };
30
+ }
31
+ /**
32
+ * PURE budget evaluation. No guard configured → never trips (default OFF).
33
+ * PRIMARY credit floor is checked first (ground truth + fail-closed), then the
34
+ * SECONDARY rolling-24h cap. Exported for direct unit testing.
35
+ */
36
+ export declare function evaluateBudget(config: BudgetConfig, observed: {
37
+ credit: CreditStatus;
38
+ spend24h: number;
39
+ }): BudgetVerdict;
40
+ /**
41
+ * Gather the live observed values and evaluate. Short-circuits to a no-op with
42
+ * NO I/O when no guard is configured, so the per-job gate costs nothing by
43
+ * default. Only fetches the balance if the credit floor is set; only reads the
44
+ * ledger window if the daily cap is set.
45
+ */
46
+ export declare function evaluateBudgetLive(nowMs?: number): Promise<BudgetVerdict>;
47
+ /**
48
+ * Safe budget check for the autonomous background workers (flag-reviewer,
49
+ * stage-audit, describer). Returns the verdict, or null if the breaker itself
50
+ * throws — fail OPEN, because a guard must never break the worker it guards.
51
+ *
52
+ * Unlike the reflect gate, a worker that sees `tripped` just SKIPS its tick
53
+ * (no pause file, no global pause): every spend path self-gates, and a worker
54
+ * re-checks each tick, so it halts while over budget and auto-resumes when the
55
+ * credit/window recovers. Reflect keeps its persistent manual-resume semantics
56
+ * because it's the user-facing pipeline; the workers are background enrichment.
57
+ */
58
+ export declare function budgetTripped(): Promise<BudgetVerdict | null>;
59
+ export declare function pauseFilePath(): string;
60
+ /**
61
+ * Persist the trip by writing the reflect-pause file the boot path already
62
+ * honors — so a restart can't bypass the budget. Self-documenting content (the
63
+ * reason + timestamp); the boot check only tests existence. Best-effort.
64
+ */
65
+ export declare function writePauseFile(reason: string): void;
66
+ export interface CreditOutVerdict {
67
+ out: boolean;
68
+ remaining: number | null;
69
+ floor: number;
70
+ reason: string;
71
+ }
72
+ /**
73
+ * "Did an extraction just fail because the account is out of credit?" — the REACTIVE
74
+ * backstop the reflect queue calls on a failure, with a FORCE-REFRESHED live balance
75
+ * (no stale cache masking a just-now exhaustion). Out ⟺ the balance is readable AND at
76
+ * or below the effective floor (the user's NODEDEX_MIN_CREDIT_USD when set, else a tiny
77
+ * epsilon so a genuine ~$0 outage is always caught even with the soft floor off).
78
+ *
79
+ * Deliberately conservative on the unknowns: a non-OpenRouter setup ("unconfigured") or
80
+ * an unreadable balance ("error") returns out=false — we do NOT guess credit-out from a
81
+ * network blip; the normal failure path handles those. The DEFINITIVE 402 signal
82
+ * (isInsufficientCreditError on the raw error) is the queue's primary detector; this
83
+ * balance probe is the secondary net for paths where the 402 didn't surface.
84
+ */
85
+ export declare function creditExhausted(): Promise<CreditOutVerdict>;
86
+ /**
87
+ * "Has credit POSITIVELY recovered?" — the auto-resume gate. Unlike `creditExhausted`,
88
+ * this is conservative the OTHER way: it returns recovered=true ONLY on a readable
89
+ * balance strictly above the floor. An indeterminate balance (non-OpenRouter setup, or
90
+ * an unreadable fetch) is NOT "recovered" — so a spend-pause never auto-lifts on a guess;
91
+ * those setups resume manually (POST /api/reflect/resume). Force-refreshes the balance.
92
+ */
93
+ export declare function creditRecovered(): Promise<{
94
+ recovered: boolean;
95
+ remaining: number | null;
96
+ }>;
97
+ export declare function spendPauseFilePath(): string;
98
+ export declare function writeSpendPauseFile(reason: string): void;
99
+ export declare function spendPauseFileExists(): boolean;
100
+ export declare function readSpendPauseReason(): string | null;
101
+ export declare function clearSpendPauseFile(): void;
102
+ //# sourceMappingURL=cost-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-guard.d.ts","sourceRoot":"","sources":["../../../src/middleware/reflect/cost-guard.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAQD,wBAAgB,gBAAgB,IAAI,YAAY,CAK/C;AAMD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAItB;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAgCjF;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE;QAAE,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,aAAa,CAoBxH;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,GAAE,MAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAQ3F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAOnE;AAID,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CASnD;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAQjE;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAKjG;AAQD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CASxD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,243 @@
1
+ // middleware/reflect/cost-guard.ts — cost circuit breaker (production gap 2).
2
+ //
3
+ // TRACK already exists (the usage ledger + the live OpenRouter balance). This is
4
+ // the CONTROL half: read spend, compare to a budget, and TRIP by reusing the
5
+ // reflect-pause lever so a runaway never silently drains credit. Two guards,
6
+ // each DEFAULT OFF (unset = no limit = today's behavior):
7
+ // PRIMARY — live OpenRouter remaining-credit floor (ground truth; catches
8
+ // every call type, incl. the ledger's blind spots). Fail-CLOSED:
9
+ // if the floor is set but the balance can't be read, we trip
10
+ // ("don't spend when we can't confirm budget"). NODEDEX_MIN_CREDIT_USD
11
+ // SECONDARY — ledger rolling-24h spend cap (fast, local, 97.8% real billed).
12
+ // NODEDEX_DAILY_BUDGET_USD
13
+ //
14
+ // Shape: a PURE evaluateBudget(config, observed) so the verdict logic is unit-
15
+ // testable with crafted numbers (no network, no clock), plus a thin async
16
+ // evaluateBudgetLive() that gathers the observed values. No import from
17
+ // routes/state.ts — the wiring point there owns the trip ACTION (setReflectPaused
18
+ // + writePauseFile) so there's no import cycle.
19
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, rmSync } from "fs";
20
+ import { homedir } from "os";
21
+ import path from "path";
22
+ import { getSpendSince } from "../../engine/providers/usage-ledger.js";
23
+ const DAY_MS = 24 * 60 * 60 * 1000;
24
+ const CREDIT_CACHE_TTL_MS = 60_000;
25
+ // When NO floor is configured, a HARD exhaustion (remaining at/below this epsilon) is
26
+ // still caught by the reactive credit-out probe — so a genuine $0 outage always pauses
27
+ // + requeues even with the soft proactive floor left off (its default). A user-set
28
+ // NODEDEX_MIN_CREDIT_USD overrides this for the reactive check too.
29
+ const CREDIT_OUT_EPSILON_USD = 0.01;
30
+ function parseUsd(v) {
31
+ if (v == null || v.trim() === "")
32
+ return null;
33
+ const n = Number(v);
34
+ return Number.isFinite(n) && n >= 0 ? n : null;
35
+ }
36
+ export function readBudgetConfig() {
37
+ return {
38
+ minCreditUsd: parseUsd(process.env.NODEDEX_MIN_CREDIT_USD),
39
+ dailyBudgetUsd: parseUsd(process.env.NODEDEX_DAILY_BUDGET_USD),
40
+ };
41
+ }
42
+ let creditCache = null;
43
+ /**
44
+ * Live OpenRouter remaining credits, cached ~60s (the gate runs before every
45
+ * reflect job; we must not hammer the endpoint). Shared by /api/usage/balance
46
+ * and the breaker so both read one source.
47
+ */
48
+ export async function fetchOpenRouterCredits(force = false) {
49
+ const baseIsOpenRouter = (process.env.OPENAI_BASE_URL ?? "").includes("openrouter");
50
+ const key = process.env.OPENROUTER_API_KEY ?? process.env.OPENAI_API_KEY;
51
+ if (!baseIsOpenRouter || !key)
52
+ return { kind: "unconfigured" };
53
+ // force bypasses the cache — the reactive credit-out probe must read the LIVE balance
54
+ // right after a failed call, not a stale "ok" read from up to 60s ago that would mask a
55
+ // just-now exhaustion (→ the turn would be dropped instead of paused + requeued).
56
+ if (!force && creditCache && Date.now() - creditCache.at < CREDIT_CACHE_TTL_MS) {
57
+ return creditCache.status;
58
+ }
59
+ let status;
60
+ try {
61
+ const r = await fetch("https://openrouter.ai/api/v1/credits", {
62
+ headers: { Authorization: `Bearer ${key}` },
63
+ signal: AbortSignal.timeout(8000),
64
+ });
65
+ if (!r.ok) {
66
+ status = { kind: "error" };
67
+ }
68
+ else {
69
+ const j = await r.json();
70
+ const total_credits = j?.data?.total_credits ?? null;
71
+ const total_usage = j?.data?.total_usage ?? null;
72
+ status = total_credits !== null && total_usage !== null
73
+ ? { kind: "ok", remaining: total_credits - total_usage, total_credits, total_usage }
74
+ : { kind: "error" };
75
+ }
76
+ }
77
+ catch {
78
+ status = { kind: "error" };
79
+ }
80
+ creditCache = { status, at: Date.now() };
81
+ return status;
82
+ }
83
+ /**
84
+ * PURE budget evaluation. No guard configured → never trips (default OFF).
85
+ * PRIMARY credit floor is checked first (ground truth + fail-closed), then the
86
+ * SECONDARY rolling-24h cap. Exported for direct unit testing.
87
+ */
88
+ export function evaluateBudget(config, observed) {
89
+ const base = { config, observed };
90
+ if (config.minCreditUsd == null && config.dailyBudgetUsd == null) {
91
+ return { tripped: false, reason: null, ...base };
92
+ }
93
+ // PRIMARY — live remaining-credit floor.
94
+ if (config.minCreditUsd != null) {
95
+ if (observed.credit.kind === "error") {
96
+ return { tripped: true, reason: `live balance unavailable and NODEDEX_MIN_CREDIT_USD=$${config.minCreditUsd} is set — fail-closed (won't spend without confirming budget)`, ...base };
97
+ }
98
+ if (observed.credit.kind === "ok" && observed.credit.remaining < config.minCreditUsd) {
99
+ return { tripped: true, reason: `remaining $${observed.credit.remaining.toFixed(2)} below floor $${config.minCreditUsd.toFixed(2)} (NODEDEX_MIN_CREDIT_USD)`, ...base };
100
+ }
101
+ // "unconfigured" → the floor can't apply here; fall through to the daily cap.
102
+ }
103
+ // SECONDARY — rolling-24h ledger spend.
104
+ if (config.dailyBudgetUsd != null && observed.spend24h >= config.dailyBudgetUsd) {
105
+ return { tripped: true, reason: `24h spend $${observed.spend24h.toFixed(2)} reached budget $${config.dailyBudgetUsd.toFixed(2)} (NODEDEX_DAILY_BUDGET_USD)`, ...base };
106
+ }
107
+ return { tripped: false, reason: null, ...base };
108
+ }
109
+ /**
110
+ * Gather the live observed values and evaluate. Short-circuits to a no-op with
111
+ * NO I/O when no guard is configured, so the per-job gate costs nothing by
112
+ * default. Only fetches the balance if the credit floor is set; only reads the
113
+ * ledger window if the daily cap is set.
114
+ */
115
+ export async function evaluateBudgetLive(nowMs = Date.now()) {
116
+ const config = readBudgetConfig();
117
+ if (config.minCreditUsd == null && config.dailyBudgetUsd == null) {
118
+ return { tripped: false, reason: null, config, observed: { credit: { kind: "unconfigured" }, spend24h: 0 } };
119
+ }
120
+ const credit = config.minCreditUsd != null ? await fetchOpenRouterCredits() : { kind: "unconfigured" };
121
+ const spend24h = config.dailyBudgetUsd != null ? getSpendSince(nowMs - DAY_MS) : 0;
122
+ return evaluateBudget(config, { credit, spend24h });
123
+ }
124
+ /**
125
+ * Safe budget check for the autonomous background workers (flag-reviewer,
126
+ * stage-audit, describer). Returns the verdict, or null if the breaker itself
127
+ * throws — fail OPEN, because a guard must never break the worker it guards.
128
+ *
129
+ * Unlike the reflect gate, a worker that sees `tripped` just SKIPS its tick
130
+ * (no pause file, no global pause): every spend path self-gates, and a worker
131
+ * re-checks each tick, so it halts while over budget and auto-resumes when the
132
+ * credit/window recovers. Reflect keeps its persistent manual-resume semantics
133
+ * because it's the user-facing pipeline; the workers are background enrichment.
134
+ */
135
+ export async function budgetTripped() {
136
+ try {
137
+ return await evaluateBudgetLive();
138
+ }
139
+ catch (e) {
140
+ console.error("[cost-breaker] worker budget check threw — proceeding WITHOUT skipping:", e);
141
+ return null;
142
+ }
143
+ }
144
+ // ─── Trip persistence ───────────────────────────────────────────────────────────
145
+ export function pauseFilePath() {
146
+ return path.join(homedir(), ".nodedex", "reflect-pause");
147
+ }
148
+ /**
149
+ * Persist the trip by writing the reflect-pause file the boot path already
150
+ * honors — so a restart can't bypass the budget. Self-documenting content (the
151
+ * reason + timestamp); the boot check only tests existence. Best-effort.
152
+ */
153
+ export function writePauseFile(reason) {
154
+ try {
155
+ const p = pauseFilePath();
156
+ const dir = path.dirname(p);
157
+ if (!existsSync(dir))
158
+ mkdirSync(dir, { recursive: true });
159
+ writeFileSync(p, JSON.stringify({ reason, tripped_at: new Date().toISOString(), by: "cost-breaker" }) + "\n", "utf8");
160
+ }
161
+ catch {
162
+ /* persistence is best-effort; the in-memory pause still holds this session */
163
+ }
164
+ }
165
+ /**
166
+ * "Did an extraction just fail because the account is out of credit?" — the REACTIVE
167
+ * backstop the reflect queue calls on a failure, with a FORCE-REFRESHED live balance
168
+ * (no stale cache masking a just-now exhaustion). Out ⟺ the balance is readable AND at
169
+ * or below the effective floor (the user's NODEDEX_MIN_CREDIT_USD when set, else a tiny
170
+ * epsilon so a genuine ~$0 outage is always caught even with the soft floor off).
171
+ *
172
+ * Deliberately conservative on the unknowns: a non-OpenRouter setup ("unconfigured") or
173
+ * an unreadable balance ("error") returns out=false — we do NOT guess credit-out from a
174
+ * network blip; the normal failure path handles those. The DEFINITIVE 402 signal
175
+ * (isInsufficientCreditError on the raw error) is the queue's primary detector; this
176
+ * balance probe is the secondary net for paths where the 402 didn't surface.
177
+ */
178
+ export async function creditExhausted() {
179
+ const floor = readBudgetConfig().minCreditUsd ?? CREDIT_OUT_EPSILON_USD;
180
+ const credit = await fetchOpenRouterCredits(true);
181
+ if (credit.kind === "ok") {
182
+ const out = credit.remaining <= floor;
183
+ return { out, remaining: credit.remaining, floor, reason: out ? `remaining $${credit.remaining.toFixed(2)} at/below floor $${floor.toFixed(2)}` : `remaining $${credit.remaining.toFixed(2)} above floor $${floor.toFixed(2)}` };
184
+ }
185
+ return { out: false, remaining: null, floor, reason: credit.kind === "unconfigured" ? "not an OpenRouter setup — balance not checked" : "balance unreadable — not assuming credit-out" };
186
+ }
187
+ /**
188
+ * "Has credit POSITIVELY recovered?" — the auto-resume gate. Unlike `creditExhausted`,
189
+ * this is conservative the OTHER way: it returns recovered=true ONLY on a readable
190
+ * balance strictly above the floor. An indeterminate balance (non-OpenRouter setup, or
191
+ * an unreadable fetch) is NOT "recovered" — so a spend-pause never auto-lifts on a guess;
192
+ * those setups resume manually (POST /api/reflect/resume). Force-refreshes the balance.
193
+ */
194
+ export async function creditRecovered() {
195
+ const floor = readBudgetConfig().minCreditUsd ?? CREDIT_OUT_EPSILON_USD;
196
+ const c = await fetchOpenRouterCredits(true);
197
+ if (c.kind === "ok")
198
+ return { recovered: c.remaining > floor, remaining: c.remaining };
199
+ return { recovered: false, remaining: null };
200
+ }
201
+ // ─── Spend-pause persistence (distinct from the capture reflect-pause) ────────────
202
+ // The cost-breaker + credit-out handler pause SPENDING (the drain), but capture keeps
203
+ // queuing — a different lever from the reflect-pause file (which drops capture). It gets
204
+ // its OWN file so (a) boot restores it as a spend-pause, not a capture-pause, and (b) the
205
+ // auto-resume timer only ever deletes THIS file — never the user's/dogfood reflect-pause.
206
+ export function spendPauseFilePath() {
207
+ return path.join(homedir(), ".nodedex", "spend-pause");
208
+ }
209
+ export function writeSpendPauseFile(reason) {
210
+ try {
211
+ const p = spendPauseFilePath();
212
+ const dir = path.dirname(p);
213
+ if (!existsSync(dir))
214
+ mkdirSync(dir, { recursive: true });
215
+ writeFileSync(p, JSON.stringify({ reason, paused_at: new Date().toISOString(), by: "cost-breaker" }) + "\n", "utf8");
216
+ }
217
+ catch {
218
+ /* best-effort; the in-memory spendPaused flag still holds this session */
219
+ }
220
+ }
221
+ export function spendPauseFileExists() {
222
+ try {
223
+ return existsSync(spendPauseFilePath());
224
+ }
225
+ catch {
226
+ return false;
227
+ }
228
+ }
229
+ export function readSpendPauseReason() {
230
+ try {
231
+ return JSON.parse(readFileSync(spendPauseFilePath(), "utf8")).reason ?? null;
232
+ }
233
+ catch {
234
+ return null;
235
+ }
236
+ }
237
+ export function clearSpendPauseFile() {
238
+ try {
239
+ rmSync(spendPauseFilePath(), { force: true });
240
+ }
241
+ catch { /* best-effort */ }
242
+ }
243
+ //# sourceMappingURL=cost-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-guard.js","sourceRoot":"","sources":["../../../src/middleware/reflect/cost-guard.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,6EAA6E;AAC7E,0DAA0D;AAC1D,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,qFAAqF;AACrF,+EAA+E;AAC/E,yCAAyC;AACzC,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,wEAAwE;AACxE,kFAAkF;AAClF,gDAAgD;AAEhD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAEvE,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,sFAAsF;AACtF,uFAAuF;AACvF,mFAAmF;AACnF,oEAAoE;AACpE,MAAM,sBAAsB,GAAG,IAAI,CAAC;AASpC,SAAS,QAAQ,CAAC,CAAqB;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,YAAY,EAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC5D,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;KAC/D,CAAC;AACJ,CAAC;AAWD,IAAI,WAAW,GAAgD,IAAI,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAK,GAAG,KAAK;IACxD,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACzE,IAAI,CAAC,gBAAgB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAE/D,sFAAsF;IACtF,wFAAwF;IACxF,kFAAkF;IAClF,IAAI,CAAC,KAAK,IAAI,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAC/E,OAAO,WAAW,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,sCAAsC,EAAE;YAC5D,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;YAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAQ,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC;YACrD,MAAM,WAAW,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;YACjD,MAAM,GAAG,aAAa,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI;gBACrD,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,GAAG,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE;gBACpF,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IACD,WAAW,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,QAAoD;IACvG,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,yCAAyC;IACzC,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,wDAAwD,MAAM,CAAC,YAAY,+DAA+D,EAAE,GAAG,IAAI,EAAE,CAAC;QACxL,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YACrF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,EAAE,GAAG,IAAI,EAAE,CAAC;QAC1K,CAAC;QACD,8EAA8E;IAChF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAChF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,EAAE,GAAG,IAAI,EAAE,CAAC;IACzK,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB,IAAI,CAAC,GAAG,EAAE;IACjE,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,MAAM,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/G,CAAC;IACD,MAAM,MAAM,GAAiB,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,sBAAsB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACrH,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,OAAO,MAAM,kBAAkB,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,yEAAyE,EAAE,CAAC,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mFAAmF;AAEnF,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,aAAa,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACxH,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;AACH,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACnO,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,8CAA8C,EAAE,CAAC;AAC3L,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACxE,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IACvF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,qFAAqF;AACrF,sFAAsF;AACtF,yFAAyF;AACzF,0FAA0F;AAC1F,0FAA0F;AAE1F,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACvH,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QAAC,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Bumped whenever the PRICING table below is re-verified against provider
3
+ * docs / OpenRouter dashboard. Surfaced in the turn log so a future agent
4
+ * (or future me) reading old turn logs can tell if the cost figures used
5
+ * stale rates.
6
+ */
7
+ export declare const COST_PRICING_VERSION = "2026-06-22";
8
+ /**
9
+ * Per-million-token rates in USD. `thinking_per_million` is optional and
10
+ * defaults to `output_per_million` when absent (most providers bill thinking
11
+ * as output tokens; OpenAI o-series is the notable exception but is not
12
+ * currently routed by this pipeline).
13
+ */
14
+ export interface ModelRate {
15
+ input_per_million: number;
16
+ output_per_million: number;
17
+ thinking_per_million?: number;
18
+ }
19
+ /**
20
+ * Pricing table — model name string → per-million-token rates in USD.
21
+ *
22
+ * Add a new model = one entry. The key is the model name as it appears in
23
+ * provider.getName() / GenerateResult.model — these are the strings the
24
+ * pipeline already stamps into the turn log providers[] field. Stay
25
+ * verbatim to what providers emit so lookups are direct.
26
+ *
27
+ * Rates as of 2026-05-25. If you bump these, bump COST_PRICING_VERSION too
28
+ * so old turn-log readers can detect rate drift.
29
+ */
30
+ export declare const PRICING: Record<string, ModelRate>;
31
+ /**
32
+ * Genuinely-FREE models ($0 at the provider). Kept OUT of PRICING — whose entries must be
33
+ * paid/non-zero (the "no accidental $0 lines" guard) — so a real free model is recognized as a
34
+ * known $0 rather than an "unknown model" (which would render as "?" in the cost panel). owl-alpha
35
+ * (the onboarding free option) is the case this fixes. Both OpenRouter-slug and bare forms.
36
+ */
37
+ export declare const FREE_MODELS: Set<string>;
38
+ /**
39
+ * Token usage from one (or accumulated) LLM call(s). Matches the shape of
40
+ * `reflectTokenStats.passN` in context.ts so callers can pass the slot
41
+ * directly.
42
+ */
43
+ export interface TokenUsage {
44
+ input?: number;
45
+ output?: number;
46
+ thinking?: number;
47
+ calls?: number;
48
+ }
49
+ export declare function computeCost(usage: TokenUsage | undefined, model: string | undefined): number | null;
50
+ /**
51
+ * Reset the warn-once memo. Useful for tests; not used in production code.
52
+ */
53
+ export declare function _resetWarnings(): void;
54
+ //# sourceMappingURL=cost-pricing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-pricing.d.ts","sourceRoot":"","sources":["../../../src/middleware/reflect/cost-pricing.ts"],"names":[],"mappings":"AA+CA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB,EAAM,MAAM,CAAC;IAC9B,kBAAkB,EAAK,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA6B7C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,aAGtB,CAAC;AAEH;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAK,MAAM,CAAC;IAClB,MAAM,CAAC,EAAI,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAK,MAAM,CAAC;CACnB;AAcD,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA+BnG;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}