@namzu/sdk 0.1.1 → 0.1.2

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 (782) hide show
  1. package/dist/agents/AbstractAgent.d.ts +5 -5
  2. package/dist/agents/AbstractAgent.d.ts.map +1 -1
  3. package/dist/agents/AbstractAgent.js +7 -7
  4. package/dist/agents/AbstractAgent.js.map +1 -1
  5. package/dist/agents/PipelineAgent.d.ts +1 -1
  6. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  7. package/dist/agents/PipelineAgent.js +3 -1
  8. package/dist/agents/PipelineAgent.js.map +1 -1
  9. package/dist/agents/ReactiveAgent.d.ts +1 -1
  10. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  11. package/dist/agents/ReactiveAgent.js +4 -1
  12. package/dist/agents/ReactiveAgent.js.map +1 -1
  13. package/dist/agents/RouterAgent.d.ts +1 -1
  14. package/dist/agents/RouterAgent.d.ts.map +1 -1
  15. package/dist/agents/RouterAgent.js +5 -9
  16. package/dist/agents/RouterAgent.js.map +1 -1
  17. package/dist/agents/SupervisorAgent.d.ts +4 -4
  18. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  19. package/dist/agents/SupervisorAgent.js +16 -14
  20. package/dist/agents/SupervisorAgent.js.map +1 -1
  21. package/dist/agents/defineAgent.d.ts +1 -1
  22. package/dist/agents/defineAgent.d.ts.map +1 -1
  23. package/dist/agents/defineAgent.js +1 -6
  24. package/dist/agents/defineAgent.js.map +1 -1
  25. package/dist/bridge/a2a/agent-card.d.ts.map +1 -1
  26. package/dist/bridge/a2a/agent-card.js +1 -1
  27. package/dist/bridge/a2a/agent-card.js.map +1 -1
  28. package/dist/bridge/a2a/index.d.ts.map +1 -1
  29. package/dist/bridge/a2a/index.js.map +1 -1
  30. package/dist/bridge/a2a/mapper.d.ts +2 -2
  31. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  32. package/dist/bridge/a2a/mapper.js +28 -28
  33. package/dist/bridge/a2a/mapper.js.map +1 -1
  34. package/dist/bridge/a2a/message.d.ts +1 -1
  35. package/dist/bridge/a2a/message.d.ts.map +1 -1
  36. package/dist/bridge/a2a/message.js.map +1 -1
  37. package/dist/bridge/a2a/task.d.ts +2 -2
  38. package/dist/bridge/a2a/task.d.ts.map +1 -1
  39. package/dist/bridge/a2a/task.js +8 -18
  40. package/dist/bridge/a2a/task.js.map +1 -1
  41. package/dist/bridge/mcp/connector/adapter.d.ts +2 -2
  42. package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
  43. package/dist/bridge/mcp/connector/adapter.js +1 -3
  44. package/dist/bridge/mcp/connector/adapter.js.map +1 -1
  45. package/dist/bridge/sse/index.d.ts +2 -2
  46. package/dist/bridge/sse/index.d.ts.map +1 -1
  47. package/dist/bridge/sse/index.js +1 -1
  48. package/dist/bridge/sse/index.js.map +1 -1
  49. package/dist/bridge/sse/mapper.d.ts +3 -3
  50. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  51. package/dist/bridge/sse/mapper.js +26 -26
  52. package/dist/bridge/sse/mapper.js.map +1 -1
  53. package/dist/bridge/tools/connector/adapter.d.ts +2 -2
  54. package/dist/bridge/tools/connector/adapter.d.ts.map +1 -1
  55. package/dist/bridge/tools/connector/adapter.js +2 -6
  56. package/dist/bridge/tools/connector/adapter.js.map +1 -1
  57. package/dist/bridge/tools/connector/definitions.d.ts +1 -1
  58. package/dist/bridge/tools/connector/definitions.d.ts.map +1 -1
  59. package/dist/bridge/tools/connector/definitions.js +5 -16
  60. package/dist/bridge/tools/connector/definitions.js.map +1 -1
  61. package/dist/bridge/tools/connector/index.d.ts.map +1 -1
  62. package/dist/bridge/tools/connector/index.js.map +1 -1
  63. package/dist/bridge/tools/connector/router.d.ts +1 -1
  64. package/dist/bridge/tools/connector/router.d.ts.map +1 -1
  65. package/dist/bridge/tools/connector/router.js +2 -2
  66. package/dist/bridge/tools/connector/router.js.map +1 -1
  67. package/dist/config/runtime.d.ts +4 -4
  68. package/dist/config/runtime.js.map +1 -1
  69. package/dist/connector/BaseConnector.d.ts +1 -1
  70. package/dist/connector/BaseConnector.d.ts.map +1 -1
  71. package/dist/connector/BaseConnector.js +1 -3
  72. package/dist/connector/BaseConnector.js.map +1 -1
  73. package/dist/connector/builtins/http.d.ts +1 -1
  74. package/dist/connector/builtins/http.d.ts.map +1 -1
  75. package/dist/connector/builtins/http.js +6 -6
  76. package/dist/connector/builtins/http.js.map +1 -1
  77. package/dist/connector/builtins/webhook.d.ts +2 -2
  78. package/dist/connector/builtins/webhook.d.ts.map +1 -1
  79. package/dist/connector/builtins/webhook.js +4 -6
  80. package/dist/connector/builtins/webhook.js.map +1 -1
  81. package/dist/connector/execution/factory.d.ts +4 -4
  82. package/dist/connector/execution/factory.d.ts.map +1 -1
  83. package/dist/connector/execution/factory.js +1 -1
  84. package/dist/connector/execution/factory.js.map +1 -1
  85. package/dist/connector/execution/hybrid.d.ts +1 -1
  86. package/dist/connector/execution/hybrid.d.ts.map +1 -1
  87. package/dist/connector/execution/hybrid.js +4 -2
  88. package/dist/connector/execution/hybrid.js.map +1 -1
  89. package/dist/connector/execution/remote.d.ts +1 -1
  90. package/dist/connector/execution/remote.d.ts.map +1 -1
  91. package/dist/connector/execution/remote.js +1 -2
  92. package/dist/connector/execution/remote.js.map +1 -1
  93. package/dist/connector/index.d.ts.map +1 -1
  94. package/dist/connector/index.js.map +1 -1
  95. package/dist/connector/mcp/adapter.d.ts +1 -1
  96. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  97. package/dist/connector/mcp/adapter.js +1 -1
  98. package/dist/connector/mcp/adapter.js.map +1 -1
  99. package/dist/connector/mcp/client.d.ts +1 -1
  100. package/dist/connector/mcp/client.d.ts.map +1 -1
  101. package/dist/connector/mcp/client.js +13 -12
  102. package/dist/connector/mcp/client.js.map +1 -1
  103. package/dist/connector/mcp/discovery.d.ts +1 -1
  104. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  105. package/dist/connector/mcp/discovery.js +1 -1
  106. package/dist/connector/mcp/discovery.js.map +1 -1
  107. package/dist/connector/mcp/http-sse.d.ts +1 -1
  108. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  109. package/dist/connector/mcp/http-sse.js.map +1 -1
  110. package/dist/connector/mcp/index.d.ts.map +1 -1
  111. package/dist/connector/mcp/index.js.map +1 -1
  112. package/dist/connector/mcp/server.d.ts +1 -1
  113. package/dist/connector/mcp/server.d.ts.map +1 -1
  114. package/dist/connector/mcp/server.js +4 -4
  115. package/dist/connector/mcp/server.js.map +1 -1
  116. package/dist/connector/mcp/stdio.d.ts +1 -1
  117. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  118. package/dist/connector/mcp/stdio.js +3 -3
  119. package/dist/connector/mcp/stdio.js.map +1 -1
  120. package/dist/constants/a2a/index.d.ts +6 -0
  121. package/dist/constants/a2a/index.d.ts.map +1 -0
  122. package/dist/constants/a2a/index.js +17 -0
  123. package/dist/constants/a2a/index.js.map +1 -0
  124. package/dist/constants/agent/index.d.ts +6 -0
  125. package/dist/constants/agent/index.d.ts.map +1 -0
  126. package/dist/constants/agent/index.js +13 -0
  127. package/dist/constants/agent/index.js.map +1 -0
  128. package/dist/constants/index.d.ts +9 -0
  129. package/dist/constants/index.d.ts.map +1 -0
  130. package/dist/constants/index.js +9 -0
  131. package/dist/constants/index.js.map +1 -0
  132. package/dist/constants/limits.d.ts +4 -0
  133. package/dist/constants/limits.d.ts.map +1 -0
  134. package/dist/constants/limits.js +14 -0
  135. package/dist/constants/limits.js.map +1 -0
  136. package/dist/constants/mcp/index.d.ts +2 -0
  137. package/dist/constants/mcp/index.d.ts.map +1 -0
  138. package/dist/constants/mcp/index.js +2 -0
  139. package/dist/constants/mcp/index.js.map +1 -0
  140. package/dist/constants/provider/index.d.ts +5 -0
  141. package/dist/constants/provider/index.d.ts.map +1 -0
  142. package/dist/constants/provider/index.js +20 -0
  143. package/dist/constants/provider/index.js.map +1 -0
  144. package/dist/constants/rag/index.d.ts +6 -0
  145. package/dist/constants/rag/index.d.ts.map +1 -0
  146. package/dist/constants/rag/index.js +24 -0
  147. package/dist/constants/rag/index.js.map +1 -0
  148. package/dist/constants/telemetry/index.d.ts +29 -0
  149. package/dist/constants/telemetry/index.d.ts.map +1 -0
  150. package/dist/constants/telemetry/index.js +29 -0
  151. package/dist/constants/telemetry/index.js.map +1 -0
  152. package/dist/constants/tools/index.d.ts +3 -0
  153. package/dist/constants/tools/index.d.ts.map +1 -0
  154. package/dist/constants/tools/index.js +3 -0
  155. package/dist/constants/tools/index.js.map +1 -0
  156. package/dist/contracts/a2a.d.ts +116 -116
  157. package/dist/contracts/a2a.d.ts.map +1 -1
  158. package/dist/contracts/a2a.js +44 -22
  159. package/dist/contracts/a2a.js.map +1 -1
  160. package/dist/contracts/api.d.ts +2 -2
  161. package/dist/contracts/api.d.ts.map +1 -1
  162. package/dist/contracts/index.d.ts +1 -1
  163. package/dist/contracts/index.d.ts.map +1 -1
  164. package/dist/contracts/index.js.map +1 -1
  165. package/dist/contracts/schemas.d.ts +2 -2
  166. package/dist/contracts/schemas.d.ts.map +1 -1
  167. package/dist/contracts/schemas.js +20 -10
  168. package/dist/contracts/schemas.js.map +1 -1
  169. package/dist/execution/base.d.ts +1 -1
  170. package/dist/execution/base.d.ts.map +1 -1
  171. package/dist/execution/base.js +1 -1
  172. package/dist/execution/base.js.map +1 -1
  173. package/dist/execution/local.d.ts +1 -1
  174. package/dist/execution/local.d.ts.map +1 -1
  175. package/dist/execution/local.js +2 -3
  176. package/dist/execution/local.js.map +1 -1
  177. package/dist/gateway/local.d.ts +3 -3
  178. package/dist/gateway/local.d.ts.map +1 -1
  179. package/dist/gateway/local.js +8 -4
  180. package/dist/gateway/local.js.map +1 -1
  181. package/dist/index.d.ts +92 -91
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +74 -73
  184. package/dist/index.js.map +1 -1
  185. package/dist/manager/agent/index.d.ts +1 -1
  186. package/dist/manager/agent/index.d.ts.map +1 -1
  187. package/dist/manager/agent/index.js +1 -1
  188. package/dist/manager/agent/index.js.map +1 -1
  189. package/dist/manager/agent/lifecycle.d.ts +6 -6
  190. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  191. package/dist/manager/agent/lifecycle.js +32 -34
  192. package/dist/manager/agent/lifecycle.js.map +1 -1
  193. package/dist/manager/connector/environment.d.ts +5 -5
  194. package/dist/manager/connector/environment.d.ts.map +1 -1
  195. package/dist/manager/connector/environment.js +2 -2
  196. package/dist/manager/connector/environment.js.map +1 -1
  197. package/dist/manager/connector/index.d.ts.map +1 -1
  198. package/dist/manager/connector/lifecycle.d.ts +3 -3
  199. package/dist/manager/connector/lifecycle.d.ts.map +1 -1
  200. package/dist/manager/connector/lifecycle.js +19 -4
  201. package/dist/manager/connector/lifecycle.js.map +1 -1
  202. package/dist/manager/connector/tenant.d.ts +3 -3
  203. package/dist/manager/connector/tenant.d.ts.map +1 -1
  204. package/dist/manager/connector/tenant.js +6 -5
  205. package/dist/manager/connector/tenant.js.map +1 -1
  206. package/dist/manager/index.d.ts.map +1 -1
  207. package/dist/manager/plan/lifecycle.d.ts +2 -2
  208. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  209. package/dist/manager/plan/lifecycle.js +3 -4
  210. package/dist/manager/plan/lifecycle.js.map +1 -1
  211. package/dist/manager/run/persistence.d.ts +3 -3
  212. package/dist/manager/run/persistence.d.ts.map +1 -1
  213. package/dist/manager/run/persistence.js +2 -2
  214. package/dist/manager/run/persistence.js.map +1 -1
  215. package/dist/persona/assembler.d.ts.map +1 -1
  216. package/dist/persona/assembler.js +1 -4
  217. package/dist/persona/assembler.js.map +1 -1
  218. package/dist/provider/bedrock/client.d.ts +2 -2
  219. package/dist/provider/bedrock/client.d.ts.map +1 -1
  220. package/dist/provider/bedrock/client.js +75 -79
  221. package/dist/provider/bedrock/client.js.map +1 -1
  222. package/dist/provider/factory.d.ts +1 -1
  223. package/dist/provider/factory.d.ts.map +1 -1
  224. package/dist/provider/factory.js +4 -21
  225. package/dist/provider/factory.js.map +1 -1
  226. package/dist/provider/openrouter/client.d.ts.map +1 -1
  227. package/dist/provider/openrouter/client.js +12 -6
  228. package/dist/provider/openrouter/client.js.map +1 -1
  229. package/dist/provider/telemetry/setup.d.ts +1 -1
  230. package/dist/provider/telemetry/setup.d.ts.map +1 -1
  231. package/dist/provider/telemetry/setup.js +9 -13
  232. package/dist/provider/telemetry/setup.js.map +1 -1
  233. package/dist/rag/chunking.d.ts +3 -2
  234. package/dist/rag/chunking.d.ts.map +1 -1
  235. package/dist/rag/chunking.js +6 -15
  236. package/dist/rag/chunking.js.map +1 -1
  237. package/dist/rag/context-assembler.d.ts +2 -1
  238. package/dist/rag/context-assembler.d.ts.map +1 -1
  239. package/dist/rag/context-assembler.js +2 -6
  240. package/dist/rag/context-assembler.js.map +1 -1
  241. package/dist/rag/embedding.d.ts.map +1 -1
  242. package/dist/rag/embedding.js +5 -4
  243. package/dist/rag/embedding.js.map +1 -1
  244. package/dist/rag/index.d.ts.map +1 -1
  245. package/dist/rag/ingestion.d.ts.map +1 -1
  246. package/dist/rag/ingestion.js +3 -3
  247. package/dist/rag/ingestion.js.map +1 -1
  248. package/dist/rag/knowledge-base.d.ts.map +1 -1
  249. package/dist/rag/knowledge-base.js +2 -2
  250. package/dist/rag/knowledge-base.js.map +1 -1
  251. package/dist/rag/rag-tool.d.ts.map +1 -1
  252. package/dist/rag/rag-tool.js +3 -1
  253. package/dist/rag/rag-tool.js.map +1 -1
  254. package/dist/rag/retriever.d.ts +2 -1
  255. package/dist/rag/retriever.d.ts.map +1 -1
  256. package/dist/rag/retriever.js +6 -12
  257. package/dist/rag/retriever.js.map +1 -1
  258. package/dist/rag/vector-store.d.ts +1 -1
  259. package/dist/rag/vector-store.d.ts.map +1 -1
  260. package/dist/rag/vector-store.js +7 -3
  261. package/dist/rag/vector-store.js.map +1 -1
  262. package/dist/registry/ManagedRegistry.d.ts +2 -2
  263. package/dist/registry/ManagedRegistry.d.ts.map +1 -1
  264. package/dist/registry/ManagedRegistry.js +21 -5
  265. package/dist/registry/ManagedRegistry.js.map +1 -1
  266. package/dist/registry/Registry.d.ts.map +1 -1
  267. package/dist/registry/Registry.js.map +1 -1
  268. package/dist/registry/agent/definitions.d.ts +3 -3
  269. package/dist/registry/agent/definitions.d.ts.map +1 -1
  270. package/dist/registry/agent/definitions.js +19 -6
  271. package/dist/registry/agent/definitions.js.map +1 -1
  272. package/dist/registry/agent/index.d.ts +1 -1
  273. package/dist/registry/agent/index.d.ts.map +1 -1
  274. package/dist/registry/agent/index.js +1 -1
  275. package/dist/registry/agent/index.js.map +1 -1
  276. package/dist/registry/connector/definitions.d.ts +3 -3
  277. package/dist/registry/connector/definitions.d.ts.map +1 -1
  278. package/dist/registry/connector/definitions.js +19 -6
  279. package/dist/registry/connector/definitions.js.map +1 -1
  280. package/dist/registry/connector/scoped.d.ts +1 -1
  281. package/dist/registry/connector/scoped.d.ts.map +1 -1
  282. package/dist/registry/connector/scoped.js.map +1 -1
  283. package/dist/registry/tool/execute.d.ts +2 -2
  284. package/dist/registry/tool/execute.d.ts.map +1 -1
  285. package/dist/registry/tool/execute.js +50 -50
  286. package/dist/registry/tool/execute.js.map +1 -1
  287. package/dist/run/LimitChecker.d.ts +1 -1
  288. package/dist/run/LimitChecker.d.ts.map +1 -1
  289. package/dist/run/LimitChecker.js.map +1 -1
  290. package/dist/run/reporter.d.ts +2 -2
  291. package/dist/run/reporter.d.ts.map +1 -1
  292. package/dist/run/reporter.js +40 -40
  293. package/dist/run/reporter.js.map +1 -1
  294. package/dist/runtime/decision/fallback.d.ts +1 -1
  295. package/dist/runtime/decision/fallback.d.ts.map +1 -1
  296. package/dist/runtime/decision/fallback.js +2 -2
  297. package/dist/runtime/decision/fallback.js.map +1 -1
  298. package/dist/runtime/decision/parser.d.ts +1 -1
  299. package/dist/runtime/decision/parser.d.ts.map +1 -1
  300. package/dist/runtime/decision/parser.js +2 -2
  301. package/dist/runtime/decision/parser.js.map +1 -1
  302. package/dist/runtime/query/checkpoint.d.ts +1 -1
  303. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  304. package/dist/runtime/query/checkpoint.js +2 -4
  305. package/dist/runtime/query/checkpoint.js.map +1 -1
  306. package/dist/runtime/query/context-cache.d.ts +1 -1
  307. package/dist/runtime/query/context-cache.d.ts.map +1 -1
  308. package/dist/runtime/query/context-cache.js +3 -6
  309. package/dist/runtime/query/context-cache.js.map +1 -1
  310. package/dist/runtime/query/context.d.ts +8 -8
  311. package/dist/runtime/query/context.d.ts.map +1 -1
  312. package/dist/runtime/query/context.js +4 -4
  313. package/dist/runtime/query/context.js.map +1 -1
  314. package/dist/runtime/query/events.d.ts +4 -4
  315. package/dist/runtime/query/events.d.ts.map +1 -1
  316. package/dist/runtime/query/events.js +4 -2
  317. package/dist/runtime/query/events.js.map +1 -1
  318. package/dist/runtime/query/executor.d.ts +8 -8
  319. package/dist/runtime/query/executor.d.ts.map +1 -1
  320. package/dist/runtime/query/executor.js +6 -6
  321. package/dist/runtime/query/executor.js.map +1 -1
  322. package/dist/runtime/query/guard.d.ts +1 -1
  323. package/dist/runtime/query/guard.d.ts.map +1 -1
  324. package/dist/runtime/query/guard.js +1 -1
  325. package/dist/runtime/query/guard.js.map +1 -1
  326. package/dist/runtime/query/index.d.ts +9 -9
  327. package/dist/runtime/query/index.d.ts.map +1 -1
  328. package/dist/runtime/query/index.js +15 -9
  329. package/dist/runtime/query/index.js.map +1 -1
  330. package/dist/runtime/query/iteration/index.d.ts +15 -15
  331. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  332. package/dist/runtime/query/iteration/index.js +47 -49
  333. package/dist/runtime/query/iteration/index.js.map +1 -1
  334. package/dist/runtime/query/iteration/phases/checkpoint.d.ts +2 -2
  335. package/dist/runtime/query/iteration/phases/checkpoint.d.ts.map +1 -1
  336. package/dist/runtime/query/iteration/phases/checkpoint.js +5 -5
  337. package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
  338. package/dist/runtime/query/iteration/phases/context.d.ts +16 -16
  339. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  340. package/dist/runtime/query/iteration/phases/context.js +19 -19
  341. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  342. package/dist/runtime/query/iteration/phases/index.d.ts +6 -6
  343. package/dist/runtime/query/iteration/phases/index.d.ts.map +1 -1
  344. package/dist/runtime/query/iteration/phases/index.js +4 -4
  345. package/dist/runtime/query/iteration/phases/index.js.map +1 -1
  346. package/dist/runtime/query/iteration/phases/plan.d.ts +2 -2
  347. package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
  348. package/dist/runtime/query/iteration/phases/plan.js +6 -6
  349. package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
  350. package/dist/runtime/query/iteration/phases/tool-review.d.ts +4 -4
  351. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  352. package/dist/runtime/query/iteration/phases/tool-review.js +40 -41
  353. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  354. package/dist/runtime/query/prompt.d.ts +2 -2
  355. package/dist/runtime/query/prompt.d.ts.map +1 -1
  356. package/dist/runtime/query/prompt.js +2 -2
  357. package/dist/runtime/query/prompt.js.map +1 -1
  358. package/dist/runtime/query/result.d.ts +3 -3
  359. package/dist/runtime/query/result.d.ts.map +1 -1
  360. package/dist/runtime/query/result.js +1 -1
  361. package/dist/runtime/query/result.js.map +1 -1
  362. package/dist/runtime/query/tooling.d.ts +3 -3
  363. package/dist/runtime/query/tooling.d.ts.map +1 -1
  364. package/dist/runtime/query/tooling.js.map +1 -1
  365. package/dist/skills/loader.d.ts.map +1 -1
  366. package/dist/skills/loader.js +11 -12
  367. package/dist/skills/loader.js.map +1 -1
  368. package/dist/skills/registry.d.ts.map +1 -1
  369. package/dist/skills/registry.js +2 -4
  370. package/dist/skills/registry.js.map +1 -1
  371. package/dist/store/InMemoryStore.d.ts +1 -1
  372. package/dist/store/InMemoryStore.d.ts.map +1 -1
  373. package/dist/store/InMemoryStore.js.map +1 -1
  374. package/dist/store/activity/memory.d.ts +1 -1
  375. package/dist/store/activity/memory.d.ts.map +1 -1
  376. package/dist/store/activity/memory.js +1 -2
  377. package/dist/store/activity/memory.js.map +1 -1
  378. package/dist/store/conversation/memory.d.ts +2 -2
  379. package/dist/store/conversation/memory.d.ts.map +1 -1
  380. package/dist/store/conversation/memory.js +4 -6
  381. package/dist/store/conversation/memory.js.map +1 -1
  382. package/dist/store/run/disk.d.ts +1 -1
  383. package/dist/store/run/disk.d.ts.map +1 -1
  384. package/dist/store/run/disk.js +7 -6
  385. package/dist/store/run/disk.js.map +1 -1
  386. package/dist/store/task/disk.d.ts +2 -2
  387. package/dist/store/task/disk.d.ts.map +1 -1
  388. package/dist/store/task/disk.js +8 -6
  389. package/dist/store/task/disk.js.map +1 -1
  390. package/dist/store/task/memory.d.ts +2 -2
  391. package/dist/store/task/memory.d.ts.map +1 -1
  392. package/dist/store/task/memory.js +4 -4
  393. package/dist/store/task/memory.js.map +1 -1
  394. package/dist/telemetry/attributes.d.ts +1 -28
  395. package/dist/telemetry/attributes.d.ts.map +1 -1
  396. package/dist/telemetry/attributes.js +1 -28
  397. package/dist/telemetry/attributes.js.map +1 -1
  398. package/dist/telemetry/index.d.ts.map +1 -1
  399. package/dist/telemetry/index.js.map +1 -1
  400. package/dist/telemetry/metrics.d.ts.map +1 -1
  401. package/dist/telemetry/metrics.js.map +1 -1
  402. package/dist/tools/builtins/bash.d.ts +2 -2
  403. package/dist/tools/builtins/bash.d.ts.map +1 -1
  404. package/dist/tools/builtins/bash.js +7 -13
  405. package/dist/tools/builtins/bash.js.map +1 -1
  406. package/dist/tools/builtins/glob.d.ts.map +1 -1
  407. package/dist/tools/builtins/glob.js +3 -3
  408. package/dist/tools/builtins/glob.js.map +1 -1
  409. package/dist/tools/builtins/index.d.ts +6 -6
  410. package/dist/tools/builtins/index.d.ts.map +1 -1
  411. package/dist/tools/builtins/index.js +10 -10
  412. package/dist/tools/builtins/index.js.map +1 -1
  413. package/dist/tools/builtins/read-file.d.ts +1 -1
  414. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  415. package/dist/tools/builtins/read-file.js +6 -11
  416. package/dist/tools/builtins/read-file.js.map +1 -1
  417. package/dist/tools/builtins/search-tools.d.ts.map +1 -1
  418. package/dist/tools/builtins/search-tools.js +10 -12
  419. package/dist/tools/builtins/search-tools.js.map +1 -1
  420. package/dist/tools/builtins/write-file.js +2 -2
  421. package/dist/tools/builtins/write-file.js.map +1 -1
  422. package/dist/tools/coordinator/index.d.ts +1 -1
  423. package/dist/tools/coordinator/index.d.ts.map +1 -1
  424. package/dist/tools/coordinator/index.js +36 -13
  425. package/dist/tools/coordinator/index.js.map +1 -1
  426. package/dist/tools/defineTool.d.ts +1 -1
  427. package/dist/tools/defineTool.d.ts.map +1 -1
  428. package/dist/tools/defineTool.js.map +1 -1
  429. package/dist/tools/task/create.d.ts +1 -1
  430. package/dist/tools/task/create.d.ts.map +1 -1
  431. package/dist/tools/task/create.js +12 -3
  432. package/dist/tools/task/create.js.map +1 -1
  433. package/dist/tools/task/index.d.ts +1 -1
  434. package/dist/tools/task/index.d.ts.map +1 -1
  435. package/dist/tools/task/index.js +1 -1
  436. package/dist/tools/task/index.js.map +1 -1
  437. package/dist/tools/task/list.d.ts +1 -1
  438. package/dist/tools/task/list.d.ts.map +1 -1
  439. package/dist/tools/task/list.js +1 -3
  440. package/dist/tools/task/list.js.map +1 -1
  441. package/dist/tools/task/update.d.ts.map +1 -1
  442. package/dist/tools/task/update.js +13 -4
  443. package/dist/tools/task/update.js.map +1 -1
  444. package/dist/types/a2a/index.d.ts.map +1 -1
  445. package/dist/types/a2a/index.js.map +1 -1
  446. package/dist/types/activity/index.d.ts.map +1 -1
  447. package/dist/types/activity/index.js +1 -1
  448. package/dist/types/activity/index.js.map +1 -1
  449. package/dist/types/agent/base.d.ts +2 -2
  450. package/dist/types/agent/base.d.ts.map +1 -1
  451. package/dist/types/agent/core.d.ts +1 -1
  452. package/dist/types/agent/core.d.ts.map +1 -1
  453. package/dist/types/agent/factory.d.ts +1 -1
  454. package/dist/types/agent/factory.d.ts.map +1 -1
  455. package/dist/types/agent/gateway.d.ts +1 -1
  456. package/dist/types/agent/gateway.d.ts.map +1 -1
  457. package/dist/types/agent/lifecycle-event.d.ts +9 -9
  458. package/dist/types/agent/lifecycle-event.d.ts.map +1 -1
  459. package/dist/types/agent/pipeline.d.ts.map +1 -1
  460. package/dist/types/agent/reactive.d.ts +2 -2
  461. package/dist/types/agent/reactive.d.ts.map +1 -1
  462. package/dist/types/agent/router.d.ts.map +1 -1
  463. package/dist/types/agent/supervisor.d.ts +1 -1
  464. package/dist/types/agent/supervisor.d.ts.map +1 -1
  465. package/dist/types/agent/task.d.ts +10 -10
  466. package/dist/types/agent/task.d.ts.map +1 -1
  467. package/dist/types/agent/task.js +3 -10
  468. package/dist/types/agent/task.js.map +1 -1
  469. package/dist/types/common/index.d.ts +1 -1
  470. package/dist/types/common/index.d.ts.map +1 -1
  471. package/dist/types/common/index.js +1 -7
  472. package/dist/types/common/index.js.map +1 -1
  473. package/dist/types/connector/core.d.ts.map +1 -1
  474. package/dist/types/connector/core.js.map +1 -1
  475. package/dist/types/connector/definition.d.ts +1 -1
  476. package/dist/types/connector/definition.d.ts.map +1 -1
  477. package/dist/types/connector/execution-context.d.ts +3 -3
  478. package/dist/types/connector/execution-context.d.ts.map +1 -1
  479. package/dist/types/connector/http.d.ts.map +1 -1
  480. package/dist/types/connector/mcp.d.ts +2 -2
  481. package/dist/types/connector/mcp.d.ts.map +1 -1
  482. package/dist/types/connector/scope.d.ts.map +1 -1
  483. package/dist/types/connector/scope.js.map +1 -1
  484. package/dist/types/connector/tenant.d.ts +2 -2
  485. package/dist/types/connector/tenant.d.ts.map +1 -1
  486. package/dist/types/connector/webhook.d.ts.map +1 -1
  487. package/dist/types/conversation/index.d.ts +1 -1
  488. package/dist/types/conversation/index.d.ts.map +1 -1
  489. package/dist/types/decision/index.d.ts.map +1 -1
  490. package/dist/types/decision/index.js +4 -2
  491. package/dist/types/decision/index.js.map +1 -1
  492. package/dist/types/execution/index.d.ts.map +1 -1
  493. package/dist/types/hitl/index.d.ts +3 -3
  494. package/dist/types/hitl/index.d.ts.map +1 -1
  495. package/dist/types/hitl/index.js.map +1 -1
  496. package/dist/types/message/index.d.ts.map +1 -1
  497. package/dist/types/message/index.js.map +1 -1
  498. package/dist/types/persona/index.d.ts.map +1 -1
  499. package/dist/types/plan/index.d.ts.map +1 -1
  500. package/dist/types/plan/index.js.map +1 -1
  501. package/dist/types/provider/chat.d.ts +1 -1
  502. package/dist/types/provider/chat.d.ts.map +1 -1
  503. package/dist/types/provider/config.d.ts.map +1 -1
  504. package/dist/types/provider/index.d.ts +1 -1
  505. package/dist/types/provider/index.d.ts.map +1 -1
  506. package/dist/types/provider/interface.d.ts +1 -1
  507. package/dist/types/provider/interface.d.ts.map +1 -1
  508. package/dist/types/provider/model.d.ts.map +1 -1
  509. package/dist/types/provider/stream.d.ts.map +1 -1
  510. package/dist/types/rag/chunking.d.ts.map +1 -1
  511. package/dist/types/rag/context.d.ts.map +1 -1
  512. package/dist/types/rag/embedding.d.ts.map +1 -1
  513. package/dist/types/rag/ingestion.d.ts.map +1 -1
  514. package/dist/types/rag/knowledge-base.d.ts +2 -2
  515. package/dist/types/rag/knowledge-base.d.ts.map +1 -1
  516. package/dist/types/rag/retrieval.d.ts +1 -1
  517. package/dist/types/rag/retrieval.d.ts.map +1 -1
  518. package/dist/types/rag/scope.d.ts.map +1 -1
  519. package/dist/types/rag/storage.d.ts +1 -1
  520. package/dist/types/rag/storage.d.ts.map +1 -1
  521. package/dist/types/rag/vector.d.ts.map +1 -1
  522. package/dist/types/run/config.d.ts +2 -2
  523. package/dist/types/run/config.d.ts.map +1 -1
  524. package/dist/types/run/events.d.ts +36 -36
  525. package/dist/types/run/events.d.ts.map +1 -1
  526. package/dist/types/run/metadata.d.ts +2 -2
  527. package/dist/types/run/metadata.d.ts.map +1 -1
  528. package/dist/types/run/state.d.ts +2 -2
  529. package/dist/types/run/state.d.ts.map +1 -1
  530. package/dist/types/skills/index.d.ts.map +1 -1
  531. package/dist/types/task/index.d.ts +1 -1
  532. package/dist/types/task/index.d.ts.map +1 -1
  533. package/dist/types/task/index.js.map +1 -1
  534. package/dist/types/telemetry/index.d.ts.map +1 -1
  535. package/dist/types/tool/index.d.ts +9 -9
  536. package/dist/types/tool/index.d.ts.map +1 -1
  537. package/dist/utils/abort.d.ts.map +1 -1
  538. package/dist/utils/abort.js +3 -3
  539. package/dist/utils/abort.js.map +1 -1
  540. package/dist/utils/conversation.d.ts +1 -1
  541. package/dist/utils/conversation.d.ts.map +1 -1
  542. package/dist/utils/conversation.js +2 -0
  543. package/dist/utils/conversation.js.map +1 -1
  544. package/dist/utils/cost.d.ts +3 -2
  545. package/dist/utils/cost.d.ts.map +1 -1
  546. package/dist/utils/cost.js +2 -6
  547. package/dist/utils/cost.js.map +1 -1
  548. package/dist/utils/error.js.map +1 -1
  549. package/dist/utils/hash.d.ts.map +1 -1
  550. package/dist/utils/hash.js.map +1 -1
  551. package/dist/utils/id.d.ts +1 -1
  552. package/dist/utils/id.d.ts.map +1 -1
  553. package/dist/utils/id.js +14 -6
  554. package/dist/utils/id.js.map +1 -1
  555. package/dist/utils/logger.d.ts.map +1 -1
  556. package/dist/utils/logger.js +6 -3
  557. package/dist/utils/logger.js.map +1 -1
  558. package/dist/utils/memoize.d.ts.map +1 -1
  559. package/dist/utils/memoize.js.map +1 -1
  560. package/dist/vault/InMemoryCredentialVault.d.ts +2 -2
  561. package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
  562. package/dist/vault/InMemoryCredentialVault.js.map +1 -1
  563. package/package.json +17 -2
  564. package/src/agents/AbstractAgent.ts +31 -44
  565. package/src/agents/PipelineAgent.ts +152 -157
  566. package/src/agents/ReactiveAgent.ts +89 -85
  567. package/src/agents/RouterAgent.ts +216 -228
  568. package/src/agents/SupervisorAgent.ts +43 -48
  569. package/src/agents/defineAgent.ts +53 -63
  570. package/src/bridge/a2a/agent-card.ts +57 -62
  571. package/src/bridge/a2a/index.ts +9 -9
  572. package/src/bridge/a2a/mapper.ts +53 -61
  573. package/src/bridge/a2a/message.ts +66 -71
  574. package/src/bridge/a2a/task.ts +77 -97
  575. package/src/bridge/mcp/connector/adapter.ts +116 -117
  576. package/src/bridge/sse/index.ts +2 -2
  577. package/src/bridge/sse/mapper.ts +52 -60
  578. package/src/bridge/tools/connector/adapter.ts +111 -116
  579. package/src/bridge/tools/connector/definitions.ts +105 -125
  580. package/src/bridge/tools/connector/index.ts +7 -7
  581. package/src/bridge/tools/connector/router.ts +51 -54
  582. package/src/config/runtime.ts +6 -6
  583. package/src/connector/BaseConnector.ts +65 -69
  584. package/src/connector/builtins/http.ts +175 -177
  585. package/src/connector/builtins/webhook.ts +134 -141
  586. package/src/connector/execution/factory.ts +43 -43
  587. package/src/connector/execution/hybrid.ts +193 -192
  588. package/src/connector/execution/remote.ts +121 -123
  589. package/src/connector/index.ts +13 -13
  590. package/src/connector/mcp/adapter.ts +100 -100
  591. package/src/connector/mcp/client.ts +229 -217
  592. package/src/connector/mcp/discovery.ts +53 -53
  593. package/src/connector/mcp/http-sse.ts +133 -132
  594. package/src/connector/mcp/index.ts +6 -6
  595. package/src/connector/mcp/server.ts +193 -191
  596. package/src/connector/mcp/stdio.ts +99 -97
  597. package/src/constants/a2a/index.ts +21 -0
  598. package/src/constants/agent/index.ts +17 -0
  599. package/src/constants/index.ts +8 -0
  600. package/src/constants/limits.ts +16 -0
  601. package/src/constants/mcp/index.ts +1 -0
  602. package/src/constants/provider/index.ts +23 -0
  603. package/src/constants/rag/index.ts +34 -0
  604. package/src/constants/telemetry/index.ts +34 -0
  605. package/src/constants/tools/index.ts +3 -0
  606. package/src/contracts/a2a.ts +111 -89
  607. package/src/contracts/api.ts +147 -147
  608. package/src/contracts/index.ts +34 -34
  609. package/src/contracts/schemas.ts +57 -47
  610. package/src/execution/base.ts +59 -62
  611. package/src/execution/local.ts +147 -148
  612. package/src/gateway/local.ts +89 -89
  613. package/src/index.ts +107 -100
  614. package/src/manager/agent/index.ts +1 -1
  615. package/src/manager/agent/lifecycle.ts +159 -184
  616. package/src/manager/connector/environment.ts +242 -234
  617. package/src/manager/connector/index.ts +2 -2
  618. package/src/manager/connector/lifecycle.ts +243 -230
  619. package/src/manager/connector/tenant.ts +279 -283
  620. package/src/manager/index.ts +2 -2
  621. package/src/manager/plan/lifecycle.ts +226 -223
  622. package/src/manager/run/persistence.ts +166 -165
  623. package/src/persona/assembler.ts +52 -64
  624. package/src/provider/bedrock/client.ts +203 -234
  625. package/src/provider/factory.ts +139 -158
  626. package/src/provider/openrouter/client.ts +368 -374
  627. package/src/provider/telemetry/setup.ts +100 -110
  628. package/src/rag/chunking.ts +131 -141
  629. package/src/rag/context-assembler.ts +39 -43
  630. package/src/rag/embedding.ts +57 -56
  631. package/src/rag/index.ts +25 -25
  632. package/src/rag/ingestion.ts +60 -60
  633. package/src/rag/knowledge-base.ts +54 -54
  634. package/src/rag/rag-tool.ts +54 -51
  635. package/src/rag/retriever.ts +170 -177
  636. package/src/rag/vector-store.ts +66 -63
  637. package/src/registry/ManagedRegistry.ts +41 -30
  638. package/src/registry/Registry.ts +25 -25
  639. package/src/registry/agent/definitions.ts +42 -34
  640. package/src/registry/agent/index.ts +1 -1
  641. package/src/registry/connector/definitions.ts +36 -26
  642. package/src/registry/connector/scoped.ts +120 -120
  643. package/src/registry/tool/execute.ts +130 -151
  644. package/src/run/LimitChecker.ts +61 -61
  645. package/src/run/reporter.ts +90 -96
  646. package/src/runtime/decision/fallback.ts +78 -81
  647. package/src/runtime/decision/parser.ts +150 -146
  648. package/src/runtime/query/checkpoint.ts +70 -66
  649. package/src/runtime/query/context-cache.ts +58 -62
  650. package/src/runtime/query/context.ts +82 -82
  651. package/src/runtime/query/events.ts +129 -127
  652. package/src/runtime/query/executor.ts +59 -67
  653. package/src/runtime/query/guard.ts +52 -55
  654. package/src/runtime/query/index.ts +290 -292
  655. package/src/runtime/query/iteration/index.ts +284 -310
  656. package/src/runtime/query/iteration/phases/checkpoint.ts +12 -20
  657. package/src/runtime/query/iteration/phases/context.ts +64 -73
  658. package/src/runtime/query/iteration/phases/index.ts +6 -6
  659. package/src/runtime/query/iteration/phases/plan.ts +14 -21
  660. package/src/runtime/query/iteration/phases/tool-review.ts +82 -91
  661. package/src/runtime/query/prompt.ts +49 -50
  662. package/src/runtime/query/result.ts +72 -72
  663. package/src/runtime/query/tooling.ts +29 -29
  664. package/src/skills/loader.ts +127 -123
  665. package/src/skills/registry.ts +91 -85
  666. package/src/store/InMemoryStore.ts +48 -51
  667. package/src/store/activity/memory.ts +217 -209
  668. package/src/store/conversation/memory.ts +88 -90
  669. package/src/store/run/disk.ts +204 -205
  670. package/src/store/task/disk.ts +311 -307
  671. package/src/store/task/memory.ts +173 -171
  672. package/src/telemetry/attributes.ts +5 -38
  673. package/src/telemetry/index.ts +5 -5
  674. package/src/telemetry/metrics.ts +53 -54
  675. package/src/tools/builtins/bash.ts +44 -55
  676. package/src/tools/builtins/glob.ts +75 -79
  677. package/src/tools/builtins/index.ts +12 -12
  678. package/src/tools/builtins/read-file.ts +37 -42
  679. package/src/tools/builtins/search-tools.ts +17 -19
  680. package/src/tools/builtins/write-file.ts +23 -23
  681. package/src/tools/coordinator/index.ts +227 -189
  682. package/src/tools/defineTool.ts +42 -36
  683. package/src/tools/task/create.ts +45 -38
  684. package/src/tools/task/index.ts +8 -11
  685. package/src/tools/task/list.ts +45 -48
  686. package/src/tools/task/update.ts +78 -60
  687. package/src/types/a2a/index.ts +143 -143
  688. package/src/types/activity/index.ts +40 -32
  689. package/src/types/agent/base.ts +41 -41
  690. package/src/types/agent/core.ts +13 -17
  691. package/src/types/agent/factory.ts +27 -27
  692. package/src/types/agent/gateway.ts +18 -18
  693. package/src/types/agent/lifecycle-event.ts +14 -16
  694. package/src/types/agent/pipeline.ts +23 -23
  695. package/src/types/agent/reactive.ts +9 -9
  696. package/src/types/agent/router.ts +17 -17
  697. package/src/types/agent/supervisor.ts +14 -14
  698. package/src/types/agent/task.ts +54 -63
  699. package/src/types/common/index.ts +24 -39
  700. package/src/types/connector/core.ts +22 -22
  701. package/src/types/connector/definition.ts +59 -45
  702. package/src/types/connector/execution-context.ts +37 -30
  703. package/src/types/connector/http.ts +12 -12
  704. package/src/types/connector/mcp.ts +123 -115
  705. package/src/types/connector/scope.ts +19 -19
  706. package/src/types/connector/tenant.ts +28 -23
  707. package/src/types/connector/webhook.ts +10 -10
  708. package/src/types/conversation/index.ts +3 -3
  709. package/src/types/decision/index.ts +18 -16
  710. package/src/types/execution/index.ts +21 -21
  711. package/src/types/hitl/index.ts +80 -69
  712. package/src/types/message/index.ts +26 -29
  713. package/src/types/persona/index.ts +31 -31
  714. package/src/types/plan/index.ts +38 -38
  715. package/src/types/provider/chat.ts +47 -44
  716. package/src/types/provider/config.ts +26 -23
  717. package/src/types/provider/index.ts +16 -10
  718. package/src/types/provider/interface.ts +7 -7
  719. package/src/types/provider/model.ts +8 -8
  720. package/src/types/provider/stream.ts +16 -16
  721. package/src/types/rag/chunking.ts +7 -7
  722. package/src/types/rag/context.ts +14 -14
  723. package/src/types/rag/embedding.ts +10 -10
  724. package/src/types/rag/ingestion.ts +11 -11
  725. package/src/types/rag/knowledge-base.ts +16 -16
  726. package/src/types/rag/retrieval.ts +19 -19
  727. package/src/types/rag/scope.ts +8 -8
  728. package/src/types/rag/storage.ts +18 -18
  729. package/src/types/rag/vector.ts +13 -13
  730. package/src/types/run/config.ts +30 -30
  731. package/src/types/run/events.ts +113 -115
  732. package/src/types/run/metadata.ts +29 -29
  733. package/src/types/run/state.ts +20 -20
  734. package/src/types/skills/index.ts +13 -13
  735. package/src/types/task/index.ts +55 -59
  736. package/src/types/telemetry/index.ts +6 -6
  737. package/src/types/tool/index.ts +43 -43
  738. package/src/utils/abort.ts +13 -15
  739. package/src/utils/conversation.ts +14 -13
  740. package/src/utils/cost.ts +31 -35
  741. package/src/utils/error.ts +1 -1
  742. package/src/utils/hash.ts +8 -8
  743. package/src/utils/id.ts +70 -41
  744. package/src/utils/logger.ts +41 -50
  745. package/src/utils/memoize.ts +14 -12
  746. package/src/vault/InMemoryCredentialVault.ts +50 -54
  747. package/dist/manager/session/lifecycle.d.ts +0 -3
  748. package/dist/manager/session/lifecycle.d.ts.map +0 -1
  749. package/dist/manager/session/lifecycle.js +0 -3
  750. package/dist/manager/session/lifecycle.js.map +0 -1
  751. package/dist/session/LimitChecker.d.ts +0 -3
  752. package/dist/session/LimitChecker.d.ts.map +0 -1
  753. package/dist/session/LimitChecker.js +0 -3
  754. package/dist/session/LimitChecker.js.map +0 -1
  755. package/dist/session/index.d.ts +0 -3
  756. package/dist/session/index.d.ts.map +0 -1
  757. package/dist/session/index.js +0 -3
  758. package/dist/session/index.js.map +0 -1
  759. package/dist/session/reporter.d.ts +0 -3
  760. package/dist/session/reporter.d.ts.map +0 -1
  761. package/dist/session/reporter.js +0 -3
  762. package/dist/session/reporter.js.map +0 -1
  763. package/dist/store/session/disk.d.ts +0 -3
  764. package/dist/store/session/disk.d.ts.map +0 -1
  765. package/dist/store/session/disk.js +0 -3
  766. package/dist/store/session/disk.js.map +0 -1
  767. package/dist/types/session/config.d.ts +0 -2
  768. package/dist/types/session/config.d.ts.map +0 -1
  769. package/dist/types/session/config.js +0 -2
  770. package/dist/types/session/config.js.map +0 -1
  771. package/dist/types/session/events.d.ts +0 -2
  772. package/dist/types/session/events.d.ts.map +0 -1
  773. package/dist/types/session/events.js +0 -2
  774. package/dist/types/session/events.js.map +0 -1
  775. package/dist/types/session/index.d.ts +0 -4
  776. package/dist/types/session/index.d.ts.map +0 -1
  777. package/dist/types/session/index.js +0 -4
  778. package/dist/types/session/index.js.map +0 -1
  779. package/dist/types/session/state.d.ts +0 -2
  780. package/dist/types/session/state.d.ts.map +0 -1
  781. package/dist/types/session/state.js +0 -2
  782. package/dist/types/session/state.js.map +0 -1
