@astralyn/pi 0.85.1 → 0.85.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.
- package/CHANGELOG.md +28 -0
- package/dist/cli.js +94 -91
- package/dist/core/agent-session.js +2 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/background/history.d.ts.map +1 -1
- package/dist/core/background/history.js +6 -0
- package/dist/core/background/history.js.map +1 -1
- package/dist/core/background/presentation.d.ts.map +1 -1
- package/dist/core/background/presentation.js +41 -4
- package/dist/core/background/presentation.js.map +1 -1
- package/dist/core/background/service.d.ts +2 -2
- package/dist/core/background/service.d.ts.map +1 -1
- package/dist/core/background/service.js +38 -15
- package/dist/core/background/service.js.map +1 -1
- package/dist/core/background/types.d.ts +9 -0
- package/dist/core/background/types.d.ts.map +1 -1
- package/dist/core/background/types.js +4 -0
- package/dist/core/background/types.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +5 -12
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +11 -19
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/settings.d.ts +27 -0
- package/dist/core/compaction/settings.d.ts.map +1 -0
- package/dist/core/compaction/settings.js +40 -0
- package/dist/core/compaction/settings.js.map +1 -0
- package/dist/core/keybindings.d.ts +15 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +12 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-config.d.ts +32 -10
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +38 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-runtime.d.ts +2 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +4 -0
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/settings-manager.d.ts +4 -7
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +7 -6
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/bash.js +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +3 -1
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/extensions/background/manager.d.ts +8 -5
- package/dist/extensions/background/manager.d.ts.map +1 -1
- package/dist/extensions/background/manager.js +115 -39
- package/dist/extensions/background/manager.js.map +1 -1
- package/dist/extensions/background/task-view.d.ts +5 -0
- package/dist/extensions/background/task-view.d.ts.map +1 -1
- package/dist/extensions/background/task-view.js +4 -0
- package/dist/extensions/background/task-view.js.map +1 -1
- package/dist/extensions/btw/controller.d.ts +1 -1
- package/dist/extensions/btw/controller.d.ts.map +1 -1
- package/dist/extensions/btw/controller.js +4 -4
- package/dist/extensions/btw/controller.js.map +1 -1
- package/dist/extensions/btw/index.js +3 -3
- package/dist/extensions/btw/index.js.map +1 -1
- package/dist/extensions/index.js +2 -2
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/provider/catalog.d.ts +57 -0
- package/dist/extensions/provider/catalog.d.ts.map +1 -0
- package/dist/extensions/provider/catalog.js +181 -0
- package/dist/extensions/provider/catalog.js.map +1 -0
- package/dist/extensions/provider/compat-fields.d.ts +25 -0
- package/dist/extensions/provider/compat-fields.d.ts.map +1 -0
- package/dist/extensions/provider/compat-fields.js +148 -0
- package/dist/extensions/provider/compat-fields.js.map +1 -0
- package/dist/extensions/provider/configuration.d.ts +8 -0
- package/dist/extensions/provider/configuration.d.ts.map +1 -0
- package/dist/extensions/provider/configuration.js +21 -0
- package/dist/extensions/provider/configuration.js.map +1 -0
- package/dist/extensions/provider/connection.d.ts +14 -0
- package/dist/extensions/provider/connection.d.ts.map +1 -0
- package/dist/extensions/provider/connection.js +86 -0
- package/dist/extensions/provider/connection.js.map +1 -0
- package/dist/extensions/provider/constants.d.ts +38 -0
- package/dist/extensions/provider/constants.d.ts.map +1 -0
- package/dist/extensions/provider/constants.js +75 -0
- package/dist/extensions/provider/constants.js.map +1 -0
- package/dist/extensions/provider/index.d.ts +4 -0
- package/dist/extensions/provider/index.d.ts.map +1 -0
- package/dist/extensions/provider/index.js +65 -0
- package/dist/extensions/provider/index.js.map +1 -0
- package/dist/extensions/provider/probe.d.ts +34 -0
- package/dist/extensions/provider/probe.d.ts.map +1 -0
- package/dist/extensions/provider/probe.js +178 -0
- package/dist/extensions/provider/probe.js.map +1 -0
- package/dist/extensions/provider/refresh.d.ts +30 -0
- package/dist/extensions/provider/refresh.d.ts.map +1 -0
- package/dist/extensions/provider/refresh.js +66 -0
- package/dist/extensions/provider/refresh.js.map +1 -0
- package/dist/extensions/provider/store.d.ts +131 -0
- package/dist/extensions/provider/store.d.ts.map +1 -0
- package/dist/extensions/provider/store.js +503 -0
- package/dist/extensions/provider/store.js.map +1 -0
- package/dist/extensions/provider/ui/app.d.ts +25 -0
- package/dist/extensions/provider/ui/app.d.ts.map +1 -0
- package/dist/extensions/provider/ui/app.js +153 -0
- package/dist/extensions/provider/ui/app.js.map +1 -0
- package/dist/extensions/provider/ui/builtin-data.d.ts +53 -0
- package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -0
- package/dist/extensions/provider/ui/builtin-data.js +315 -0
- package/dist/extensions/provider/ui/builtin-data.js.map +1 -0
- package/dist/extensions/provider/ui/compat.d.ts +57 -0
- package/dist/extensions/provider/ui/compat.d.ts.map +1 -0
- package/dist/extensions/provider/ui/compat.js +427 -0
- package/dist/extensions/provider/ui/compat.js.map +1 -0
- package/dist/extensions/provider/ui/dialogs.d.ts +30 -0
- package/dist/extensions/provider/ui/dialogs.d.ts.map +1 -0
- package/dist/extensions/provider/ui/dialogs.js +89 -0
- package/dist/extensions/provider/ui/dialogs.js.map +1 -0
- package/dist/extensions/provider/ui/dictionary.d.ts +29 -0
- package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -0
- package/dist/extensions/provider/ui/dictionary.js +385 -0
- package/dist/extensions/provider/ui/dictionary.js.map +1 -0
- package/dist/extensions/provider/ui/editor.d.ts +91 -0
- package/dist/extensions/provider/ui/editor.d.ts.map +1 -0
- package/dist/extensions/provider/ui/editor.js +667 -0
- package/dist/extensions/provider/ui/editor.js.map +1 -0
- package/dist/extensions/provider/ui/fetch-models.d.ts +39 -0
- package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -0
- package/dist/extensions/provider/ui/fetch-models.js +320 -0
- package/dist/extensions/provider/ui/fetch-models.js.map +1 -0
- package/dist/extensions/provider/ui/model-fields.d.ts +43 -0
- package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -0
- package/dist/extensions/provider/ui/model-fields.js +441 -0
- package/dist/extensions/provider/ui/model-fields.js.map +1 -0
- package/dist/extensions/provider/ui/model-options.d.ts +93 -0
- package/dist/extensions/provider/ui/model-options.d.ts.map +1 -0
- package/dist/extensions/provider/ui/model-options.js +529 -0
- package/dist/extensions/provider/ui/model-options.js.map +1 -0
- package/dist/extensions/provider/ui/pane.d.ts +81 -0
- package/dist/extensions/provider/ui/pane.d.ts.map +1 -0
- package/dist/extensions/provider/ui/pane.js +3 -0
- package/dist/extensions/provider/ui/pane.js.map +1 -0
- package/dist/extensions/provider/ui/provider-fields.d.ts +60 -0
- package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -0
- package/dist/extensions/provider/ui/provider-fields.js +326 -0
- package/dist/extensions/provider/ui/provider-fields.js.map +1 -0
- package/dist/extensions/provider/ui/provider-list.d.ts +34 -0
- package/dist/extensions/provider/ui/provider-list.d.ts.map +1 -0
- package/dist/extensions/provider/ui/provider-list.js +162 -0
- package/dist/extensions/provider/ui/provider-list.js.map +1 -0
- package/dist/extensions/provider/ui/session.d.ts +20 -0
- package/dist/extensions/provider/ui/session.d.ts.map +1 -0
- package/dist/extensions/provider/ui/session.js +52 -0
- package/dist/extensions/provider/ui/session.js.map +1 -0
- package/dist/extensions/provider/ui/thinking-map.d.ts +20 -0
- package/dist/extensions/provider/ui/thinking-map.d.ts.map +1 -0
- package/dist/extensions/provider/ui/thinking-map.js +166 -0
- package/dist/extensions/provider/ui/thinking-map.js.map +1 -0
- package/dist/extensions/provider/ui/value-row.d.ts +88 -0
- package/dist/extensions/provider/ui/value-row.d.ts.map +1 -0
- package/dist/extensions/provider/ui/value-row.js +158 -0
- package/dist/extensions/provider/ui/value-row.js.map +1 -0
- package/dist/extensions/statusline/index.js +2 -2
- package/dist/extensions/statusline/index.js.map +1 -1
- package/dist/extensions/subagent/index.d.ts.map +1 -1
- package/dist/extensions/subagent/index.js +4 -2
- package/dist/extensions/subagent/index.js.map +1 -1
- package/dist/extensions/subagent/resolve.d.ts +5 -0
- package/dist/extensions/subagent/resolve.d.ts.map +1 -1
- package/dist/extensions/subagent/resolve.js +15 -7
- package/dist/extensions/subagent/resolve.js.map +1 -1
- package/dist/extensions/subagent/schema.d.ts +2 -0
- package/dist/extensions/subagent/schema.d.ts.map +1 -1
- package/dist/extensions/subagent/schema.js +1 -0
- package/dist/extensions/subagent/schema.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +10 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +20 -2
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +6 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/rpc-entry.js +94 -91
- package/docs/bundled/README.md +1 -1
- package/docs/bundled/extensions/background.md +5 -5
- package/docs/bundled/extensions/provider.md +117 -0
- package/docs/bundled/extensions/statusline.md +1 -1
- package/docs/bundled/extensions/subagent.md +7 -3
- package/docs/compaction.md +16 -6
- package/docs/docs.json +2 -2
- package/docs/keybindings.md +3 -0
- package/docs/settings.md +11 -7
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/dist/extensions/router/constants.d.ts +0 -23
- package/dist/extensions/router/constants.d.ts.map +0 -1
- package/dist/extensions/router/constants.js +0 -30
- package/dist/extensions/router/constants.js.map +0 -1
- package/dist/extensions/router/dialog-host.d.ts +0 -60
- package/dist/extensions/router/dialog-host.d.ts.map +0 -1
- package/dist/extensions/router/dialog-host.js +0 -196
- package/dist/extensions/router/dialog-host.js.map +0 -1
- package/dist/extensions/router/dialog.d.ts +0 -45
- package/dist/extensions/router/dialog.d.ts.map +0 -1
- package/dist/extensions/router/dialog.js +0 -378
- package/dist/extensions/router/dialog.js.map +0 -1
- package/dist/extensions/router/identity.d.ts +0 -15
- package/dist/extensions/router/identity.d.ts.map +0 -1
- package/dist/extensions/router/identity.js +0 -173
- package/dist/extensions/router/identity.js.map +0 -1
- package/dist/extensions/router/index.d.ts +0 -15
- package/dist/extensions/router/index.d.ts.map +0 -1
- package/dist/extensions/router/index.js +0 -70
- package/dist/extensions/router/index.js.map +0 -1
- package/dist/extensions/router/presets.d.ts +0 -51
- package/dist/extensions/router/presets.d.ts.map +0 -1
- package/dist/extensions/router/presets.js +0 -108
- package/dist/extensions/router/presets.js.map +0 -1
- package/dist/extensions/router/probe.d.ts +0 -26
- package/dist/extensions/router/probe.d.ts.map +0 -1
- package/dist/extensions/router/probe.js +0 -216
- package/dist/extensions/router/probe.js.map +0 -1
- package/dist/extensions/router/register.d.ts +0 -12
- package/dist/extensions/router/register.d.ts.map +0 -1
- package/dist/extensions/router/register.js +0 -90
- package/dist/extensions/router/register.js.map +0 -1
- package/dist/extensions/router/state.d.ts +0 -20
- package/dist/extensions/router/state.d.ts.map +0 -1
- package/dist/extensions/router/state.js +0 -169
- package/dist/extensions/router/state.js.map +0 -1
- package/dist/extensions/router/store.d.ts +0 -12
- package/dist/extensions/router/store.d.ts.map +0 -1
- package/dist/extensions/router/store.js +0 -266
- package/dist/extensions/router/store.js.map +0 -1
- package/dist/extensions/router/stream.d.ts +0 -12
- package/dist/extensions/router/stream.d.ts.map +0 -1
- package/dist/extensions/router/stream.js +0 -233
- package/dist/extensions/router/stream.js.map +0 -1
- package/dist/extensions/router/transport.d.ts +0 -9
- package/dist/extensions/router/transport.d.ts.map +0 -1
- package/dist/extensions/router/transport.js +0 -81
- package/dist/extensions/router/transport.js.map +0 -1
- package/dist/extensions/router/types.d.ts +0 -39
- package/dist/extensions/router/types.d.ts.map +0 -1
- package/dist/extensions/router/types.js +0 -2
- package/dist/extensions/router/types.js.map +0 -1
- package/dist/extensions/router/ui.d.ts +0 -26
- package/dist/extensions/router/ui.d.ts.map +0 -1
- package/dist/extensions/router/ui.js +0 -897
- package/dist/extensions/router/ui.js.map +0 -1
- 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":"AAEA,SAAS,IAAI,CAAC,KAAa,EAAE,MAAoB;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,GAAG,EAAE;YACnB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC9G,OAAO,CACN,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,8IAA8I,CAAC,IAAI,CAClJ,KAAK,CAAC,IAAI,CACV,CACD,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,QAAkB;IAClC,wFAAwF;IACxF,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,oBAAoB,CACnC,KAAoB,EACpB,UAKI,EAAE;IAEN,mGAAmG;IACnG,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACvB,GAAG,EACH,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,CACzF,CAAC;IACF,6FAA6F;IAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACxB,aAAa,EACb,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,aAAa,CAAC,CAAC,CAC/G,CAAC;IACF,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,OAAO,GAAG,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CACrE,CAAC,MAAM,EAAyB,EAAE,CAAC,MAAM,IAAI,IAAI,CACjD,CAAC;QACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,CAAC;QACzC,uGAAuG;QACvG,MAAM,UAAU,GACf,CAAC,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;YAC1C,CAAC,IAAI,IAAI,IAAI;gBACZ,OAAO,IAAI,KAAK,QAAQ;gBACxB,IAAI,YAAY,IAAI;gBACpB,IAAI,YAAY,QAAQ;gBACxB,IAAI,YAAY,eAAe;gBAC/B,IAAI,YAAY,WAAW;gBAC3B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YACnC,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACJ,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,EAAE,cAAc,EAAE,CAAC;gBACzB,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;gBAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrG,SAAS;YACV,CAAC;YACD,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,QAAQ,CAAC;YACjC,4FAA4F;YAC5F,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,MAAM,KAAK,CAAC;YACb,CAAC;YACD,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO,QAAQ,CAAC;YACzG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACtG,CAAC;IACF,CAAC,CAAC;AACH,CAAC","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 +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"}
|