@code-yeongyu/senpi 2026.7.23 → 2026.7.25-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 (900) hide show
  1. package/CHANGELOG.md +162 -6
  2. package/README.md +14 -1
  3. package/dist/beta/omo-local-update.d.ts +207 -0
  4. package/dist/beta/omo-local-update.d.ts.map +1 -0
  5. package/dist/beta/omo-local-update.js +708 -0
  6. package/dist/beta/omo-local-update.js.map +1 -0
  7. package/dist/cli/args.d.ts +2 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +6 -0
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/config-selector.js +1 -1
  12. package/dist/cli/config-selector.js.map +1 -1
  13. package/dist/core/agent-session-runtime.d.ts +15 -1
  14. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  15. package/dist/core/agent-session-runtime.js +12 -2
  16. package/dist/core/agent-session-runtime.js.map +1 -1
  17. package/dist/core/agent-session.d.ts +115 -4
  18. package/dist/core/agent-session.d.ts.map +1 -1
  19. package/dist/core/agent-session.js +1317 -320
  20. package/dist/core/agent-session.js.map +1 -1
  21. package/dist/core/compaction/branch-summarization.d.ts +7 -1
  22. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  23. package/dist/core/compaction/branch-summarization.js +8 -12
  24. package/dist/core/compaction/branch-summarization.js.map +1 -1
  25. package/dist/core/compaction/compaction.d.ts +22 -4
  26. package/dist/core/compaction/compaction.d.ts.map +1 -1
  27. package/dist/core/compaction/compaction.js +114 -51
  28. package/dist/core/compaction/compaction.js.map +1 -1
  29. package/dist/core/compaction/lifecycle.d.ts +69 -0
  30. package/dist/core/compaction/lifecycle.d.ts.map +1 -0
  31. package/dist/core/compaction/lifecycle.js +104 -0
  32. package/dist/core/compaction/lifecycle.js.map +1 -0
  33. package/dist/core/compaction/utils.d.ts +12 -1
  34. package/dist/core/compaction/utils.d.ts.map +1 -1
  35. package/dist/core/compaction/utils.js +22 -17
  36. package/dist/core/compaction/utils.js.map +1 -1
  37. package/dist/core/event-bus.d.ts.map +1 -1
  38. package/dist/core/event-bus.js +11 -1
  39. package/dist/core/event-bus.js.map +1 -1
  40. package/dist/core/extensions/builtin/compaction/index.d.ts +2 -1
  41. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  42. package/dist/core/extensions/builtin/compaction/index.js +42 -30
  43. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  44. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts +9 -2
  45. package/dist/core/extensions/builtin/compaction/openai-remote-model.d.ts.map +1 -1
  46. package/dist/core/extensions/builtin/compaction/openai-remote-model.js +78 -28
  47. package/dist/core/extensions/builtin/compaction/openai-remote-model.js.map +1 -1
  48. package/dist/core/extensions/builtin/compaction/openai-remote-schema.d.ts +3 -1
  49. package/dist/core/extensions/builtin/compaction/openai-remote-schema.d.ts.map +1 -1
  50. package/dist/core/extensions/builtin/compaction/openai-remote-schema.js +19 -1
  51. package/dist/core/extensions/builtin/compaction/openai-remote-schema.js.map +1 -1
  52. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts +20 -6
  53. package/dist/core/extensions/builtin/compaction/openai-remote.d.ts.map +1 -1
  54. package/dist/core/extensions/builtin/compaction/openai-remote.js +207 -22
  55. package/dist/core/extensions/builtin/compaction/openai-remote.js.map +1 -1
  56. package/dist/core/extensions/builtin/compaction/speculative.d.ts +4 -2
  57. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  58. package/dist/core/extensions/builtin/compaction/speculative.js +25 -13
  59. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  60. package/dist/core/extensions/builtin/config-reload/index.d.ts +7 -0
  61. package/dist/core/extensions/builtin/config-reload/index.d.ts.map +1 -1
  62. package/dist/core/extensions/builtin/config-reload/index.js +69 -34
  63. package/dist/core/extensions/builtin/config-reload/index.js.map +1 -1
  64. package/dist/core/extensions/builtin/config-reload/log.d.ts +4 -1
  65. package/dist/core/extensions/builtin/config-reload/log.d.ts.map +1 -1
  66. package/dist/core/extensions/builtin/config-reload/log.js +3 -0
  67. package/dist/core/extensions/builtin/config-reload/log.js.map +1 -1
  68. package/dist/core/extensions/builtin/config-reload/routine-settings.d.ts +15 -0
  69. package/dist/core/extensions/builtin/config-reload/routine-settings.d.ts.map +1 -0
  70. package/dist/core/extensions/builtin/config-reload/routine-settings.js +102 -0
  71. package/dist/core/extensions/builtin/config-reload/routine-settings.js.map +1 -0
  72. package/dist/core/extensions/builtin/hooks/index.js +1 -1
  73. package/dist/core/extensions/builtin/hooks/index.js.map +1 -1
  74. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts +3 -1
  75. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts.map +1 -1
  76. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js +2 -1
  77. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js.map +1 -1
  78. package/dist/core/extensions/builtin/mcp/auth/commands-auth-dispatch.d.ts +2 -1
  79. package/dist/core/extensions/builtin/mcp/auth/commands-auth-dispatch.d.ts.map +1 -1
  80. package/dist/core/extensions/builtin/mcp/auth/commands-auth-dispatch.js +5 -3
  81. package/dist/core/extensions/builtin/mcp/auth/commands-auth-dispatch.js.map +1 -1
  82. package/dist/core/extensions/builtin/mcp/auth/commands-auth.d.ts +5 -0
  83. package/dist/core/extensions/builtin/mcp/auth/commands-auth.d.ts.map +1 -1
  84. package/dist/core/extensions/builtin/mcp/auth/commands-auth.js +8 -3
  85. package/dist/core/extensions/builtin/mcp/auth/commands-auth.js.map +1 -1
  86. package/dist/core/extensions/builtin/mcp/catalog.d.ts +3 -1
  87. package/dist/core/extensions/builtin/mcp/catalog.d.ts.map +1 -1
  88. package/dist/core/extensions/builtin/mcp/catalog.js +2 -0
  89. package/dist/core/extensions/builtin/mcp/catalog.js.map +1 -1
  90. package/dist/core/extensions/builtin/mcp/commands.d.ts +1 -1
  91. package/dist/core/extensions/builtin/mcp/commands.d.ts.map +1 -1
  92. package/dist/core/extensions/builtin/mcp/commands.js +34 -39
  93. package/dist/core/extensions/builtin/mcp/commands.js.map +1 -1
  94. package/dist/core/extensions/builtin/mcp/connection-types.d.ts +2 -0
  95. package/dist/core/extensions/builtin/mcp/connection-types.d.ts.map +1 -1
  96. package/dist/core/extensions/builtin/mcp/connection-types.js.map +1 -1
  97. package/dist/core/extensions/builtin/mcp/connection.d.ts.map +1 -1
  98. package/dist/core/extensions/builtin/mcp/connection.js +3 -0
  99. package/dist/core/extensions/builtin/mcp/connection.js.map +1 -1
  100. package/dist/core/extensions/builtin/mcp/elicitation.d.ts +7 -3
  101. package/dist/core/extensions/builtin/mcp/elicitation.d.ts.map +1 -1
  102. package/dist/core/extensions/builtin/mcp/elicitation.js +5 -5
  103. package/dist/core/extensions/builtin/mcp/elicitation.js.map +1 -1
  104. package/dist/core/extensions/builtin/mcp/expose/register.d.ts.map +1 -1
  105. package/dist/core/extensions/builtin/mcp/expose/register.js +1 -0
  106. package/dist/core/extensions/builtin/mcp/expose/register.js.map +1 -1
  107. package/dist/core/extensions/builtin/mcp/expose/session.d.ts +2 -0
  108. package/dist/core/extensions/builtin/mcp/expose/session.d.ts.map +1 -1
  109. package/dist/core/extensions/builtin/mcp/expose/session.js +3 -0
  110. package/dist/core/extensions/builtin/mcp/expose/session.js.map +1 -1
  111. package/dist/core/extensions/builtin/mcp/guard/output-guard.d.ts +9 -1
  112. package/dist/core/extensions/builtin/mcp/guard/output-guard.d.ts.map +1 -1
  113. package/dist/core/extensions/builtin/mcp/guard/output-guard.js +18 -6
  114. package/dist/core/extensions/builtin/mcp/guard/output-guard.js.map +1 -1
  115. package/dist/core/extensions/builtin/mcp/index.d.ts +4 -2
  116. package/dist/core/extensions/builtin/mcp/index.d.ts.map +1 -1
  117. package/dist/core/extensions/builtin/mcp/index.js +150 -127
  118. package/dist/core/extensions/builtin/mcp/index.js.map +1 -1
  119. package/dist/core/extensions/builtin/mcp/instructions.d.ts +1 -1
  120. package/dist/core/extensions/builtin/mcp/instructions.d.ts.map +1 -1
  121. package/dist/core/extensions/builtin/mcp/instructions.js +6 -6
  122. package/dist/core/extensions/builtin/mcp/instructions.js.map +1 -1
  123. package/dist/core/extensions/builtin/mcp/prompts.d.ts +2 -0
  124. package/dist/core/extensions/builtin/mcp/prompts.d.ts.map +1 -1
  125. package/dist/core/extensions/builtin/mcp/prompts.js +9 -3
  126. package/dist/core/extensions/builtin/mcp/prompts.js.map +1 -1
  127. package/dist/core/extensions/builtin/mcp/resources.d.ts +2 -0
  128. package/dist/core/extensions/builtin/mcp/resources.d.ts.map +1 -1
  129. package/dist/core/extensions/builtin/mcp/resources.js +1 -0
  130. package/dist/core/extensions/builtin/mcp/resources.js.map +1 -1
  131. package/dist/core/extensions/builtin/mcp/service-register.d.ts.map +1 -1
  132. package/dist/core/extensions/builtin/mcp/service-register.js +1 -0
  133. package/dist/core/extensions/builtin/mcp/service-register.js.map +1 -1
  134. package/dist/core/extensions/builtin/mcp/service-types.d.ts +2 -0
  135. package/dist/core/extensions/builtin/mcp/service-types.d.ts.map +1 -1
  136. package/dist/core/extensions/builtin/mcp/service-types.js.map +1 -1
  137. package/dist/core/extensions/builtin/mcp/service.d.ts +12 -1
  138. package/dist/core/extensions/builtin/mcp/service.d.ts.map +1 -1
  139. package/dist/core/extensions/builtin/mcp/service.js +44 -2
  140. package/dist/core/extensions/builtin/mcp/service.js.map +1 -1
  141. package/dist/core/extensions/builtin/mcp/transport.d.ts +2 -0
  142. package/dist/core/extensions/builtin/mcp/transport.d.ts.map +1 -1
  143. package/dist/core/extensions/builtin/mcp/transport.js +7 -7
  144. package/dist/core/extensions/builtin/mcp/transport.js.map +1 -1
  145. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.d.ts.map +1 -1
  146. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js +86 -7
  147. package/dist/core/extensions/builtin/prompt-preset/claude-fable-5.js.map +1 -1
  148. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.d.ts +3 -0
  149. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.d.ts.map +1 -0
  150. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +102 -0
  151. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -0
  152. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts +48 -0
  153. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  154. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +88 -64
  155. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  156. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.d.ts.map +1 -1
  157. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +96 -6
  158. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
  159. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  160. package/dist/core/extensions/builtin/prompt-preset/presets.js +9 -0
  161. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  162. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
  163. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
  164. package/dist/core/extensions/builtin/prompt-preset/settings.js +1 -0
  165. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
  166. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  167. package/dist/core/extensions/builtin/terminal/extension.js +1 -0
  168. package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
  169. package/dist/core/extensions/builtin/terminal/tools/bash.d.ts +15 -3
  170. package/dist/core/extensions/builtin/terminal/tools/bash.d.ts.map +1 -1
  171. package/dist/core/extensions/builtin/terminal/tools/bash.js +30 -6
  172. package/dist/core/extensions/builtin/terminal/tools/bash.js.map +1 -1
  173. package/dist/core/extensions/builtin/terminal/tools/context.d.ts +5 -0
  174. package/dist/core/extensions/builtin/terminal/tools/context.d.ts.map +1 -1
  175. package/dist/core/extensions/builtin/terminal/tools/context.js.map +1 -1
  176. package/dist/core/extensions/builtin/websearch/index.d.ts.map +1 -1
  177. package/dist/core/extensions/builtin/websearch/index.js +2 -4
  178. package/dist/core/extensions/builtin/websearch/index.js.map +1 -1
  179. package/dist/core/extensions/builtin/websearch/websearch/config.d.ts.map +1 -1
  180. package/dist/core/extensions/builtin/websearch/websearch/config.js +4 -1
  181. package/dist/core/extensions/builtin/websearch/websearch/config.js.map +1 -1
  182. package/dist/core/extensions/builtin/websearch/websearch/native.d.ts.map +1 -1
  183. package/dist/core/extensions/builtin/websearch/websearch/native.js +2 -4
  184. package/dist/core/extensions/builtin/websearch/websearch/native.js.map +1 -1
  185. package/dist/core/extensions/builtin/websearch/websearch/renderers.d.ts.map +1 -1
  186. package/dist/core/extensions/builtin/websearch/websearch/renderers.js +20 -8
  187. package/dist/core/extensions/builtin/websearch/websearch/renderers.js.map +1 -1
  188. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts +6 -1
  189. package/dist/core/extensions/builtin/websearch/websearch/search.d.ts.map +1 -1
  190. package/dist/core/extensions/builtin/websearch/websearch/search.js +15 -11
  191. package/dist/core/extensions/builtin/websearch/websearch/search.js.map +1 -1
  192. package/dist/core/extensions/builtin/websearch/websearch/tool.d.ts.map +1 -1
  193. package/dist/core/extensions/builtin/websearch/websearch/tool.js +5 -10
  194. package/dist/core/extensions/builtin/websearch/websearch/tool.js.map +1 -1
  195. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts +1 -0
  196. package/dist/core/extensions/builtin/websearch/websearch/types.d.ts.map +1 -1
  197. package/dist/core/extensions/builtin/websearch/websearch/types.js.map +1 -1
  198. package/dist/core/extensions/runner.d.ts +14 -7
  199. package/dist/core/extensions/runner.d.ts.map +1 -1
  200. package/dist/core/extensions/runner.js +64 -37
  201. package/dist/core/extensions/runner.js.map +1 -1
  202. package/dist/core/extensions/types.d.ts +32 -3
  203. package/dist/core/extensions/types.d.ts.map +1 -1
  204. package/dist/core/extensions/types.js.map +1 -1
  205. package/dist/core/http-dispatcher.d.ts.map +1 -1
  206. package/dist/core/http-dispatcher.js +16 -0
  207. package/dist/core/http-dispatcher.js.map +1 -1
  208. package/dist/core/messages.d.ts +1 -1
  209. package/dist/core/messages.d.ts.map +1 -1
  210. package/dist/core/messages.js +10 -8
  211. package/dist/core/messages.js.map +1 -1
  212. package/dist/core/model-registry.d.ts +1 -0
  213. package/dist/core/model-registry.d.ts.map +1 -1
  214. package/dist/core/model-registry.js +3 -2
  215. package/dist/core/model-registry.js.map +1 -1
  216. package/dist/core/model-resolver.d.ts +1 -0
  217. package/dist/core/model-resolver.d.ts.map +1 -1
  218. package/dist/core/model-resolver.js +22 -3
  219. package/dist/core/model-resolver.js.map +1 -1
  220. package/dist/core/model-runtime.d.ts +4 -2
  221. package/dist/core/model-runtime.d.ts.map +1 -1
  222. package/dist/core/model-runtime.js +34 -18
  223. package/dist/core/model-runtime.js.map +1 -1
  224. package/dist/core/remote-catalog-provider.d.ts +1 -1
  225. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  226. package/dist/core/remote-catalog-provider.js +39 -7
  227. package/dist/core/remote-catalog-provider.js.map +1 -1
  228. package/dist/core/resolve-config-value.d.ts.map +1 -1
  229. package/dist/core/resolve-config-value.js +12 -8
  230. package/dist/core/resolve-config-value.js.map +1 -1
  231. package/dist/core/resource-loader.d.ts.map +1 -1
  232. package/dist/core/resource-loader.js +3 -0
  233. package/dist/core/resource-loader.js.map +1 -1
  234. package/dist/core/retry-fallback/controller.d.ts +7 -0
  235. package/dist/core/retry-fallback/controller.d.ts.map +1 -1
  236. package/dist/core/retry-fallback/controller.js +13 -0
  237. package/dist/core/retry-fallback/controller.js.map +1 -1
  238. package/dist/core/sdk.d.ts +1 -1
  239. package/dist/core/sdk.d.ts.map +1 -1
  240. package/dist/core/sdk.js +8 -3
  241. package/dist/core/sdk.js.map +1 -1
  242. package/dist/core/session-manager.d.ts +22 -3
  243. package/dist/core/session-manager.d.ts.map +1 -1
  244. package/dist/core/session-manager.js +155 -58
  245. package/dist/core/session-manager.js.map +1 -1
  246. package/dist/core/settings-manager.d.ts +8 -1
  247. package/dist/core/settings-manager.d.ts.map +1 -1
  248. package/dist/core/settings-manager.js +10 -0
  249. package/dist/core/settings-manager.js.map +1 -1
  250. package/dist/core/system-prompt.js +1 -1
  251. package/dist/core/system-prompt.js.map +1 -1
  252. package/dist/core/thinking-levels.d.ts.map +1 -1
  253. package/dist/core/thinking-levels.js +9 -2
  254. package/dist/core/thinking-levels.js.map +1 -1
  255. package/dist/core/tools/bash.d.ts +2 -0
  256. package/dist/core/tools/bash.d.ts.map +1 -1
  257. package/dist/core/tools/bash.js +34 -5
  258. package/dist/core/tools/bash.js.map +1 -1
  259. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  260. package/dist/core/tools/tool-definition-wrapper.js +3 -1
  261. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  262. package/dist/core/usage-totals.d.ts +19 -0
  263. package/dist/core/usage-totals.d.ts.map +1 -0
  264. package/dist/core/usage-totals.js +52 -0
  265. package/dist/core/usage-totals.js.map +1 -0
  266. package/dist/extensions/llama/client.d.ts.map +1 -1
  267. package/dist/extensions/llama/client.js +3 -1
  268. package/dist/extensions/llama/client.js.map +1 -1
  269. package/dist/extensions/llama/index.js +3 -3
  270. package/dist/extensions/llama/index.js.map +1 -1
  271. package/dist/extensions/llama/provider.d.ts.map +1 -1
  272. package/dist/extensions/llama/provider.js +7 -2
  273. package/dist/extensions/llama/provider.js.map +1 -1
  274. package/dist/index.d.ts +2 -2
  275. package/dist/index.d.ts.map +1 -1
  276. package/dist/index.js +1 -1
  277. package/dist/index.js.map +1 -1
  278. package/dist/main.d.ts.map +1 -1
  279. package/dist/main.js +37 -5
  280. package/dist/main.js.map +1 -1
  281. package/dist/modes/app-server/daemon/occupancy.d.ts +22 -0
  282. package/dist/modes/app-server/daemon/occupancy.d.ts.map +1 -0
  283. package/dist/modes/app-server/daemon/occupancy.js +67 -0
  284. package/dist/modes/app-server/daemon/occupancy.js.map +1 -0
  285. package/dist/modes/app-server/daemon/probe.d.ts +3 -3
  286. package/dist/modes/app-server/daemon/probe.d.ts.map +1 -1
  287. package/dist/modes/app-server/daemon/probe.js +33 -10
  288. package/dist/modes/app-server/daemon/probe.js.map +1 -1
  289. package/dist/modes/app-server/daemon.d.ts.map +1 -1
  290. package/dist/modes/app-server/daemon.js +58 -18
  291. package/dist/modes/app-server/daemon.js.map +1 -1
  292. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  293. package/dist/modes/interactive/components/compaction-summary-message.js +8 -1
  294. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  295. package/dist/modes/interactive/components/custom-message.d.ts +3 -1
  296. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  297. package/dist/modes/interactive/components/custom-message.js +9 -2
  298. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  299. package/dist/modes/interactive/components/extension-editor.d.ts +1 -2
  300. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  301. package/dist/modes/interactive/components/extension-editor.js +16 -46
  302. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  303. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  304. package/dist/modes/interactive/components/footer.js.map +1 -1
  305. package/dist/modes/interactive/components/status-indicator.d.ts +4 -0
  306. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  307. package/dist/modes/interactive/components/status-indicator.js +13 -0
  308. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  309. package/dist/modes/interactive/external-editor.d.ts +12 -0
  310. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  311. package/dist/modes/interactive/external-editor.js +37 -0
  312. package/dist/modes/interactive/external-editor.js.map +1 -0
  313. package/dist/modes/interactive/interactive-mode.d.ts +3 -1
  314. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  315. package/dist/modes/interactive/interactive-mode.js +105 -80
  316. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  317. package/dist/modes/rpc/connection-handler.d.ts +6 -0
  318. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  319. package/dist/modes/rpc/connection-handler.js +34 -9
  320. package/dist/modes/rpc/connection-handler.js.map +1 -1
  321. package/dist/modes/rpc/multi-session-host.d.ts +15 -0
  322. package/dist/modes/rpc/multi-session-host.d.ts.map +1 -0
  323. package/dist/modes/rpc/multi-session-host.js +60 -0
  324. package/dist/modes/rpc/multi-session-host.js.map +1 -0
  325. package/dist/modes/rpc/neo-runtime-options.d.ts.map +1 -1
  326. package/dist/modes/rpc/neo-runtime-options.js +1 -0
  327. package/dist/modes/rpc/neo-runtime-options.js.map +1 -1
  328. package/dist/modes/rpc/rpc-client.d.ts +4 -0
  329. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  330. package/dist/modes/rpc/rpc-client.js +7 -0
  331. package/dist/modes/rpc/rpc-client.js.map +1 -1
  332. package/dist/modes/rpc/rpc-mode.d.ts +49 -0
  333. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  334. package/dist/modes/rpc/rpc-mode.js +49 -0
  335. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  336. package/dist/modes/rpc/rpc-types.d.ts +85 -1
  337. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  338. package/dist/modes/rpc/rpc-types.js +8 -1
  339. package/dist/modes/rpc/rpc-types.js.map +1 -1
  340. package/dist/modes/rpc/session-binding.d.ts +13 -0
  341. package/dist/modes/rpc/session-binding.d.ts.map +1 -0
  342. package/dist/modes/rpc/session-binding.js +33 -0
  343. package/dist/modes/rpc/session-binding.js.map +1 -0
  344. package/dist/modes/rpc/session-command-router.d.ts +19 -0
  345. package/dist/modes/rpc/session-command-router.d.ts.map +1 -0
  346. package/dist/modes/rpc/session-command-router.js +159 -0
  347. package/dist/modes/rpc/session-command-router.js.map +1 -0
  348. package/dist/modes/rpc/session-event-writer.d.ts +34 -0
  349. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -0
  350. package/dist/modes/rpc/session-event-writer.js +92 -0
  351. package/dist/modes/rpc/session-event-writer.js.map +1 -0
  352. package/dist/modes/rpc/session-extension-ui-requests.d.ts +15 -0
  353. package/dist/modes/rpc/session-extension-ui-requests.d.ts.map +1 -0
  354. package/dist/modes/rpc/session-extension-ui-requests.js +27 -0
  355. package/dist/modes/rpc/session-extension-ui-requests.js.map +1 -0
  356. package/dist/modes/rpc/session-registry.d.ts +58 -0
  357. package/dist/modes/rpc/session-registry.d.ts.map +1 -0
  358. package/dist/modes/rpc/session-registry.js +162 -0
  359. package/dist/modes/rpc/session-registry.js.map +1 -0
  360. package/dist/package-manager-cli.d.ts.map +1 -1
  361. package/dist/package-manager-cli.js +11 -0
  362. package/dist/package-manager-cli.js.map +1 -1
  363. package/dist/utils/clipboard.d.ts.map +1 -1
  364. package/dist/utils/clipboard.js +19 -8
  365. package/dist/utils/clipboard.js.map +1 -1
  366. package/dist/utils/version-check.d.ts.map +1 -1
  367. package/dist/utils/version-check.js +3 -1
  368. package/dist/utils/version-check.js.map +1 -1
  369. package/docs/app-server-daemon.md +3 -2
  370. package/docs/compaction.md +9 -4
  371. package/docs/custom-provider.md +5 -2
  372. package/docs/environment-variables.md +88 -0
  373. package/docs/extensions.md +27 -9
  374. package/docs/index.md +1 -0
  375. package/docs/json.md +5 -1
  376. package/docs/models.md +6 -2
  377. package/docs/providers.md +12 -1
  378. package/docs/rpc.md +154 -8
  379. package/docs/sdk.md +3 -0
  380. package/docs/session-format.md +17 -3
  381. package/docs/settings.md +13 -2
  382. package/docs/usage.md +1 -14
  383. package/examples/extensions/custom-compaction.ts +4 -0
  384. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  385. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  386. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  387. package/examples/extensions/gondolin/package-lock.json +2 -2
  388. package/examples/extensions/gondolin/package.json +1 -1
  389. package/examples/extensions/handoff.ts +9 -1
  390. package/examples/extensions/message-renderer.ts +2 -2
  391. package/examples/extensions/sandbox/package-lock.json +2 -2
  392. package/examples/extensions/sandbox/package.json +1 -1
  393. package/examples/extensions/summarize.ts +3 -0
  394. package/examples/extensions/with-deps/package-lock.json +2 -2
  395. package/examples/extensions/with-deps/package.json +1 -1
  396. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +36 -0
  397. package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
  398. package/node_modules/@earendil-works/pi-agent-core/README.md +31 -12
  399. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts +4 -4
  400. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  401. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +8 -7
  402. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  403. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +13 -3
  404. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  405. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +63 -27
  406. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  407. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +11 -12
  408. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  409. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +47 -22
  410. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  411. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +5 -1
  412. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  413. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +6 -8
  414. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  415. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +17 -5
  416. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  417. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +82 -27
  418. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  419. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts +12 -1
  420. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts.map +1 -1
  421. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.js +22 -17
  422. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.js.map +1 -1
  423. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +3 -9
  424. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  425. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js +118 -11
  426. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  427. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts +11 -3
  428. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -1
  429. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js +56 -4
  430. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js.map +1 -1
  431. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts +11 -3
  432. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -1
  433. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js +56 -4
  434. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js.map +1 -1
  435. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -1
  436. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js +2 -2
  437. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js.map +1 -1
  438. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +6 -4
  439. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  440. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +30 -14
  441. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  442. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts +27 -0
  443. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.d.ts.map +1 -0
  444. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js +132 -0
  445. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/bash.js.map +1 -0
  446. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit-diff.d.ts +89 -0
  447. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit-diff.d.ts.map +1 -0
  448. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit-diff.js +386 -0
  449. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit-diff.js.map +1 -0
  450. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.d.ts +19 -0
  451. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.d.ts.map +1 -0
  452. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js +95 -0
  453. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/edit.js.map +1 -0
  454. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts +4 -0
  455. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.d.ts.map +1 -0
  456. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js +46 -0
  457. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/file-mutation-queue.js.map +1 -0
  458. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/image.d.ts +3 -0
  459. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/image.d.ts.map +1 -0
  460. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/image.js +106 -0
  461. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/image.js.map +1 -0
  462. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/index.d.ts +6 -0
  463. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/index.d.ts.map +1 -0
  464. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/index.js +5 -0
  465. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/index.js.map +1 -0
  466. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts +4 -0
  467. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.d.ts.map +1 -0
  468. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js +26 -0
  469. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/path-utils.js.map +1 -0
  470. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts +34 -0
  471. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.d.ts.map +1 -0
  472. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js +110 -0
  473. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/read.js.map +1 -0
  474. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/tool-context.d.ts +6 -0
  475. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/tool-context.d.ts.map +1 -0
  476. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/tool-context.js +2 -0
  477. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/tool-context.js.map +1 -0
  478. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.d.ts +11 -0
  479. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.d.ts.map +1 -0
  480. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +31 -0
  481. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js.map +1 -0
  482. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +80 -18
  483. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  484. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  485. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +12 -4
  486. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  487. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js +90 -35
  488. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  489. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.d.ts.map +1 -1
  490. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js +10 -4
  491. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/truncate.js.map +1 -1
  492. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +4 -2
  493. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  494. package/node_modules/@earendil-works/pi-agent-core/dist/index.js +5 -2
  495. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  496. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.d.ts +10 -0
  497. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.d.ts.map +1 -0
  498. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.js +17 -0
  499. package/node_modules/@earendil-works/pi-agent-core/dist/stream-fn.js.map +1 -0
  500. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +8 -2
  501. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  502. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  503. package/node_modules/@earendil-works/pi-agent-core/package.json +4 -3
  504. package/node_modules/@earendil-works/pi-ai/README.md +44 -4
  505. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  506. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +130 -47
  507. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  508. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  509. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +36 -15
  510. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  511. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  512. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +55 -26
  513. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  514. package/node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.d.ts +17 -0
  515. package/node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.d.ts.map +1 -0
  516. package/node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.js +104 -0
  517. package/node_modules/@earendil-works/pi-ai/dist/api/constrained-sampling.js.map +1 -0
  518. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts.map +1 -1
  519. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +16 -13
  520. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  521. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts +4 -3
  522. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.d.ts.map +1 -1
  523. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js +17 -3
  524. package/node_modules/@earendil-works/pi-ai/dist/api/google-shared.js.map +1 -1
  525. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts.map +1 -1
  526. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +19 -13
  527. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  528. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.d.ts.map +1 -1
  529. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +13 -9
  530. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  531. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  532. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +92 -58
  533. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  534. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts +7 -9
  535. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  536. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +263 -56
  537. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  538. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts +7 -0
  539. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  540. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +180 -80
  541. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  542. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  543. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +48 -21
  544. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  545. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.d.ts.map +1 -1
  546. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +8 -3
  547. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js.map +1 -1
  548. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  549. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js +2 -4
  550. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  551. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  552. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +1 -0
  553. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  554. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +15 -0
  555. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
  556. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +52 -6
  557. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
  558. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.d.ts.map +1 -1
  559. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js +3 -2
  560. package/node_modules/@earendil-works/pi-ai/dist/auth/helpers.js.map +1 -1
  561. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.d.ts +10 -0
  562. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.d.ts.map +1 -0
  563. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js +249 -0
  564. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/kimi-coding.js.map +1 -0
  565. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts +4 -0
  566. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.d.ts.map +1 -1
  567. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js +10 -0
  568. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/load.js.map +1 -1
  569. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.d.ts.map +1 -1
  570. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js +2 -18
  571. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openai-codex.js.map +1 -1
  572. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.d.ts +13 -0
  573. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.d.ts.map +1 -0
  574. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.js +222 -0
  575. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/openrouter.js.map +1 -0
  576. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.d.ts +3 -2
  577. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.d.ts.map +1 -1
  578. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js +37 -35
  579. package/node_modules/@earendil-works/pi-ai/dist/auth/oauth/radius.js.map +1 -1
  580. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.d.ts.map +1 -1
  581. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js +11 -1
  582. package/node_modules/@earendil-works/pi-ai/dist/auth/resolve.js.map +1 -1
  583. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.d.ts.map +1 -1
  584. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js +4 -0
  585. package/node_modules/@earendil-works/pi-ai/dist/bun-oauth.js.map +1 -1
  586. package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts.map +1 -1
  587. package/node_modules/@earendil-works/pi-ai/dist/compat.js +2 -1
  588. package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
  589. package/node_modules/@earendil-works/pi-ai/dist/context-provenance.d.ts +16 -0
  590. package/node_modules/@earendil-works/pi-ai/dist/context-provenance.d.ts.map +1 -0
  591. package/node_modules/@earendil-works/pi-ai/dist/context-provenance.js +32 -0
  592. package/node_modules/@earendil-works/pi-ai/dist/context-provenance.js.map +1 -0
  593. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts +3 -0
  594. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  595. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +11 -3
  596. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  597. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +15 -0
  598. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  599. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +15 -0
  600. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  601. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts +19 -2
  602. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts.map +1 -1
  603. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.js +68 -3
  604. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.js.map +1 -1
  605. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +6 -0
  606. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  607. package/node_modules/@earendil-works/pi-ai/dist/index.js +6 -0
  608. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  609. package/node_modules/@earendil-works/pi-ai/dist/model-catalog.d.ts +17 -0
  610. package/node_modules/@earendil-works/pi-ai/dist/model-catalog.d.ts.map +1 -0
  611. package/node_modules/@earendil-works/pi-ai/dist/model-catalog.js +4 -0
  612. package/node_modules/@earendil-works/pi-ai/dist/model-catalog.js.map +1 -0
  613. package/node_modules/@earendil-works/pi-ai/dist/model.d.ts +2 -2
  614. package/node_modules/@earendil-works/pi-ai/dist/model.d.ts.map +1 -1
  615. package/node_modules/@earendil-works/pi-ai/dist/model.js.map +1 -1
  616. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts +7 -0
  617. package/node_modules/@earendil-works/pi-ai/dist/models-store.d.ts.map +1 -1
  618. package/node_modules/@earendil-works/pi-ai/dist/models-store.js.map +1 -1
  619. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +0 -6
  620. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  621. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +76 -4448
  622. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  623. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +4 -0
  624. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  625. package/node_modules/@earendil-works/pi-ai/dist/models.js +5 -54
  626. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  627. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.d.ts +12 -0
  628. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.d.ts.map +1 -0
  629. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.js +34 -0
  630. package/node_modules/@earendil-works/pi-ai/dist/node/provider-scope.js.map +1 -0
  631. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.d.ts +3 -63
  632. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.d.ts.map +1 -1
  633. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.js +2 -1
  634. package/node_modules/@earendil-works/pi-ai/dist/providers/alibaba-token-plan.models.js.map +1 -1
  635. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts +2 -0
  636. package/node_modules/@earendil-works/pi-ai/dist/providers/all.d.ts.map +1 -1
  637. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js +10 -0
  638. package/node_modules/@earendil-works/pi-ai/dist/providers/all.js.map +1 -1
  639. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  640. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +3 -2
  641. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  642. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts +3 -439
  643. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  644. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +2 -1
  645. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js.map +1 -1
  646. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.d.ts +3 -15
  647. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.d.ts.map +1 -1
  648. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.js +2 -1
  649. package/node_modules/@earendil-works/pi-ai/dist/providers/ant-ling.models.js.map +1 -1
  650. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  651. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +30 -3
  652. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  653. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts +3 -59
  654. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts.map +1 -1
  655. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +2 -1
  656. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js.map +1 -1
  657. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.d.ts +3 -187
  658. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  659. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.js +2 -1
  660. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.js.map +1 -1
  661. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.d.ts +3 -15
  662. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.d.ts.map +1 -1
  663. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js +2 -1
  664. package/node_modules/@earendil-works/pi-ai/dist/providers/cerebras.models.js.map +1 -1
  665. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.d.ts +3 -171
  666. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  667. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +2 -1
  668. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  669. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.d.ts +3 -55
  670. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  671. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.js +2 -1
  672. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  673. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -0
  674. package/node_modules/@earendil-works/pi-ai/dist/providers/data/alibaba-token-plan.json +1 -1
  675. package/node_modules/@earendil-works/pi-ai/dist/providers/data/amazon-bedrock.json +1 -1
  676. package/node_modules/@earendil-works/pi-ai/dist/providers/data/ant-ling.json +1 -1
  677. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  678. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  679. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cerebras.json +1 -1
  680. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  681. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-workers-ai.json +1 -1
  682. package/node_modules/@earendil-works/pi-ai/dist/providers/data/deepseek.json +1 -1
  683. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  684. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  685. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google-vertex.json +1 -1
  686. package/node_modules/@earendil-works/pi-ai/dist/providers/data/google.json +1 -1
  687. package/node_modules/@earendil-works/pi-ai/dist/providers/data/groq.json +1 -1
  688. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  689. package/node_modules/@earendil-works/pi-ai/dist/providers/data/kimi-coding.json +1 -1
  690. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax-cn.json +1 -1
  691. package/node_modules/@earendil-works/pi-ai/dist/providers/data/minimax.json +1 -1
  692. package/node_modules/@earendil-works/pi-ai/dist/providers/data/mistral.json +1 -1
  693. package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai-cn.json +1 -1
  694. package/node_modules/@earendil-works/pi-ai/dist/providers/data/moonshotai.json +1 -1
  695. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  696. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  697. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  698. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  699. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode.json +1 -1
  700. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  701. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan-cn.json +1 -0
  702. package/node_modules/@earendil-works/pi-ai/dist/providers/data/qwen-token-plan.json +1 -0
  703. package/node_modules/@earendil-works/pi-ai/dist/providers/data/together.json +1 -1
  704. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  705. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xai.json +1 -1
  706. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  707. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  708. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  709. package/node_modules/@earendil-works/pi-ai/dist/providers/data/xiaomi.json +1 -1
  710. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai-coding-cn.json +1 -1
  711. package/node_modules/@earendil-works/pi-ai/dist/providers/data/zai.json +1 -1
  712. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.d.ts +3 -11
  713. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.d.ts.map +1 -1
  714. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js +2 -1
  715. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js.map +1 -1
  716. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.d.ts +3 -67
  717. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.d.ts.map +1 -1
  718. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +2 -1
  719. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js.map +1 -1
  720. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.d.ts +3 -115
  721. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.d.ts.map +1 -1
  722. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +2 -1
  723. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js.map +1 -1
  724. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.models.d.ts +3 -51
  725. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.models.d.ts.map +1 -1
  726. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.models.js +2 -1
  727. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.models.js.map +1 -1
  728. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.d.ts +3 -75
  729. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.d.ts.map +1 -1
  730. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.js +2 -1
  731. package/node_modules/@earendil-works/pi-ai/dist/providers/google.models.js.map +1 -1
  732. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.d.ts +3 -31
  733. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.d.ts.map +1 -1
  734. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +2 -1
  735. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js.map +1 -1
  736. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.d.ts +3 -203
  737. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.d.ts.map +1 -1
  738. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.js +2 -1
  739. package/node_modules/@earendil-works/pi-ai/dist/providers/huggingface.models.js.map +1 -1
  740. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js +2 -2
  741. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js.map +1 -1
  742. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.d.ts.map +1 -1
  743. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.js +10 -2
  744. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.js.map +1 -1
  745. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts +3 -19
  746. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.d.ts.map +1 -1
  747. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js +2 -1
  748. package/node_modules/@earendil-works/pi-ai/dist/providers/kimi-coding.models.js.map +1 -1
  749. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.d.ts +3 -15
  750. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.d.ts.map +1 -1
  751. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.js +2 -1
  752. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax-cn.models.js.map +1 -1
  753. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.d.ts +3 -15
  754. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.d.ts.map +1 -1
  755. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.js +2 -1
  756. package/node_modules/@earendil-works/pi-ai/dist/providers/minimax.models.js.map +1 -1
  757. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.d.ts +3 -123
  758. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.d.ts.map +1 -1
  759. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js +2 -1
  760. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.models.js.map +1 -1
  761. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai-cn.models.d.ts +3 -43
  762. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  763. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai-cn.models.js +2 -1
  764. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai-cn.models.js.map +1 -1
  765. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai.models.d.ts +3 -43
  766. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai.models.d.ts.map +1 -1
  767. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai.models.js +2 -1
  768. package/node_modules/@earendil-works/pi-ai/dist/providers/moonshotai.models.js.map +1 -1
  769. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.d.ts +3 -79
  770. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.d.ts.map +1 -1
  771. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js +2 -1
  772. package/node_modules/@earendil-works/pi-ai/dist/providers/nvidia.models.js.map +1 -1
  773. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts +3 -31
  774. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts.map +1 -1
  775. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js +2 -1
  776. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js.map +1 -1
  777. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.d.ts +3 -187
  778. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.d.ts.map +1 -1
  779. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.js +2 -1
  780. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.js.map +1 -1
  781. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.d.ts +3 -67
  782. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.d.ts.map +1 -1
  783. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +2 -1
  784. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js.map +1 -1
  785. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts +3 -227
  786. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts.map +1 -1
  787. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +2 -1
  788. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js.map +1 -1
  789. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter-images.d.ts.map +1 -1
  790. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter-images.js +10 -2
  791. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter-images.js.map +1 -1
  792. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.d.ts.map +1 -1
  793. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js +10 -2
  794. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js.map +1 -1
  795. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts +3 -1095
  796. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts.map +1 -1
  797. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +2 -1
  798. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js.map +1 -1
  799. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.d.ts +3 -0
  800. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.d.ts.map +1 -0
  801. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.js +15 -0
  802. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.js.map +1 -0
  803. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.models.d.ts +4 -0
  804. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -0
  805. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.models.js +6 -0
  806. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan-cn.models.js.map +1 -0
  807. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.d.ts +3 -0
  808. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.d.ts.map +1 -0
  809. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.js +15 -0
  810. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.js.map +1 -0
  811. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.models.d.ts +4 -0
  812. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.models.d.ts.map +1 -0
  813. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.models.js +6 -0
  814. package/node_modules/@earendil-works/pi-ai/dist/providers/qwen-token-plan.models.js.map +1 -0
  815. package/node_modules/@earendil-works/pi-ai/dist/providers/radius-config.d.ts.map +1 -1
  816. package/node_modules/@earendil-works/pi-ai/dist/providers/radius-config.js +18 -14
  817. package/node_modules/@earendil-works/pi-ai/dist/providers/radius-config.js.map +1 -1
  818. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.d.ts +3 -67
  819. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.d.ts.map +1 -1
  820. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js +2 -1
  821. package/node_modules/@earendil-works/pi-ai/dist/providers/together.models.js.map +1 -1
  822. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts +3 -775
  823. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  824. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +2 -1
  825. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  826. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.d.ts +3 -15
  827. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.d.ts.map +1 -1
  828. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.js +2 -1
  829. package/node_modules/@earendil-works/pi-ai/dist/providers/xai.models.js.map +1 -1
  830. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.d.ts +3 -15
  831. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  832. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +2 -1
  833. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  834. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.d.ts +3 -15
  835. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  836. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +2 -1
  837. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  838. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.d.ts +3 -15
  839. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  840. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +2 -1
  841. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  842. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.d.ts +3 -27
  843. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.d.ts.map +1 -1
  844. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +2 -1
  845. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js.map +1 -1
  846. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.d.ts +3 -27
  847. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  848. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js +2 -1
  849. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js.map +1 -1
  850. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.d.ts +3 -27
  851. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.d.ts.map +1 -1
  852. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js +2 -1
  853. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js.map +1 -1
  854. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +52 -3
  855. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  856. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  857. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.d.ts.map +1 -1
  858. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +8 -3
  859. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js.map +1 -1
  860. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.d.ts +11 -0
  861. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.d.ts.map +1 -0
  862. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.js +30 -0
  863. package/node_modules/@earendil-works/pi-ai/dist/utils/openai-codex-auth.js.map +1 -0
  864. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +1 -0
  865. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  866. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +3 -0
  867. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  868. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.d.ts +16 -0
  869. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.d.ts.map +1 -0
  870. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js +94 -0
  871. package/node_modules/@earendil-works/pi-ai/dist/utils/provider-retry.js.map +1 -0
  872. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts +41 -0
  873. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  874. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +82 -0
  875. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  876. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.d.ts +30 -0
  877. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.d.ts.map +1 -0
  878. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.js +70 -0
  879. package/node_modules/@earendil-works/pi-ai/dist/utils/server-fallback-receipt.js.map +1 -0
  880. package/node_modules/@earendil-works/pi-ai/dist/utils/text.d.ts +6 -0
  881. package/node_modules/@earendil-works/pi-ai/dist/utils/text.d.ts.map +1 -0
  882. package/node_modules/@earendil-works/pi-ai/dist/utils/text.js +10 -0
  883. package/node_modules/@earendil-works/pi-ai/dist/utils/text.js.map +1 -0
  884. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts +3 -0
  885. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.d.ts.map +1 -0
  886. package/node_modules/@earendil-works/{pi-agent-core/dist/harness/session → pi-ai/dist/utils}/uuid.js +2 -2
  887. package/node_modules/@earendil-works/pi-ai/dist/utils/uuid.js.map +1 -0
  888. package/node_modules/@earendil-works/pi-ai/package.json +11 -4
  889. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  890. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  891. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +31 -22
  892. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  893. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  894. package/node_modules/@earendil-works/pi-tui/dist/tui.js +2 -0
  895. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  896. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  897. package/package.json +7 -10
  898. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/uuid.d.ts +0 -2
  899. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
  900. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/uuid.js.map +0 -1