@@ -1,396 +1,390 @@
1
+ import { SpanStatusCode } from '@opentelemetry/api'
2
+ import { OPENROUTER_BASE_URL } from '../../constants/provider/index.js'
3
+ import { GENAI, NAMZU, chatSpanName } from '../../telemetry/attributes.js'
4
+ import type { TokenUsage } from '../../types/common/index.js'
1
5
  import type {
2
- ChatCompletionParams,
3
- ChatCompletionResponse,
4
- LLMProvider,
5
- ModelInfo,
6
- StreamChunk,
7
- ToolChoice,
6
+ ChatCompletionParams,
7
+ ChatCompletionResponse,
8
+ LLMProvider,
9
+ ModelInfo,
10
+ StreamChunk,
11
+ ToolChoice,
8
12
  } from '../../types/provider/index.js'
9
13
  import type { OpenRouterConfig } from '../../types/provider/index.js'
10
- import type { TokenUsage } from '../../types/common/index.js'
11
- import { getRootLogger } from '../../utils/logger.js'
12
14
  import { toErrorMessage } from '../../utils/error.js'
13
- import { SpanStatusCode } from '@opentelemetry/api'
15
+ import { getRootLogger } from '../../utils/logger.js'
14
16
  import { getTracer } from '../telemetry/setup.js'
