@inhuman.tools/harness 0.0.0-stage → 0.2.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 (1324) hide show
  1. package/LICENSE.md +7 -0
  2. package/compact.prompt +64 -0
  3. package/compact.scm +85 -0
  4. package/dist/builtin-tools/catalog-entry.d.ts +12 -0
  5. package/dist/builtin-tools/catalog-entry.d.ts.map +1 -0
  6. package/dist/builtin-tools/catalog-entry.js +35 -0
  7. package/dist/builtin-tools/catalog-entry.js.map +1 -0
  8. package/dist/builtin-tools/errno.d.ts +3 -0
  9. package/dist/builtin-tools/errno.d.ts.map +1 -0
  10. package/dist/builtin-tools/errno.js +7 -0
  11. package/dist/builtin-tools/errno.js.map +1 -0
  12. package/dist/builtin-tools/index.d.ts +37 -0
  13. package/dist/builtin-tools/index.d.ts.map +1 -0
  14. package/dist/builtin-tools/index.js +83 -0
  15. package/dist/builtin-tools/index.js.map +1 -0
  16. package/dist/builtin-tools/metadata/context-need.d.ts +16 -0
  17. package/dist/builtin-tools/metadata/context-need.d.ts.map +1 -0
  18. package/dist/builtin-tools/metadata/context-need.js +38 -0
  19. package/dist/builtin-tools/metadata/context-need.js.map +1 -0
  20. package/dist/builtin-tools/metadata/context-recall.d.ts +18 -0
  21. package/dist/builtin-tools/metadata/context-recall.d.ts.map +1 -0
  22. package/dist/builtin-tools/metadata/context-recall.js +23 -0
  23. package/dist/builtin-tools/metadata/context-recall.js.map +1 -0
  24. package/dist/builtin-tools/metadata/update-metadata.d.ts +11 -0
  25. package/dist/builtin-tools/metadata/update-metadata.d.ts.map +1 -0
  26. package/dist/builtin-tools/metadata/update-metadata.js +30 -0
  27. package/dist/builtin-tools/metadata/update-metadata.js.map +1 -0
  28. package/dist/builtin-tools/named-agents/agent-catalog.d.ts +24 -0
  29. package/dist/builtin-tools/named-agents/agent-catalog.d.ts.map +1 -0
  30. package/dist/builtin-tools/named-agents/agent-catalog.js +121 -0
  31. package/dist/builtin-tools/named-agents/agent-catalog.js.map +1 -0
  32. package/dist/builtin-tools/named-agents/agent-stdlib.d.ts +7 -0
  33. package/dist/builtin-tools/named-agents/agent-stdlib.d.ts.map +1 -0
  34. package/dist/builtin-tools/named-agents/agent-stdlib.js +93 -0
  35. package/dist/builtin-tools/named-agents/agent-stdlib.js.map +1 -0
  36. package/dist/builtin-tools/named-bots-home.d.ts +3 -0
  37. package/dist/builtin-tools/named-bots-home.d.ts.map +1 -0
  38. package/dist/builtin-tools/named-bots-home.js +12 -0
  39. package/dist/builtin-tools/named-bots-home.js.map +1 -0
  40. package/dist/builtin-tools/schemas/tool-result.d.ts +14 -0
  41. package/dist/builtin-tools/schemas/tool-result.d.ts.map +1 -0
  42. package/dist/builtin-tools/schemas/tool-result.js +14 -0
  43. package/dist/builtin-tools/schemas/tool-result.js.map +1 -0
  44. package/dist/builtin-tools/scheme-repl/register.d.ts +29 -0
  45. package/dist/builtin-tools/scheme-repl/register.d.ts.map +1 -0
  46. package/dist/builtin-tools/scheme-repl/register.js +67 -0
  47. package/dist/builtin-tools/scheme-repl/register.js.map +1 -0
  48. package/dist/builtin-tools/shell/job-stop.d.ts +10 -0
  49. package/dist/builtin-tools/shell/job-stop.d.ts.map +1 -0
  50. package/dist/builtin-tools/shell/job-stop.js +20 -0
  51. package/dist/builtin-tools/shell/job-stop.js.map +1 -0
  52. package/dist/builtin-tools/shell/shell-tool.d.ts +28 -0
  53. package/dist/builtin-tools/shell/shell-tool.d.ts.map +1 -0
  54. package/dist/builtin-tools/shell/shell-tool.js +200 -0
  55. package/dist/builtin-tools/shell/shell-tool.js.map +1 -0
  56. package/dist/builtin-tools/toolkit/bounds.d.ts +4 -0
  57. package/dist/builtin-tools/toolkit/bounds.d.ts.map +1 -0
  58. package/dist/builtin-tools/toolkit/bounds.js +4 -0
  59. package/dist/builtin-tools/toolkit/bounds.js.map +1 -0
  60. package/dist/builtin-tools/toolkit/dist-tools.d.ts +104 -0
  61. package/dist/builtin-tools/toolkit/dist-tools.d.ts.map +1 -0
  62. package/dist/builtin-tools/toolkit/dist-tools.js +664 -0
  63. package/dist/builtin-tools/toolkit/dist-tools.js.map +1 -0
  64. package/dist/builtin-tools/toolkit/finder.d.ts +4 -0
  65. package/dist/builtin-tools/toolkit/finder.d.ts.map +1 -0
  66. package/dist/builtin-tools/toolkit/finder.js +65 -0
  67. package/dist/builtin-tools/toolkit/finder.js.map +1 -0
  68. package/dist/builtin-tools/toolkit/write-gate.d.ts +7 -0
  69. package/dist/builtin-tools/toolkit/write-gate.d.ts.map +1 -0
  70. package/dist/builtin-tools/toolkit/write-gate.js +42 -0
  71. package/dist/builtin-tools/toolkit/write-gate.js.map +1 -0
  72. package/dist/builtin-tools/web-search/web-extract.d.ts +16 -0
  73. package/dist/builtin-tools/web-search/web-extract.d.ts.map +1 -0
  74. package/dist/builtin-tools/web-search/web-extract.js +33 -0
  75. package/dist/builtin-tools/web-search/web-extract.js.map +1 -0
  76. package/dist/builtin-tools/web-search/web-search.d.ts +14 -0
  77. package/dist/builtin-tools/web-search/web-search.d.ts.map +1 -0
  78. package/dist/builtin-tools/web-search/web-search.js +21 -0
  79. package/dist/builtin-tools/web-search/web-search.js.map +1 -0
  80. package/dist/connections/adapters.d.ts +39 -0
  81. package/dist/connections/adapters.d.ts.map +1 -0
  82. package/dist/connections/adapters.js +108 -0
  83. package/dist/connections/adapters.js.map +1 -0
  84. package/dist/connections/adopt.d.ts +26 -0
  85. package/dist/connections/adopt.d.ts.map +1 -0
  86. package/dist/connections/adopt.js +17 -0
  87. package/dist/connections/adopt.js.map +1 -0
  88. package/dist/connections/credentials.d.ts +13 -0
  89. package/dist/connections/credentials.d.ts.map +1 -0
  90. package/dist/connections/credentials.js +31 -0
  91. package/dist/connections/credentials.js.map +1 -0
  92. package/dist/connections/identity.d.ts +5 -0
  93. package/dist/connections/identity.d.ts.map +1 -0
  94. package/dist/connections/identity.js +5 -0
  95. package/dist/connections/identity.js.map +1 -0
  96. package/dist/connections/index.d.ts +14 -0
  97. package/dist/connections/index.d.ts.map +1 -0
  98. package/dist/connections/index.js +13 -0
  99. package/dist/connections/index.js.map +1 -0
  100. package/dist/connections/intern.d.ts +18 -0
  101. package/dist/connections/intern.d.ts.map +1 -0
  102. package/dist/connections/intern.js +30 -0
  103. package/dist/connections/intern.js.map +1 -0
  104. package/dist/connections/registry.d.ts +22 -0
  105. package/dist/connections/registry.d.ts.map +1 -0
  106. package/dist/connections/registry.js +69 -0
  107. package/dist/connections/registry.js.map +1 -0
  108. package/dist/connections/resolve.d.ts +17 -0
  109. package/dist/connections/resolve.d.ts.map +1 -0
  110. package/dist/connections/resolve.js +86 -0
  111. package/dist/connections/resolve.js.map +1 -0
  112. package/dist/context/index.d.ts +2 -0
  113. package/dist/context/index.d.ts.map +1 -0
  114. package/dist/context/index.js +2 -0
  115. package/dist/context/index.js.map +1 -0
  116. package/dist/extensions/adjust-json.d.ts +2 -0
  117. package/dist/extensions/adjust-json.d.ts.map +1 -0
  118. package/dist/extensions/adjust-json.js +19 -0
  119. package/dist/extensions/adjust-json.js.map +1 -0
  120. package/dist/extensions/behavior.d.ts +17 -0
  121. package/dist/extensions/behavior.d.ts.map +1 -0
  122. package/dist/extensions/behavior.js +709 -0
  123. package/dist/extensions/behavior.js.map +1 -0
  124. package/dist/extensions/consent.d.ts +71 -0
  125. package/dist/extensions/consent.d.ts.map +1 -0
  126. package/dist/extensions/consent.js +76 -0
  127. package/dist/extensions/consent.js.map +1 -0
  128. package/dist/extensions/contributions.d.ts +8 -0
  129. package/dist/extensions/contributions.d.ts.map +1 -0
  130. package/dist/extensions/contributions.js +27 -0
  131. package/dist/extensions/contributions.js.map +1 -0
  132. package/dist/extensions/crossing.d.ts +12 -0
  133. package/dist/extensions/crossing.d.ts.map +1 -0
  134. package/dist/extensions/crossing.js +176 -0
  135. package/dist/extensions/crossing.js.map +1 -0
  136. package/dist/extensions/dispatch.d.ts +83 -0
  137. package/dist/extensions/dispatch.d.ts.map +1 -0
  138. package/dist/extensions/dispatch.js +433 -0
  139. package/dist/extensions/dispatch.js.map +1 -0
  140. package/dist/extensions/eval.d.ts +29 -0
  141. package/dist/extensions/eval.d.ts.map +1 -0
  142. package/dist/extensions/eval.js +125 -0
  143. package/dist/extensions/eval.js.map +1 -0
  144. package/dist/extensions/fs.d.ts +3 -0
  145. package/dist/extensions/fs.d.ts.map +1 -0
  146. package/dist/extensions/fs.js +18 -0
  147. package/dist/extensions/fs.js.map +1 -0
  148. package/dist/extensions/graph.d.ts +18 -0
  149. package/dist/extensions/graph.d.ts.map +1 -0
  150. package/dist/extensions/graph.js +130 -0
  151. package/dist/extensions/graph.js.map +1 -0
  152. package/dist/extensions/host.d.ts +153 -0
  153. package/dist/extensions/host.d.ts.map +1 -0
  154. package/dist/extensions/host.js +501 -0
  155. package/dist/extensions/host.js.map +1 -0
  156. package/dist/extensions/import-paths.d.ts +4 -0
  157. package/dist/extensions/import-paths.d.ts.map +1 -0
  158. package/dist/extensions/import-paths.js +25 -0
  159. package/dist/extensions/import-paths.js.map +1 -0
  160. package/dist/extensions/index.d.ts +21 -0
  161. package/dist/extensions/index.d.ts.map +1 -0
  162. package/dist/extensions/index.js +18 -0
  163. package/dist/extensions/index.js.map +1 -0
  164. package/dist/extensions/install.d.ts +27 -0
  165. package/dist/extensions/install.d.ts.map +1 -0
  166. package/dist/extensions/install.js +143 -0
  167. package/dist/extensions/install.js.map +1 -0
  168. package/dist/extensions/inventory.d.ts +8 -0
  169. package/dist/extensions/inventory.d.ts.map +1 -0
  170. package/dist/extensions/inventory.js +73 -0
  171. package/dist/extensions/inventory.js.map +1 -0
  172. package/dist/extensions/jail.d.ts +3 -0
  173. package/dist/extensions/jail.d.ts.map +1 -0
  174. package/dist/extensions/jail.js +11 -0
  175. package/dist/extensions/jail.js.map +1 -0
  176. package/dist/extensions/manifest.d.ts +44 -0
  177. package/dist/extensions/manifest.d.ts.map +1 -0
  178. package/dist/extensions/manifest.js +105 -0
  179. package/dist/extensions/manifest.js.map +1 -0
  180. package/dist/extensions/match.d.ts +2 -0
  181. package/dist/extensions/match.d.ts.map +1 -0
  182. package/dist/extensions/match.js +26 -0
  183. package/dist/extensions/match.js.map +1 -0
  184. package/dist/extensions/notes.d.ts +40 -0
  185. package/dist/extensions/notes.d.ts.map +1 -0
  186. package/dist/extensions/notes.js +71 -0
  187. package/dist/extensions/notes.js.map +1 -0
  188. package/dist/extensions/pack-plugin-host.d.ts +29 -0
  189. package/dist/extensions/pack-plugin-host.d.ts.map +1 -0
  190. package/dist/extensions/pack-plugin-host.js +6 -0
  191. package/dist/extensions/pack-plugin-host.js.map +1 -0
  192. package/dist/extensions/pin.d.ts +16 -0
  193. package/dist/extensions/pin.d.ts.map +1 -0
  194. package/dist/extensions/pin.js +17 -0
  195. package/dist/extensions/pin.js.map +1 -0
  196. package/dist/extensions/private-mcp.d.ts +51 -0
  197. package/dist/extensions/private-mcp.d.ts.map +1 -0
  198. package/dist/extensions/private-mcp.js +45 -0
  199. package/dist/extensions/private-mcp.js.map +1 -0
  200. package/dist/extensions/rewind.d.ts +18 -0
  201. package/dist/extensions/rewind.d.ts.map +1 -0
  202. package/dist/extensions/rewind.js +62 -0
  203. package/dist/extensions/rewind.js.map +1 -0
  204. package/dist/extensions/schemas/bot-definition.d.ts +80 -0
  205. package/dist/extensions/schemas/bot-definition.d.ts.map +1 -0
  206. package/dist/extensions/schemas/bot-definition.js +70 -0
  207. package/dist/extensions/schemas/bot-definition.js.map +1 -0
  208. package/dist/extensions/schemas/index.d.ts +3 -0
  209. package/dist/extensions/schemas/index.d.ts.map +1 -0
  210. package/dist/extensions/schemas/index.js +3 -0
  211. package/dist/extensions/schemas/index.js.map +1 -0
  212. package/dist/extensions/schemas/plugin-manifest.d.ts +231 -0
  213. package/dist/extensions/schemas/plugin-manifest.d.ts.map +1 -0
  214. package/dist/extensions/schemas/plugin-manifest.js +94 -0
  215. package/dist/extensions/schemas/plugin-manifest.js.map +1 -0
  216. package/dist/extensions/state-store.d.ts +19 -0
  217. package/dist/extensions/state-store.d.ts.map +1 -0
  218. package/dist/extensions/state-store.js +74 -0
  219. package/dist/extensions/state-store.js.map +1 -0
  220. package/dist/extensions/state.d.ts +81 -0
  221. package/dist/extensions/state.d.ts.map +1 -0
  222. package/dist/extensions/state.js +242 -0
  223. package/dist/extensions/state.js.map +1 -0
  224. package/dist/extensions/surface-error.d.ts +5 -0
  225. package/dist/extensions/surface-error.d.ts.map +1 -0
  226. package/dist/extensions/surface-error.js +5 -0
  227. package/dist/extensions/surface-error.js.map +1 -0
  228. package/dist/extensions/value.d.ts +176 -0
  229. package/dist/extensions/value.d.ts.map +1 -0
  230. package/dist/extensions/value.js +120 -0
  231. package/dist/extensions/value.js.map +1 -0
  232. package/dist/hypervisor/child-runtime.d.ts +21 -0
  233. package/dist/hypervisor/child-runtime.d.ts.map +1 -0
  234. package/dist/hypervisor/child-runtime.js +193 -0
  235. package/dist/hypervisor/child-runtime.js.map +1 -0
  236. package/dist/hypervisor/hypervisor.d.ts +69 -0
  237. package/dist/hypervisor/hypervisor.d.ts.map +1 -0
  238. package/dist/hypervisor/hypervisor.js +472 -0
  239. package/dist/hypervisor/hypervisor.js.map +1 -0
  240. package/dist/hypervisor/index.d.ts +4 -0
  241. package/dist/hypervisor/index.d.ts.map +1 -0
  242. package/dist/hypervisor/index.js +4 -0
  243. package/dist/hypervisor/index.js.map +1 -0
  244. package/dist/hypervisor/ipc.d.ts +5 -0
  245. package/dist/hypervisor/ipc.d.ts.map +1 -0
  246. package/dist/hypervisor/ipc.js +36 -0
  247. package/dist/hypervisor/ipc.js.map +1 -0
  248. package/dist/hypervisor/lock.d.ts +20 -0
  249. package/dist/hypervisor/lock.d.ts.map +1 -0
  250. package/dist/hypervisor/lock.js +185 -0
  251. package/dist/hypervisor/lock.js.map +1 -0
  252. package/dist/hypervisor/supervised-child.d.ts +2 -0
  253. package/dist/hypervisor/supervised-child.d.ts.map +1 -0
  254. package/dist/hypervisor/supervised-child.js +10 -0
  255. package/dist/hypervisor/supervised-child.js.map +1 -0
  256. package/dist/hypervisor/util.d.ts +5 -0
  257. package/dist/hypervisor/util.d.ts.map +1 -0
  258. package/dist/hypervisor/util.js +32 -0
  259. package/dist/hypervisor/util.js.map +1 -0
  260. package/dist/policy-processor/explain.d.ts +2 -0
  261. package/dist/policy-processor/explain.d.ts.map +1 -0
  262. package/dist/policy-processor/explain.js +2 -0
  263. package/dist/policy-processor/explain.js.map +1 -0
  264. package/dist/policy-processor/index.d.ts +2 -0
  265. package/dist/policy-processor/index.d.ts.map +1 -0
  266. package/dist/policy-processor/index.js +2 -0
  267. package/dist/policy-processor/index.js.map +1 -0
  268. package/dist/policy-processor/license.d.ts +2 -0
  269. package/dist/policy-processor/license.d.ts.map +1 -0
  270. package/dist/policy-processor/license.js +2 -0
  271. package/dist/policy-processor/license.js.map +1 -0
  272. package/dist/policy-processor/peel-cwd.d.ts +2 -0
  273. package/dist/policy-processor/peel-cwd.d.ts.map +1 -0
  274. package/dist/policy-processor/peel-cwd.js +2 -0
  275. package/dist/policy-processor/peel-cwd.js.map +1 -0
  276. package/dist/policy-processor/scope.d.ts +2 -0
  277. package/dist/policy-processor/scope.d.ts.map +1 -0
  278. package/dist/policy-processor/scope.js +2 -0
  279. package/dist/policy-processor/scope.js.map +1 -0
  280. package/dist/protocol/document/checkpoint.d.ts +32 -0
  281. package/dist/protocol/document/checkpoint.d.ts.map +1 -0
  282. package/dist/protocol/document/checkpoint.js +76 -0
  283. package/dist/protocol/document/checkpoint.js.map +1 -0
  284. package/dist/protocol/document/index.d.ts +9 -0
  285. package/dist/protocol/document/index.d.ts.map +1 -0
  286. package/dist/protocol/document/index.js +11 -0
  287. package/dist/protocol/document/index.js.map +1 -0
  288. package/dist/protocol/document/inventory.d.ts +37 -0
  289. package/dist/protocol/document/inventory.d.ts.map +1 -0
  290. package/dist/protocol/document/inventory.js +44 -0
  291. package/dist/protocol/document/inventory.js.map +1 -0
  292. package/dist/protocol/document/keys.d.ts +38 -0
  293. package/dist/protocol/document/keys.d.ts.map +1 -0
  294. package/dist/protocol/document/keys.js +77 -0
  295. package/dist/protocol/document/keys.js.map +1 -0
  296. package/dist/protocol/document/occupancy.d.ts +13 -0
  297. package/dist/protocol/document/occupancy.d.ts.map +1 -0
  298. package/dist/protocol/document/occupancy.js +38 -0
  299. package/dist/protocol/document/occupancy.js.map +1 -0
  300. package/dist/protocol/document/ordering.d.ts +41 -0
  301. package/dist/protocol/document/ordering.d.ts.map +1 -0
  302. package/dist/protocol/document/ordering.js +104 -0
  303. package/dist/protocol/document/ordering.js.map +1 -0
  304. package/dist/protocol/document/private.d.ts +84 -0
  305. package/dist/protocol/document/private.d.ts.map +1 -0
  306. package/dist/protocol/document/private.js +260 -0
  307. package/dist/protocol/document/private.js.map +1 -0
  308. package/dist/protocol/rpc/index.d.ts +2 -0
  309. package/dist/protocol/rpc/index.d.ts.map +1 -0
  310. package/dist/protocol/rpc/index.js +2 -0
  311. package/dist/protocol/rpc/index.js.map +1 -0
  312. package/dist/protocol/schemas/descriptor.d.ts +68 -0
  313. package/dist/protocol/schemas/descriptor.d.ts.map +1 -0
  314. package/dist/protocol/schemas/descriptor.js +90 -0
  315. package/dist/protocol/schemas/descriptor.js.map +1 -0
  316. package/dist/protocol/schemas/health.d.ts +112 -0
  317. package/dist/protocol/schemas/health.d.ts.map +1 -0
  318. package/dist/protocol/schemas/health.js +44 -0
  319. package/dist/protocol/schemas/health.js.map +1 -0
  320. package/dist/protocol/schemas/identity.d.ts +51 -0
  321. package/dist/protocol/schemas/identity.d.ts.map +1 -0
  322. package/dist/protocol/schemas/identity.js +37 -0
  323. package/dist/protocol/schemas/identity.js.map +1 -0
  324. package/dist/protocol/schemas/index.d.ts +6 -0
  325. package/dist/protocol/schemas/index.d.ts.map +1 -0
  326. package/dist/protocol/schemas/index.js +6 -0
  327. package/dist/protocol/schemas/index.js.map +1 -0
  328. package/dist/protocol/schemas/loss.d.ts +62 -0
  329. package/dist/protocol/schemas/loss.d.ts.map +1 -0
  330. package/dist/protocol/schemas/loss.js +47 -0
  331. package/dist/protocol/schemas/loss.js.map +1 -0
  332. package/dist/protocol/schemas/message.d.ts +291 -0
  333. package/dist/protocol/schemas/message.d.ts.map +1 -0
  334. package/dist/protocol/schemas/message.js +104 -0
  335. package/dist/protocol/schemas/message.js.map +1 -0
  336. package/dist/protocol/supervision/codec.d.ts +4 -0
  337. package/dist/protocol/supervision/codec.d.ts.map +1 -0
  338. package/dist/protocol/supervision/codec.js +9 -0
  339. package/dist/protocol/supervision/codec.js.map +1 -0
  340. package/dist/protocol/supervision/index.d.ts +3 -0
  341. package/dist/protocol/supervision/index.d.ts.map +1 -0
  342. package/dist/protocol/supervision/index.js +3 -0
  343. package/dist/protocol/supervision/index.js.map +1 -0
  344. package/dist/protocol/supervision/loss.d.ts +28 -0
  345. package/dist/protocol/supervision/loss.d.ts.map +1 -0
  346. package/dist/protocol/supervision/loss.js +77 -0
  347. package/dist/protocol/supervision/loss.js.map +1 -0
  348. package/dist/providers/auth/authorize.d.ts +39 -0
  349. package/dist/providers/auth/authorize.d.ts.map +1 -0
  350. package/dist/providers/auth/authorize.js +107 -0
  351. package/dist/providers/auth/authorize.js.map +1 -0
  352. package/dist/providers/auth/device.d.ts +32 -0
  353. package/dist/providers/auth/device.d.ts.map +1 -0
  354. package/dist/providers/auth/device.js +105 -0
  355. package/dist/providers/auth/device.js.map +1 -0
  356. package/dist/providers/auth/fetch.d.ts +18 -0
  357. package/dist/providers/auth/fetch.d.ts.map +1 -0
  358. package/dist/providers/auth/fetch.js +59 -0
  359. package/dist/providers/auth/fetch.js.map +1 -0
  360. package/dist/providers/auth/index.d.ts +9 -0
  361. package/dist/providers/auth/index.d.ts.map +1 -0
  362. package/dist/providers/auth/index.js +9 -0
  363. package/dist/providers/auth/index.js.map +1 -0
  364. package/dist/providers/auth/json.d.ts +10 -0
  365. package/dist/providers/auth/json.d.ts.map +1 -0
  366. package/dist/providers/auth/json.js +28 -0
  367. package/dist/providers/auth/json.js.map +1 -0
  368. package/dist/providers/auth/loopback.d.ts +24 -0
  369. package/dist/providers/auth/loopback.d.ts.map +1 -0
  370. package/dist/providers/auth/loopback.js +123 -0
  371. package/dist/providers/auth/loopback.js.map +1 -0
  372. package/dist/providers/auth/oidc.d.ts +60 -0
  373. package/dist/providers/auth/oidc.d.ts.map +1 -0
  374. package/dist/providers/auth/oidc.js +227 -0
  375. package/dist/providers/auth/oidc.js.map +1 -0
  376. package/dist/providers/chatgpt/connection.d.ts +75 -0
  377. package/dist/providers/chatgpt/connection.d.ts.map +1 -0
  378. package/dist/providers/chatgpt/connection.js +296 -0
  379. package/dist/providers/chatgpt/connection.js.map +1 -0
  380. package/dist/providers/chatgpt/index.d.ts +9 -0
  381. package/dist/providers/chatgpt/index.d.ts.map +1 -0
  382. package/dist/providers/chatgpt/index.js +9 -0
  383. package/dist/providers/chatgpt/index.js.map +1 -0
  384. package/dist/providers/chatgpt/registration.d.ts +8 -0
  385. package/dist/providers/chatgpt/registration.d.ts.map +1 -0
  386. package/dist/providers/chatgpt/registration.js +23 -0
  387. package/dist/providers/chatgpt/registration.js.map +1 -0
  388. package/dist/providers/grok/client-version.d.ts +12 -0
  389. package/dist/providers/grok/client-version.d.ts.map +1 -0
  390. package/dist/providers/grok/client-version.js +74 -0
  391. package/dist/providers/grok/client-version.js.map +1 -0
  392. package/dist/providers/grok/connection.d.ts +110 -0
  393. package/dist/providers/grok/connection.d.ts.map +1 -0
  394. package/dist/providers/grok/connection.js +445 -0
  395. package/dist/providers/grok/connection.js.map +1 -0
  396. package/dist/providers/grok/index.d.ts +9 -0
  397. package/dist/providers/grok/index.d.ts.map +1 -0
  398. package/dist/providers/grok/index.js +9 -0
  399. package/dist/providers/grok/index.js.map +1 -0
  400. package/dist/providers/grok/registration.d.ts +8 -0
  401. package/dist/providers/grok/registration.d.ts.map +1 -0
  402. package/dist/providers/grok/registration.js +23 -0
  403. package/dist/providers/grok/registration.js.map +1 -0
  404. package/dist/providers/grok/search.d.ts +3 -0
  405. package/dist/providers/grok/search.d.ts.map +1 -0
  406. package/dist/providers/grok/search.js +73 -0
  407. package/dist/providers/grok/search.js.map +1 -0
  408. package/dist/providers/mcp/actor.d.ts +19 -0
  409. package/dist/providers/mcp/actor.d.ts.map +1 -0
  410. package/dist/providers/mcp/actor.js +45 -0
  411. package/dist/providers/mcp/actor.js.map +1 -0
  412. package/dist/providers/mcp/adopt.d.ts +22 -0
  413. package/dist/providers/mcp/adopt.d.ts.map +1 -0
  414. package/dist/providers/mcp/adopt.js +100 -0
  415. package/dist/providers/mcp/adopt.js.map +1 -0
  416. package/dist/providers/mcp/config.d.ts +16 -0
  417. package/dist/providers/mcp/config.d.ts.map +1 -0
  418. package/dist/providers/mcp/config.js +30 -0
  419. package/dist/providers/mcp/config.js.map +1 -0
  420. package/dist/providers/mcp/discovery.d.ts +11 -0
  421. package/dist/providers/mcp/discovery.d.ts.map +1 -0
  422. package/dist/providers/mcp/discovery.js +14 -0
  423. package/dist/providers/mcp/discovery.js.map +1 -0
  424. package/dist/providers/mcp/fetch.d.ts +15 -0
  425. package/dist/providers/mcp/fetch.d.ts.map +1 -0
  426. package/dist/providers/mcp/fetch.js +61 -0
  427. package/dist/providers/mcp/fetch.js.map +1 -0
  428. package/dist/providers/mcp/http-driver.d.ts +49 -0
  429. package/dist/providers/mcp/http-driver.d.ts.map +1 -0
  430. package/dist/providers/mcp/http-driver.js +379 -0
  431. package/dist/providers/mcp/http-driver.js.map +1 -0
  432. package/dist/providers/mcp/index.d.ts +23 -0
  433. package/dist/providers/mcp/index.d.ts.map +1 -0
  434. package/dist/providers/mcp/index.js +23 -0
  435. package/dist/providers/mcp/index.js.map +1 -0
  436. package/dist/providers/mcp/json.d.ts +9 -0
  437. package/dist/providers/mcp/json.d.ts.map +1 -0
  438. package/dist/providers/mcp/json.js +32 -0
  439. package/dist/providers/mcp/json.js.map +1 -0
  440. package/dist/providers/mcp/mcp-connection.d.ts +33 -0
  441. package/dist/providers/mcp/mcp-connection.d.ts.map +1 -0
  442. package/dist/providers/mcp/mcp-connection.js +174 -0
  443. package/dist/providers/mcp/mcp-connection.js.map +1 -0
  444. package/dist/providers/mcp/mcp-result.d.ts +10 -0
  445. package/dist/providers/mcp/mcp-result.d.ts.map +1 -0
  446. package/dist/providers/mcp/mcp-result.js +54 -0
  447. package/dist/providers/mcp/mcp-result.js.map +1 -0
  448. package/dist/providers/mcp/oauth.d.ts +25 -0
  449. package/dist/providers/mcp/oauth.d.ts.map +1 -0
  450. package/dist/providers/mcp/oauth.js +323 -0
  451. package/dist/providers/mcp/oauth.js.map +1 -0
  452. package/dist/providers/mcp/persist.d.ts +21 -0
  453. package/dist/providers/mcp/persist.d.ts.map +1 -0
  454. package/dist/providers/mcp/persist.js +76 -0
  455. package/dist/providers/mcp/persist.js.map +1 -0
  456. package/dist/providers/mcp/quote.d.ts +4 -0
  457. package/dist/providers/mcp/quote.d.ts.map +1 -0
  458. package/dist/providers/mcp/quote.js +8 -0
  459. package/dist/providers/mcp/quote.js.map +1 -0
  460. package/dist/providers/mcp/registration.d.ts +10 -0
  461. package/dist/providers/mcp/registration.d.ts.map +1 -0
  462. package/dist/providers/mcp/registration.js +33 -0
  463. package/dist/providers/mcp/registration.js.map +1 -0
  464. package/dist/providers/mcp/registry.d.ts +24 -0
  465. package/dist/providers/mcp/registry.d.ts.map +1 -0
  466. package/dist/providers/mcp/registry.js +209 -0
  467. package/dist/providers/mcp/registry.js.map +1 -0
  468. package/dist/providers/mcp/schemas/mcp.d.ts +50 -0
  469. package/dist/providers/mcp/schemas/mcp.d.ts.map +1 -0
  470. package/dist/providers/mcp/schemas/mcp.js +85 -0
  471. package/dist/providers/mcp/schemas/mcp.js.map +1 -0
  472. package/dist/providers/mcp/stdio-driver.d.ts +31 -0
  473. package/dist/providers/mcp/stdio-driver.d.ts.map +1 -0
  474. package/dist/providers/mcp/stdio-driver.js +129 -0
  475. package/dist/providers/mcp/stdio-driver.js.map +1 -0
  476. package/dist/providers/mcp/stdio-env.d.ts +23 -0
  477. package/dist/providers/mcp/stdio-env.d.ts.map +1 -0
  478. package/dist/providers/mcp/stdio-env.js +82 -0
  479. package/dist/providers/mcp/stdio-env.js.map +1 -0
  480. package/dist/providers/mcp/tool-filter.d.ts +15 -0
  481. package/dist/providers/mcp/tool-filter.d.ts.map +1 -0
  482. package/dist/providers/mcp/tool-filter.js +75 -0
  483. package/dist/providers/mcp/tool-filter.js.map +1 -0
  484. package/dist/providers/mcp/tool-severity.d.ts +9 -0
  485. package/dist/providers/mcp/tool-severity.d.ts.map +1 -0
  486. package/dist/providers/mcp/tool-severity.js +46 -0
  487. package/dist/providers/mcp/tool-severity.js.map +1 -0
  488. package/dist/providers/mcp/wire.d.ts +11 -0
  489. package/dist/providers/mcp/wire.d.ts.map +1 -0
  490. package/dist/providers/mcp/wire.js +11 -0
  491. package/dist/providers/mcp/wire.js.map +1 -0
  492. package/dist/providers/nous/auth.d.ts +19 -0
  493. package/dist/providers/nous/auth.d.ts.map +1 -0
  494. package/dist/providers/nous/auth.js +49 -0
  495. package/dist/providers/nous/auth.js.map +1 -0
  496. package/dist/providers/nous/borrow.d.ts +3 -0
  497. package/dist/providers/nous/borrow.d.ts.map +1 -0
  498. package/dist/providers/nous/borrow.js +49 -0
  499. package/dist/providers/nous/borrow.js.map +1 -0
  500. package/dist/providers/nous/driver.d.ts +56 -0
  501. package/dist/providers/nous/driver.d.ts.map +1 -0
  502. package/dist/providers/nous/driver.js +232 -0
  503. package/dist/providers/nous/driver.js.map +1 -0
  504. package/dist/providers/nous/ids.d.ts +6 -0
  505. package/dist/providers/nous/ids.d.ts.map +1 -0
  506. package/dist/providers/nous/ids.js +6 -0
  507. package/dist/providers/nous/ids.js.map +1 -0
  508. package/dist/providers/nous/index.d.ts +12 -0
  509. package/dist/providers/nous/index.d.ts.map +1 -0
  510. package/dist/providers/nous/index.js +12 -0
  511. package/dist/providers/nous/index.js.map +1 -0
  512. package/dist/providers/nous/registration.d.ts +7 -0
  513. package/dist/providers/nous/registration.d.ts.map +1 -0
  514. package/dist/providers/nous/registration.js +23 -0
  515. package/dist/providers/nous/registration.js.map +1 -0
  516. package/dist/providers/nous/source.d.ts +26 -0
  517. package/dist/providers/nous/source.d.ts.map +1 -0
  518. package/dist/providers/nous/source.js +70 -0
  519. package/dist/providers/nous/source.js.map +1 -0
  520. package/dist/providers/openai-compat/account-look.d.ts +5 -0
  521. package/dist/providers/openai-compat/account-look.d.ts.map +1 -0
  522. package/dist/providers/openai-compat/account-look.js +33 -0
  523. package/dist/providers/openai-compat/account-look.js.map +1 -0
  524. package/dist/providers/openai-compat/actor.d.ts +99 -0
  525. package/dist/providers/openai-compat/actor.d.ts.map +1 -0
  526. package/dist/providers/openai-compat/actor.js +1520 -0
  527. package/dist/providers/openai-compat/actor.js.map +1 -0
  528. package/dist/providers/openai-compat/adopt.d.ts +20 -0
  529. package/dist/providers/openai-compat/adopt.d.ts.map +1 -0
  530. package/dist/providers/openai-compat/adopt.js +10 -0
  531. package/dist/providers/openai-compat/adopt.js.map +1 -0
  532. package/dist/providers/openai-compat/anthropic-cache.d.ts +40 -0
  533. package/dist/providers/openai-compat/anthropic-cache.d.ts.map +1 -0
  534. package/dist/providers/openai-compat/anthropic-cache.js +75 -0
  535. package/dist/providers/openai-compat/anthropic-cache.js.map +1 -0
  536. package/dist/providers/openai-compat/api-extensions/chatgpt-usage.d.ts +6 -0
  537. package/dist/providers/openai-compat/api-extensions/chatgpt-usage.d.ts.map +1 -0
  538. package/dist/providers/openai-compat/api-extensions/chatgpt-usage.js +134 -0
  539. package/dist/providers/openai-compat/api-extensions/chatgpt-usage.js.map +1 -0
  540. package/dist/providers/openai-compat/api-extensions/chutes.d.ts +3 -0
  541. package/dist/providers/openai-compat/api-extensions/chutes.d.ts.map +1 -0
  542. package/dist/providers/openai-compat/api-extensions/chutes.js +41 -0
  543. package/dist/providers/openai-compat/api-extensions/chutes.js.map +1 -0
  544. package/dist/providers/openai-compat/api-extensions/deepinfra.d.ts +3 -0
  545. package/dist/providers/openai-compat/api-extensions/deepinfra.d.ts.map +1 -0
  546. package/dist/providers/openai-compat/api-extensions/deepinfra.js +44 -0
  547. package/dist/providers/openai-compat/api-extensions/deepinfra.js.map +1 -0
  548. package/dist/providers/openai-compat/api-extensions/deepseek.d.ts +3 -0
  549. package/dist/providers/openai-compat/api-extensions/deepseek.d.ts.map +1 -0
  550. package/dist/providers/openai-compat/api-extensions/deepseek.js +47 -0
  551. package/dist/providers/openai-compat/api-extensions/deepseek.js.map +1 -0
  552. package/dist/providers/openai-compat/api-extensions/grok-billing.d.ts +5 -0
  553. package/dist/providers/openai-compat/api-extensions/grok-billing.d.ts.map +1 -0
  554. package/dist/providers/openai-compat/api-extensions/grok-billing.js +116 -0
  555. package/dist/providers/openai-compat/api-extensions/grok-billing.js.map +1 -0
  556. package/dist/providers/openai-compat/api-extensions/http.d.ts +9 -0
  557. package/dist/providers/openai-compat/api-extensions/http.d.ts.map +1 -0
  558. package/dist/providers/openai-compat/api-extensions/http.js +73 -0
  559. package/dist/providers/openai-compat/api-extensions/http.js.map +1 -0
  560. package/dist/providers/openai-compat/api-extensions/index.d.ts +17 -0
  561. package/dist/providers/openai-compat/api-extensions/index.d.ts.map +1 -0
  562. package/dist/providers/openai-compat/api-extensions/index.js +16 -0
  563. package/dist/providers/openai-compat/api-extensions/index.js.map +1 -0
  564. package/dist/providers/openai-compat/api-extensions/moonshot.d.ts +3 -0
  565. package/dist/providers/openai-compat/api-extensions/moonshot.d.ts.map +1 -0
  566. package/dist/providers/openai-compat/api-extensions/moonshot.js +29 -0
  567. package/dist/providers/openai-compat/api-extensions/moonshot.js.map +1 -0
  568. package/dist/providers/openai-compat/api-extensions/novita.d.ts +3 -0
  569. package/dist/providers/openai-compat/api-extensions/novita.d.ts.map +1 -0
  570. package/dist/providers/openai-compat/api-extensions/novita.js +48 -0
  571. package/dist/providers/openai-compat/api-extensions/novita.js.map +1 -0
  572. package/dist/providers/openai-compat/api-extensions/opencode-go.d.ts +3 -0
  573. package/dist/providers/openai-compat/api-extensions/opencode-go.d.ts.map +1 -0
  574. package/dist/providers/openai-compat/api-extensions/opencode-go.js +50 -0
  575. package/dist/providers/openai-compat/api-extensions/opencode-go.js.map +1 -0
  576. package/dist/providers/openai-compat/api-extensions/openrouter.d.ts +3 -0
  577. package/dist/providers/openai-compat/api-extensions/openrouter.d.ts.map +1 -0
  578. package/dist/providers/openai-compat/api-extensions/openrouter.js +71 -0
  579. package/dist/providers/openai-compat/api-extensions/openrouter.js.map +1 -0
  580. package/dist/providers/openai-compat/api-extensions/poe.d.ts +3 -0
  581. package/dist/providers/openai-compat/api-extensions/poe.d.ts.map +1 -0
  582. package/dist/providers/openai-compat/api-extensions/poe.js +18 -0
  583. package/dist/providers/openai-compat/api-extensions/poe.js.map +1 -0
  584. package/dist/providers/openai-compat/api-extensions/siliconflow.d.ts +3 -0
  585. package/dist/providers/openai-compat/api-extensions/siliconflow.d.ts.map +1 -0
  586. package/dist/providers/openai-compat/api-extensions/siliconflow.js +48 -0
  587. package/dist/providers/openai-compat/api-extensions/siliconflow.js.map +1 -0
  588. package/dist/providers/openai-compat/api-extensions/together.d.ts +3 -0
  589. package/dist/providers/openai-compat/api-extensions/together.d.ts.map +1 -0
  590. package/dist/providers/openai-compat/api-extensions/together.js +32 -0
  591. package/dist/providers/openai-compat/api-extensions/together.js.map +1 -0
  592. package/dist/providers/openai-compat/api-extensions/types.d.ts +120 -0
  593. package/dist/providers/openai-compat/api-extensions/types.d.ts.map +1 -0
  594. package/dist/providers/openai-compat/api-extensions/types.js +141 -0
  595. package/dist/providers/openai-compat/api-extensions/types.js.map +1 -0
  596. package/dist/providers/openai-compat/api-extensions/venice.d.ts +3 -0
  597. package/dist/providers/openai-compat/api-extensions/venice.d.ts.map +1 -0
  598. package/dist/providers/openai-compat/api-extensions/venice.js +49 -0
  599. package/dist/providers/openai-compat/api-extensions/venice.js.map +1 -0
  600. package/dist/providers/openai-compat/api-extensions/vercel-ai-gateway.d.ts +3 -0
  601. package/dist/providers/openai-compat/api-extensions/vercel-ai-gateway.d.ts.map +1 -0
  602. package/dist/providers/openai-compat/api-extensions/vercel-ai-gateway.js +18 -0
  603. package/dist/providers/openai-compat/api-extensions/vercel-ai-gateway.js.map +1 -0
  604. package/dist/providers/openai-compat/arg-aliases.d.ts +12 -0
  605. package/dist/providers/openai-compat/arg-aliases.d.ts.map +1 -0
  606. package/dist/providers/openai-compat/arg-aliases.js +82 -0
  607. package/dist/providers/openai-compat/arg-aliases.js.map +1 -0
  608. package/dist/providers/openai-compat/cache-affinity.d.ts +89 -0
  609. package/dist/providers/openai-compat/cache-affinity.d.ts.map +1 -0
  610. package/dist/providers/openai-compat/cache-affinity.js +221 -0
  611. package/dist/providers/openai-compat/cache-affinity.js.map +1 -0
  612. package/dist/providers/openai-compat/cache-dump.d.ts +32 -0
  613. package/dist/providers/openai-compat/cache-dump.d.ts.map +1 -0
  614. package/dist/providers/openai-compat/cache-dump.js +158 -0
  615. package/dist/providers/openai-compat/cache-dump.js.map +1 -0
  616. package/dist/providers/openai-compat/completion-face.d.ts +18 -0
  617. package/dist/providers/openai-compat/completion-face.d.ts.map +1 -0
  618. package/dist/providers/openai-compat/completion-face.js +27 -0
  619. package/dist/providers/openai-compat/completion-face.js.map +1 -0
  620. package/dist/providers/openai-compat/connection.d.ts +153 -0
  621. package/dist/providers/openai-compat/connection.d.ts.map +1 -0
  622. package/dist/providers/openai-compat/connection.js +837 -0
  623. package/dist/providers/openai-compat/connection.js.map +1 -0
  624. package/dist/providers/openai-compat/fetch-failure.d.ts +23 -0
  625. package/dist/providers/openai-compat/fetch-failure.d.ts.map +1 -0
  626. package/dist/providers/openai-compat/fetch-failure.js +58 -0
  627. package/dist/providers/openai-compat/fetch-failure.js.map +1 -0
  628. package/dist/providers/openai-compat/fetch-types.d.ts +5 -0
  629. package/dist/providers/openai-compat/fetch-types.d.ts.map +1 -0
  630. package/dist/providers/openai-compat/fetch-types.js +19 -0
  631. package/dist/providers/openai-compat/fetch-types.js.map +1 -0
  632. package/dist/providers/openai-compat/index.d.ts +18 -0
  633. package/dist/providers/openai-compat/index.d.ts.map +1 -0
  634. package/dist/providers/openai-compat/index.js +17 -0
  635. package/dist/providers/openai-compat/index.js.map +1 -0
  636. package/dist/providers/openai-compat/json-read.d.ts +7 -0
  637. package/dist/providers/openai-compat/json-read.d.ts.map +1 -0
  638. package/dist/providers/openai-compat/json-read.js +20 -0
  639. package/dist/providers/openai-compat/json-read.js.map +1 -0
  640. package/dist/providers/openai-compat/local-offers.d.ts +10 -0
  641. package/dist/providers/openai-compat/local-offers.d.ts.map +1 -0
  642. package/dist/providers/openai-compat/local-offers.js +59 -0
  643. package/dist/providers/openai-compat/local-offers.js.map +1 -0
  644. package/dist/providers/openai-compat/model-catalog.d.ts +16 -0
  645. package/dist/providers/openai-compat/model-catalog.d.ts.map +1 -0
  646. package/dist/providers/openai-compat/model-catalog.js +97 -0
  647. package/dist/providers/openai-compat/model-catalog.js.map +1 -0
  648. package/dist/providers/openai-compat/presence.d.ts +27 -0
  649. package/dist/providers/openai-compat/presence.d.ts.map +1 -0
  650. package/dist/providers/openai-compat/presence.js +242 -0
  651. package/dist/providers/openai-compat/presence.js.map +1 -0
  652. package/dist/providers/openai-compat/reasoning-flavor.d.ts +29 -0
  653. package/dist/providers/openai-compat/reasoning-flavor.d.ts.map +1 -0
  654. package/dist/providers/openai-compat/reasoning-flavor.js +263 -0
  655. package/dist/providers/openai-compat/reasoning-flavor.js.map +1 -0
  656. package/dist/providers/openai-compat/register.d.ts +3 -0
  657. package/dist/providers/openai-compat/register.d.ts.map +1 -0
  658. package/dist/providers/openai-compat/register.js +25 -0
  659. package/dist/providers/openai-compat/register.js.map +1 -0
  660. package/dist/providers/openai-compat/schema.d.ts +23 -0
  661. package/dist/providers/openai-compat/schema.d.ts.map +1 -0
  662. package/dist/providers/openai-compat/schema.js +47 -0
  663. package/dist/providers/openai-compat/schema.js.map +1 -0
  664. package/dist/providers/openai-compat/tool-call-json.d.ts +5 -0
  665. package/dist/providers/openai-compat/tool-call-json.d.ts.map +1 -0
  666. package/dist/providers/openai-compat/tool-call-json.js +34 -0
  667. package/dist/providers/openai-compat/tool-call-json.js.map +1 -0
  668. package/dist/providers/openai-compat/well-known.d.ts +16 -0
  669. package/dist/providers/openai-compat/well-known.d.ts.map +1 -0
  670. package/dist/providers/openai-compat/well-known.js +128 -0
  671. package/dist/providers/openai-compat/well-known.js.map +1 -0
  672. package/dist/providers/openrouter/connection.d.ts +26 -0
  673. package/dist/providers/openrouter/connection.d.ts.map +1 -0
  674. package/dist/providers/openrouter/connection.js +95 -0
  675. package/dist/providers/openrouter/connection.js.map +1 -0
  676. package/dist/providers/openrouter/index.d.ts +8 -0
  677. package/dist/providers/openrouter/index.d.ts.map +1 -0
  678. package/dist/providers/openrouter/index.js +8 -0
  679. package/dist/providers/openrouter/index.js.map +1 -0
  680. package/dist/providers/openrouter/register.d.ts +3 -0
  681. package/dist/providers/openrouter/register.d.ts.map +1 -0
  682. package/dist/providers/openrouter/register.js +23 -0
  683. package/dist/providers/openrouter/register.js.map +1 -0
  684. package/dist/providers/web/registrations/actor.d.ts +10 -0
  685. package/dist/providers/web/registrations/actor.d.ts.map +1 -0
  686. package/dist/providers/web/registrations/actor.js +25 -0
  687. package/dist/providers/web/registrations/actor.js.map +1 -0
  688. package/dist/providers/web/registrations/adopt.d.ts +16 -0
  689. package/dist/providers/web/registrations/adopt.d.ts.map +1 -0
  690. package/dist/providers/web/registrations/adopt.js +8 -0
  691. package/dist/providers/web/registrations/adopt.js.map +1 -0
  692. package/dist/providers/web/registrations/connection.d.ts +31 -0
  693. package/dist/providers/web/registrations/connection.d.ts.map +1 -0
  694. package/dist/providers/web/registrations/connection.js +197 -0
  695. package/dist/providers/web/registrations/connection.js.map +1 -0
  696. package/dist/providers/web/registrations/exa.d.ts +18 -0
  697. package/dist/providers/web/registrations/exa.d.ts.map +1 -0
  698. package/dist/providers/web/registrations/exa.js +20 -0
  699. package/dist/providers/web/registrations/exa.js.map +1 -0
  700. package/dist/providers/web/registrations/extract-actor.d.ts +10 -0
  701. package/dist/providers/web/registrations/extract-actor.d.ts.map +1 -0
  702. package/dist/providers/web/registrations/extract-actor.js +25 -0
  703. package/dist/providers/web/registrations/extract-actor.js.map +1 -0
  704. package/dist/providers/web/registrations/firecrawl.d.ts +21 -0
  705. package/dist/providers/web/registrations/firecrawl.d.ts.map +1 -0
  706. package/dist/providers/web/registrations/firecrawl.js +32 -0
  707. package/dist/providers/web/registrations/firecrawl.js.map +1 -0
  708. package/dist/providers/web/registrations/ids.d.ts +6 -0
  709. package/dist/providers/web/registrations/ids.d.ts.map +1 -0
  710. package/dist/providers/web/registrations/ids.js +5 -0
  711. package/dist/providers/web/registrations/ids.js.map +1 -0
  712. package/dist/providers/web/registrations/index.d.ts +19 -0
  713. package/dist/providers/web/registrations/index.d.ts.map +1 -0
  714. package/dist/providers/web/registrations/index.js +18 -0
  715. package/dist/providers/web/registrations/index.js.map +1 -0
  716. package/dist/providers/web/registrations/keenable.d.ts +18 -0
  717. package/dist/providers/web/registrations/keenable.d.ts.map +1 -0
  718. package/dist/providers/web/registrations/keenable.js +20 -0
  719. package/dist/providers/web/registrations/keenable.js.map +1 -0
  720. package/dist/providers/web/registrations/keyless.d.ts +13 -0
  721. package/dist/providers/web/registrations/keyless.d.ts.map +1 -0
  722. package/dist/providers/web/registrations/keyless.js +15 -0
  723. package/dist/providers/web/registrations/keyless.js.map +1 -0
  724. package/dist/providers/web/registrations/parallel.d.ts +18 -0
  725. package/dist/providers/web/registrations/parallel.d.ts.map +1 -0
  726. package/dist/providers/web/registrations/parallel.js +20 -0
  727. package/dist/providers/web/registrations/parallel.js.map +1 -0
  728. package/dist/providers/web/registrations/registration.d.ts +7 -0
  729. package/dist/providers/web/registrations/registration.d.ts.map +1 -0
  730. package/dist/providers/web/registrations/registration.js +62 -0
  731. package/dist/providers/web/registrations/registration.js.map +1 -0
  732. package/dist/providers/web/registrations/ring.d.ts +10 -0
  733. package/dist/providers/web/registrations/ring.d.ts.map +1 -0
  734. package/dist/providers/web/registrations/ring.js +59 -0
  735. package/dist/providers/web/registrations/ring.js.map +1 -0
  736. package/dist/providers/web/registrations/schemas.d.ts +8 -0
  737. package/dist/providers/web/registrations/schemas.d.ts.map +1 -0
  738. package/dist/providers/web/registrations/schemas.js +8 -0
  739. package/dist/providers/web/registrations/schemas.js.map +1 -0
  740. package/dist/providers/web/registrations/tavily.d.ts +18 -0
  741. package/dist/providers/web/registrations/tavily.d.ts.map +1 -0
  742. package/dist/providers/web/registrations/tavily.js +20 -0
  743. package/dist/providers/web/registrations/tavily.js.map +1 -0
  744. package/dist/providers/web/wire/adapters.d.ts +22 -0
  745. package/dist/providers/web/wire/adapters.d.ts.map +1 -0
  746. package/dist/providers/web/wire/adapters.js +258 -0
  747. package/dist/providers/web/wire/adapters.js.map +1 -0
  748. package/dist/providers/web/wire/extract.d.ts +35 -0
  749. package/dist/providers/web/wire/extract.d.ts.map +1 -0
  750. package/dist/providers/web/wire/extract.js +267 -0
  751. package/dist/providers/web/wire/extract.js.map +1 -0
  752. package/dist/providers/web/wire/fetch-failure.d.ts +20 -0
  753. package/dist/providers/web/wire/fetch-failure.d.ts.map +1 -0
  754. package/dist/providers/web/wire/fetch-failure.js +47 -0
  755. package/dist/providers/web/wire/fetch-failure.js.map +1 -0
  756. package/dist/providers/web/wire/http.d.ts +45 -0
  757. package/dist/providers/web/wire/http.d.ts.map +1 -0
  758. package/dist/providers/web/wire/http.js +167 -0
  759. package/dist/providers/web/wire/http.js.map +1 -0
  760. package/dist/providers/web/wire/index.d.ts +10 -0
  761. package/dist/providers/web/wire/index.d.ts.map +1 -0
  762. package/dist/providers/web/wire/index.js +10 -0
  763. package/dist/providers/web/wire/index.js.map +1 -0
  764. package/dist/providers/web/wire/json.d.ts +7 -0
  765. package/dist/providers/web/wire/json.d.ts.map +1 -0
  766. package/dist/providers/web/wire/json.js +18 -0
  767. package/dist/providers/web/wire/json.js.map +1 -0
  768. package/dist/providers/web/wire/ssrf.d.ts +3 -0
  769. package/dist/providers/web/wire/ssrf.d.ts.map +1 -0
  770. package/dist/providers/web/wire/ssrf.js +38 -0
  771. package/dist/providers/web/wire/ssrf.js.map +1 -0
  772. package/dist/providers/web/wire/types.d.ts +37 -0
  773. package/dist/providers/web/wire/types.d.ts.map +1 -0
  774. package/dist/providers/web/wire/types.js +21 -0
  775. package/dist/providers/web/wire/types.js.map +1 -0
  776. package/dist/runtime/bot-mcp.d.ts +35 -0
  777. package/dist/runtime/bot-mcp.d.ts.map +1 -0
  778. package/dist/runtime/bot-mcp.js +97 -0
  779. package/dist/runtime/bot-mcp.js.map +1 -0
  780. package/dist/runtime/compose.d.ts +92 -0
  781. package/dist/runtime/compose.d.ts.map +1 -0
  782. package/dist/runtime/compose.js +143 -0
  783. package/dist/runtime/compose.js.map +1 -0
  784. package/dist/runtime/connection-tools.d.ts +31 -0
  785. package/dist/runtime/connection-tools.d.ts.map +1 -0
  786. package/dist/runtime/connection-tools.js +122 -0
  787. package/dist/runtime/connection-tools.js.map +1 -0
  788. package/dist/runtime/eligibility.d.ts +15 -0
  789. package/dist/runtime/eligibility.d.ts.map +1 -0
  790. package/dist/runtime/eligibility.js +46 -0
  791. package/dist/runtime/eligibility.js.map +1 -0
  792. package/dist/runtime/grants.d.ts +13 -0
  793. package/dist/runtime/grants.d.ts.map +1 -0
  794. package/dist/runtime/grants.js +37 -0
  795. package/dist/runtime/grants.js.map +1 -0
  796. package/dist/runtime/index.d.ts +10 -0
  797. package/dist/runtime/index.d.ts.map +1 -0
  798. package/dist/runtime/index.js +8 -0
  799. package/dist/runtime/index.js.map +1 -0
  800. package/dist/runtime/intent-recovery.d.ts +39 -0
  801. package/dist/runtime/intent-recovery.d.ts.map +1 -0
  802. package/dist/runtime/intent-recovery.js +142 -0
  803. package/dist/runtime/intent-recovery.js.map +1 -0
  804. package/dist/runtime/private-plugin-mcp.d.ts +38 -0
  805. package/dist/runtime/private-plugin-mcp.d.ts.map +1 -0
  806. package/dist/runtime/private-plugin-mcp.js +228 -0
  807. package/dist/runtime/private-plugin-mcp.js.map +1 -0
  808. package/dist/runtime/types.d.ts +20 -0
  809. package/dist/runtime/types.d.ts.map +1 -0
  810. package/dist/runtime/types.js +6 -0
  811. package/dist/runtime/types.js.map +1 -0
  812. package/dist/runtime-server/compose.d.ts +45 -0
  813. package/dist/runtime-server/compose.d.ts.map +1 -0
  814. package/dist/runtime-server/compose.js +195 -0
  815. package/dist/runtime-server/compose.js.map +1 -0
  816. package/dist/runtime-server/index.d.ts +2 -0
  817. package/dist/runtime-server/index.d.ts.map +1 -0
  818. package/dist/runtime-server/index.js +2 -0
  819. package/dist/runtime-server/index.js.map +1 -0
  820. package/dist/server/ack-requests.d.ts +39 -0
  821. package/dist/server/ack-requests.d.ts.map +1 -0
  822. package/dist/server/ack-requests.js +74 -0
  823. package/dist/server/ack-requests.js.map +1 -0
  824. package/dist/server/adjust-json.d.ts +2 -0
  825. package/dist/server/adjust-json.d.ts.map +1 -0
  826. package/dist/server/adjust-json.js +2 -0
  827. package/dist/server/adjust-json.js.map +1 -0
  828. package/dist/server/ask-answer.d.ts +70 -0
  829. package/dist/server/ask-answer.d.ts.map +1 -0
  830. package/dist/server/ask-answer.js +159 -0
  831. package/dist/server/ask-answer.js.map +1 -0
  832. package/dist/server/bin.d.ts +3 -0
  833. package/dist/server/bin.d.ts.map +1 -0
  834. package/dist/server/bin.js +52 -0
  835. package/dist/server/bin.js.map +1 -0
  836. package/dist/server/blobs/bucket.d.ts +49 -0
  837. package/dist/server/blobs/bucket.d.ts.map +1 -0
  838. package/dist/server/blobs/bucket.js +20 -0
  839. package/dist/server/blobs/bucket.js.map +1 -0
  840. package/dist/server/blobs/fs-bucket.d.ts +18 -0
  841. package/dist/server/blobs/fs-bucket.d.ts.map +1 -0
  842. package/dist/server/blobs/fs-bucket.js +146 -0
  843. package/dist/server/blobs/fs-bucket.js.map +1 -0
  844. package/dist/server/blobs/media.d.ts +9 -0
  845. package/dist/server/blobs/media.d.ts.map +1 -0
  846. package/dist/server/blobs/media.js +22 -0
  847. package/dist/server/blobs/media.js.map +1 -0
  848. package/dist/server/blobs/store.d.ts +13 -0
  849. package/dist/server/blobs/store.d.ts.map +1 -0
  850. package/dist/server/blobs/store.js +45 -0
  851. package/dist/server/blobs/store.js.map +1 -0
  852. package/dist/server/blobs/vacuum.d.ts +24 -0
  853. package/dist/server/blobs/vacuum.d.ts.map +1 -0
  854. package/dist/server/blobs/vacuum.js +99 -0
  855. package/dist/server/blobs/vacuum.js.map +1 -0
  856. package/dist/server/boot.d.ts +2 -0
  857. package/dist/server/boot.d.ts.map +1 -0
  858. package/dist/server/boot.js +22 -0
  859. package/dist/server/boot.js.map +1 -0
  860. package/dist/server/capture-env.d.ts +3 -0
  861. package/dist/server/capture-env.d.ts.map +1 -0
  862. package/dist/server/capture-env.js +27 -0
  863. package/dist/server/capture-env.js.map +1 -0
  864. package/dist/server/composition.d.ts +19 -0
  865. package/dist/server/composition.d.ts.map +1 -0
  866. package/dist/server/composition.js +111 -0
  867. package/dist/server/composition.js.map +1 -0
  868. package/dist/server/contract.d.ts +90 -0
  869. package/dist/server/contract.d.ts.map +1 -0
  870. package/dist/server/contract.js +318 -0
  871. package/dist/server/contract.js.map +1 -0
  872. package/dist/server/daemon/bots/bot-mode.d.ts +7 -0
  873. package/dist/server/daemon/bots/bot-mode.d.ts.map +1 -0
  874. package/dist/server/daemon/bots/bot-mode.js +11 -0
  875. package/dist/server/daemon/bots/bot-mode.js.map +1 -0
  876. package/dist/server/daemon/bots/index.d.ts +5 -0
  877. package/dist/server/daemon/bots/index.d.ts.map +1 -0
  878. package/dist/server/daemon/bots/index.js +5 -0
  879. package/dist/server/daemon/bots/index.js.map +1 -0
  880. package/dist/server/daemon/bots/merge.d.ts +27 -0
  881. package/dist/server/daemon/bots/merge.d.ts.map +1 -0
  882. package/dist/server/daemon/bots/merge.js +201 -0
  883. package/dist/server/daemon/bots/merge.js.map +1 -0
  884. package/dist/server/daemon/bots/notice.d.ts +5 -0
  885. package/dist/server/daemon/bots/notice.d.ts.map +1 -0
  886. package/dist/server/daemon/bots/notice.js +28 -0
  887. package/dist/server/daemon/bots/notice.js.map +1 -0
  888. package/dist/server/daemon/bots/parse-bot-markdown.d.ts +18 -0
  889. package/dist/server/daemon/bots/parse-bot-markdown.d.ts.map +1 -0
  890. package/dist/server/daemon/bots/parse-bot-markdown.js +21 -0
  891. package/dist/server/daemon/bots/parse-bot-markdown.js.map +1 -0
  892. package/dist/server/daemon/bots/paths.d.ts +4 -0
  893. package/dist/server/daemon/bots/paths.d.ts.map +1 -0
  894. package/dist/server/daemon/bots/paths.js +15 -0
  895. package/dist/server/daemon/bots/paths.js.map +1 -0
  896. package/dist/server/daemon/bots/watcher.d.ts +8 -0
  897. package/dist/server/daemon/bots/watcher.d.ts.map +1 -0
  898. package/dist/server/daemon/bots/watcher.js +25 -0
  899. package/dist/server/daemon/bots/watcher.js.map +1 -0
  900. package/dist/server/daemon/fs/watchFiles.d.ts +24 -0
  901. package/dist/server/daemon/fs/watchFiles.d.ts.map +1 -0
  902. package/dist/server/daemon/fs/watchFiles.js +225 -0
  903. package/dist/server/daemon/fs/watchFiles.js.map +1 -0
  904. package/dist/server/daemon/kernel/KernelDaemon.d.ts +543 -0
  905. package/dist/server/daemon/kernel/KernelDaemon.d.ts.map +1 -0
  906. package/dist/server/daemon/kernel/KernelDaemon.js +1526 -0
  907. package/dist/server/daemon/kernel/KernelDaemon.js.map +1 -0
  908. package/dist/server/daemon/kernel/completion-catalog.d.ts +28 -0
  909. package/dist/server/daemon/kernel/completion-catalog.d.ts.map +1 -0
  910. package/dist/server/daemon/kernel/completion-catalog.js +54 -0
  911. package/dist/server/daemon/kernel/completion-catalog.js.map +1 -0
  912. package/dist/server/daemon/kernel/connection-rpc.d.ts +16 -0
  913. package/dist/server/daemon/kernel/connection-rpc.d.ts.map +1 -0
  914. package/dist/server/daemon/kernel/connection-rpc.js +72 -0
  915. package/dist/server/daemon/kernel/connection-rpc.js.map +1 -0
  916. package/dist/server/daemon/kernel/fs-reflection/KernelReflector.d.ts +22 -0
  917. package/dist/server/daemon/kernel/fs-reflection/KernelReflector.d.ts.map +1 -0
  918. package/dist/server/daemon/kernel/fs-reflection/KernelReflector.js +46 -0
  919. package/dist/server/daemon/kernel/fs-reflection/KernelReflector.js.map +1 -0
  920. package/dist/server/daemon/kernel/fs-reflection/WatchPaths.d.ts +3 -0
  921. package/dist/server/daemon/kernel/fs-reflection/WatchPaths.d.ts.map +1 -0
  922. package/dist/server/daemon/kernel/fs-reflection/WatchPaths.js +37 -0
  923. package/dist/server/daemon/kernel/fs-reflection/WatchPaths.js.map +1 -0
  924. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.d.ts +4 -0
  925. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.d.ts.map +1 -0
  926. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.js +203 -0
  927. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.js.map +1 -0
  928. package/dist/server/daemon/kernel/glance-ask-line.d.ts +7 -0
  929. package/dist/server/daemon/kernel/glance-ask-line.d.ts.map +1 -0
  930. package/dist/server/daemon/kernel/glance-ask-line.js +36 -0
  931. package/dist/server/daemon/kernel/glance-ask-line.js.map +1 -0
  932. package/dist/server/daemon/kernel/kernel-package.d.ts +7 -0
  933. package/dist/server/daemon/kernel/kernel-package.d.ts.map +1 -0
  934. package/dist/server/daemon/kernel/kernel-package.js +40 -0
  935. package/dist/server/daemon/kernel/kernel-package.js.map +1 -0
  936. package/dist/server/daemon/kernel/remote-access.d.ts +75 -0
  937. package/dist/server/daemon/kernel/remote-access.d.ts.map +1 -0
  938. package/dist/server/daemon/kernel/remote-access.js +206 -0
  939. package/dist/server/daemon/kernel/remote-access.js.map +1 -0
  940. package/dist/server/daemon/kernel/remote-connector.d.ts +29 -0
  941. package/dist/server/daemon/kernel/remote-connector.d.ts.map +1 -0
  942. package/dist/server/daemon/kernel/remote-connector.js +475 -0
  943. package/dist/server/daemon/kernel/remote-connector.js.map +1 -0
  944. package/dist/server/daemon/kernel/remote-http.d.ts +19 -0
  945. package/dist/server/daemon/kernel/remote-http.d.ts.map +1 -0
  946. package/dist/server/daemon/kernel/remote-http.js +161 -0
  947. package/dist/server/daemon/kernel/remote-http.js.map +1 -0
  948. package/dist/server/daemon/kernel/settings-config.d.ts +28 -0
  949. package/dist/server/daemon/kernel/settings-config.d.ts.map +1 -0
  950. package/dist/server/daemon/kernel/settings-config.js +53 -0
  951. package/dist/server/daemon/kernel/settings-config.js.map +1 -0
  952. package/dist/server/daemon/kernel/settings-files.d.ts +38 -0
  953. package/dist/server/daemon/kernel/settings-files.d.ts.map +1 -0
  954. package/dist/server/daemon/kernel/settings-files.js +189 -0
  955. package/dist/server/daemon/kernel/settings-files.js.map +1 -0
  956. package/dist/server/daemon/project/ProjectDaemon.d.ts +30 -0
  957. package/dist/server/daemon/project/ProjectDaemon.d.ts.map +1 -0
  958. package/dist/server/daemon/project/ProjectDaemon.js +310 -0
  959. package/dist/server/daemon/project/ProjectDaemon.js.map +1 -0
  960. package/dist/server/daemon/server/HTTPServer.d.ts +13 -0
  961. package/dist/server/daemon/server/HTTPServer.d.ts.map +1 -0
  962. package/dist/server/daemon/server/HTTPServer.js +127 -0
  963. package/dist/server/daemon/server/HTTPServer.js.map +1 -0
  964. package/dist/server/daemon/server/HarnessDaemon.d.ts +20 -0
  965. package/dist/server/daemon/server/HarnessDaemon.d.ts.map +1 -0
  966. package/dist/server/daemon/server/HarnessDaemon.js +117 -0
  967. package/dist/server/daemon/server/HarnessDaemon.js.map +1 -0
  968. package/dist/server/daemon/session/SessionDaemon.d.ts +584 -0
  969. package/dist/server/daemon/session/SessionDaemon.d.ts.map +1 -0
  970. package/dist/server/daemon/session/SessionDaemon.js +1122 -0
  971. package/dist/server/daemon/session/SessionDaemon.js.map +1 -0
  972. package/dist/server/daemon/session/SessionOrchestrator.d.ts +60 -0
  973. package/dist/server/daemon/session/SessionOrchestrator.d.ts.map +1 -0
  974. package/dist/server/daemon/session/SessionOrchestrator.js +1363 -0
  975. package/dist/server/daemon/session/SessionOrchestrator.js.map +1 -0
  976. package/dist/server/daemon/session/agent-calls-operator.d.ts +7 -0
  977. package/dist/server/daemon/session/agent-calls-operator.d.ts.map +1 -0
  978. package/dist/server/daemon/session/agent-calls-operator.js +6 -0
  979. package/dist/server/daemon/session/agent-calls-operator.js.map +1 -0
  980. package/dist/server/daemon/session/agent-runtime.d.ts +44 -0
  981. package/dist/server/daemon/session/agent-runtime.d.ts.map +1 -0
  982. package/dist/server/daemon/session/agent-runtime.js +542 -0
  983. package/dist/server/daemon/session/agent-runtime.js.map +1 -0
  984. package/dist/server/daemon/session/ambient-compact.d.ts +22 -0
  985. package/dist/server/daemon/session/ambient-compact.d.ts.map +1 -0
  986. package/dist/server/daemon/session/ambient-compact.js +121 -0
  987. package/dist/server/daemon/session/ambient-compact.js.map +1 -0
  988. package/dist/server/daemon/session/behavior-host.d.ts +65 -0
  989. package/dist/server/daemon/session/behavior-host.d.ts.map +1 -0
  990. package/dist/server/daemon/session/behavior-host.js +348 -0
  991. package/dist/server/daemon/session/behavior-host.js.map +1 -0
  992. package/dist/server/daemon/session/compact.d.ts +8 -0
  993. package/dist/server/daemon/session/compact.d.ts.map +1 -0
  994. package/dist/server/daemon/session/compact.js +22 -0
  995. package/dist/server/daemon/session/compact.js.map +1 -0
  996. package/dist/server/daemon/session/completion-flight.d.ts +17 -0
  997. package/dist/server/daemon/session/completion-flight.d.ts.map +1 -0
  998. package/dist/server/daemon/session/completion-flight.js +74 -0
  999. package/dist/server/daemon/session/completion-flight.js.map +1 -0
  1000. package/dist/server/daemon/session/hook-deadline.d.ts +25 -0
  1001. package/dist/server/daemon/session/hook-deadline.d.ts.map +1 -0
  1002. package/dist/server/daemon/session/hook-deadline.js +48 -0
  1003. package/dist/server/daemon/session/hook-deadline.js.map +1 -0
  1004. package/dist/server/daemon/session/instructions.d.ts +3 -0
  1005. package/dist/server/daemon/session/instructions.d.ts.map +1 -0
  1006. package/dist/server/daemon/session/instructions.js +14 -0
  1007. package/dist/server/daemon/session/instructions.js.map +1 -0
  1008. package/dist/server/daemon/session/plugin-abi.d.ts +10 -0
  1009. package/dist/server/daemon/session/plugin-abi.d.ts.map +1 -0
  1010. package/dist/server/daemon/session/plugin-abi.js +172 -0
  1011. package/dist/server/daemon/session/plugin-abi.js.map +1 -0
  1012. package/dist/server/daemon/session/plugin-bots.d.ts +29 -0
  1013. package/dist/server/daemon/session/plugin-bots.d.ts.map +1 -0
  1014. package/dist/server/daemon/session/plugin-bots.js +117 -0
  1015. package/dist/server/daemon/session/plugin-bots.js.map +1 -0
  1016. package/dist/server/daemon/session/project-authorization.d.ts +5 -0
  1017. package/dist/server/daemon/session/project-authorization.d.ts.map +1 -0
  1018. package/dist/server/daemon/session/project-authorization.js +26 -0
  1019. package/dist/server/daemon/session/project-authorization.js.map +1 -0
  1020. package/dist/server/daemon/session/prompt-message-of.d.ts +10 -0
  1021. package/dist/server/daemon/session/prompt-message-of.d.ts.map +1 -0
  1022. package/dist/server/daemon/session/prompt-message-of.js +16 -0
  1023. package/dist/server/daemon/session/prompt-message-of.js.map +1 -0
  1024. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.d.ts +43 -0
  1025. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.d.ts.map +1 -0
  1026. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.js +148 -0
  1027. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.js.map +1 -0
  1028. package/dist/server/daemon/session/round-stop.d.ts +26 -0
  1029. package/dist/server/daemon/session/round-stop.d.ts.map +1 -0
  1030. package/dist/server/daemon/session/round-stop.js +76 -0
  1031. package/dist/server/daemon/session/round-stop.js.map +1 -0
  1032. package/dist/server/daemon/session/statusline-git.d.ts +2 -0
  1033. package/dist/server/daemon/session/statusline-git.d.ts.map +1 -0
  1034. package/dist/server/daemon/session/statusline-git.js +9 -0
  1035. package/dist/server/daemon/session/statusline-git.js.map +1 -0
  1036. package/dist/server/daemon/session/turn-iterator.d.ts +45 -0
  1037. package/dist/server/daemon/session/turn-iterator.d.ts.map +1 -0
  1038. package/dist/server/daemon/session/turn-iterator.js +436 -0
  1039. package/dist/server/daemon/session/turn-iterator.js.map +1 -0
  1040. package/dist/server/daemon/session/turn-resolvers.d.ts +17 -0
  1041. package/dist/server/daemon/session/turn-resolvers.d.ts.map +1 -0
  1042. package/dist/server/daemon/session/turn-resolvers.js +29 -0
  1043. package/dist/server/daemon/session/turn-resolvers.js.map +1 -0
  1044. package/dist/server/daemon/session/visual-store.d.ts +33 -0
  1045. package/dist/server/daemon/session/visual-store.d.ts.map +1 -0
  1046. package/dist/server/daemon/session/visual-store.js +249 -0
  1047. package/dist/server/daemon/session/visual-store.js.map +1 -0
  1048. package/dist/server/defaults/index.d.ts +26 -0
  1049. package/dist/server/defaults/index.d.ts.map +1 -0
  1050. package/dist/server/defaults/index.js +77 -0
  1051. package/dist/server/defaults/index.js.map +1 -0
  1052. package/dist/server/defaults/policy-asset.d.ts +3 -0
  1053. package/dist/server/defaults/policy-asset.d.ts.map +1 -0
  1054. package/dist/server/defaults/policy-asset.js +11 -0
  1055. package/dist/server/defaults/policy-asset.js.map +1 -0
  1056. package/dist/server/drivers/fetch-failure.d.ts +21 -0
  1057. package/dist/server/drivers/fetch-failure.d.ts.map +1 -0
  1058. package/dist/server/drivers/fetch-failure.js +47 -0
  1059. package/dist/server/drivers/fetch-failure.js.map +1 -0
  1060. package/dist/server/drivers/interned-complete.d.ts +8 -0
  1061. package/dist/server/drivers/interned-complete.d.ts.map +1 -0
  1062. package/dist/server/drivers/interned-complete.js +19 -0
  1063. package/dist/server/drivers/interned-complete.js.map +1 -0
  1064. package/dist/server/drivers/request-timeout.d.ts +2 -0
  1065. package/dist/server/drivers/request-timeout.d.ts.map +1 -0
  1066. package/dist/server/drivers/request-timeout.js +19 -0
  1067. package/dist/server/drivers/request-timeout.js.map +1 -0
  1068. package/dist/server/drivers/web-search/nous-gateway.d.ts +21 -0
  1069. package/dist/server/drivers/web-search/nous-gateway.d.ts.map +1 -0
  1070. package/dist/server/drivers/web-search/nous-gateway.js +23 -0
  1071. package/dist/server/drivers/web-search/nous-gateway.js.map +1 -0
  1072. package/dist/server/drivers/web-search/pick.d.ts +29 -0
  1073. package/dist/server/drivers/web-search/pick.d.ts.map +1 -0
  1074. package/dist/server/drivers/web-search/pick.js +65 -0
  1075. package/dist/server/drivers/web-search/pick.js.map +1 -0
  1076. package/dist/server/drivers/web-search/types.d.ts +10 -0
  1077. package/dist/server/drivers/web-search/types.d.ts.map +1 -0
  1078. package/dist/server/drivers/web-search/types.js +17 -0
  1079. package/dist/server/drivers/web-search/types.js.map +1 -0
  1080. package/dist/server/ensure.d.ts +9 -0
  1081. package/dist/server/ensure.d.ts.map +1 -0
  1082. package/dist/server/ensure.js +174 -0
  1083. package/dist/server/ensure.js.map +1 -0
  1084. package/dist/server/index.d.ts +5 -0
  1085. package/dist/server/index.d.ts.map +1 -0
  1086. package/dist/server/index.js +5 -0
  1087. package/dist/server/index.js.map +1 -0
  1088. package/dist/server/provider-roster/nous.d.ts +3 -0
  1089. package/dist/server/provider-roster/nous.d.ts.map +1 -0
  1090. package/dist/server/provider-roster/nous.js +20 -0
  1091. package/dist/server/provider-roster/nous.js.map +1 -0
  1092. package/dist/server/runtime-bin.d.ts +3 -0
  1093. package/dist/server/runtime-bin.d.ts.map +1 -0
  1094. package/dist/server/runtime-bin.js +71 -0
  1095. package/dist/server/runtime-bin.js.map +1 -0
  1096. package/dist/server/schemas/index.d.ts +5 -0
  1097. package/dist/server/schemas/index.d.ts.map +1 -0
  1098. package/dist/server/schemas/index.js +5 -0
  1099. package/dist/server/schemas/index.js.map +1 -0
  1100. package/dist/server/schemas/json-record.d.ts +10 -0
  1101. package/dist/server/schemas/json-record.d.ts.map +1 -0
  1102. package/dist/server/schemas/json-record.js +20 -0
  1103. package/dist/server/schemas/json-record.js.map +1 -0
  1104. package/dist/server/schemas/tool-result.d.ts +14 -0
  1105. package/dist/server/schemas/tool-result.d.ts.map +1 -0
  1106. package/dist/server/schemas/tool-result.js +14 -0
  1107. package/dist/server/schemas/tool-result.js.map +1 -0
  1108. package/dist/server/schemas/well-known.d.ts +99 -0
  1109. package/dist/server/schemas/well-known.d.ts.map +1 -0
  1110. package/dist/server/schemas/well-known.js +141 -0
  1111. package/dist/server/schemas/well-known.js.map +1 -0
  1112. package/dist/server/secrets.d.ts +6 -0
  1113. package/dist/server/secrets.d.ts.map +1 -0
  1114. package/dist/server/secrets.js +80 -0
  1115. package/dist/server/secrets.js.map +1 -0
  1116. package/dist/server/step.d.ts +3 -0
  1117. package/dist/server/step.d.ts.map +1 -0
  1118. package/dist/server/step.js +7 -0
  1119. package/dist/server/step.js.map +1 -0
  1120. package/dist/server/system-plugins/index.d.ts +16 -0
  1121. package/dist/server/system-plugins/index.d.ts.map +1 -0
  1122. package/dist/server/system-plugins/index.js +27 -0
  1123. package/dist/server/system-plugins/index.js.map +1 -0
  1124. package/dist/server/system-plugins/named-agents/agent-catalog.d.ts +9 -0
  1125. package/dist/server/system-plugins/named-agents/agent-catalog.d.ts.map +1 -0
  1126. package/dist/server/system-plugins/named-agents/agent-catalog.js +12 -0
  1127. package/dist/server/system-plugins/named-agents/agent-catalog.js.map +1 -0
  1128. package/dist/server/system-plugins/named-agents/agent-stdlib.d.ts +2 -0
  1129. package/dist/server/system-plugins/named-agents/agent-stdlib.d.ts.map +1 -0
  1130. package/dist/server/system-plugins/named-agents/agent-stdlib.js +4 -0
  1131. package/dist/server/system-plugins/named-agents/agent-stdlib.js.map +1 -0
  1132. package/dist/server/testkit/compat-server.d.ts +23 -0
  1133. package/dist/server/testkit/compat-server.d.ts.map +1 -0
  1134. package/dist/server/testkit/compat-server.js +111 -0
  1135. package/dist/server/testkit/compat-server.js.map +1 -0
  1136. package/dist/server/testkit/index.d.ts +9 -0
  1137. package/dist/server/testkit/index.d.ts.map +1 -0
  1138. package/dist/server/testkit/index.js +9 -0
  1139. package/dist/server/testkit/index.js.map +1 -0
  1140. package/dist/server/testkit/scripted-model.d.ts +40 -0
  1141. package/dist/server/testkit/scripted-model.d.ts.map +1 -0
  1142. package/dist/server/testkit/scripted-model.js +166 -0
  1143. package/dist/server/testkit/scripted-model.js.map +1 -0
  1144. package/dist/server/testkit/sequence-provider.d.ts +11 -0
  1145. package/dist/server/testkit/sequence-provider.d.ts.map +1 -0
  1146. package/dist/server/testkit/sequence-provider.js +105 -0
  1147. package/dist/server/testkit/sequence-provider.js.map +1 -0
  1148. package/dist/server/toolkit/actor.d.ts +15 -0
  1149. package/dist/server/toolkit/actor.d.ts.map +1 -0
  1150. package/dist/server/toolkit/actor.js +133 -0
  1151. package/dist/server/toolkit/actor.js.map +1 -0
  1152. package/dist/server/toolkit/catalog.d.ts +20 -0
  1153. package/dist/server/toolkit/catalog.d.ts.map +1 -0
  1154. package/dist/server/toolkit/catalog.js +97 -0
  1155. package/dist/server/toolkit/catalog.js.map +1 -0
  1156. package/dist/server/toolkit/executor.d.ts +25 -0
  1157. package/dist/server/toolkit/executor.d.ts.map +1 -0
  1158. package/dist/server/toolkit/executor.js +42 -0
  1159. package/dist/server/toolkit/executor.js.map +1 -0
  1160. package/dist/server/toolkit/index.d.ts +8 -0
  1161. package/dist/server/toolkit/index.d.ts.map +1 -0
  1162. package/dist/server/toolkit/index.js +8 -0
  1163. package/dist/server/toolkit/index.js.map +1 -0
  1164. package/dist/server/toolkit/pack-catalog.d.ts +34 -0
  1165. package/dist/server/toolkit/pack-catalog.d.ts.map +1 -0
  1166. package/dist/server/toolkit/pack-catalog.js +19 -0
  1167. package/dist/server/toolkit/pack-catalog.js.map +1 -0
  1168. package/dist/server/toolkit/plugin-registry.d.ts +24 -0
  1169. package/dist/server/toolkit/plugin-registry.d.ts.map +1 -0
  1170. package/dist/server/toolkit/plugin-registry.js +87 -0
  1171. package/dist/server/toolkit/plugin-registry.js.map +1 -0
  1172. package/dist/server/toolkit/plugin-tools.d.ts +6 -0
  1173. package/dist/server/toolkit/plugin-tools.d.ts.map +1 -0
  1174. package/dist/server/toolkit/plugin-tools.js +2 -0
  1175. package/dist/server/toolkit/plugin-tools.js.map +1 -0
  1176. package/dist/server/toolkit/plugin-workspace.d.ts +3 -0
  1177. package/dist/server/toolkit/plugin-workspace.d.ts.map +1 -0
  1178. package/dist/server/toolkit/plugin-workspace.js +15 -0
  1179. package/dist/server/toolkit/plugin-workspace.js.map +1 -0
  1180. package/dist/server/toolkit/source-cut.d.ts +35 -0
  1181. package/dist/server/toolkit/source-cut.d.ts.map +1 -0
  1182. package/dist/server/toolkit/source-cut.js +168 -0
  1183. package/dist/server/toolkit/source-cut.js.map +1 -0
  1184. package/dist/server/toolkit/tool-entry.d.ts +12 -0
  1185. package/dist/server/toolkit/tool-entry.d.ts.map +1 -0
  1186. package/dist/server/toolkit/tool-entry.js +35 -0
  1187. package/dist/server/toolkit/tool-entry.js.map +1 -0
  1188. package/dist/server/toolkit/tool-table.d.ts +21 -0
  1189. package/dist/server/toolkit/tool-table.d.ts.map +1 -0
  1190. package/dist/server/toolkit/tool-table.js +233 -0
  1191. package/dist/server/toolkit/tool-table.js.map +1 -0
  1192. package/dist/server/transport/accept.d.ts +11 -0
  1193. package/dist/server/transport/accept.d.ts.map +1 -0
  1194. package/dist/server/transport/accept.js +23 -0
  1195. package/dist/server/transport/accept.js.map +1 -0
  1196. package/dist/server/transport/jsonrpc.d.ts +17 -0
  1197. package/dist/server/transport/jsonrpc.d.ts.map +1 -0
  1198. package/dist/server/transport/jsonrpc.js +33 -0
  1199. package/dist/server/transport/jsonrpc.js.map +1 -0
  1200. package/dist/server/util/errno.d.ts +3 -0
  1201. package/dist/server/util/errno.d.ts.map +1 -0
  1202. package/dist/server/util/errno.js +7 -0
  1203. package/dist/server/util/errno.js.map +1 -0
  1204. package/dist/server/util/fs.d.ts +3 -0
  1205. package/dist/server/util/fs.d.ts.map +1 -0
  1206. package/dist/server/util/fs.js +18 -0
  1207. package/dist/server/util/fs.js.map +1 -0
  1208. package/dist/server/util/import-paths.d.ts +4 -0
  1209. package/dist/server/util/import-paths.d.ts.map +1 -0
  1210. package/dist/server/util/import-paths.js +25 -0
  1211. package/dist/server/util/import-paths.js.map +1 -0
  1212. package/dist/server/util/jail.d.ts +3 -0
  1213. package/dist/server/util/jail.d.ts.map +1 -0
  1214. package/dist/server/util/jail.js +11 -0
  1215. package/dist/server/util/jail.js.map +1 -0
  1216. package/dist/server/util/read-field.d.ts +8 -0
  1217. package/dist/server/util/read-field.d.ts.map +1 -0
  1218. package/dist/server/util/read-field.js +29 -0
  1219. package/dist/server/util/read-field.js.map +1 -0
  1220. package/dist/server/util/slug.d.ts +2 -0
  1221. package/dist/server/util/slug.d.ts.map +1 -0
  1222. package/dist/server/util/slug.js +9 -0
  1223. package/dist/server/util/slug.js.map +1 -0
  1224. package/dist/server/util/tool-call-json.d.ts +6 -0
  1225. package/dist/server/util/tool-call-json.d.ts.map +1 -0
  1226. package/dist/server/util/tool-call-json.js +41 -0
  1227. package/dist/server/util/tool-call-json.js.map +1 -0
  1228. package/dist/session/index.d.ts +2 -0
  1229. package/dist/session/index.d.ts.map +1 -0
  1230. package/dist/session/index.js +2 -0
  1231. package/dist/session/index.js.map +1 -0
  1232. package/dist/tool-catalog/index.d.ts +2 -0
  1233. package/dist/tool-catalog/index.d.ts.map +1 -0
  1234. package/dist/tool-catalog/index.js +2 -0
  1235. package/dist/tool-catalog/index.js.map +1 -0
  1236. package/dist/tool-runtime/guard-tool.d.ts +54 -0
  1237. package/dist/tool-runtime/guard-tool.d.ts.map +1 -0
  1238. package/dist/tool-runtime/guard-tool.js +97 -0
  1239. package/dist/tool-runtime/guard-tool.js.map +1 -0
  1240. package/dist/tool-runtime/index.d.ts +5 -0
  1241. package/dist/tool-runtime/index.d.ts.map +1 -0
  1242. package/dist/tool-runtime/index.js +4 -0
  1243. package/dist/tool-runtime/index.js.map +1 -0
  1244. package/dist/tool-runtime/tool-behavior.d.ts +43 -0
  1245. package/dist/tool-runtime/tool-behavior.d.ts.map +1 -0
  1246. package/dist/tool-runtime/tool-behavior.js +227 -0
  1247. package/dist/tool-runtime/tool-behavior.js.map +1 -0
  1248. package/dist/yjs/bin.d.ts +3 -0
  1249. package/dist/yjs/bin.d.ts.map +1 -0
  1250. package/dist/yjs/bin.js +77 -0
  1251. package/dist/yjs/bin.js.map +1 -0
  1252. package/dist/yjs/document-service.d.ts +75 -0
  1253. package/dist/yjs/document-service.d.ts.map +1 -0
  1254. package/dist/yjs/document-service.js +359 -0
  1255. package/dist/yjs/document-service.js.map +1 -0
  1256. package/dist/yjs/index.d.ts +10 -0
  1257. package/dist/yjs/index.d.ts.map +1 -0
  1258. package/dist/yjs/index.js +10 -0
  1259. package/dist/yjs/index.js.map +1 -0
  1260. package/dist/yjs/keepalive.d.ts +11 -0
  1261. package/dist/yjs/keepalive.d.ts.map +1 -0
  1262. package/dist/yjs/keepalive.js +27 -0
  1263. package/dist/yjs/keepalive.js.map +1 -0
  1264. package/dist/yjs/private-peer.d.ts +16 -0
  1265. package/dist/yjs/private-peer.d.ts.map +1 -0
  1266. package/dist/yjs/private-peer.js +429 -0
  1267. package/dist/yjs/private-peer.js.map +1 -0
  1268. package/dist/yjs/public-routes.d.ts +22 -0
  1269. package/dist/yjs/public-routes.d.ts.map +1 -0
  1270. package/dist/yjs/public-routes.js +42 -0
  1271. package/dist/yjs/public-routes.js.map +1 -0
  1272. package/dist/yjs/registry/document-registry.d.ts +33 -0
  1273. package/dist/yjs/registry/document-registry.d.ts.map +1 -0
  1274. package/dist/yjs/registry/document-registry.js +281 -0
  1275. package/dist/yjs/registry/document-registry.js.map +1 -0
  1276. package/dist/yjs/registry/identity.d.ts +18 -0
  1277. package/dist/yjs/registry/identity.d.ts.map +1 -0
  1278. package/dist/yjs/registry/identity.js +85 -0
  1279. package/dist/yjs/registry/identity.js.map +1 -0
  1280. package/dist/yjs/registry/images.d.ts +8 -0
  1281. package/dist/yjs/registry/images.d.ts.map +1 -0
  1282. package/dist/yjs/registry/images.js +42 -0
  1283. package/dist/yjs/registry/images.js.map +1 -0
  1284. package/dist/yjs/registry/index.d.ts +3 -0
  1285. package/dist/yjs/registry/index.d.ts.map +1 -0
  1286. package/dist/yjs/registry/index.js +3 -0
  1287. package/dist/yjs/registry/index.js.map +1 -0
  1288. package/dist/yjs/relay.d.ts +33 -0
  1289. package/dist/yjs/relay.d.ts.map +1 -0
  1290. package/dist/yjs/relay.js +123 -0
  1291. package/dist/yjs/relay.js.map +1 -0
  1292. package/dist/yjs/remote-document.d.ts +35 -0
  1293. package/dist/yjs/remote-document.d.ts.map +1 -0
  1294. package/dist/yjs/remote-document.js +426 -0
  1295. package/dist/yjs/remote-document.js.map +1 -0
  1296. package/dist/yjs/rooms.d.ts +75 -0
  1297. package/dist/yjs/rooms.d.ts.map +1 -0
  1298. package/dist/yjs/rooms.js +328 -0
  1299. package/dist/yjs/rooms.js.map +1 -0
  1300. package/dist/yjs/storage.d.ts +29 -0
  1301. package/dist/yjs/storage.d.ts.map +1 -0
  1302. package/dist/yjs/storage.js +205 -0
  1303. package/dist/yjs/storage.js.map +1 -0
  1304. package/dist/yjs/update-log.d.ts +13 -0
  1305. package/dist/yjs/update-log.d.ts.map +1 -0
  1306. package/dist/yjs/update-log.js +91 -0
  1307. package/dist/yjs/update-log.js.map +1 -0
  1308. package/dist/yjs/websocket.d.ts +4 -0
  1309. package/dist/yjs/websocket.d.ts.map +1 -0
  1310. package/dist/yjs/websocket.js +47 -0
  1311. package/dist/yjs/websocket.js.map +1 -0
  1312. package/package.json +114 -3
  1313. package/src/server/defaults/__tests__/resolve-compact-strategy-path.test.ts +31 -0
  1314. package/src/server/defaults/commands/connect.scm +478 -0
  1315. package/src/server/defaults/commands/mcp.scm +143 -0
  1316. package/src/server/defaults/commands/model.scm +71 -0
  1317. package/src/server/defaults/compact.scm +8 -0
  1318. package/src/server/defaults/index.ts +91 -0
  1319. package/src/server/defaults/policy-asset.ts +11 -0
  1320. package/src/server/defaults/system-prompt/SYSTEM.md +5 -0
  1321. package/src/server/defaults/system-prompt/preamble.hbs +7 -0
  1322. package/src/server/defaults/system-prompt/system-prompt.scm +14 -0
  1323. package/src/server/defaults/system-prompt/tools.hbs +6 -0
  1324. package/README.md +0 -3
