@jini-ai/agent-runtime 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +43 -0
  3. package/dist/acp-model-probe.d.ts +48 -0
  4. package/dist/acp-model-probe.d.ts.map +1 -0
  5. package/dist/acp-model-probe.js +15 -0
  6. package/dist/acp-model-probe.js.map +1 -0
  7. package/dist/agent-protocol/acp/account-failure.d.ts +54 -0
  8. package/dist/agent-protocol/acp/account-failure.d.ts.map +1 -0
  9. package/dist/agent-protocol/acp/account-failure.js +37 -0
  10. package/dist/agent-protocol/acp/account-failure.js.map +1 -0
  11. package/dist/agent-protocol/acp/constants.d.ts +26 -0
  12. package/dist/agent-protocol/acp/constants.d.ts.map +1 -0
  13. package/dist/agent-protocol/acp/constants.js +39 -0
  14. package/dist/agent-protocol/acp/constants.js.map +1 -0
  15. package/dist/agent-protocol/acp/index.d.ts +14 -0
  16. package/dist/agent-protocol/acp/index.d.ts.map +1 -0
  17. package/dist/agent-protocol/acp/index.js +14 -0
  18. package/dist/agent-protocol/acp/index.js.map +1 -0
  19. package/dist/agent-protocol/acp/json.d.ts +82 -0
  20. package/dist/agent-protocol/acp/json.d.ts.map +1 -0
  21. package/dist/agent-protocol/acp/json.js +144 -0
  22. package/dist/agent-protocol/acp/json.js.map +1 -0
  23. package/dist/agent-protocol/acp/models.d.ts +112 -0
  24. package/dist/agent-protocol/acp/models.d.ts.map +1 -0
  25. package/dist/agent-protocol/acp/models.js +293 -0
  26. package/dist/agent-protocol/acp/models.js.map +1 -0
  27. package/dist/agent-protocol/acp/rpc.d.ts +107 -0
  28. package/dist/agent-protocol/acp/rpc.d.ts.map +1 -0
  29. package/dist/agent-protocol/acp/rpc.js +162 -0
  30. package/dist/agent-protocol/acp/rpc.js.map +1 -0
  31. package/dist/agent-protocol/acp/session-params.d.ts +55 -0
  32. package/dist/agent-protocol/acp/session-params.d.ts.map +1 -0
  33. package/dist/agent-protocol/acp/session-params.js +81 -0
  34. package/dist/agent-protocol/acp/session-params.js.map +1 -0
  35. package/dist/agent-protocol/acp/session.d.ts +101 -0
  36. package/dist/agent-protocol/acp/session.d.ts.map +1 -0
  37. package/dist/agent-protocol/acp/session.js +832 -0
  38. package/dist/agent-protocol/acp/session.js.map +1 -0
  39. package/dist/agent-protocol/acp/text-suppression.d.ts +73 -0
  40. package/dist/agent-protocol/acp/text-suppression.d.ts.map +1 -0
  41. package/dist/agent-protocol/acp/text-suppression.js +229 -0
  42. package/dist/agent-protocol/acp/text-suppression.js.map +1 -0
  43. package/dist/agent-protocol/acp/types.d.ts +27 -0
  44. package/dist/agent-protocol/acp/types.d.ts.map +1 -0
  45. package/dist/agent-protocol/acp/types.js +2 -0
  46. package/dist/agent-protocol/acp/types.js.map +1 -0
  47. package/dist/agent-protocol/acp/updates.d.ts +166 -0
  48. package/dist/agent-protocol/acp/updates.d.ts.map +1 -0
  49. package/dist/agent-protocol/acp/updates.js +268 -0
  50. package/dist/agent-protocol/acp/updates.js.map +1 -0
  51. package/dist/agent-protocol/core/index.d.ts +6 -0
  52. package/dist/agent-protocol/core/index.d.ts.map +1 -0
  53. package/dist/agent-protocol/core/index.js +6 -0
  54. package/dist/agent-protocol/core/index.js.map +1 -0
  55. package/dist/agent-protocol/core/json-line-stream.d.ts +42 -0
  56. package/dist/agent-protocol/core/json-line-stream.d.ts.map +1 -0
  57. package/dist/agent-protocol/core/json-line-stream.js +333 -0
  58. package/dist/agent-protocol/core/json-line-stream.js.map +1 -0
  59. package/dist/agent-protocol/index.d.ts +8 -0
  60. package/dist/agent-protocol/index.d.ts.map +1 -0
  61. package/dist/agent-protocol/index.js +8 -0
  62. package/dist/agent-protocol/index.js.map +1 -0
  63. package/dist/agent-protocol/pi-rpc/events.d.ts +26 -0
  64. package/dist/agent-protocol/pi-rpc/events.d.ts.map +1 -0
  65. package/dist/agent-protocol/pi-rpc/events.js +167 -0
  66. package/dist/agent-protocol/pi-rpc/events.js.map +1 -0
  67. package/dist/agent-protocol/pi-rpc/index.d.ts +11 -0
  68. package/dist/agent-protocol/pi-rpc/index.d.ts.map +1 -0
  69. package/dist/agent-protocol/pi-rpc/index.js +11 -0
  70. package/dist/agent-protocol/pi-rpc/index.js.map +1 -0
  71. package/dist/agent-protocol/pi-rpc/internal.d.ts +45 -0
  72. package/dist/agent-protocol/pi-rpc/internal.d.ts.map +1 -0
  73. package/dist/agent-protocol/pi-rpc/internal.js +41 -0
  74. package/dist/agent-protocol/pi-rpc/internal.js.map +1 -0
  75. package/dist/agent-protocol/pi-rpc/models.d.ts +21 -0
  76. package/dist/agent-protocol/pi-rpc/models.d.ts.map +1 -0
  77. package/dist/agent-protocol/pi-rpc/models.js +48 -0
  78. package/dist/agent-protocol/pi-rpc/models.js.map +1 -0
  79. package/dist/agent-protocol/pi-rpc/session.d.ts +106 -0
  80. package/dist/agent-protocol/pi-rpc/session.d.ts.map +1 -0
  81. package/dist/agent-protocol/pi-rpc/session.js +371 -0
  82. package/dist/agent-protocol/pi-rpc/session.js.map +1 -0
  83. package/dist/amr-model-cache.d.ts +40 -0
  84. package/dist/amr-model-cache.d.ts.map +1 -0
  85. package/dist/amr-model-cache.js +79 -0
  86. package/dist/amr-model-cache.js.map +1 -0
  87. package/dist/amr-profile-resolver.d.ts +21 -0
  88. package/dist/amr-profile-resolver.d.ts.map +1 -0
  89. package/dist/amr-profile-resolver.js +4 -0
  90. package/dist/amr-profile-resolver.js.map +1 -0
  91. package/dist/artifact-taxonomy.d.ts +27 -0
  92. package/dist/artifact-taxonomy.d.ts.map +1 -0
  93. package/dist/artifact-taxonomy.js +5 -0
  94. package/dist/artifact-taxonomy.js.map +1 -0
  95. package/dist/auth.d.ts +25 -0
  96. package/dist/auth.d.ts.map +1 -0
  97. package/dist/auth.js +332 -0
  98. package/dist/auth.js.map +1 -0
  99. package/dist/capabilities.d.ts +9 -0
  100. package/dist/capabilities.d.ts.map +1 -0
  101. package/dist/capabilities.js +2 -0
  102. package/dist/capabilities.js.map +1 -0
  103. package/dist/claude-stream.d.ts +37 -0
  104. package/dist/claude-stream.d.ts.map +1 -0
  105. package/dist/claude-stream.js +660 -0
  106. package/dist/claude-stream.js.map +1 -0
  107. package/dist/copilot-stream.d.ts +37 -0
  108. package/dist/copilot-stream.d.ts.map +1 -0
  109. package/dist/copilot-stream.js +136 -0
  110. package/dist/copilot-stream.js.map +1 -0
  111. package/dist/defs/aider.d.ts +13 -0
  112. package/dist/defs/aider.d.ts.map +1 -0
  113. package/dist/defs/aider.js +63 -0
  114. package/dist/defs/aider.js.map +1 -0
  115. package/dist/defs/amp.d.ts +12 -0
  116. package/dist/defs/amp.d.ts.map +1 -0
  117. package/dist/defs/amp.js +56 -0
  118. package/dist/defs/amp.js.map +1 -0
  119. package/dist/defs/amr.d.ts +37 -0
  120. package/dist/defs/amr.d.ts.map +1 -0
  121. package/dist/defs/amr.js +303 -0
  122. package/dist/defs/amr.js.map +1 -0
  123. package/dist/defs/antigravity.d.ts +25 -0
  124. package/dist/defs/antigravity.d.ts.map +1 -0
  125. package/dist/defs/antigravity.js +213 -0
  126. package/dist/defs/antigravity.js.map +1 -0
  127. package/dist/defs/claude.d.ts +30 -0
  128. package/dist/defs/claude.d.ts.map +1 -0
  129. package/dist/defs/claude.js +130 -0
  130. package/dist/defs/claude.js.map +1 -0
  131. package/dist/defs/codebuddy.d.ts +26 -0
  132. package/dist/defs/codebuddy.d.ts.map +1 -0
  133. package/dist/defs/codebuddy.js +124 -0
  134. package/dist/defs/codebuddy.js.map +1 -0
  135. package/dist/defs/codex.d.ts +30 -0
  136. package/dist/defs/codex.d.ts.map +1 -0
  137. package/dist/defs/codex.js +196 -0
  138. package/dist/defs/codex.js.map +1 -0
  139. package/dist/defs/copilot.d.ts +12 -0
  140. package/dist/defs/copilot.d.ts.map +1 -0
  141. package/dist/defs/copilot.js +88 -0
  142. package/dist/defs/copilot.js.map +1 -0
  143. package/dist/defs/cursor-agent.d.ts +27 -0
  144. package/dist/defs/cursor-agent.d.ts.map +1 -0
  145. package/dist/defs/cursor-agent.js +93 -0
  146. package/dist/defs/cursor-agent.js.map +1 -0
  147. package/dist/defs/deepseek.d.ts +12 -0
  148. package/dist/defs/deepseek.d.ts.map +1 -0
  149. package/dist/defs/deepseek.js +53 -0
  150. package/dist/defs/deepseek.js.map +1 -0
  151. package/dist/defs/devin.d.ts +12 -0
  152. package/dist/defs/devin.d.ts.map +1 -0
  153. package/dist/defs/devin.js +45 -0
  154. package/dist/defs/devin.js.map +1 -0
  155. package/dist/defs/grok-build.d.ts +26 -0
  156. package/dist/defs/grok-build.d.ts.map +1 -0
  157. package/dist/defs/grok-build.js +105 -0
  158. package/dist/defs/grok-build.js.map +1 -0
  159. package/dist/defs/hermes.d.ts +13 -0
  160. package/dist/defs/hermes.d.ts.map +1 -0
  161. package/dist/defs/hermes.js +51 -0
  162. package/dist/defs/hermes.js.map +1 -0
  163. package/dist/defs/index.d.ts +33 -0
  164. package/dist/defs/index.d.ts.map +1 -0
  165. package/dist/defs/index.js +33 -0
  166. package/dist/defs/index.js.map +1 -0
  167. package/dist/defs/kilo.d.ts +12 -0
  168. package/dist/defs/kilo.d.ts.map +1 -0
  169. package/dist/defs/kilo.js +20 -0
  170. package/dist/defs/kilo.js.map +1 -0
  171. package/dist/defs/kimi.d.ts +13 -0
  172. package/dist/defs/kimi.d.ts.map +1 -0
  173. package/dist/defs/kimi.js +26 -0
  174. package/dist/defs/kimi.js.map +1 -0
  175. package/dist/defs/kiro.d.ts +12 -0
  176. package/dist/defs/kiro.d.ts.map +1 -0
  177. package/dist/defs/kiro.js +20 -0
  178. package/dist/defs/kiro.js.map +1 -0
  179. package/dist/defs/mimo.d.ts +13 -0
  180. package/dist/defs/mimo.d.ts.map +1 -0
  181. package/dist/defs/mimo.js +26 -0
  182. package/dist/defs/mimo.js.map +1 -0
  183. package/dist/defs/opencode.d.ts +27 -0
  184. package/dist/defs/opencode.d.ts.map +1 -0
  185. package/dist/defs/opencode.js +89 -0
  186. package/dist/defs/opencode.js.map +1 -0
  187. package/dist/defs/pi.d.ts +18 -0
  188. package/dist/defs/pi.d.ts.map +1 -0
  189. package/dist/defs/pi.js +94 -0
  190. package/dist/defs/pi.js.map +1 -0
  191. package/dist/defs/qoder.d.ts +11 -0
  192. package/dist/defs/qoder.d.ts.map +1 -0
  193. package/dist/defs/qoder.js +50 -0
  194. package/dist/defs/qoder.js.map +1 -0
  195. package/dist/defs/qwen.d.ts +11 -0
  196. package/dist/defs/qwen.d.ts.map +1 -0
  197. package/dist/defs/qwen.js +28 -0
  198. package/dist/defs/qwen.js.map +1 -0
  199. package/dist/defs/reasonix.d.ts +20 -0
  200. package/dist/defs/reasonix.d.ts.map +1 -0
  201. package/dist/defs/reasonix.js +60 -0
  202. package/dist/defs/reasonix.js.map +1 -0
  203. package/dist/defs/shared.d.ts +23 -0
  204. package/dist/defs/shared.d.ts.map +1 -0
  205. package/dist/defs/shared.js +58 -0
  206. package/dist/defs/shared.js.map +1 -0
  207. package/dist/defs/trae-cli.d.ts +14 -0
  208. package/dist/defs/trae-cli.d.ts.map +1 -0
  209. package/dist/defs/trae-cli.js +22 -0
  210. package/dist/defs/trae-cli.js.map +1 -0
  211. package/dist/defs/vibe.d.ts +12 -0
  212. package/dist/defs/vibe.d.ts.map +1 -0
  213. package/dist/defs/vibe.js +20 -0
  214. package/dist/defs/vibe.js.map +1 -0
  215. package/dist/detection.d.ts +14 -0
  216. package/dist/detection.d.ts.map +1 -0
  217. package/dist/detection.js +266 -0
  218. package/dist/detection.js.map +1 -0
  219. package/dist/diagnostics.d.ts +8 -0
  220. package/dist/diagnostics.d.ts.map +1 -0
  221. package/dist/diagnostics.js +95 -0
  222. package/dist/diagnostics.js.map +1 -0
  223. package/dist/env.d.ts +19 -0
  224. package/dist/env.d.ts.map +1 -0
  225. package/dist/env.js +95 -0
  226. package/dist/env.js.map +1 -0
  227. package/dist/executables.d.ts +24 -0
  228. package/dist/executables.d.ts.map +1 -0
  229. package/dist/executables.js +349 -0
  230. package/dist/executables.js.map +1 -0
  231. package/dist/index.d.ts +74 -0
  232. package/dist/index.d.ts.map +1 -0
  233. package/dist/index.js +102 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/invocation.d.ts +6 -0
  236. package/dist/invocation.d.ts.map +1 -0
  237. package/dist/invocation.js +47 -0
  238. package/dist/invocation.js.map +1 -0
  239. package/dist/json-event-stream.d.ts +9 -0
  240. package/dist/json-event-stream.d.ts.map +1 -0
  241. package/dist/json-event-stream.js +856 -0
  242. package/dist/json-event-stream.js.map +1 -0
  243. package/dist/launch.d.ts +12 -0
  244. package/dist/launch.d.ts.map +1 -0
  245. package/dist/launch.js +221 -0
  246. package/dist/launch.js.map +1 -0
  247. package/dist/mcp.d.ts +44 -0
  248. package/dist/mcp.d.ts.map +1 -0
  249. package/dist/mcp.js +12 -0
  250. package/dist/mcp.js.map +1 -0
  251. package/dist/metadata.d.ts +24 -0
  252. package/dist/metadata.d.ts.map +1 -0
  253. package/dist/metadata.js +100 -0
  254. package/dist/metadata.js.map +1 -0
  255. package/dist/mmd-routes.d.ts +12 -0
  256. package/dist/mmd-routes.d.ts.map +1 -0
  257. package/dist/mmd-routes.js +146 -0
  258. package/dist/mmd-routes.js.map +1 -0
  259. package/dist/model-registry.d.ts +120 -0
  260. package/dist/model-registry.d.ts.map +1 -0
  261. package/dist/model-registry.js +77 -0
  262. package/dist/model-registry.js.map +1 -0
  263. package/dist/models.d.ts +16 -0
  264. package/dist/models.d.ts.map +1 -0
  265. package/dist/models.js +93 -0
  266. package/dist/models.js.map +1 -0
  267. package/dist/opencode-log.d.ts +16 -0
  268. package/dist/opencode-log.d.ts.map +1 -0
  269. package/dist/opencode-log.js +163 -0
  270. package/dist/opencode-log.js.map +1 -0
  271. package/dist/paths.d.ts +3 -0
  272. package/dist/paths.d.ts.map +1 -0
  273. package/dist/paths.js +29 -0
  274. package/dist/paths.js.map +1 -0
  275. package/dist/pi-models.d.ts +13 -0
  276. package/dist/pi-models.d.ts.map +1 -0
  277. package/dist/pi-models.js +36 -0
  278. package/dist/pi-models.js.map +1 -0
  279. package/dist/prompt-augmenter.d.ts +60 -0
  280. package/dist/prompt-augmenter.d.ts.map +1 -0
  281. package/dist/prompt-augmenter.js +26 -0
  282. package/dist/prompt-augmenter.js.map +1 -0
  283. package/dist/prompt-budget.d.ts +20 -0
  284. package/dist/prompt-budget.d.ts.map +1 -0
  285. package/dist/prompt-budget.js +226 -0
  286. package/dist/prompt-budget.js.map +1 -0
  287. package/dist/prompt-file.d.ts +7 -0
  288. package/dist/prompt-file.d.ts.map +1 -0
  289. package/dist/prompt-file.js +27 -0
  290. package/dist/prompt-file.js.map +1 -0
  291. package/dist/providers/aihubmix.d.ts +99 -0
  292. package/dist/providers/aihubmix.d.ts.map +1 -0
  293. package/dist/providers/aihubmix.js +239 -0
  294. package/dist/providers/aihubmix.js.map +1 -0
  295. package/dist/providers/anthropic-messages.d.ts +116 -0
  296. package/dist/providers/anthropic-messages.d.ts.map +1 -0
  297. package/dist/providers/anthropic-messages.js +313 -0
  298. package/dist/providers/anthropic-messages.js.map +1 -0
  299. package/dist/providers/azure-chat.d.ts +99 -0
  300. package/dist/providers/azure-chat.d.ts.map +1 -0
  301. package/dist/providers/azure-chat.js +164 -0
  302. package/dist/providers/azure-chat.js.map +1 -0
  303. package/dist/providers/connection-guard.d.ts +67 -0
  304. package/dist/providers/connection-guard.d.ts.map +1 -0
  305. package/dist/providers/connection-guard.js +211 -0
  306. package/dist/providers/connection-guard.js.map +1 -0
  307. package/dist/providers/elevenlabs.d.ts +28 -0
  308. package/dist/providers/elevenlabs.d.ts.map +1 -0
  309. package/dist/providers/elevenlabs.js +138 -0
  310. package/dist/providers/elevenlabs.js.map +1 -0
  311. package/dist/providers/google-messages.d.ts +108 -0
  312. package/dist/providers/google-messages.d.ts.map +1 -0
  313. package/dist/providers/google-messages.js +284 -0
  314. package/dist/providers/google-messages.js.map +1 -0
  315. package/dist/providers/google.d.ts +20 -0
  316. package/dist/providers/google.d.ts.map +1 -0
  317. package/dist/providers/google.js +42 -0
  318. package/dist/providers/google.js.map +1 -0
  319. package/dist/providers/index.d.ts +39 -0
  320. package/dist/providers/index.d.ts.map +1 -0
  321. package/dist/providers/index.js +39 -0
  322. package/dist/providers/index.js.map +1 -0
  323. package/dist/providers/model-catalog.d.ts +32 -0
  324. package/dist/providers/model-catalog.d.ts.map +1 -0
  325. package/dist/providers/model-catalog.js +394 -0
  326. package/dist/providers/model-catalog.js.map +1 -0
  327. package/dist/providers/oauth-callback-server.d.ts +35 -0
  328. package/dist/providers/oauth-callback-server.d.ts.map +1 -0
  329. package/dist/providers/oauth-callback-server.js +217 -0
  330. package/dist/providers/oauth-callback-server.js.map +1 -0
  331. package/dist/providers/oauth-credentials.d.ts +29 -0
  332. package/dist/providers/oauth-credentials.d.ts.map +1 -0
  333. package/dist/providers/oauth-credentials.js +70 -0
  334. package/dist/providers/oauth-credentials.js.map +1 -0
  335. package/dist/providers/oauth-provider.d.ts +95 -0
  336. package/dist/providers/oauth-provider.d.ts.map +1 -0
  337. package/dist/providers/oauth-provider.js +130 -0
  338. package/dist/providers/oauth-provider.js.map +1 -0
  339. package/dist/providers/oauth-tokens.d.ts +35 -0
  340. package/dist/providers/oauth-tokens.d.ts.map +1 -0
  341. package/dist/providers/oauth-tokens.js +136 -0
  342. package/dist/providers/oauth-tokens.js.map +1 -0
  343. package/dist/providers/ollama-chat.d.ts +106 -0
  344. package/dist/providers/ollama-chat.d.ts.map +1 -0
  345. package/dist/providers/ollama-chat.js +292 -0
  346. package/dist/providers/ollama-chat.js.map +1 -0
  347. package/dist/providers/openai-chat.d.ts +147 -0
  348. package/dist/providers/openai-chat.d.ts.map +1 -0
  349. package/dist/providers/openai-chat.js +302 -0
  350. package/dist/providers/openai-chat.js.map +1 -0
  351. package/dist/providers/pkce.d.ts +81 -0
  352. package/dist/providers/pkce.d.ts.map +1 -0
  353. package/dist/providers/pkce.js +176 -0
  354. package/dist/providers/pkce.js.map +1 -0
  355. package/dist/providers/sse-decode.d.ts +47 -0
  356. package/dist/providers/sse-decode.d.ts.map +1 -0
  357. package/dist/providers/sse-decode.js +109 -0
  358. package/dist/providers/sse-decode.js.map +1 -0
  359. package/dist/providers/token-params.d.ts +29 -0
  360. package/dist/providers/token-params.d.ts.map +1 -0
  361. package/dist/providers/token-params.js +41 -0
  362. package/dist/providers/token-params.js.map +1 -0
  363. package/dist/providers/turn-end-guard.d.ts +37 -0
  364. package/dist/providers/turn-end-guard.d.ts.map +1 -0
  365. package/dist/providers/turn-end-guard.js +42 -0
  366. package/dist/providers/turn-end-guard.js.map +1 -0
  367. package/dist/providers/types.d.ts +36 -0
  368. package/dist/providers/types.d.ts.map +1 -0
  369. package/dist/providers/types.js +13 -0
  370. package/dist/providers/types.js.map +1 -0
  371. package/dist/qoder-stream.d.ts +19 -0
  372. package/dist/qoder-stream.d.ts.map +1 -0
  373. package/dist/qoder-stream.js +167 -0
  374. package/dist/qoder-stream.js.map +1 -0
  375. package/dist/registry.d.ts +5 -0
  376. package/dist/registry.d.ts.map +1 -0
  377. package/dist/registry.js +58 -0
  378. package/dist/registry.js.map +1 -0
  379. package/dist/resolution.d.ts +2 -0
  380. package/dist/resolution.d.ts.map +1 -0
  381. package/dist/resolution.js +19 -0
  382. package/dist/resolution.js.map +1 -0
  383. package/dist/role-marker-guard.d.ts +53 -0
  384. package/dist/role-marker-guard.d.ts.map +1 -0
  385. package/dist/role-marker-guard.js +280 -0
  386. package/dist/role-marker-guard.js.map +1 -0
  387. package/dist/telemetry-sink.d.ts +35 -0
  388. package/dist/telemetry-sink.d.ts.map +1 -0
  389. package/dist/telemetry-sink.js +5 -0
  390. package/dist/telemetry-sink.js.map +1 -0
  391. package/dist/terminal-launch.d.ts +11 -0
  392. package/dist/terminal-launch.d.ts.map +1 -0
  393. package/dist/terminal-launch.js +123 -0
  394. package/dist/terminal-launch.js.map +1 -0
  395. package/dist/types.d.ts +185 -0
  396. package/dist/types.d.ts.map +1 -0
  397. package/dist/types.js +2 -0
  398. package/dist/types.js.map +1 -0
  399. package/package.json +47 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * @module providers/google-messages
