@bastani/atomic 0.9.18-alpha.5 → 0.9.18-alpha.7

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 (376) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +3 -3
  3. package/dist/builtin/intercom/CHANGELOG.md +39 -0
  4. package/dist/builtin/intercom/README.md +22 -2
  5. package/dist/builtin/intercom/broker/broker.ts +676 -128
  6. package/dist/builtin/intercom/broker/client.ts +151 -35
  7. package/dist/builtin/intercom/broker/delivered-message-cache.ts +497 -37
  8. package/dist/builtin/intercom/broker/framing.ts +4 -2
  9. package/dist/builtin/intercom/broker/paths.ts +10 -0
  10. package/dist/builtin/intercom/broker/pending-send-registry.ts +1 -2
  11. package/dist/builtin/intercom/broker/send-handler.ts +311 -52
  12. package/dist/builtin/intercom/broker/send-signature.ts +4 -2
  13. package/dist/builtin/intercom/broker/socket-writes.ts +103 -0
  14. package/dist/builtin/intercom/broker/spawn.ts +9 -4
  15. package/dist/builtin/intercom/index.bundle.mjs +1410 -212
  16. package/dist/builtin/intercom/package.json +2 -2
  17. package/dist/builtin/intercom/recoverable-disconnect.ts +52 -0
  18. package/dist/builtin/intercom/retry-policy.ts +8 -0
  19. package/dist/builtin/intercom/skills/intercom/SKILL.md +17 -9
  20. package/dist/builtin/intercom/types.ts +27 -8
  21. package/dist/builtin/intercom/workflow-stage-path-matching.ts +90 -0
  22. package/dist/builtin/intercom/workflow-stage-target.ts +57 -0
  23. package/dist/builtin/mcp/index.bundle.mjs +427 -126
  24. package/dist/builtin/mcp/package.json +2 -2
  25. package/dist/builtin/subagents/CHANGELOG.md +19 -0
  26. package/dist/builtin/subagents/README.md +3 -3
  27. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  28. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  29. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  30. package/dist/builtin/subagents/agents/codebase-online-researcher.md +11 -11
  31. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  32. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  33. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  34. package/dist/builtin/subagents/agents/debugger.md +3 -3
  35. package/dist/builtin/subagents/agents/worker.md +2 -2
  36. package/dist/builtin/subagents/package.json +3 -3
  37. package/dist/builtin/subagents/skills/qlty/SKILL.md +29 -101
  38. package/dist/builtin/subagents/skills/qlty/references/manual-configuration.md +52 -0
  39. package/dist/builtin/subagents/skills/subagent/SKILL.md +11 -11
  40. package/dist/builtin/subagents/src/extension/index.bundle.mjs +49 -132
  41. package/dist/builtin/web-access/package.json +2 -2
  42. package/dist/builtin/workflows/CHANGELOG.md +46 -0
  43. package/dist/builtin/workflows/README.md +7 -7
  44. package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
  45. package/dist/builtin/workflows/builtin/{chunk-szz1ajz9.js → chunk-42s7sw0b.js} +9 -2
  46. package/dist/builtin/workflows/builtin/{chunk-2dqb5s2q.js → chunk-79fjkcvh.js} +1 -1
  47. package/dist/builtin/workflows/builtin/{chunk-n58a7v26.js → chunk-b0v2xab1.js} +181 -10
  48. package/dist/builtin/workflows/builtin/{chunk-fghhy2a5.js → chunk-ed4jfn5t.js} +23 -5
  49. package/dist/builtin/workflows/builtin/{chunk-h3r2vkzc.js → chunk-hqpe2cyx.js} +60 -21
  50. package/dist/builtin/workflows/builtin/{chunk-hzzn6adg.js → chunk-k3w87x8y.js} +1 -1
  51. package/dist/builtin/workflows/builtin/{chunk-82ha8p41.js → chunk-n8h4yyew.js} +1 -1
  52. package/dist/builtin/workflows/builtin/{chunk-qwzvgxnq.js → chunk-reqr3sr3.js} +1 -1
  53. package/dist/builtin/workflows/builtin/{chunk-c53y8bdh.js → chunk-wgccch41.js} +1 -1
  54. package/dist/builtin/workflows/builtin/{chunk-0x6e303p.js → chunk-zbekjqew.js} +20 -7
  55. package/dist/builtin/workflows/builtin/{chunk-29wrp38a.js → chunk-ze5x3d1r.js} +1 -1
  56. package/dist/builtin/workflows/builtin/classify-and-act.js +2 -2
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +2 -2
  58. package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
  59. package/dist/builtin/workflows/builtin/goal.js +3 -3
  60. package/dist/builtin/workflows/builtin/index.js +11 -11
  61. package/dist/builtin/workflows/builtin/loop-until-done.js +2 -2
  62. package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
  63. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  64. package/dist/builtin/workflows/builtin/steering-context.js +1 -1
  65. package/dist/builtin/workflows/builtin/tournament.js +2 -2
  66. package/dist/builtin/workflows/package.json +2 -2
  67. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +39 -52
  68. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +9 -37
  69. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5.md +49 -0
  70. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5_1.md +57 -0
  71. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_4_8.md +57 -0
  72. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_5.md +47 -0
  73. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_sonnet_5.md +57 -0
  74. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_5.md +60 -0
  75. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_6.md +58 -0
  76. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_astra.md +58 -0
  77. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +18 -4
  78. package/dist/builtin/workflows/src/extension/index.bundle.mjs +3194 -737
  79. package/dist/builtin/workflows/src/index.js +899 -436
  80. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +0 -10
  81. package/dist/cli/list-models.d.ts.map +1 -1
  82. package/dist/cli/list-models.js +4 -0
  83. package/dist/cli/list-models.js.map +1 -1
  84. package/dist/client/index.d.ts +1 -2
  85. package/dist/client/index.d.ts.map +1 -1
  86. package/dist/client/index.js +1 -2
  87. package/dist/client/index.js.map +1 -1
  88. package/dist/config.d.ts +0 -9
  89. package/dist/config.d.ts.map +1 -1
  90. package/dist/config.js +0 -45
  91. package/dist/config.js.map +1 -1
  92. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  93. package/dist/core/agent-session-compaction.js +8 -6
  94. package/dist/core/agent-session-compaction.js.map +1 -1
  95. package/dist/core/agent-session-methods.d.ts +1 -0
  96. package/dist/core/agent-session-methods.d.ts.map +1 -1
  97. package/dist/core/agent-session-methods.js.map +1 -1
  98. package/dist/core/agent-session-models.d.ts.map +1 -1
  99. package/dist/core/agent-session-models.js +3 -4
  100. package/dist/core/agent-session-models.js.map +1 -1
  101. package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
  102. package/dist/core/agent-session-queue-pause.js +6 -0
  103. package/dist/core/agent-session-queue-pause.js.map +1 -1
  104. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  105. package/dist/core/agent-session-runtime.js +13 -5
  106. package/dist/core/agent-session-runtime.js.map +1 -1
  107. package/dist/core/agent-session-tool-hooks.js +1 -1
  108. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  109. package/dist/core/agent-session-tree.d.ts.map +1 -1
  110. package/dist/core/agent-session-tree.js +8 -0
  111. package/dist/core/agent-session-tree.js.map +1 -1
  112. package/dist/core/agent-session.d.ts +2 -0
  113. package/dist/core/agent-session.d.ts.map +1 -1
  114. package/dist/core/agent-session.js +2 -0
  115. package/dist/core/agent-session.js.map +1 -1
  116. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  117. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  118. package/dist/core/compaction/branch-summarization.js +4 -4
  119. package/dist/core/compaction/branch-summarization.js.map +1 -1
  120. package/dist/core/extensions/api-types.d.ts +8 -2
  121. package/dist/core/extensions/api-types.d.ts.map +1 -1
  122. package/dist/core/extensions/api-types.js.map +1 -1
  123. package/dist/core/extensions/context-types.d.ts +12 -0
  124. package/dist/core/extensions/context-types.d.ts.map +1 -1
  125. package/dist/core/extensions/context-types.js.map +1 -1
  126. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
  127. package/dist/core/extensions/runner-shortcuts.js +0 -1
  128. package/dist/core/extensions/runner-shortcuts.js.map +1 -1
  129. package/dist/core/fast-model-routing-transport.d.ts +12 -0
  130. package/dist/core/fast-model-routing-transport.d.ts.map +1 -0
  131. package/dist/core/{codex-fast-mode-transport.js → fast-model-routing-transport.js} +29 -29
  132. package/dist/core/fast-model-routing-transport.js.map +1 -0
  133. package/dist/core/fast-model-routing.d.ts +57 -0
  134. package/dist/core/fast-model-routing.d.ts.map +1 -0
  135. package/dist/core/fast-model-routing.js +201 -0
  136. package/dist/core/fast-model-routing.js.map +1 -0
  137. package/dist/core/fast-model-variants.d.ts +98 -0
  138. package/dist/core/fast-model-variants.d.ts.map +1 -0
  139. package/dist/core/fast-model-variants.js +148 -0
  140. package/dist/core/fast-model-variants.js.map +1 -0
  141. package/dist/core/http-dispatcher.d.ts.map +1 -1
  142. package/dist/core/http-dispatcher.js +4 -2
  143. package/dist/core/http-dispatcher.js.map +1 -1
  144. package/dist/core/keybindings.d.ts +0 -10
  145. package/dist/core/keybindings.d.ts.map +1 -1
  146. package/dist/core/keybindings.js +0 -8
  147. package/dist/core/keybindings.js.map +1 -1
  148. package/dist/core/messages.d.ts +1 -1
  149. package/dist/core/messages.d.ts.map +1 -1
  150. package/dist/core/messages.js.map +1 -1
  151. package/dist/core/model-config.d.ts +15 -0
  152. package/dist/core/model-config.d.ts.map +1 -1
  153. package/dist/core/model-config.js +3 -0
  154. package/dist/core/model-config.js.map +1 -1
  155. package/dist/core/model-resolver-initial.js +1 -1
  156. package/dist/core/model-resolver-initial.js.map +1 -1
  157. package/dist/core/model-runtime-streaming.d.ts +14 -1
  158. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  159. package/dist/core/model-runtime-streaming.js +25 -3
  160. package/dist/core/model-runtime-streaming.js.map +1 -1
  161. package/dist/core/model-runtime.d.ts +39 -2
  162. package/dist/core/model-runtime.d.ts.map +1 -1
  163. package/dist/core/model-runtime.js +91 -7
  164. package/dist/core/model-runtime.js.map +1 -1
  165. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  166. package/dist/core/provider-composer-internal.js +8 -2
  167. package/dist/core/provider-composer-internal.js.map +1 -1
  168. package/dist/core/sdk.d.ts.map +1 -1
  169. package/dist/core/sdk.js +18 -18
  170. package/dist/core/sdk.js.map +1 -1
  171. package/dist/core/session-manager-archive.d.ts.map +1 -1
  172. package/dist/core/session-manager-archive.js +25 -2
  173. package/dist/core/session-manager-archive.js.map +1 -1
  174. package/dist/core/settings-manager-core.d.ts +0 -2
  175. package/dist/core/settings-manager-core.d.ts.map +1 -1
  176. package/dist/core/settings-manager-core.js +2 -9
  177. package/dist/core/settings-manager-core.js.map +1 -1
  178. package/dist/core/settings-manager-internals.d.ts +0 -1
  179. package/dist/core/settings-manager-internals.d.ts.map +1 -1
  180. package/dist/core/settings-manager-internals.js.map +1 -1
  181. package/dist/core/settings-manager-ui-accessors.d.ts +0 -8
  182. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  183. package/dist/core/settings-manager-ui-accessors.js +0 -53
  184. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  185. package/dist/core/settings-manager.d.ts +1 -1
  186. package/dist/core/settings-manager.d.ts.map +1 -1
  187. package/dist/core/settings-manager.js.map +1 -1
  188. package/dist/core/settings-types.d.ts +0 -5
  189. package/dist/core/settings-types.d.ts.map +1 -1
  190. package/dist/core/settings-types.js.map +1 -1
  191. package/dist/core/skills.d.ts +1 -1
  192. package/dist/core/skills.d.ts.map +1 -1
  193. package/dist/core/skills.js +4 -2
  194. package/dist/core/skills.js.map +1 -1
  195. package/dist/core/slash-commands.d.ts.map +1 -1
  196. package/dist/core/slash-commands.js +0 -1
  197. package/dist/core/slash-commands.js.map +1 -1
  198. package/dist/core/system-prompt.js +7 -7
  199. package/dist/core/system-prompt.js.map +1 -1
  200. package/dist/core/tools/edit.d.ts +1 -1
  201. package/dist/core/tools/edit.d.ts.map +1 -1
  202. package/dist/core/tools/edit.js +128 -3
  203. package/dist/core/tools/edit.js.map +1 -1
  204. package/dist/core/tools/hashline.d.ts +2 -2
  205. package/dist/core/tools/hashline.d.ts.map +1 -1
  206. package/dist/core/tools/hashline.js +40 -10
  207. package/dist/core/tools/hashline.js.map +1 -1
  208. package/dist/core/tools/write.d.ts.map +1 -1
  209. package/dist/core/tools/write.js +8 -8
  210. package/dist/core/tools/write.js.map +1 -1
  211. package/dist/core/workflow-stage-admission.d.ts +6 -0
  212. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  213. package/dist/core/workflow-stage-admission.js +14 -0
  214. package/dist/core/workflow-stage-admission.js.map +1 -1
  215. package/dist/index-extensions.d.ts +1 -1
  216. package/dist/index-extensions.d.ts.map +1 -1
  217. package/dist/index-extensions.js.map +1 -1
  218. package/dist/index.d.ts +5 -5
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +4 -5
  221. package/dist/index.js.map +1 -1
  222. package/dist/modes/interactive/components/atomic-working-status.d.ts +4 -0
  223. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/atomic-working-status.js +26 -1
  225. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  226. package/dist/modes/interactive/components/custom-editor.d.ts +7 -0
  227. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/custom-editor.js +43 -0
  229. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  230. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  231. package/dist/modes/interactive/components/footer.js +0 -6
  232. package/dist/modes/interactive/components/footer.js.map +1 -1
  233. package/dist/modes/interactive/components/index.d.ts +1 -2
  234. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  235. package/dist/modes/interactive/components/index.js +0 -1
  236. package/dist/modes/interactive/components/index.js.map +1 -1
  237. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  238. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  239. package/dist/modes/interactive/components/model-selector.js +6 -11
  240. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  241. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -5
  242. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  243. package/dist/modes/interactive/components/scoped-models-selector.js +3 -19
  244. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  245. package/dist/modes/interactive/components/settings-selector-items.js +1 -1
  246. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  247. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -2
  248. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  249. package/dist/modes/interactive/components/thinking-selector.js +4 -11
  250. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  251. package/dist/modes/interactive/components/transcript-follow-indicator.js +3 -3
  252. package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
  253. package/dist/modes/interactive/interactive-agent-events.js +8 -8
  254. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  255. package/dist/modes/interactive/interactive-autocomplete.js +5 -16
  256. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  257. package/dist/modes/interactive/interactive-bash-compact.js +2 -9
  258. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  259. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  260. package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
  261. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  262. package/dist/modes/interactive/interactive-editor-actions.js +2 -2
  263. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  264. package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
  265. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  266. package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
  267. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  268. package/dist/modes/interactive/interactive-extension-runtime.js +20 -10
  269. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  270. package/dist/modes/interactive/interactive-hotkeys-debug.js +1 -5
  271. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  272. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -1
  273. package/dist/modes/interactive/interactive-initial-session-binding.js +3 -0
  274. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -1
  275. package/dist/modes/interactive/interactive-input-handling.js +0 -8
  276. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  277. package/dist/modes/interactive/interactive-mode-base.d.ts +5 -1
  278. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  279. package/dist/modes/interactive/interactive-mode-base.js +15 -9
  280. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  281. package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -3
  282. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  283. package/dist/modes/interactive/interactive-mode-deps.js +1 -3
  284. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  285. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -12
  286. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  287. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  288. package/dist/modes/interactive/interactive-model-routing.js +10 -13
  289. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  290. package/dist/modes/interactive/interactive-render-chat.js +29 -0
  291. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  292. package/dist/modes/interactive/interactive-selectors.js +2 -32
  293. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  294. package/dist/modes/interactive/interactive-session-routing.js +1 -5
  295. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  296. package/dist/modes/interactive/interactive-session-runtime.js +1 -5
  297. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  298. package/dist/modes/interactive/interactive-slash-commands.js +6 -13
  299. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  300. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  301. package/dist/modes/interactive/interactive-startup.js +19 -13
  302. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  303. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  304. package/dist/modes/interactive/interactive-tui.js +27 -3
  305. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  306. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  307. package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
  308. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  309. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  310. package/dist/modes/interactive-engine/isolated-runtime.js +4 -1
  311. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  312. package/dist/utils/child-process.d.ts.map +1 -1
  313. package/dist/utils/child-process.js +13 -6
  314. package/dist/utils/child-process.js.map +1 -1
  315. package/dist/utils/exif-orientation.d.ts.map +1 -1
  316. package/dist/utils/exif-orientation.js +2 -3
  317. package/dist/utils/exif-orientation.js.map +1 -1
  318. package/dist/utils/tools-manager.d.ts +1 -0
  319. package/dist/utils/tools-manager.d.ts.map +1 -1
  320. package/dist/utils/tools-manager.js +33 -18
  321. package/dist/utils/tools-manager.js.map +1 -1
  322. package/docs/custom-provider.md +2 -0
  323. package/docs/development.md +17 -0
  324. package/docs/docs.json +14 -2
  325. package/docs/extensions.md +9 -4
  326. package/docs/intercom.md +41 -7
  327. package/docs/keybindings.md +8 -6
  328. package/docs/models/evals.md +394 -0
  329. package/docs/models/model-selection.md +54 -27
  330. package/docs/models/pareto-efficiency.md +33 -16
  331. package/docs/models.md +37 -1
  332. package/docs/packages.md +2 -2
  333. package/docs/providers.md +44 -20
  334. package/docs/quickstart.md +8 -6
  335. package/docs/rpc.md +3 -3
  336. package/docs/sdk.md +2 -16
  337. package/docs/settings.md +19 -22
  338. package/docs/skills.md +4 -2
  339. package/docs/subagents.md +9 -3
  340. package/docs/tools/edit.md +373 -0
  341. package/docs/tools.md +3 -7
  342. package/docs/tui.md +2 -1
  343. package/docs/usage.md +3 -5
  344. package/docs/workflows/api-reference.md +1395 -0
  345. package/docs/workflows/authoring.md +678 -0
  346. package/docs/workflows/builtins.md +245 -0
  347. package/docs/workflows/operations.md +811 -0
  348. package/docs/workflows/reliable-design.md +2099 -0
  349. package/docs/workflows/verification.md +62 -0
  350. package/docs/workflows.md +15 -5183
  351. package/npm-shrinkwrap.json +584 -69
  352. package/package.json +7 -7
  353. package/dist/client/remote-session.d.ts +0 -64
  354. package/dist/client/remote-session.d.ts.map +0 -1
  355. package/dist/client/remote-session.js +0 -351
  356. package/dist/client/remote-session.js.map +0 -1
  357. package/dist/client/transcript.d.ts +0 -12
  358. package/dist/client/transcript.d.ts.map +0 -1
  359. package/dist/client/transcript.js +0 -98
  360. package/dist/client/transcript.js.map +0 -1
  361. package/dist/core/codex-fast-mode-transport.d.ts +0 -12
  362. package/dist/core/codex-fast-mode-transport.d.ts.map +0 -1
  363. package/dist/core/codex-fast-mode-transport.js.map +0 -1
  364. package/dist/core/codex-fast-mode.d.ts +0 -53
  365. package/dist/core/codex-fast-mode.d.ts.map +0 -1
  366. package/dist/core/codex-fast-mode.js +0 -249
  367. package/dist/core/codex-fast-mode.js.map +0 -1
  368. package/dist/modes/interactive/components/fast-mode-selector.d.ts +0 -27
  369. package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +0 -1
  370. package/dist/modes/interactive/components/fast-mode-selector.js +0 -107
  371. package/dist/modes/interactive/components/fast-mode-selector.js.map +0 -1
  372. package/dist/server/create-harness.d.ts +0 -53
  373. package/dist/server/create-harness.d.ts.map +0 -1
  374. package/dist/server/create-harness.js +0 -360
  375. package/dist/server/create-harness.js.map +0 -1
  376. package/docs/models/artificial-analysis-index.md +0 -83
