@astralyn/pi 0.85.1 → 0.85.3

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 (316) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/bundle/chunks/anthropic-messages-IHRRITCV.js +6 -0
  3. package/dist/bundle/chunks/anthropic.js +75 -0
  4. package/dist/bundle/chunks/azure-openai-responses-QXBIDYXO.js +2 -0
  5. package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
  6. package/dist/bundle/chunks/chunk-37ATLPRE.js +2 -0
  7. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  8. package/dist/bundle/chunks/chunk-5B3S5DVL.js +4 -0
  9. package/dist/bundle/chunks/chunk-5FDOJRDS.js +2 -0
  10. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  11. package/dist/bundle/chunks/chunk-7LO5Z4WE.js +2 -0
  12. package/dist/bundle/chunks/chunk-APKJ4JGA.js +2 -0
  13. package/dist/bundle/chunks/chunk-EDBLK2JQ.js +2 -0
  14. package/dist/bundle/chunks/chunk-FEZ5RM2B.js +2 -0
  15. package/dist/bundle/chunks/chunk-JEIV47WR.js +2 -0
  16. package/dist/bundle/chunks/chunk-JSJPY26N.js +2 -0
  17. package/dist/bundle/chunks/chunk-KI6LC764.js +42 -0
  18. package/dist/bundle/chunks/chunk-LB4P77SH.js +1688 -0
  19. package/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
  20. package/dist/bundle/chunks/chunk-O36ZMA3U.js +2 -0
  21. package/dist/bundle/chunks/chunk-OWESLY5T.js +11 -0
  22. package/dist/bundle/chunks/chunk-RRBI7OUG.js +50 -0
  23. package/dist/bundle/chunks/chunk-S2DJQQI2.js +2 -0
  24. package/dist/bundle/chunks/chunk-UP6RLTHQ.js +2 -0
  25. package/dist/bundle/chunks/chunk-UUSTLCVC.js +2 -0
  26. package/dist/bundle/chunks/chunk-WWBSZG5V.js +2 -0
  27. package/dist/bundle/chunks/chunk-YZJWMPUI.js +2 -0
  28. package/dist/bundle/chunks/github-copilot.js +2 -0
  29. package/dist/bundle/chunks/google-generative-ai-NBOR3IQR.js +2 -0
  30. package/dist/bundle/chunks/google-vertex-VTHX3SUB.js +2 -0
  31. package/dist/bundle/chunks/https-proxy-agent-2VXB7436.js +13 -0
  32. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  33. package/dist/bundle/chunks/kimi-coding.js +2 -0
  34. package/dist/bundle/chunks/mistral-conversations-NO4ANAA5.js +5 -0
  35. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  36. package/dist/bundle/chunks/node-7L5OTM6S.js +2 -0
  37. package/dist/bundle/chunks/node-G4XOIDPH.js +16 -0
  38. package/dist/bundle/chunks/openai-codex-responses-5S3T3HMA.js +10 -0
  39. package/dist/bundle/chunks/openai-codex.js +75 -0
  40. package/dist/bundle/chunks/openai-completions-CXRRTRWE.js +7 -0
  41. package/dist/bundle/chunks/openai-responses-CV3MH6VP.js +2 -0
  42. package/dist/bundle/chunks/openrouter-images-6XDE2CEW.js +2 -0
  43. package/dist/bundle/chunks/openrouter.js +75 -0
  44. package/dist/bundle/chunks/pi-messages-PE6B42TG.js +8 -0
  45. package/dist/bundle/chunks/radius.js +75 -0
  46. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  47. package/dist/bundle/chunks/xai.js +2 -0
  48. package/dist/bundle/cli.js +3 -0
  49. package/dist/bundle/index.js +2 -0
  50. package/dist/bundle/rpc-entry.js +3 -0
  51. package/dist/cli.js +5 -2469
  52. package/dist/core/agent-session.d.ts.map +1 -1
  53. package/dist/core/agent-session.js +2 -6
  54. package/dist/core/agent-session.js.map +1 -1
  55. package/dist/core/background/history.d.ts.map +1 -1
  56. package/dist/core/background/history.js +6 -0
  57. package/dist/core/background/history.js.map +1 -1
  58. package/dist/core/background/presentation.d.ts.map +1 -1
  59. package/dist/core/background/presentation.js +41 -4
  60. package/dist/core/background/presentation.js.map +1 -1
  61. package/dist/core/background/service.d.ts +2 -2
  62. package/dist/core/background/service.d.ts.map +1 -1
  63. package/dist/core/background/service.js +38 -15
  64. package/dist/core/background/service.js.map +1 -1
  65. package/dist/core/background/types.d.ts +9 -0
  66. package/dist/core/background/types.d.ts.map +1 -1
  67. package/dist/core/background/types.js +4 -0
  68. package/dist/core/background/types.js.map +1 -1
  69. package/dist/core/compaction/compaction.d.ts +5 -12
  70. package/dist/core/compaction/compaction.d.ts.map +1 -1
  71. package/dist/core/compaction/compaction.js +11 -19
  72. package/dist/core/compaction/compaction.js.map +1 -1
  73. package/dist/core/compaction/settings.d.ts +27 -0
  74. package/dist/core/compaction/settings.d.ts.map +1 -0
  75. package/dist/core/compaction/settings.js +40 -0
  76. package/dist/core/compaction/settings.js.map +1 -0
  77. package/dist/core/extensions/index.d.ts +1 -1
  78. package/dist/core/extensions/index.d.ts.map +1 -1
  79. package/dist/core/extensions/index.js.map +1 -1
  80. package/dist/core/extensions/runner.d.ts +0 -1
  81. package/dist/core/extensions/runner.d.ts.map +1 -1
  82. package/dist/core/extensions/runner.js +0 -6
  83. package/dist/core/extensions/runner.js.map +1 -1
  84. package/dist/core/extensions/types.d.ts +0 -11
  85. package/dist/core/extensions/types.d.ts.map +1 -1
  86. package/dist/core/extensions/types.js.map +1 -1
  87. package/dist/core/keybindings.d.ts +15 -0
  88. package/dist/core/keybindings.d.ts.map +1 -1
  89. package/dist/core/keybindings.js +12 -0
  90. package/dist/core/keybindings.js.map +1 -1
  91. package/dist/core/model-config.d.ts +32 -10
  92. package/dist/core/model-config.d.ts.map +1 -1
  93. package/dist/core/model-config.js +38 -1
  94. package/dist/core/model-config.js.map +1 -1
  95. package/dist/core/model-runtime.d.ts +2 -0
  96. package/dist/core/model-runtime.d.ts.map +1 -1
  97. package/dist/core/model-runtime.js +4 -0
  98. package/dist/core/model-runtime.js.map +1 -1
  99. package/dist/core/settings-manager.d.ts +4 -7
  100. package/dist/core/settings-manager.d.ts.map +1 -1
  101. package/dist/core/settings-manager.js +7 -6
  102. package/dist/core/settings-manager.js.map +1 -1
  103. package/dist/core/tools/bash.d.ts +3 -9
  104. package/dist/core/tools/bash.d.ts.map +1 -1
  105. package/dist/core/tools/bash.js +3 -8
  106. package/dist/core/tools/bash.js.map +1 -1
  107. package/dist/core/tools/shell-execution.d.ts.map +1 -1
  108. package/dist/core/tools/shell-execution.js +3 -1
  109. package/dist/core/tools/shell-execution.js.map +1 -1
  110. package/dist/extensions/background/manager.d.ts +8 -5
  111. package/dist/extensions/background/manager.d.ts.map +1 -1
  112. package/dist/extensions/background/manager.js +115 -39
  113. package/dist/extensions/background/manager.js.map +1 -1
  114. package/dist/extensions/background/task-view.d.ts +5 -0
  115. package/dist/extensions/background/task-view.d.ts.map +1 -1
  116. package/dist/extensions/background/task-view.js +4 -0
  117. package/dist/extensions/background/task-view.js.map +1 -1
  118. package/dist/extensions/btw/controller.d.ts +1 -1
  119. package/dist/extensions/btw/controller.d.ts.map +1 -1
  120. package/dist/extensions/btw/controller.js +4 -4
  121. package/dist/extensions/btw/controller.js.map +1 -1
  122. package/dist/extensions/btw/index.js +3 -3
  123. package/dist/extensions/btw/index.js.map +1 -1
  124. package/dist/extensions/index.js +2 -2
  125. package/dist/extensions/index.js.map +1 -1
  126. package/dist/extensions/provider/catalog.d.ts +57 -0
  127. package/dist/extensions/provider/catalog.d.ts.map +1 -0
  128. package/dist/extensions/provider/catalog.js +181 -0
  129. package/dist/extensions/provider/catalog.js.map +1 -0
  130. package/dist/extensions/provider/compat-fields.d.ts +25 -0
  131. package/dist/extensions/provider/compat-fields.d.ts.map +1 -0
  132. package/dist/extensions/provider/compat-fields.js +148 -0
  133. package/dist/extensions/provider/compat-fields.js.map +1 -0
  134. package/dist/extensions/provider/configuration.d.ts +8 -0
  135. package/dist/extensions/provider/configuration.d.ts.map +1 -0
  136. package/dist/extensions/provider/configuration.js +21 -0
  137. package/dist/extensions/provider/configuration.js.map +1 -0
  138. package/dist/extensions/provider/connection.d.ts +14 -0
  139. package/dist/extensions/provider/connection.d.ts.map +1 -0
  140. package/dist/extensions/provider/connection.js +86 -0
  141. package/dist/extensions/provider/connection.js.map +1 -0
  142. package/dist/extensions/provider/constants.d.ts +38 -0
  143. package/dist/extensions/provider/constants.d.ts.map +1 -0
  144. package/dist/extensions/provider/constants.js +75 -0
  145. package/dist/extensions/provider/constants.js.map +1 -0
  146. package/dist/extensions/provider/index.d.ts +4 -0
  147. package/dist/extensions/provider/index.d.ts.map +1 -0
  148. package/dist/extensions/provider/index.js +65 -0
  149. package/dist/extensions/provider/index.js.map +1 -0
  150. package/dist/extensions/provider/probe.d.ts +34 -0
  151. package/dist/extensions/provider/probe.d.ts.map +1 -0
  152. package/dist/extensions/provider/probe.js +178 -0
  153. package/dist/extensions/provider/probe.js.map +1 -0
  154. package/dist/extensions/provider/refresh.d.ts +30 -0
  155. package/dist/extensions/provider/refresh.d.ts.map +1 -0
  156. package/dist/extensions/provider/refresh.js +66 -0
  157. package/dist/extensions/provider/refresh.js.map +1 -0
  158. package/dist/extensions/provider/store.d.ts +131 -0
  159. package/dist/extensions/provider/store.d.ts.map +1 -0
  160. package/dist/extensions/provider/store.js +503 -0
  161. package/dist/extensions/provider/store.js.map +1 -0
  162. package/dist/extensions/provider/ui/app.d.ts +25 -0
  163. package/dist/extensions/provider/ui/app.d.ts.map +1 -0
  164. package/dist/extensions/provider/ui/app.js +153 -0
  165. package/dist/extensions/provider/ui/app.js.map +1 -0
  166. package/dist/extensions/provider/ui/builtin-data.d.ts +53 -0
  167. package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -0
  168. package/dist/extensions/provider/ui/builtin-data.js +315 -0
  169. package/dist/extensions/provider/ui/builtin-data.js.map +1 -0
  170. package/dist/extensions/provider/ui/compat.d.ts +57 -0
  171. package/dist/extensions/provider/ui/compat.d.ts.map +1 -0
  172. package/dist/extensions/provider/ui/compat.js +427 -0
  173. package/dist/extensions/provider/ui/compat.js.map +1 -0
  174. package/dist/extensions/provider/ui/dialogs.d.ts +30 -0
  175. package/dist/extensions/provider/ui/dialogs.d.ts.map +1 -0
  176. package/dist/extensions/provider/ui/dialogs.js +89 -0
  177. package/dist/extensions/provider/ui/dialogs.js.map +1 -0
  178. package/dist/extensions/provider/ui/dictionary.d.ts +29 -0
  179. package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -0
  180. package/dist/extensions/provider/ui/dictionary.js +385 -0
  181. package/dist/extensions/provider/ui/dictionary.js.map +1 -0
  182. package/dist/extensions/provider/ui/editor.d.ts +91 -0
  183. package/dist/extensions/provider/ui/editor.d.ts.map +1 -0
  184. package/dist/extensions/provider/ui/editor.js +667 -0
  185. package/dist/extensions/provider/ui/editor.js.map +1 -0
  186. package/dist/extensions/provider/ui/fetch-models.d.ts +39 -0
  187. package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -0
  188. package/dist/extensions/provider/ui/fetch-models.js +320 -0
  189. package/dist/extensions/provider/ui/fetch-models.js.map +1 -0
  190. package/dist/extensions/provider/ui/model-fields.d.ts +43 -0
  191. package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -0
  192. package/dist/extensions/provider/ui/model-fields.js +441 -0
  193. package/dist/extensions/provider/ui/model-fields.js.map +1 -0
  194. package/dist/extensions/provider/ui/model-options.d.ts +93 -0
  195. package/dist/extensions/provider/ui/model-options.d.ts.map +1 -0
  196. package/dist/extensions/provider/ui/model-options.js +529 -0
  197. package/dist/extensions/provider/ui/model-options.js.map +1 -0
  198. package/dist/extensions/provider/ui/pane.d.ts +81 -0
  199. package/dist/extensions/provider/ui/pane.d.ts.map +1 -0
  200. package/dist/extensions/provider/ui/pane.js +3 -0
  201. package/dist/extensions/provider/ui/pane.js.map +1 -0
  202. package/dist/extensions/provider/ui/provider-fields.d.ts +60 -0
  203. package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -0
  204. package/dist/extensions/provider/ui/provider-fields.js +326 -0
  205. package/dist/extensions/provider/ui/provider-fields.js.map +1 -0
  206. package/dist/extensions/provider/ui/provider-list.d.ts +34 -0
  207. package/dist/extensions/provider/ui/provider-list.d.ts.map +1 -0
  208. package/dist/extensions/provider/ui/provider-list.js +162 -0
  209. package/dist/extensions/provider/ui/provider-list.js.map +1 -0
  210. package/dist/extensions/provider/ui/session.d.ts +20 -0
  211. package/dist/extensions/provider/ui/session.d.ts.map +1 -0
  212. package/dist/extensions/provider/ui/session.js +52 -0
  213. package/dist/extensions/provider/ui/session.js.map +1 -0
  214. package/dist/extensions/provider/ui/thinking-map.d.ts +20 -0
  215. package/dist/extensions/provider/ui/thinking-map.d.ts.map +1 -0
  216. package/dist/extensions/provider/ui/thinking-map.js +166 -0
  217. package/dist/extensions/provider/ui/thinking-map.js.map +1 -0
  218. package/dist/extensions/provider/ui/value-row.d.ts +88 -0
  219. package/dist/extensions/provider/ui/value-row.d.ts.map +1 -0
  220. package/dist/extensions/provider/ui/value-row.js +158 -0
  221. package/dist/extensions/provider/ui/value-row.js.map +1 -0
  222. package/dist/extensions/statusline/index.js +2 -2
  223. package/dist/extensions/statusline/index.js.map +1 -1
  224. package/dist/extensions/subagent/index.d.ts.map +1 -1
  225. package/dist/extensions/subagent/index.js +4 -2
  226. package/dist/extensions/subagent/index.js.map +1 -1
  227. package/dist/extensions/subagent/resolve.d.ts +5 -0
  228. package/dist/extensions/subagent/resolve.d.ts.map +1 -1
  229. package/dist/extensions/subagent/resolve.js +15 -7
  230. package/dist/extensions/subagent/resolve.js.map +1 -1
  231. package/dist/extensions/subagent/schema.d.ts +2 -0
  232. package/dist/extensions/subagent/schema.d.ts.map +1 -1
  233. package/dist/extensions/subagent/schema.js +1 -0
  234. package/dist/extensions/subagent/schema.js.map +1 -1
  235. package/dist/index.d.ts +1 -1
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js.map +1 -1
  238. package/dist/modes/interactive/components/tool-execution.d.ts +10 -0
  239. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  240. package/dist/modes/interactive/components/tool-execution.js +20 -2
  241. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  242. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  243. package/dist/modes/interactive/interactive-mode.js +6 -1
  244. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  245. package/dist/rpc-entry.js +10 -2469
  246. package/docs/bundled/README.md +1 -1
  247. package/docs/bundled/extensions/background.md +5 -5
  248. package/docs/bundled/extensions/provider.md +117 -0
  249. package/docs/bundled/extensions/statusline.md +1 -1
  250. package/docs/bundled/extensions/subagent.md +7 -3
  251. package/docs/compaction.md +16 -6
  252. package/docs/development.md +1 -1
  253. package/docs/docs.json +2 -2
  254. package/docs/extensions.md +0 -13
  255. package/docs/keybindings.md +3 -0
  256. package/docs/settings.md +11 -7
  257. package/npm-shrinkwrap.json +4 -4
  258. package/package.json +6 -5
  259. package/dist/extensions/router/constants.d.ts +0 -23
  260. package/dist/extensions/router/constants.d.ts.map +0 -1
  261. package/dist/extensions/router/constants.js +0 -30
  262. package/dist/extensions/router/constants.js.map +0 -1
  263. package/dist/extensions/router/dialog-host.d.ts +0 -60
  264. package/dist/extensions/router/dialog-host.d.ts.map +0 -1
  265. package/dist/extensions/router/dialog-host.js +0 -196
  266. package/dist/extensions/router/dialog-host.js.map +0 -1
  267. package/dist/extensions/router/dialog.d.ts +0 -45
  268. package/dist/extensions/router/dialog.d.ts.map +0 -1
  269. package/dist/extensions/router/dialog.js +0 -378
  270. package/dist/extensions/router/dialog.js.map +0 -1
  271. package/dist/extensions/router/identity.d.ts +0 -15
  272. package/dist/extensions/router/identity.d.ts.map +0 -1
  273. package/dist/extensions/router/identity.js +0 -173
  274. package/dist/extensions/router/identity.js.map +0 -1
  275. package/dist/extensions/router/index.d.ts +0 -15
  276. package/dist/extensions/router/index.d.ts.map +0 -1
  277. package/dist/extensions/router/index.js +0 -70
  278. package/dist/extensions/router/index.js.map +0 -1
  279. package/dist/extensions/router/presets.d.ts +0 -51
  280. package/dist/extensions/router/presets.d.ts.map +0 -1
  281. package/dist/extensions/router/presets.js +0 -108
  282. package/dist/extensions/router/presets.js.map +0 -1
  283. package/dist/extensions/router/probe.d.ts +0 -26
  284. package/dist/extensions/router/probe.d.ts.map +0 -1
  285. package/dist/extensions/router/probe.js +0 -216
  286. package/dist/extensions/router/probe.js.map +0 -1
  287. package/dist/extensions/router/register.d.ts +0 -12
  288. package/dist/extensions/router/register.d.ts.map +0 -1
  289. package/dist/extensions/router/register.js +0 -90
  290. package/dist/extensions/router/register.js.map +0 -1
  291. package/dist/extensions/router/state.d.ts +0 -20
  292. package/dist/extensions/router/state.d.ts.map +0 -1
  293. package/dist/extensions/router/state.js +0 -169
  294. package/dist/extensions/router/state.js.map +0 -1
  295. package/dist/extensions/router/store.d.ts +0 -12
  296. package/dist/extensions/router/store.d.ts.map +0 -1
  297. package/dist/extensions/router/store.js +0 -266
  298. package/dist/extensions/router/store.js.map +0 -1
  299. package/dist/extensions/router/stream.d.ts +0 -12
  300. package/dist/extensions/router/stream.d.ts.map +0 -1
  301. package/dist/extensions/router/stream.js +0 -233
  302. package/dist/extensions/router/stream.js.map +0 -1
  303. package/dist/extensions/router/transport.d.ts +0 -9
  304. package/dist/extensions/router/transport.d.ts.map +0 -1
  305. package/dist/extensions/router/transport.js +0 -81
  306. package/dist/extensions/router/transport.js.map +0 -1
  307. package/dist/extensions/router/types.d.ts +0 -39
  308. package/dist/extensions/router/types.d.ts.map +0 -1
  309. package/dist/extensions/router/types.js +0 -2
  310. package/dist/extensions/router/types.js.map +0 -1
  311. package/dist/extensions/router/ui.d.ts +0 -26
  312. package/dist/extensions/router/ui.d.ts.map +0 -1
  313. package/dist/extensions/router/ui.js +0 -897
  314. package/dist/extensions/router/ui.js.map +0 -1
  315. package/dist/image-resize-worker.js +0 -2
  316. package/docs/bundled/extensions/router.md +0 -197