15
- import {
16
- GENAI,
17
- NAMZU,
18
- chatSpanName,
19
- } from '../../telemetry/attributes.js'
20
17
 
21
18
  const logger = getRootLogger().child({ component: 'OpenRouterProvider' })
22
19
 
23
- const OPENROUTER_BASE_URL = process.env.OPENROUTER_BASE_URL ?? 'https://openrouter.ai/api/v1'
24
-
25
20
  interface RawUsage {
26
- prompt_tokens: number
27
- completion_tokens: number
28
- total_tokens: number
29
- prompt_tokens_details?: {
30
- cached_tokens?: number
31
- }
32
- cache_discount?: number
33
- cache_read_input_tokens?: number
34
- cache_creation_input_tokens?: number
21
+ prompt_tokens: number
22
+ completion_tokens: number
23
+ total_tokens: number
24
+ prompt_tokens_details?: {
25
+ cached_tokens?: number
26
+ }
27
+ cache_discount?: number
28
+ cache_read_input_tokens?: number
29
+ cache_creation_input_tokens?: number
35
30
  }
36
31
 
37
32
  function parseUsage(raw?: RawUsage): TokenUsage {
38
- if (!raw) {
39
- return { promptTokens: 0, completionTokens: 0, totalTokens: 0, cachedTokens: 0, cacheWriteTokens: 0 }
40
- }
41
- return {
42
- promptTokens: raw.prompt_tokens,
43
- completionTokens: raw.completion_tokens,
44
- totalTokens: raw.total_tokens,
45
- cachedTokens: raw.prompt_tokens_details?.cached_tokens ?? raw.cache_read_input_tokens ?? 0,
46
- cacheWriteTokens: raw.cache_creation_input_tokens ?? 0,
47
- }
33
+ if (!raw) {
34
+ return {
35
+ promptTokens: 0,
36
+ completionTokens: 0,
37
+ totalTokens: 0,
38
+ cachedTokens: 0,
39
+ cacheWriteTokens: 0,
40
+ }
41
+ }
42
+ return {
43
+ promptTokens: raw.prompt_tokens,
44
+ completionTokens: raw.completion_tokens,
45
+ totalTokens: raw.total_tokens,
46
+ cachedTokens: raw.prompt_tokens_details?.cached_tokens ?? raw.cache_read_input_tokens ?? 0,
47
+ cacheWriteTokens: raw.cache_creation_input_tokens ?? 0,
48
+ }
48
49
  }