3
+ *
4
+ * Google Generative Language (Gemini) `streamGenerateContent` wire adapter +
5
+ * tool-loop turn-runner. Sibling of `anthropic-messages.ts`/`openai-chat.ts`
6
+ * — see those modules' headers for the shared design rationale (package
7
+ * placement, `extraHeaders` never carrying a hardcoded product-identity
8
+ * string, the `turn-end-guard.ts` fix for a duplicate-`end`-event class of
9
+ * bug). Reuses this package's existing `providers/google.ts` URL helpers
10
+ * (`googleStreamGenerateContentUrl`) rather than rebuilding URL-building
11
+ * logic — see that module's own doc.
12
+ *
13
+ * **Verified against Google's real, current public API docs** (per this
14
+ * repo's "verify against real API docs, don't guess from memory"
15
+ * convention — see `anthropic-messages.ts`'s header for the precedent).
16
+ * Two things worth flagging for a future maintainer:
17
+ *
18
+ * 1. **Two REST APIs coexist as of this writing.** Google's docs now lead
19
+ * with a newer `interactions` API (`POST /v1beta/interactions`,
20
+ * `input`/`previous_interaction_id`/`function_result` shaped) alongside
21
+ * the classic `generateContent`/`streamGenerateContent` API
22
+ * (`contents: [{role, parts}]`, `functionCall`/`functionResponse`
23
+ * parts). This adapter deliberately targets the **classic** API — it is
24
+ * what `providers/google.ts#googleStreamGenerateContentUrl` already
25
+ * builds a URL for, and what this task's spec calls for. Confirmed via
26
+ * `ai.google.dev/api/generate-content` (Content/Part/GenerateContent
27
+ * Request/Response field names) and a live web search returning a
28
+ * real-world function-calling exchange showing the exact
29
+ * `{ functionResponse: { name, response, id } }` shape sent back with
30
+ * `role: 'user'` (not `role: 'function'` — there is no `function` role
31
+ * in the classic Content schema; `role` is `'user' | 'model' | 'system'`
32
+ * only).
33
+ * 2. **No `finishReason` value means "the model wants a tool call."**
34
+ * Unlike Anthropic (`stop_reason: 'tool_use'`) and OpenAI
35
+ * (`finish_reason: 'tool_calls'`), Gemini's documented `finishReason`
36
+ * enum (`STOP`, `MAX_TOKENS`, `SAFETY`, `RECITATION`, `LANGUAGE`,
37
+ * `OTHER`) has no tool-call-specific member — a function call is simply
38
+ * a `functionCall` part inside an otherwise normal (often
39
+ * `finishReason: 'STOP'`) candidate. `runGoogleToolTurn`'s tool-loop
40
+ * continuation predicate is therefore `toolCalls.length > 0`, not a
41
+ * `finishReason` comparison — the one structural place this adapter
42
+ * cannot mirror `anthropic-messages.ts`/`openai-chat.ts` byte-for-byte.
43
+ *
44
+ * **Scope for this pass:** text + function-call parts and the tool-
45
+ * execution loop only. `inlineData`/`fileData` parts (multimodal input/
46
+ * output) and `promptFeedback`'s per-category safety ratings are out of
47
+ * scope — a blocked prompt (`promptFeedback.blockReason` present, no
48
+ * candidates) is still surfaced as an `error` event rather than silently
49
+ * hanging, but the detailed safety-rating breakdown is not modeled.
50
+ */
51
+ import { createRoleMarkerGuard } from '../role-marker-guard.js';
52
+ import { defaultDnsLookup, redactSecrets, validateBaseUrlResolved } from './connection-guard.js';
53
+ import { googleStreamGenerateContentUrl } from './google.js';
54
+ import { decodeSseStream } from './sse-decode.js';
55
+ import { createTurnEndGuard } from './turn-end-guard.js';
56
+ const DEFAULT_GOOGLE_BASE_URL = 'https://generativelanguage.googleapis.com';
57
+ const DEFAULT_MAX_TOOL_TURNS = 8;
58
+ function isRecord(value) {
59
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
60
+ }
61
+ /**
62
+ * Builds the streaming request URL with no credential attached — auth travels via the
63
+ * `x-goog-api-key` header (see `googleHeaders`), not a `?key=` query param.
64
+ *
65
+ * **Corrected to match Open Design's real behavior**: an earlier version of this function
66
+ * attached `apiKey` as a `?key=` query-string parameter, modeled on `google.ts#googleProviderModelsUrl`'s
67
+ * model-*listing* endpoint (a different, read-only surface). A live side-by-side comparison
68
+ * against a running OD daemon found its actual `/api/proxy/google/stream` chat handler
69
+ * (`apps/daemon/src/routes/chat.ts:1251`) uses `headers: { 'x-goog-api-key': apiKey }` instead —
70
+ * query-string credentials are also worse practice generically (they land in server access logs,
71
+ * proxy logs, and browser history far more readily than headers do), so this fix is both a real
72
+ * parity correction and a real hardening.
73
+ */
74
+ function googleRequestUrl(baseUrl, model) {
75
+ return googleStreamGenerateContentUrl(baseUrl ?? DEFAULT_GOOGLE_BASE_URL, model);
76
+ }
77
+ function googleHeaders(options) {
78
+ return {
79
+ 'content-type': 'application/json',
80
+ 'x-goog-api-key': options.apiKey,
81
+ ...(options.extraHeaders ?? {}),
82
+ };
83
+ }
84
+ function googleRequestBody(options, contents) {
85
+ const generationConfig = {
86
+ ...(options.temperature !== undefined ? { temperature: options.temperature } : {}),
87
+ ...(options.maxOutputTokens !== undefined ? { maxOutputTokens: options.maxOutputTokens } : {}),
88
+ };
89
+ return {
90
+ contents,
91
+ ...(options.system !== undefined ? { systemInstruction: { parts: [{ text: options.system }] } } : {}),
92
+ ...(options.tools && options.tools.length > 0 ? { tools: options.tools } : {}),
93
+ ...(Object.keys(generationConfig).length > 0 ? { generationConfig } : {}),
94
+ };
95
+ }
96
+ function extractGoogleErrorDetail(rawText) {
97
+ try {
98
+ const parsed = JSON.parse(rawText);
99
+ if (isRecord(parsed) && isRecord(parsed.error) && typeof parsed.error.message === 'string') {
100
+ return parsed.error.message;
101
+ }
102
+ }
103
+ catch {
104
+ // Non-JSON error body — fall through to the raw text below.
105
+ }
106
+ return rawText.trim().slice(0, 500);
107
+ }
108
+ /** Runs exactly one Gemini `streamGenerateContent` request and reduces its SSE events into a single outcome. Mirrors `anthropic-messages.ts#runSingleAnthropicRequest`'s `emitEnd` contract — see that function's doc. */
109
+ async function runSingleGoogleRequest(options, contents, emitEnd) {
110
+ const { onEvent } = options;
111
+ const baseUrlCheck = await validateBaseUrlResolved(options.baseUrl ?? DEFAULT_GOOGLE_BASE_URL, defaultDnsLookup);
112
+ if (baseUrlCheck.error) {
113
+ onEvent({ type: 'error', message: baseUrlCheck.error });
114
+ emitEnd('error');
115
+ return { finishReason: null, toolCalls: [], text: '' };
116
+ }
117
+ let response;
118
+ try {
119
+ response = (await fetch(googleRequestUrl(options.baseUrl, options.model), {
120
+ method: 'POST',
121
+ headers: googleHeaders(options),
122
+ body: JSON.stringify(googleRequestBody(options, contents)),
123
+ ...(options.signal ? { signal: options.signal } : {}),
124
+ }));
125
+ }
126
+ catch (error) {
127
+ const message = error instanceof Error ? error.message : String(error);
128
+ onEvent({ type: 'error', message: redactSecrets(message, [options.apiKey]) });
129
+ emitEnd('error');
130
+ return { finishReason: null, toolCalls: [], text: '' };
131
+ }
132
+ if (!response.ok) {
133
+ const rawText = await response.text();
134
+ onEvent({
135
+ type: 'error',
136
+ message: redactSecrets(extractGoogleErrorDetail(rawText), [options.apiKey]),
137
+ code: String(response.status),
138
+ });
139
+ emitEnd('error');
140
+ return { finishReason: null, toolCalls: [], text: '' };
141
+ }
142
+ if (!response.body) {
143
+ onEvent({ type: 'error', message: 'Google response had no body' });
144
+ emitEnd('error');
145
+ return { finishReason: null, toolCalls: [], text: '' };
146
+ }
147
+ onEvent({ type: 'status', label: 'requesting' });
148
+ const guard = createRoleMarkerGuard('google-turn');
149
+ const toolCalls = [];
150
+ let fullText = '';
151
+ let finishReason = null;
152
+ let usage = null;
153
+ frameLoop: for await (const frame of decodeSseStream(response.body)) {
154
+ // No re-check of an "ended" flag at the top of this loop: every `emitEnd(...)` call site below
155
+ // (the promptFeedback block-reason branch and the contamination branch) is immediately followed
156
+ // by `break frameLoop` — same reachability proof as `anthropic-messages.ts#runSingleAnthropicRequest`.
157
+ let data;
158
+ try {
159
+ data = JSON.parse(frame.data);
160
+ }
161
+ catch {
162
+ continue; // tolerate a malformed/empty keep-alive frame
163
+ }
164
+ if (!isRecord(data))
165
+ continue;
166
+ if (isRecord(data.usageMetadata)) {
167
+ usage = data.usageMetadata;
168
+ onEvent({ type: 'usage', usage });
169
+ }
170
+ const candidates = Array.isArray(data.candidates) ? data.candidates : [];
171
+ const candidate = candidates[0];
172
+ if (!candidate) {
173
+ if (isRecord(data.promptFeedback) && typeof data.promptFeedback.blockReason === 'string') {
174
+ onEvent({ type: 'error', message: `prompt blocked: ${data.promptFeedback.blockReason}`, code: data.promptFeedback.blockReason });
175
+ emitEnd('error');
176
+ break frameLoop;
177
+ }
178
+ continue;
179
+ }
180
+ if (!isRecord(candidate))
181
+ continue;
182
+ if (typeof candidate.finishReason === 'string') {
183
+ finishReason = candidate.finishReason;
184
+ }
185
+ const content = isRecord(candidate.content) ? candidate.content : null;
186
+ const parts = content && Array.isArray(content.parts) ? content.parts : [];
187
+ for (const rawPart of parts) {
188
+ if (!isRecord(rawPart))
189
+ continue;
190
+ if (typeof rawPart.text === 'string' && rawPart.text.length > 0) {
191
+ // No `guard.contaminated` pre-check here: the only way it becomes true is the
192
+ // `emitEnd('contaminated'); break frameLoop;` a few lines below, which exits the outer
193
+ // frame loop immediately — see `anthropic-messages.ts#runSingleAnthropicRequest`'s
194
+ // identical reachability proof.
195
+ const safe = guard.feedText(rawPart.text);
196
+ if (safe.length > 0) {
197
+ fullText += safe;
198
+ onEvent({ type: 'text_delta', delta: safe });
199
+ }
200
+ if (guard.contaminated) {
201
+ const warn = guard.warningEvent();
202
+ if (warn)
203
+ onEvent(warn);
204
+ emitEnd('contaminated');
205
+ break frameLoop;
206
+ }
207
+ continue;
208
+ }
209
+ if (isRecord(rawPart.functionCall)) {
210
+ const fc = rawPart.functionCall;
211
+ const name = typeof fc.name === 'string' ? fc.name : null;
212
+ if (name) {
213
+ const id = typeof fc.id === 'string' && fc.id.length > 0 ? fc.id : `call_${toolCalls.length}`;
214
+ const call = { id, name, input: fc.args ?? {} };
215
+ toolCalls.push(call);
216
+ onEvent({ type: 'tool_use', id: call.id, name: call.name, input: call.input });
217
+ }
218
+ }
219
+ }
220
+ }
221
+ return { finishReason, toolCalls, text: fullText };
222
+ }
223
+ /**
224
+ * Runs a full Gemini `streamGenerateContent` turn, including the
225
+ * tool-execution loop when `options.executeTool` is supplied and the model
226
+ * requests a function call. See `anthropic-messages.ts#runAnthropicToolTurn`'s
227
+ * doc for the shared event-stream/`ended`-flag contract this mirrors — with
228
+ * one deliberate structural difference: the loop-continuation predicate is
229
+ * `toolCalls.length > 0`, not a `finishReason` comparison (see module doc,
230
+ * point 2, for why Gemini's `finishReason` enum cannot be used here).
231
+ */
232
+ export async function runGoogleToolTurn(options) {
233
+ const maxToolTurns = options.maxToolTurns ?? DEFAULT_MAX_TOOL_TURNS;
234
+ const endGuard = createTurnEndGuard(options.onEvent, (reason) => ({ type: 'end', reason }));
235
+ const emitEnd = endGuard.emitEnd;
236
+ let contents = options.contents.slice();
237
+ let toolTurns = 0;
238
+ let lastFinishReason = null;
239
+ while (true) {
240
+ const outcome = await runSingleGoogleRequest(options, contents, emitEnd);
241
+ lastFinishReason = outcome.finishReason;
242
+ if (endGuard.hasEnded())
243
+ break;
244
+ if (outcome.toolCalls.length === 0) {
245
+ emitEnd('stop');
246
+ break;
247
+ }
248
+ if (!options.executeTool) {
249
+ // Pending tool calls were already emitted as `tool_use` events above;
250
+ // with no executor to run them, the turn ends here rather than
251
+ // silently retrying forever.
252
+ emitEnd('stop');
253
+ break;
254
+ }
255
+ if (toolTurns >= maxToolTurns) {
256
+ emitEnd('max_tool_turns');
257
+ break;
258
+ }
259
+ toolTurns += 1;
260
+ const modelParts = [
261
+ ...(outcome.text ? [{ text: outcome.text }] : []),
262
+ ...outcome.toolCalls.map((call) => ({ functionCall: { name: call.name, args: call.input, id: call.id } })),
263
+ ];
264
+ const functionResponseParts = [];
265
+ for (const call of outcome.toolCalls) {
266
+ const result = await options.executeTool(call);
267
+ options.onEvent({ type: 'tool_result', toolUseId: call.id, content: result.content, isError: result.isError ?? false });
268
+ functionResponseParts.push({
269
+ functionResponse: {
270
+ name: call.name,
271
+ id: call.id,
272
+ response: { content: result.content, isError: result.isError ?? false },
273
+ },
274
+ });
275
+ }
276
+ contents = [
277
+ ...contents,
278
+ { role: 'model', parts: modelParts },
279
+ { role: 'user', parts: functionResponseParts },
280
+ ];
281
+ }
282
+ return { finishReason: lastFinishReason, toolTurns };
283
+ }
284
+ //# sourceMappingURL=google-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-messages.js","sourceRoot":"","sources":["../../src/providers/google-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @module providers/google
3
+ *
4
+ * URL-building helpers for the Google Generative Language (Gemini) REST
5
+ * API. Product-neutral as found in the origin — zero imports, ported
6
+ * verbatim.
7
+ */
8
+ /** Strips any trailing `/v1`/`/v1beta` API-version segment and trailing slashes from a configured base URL. */
9
+ export declare function googleGenerativeLanguageBaseUrl(baseUrl: string): string;
10
+ /** Strips the `models/` prefix Google's API sometimes includes in a model id. */
11
+ export declare function normalizeGoogleModelId(model: string): string;
12
+ /** URL-encodes a normalized model id for use as a path segment. */
13
+ export declare function googleModelPathSegment(model: string): string;
14
+ /** Builds the non-streaming `generateContent` endpoint URL for a model. */
15
+ export declare function googleGenerateContentUrl(baseUrl: string, model: string): string;
16
+ /** Builds the SSE-streaming `streamGenerateContent` endpoint URL for a model. */
17
+ export declare function googleStreamGenerateContentUrl(baseUrl: string, model: string): string;
18
+ /** Builds the model-catalog listing endpoint URL, with the API key attached as a query param. */
19
+ export declare function googleProviderModelsUrl(baseUrl: string, apiKey: string): string;
20
+ //# sourceMappingURL=google.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+GAA+G;AAC/G,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASvE;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,2EAA2E;AAC3E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,iFAAiF;AACjF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,iGAAiG;AACjG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI/E"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module providers/google
3
+ *
4
+ * URL-building helpers for the Google Generative Language (Gemini) REST
5
+ * API. Product-neutral as found in the origin — zero imports, ported
6
+ * verbatim.
7
+ */
8
+ /** Strips any trailing `/v1`/`/v1beta` API-version segment and trailing slashes from a configured base URL. */
9
+ export function googleGenerativeLanguageBaseUrl(baseUrl) {
10
+ const url = new URL(baseUrl);
11
+ url.search = '';
12
+ url.hash = '';
13
+ const pathname = url.pathname
14
+ .replace(/\/+$/, '')
15
+ .replace(/\/v\d+(?:beta)?$/i, '');
16
+ url.pathname = pathname || '/';
17
+ return url.toString().replace(/\/+$/, '');
18
+ }
19
+ /** Strips the `models/` prefix Google's API sometimes includes in a model id. */
20
+ export function normalizeGoogleModelId(model) {
21
+ const trimmed = model.trim();
22
+ return trimmed.startsWith('models/') ? trimmed.slice('models/'.length) : trimmed;
23
+ }
24
+ /** URL-encodes a normalized model id for use as a path segment. */
25
+ export function googleModelPathSegment(model) {
26
+ return encodeURIComponent(normalizeGoogleModelId(model));
27
+ }
28
+ /** Builds the non-streaming `generateContent` endpoint URL for a model. */
29
+ export function googleGenerateContentUrl(baseUrl, model) {
30
+ return `${googleGenerativeLanguageBaseUrl(baseUrl)}/v1beta/models/${googleModelPathSegment(model)}:generateContent`;
31
+ }
32
+ /** Builds the SSE-streaming `streamGenerateContent` endpoint URL for a model. */
33
+ export function googleStreamGenerateContentUrl(baseUrl, model) {
34
+ return `${googleGenerativeLanguageBaseUrl(baseUrl)}/v1beta/models/${googleModelPathSegment(model)}:streamGenerateContent?alt=sse`;
35
+ }
36
+ /** Builds the model-catalog listing endpoint URL, with the API key attached as a query param. */
37
+ export function googleProviderModelsUrl(baseUrl, apiKey) {
38
+ const url = new URL(`${googleGenerativeLanguageBaseUrl(baseUrl)}/v1beta/models`);
39
+ url.searchParams.set('key', apiKey);
40
+ return url.toString();
41
+ }
42
+ //# sourceMappingURL=google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+GAA+G;AAC/G,MAAM,UAAU,+BAA+B,CAAC,OAAe;IAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;SAC1B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpC,GAAG,CAAC,QAAQ,GAAG,QAAQ,IAAI,GAAG,CAAC;IAC/B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACnF,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,kBAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,KAAa;IACrE,OAAO,GAAG,+BAA+B,CAAC,OAAO,CAAC,kBAAkB,sBAAsB,CAAC,KAAK,CAAC,kBAAkB,CAAC;AACtH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,8BAA8B,CAAC,OAAe,EAAE,KAAa;IAC3E,OAAO,GAAG,+BAA+B,CAAC,OAAO,CAAC,kBAAkB,sBAAsB,CAAC,KAAK,CAAC,gCAAgC,CAAC;AACpI,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,MAAc;IACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,+BAA+B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module providers
3
+ *
4
+ * Generic LLM-provider integration material ported from OD's
5
+ * `apps/daemon/src/integrations/` (13 files). See `source-map.md` for the
6
+ * full per-file provenance and the MIXED-classification split: OD's own
7
+ * AMR/vela provider adapter (`vela*.ts`, 4 files) is a specific provider's
8
+ * own daemon-coupled implementation, not generic material, and was left
9
+ * unported.
10
+ *
11
+ * `sse-decode.ts` / `anthropic-messages.ts` / `openai-chat.ts` (2026-07-21),
12
+ * and `google-messages.ts` / `azure-chat.ts` / `ollama-chat.ts`
13
+ * (2026-07-22), are the one exception to "ported": built fresh against
14
+ * each provider's real public API docs rather than lifted from OD's
15
+ * `chat.ts` (this task did not have direct access to that file for the
16
+ * 2026-07-21 pass; the 2026-07-22 pass did read the real OD source for
17
+ * Azure's api-version default — see `azure-chat.ts`'s header) — see each
18
+ * module's own header and `source-map.md`'s dated sections for the full
19
+ * rationale.
20
+ */
21
+ export * from './types.js';
22
+ export * from './token-params.js';
23
+ export * from './google.js';
24
+ export * from './aihubmix.js';
25
+ export * from './connection-guard.js';
26
+ export * from './model-catalog.js';
27
+ export * from './sse-decode.js';
28
+ export * from './anthropic-messages.js';
29
+ export * from './openai-chat.js';
30
+ export * from './google-messages.js';
31
+ export * from './azure-chat.js';
32
+ export * from './ollama-chat.js';
33
+ export * from './elevenlabs.js';
34
+ export * from './pkce.js';
35
+ export * from './oauth-provider.js';
36
+ export * from './oauth-callback-server.js';
37
+ export * from './oauth-tokens.js';
38
+ export * from './oauth-credentials.js';
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module providers
3
+ *
4
+ * Generic LLM-provider integration material ported from OD's
5
+ * `apps/daemon/src/integrations/` (13 files). See `source-map.md` for the
6
+ * full per-file provenance and the MIXED-classification split: OD's own
7
+ * AMR/vela provider adapter (`vela*.ts`, 4 files) is a specific provider's
8
+ * own daemon-coupled implementation, not generic material, and was left
9
+ * unported.
10
+ *
11
+ * `sse-decode.ts` / `anthropic-messages.ts` / `openai-chat.ts` (2026-07-21),
12
+ * and `google-messages.ts` / `azure-chat.ts` / `ollama-chat.ts`
13
+ * (2026-07-22), are the one exception to "ported": built fresh against
14
+ * each provider's real public API docs rather than lifted from OD's
15
+ * `chat.ts` (this task did not have direct access to that file for the
16
+ * 2026-07-21 pass; the 2026-07-22 pass did read the real OD source for
17
+ * Azure's api-version default — see `azure-chat.ts`'s header) — see each
18
+ * module's own header and `source-map.md`'s dated sections for the full
19
+ * rationale.
20
+ */
21
+ export * from './types.js';
22
+ export * from './token-params.js';
23
+ export * from './google.js';
24
+ export * from './aihubmix.js';
25
+ export * from './connection-guard.js';
26
+ export * from './model-catalog.js';
27
+ export * from './sse-decode.js';
28
+ export * from './anthropic-messages.js';
29
+ export * from './openai-chat.js';
30
+ export * from './google-messages.js';
31
+ export * from './azure-chat.js';
32
+ export * from './ollama-chat.js';
33
+ export * from './elevenlabs.js';
34
+ export * from './pkce.js';
35
+ export * from './oauth-provider.js';
36
+ export * from './oauth-callback-server.js';
37
+ export * from './oauth-tokens.js';
38
+ export * from './oauth-credentials.js';
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module providers/model-catalog
3
+ *
4
+ * Live model-catalog discovery for BYOK providers (OpenAI-compatible,
5
+ * Anthropic, Google, AIHubMix, SenseAudio, plus static seeds for Bedrock and
6
+ * an explicit "unsupported" response for Azure). Ported from OD's
7
+ * `integrations/provider-models.ts` (`listProviderModels`) with its
8
+ * upstream contracts-package type imports repointed at this package's own
9
+ * vendored `types.ts`, and its `../connectionTest.js` SSRF-guard /
10
+ * secret-redaction imports repointed at this package's own vendored
11
+ * `connection-guard.ts` (see that module's doc comment for what was and
12
+ * wasn't pulled from the 2,600-line origin file). Logic is otherwise
13
+ * unchanged — product-neutral as found (a bare BYOK-protocol model lister,
14
+ * no OD-branded strings).
15
+ */
16
+ import type { DnsLookupFn } from './connection-guard.js';
17
+ import type { ProviderModelsRequest, ProviderModelsResponse } from './types.js';
18
+ export type ProviderModelsInput = ProviderModelsRequest & {
19
+ signal?: AbortSignal;
20
+ requestInit?: Pick<RequestInit, 'dispatcher'>;
21
+ /** Injectable DNS resolver for the base-URL SSRF guard; defaults to `node:dns`. */
22
+ dnsLookup?: DnsLookupFn;
23
+ };
24
+ /**
25
+ * Fetches the live model catalog for a BYOK provider connection. Validates
26
+ * the base URL (sync + DNS-resolved SSRF guard) before issuing any request,
27
+ * dispatches per-protocol (a static seed for Bedrock, an explicit
28
+ * "unsupported" response for Azure), and normalizes every provider's
29
+ * response envelope into a de-duplicated, alphabetized `{ id, label }[]`.
30
+ */
31
+ export declare function listProviderModels(input: ProviderModelsInput): Promise<ProviderModelsResponse>;
32
+ //# sourceMappingURL=model-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../../src/providers/model-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,KAAK,EAIV,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG;IACxD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9C,mFAAmF;IACnF,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AA+OF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CA0JjC"}