@@ -1,81 +0,0 @@
1
- function wait(delay, signal) {
2
- return new Promise((resolve, reject) => {
3
- signal?.throwIfAborted();
4
- const finish = () => {
5
- signal?.removeEventListener("abort", abort);
6
- resolve();
7
- };
8
- const timer = setTimeout(finish, delay);
9
- const abort = () => {
10
- clearTimeout(timer);
11
- signal?.removeEventListener("abort", abort);
12
- reject(signal?.reason);
13
- };
14
- signal?.addEventListener("abort", abort, { once: true });
15
- });
16
- }
17
- function isNetworkError(error) {
18
- if (!(error instanceof Error) || error.name === "AbortError")
19
- return false;
20
- if (error instanceof TypeError || error.name === "NetworkError" || error.name === "TimeoutError")
21
- return true;
22
- return ("code" in error &&
23
- typeof error.code === "string" &&
24
- /^(ECONNRESET|ECONNREFUSED|ECONNABORTED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT|EPIPE|ENETUNREACH|EHOSTUNREACH|UND_ERR_CONNECT_TIMEOUT|UND_ERR_SOCKET)$/.test(error.code));
25
- }
26
- function discard(response) {
27
- // Do not await cancellation: a custom stream's cancellation can remain pending forever.
28
- void response.body?.cancel().catch(() => { });
29
- }
30
- /** Codex 0.153.4 HTTP policy only; pi-ai owns successful Responses bodies and all SSE handling. */
31
- export function createCodexTransport(fetch, options = {}) {
32
- // codex-client/src/retry.rs and model-provider-info/src/lib.rs: 4 retries, 200ms, 0.9..1.1 jitter.
33
- const retries = Math.min(100, Math.max(0, Math.floor(Number.isNaN(options.maxRetries) ? 4 : (options.maxRetries ?? 4))));
34
- // Node timers overflow above this limit; never turn a large backoff into a tight retry loop.
35
- const maxDelay = Math.min(2_147_483_647, Math.max(0, Number.isNaN(options.maxRetryDelayMs) ? 2_147_483_647 : (options.maxRetryDelayMs ?? 2_147_483_647)));
36
- return async (input, init) => {
37
- const request = input instanceof Request ? input : undefined;
38
- const signals = [options.signal, request?.signal, init?.signal].filter((signal) => signal != null);
39
- const signal = signals.length > 1 ? AbortSignal.any(signals) : signals[0];
40
- const forwarded = signal ? { ...init, signal } : init;
41
- const body = init?.body ?? request?.body;
42
- // Never clone/tee or buffer a private prompt. Request bodies and streaming init bodies are single-use.
43
- const replayable = (!request?.bodyUsed || init?.body != null) &&
44
- (body == null ||
45
- typeof body === "string" ||
46
- body instanceof Blob ||
47
- body instanceof FormData ||
48
- body instanceof URLSearchParams ||
49
- body instanceof ArrayBuffer ||
50
- ArrayBuffer.isView(body));
51
- for (let attempt = 0;; attempt++) {
52
- signal?.throwIfAborted();
53
- let response;
54
- try {
55
- response = await fetch(input, forwarded);
56
- }
57
- catch (error) {
58
- signal?.throwIfAborted();
59
- if (!replayable || attempt >= retries || !isNetworkError(error))
60
- throw error;
61
- await wait(Math.min(maxDelay, Math.floor(200 * 2 ** attempt * (0.9 + Math.random() * 0.2))), signal);
62
- continue;
63
- }
64
- if (response.ok)
65
- return response;
66
- // Deliberately outside the fetch catch: callback failures must never cause another request.
67
- try {
68
- await options.onErrorResponse?.(response);
69
- }
70
- catch (error) {
71
- discard(response);
72
- throw error;
73
- }
74
- if (!replayable || attempt >= retries || response.status < 500 || response.status > 599)
75
- return response;
76
- discard(response);
77
- await wait(Math.min(maxDelay, Math.floor(200 * 2 ** attempt * (0.9 + Math.random() * 0.2))), signal);
78
- }
79
- };
80
- }
81
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/extensions/router/transport.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FetchFunction } from \"@earendil-works/pi-ai\";\n\nfunction wait(delay: number, signal?: AbortSignal): Promise<void> {\n\treturn new Promise((resolve, reject) => {\n\t\tsignal?.throwIfAborted();\n\t\tconst finish = () => {\n\t\t\tsignal?.removeEventListener(\"abort\", abort);\n\t\t\tresolve();\n\t\t};\n\t\tconst timer = setTimeout(finish, delay);\n\t\tconst abort = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tsignal?.removeEventListener(\"abort\", abort);\n\t\t\treject(signal?.reason);\n\t\t};\n\t\tsignal?.addEventListener(\"abort\", abort, { once: true });\n\t});\n}\n\nfunction isNetworkError(error: unknown): boolean {\n\tif (!(error instanceof Error) || error.name === \"AbortError\") return false;\n\tif (error instanceof TypeError || error.name === \"NetworkError\" || error.name === \"TimeoutError\") return true;\n\treturn (\n\t\t\"code\" in error &&\n\t\ttypeof error.code === \"string\" &&\n\t\t/^(ECONNRESET|ECONNREFUSED|ECONNABORTED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT|EPIPE|ENETUNREACH|EHOSTUNREACH|UND_ERR_CONNECT_TIMEOUT|UND_ERR_SOCKET)$/.test(\n\t\t\terror.code,\n\t\t)\n\t);\n}\n\nfunction discard(response: Response): void {\n\t// Do not await cancellation: a custom stream's cancellation can remain pending forever.\n\tvoid response.body?.cancel().catch(() => {});\n}\n\n/** Codex 0.153.4 HTTP policy only; pi-ai owns successful Responses bodies and all SSE handling. */\nexport function createCodexTransport(\n\tfetch: FetchFunction,\n\toptions: {\n\t\tmaxRetries?: number;\n\t\tmaxRetryDelayMs?: number;\n\t\tsignal?: AbortSignal;\n\t\tonErrorResponse?: (response: Response) => void | Promise<void>;\n\t} = {},\n): FetchFunction {\n\t// codex-client/src/retry.rs and model-provider-info/src/lib.rs: 4 retries, 200ms, 0.9..1.1 jitter.\n\tconst retries = Math.min(\n\t\t100,\n\t\tMath.max(0, Math.floor(Number.isNaN(options.maxRetries) ? 4 : (options.maxRetries ?? 4))),\n\t);\n\t// Node timers overflow above this limit; never turn a large backoff into a tight retry loop.\n\tconst maxDelay = Math.min(\n\t\t2_147_483_647,\n\t\tMath.max(0, Number.isNaN(options.maxRetryDelayMs) ? 2_147_483_647 : (options.maxRetryDelayMs ?? 2_147_483_647)),\n\t);\n\treturn async (input, init) => {\n\t\tconst request = input instanceof Request ? input : undefined;\n\t\tconst signals = [options.signal, request?.signal, init?.signal].filter(\n\t\t\t(signal): signal is AbortSignal => signal != null,\n\t\t);\n\t\tconst signal = signals.length > 1 ? AbortSignal.any(signals) : signals[0];\n\t\tconst forwarded = signal ? { ...init, signal } : init;\n\t\tconst body = init?.body ?? request?.body;\n\t\t// Never clone/tee or buffer a private prompt. Request bodies and streaming init bodies are single-use.\n\t\tconst replayable =\n\t\t\t(!request?.bodyUsed || init?.body != null) &&\n\t\t\t(body == null ||\n\t\t\t\ttypeof body === \"string\" ||\n\t\t\t\tbody instanceof Blob ||\n\t\t\t\tbody instanceof FormData ||\n\t\t\t\tbody instanceof URLSearchParams ||\n\t\t\t\tbody instanceof ArrayBuffer ||\n\t\t\t\tArrayBuffer.isView(body));\n\t\tfor (let attempt = 0; ; attempt++) {\n\t\t\tsignal?.throwIfAborted();\n\t\t\tlet response: Response;\n\t\t\ttry {\n\t\t\t\tresponse = await fetch(input, forwarded);\n\t\t\t} catch (error) {\n\t\t\t\tsignal?.throwIfAborted();\n\t\t\t\tif (!replayable || attempt >= retries || !isNetworkError(error)) throw error;\n\t\t\t\tawait wait(Math.min(maxDelay, Math.floor(200 * 2 ** attempt * (0.9 + Math.random() * 0.2))), signal);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (response.ok) return response;\n\t\t\t// Deliberately outside the fetch catch: callback failures must never cause another request.\n\t\t\ttry {\n\t\t\t\tawait options.onErrorResponse?.(response);\n\t\t\t} catch (error) {\n\t\t\t\tdiscard(response);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (!replayable || attempt >= retries || response.status < 500 || response.status > 599) return response;\n\t\t\tdiscard(response);\n\t\t\tawait wait(Math.min(maxDelay, Math.floor(200 * 2 ** attempt * (0.9 + Math.random() * 0.2))), signal);\n\t\t}\n\t};\n}\n"]}
@@ -1,39 +0,0 @@
1
- import type { ThinkingLevel } from "./constants.ts";
2
- export type ThinkingLevelMap = Partial<Record<ThinkingLevel, string | null>>;
3
- export interface CodexModelConfig {
4
- reasoningSummary?: "auto" | "concise" | "detailed" | null;
5
- verbosity?: "low" | "medium" | "high" | null;
6
- parallelToolCalls?: boolean;
7
- }
8
- export interface RelayModelConfig {
9
- id: string;
10
- name?: string;
11
- reasoning?: boolean;
12
- input?: Array<"text" | "image">;
13
- contextWindow?: number;
14
- maxTokens?: number;
15
- thinkingLevelMap?: ThinkingLevelMap;
16
- codex?: CodexModelConfig;
17
- headers?: Record<string, string>;
18
- cost?: {
19
- input: number;
20
- output: number;
21
- cacheRead: number;
22
- cacheWrite: number;
23
- };
24
- }
25
- export interface RelayConfig {
26
- /** Provider id shown as provider/model (no slashes). */
27
- id: string;
28
- name?: string;
29
- headers?: Record<string, string>;
30
- catalog?: "openai" | "codex";
31
- baseUrl: string;
32
- apiKey: string;
33
- models: RelayModelConfig[];
34
- }
35
- export interface RouterFile {
36
- version: number;
37
- relays: RelayConfig[];
38
- }
39
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extensions/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAChF;AAED,MAAM,WAAW,WAAW;IAC3B,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/extensions/router/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ThinkingLevel } from \"./constants.ts\";\n\nexport type ThinkingLevelMap = Partial<Record<ThinkingLevel, string | null>>;\n\nexport interface CodexModelConfig {\n\treasoningSummary?: \"auto\" | \"concise\" | \"detailed\" | null;\n\tverbosity?: \"low\" | \"medium\" | \"high\" | null;\n\tparallelToolCalls?: boolean;\n}\n\nexport interface RelayModelConfig {\n\tid: string;\n\tname?: string;\n\treasoning?: boolean;\n\tinput?: Array<\"text\" | \"image\">;\n\tcontextWindow?: number;\n\tmaxTokens?: number;\n\tthinkingLevelMap?: ThinkingLevelMap;\n\tcodex?: CodexModelConfig;\n\theaders?: Record<string, string>;\n\tcost?: { input: number; output: number; cacheRead: number; cacheWrite: number };\n}\n\nexport interface RelayConfig {\n\t/** Provider id shown as provider/model (no slashes). */\n\tid: string;\n\tname?: string;\n\theaders?: Record<string, string>;\n\tcatalog?: \"openai\" | \"codex\";\n\tbaseUrl: string;\n\tapiKey: string;\n\tmodels: RelayModelConfig[];\n}\n\nexport interface RouterFile {\n\tversion: number;\n\trelays: RelayConfig[];\n}\n"]}
@@ -1,26 +0,0 @@
1
- /**
2
- * /router interactive flows: list, add, edit, fetch, thinking map.
3
- *
4
- * Relay edits are live: confirmed inputs and every toggle persist immediately.
5
- * Searchable pickers follow Pi's native /model interaction pattern.
6
- */
7
- import type { ExtensionAPI, ExtensionCommandContext } from "../../core/extensions/types.ts";
8
- import { type ModelChecklistItem } from "./dialog.ts";
9
- import { type ProbeModel } from "./probe.ts";
10
- import type { RelayModelConfig } from "./types.ts";
11
- export declare function isCurrentRouterModel(current: {
12
- provider: string;
13
- id: string;
14
- } | undefined, relayId: string, modelId: string): boolean;
15
- export declare function runRouterCommand(args: string, ctx: ExtensionCommandContext, pi: ExtensionAPI): Promise<void>;
16
- export declare function modelFromCatalog(entry: ProbeModel): RelayModelConfig;
17
- export declare function mergeCatalogWithConfigured(configured: ReadonlyArray<RelayModelConfig>, catalog: ReadonlyArray<{
18
- id: string;
19
- name?: string;
20
- }>, activeModelId?: string): ModelChecklistItem[];
21
- /** Resolve only keys that can be safely used by the catalog probe. */
22
- export declare function resolveProbeApiKey(apiKey: string): {
23
- value?: string;
24
- error?: string;
25
- };
26
- //# sourceMappingURL=ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/extensions/router/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAK5F,OAAO,EAIN,KAAK,kBAAkB,EACvB,MAAM,aAAa,CAAC;AAcrB,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,YAAY,CAAC;AAG/D,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkEhE,wBAAgB,oBAAoB,CACnC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EACrD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAET;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlH;AA8sBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAIpE;AA0ED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC,EAC3C,OAAO,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,aAAa,CAAC,EAAE,MAAM,GACpB,kBAAkB,EAAE,CAuBtB;AAmED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAiBrF"}