49
50
 
50
51
  function parseCacheDiscount(raw?: RawUsage): number {
51
- return raw?.cache_discount ?? 0
52
+ return raw?.cache_discount ?? 0
52
53
  }
53
54
 
54
55
  function formatToolChoice(tc: ToolChoice): unknown {
55
- if (typeof tc === 'string') return tc
56
- return tc
56
+ if (typeof tc === 'string') return tc
57
+ return tc
57
58
  }
58
59
 
59
60
  export class OpenRouterProvider implements LLMProvider {
60
- readonly id = 'openrouter'
61
- readonly name = 'OpenRouter'
62
-
63
- private config: OpenRouterConfig
64
- private baseUrl: string
65
-
66
- constructor(config: OpenRouterConfig) {
67
- if (!config.apiKey) {
68
- throw new Error('OpenRouter API key is required. Set OPENROUTER_API_KEY env variable.')
69
- }
70
- this.config = config
71
- this.baseUrl = config.baseUrl ?? OPENROUTER_BASE_URL
72
- }
73
-
74
- private getHeaders(): Record<string, string> {
75
- const headers: Record<string, string> = {
76
- 'Authorization': `Bearer ${this.config.apiKey}`,
77
- 'Content-Type': 'application/json',
78
- }
79
- if (this.config.siteUrl) {
80
- headers['HTTP-Referer'] = this.config.siteUrl
81
- }
82
- if (this.config.siteName) {
83
- headers['X-Title'] = this.config.siteName
84
- }
85
- return headers
86
- }
87
-
88
- private formatMessages(messages: ChatCompletionParams['messages']): unknown[] {
89
- return messages.map((msg) => {
90
- if (msg.role === 'tool') {
91
- return {
92
- role: 'tool',
93
- content: msg.content,
94
- tool_call_id: (msg as { toolCallId?: string }).toolCallId,
95
- }
96
- }
97
- if (msg.role === 'assistant' && 'toolCalls' in msg && msg.toolCalls) {
98
- return {
99
- role: 'assistant',
100
- content: msg.content,
101
- tool_calls: msg.toolCalls.map((tc) => ({
102
- id: tc.id,
103
- type: tc.type,
104
- function: tc.function,
105
- })),
106
- }
107
- }
108
- return { role: msg.role, content: msg.content }
109
- })
110
- }
111
-
112
- private buildRequestBody(params: ChatCompletionParams, stream: boolean): Record<string, unknown> {
113
- const body: Record<string, unknown> = {
114
- model: params.model,
115
- messages: this.formatMessages(params.messages),
116
- stream,
117
- }
118
-
119
- if (params.tools && params.tools.length > 0) {
120
- body.tools = params.tools
121
- }
122
- if (params.toolChoice !== undefined) {
123
- body.tool_choice = formatToolChoice(params.toolChoice)
124
- }
125
- if (params.parallelToolCalls !== undefined) {
126
- body.parallel_tool_calls = params.parallelToolCalls
127
- }
128
-
129
- if (params.temperature !== undefined) body.temperature = params.temperature
130
- if (params.maxTokens !== undefined) body.max_tokens = params.maxTokens
131
- if (params.topP !== undefined) body.top_p = params.topP
132
- if (params.topK !== undefined) body.top_k = params.topK
133
- if (params.frequencyPenalty !== undefined) body.frequency_penalty = params.frequencyPenalty
134
- if (params.presencePenalty !== undefined) body.presence_penalty = params.presencePenalty
135
- if (params.repetitionPenalty !== undefined) body.repetition_penalty = params.repetitionPenalty
136
- if (params.stop) body.stop = params.stop
137
-
138
- if (params.cacheControl) {
139
- body.cache_control = params.cacheControl
140
- }
141
-
142
- if (params.responseFormat) {
143
- body.response_format = params.responseFormat
144
- }
145
-
146
- return body
147
- }
148
-
149
- async chat(params: ChatCompletionParams): Promise<ChatCompletionResponse> {
150
- const tracer = getTracer()
151
-
152
- return tracer.startActiveSpan(
153
- chatSpanName(params.model),
154
- async (span) => {
155
- span.setAttributes({
156
- [GENAI.OPERATION_NAME]: 'chat',
157
- [GENAI.SYSTEM]: 'openrouter',
158
- [GENAI.REQUEST_MODEL]: params.model,
159
- })
160
- if (params.temperature !== undefined) {
161
- span.setAttribute(GENAI.REQUEST_TEMPERATURE, params.temperature)
162
- }
163
- if (params.maxTokens !== undefined) {
164
- span.setAttribute(GENAI.REQUEST_MAX_TOKENS, params.maxTokens)
165
- }
166
-
167
- try {
168
- const body = this.buildRequestBody(params, false)
169
-
170
- logger.debug('Sending chat completion request', { model: params.model })
171
-
172
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
173
- method: 'POST',
174
- headers: this.getHeaders(),
175
- body: JSON.stringify(body),
176
- signal: AbortSignal.timeout(this.config.timeout ?? 120_000),
177
- })
178
-
179
- if (!response.ok) {
180
- const errorBody = await response.text()
181
- logger.error('OpenRouter API error', {
182
- status: response.status,
183
- body: errorBody,
184
- })
185
- throw new Error(
186
- `OpenRouter API error (${response.status}): ${errorBody}`,
187
- )
188
- }
189
-
190
- const data = (await response.json()) as {
191
- id: string
192
- model: string
193
- choices: Array<{
194
- message: {
195
- role: string
196
- content: string | null
197
- tool_calls?: Array<{
198
- id: string
199
- type: string
200
- function: { name: string; arguments: string }
201
- }>
202
- }
203
- finish_reason: string
204
- }>
205
- usage?: RawUsage
206
- }
207
-
208
- const choice = data.choices[0]
209
- if (!choice) {
210
- throw new Error('OpenRouter returned empty choices')
211
- }
212
-
213
- const usage = parseUsage(data.usage)
214
- const cacheDiscount = parseCacheDiscount(data.usage)
215
-
216
- const result: ChatCompletionResponse = {
217
- id: data.id,
218
- model: data.model,
219
- message: {
220
- role: 'assistant',
221
- content: choice.message.content,
222
- toolCalls: choice.message.tool_calls?.map((tc) => ({
223
- id: tc.id,
224
- type: 'function' as const,
225
- function: tc.function,
226
- })),
227
- },
228
- finishReason: choice.finish_reason as ChatCompletionResponse['finishReason'],
229
- usage,
230
- }
231
-
232
- span.setAttributes({
233
- [GENAI.RESPONSE_ID]: data.id,
234
- [GENAI.RESPONSE_MODEL]: data.model,
235
- [GENAI.RESPONSE_FINISH_REASONS]: choice.finish_reason,
236
- [GENAI.USAGE_INPUT_TOKENS]: usage.promptTokens,
237
- [GENAI.USAGE_OUTPUT_TOKENS]: usage.completionTokens,
238
- [NAMZU.CACHE_READ_TOKENS]: usage.cachedTokens,
239
- [NAMZU.CACHE_WRITE_TOKENS]: usage.cacheWriteTokens,
240
- [NAMZU.CACHE_DISCOUNT]: cacheDiscount,
241
- })
242
- span.setStatus({ code: SpanStatusCode.OK })
243
-
244
- return result
245
- } catch (err) {
246
- span.setStatus({
247
- code: SpanStatusCode.ERROR,
248
- message: toErrorMessage(err),
249
- })
250
- span.recordException(err instanceof Error ? err : new Error(String(err)))
251
- throw err
252
- } finally {
253
- span.end()
254
- }
255
- },
256
- )
257
- }
258
-
259
- async *chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk> {
260
- const body = this.buildRequestBody(params, true)
261
-
262
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
263
- method: 'POST',
264
- headers: this.getHeaders(),
265
- body: JSON.stringify(body),
266
- signal: AbortSignal.timeout(this.config.timeout ?? 120_000),
267
- })
268
-
269
- if (!response.ok) {
270
- const errorBody = await response.text()
271
- throw new Error(
272
- `OpenRouter API error (${response.status}): ${errorBody}`,
273
- )
274
- }
275
-
276
- if (!response.body) {
277
- throw new Error('OpenRouter returned no stream body')
278
- }
279
-
280
- const reader = response.body.getReader()
281
- const decoder = new TextDecoder()
282
- let buffer = ''
283
-
284
- try {
285
- while (true) {
286
- const { done, value } = await reader.read()
287
- if (done) break
288
-
289
- buffer += decoder.decode(value, { stream: true })
290
- const lines = buffer.split('\n')
291
- buffer = lines.pop() ?? ''
292
-
293
- for (const line of lines) {
294
- const trimmed = line.trim()
295
- if (!trimmed || !trimmed.startsWith('data: ')) continue
296
- const data = trimmed.slice(6)
297
- if (data === '[DONE]') return
298
-
299
- try {
300
- const parsed = JSON.parse(data) as {
301
- id: string
302
- choices: Array<{
303
- delta: {
304
- content?: string
305
- tool_calls?: Array<{
306
- index: number
307
- id?: string
308
- type?: string
309
- function?: { name?: string; arguments?: string }
310
- }>
311
- }
312
- finish_reason?: string
313
- }>
314
- usage?: RawUsage
315
- }
316
-
317
- const choice = parsed.choices[0]
318
- if (!choice) continue
319
-
320
- yield {
321
- id: parsed.id,
322
- delta: {
323
- content: choice.delta.content,
324
- toolCalls: choice.delta.tool_calls?.map((tc) => ({
325
- index: tc.index,
326
- id: tc.id,
327
- type: tc.type as 'function' | undefined,
328
- function: tc.function,
329
- })),
330
- },
331
- finishReason: choice.finish_reason as StreamChunk['finishReason'],
332
- usage: parsed.usage ? parseUsage(parsed.usage) : undefined,
333
- }
334
- } catch (parseErr) {
335
- logger.warn('Failed to parse streaming chunk', {
336
- error: toErrorMessage(parseErr),
337
- data: data.slice(0, 200),
338
- })
339
- yield {
340
- id: '',
341
- delta: { content: undefined },
342
- finishReason: undefined,
343
- usage: undefined,
344
- error: `Stream parse error: ${toErrorMessage(parseErr)}`,
345
- }
346
- }
347
- }
348
- }
349
- } finally {
350
- reader.releaseLock()
351
- }
352
- }
353
-
354
- async listModels(): Promise<ModelInfo[]> {
355
- const response = await fetch(`${this.baseUrl}/models`, {
356
- headers: this.getHeaders(),
357
- })
358
-
359
- if (!response.ok) {
360
- throw new Error(`Failed to list models: ${response.status}`)
361
- }
362
-
363
- const data = (await response.json()) as {
364
- data: Array<{
365
- id: string
366
- name: string
367
- context_length: number
368
- top_provider?: { max_completion_tokens?: number }
369
- pricing?: { prompt: string; completion: string }
370
- }>
371
- }
372
-
373
- return data.data.map((m) => ({
374
- id: m.id,
375
- name: m.name,
376
- contextWindow: m.context_length,
377
- maxOutputTokens: m.top_provider?.max_completion_tokens ?? 4096,
378
- inputPrice: Number.parseFloat(m.pricing?.prompt ?? '0') * 1_000_000,
379
- outputPrice: Number.parseFloat(m.pricing?.completion ?? '0') * 1_000_000,
380
- supportsToolUse: true,
381
- supportsStreaming: true,
382
- }))
383
- }
384
-
385
- async healthCheck(): Promise<boolean> {
386
- try {
387
- const response = await fetch(`${this.baseUrl}/models`, {
388
- headers: this.getHeaders(),
389
- signal: AbortSignal.timeout(5000),
390
- })
391
- return response.ok
392
- } catch {
393
- return false
394
- }
395
- }
61
+ readonly id = 'openrouter'
62
+ readonly name = 'OpenRouter'
63
+
64
+ private config: OpenRouterConfig
65
+ private baseUrl: string
66
+
67
+ constructor(config: OpenRouterConfig) {
68
+ if (!config.apiKey) {
69
+ throw new Error('OpenRouter API key is required. Set OPENROUTER_API_KEY env variable.')
70
+ }
71
+ this.config = config
72
+ this.baseUrl = config.baseUrl ?? OPENROUTER_BASE_URL
73
+ }
74
+
75
+ private getHeaders(): Record<string, string> {
76
+ const headers: Record<string, string> = {
77
+ Authorization: `Bearer ${this.config.apiKey}`,
78
+ 'Content-Type': 'application/json',
79
+ }
80
+ if (this.config.siteUrl) {
81
+ headers['HTTP-Referer'] = this.config.siteUrl
82
+ }
83
+ if (this.config.siteName) {
84
+ headers['X-Title'] = this.config.siteName
85
+ }
86
+ return headers
87
+ }
88
+
89
+ private formatMessages(messages: ChatCompletionParams['messages']): unknown[] {
90
+ return messages.map((msg) => {
91
+ if (msg.role === 'tool') {
92
+ return {
93
+ role: 'tool',
94
+ content: msg.content,
95
+ tool_call_id: (msg as { toolCallId?: string }).toolCallId,
96
+ }
97
+ }
98
+ if (msg.role === 'assistant' && 'toolCalls' in msg && msg.toolCalls) {
99
+ return {
100
+ role: 'assistant',
101
+ content: msg.content,
102
+ tool_calls: msg.toolCalls.map((tc) => ({
103
+ id: tc.id,
104
+ type: tc.type,
105
+ function: tc.function,
106
+ })),
107
+ }
108
+ }
109
+ return { role: msg.role, content: msg.content }
110
+ })
111
+ }
112
+
113
+ private buildRequestBody(params: ChatCompletionParams, stream: boolean): Record<string, unknown> {
114
+ const body: Record<string, unknown> = {
115
+ model: params.model,
116
+ messages: this.formatMessages(params.messages),
117
+ stream,
118
+ }
119
+
120
+ if (params.tools && params.tools.length > 0) {
121
+ body.tools = params.tools
122
+ }
123
+ if (params.toolChoice !== undefined) {
124
+ body.tool_choice = formatToolChoice(params.toolChoice)
125
+ }
126
+ if (params.parallelToolCalls !== undefined) {
127
+ body.parallel_tool_calls = params.parallelToolCalls
128
+ }
129
+
130
+ if (params.temperature !== undefined) body.temperature = params.temperature
131
+ if (params.maxTokens !== undefined) body.max_tokens = params.maxTokens
132
+ if (params.topP !== undefined) body.top_p = params.topP
133
+ if (params.topK !== undefined) body.top_k = params.topK
134
+ if (params.frequencyPenalty !== undefined) body.frequency_penalty = params.frequencyPenalty
135
+ if (params.presencePenalty !== undefined) body.presence_penalty = params.presencePenalty
136
+ if (params.repetitionPenalty !== undefined) body.repetition_penalty = params.repetitionPenalty
137
+ if (params.stop) body.stop = params.stop
138
+
139
+ if (params.cacheControl) {
140
+ body.cache_control = params.cacheControl
141
+ }
142
+
143
+ if (params.responseFormat) {
144
+ body.response_format = params.responseFormat
145
+ }
146
+
147
+ return body
148
+ }
149
+
150
+ async chat(params: ChatCompletionParams): Promise<ChatCompletionResponse> {
151
+ const tracer = getTracer()
152
+
153
+ return tracer.startActiveSpan(chatSpanName(params.model), async (span) => {
154
+ span.setAttributes({
155
+ [GENAI.OPERATION_NAME]: 'chat',
156
+ [GENAI.SYSTEM]: 'openrouter',
157
+ [GENAI.REQUEST_MODEL]: params.model,
158
+ })
159
+ if (params.temperature !== undefined) {
160
+ span.setAttribute(GENAI.REQUEST_TEMPERATURE, params.temperature)
161
+ }
162
+ if (params.maxTokens !== undefined) {
163
+ span.setAttribute(GENAI.REQUEST_MAX_TOKENS, params.maxTokens)
164
+ }
165
+
166
+ try {
167
+ const body = this.buildRequestBody(params, false)
168
+
169
+ logger.debug('Sending chat completion request', { model: params.model })
170
+
171
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
172
+ method: 'POST',
173
+ headers: this.getHeaders(),
174
+ body: JSON.stringify(body),
175
+ signal: AbortSignal.timeout(this.config.timeout ?? 120_000),
176
+ })
177
+
178
+ if (!response.ok) {
179
+ const errorBody = await response.text()
180
+ logger.error('OpenRouter API error', {
181
+ status: response.status,
182
+ body: errorBody,
183
+ })
184
+ throw new Error(`OpenRouter API error (${response.status}): ${errorBody}`)
185
+ }
186
+
187
+ const data = (await response.json()) as {
188
+ id: string
189
+ model: string
190
+ choices: Array<{
191
+ message: {
192
+ role: string
193
+ content: string | null
194
+ tool_calls?: Array<{
195
+ id: string
196
+ type: string
197
+ function: { name: string; arguments: string }
198
+ }>
199
+ }
200
+ finish_reason: string
201
+ }>
202
+ usage?: RawUsage
203
+ }
204
+
205
+ const choice = data.choices[0]
206
+ if (!choice) {
207
+ throw new Error('OpenRouter returned empty choices')
208
+ }
209
+
210
+ const usage = parseUsage(data.usage)
211
+ const cacheDiscount = parseCacheDiscount(data.usage)
212
+
213
+ const result: ChatCompletionResponse = {
214
+ id: data.id,
215
+ model: data.model,
216
+ message: {
217
+ role: 'assistant',
218
+ content: choice.message.content,
219
+ toolCalls: choice.message.tool_calls?.map((tc) => ({
220
+ id: tc.id,
221
+ type: 'function' as const,
222
+ function: tc.function,
223
+ })),
224
+ },
225
+ finishReason: choice.finish_reason as ChatCompletionResponse['finishReason'],
226
+ usage,
227
+ }
228
+
229
+ span.setAttributes({
230
+ [GENAI.RESPONSE_ID]: data.id,
231
+ [GENAI.RESPONSE_MODEL]: data.model,
232
+ [GENAI.RESPONSE_FINISH_REASONS]: choice.finish_reason,
233
+ [GENAI.USAGE_INPUT_TOKENS]: usage.promptTokens,
234
+ [GENAI.USAGE_OUTPUT_TOKENS]: usage.completionTokens,
235
+ [NAMZU.CACHE_READ_TOKENS]: usage.cachedTokens,
236
+ [NAMZU.CACHE_WRITE_TOKENS]: usage.cacheWriteTokens,
237
+ [NAMZU.CACHE_DISCOUNT]: cacheDiscount,
238
+ })
239
+ span.setStatus({ code: SpanStatusCode.OK })
240
+
241
+ return result
242
+ } catch (err) {
243
+ span.setStatus({
244
+ code: SpanStatusCode.ERROR,
245
+ message: toErrorMessage(err),
246
+ })
247
+ span.recordException(err instanceof Error ? err : new Error(String(err)))
248
+ throw err
249
+ } finally {
250
+ span.end()
251
+ }
252
+ })
253
+ }
254
+
255
+ async *chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk> {
256
+ const body = this.buildRequestBody(params, true)
257
+
258
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
259
+ method: 'POST',
260
+ headers: this.getHeaders(),
261
+ body: JSON.stringify(body),
262
+ signal: AbortSignal.timeout(this.config.timeout ?? 120_000),
263
+ })
264
+
265
+ if (!response.ok) {
266
+ const errorBody = await response.text()
267
+ throw new Error(`OpenRouter API error (${response.status}): ${errorBody}`)
268
+ }
269
+
270
+ if (!response.body) {
271
+ throw new Error('OpenRouter returned no stream body')
272
+ }
273
+
274
+ const reader = response.body.getReader()
275
+ const decoder = new TextDecoder()
276
+ let buffer = ''
277
+
278
+ try {
279
+ while (true) {
280
+ const { done, value } = await reader.read()
281
+ if (done) break
282
+
283
+ buffer += decoder.decode(value, { stream: true })
284
+ const lines = buffer.split('\n')
285
+ buffer = lines.pop() ?? ''
286
+
287
+ for (const line of lines) {
288
+ const trimmed = line.trim()
289
+ if (!trimmed || !trimmed.startsWith('data: ')) continue
290
+ const data = trimmed.slice(6)
291
+ if (data === '[DONE]') return
292
+
293
+ try {
294
+ const parsed = JSON.parse(data) as {
295
+ id: string
296
+ choices: Array<{
297
+ delta: {
298
+ content?: string
299
+ tool_calls?: Array<{
300
+ index: number
301
+ id?: string
302
+ type?: string
303
+ function?: { name?: string; arguments?: string }
304
+ }>
305
+ }
306
+ finish_reason?: string
307
+ }>
308
+ usage?: RawUsage
309
+ }
310
+
311
+ const choice = parsed.choices[0]
312
+ if (!choice) continue
313
+
314
+ yield {
315
+ id: parsed.id,
316
+ delta: {
317
+ content: choice.delta.content,
318
+ toolCalls: choice.delta.tool_calls?.map((tc) => ({
319
+ index: tc.index,
320
+ id: tc.id,
321
+ type: tc.type as 'function' | undefined,
322
+ function: tc.function,
323
+ })),
324
+ },
325
+ finishReason: choice.finish_reason as StreamChunk['finishReason'],
326
+ usage: parsed.usage ? parseUsage(parsed.usage) : undefined,
327
+ }
328
+ } catch (parseErr) {
329
+ logger.warn('Failed to parse streaming chunk', {
330
+ error: toErrorMessage(parseErr),
331
+ data: data.slice(0, 200),
332
+ })
333
+ yield {
334
+ id: '',
335
+ delta: { content: undefined },
336
+ finishReason: undefined,
337
+ usage: undefined,
338
+ error: `Stream parse error: ${toErrorMessage(parseErr)}`,
339
+ }
340
+ }
341
+ }
342
+ }
343
+ } finally {
344
+ reader.releaseLock()
345
+ }
346
+ }
347
+
348
+ async listModels(): Promise<ModelInfo[]> {
349
+ const response = await fetch(`${this.baseUrl}/models`, {
350
+ headers: this.getHeaders(),
351
+ })
352
+
353
+ if (!response.ok) {
354
+ throw new Error(`Failed to list models: ${response.status}`)
355
+ }
356
+
357
+ const data = (await response.json()) as {
358
+ data: Array<{
359
+ id: string
360
+ name: string
361
+ context_length: number
362
+ top_provider?: { max_completion_tokens?: number }
363
+ pricing?: { prompt: string; completion: string }
364
+ }>
365
+ }
366
+
367
+ return data.data.map((m) => ({
368
+ id: m.id,
369
+ name: m.name,
370
+ contextWindow: m.context_length,
371
+ maxOutputTokens: m.top_provider?.max_completion_tokens ?? 4096,
372
+ inputPrice: Number.parseFloat(m.pricing?.prompt ?? '0') * 1_000_000,
373
+ outputPrice: Number.parseFloat(m.pricing?.completion ?? '0') * 1_000_000,
374
+ supportsToolUse: true,
375
+ supportsStreaming: true,
376
+ }))
377
+ }
378
+
379
+ async healthCheck(): Promise<boolean> {
380
+ try {
381
+ const response = await fetch(`${this.baseUrl}/models`, {
382
+ headers: this.getHeaders(),
383
+ signal: AbortSignal.timeout(5000),
384
+ })
385
+ return response.ok
386
+ } catch {
387
+ return false
388
+ }
389
+ }
396
390
  }