@sema-ai/core 1.275.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (962) hide show
  1. package/CHANGELOG.md +5433 -0
  2. package/LICENSE +27 -0
  3. package/NOTICE.md +30 -0
  4. package/README.md +1040 -0
  5. package/dist/agents/agent-definition.d.ts +10 -0
  6. package/dist/agents/agent-definition.d.ts.map +1 -0
  7. package/dist/agents/agent-definition.js +18 -0
  8. package/dist/agents/agent-definition.js.map +1 -0
  9. package/dist/agents/builtin-agents.d.ts +69 -0
  10. package/dist/agents/builtin-agents.d.ts.map +1 -0
  11. package/dist/agents/builtin-agents.js +177 -0
  12. package/dist/agents/builtin-agents.js.map +1 -0
  13. package/dist/agents/cascade.d.ts +101 -0
  14. package/dist/agents/cascade.d.ts.map +1 -0
  15. package/dist/agents/cascade.js +189 -0
  16. package/dist/agents/cascade.js.map +1 -0
  17. package/dist/agents/observer.d.ts +209 -0
  18. package/dist/agents/observer.d.ts.map +1 -0
  19. package/dist/agents/observer.js +495 -0
  20. package/dist/agents/observer.js.map +1 -0
  21. package/dist/agents/repair-loop.d.ts +236 -0
  22. package/dist/agents/repair-loop.d.ts.map +1 -0
  23. package/dist/agents/repair-loop.js +293 -0
  24. package/dist/agents/repair-loop.js.map +1 -0
  25. package/dist/agents/session-util.d.ts +8 -0
  26. package/dist/agents/session-util.d.ts.map +1 -0
  27. package/dist/agents/session-util.js +9 -0
  28. package/dist/agents/session-util.js.map +1 -0
  29. package/dist/agents/subagent-steps.d.ts +93 -0
  30. package/dist/agents/subagent-steps.d.ts.map +1 -0
  31. package/dist/agents/subagent-steps.js +206 -0
  32. package/dist/agents/subagent-steps.js.map +1 -0
  33. package/dist/agents/subagent.d.ts +441 -0
  34. package/dist/agents/subagent.d.ts.map +1 -0
  35. package/dist/agents/subagent.js +2492 -0
  36. package/dist/agents/subagent.js.map +1 -0
  37. package/dist/agents/suspend-guard.d.ts +35 -0
  38. package/dist/agents/suspend-guard.d.ts.map +1 -0
  39. package/dist/agents/suspend-guard.js +48 -0
  40. package/dist/agents/suspend-guard.js.map +1 -0
  41. package/dist/agents/teacher.d.ts +137 -0
  42. package/dist/agents/teacher.d.ts.map +1 -0
  43. package/dist/agents/teacher.js +575 -0
  44. package/dist/agents/teacher.js.map +1 -0
  45. package/dist/agents/team.d.ts +211 -0
  46. package/dist/agents/team.d.ts.map +1 -0
  47. package/dist/agents/team.js +293 -0
  48. package/dist/agents/team.js.map +1 -0
  49. package/dist/agents/tool-filter.d.ts +29 -0
  50. package/dist/agents/tool-filter.d.ts.map +1 -0
  51. package/dist/agents/tool-filter.js +50 -0
  52. package/dist/agents/tool-filter.js.map +1 -0
  53. package/dist/agents/verify.d.ts +177 -0
  54. package/dist/agents/verify.d.ts.map +1 -0
  55. package/dist/agents/verify.js +305 -0
  56. package/dist/agents/verify.js.map +1 -0
  57. package/dist/bench/metrics.d.ts +714 -0
  58. package/dist/bench/metrics.d.ts.map +1 -0
  59. package/dist/bench/metrics.js +618 -0
  60. package/dist/bench/metrics.js.map +1 -0
  61. package/dist/bin/sema-tb.d.ts +3 -0
  62. package/dist/bin/sema-tb.d.ts.map +1 -0
  63. package/dist/bin/sema-tb.js +516 -0
  64. package/dist/bin/sema-tb.js.map +1 -0
  65. package/dist/bin/tb-env.d.ts +13 -0
  66. package/dist/bin/tb-env.d.ts.map +1 -0
  67. package/dist/bin/tb-env.js +26 -0
  68. package/dist/bin/tb-env.js.map +1 -0
  69. package/dist/brain/anthropic.d.ts +46 -0
  70. package/dist/brain/anthropic.d.ts.map +1 -0
  71. package/dist/brain/anthropic.js +830 -0
  72. package/dist/brain/anthropic.js.map +1 -0
  73. package/dist/brain/circuit-breaker.d.ts +46 -0
  74. package/dist/brain/circuit-breaker.d.ts.map +1 -0
  75. package/dist/brain/circuit-breaker.js +173 -0
  76. package/dist/brain/circuit-breaker.js.map +1 -0
  77. package/dist/brain/degrading.d.ts +98 -0
  78. package/dist/brain/degrading.d.ts.map +1 -0
  79. package/dist/brain/degrading.js +249 -0
  80. package/dist/brain/degrading.js.map +1 -0
  81. package/dist/brain/errors.d.ts +31 -0
  82. package/dist/brain/errors.d.ts.map +1 -0
  83. package/dist/brain/errors.js +58 -0
  84. package/dist/brain/errors.js.map +1 -0
  85. package/dist/brain/failover.d.ts +18 -0
  86. package/dist/brain/failover.d.ts.map +1 -0
  87. package/dist/brain/failover.js +118 -0
  88. package/dist/brain/failover.js.map +1 -0
  89. package/dist/brain/model-presets.d.ts +36 -0
  90. package/dist/brain/model-presets.d.ts.map +1 -0
  91. package/dist/brain/model-presets.js +54 -0
  92. package/dist/brain/model-presets.js.map +1 -0
  93. package/dist/brain/openai.d.ts +43 -0
  94. package/dist/brain/openai.d.ts.map +1 -0
  95. package/dist/brain/openai.js +784 -0
  96. package/dist/brain/openai.js.map +1 -0
  97. package/dist/brain/reasoning.d.ts +138 -0
  98. package/dist/brain/reasoning.d.ts.map +1 -0
  99. package/dist/brain/reasoning.js +146 -0
  100. package/dist/brain/reasoning.js.map +1 -0
  101. package/dist/brain/repetition.d.ts +60 -0
  102. package/dist/brain/repetition.d.ts.map +1 -0
  103. package/dist/brain/repetition.js +121 -0
  104. package/dist/brain/repetition.js.map +1 -0
  105. package/dist/brain/request-params.d.ts +29 -0
  106. package/dist/brain/request-params.d.ts.map +1 -0
  107. package/dist/brain/request-params.js +78 -0
  108. package/dist/brain/request-params.js.map +1 -0
  109. package/dist/brain/retry.d.ts +18 -0
  110. package/dist/brain/retry.d.ts.map +1 -0
  111. package/dist/brain/retry.js +42 -0
  112. package/dist/brain/retry.js.map +1 -0
  113. package/dist/brain/routing.d.ts +19 -0
  114. package/dist/brain/routing.d.ts.map +1 -0
  115. package/dist/brain/routing.js +44 -0
  116. package/dist/brain/routing.js.map +1 -0
  117. package/dist/brain/status-sink.d.ts +46 -0
  118. package/dist/brain/status-sink.d.ts.map +1 -0
  119. package/dist/brain/status-sink.js +36 -0
  120. package/dist/brain/status-sink.js.map +1 -0
  121. package/dist/brain/stream-engine.d.ts +85 -0
  122. package/dist/brain/stream-engine.d.ts.map +1 -0
  123. package/dist/brain/stream-engine.js +391 -0
  124. package/dist/brain/stream-engine.js.map +1 -0
  125. package/dist/brain/timeout.d.ts +44 -0
  126. package/dist/brain/timeout.d.ts.map +1 -0
  127. package/dist/brain/timeout.js +41 -0
  128. package/dist/brain/timeout.js.map +1 -0
  129. package/dist/brain/tool-call-repair.d.ts +15 -0
  130. package/dist/brain/tool-call-repair.d.ts.map +1 -0
  131. package/dist/brain/tool-call-repair.js +67 -0
  132. package/dist/brain/tool-call-repair.js.map +1 -0
  133. package/dist/brain/walltime.d.ts +14 -0
  134. package/dist/brain/walltime.d.ts.map +1 -0
  135. package/dist/brain/walltime.js +14 -0
  136. package/dist/brain/walltime.js.map +1 -0
  137. package/dist/core/arg-summary.d.ts +19 -0
  138. package/dist/core/arg-summary.d.ts.map +1 -0
  139. package/dist/core/arg-summary.js +96 -0
  140. package/dist/core/arg-summary.js.map +1 -0
  141. package/dist/core/ask-question.d.ts +113 -0
  142. package/dist/core/ask-question.d.ts.map +1 -0
  143. package/dist/core/ask-question.js +246 -0
  144. package/dist/core/ask-question.js.map +1 -0
  145. package/dist/core/auto-compaction.d.ts +341 -0
  146. package/dist/core/auto-compaction.d.ts.map +1 -0
  147. package/dist/core/auto-compaction.js +495 -0
  148. package/dist/core/auto-compaction.js.map +1 -0
  149. package/dist/core/auto-promote.d.ts +126 -0
  150. package/dist/core/auto-promote.d.ts.map +1 -0
  151. package/dist/core/auto-promote.js +171 -0
  152. package/dist/core/auto-promote.js.map +1 -0
  153. package/dist/core/background-shell.d.ts +128 -0
  154. package/dist/core/background-shell.d.ts.map +1 -0
  155. package/dist/core/background-shell.js +42 -0
  156. package/dist/core/background-shell.js.map +1 -0
  157. package/dist/core/cache-break-detector.d.ts +63 -0
  158. package/dist/core/cache-break-detector.d.ts.map +1 -0
  159. package/dist/core/cache-break-detector.js +0 -0
  160. package/dist/core/cache-break-detector.js.map +1 -0
  161. package/dist/core/canonical-json.d.ts +45 -0
  162. package/dist/core/canonical-json.d.ts.map +1 -0
  163. package/dist/core/canonical-json.js +132 -0
  164. package/dist/core/canonical-json.js.map +1 -0
  165. package/dist/core/checkpoint-store.d.ts +1101 -0
  166. package/dist/core/checkpoint-store.d.ts.map +1 -0
  167. package/dist/core/checkpoint-store.js +514 -0
  168. package/dist/core/checkpoint-store.js.map +1 -0
  169. package/dist/core/consolidate-scope.d.ts +94 -0
  170. package/dist/core/consolidate-scope.d.ts.map +1 -0
  171. package/dist/core/consolidate-scope.js +158 -0
  172. package/dist/core/consolidate-scope.js.map +1 -0
  173. package/dist/core/context-edit.d.ts +82 -0
  174. package/dist/core/context-edit.d.ts.map +1 -0
  175. package/dist/core/context-edit.js +149 -0
  176. package/dist/core/context-edit.js.map +1 -0
  177. package/dist/core/context-guard.d.ts +43 -0
  178. package/dist/core/context-guard.d.ts.map +1 -0
  179. package/dist/core/context-guard.js +171 -0
  180. package/dist/core/context-guard.js.map +1 -0
  181. package/dist/core/dynamic-recall.d.ts +100 -0
  182. package/dist/core/dynamic-recall.d.ts.map +1 -0
  183. package/dist/core/dynamic-recall.js +108 -0
  184. package/dist/core/dynamic-recall.js.map +1 -0
  185. package/dist/core/exec-gate.d.ts +74 -0
  186. package/dist/core/exec-gate.d.ts.map +1 -0
  187. package/dist/core/exec-gate.js +143 -0
  188. package/dist/core/exec-gate.js.map +1 -0
  189. package/dist/core/exec-output-tail.d.ts +37 -0
  190. package/dist/core/exec-output-tail.d.ts.map +1 -0
  191. package/dist/core/exec-output-tail.js +63 -0
  192. package/dist/core/exec-output-tail.js.map +1 -0
  193. package/dist/core/file-snapshot-store.d.ts +137 -0
  194. package/dist/core/file-snapshot-store.d.ts.map +1 -0
  195. package/dist/core/file-snapshot-store.js +319 -0
  196. package/dist/core/file-snapshot-store.js.map +1 -0
  197. package/dist/core/git-worktree-env.d.ts +41 -0
  198. package/dist/core/git-worktree-env.d.ts.map +1 -0
  199. package/dist/core/git-worktree-env.js +64 -0
  200. package/dist/core/git-worktree-env.js.map +1 -0
  201. package/dist/core/hooks.d.ts +372 -0
  202. package/dist/core/hooks.d.ts.map +1 -0
  203. package/dist/core/hooks.js +269 -0
  204. package/dist/core/hooks.js.map +1 -0
  205. package/dist/core/lsp-diagnostics.d.ts +74 -0
  206. package/dist/core/lsp-diagnostics.d.ts.map +1 -0
  207. package/dist/core/lsp-diagnostics.js +125 -0
  208. package/dist/core/lsp-diagnostics.js.map +1 -0
  209. package/dist/core/lsp-protocol.d.ts +28 -0
  210. package/dist/core/lsp-protocol.d.ts.map +1 -0
  211. package/dist/core/lsp-protocol.js +179 -0
  212. package/dist/core/lsp-protocol.js.map +1 -0
  213. package/dist/core/lsp-session.d.ts +56 -0
  214. package/dist/core/lsp-session.d.ts.map +1 -0
  215. package/dist/core/lsp-session.js +185 -0
  216. package/dist/core/lsp-session.js.map +1 -0
  217. package/dist/core/lsp.d.ts +132 -0
  218. package/dist/core/lsp.d.ts.map +1 -0
  219. package/dist/core/lsp.js +147 -0
  220. package/dist/core/lsp.js.map +1 -0
  221. package/dist/core/mcp.d.ts +294 -0
  222. package/dist/core/mcp.d.ts.map +1 -0
  223. package/dist/core/mcp.js +992 -0
  224. package/dist/core/mcp.js.map +1 -0
  225. package/dist/core/media-byte-cap.d.ts +34 -0
  226. package/dist/core/media-byte-cap.d.ts.map +1 -0
  227. package/dist/core/media-byte-cap.js +76 -0
  228. package/dist/core/media-byte-cap.js.map +1 -0
  229. package/dist/core/memory-engine/data-plane.d.ts +103 -0
  230. package/dist/core/memory-engine/data-plane.d.ts.map +1 -0
  231. package/dist/core/memory-engine/data-plane.js +272 -0
  232. package/dist/core/memory-engine/data-plane.js.map +1 -0
  233. package/dist/core/memory-engine/dual-root.d.ts +40 -0
  234. package/dist/core/memory-engine/dual-root.d.ts.map +1 -0
  235. package/dist/core/memory-engine/dual-root.js +95 -0
  236. package/dist/core/memory-engine/dual-root.js.map +1 -0
  237. package/dist/core/memory-engine/engine.d.ts +161 -0
  238. package/dist/core/memory-engine/engine.d.ts.map +1 -0
  239. package/dist/core/memory-engine/engine.js +1110 -0
  240. package/dist/core/memory-engine/engine.js.map +1 -0
  241. package/dist/core/memory-engine/file-backend.d.ts +162 -0
  242. package/dist/core/memory-engine/file-backend.d.ts.map +1 -0
  243. package/dist/core/memory-engine/file-backend.js +948 -0
  244. package/dist/core/memory-engine/file-backend.js.map +1 -0
  245. package/dist/core/memory-engine/frontmatter.d.ts +24 -0
  246. package/dist/core/memory-engine/frontmatter.d.ts.map +1 -0
  247. package/dist/core/memory-engine/frontmatter.js +135 -0
  248. package/dist/core/memory-engine/frontmatter.js.map +1 -0
  249. package/dist/core/memory-engine/index.d.ts +13 -0
  250. package/dist/core/memory-engine/index.d.ts.map +1 -0
  251. package/dist/core/memory-engine/index.js +28 -0
  252. package/dist/core/memory-engine/index.js.map +1 -0
  253. package/dist/core/memory-engine/layout.d.ts +123 -0
  254. package/dist/core/memory-engine/layout.d.ts.map +1 -0
  255. package/dist/core/memory-engine/layout.js +643 -0
  256. package/dist/core/memory-engine/layout.js.map +1 -0
  257. package/dist/core/memory-engine/memory-backend-contract.d.ts +22 -0
  258. package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -0
  259. package/dist/core/memory-engine/memory-backend-contract.js +271 -0
  260. package/dist/core/memory-engine/memory-backend-contract.js.map +1 -0
  261. package/dist/core/memory-engine/migrate.d.ts +17 -0
  262. package/dist/core/memory-engine/migrate.d.ts.map +1 -0
  263. package/dist/core/memory-engine/migrate.js +35 -0
  264. package/dist/core/memory-engine/migrate.js.map +1 -0
  265. package/dist/core/memory-engine/scan.d.ts +20 -0
  266. package/dist/core/memory-engine/scan.d.ts.map +1 -0
  267. package/dist/core/memory-engine/scan.js +84 -0
  268. package/dist/core/memory-engine/scan.js.map +1 -0
  269. package/dist/core/memory-engine/scope-contract.d.ts +104 -0
  270. package/dist/core/memory-engine/scope-contract.d.ts.map +1 -0
  271. package/dist/core/memory-engine/scope-contract.js +288 -0
  272. package/dist/core/memory-engine/scope-contract.js.map +1 -0
  273. package/dist/core/memory-engine/sync-client.d.ts +100 -0
  274. package/dist/core/memory-engine/sync-client.d.ts.map +1 -0
  275. package/dist/core/memory-engine/sync-client.js +328 -0
  276. package/dist/core/memory-engine/sync-client.js.map +1 -0
  277. package/dist/core/memory-engine/sync.d.ts +97 -0
  278. package/dist/core/memory-engine/sync.d.ts.map +1 -0
  279. package/dist/core/memory-engine/sync.js +91 -0
  280. package/dist/core/memory-engine/sync.js.map +1 -0
  281. package/dist/core/memory-engine/types.d.ts +279 -0
  282. package/dist/core/memory-engine/types.d.ts.map +1 -0
  283. package/dist/core/memory-engine/types.js +9 -0
  284. package/dist/core/memory-engine/types.js.map +1 -0
  285. package/dist/core/memory-recall.d.ts +261 -0
  286. package/dist/core/memory-recall.d.ts.map +1 -0
  287. package/dist/core/memory-recall.js +600 -0
  288. package/dist/core/memory-recall.js.map +1 -0
  289. package/dist/core/memory-vector.d.ts +24 -0
  290. package/dist/core/memory-vector.d.ts.map +1 -0
  291. package/dist/core/memory-vector.js +51 -0
  292. package/dist/core/memory-vector.js.map +1 -0
  293. package/dist/core/memory.d.ts +502 -0
  294. package/dist/core/memory.d.ts.map +1 -0
  295. package/dist/core/memory.js +881 -0
  296. package/dist/core/memory.js.map +1 -0
  297. package/dist/core/message-utils.d.ts +7 -0
  298. package/dist/core/message-utils.d.ts.map +1 -0
  299. package/dist/core/message-utils.js +10 -0
  300. package/dist/core/message-utils.js.map +1 -0
  301. package/dist/core/oracle-isolation.d.ts +85 -0
  302. package/dist/core/oracle-isolation.d.ts.map +1 -0
  303. package/dist/core/oracle-isolation.js +121 -0
  304. package/dist/core/oracle-isolation.js.map +1 -0
  305. package/dist/core/permission-rules.d.ts +102 -0
  306. package/dist/core/permission-rules.d.ts.map +1 -0
  307. package/dist/core/permission-rules.js +357 -0
  308. package/dist/core/permission-rules.js.map +1 -0
  309. package/dist/core/present-plan-tool.d.ts +28 -0
  310. package/dist/core/present-plan-tool.d.ts.map +1 -0
  311. package/dist/core/present-plan-tool.js +119 -0
  312. package/dist/core/present-plan-tool.js.map +1 -0
  313. package/dist/core/pricing.d.ts +48 -0
  314. package/dist/core/pricing.d.ts.map +1 -0
  315. package/dist/core/pricing.js +46 -0
  316. package/dist/core/pricing.js.map +1 -0
  317. package/dist/core/property-harness.d.ts +126 -0
  318. package/dist/core/property-harness.d.ts.map +1 -0
  319. package/dist/core/property-harness.js +192 -0
  320. package/dist/core/property-harness.js.map +1 -0
  321. package/dist/core/push-queue.d.ts +10 -0
  322. package/dist/core/push-queue.d.ts.map +1 -0
  323. package/dist/core/push-queue.js +42 -0
  324. package/dist/core/push-queue.js.map +1 -0
  325. package/dist/core/remote-env.d.ts +432 -0
  326. package/dist/core/remote-env.d.ts.map +1 -0
  327. package/dist/core/remote-env.js +77 -0
  328. package/dist/core/remote-env.js.map +1 -0
  329. package/dist/core/roles.d.ts +74 -0
  330. package/dist/core/roles.d.ts.map +1 -0
  331. package/dist/core/roles.js +272 -0
  332. package/dist/core/roles.js.map +1 -0
  333. package/dist/core/runner/active-skill-scope.d.ts +64 -0
  334. package/dist/core/runner/active-skill-scope.d.ts.map +1 -0
  335. package/dist/core/runner/active-skill-scope.js +197 -0
  336. package/dist/core/runner/active-skill-scope.js.map +1 -0
  337. package/dist/core/runner/assemble-result.d.ts +191 -0
  338. package/dist/core/runner/assemble-result.d.ts.map +1 -0
  339. package/dist/core/runner/assemble-result.js +250 -0
  340. package/dist/core/runner/assemble-result.js.map +1 -0
  341. package/dist/core/runner/call-cap.d.ts +130 -0
  342. package/dist/core/runner/call-cap.d.ts.map +1 -0
  343. package/dist/core/runner/call-cap.js +151 -0
  344. package/dist/core/runner/call-cap.js.map +1 -0
  345. package/dist/core/runner/grounding-signal.d.ts +12 -0
  346. package/dist/core/runner/grounding-signal.d.ts.map +1 -0
  347. package/dist/core/runner/grounding-signal.js +94 -0
  348. package/dist/core/runner/grounding-signal.js.map +1 -0
  349. package/dist/core/runner/image.d.ts +23 -0
  350. package/dist/core/runner/image.d.ts.map +1 -0
  351. package/dist/core/runner/image.js +151 -0
  352. package/dist/core/runner/image.js.map +1 -0
  353. package/dist/core/runner/memory-consolidation.d.ts +112 -0
  354. package/dist/core/runner/memory-consolidation.d.ts.map +1 -0
  355. package/dist/core/runner/memory-consolidation.js +372 -0
  356. package/dist/core/runner/memory-consolidation.js.map +1 -0
  357. package/dist/core/runner/prepare-task.d.ts +583 -0
  358. package/dist/core/runner/prepare-task.d.ts.map +1 -0
  359. package/dist/core/runner/prepare-task.js +3612 -0
  360. package/dist/core/runner/prepare-task.js.map +1 -0
  361. package/dist/core/runner/prompt-suggestions.d.ts +33 -0
  362. package/dist/core/runner/prompt-suggestions.d.ts.map +1 -0
  363. package/dist/core/runner/prompt-suggestions.js +116 -0
  364. package/dist/core/runner/prompt-suggestions.js.map +1 -0
  365. package/dist/core/runner/runtask.d.ts +274 -0
  366. package/dist/core/runner/runtask.d.ts.map +1 -0
  367. package/dist/core/runner/runtask.js +4606 -0
  368. package/dist/core/runner/runtask.js.map +1 -0
  369. package/dist/core/runner/session-rule-policy.d.ts +28 -0
  370. package/dist/core/runner/session-rule-policy.d.ts.map +1 -0
  371. package/dist/core/runner/session-rule-policy.js +110 -0
  372. package/dist/core/runner/session-rule-policy.js.map +1 -0
  373. package/dist/core/runner/strict-output-schema.d.ts +36 -0
  374. package/dist/core/runner/strict-output-schema.d.ts.map +1 -0
  375. package/dist/core/runner/strict-output-schema.js +365 -0
  376. package/dist/core/runner/strict-output-schema.js.map +1 -0
  377. package/dist/core/runner/synthetic-tools.d.ts +72 -0
  378. package/dist/core/runner/synthetic-tools.d.ts.map +1 -0
  379. package/dist/core/runner/synthetic-tools.js +203 -0
  380. package/dist/core/runner/synthetic-tools.js.map +1 -0
  381. package/dist/core/runner/tool-disclosure.d.ts +117 -0
  382. package/dist/core/runner/tool-disclosure.d.ts.map +1 -0
  383. package/dist/core/runner/tool-disclosure.js +0 -0
  384. package/dist/core/runner/tool-disclosure.js.map +1 -0
  385. package/dist/core/runner/turn-attachments.d.ts +381 -0
  386. package/dist/core/runner/turn-attachments.d.ts.map +1 -0
  387. package/dist/core/runner/turn-attachments.js +596 -0
  388. package/dist/core/runner/turn-attachments.js.map +1 -0
  389. package/dist/core/runner/usage-accounting.d.ts +35 -0
  390. package/dist/core/runner/usage-accounting.d.ts.map +1 -0
  391. package/dist/core/runner/usage-accounting.js +45 -0
  392. package/dist/core/runner/usage-accounting.js.map +1 -0
  393. package/dist/core/runtime.d.ts +9 -0
  394. package/dist/core/runtime.d.ts.map +1 -0
  395. package/dist/core/runtime.js +17 -0
  396. package/dist/core/runtime.js.map +1 -0
  397. package/dist/core/safety-axis-vocab.d.ts +33 -0
  398. package/dist/core/safety-axis-vocab.d.ts.map +1 -0
  399. package/dist/core/safety-axis-vocab.js +35 -0
  400. package/dist/core/safety-axis-vocab.js.map +1 -0
  401. package/dist/core/safety-merge-corpus.d.ts +48 -0
  402. package/dist/core/safety-merge-corpus.d.ts.map +1 -0
  403. package/dist/core/safety-merge-corpus.js +203 -0
  404. package/dist/core/safety-merge-corpus.js.map +1 -0
  405. package/dist/core/scheduler.d.ts +126 -0
  406. package/dist/core/scheduler.d.ts.map +1 -0
  407. package/dist/core/scheduler.js +54 -0
  408. package/dist/core/scheduler.js.map +1 -0
  409. package/dist/core/secret-env.d.ts +23 -0
  410. package/dist/core/secret-env.d.ts.map +1 -0
  411. package/dist/core/secret-env.js +35 -0
  412. package/dist/core/secret-env.js.map +1 -0
  413. package/dist/core/select-model.d.ts +26 -0
  414. package/dist/core/select-model.d.ts.map +1 -0
  415. package/dist/core/select-model.js +58 -0
  416. package/dist/core/select-model.js.map +1 -0
  417. package/dist/core/sensitive-path-policy.d.ts +24 -0
  418. package/dist/core/sensitive-path-policy.d.ts.map +1 -0
  419. package/dist/core/sensitive-path-policy.js +96 -0
  420. package/dist/core/sensitive-path-policy.js.map +1 -0
  421. package/dist/core/session-policy-store.d.ts +102 -0
  422. package/dist/core/session-policy-store.d.ts.map +1 -0
  423. package/dist/core/session-policy-store.js +177 -0
  424. package/dist/core/session-policy-store.js.map +1 -0
  425. package/dist/core/session-reconcile.d.ts +63 -0
  426. package/dist/core/session-reconcile.d.ts.map +1 -0
  427. package/dist/core/session-reconcile.js +71 -0
  428. package/dist/core/session-reconcile.js.map +1 -0
  429. package/dist/core/session-store.d.ts +99 -0
  430. package/dist/core/session-store.d.ts.map +1 -0
  431. package/dist/core/session-store.js +298 -0
  432. package/dist/core/session-store.js.map +1 -0
  433. package/dist/core/session.d.ts +144 -0
  434. package/dist/core/session.d.ts.map +1 -0
  435. package/dist/core/session.js +56 -0
  436. package/dist/core/session.js.map +1 -0
  437. package/dist/core/spec-contract.d.ts +147 -0
  438. package/dist/core/spec-contract.d.ts.map +1 -0
  439. package/dist/core/spec-contract.js +340 -0
  440. package/dist/core/spec-contract.js.map +1 -0
  441. package/dist/core/strategy-store.d.ts +50 -0
  442. package/dist/core/strategy-store.d.ts.map +1 -0
  443. package/dist/core/strategy-store.js +100 -0
  444. package/dist/core/strategy-store.js.map +1 -0
  445. package/dist/core/stub-env.d.ts +35 -0
  446. package/dist/core/stub-env.d.ts.map +1 -0
  447. package/dist/core/stub-env.js +69 -0
  448. package/dist/core/stub-env.js.map +1 -0
  449. package/dist/core/task-notification.d.ts +115 -0
  450. package/dist/core/task-notification.d.ts.map +1 -0
  451. package/dist/core/task-notification.js +247 -0
  452. package/dist/core/task-notification.js.map +1 -0
  453. package/dist/core/task-outcome.d.ts +80 -0
  454. package/dist/core/task-outcome.d.ts.map +1 -0
  455. package/dist/core/task-outcome.js +40 -0
  456. package/dist/core/task-outcome.js.map +1 -0
  457. package/dist/core/task-registry.d.ts +349 -0
  458. package/dist/core/task-registry.d.ts.map +1 -0
  459. package/dist/core/task-registry.js +1751 -0
  460. package/dist/core/task-registry.js.map +1 -0
  461. package/dist/core/tighten-task-spec.d.ts +27 -0
  462. package/dist/core/tighten-task-spec.d.ts.map +1 -0
  463. package/dist/core/tighten-task-spec.js +95 -0
  464. package/dist/core/tighten-task-spec.js.map +1 -0
  465. package/dist/core/tool-detach.d.ts +31 -0
  466. package/dist/core/tool-detach.d.ts.map +1 -0
  467. package/dist/core/tool-detach.js +62 -0
  468. package/dist/core/tool-detach.js.map +1 -0
  469. package/dist/core/tool-errors.d.ts +72 -0
  470. package/dist/core/tool-errors.d.ts.map +1 -0
  471. package/dist/core/tool-errors.js +194 -0
  472. package/dist/core/tool-errors.js.map +1 -0
  473. package/dist/core/tool-name-aliases.d.ts +5 -0
  474. package/dist/core/tool-name-aliases.d.ts.map +1 -0
  475. package/dist/core/tool-name-aliases.js +130 -0
  476. package/dist/core/tool-name-aliases.js.map +1 -0
  477. package/dist/core/tool-policy.d.ts +295 -0
  478. package/dist/core/tool-policy.d.ts.map +1 -0
  479. package/dist/core/tool-policy.js +567 -0
  480. package/dist/core/tool-policy.js.map +1 -0
  481. package/dist/core/tool-result-budget.d.ts +44 -0
  482. package/dist/core/tool-result-budget.d.ts.map +1 -0
  483. package/dist/core/tool-result-budget.js +140 -0
  484. package/dist/core/tool-result-budget.js.map +1 -0
  485. package/dist/core/tool-result-store.d.ts +136 -0
  486. package/dist/core/tool-result-store.d.ts.map +1 -0
  487. package/dist/core/tool-result-store.js +219 -0
  488. package/dist/core/tool-result-store.js.map +1 -0
  489. package/dist/core/tools.d.ts +14 -0
  490. package/dist/core/tools.d.ts.map +1 -0
  491. package/dist/core/tools.js +98 -0
  492. package/dist/core/tools.js.map +1 -0
  493. package/dist/core/trace.d.ts +340 -0
  494. package/dist/core/trace.d.ts.map +1 -0
  495. package/dist/core/trace.js +12 -0
  496. package/dist/core/trace.js.map +1 -0
  497. package/dist/core/types.d.ts +2828 -0
  498. package/dist/core/types.d.ts.map +1 -0
  499. package/dist/core/types.js +2 -0
  500. package/dist/core/types.js.map +1 -0
  501. package/dist/core/untrusted-egress.d.ts +32 -0
  502. package/dist/core/untrusted-egress.d.ts.map +1 -0
  503. package/dist/core/untrusted-egress.js +49 -0
  504. package/dist/core/untrusted-egress.js.map +1 -0
  505. package/dist/core/untrusted-text.d.ts +64 -0
  506. package/dist/core/untrusted-text.d.ts.map +1 -0
  507. package/dist/core/untrusted-text.js +119 -0
  508. package/dist/core/untrusted-text.js.map +1 -0
  509. package/dist/core/warm-resume.d.ts +23 -0
  510. package/dist/core/warm-resume.d.ts.map +1 -0
  511. package/dist/core/warm-resume.js +28 -0
  512. package/dist/core/warm-resume.js.map +1 -0
  513. package/dist/core/with-retry.d.ts +43 -0
  514. package/dist/core/with-retry.d.ts.map +1 -0
  515. package/dist/core/with-retry.js +59 -0
  516. package/dist/core/with-retry.js.map +1 -0
  517. package/dist/core/workflow-journal-store.d.ts +44 -0
  518. package/dist/core/workflow-journal-store.d.ts.map +1 -0
  519. package/dist/core/workflow-journal-store.js +47 -0
  520. package/dist/core/workflow-journal-store.js.map +1 -0
  521. package/dist/core/workflow-run-store-contract.d.ts +31 -0
  522. package/dist/core/workflow-run-store-contract.d.ts.map +1 -0
  523. package/dist/core/workflow-run-store-contract.js +191 -0
  524. package/dist/core/workflow-run-store-contract.js.map +1 -0
  525. package/dist/core/workflow-run-store.d.ts +149 -0
  526. package/dist/core/workflow-run-store.d.ts.map +1 -0
  527. package/dist/core/workflow-run-store.js +110 -0
  528. package/dist/core/workflow-run-store.js.map +1 -0
  529. package/dist/engine/compaction/compaction.d.ts +139 -0
  530. package/dist/engine/compaction/compaction.d.ts.map +1 -0
  531. package/dist/engine/compaction/compaction.js +1030 -0
  532. package/dist/engine/compaction/compaction.js.map +1 -0
  533. package/dist/engine/compaction/utils.d.ts +45 -0
  534. package/dist/engine/compaction/utils.d.ts.map +1 -0
  535. package/dist/engine/compaction/utils.js +203 -0
  536. package/dist/engine/compaction/utils.js.map +1 -0
  537. package/dist/engine/execution-env/kill-tree.d.ts +20 -0
  538. package/dist/engine/execution-env/kill-tree.d.ts.map +1 -0
  539. package/dist/engine/execution-env/kill-tree.js +183 -0
  540. package/dist/engine/execution-env/kill-tree.js.map +1 -0
  541. package/dist/engine/execution-env/node-execution-env.d.ts +133 -0
  542. package/dist/engine/execution-env/node-execution-env.d.ts.map +1 -0
  543. package/dist/engine/execution-env/node-execution-env.js +1031 -0
  544. package/dist/engine/execution-env/node-execution-env.js.map +1 -0
  545. package/dist/engine/harness/agent-harness.d.ts +174 -0
  546. package/dist/engine/harness/agent-harness.d.ts.map +1 -0
  547. package/dist/engine/harness/agent-harness.js +1053 -0
  548. package/dist/engine/harness/agent-harness.js.map +1 -0
  549. package/dist/engine/harness/messages.d.ts +17 -0
  550. package/dist/engine/harness/messages.d.ts.map +1 -0
  551. package/dist/engine/harness/messages.js +122 -0
  552. package/dist/engine/harness/messages.js.map +1 -0
  553. package/dist/engine/harness/types.d.ts +713 -0
  554. package/dist/engine/harness/types.d.ts.map +1 -0
  555. package/dist/engine/harness/types.js +100 -0
  556. package/dist/engine/harness/types.js.map +1 -0
  557. package/dist/engine/llm/diagnostics.d.ts +23 -0
  558. package/dist/engine/llm/diagnostics.d.ts.map +1 -0
  559. package/dist/engine/llm/diagnostics.js +32 -0
  560. package/dist/engine/llm/diagnostics.js.map +1 -0
  561. package/dist/engine/llm/event-stream.d.ts +25 -0
  562. package/dist/engine/llm/event-stream.d.ts.map +1 -0
  563. package/dist/engine/llm/event-stream.js +103 -0
  564. package/dist/engine/llm/event-stream.js.map +1 -0
  565. package/dist/engine/llm/index.d.ts +12 -0
  566. package/dist/engine/llm/index.d.ts.map +1 -0
  567. package/dist/engine/llm/index.js +12 -0
  568. package/dist/engine/llm/index.js.map +1 -0
  569. package/dist/engine/llm/types.d.ts +753 -0
  570. package/dist/engine/llm/types.d.ts.map +1 -0
  571. package/dist/engine/llm/types.js +2 -0
  572. package/dist/engine/llm/types.js.map +1 -0
  573. package/dist/engine/llm/validation.d.ts +8 -0
  574. package/dist/engine/llm/validation.d.ts.map +1 -0
  575. package/dist/engine/llm/validation.js +318 -0
  576. package/dist/engine/llm/validation.js.map +1 -0
  577. package/dist/engine/loop/agent-loop.d.ts +74 -0
  578. package/dist/engine/loop/agent-loop.d.ts.map +1 -0
  579. package/dist/engine/loop/agent-loop.js +1490 -0
  580. package/dist/engine/loop/agent-loop.js.map +1 -0
  581. package/dist/engine/loop/runtime-deps.d.ts +17 -0
  582. package/dist/engine/loop/runtime-deps.d.ts.map +1 -0
  583. package/dist/engine/loop/runtime-deps.js +21 -0
  584. package/dist/engine/loop/runtime-deps.js.map +1 -0
  585. package/dist/engine/loop/types.d.ts +609 -0
  586. package/dist/engine/loop/types.d.ts.map +1 -0
  587. package/dist/engine/loop/types.js +2 -0
  588. package/dist/engine/loop/types.js.map +1 -0
  589. package/dist/engine/lsp/frame-decoder.d.ts +16 -0
  590. package/dist/engine/lsp/frame-decoder.d.ts.map +1 -0
  591. package/dist/engine/lsp/frame-decoder.js +53 -0
  592. package/dist/engine/lsp/frame-decoder.js.map +1 -0
  593. package/dist/engine/lsp/node-lsp-manager.d.ts +105 -0
  594. package/dist/engine/lsp/node-lsp-manager.d.ts.map +1 -0
  595. package/dist/engine/lsp/node-lsp-manager.js +343 -0
  596. package/dist/engine/lsp/node-lsp-manager.js.map +1 -0
  597. package/dist/engine/lsp/stdio-lsp-transport.d.ts +37 -0
  598. package/dist/engine/lsp/stdio-lsp-transport.d.ts.map +1 -0
  599. package/dist/engine/lsp/stdio-lsp-transport.js +185 -0
  600. package/dist/engine/lsp/stdio-lsp-transport.js.map +1 -0
  601. package/dist/engine/session/import-validate.d.ts +44 -0
  602. package/dist/engine/session/import-validate.d.ts.map +1 -0
  603. package/dist/engine/session/import-validate.js +92 -0
  604. package/dist/engine/session/import-validate.js.map +1 -0
  605. package/dist/engine/session/memory-repo.d.ts +25 -0
  606. package/dist/engine/session/memory-repo.d.ts.map +1 -0
  607. package/dist/engine/session/memory-repo.js +59 -0
  608. package/dist/engine/session/memory-repo.js.map +1 -0
  609. package/dist/engine/session/memory-storage.d.ts +14 -0
  610. package/dist/engine/session/memory-storage.d.ts.map +1 -0
  611. package/dist/engine/session/memory-storage.js +17 -0
  612. package/dist/engine/session/memory-storage.js.map +1 -0
  613. package/dist/engine/session/repo-utils.d.ts +11 -0
  614. package/dist/engine/session/repo-utils.d.ts.map +1 -0
  615. package/dist/engine/session/repo-utils.js +40 -0
  616. package/dist/engine/session/repo-utils.js.map +1 -0
  617. package/dist/engine/session/session.d.ts +34 -0
  618. package/dist/engine/session/session.d.ts.map +1 -0
  619. package/dist/engine/session/session.js +227 -0
  620. package/dist/engine/session/session.js.map +1 -0
  621. package/dist/engine/session/storage-base.d.ts +38 -0
  622. package/dist/engine/session/storage-base.d.ts.map +1 -0
  623. package/dist/engine/session/storage-base.js +157 -0
  624. package/dist/engine/session/storage-base.js.map +1 -0
  625. package/dist/engine/session/timestamps.d.ts +3 -0
  626. package/dist/engine/session/timestamps.d.ts.map +1 -0
  627. package/dist/engine/session/timestamps.js +15 -0
  628. package/dist/engine/session/timestamps.js.map +1 -0
  629. package/dist/engine/session/uuid.d.ts +2 -0
  630. package/dist/engine/session/uuid.d.ts.map +1 -0
  631. package/dist/engine/session/uuid.js +50 -0
  632. package/dist/engine/session/uuid.js.map +1 -0
  633. package/dist/index.d.ts +160 -0
  634. package/dist/index.d.ts.map +1 -0
  635. package/dist/index.js +374 -0
  636. package/dist/index.js.map +1 -0
  637. package/dist/internal/harness.d.ts +26 -0
  638. package/dist/internal/harness.d.ts.map +1 -0
  639. package/dist/internal/harness.js +24 -0
  640. package/dist/internal/harness.js.map +1 -0
  641. package/dist/internal/llm.d.ts +9 -0
  642. package/dist/internal/llm.d.ts.map +1 -0
  643. package/dist/internal/llm.js +8 -0
  644. package/dist/internal/llm.js.map +1 -0
  645. package/dist/orchestration/builtin-workflows.d.ts +44 -0
  646. package/dist/orchestration/builtin-workflows.d.ts.map +1 -0
  647. package/dist/orchestration/builtin-workflows.js +165 -0
  648. package/dist/orchestration/builtin-workflows.js.map +1 -0
  649. package/dist/orchestration/dev-vm-script-runner.d.ts +24 -0
  650. package/dist/orchestration/dev-vm-script-runner.d.ts.map +1 -0
  651. package/dist/orchestration/dev-vm-script-runner.js +106 -0
  652. package/dist/orchestration/dev-vm-script-runner.js.map +1 -0
  653. package/dist/orchestration/goal.d.ts +97 -0
  654. package/dist/orchestration/goal.d.ts.map +1 -0
  655. package/dist/orchestration/goal.js +248 -0
  656. package/dist/orchestration/goal.js.map +1 -0
  657. package/dist/orchestration/run-spec.d.ts +63 -0
  658. package/dist/orchestration/run-spec.d.ts.map +1 -0
  659. package/dist/orchestration/run-spec.js +274 -0
  660. package/dist/orchestration/run-spec.js.map +1 -0
  661. package/dist/orchestration/run-workflow-tool.d.ts +187 -0
  662. package/dist/orchestration/run-workflow-tool.d.ts.map +1 -0
  663. package/dist/orchestration/run-workflow-tool.js +612 -0
  664. package/dist/orchestration/run-workflow-tool.js.map +1 -0
  665. package/dist/orchestration/workflow-governance.d.ts +70 -0
  666. package/dist/orchestration/workflow-governance.d.ts.map +1 -0
  667. package/dist/orchestration/workflow-governance.js +176 -0
  668. package/dist/orchestration/workflow-governance.js.map +1 -0
  669. package/dist/orchestration/workflow-meta.d.ts +41 -0
  670. package/dist/orchestration/workflow-meta.d.ts.map +1 -0
  671. package/dist/orchestration/workflow-meta.js +426 -0
  672. package/dist/orchestration/workflow-meta.js.map +1 -0
  673. package/dist/orchestration/workflow-observe.d.ts +77 -0
  674. package/dist/orchestration/workflow-observe.d.ts.map +1 -0
  675. package/dist/orchestration/workflow-observe.js +177 -0
  676. package/dist/orchestration/workflow-observe.js.map +1 -0
  677. package/dist/orchestration/workflow-primitives.d.ts +31 -0
  678. package/dist/orchestration/workflow-primitives.d.ts.map +1 -0
  679. package/dist/orchestration/workflow-primitives.js +104 -0
  680. package/dist/orchestration/workflow-primitives.js.map +1 -0
  681. package/dist/orchestration/workflow-sandbox-conformance.d.ts +34 -0
  682. package/dist/orchestration/workflow-sandbox-conformance.d.ts.map +1 -0
  683. package/dist/orchestration/workflow-sandbox-conformance.js +301 -0
  684. package/dist/orchestration/workflow-sandbox-conformance.js.map +1 -0
  685. package/dist/orchestration/workflow-script-runner.d.ts +127 -0
  686. package/dist/orchestration/workflow-script-runner.d.ts.map +1 -0
  687. package/dist/orchestration/workflow-script-runner.js +48 -0
  688. package/dist/orchestration/workflow-script-runner.js.map +1 -0
  689. package/dist/orchestration/workflow-script-store.d.ts +99 -0
  690. package/dist/orchestration/workflow-script-store.d.ts.map +1 -0
  691. package/dist/orchestration/workflow-script-store.js +133 -0
  692. package/dist/orchestration/workflow-script-store.js.map +1 -0
  693. package/dist/orchestration/workflow-size-guideline.d.ts +50 -0
  694. package/dist/orchestration/workflow-size-guideline.d.ts.map +1 -0
  695. package/dist/orchestration/workflow-size-guideline.js +78 -0
  696. package/dist/orchestration/workflow-size-guideline.js.map +1 -0
  697. package/dist/orchestration/workflow.d.ts +624 -0
  698. package/dist/orchestration/workflow.d.ts.map +1 -0
  699. package/dist/orchestration/workflow.js +1596 -0
  700. package/dist/orchestration/workflow.js.map +1 -0
  701. package/dist/prompts/default.d.ts +474 -0
  702. package/dist/prompts/default.d.ts.map +1 -0
  703. package/dist/prompts/default.js +676 -0
  704. package/dist/prompts/default.js.map +1 -0
  705. package/dist/prompts/supervisor.d.ts +60 -0
  706. package/dist/prompts/supervisor.d.ts.map +1 -0
  707. package/dist/prompts/supervisor.js +162 -0
  708. package/dist/prompts/supervisor.js.map +1 -0
  709. package/dist/scenarios/env.d.ts +41 -0
  710. package/dist/scenarios/env.d.ts.map +1 -0
  711. package/dist/scenarios/env.js +65 -0
  712. package/dist/scenarios/env.js.map +1 -0
  713. package/dist/scenarios/full-body.d.ts +47 -0
  714. package/dist/scenarios/full-body.d.ts.map +1 -0
  715. package/dist/scenarios/full-body.js +36 -0
  716. package/dist/scenarios/full-body.js.map +1 -0
  717. package/dist/scenarios/scenario-registry.d.ts +107 -0
  718. package/dist/scenarios/scenario-registry.d.ts.map +1 -0
  719. package/dist/scenarios/scenario-registry.js +192 -0
  720. package/dist/scenarios/scenario-registry.js.map +1 -0
  721. package/dist/scenarios/teacher-quickstart.d.ts +41 -0
  722. package/dist/scenarios/teacher-quickstart.d.ts.map +1 -0
  723. package/dist/scenarios/teacher-quickstart.js +32 -0
  724. package/dist/scenarios/teacher-quickstart.js.map +1 -0
  725. package/dist/server/http.d.ts +36 -0
  726. package/dist/server/http.d.ts.map +1 -0
  727. package/dist/server/http.js +144 -0
  728. package/dist/server/http.js.map +1 -0
  729. package/dist/stores/file/checkpoint-store.d.ts +62 -0
  730. package/dist/stores/file/checkpoint-store.d.ts.map +1 -0
  731. package/dist/stores/file/checkpoint-store.js +250 -0
  732. package/dist/stores/file/checkpoint-store.js.map +1 -0
  733. package/dist/stores/file/file-snapshot-store.d.ts +43 -0
  734. package/dist/stores/file/file-snapshot-store.d.ts.map +1 -0
  735. package/dist/stores/file/file-snapshot-store.js +374 -0
  736. package/dist/stores/file/file-snapshot-store.js.map +1 -0
  737. package/dist/stores/file/fs-atomic.d.ts +95 -0
  738. package/dist/stores/file/fs-atomic.d.ts.map +1 -0
  739. package/dist/stores/file/fs-atomic.js +415 -0
  740. package/dist/stores/file/fs-atomic.js.map +1 -0
  741. package/dist/stores/file/index.d.ts +98 -0
  742. package/dist/stores/file/index.d.ts.map +1 -0
  743. package/dist/stores/file/index.js +109 -0
  744. package/dist/stores/file/index.js.map +1 -0
  745. package/dist/stores/file/memory-store.d.ts +95 -0
  746. package/dist/stores/file/memory-store.d.ts.map +1 -0
  747. package/dist/stores/file/memory-store.js +393 -0
  748. package/dist/stores/file/memory-store.js.map +1 -0
  749. package/dist/stores/file/session-policy-store.d.ts +24 -0
  750. package/dist/stores/file/session-policy-store.d.ts.map +1 -0
  751. package/dist/stores/file/session-policy-store.js +123 -0
  752. package/dist/stores/file/session-policy-store.js.map +1 -0
  753. package/dist/stores/file/session-store.d.ts +34 -0
  754. package/dist/stores/file/session-store.d.ts.map +1 -0
  755. package/dist/stores/file/session-store.js +175 -0
  756. package/dist/stores/file/session-store.js.map +1 -0
  757. package/dist/stores/file/tool-result-store.d.ts +23 -0
  758. package/dist/stores/file/tool-result-store.d.ts.map +1 -0
  759. package/dist/stores/file/tool-result-store.js +61 -0
  760. package/dist/stores/file/tool-result-store.js.map +1 -0
  761. package/dist/stores/file/workflow-journal-store.d.ts +36 -0
  762. package/dist/stores/file/workflow-journal-store.d.ts.map +1 -0
  763. package/dist/stores/file/workflow-journal-store.js +157 -0
  764. package/dist/stores/file/workflow-journal-store.js.map +1 -0
  765. package/dist/stores/file/workflow-run-store.d.ts +58 -0
  766. package/dist/stores/file/workflow-run-store.d.ts.map +1 -0
  767. package/dist/stores/file/workflow-run-store.js +178 -0
  768. package/dist/stores/file/workflow-run-store.js.map +1 -0
  769. package/dist/stores/pg.d.ts +210 -0
  770. package/dist/stores/pg.d.ts.map +1 -0
  771. package/dist/stores/pg.js +652 -0
  772. package/dist/stores/pg.js.map +1 -0
  773. package/dist/tools/fs/encoding.d.ts +51 -0
  774. package/dist/tools/fs/encoding.d.ts.map +1 -0
  775. package/dist/tools/fs/encoding.js +74 -0
  776. package/dist/tools/fs/encoding.js.map +1 -0
  777. package/dist/tools/fs/gh-rate-limit.d.ts +19 -0
  778. package/dist/tools/fs/gh-rate-limit.d.ts.map +1 -0
  779. package/dist/tools/fs/gh-rate-limit.js +35 -0
  780. package/dist/tools/fs/gh-rate-limit.js.map +1 -0
  781. package/dist/tools/fs/index.d.ts +246 -0
  782. package/dist/tools/fs/index.d.ts.map +1 -0
  783. package/dist/tools/fs/index.js +2130 -0
  784. package/dist/tools/fs/index.js.map +1 -0
  785. package/dist/tools/fs/pdf.d.ts +106 -0
  786. package/dist/tools/fs/pdf.d.ts.map +1 -0
  787. package/dist/tools/fs/pdf.js +178 -0
  788. package/dist/tools/fs/pdf.js.map +1 -0
  789. package/dist/tools/fs/repo-map.d.ts +15 -0
  790. package/dist/tools/fs/repo-map.d.ts.map +1 -0
  791. package/dist/tools/fs/repo-map.js +251 -0
  792. package/dist/tools/fs/repo-map.js.map +1 -0
  793. package/dist/tools/fs/safety.d.ts +168 -0
  794. package/dist/tools/fs/safety.d.ts.map +1 -0
  795. package/dist/tools/fs/safety.js +479 -0
  796. package/dist/tools/fs/safety.js.map +1 -0
  797. package/dist/tools/fs/search.d.ts +118 -0
  798. package/dist/tools/fs/search.d.ts.map +1 -0
  799. package/dist/tools/fs/search.js +650 -0
  800. package/dist/tools/fs/search.js.map +1 -0
  801. package/dist/tools/gitea-issue.d.ts +39 -0
  802. package/dist/tools/gitea-issue.d.ts.map +1 -0
  803. package/dist/tools/gitea-issue.js +91 -0
  804. package/dist/tools/gitea-issue.js.map +1 -0
  805. package/dist/tools/monitor.d.ts +64 -0
  806. package/dist/tools/monitor.d.ts.map +1 -0
  807. package/dist/tools/monitor.js +135 -0
  808. package/dist/tools/monitor.js.map +1 -0
  809. package/dist/tools/scheduler-tools.d.ts +48 -0
  810. package/dist/tools/scheduler-tools.d.ts.map +1 -0
  811. package/dist/tools/scheduler-tools.js +449 -0
  812. package/dist/tools/scheduler-tools.js.map +1 -0
  813. package/dist/tools/sql-adapters.d.ts +32 -0
  814. package/dist/tools/sql-adapters.d.ts.map +1 -0
  815. package/dist/tools/sql-adapters.js +31 -0
  816. package/dist/tools/sql-adapters.js.map +1 -0
  817. package/dist/tools/sql.d.ts +36 -0
  818. package/dist/tools/sql.d.ts.map +1 -0
  819. package/dist/tools/sql.js +131 -0
  820. package/dist/tools/sql.js.map +1 -0
  821. package/dist/tools/task-list.d.ts +26 -0
  822. package/dist/tools/task-list.d.ts.map +1 -0
  823. package/dist/tools/task-list.js +352 -0
  824. package/dist/tools/task-list.js.map +1 -0
  825. package/dist/tools/todo.d.ts +11 -0
  826. package/dist/tools/todo.d.ts.map +1 -0
  827. package/dist/tools/todo.js +126 -0
  828. package/dist/tools/todo.js.map +1 -0
  829. package/dist/tools/web.d.ts +59 -0
  830. package/dist/tools/web.d.ts.map +1 -0
  831. package/dist/tools/web.js +607 -0
  832. package/dist/tools/web.js.map +1 -0
  833. package/dist/tools/worktree.d.ts +88 -0
  834. package/dist/tools/worktree.d.ts.map +1 -0
  835. package/dist/tools/worktree.js +434 -0
  836. package/dist/tools/worktree.js.map +1 -0
  837. package/docs/A1-ATTRIBUTION-ROUND1-2026-07-09.md +181 -0
  838. package/docs/AB-ORACLE-GATE-VERDICT-2026-07-10.md +100 -0
  839. package/docs/ANCHOR-GAP-INVENTORY-2026-07-09.md +143 -0
  840. package/docs/ARCHITECTURE.md +125 -0
  841. package/docs/BUGHUNT-2026-07-05-NIGHT.md +98 -0
  842. package/docs/BUILD.md +63 -0
  843. package/docs/CANCEL-ASYNC-ATTRIBUTION-2026-07-09.md +98 -0
  844. package/docs/CC-198-VS-201-DRIFT-2026-07-09.md +70 -0
  845. package/docs/CC-BASELINE-FAKE-ZERO-AUDIT-2026-07-09.md +51 -0
  846. package/docs/CC-DRIFT-198-206-AGENT-TYPES-2026-07-10.md +82 -0
  847. package/docs/CC-DRIFT-198-206-CHANGELOG-2026-07-10.md +82 -0
  848. package/docs/CC-DRIFT-198-206-REMINDERS-2026-07-10.md +96 -0
  849. package/docs/CC-DRIFT-198-206-ROADMAP-2026-07-10.md +110 -0
  850. package/docs/CC-DRIFT-198-206-TOOL-INVENTORY-2026-07-10.md +53 -0
  851. package/docs/CC-DRIFT-198-206-USAGE-CONSTANTS-2026-07-10.md +64 -0
  852. package/docs/CC-DRIFT-198-206-WORKFLOW-2026-07-10.md +83 -0
  853. package/docs/CC-PARITY-CHECKLIST.md +220 -0
  854. package/docs/CC-PARITY-DEEP-SWEEP-2026-07-07.md +149 -0
  855. package/docs/CC-SUBAGENT-PROMPT-STUDY-2026-07-09.md +219 -0
  856. package/docs/CC-TASK-REMINDER-CADENCE-STUDY-2026-07-09.md +396 -0
  857. package/docs/CC-TOOL-PARITY-SWEEP-2026-07.md +56 -0
  858. package/docs/CC-TOOL-PROMPT-DEEP-DIFF-2026-07-08.md +274 -0
  859. package/docs/CC-TOOLSURFACE-DEEP-DIVE-2026-07-07.md +197 -0
  860. package/docs/CC206-OBSERVER-ANCHORS-2026-07-11.md +463 -0
  861. package/docs/CC207-CORE-SWEEP-BACKLOG-2026-07-12.md +155 -0
  862. package/docs/CENTER-CONTROL-PLANE-SEAM.md +86 -0
  863. package/docs/CLEANUP-CONTRACT-ANCHOR-2026-07-09.md +83 -0
  864. package/docs/COLD-START-RSI-2026-07-09.md +72 -0
  865. package/docs/COMPACTION-LIVE-AUDIT-2026-07-09.md +114 -0
  866. package/docs/CONTEXT-lifecycle-extension-points-and-stop-attribution.md +71 -0
  867. package/docs/COREWARS-POLYGLOT-TRIAGE-2026-07-09.md +85 -0
  868. package/docs/DEADTARGET-OVERFULL-HBOX-2026-07-10.md +92 -0
  869. package/docs/DEADTARGET-PATH-TRACING-REVERSE-2026-07-10.md +87 -0
  870. package/docs/DEADTARGET-WINNING-AVG-COREWARS-2026-07-10.md +96 -0
  871. package/docs/DEEPSEEK-API-LIMITS-PROBE-2026-07-09.md +118 -0
  872. package/docs/DESIGN-140-MOCK-VERIFY-2026-07-11.md +79 -0
  873. package/docs/DESIGN-140-VERIFICATION-2026-07-11.md +43 -0
  874. package/docs/DESIGN-DRAFT-workflow-collab-2026-07-11.md +56 -0
  875. package/docs/DESIGN-ORACLE-GROUNDING-GATE-2026-07-10.md +167 -0
  876. package/docs/DESIGN-TFRAG-RECONCILE-SCAFFOLD-2026-07-09.md +102 -0
  877. package/docs/EXP-PA2-PE-DESIGN-2026-07-11.md +220 -0
  878. package/docs/EXT-DOGFOOD-2026-07-12.md +50 -0
  879. package/docs/FINAL-VERIFY-SURFACE-AUDIT-2026-07-09.md +44 -0
  880. package/docs/FRAG-RECON-INVESTIGATION-2026-07-09.md +183 -0
  881. package/docs/HANDOFF.md +121 -0
  882. package/docs/KNOWN-ISSUES.md +96 -0
  883. package/docs/LEGW-WINDOW-TAX-2026-07-10.md +82 -0
  884. package/docs/LIVE-PROBE-BATCH-2026-07-11.md +207 -0
  885. package/docs/M2-CERT-ATTRIBUTION-2026-07-10.md +61 -0
  886. package/docs/M25-LEG-VARIANCE-ATTRIBUTION-2026-07-10.md +81 -0
  887. package/docs/MAILMAN-TIMEOUT-ATTRIBUTION-2026-07-10.md +88 -0
  888. package/docs/MEMORY-BACKEND-DIALECT-NOTES.md +69 -0
  889. package/docs/MTEB-ESCAPE-HATCH-ATTRIBUTION-2026-07-09.md +57 -0
  890. package/docs/MTEB-LEADERBOARD-ATTRIBUTION-2026-07-10.md +134 -0
  891. package/docs/ORACLE-GATE-NEGATIVE-SAMPLE-2026-07-11.md +28 -0
  892. package/docs/PARITY-CONTEXT-TRANSACTIONS-2026-07-10.md +67 -0
  893. package/docs/PARITY-PROGRESS-MATRIX-2026-07-10.md +37 -0
  894. package/docs/PARITY-SPOT-AGENT-TYPES-2026-07-10.md +70 -0
  895. package/docs/PARITY-SPOT-REMINDERS-2026-07-10.md +144 -0
  896. package/docs/PARITY-SPOT-TOOL-INVENTORY-2026-07-10.md +61 -0
  897. package/docs/PARITY-SPOT-USAGE-CONSTANTS-2026-07-10.md +95 -0
  898. package/docs/PARITY-SPOT-WORKFLOW-2026-07-10.md +93 -0
  899. package/docs/PASSWORD-RECOVERY-PANEL-VERDICT-2026-07-10.md +62 -0
  900. package/docs/R8-R9-FINALIZE-COORDINATION-2026-07-09.md +124 -0
  901. package/docs/REPL-CODE-MODE-EVALUATION-2026-07-10.md +187 -0
  902. package/docs/REPORT-1249-TARGETED.md +48 -0
  903. package/docs/RESEARCH-3P-MEMORY-SWAP-2026-07-12.md +273 -0
  904. package/docs/ROADMAP.md +111 -0
  905. package/docs/RSI-CLOUD-DEPLOY-2026-07-06.md +289 -0
  906. package/docs/RSI-PROCESS-AI-COLDSTART-2026-07-11.md +68 -0
  907. package/docs/S18-THOROUGHNESS-AUDIT-2026-07-09.md +113 -0
  908. package/docs/SERVICE-INTEGRATION-GUIDE.md +298 -0
  909. package/docs/SUBAGENT-STREAM-RESILIENCE-PARITY-2026-07-10.md +118 -0
  910. package/docs/SWEBENCH-PRO-RECON-2026-07-11.md +31 -0
  911. package/docs/TB-EFFICIENCY-TELEMETRY-2026-07-08.md +114 -0
  912. package/docs/TB-FAILURE-AUTOPSY-2026-07-05-RERUN.md +67 -0
  913. package/docs/TB-FAIRNESS-AUDIT-2026-07-08.md +141 -0
  914. package/docs/TB-FULL-1257-2026-07-08.md +77 -0
  915. package/docs/TB-LEG-GAP-ATTRIBUTION-1261-1263-2026-07-11.md +154 -0
  916. package/docs/TB-REGRESSION-DAEMON-KILL-2026-07-08.md +58 -0
  917. package/docs/TB-RSI-CROSSCHECK-2026-07-06.md +68 -0
  918. package/docs/TB-RSI-LEDGER.md +30 -0
  919. package/docs/TB-STABLE-SET-2026-07-08.md +127 -0
  920. package/docs/TB21-RECON-2026-07-11.md +28 -0
  921. package/docs/TEST-DESIGN-BATCH-1-2-3.md +97 -0
  922. package/docs/THIRD-PARTY-INTEGRATION.md +45 -0
  923. package/docs/TOKEN-ESTIMATE-CALIBRATION-LIVE-2026-07-09.md +102 -0
  924. package/docs/audit-2026-06-10-/347/254/254/344/272/214/350/275/256-/347/251/272/347/231/275/345/214/272/344/270/216/345/277/230/346/216/245/347/272/277.md +147 -0
  925. package/docs/audit-2026-06-10-/350/256/241/347/256/227bug/346/211/253/346/217/217.md +163 -0
  926. package/docs/audit-2026-06-11-/344/277/256/345/244/215/345/244/215/345/256/241/344/270/216/345/233/236/345/275/222/344/270/223/346/211/253.md +95 -0
  927. package/docs/audit-2026-06-12-design71-P1/346/275/234/344/274/217/351/235/242/350/243/201/345/206/263/344/270/216/345/220/236/351/224/231/345/256/241/350/256/241.md +45 -0
  928. package/docs/audit-2026-06-12-/345/205/254/345/274/200/346/227/213/351/222/256/346/264/273/346/200/247/344/270/216vendored/346/255/273/350/267/257.md +63 -0
  929. package/docs/audit-2026-06-15/ADDENDUM-second-pass.md +88 -0
  930. package/docs/audit-2026-06-15/ARCHITECTURE-AND-ROADMAP.md +187 -0
  931. package/docs/audit-2026-06-15/DOC-CORRECTIONS.md +105 -0
  932. package/docs/audit-2026-06-15/INDEX.md +49 -0
  933. package/docs/audit-2026-06-15/ORCHESTRATION-STATUS.md +98 -0
  934. package/docs/audit-2026-06-15/PRODUCTION-ISSUES.md +189 -0
  935. package/docs/audit-2026-06-15/REFERENCES-literature.md +139 -0
  936. package/docs/audit-2026-06-15/VENDOR-REFACTOR-PLAN.md +96 -0
  937. package/docs/cc-probe-198/README.md +72 -0
  938. package/docs/cc-probe-198/STABILITY-AUDIT.md +118 -0
  939. package/docs/cc-probe-198/live-schema-monitor-worktree-2026-07-09.json +56 -0
  940. package/docs/cc-probe-198/mount-variants.json +536 -0
  941. package/docs/cc-probe-198/plan-mode-run.json +1 -0
  942. package/docs/cc-probe-198/probe-bash-bg.json +224 -0
  943. package/docs/cc-probe-198/probe-edit-mismatch.json +120 -0
  944. package/docs/cc-probe-198/probe-read-missing.json +62 -0
  945. package/docs/cc-probe-198/probe-search-empty.json +127 -0
  946. package/docs/cc-probe-198/probe-task-family.json +227 -0
  947. package/docs/cc-probe-198/probes.status +6 -0
  948. package/docs/cc-probe-198/raw-capture-interactive.json +948 -0
  949. package/docs/cc-probe-198/raw-capture-print.json +787 -0
  950. package/docs/cc-probe-198/raw-capture2-interactive.json +948 -0
  951. package/docs/cc-probe-198/raw-capture2-print.json +787 -0
  952. package/docs/cc-probe-198/system-prompt.txt +135 -0
  953. package/docs/cc-probe-198/tools-array.json +962 -0
  954. package/docs/durability-boundary.md +63 -0
  955. package/docs/fix-2026-06-10-/350/256/241/347/256/227bug/344/277/256/345/244/215-search/346/211/271.md +75 -0
  956. package/docs/fix-2026-06-11-/347/254/254/344/272/214/350/275/256-/344/277/256/345/244/215-search/346/211/271.md +62 -0
  957. package/docs/parity-sweep/REPORT-DYNAMIC.md +97 -0
  958. package/docs/parity-sweep/REPORT-STATIC-GGB.md +127 -0
  959. package/docs/parity-sweep/REPORT-STATIC-RWE.md +133 -0
  960. package/docs/vendor-history.md +385 -0
  961. package/docs/vendored-upstream-diff-2026-07.md +83 -0
  962. package/package.json +70 -0
