@bastani/atomic 0.9.40 → 0.9.41-alpha.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 (323) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +1 -1
  3. package/dist/builtin/intercom/CHANGELOG.md +12 -0
  4. package/dist/builtin/intercom/README.md +1 -1
  5. package/dist/builtin/intercom/broker/broker.ts +24 -21
  6. package/dist/builtin/intercom/broker/client.ts +97 -6
  7. package/dist/builtin/intercom/broker/list-reply.ts +53 -0
  8. package/dist/builtin/intercom/index.bundle.mjs +278 -46
  9. package/dist/builtin/intercom/package.json +2 -2
  10. package/dist/builtin/intercom/recoverable-disconnect.ts +27 -1
  11. package/dist/builtin/intercom/types.ts +8 -1
  12. package/dist/builtin/mcp/package.json +1 -1
  13. package/dist/builtin/subagents/CHANGELOG.md +14 -0
  14. package/dist/builtin/subagents/README.md +14 -0
  15. package/dist/builtin/subagents/package.json +3 -3
  16. package/dist/builtin/subagents/src/extension/index.bundle.mjs +99 -19
  17. package/dist/builtin/web-access/package.json +2 -2
  18. package/dist/builtin/workflows/CHANGELOG.md +33 -0
  19. package/dist/builtin/workflows/README.md +2 -0
  20. package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
  21. package/dist/builtin/workflows/builtin/{chunk-qjqn389g.js → chunk-2jfst7e4.js} +72 -10
  22. package/dist/builtin/workflows/builtin/{chunk-4bwtzyjq.js → chunk-49kkbdpr.js} +1 -1
  23. package/dist/builtin/workflows/builtin/{chunk-qdd897wm.js → chunk-apagcs4r.js} +1 -1
  24. package/dist/builtin/workflows/builtin/{chunk-454hz1qt.js → chunk-dcxscfnb.js} +1 -1
  25. package/dist/builtin/workflows/builtin/{chunk-bjva9j5k.js → chunk-hx8v4p97.js} +1 -1
  26. package/dist/builtin/workflows/builtin/{chunk-85mx6wcf.js → chunk-k5q3t7je.js} +1 -1
  27. package/dist/builtin/workflows/builtin/{chunk-8kkv04hz.js → chunk-n2gkzkty.js} +1 -1
  28. package/dist/builtin/workflows/builtin/{chunk-y45tkftg.js → chunk-txbc93t6.js} +1 -1
  29. package/dist/builtin/workflows/builtin/{chunk-x0vvjyzg.js → chunk-w4xp1w1f.js} +1 -1
  30. package/dist/builtin/workflows/builtin/{chunk-5eh0brtd.js → chunk-z3pajrfs.js} +1 -1
  31. package/dist/builtin/workflows/builtin/classify-and-act.js +2 -2
  32. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +2 -2
  33. package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
  34. package/dist/builtin/workflows/builtin/goal.js +2 -2
  35. package/dist/builtin/workflows/builtin/index.js +10 -10
  36. package/dist/builtin/workflows/builtin/loop-until-done.js +2 -2
  37. package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
  38. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  39. package/dist/builtin/workflows/builtin/tournament.js +2 -2
  40. package/dist/builtin/workflows/package.json +2 -2
  41. package/dist/builtin/workflows/src/authoring.d.ts +1 -1
  42. package/dist/builtin/workflows/src/durable/journal/internal.d.ts +16 -0
  43. package/dist/builtin/workflows/src/durable/journal/legacy-journal-tables.d.ts +9 -0
  44. package/dist/builtin/workflows/src/durable/journal/sql-run-journal.d.ts +6 -0
  45. package/dist/builtin/workflows/src/extension/index.bundle.mjs +950 -116
  46. package/dist/builtin/workflows/src/index.js +806 -131
  47. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +17 -1
  48. package/dist/cli/credential-print.d.ts.map +1 -1
  49. package/dist/cli/credential-print.js +1 -1
  50. package/dist/cli/credential-print.js.map +1 -1
  51. package/dist/config.d.ts +1 -0
  52. package/dist/config.d.ts.map +1 -1
  53. package/dist/config.js +1 -0
  54. package/dist/config.js.map +1 -1
  55. package/dist/core/agent-session-extension-bindings.d.ts +2 -1
  56. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  57. package/dist/core/agent-session-extension-bindings.js +33 -18
  58. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  59. package/dist/core/agent-session-methods.d.ts +2 -1
  60. package/dist/core/agent-session-methods.d.ts.map +1 -1
  61. package/dist/core/agent-session-methods.js.map +1 -1
  62. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  63. package/dist/core/agent-session-prompt.js +114 -21
  64. package/dist/core/agent-session-prompt.js.map +1 -1
  65. package/dist/core/agent-session-runtime.d.ts +1 -1
  66. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  67. package/dist/core/agent-session-runtime.js +6 -0
  68. package/dist/core/agent-session-runtime.js.map +1 -1
  69. package/dist/core/agent-session-state.d.ts +19 -1
  70. package/dist/core/agent-session-state.d.ts.map +1 -1
  71. package/dist/core/agent-session-state.js +41 -6
  72. package/dist/core/agent-session-state.js.map +1 -1
  73. package/dist/core/auth-storage-backends.d.ts +3 -1
  74. package/dist/core/auth-storage-backends.d.ts.map +1 -1
  75. package/dist/core/auth-storage-backends.js +79 -12
  76. package/dist/core/auth-storage-backends.js.map +1 -1
  77. package/dist/core/client-identity.d.ts +8 -0
  78. package/dist/core/client-identity.d.ts.map +1 -0
  79. package/dist/core/client-identity.js +16 -0
  80. package/dist/core/client-identity.js.map +1 -0
  81. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  82. package/dist/core/compaction/planner-outcome.js +2 -1
  83. package/dist/core/compaction/planner-outcome.js.map +1 -1
  84. package/dist/core/execution-model-router.d.ts +18 -0
  85. package/dist/core/execution-model-router.d.ts.map +1 -1
  86. package/dist/core/execution-model-router.js +14 -8
  87. package/dist/core/execution-model-router.js.map +1 -1
  88. package/dist/core/extension-oauth-refresh-rejection.d.ts +12 -0
  89. package/dist/core/extension-oauth-refresh-rejection.d.ts.map +1 -0
  90. package/dist/core/extension-oauth-refresh-rejection.js +70 -0
  91. package/dist/core/extension-oauth-refresh-rejection.js.map +1 -0
  92. package/dist/core/extension-startup-failure.d.ts +30 -0
  93. package/dist/core/extension-startup-failure.d.ts.map +1 -0
  94. package/dist/core/extension-startup-failure.js +62 -0
  95. package/dist/core/extension-startup-failure.js.map +1 -0
  96. package/dist/core/extensions/context-types.d.ts +2 -0
  97. package/dist/core/extensions/context-types.d.ts.map +1 -1
  98. package/dist/core/extensions/context-types.js.map +1 -1
  99. package/dist/core/extensions/provider-types.d.ts +2 -0
  100. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  101. package/dist/core/extensions/provider-types.js.map +1 -1
  102. package/dist/core/extensions/runner-context.d.ts +1 -0
  103. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  104. package/dist/core/extensions/runner-context.js +8 -0
  105. package/dist/core/extensions/runner-context.js.map +1 -1
  106. package/dist/core/extensions/runner.d.ts +1 -0
  107. package/dist/core/extensions/runner.d.ts.map +1 -1
  108. package/dist/core/extensions/runner.js +3 -0
  109. package/dist/core/extensions/runner.js.map +1 -1
  110. package/dist/core/extensions/runtime-types.d.ts +1 -0
  111. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  112. package/dist/core/extensions/runtime-types.js.map +1 -1
  113. package/dist/core/extensions/workflow-run-control-hub.d.ts +1 -0
  114. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
  115. package/dist/core/extensions/workflow-run-control-hub.js +3 -0
  116. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
  117. package/dist/core/extensions/workflow-run-control.d.ts +8 -0
  118. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
  119. package/dist/core/extensions/workflow-run-control.js.map +1 -1
  120. package/dist/core/model-config.d.ts +28 -0
  121. package/dist/core/model-config.d.ts.map +1 -1
  122. package/dist/core/model-fallback-failures.d.ts.map +1 -1
  123. package/dist/core/model-fallback-failures.js +12 -0
  124. package/dist/core/model-fallback-failures.js.map +1 -1
  125. package/dist/core/model-resolver-defaults.js +1 -1
  126. package/dist/core/model-resolver-defaults.js.map +1 -1
  127. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  128. package/dist/core/model-runtime-streaming.js +9 -3
  129. package/dist/core/model-runtime-streaming.js.map +1 -1
  130. package/dist/core/model-runtime.d.ts +5 -0
  131. package/dist/core/model-runtime.d.ts.map +1 -1
  132. package/dist/core/model-runtime.js +6 -0
  133. package/dist/core/model-runtime.js.map +1 -1
  134. package/dist/core/provider-composer-internal.d.ts +8 -6
  135. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  136. package/dist/core/provider-composer-internal.js +21 -8
  137. package/dist/core/provider-composer-internal.js.map +1 -1
  138. package/dist/core/sdk.d.ts.map +1 -1
  139. package/dist/core/sdk.js +12 -4
  140. package/dist/core/sdk.js.map +1 -1
  141. package/dist/core/storage/session/sql-session-store.d.ts +35 -0
  142. package/dist/core/storage/session/sql-session-store.d.ts.map +1 -1
  143. package/dist/core/storage/session/sql-session-store.js +158 -42
  144. package/dist/core/storage/session/sql-session-store.js.map +1 -1
  145. package/dist/core/structured-output/deadline.d.ts +40 -0
  146. package/dist/core/structured-output/deadline.d.ts.map +1 -0
  147. package/dist/core/structured-output/deadline.js +110 -0
  148. package/dist/core/structured-output/deadline.js.map +1 -0
  149. package/dist/core/structured-output/index.d.ts.map +1 -1
  150. package/dist/core/structured-output/index.js +103 -47
  151. package/dist/core/structured-output/index.js.map +1 -1
  152. package/dist/core/structured-output/rejection-detail.d.ts +9 -0
  153. package/dist/core/structured-output/rejection-detail.d.ts.map +1 -0
  154. package/dist/core/structured-output/rejection-detail.js +129 -0
  155. package/dist/core/structured-output/rejection-detail.js.map +1 -0
  156. package/dist/core/structured-output/types.d.ts +8 -1
  157. package/dist/core/structured-output/types.d.ts.map +1 -1
  158. package/dist/core/structured-output/types.js.map +1 -1
  159. package/dist/core/tasks/completion.d.ts +7 -1
  160. package/dist/core/tasks/completion.d.ts.map +1 -1
  161. package/dist/core/tasks/completion.js +28 -6
  162. package/dist/core/tasks/completion.js.map +1 -1
  163. package/dist/core/tasks/contracts.d.ts +6 -1
  164. package/dist/core/tasks/contracts.d.ts.map +1 -1
  165. package/dist/core/tasks/contracts.js.map +1 -1
  166. package/dist/core/tasks/pause.d.ts +2 -1
  167. package/dist/core/tasks/pause.d.ts.map +1 -1
  168. package/dist/core/tasks/pause.js +3 -2
  169. package/dist/core/tasks/pause.js.map +1 -1
  170. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  171. package/dist/core/tools/bash-pty-native.js +10 -5
  172. package/dist/core/tools/bash-pty-native.js.map +1 -1
  173. package/dist/core/tools/bash.d.ts.map +1 -1
  174. package/dist/core/tools/bash.js +16 -32
  175. package/dist/core/tools/bash.js.map +1 -1
  176. package/dist/core/tools/grep.js +1 -1
  177. package/dist/core/tools/grep.js.map +1 -1
  178. package/dist/core/tools/kill.d.ts.map +1 -1
  179. package/dist/core/tools/kill.js +17 -3
  180. package/dist/core/tools/kill.js.map +1 -1
  181. package/dist/core/tools/shell-task-render.d.ts +55 -0
  182. package/dist/core/tools/shell-task-render.d.ts.map +1 -0
  183. package/dist/core/tools/shell-task-render.js +123 -0
  184. package/dist/core/tools/shell-task-render.js.map +1 -0
  185. package/dist/core/tools/shell-task-status.d.ts +52 -0
  186. package/dist/core/tools/shell-task-status.d.ts.map +1 -0
  187. package/dist/core/tools/shell-task-status.js +184 -0
  188. package/dist/core/tools/shell-task-status.js.map +1 -0
  189. package/dist/core/tools/structured-output.d.ts +5 -0
  190. package/dist/core/tools/structured-output.d.ts.map +1 -1
  191. package/dist/core/tools/structured-output.js +3 -0
  192. package/dist/core/tools/structured-output.js.map +1 -1
  193. package/dist/extensions/codemode/execute.d.ts.map +1 -1
  194. package/dist/extensions/codemode/execute.js +134 -57
  195. package/dist/extensions/codemode/execute.js.map +1 -1
  196. package/dist/extensions/mcp/config.d.ts.map +1 -1
  197. package/dist/extensions/mcp/config.js +3 -2
  198. package/dist/extensions/mcp/config.js.map +1 -1
  199. package/dist/index-extensions.d.ts +1 -0
  200. package/dist/index-extensions.d.ts.map +1 -1
  201. package/dist/index-extensions.js +3 -0
  202. package/dist/index-extensions.js.map +1 -1
  203. package/dist/index.d.ts +3 -1
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +3 -1
  206. package/dist/index.js.map +1 -1
  207. package/dist/main.d.ts.map +1 -1
  208. package/dist/main.js +19 -6
  209. package/dist/main.js.map +1 -1
  210. package/dist/modes/interactive/components/task-row.d.ts.map +1 -1
  211. package/dist/modes/interactive/components/task-row.js +11 -1
  212. package/dist/modes/interactive/components/task-row.js.map +1 -1
  213. package/dist/modes/interactive/interactive-auth-routing.js +12 -10
  214. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  215. package/dist/modes/interactive/interactive-extension-custom-ui.js +20 -30
  216. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  217. package/dist/modes/interactive/interactive-extension-dialogs.js +23 -96
  218. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  219. package/dist/modes/interactive/interactive-extension-runtime.js +7 -8
  220. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  221. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  222. package/dist/modes/interactive/interactive-input-handling.js +27 -4
  223. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  224. package/dist/modes/interactive/interactive-mode-base.d.ts +20 -10
  225. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  226. package/dist/modes/interactive/interactive-mode-base.js +40 -5
  227. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  228. package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -1
  229. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  230. package/dist/modes/interactive/interactive-mode-deps.js +1 -1
  231. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  232. package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -4
  233. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  234. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  235. package/dist/modes/interactive/interactive-mode-types.d.ts +4 -1
  236. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  237. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  238. package/dist/modes/interactive/interactive-prompt-restore.d.ts +3 -0
  239. package/dist/modes/interactive/interactive-prompt-restore.d.ts.map +1 -1
  240. package/dist/modes/interactive/interactive-prompt-restore.js +9 -1
  241. package/dist/modes/interactive/interactive-prompt-restore.js.map +1 -1
  242. package/dist/modes/interactive/interactive-prompt-turn.js +30 -2
  243. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  244. package/dist/modes/interactive/interactive-queueing.js +43 -8
  245. package/dist/modes/interactive/interactive-queueing.js.map +1 -1
  246. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  247. package/dist/modes/interactive/interactive-startup.js +12 -3
  248. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  249. package/dist/modes/interactive/theme/color-utils.d.ts +6 -1
  250. package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
  251. package/dist/modes/interactive/theme/color-utils.js +39 -17
  252. package/dist/modes/interactive/theme/color-utils.js.map +1 -1
  253. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  254. package/dist/modes/interactive/theme/theme-class.js +2 -2
  255. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  256. package/dist/modes/interactive/theme/theme-tokens.d.ts +6 -0
  257. package/dist/modes/interactive/theme/theme-tokens.d.ts.map +1 -1
  258. package/dist/modes/interactive/theme/theme-tokens.js +7 -3
  259. package/dist/modes/interactive/theme/theme-tokens.js.map +1 -1
  260. package/dist/modes/interactive-engine/isolated-auth.d.ts +3 -0
  261. package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
  262. package/dist/modes/interactive-engine/isolated-auth.js +13 -1
  263. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
  264. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  265. package/dist/modes/interactive-engine/isolated-runtime.js +11 -2
  266. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  267. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +8 -0
  268. package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
  269. package/dist/modes/interactive-engine/remote-model-catalog.js +54 -0
  270. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  271. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  272. package/dist/modes/rpc/rpc-command-handler.js +4 -13
  273. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  274. package/dist/modes/rpc/rpc-model-catalog.d.ts +9 -0
  275. package/dist/modes/rpc/rpc-model-catalog.d.ts.map +1 -0
  276. package/dist/modes/rpc/rpc-model-catalog.js +19 -0
  277. package/dist/modes/rpc/rpc-model-catalog.js.map +1 -0
  278. package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
  279. package/dist/modes/rpc/rpc-provider-auth.js +2 -6
  280. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  281. package/dist/modes/rpc/rpc-types.d.ts +6 -0
  282. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  283. package/dist/modes/rpc/rpc-types.js.map +1 -1
  284. package/dist/utils/changelog.d.ts +6 -0
  285. package/dist/utils/changelog.d.ts.map +1 -1
  286. package/dist/utils/changelog.js +11 -0
  287. package/dist/utils/changelog.js.map +1 -1
  288. package/dist/utils/clipboard.d.ts.map +1 -1
  289. package/dist/utils/clipboard.js +4 -0
  290. package/dist/utils/clipboard.js.map +1 -1
  291. package/dist/utils/tools-manager.d.ts.map +1 -1
  292. package/dist/utils/tools-manager.js +3 -2
  293. package/dist/utils/tools-manager.js.map +1 -1
  294. package/docs/background-tasks.md +5 -3
  295. package/docs/codemode.md +2 -2
  296. package/docs/custom-provider/oauth.md +42 -1
  297. package/docs/custom-provider/registration.md +2 -0
  298. package/docs/environment-variables.md +1 -0
  299. package/docs/extensions/api-reference.md +3 -4
  300. package/docs/extensions/authoring.md +1 -1
  301. package/docs/extensions/events.md +1 -1
  302. package/docs/models-configuration.md +9 -0
  303. package/docs/models.md +3 -1
  304. package/docs/providers.md +4 -4
  305. package/docs/rpc/protocol.md +4 -2
  306. package/docs/sdk/reference.md +2 -0
  307. package/docs/sdk/structured-decisions.md +7 -5
  308. package/docs/sdk.md +5 -2
  309. package/docs/settings.md +4 -2
  310. package/docs/subagents/reference.md +1 -1
  311. package/docs/subagents.md +15 -1
  312. package/docs/themes/reference.md +3 -1
  313. package/docs/usage.md +3 -1
  314. package/docs/workflows/api-reference.md +28 -0
  315. package/docs/workflows/authoring.md +1 -1
  316. package/docs/workflows/operations.md +2 -2
  317. package/npm-shrinkwrap.json +67 -54
  318. package/package.json +6 -6
  319. package/schemas/models.schema.json +21 -0
  320. package/dist/core/provider-attribution.d.ts +0 -4
  321. package/dist/core/provider-attribution.d.ts.map +0 -1
  322. package/dist/core/provider-attribution.js +0 -87
  323. package/dist/core/provider-attribution.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { assertChatModel, lazyStream, ModelsError, normalizeContext, } from "@bastani/pi-ai";