@@ -0,0 +1,1520 @@
1
+ /**
2
+ * openai-compat completion actor. The HTTP round is per PEW.
3
+ *
4
+ * Connection-wide `#emit` / `#abort` / `#turnModel` would make parallel
5
+ * remainder and ReACT settle on each other's speech. The connection stays
6
+ * the durable client: catalog, headers, inflight abort set.
7
+ *
8
+ * History, compact lead, frozen/live tools, and squeeze live in harness-context.
9
+ * viewWire encodes that projection plus vendor reasoning dialect. Chat Completions
10
+ * vs Responses (`completionBody`) is vendor wire — D4, not context.
11
+ * System is two messages: constitution+preamble (stable), env/mode (volatile).
12
+ * Env stays off the first string — a date or mode change must not rewrite the
13
+ * prefix OpenAI/xAI match from the left.
14
+ *
15
+ * Chat Completions vs Responses is a class, chosen in `connection.resolve`
16
+ * from `completionApi()`. The round does not branch on that token.
17
+ */
18
+ import { randomUUID } from "node:crypto";
19
+ import { fail, step, trace } from "@inhuman.tools/harness-diagnostics";
20
+ import { assertResponseMatchesSchema, cacheStatusLog, latestCompactCutoff, owningTurn, ResponseCall, JSON_SCHEMA_UNSUPPORTED, SessionRoot, SessionTurn, } from "@inhuman.tools/harness-model";
21
+ import { readBlob, readVisual } from "@inhuman.tools/harness-provider-sdk";
22
+ import { ConnectionMiss, ConnectionNotReady, ExpectationActor, ExpectationInvariant, } from "@inhuman.tools/plexus-expectations/driver";
23
+ import { createStreamSession, mergeReasoning, normalizeMessage, } from "@inhuman.tools/tool-call-normalize";
24
+ import { runInAction } from "mobx";
25
+ import invariant from "tiny-invariant";
26
+ import { approvalNoteMessagesOf as contextApprovalNotes, notificationMessagesOf as contextNotifications, projectHistory, selectCompletionTools, steerMessagesOf as contextSteers, } from "../../context/index.js";
27
+ import { emitsCacheControl, withCacheBreakpoints } from "./anthropic-cache.js";
28
+ import { ARG_ALIASES } from "./arg-aliases.js";
29
+ import { usesExplicitPromptCache } from "./cache-affinity.js";
30
+ import { cacheDumpKind, preferCacheResponse, redactCacheHeaders, writeCacheDump } from "./cache-dump.js";
31
+ import { completionCatalogOf, liveToolDescriptionOf } from "./completion-face.js";
32
+ import { describeHttpFailure, wrapFetchFailure } from "./fetch-failure.js";
33
+ import { parseJsonUnknown, readField } from "./json-read.js";
34
+ import { usageLedger } from "./model-catalog.js";
35
+ import { reasoningDialectFor, } from "./reasoning-flavor.js";
36
+ import { parseStoredToolCall, responseCallsFromToolCalls } from "./tool-call-json.js";
37
+ /** Anthropic/OpenAI prompt-cache default. */
38
+ const PROMPT_CACHE_TTL_MS = 5 * 60 * 1000;
39
+ const COMPLETION_FAILED_STATUS = /(?:openai-compat completion failed: |\bHTTP )(\d{3})\b/;
40
+ const TRANSIENT_CODE = /^(?:ECONNRESET|ETIMEDOUT|ENOTFOUND|ECONNREFUSED|EAI_AGAIN|EPIPE|EHOSTUNREACH|ENETUNREACH|EPROTO|UND_ERR_)/;
41
+ const TRANSIENT_TEXT = /fetch failed|Failed to fetch|ECONNRESET|ETIMEDOUT|ENOTFOUND|ECONNREFUSED|EAI_AGAIN|Connect Timeout|Headers Timeout|other side closed|UND_ERR_|socket hang up/i;
42
+ /** Parsed SSE `data:` only. Socket bytes reset undici's body timer, including pings (`request-timeout.ts`). */
43
+ const STREAM_STALL_MS = 60_000;
44
+ /** Longest wait between attempts, whether it comes from our backoff or from the server. */
45
+ const BACKOFF_CAP_MS = 5 * 60 * 1000;
46
+ /** A 429 or 503 that named how long to wait. The message is the ordinary HTTP failure text. */
47
+ export class RetryAfterError extends Error {
48
+ waitMs;
49
+ constructor(message, waitMs) {
50
+ super(message);
51
+ this.waitMs = waitMs;
52
+ this.name = "RetryAfterError";
53
+ }
54
+ }
55
+ /**
56
+ * `Retry-After` (seconds or an HTTP date) or the OpenAI-style `retry-after-ms`, read on 429 and
57
+ * 503 only. Undefined when the response names no usable wait.
58
+ */
59
+ export function retryAfterMs(headers, status, now = Date.now()) {
60
+ if (status !== 429 && status !== 503)
61
+ return undefined;
62
+ const ms = headers.get("retry-after-ms");
63
+ if (ms != null && /^\d+(\.\d+)?$/.test(ms.trim()))
64
+ return Math.round(Number(ms));
65
+ const raw = headers.get("retry-after")?.trim();
66
+ if (raw == null || raw === "")
67
+ return undefined;
68
+ if (/^\d+(\.\d+)?$/.test(raw))
69
+ return Math.round(Number(raw) * 1000);
70
+ const at = Date.parse(raw);
71
+ return Number.isNaN(at) ? undefined : Math.max(0, at - now);
72
+ }
73
+ class StreamStallError extends Error {
74
+ constructor(ms) {
75
+ super(`stream stalled after ${ms}ms`);
76
+ this.name = "StreamStallError";
77
+ }
78
+ }
79
+ function isTransientCompletionError(error) {
80
+ if (error instanceof StreamStallError)
81
+ return false;
82
+ if (error instanceof ConnectionMiss)
83
+ return false;
84
+ if (error instanceof ExpectationInvariant)
85
+ return false;
86
+ if (error instanceof TypeError)
87
+ return false;
88
+ const message = error instanceof Error ? error.message : String(error);
89
+ if (message.includes(JSON_SCHEMA_UNSUPPORTED))
90
+ return false;
91
+ const statusMatch = COMPLETION_FAILED_STATUS.exec(message);
92
+ if (statusMatch) {
93
+ const status = Number(statusMatch[1]);
94
+ return status === 408 || status === 429 || status >= 500;
95
+ }
96
+ const seen = new Set();
97
+ let node = error;
98
+ for (let depth = 0; depth < 6 && node != null; depth += 1) {
99
+ if (seen.has(node))
100
+ break;
101
+ seen.add(node);
102
+ if (node instanceof TypeError)
103
+ return true;
104
+ if (typeof node !== "object") {
105
+ if (TRANSIENT_TEXT.test(String(node)))
106
+ return true;
107
+ break;
108
+ }
109
+ const rec = node;
110
+ if (typeof rec.code === "string" && TRANSIENT_CODE.test(rec.code))
111
+ return true;
112
+ if (typeof rec.message === "string" && TRANSIENT_TEXT.test(rec.message))
113
+ return true;
114
+ if (rec.name === "TimeoutError" || rec.name === "ConnectTimeoutError" || rec.name === "HeadersTimeoutError") {
115
+ return true;
116
+ }
117
+ node = rec.cause;
118
+ }
119
+ return message.includes("openai-compat completion failed");
120
+ }
121
+ function thoughtEcho(thought, field, echo) {
122
+ if (echo === "omit-empty" && thought === "")
123
+ return {};
124
+ return field === "reasoning" ? { reasoning: thought } : { reasoning_content: thought };
125
+ }
126
+ export function chatContentText(content) {
127
+ if (typeof content === "string")
128
+ return content;
129
+ if (content == null)
130
+ return "";
131
+ const lines = [];
132
+ for (const part of content) {
133
+ if (part.type === "text")
134
+ lines.push(part.text);
135
+ }
136
+ return lines.join("\n");
137
+ }
138
+ function wireContent(message) {
139
+ const content = message.content;
140
+ if (typeof content === "string" || content == null)
141
+ return content;
142
+ if (message.role !== "user") {
143
+ const texts = [];
144
+ for (const part of content) {
145
+ if (part.type === "text")
146
+ texts.push({ type: "text", text: part.text });
147
+ }
148
+ return texts;
149
+ }
150
+ const parts = [];
151
+ let image = false;
152
+ for (const part of content) {
153
+ if (part.type === "text") {
154
+ parts.push({ type: "text", text: part.text });
155
+ continue;
156
+ }
157
+ if (part.bytes == null)
158
+ continue;
159
+ image = true;
160
+ parts.push({
161
+ type: "image_url",
162
+ image_url: { url: `data:${part.mime};base64,${Buffer.from(part.bytes).toString("base64")}` },
163
+ });
164
+ }
165
+ if (!image)
166
+ return chatContentText(parts);
167
+ return parts;
168
+ }
169
+ function responsesUserContent(content) {
170
+ if (typeof content === "string")
171
+ return content;
172
+ if (content == null)
173
+ return "";
174
+ const parts = [];
175
+ let image = false;
176
+ for (const part of content) {
177
+ if (part.type === "text") {
178
+ if (part.text !== "")
179
+ parts.push({ type: "input_text", text: part.text });
180
+ continue;
181
+ }
182
+ image = true;
183
+ parts.push({ type: "input_image", image_url: part.image_url.url });
184
+ }
185
+ if (!image)
186
+ return chatContentText(content);
187
+ return parts;
188
+ }
189
+ function asChat(message) {
190
+ return {
191
+ role: message.role,
192
+ content: wireContent(message),
193
+ ...(message.toolCallId === undefined ? {} : { tool_call_id: message.toolCallId }),
194
+ };
195
+ }
196
+ export function notificationMessagesOf(expectation) {
197
+ return contextNotifications(expectation).map(asChat);
198
+ }
199
+ export function approvalNoteMessagesOf(expectation) {
200
+ return contextApprovalNotes(expectation).map(asChat);
201
+ }
202
+ export function steerMessagesOf(expectation) {
203
+ return contextSteers(expectation).map(asChat);
204
+ }
205
+ function toOpenAiTool(tool) {
206
+ return {
207
+ type: "function",
208
+ function: {
209
+ name: tool.name,
210
+ description: tool.description,
211
+ parameters: tool.parameters,
212
+ },
213
+ };
214
+ }
215
+ /** Catalog tools for this completion's wire. Frozen turn set wins so MCP churn cannot rewrite the prefix. */
216
+ export function toolsFor(expectation) {
217
+ const root = expectation.plexus?.root;
218
+ const live = completionCatalogOf(root);
219
+ const tools = selectCompletionTools(expectation, live);
220
+ const turn = owningTurn(expectation);
221
+ if (live == null || (turn != null && turn.tools.entries.length > 0)) {
222
+ return tools.map(toOpenAiTool);
223
+ }
224
+ return tools.map((tool) => {
225
+ const description = liveToolDescriptionOf(root, tool.name, live);
226
+ return description === undefined ? toOpenAiTool(tool) : toOpenAiTool({ ...tool, description });
227
+ });
228
+ }
229
+ /** vLLM-family hosts (Atria) 400 `tools: []`. OpenAI treats the key as optional; absence is "no tools". */
230
+ function wireTools(tools) {
231
+ return tools.length === 0 ? undefined : { tools };
232
+ }
233
+ /** Hashes already reported missing: every round projects again, and the head fallback is the same each time. */
234
+ const missingBlobsReported = new Set();
235
+ /**
236
+ * The blob reader the projection gets. A body the document stores beside itself and the bucket cannot give
237
+ * reaches the model as its head (the projection's rule); this is where the log says which hash was missing.
238
+ */
239
+ function readBlobReported(sha256) {
240
+ const bytes = readBlob(sha256);
241
+ if (bytes === null && !missingBlobsReported.has(sha256)) {
242
+ missingBlobsReported.add(sha256);
243
+ fail(`blob ${sha256} is missing from the bucket: the prompt carries its head`);
244
+ }
245
+ return bytes;
246
+ }
247
+ export function* viewWire(tip, options = {}) {
248
+ const echo = options.dialect?.echo ?? "omit-empty";
249
+ const field = options.dialect?.chatField ?? "reasoning_content";
250
+ const catalog = completionCatalogOf(tip.plexus?.root);
251
+ const root = tip.plexus?.root;
252
+ const sessionId = root instanceof SessionRoot ? root.sessionId : "";
253
+ for (const message of projectHistory(tip, {
254
+ catalog,
255
+ echoEmptyThought: echo === "always",
256
+ readBlob: readBlobReported,
257
+ ...(sessionId === "" ? {} : { readVisual: (id) => readVisual(sessionId, id) }),
258
+ })) {
259
+ yield encodeChat(message, field, echo);
260
+ }
261
+ }
262
+ function encodeChat(message, field, echo) {
263
+ const toolCalls = message.toolCalls == null || message.toolCalls.length === 0
264
+ ? undefined
265
+ : message.toolCalls.map((call) => ({
266
+ id: call.id,
267
+ type: "function",
268
+ function: { name: call.name, arguments: call.argsJson },
269
+ }));
270
+ const content = wireContent(message);
271
+ return {
272
+ role: message.role,
273
+ // Strict providers reject `content: null` unless the message carries tool_calls.
274
+ content: content == null && toolCalls === undefined ? "" : content,
275
+ ...(message.toolCallId === undefined ? {} : { tool_call_id: message.toolCallId }),
276
+ ...(toolCalls === undefined ? {} : { tool_calls: toolCalls }),
277
+ ...(message.role === "assistant" ? thoughtEcho(message.thought ?? "", field, echo) : {}),
278
+ ...(message.thoughtEncrypted == null || message.thoughtEncrypted === ""
279
+ ? {}
280
+ : { reasoning_encrypted: message.thoughtEncrypted }),
281
+ };
282
+ }
283
+ /** Drop reasons that mean "the model meant to call this and the call is unusable". */
284
+ const SURFACED_DROPS = new Set(["truncated", "unparseable_args", "irreparable_args"]);
285
+ /**
286
+ * Split whole calls from cut-off ones. A call the repair pass closed (`partial`) in a response
287
+ * that stopped on `length` ended mid-arguments, so it is as untrustworthy as a dropped one.
288
+ */
289
+ function settleCalls(calls, partial, dropped, finishReason) {
290
+ const whole = [];
291
+ const cut = [...dropped];
292
+ for (const call of calls) {
293
+ if (finishReason === "length" && (partial.has(call.id) || !parsesAsJson(call.function.arguments))) {
294
+ cut.push({ id: call.id, name: call.function.name, reason: "truncated" });
295
+ }
296
+ else {
297
+ whole.push(call);
298
+ }
299
+ }
300
+ return { calls: whole, dropped: cut };
301
+ }
302
+ function parsesAsJson(text) {
303
+ if (text.trim() === "")
304
+ return true;
305
+ try {
306
+ JSON.parse(text);
307
+ return true;
308
+ }
309
+ catch {
310
+ return false;
311
+ }
312
+ }
313
+ function responseCallsOf(answer) {
314
+ return [
315
+ ...responseCallsFromToolCalls(answer.calls),
316
+ ...(answer.dropped ?? []).map((drop) => new ResponseCall({ toolCallId: drop.id, name: drop.name, argsJson: "{}", dropReason: drop.reason })),
317
+ ];
318
+ }
319
+ function reasoningPartText(parts) {
320
+ if (!Array.isArray(parts))
321
+ return "";
322
+ const texts = [];
323
+ for (const part of parts) {
324
+ if (typeof part !== "object" || part === null)
325
+ continue;
326
+ const text = readField(part, "text");
327
+ if (typeof text === "string")
328
+ texts.push(text);
329
+ }
330
+ return texts.join("\n\n");
331
+ }
332
+ function visibleThought(raw, summary) {
333
+ if (raw !== "")
334
+ return { thought: raw, kind: "raw" };
335
+ if (summary !== "")
336
+ return { thought: summary, kind: "summary" };
337
+ return { thought: "", kind: null };
338
+ }
339
+ /**
340
+ * Responses `incomplete` + `max_output_tokens` after a reasoning item is the
341
+ * model spending the budget on thought and stopping before a message. Not a
342
+ * failed generation — ReACT continues. Other incomplete reasons stay fatal.
343
+ */
344
+ function incompleteThoughtExhausted(reason, thought) {
345
+ if (reason !== "max_output_tokens")
346
+ return false;
347
+ return (thought.raw.trim() !== "" ||
348
+ thought.summary.trim() !== "" ||
349
+ thought.encrypted !== "" ||
350
+ thought.kind != null ||
351
+ (thought.reasoningTokens ?? 0) > 0);
352
+ }
353
+ const THINKING_PART_TYPES = new Set(["thinking", "reasoning", "redacted_thinking", "reasoning_text"]);
354
+ function isThinkingPart(part) {
355
+ const type = readField(part, "type");
356
+ if (typeof type === "string" && THINKING_PART_TYPES.has(type))
357
+ return true;
358
+ return readField(part, "thought") === true;
359
+ }
360
+ function partThought(part) {
361
+ for (const key of ["thinking", "text", "reasoning", "content"]) {
362
+ const value = readField(part, key);
363
+ if (typeof value === "string" && value !== "")
364
+ return value;
365
+ }
366
+ return "";
367
+ }
368
+ /** Speech vs a thinking content part. A thinking part is not the answer. */
369
+ function splitMessageContent(value) {
370
+ if (typeof value === "string")
371
+ return { text: value, thought: "", sawThinking: false };
372
+ if (!Array.isArray(value))
373
+ return { text: "", thought: "", sawThinking: false };
374
+ const text = [];
375
+ const thought = [];
376
+ let sawThinking = false;
377
+ for (const part of value) {
378
+ if (typeof part === "string") {
379
+ text.push(part);
380
+ continue;
381
+ }
382
+ if (typeof part !== "object" || part === null)
383
+ continue;
384
+ if (isThinkingPart(part)) {
385
+ sawThinking = true;
386
+ const inner = partThought(part);
387
+ if (inner !== "")
388
+ thought.push(inner);
389
+ continue;
390
+ }
391
+ const spoken = readField(part, "text");
392
+ if (typeof spoken === "string")
393
+ text.push(spoken);
394
+ }
395
+ return { text: text.join(""), thought: thought.join("\n\n"), sawThinking };
396
+ }
397
+ function argAliasesForNormalize() {
398
+ const out = {};
399
+ for (const [tool, aliases] of Object.entries(ARG_ALIASES)) {
400
+ out[tool] = { ...aliases };
401
+ }
402
+ return out;
403
+ }
404
+ function catalogToolDefs(expectation) {
405
+ return toolsFor(expectation).map((tool) => ({
406
+ name: tool.function.name,
407
+ parameters: tool.function.parameters,
408
+ }));
409
+ }
410
+ /** Final non-delta `message.reasoning_content` — stream ingest only reads `delta`. */
411
+ function chunkMessageReasoning(raw) {
412
+ if (typeof raw !== "object" || raw === null)
413
+ return "";
414
+ const choices = readField(raw, "choices");
415
+ const first = Array.isArray(choices) ? choices[0] : undefined;
416
+ if (typeof first !== "object" || first === null)
417
+ return "";
418
+ const message = readField(first, "message");
419
+ if (typeof message !== "object" || message === null)
420
+ return "";
421
+ const content = readField(message, "reasoning_content");
422
+ if (typeof content === "string" && content !== "")
423
+ return content;
424
+ const alt = readField(message, "reasoning");
425
+ return typeof alt === "string" && alt !== "" ? alt : "";
426
+ }
427
+ export async function* readSseJson(body, signal, stallMs) {
428
+ if (!body)
429
+ return;
430
+ const reader = body.getReader();
431
+ const decoder = new TextDecoder();
432
+ let buf = "";
433
+ let armTimer;
434
+ let stalled;
435
+ const clearArm = () => {
436
+ if (armTimer === undefined)
437
+ return;
438
+ clearTimeout(armTimer);
439
+ armTimer = undefined;
440
+ };
441
+ // Armed when the body opens. A comment or ping is not progress, and neither is a socket that never sends `data:`.
442
+ const arm = () => {
443
+ clearArm();
444
+ const timer = setTimeout(() => {
445
+ stalled = new StreamStallError(stallMs);
446
+ void reader.cancel(stalled).catch(() => undefined);
447
+ }, stallMs);
448
+ timer.unref();
449
+ armTimer = timer;
450
+ };
451
+ const read = async () => {
452
+ try {
453
+ const next = await reader.read();
454
+ if (stalled !== undefined)
455
+ throw stalled;
456
+ return next;
457
+ }
458
+ catch (error) {
459
+ if (stalled !== undefined)
460
+ throw stalled;
461
+ throw error;
462
+ }
463
+ };
464
+ try {
465
+ arm();
466
+ while (!signal.aborted) {
467
+ const { done, value } = await read();
468
+ if (done)
469
+ break;
470
+ buf += decoder.decode(value, { stream: true });
471
+ let yielded = false;
472
+ for (;;) {
473
+ const sep = buf.indexOf("\n\n");
474
+ if (sep === -1)
475
+ break;
476
+ const event = buf.slice(0, sep);
477
+ buf = buf.slice(sep + 2);
478
+ for (const line of event.split(/\r?\n/)) {
479
+ const trimmed = line.trimEnd();
480
+ if (!trimmed.startsWith("data:"))
481
+ continue;
482
+ const data = trimmed.slice(5).trimStart();
483
+ if (!data || data === "[DONE]") {
484
+ if (data === "[DONE]")
485
+ return;
486
+ continue;
487
+ }
488
+ try {
489
+ yield parseJsonUnknown(data);
490
+ yielded = true;
491
+ }
492
+ catch {
493
+ // skip malformed line
494
+ }
495
+ }
496
+ }
497
+ if (yielded)
498
+ arm();
499
+ }
500
+ if (buf.trim().length > 0) {
501
+ for (const line of buf.split(/\r?\n/)) {
502
+ const trimmed = line.trimEnd();
503
+ if (!trimmed.startsWith("data:"))
504
+ continue;
505
+ const data = trimmed.slice(5).trimStart();
506
+ if (!data || data === "[DONE]")
507
+ continue;
508
+ try {
509
+ yield parseJsonUnknown(data);
510
+ }
511
+ catch {
512
+ /* skip */
513
+ }
514
+ }
515
+ }
516
+ }
517
+ finally {
518
+ clearArm();
519
+ try {
520
+ reader.releaseLock();
521
+ }
522
+ catch {
523
+ /* cancel already dropped the lock */
524
+ }
525
+ }
526
+ }
527
+ export class OpenAiCompatActor extends ExpectationActor {
528
+ driverConnection;
529
+ #startedAt = 0;
530
+ #backoffAbort;
531
+ #requestDump = null;
532
+ #lastRaw = null;
533
+ #answerDump = null;
534
+ /** Same formula as LicenseScope.backoffMs. Tests override. */
535
+ backoffMs = function (n) {
536
+ return Math.min(BACKOFF_CAP_MS, Math.max(1000, n * Math.log(n) * 1000));
537
+ };
538
+ stallMs = STREAM_STALL_MS;
539
+ #spokenText = "";
540
+ #spokenThought = "";
541
+ constructor(expectation, driverConnection) {
542
+ super(expectation, driverConnection);
543
+ this.driverConnection = driverConnection;
544
+ }
545
+ reasoningDialect() {
546
+ return reasoningDialectFor(this.driverConnection.reasoningFlavor(), this.expectation.reasoningEffort, {
547
+ api: this.driverConnection.completionApi(),
548
+ model: this.effectiveModel(),
549
+ hasTools: toolsFor(this.expectation).length > 0,
550
+ });
551
+ }
552
+ /** Abort the inter-attempt sleep. No-op if not sleeping. Does not fail the PEW. */
553
+ skipBackoff() {
554
+ this.#backoffAbort?.abort();
555
+ }
556
+ async run() {
557
+ ConnectionNotReady.invariant(this.driverConnection.alive, this.driverConnection.connectionId);
558
+ if (this.signal.aborted)
559
+ return;
560
+ const abort = new AbortController();
561
+ this.driverConnection.trackInflight(abort);
562
+ const onActorAbort = () => {
563
+ abort.abort();
564
+ };
565
+ if (this.signal.aborted) {
566
+ abort.abort();
567
+ }
568
+ else {
569
+ this.signal.addEventListener("abort", onActorAbort, { once: true });
570
+ }
571
+ const limit = this.driverConnection.state.windows[this.effectiveModel()] ?? 0;
572
+ if (limit > 0) {
573
+ runInAction(() => {
574
+ this.expectation.contextLimit = limit;
575
+ });
576
+ }
577
+ const runStarted = Date.now();
578
+ let retryAfter;
579
+ try {
580
+ for (let n = 0;; n += 1) {
581
+ if (n > 0) {
582
+ await this.#sleepBackoff(n, retryAfter);
583
+ if (this.signal.aborted)
584
+ return;
585
+ }
586
+ this.#beginAttempt();
587
+ try {
588
+ const turn = owningTurn(this.expectation);
589
+ let turnIndex = 1;
590
+ if (turn !== null) {
591
+ let hops = 0;
592
+ let cell = turn;
593
+ const seen = new Set();
594
+ while (cell != null && !seen.has(cell)) {
595
+ seen.add(cell);
596
+ hops += 1;
597
+ cell = cell.turnTail instanceof SessionTurn ? cell.turnTail : null;
598
+ }
599
+ turnIndex = Math.max(1, hops);
600
+ }
601
+ const affinity = this.driverConnection.cacheAffinity(this.cacheSessionId(), this.effectiveModel(), {
602
+ requestId: randomUUID(),
603
+ turnIndex,
604
+ });
605
+ const payload = {
606
+ ...this.completionBody([
607
+ ...viewWire(this.expectation, {
608
+ dialect: this.reasoningDialect(),
609
+ }),
610
+ ]),
611
+ ...affinity.body,
612
+ };
613
+ const headers = this.driverConnection.stamp(affinity.headers);
614
+ const url = this.driverConnection.completionRequestUrl();
615
+ this.#requestDump = {
616
+ url,
617
+ headers: redactCacheHeaders(headers),
618
+ body: payload,
619
+ };
620
+ let response;
621
+ const posted = Date.now();
622
+ trace("harness:complete", `post ${this.expectation.uuid} connection=${this.driverConnection.connectionId} model=${this.effectiveModel()} attempt=${n}`);
623
+ try {
624
+ response = await this.driverConnection.authorizedFetch(url, {
625
+ method: "POST",
626
+ headers: affinity.headers,
627
+ body: JSON.stringify(payload),
628
+ }, abort.signal);
629
+ }
630
+ catch (error) {
631
+ if (error instanceof ConnectionMiss)
632
+ throw error;
633
+ throw wrapFetchFailure(error, {
634
+ why: "completion",
635
+ method: "POST",
636
+ url,
637
+ });
638
+ }
639
+ if (!response.ok) {
640
+ const errorBody = await response.text();
641
+ const detail = errorBody.trim().slice(0, 240);
642
+ const message = describeHttpFailure({
643
+ why: "completion",
644
+ method: "POST",
645
+ url,
646
+ status: response.status,
647
+ detail,
648
+ });
649
+ const waitMs = retryAfterMs(response.headers, response.status);
650
+ if (waitMs !== undefined)
651
+ throw new RetryAfterError(message, waitMs);
652
+ const transientHttp = response.status === 408 || response.status === 429 || response.status >= 500;
653
+ const schema = this.expectation.responseSchema;
654
+ const schemaSent = schema != null;
655
+ if (!transientHttp && schemaSent && response.status >= 400 && response.status < 500) {
656
+ throw new Error(`${JSON_SCHEMA_UNSUPPORTED}: ${message}`);
657
+ }
658
+ throw new Error(message);
659
+ }
660
+ const answer = await this.readAnswer(response, abort.signal);
661
+ trace("harness:complete", `answer ${this.expectation.uuid} ms=${Date.now() - posted} status=${response.status} chars=${answer?.content.length ?? 0}`);
662
+ invariant(answer !== null, "openai-compat completion failed");
663
+ this.expectation.stampAnswer({
664
+ calls: responseCallsOf(answer),
665
+ ...(answer.finishReason === undefined ? {} : { finishReason: answer.finishReason }),
666
+ text: answer.content,
667
+ ...(typeof answer.reasoning === "string" ? { thought: answer.reasoning } : {}),
668
+ ...(typeof answer.thoughtKind === "string" ? { thoughtKind: answer.thoughtKind } : {}),
669
+ });
670
+ this.#answerDump = {
671
+ content: answer.content,
672
+ reasoning: answer.reasoning,
673
+ calls: answer.calls.length,
674
+ };
675
+ this.#stampWarm();
676
+ this.#noteCacheInvariant();
677
+ this.speech(answer.content, answer.reasoning);
678
+ const schema = this.expectation.responseSchema;
679
+ if (schema != null)
680
+ assertResponseMatchesSchema(answer.content, JSON.stringify(schema));
681
+ if (this.signal.aborted)
682
+ return;
683
+ this.complete({
684
+ text: answer.content,
685
+ thought: answer.reasoning,
686
+ ...(answer.thoughtKind != null ? { thoughtKind: answer.thoughtKind } : {}),
687
+ });
688
+ return;
689
+ }
690
+ catch (error) {
691
+ if (this.signal.aborted)
692
+ return;
693
+ if (error instanceof ExpectationInvariant)
694
+ throw error;
695
+ if (!isTransientCompletionError(error)) {
696
+ const reason = error instanceof Error ? error.message : String(error);
697
+ this.expectation.failReason = reason;
698
+ runInAction(() => {
699
+ if (this.#spokenText !== "" || this.#spokenThought !== "") {
700
+ this.expectation.responseText = this.#spokenText;
701
+ this.expectation.responseThought = this.#spokenThought;
702
+ }
703
+ this.expectation.markThoughtEnded();
704
+ });
705
+ this.fail(reason);
706
+ return;
707
+ }
708
+ const reason = error instanceof Error ? error.message : String(error);
709
+ const exhausted = this.#retryExhausted(n + 1, runStarted);
710
+ if (exhausted !== "") {
711
+ const final = `${exhausted}: ${reason}`;
712
+ this.expectation.failReason = final;
713
+ runInAction(() => {
714
+ if (this.#spokenText !== "" || this.#spokenThought !== "") {
715
+ this.expectation.responseText = this.#spokenText;
716
+ this.expectation.responseThought = this.#spokenThought;
717
+ }
718
+ this.expectation.markThoughtEnded();
719
+ });
720
+ this.fail(final);
721
+ return;
722
+ }
723
+ retryAfter = error instanceof RetryAfterError ? error.waitMs : undefined;
724
+ step(`completion retry ${n + 1}: ${reason}`);
725
+ }
726
+ }
727
+ }
728
+ finally {
729
+ this.signal.removeEventListener("abort", onActorAbort);
730
+ this.driverConnection.untrackInflight(abort);
731
+ this.#backoffAbort?.abort();
732
+ this.#backoffAbort = undefined;
733
+ }
734
+ }
735
+ #beginAttempt() {
736
+ this.#startedAt = Date.now();
737
+ this.#requestDump = null;
738
+ this.#lastRaw = null;
739
+ this.#answerDump = null;
740
+ this.#spokenText = "";
741
+ this.#spokenThought = "";
742
+ this.expectation.beginAttempt(this.driverConnection.cacheFlavor() !== "none" && this.expectation.expectPromptCacheHit());
743
+ this.report({
744
+ text: "",
745
+ thought: "",
746
+ startedAt: this.#startedAt,
747
+ cacheHit: this.expectation.cacheHit,
748
+ expectedCacheHit: this.expectation.expectedCacheHit,
749
+ });
750
+ }
751
+ /**
752
+ * Empty while the round may retry. The budget is recorded on the expectation when the round
753
+ * starts; zero is no limit, which is the default.
754
+ */
755
+ #retryExhausted(attempts, startedAt) {
756
+ const { retryMaxAttempts: maxAttempts, retryMaxMs: maxMs } = this.expectation;
757
+ if (maxAttempts > 0 && attempts >= maxAttempts)
758
+ return `gave up after ${attempts} attempts`;
759
+ if (maxMs > 0 && Date.now() - startedAt >= maxMs)
760
+ return `gave up after ${Math.round((Date.now() - startedAt) / 1000)}s of retrying`;
761
+ return "";
762
+ }
763
+ #sleepBackoff(n, retryAfter) {
764
+ // Retry-After is a floor on the wait. The cap still bounds it.
765
+ const delay = Math.max(this.backoffMs(n), Math.min(retryAfter ?? 0, BACKOFF_CAP_MS));
766
+ if (delay <= 0)
767
+ return Promise.resolve();
768
+ const backoff = new AbortController();
769
+ this.#backoffAbort = backoff;
770
+ const retryUntilMs = Date.now() + delay;
771
+ this.report({
772
+ text: "",
773
+ thought: "",
774
+ startedAt: this.#startedAt,
775
+ retryUntilMs,
776
+ });
777
+ return new Promise((resolve) => {
778
+ let timer;
779
+ const finish = () => {
780
+ if (timer !== undefined)
781
+ clearTimeout(timer);
782
+ backoff.signal.removeEventListener("abort", finish);
783
+ this.signal.removeEventListener("abort", finish);
784
+ if (this.#backoffAbort === backoff)
785
+ this.#backoffAbort = undefined;
786
+ resolve();
787
+ };
788
+ if (backoff.signal.aborted || this.signal.aborted) {
789
+ finish();
790
+ return;
791
+ }
792
+ timer = setTimeout(finish, delay);
793
+ backoff.signal.addEventListener("abort", finish, { once: true });
794
+ this.signal.addEventListener("abort", finish, { once: true });
795
+ });
796
+ }
797
+ speech(text, thought) {
798
+ if (this.signal.aborted)
799
+ return;
800
+ if (text.length === 0 && thought.length === 0)
801
+ return;
802
+ this.#spokenText = text;
803
+ this.#spokenThought = thought;
804
+ if (text.trim() !== "") {
805
+ runInAction(() => {
806
+ this.expectation.markThoughtEnded();
807
+ });
808
+ }
809
+ this.report({
810
+ text,
811
+ thought,
812
+ thoughtKind: this.expectation.responseThoughtKind ?? undefined,
813
+ startedAt: this.#startedAt,
814
+ cacheHit: this.expectation.cacheHit,
815
+ expectedCacheHit: this.expectation.expectedCacheHit,
816
+ });
817
+ }
818
+ stampThoughtKind(kind) {
819
+ if (kind == null)
820
+ return;
821
+ const current = this.expectation.responseThoughtKind;
822
+ if (current === "raw" || current === kind)
823
+ return;
824
+ runInAction(() => {
825
+ this.expectation.responseThoughtKind = kind;
826
+ });
827
+ }
828
+ #noteCacheInvariant() {
829
+ const last = this.expectation.report;
830
+ this.report({
831
+ text: last?.text ?? "",
832
+ thought: last?.thought ?? "",
833
+ thoughtKind: last?.thoughtKind ?? this.expectation.responseThoughtKind ?? undefined,
834
+ startedAt: this.#startedAt,
835
+ cacheHit: this.expectation.cacheHit,
836
+ expectedCacheHit: this.expectation.expectedCacheHit,
837
+ });
838
+ const dumped = this.#dumpCacheRound();
839
+ const note = cacheStatusLog(this.expectation);
840
+ step(dumped == null ? `completion ${note}` : `completion ${note} dumped ${dumped}`);
841
+ }
842
+ #dumpCacheRound() {
843
+ const root = this.expectation.plexus?.root;
844
+ const workspacePath = root instanceof SessionRoot ? root.path : "";
845
+ return writeCacheDump({
846
+ workspacePath,
847
+ sessionId: this.cacheSessionId(),
848
+ startedAt: this.#startedAt,
849
+ kind: cacheDumpKind(this.expectation.expectedCacheHit, this.expectation.cacheHit),
850
+ expectedCacheHit: this.expectation.expectedCacheHit,
851
+ cacheHit: this.expectation.cacheHit,
852
+ cachedTokens: this.expectation.cachedTokens,
853
+ totalTokens: this.expectation.totalTokens,
854
+ request: this.#requestDump,
855
+ response: this.#lastRaw,
856
+ answer: this.#answerDump ?? undefined,
857
+ });
858
+ }
859
+ /**
860
+ * Live-tape ReACT keeps the session id. Remainder / compact / other
861
+ * off-spine PEWs share `${session}:off-spine` so they cluster with each
862
+ * other and do not occupy the tape replica — a different prefix on the
863
+ * same `x-grok-conv-id` evicts the tape KV (xAI cache is per-server).
864
+ */
865
+ cacheSessionId() {
866
+ const root = this.expectation.plexus?.root;
867
+ const sessionId = root instanceof SessionRoot ? root.sessionId.trim() : "";
868
+ const base = sessionId === "" ? this.driverConnection.connectionId : sessionId;
869
+ if (owningTurn(this.expectation) != null)
870
+ return base;
871
+ return `${base}:off-spine`;
872
+ }
873
+ effectiveModel() {
874
+ const turn = this.expectation.model.trim();
875
+ if (turn)
876
+ return turn;
877
+ const configured = (this.driverConnection.settings.model ?? "").trim();
878
+ if (configured)
879
+ return configured;
880
+ const live = this.driverConnection.state.models.find((id) => id.trim() !== "")?.trim();
881
+ invariant(live, "openai-compat model is required");
882
+ return live;
883
+ }
884
+ jsonSchema() {
885
+ return this.expectation.responseSchema ?? undefined;
886
+ }
887
+ stampConsumed(raw) {
888
+ const ledger = usageLedger(raw);
889
+ this.#lastRaw = preferCacheResponse(this.#lastRaw, raw);
890
+ runInAction(() => {
891
+ if (ledger.totalTokens != null)
892
+ this.expectation.totalTokens = ledger.totalTokens;
893
+ if (ledger.cachedTokens != null) {
894
+ this.expectation.cachedTokens = ledger.cachedTokens;
895
+ this.expectation.cacheHit = ledger.cachedTokens > 0;
896
+ }
897
+ if (ledger.inputTokens != null)
898
+ this.expectation.inputTokens = ledger.inputTokens;
899
+ if (ledger.outputTokens != null)
900
+ this.expectation.outputTokens = ledger.outputTokens;
901
+ if (ledger.cacheWriteTokens != null)
902
+ this.expectation.cacheWriteTokens = ledger.cacheWriteTokens;
903
+ if (ledger.reasoningTokens != null)
904
+ this.expectation.reasoningTokens = ledger.reasoningTokens;
905
+ if (ledger.costUsd != null)
906
+ this.expectation.costUsd = ledger.costUsd;
907
+ });
908
+ }
909
+ #stampWarm() {
910
+ runInAction(() => {
911
+ this.expectation.warmUntil = new Date(Date.now() + PROMPT_CACHE_TTL_MS);
912
+ });
913
+ }
914
+ }
915
+ export class OpenAiCompatChatActor extends OpenAiCompatActor {
916
+ /** Anthropic `cache_control` breakpoints, where the route takes them and the connection allows. */
917
+ cacheMarked(messages, model) {
918
+ const settings = this.driverConnection.settings;
919
+ if (!emitsCacheControl(settings, this.driverConnection.cacheFlavor(), model))
920
+ return messages;
921
+ const turn = owningTurn(this.expectation);
922
+ const card = turn == null ? null : latestCompactCutoff(turn);
923
+ return withCacheBreakpoints(messages, card?.job.standIn ?? "", settings.cacheControlTtl ?? "5m");
924
+ }
925
+ completionBody(messages) {
926
+ const schema = this.jsonSchema();
927
+ const model = this.effectiveModel();
928
+ const openaiExplicit = this.driverConnection.cacheFlavor() === "openai" && usesExplicitPromptCache(model);
929
+ const first = messages[0];
930
+ // GPT-5.6+ implicit mode writes through the latest eligible message. An explicit
931
+ // breakpoint on the stable system head lets a later env/mode rewrite still reuse
932
+ // constitution+tools. `instructions` cannot hold a breakpoint — Chat Completions
933
+ // system parts can.
934
+ // https://developers.openai.com/api/docs/guides/prompt-caching
935
+ const stamped = openaiExplicit && first != null && first.role === "system" && typeof first.content === "string"
936
+ ? [
937
+ {
938
+ ...first,
939
+ content: [
940
+ {
941
+ type: "text",
942
+ text: first.content,
943
+ prompt_cache_breakpoint: { mode: "explicit" },
944
+ },
945
+ ],
946
+ },
947
+ ...messages.slice(1),
948
+ ]
949
+ : messages;
950
+ return {
951
+ model,
952
+ messages: this.cacheMarked(stamped, model),
953
+ stream: true,
954
+ stream_options: { include_usage: true },
955
+ temperature: this.driverConnection.settings.temperature,
956
+ ...wireTools(toolsFor(this.expectation)),
957
+ ...this.reasoningDialect().body,
958
+ ...(schema === undefined
959
+ ? {}
960
+ : {
961
+ response_format: {
962
+ type: "json_schema",
963
+ json_schema: { name: "Output", schema, strict: true },
964
+ },
965
+ }),
966
+ };
967
+ }
968
+ async readAnswer(response, signal) {
969
+ const contentType = response.headers.get("content-type")?.toLowerCase() ?? "";
970
+ if (contentType.includes("application/json")) {
971
+ return this.#roundFromBulk(await response.json());
972
+ }
973
+ if (contentType.includes("text/event-stream") || contentType.includes("event-stream")) {
974
+ return this.#consumeStream(readSseJson(response.body, signal, this.stallMs));
975
+ }
976
+ const text = await response.text();
977
+ const head = text.trimStart();
978
+ if (head.startsWith("{") || head.startsWith("[")) {
979
+ try {
980
+ const parsed = JSON.parse(text);
981
+ return this.#roundFromBulk(parsed);
982
+ }
983
+ catch {
984
+ return null;
985
+ }
986
+ }
987
+ return this.#consumeStream(readSseJson(new ReadableStream({
988
+ start(controller) {
989
+ controller.enqueue(new TextEncoder().encode(text));
990
+ controller.close();
991
+ },
992
+ }), signal, this.stallMs));
993
+ }
994
+ #roundFromBulk(payload) {
995
+ this.stampConsumed(payload);
996
+ const choices = typeof payload === "object" && payload !== null ? readField(payload, "choices") : undefined;
997
+ const choice = Array.isArray(choices) && typeof choices[0] === "object" && choices[0] !== null ? choices[0] : undefined;
998
+ const message = choice == null ? undefined : readField(choice, "message");
999
+ const messageRec = typeof message === "object" && message !== null ? message : undefined;
1000
+ const reasoningContent = messageRec == null ? undefined : readField(messageRec, "reasoning_content");
1001
+ const reasoningAlt = messageRec == null ? undefined : readField(messageRec, "reasoning");
1002
+ const reasoning = typeof reasoningContent === "string" && reasoningContent.length > 0
1003
+ ? reasoningContent
1004
+ : typeof reasoningAlt === "string" && reasoningAlt.length > 0
1005
+ ? reasoningAlt
1006
+ : "";
1007
+ const content = messageRec == null ? undefined : readField(messageRec, "content");
1008
+ const spoken = splitMessageContent(content);
1009
+ const toolCalls = messageRec == null ? undefined : readField(messageRec, "tool_calls");
1010
+ const finishReason = choice == null ? undefined : readField(choice, "finish_reason");
1011
+ const normalized = normalizeMessage({
1012
+ content: spoken.text,
1013
+ tool_calls: Array.isArray(toolCalls)
1014
+ ? toolCalls.flatMap((item) => {
1015
+ const call = parseStoredToolCall(item);
1016
+ return call == null ? [] : [call];
1017
+ })
1018
+ : null,
1019
+ reasoning_content: mergeReasoning(reasoning || null, spoken.thought),
1020
+ }, {
1021
+ mode: "repair",
1022
+ tools: catalogToolDefs(this.expectation),
1023
+ argAliases: argAliasesForNormalize(),
1024
+ modelHint: this.effectiveModel(),
1025
+ finishReasonIn: typeof finishReason === "string" ? finishReason : null,
1026
+ });
1027
+ const reasoningText = normalized.reasoning_content ?? "";
1028
+ const thoughtKind = reasoningText !== "" || spoken.sawThinking ? "raw" : null;
1029
+ this.stampThoughtKind(thoughtKind);
1030
+ const answer = {
1031
+ content: normalized.content ?? "",
1032
+ reasoning: reasoningText,
1033
+ thoughtKind,
1034
+ calls: normalized.tool_calls,
1035
+ finishReason: normalized.finish_reason ?? undefined,
1036
+ dropped: normalized.meta.dropped
1037
+ .filter((drop) => SURFACED_DROPS.has(drop.reason) && drop.name !== "")
1038
+ .map((drop, index) => ({ id: `dropped_${index}`, name: drop.name, reason: drop.reason })),
1039
+ };
1040
+ this.speech(answer.content, answer.reasoning);
1041
+ return answer;
1042
+ }
1043
+ async #consumeStream(chunks) {
1044
+ const session = createStreamSession({
1045
+ mode: "repair",
1046
+ tools: catalogToolDefs(this.expectation),
1047
+ argAliases: argAliasesForNormalize(),
1048
+ modelHint: this.effectiveModel(),
1049
+ });
1050
+ let thoughtAcc = "";
1051
+ let textAcc = "";
1052
+ let sawThinking = false;
1053
+ const calls = [];
1054
+ const partial = new Set();
1055
+ const dropped = [];
1056
+ let finishReason;
1057
+ const onEvent = (ev) => {
1058
+ switch (ev.type) {
1059
+ case "reasoning_delta": {
1060
+ if (!ev.text)
1061
+ break;
1062
+ if (thoughtAcc === "" && textAcc === "") {
1063
+ trace("harness:complete", `first-token ${this.expectation.uuid} kind=thought`);
1064
+ }
1065
+ thoughtAcc += ev.text;
1066
+ this.stampThoughtKind("raw");
1067
+ this.speech(textAcc, thoughtAcc);
1068
+ break;
1069
+ }
1070
+ case "text_delta": {
1071
+ if (!ev.text)
1072
+ break;
1073
+ if (textAcc === "" && thoughtAcc === "") {
1074
+ trace("harness:complete", `first-token ${this.expectation.uuid} kind=text`);
1075
+ }
1076
+ textAcc += ev.text;
1077
+ this.speech(textAcc, thoughtAcc);
1078
+ break;
1079
+ }
1080
+ case "tool_call_end": {
1081
+ if (!ev.name || ev.arguments == null || !ev.id)
1082
+ break;
1083
+ if (ev.partial === true)
1084
+ partial.add(ev.id);
1085
+ calls.push({
1086
+ id: ev.id,
1087
+ type: "function",
1088
+ function: { name: ev.name, arguments: ev.arguments },
1089
+ });
1090
+ break;
1091
+ }
1092
+ case "tool_call_drop": {
1093
+ if (ev.id && ev.name && ev.reason !== undefined && SURFACED_DROPS.has(ev.reason)) {
1094
+ dropped.push({ id: ev.id, name: ev.name, reason: ev.reason });
1095
+ }
1096
+ break;
1097
+ }
1098
+ case "finish": {
1099
+ if (ev.finish_reason !== undefined)
1100
+ finishReason = ev.finish_reason;
1101
+ break;
1102
+ }
1103
+ default:
1104
+ break;
1105
+ }
1106
+ };
1107
+ for await (const raw of chunks) {
1108
+ this.stampConsumed(raw);
1109
+ if (typeof raw === "object" && raw !== null) {
1110
+ const rec = raw;
1111
+ const choice = rec.choices?.[0];
1112
+ const delta = choice?.delta;
1113
+ let chunk = rec;
1114
+ if (delta != null) {
1115
+ const altRaw = readField(delta, "reasoning");
1116
+ const alt = typeof altRaw === "string" ? altRaw : "";
1117
+ const rawContent = readField(delta, "content");
1118
+ const parts = Array.isArray(rawContent) ? splitMessageContent(rawContent) : null;
1119
+ if (parts?.sawThinking === true)
1120
+ sawThinking = true;
1121
+ const hasReasoning = typeof delta.reasoning_content === "string" && delta.reasoning_content.length > 0;
1122
+ const reasoning = hasReasoning
1123
+ ? `${delta.reasoning_content}${parts?.thought ?? ""}`
1124
+ : `${alt}${parts?.thought ?? ""}`;
1125
+ if (parts != null || (alt.length > 0 && !hasReasoning)) {
1126
+ chunk = {
1127
+ ...rec,
1128
+ choices: [
1129
+ {
1130
+ ...choice,
1131
+ delta: {
1132
+ ...delta,
1133
+ ...(parts == null ? {} : { content: parts.text }),
1134
+ ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),
1135
+ },
1136
+ },
1137
+ ...(rec.choices?.slice(1) ?? []),
1138
+ ],
1139
+ };
1140
+ }
1141
+ }
1142
+ for (const ev of session.ingest(chunk))
1143
+ onEvent(ev);
1144
+ }
1145
+ if (thoughtAcc === "")
1146
+ thoughtAcc = chunkMessageReasoning(raw);
1147
+ }
1148
+ for (const ev of session.close())
1149
+ onEvent(ev);
1150
+ const settled = settleCalls(calls, partial, dropped, finishReason);
1151
+ return {
1152
+ content: textAcc,
1153
+ reasoning: thoughtAcc,
1154
+ thoughtKind: thoughtAcc !== "" || sawThinking ? "raw" : null,
1155
+ calls: settled.calls,
1156
+ dropped: settled.dropped,
1157
+ ...(finishReason === undefined ? {} : { finishReason }),
1158
+ };
1159
+ }
1160
+ }
1161
+ export class OpenAiCompatResponsesActor extends OpenAiCompatActor {
1162
+ completionBody(messages) {
1163
+ const schema = this.jsonSchema();
1164
+ const isolated = this.expectation.completionMode === "isolated";
1165
+ const firstSystem = messages.find((message) => message.role === "system");
1166
+ const dialect = this.reasoningDialect();
1167
+ const reasoning = dialect.body.reasoning;
1168
+ const input = [];
1169
+ if (isolated) {
1170
+ for (const { role, content } of messages)
1171
+ input.push({ role, content });
1172
+ }
1173
+ else {
1174
+ let skippedFirstSystem = false;
1175
+ for (const message of messages) {
1176
+ if (message.role === "system") {
1177
+ if (!skippedFirstSystem) {
1178
+ skippedFirstSystem = true;
1179
+ continue;
1180
+ }
1181
+ input.push({
1182
+ role: "developer",
1183
+ content: chatContentText(message.content),
1184
+ });
1185
+ continue;
1186
+ }
1187
+ if (message.role === "tool") {
1188
+ input.push({
1189
+ type: "function_call_output",
1190
+ call_id: message.tool_call_id,
1191
+ output: chatContentText(message.content),
1192
+ });
1193
+ continue;
1194
+ }
1195
+ if (message.role === "assistant") {
1196
+ const encrypted = message.reasoning_encrypted?.trim() ?? "";
1197
+ const thought = (message.reasoning_content ?? message.reasoning ?? "").trim();
1198
+ if (encrypted !== "") {
1199
+ input.push({
1200
+ type: "reasoning",
1201
+ // Codex 400s without this key. Empty is valid; thought becomes summary_text.
1202
+ summary: thought === "" ? [] : [{ type: "summary_text", text: thought }],
1203
+ encrypted_content: encrypted,
1204
+ });
1205
+ }
1206
+ const calls = message.tool_calls ?? [];
1207
+ const text = chatContentText(message.content);
1208
+ if (text !== "") {
1209
+ input.push({ role: "assistant", content: text });
1210
+ }
1211
+ else if (calls.length === 0 && encrypted === "") {
1212
+ input.push({ role: "assistant", content: "" });
1213
+ }
1214
+ for (const call of calls) {
1215
+ input.push({
1216
+ type: "function_call",
1217
+ call_id: call.id,
1218
+ name: call.function.name,
1219
+ arguments: call.function.arguments,
1220
+ });
1221
+ }
1222
+ continue;
1223
+ }
1224
+ input.push({ role: "user", content: responsesUserContent(message.content) });
1225
+ }
1226
+ }
1227
+ return {
1228
+ model: this.effectiveModel(),
1229
+ instructions: isolated ? "" : typeof firstSystem?.content === "string" ? firstSystem.content : undefined,
1230
+ input,
1231
+ ...wireTools(toolsFor(this.expectation).map((tool) => ({
1232
+ type: "function",
1233
+ name: tool.function.name,
1234
+ description: tool.function.description,
1235
+ parameters: tool.function.parameters,
1236
+ }))),
1237
+ stream: true,
1238
+ // ChatGPT Codex 400s store:true. Encrypted reasoning is echoed instead.
1239
+ store: false,
1240
+ include: ["reasoning.encrypted_content"],
1241
+ // Visible thought is the summary, not the encrypted CoT. Codex CLI sends this.
1242
+ reasoning: typeof reasoning === "object" && reasoning !== null ? { summary: "auto", ...reasoning } : { summary: "auto" },
1243
+ // Responses structured output is text.format, not response_format.
1244
+ ...(schema === undefined
1245
+ ? {}
1246
+ : {
1247
+ text: {
1248
+ format: {
1249
+ type: "json_schema",
1250
+ name: "Output",
1251
+ strict: true,
1252
+ schema,
1253
+ },
1254
+ },
1255
+ }),
1256
+ };
1257
+ }
1258
+ async readAnswer(response, signal) {
1259
+ const contentType = response.headers.get("content-type") ?? "";
1260
+ if (contentType.toLowerCase().includes("application/json") && !contentType.toLowerCase().includes("event-stream")) {
1261
+ const payload = await response.json();
1262
+ this.stampConsumed(payload);
1263
+ const parts = [];
1264
+ const rawParts = [];
1265
+ const summaryParts = [];
1266
+ const calls = [];
1267
+ let encrypted = "";
1268
+ let sawReasoning = false;
1269
+ const collectItem = (item) => {
1270
+ if (typeof item !== "object" || item === null)
1271
+ return;
1272
+ const type = readField(item, "type");
1273
+ const callId = readField(item, "call_id");
1274
+ const name = readField(item, "name");
1275
+ const args = readField(item, "arguments");
1276
+ if (type === "function_call" &&
1277
+ typeof callId === "string" &&
1278
+ typeof name === "string" &&
1279
+ typeof args === "string") {
1280
+ calls.push({
1281
+ id: callId,
1282
+ type: "function",
1283
+ function: { name, arguments: args },
1284
+ });
1285
+ return;
1286
+ }
1287
+ if (type === "reasoning") {
1288
+ sawReasoning = true;
1289
+ const encryptedContent = readField(item, "encrypted_content");
1290
+ if (typeof encryptedContent === "string" && encryptedContent !== "") {
1291
+ encrypted = encryptedContent;
1292
+ }
1293
+ const raw = reasoningPartText(readField(item, "content"));
1294
+ const summary = reasoningPartText(readField(item, "summary"));
1295
+ if (raw !== "")
1296
+ rawParts.push(raw);
1297
+ if (summary !== "")
1298
+ summaryParts.push(summary);
1299
+ }
1300
+ const content = readField(item, "content");
1301
+ if (type === "message" && Array.isArray(content)) {
1302
+ for (const part of content) {
1303
+ if (typeof part !== "object" || part === null)
1304
+ continue;
1305
+ const text = readField(part, "text");
1306
+ if (readField(part, "type") === "output_text" && typeof text === "string")
1307
+ parts.push(text);
1308
+ }
1309
+ }
1310
+ };
1311
+ const output = typeof payload === "object" && payload !== null ? readField(payload, "output") : undefined;
1312
+ if (Array.isArray(output)) {
1313
+ for (const item of output)
1314
+ collectItem(item);
1315
+ }
1316
+ const text = parts.join("");
1317
+ const visible = visibleThought(rawParts.join("\n\n"), summaryParts.join("\n\n"));
1318
+ const thoughtKind = visible.kind ?? (sawReasoning || encrypted !== "" ? "raw" : null);
1319
+ this.#stampReasoningEncrypted(encrypted);
1320
+ this.stampThoughtKind(thoughtKind);
1321
+ this.speech(text, visible.thought);
1322
+ return { content: text, reasoning: visible.thought, thoughtKind, calls };
1323
+ }
1324
+ let acc = {
1325
+ text: "",
1326
+ raw: "",
1327
+ summary: "",
1328
+ lastSummaryPart: null,
1329
+ };
1330
+ const calls = [];
1331
+ let encrypted = "";
1332
+ let sawTerminal = false;
1333
+ let finish;
1334
+ const partial = new Set();
1335
+ const emitSpeech = () => {
1336
+ const visible = visibleThought(acc.raw, acc.summary);
1337
+ this.stampThoughtKind(visible.kind);
1338
+ this.speech(acc.text, visible.thought);
1339
+ };
1340
+ for await (const raw of readSseJson(response.body, signal, this.stallMs)) {
1341
+ this.stampConsumed(raw);
1342
+ if (typeof raw !== "object" || raw === null)
1343
+ continue;
1344
+ const type = readField(raw, "type");
1345
+ const delta = readField(raw, "delta");
1346
+ switch (type) {
1347
+ case "error":
1348
+ case "response.failed": {
1349
+ const eventError = readField(raw, "error");
1350
+ const eventResponse = readField(raw, "response");
1351
+ const responseError = typeof eventResponse === "object" && eventResponse !== null ? readField(eventResponse, "error") : undefined;
1352
+ const eventMessage = typeof eventError === "object" && eventError !== null ? readField(eventError, "message") : undefined;
1353
+ const nestedMessage = typeof responseError === "object" && responseError !== null
1354
+ ? readField(responseError, "message")
1355
+ : undefined;
1356
+ const detail = eventMessage ?? nestedMessage;
1357
+ throw new Error(typeof detail === "string" ? detail : `Responses stream failed: ${String(type)}`);
1358
+ }
1359
+ case "response.completed":
1360
+ case "response.done": {
1361
+ sawTerminal = true;
1362
+ break;
1363
+ }
1364
+ case "response.incomplete": {
1365
+ const eventResponse = readField(raw, "response");
1366
+ const incomplete = typeof eventResponse === "object" && eventResponse !== null
1367
+ ? readField(eventResponse, "incomplete_details")
1368
+ : undefined;
1369
+ const details = typeof incomplete === "object" && incomplete !== null ? readField(incomplete, "reason") : undefined;
1370
+ const nestedOutput = typeof eventResponse === "object" && eventResponse !== null
1371
+ ? readField(eventResponse, "output")
1372
+ : undefined;
1373
+ if (Array.isArray(nestedOutput)) {
1374
+ for (const item of nestedOutput) {
1375
+ if (typeof item !== "object" || item === null)
1376
+ continue;
1377
+ const itemType = readField(item, "type");
1378
+ const callId = readField(item, "call_id");
1379
+ const name = readField(item, "name");
1380
+ const args = readField(item, "arguments");
1381
+ if (itemType === "function_call" &&
1382
+ typeof callId === "string" &&
1383
+ typeof name === "string" &&
1384
+ typeof args === "string" &&
1385
+ !calls.some((call) => call.id === callId)) {
1386
+ partial.add(callId);
1387
+ calls.push({
1388
+ id: callId,
1389
+ type: "function",
1390
+ function: { name, arguments: args },
1391
+ });
1392
+ continue;
1393
+ }
1394
+ if (itemType === "reasoning") {
1395
+ const encryptedContent = readField(item, "encrypted_content");
1396
+ if (encrypted === "" && typeof encryptedContent === "string" && encryptedContent !== "") {
1397
+ encrypted = encryptedContent;
1398
+ }
1399
+ const thoughtRaw = reasoningPartText(readField(item, "content"));
1400
+ const summary = reasoningPartText(readField(item, "summary"));
1401
+ if (acc.raw === "" && thoughtRaw !== "")
1402
+ acc = { ...acc, raw: thoughtRaw };
1403
+ if (acc.summary === "" && summary !== "")
1404
+ acc = { ...acc, summary };
1405
+ this.stampThoughtKind("raw");
1406
+ continue;
1407
+ }
1408
+ if (itemType === "message" && acc.text === "") {
1409
+ const content = readField(item, "content");
1410
+ if (!Array.isArray(content))
1411
+ continue;
1412
+ const texts = [];
1413
+ for (const part of content) {
1414
+ if (typeof part !== "object" || part === null)
1415
+ continue;
1416
+ const text = readField(part, "text");
1417
+ if (readField(part, "type") === "output_text" && typeof text === "string")
1418
+ texts.push(text);
1419
+ }
1420
+ if (texts.length > 0)
1421
+ acc = { ...acc, text: texts.join("") };
1422
+ }
1423
+ }
1424
+ }
1425
+ if (incompleteThoughtExhausted(details, {
1426
+ raw: acc.raw,
1427
+ summary: acc.summary,
1428
+ encrypted,
1429
+ kind: this.expectation.responseThoughtKind,
1430
+ reasoningTokens: this.expectation.reasoningTokens,
1431
+ })) {
1432
+ sawTerminal = true;
1433
+ finish = "length";
1434
+ break;
1435
+ }
1436
+ // Speech cut off by max_output_tokens stays a failed round (chatgpt-complete.test); only
1437
+ // the filter is a stop of its own.
1438
+ if (details === "content_filter") {
1439
+ sawTerminal = true;
1440
+ finish = "content_filter";
1441
+ break;
1442
+ }
1443
+ throw new Error(`Responses stream incomplete${typeof details === "string" ? `: ${details}` : ""}`);
1444
+ }
1445
+ case "response.output_item.done": {
1446
+ const item = readField(raw, "item");
1447
+ if (typeof item === "object" && item !== null) {
1448
+ const itemType = readField(item, "type");
1449
+ const callId = readField(item, "call_id");
1450
+ const name = readField(item, "name");
1451
+ const args = readField(item, "arguments");
1452
+ const encryptedContent = readField(item, "encrypted_content");
1453
+ if (itemType === "function_call" &&
1454
+ typeof callId === "string" &&
1455
+ typeof name === "string" &&
1456
+ typeof args === "string") {
1457
+ calls.push({
1458
+ id: callId,
1459
+ type: "function",
1460
+ function: { name, arguments: args },
1461
+ });
1462
+ }
1463
+ else if (itemType === "reasoning") {
1464
+ if (typeof encryptedContent === "string" && encryptedContent !== "") {
1465
+ encrypted = encryptedContent;
1466
+ }
1467
+ this.stampThoughtKind("raw");
1468
+ }
1469
+ }
1470
+ break;
1471
+ }
1472
+ default:
1473
+ if (type === "response.output_text.delta" && typeof delta === "string") {
1474
+ acc = { ...acc, text: acc.text + delta };
1475
+ emitSpeech();
1476
+ }
1477
+ else if (type === "response.reasoning_summary_text.delta" && typeof delta === "string") {
1478
+ const indexRaw = readField(raw, "summary_index");
1479
+ const itemIdRaw = readField(raw, "item_id");
1480
+ const index = typeof indexRaw === "number" ? indexRaw : 0;
1481
+ const itemId = typeof itemIdRaw === "string" ? itemIdRaw : "";
1482
+ const partKey = `${itemId}:${index}`;
1483
+ const gap = acc.lastSummaryPart !== null && partKey !== acc.lastSummaryPart && acc.summary !== "" ? "\n\n" : "";
1484
+ acc = {
1485
+ ...acc,
1486
+ summary: acc.summary + gap + delta,
1487
+ lastSummaryPart: partKey,
1488
+ };
1489
+ emitSpeech();
1490
+ }
1491
+ else if (type === "response.reasoning_text.delta" && typeof delta === "string") {
1492
+ acc = { ...acc, raw: acc.raw + delta };
1493
+ emitSpeech();
1494
+ }
1495
+ }
1496
+ }
1497
+ if (!sawTerminal)
1498
+ throw new Error("Responses stream ended before terminal response event");
1499
+ this.#stampReasoningEncrypted(encrypted);
1500
+ const visible = visibleThought(acc.raw, acc.summary);
1501
+ const thoughtKind = visible.kind ?? (encrypted !== "" || this.expectation.responseThoughtKind != null ? "raw" : null);
1502
+ const settled = settleCalls(calls, partial, [], finish);
1503
+ return {
1504
+ content: acc.text,
1505
+ reasoning: visible.thought,
1506
+ thoughtKind,
1507
+ calls: settled.calls,
1508
+ dropped: settled.dropped,
1509
+ finishReason: finish ?? (calls.length > 0 ? "tool_calls" : "stop"),
1510
+ };
1511
+ }
1512
+ #stampReasoningEncrypted(encrypted) {
1513
+ if (encrypted === "")
1514
+ return;
1515
+ runInAction(() => {
1516
+ this.expectation.responseReasoningEncrypted = encrypted;
1517
+ });
1518
+ }
1519
+ }
1520
+ //# sourceMappingURL=actor.js.map