@@ -0,0 +1,391 @@
1
+ import { createAssistantMessageEventStream, } from "../internal/llm.js";
2
+ import { BrainError, classifyHttp } from "./errors.js";
3
+ import { retryBackoffMs } from "./retry.js";
4
+ import { emitBrainStatus, emitBrainTelemetry } from "./status-sink.js";
5
+ import { makeConnectController } from "./timeout.js";
6
+ const EMPTY_USAGE = {
7
+ input: 0,
8
+ output: 0,
9
+ cacheRead: 0,
10
+ cacheWrite: 0,
11
+ totalTokens: 0,
12
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
13
+ };
14
+ function emptyAssistant(model) {
15
+ return {
16
+ role: "assistant",
17
+ content: [],
18
+ api: model.api,
19
+ provider: model.provider,
20
+ model: model.id,
21
+ stopReason: "stop",
22
+ usage: { ...EMPTY_USAGE, cost: { ...EMPTY_USAGE.cost } },
23
+ timestamp: Date.now(),
24
+ };
25
+ }
26
+ function isAbortError(err) {
27
+ return err instanceof Error && (err.name === "AbortError" || err.name === "TimeoutError");
28
+ }
29
+ function sleep(ms, signal) {
30
+ return new Promise((resolve) => {
31
+ if (signal?.aborted)
32
+ return resolve(); // already aborted → don't even start the timer
33
+ // A wired cancellation must interrupt the backoff promptly — without this an outer abort during a long
34
+ // Retry-After backoff (up to MAX_RETRY_AFTER_MS) keeps the brain call alive for up to that long. The loop
35
+ // top re-checks signal?.aborted and throws AbortError, so resolving early here cancels the wait cleanly.
36
+ // The task `signal` is LONG-LIVED (one per task, shared across every turn), so the normal timer path MUST
37
+ // remove the abort listener too — `{once:true}` only auto-removes it when abort actually fires, else each
38
+ // completed backoff leaks one listener (MaxListenersExceededWarning), mirroring timeout.ts dispose discipline.
39
+ let t;
40
+ const onAbort = () => {
41
+ clearTimeout(t);
42
+ resolve();
43
+ };
44
+ t = setTimeout(() => {
45
+ signal?.removeEventListener("abort", onAbort);
46
+ resolve();
47
+ }, ms);
48
+ signal?.addEventListener("abort", onAbort, { once: true });
49
+ });
50
+ }
51
+ /**
52
+ * Run one streaming request end-to-end and drive the provider `parser`. Returns a fresh event stream;
53
+ * never throws (errors are pushed as `error` events, mirroring the Brain contract).
54
+ */
55
+ export function runStreamingBrain(args) {
56
+ const { model, doFetch, signal, config, httpLabel, buildRequest, makeParser } = args;
57
+ const out = createAssistantMessageEventStream();
58
+ // `cleanup` releases the connect controller (its outer-abort listener) + any armed timers. Run it in
59
+ // `.finally` so it fires EXACTLY once however the request settles — including a mid-stream throw that
60
+ // would otherwise leak the `onAbort` listener on the task signal across turns.
61
+ // It's reassigned in three phases as more resources exist: undefined → `connect.dispose` the instant
62
+ // the controller escapes the connect loop (closes a leak window if synchronous init then throws) →
63
+ // full timers+connect cleanup once the timers are armed. The reassignments are synchronous, before any
64
+ // await that could let `.finally` observe a half-set cleanup.
65
+ let cleanup;
66
+ void run()
67
+ .catch((err) => {
68
+ const aborted = signal?.aborted === true || isAbortError(err);
69
+ const errorMsg = emptyAssistant(model);
70
+ errorMsg.stopReason = aborted ? "aborted" : "error";
71
+ errorMsg.errorMessage = err instanceof Error ? err.message : String(err);
72
+ out.push({ type: "error", reason: aborted ? "aborted" : "error", error: errorMsg });
73
+ })
74
+ .finally(() => cleanup?.());
75
+ return out;
76
+ async function run() {
77
+ const req = buildRequest();
78
+ const maxRetries = config.maxRetries ?? 2;
79
+ const baseDelay = config.retryDelayMs ?? 400;
80
+ // design/124 mid-stream recovery — attempt boundary (§0.5-1): one stream() emits EXACTLY ONE
81
+ // `start` event, however many attempts. A retry attempt's parser streams its events with a FRESH
82
+ // partial snapshot; a consumer applying snapshot-replacement semantics (agent-loop
83
+ // resolveAssistantMessageUpdate returns `event.partial` wholesale) sees the previous attempt's
84
+ // streamed prefix (e.g. tier-B thinking) vanish from context — CC's "drop the thinking, retry the
85
+ // whole turn" expressed in our event protocol. Budgets: tier C (zero substantive events) draws
86
+ // from the SAME `maxRetries` pool as connect failures ("headers arrived" no longer immunizes the
87
+ // attempt); tier B (thinking-only) has its own small pool (CC: stale-conn ≤ 2, backoff 100×n ms).
88
+ let attempt = 0; // shared budget: connect failures + tier-C mid-stream retries
89
+ let thinkingRetries = 0; // tier-B budget, ≤ 2
90
+ let startEmitted = false;
91
+ for (;;) {
92
+ // --- connect with timeout + retry transient failures until we have a streamable response ---
93
+ let res;
94
+ let connect;
95
+ for (;; attempt++) {
96
+ if (signal?.aborted) {
97
+ const e = new Error("aborted");
98
+ e.name = "AbortError";
99
+ throw e;
100
+ }
101
+ // Per-attempt connect controller: fires if headers don't arrive in time while still forwarding an
102
+ // outer abort; once headers are in, its signal keeps governing the body.
103
+ const cc = makeConnectController(config.connectTimeoutMs, signal);
104
+ let r;
105
+ let netErr;
106
+ try {
107
+ r = await doFetch(req.url, { method: "POST", headers: req.headers, body: req.body, signal: cc.signal });
108
+ }
109
+ catch (e) {
110
+ if (cc.timedOut()) {
111
+ netErr = new Error(`connect timeout after ${config.connectTimeoutMs}ms`); // retryable network failure
112
+ }
113
+ else if (isAbortError(e) || signal?.aborted) {
114
+ cc.dispose();
115
+ throw e;
116
+ }
117
+ else {
118
+ netErr = e;
119
+ }
120
+ }
121
+ if (r && r.ok && r.body) {
122
+ cc.clearTimer(); // headers in: stop the connect timer, keep the outer-abort link for the body
123
+ connect = cc;
124
+ // Minimal cleanup the instant the controller escapes the loop — closes the leak window if any
125
+ // synchronous init below throws before the fuller cleanup is assigned (council R2).
126
+ cleanup = () => connect?.dispose();
127
+ res = r;
128
+ break;
129
+ }
130
+ cc.dispose(); // this attempt failed — clean up before retry/throw
131
+ // CC-parity round-3: 408 (request timeout) / 409 (lock timeout) are transient — retry in-loop like 5xx/429
132
+ // (this is the connect/pre-body path, so a re-send is safe + idempotent). Matches CC withRetry.
133
+ const retryable = netErr !== undefined ||
134
+ (r !== undefined && (r.status >= 500 || r.status === 429 || r.status === 408 || r.status === 409));
135
+ if (retryable && attempt < maxRetries) {
136
+ const delayMs = retryBackoffMs(baseDelay, attempt, r); // full jitter + honor Retry-After (§10 N1/N2)
137
+ // design/99 §E3/§E10: surface the brain's (otherwise silent) wait as a live, provider-neutral status so
138
+ // a UI can show "rate limited / retrying in Ns". 429 → rate_limited; a network/connect failure →
139
+ // reconnecting; a 5xx → retrying. Fire-and-forget (no-op outside a Runner task).
140
+ const statusPhase = r?.status === 429 ? "rate_limited" : netErr !== undefined ? "reconnecting" : "retrying";
141
+ // service [398] C6: the abandoned attempt's cost is unknowable (its usage frame never arrived —
142
+ // that's why it failed), so report the honest signal: which attempt was abandoned, which lane.
143
+ emitBrainTelemetry({ kind: "retry", attempt: attempt + 1, phase: "connect" });
144
+ emitBrainStatus({
145
+ phase: statusPhase,
146
+ // Neutral hint (NO HTTP status / provider taxonomy — BrainStatus.detail contract). One per phase.
147
+ detail: statusPhase === "rate_limited"
148
+ ? "rate limited, backing off"
149
+ : statusPhase === "reconnecting"
150
+ ? "connection lost, reconnecting"
151
+ : "transient error, retrying",
152
+ retryInSec: Math.ceil(delayMs / 1000),
153
+ });
154
+ await sleep(delayMs, signal); // abortable: an outer cancel during the backoff interrupts promptly (loop top throws)
155
+ continue;
156
+ }
157
+ if (netErr)
158
+ throw new BrainError("network", netErr instanceof Error ? netErr.message : String(netErr));
159
+ const detail = r ? await r.text().catch(() => "") : "";
160
+ const status = r?.status ?? 0;
161
+ throw new BrainError(classifyHttp(status), `${httpLabel} HTTP ${status || "ERR"}: ${detail.slice(0, 500)}`, status);
162
+ }
163
+ // --- streaming: timers + read loop (the single source of truth for the timer-reset logic) ---
164
+ const partial = emptyAssistant(model);
165
+ if (!startEmitted) {
166
+ startEmitted = true; // §0.5-1: retry attempts must NOT re-emit start (no orphan partial, no wire double message_start)
167
+ out.push({ type: "start", partial: { ...partial } });
168
+ }
169
+ const reader = res.body.getReader();
170
+ const decoder = new TextDecoder();
171
+ let buffer = "";
172
+ let firstTokenSeen = false;
173
+ let firstTokenTimedOut = false;
174
+ let ftTimer;
175
+ if (config.firstTokenTimeoutMs && config.firstTokenTimeoutMs > 0) {
176
+ ftTimer = setTimeout(() => {
177
+ firstTokenTimedOut = true;
178
+ void reader.cancel().catch(() => undefined);
179
+ }, config.firstTokenTimeoutMs);
180
+ }
181
+ let idleTimedOut = false;
182
+ let idleTimer;
183
+ const bumpIdle = () => {
184
+ if (!config.idleTimeoutMs || config.idleTimeoutMs <= 0)
185
+ return;
186
+ // A delta just arrived → NOT idle. Reset the flag too (symmetric with firstTokenTimedOut): a timer
187
+ // that fired just before a buffered delta is processed must not spuriously throw idle timeout + retry.
188
+ idleTimedOut = false;
189
+ if (idleTimer)
190
+ clearTimeout(idleTimer);
191
+ idleTimer = setTimeout(() => {
192
+ idleTimedOut = true;
193
+ void reader.cancel().catch(() => undefined);
194
+ }, config.idleTimeoutMs);
195
+ };
196
+ const sawContentToken = () => {
197
+ bumpIdle(); // every content delta resets the idle watchdog (runs even after the first token)
198
+ if (firstTokenSeen)
199
+ return;
200
+ firstTokenSeen = true;
201
+ // Clear BOTH the timer and the timed-out flag: if the timer already fired but a buffered first
202
+ // delta is now processed, the turn must NOT be failed as a timeout (council #2/#3).
203
+ firstTokenTimedOut = false;
204
+ if (ftTimer) {
205
+ clearTimeout(ftTimer);
206
+ ftTimer = undefined;
207
+ }
208
+ };
209
+ cleanup = () => {
210
+ if (ftTimer) {
211
+ clearTimeout(ftTimer);
212
+ ftTimer = undefined;
213
+ }
214
+ if (idleTimer) {
215
+ clearTimeout(idleTimer);
216
+ idleTimer = undefined;
217
+ }
218
+ connect?.dispose();
219
+ // Release the HTTP response-body reader too — connect.dispose() only clears timers + the abort listener,
220
+ // it does NOT cancel the body stream. When parser.onLine / parser.finalize throws, the `.finally(cleanup)`
221
+ // path must cancel the reader or the socket/stream leaks until GC (R5 bug-hunt).
222
+ void reader.cancel().catch(() => undefined);
223
+ };
224
+ // design/124 tier A: when a mid-stream failure is promoted to a partial finalize, the parser's
225
+ // OWN terminal event must carry the marker + the CC-verbatim warning. The parser pushes its
226
+ // terminal itself, so hand it a facade whose push stamps the final message in flight (prototype
227
+ // delegation keeps every other stream method intact). Inert while `midstreamWarning` is unset.
228
+ let midstreamWarning;
229
+ const parserOut = Object.create(out);
230
+ parserOut.push = (ev) => {
231
+ if (midstreamWarning !== undefined && (ev.type === "done" || ev.type === "error")) {
232
+ const msg = ev.type === "done" ? ev.message : ev.error;
233
+ msg.partialFinalized = true;
234
+ // codex 实现审 #1: finalize may have set its OWN errorMessage (malformed-tool-call note,
235
+ // streamed refusal, …). BOTH verdicts must survive — `partialFinalized` must always ride
236
+ // with a visible "may be incomplete" warning (it is the model's self-heal cue next turn,
237
+ // and the toolUse branch has no continue-nudge backstop), so APPEND, never fill-the-gap.
238
+ msg.errorMessage = msg.errorMessage ? `${msg.errorMessage}\n${midstreamWarning}` : midstreamWarning;
239
+ }
240
+ out.push(ev);
241
+ };
242
+ const parser = makeParser({
243
+ out: parserOut,
244
+ partial,
245
+ sawContentToken,
246
+ // triggers reader.cancel(); the read loop then exits on `done` (no separate break needed).
247
+ cancel: () => void reader.cancel().catch(() => undefined),
248
+ });
249
+ // The two tier hooks (design/124 §1): ① the read-catch below (connection class — the 1.225
250
+ // BrainError("network") classification point) and ② the watchdog verdicts after the loop (stall
251
+ // class). An abort re-throws untouched (pin below).
252
+ //
253
+ // design/124 r3 (CC 2.1.199 rebaseline — supersedes the r2 "in-band frame stays OUT" decision):
254
+ // an anthropic in-band `{type:"error"}` frame of the OVERLOAD/server class (overloaded_error /
255
+ // api_error / 529 → BrainError code "server", see anthropicStreamErrorCode) that arrives AFTER
256
+ // substantive text already streamed now downgrades to tier A (finalize + partialFinalized + the
257
+ // CC "may be incomplete" notice) — CC 2.1.199 changed direction here. Everything ELSE keeps the
258
+ // r2 fail-closed throw, preserving the CC-parity B1 invariant (a protocol error is never
259
+ // finalized as a finished answer): non-overload frame classes (rate_limit/auth/invalid_request),
260
+ // and an overload frame with NO substantive content, still propagate to the terminal catch.
261
+ const INBAND_OVERLOAD_WARNING = "API overloaded mid-response. The response above may be incomplete.";
262
+ /** Feed one line to the parser; returns true iff an in-band overload frame downgraded to tier A. */
263
+ const onLineOverloadTierA = (line) => {
264
+ try {
265
+ parser.onLine(line);
266
+ return false;
267
+ }
268
+ catch (e) {
269
+ if (!(e instanceof BrainError) || e.code !== "server" || !parser.snapshot().hasSubstantiveText)
270
+ throw e;
271
+ return true;
272
+ }
273
+ };
274
+ let failure;
275
+ readLoop: for (;;) {
276
+ let readRes;
277
+ try {
278
+ readRes = await reader.read();
279
+ }
280
+ catch (e) {
281
+ // Mid-stream drop (connection reset while the body was streaming). Abort stays abort (§1 pin:
282
+ // the tiers must never promote/retry a deliberate cancellation).
283
+ if (isAbortError(e) || signal?.aborted)
284
+ throw e;
285
+ failure = {
286
+ kind: "connection",
287
+ err: new BrainError("network", `mid-stream read failed: ${e instanceof Error ? e.message : String(e)}`),
288
+ };
289
+ break readLoop;
290
+ }
291
+ const { done, value } = readRes;
292
+ if (done)
293
+ break;
294
+ buffer += decoder.decode(value, { stream: true });
295
+ // Cursor scan: slice the consumed prefix once per chunk, not once per line (avoids O(n²)).
296
+ let nl;
297
+ let start = 0;
298
+ while ((nl = buffer.indexOf("\n", start)) !== -1) {
299
+ const line = buffer.slice(start, nl);
300
+ start = nl + 1;
301
+ if (onLineOverloadTierA(line)) {
302
+ // r3 tier-A downgrade: promote the streamed partial (the facade stamps partialFinalized +
303
+ // the notice); `.finally(cleanup)` releases timers/controller/reader like the normal path.
304
+ midstreamWarning = INBAND_OVERLOAD_WARNING;
305
+ parser.finalize();
306
+ return;
307
+ }
308
+ }
309
+ if (start > 0)
310
+ buffer = buffer.slice(start);
311
+ }
312
+ if (ftTimer) {
313
+ clearTimeout(ftTimer);
314
+ ftTimer = undefined;
315
+ }
316
+ if (idleTimer) {
317
+ clearTimeout(idleTimer);
318
+ idleTimer = undefined;
319
+ }
320
+ if (!failure && firstTokenTimedOut) {
321
+ failure = { kind: "stalled", err: new BrainError("network", `first-token timeout after ${config.firstTokenTimeoutMs}ms`) };
322
+ }
323
+ if (!failure && idleTimedOut) {
324
+ failure = { kind: "stalled", err: new BrainError("network", `stream idle timeout after ${config.idleTimeoutMs}ms`) };
325
+ }
326
+ if (!failure) {
327
+ // Flush decoder + process any trailing line not terminated by a newline (same r3 in-band
328
+ // overload downgrade applies — a final unterminated `{type:"error"}` line is still a frame).
329
+ buffer += decoder.decode();
330
+ if (buffer.trim() && onLineOverloadTierA(buffer))
331
+ midstreamWarning = INBAND_OVERLOAD_WARNING;
332
+ parser.finalize();
333
+ return;
334
+ }
335
+ // ---- design/124 §1: mid-stream failure tiering (CC 198 queryModelStreaming parity) ----
336
+ const snap = parser.snapshot();
337
+ if (snap.hasSubstantiveText || snap.hasCompletedToolCall) {
338
+ // Tier A — substantive content already streamed: PROMOTE, don't re-send (no double billing;
339
+ // what streamed stays consistent with the result). finalize() is safe after a cut (no
340
+ // finish_reason + real content synthesizes the CC-equivalent stopReason: tool call → toolUse,
341
+ // else stop) and the facade stamps partialFinalized + the CC-verbatim warning; the model sees
342
+ // "may be incomplete" in the transcript (self-heal prompt), agent-loop nudges a bounded continue.
343
+ midstreamWarning =
344
+ failure.kind === "stalled"
345
+ ? "Response stalled mid-stream. The response above may be incomplete."
346
+ : "Connection closed mid-response. The response above may be incomplete.";
347
+ parser.finalize();
348
+ return;
349
+ }
350
+ // §0.5-4 defensive assertion: tiers B/C re-send the whole turn. Once a toolcall_end was emitted
351
+ // this attempt, an in-stream executor may ALREADY be running the call — a re-send could execute
352
+ // it twice. Structurally unreachable (hasCompletedToolCall ⇒ tier A above); pinned against
353
+ // drift: abandon the retry, take the existing error path.
354
+ if (snap.hasCompletedToolCall)
355
+ throw failure.err;
356
+ // Release THIS attempt's resources (timers/controller/reader) before re-sending; the next
357
+ // attempt assigns a fresh cleanup, and the terminal `.finally` then only sees the live one.
358
+ cleanup?.();
359
+ cleanup = undefined;
360
+ if (snap.hasOnlyThinking) {
361
+ // Tier B — only thinking streamed: seal the UI stream (thinking_end from the parser, which
362
+ // owns the block state) and retry the whole turn; the retry's snapshot replacement drops the
363
+ // attempt's thinking (CC: "drop the thinking"). Budget ≤ 2, backoff 100×n ms (CC stale-conn).
364
+ // Honest gap vs CC: a cut usually loses the usage frame, so the discarded attempt's cost goes
365
+ // unrecorded (r2 记档).
366
+ if (thinkingRetries >= 2)
367
+ throw failure.err;
368
+ thinkingRetries++;
369
+ parser.sealForRetry();
370
+ const delayMs = 100 * thinkingRetries;
371
+ emitBrainTelemetry({ kind: "retry", attempt: thinkingRetries, phase: "midstream" }); // [398] C6 (tier B)
372
+ emitBrainStatus({ phase: "reconnecting", detail: "connection lost, reconnecting", retryInSec: Math.ceil(delayMs / 1000) });
373
+ await sleep(delayMs, signal);
374
+ continue;
375
+ }
376
+ // Tier C — nothing substantive streamed (zero events, or a DANGLING tool call: toolcall_start/
377
+ // deltas but no completed call, no text, no thinking — execution-safe, nothing was admitted):
378
+ // retry out of the SAME budget as connect failures; the dangling block disappears with the
379
+ // snapshot replacement. Past the budget → the existing error path (BrainError network).
380
+ if (attempt >= maxRetries)
381
+ throw failure.err;
382
+ const delayMs = retryBackoffMs(baseDelay, attempt);
383
+ attempt++;
384
+ emitBrainTelemetry({ kind: "retry", attempt, phase: "midstream" }); // [398] C6 (tier C)
385
+ emitBrainStatus({ phase: "reconnecting", detail: "connection lost, reconnecting", retryInSec: Math.ceil(delayMs / 1000) });
386
+ await sleep(delayMs, signal);
387
+ // loop back: reconnect (fresh controller/parser); `start` stays suppressed.
388
+ }
389
+ }
390
+ }
391
+ //# sourceMappingURL=stream-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-engine.js","sourceRoot":"","sources":["../../src/brain/stream-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tiered timeouts (1.38.1, design/17 §5B). The task-level `timeoutSec` only bounds the *whole* run;
3
+ * it can't tell apart a gateway that never accepts the connection from one that accepts it, opens the
4
+ * SSE stream, then hangs forever without emitting a token (the most common gateway-stall symptom).
5
+ * Two finer levels close that gap, each retryable as a transient `network` failure:
6
+ *
7
+ * - **connect**: `fetch` hasn't returned response headers in time.
8
+ * - **first-token**: the SSE stream is open but no content delta has arrived (see brain read loops).
9
+ *
10
+ * Both default to `undefined` (disabled) so existing behavior is unchanged.
11
+ */
12
+ export interface BrainTimeoutConfig {
13
+ /** Abort the request if `fetch` doesn't return response headers within this many ms. Retryable. */
14
+ connectTimeoutMs?: number;
15
+ /**
16
+ * After the stream opens, cancel it if no content delta (text / thinking / tool input) arrives
17
+ * within this many ms → `BrainError("network", "first-token timeout")`. For reasoning models the
18
+ * **first thinking delta also counts** as the first token, so a long-thinking model isn't killed
19
+ * for being slow to its first *visible* word (design/17 O5).
20
+ */
21
+ firstTokenTimeoutMs?: number;
22
+ /**
23
+ * **Idle / mid-stream stall watchdog** (1.40.1, design/24 — gap found in the Claude Code source study).
24
+ * After the first delta, re-armed on every delta; if the stream then goes silent for this many ms
25
+ * (a gateway that hung mid-output) → `reader.cancel()` + `BrainError("network", "stream idle timeout")`.
26
+ * Complements `firstTokenTimeoutMs`: that one tolerates a long *first* token (reasoning), this one
27
+ * catches a stall *after* output has started, where a healthy stream emits steadily. Default off.
28
+ */
29
+ idleTimeoutMs?: number;
30
+ }
31
+ /**
32
+ * A per-fetch-attempt abort controller that fires on a connect timeout while still forwarding an
33
+ * outer (task) abort. The returned `signal` governs the **whole** request including the streamed body
34
+ * — so once headers arrive, call `clearTimer()` (NOT `dispose()`) to stop the connect timer while
35
+ * keeping the outer-abort link alive for the body read; call `dispose()` only when the request is
36
+ * fully done or being discarded.
37
+ */
38
+ export declare function makeConnectController(connectTimeoutMs: number | undefined, outerSignal: AbortSignal | undefined): {
39
+ signal: AbortSignal;
40
+ timedOut: () => boolean;
41
+ clearTimer: () => void;
42
+ dispose: () => void;
43
+ };
44
+ //# sourceMappingURL=timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/brain/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA4BA"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * A per-fetch-attempt abort controller that fires on a connect timeout while still forwarding an
3
+ * outer (task) abort. The returned `signal` governs the **whole** request including the streamed body
4
+ * — so once headers arrive, call `clearTimer()` (NOT `dispose()`) to stop the connect timer while
5
+ * keeping the outer-abort link alive for the body read; call `dispose()` only when the request is
6
+ * fully done or being discarded.
7
+ */
8
+ export function makeConnectController(connectTimeoutMs, outerSignal) {
9
+ const ac = new AbortController();
10
+ let timedOut = false;
11
+ const onAbort = () => ac.abort(outerSignal?.reason);
12
+ if (outerSignal) {
13
+ if (outerSignal.aborted)
14
+ ac.abort(outerSignal.reason);
15
+ else
16
+ outerSignal.addEventListener("abort", onAbort, { once: true });
17
+ }
18
+ let timer;
19
+ if (connectTimeoutMs && connectTimeoutMs > 0) {
20
+ timer = setTimeout(() => {
21
+ timedOut = true;
22
+ ac.abort();
23
+ }, connectTimeoutMs);
24
+ }
25
+ const clearTimer = () => {
26
+ if (timer)
27
+ clearTimeout(timer);
28
+ timer = undefined;
29
+ };
30
+ return {
31
+ signal: ac.signal,
32
+ timedOut: () => timedOut,
33
+ clearTimer,
34
+ dispose: () => {
35
+ clearTimer();
36
+ if (outerSignal)
37
+ outerSignal.removeEventListener("abort", onAbort);
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/brain/timeout.ts"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,gBAAoC,EACpC,WAAoC;IAOpC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAE,WAAuC,EAAE,MAAM,CAAC,CAAC;IACjF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,OAAO;YAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;YACjD,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAgD,CAAC;IACrD,IAAI,gBAAgB,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,QAAQ,GAAG,IAAI,CAAC;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC,CAAC;IACF,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ;QACxB,UAAU;QACV,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,EAAE,CAAC;YACb,IAAI,WAAW;gBAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ToolCall } from "../internal/llm.js";
2
+ /**
3
+ * Best-effort recovery of tool calls that a weaker (non-native-function-calling) model emitted as
4
+ * TEXT instead of structured tool calls. Recognizes `<tool_call>{...}</tool_call>` /
5
+ * `<function_call>...` tags and fenced ```json blocks containing `{name|tool, arguments|parameters|input}`
6
+ * (or an array of them). Only names present in `toolNames` are promoted.
7
+ *
8
+ * Returns the promoted tool calls and the text with those blocks removed. Off by default — enable via
9
+ * `createOpenAIBrain({ repairTextToolCalls: true })` only for models that need it.
10
+ */
11
+ export declare function repairTextToolCalls(text: string, toolNames: Set<string>): {
12
+ toolCalls: ToolCall[];
13
+ cleanedText: string;
14
+ };
15
+ //# sourceMappingURL=tool-call-repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-repair.d.ts","sourceRoot":"","sources":["../../src/brain/tool-call-repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAwDnD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GACrB;IAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAShD"}
@@ -0,0 +1,67 @@
1
+ const TAG_RE = /<(tool_call|function_call|tool_calls|function_calls)>\s*([\s\S]*?)\s*<\/\1>/gi;
2
+ const FENCE_RE = /```(?:json|tool_call|tool|function)?\s*([\s\S]*?)```/gi;
3
+ function asRecord(v) {
4
+ return v && typeof v === "object" && !Array.isArray(v) ? v : undefined;
5
+ }
6
+ function extractCall(obj, toolNames) {
7
+ const rec = asRecord(obj);
8
+ if (!rec) {
9
+ return undefined;
10
+ }
11
+ const fn = asRecord(rec.function);
12
+ const name = rec.name ?? rec.tool ?? rec.tool_name ?? fn?.name;
13
+ if (typeof name !== "string" || !toolNames.has(name)) {
14
+ return undefined;
15
+ }
16
+ let rawArgs = rec.arguments ?? rec.parameters ?? rec.input ?? rec.args ?? fn?.arguments;
17
+ if (typeof rawArgs === "string") {
18
+ try {
19
+ rawArgs = JSON.parse(rawArgs);
20
+ }
21
+ catch {
22
+ rawArgs = {};
23
+ }
24
+ }
25
+ const args = asRecord(rawArgs) ?? {};
26
+ return {
27
+ type: "toolCall",
28
+ id: `repair_${name}_${Math.random().toString(36).slice(2, 8)}`,
29
+ name,
30
+ arguments: args,
31
+ };
32
+ }
33
+ function parseBlock(raw, toolNames, out) {
34
+ let parsed;
35
+ try {
36
+ parsed = JSON.parse(raw.trim());
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ const items = Array.isArray(parsed) ? parsed : [parsed];
42
+ let any = false;
43
+ for (const item of items) {
44
+ const call = extractCall(item, toolNames);
45
+ if (call) {
46
+ out.push(call);
47
+ any = true;
48
+ }
49
+ }
50
+ return any;
51
+ }
52
+ /**
53
+ * Best-effort recovery of tool calls that a weaker (non-native-function-calling) model emitted as
54
+ * TEXT instead of structured tool calls. Recognizes `<tool_call>{...}</tool_call>` /
55
+ * `<function_call>...` tags and fenced ```json blocks containing `{name|tool, arguments|parameters|input}`
56
+ * (or an array of them). Only names present in `toolNames` are promoted.
57
+ *
58
+ * Returns the promoted tool calls and the text with those blocks removed. Off by default — enable via
59
+ * `createOpenAIBrain({ repairTextToolCalls: true })` only for models that need it.
60
+ */
61
+ export function repairTextToolCalls(text, toolNames) {
62
+ const toolCalls = [];
63
+ let cleaned = text.replace(TAG_RE, (m, _tag, inner) => parseBlock(inner, toolNames, toolCalls) ? "" : m);
64
+ cleaned = cleaned.replace(FENCE_RE, (m, inner) => parseBlock(inner, toolNames, toolCalls) ? "" : m);
65
+ return { toolCalls, cleanedText: cleaned.trim() };
66
+ }
67
+ //# sourceMappingURL=tool-call-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-repair.js","sourceRoot":"","sources":["../../src/brain/tool-call-repair.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * design/130 P2b — soft per-call wall-clock deadline (deadline execution hardening).
3
+ *
4
+ * The runner passes an absolute soft deadline into each provider call (`StreamOptions.callDeadlineMs`);
5
+ * a brain that observes the wall clock crossing it CUTS the stream deliberately (like the degenerate-
6
+ * repetition cutoff) instead of letting the generation ride into the runner's hard abort — the salvaged
7
+ * prefix is real work, and the loop gets a bounded write-out turn before the hard deadline.
8
+ *
9
+ * The sentinel below is the cross-layer contract (brain → loop recovery → assembler), mirroring
10
+ * `DEGENERATE_MESSAGE` in ./repetition.js: match on THIS constant, never on prose fragments.
11
+ */
12
+ /** Stamped as `errorMessage` on a turn the brain cut at the soft wall-clock deadline. */
13
+ export declare const WALLTIME_CUTOFF_MESSAGE = "walltime cutoff: the response crossed the task's soft wall-clock deadline and was cut off to preserve a write-out window";
14
+ //# sourceMappingURL=walltime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walltime.d.ts","sourceRoot":"","sources":["../../src/brain/walltime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yFAAyF;AACzF,eAAO,MAAM,uBAAuB,6HACwF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * design/130 P2b — soft per-call wall-clock deadline (deadline execution hardening).
3
+ *
4
+ * The runner passes an absolute soft deadline into each provider call (`StreamOptions.callDeadlineMs`);
5
+ * a brain that observes the wall clock crossing it CUTS the stream deliberately (like the degenerate-
6
+ * repetition cutoff) instead of letting the generation ride into the runner's hard abort — the salvaged
7
+ * prefix is real work, and the loop gets a bounded write-out turn before the hard deadline.
8
+ *
9
+ * The sentinel below is the cross-layer contract (brain → loop recovery → assembler), mirroring
10
+ * `DEGENERATE_MESSAGE` in ./repetition.js: match on THIS constant, never on prose fragments.
11
+ */
12
+ /** Stamped as `errorMessage` on a turn the brain cut at the soft wall-clock deadline. */
13
+ export const WALLTIME_CUTOFF_MESSAGE = "walltime cutoff: the response crossed the task's soft wall-clock deadline and was cut off to preserve a write-out window";
14
+ //# sourceMappingURL=walltime.js.map