1
+ import { assertChatModel, getOpenCodeSessionHeaders, lazyStream, ModelsError, normalizeContext, } from "@bastani/pi-ai";
2
2
  import { normalizeModelProvider } from "./azure-provider-compat.js";
3
3
  import { usesChatGptCodexTransport, withChatGptCodexTransportRouting } from "./fast-model-routing.js";
4
4
  import { installCodexFastRouteWebSocketIdentity } from "./fast-model-routing-transport.js";
@@ -67,7 +67,13 @@ export class ModelRuntimeStreaming {
67
67
  options?.signal?.throwIfAborted();
68
68
  if (!resolution)
69
69
  throw new ModelsError("auth", `Provider is not configured: ${model.provider}`);
70
- let headers = mergeHeaders(resolution.auth.headers, providerOptions.headers);
70
+ const requestModel = resolution.auth.baseUrl ? { ...model, baseUrl: resolution.auth.baseUrl } : model;
71
+ // An SDK-prepared request already carries the session header, which `before_provider_headers`
72
+ // handlers may have removed, so only other requests add it here.
73
+ const sessionHeaders = preparedRequestAuth
74
+ ? undefined
75
+ : getOpenCodeSessionHeaders(requestModel, providerOptions.sessionId);
76
+ let headers = mergeHeaders(mergeHeaders(sessionHeaders, resolution.auth.headers), providerOptions.headers);
71
77
  if (transformHeaders)
72
78
  headers = await transformHeaders(headers ?? {});
73
79
  options?.signal?.throwIfAborted();
@@ -88,7 +94,7 @@ export class ModelRuntimeStreaming {
88
94
  env: Object.entries(env ?? {}).sort(([left], [right]) => left.localeCompare(right)),
89
95
  baseUrl: resolution.auth.baseUrl ?? model.baseUrl,
90
96
  }),