@@ -1,12 +0,0 @@
1
- export declare const CODEX_FAST_MODE_ORIGINATOR = "codex_cli_rs";
2
- export declare const CODEX_FAST_MODE_ROUTING_HEADER = "x-codex-routing-hint";
3
- export declare function isFirstPartyCodexHost(input: string | URL | Request): boolean;
4
- export declare function isFirstPartyCodexBaseUrl(input: string | URL | Request): boolean;
5
- export declare function isFirstPartyCodexEndpoint(input: string | URL | Request): boolean;
6
- export declare function markCodexFastModeRequest(headers: Record<string, string | null>, priority: boolean): void;
7
- export declare function clearCodexFastModeRequestMarker(headers: Record<string, string | null>): void;
8
- export declare function forceCodexFastModeOriginator(_endpoint: string | URL | Request, headersInit: HeadersInit | undefined): Headers;
9
- export declare function wrapCodexFastModeFetch(fetchImplementation: typeof globalThis.fetch): typeof globalThis.fetch;
10
- export declare function wrapCodexFastModeWebSocket(WebSocketImplementation: typeof globalThis.WebSocket): typeof globalThis.WebSocket;
11
- export declare function installCodexFastModeWebSocketIdentity(): void;
12
- //# sourceMappingURL=codex-fast-mode-transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-fast-mode-transport.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode-transport.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AAkBrE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAG5E;AACD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAK/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,OAAO,CAOhF;AAaD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAIxG;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAI5F;AAED,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EACjC,WAAW,EAAE,WAAW,GAAG,SAAS,GAClC,OAAO,CAWT;AAED,wBAAgB,sBAAsB,CAAC,mBAAmB,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,CAc5G;AAUD,wBAAgB,0BAA0B,CACzC,uBAAuB,EAAE,OAAO,UAAU,CAAC,SAAS,GAClD,OAAO,UAAU,CAAC,SAAS,CA6B7B;AAED,wBAAgB,qCAAqC,IAAI,IAAI,CAG5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-fast-mode-transport.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode-transport.ts"],"names":[],"mappings":"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","sourcesContent":["export const CODEX_FAST_MODE_ORIGINATOR = \"codex_cli_rs\";\nexport const CODEX_FAST_MODE_ROUTING_HEADER = \"x-codex-routing-hint\";\nconst CODEX_FAST_MODE_REQUEST_MARKER_HEADER = \"x-atomic-codex-fast-mode\";\nconst CODEX_FAST_MODE_PRIORITY_MARKER_VALUE = \"priority\";\nconst CODEX_FAST_MODE_NORMAL_MARKER_VALUE = \"normal\";\n\nconst CODEX_BACKEND_HOSTS = new Set([\"chatgpt.com\", \"chat.openai.com\"]);\nconst wrappedWebSockets = new WeakMap<typeof globalThis.WebSocket, typeof globalThis.WebSocket>();\nconst installedWebSocketWrappers = new WeakSet<typeof globalThis.WebSocket>();\n\nfunction requestUrl(input: string | URL | Request): URL | undefined {\n\ttry {\n\t\tif (typeof input === \"string\" || input instanceof URL) return new URL(input);\n\t\treturn new URL(input.url);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function isFirstPartyCodexHost(input: string | URL | Request): boolean {\n\tconst url = requestUrl(input);\n\treturn url !== undefined && CODEX_BACKEND_HOSTS.has(url.hostname.toLowerCase());\n}\nexport function isFirstPartyCodexBaseUrl(input: string | URL | Request): boolean {\n\tconst url = requestUrl(input);\n\tif (url === undefined || !isFirstPartyCodexHost(url)) return false;\n\tconst path = url.pathname.replace(/\\/+$/u, \"\");\n\treturn path === \"/backend-api\" || path === \"/backend-api/codex\" || path === \"/backend-api/codex/responses\";\n}\n\nexport function isFirstPartyCodexEndpoint(input: string | URL | Request): boolean {\n\tconst url = requestUrl(input);\n\treturn (\n\t\turl !== undefined &&\n\t\tisFirstPartyCodexHost(url) &&\n\t\turl.pathname.replace(/\\/+$/u, \"\") === \"/backend-api/codex/responses\"\n\t);\n}\n\nfunction hasCodexPriorityRoutingHint(headers: Headers): boolean {\n\treturn headers.get(CODEX_FAST_MODE_ROUTING_HEADER)?.endsWith(\";tier=priority\") === true;\n}\n\nfunction codexFastModeRequestMarker(headers: Headers): \"normal\" | \"priority\" | undefined {\n\tconst marker = headers.get(CODEX_FAST_MODE_REQUEST_MARKER_HEADER);\n\treturn marker === CODEX_FAST_MODE_PRIORITY_MARKER_VALUE || marker === CODEX_FAST_MODE_NORMAL_MARKER_VALUE\n\t\t? marker\n\t\t: undefined;\n}\n\nexport function markCodexFastModeRequest(headers: Record<string, string | null>, priority: boolean): void {\n\theaders[CODEX_FAST_MODE_REQUEST_MARKER_HEADER] = priority\n\t\t? CODEX_FAST_MODE_PRIORITY_MARKER_VALUE\n\t\t: CODEX_FAST_MODE_NORMAL_MARKER_VALUE;\n}\n\nexport function clearCodexFastModeRequestMarker(headers: Record<string, string | null>): void {\n\tfor (const name of Object.keys(headers)) {\n\t\tif (name.toLowerCase() === CODEX_FAST_MODE_REQUEST_MARKER_HEADER) delete headers[name];\n\t}\n}\n\nexport function forceCodexFastModeOriginator(\n\t_endpoint: string | URL | Request,\n\theadersInit: HeadersInit | undefined,\n): Headers {\n\tconst headers = new Headers(headersInit);\n\tconst marker = codexFastModeRequestMarker(headers);\n\theaders.delete(CODEX_FAST_MODE_REQUEST_MARKER_HEADER);\n\tif (marker === \"priority\" && hasCodexPriorityRoutingHint(headers)) {\n\t\theaders.set(\"originator\", CODEX_FAST_MODE_ORIGINATOR);\n\t} else if (marker !== undefined) {\n\t\theaders.delete(CODEX_FAST_MODE_ROUTING_HEADER);\n\t\tif (headers.get(\"originator\") === CODEX_FAST_MODE_ORIGINATOR) headers.set(\"originator\", \"pi\");\n\t}\n\treturn headers;\n}\n\nexport function wrapCodexFastModeFetch(fetchImplementation: typeof globalThis.fetch): typeof globalThis.fetch {\n\treturn new Proxy(fetchImplementation, {\n\t\tapply(target, thisArg, args: Parameters<typeof globalThis.fetch>) {\n\t\t\tconst [input, init] = args;\n\t\t\tif (!init?.headers) return Reflect.apply(target, thisArg, args);\n\t\t\treturn Reflect.apply(target, thisArg, [\n\t\t\t\tinput,\n\t\t\t\t{\n\t\t\t\t\t...init,\n\t\t\t\t\theaders: forceCodexFastModeOriginator(input, init.headers),\n\t\t\t\t},\n\t\t\t]);\n\t\t},\n\t});\n}\n\nfunction findWebSocketOptionsIndex(args: readonly unknown[]): number | undefined {\n\tfor (let index = 1; index < args.length; index += 1) {\n\t\tconst value = args[index];\n\t\tif (typeof value === \"object\" && value !== null && \"headers\" in value) return index;\n\t}\n\treturn undefined;\n}\n\nexport function wrapCodexFastModeWebSocket(\n\tWebSocketImplementation: typeof globalThis.WebSocket,\n): typeof globalThis.WebSocket {\n\tif (installedWebSocketWrappers.has(WebSocketImplementation)) return WebSocketImplementation;\n\tconst existing = wrappedWebSockets.get(WebSocketImplementation);\n\tif (existing !== undefined) return existing;\n\n\tconst wrapped = new Proxy(WebSocketImplementation, {\n\t\tconstruct(target, args, newTarget) {\n\t\t\tconst endpoint = args[0];\n\t\t\tconst optionsIndex = findWebSocketOptionsIndex(args);\n\t\t\tif ((typeof endpoint !== \"string\" && !(endpoint instanceof URL)) || optionsIndex === undefined) {\n\t\t\t\treturn Reflect.construct(target, args, newTarget);\n\t\t\t}\n\t\t\tconst candidateOptions = args[optionsIndex] as { headers?: HeadersInit };\n\t\t\tconst candidateHeaders = new Headers(candidateOptions.headers);\n\t\t\tif (codexFastModeRequestMarker(candidateHeaders) === undefined) {\n\t\t\t\treturn Reflect.construct(target, args, newTarget);\n\t\t\t}\n\t\t\tconst options = candidateOptions;\n\t\t\tconst nextArgs = [...args];\n\t\t\tnextArgs[optionsIndex] = {\n\t\t\t\t...options,\n\t\t\t\theaders: forceCodexFastModeOriginator(endpoint, options.headers),\n\t\t\t};\n\t\t\treturn Reflect.construct(target, nextArgs, newTarget);\n\t\t},\n\t}) as typeof globalThis.WebSocket;\n\twrappedWebSockets.set(WebSocketImplementation, wrapped);\n\tinstalledWebSocketWrappers.add(wrapped);\n\treturn wrapped;\n}\n\nexport function installCodexFastModeWebSocketIdentity(): void {\n\tif (typeof globalThis.WebSocket !== \"function\") return;\n\tglobalThis.WebSocket = wrapCodexFastModeWebSocket(globalThis.WebSocket);\n}\n"]}
@@ -1,53 +0,0 @@
1
- import type { Credential } from "@bastani/pi-ai";
2
- import { closeOpenAICodexWebSocketSessions } from "@bastani/pi-ai/api/openai-codex-responses";
3
- import { type Api, type AssistantMessageEventStream, type Context, type Model, type OpenAICodexResponsesOptions, type OpenAIResponsesOptions, type ProviderHeaders, type SimpleStreamOptions, type StreamOptions, type ThinkingLevel } from "@bastani/pi-ai/compat";
4
- import type { OrchestrationContext } from "./extensions/index.ts";
5
- export declare const CODEX_FAST_MODE_SERVICE_TIER: "priority";
6
- export interface CodexFastModeResolvedSettings {
7
- chat: boolean;
8
- workflow: boolean;
9
- }
10
- export type CodexFastModeScope = "chat" | "workflow";
11
- export interface CodexFastModeStreamOptions extends SimpleStreamOptions {
12
- serviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;
13
- }
14
- export interface CodexFastModeStreamers {
15
- streamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;
16
- streamOpenAIResponses: (model: Model<"openai-responses">, context: Context, options?: OpenAIResponsesOptions) => AssistantMessageEventStream;
17
- streamOpenAICodexResponses: (model: Model<"openai-codex-responses">, context: Context, options?: OpenAICodexResponsesOptions) => AssistantMessageEventStream;
18
- }
19
- type CodexFastModeModelIdentity = Pick<Model<Api>, "provider"> & Partial<Pick<Model<Api>, "api" | "id">>;
20
- export declare function isCodexFastModeSupportedProvider(provider: string): boolean;
21
- export declare function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean;
22
- export declare function isGitHubCopilotModel(model: Pick<Model<Api>, "provider">): boolean;
23
- export declare function isGitHubCopilotFastModeSupportedModel(model: Pick<Model<Api>, "id" | "provider">, credential: Credential | undefined): boolean;
24
- export declare function isCodexFastModeSupportedModel(model: CodexFastModeModelIdentity, copilotCredential?: Credential): boolean;
25
- export declare function hasSupportedCodexFastModeModel(models: readonly CodexFastModeModelIdentity[], copilotCredential?: Credential): boolean;
26
- export declare function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean;
27
- export declare function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope;
28
- export declare function isCodexFastModeEnabledForScope(settings: CodexFastModeResolvedSettings, scope: CodexFastModeScope): boolean;
29
- export declare function isCodexFastModeEnabledForSession(settings: CodexFastModeResolvedSettings, context: OrchestrationContext | undefined): boolean;
30
- export declare function shouldApplyCodexFastModeForScope(model: CodexFastModeModelIdentity, settings: CodexFastModeResolvedSettings, scope: CodexFastModeScope, copilotCredential?: Credential): boolean;
31
- export declare function shouldApplyCodexFastMode(model: CodexFastModeModelIdentity, settings: CodexFastModeResolvedSettings, context: OrchestrationContext | undefined, copilotCredential?: Credential): boolean;
32
- /**
33
- * Preserve the eager first-party header helper for callers that only know a
34
- * provider and base URL. The shared transport wrapper below recomputes the
35
- * identity from the final payload and also covers aliases and proxies.
36
- */
37
- export declare function usesFirstPartyCodexRouting(model: Pick<Model<Api>, "baseUrl" | "provider">): boolean;
38
- /** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */
39
- export declare function usesChatGptCodexTransport(model: Pick<Model<Api>, "api">): boolean;
40
- export declare function withCodexFastModeHeaders(model: Pick<Model<Api>, "baseUrl" | "id" | "provider">, headers: ProviderHeaders | undefined, enabled: boolean): ProviderHeaders | undefined;
41
- export declare function withCodexFastModeStreamOptions(model: Pick<Model<Api>, "baseUrl" | "id" | "provider">, options: SimpleStreamOptions | undefined, enabled: boolean): CodexFastModeStreamOptions | undefined;
42
- export declare function isCodexFastModeNativeApi(api: Api): api is "openai-responses" | "openai-codex-responses";
43
- export declare function shouldUseNativeCodexFastMode(model: Pick<Model<Api>, "api" | "provider">, options: CodexFastModeStreamOptions | undefined): boolean;
44
- type CloseCodexWebSocketSessions = typeof closeOpenAICodexWebSocketSessions;
45
- export declare function withChatGptCodexTransportRouting<TOptions extends StreamOptions>(model: Model<Api>, options: TOptions, enabled?: boolean, closeWebSocketSessions?: CloseCodexWebSocketSessions): TOptions;
46
- export declare function mapCodexFastModeReasoningEffort(model: Model<Api>, reasoning: ThinkingLevel | undefined): ThinkingLevel | undefined;
47
- export declare function buildOpenAIResponsesCodexFastModeOptions(model: Model<Api>, options: CodexFastModeStreamOptions | undefined): OpenAIResponsesOptions;
48
- export declare function buildOpenAICodexResponsesCodexFastModeOptions(model: Model<Api>, options: CodexFastModeStreamOptions | undefined): OpenAICodexResponsesOptions;
49
- export declare function streamWithCodexFastMode(model: Model<Api>, context: Context, options: CodexFastModeStreamOptions | undefined, streamers?: CodexFastModeStreamers): AssistantMessageEventStream;
50
- export declare function withCodexFastModePayload(payload: unknown, enabled: boolean, model?: Pick<Model<Api>, "id" | "provider">): unknown;
51
- export declare function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string;
52
- export {};
53
- //# sourceMappingURL=codex-fast-mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-fast-mode.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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"}
@@ -1,249 +0,0 @@
1
- import { closeOpenAICodexWebSocketSessions } from "@bastani/pi-ai/api/openai-codex-responses";
2
- import { clampThinkingLevel, streamOpenAICodexResponses, streamOpenAIResponses, streamSimple, } from "@bastani/pi-ai/compat";
3
- import { CODEX_FAST_MODE_ORIGINATOR, CODEX_FAST_MODE_ROUTING_HEADER, clearCodexFastModeRequestMarker, installCodexFastModeWebSocketIdentity, isFirstPartyCodexBaseUrl, markCodexFastModeRequest, wrapCodexFastModeFetch, } from "./codex-fast-mode-transport.js";
4
- export const CODEX_FAST_MODE_SERVICE_TIER = "priority";
5
- const DEFAULT_CODEX_FAST_MODE_STREAMERS = {
6
- streamSimple,
7
- streamOpenAIResponses,
8
- streamOpenAICodexResponses,
9
- };
10
- const CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS = 6 * 60 * 1000;
11
- const codexWebSocketRoutingState = new Map();
12
- export function isCodexFastModeSupportedProvider(provider) {
13
- return provider === "openai" || provider === "openai-codex";
14
- }
15
- export function isCodexFastModeCandidateModelId(modelId) {
16
- const provider = modelId?.split("/", 1)[0];
17
- return provider !== undefined && isCodexFastModeSupportedProvider(provider);
18
- }
19
- export function isGitHubCopilotModel(model) {
20
- return model.provider === "github-copilot";
21
- }
22
- export function isGitHubCopilotFastModeSupportedModel(model, credential) {
23
- if (!isGitHubCopilotModel(model) || credential?.type !== "oauth")
24
- return false;
25
- const fastModelIds = credential.fastModelIds;
26
- return (Array.isArray(fastModelIds) &&
27
- fastModelIds.every((modelId) => typeof modelId === "string") &&
28
- fastModelIds.includes(`${model.id}-fast`));
29
- }
30
- export function isCodexFastModeSupportedModel(model, copilotCredential) {
31
- return (isCodexFastModeSupportedProvider(model.provider) ||
32
- model.api === "openai-codex-responses" ||
33
- (model.id !== undefined &&
34
- isGitHubCopilotFastModeSupportedModel({ provider: model.provider, id: model.id }, copilotCredential)));
35
- }
36
- export function hasSupportedCodexFastModeModel(models, copilotCredential) {
37
- return models.some((model) => isCodexFastModeSupportedModel(model, copilotCredential));
38
- }
39
- export function isWorkflowStageOrchestrationContext(context) {
40
- return context?.kind === "workflow-stage";
41
- }
42
- export function getCodexFastModeScope(context) {
43
- return isWorkflowStageOrchestrationContext(context) ? "workflow" : "chat";
44
- }
45
- export function isCodexFastModeEnabledForScope(settings, scope) {
46
- return settings[scope];
47
- }
48
- export function isCodexFastModeEnabledForSession(settings, context) {
49
- return isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));
50
- }
51
- export function shouldApplyCodexFastModeForScope(model, settings, scope, copilotCredential) {
52
- return isCodexFastModeSupportedModel(model, copilotCredential) && isCodexFastModeEnabledForScope(settings, scope);
53
- }
54
- export function shouldApplyCodexFastMode(model, settings, context, copilotCredential) {
55
- return shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context), copilotCredential);
56
- }
57
- /**
58
- * Preserve the eager first-party header helper for callers that only know a
59
- * provider and base URL. The shared transport wrapper below recomputes the
60
- * identity from the final payload and also covers aliases and proxies.
61
- */
62
- export function usesFirstPartyCodexRouting(model) {
63
- return model.provider === "openai-codex" && isFirstPartyCodexBaseUrl(model.baseUrl);
64
- }
65
- /** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */
66
- export function usesChatGptCodexTransport(model) {
67
- return model.api === "openai-codex-responses";
68
- }
69
- function deleteHeader(headers, name) {
70
- for (const existingName of Object.keys(headers)) {
71
- if (existingName.toLowerCase() === name.toLowerCase())
72
- delete headers[existingName];
73
- }
74
- }
75
- function setHeader(headers, name, value) {
76
- deleteHeader(headers, name);
77
- headers[name] = value;
78
- }
79
- export function withCodexFastModeHeaders(model, headers, enabled) {
80
- if (!enabled || !usesFirstPartyCodexRouting(model))
81
- return headers;
82
- const fastHeaders = { ...(headers ?? {}) };
83
- setHeader(fastHeaders, "originator", CODEX_FAST_MODE_ORIGINATOR);
84
- setHeader(fastHeaders, CODEX_FAST_MODE_ROUTING_HEADER, `model=${model.id};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);
85
- return fastHeaders;
86
- }
87
- export function withCodexFastModeStreamOptions(model, options, enabled) {
88
- if (!enabled || model.provider === "github-copilot") {
89
- return options;
90
- }
91
- return {
92
- ...(options ?? {}),
93
- headers: options?.headers,
94
- serviceTier: CODEX_FAST_MODE_SERVICE_TIER,
95
- };
96
- }
97
- export function isCodexFastModeNativeApi(api) {
98
- return api === "openai-responses" || api === "openai-codex-responses";
99
- }
100
- export function shouldUseNativeCodexFastMode(model, options) {
101
- return (isCodexFastModeSupportedModel(model) &&
102
- isCodexFastModeNativeApi(model.api) &&
103
- options?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER);
104
- }
105
- function payloadRecord(payload) {
106
- return typeof payload === "object" && payload !== null && !Array.isArray(payload)
107
- ? payload
108
- : undefined;
109
- }
110
- function codexEnvironmentScope(env) {
111
- if (!env)
112
- return "none";
113
- const serialized = JSON.stringify(Object.entries(env).sort(([left], [right]) => left.localeCompare(right)));
114
- let hash = 2166136261;
115
- for (let index = 0; index < serialized.length; index += 1) {
116
- hash = Math.imul(hash ^ serialized.charCodeAt(index), 16777619);
117
- }
118
- return (hash >>> 0).toString(16);
119
- }
120
- function updateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions) {
121
- if (options.transport === "sse" || !options.sessionId)
122
- return;
123
- const signature = `${model.provider}\0${model.baseUrl}\0${codexEnvironmentScope(options.env)}\0${priority ? `priority:${routedModel}` : "normal"}`;
124
- const previous = codexWebSocketRoutingState.get(options.sessionId);
125
- if (previous?.signature !== undefined && previous.signature !== signature) {
126
- closeWebSocketSessions(options.sessionId);
127
- }
128
- if (previous)
129
- clearTimeout(previous.expiry);
130
- const expiry = setTimeout(() => {
131
- if (codexWebSocketRoutingState.get(options.sessionId)?.signature === signature) {
132
- codexWebSocketRoutingState.delete(options.sessionId);
133
- }
134
- }, CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS);
135
- expiry.unref?.();
136
- codexWebSocketRoutingState.set(options.sessionId, { signature, expiry });
137
- }
138
- export function withChatGptCodexTransportRouting(model, options, enabled = true, closeWebSocketSessions = closeOpenAICodexWebSocketSessions) {
139
- const headers = { ...(options.headers ?? {}) };
140
- const onPayload = options.onPayload;
141
- return {
142
- ...options,
143
- headers,
144
- fetch: wrapCodexFastModeFetch(options.fetch ?? globalThis.fetch),
145
- onPayload: async (payload, requestModel) => {
146
- const replacement = await onPayload?.(payload, requestModel);
147
- const finalPayload = replacement === undefined ? payload : replacement;
148
- const record = payloadRecord(finalPayload);
149
- const priority = enabled && record?.service_tier === CODEX_FAST_MODE_SERVICE_TIER;
150
- const routedModel = typeof record?.model === "string" ? record.model : model.id;
151
- deleteHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER);
152
- clearCodexFastModeRequestMarker(headers);
153
- if (priority) {
154
- setHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER, `model=${routedModel};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);
155
- }
156
- else {
157
- for (const [name, value] of Object.entries(headers)) {
158
- if (name.toLowerCase() === "originator" && value === CODEX_FAST_MODE_ORIGINATOR)
159
- delete headers[name];
160
- }
161
- }
162
- markCodexFastModeRequest(headers, priority);
163
- updateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions);
164
- return finalPayload;
165
- },
166
- };
167
- }
168
- function buildCodexFastModeBaseProviderOptions(model, options) {
169
- // Native fast-mode streams bypass pi-ai's streamSimple base-options merge.
170
- const samplingParams = model.samplingParams || options?.samplingParams
171
- ? { ...model.samplingParams, ...options?.samplingParams }
172
- : undefined;
173
- const providerOptions = {
174
- samplingParams,
175
- temperature: options?.temperature,
176
- maxTokens: options?.maxTokens,
177
- signal: options?.signal,
178
- apiKey: options?.apiKey,
179
- fetch: options?.fetch,
180
- env: options?.env,
181
- telemetryContext: options?.telemetryContext,
182
- transport: options?.transport,
183
- cacheRetention: options?.cacheRetention,
184
- sessionId: options?.sessionId,
185
- onPayload: options?.onPayload,
186
- onResponse: options?.onResponse,
187
- headers: options?.headers,
188
- timeoutMs: options?.timeoutMs,
189
- websocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,
190
- streamDeadlineMs: options?.streamDeadlineMs,
191
- maxRetries: options?.maxRetries,
192
- maxRetryDelayMs: options?.maxRetryDelayMs,
193
- metadata: options?.metadata,
194
- };
195
- return usesChatGptCodexTransport(model) ? withChatGptCodexTransportRouting(model, providerOptions) : providerOptions;
196
- }
197
- export function mapCodexFastModeReasoningEffort(model, reasoning) {
198
- const clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;
199
- return clampedReasoning === "off" ? undefined : clampedReasoning;
200
- }
201
- export function buildOpenAIResponsesCodexFastModeOptions(model, options) {
202
- return {
203
- ...buildCodexFastModeBaseProviderOptions(model, options),
204
- reasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),
205
- serviceTier: options?.serviceTier,
206
- };
207
- }
208
- export function buildOpenAICodexResponsesCodexFastModeOptions(model, options) {
209
- return {
210
- ...buildCodexFastModeBaseProviderOptions(model, options),
211
- reasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),
212
- serviceTier: options?.serviceTier,
213
- };
214
- }
215
- export function streamWithCodexFastMode(model, context, options, streamers = DEFAULT_CODEX_FAST_MODE_STREAMERS) {
216
- if (shouldUseNativeCodexFastMode(model, options)) {
217
- if (model.api === "openai-responses") {
218
- return streamers.streamOpenAIResponses(model, context, buildOpenAIResponsesCodexFastModeOptions(model, options));
219
- }
220
- // The WebSocket handshake builds its headers inside pi-ai, and the runtime
221
- // constructor can be cached before the first turn, so repair the identity
222
- // through the global constructor rather than per-request options.
223
- if (options?.transport !== "sse" && usesChatGptCodexTransport(model)) {
224
- installCodexFastModeWebSocketIdentity();
225
- }
226
- return streamers.streamOpenAICodexResponses(model, context, buildOpenAICodexResponsesCodexFastModeOptions(model, options));
227
- }
228
- return streamers.streamSimple(model, context, options);
229
- }
230
- function isObjectPayload(payload) {
231
- return typeof payload === "object" && payload !== null && !Array.isArray(payload);
232
- }
233
- export function withCodexFastModePayload(payload, enabled, model) {
234
- if (!enabled || !isObjectPayload(payload))
235
- return payload;
236
- if (model?.provider === "github-copilot") {
237
- return payload.model === model.id ? { ...payload, model: `${model.id}-fast` } : payload;
238
- }
239
- if (payload.service_tier !== undefined)
240
- return payload;
241
- return {
242
- ...payload,
243
- service_tier: CODEX_FAST_MODE_SERVICE_TIER,
244
- };
245
- }
246
- export function formatCodexFastModeModelLabel(modelName, enabled) {
247
- return enabled ? `${modelName} fast` : modelName;
248
- }
249
- //# sourceMappingURL=codex-fast-mode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-fast-mode.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAIN,kBAAkB,EAOlB,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,GAEZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,0BAA0B,EAC1B,8BAA8B,EAC9B,+BAA+B,EAC/B,qCAAqC,EACrC,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACtB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAmB,CAAC;AA2BhE,MAAM,iCAAiC,GAA2B;IACjE,YAAY;IACZ,qBAAqB;IACrB,0BAA0B;CAC1B,CAAC;AAIF,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5D,MAAM,0BAA0B,GAAG,IAAI,GAAG,EAAwE,CAAC;AAEnH,MAAM,UAAU,gCAAgC,CAAC,QAAgB;IAChE,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,cAAc,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAA2B;IAC1E,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,QAAQ,KAAK,SAAS,IAAI,gCAAgC,CAAC,QAAQ,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAmC;IACvE,OAAO,KAAK,CAAC,QAAQ,KAAK,gBAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qCAAqC,CACpD,KAA0C,EAC1C,UAAkC;IAElC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/E,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,OAAO,CACN,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAC3B,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC;QAC5D,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,CACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,KAAiC,EACjC,iBAA8B;IAE9B,OAAO,CACN,gCAAgC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAChD,KAAK,CAAC,GAAG,KAAK,wBAAwB;QACtC,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS;YACtB,qCAAqC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CACtG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,MAA6C,EAC7C,iBAA8B;IAE9B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,OAAyC;IAC5F,OAAO,OAAO,EAAE,IAAI,KAAK,gBAAgB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAyC;IAC9E,OAAO,mCAAmC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,QAAuC,EACvC,KAAyB;IAEzB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,QAAuC,EACvC,OAAyC;IAEzC,OAAO,8BAA8B,CAAC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,KAAiC,EACjC,QAAuC,EACvC,KAAyB,EACzB,iBAA8B;IAE9B,OAAO,6BAA6B,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,8BAA8B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,KAAiC,EACjC,QAAuC,EACvC,OAAyC,EACzC,iBAA8B;IAE9B,OAAO,gCAAgC,CAAC,KAAK,EAAE,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC7G,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAA+C;IACzF,OAAO,KAAK,CAAC,QAAQ,KAAK,cAAc,IAAI,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,yBAAyB,CAAC,KAA8B;IACvE,OAAO,KAAK,CAAC,GAAG,KAAK,wBAAwB,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB,EAAE,IAAY;IAC3D,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IACrF,CAAC;AACF,CAAC;AAED,SAAS,SAAS,CAAC,OAAwB,EAAE,IAAY,EAAE,KAAa;IACvE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,KAAsD,EACtD,OAAoC,EACpC,OAAgB;IAEhB,IAAI,CAAC,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACnE,MAAM,WAAW,GAAoB,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAC5D,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;IACjE,SAAS,CAAC,WAAW,EAAE,8BAA8B,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC,CAAC;IACjH,OAAO,WAAW,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,KAAsD,EACtD,OAAwC,EACxC,OAAgB;IAEhB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,OAAO;QACN,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,WAAW,EAAE,4BAA4B;KACzC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAQ;IAChD,OAAO,GAAG,KAAK,kBAAkB,IAAI,GAAG,KAAK,wBAAwB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,KAA2C,EAC3C,OAA+C;IAE/C,OAAO,CACN,6BAA6B,CAAC,KAAK,CAAC;QACpC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC;QACnC,OAAO,EAAE,WAAW,KAAK,4BAA4B,CACrD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACtC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAChF,CAAC,CAAE,OAAmC;QACtC,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAyB;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IACxB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,CAAC;AAGD,SAAS,gCAAgC,CACxC,KAA+C,EAC/C,WAAmB,EACnB,OAA+D,EAC/D,QAAiB,EACjB,sBAAmD;IAEnD,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO;IAC9D,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,KAAK,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnJ,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC3E,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,QAAQ;QAAE,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,IAAI,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,SAAU,CAAC,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACjF,0BAA0B,CAAC,MAAM,CAAC,OAAO,CAAC,SAAU,CAAC,CAAC;QACvD,CAAC;IACF,CAAC,EAAE,qCAAqC,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,0BAA0B,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,KAAiB,EACjB,OAAiB,EACjB,OAAO,GAAG,IAAI,EACd,sBAAsB,GAAgC,iCAAiC;IAEvF,MAAM,OAAO,GAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,OAAO;QACN,GAAG,OAAO;QACV,OAAO;QACP,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QAChE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;YAC1C,MAAM,WAAW,GAAG,MAAM,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC;YACvE,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,OAAO,IAAI,MAAM,EAAE,YAAY,KAAK,4BAA4B,CAAC;YAClF,MAAM,WAAW,GAAG,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAChF,YAAY,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;YACtD,+BAA+B,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,QAAQ,EAAE,CAAC;gBACd,SAAS,CACR,OAAO,EACP,8BAA8B,EAC9B,SAAS,WAAW,SAAS,4BAA4B,EAAE,CAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrD,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,KAAK,KAAK,0BAA0B;wBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvG,CAAC;YACF,CAAC;YACD,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5C,gCAAgC,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;YAChG,OAAO,YAAY,CAAC;QACrB,CAAC;KACW,CAAC;AACf,CAAC;AAED,SAAS,qCAAqC,CAC7C,KAAiB,EACjB,OAA+C;IAE/C,2EAA2E;IAC3E,MAAM,cAAc,GACnB,KAAK,CAAC,cAAc,IAAI,OAAO,EAAE,cAAc;QAC9C,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE;QACzD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,eAAe,GAAkB;QACtC,cAAc;QACd,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,MAAM,EAAE,OAAO,EAAE,MAAM;QACvB,KAAK,EAAE,OAAO,EAAE,KAAK;QACrB,GAAG,EAAE,OAAO,EAAE,GAAG;QACjB,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;QAC3C,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,cAAc,EAAE,OAAO,EAAE,cAAc;QACvC,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,yBAAyB,EAAE,OAAO,EAAE,yBAAyB;QAC7D,gBAAgB,EAAE,OAAO,EAAE,gBAAgB;QAC3C,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,QAAQ,EAAE,OAAO,EAAE,QAAQ;KAC3B,CAAC;IACF,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACtH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC9C,KAAiB,EACjB,SAAoC;IAEpC,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,OAAO,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,wCAAwC,CACvD,KAAiB,EACjB,OAA+C;IAE/C,OAAO;QACN,GAAG,qCAAqC,CAAC,KAAK,EAAE,OAAO,CAAC;QACxD,eAAe,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;QAC3E,WAAW,EAAE,OAAO,EAAE,WAAW;KACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC5D,KAAiB,EACjB,OAA+C;IAE/C,OAAO;QACN,GAAG,qCAAqC,CAAC,KAAK,EAAE,OAAO,CAAC;QACxD,eAAe,EAAE,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;QAC3E,WAAW,EAAE,OAAO,EAAE,WAAW;KACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,KAAiB,EACjB,OAAgB,EAChB,OAA+C,EAC/C,SAAS,GAA2B,iCAAiC;IAErE,IAAI,4BAA4B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,qBAAqB,CACrC,KAAkC,EAClC,OAAO,EACP,wCAAwC,CAAC,KAAK,EAAE,OAAO,CAAC,CACxD,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,OAAO,EAAE,SAAS,KAAK,KAAK,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,qCAAqC,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,SAAS,CAAC,0BAA0B,CAC1C,KAAwC,EACxC,OAAO,EACP,6CAA6C,CAAC,KAAK,EAAE,OAAO,CAAC,CAC7D,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACxC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,OAAgB,EAChB,OAAgB,EAChB,KAA2C;IAE3C,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1D,IAAI,KAAK,EAAE,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAEvD,OAAO;QACN,GAAG,OAAO;QACV,YAAY,EAAE,4BAA4B;KAC1C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,SAAiB,EAAE,OAAgB;IAChF,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC","sourcesContent":["import type { Credential } from \"@bastani/pi-ai\";\nimport { closeOpenAICodexWebSocketSessions } from \"@bastani/pi-ai/api/openai-codex-responses\";\nimport {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tclampThinkingLevel,\n\ttype Model,\n\ttype OpenAICodexResponsesOptions,\n\ttype OpenAIResponsesOptions,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n\tstreamOpenAICodexResponses,\n\tstreamOpenAIResponses,\n\tstreamSimple,\n\ttype ThinkingLevel,\n} from \"@bastani/pi-ai/compat\";\nimport {\n\tCODEX_FAST_MODE_ORIGINATOR,\n\tCODEX_FAST_MODE_ROUTING_HEADER,\n\tclearCodexFastModeRequestMarker,\n\tinstallCodexFastModeWebSocketIdentity,\n\tisFirstPartyCodexBaseUrl,\n\tmarkCodexFastModeRequest,\n\twrapCodexFastModeFetch,\n} from \"./codex-fast-mode-transport.ts\";\nimport type { OrchestrationContext } from \"./extensions/index.ts\";\n\nexport const CODEX_FAST_MODE_SERVICE_TIER = \"priority\" as const;\n\nexport interface CodexFastModeResolvedSettings {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport type CodexFastModeScope = \"chat\" | \"workflow\";\n\nexport interface CodexFastModeStreamOptions extends SimpleStreamOptions {\n\tserviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;\n}\n\nexport interface CodexFastModeStreamers {\n\tstreamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\tstreamOpenAIResponses: (\n\t\tmodel: Model<\"openai-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAIResponsesOptions,\n\t) => AssistantMessageEventStream;\n\tstreamOpenAICodexResponses: (\n\t\tmodel: Model<\"openai-codex-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAICodexResponsesOptions,\n\t) => AssistantMessageEventStream;\n}\n\nconst DEFAULT_CODEX_FAST_MODE_STREAMERS: CodexFastModeStreamers = {\n\tstreamSimple,\n\tstreamOpenAIResponses,\n\tstreamOpenAICodexResponses,\n};\n\ntype CodexFastModeModelIdentity = Pick<Model<Api>, \"provider\"> & Partial<Pick<Model<Api>, \"api\" | \"id\">>;\n\nconst CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS = 6 * 60 * 1000;\nconst codexWebSocketRoutingState = new Map<string, { signature: string; expiry: ReturnType<typeof setTimeout> }>();\n\nexport function isCodexFastModeSupportedProvider(provider: string): boolean {\n\treturn provider === \"openai\" || provider === \"openai-codex\";\n}\n\nexport function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean {\n\tconst provider = modelId?.split(\"/\", 1)[0];\n\treturn provider !== undefined && isCodexFastModeSupportedProvider(provider);\n}\n\nexport function isGitHubCopilotModel(model: Pick<Model<Api>, \"provider\">): boolean {\n\treturn model.provider === \"github-copilot\";\n}\n\nexport function isGitHubCopilotFastModeSupportedModel(\n\tmodel: Pick<Model<Api>, \"id\" | \"provider\">,\n\tcredential: Credential | undefined,\n): boolean {\n\tif (!isGitHubCopilotModel(model) || credential?.type !== \"oauth\") return false;\n\tconst fastModelIds = credential.fastModelIds;\n\treturn (\n\t\tArray.isArray(fastModelIds) &&\n\t\tfastModelIds.every((modelId) => typeof modelId === \"string\") &&\n\t\tfastModelIds.includes(`${model.id}-fast`)\n\t);\n}\n\nexport function isCodexFastModeSupportedModel(\n\tmodel: CodexFastModeModelIdentity,\n\tcopilotCredential?: Credential,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedProvider(model.provider) ||\n\t\tmodel.api === \"openai-codex-responses\" ||\n\t\t(model.id !== undefined &&\n\t\t\tisGitHubCopilotFastModeSupportedModel({ provider: model.provider, id: model.id }, copilotCredential))\n\t);\n}\n\nexport function hasSupportedCodexFastModeModel(\n\tmodels: readonly CodexFastModeModelIdentity[],\n\tcopilotCredential?: Credential,\n): boolean {\n\treturn models.some((model) => isCodexFastModeSupportedModel(model, copilotCredential));\n}\n\nexport function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean {\n\treturn context?.kind === \"workflow-stage\";\n}\n\nexport function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope {\n\treturn isWorkflowStageOrchestrationContext(context) ? \"workflow\" : \"chat\";\n}\n\nexport function isCodexFastModeEnabledForScope(\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn settings[scope];\n}\n\nexport function isCodexFastModeEnabledForSession(\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));\n}\n\nexport function shouldApplyCodexFastModeForScope(\n\tmodel: CodexFastModeModelIdentity,\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n\tcopilotCredential?: Credential,\n): boolean {\n\treturn isCodexFastModeSupportedModel(model, copilotCredential) && isCodexFastModeEnabledForScope(settings, scope);\n}\n\nexport function shouldApplyCodexFastMode(\n\tmodel: CodexFastModeModelIdentity,\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n\tcopilotCredential?: Credential,\n): boolean {\n\treturn shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context), copilotCredential);\n}\n\n/**\n * Preserve the eager first-party header helper for callers that only know a\n * provider and base URL. The shared transport wrapper below recomputes the\n * identity from the final payload and also covers aliases and proxies.\n */\nexport function usesFirstPartyCodexRouting(model: Pick<Model<Api>, \"baseUrl\" | \"provider\">): boolean {\n\treturn model.provider === \"openai-codex\" && isFirstPartyCodexBaseUrl(model.baseUrl);\n}\n\n/** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */\nexport function usesChatGptCodexTransport(model: Pick<Model<Api>, \"api\">): boolean {\n\treturn model.api === \"openai-codex-responses\";\n}\n\nfunction deleteHeader(headers: ProviderHeaders, name: string): void {\n\tfor (const existingName of Object.keys(headers)) {\n\t\tif (existingName.toLowerCase() === name.toLowerCase()) delete headers[existingName];\n\t}\n}\n\nfunction setHeader(headers: ProviderHeaders, name: string, value: string): void {\n\tdeleteHeader(headers, name);\n\theaders[name] = value;\n}\n\nexport function withCodexFastModeHeaders(\n\tmodel: Pick<Model<Api>, \"baseUrl\" | \"id\" | \"provider\">,\n\theaders: ProviderHeaders | undefined,\n\tenabled: boolean,\n): ProviderHeaders | undefined {\n\tif (!enabled || !usesFirstPartyCodexRouting(model)) return headers;\n\tconst fastHeaders: ProviderHeaders = { ...(headers ?? {}) };\n\tsetHeader(fastHeaders, \"originator\", CODEX_FAST_MODE_ORIGINATOR);\n\tsetHeader(fastHeaders, CODEX_FAST_MODE_ROUTING_HEADER, `model=${model.id};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);\n\treturn fastHeaders;\n}\n\nexport function withCodexFastModeStreamOptions(\n\tmodel: Pick<Model<Api>, \"baseUrl\" | \"id\" | \"provider\">,\n\toptions: SimpleStreamOptions | undefined,\n\tenabled: boolean,\n): CodexFastModeStreamOptions | undefined {\n\tif (!enabled || model.provider === \"github-copilot\") {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...(options ?? {}),\n\t\theaders: options?.headers,\n\t\tserviceTier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function isCodexFastModeNativeApi(api: Api): api is \"openai-responses\" | \"openai-codex-responses\" {\n\treturn api === \"openai-responses\" || api === \"openai-codex-responses\";\n}\n\nexport function shouldUseNativeCodexFastMode(\n\tmodel: Pick<Model<Api>, \"api\" | \"provider\">,\n\toptions: CodexFastModeStreamOptions | undefined,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedModel(model) &&\n\t\tisCodexFastModeNativeApi(model.api) &&\n\t\toptions?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER\n\t);\n}\n\nfunction payloadRecord(payload: unknown): Record<string, unknown> | undefined {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload)\n\t\t? (payload as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction codexEnvironmentScope(env: StreamOptions[\"env\"]): string {\n\tif (!env) return \"none\";\n\tconst serialized = JSON.stringify(Object.entries(env).sort(([left], [right]) => left.localeCompare(right)));\n\tlet hash = 2166136261;\n\tfor (let index = 0; index < serialized.length; index += 1) {\n\t\thash = Math.imul(hash ^ serialized.charCodeAt(index), 16777619);\n\t}\n\treturn (hash >>> 0).toString(16);\n}\n\ntype CloseCodexWebSocketSessions = typeof closeOpenAICodexWebSocketSessions;\nfunction updateCodexWebSocketRoutingState(\n\tmodel: Pick<Model<Api>, \"baseUrl\" | \"provider\">,\n\troutedModel: string,\n\toptions: Pick<StreamOptions, \"env\" | \"sessionId\" | \"transport\">,\n\tpriority: boolean,\n\tcloseWebSocketSessions: CloseCodexWebSocketSessions,\n): void {\n\tif (options.transport === \"sse\" || !options.sessionId) return;\n\tconst signature = `${model.provider}\\0${model.baseUrl}\\0${codexEnvironmentScope(options.env)}\\0${priority ? `priority:${routedModel}` : \"normal\"}`;\n\tconst previous = codexWebSocketRoutingState.get(options.sessionId);\n\tif (previous?.signature !== undefined && previous.signature !== signature) {\n\t\tcloseWebSocketSessions(options.sessionId);\n\t}\n\tif (previous) clearTimeout(previous.expiry);\n\tconst expiry = setTimeout(() => {\n\t\tif (codexWebSocketRoutingState.get(options.sessionId!)?.signature === signature) {\n\t\t\tcodexWebSocketRoutingState.delete(options.sessionId!);\n\t\t}\n\t}, CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS);\n\texpiry.unref?.();\n\tcodexWebSocketRoutingState.set(options.sessionId, { signature, expiry });\n}\n\nexport function withChatGptCodexTransportRouting<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions,\n\tenabled = true,\n\tcloseWebSocketSessions: CloseCodexWebSocketSessions = closeOpenAICodexWebSocketSessions,\n): TOptions {\n\tconst headers: ProviderHeaders = { ...(options.headers ?? {}) };\n\tconst onPayload = options.onPayload;\n\treturn {\n\t\t...options,\n\t\theaders,\n\t\tfetch: wrapCodexFastModeFetch(options.fetch ?? globalThis.fetch),\n\t\tonPayload: async (payload, requestModel) => {\n\t\t\tconst replacement = await onPayload?.(payload, requestModel);\n\t\t\tconst finalPayload = replacement === undefined ? payload : replacement;\n\t\t\tconst record = payloadRecord(finalPayload);\n\t\t\tconst priority = enabled && record?.service_tier === CODEX_FAST_MODE_SERVICE_TIER;\n\t\t\tconst routedModel = typeof record?.model === \"string\" ? record.model : model.id;\n\t\t\tdeleteHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER);\n\t\t\tclearCodexFastModeRequestMarker(headers);\n\t\t\tif (priority) {\n\t\t\t\tsetHeader(\n\t\t\t\t\theaders,\n\t\t\t\t\tCODEX_FAST_MODE_ROUTING_HEADER,\n\t\t\t\t\t`model=${routedModel};tier=${CODEX_FAST_MODE_SERVICE_TIER}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const [name, value] of Object.entries(headers)) {\n\t\t\t\t\tif (name.toLowerCase() === \"originator\" && value === CODEX_FAST_MODE_ORIGINATOR) delete headers[name];\n\t\t\t\t}\n\t\t\t}\n\t\t\tmarkCodexFastModeRequest(headers, priority);\n\t\t\tupdateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions);\n\t\t\treturn finalPayload;\n\t\t},\n\t} as TOptions;\n}\n\nfunction buildCodexFastModeBaseProviderOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): StreamOptions {\n\t// Native fast-mode streams bypass pi-ai's streamSimple base-options merge.\n\tconst samplingParams =\n\t\tmodel.samplingParams || options?.samplingParams\n\t\t\t? { ...model.samplingParams, ...options?.samplingParams }\n\t\t\t: undefined;\n\tconst providerOptions: StreamOptions = {\n\t\tsamplingParams,\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: options?.apiKey,\n\t\tfetch: options?.fetch,\n\t\tenv: options?.env,\n\t\ttelemetryContext: options?.telemetryContext,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\theaders: options?.headers,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tstreamDeadlineMs: options?.streamDeadlineMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t};\n\treturn usesChatGptCodexTransport(model) ? withChatGptCodexTransportRouting(model, providerOptions) : providerOptions;\n}\n\nexport function mapCodexFastModeReasoningEffort(\n\tmodel: Model<Api>,\n\treasoning: ThinkingLevel | undefined,\n): ThinkingLevel | undefined {\n\tconst clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;\n\treturn clampedReasoning === \"off\" ? undefined : clampedReasoning;\n}\n\nexport function buildOpenAIResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAIResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function buildOpenAICodexResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAICodexResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function streamWithCodexFastMode(\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: CodexFastModeStreamOptions | undefined,\n\tstreamers: CodexFastModeStreamers = DEFAULT_CODEX_FAST_MODE_STREAMERS,\n): AssistantMessageEventStream {\n\tif (shouldUseNativeCodexFastMode(model, options)) {\n\t\tif (model.api === \"openai-responses\") {\n\t\t\treturn streamers.streamOpenAIResponses(\n\t\t\t\tmodel as Model<\"openai-responses\">,\n\t\t\t\tcontext,\n\t\t\t\tbuildOpenAIResponsesCodexFastModeOptions(model, options),\n\t\t\t);\n\t\t}\n\n\t\t// The WebSocket handshake builds its headers inside pi-ai, and the runtime\n\t\t// constructor can be cached before the first turn, so repair the identity\n\t\t// through the global constructor rather than per-request options.\n\t\tif (options?.transport !== \"sse\" && usesChatGptCodexTransport(model)) {\n\t\t\tinstallCodexFastModeWebSocketIdentity();\n\t\t}\n\n\t\treturn streamers.streamOpenAICodexResponses(\n\t\t\tmodel as Model<\"openai-codex-responses\">,\n\t\t\tcontext,\n\t\t\tbuildOpenAICodexResponsesCodexFastModeOptions(model, options),\n\t\t);\n\t}\n\n\treturn streamers.streamSimple(model, context, options);\n}\n\nfunction isObjectPayload(payload: unknown): payload is Record<string, unknown> {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload);\n}\n\nexport function withCodexFastModePayload(\n\tpayload: unknown,\n\tenabled: boolean,\n\tmodel?: Pick<Model<Api>, \"id\" | \"provider\">,\n): unknown {\n\tif (!enabled || !isObjectPayload(payload)) return payload;\n\tif (model?.provider === \"github-copilot\") {\n\t\treturn payload.model === model.id ? { ...payload, model: `${model.id}-fast` } : payload;\n\t}\n\tif (payload.service_tier !== undefined) return payload;\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string {\n\treturn enabled ? `${modelName} fast` : modelName;\n}\n"]}
@@ -1,27 +0,0 @@
1
- export interface FastModeSelectorConfig {
2
- chat: boolean;
3
- workflow: boolean;
4
- }
5
- export interface FastModeSelectorCallbacks {
6
- onChange: (settings: FastModeSelectorConfig, changedRow: FastModeRow) => void;
7
- onCancel: () => void | Promise<void>;
8
- }
9
- export type FastModeRow = keyof FastModeSelectorConfig;
10
- export declare class FastModeSelectorComponent {
11
- private selectedRowIndex;
12
- private state;
13
- private readonly callbacks;
14
- constructor(config: FastModeSelectorConfig, callbacks: FastModeSelectorCallbacks);
15
- invalidate(): void;
16
- render(width: number): string[];
17
- handleInput(data: string): boolean;
18
- getFocusedRow(): FastModeRow;
19
- getSettings(): FastModeSelectorConfig;
20
- private moveRow;
21
- private setCurrentRow;
22
- private toggleCurrentRow;
23
- private renderHint;
24
- private renderRow;
25
- private renderToggle;
26
- }
27
- //# sourceMappingURL=fast-mode-selector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-mode-selector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/fast-mode-selector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,CAAC,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9E,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC;AAgBvD,qBAAa,yBAAyB;IACrC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IAEtD,YAAY,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,yBAAyB,EAG/E;IAED,UAAU,IAAI,IAAI,CAAG;IAErB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY9B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA0BjC;IAED,aAAa,IAAI,WAAW,CAE3B;IAED,WAAW,IAAI,sBAAsB,CAEpC;IAED,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,YAAY;CAQpB"}
@@ -1,107 +0,0 @@
1
- import { matchesKey, truncateToWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
2
- import { theme } from "../theme/theme.js";
3
- const ROWS = ["chat", "workflow"];
4
- const LABEL_WIDTH = 16;
5
- const DESCRIPTION = "Use faster routing for the selected model when supported by its provider.";
6
- const ROW_DETAILS = {
7
- chat: {
8
- label: "Chat",
9
- scope: "this chat + subagents",
10
- },
11
- workflow: {
12
- label: "Workflow stages",
13
- scope: "workflow stages",
14
- },
15
- };
16
- export class FastModeSelectorComponent {
17
- constructor(config, callbacks) {
18
- this.selectedRowIndex = 0;
19
- this.state = { ...config };
20
- this.callbacks = callbacks;
21
- }
22
- invalidate() { }
23
- render(width) {
24
- const lines = [truncateToWidth(theme.bold(theme.fg("accent", "Fast mode")), width)];
25
- for (const line of wrapTextWithAnsi(DESCRIPTION, Math.max(20, width))) {
26
- lines.push(theme.fg("muted", line));
27
- }
28
- lines.push("");
29
- for (const row of ROWS) {
30
- lines.push(this.renderRow(row, width));
31
- }
32
- lines.push("");
33
- lines.push(truncateToWidth(this.renderHint(), width));
34
- return lines.map((line) => truncateToWidth(line, width));
35
- }
36
- handleInput(data) {
37
- if (matchesKey(data, "tab") || matchesKey(data, "down")) {
38
- this.moveRow(1);
39
- return true;
40
- }
41
- if (matchesKey(data, "shift+tab") || matchesKey(data, "up")) {
42
- this.moveRow(-1);
43
- return true;
44
- }
45
- if (matchesKey(data, "enter") || data === " ") {
46
- this.toggleCurrentRow();
47
- return true;
48
- }
49
- if (matchesKey(data, "left")) {
50
- this.setCurrentRow(false);
51
- return true;
52
- }
53
- if (matchesKey(data, "right")) {
54
- this.setCurrentRow(true);
55
- return true;
56
- }
57
- if (matchesKey(data, "escape") || matchesKey(data, "ctrl+c")) {
58
- void this.callbacks.onCancel();
59
- return true;
60
- }
61
- return false;
62
- }
63
- getFocusedRow() {
64
- return ROWS[this.selectedRowIndex];
65
- }
66
- getSettings() {
67
- return { ...this.state };
68
- }
69
- moveRow(delta) {
70
- this.selectedRowIndex = (this.selectedRowIndex + delta + ROWS.length) % ROWS.length;
71
- }
72
- setCurrentRow(enabled) {
73
- const row = this.getFocusedRow();
74
- if (this.state[row] === enabled) {
75
- return;
76
- }
77
- this.state = { ...this.state, [row]: enabled };
78
- this.callbacks.onChange({ ...this.state }, row);
79
- }
80
- toggleCurrentRow() {
81
- const row = this.getFocusedRow();
82
- this.setCurrentRow(!this.state[row]);
83
- }
84
- renderHint() {
85
- const sep = theme.fg("dim", " · ");
86
- const hint = (key, label) => theme.fg("dim", key) + theme.fg("muted", ` ${label}`);
87
- return [hint("↑↓/tab", "row"), hint("space/enter", "toggle"), hint("esc", "close")].join(sep);
88
- }
89
- renderRow(row, width) {
90
- const selected = this.getFocusedRow() === row;
91
- const detail = ROW_DETAILS[row];
92
- const prefix = selected ? theme.fg("accent", "› ") : " ";
93
- const label = detail.label.padEnd(LABEL_WIDTH, " ");
94
- const labelText = selected ? theme.bold(theme.fg("accent", label)) : theme.fg("text", label);
95
- const scope = selected ? theme.fg("muted", detail.scope) : theme.fg("dim", detail.scope);
96
- return truncateToWidth(`${prefix}${labelText} ${this.renderToggle(row)} ${scope}`, width);
97
- }
98
- renderToggle(row) {
99
- const enabled = this.state[row];
100
- const text = enabled ? "[● ON ]" : "[○ OFF]";
101
- if (enabled) {
102
- return theme.bold(theme.fg("success", text));
103
- }
104
- return this.getFocusedRow() === row ? theme.fg("muted", text) : theme.fg("dim", text);
105
- }
106
- }
107
- //# sourceMappingURL=fast-mode-selector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-mode-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/fast-mode-selector.ts"],"names":[],"mappings":"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","sourcesContent":["import { matchesKey, truncateToWidth, wrapTextWithAnsi } from \"@earendil-works/pi-tui\";\nimport { theme } from \"../theme/theme.ts\";\n\nexport interface FastModeSelectorConfig {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport interface FastModeSelectorCallbacks {\n\tonChange: (settings: FastModeSelectorConfig, changedRow: FastModeRow) => void;\n\tonCancel: () => void | Promise<void>;\n}\n\nexport type FastModeRow = keyof FastModeSelectorConfig;\n\nconst ROWS: readonly FastModeRow[] = [\"chat\", \"workflow\"];\nconst LABEL_WIDTH = 16;\nconst DESCRIPTION = \"Use faster routing for the selected model when supported by its provider.\";\nconst ROW_DETAILS: Record<FastModeRow, { label: string; scope: string }> = {\n\tchat: {\n\t\tlabel: \"Chat\",\n\t\tscope: \"this chat + subagents\",\n\t},\n\tworkflow: {\n\t\tlabel: \"Workflow stages\",\n\t\tscope: \"workflow stages\",\n\t},\n};\n\nexport class FastModeSelectorComponent {\n\tprivate selectedRowIndex = 0;\n\tprivate state: FastModeSelectorConfig;\n\tprivate readonly callbacks: FastModeSelectorCallbacks;\n\n\tconstructor(config: FastModeSelectorConfig, callbacks: FastModeSelectorCallbacks) {\n\t\tthis.state = { ...config };\n\t\tthis.callbacks = callbacks;\n\t}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tconst lines: string[] = [truncateToWidth(theme.bold(theme.fg(\"accent\", \"Fast mode\")), width)];\n\t\tfor (const line of wrapTextWithAnsi(DESCRIPTION, Math.max(20, width))) {\n\t\t\tlines.push(theme.fg(\"muted\", line));\n\t\t}\n\t\tlines.push(\"\");\n\t\tfor (const row of ROWS) {\n\t\t\tlines.push(this.renderRow(row, width));\n\t\t}\n\t\tlines.push(\"\");\n\t\tlines.push(truncateToWidth(this.renderHint(), width));\n\t\treturn lines.map((line) => truncateToWidth(line, width));\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (matchesKey(data, \"tab\") || matchesKey(data, \"down\")) {\n\t\t\tthis.moveRow(1);\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"shift+tab\") || matchesKey(data, \"up\")) {\n\t\t\tthis.moveRow(-1);\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"enter\") || data === \" \") {\n\t\t\tthis.toggleCurrentRow();\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"left\")) {\n\t\t\tthis.setCurrentRow(false);\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"right\")) {\n\t\t\tthis.setCurrentRow(true);\n\t\t\treturn true;\n\t\t}\n\t\tif (matchesKey(data, \"escape\") || matchesKey(data, \"ctrl+c\")) {\n\t\t\tvoid this.callbacks.onCancel();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetFocusedRow(): FastModeRow {\n\t\treturn ROWS[this.selectedRowIndex]!;\n\t}\n\n\tgetSettings(): FastModeSelectorConfig {\n\t\treturn { ...this.state };\n\t}\n\n\tprivate moveRow(delta: 1 | -1): void {\n\t\tthis.selectedRowIndex = (this.selectedRowIndex + delta + ROWS.length) % ROWS.length;\n\t}\n\n\tprivate setCurrentRow(enabled: boolean): void {\n\t\tconst row = this.getFocusedRow();\n\t\tif (this.state[row] === enabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.state = { ...this.state, [row]: enabled };\n\t\tthis.callbacks.onChange({ ...this.state }, row);\n\t}\n\n\tprivate toggleCurrentRow(): void {\n\t\tconst row = this.getFocusedRow();\n\t\tthis.setCurrentRow(!this.state[row]);\n\t}\n\n\tprivate renderHint(): string {\n\t\tconst sep = theme.fg(\"dim\", \" · \");\n\t\tconst hint = (key: string, label: string): string => theme.fg(\"dim\", key) + theme.fg(\"muted\", ` ${label}`);\n\t\treturn [hint(\"↑↓/tab\", \"row\"), hint(\"space/enter\", \"toggle\"), hint(\"esc\", \"close\")].join(sep);\n\t}\n\n\tprivate renderRow(row: FastModeRow, width: number): string {\n\t\tconst selected = this.getFocusedRow() === row;\n\t\tconst detail = ROW_DETAILS[row];\n\t\tconst prefix = selected ? theme.fg(\"accent\", \"› \") : \" \";\n\t\tconst label = detail.label.padEnd(LABEL_WIDTH, \" \");\n\t\tconst labelText = selected ? theme.bold(theme.fg(\"accent\", label)) : theme.fg(\"text\", label);\n\t\tconst scope = selected ? theme.fg(\"muted\", detail.scope) : theme.fg(\"dim\", detail.scope);\n\t\treturn truncateToWidth(`${prefix}${labelText} ${this.renderToggle(row)} ${scope}`, width);\n\t}\n\n\tprivate renderToggle(row: FastModeRow): string {\n\t\tconst enabled = this.state[row];\n\t\tconst text = enabled ? \"[● ON ]\" : \"[○ OFF]\";\n\t\tif (enabled) {\n\t\t\treturn theme.bold(theme.fg(\"success\", text));\n\t\t}\n\t\treturn this.getFocusedRow() === row ? theme.fg(\"muted\", text) : theme.fg(\"dim\", text);\n\t}\n}\n"]}