@@ -15,6 +15,9 @@ import { formatProviderError, normalizeProviderError } from "../utils/error-body
15
15
  import { AssistantMessageEventStream } from "../utils/event-stream.js";
16
16
  import { headersToRecord } from "../utils/headers.js";
17
17
  import { resolveHttpProxyUrlForTarget } from "../utils/node-http-proxy.js";
18
+ import { extractOpenAiCodexAccountId } from "../utils/openai-codex-auth.js";
19
+ import { uuidv7 } from "../utils/uuid.js";
20
+ import { createGrammarToolInputProperties } from "./constrained-sampling.js";
18
21
  import { clampOpenAIPromptCacheKey } from "./openai-prompt-cache.js";
19
22
  import { convertResponsesMessages, convertResponsesTools, processResponsesStream } from "./openai-responses-shared.js";
20
23
  import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, OPENAI_RESPONSES_RESERVED_BODY_KEYS, } from "./simple-options.js";
@@ -22,7 +25,6 @@ import { applyExtraBody, buildBaseOptions, clampMaxForOpenAI, OPENAI_RESPONSES_R
22
25
  // Configuration
23
26
  // ============================================================================
24
27
  const DEFAULT_CODEX_BASE_URL = "https://chatgpt.com/backend-api";
25
- const JWT_CLAIM_PATH = "https://api.openai.com/auth";
26
28
  const DEFAULT_MAX_RETRIES = 0;
27
29
  const BASE_DELAY_MS = 1000;
28
30
  const DEFAULT_MAX_RETRY_DELAY_MS = 60_000;
@@ -32,8 +34,9 @@ const DEFAULT_WEBSOCKET_CONNECT_TIMEOUT_MS = 15_000;
32
34
  const REQUEST_COMPRESSION_ZSTD_LEVEL = 3;
33
35
  const CODEX_TOOL_CALL_PROVIDERS = new Set(["openai", "openai-codex", "opencode"]);
34
36
  const WEBSOCKET_MESSAGE_TOO_BIG_CLOSE_CODE = 1009;
35
- const CODEX_PREVIOUS_RESPONSE_STALE_CODES = new Set(["previous_response_not_found", "codex_previous_response_stale"]);
37
+ const CODEX_PREVIOUS_RESPONSE_STALE_CODES = new Set(["codex_previous_response_stale"]);
36
38
  const WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE = "websocket_connection_limit_reached";
39
+ const PREVIOUS_RESPONSE_NOT_FOUND_CODE = "previous_response_not_found";
37
40
  const CODEX_RESPONSE_STATUSES = new Set([
38
41
  "completed",
39
42
  "incomplete",
@@ -79,9 +82,14 @@ function getRetryAfterDelayMs(headers) {
79
82
  }
80
83
  return undefined;
81
84
  }
82
- function capRetryDelayMs(delayMs, options) {
85
+ class RetryDelayExceededError extends Error {
86
+ }
87
+ function validateRetryDelayMs(delayMs, options) {
83
88
  const maxRetryDelayMs = options?.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS;
84
- return maxRetryDelayMs > 0 ? Math.min(delayMs, maxRetryDelayMs) : delayMs;
89
+ if (maxRetryDelayMs > 0 && delayMs > maxRetryDelayMs) {
90
+ throw new RetryDelayExceededError(`Server requested ${Math.ceil(delayMs / 1000)}s retry delay (max: ${Math.ceil(maxRetryDelayMs / 1000)}s)`);
91
+ }
92
+ return delayMs;
85
93
  }
86
94
  function sleep(ms, signal) {
87
95
  return new Promise((resolve, reject) => {
@@ -162,32 +170,40 @@ export const stream = (model, context, options) => {
162
170
  throw new Error(`No API key for provider: ${model.provider}`);
163
171
  }
164
172
  const accountId = extractAccountId(apiKey);
165
- let body = buildRequestBody(model, context, options);
173
+ const grammarToolInputProperties = createGrammarToolInputProperties(context.tools, model.compat?.supportsOpenAIGrammarTools ?? false);
174
+ const cacheSessionId = options?.cacheRetention === "none" ? undefined : options?.sessionId;
175
+ const codexSessionId = clampOpenAIPromptCacheKey(cacheSessionId);
176
+ let body = buildRequestBody(model, context, options, codexSessionId, grammarToolInputProperties);
166
177
  const nextBody = await options?.onPayload?.(body, model);
167
178
  if (nextBody !== undefined) {
168
179
  body = nextBody;
169
180
  }
170
- const codexSessionId = clampOpenAIPromptCacheKey(options?.sessionId);
171
- const websocketRequestId = codexSessionId || createCodexRequestId();
181
+ const websocketRequestId = codexSessionId || uuidv7();
172
182
  const sseHeaders = buildSSEHeaders(model.headers, options?.headers, accountId, apiKey, codexSessionId);
173
183
  const websocketHeaders = buildWebSocketHeaders(model.headers, options?.headers, accountId, apiKey, websocketRequestId);
174
184
  const bodyJson = JSON.stringify(body);
175
185
  const httpTimeoutMs = normalizeTimeoutMs(options?.timeoutMs);
176
186
  const websocketConnectTimeoutMs = normalizeTimeoutMs(options?.websocketConnectTimeoutMs);
177
187
  const transport = options?.transport || "auto";
178
- const websocketDisabledForSession = transport !== "sse" && isWebSocketSseFallbackActive(options?.sessionId);
188
+ let startEmitted = false;
189
+ const websocketDisabledForSession = transport !== "sse" && isWebSocketSseFallbackActive(cacheSessionId);
179
190
  if (websocketDisabledForSession) {
180
- recordWebSocketSseFallback(options?.sessionId);
191
+ recordWebSocketSseFallback(cacheSessionId);
181
192
  }
182
193
  if (transport !== "sse" && !websocketDisabledForSession) {
183
194
  let websocketStarted = false;
184
195
  let retriedWebSocketConnectionLimit = false;
196
+ let retriedMissingWebSocketContinuation = false;
185
197
  while (true) {
186
198
  websocketStarted = false;
187
199
  try {
188
200
  await processWebSocketStream(resolveCodexWebSocketUrl(model.baseUrl), body, websocketHeaders, output, stream, model, () => {
189
201
  websocketStarted = true;
190
- }, httpTimeoutMs, websocketConnectTimeoutMs, options);
202
+ if (!startEmitted) {
203
+ startEmitted = true;
204
+ stream.push({ type: "start", partial: output });
205
+ }
206
+ }, httpTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options);
191
207
  if (options?.signal?.aborted) {
192
208
  throw new Error("Request was aborted");
193
209
  }
@@ -202,6 +218,11 @@ export const stream = (model, context, options) => {
202
218
  catch (error) {
203
219
  const aborted = options?.signal?.aborted;
204
220
  const connectionLimitBeforeStart = !websocketStarted && isWebSocketConnectionLimitReachedError(error);
221
+ const previousResponseNotFound = isPreviousResponseNotFoundError(error);
222
+ if (!aborted && previousResponseNotFound && !retriedMissingWebSocketContinuation) {
223
+ retriedMissingWebSocketContinuation = true;
224
+ continue;
225
+ }
205
226
  if (!aborted && connectionLimitBeforeStart && !retriedWebSocketConnectionLimit) {
206
227
  retriedWebSocketConnectionLimit = true;
207
228
  continue;
@@ -216,11 +237,11 @@ export const stream = (model, context, options) => {
216
237
  phase: websocketStarted ? "after_message_stream_start" : "before_message_stream_start",
217
238
  requestBytes: new TextEncoder().encode(bodyJson).byteLength,
218
239
  }));
219
- recordWebSocketFailure(options?.sessionId, error);
240
+ recordWebSocketFailure(cacheSessionId, error);
220
241
  if (websocketStarted) {
221
242
  throw error;
222
243
  }
223
- recordWebSocketSseFallback(options?.sessionId);
244
+ recordWebSocketSseFallback(cacheSessionId);
224
245
  break;
225
246
  }
226
247
  }
@@ -270,9 +291,7 @@ export const stream = (model, context, options) => {
270
291
  const retryAfterDelayMs = getRetryAfterDelayMs(response.headers);
271
292
  const delayMs = retryAfterDelayMs === undefined
272
293
  ? BASE_DELAY_MS * 2 ** attempt
273
- : response.status === 429
274
- ? capRetryDelayMs(retryAfterDelayMs, options)
275
- : retryAfterDelayMs;
294
+ : validateRetryDelayMs(retryAfterDelayMs, options);
276
295
  await sleep(delayMs, options?.signal);
277
296
  continue;
278
297
  }
@@ -292,7 +311,9 @@ export const stream = (model, context, options) => {
292
311
  }
293
312
  lastError = error instanceof Error ? error : new Error(String(error));
294
313
  // Network errors are retryable
295
- if (attempt < maxRetries && !lastError.message.includes("usage limit")) {
314
+ if (attempt < maxRetries &&
315
+ !(lastError instanceof RetryDelayExceededError) &&
316
+ !lastError.message.includes("usage limit")) {
296
317
  const delayMs = BASE_DELAY_MS * 2 ** attempt;
297
318
  await sleep(delayMs, options?.signal);
298
319
  continue;
@@ -306,8 +327,11 @@ export const stream = (model, context, options) => {
306
327
  if (!response.body) {
307
328
  throw new Error("No response body");
308
329
  }
309
- stream.push({ type: "start", partial: output });
310
- await processStream(response, output, stream, model, options);
330
+ if (!startEmitted) {
331
+ startEmitted = true;
332
+ stream.push({ type: "start", partial: output });
333
+ }
334
+ await processStream(response, output, stream, model, grammarToolInputProperties, options);
311
335
  if (options?.signal?.aborted) {
312
336
  throw new Error("Request was aborted");
313
337
  }
@@ -316,8 +340,9 @@ export const stream = (model, context, options) => {
316
340
  }
317
341
  catch (error) {
318
342
  for (const block of output.content) {
319
- // partialJson is only a streaming scratch buffer; never persist it.
343
+ // Streaming scratch buffers are only used during parsing; never persist them.
320
344
  delete block.partialJson;
345
+ delete block.customInput;
321
346
  }
322
347
  output.stopReason = options?.signal?.aborted ? "aborted" : "error";
323
348
  output.errorMessage = formatProviderError(normalizeProviderError(error));
@@ -347,14 +372,29 @@ export const streamSimple = (model, context, options) => {
347
372
  // ============================================================================
348
373
  // Request Building
349
374
  // ============================================================================
350
- function buildRequestBody(model, context, options) {
351
- const reasoningRequested = options?.reasoningEffort !== undefined && options.reasoningEffort !== "none";
375
+ function buildRequestBody(model, context, options, cacheSessionId, grammarToolInputProperties = createGrammarToolInputProperties(context.tools, model.compat?.supportsOpenAIGrammarTools ?? false)) {
376
+ const requestedReasoningEffort = options?.reasoningEffort;
377
+ const mappedReasoningEffort = requestedReasoningEffort === undefined
378
+ ? undefined
379
+ : requestedReasoningEffort === "none"
380
+ ? model.thinkingLevelMap?.off
381
+ : model.thinkingLevelMap?.[requestedReasoningEffort];
382
+ const reasoningEffort = mappedReasoningEffort === undefined ? requestedReasoningEffort : mappedReasoningEffort;
383
+ const reasoningRequested = requestedReasoningEffort !== undefined && requestedReasoningEffort !== "none" && reasoningEffort !== null;
384
+ const supportsStrictMode = model.compat?.supportsStrictMode ?? true;
385
+ const supportsOpenAIGrammarTools = model.compat?.supportsOpenAIGrammarTools ?? false;
352
386
  const toolPlacement = splitDeferredTools(context, model.compat?.supportsToolSearch ?? false);
353
387
  const messages = convertResponsesMessages(model, context, CODEX_TOOL_CALL_PROVIDERS, {
354
388
  includeSystemPrompt: false,
355
389
  preserveThinking: reasoningRequested,
356
390
  preserveTextSignatures: true,
391
+ grammarToolInputProperties,
357
392
  deferredTools: toolPlacement.deferred,
393
+ toolOptions: {
394
+ strict: null,
395
+ supportsStrictMode,
396
+ supportsOpenAIGrammarTools,
397
+ },
358
398
  });
359
399
  const body = {
360
400
  model: model.id,
@@ -364,7 +404,7 @@ function buildRequestBody(model, context, options) {
364
404
  input: messages,
365
405
  text: { verbosity: options?.textVerbosity || "low" },
366
406
  include: ["reasoning.encrypted_content"],
367
- prompt_cache_key: clampOpenAIPromptCacheKey(options?.sessionId),
407
+ prompt_cache_key: cacheSessionId,
368
408
  tool_choice: options?.toolChoice ?? "auto",
369
409
  parallel_tool_calls: true,
370
410
  };
@@ -375,18 +415,23 @@ function buildRequestBody(model, context, options) {
375
415
  body.service_tier = options.serviceTier;
376
416
  }
377
417
  if (toolPlacement.immediate.length > 0) {
378
- body.tools = convertResponsesTools(toolPlacement.immediate, { strict: null });
418
+ body.tools = convertResponsesTools(toolPlacement.immediate, {
419
+ strict: null,
420
+ supportsStrictMode,
421
+ supportsOpenAIGrammarTools,
422
+ });
379
423
  }
380
- if (options?.reasoningEffort !== undefined) {
381
- const effort = options.reasoningEffort === "none"
382
- ? (model.thinkingLevelMap?.off ?? "none")
383
- : (model.thinkingLevelMap?.[options.reasoningEffort] ?? options.reasoningEffort);
384
- if (effort !== null) {
385
- body.reasoning = {
386
- effort,
387
- summary: options.reasoningSummary ?? "auto",
388
- };
389
- }
424
+ if (reasoningEffort !== undefined && reasoningEffort !== null) {
425
+ body.reasoning = {
426
+ effort: reasoningEffort,
427
+ summary: options?.reasoningSummary ?? "auto",
428
+ };
429
+ }
430
+ else if (reasoningEffort === undefined && model.reasoning && model.thinkingLevelMap?.off !== null) {
431
+ body.reasoning = {
432
+ effort: model.thinkingLevelMap?.off ?? "none",
433
+ summary: options?.reasoningSummary ?? "auto",
434
+ };
390
435
  }
391
436
  applyExtraBody(body, options?.extraBody, OPENAI_RESPONSES_RESERVED_BODY_KEYS);
392
437
  return body;
@@ -437,9 +482,10 @@ function resolveCodexWebSocketUrl(baseUrl) {
437
482
  // ============================================================================
438
483
  // Response Processing
439
484
  // ============================================================================
440
- async function processStream(response, output, stream, model, options) {
485
+ async function processStream(response, output, stream, model, grammarToolInputProperties, options) {
441
486
  await processResponsesStream(mapCodexEvents(parseSSE(response, options?.signal)), output, stream, model, {
442
487
  serviceTier: options?.serviceTier,
488
+ grammarToolInputProperties,
443
489
  resolveServiceTier: resolveCodexServiceTier,
444
490
  applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model),
445
491
  });
@@ -488,6 +534,9 @@ function isCodexPreviousResponseStale(error) {
488
534
  typeof error.code === "string" &&
489
535
  CODEX_PREVIOUS_RESPONSE_STALE_CODES.has(error.code));
490
536
  }
537
+ function isPreviousResponseNotFoundError(error) {
538
+ return error instanceof CodexApiError && error.code === PREVIOUS_RESPONSE_NOT_FOUND_CODE;
539
+ }
491
540
  function isWebSocketConnectionLimitReachedError(error) {
492
541
  return error instanceof CodexApiError && error.code === WEBSOCKET_CONNECTION_LIMIT_REACHED_CODE;
493
542
  }
@@ -1125,34 +1174,34 @@ function recordWebSocketRequestStats(stats, requestBody, reused, useCachedContex
1125
1174
  stats.lastPreviousResponseId = undefined;
1126
1175
  }
1127
1176
  }
1128
- async function* startWebSocketOutputOnFirstEvent(events, output, stream, onStart) {
1177
+ async function* startWebSocketOutputOnFirstEvent(events, onStart) {
1129
1178
  let started = false;
1130
1179
  for await (const event of events) {
1131
1180
  if (!started) {
1132
1181
  started = true;
1133
1182
  onStart();
1134
- stream.push({ type: "start", partial: output });
1135
1183
  }
1136
1184
  yield event;
1137
1185
  }
1138
1186
  }
1139
- async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, options) {
1140
- const { socket, entry, reused, release } = await acquireWebSocket(url, headers, options?.sessionId, options?.signal, websocketConnectTimeoutMs, options?.env);
1187
+ async function processWebSocketStream(url, body, headers, output, stream, model, onStart, idleTimeoutMs, websocketConnectTimeoutMs, cacheSessionId, grammarToolInputProperties, options) {
1188
+ const { socket, entry, reused, release } = await acquireWebSocket(url, headers, cacheSessionId, options?.signal, websocketConnectTimeoutMs, options?.env);
1141
1189
  let keepConnection = true;
1142
1190
  const useCachedContext = options?.transport === "websocket-cached" || options?.transport === "auto";
1143
1191
  // ChatGPT Codex Responses rejects `store: true` ("Store must be set to false").
1144
1192
  // WebSocket continuation still works via connection-scoped previous_response_id state.
1145
1193
  const fullBody = body;
1146
1194
  let requestBody = useCachedContext && entry ? buildCachedWebSocketRequestBody(entry, fullBody) : fullBody;
1147
- const stats = options?.sessionId ? getOrCreateWebSocketDebugStats(options.sessionId) : undefined;
1195
+ const stats = cacheSessionId ? getOrCreateWebSocketDebugStats(cacheSessionId) : undefined;
1148
1196
  let recoveredStalePreviousResponse = false;
1149
1197
  try {
1150
1198
  while (true) {
1151
1199
  recordWebSocketRequestStats(stats, requestBody, reused && !recoveredStalePreviousResponse, useCachedContext);
1152
1200
  try {
1153
1201
  socket.send(JSON.stringify({ type: "response.create", ...requestBody }));
1154
- await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs)), output, stream, onStart), output, stream, model, {
1202
+ await processResponsesStream(startWebSocketOutputOnFirstEvent(mapCodexEvents(parseWebSocket(socket, options?.signal, idleTimeoutMs)), onStart), output, stream, model, {
1155
1203
  serviceTier: options?.serviceTier,
1204
+ grammarToolInputProperties,
1156
1205
  resolveServiceTier: resolveCodexServiceTier,
1157
1206
  applyServiceTierPricing: (usage, serviceTier) => applyServiceTierPricing(usage, serviceTier, model),
1158
1207
  });
@@ -1178,7 +1227,8 @@ async function processWebSocketStream(url, body, headers, output, stream, model,
1178
1227
  else if (useCachedContext && entry && output.responseId) {
1179
1228
  const responseItems = convertResponsesMessages(model, { messages: [output] }, CODEX_TOOL_CALL_PROVIDERS, {
1180
1229
  includeSystemPrompt: false,
1181
- }).filter((item) => item.type !== "function_call_output");
1230
+ grammarToolInputProperties,
1231
+ }).filter((item) => item.type !== "function_call_output" && item.type !== "custom_tool_call_output");
1182
1232
  entry.continuation = {
1183
1233
  lastRequestBody: fullBody,
1184
1234
  lastResponseId: output.responseId,
@@ -1227,23 +1277,7 @@ async function parseErrorResponse(response) {
1227
1277
  // Auth & Headers
1228
1278
  // ============================================================================
1229
1279
  function extractAccountId(token) {
1230
- try {
1231
- const parts = token.split(".");
1232
- if (parts.length !== 3)
1233
- return undefined;
1234
- const payload = JSON.parse(atob(parts[1]));
1235
- const accountId = payload?.[JWT_CLAIM_PATH]?.chatgpt_account_id;
1236
- return typeof accountId === "string" && accountId.length > 0 ? accountId : undefined;
1237
- }
1238
- catch {
1239
- return undefined;
1240
- }
1241
- }
1242
- function createCodexRequestId() {
1243
- if (typeof globalThis.crypto?.randomUUID === "function") {
1244
- return globalThis.crypto.randomUUID();
1245
- }
1246
- return `codex_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
1280
+ return extractOpenAiCodexAccountId(token);
1247
1281
  }
1248
1282
  function buildBaseCodexHeaders(initHeaders, additionalHeaders, accountId, token) {
1249
1283
  const headers = new Headers(initHeaders);