91
- model: resolution.auth.baseUrl ? { ...model, baseUrl: resolution.auth.baseUrl } : model,
97
+ model: requestModel,
92
98
  options: {
93
99
  ...providerOptions,
94
100
  apiKey,
@@ -1 +1 @@
1
- {"version":3,"file":"model-runtime-streaming.js","sourceRoot":"","sources":["../../src/core/model-runtime-streaming.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype ApiStreamOptions,\n\ttype AssistantMessage,\n\ttype AssistantMessageEvent,\n\ttype AssistantMessageEventStream,\n\ttype AuthResult,\n\tassertChatModel,\n\ttype Context,\n\ttype DeferredCancelOptions,\n\ttype DeferredFetchOptions,\n\ttype DeferredHandle,\n\tlazyStream,\n\ttype Model,\n\ttype ModelsApiStreamOptions,\n\ttype ModelsDeferredCancelOptions,\n\ttype ModelsDeferredFetchOptions,\n\tModelsError,\n\ttype ModelsRequestTransforms,\n\ttype ModelsSimpleStreamOptions,\n\ttype MutableModels,\n\tnormalizeContext,\n\ttype Provider,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n} from \"@bastani/pi-ai\";\nimport { normalizeModelProvider } from \"./azure-provider-compat.js\";\nimport { usesChatGptCodexTransport, withChatGptCodexTransportRouting } from \"./fast-model-routing.ts\";\nimport { installCodexFastRouteWebSocketIdentity } from \"./fast-model-routing-transport.ts\";\nimport type { ModelRuntimeAuthOverrides } from \"./model-runtime-types.ts\";\n\nexport function mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged = { ...base };\n\tfor (const [name, value] of Object.entries(override ?? {})) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tfor (const existingName of Object.keys(merged)) {\n\t\t\tif (existingName.toLowerCase() === lowerName) delete merged[existingName];\n\t\t}\n\t\tmerged[name] = value;\n\t}\n\treturn merged;\n}\n\n/** SDK-owned request-auth result so transport preparation does not start a second deadline. */\nexport interface PreparedRequestAuth {\n\treadonly resolution: AuthResult | undefined;\n\treadonly reprepare?: () => Promise<{ model: Model<Api>; options: ModelRuntimeSimpleStreamOptions }>;\n\treadonly streamSimple?: (\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions,\n\t) => AssistantMessageEventStream;\n}\n\nexport type ModelRuntimePreparedStreamOptions = StreamOptions &\n\tModelsRequestTransforms & {\n\t\tpreparedRequestAuth?: PreparedRequestAuth;\n\t};\n\nexport type ModelRuntimeSimpleStreamOptions = ModelsSimpleStreamOptions & {\n\tpreparedRequestAuth?: PreparedRequestAuth;\n};\n\ntype ResolveAuth = (model: Model<Api>, overrides?: ModelRuntimeAuthOverrides) => Promise<AuthResult | undefined>;\n/** Whether an extension owns this model's transport, in which case it owns its serialization too. */\ntype OwnsExtensionTransport = (model: Model<Api>) => boolean;\n\n/** Streaming request preparation split from ModelRuntime solely for Atomic's 500-line source gate. */\nexport class ModelRuntimeStreaming {\n\tprivate readonly models: MutableModels;\n\tprivate readonly resolveAuth: ResolveAuth;\n\tprivate readonly ownsExtensionTransport: OwnsExtensionTransport;\n\tprivate readonly transportModel: (model: Model<Api>) => Model<Api>;\n\tprivate readonly reloadCredentials: () => Promise<void>;\n\tconstructor(\n\t\tmodels: MutableModels,\n\t\tresolveAuth: ResolveAuth,\n\t\townsExtensionTransport: OwnsExtensionTransport,\n\t\ttransportModel: (model: Model<Api>) => Model<Api> = (model) => model,\n\t\treloadCredentials: () => Promise<void> = async () => {},\n\t) {\n\t\tthis.models = models;\n\t\tthis.resolveAuth = resolveAuth;\n\t\tthis.ownsExtensionTransport = ownsExtensionTransport;\n\t\tthis.transportModel = transportModel;\n\t\tthis.reloadCredentials = reloadCredentials;\n\t}\n\n\t/**\n\t * Attach the first-party ChatGPT Codex routing identity to a prepared request.\n\t *\n\t * This must happen *after* `prepareRequest`, not before it. The wrapper works by mutating the\n\t * header object it captures at construction, and `prepareRequest` rebuilds headers through\n\t * `mergeHeaders`, which copies — so a wrapper applied upstream is silently inert. The wrapper\n\t * decides from the final payload whether the request is priority, so a normal model still ends up\n\t * with `originator: pi` and no routing hint.\n\t */\n\tprivate withCodexRouting<TOptions extends StreamOptions>(model: Model<Api>, options: TOptions): TOptions {\n\t\tmodel = this.transportModel(model);\n\t\tif (!usesChatGptCodexTransport(model) || this.ownsExtensionTransport(model)) return options;\n\t\t// The WebSocket handshake builds its headers inside pi-ai and the constructor can be cached, so\n\t\t// the identity is repaired through the global constructor rather than per-request options. CLI\n\t\t// entrypoints install this through the HTTP dispatcher; a pure SDK embedder never does.\n\t\tif (options.transport !== \"sse\") installCodexFastRouteWebSocketIdentity();\n\t\treturn withChatGptCodexTransportRouting(model, options);\n\t}\n\n\tprivate async prepareRequest(\n\t\tmodel: Model<Api>,\n\t\toptions: ModelRuntimePreparedStreamOptions | undefined,\n\t): Promise<{ provider: Provider; model: Model<Api>; options: StreamOptions; authIdentity: string }> {\n\t\tassertChatModel(model);\n\t\tmodel = normalizeModelProvider(model);\n\t\tconst provider = this.models.getProvider(model.provider);\n\t\tif (!provider) throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\tconst { transformHeaders, preparedRequestAuth, ...providerOptions } = options ?? {};\n\t\tconst resolution = preparedRequestAuth\n\t\t\t? preparedRequestAuth.resolution\n\t\t\t: await this.resolveAuth(model, {\n\t\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\t\tenv: options?.env,\n\t\t\t\t\tsignal: options?.signal,\n\t\t\t\t});\n\t\toptions?.signal?.throwIfAborted();\n\t\tif (!resolution) throw new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n\n\t\tlet headers = mergeHeaders(resolution.auth.headers, providerOptions.headers);\n\t\tif (transformHeaders) headers = await transformHeaders(headers ?? {});\n\t\toptions?.signal?.throwIfAborted();\n\t\tconst env =\n\t\t\tresolution.env || providerOptions.env\n\t\t\t\t? { ...(resolution.env ?? {}), ...(providerOptions.env ?? {}) }\n\t\t\t\t: undefined;\n\t\tconst apiKey = providerOptions.apiKey ?? resolution.auth.apiKey;\n\t\tconst credentialHeaderNames = new Set(\n\t\t\tObject.keys(resolution.auth.headers ?? {}).map((name) => name.toLowerCase()),\n\t\t);\n\t\treturn {\n\t\t\tprovider,\n\t\t\tauthIdentity: JSON.stringify({\n\t\t\t\tapiKey,\n\t\t\t\theaders: Object.entries(headers ?? {})\n\t\t\t\t\t.map(([name, value]) => [name.toLowerCase(), value] as const)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t([name]) =>\n\t\t\t\t\t\t\tcredentialHeaderNames.has(name) ||\n\t\t\t\t\t\t\t/^(?:authorization|proxy-authorization|x-api-key|api-key|cookie)$/.test(name),\n\t\t\t\t\t)\n\t\t\t\t\t.sort(([left], [right]) => left.localeCompare(right)),\n\t\t\t\tenv: Object.entries(env ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n\t\t\t\tbaseUrl: resolution.auth.baseUrl ?? model.baseUrl,\n\t\t\t}),\n\t\t\tmodel: resolution.auth.baseUrl ? { ...model, baseUrl: resolution.auth.baseUrl } : model,\n\t\t\toptions: {\n\t\t\t\t...providerOptions,\n\t\t\t\tapiKey,\n\t\t\t\theaders,\n\t\t\t\tenv,\n\t\t\t},\n\t\t};\n\t}\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream {\n\t\tconst transcript = normalizeContext(context);\n\t\treturn this.streamWithCredentialRetry(model, options, (prepared) =>\n\t\t\tprepared.provider.stream(\n\t\t\t\tprepared.model as Model<TApi>,\n\t\t\t\ttranscript,\n\t\t\t\tthis.withCodexRouting(prepared.model, prepared.options) as ApiStreamOptions<TApi>,\n\t\t\t),\n\t\t);\n\t}\n\n\tcomplete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage> {\n\t\treturn this.stream(model, context, options).result();\n\t}\n\n\tstreamSimple(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions?: ModelRuntimeSimpleStreamOptions,\n\t): AssistantMessageEventStream {\n\t\tconst transcript = normalizeContext(context);\n\t\tconst dispatch = options?.preparedRequestAuth?.streamSimple;\n\t\treturn this.streamWithCredentialRetry(model, options, (prepared) =>\n\t\t\tdispatch\n\t\t\t\t? dispatch(prepared.model, context, prepared.options as SimpleStreamOptions)\n\t\t\t\t: prepared.provider.streamSimple(\n\t\t\t\t\t\tprepared.model,\n\t\t\t\t\t\ttranscript,\n\t\t\t\t\t\tthis.withCodexRouting(prepared.model, prepared.options) as SimpleStreamOptions,\n\t\t\t\t\t),\n\t\t);\n\t}\n\n\tcompleteSimple(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions?: ModelRuntimeSimpleStreamOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn this.streamSimple(model, context, options).result();\n\t}\n\n\tprivate streamWithCredentialRetry(\n\t\tmodel: Model<Api>,\n\t\toptions: ModelRuntimePreparedStreamOptions | undefined,\n\t\tinvoke: (prepared: Awaited<ReturnType<ModelRuntimeStreaming[\"prepareRequest\"]>>) => AssistantMessageEventStream,\n\t): AssistantMessageEventStream {\n\t\tconst prepare = () => this.prepareRequest(model, options);\n\t\tconst reprepareCredentials = async (previous: Awaited<ReturnType<typeof prepare>>) => {\n\t\t\tif (options?.signal?.aborted) return undefined;\n\t\t\tawait this.reloadCredentials();\n\t\t\tconst { preparedRequestAuth: previousAuth, ...callerOptions } = options ?? {};\n\t\t\tconst reprepared = previousAuth?.reprepare ? await previousAuth.reprepare() : undefined;\n\t\t\tconst next = reprepared\n\t\t\t\t? await this.prepareRequest(reprepared.model, {\n\t\t\t\t\t\t...callerOptions,\n\t\t\t\t\t\tapiKey: reprepared.options.apiKey,\n\t\t\t\t\t\theaders: reprepared.options.headers,\n\t\t\t\t\t\tenv: reprepared.options.env,\n\t\t\t\t\t\tpreparedRequestAuth: reprepared.options.preparedRequestAuth,\n\t\t\t\t\t})\n\t\t\t\t: await this.prepareRequest(model, callerOptions);\n\t\t\treturn next.authIdentity !== previous.authIdentity ? next : undefined;\n\t\t};\n\t\tconst retry = (previous: Awaited<ReturnType<typeof prepare>>) =>\n\t\t\treprepareCredentials(previous).catch(() => undefined);\n\t\tconst iterate = async function* (): AsyncGenerator<AssistantMessageEvent> {\n\t\t\tlet prepared = await prepare();\n\t\t\tfor (let attempt = 0; attempt < 2; attempt++) {\n\t\t\t\tconst pending: AssistantMessageEvent[] = [];\n\t\t\t\tlet deliveredContent = false;\n\t\t\t\tlet rejection: AssistantMessageEvent | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst source = invoke(prepared);\n\t\t\t\t\tlet terminal = false;\n\t\t\t\t\tfor await (const event of source) {\n\t\t\t\t\t\tif (event.type === \"start\") {\n\t\t\t\t\t\t\tpending.push(event);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.type === \"error\" &&\n\t\t\t\t\t\t\t!deliveredContent &&\n\t\t\t\t\t\t\tattempt === 0 &&\n\t\t\t\t\t\t\tisCredentialRejection(event.error.errorMessage)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\trejection = event;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyield* pending.splice(0);\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t\tterminal = event.type === \"done\" || event.type === \"error\";\n\t\t\t\t\t\tdeliveredContent = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!rejection && !terminal) {\n\t\t\t\t\t\tconst result = await source.result();\n\t\t\t\t\t\tconst event: AssistantMessageEvent =\n\t\t\t\t\t\t\tresult.stopReason === \"error\" || result.stopReason === \"aborted\"\n\t\t\t\t\t\t\t\t? { type: \"error\", reason: result.stopReason, error: result }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\ttype: \"done\",\n\t\t\t\t\t\t\t\t\t\treason: result.stopReason === \"pending\" ? \"stop\" : result.stopReason,\n\t\t\t\t\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!deliveredContent &&\n\t\t\t\t\t\t\tattempt === 0 &&\n\t\t\t\t\t\t\tresult.stopReason === \"error\" &&\n\t\t\t\t\t\t\tisCredentialRejection(result.errorMessage)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\trejection = event;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tyield* pending;\n\t\t\t\t\t\t\tyield event;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdeliveredContent ||\n\t\t\t\t\t\tattempt !== 0 ||\n\t\t\t\t\t\t!isCredentialRejection(error instanceof Error ? error : String(error))\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\tconst next = await retry(prepared);\n\t\t\t\t\tif (!next) throw error;\n\t\t\t\t\tprepared = next;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!rejection) return;\n\t\t\t\tconst next = await retry(prepared);\n\t\t\t\tif (!next) {\n\t\t\t\t\tyield* pending;\n\t\t\t\t\tyield rejection;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprepared = next;\n\t\t\t}\n\t\t};\n\t\treturn lazyStream(model, async () => iterate());\n\t}\n\tasync fetchDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredFetchOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst prepared = await this.prepareRequest(model, options);\n\t\t\tif (!prepared.provider.fetchDeferred) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t\t}\n\t\t\treturn prepared.provider.fetchDeferred(prepared.model, handle, prepared.options as DeferredFetchOptions);\n\t\t}).result();\n\t}\n\n\tasync cancelDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredCancelOptions,\n\t): Promise<void> {\n\t\tconst prepared = await this.prepareRequest(model, options);\n\t\tif (!prepared.provider.cancelDeferred) {\n\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t}\n\t\tawait prepared.provider.cancelDeferred(prepared.model, handle, prepared.options as DeferredCancelOptions);\n\t}\n}\n\nconst HTTP_401_PATTERN = /^\\W*401\\b|\\b(?:http|status|code|error)\\W{0,3}401\\b|\\(401\\)/i;\nconst CREDENTIAL_REJECTION_PATTERN =\n\t/unauthori[sz]ed|invalid(?:ated)?[_\\s-]*(?:api[_\\s-]*key|(?:access[_\\s-]*|auth[_\\s-]*|oauth[_\\s-]*)?token)|(?:token|api[_\\s-]*key)[_\\s-]*(?:(?:is|has[_\\s-]*been)[_\\s-]*)?(?:invalid|revoked|expired|invalidated)/i;\n\nfunction isCredentialRejection(error: object | string | undefined): boolean {\n\tif (error instanceof Error) {\n\t\tif ((\"status\" in error && error.status === 401) || (\"statusCode\" in error && error.statusCode === 401))\n\t\t\treturn true;\n\t\terror = error.message;\n\t}\n\treturn typeof error === \"string\" && (HTTP_401_PATTERN.test(error) || CREDENTIAL_REJECTION_PATTERN.test(error));\n}\n"]}
1
+ {"version":3,"file":"model-runtime-streaming.js","sourceRoot":"","sources":["../../src/core/model-runtime-streaming.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype ApiStreamOptions,\n\ttype AssistantMessage,\n\ttype AssistantMessageEvent,\n\ttype AssistantMessageEventStream,\n\ttype AuthResult,\n\tassertChatModel,\n\ttype Context,\n\ttype DeferredCancelOptions,\n\ttype DeferredFetchOptions,\n\ttype DeferredHandle,\n\tgetOpenCodeSessionHeaders,\n\tlazyStream,\n\ttype Model,\n\ttype ModelsApiStreamOptions,\n\ttype ModelsDeferredCancelOptions,\n\ttype ModelsDeferredFetchOptions,\n\tModelsError,\n\ttype ModelsRequestTransforms,\n\ttype ModelsSimpleStreamOptions,\n\ttype MutableModels,\n\tnormalizeContext,\n\ttype Provider,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n} from \"@bastani/pi-ai\";\nimport { normalizeModelProvider } from \"./azure-provider-compat.js\";\nimport { usesChatGptCodexTransport, withChatGptCodexTransportRouting } from \"./fast-model-routing.ts\";\nimport { installCodexFastRouteWebSocketIdentity } from \"./fast-model-routing-transport.ts\";\nimport type { ModelRuntimeAuthOverrides } from \"./model-runtime-types.ts\";\n\nexport function mergeHeaders(\n\tbase: ProviderHeaders | undefined,\n\toverride: ProviderHeaders | undefined,\n): ProviderHeaders | undefined {\n\tif (!base && !override) return undefined;\n\tconst merged = { ...base };\n\tfor (const [name, value] of Object.entries(override ?? {})) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tfor (const existingName of Object.keys(merged)) {\n\t\t\tif (existingName.toLowerCase() === lowerName) delete merged[existingName];\n\t\t}\n\t\tmerged[name] = value;\n\t}\n\treturn merged;\n}\n\n/** SDK-owned request-auth result so transport preparation does not start a second deadline. */\nexport interface PreparedRequestAuth {\n\treadonly resolution: AuthResult | undefined;\n\treadonly reprepare?: () => Promise<{ model: Model<Api>; options: ModelRuntimeSimpleStreamOptions }>;\n\treadonly streamSimple?: (\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions: SimpleStreamOptions,\n\t) => AssistantMessageEventStream;\n}\n\nexport type ModelRuntimePreparedStreamOptions = StreamOptions &\n\tModelsRequestTransforms & {\n\t\tpreparedRequestAuth?: PreparedRequestAuth;\n\t};\n\nexport type ModelRuntimeSimpleStreamOptions = ModelsSimpleStreamOptions & {\n\tpreparedRequestAuth?: PreparedRequestAuth;\n};\n\ntype ResolveAuth = (model: Model<Api>, overrides?: ModelRuntimeAuthOverrides) => Promise<AuthResult | undefined>;\n/** Whether an extension owns this model's transport, in which case it owns its serialization too. */\ntype OwnsExtensionTransport = (model: Model<Api>) => boolean;\n\n/** Streaming request preparation split from ModelRuntime solely for Atomic's 500-line source gate. */\nexport class ModelRuntimeStreaming {\n\tprivate readonly models: MutableModels;\n\tprivate readonly resolveAuth: ResolveAuth;\n\tprivate readonly ownsExtensionTransport: OwnsExtensionTransport;\n\tprivate readonly transportModel: (model: Model<Api>) => Model<Api>;\n\tprivate readonly reloadCredentials: () => Promise<void>;\n\tconstructor(\n\t\tmodels: MutableModels,\n\t\tresolveAuth: ResolveAuth,\n\t\townsExtensionTransport: OwnsExtensionTransport,\n\t\ttransportModel: (model: Model<Api>) => Model<Api> = (model) => model,\n\t\treloadCredentials: () => Promise<void> = async () => {},\n\t) {\n\t\tthis.models = models;\n\t\tthis.resolveAuth = resolveAuth;\n\t\tthis.ownsExtensionTransport = ownsExtensionTransport;\n\t\tthis.transportModel = transportModel;\n\t\tthis.reloadCredentials = reloadCredentials;\n\t}\n\n\t/**\n\t * Attach the first-party ChatGPT Codex routing identity to a prepared request.\n\t *\n\t * This must happen *after* `prepareRequest`, not before it. The wrapper works by mutating the\n\t * header object it captures at construction, and `prepareRequest` rebuilds headers through\n\t * `mergeHeaders`, which copies — so a wrapper applied upstream is silently inert. The wrapper\n\t * decides from the final payload whether the request is priority, so a normal model still ends up\n\t * with `originator: pi` and no routing hint.\n\t */\n\tprivate withCodexRouting<TOptions extends StreamOptions>(model: Model<Api>, options: TOptions): TOptions {\n\t\tmodel = this.transportModel(model);\n\t\tif (!usesChatGptCodexTransport(model) || this.ownsExtensionTransport(model)) return options;\n\t\t// The WebSocket handshake builds its headers inside pi-ai and the constructor can be cached, so\n\t\t// the identity is repaired through the global constructor rather than per-request options. CLI\n\t\t// entrypoints install this through the HTTP dispatcher; a pure SDK embedder never does.\n\t\tif (options.transport !== \"sse\") installCodexFastRouteWebSocketIdentity();\n\t\treturn withChatGptCodexTransportRouting(model, options);\n\t}\n\n\tprivate async prepareRequest(\n\t\tmodel: Model<Api>,\n\t\toptions: ModelRuntimePreparedStreamOptions | undefined,\n\t): Promise<{ provider: Provider; model: Model<Api>; options: StreamOptions; authIdentity: string }> {\n\t\tassertChatModel(model);\n\t\tmodel = normalizeModelProvider(model);\n\t\tconst provider = this.models.getProvider(model.provider);\n\t\tif (!provider) throw new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\tconst { transformHeaders, preparedRequestAuth, ...providerOptions } = options ?? {};\n\t\tconst resolution = preparedRequestAuth\n\t\t\t? preparedRequestAuth.resolution\n\t\t\t: await this.resolveAuth(model, {\n\t\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\t\tenv: options?.env,\n\t\t\t\t\tsignal: options?.signal,\n\t\t\t\t});\n\t\toptions?.signal?.throwIfAborted();\n\t\tif (!resolution) throw new ModelsError(\"auth\", `Provider is not configured: ${model.provider}`);\n\n\t\tconst requestModel = resolution.auth.baseUrl ? { ...model, baseUrl: resolution.auth.baseUrl } : model;\n\t\t// An SDK-prepared request already carries the session header, which `before_provider_headers`\n\t\t// handlers may have removed, so only other requests add it here.\n\t\tconst sessionHeaders = preparedRequestAuth\n\t\t\t? undefined\n\t\t\t: getOpenCodeSessionHeaders(requestModel, providerOptions.sessionId);\n\t\tlet headers = mergeHeaders(mergeHeaders(sessionHeaders, resolution.auth.headers), providerOptions.headers);\n\t\tif (transformHeaders) headers = await transformHeaders(headers ?? {});\n\t\toptions?.signal?.throwIfAborted();\n\t\tconst env =\n\t\t\tresolution.env || providerOptions.env\n\t\t\t\t? { ...(resolution.env ?? {}), ...(providerOptions.env ?? {}) }\n\t\t\t\t: undefined;\n\t\tconst apiKey = providerOptions.apiKey ?? resolution.auth.apiKey;\n\t\tconst credentialHeaderNames = new Set(\n\t\t\tObject.keys(resolution.auth.headers ?? {}).map((name) => name.toLowerCase()),\n\t\t);\n\t\treturn {\n\t\t\tprovider,\n\t\t\tauthIdentity: JSON.stringify({\n\t\t\t\tapiKey,\n\t\t\t\theaders: Object.entries(headers ?? {})\n\t\t\t\t\t.map(([name, value]) => [name.toLowerCase(), value] as const)\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t([name]) =>\n\t\t\t\t\t\t\tcredentialHeaderNames.has(name) ||\n\t\t\t\t\t\t\t/^(?:authorization|proxy-authorization|x-api-key|api-key|cookie)$/.test(name),\n\t\t\t\t\t)\n\t\t\t\t\t.sort(([left], [right]) => left.localeCompare(right)),\n\t\t\t\tenv: Object.entries(env ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n\t\t\t\tbaseUrl: resolution.auth.baseUrl ?? model.baseUrl,\n\t\t\t}),\n\t\t\tmodel: requestModel,\n\t\t\toptions: {\n\t\t\t\t...providerOptions,\n\t\t\t\tapiKey,\n\t\t\t\theaders,\n\t\t\t\tenv,\n\t\t\t},\n\t\t};\n\t}\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream {\n\t\tconst transcript = normalizeContext(context);\n\t\treturn this.streamWithCredentialRetry(model, options, (prepared) =>\n\t\t\tprepared.provider.stream(\n\t\t\t\tprepared.model as Model<TApi>,\n\t\t\t\ttranscript,\n\t\t\t\tthis.withCodexRouting(prepared.model, prepared.options) as ApiStreamOptions<TApi>,\n\t\t\t),\n\t\t);\n\t}\n\n\tcomplete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ModelsApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage> {\n\t\treturn this.stream(model, context, options).result();\n\t}\n\n\tstreamSimple(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions?: ModelRuntimeSimpleStreamOptions,\n\t): AssistantMessageEventStream {\n\t\tconst transcript = normalizeContext(context);\n\t\tconst dispatch = options?.preparedRequestAuth?.streamSimple;\n\t\treturn this.streamWithCredentialRetry(model, options, (prepared) =>\n\t\t\tdispatch\n\t\t\t\t? dispatch(prepared.model, context, prepared.options as SimpleStreamOptions)\n\t\t\t\t: prepared.provider.streamSimple(\n\t\t\t\t\t\tprepared.model,\n\t\t\t\t\t\ttranscript,\n\t\t\t\t\t\tthis.withCodexRouting(prepared.model, prepared.options) as SimpleStreamOptions,\n\t\t\t\t\t),\n\t\t);\n\t}\n\n\tcompleteSimple(\n\t\tmodel: Model<Api>,\n\t\tcontext: Context,\n\t\toptions?: ModelRuntimeSimpleStreamOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn this.streamSimple(model, context, options).result();\n\t}\n\n\tprivate streamWithCredentialRetry(\n\t\tmodel: Model<Api>,\n\t\toptions: ModelRuntimePreparedStreamOptions | undefined,\n\t\tinvoke: (prepared: Awaited<ReturnType<ModelRuntimeStreaming[\"prepareRequest\"]>>) => AssistantMessageEventStream,\n\t): AssistantMessageEventStream {\n\t\tconst prepare = () => this.prepareRequest(model, options);\n\t\tconst reprepareCredentials = async (previous: Awaited<ReturnType<typeof prepare>>) => {\n\t\t\tif (options?.signal?.aborted) return undefined;\n\t\t\tawait this.reloadCredentials();\n\t\t\tconst { preparedRequestAuth: previousAuth, ...callerOptions } = options ?? {};\n\t\t\tconst reprepared = previousAuth?.reprepare ? await previousAuth.reprepare() : undefined;\n\t\t\tconst next = reprepared\n\t\t\t\t? await this.prepareRequest(reprepared.model, {\n\t\t\t\t\t\t...callerOptions,\n\t\t\t\t\t\tapiKey: reprepared.options.apiKey,\n\t\t\t\t\t\theaders: reprepared.options.headers,\n\t\t\t\t\t\tenv: reprepared.options.env,\n\t\t\t\t\t\tpreparedRequestAuth: reprepared.options.preparedRequestAuth,\n\t\t\t\t\t})\n\t\t\t\t: await this.prepareRequest(model, callerOptions);\n\t\t\treturn next.authIdentity !== previous.authIdentity ? next : undefined;\n\t\t};\n\t\tconst retry = (previous: Awaited<ReturnType<typeof prepare>>) =>\n\t\t\treprepareCredentials(previous).catch(() => undefined);\n\t\tconst iterate = async function* (): AsyncGenerator<AssistantMessageEvent> {\n\t\t\tlet prepared = await prepare();\n\t\t\tfor (let attempt = 0; attempt < 2; attempt++) {\n\t\t\t\tconst pending: AssistantMessageEvent[] = [];\n\t\t\t\tlet deliveredContent = false;\n\t\t\t\tlet rejection: AssistantMessageEvent | undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst source = invoke(prepared);\n\t\t\t\t\tlet terminal = false;\n\t\t\t\t\tfor await (const event of source) {\n\t\t\t\t\t\tif (event.type === \"start\") {\n\t\t\t\t\t\t\tpending.push(event);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tevent.type === \"error\" &&\n\t\t\t\t\t\t\t!deliveredContent &&\n\t\t\t\t\t\t\tattempt === 0 &&\n\t\t\t\t\t\t\tisCredentialRejection(event.error.errorMessage)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\trejection = event;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyield* pending.splice(0);\n\t\t\t\t\t\tyield event;\n\t\t\t\t\t\tterminal = event.type === \"done\" || event.type === \"error\";\n\t\t\t\t\t\tdeliveredContent = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!rejection && !terminal) {\n\t\t\t\t\t\tconst result = await source.result();\n\t\t\t\t\t\tconst event: AssistantMessageEvent =\n\t\t\t\t\t\t\tresult.stopReason === \"error\" || result.stopReason === \"aborted\"\n\t\t\t\t\t\t\t\t? { type: \"error\", reason: result.stopReason, error: result }\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\ttype: \"done\",\n\t\t\t\t\t\t\t\t\t\treason: result.stopReason === \"pending\" ? \"stop\" : result.stopReason,\n\t\t\t\t\t\t\t\t\t\tmessage: result,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!deliveredContent &&\n\t\t\t\t\t\t\tattempt === 0 &&\n\t\t\t\t\t\t\tresult.stopReason === \"error\" &&\n\t\t\t\t\t\t\tisCredentialRejection(result.errorMessage)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\trejection = event;\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tyield* pending;\n\t\t\t\t\t\t\tyield event;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdeliveredContent ||\n\t\t\t\t\t\tattempt !== 0 ||\n\t\t\t\t\t\t!isCredentialRejection(error instanceof Error ? error : String(error))\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\tconst next = await retry(prepared);\n\t\t\t\t\tif (!next) throw error;\n\t\t\t\t\tprepared = next;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!rejection) return;\n\t\t\t\tconst next = await retry(prepared);\n\t\t\t\tif (!next) {\n\t\t\t\t\tyield* pending;\n\t\t\t\t\tyield rejection;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprepared = next;\n\t\t\t}\n\t\t};\n\t\treturn lazyStream(model, async () => iterate());\n\t}\n\tasync fetchDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredFetchOptions,\n\t): Promise<AssistantMessage> {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst prepared = await this.prepareRequest(model, options);\n\t\t\tif (!prepared.provider.fetchDeferred) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t\t}\n\t\t\treturn prepared.provider.fetchDeferred(prepared.model, handle, prepared.options as DeferredFetchOptions);\n\t\t}).result();\n\t}\n\n\tasync cancelDeferred(\n\t\tmodel: Model<Api>,\n\t\thandle: DeferredHandle,\n\t\toptions?: ModelsDeferredCancelOptions,\n\t): Promise<void> {\n\t\tconst prepared = await this.prepareRequest(model, options);\n\t\tif (!prepared.provider.cancelDeferred) {\n\t\t\tthrow new ModelsError(\"provider\", `Provider ${model.provider} does not support deferred responses`);\n\t\t}\n\t\tawait prepared.provider.cancelDeferred(prepared.model, handle, prepared.options as DeferredCancelOptions);\n\t}\n}\n\nconst HTTP_401_PATTERN = /^\\W*401\\b|\\b(?:http|status|code|error)\\W{0,3}401\\b|\\(401\\)/i;\nconst CREDENTIAL_REJECTION_PATTERN =\n\t/unauthori[sz]ed|invalid(?:ated)?[_\\s-]*(?:api[_\\s-]*key|(?:access[_\\s-]*|auth[_\\s-]*|oauth[_\\s-]*)?token)|(?:token|api[_\\s-]*key)[_\\s-]*(?:(?:is|has[_\\s-]*been)[_\\s-]*)?(?:invalid|revoked|expired|invalidated)/i;\n\nfunction isCredentialRejection(error: object | string | undefined): boolean {\n\tif (error instanceof Error) {\n\t\tif ((\"status\" in error && error.status === 401) || (\"statusCode\" in error && error.statusCode === 401))\n\t\t\treturn true;\n\t\terror = error.message;\n\t}\n\treturn typeof error === \"string\" && (HTTP_401_PATTERN.test(error) || CREDENTIAL_REJECTION_PATTERN.test(error));\n}\n"]}
@@ -119,6 +119,11 @@ export declare class ModelRuntime implements Models {
119
119
  getRegisteredProviderIds(): readonly string[];
120
120
  getRegisteredNativeProvider(providerId: string): Provider | undefined;
121
121
  getOAuthProviderMetadata(): import("./oauth-login.ts").OAuthProviderMetadata[];
122
+ /** Providers that offer API-key login in `/login`. */
123
+ getApiKeyLoginProviderMetadata(): Array<{
124
+ id: string;
125
+ name: string;
126
+ }>;
122
127
  /** @internal Compatibility fallback for ModelRegistry when provider auth is unconfigured. */
123
128
  getCompatibilityRequestConfig(model: Model<Api>): CompatibilityRequestConfig;
124
129
  isUsingOAuth(providerId: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-runtime.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime.ts"],"names":[],"mappings":"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"}
@@ -497,6 +497,12 @@ export class ModelRuntime {
497
497
  getOAuthProviderMetadata() {
498
498
  return collectOAuthProviderMetadata(this.getProviders(), this.extensionProviders);
499
499
  }
500
+ /** Providers that offer API-key login in `/login`. */
501
+ getApiKeyLoginProviderMetadata() {
502
+ return this.getProviders()
503
+ .filter((provider) => provider.auth.apiKey?.login !== undefined)
504
+ .map((provider) => ({ id: provider.id, name: provider.name ?? provider.id }));
505
+ }
500
506
  /** @internal Compatibility fallback for ModelRegistry when provider auth is unconfigured. */
501
507
  getCompatibilityRequestConfig(model) {
502
508
  model = normalizeModelProvider(model);