omnigateway 0.13.3 → 0.13.5
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/README.md +6 -1
- package/bin/omni.js +217 -27
- package/gateway.js +236 -37
- package/package.json +1 -1
- package/public/assets/{_app.console-Dxkf_zSS.js → _app.console-facio1_r.js} +1 -1
- package/public/assets/{_app.plugins._pluginId-BSlXzAHP.js → _app.plugins._pluginId-cCDDM_D_.js} +1 -1
- package/public/assets/{_app.settings-5i-vvT-H.js → _app.settings-CdSQyweb.js} +2 -2
- package/public/assets/{client-DUhmc9Si.js → client-DEALADtD.js} +1 -1
- package/public/assets/{index-Bzh27906.js → index-BYDVTknB.js} +2 -2
- package/public/assets/{login-DbXxdOl5.js → login-BhkdR1f4.js} +1 -1
- package/public/index.html +1 -1
package/README.md
CHANGED
|
@@ -329,7 +329,7 @@ that output was captured; it does not redirect it — see
|
|
|
329
329
|
Everything else lives in the database rather than the environment, so it can be
|
|
330
330
|
changed without a restart: the six routing weights, `maxAttempts`,
|
|
331
331
|
`requestDeadlineMs`, the circuit breaker's `breakerThreshold` and
|
|
332
|
-
`breakerCooldownMs`, `logRetentionDays`, `quotaPollIntervalMs`, `rtkEnabled`,
|
|
332
|
+
`breakerCooldownMs`, `logRetentionDays`, `bodyRetentionDays`, `quotaPollIntervalMs`, `rtkEnabled`,
|
|
333
333
|
`ponytailMode` (`off` | `lite` | `full` | `ultra`),
|
|
334
334
|
and the two body-capture switches. Edit them with `omni settings set` or in the
|
|
335
335
|
console. `quotaPollIntervalMs` is the one exception: the poller reads it once at
|
|
@@ -397,6 +397,11 @@ Worth knowing before you deploy it:
|
|
|
397
397
|
- **The gateway does not know which model accepts which request shape.** An
|
|
398
398
|
unsupported combination surfaces as the provider's own 400 rather than being
|
|
399
399
|
caught earlier.
|
|
400
|
+
- **Thinking controls retain their wire intent.** Anthropic `between_tools` passes
|
|
401
|
+
through; other providers treat it as off and report a degradation. Unparsed
|
|
402
|
+
Anthropic thinking fields (including beta controls) pass through only to
|
|
403
|
+
Anthropic; supply any required beta header yourself. Hidden adaptive display
|
|
404
|
+
omits generated Responses reasoning summaries, without inventing a default.
|
|
400
405
|
- Not in scope: semantic caching, billing.
|
|
401
406
|
|
|
402
407
|
What is missing on purpose, what is missing for now, and what is designed but not
|
package/bin/omni.js
CHANGED
|
@@ -6358,8 +6358,10 @@ function memoryCoord(options = {}) {
|
|
|
6358
6358
|
}
|
|
6359
6359
|
|
|
6360
6360
|
// packages/store/src/bodies/artifact.ts
|
|
6361
|
-
import { mkdir,
|
|
6361
|
+
import { mkdir, open as open2, readdir, rmdir, unlink, writeFile } from "fs/promises";
|
|
6362
6362
|
import { dirname, join, sep } from "path";
|
|
6363
|
+
import { promisify } from "util";
|
|
6364
|
+
import { gunzip, gzip } from "zlib";
|
|
6363
6365
|
|
|
6364
6366
|
// packages/store/src/encryption.ts
|
|
6365
6367
|
var PREFIX = "enc:v1";
|
|
@@ -6584,27 +6586,171 @@ async function sealArtifact(key, json) {
|
|
|
6584
6586
|
const bytes = encoder2.encode(await encrypt(key, json));
|
|
6585
6587
|
return { bytes, sha256: await sha256Hex(bytes) };
|
|
6586
6588
|
}
|
|
6589
|
+
var MAX_ENVELOPE_BYTES = 2 * MAX_ARTIFACT_BYTES + 65;
|
|
6590
|
+
var BINARY_MAGIC = encoder2.encode("OGBA");
|
|
6591
|
+
var LEGACY_PREFIX = encoder2.encode("enc:v1:");
|
|
6592
|
+
var BINARY_VERSION = 1;
|
|
6593
|
+
var BINARY_HEADER_BYTES = 10;
|
|
6594
|
+
var BINARY_IV_BYTES = 12;
|
|
6595
|
+
var BINARY_TAG_BYTES = 16;
|
|
6596
|
+
var BINARY_OVERHEAD = BINARY_HEADER_BYTES + BINARY_IV_BYTES + BINARY_TAG_BYTES;
|
|
6597
|
+
var MAX_BINARY_ENVELOPE_BYTES = MAX_ARTIFACT_BYTES + BINARY_OVERHEAD;
|
|
6598
|
+
var CODEC_RAW = 0;
|
|
6599
|
+
var CODEC_GZIP = 1;
|
|
6600
|
+
var GZIP_FRAME_BYTES = 18;
|
|
6601
|
+
var gzipAsync = promisify(gzip);
|
|
6602
|
+
var gunzipAsync = promisify(gunzip);
|
|
6603
|
+
function own2(bytes, start, end) {
|
|
6604
|
+
return bytes.slice(start, end);
|
|
6605
|
+
}
|
|
6587
6606
|
async function readArtifact(key, dir, relPath, expectedSha256) {
|
|
6588
|
-
|
|
6607
|
+
const acquired = await acquireArtifact(join(dir, relPath));
|
|
6608
|
+
if (!(acquired instanceof Uint8Array))
|
|
6609
|
+
return { ok: false, failure: acquired };
|
|
6610
|
+
return decodeArtifact(key, acquired, expectedSha256);
|
|
6611
|
+
}
|
|
6612
|
+
async function acquireArtifact(path) {
|
|
6613
|
+
let handle;
|
|
6614
|
+
try {
|
|
6615
|
+
handle = await open2(path, "r");
|
|
6616
|
+
} catch {
|
|
6617
|
+
return "missing";
|
|
6618
|
+
}
|
|
6589
6619
|
try {
|
|
6590
|
-
|
|
6620
|
+
const { size } = await handle.stat();
|
|
6621
|
+
if (size > MAX_ENVELOPE_BYTES)
|
|
6622
|
+
return "corrupt";
|
|
6623
|
+
const buffer = new Uint8Array(size + 1);
|
|
6624
|
+
let filled = 0;
|
|
6625
|
+
while (filled < buffer.length) {
|
|
6626
|
+
const { bytesRead } = await handle.read(buffer, filled, buffer.length - filled, filled);
|
|
6627
|
+
if (bytesRead === 0)
|
|
6628
|
+
break;
|
|
6629
|
+
filled += bytesRead;
|
|
6630
|
+
}
|
|
6631
|
+
return filled > size ? "corrupt" : buffer.subarray(0, filled);
|
|
6591
6632
|
} catch {
|
|
6592
|
-
return
|
|
6633
|
+
return "missing";
|
|
6634
|
+
} finally {
|
|
6635
|
+
await handle.close().catch(() => {});
|
|
6636
|
+
}
|
|
6637
|
+
}
|
|
6638
|
+
var LEGACY_HEX = /^(?:[0-9a-f]{2})*$/;
|
|
6639
|
+
var LEGACY_IV_HEX_CHARS = 24;
|
|
6640
|
+
var LEGACY_TAG_HEX_CHARS = 32;
|
|
6641
|
+
function isLegacyStructure(text) {
|
|
6642
|
+
const parts = text.split(":");
|
|
6643
|
+
const [scheme, version, iv, body, tag] = parts;
|
|
6644
|
+
return parts.length === 5 && scheme === "enc" && version === "v1" && iv !== undefined && body !== undefined && tag !== undefined && iv.length === LEGACY_IV_HEX_CHARS && tag.length === LEGACY_TAG_HEX_CHARS && LEGACY_HEX.test(iv) && LEGACY_HEX.test(body) && LEGACY_HEX.test(tag);
|
|
6645
|
+
}
|
|
6646
|
+
function payloadFits(codec, payloadBytes, claimed) {
|
|
6647
|
+
switch (codec) {
|
|
6648
|
+
case CODEC_RAW:
|
|
6649
|
+
return payloadBytes === claimed;
|
|
6650
|
+
case CODEC_GZIP:
|
|
6651
|
+
return payloadBytes >= GZIP_FRAME_BYTES;
|
|
6652
|
+
default:
|
|
6653
|
+
return false;
|
|
6593
6654
|
}
|
|
6594
|
-
|
|
6655
|
+
}
|
|
6656
|
+
async function expand(codec, payload, claimed) {
|
|
6657
|
+
switch (codec) {
|
|
6658
|
+
case CODEC_RAW:
|
|
6659
|
+
return payload;
|
|
6660
|
+
case CODEC_GZIP:
|
|
6661
|
+
return gunzipArtifact(payload, claimed);
|
|
6662
|
+
default:
|
|
6663
|
+
throw new Error("unsupported artifact codec");
|
|
6664
|
+
}
|
|
6665
|
+
}
|
|
6666
|
+
async function gunzipArtifact(payload, claimed) {
|
|
6667
|
+
const result = await gunzipAsync(payload, {
|
|
6668
|
+
maxOutputLength: MAX_ARTIFACT_BYTES,
|
|
6669
|
+
info: true
|
|
6670
|
+
});
|
|
6671
|
+
const inflated = inflateResult(result);
|
|
6672
|
+
if (inflated === null)
|
|
6673
|
+
throw new Error("gzip result has an unexpected shape");
|
|
6674
|
+
if (inflated.consumed !== payload.length)
|
|
6675
|
+
throw new Error("bytes follow the gzip stream");
|
|
6676
|
+
if (inflated.output.length !== claimed)
|
|
6677
|
+
throw new Error("gzip output is not the claimed length");
|
|
6678
|
+
return inflated.output;
|
|
6679
|
+
}
|
|
6680
|
+
function inflateResult(result) {
|
|
6681
|
+
if (typeof result !== "object" || result === null)
|
|
6682
|
+
return null;
|
|
6683
|
+
if (!("buffer" in result) || !("engine" in result))
|
|
6684
|
+
return null;
|
|
6685
|
+
const { buffer, engine } = result;
|
|
6686
|
+
if (!(buffer instanceof Uint8Array) || typeof engine !== "object" || engine === null)
|
|
6687
|
+
return null;
|
|
6688
|
+
if (!("bytesWritten" in engine) || typeof engine.bytesWritten !== "number")
|
|
6689
|
+
return null;
|
|
6690
|
+
return { output: buffer, consumed: engine.bytesWritten };
|
|
6691
|
+
}
|
|
6692
|
+
function parseBinary(bytes) {
|
|
6693
|
+
if (bytes.length < BINARY_OVERHEAD || bytes.length > MAX_BINARY_ENVELOPE_BYTES)
|
|
6694
|
+
return null;
|
|
6695
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
6696
|
+
const version = view.getUint8(4);
|
|
6697
|
+
const codec = view.getUint8(5);
|
|
6698
|
+
const claimed = view.getUint32(6, false);
|
|
6699
|
+
if (version !== BINARY_VERSION)
|
|
6700
|
+
return null;
|
|
6701
|
+
if (claimed < 1 || claimed > MAX_ARTIFACT_BYTES)
|
|
6702
|
+
return null;
|
|
6703
|
+
if (!payloadFits(codec, bytes.length - BINARY_OVERHEAD, claimed))
|
|
6704
|
+
return null;
|
|
6705
|
+
return {
|
|
6706
|
+
header: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
6707
|
+
codec,
|
|
6708
|
+
claimed,
|
|
6709
|
+
iv: own2(bytes, BINARY_HEADER_BYTES, BINARY_HEADER_BYTES + BINARY_IV_BYTES),
|
|
6710
|
+
sealed: own2(bytes, BINARY_HEADER_BYTES + BINARY_IV_BYTES)
|
|
6711
|
+
};
|
|
6712
|
+
}
|
|
6713
|
+
async function openBinary(key, envelope) {
|
|
6714
|
+
const payload = await crypto.subtle.decrypt({
|
|
6715
|
+
name: "AES-GCM",
|
|
6716
|
+
iv: envelope.iv,
|
|
6717
|
+
additionalData: envelope.header,
|
|
6718
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
6719
|
+
}, key, envelope.sealed);
|
|
6720
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(await expand(envelope.codec, new Uint8Array(payload), envelope.claimed));
|
|
6721
|
+
}
|
|
6722
|
+
function startsWith(bytes, prefix) {
|
|
6723
|
+
if (bytes.length < prefix.length)
|
|
6724
|
+
return false;
|
|
6725
|
+
return prefix.every((byte, i) => bytes[i] === byte);
|
|
6595
6726
|
}
|
|
6596
6727
|
async function decodeArtifact(key, bytes, expectedSha256) {
|
|
6728
|
+
const corrupt = { ok: false, failure: "corrupt" };
|
|
6597
6729
|
try {
|
|
6598
|
-
if (
|
|
6599
|
-
return
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6730
|
+
if (bytes.length > MAX_ENVELOPE_BYTES)
|
|
6731
|
+
return corrupt;
|
|
6732
|
+
let unseal;
|
|
6733
|
+
if (startsWith(bytes, BINARY_MAGIC)) {
|
|
6734
|
+
const envelope = parseBinary(bytes);
|
|
6735
|
+
if (envelope === null)
|
|
6736
|
+
return corrupt;
|
|
6737
|
+
unseal = () => openBinary(key, envelope);
|
|
6738
|
+
} else if (startsWith(bytes, LEGACY_PREFIX)) {
|
|
6739
|
+
const text = new TextDecoder().decode(bytes);
|
|
6740
|
+
if (!isLegacyStructure(text))
|
|
6741
|
+
return corrupt;
|
|
6742
|
+
unseal = () => decrypt(key, text);
|
|
6743
|
+
} else {
|
|
6744
|
+
return corrupt;
|
|
6604
6745
|
}
|
|
6746
|
+
if (expectedSha256 !== null && await sha256Hex(bytes) !== expectedSha256)
|
|
6747
|
+
return corrupt;
|
|
6748
|
+
const parsed = JSON.parse(await unseal());
|
|
6749
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed))
|
|
6750
|
+
return corrupt;
|
|
6605
6751
|
return { ok: true, artifact: parsed };
|
|
6606
6752
|
} catch {
|
|
6607
|
-
return
|
|
6753
|
+
return corrupt;
|
|
6608
6754
|
}
|
|
6609
6755
|
}
|
|
6610
6756
|
async function writeArtifact(dir, relPath, bytes) {
|
|
@@ -7637,13 +7783,16 @@ function createBodyRepo(sql, key) {
|
|
|
7637
7783
|
return row;
|
|
7638
7784
|
},
|
|
7639
7785
|
async get(requestId) {
|
|
7640
|
-
const found = (await sql.unsafe(
|
|
7786
|
+
const found = (await sql.unsafe(`SELECT ${META},
|
|
7787
|
+
CASE WHEN octet_length(bytes) <= $2 THEN bytes ELSE NULL END AS bytes,
|
|
7788
|
+
octet_length(bytes) AS encoded_size
|
|
7789
|
+
FROM request_bodies WHERE request_id = $1`, [requestId, MAX_ENVELOPE_BYTES]))[0];
|
|
7641
7790
|
if (found === undefined)
|
|
7642
7791
|
return null;
|
|
7643
7792
|
const row = toRow(found);
|
|
7644
7793
|
if (row.relPath === null || row.detailState === "none")
|
|
7645
7794
|
return { row, artifact: null };
|
|
7646
|
-
const read = found.
|
|
7795
|
+
const read = found.encoded_size === null ? { ok: false, failure: "missing" } : found.bytes === null ? { ok: false, failure: "corrupt" } : await decodeArtifact(key, new Uint8Array(found.bytes), row.sha256);
|
|
7647
7796
|
if (read.ok) {
|
|
7648
7797
|
if (row.detailState !== "ready")
|
|
7649
7798
|
await recordState(requestId, "ready");
|
|
@@ -7743,6 +7892,7 @@ var DEFAULT_SETTINGS = {
|
|
|
7743
7892
|
breakerThreshold: 3,
|
|
7744
7893
|
breakerCooldownMs: 30000,
|
|
7745
7894
|
logRetentionDays: 30,
|
|
7895
|
+
bodyRetentionDays: 1,
|
|
7746
7896
|
quotaPollIntervalMs: 300000,
|
|
7747
7897
|
rtkEnabled: false,
|
|
7748
7898
|
autoCacheEnabled: true,
|
|
@@ -7812,6 +7962,7 @@ function createConfigRepo(sql, emit) {
|
|
|
7812
7962
|
rtkEnabled: stored.rtkEnabled === true,
|
|
7813
7963
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
7814
7964
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
7965
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
7815
7966
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
7816
7967
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
7817
7968
|
weights: knownWeights(stored.weights)
|
|
@@ -9301,6 +9452,7 @@ function createConfigRepo2(db, emit = () => {}) {
|
|
|
9301
9452
|
rtkEnabled: stored.rtkEnabled === true,
|
|
9302
9453
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
9303
9454
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
9455
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
9304
9456
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
9305
9457
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
9306
9458
|
weights: knownWeights2(stored.weights)
|
|
@@ -13963,6 +14115,9 @@ function toWire(req, model, opts) {
|
|
|
13963
14115
|
addAutoCacheBreakpoints(body, req, note);
|
|
13964
14116
|
if (req.reasoning !== undefined) {
|
|
13965
14117
|
switch (req.reasoning.mode) {
|
|
14118
|
+
case "betweenTools":
|
|
14119
|
+
body.thinking = { type: "between_tools" };
|
|
14120
|
+
break;
|
|
13966
14121
|
case "adaptive":
|
|
13967
14122
|
if (anthropicReasoningForm(model) === "budget") {
|
|
13968
14123
|
body.thinking = { type: "disabled" };
|
|
@@ -14001,7 +14156,10 @@ function toWire(req, model, opts) {
|
|
|
14001
14156
|
} else if (!nativeFormat && read.kind === "tooDeep") {
|
|
14002
14157
|
note("anthropic:response-schema-too-deep");
|
|
14003
14158
|
}
|
|
14004
|
-
const vendorRaw = req.vendor?.anthropic ?? {};
|
|
14159
|
+
const { thinking: thinkingExtras, ...vendorRaw } = req.vendor?.anthropic ?? {};
|
|
14160
|
+
if (body.thinking !== undefined && isRecord2(thinkingExtras)) {
|
|
14161
|
+
body.thinking = { ...thinkingExtras, ...body.thinking };
|
|
14162
|
+
}
|
|
14005
14163
|
const vendorConfig = vendorRaw.output_config;
|
|
14006
14164
|
const encoderConfig = isRecord2(body.output_config) ? body.output_config : undefined;
|
|
14007
14165
|
let unreadableFormat = false;
|
|
@@ -15178,6 +15336,10 @@ function toAntigravityWire(req, model, identity) {
|
|
|
15178
15336
|
}
|
|
15179
15337
|
if (req.reasoning !== undefined) {
|
|
15180
15338
|
switch (req.reasoning.mode) {
|
|
15339
|
+
case "betweenTools":
|
|
15340
|
+
note("antigravity:reasoning-between-tools-as-off");
|
|
15341
|
+
generationConfig.thinkingConfig = { thinkingBudget: 0, includeThoughts: false };
|
|
15342
|
+
break;
|
|
15181
15343
|
case "off":
|
|
15182
15344
|
generationConfig.thinkingConfig = { thinkingBudget: 0, includeThoughts: false };
|
|
15183
15345
|
break;
|
|
@@ -15195,7 +15357,7 @@ function toAntigravityWire(req, model, identity) {
|
|
|
15195
15357
|
break;
|
|
15196
15358
|
case "adaptive":
|
|
15197
15359
|
generationConfig.thinkingConfig = {
|
|
15198
|
-
includeThoughts: req.reasoning.display !== "omitted"
|
|
15360
|
+
includeThoughts: req.reasoning.display !== "omitted" && req.reasoning.display !== "updates"
|
|
15199
15361
|
};
|
|
15200
15362
|
if (req.reasoning.effort !== undefined)
|
|
15201
15363
|
note("antigravity:reasoning-effort-dropped");
|
|
@@ -17070,6 +17232,8 @@ function toCustomChatWire(req, model) {
|
|
|
17070
17232
|
}
|
|
17071
17233
|
if (req.toolChoice !== undefined)
|
|
17072
17234
|
body.tool_choice = encodeChatToolChoice(req.toolChoice);
|
|
17235
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
17236
|
+
note("custom:reasoning-between-tools-as-off");
|
|
17073
17237
|
const effort = customEffort(req.reasoning);
|
|
17074
17238
|
if (effort !== undefined)
|
|
17075
17239
|
body.reasoning_effort = effort;
|
|
@@ -17200,9 +17364,14 @@ function toCustomResponsesWire(req, model) {
|
|
|
17200
17364
|
}
|
|
17201
17365
|
if (req.toolChoice !== undefined)
|
|
17202
17366
|
body.tool_choice = encodeResponsesToolChoice(req.toolChoice);
|
|
17367
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
17368
|
+
note("custom:reasoning-between-tools-as-off");
|
|
17203
17369
|
const effort = customEffort(req.reasoning);
|
|
17204
17370
|
if (effort !== undefined)
|
|
17205
|
-
body.reasoning = {
|
|
17371
|
+
body.reasoning = {
|
|
17372
|
+
effort,
|
|
17373
|
+
...req.reasoning?.mode === "adaptive" && (req.reasoning.display === "omitted" || req.reasoning.display === "updates") ? {} : { summary: "auto" }
|
|
17374
|
+
};
|
|
17206
17375
|
else if (req.reasoning?.mode === "budget")
|
|
17207
17376
|
note("custom:reasoning-budget-dropped");
|
|
17208
17377
|
Object.assign(body, req.vendor?.openai ?? {});
|
|
@@ -17595,12 +17764,17 @@ function toGrokWire(req, model) {
|
|
|
17595
17764
|
}
|
|
17596
17765
|
if (req.toolChoice !== undefined)
|
|
17597
17766
|
body.tool_choice = encodeToolChoice3(req.toolChoice);
|
|
17598
|
-
if (req.reasoning
|
|
17767
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
17768
|
+
note("grok:reasoning-between-tools-as-off");
|
|
17769
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
17599
17770
|
if (req.reasoning.mode === "budget") {
|
|
17600
17771
|
note("grok:reasoning-budget-dropped");
|
|
17601
17772
|
} else {
|
|
17602
17773
|
const effort = req.reasoning.effort ?? "medium";
|
|
17603
|
-
body.reasoning = {
|
|
17774
|
+
body.reasoning = {
|
|
17775
|
+
effort,
|
|
17776
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "concise" }
|
|
17777
|
+
};
|
|
17604
17778
|
}
|
|
17605
17779
|
}
|
|
17606
17780
|
Object.assign(body, req.vendor?.grok ?? {});
|
|
@@ -18060,7 +18234,9 @@ function toKiloWire(req, model) {
|
|
|
18060
18234
|
}
|
|
18061
18235
|
if (req.toolChoice !== undefined)
|
|
18062
18236
|
body.tool_choice = encodeToolChoice4(req.toolChoice);
|
|
18063
|
-
if (req.reasoning
|
|
18237
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
18238
|
+
note("kilo:reasoning-between-tools-as-off");
|
|
18239
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
18064
18240
|
if (req.reasoning.mode === "budget") {
|
|
18065
18241
|
body.reasoning = { max_tokens: req.reasoning.budgetTokens };
|
|
18066
18242
|
} else {
|
|
@@ -18338,6 +18514,8 @@ function toChatWire(req, model, vendor = "kimi") {
|
|
|
18338
18514
|
}
|
|
18339
18515
|
if (req.toolChoice !== undefined)
|
|
18340
18516
|
body.tool_choice = encodeToolChoice5(req.toolChoice);
|
|
18517
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
18518
|
+
note("kimi:reasoning-between-tools-as-off");
|
|
18341
18519
|
if (req.reasoning !== undefined)
|
|
18342
18520
|
note("kimi:reasoning-dropped");
|
|
18343
18521
|
Object.assign(body, req.vendor?.[vendor] ?? {});
|
|
@@ -18760,12 +18938,17 @@ function toMuseWire(req, model) {
|
|
|
18760
18938
|
}
|
|
18761
18939
|
if (req.toolChoice !== undefined)
|
|
18762
18940
|
body.tool_choice = encodeToolChoice6(req.toolChoice);
|
|
18763
|
-
if (req.reasoning
|
|
18941
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
18942
|
+
note("muse:reasoning-between-tools-as-off");
|
|
18943
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
18764
18944
|
if (req.reasoning.mode === "budget") {
|
|
18765
18945
|
note("muse:reasoning-budget-dropped");
|
|
18766
18946
|
} else {
|
|
18767
18947
|
const effort = req.reasoning.effort ?? "medium";
|
|
18768
|
-
body.reasoning = {
|
|
18948
|
+
body.reasoning = {
|
|
18949
|
+
effort,
|
|
18950
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "auto" }
|
|
18951
|
+
};
|
|
18769
18952
|
}
|
|
18770
18953
|
}
|
|
18771
18954
|
const key = suppliedKey(req) ?? cacheKey(req, instructions ?? "", input[0]);
|
|
@@ -19196,12 +19379,17 @@ function toResponsesWire(req, model, opts = { oauth: false }) {
|
|
|
19196
19379
|
}
|
|
19197
19380
|
if (req.toolChoice !== undefined)
|
|
19198
19381
|
body.tool_choice = encodeToolChoice7(req.toolChoice);
|
|
19199
|
-
if (req.reasoning
|
|
19382
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
19383
|
+
degradations.push("openai:reasoning-between-tools-as-off");
|
|
19384
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
19200
19385
|
if (req.reasoning.mode === "budget") {
|
|
19201
19386
|
degradations.push("openai:reasoning-budget-dropped");
|
|
19202
19387
|
} else {
|
|
19203
19388
|
const effort = req.reasoning.effort ?? "medium";
|
|
19204
|
-
body.reasoning = {
|
|
19389
|
+
body.reasoning = {
|
|
19390
|
+
effort,
|
|
19391
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "auto" }
|
|
19392
|
+
};
|
|
19205
19393
|
}
|
|
19206
19394
|
}
|
|
19207
19395
|
const key = suppliedKey2(req) ?? cacheKey2(req, instructions ?? "", input[0]);
|
|
@@ -19548,6 +19736,7 @@ var settingsSchema = object({
|
|
|
19548
19736
|
breakerThreshold: number2().int().min(1),
|
|
19549
19737
|
breakerCooldownMs: number2().int().positive(),
|
|
19550
19738
|
logRetentionDays: number2().int().min(1),
|
|
19739
|
+
bodyRetentionDays: retentionSchema.shape.maxAgeDays.optional(),
|
|
19551
19740
|
quotaPollIntervalMs: number2().int().min(0),
|
|
19552
19741
|
rtkEnabled: boolean2(),
|
|
19553
19742
|
autoCacheEnabled: boolean2(),
|
|
@@ -19794,7 +19983,7 @@ function requiredCapabilities(request) {
|
|
|
19794
19983
|
return {
|
|
19795
19984
|
tools: (request.tools?.length ?? 0) > 0,
|
|
19796
19985
|
images,
|
|
19797
|
-
reasoning: request.reasoning !== undefined && request.reasoning.mode !== "off"
|
|
19986
|
+
reasoning: request.reasoning !== undefined && request.reasoning.mode !== "off" && request.reasoning.mode !== "betweenTools"
|
|
19798
19987
|
};
|
|
19799
19988
|
}
|
|
19800
19989
|
function cooldownMs(failures, threshold, base) {
|
|
@@ -22727,9 +22916,10 @@ async function getSettings(store) {
|
|
|
22727
22916
|
return store.config.getSettings();
|
|
22728
22917
|
}
|
|
22729
22918
|
async function putSettings(store, input) {
|
|
22730
|
-
const { snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
22919
|
+
const { bodyRetentionDays, snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
22731
22920
|
const patch = {
|
|
22732
22921
|
...rest,
|
|
22922
|
+
...bodyRetentionDays === undefined ? {} : { bodyRetentionDays },
|
|
22733
22923
|
...snapshotKeepLatest === undefined ? {} : { snapshotKeepLatest },
|
|
22734
22924
|
...snapshotMaxAgeDays === undefined ? {} : { snapshotMaxAgeDays }
|
|
22735
22925
|
};
|
|
@@ -25073,7 +25263,7 @@ function createServiceDeps(input) {
|
|
|
25073
25263
|
}
|
|
25074
25264
|
|
|
25075
25265
|
// apps/cli/src/version.ts
|
|
25076
|
-
var VERSION = "0.13.
|
|
25266
|
+
var VERSION = "0.13.5";
|
|
25077
25267
|
|
|
25078
25268
|
// apps/cli/src/commands/service.ts
|
|
25079
25269
|
function gatewayArgv(root) {
|
package/gateway.js
CHANGED
|
@@ -11660,8 +11660,10 @@ function memoryCoord(options = {}) {
|
|
|
11660
11660
|
}
|
|
11661
11661
|
|
|
11662
11662
|
// packages/store/src/bodies/artifact.ts
|
|
11663
|
-
import { mkdir,
|
|
11663
|
+
import { mkdir, open as open2, readdir, rmdir, unlink, writeFile } from "fs/promises";
|
|
11664
11664
|
import { dirname, join, sep } from "path";
|
|
11665
|
+
import { promisify } from "util";
|
|
11666
|
+
import { gunzip, gzip } from "zlib";
|
|
11665
11667
|
|
|
11666
11668
|
// packages/store/src/encryption.ts
|
|
11667
11669
|
var PREFIX = "enc:v1";
|
|
@@ -11886,27 +11888,171 @@ async function sealArtifact(key, json) {
|
|
|
11886
11888
|
const bytes = encoder2.encode(await encrypt(key, json));
|
|
11887
11889
|
return { bytes, sha256: await sha256Hex(bytes) };
|
|
11888
11890
|
}
|
|
11891
|
+
var MAX_ENVELOPE_BYTES = 2 * MAX_ARTIFACT_BYTES + 65;
|
|
11892
|
+
var BINARY_MAGIC = encoder2.encode("OGBA");
|
|
11893
|
+
var LEGACY_PREFIX = encoder2.encode("enc:v1:");
|
|
11894
|
+
var BINARY_VERSION = 1;
|
|
11895
|
+
var BINARY_HEADER_BYTES = 10;
|
|
11896
|
+
var BINARY_IV_BYTES = 12;
|
|
11897
|
+
var BINARY_TAG_BYTES = 16;
|
|
11898
|
+
var BINARY_OVERHEAD = BINARY_HEADER_BYTES + BINARY_IV_BYTES + BINARY_TAG_BYTES;
|
|
11899
|
+
var MAX_BINARY_ENVELOPE_BYTES = MAX_ARTIFACT_BYTES + BINARY_OVERHEAD;
|
|
11900
|
+
var CODEC_RAW = 0;
|
|
11901
|
+
var CODEC_GZIP = 1;
|
|
11902
|
+
var GZIP_FRAME_BYTES = 18;
|
|
11903
|
+
var gzipAsync = promisify(gzip);
|
|
11904
|
+
var gunzipAsync = promisify(gunzip);
|
|
11905
|
+
function own2(bytes, start, end) {
|
|
11906
|
+
return bytes.slice(start, end);
|
|
11907
|
+
}
|
|
11889
11908
|
async function readArtifact(key, dir, relPath, expectedSha256) {
|
|
11890
|
-
|
|
11909
|
+
const acquired = await acquireArtifact(join(dir, relPath));
|
|
11910
|
+
if (!(acquired instanceof Uint8Array))
|
|
11911
|
+
return { ok: false, failure: acquired };
|
|
11912
|
+
return decodeArtifact(key, acquired, expectedSha256);
|
|
11913
|
+
}
|
|
11914
|
+
async function acquireArtifact(path) {
|
|
11915
|
+
let handle;
|
|
11916
|
+
try {
|
|
11917
|
+
handle = await open2(path, "r");
|
|
11918
|
+
} catch {
|
|
11919
|
+
return "missing";
|
|
11920
|
+
}
|
|
11891
11921
|
try {
|
|
11892
|
-
|
|
11922
|
+
const { size } = await handle.stat();
|
|
11923
|
+
if (size > MAX_ENVELOPE_BYTES)
|
|
11924
|
+
return "corrupt";
|
|
11925
|
+
const buffer = new Uint8Array(size + 1);
|
|
11926
|
+
let filled = 0;
|
|
11927
|
+
while (filled < buffer.length) {
|
|
11928
|
+
const { bytesRead } = await handle.read(buffer, filled, buffer.length - filled, filled);
|
|
11929
|
+
if (bytesRead === 0)
|
|
11930
|
+
break;
|
|
11931
|
+
filled += bytesRead;
|
|
11932
|
+
}
|
|
11933
|
+
return filled > size ? "corrupt" : buffer.subarray(0, filled);
|
|
11893
11934
|
} catch {
|
|
11894
|
-
return
|
|
11935
|
+
return "missing";
|
|
11936
|
+
} finally {
|
|
11937
|
+
await handle.close().catch(() => {});
|
|
11938
|
+
}
|
|
11939
|
+
}
|
|
11940
|
+
var LEGACY_HEX = /^(?:[0-9a-f]{2})*$/;
|
|
11941
|
+
var LEGACY_IV_HEX_CHARS = 24;
|
|
11942
|
+
var LEGACY_TAG_HEX_CHARS = 32;
|
|
11943
|
+
function isLegacyStructure(text) {
|
|
11944
|
+
const parts = text.split(":");
|
|
11945
|
+
const [scheme, version, iv, body, tag] = parts;
|
|
11946
|
+
return parts.length === 5 && scheme === "enc" && version === "v1" && iv !== undefined && body !== undefined && tag !== undefined && iv.length === LEGACY_IV_HEX_CHARS && tag.length === LEGACY_TAG_HEX_CHARS && LEGACY_HEX.test(iv) && LEGACY_HEX.test(body) && LEGACY_HEX.test(tag);
|
|
11947
|
+
}
|
|
11948
|
+
function payloadFits(codec, payloadBytes, claimed) {
|
|
11949
|
+
switch (codec) {
|
|
11950
|
+
case CODEC_RAW:
|
|
11951
|
+
return payloadBytes === claimed;
|
|
11952
|
+
case CODEC_GZIP:
|
|
11953
|
+
return payloadBytes >= GZIP_FRAME_BYTES;
|
|
11954
|
+
default:
|
|
11955
|
+
return false;
|
|
11895
11956
|
}
|
|
11896
|
-
|
|
11957
|
+
}
|
|
11958
|
+
async function expand(codec, payload, claimed) {
|
|
11959
|
+
switch (codec) {
|
|
11960
|
+
case CODEC_RAW:
|
|
11961
|
+
return payload;
|
|
11962
|
+
case CODEC_GZIP:
|
|
11963
|
+
return gunzipArtifact(payload, claimed);
|
|
11964
|
+
default:
|
|
11965
|
+
throw new Error("unsupported artifact codec");
|
|
11966
|
+
}
|
|
11967
|
+
}
|
|
11968
|
+
async function gunzipArtifact(payload, claimed) {
|
|
11969
|
+
const result = await gunzipAsync(payload, {
|
|
11970
|
+
maxOutputLength: MAX_ARTIFACT_BYTES,
|
|
11971
|
+
info: true
|
|
11972
|
+
});
|
|
11973
|
+
const inflated = inflateResult(result);
|
|
11974
|
+
if (inflated === null)
|
|
11975
|
+
throw new Error("gzip result has an unexpected shape");
|
|
11976
|
+
if (inflated.consumed !== payload.length)
|
|
11977
|
+
throw new Error("bytes follow the gzip stream");
|
|
11978
|
+
if (inflated.output.length !== claimed)
|
|
11979
|
+
throw new Error("gzip output is not the claimed length");
|
|
11980
|
+
return inflated.output;
|
|
11981
|
+
}
|
|
11982
|
+
function inflateResult(result) {
|
|
11983
|
+
if (typeof result !== "object" || result === null)
|
|
11984
|
+
return null;
|
|
11985
|
+
if (!("buffer" in result) || !("engine" in result))
|
|
11986
|
+
return null;
|
|
11987
|
+
const { buffer, engine } = result;
|
|
11988
|
+
if (!(buffer instanceof Uint8Array) || typeof engine !== "object" || engine === null)
|
|
11989
|
+
return null;
|
|
11990
|
+
if (!("bytesWritten" in engine) || typeof engine.bytesWritten !== "number")
|
|
11991
|
+
return null;
|
|
11992
|
+
return { output: buffer, consumed: engine.bytesWritten };
|
|
11993
|
+
}
|
|
11994
|
+
function parseBinary(bytes) {
|
|
11995
|
+
if (bytes.length < BINARY_OVERHEAD || bytes.length > MAX_BINARY_ENVELOPE_BYTES)
|
|
11996
|
+
return null;
|
|
11997
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
11998
|
+
const version = view.getUint8(4);
|
|
11999
|
+
const codec = view.getUint8(5);
|
|
12000
|
+
const claimed = view.getUint32(6, false);
|
|
12001
|
+
if (version !== BINARY_VERSION)
|
|
12002
|
+
return null;
|
|
12003
|
+
if (claimed < 1 || claimed > MAX_ARTIFACT_BYTES)
|
|
12004
|
+
return null;
|
|
12005
|
+
if (!payloadFits(codec, bytes.length - BINARY_OVERHEAD, claimed))
|
|
12006
|
+
return null;
|
|
12007
|
+
return {
|
|
12008
|
+
header: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
12009
|
+
codec,
|
|
12010
|
+
claimed,
|
|
12011
|
+
iv: own2(bytes, BINARY_HEADER_BYTES, BINARY_HEADER_BYTES + BINARY_IV_BYTES),
|
|
12012
|
+
sealed: own2(bytes, BINARY_HEADER_BYTES + BINARY_IV_BYTES)
|
|
12013
|
+
};
|
|
12014
|
+
}
|
|
12015
|
+
async function openBinary(key, envelope) {
|
|
12016
|
+
const payload = await crypto.subtle.decrypt({
|
|
12017
|
+
name: "AES-GCM",
|
|
12018
|
+
iv: envelope.iv,
|
|
12019
|
+
additionalData: envelope.header,
|
|
12020
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
12021
|
+
}, key, envelope.sealed);
|
|
12022
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(await expand(envelope.codec, new Uint8Array(payload), envelope.claimed));
|
|
12023
|
+
}
|
|
12024
|
+
function startsWith(bytes, prefix) {
|
|
12025
|
+
if (bytes.length < prefix.length)
|
|
12026
|
+
return false;
|
|
12027
|
+
return prefix.every((byte, i) => bytes[i] === byte);
|
|
11897
12028
|
}
|
|
11898
12029
|
async function decodeArtifact(key, bytes, expectedSha256) {
|
|
12030
|
+
const corrupt = { ok: false, failure: "corrupt" };
|
|
11899
12031
|
try {
|
|
11900
|
-
if (
|
|
11901
|
-
return
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
12032
|
+
if (bytes.length > MAX_ENVELOPE_BYTES)
|
|
12033
|
+
return corrupt;
|
|
12034
|
+
let unseal;
|
|
12035
|
+
if (startsWith(bytes, BINARY_MAGIC)) {
|
|
12036
|
+
const envelope = parseBinary(bytes);
|
|
12037
|
+
if (envelope === null)
|
|
12038
|
+
return corrupt;
|
|
12039
|
+
unseal = () => openBinary(key, envelope);
|
|
12040
|
+
} else if (startsWith(bytes, LEGACY_PREFIX)) {
|
|
12041
|
+
const text = new TextDecoder().decode(bytes);
|
|
12042
|
+
if (!isLegacyStructure(text))
|
|
12043
|
+
return corrupt;
|
|
12044
|
+
unseal = () => decrypt(key, text);
|
|
12045
|
+
} else {
|
|
12046
|
+
return corrupt;
|
|
11906
12047
|
}
|
|
12048
|
+
if (expectedSha256 !== null && await sha256Hex(bytes) !== expectedSha256)
|
|
12049
|
+
return corrupt;
|
|
12050
|
+
const parsed = JSON.parse(await unseal());
|
|
12051
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed))
|
|
12052
|
+
return corrupt;
|
|
11907
12053
|
return { ok: true, artifact: parsed };
|
|
11908
12054
|
} catch {
|
|
11909
|
-
return
|
|
12055
|
+
return corrupt;
|
|
11910
12056
|
}
|
|
11911
12057
|
}
|
|
11912
12058
|
async function writeArtifact(dir, relPath, bytes) {
|
|
@@ -13184,13 +13330,16 @@ function createBodyRepo(sql, key) {
|
|
|
13184
13330
|
return row;
|
|
13185
13331
|
},
|
|
13186
13332
|
async get(requestId) {
|
|
13187
|
-
const found = (await sql.unsafe(
|
|
13333
|
+
const found = (await sql.unsafe(`SELECT ${META},
|
|
13334
|
+
CASE WHEN octet_length(bytes) <= $2 THEN bytes ELSE NULL END AS bytes,
|
|
13335
|
+
octet_length(bytes) AS encoded_size
|
|
13336
|
+
FROM request_bodies WHERE request_id = $1`, [requestId, MAX_ENVELOPE_BYTES]))[0];
|
|
13188
13337
|
if (found === undefined)
|
|
13189
13338
|
return null;
|
|
13190
13339
|
const row = toRow(found);
|
|
13191
13340
|
if (row.relPath === null || row.detailState === "none")
|
|
13192
13341
|
return { row, artifact: null };
|
|
13193
|
-
const read = found.
|
|
13342
|
+
const read = found.encoded_size === null ? { ok: false, failure: "missing" } : found.bytes === null ? { ok: false, failure: "corrupt" } : await decodeArtifact(key, new Uint8Array(found.bytes), row.sha256);
|
|
13194
13343
|
if (read.ok) {
|
|
13195
13344
|
if (row.detailState !== "ready")
|
|
13196
13345
|
await recordState(requestId, "ready");
|
|
@@ -13278,6 +13427,7 @@ var DEFAULT_SETTINGS = {
|
|
|
13278
13427
|
breakerThreshold: 3,
|
|
13279
13428
|
breakerCooldownMs: 30000,
|
|
13280
13429
|
logRetentionDays: 30,
|
|
13430
|
+
bodyRetentionDays: 1,
|
|
13281
13431
|
quotaPollIntervalMs: 300000,
|
|
13282
13432
|
rtkEnabled: false,
|
|
13283
13433
|
autoCacheEnabled: true,
|
|
@@ -13347,6 +13497,7 @@ function createConfigRepo(sql, emit) {
|
|
|
13347
13497
|
rtkEnabled: stored.rtkEnabled === true,
|
|
13348
13498
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
13349
13499
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
13500
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
13350
13501
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
13351
13502
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
13352
13503
|
weights: knownWeights(stored.weights)
|
|
@@ -14836,6 +14987,7 @@ function createConfigRepo2(db, emit = () => {}) {
|
|
|
14836
14987
|
rtkEnabled: stored.rtkEnabled === true,
|
|
14837
14988
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
14838
14989
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
14990
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
14839
14991
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
14840
14992
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
14841
14993
|
weights: knownWeights2(stored.weights)
|
|
@@ -19628,6 +19780,9 @@ function toWire(req, model, opts) {
|
|
|
19628
19780
|
addAutoCacheBreakpoints(body, req, note);
|
|
19629
19781
|
if (req.reasoning !== undefined) {
|
|
19630
19782
|
switch (req.reasoning.mode) {
|
|
19783
|
+
case "betweenTools":
|
|
19784
|
+
body.thinking = { type: "between_tools" };
|
|
19785
|
+
break;
|
|
19631
19786
|
case "adaptive":
|
|
19632
19787
|
if (anthropicReasoningForm(model) === "budget") {
|
|
19633
19788
|
body.thinking = { type: "disabled" };
|
|
@@ -19666,7 +19821,10 @@ function toWire(req, model, opts) {
|
|
|
19666
19821
|
} else if (!nativeFormat && read.kind === "tooDeep") {
|
|
19667
19822
|
note("anthropic:response-schema-too-deep");
|
|
19668
19823
|
}
|
|
19669
|
-
const vendorRaw = req.vendor?.anthropic ?? {};
|
|
19824
|
+
const { thinking: thinkingExtras, ...vendorRaw } = req.vendor?.anthropic ?? {};
|
|
19825
|
+
if (body.thinking !== undefined && isRecord2(thinkingExtras)) {
|
|
19826
|
+
body.thinking = { ...thinkingExtras, ...body.thinking };
|
|
19827
|
+
}
|
|
19670
19828
|
const vendorConfig = vendorRaw.output_config;
|
|
19671
19829
|
const encoderConfig = isRecord2(body.output_config) ? body.output_config : undefined;
|
|
19672
19830
|
let unreadableFormat = false;
|
|
@@ -20843,6 +21001,10 @@ function toAntigravityWire(req, model, identity) {
|
|
|
20843
21001
|
}
|
|
20844
21002
|
if (req.reasoning !== undefined) {
|
|
20845
21003
|
switch (req.reasoning.mode) {
|
|
21004
|
+
case "betweenTools":
|
|
21005
|
+
note("antigravity:reasoning-between-tools-as-off");
|
|
21006
|
+
generationConfig.thinkingConfig = { thinkingBudget: 0, includeThoughts: false };
|
|
21007
|
+
break;
|
|
20846
21008
|
case "off":
|
|
20847
21009
|
generationConfig.thinkingConfig = { thinkingBudget: 0, includeThoughts: false };
|
|
20848
21010
|
break;
|
|
@@ -20860,7 +21022,7 @@ function toAntigravityWire(req, model, identity) {
|
|
|
20860
21022
|
break;
|
|
20861
21023
|
case "adaptive":
|
|
20862
21024
|
generationConfig.thinkingConfig = {
|
|
20863
|
-
includeThoughts: req.reasoning.display !== "omitted"
|
|
21025
|
+
includeThoughts: req.reasoning.display !== "omitted" && req.reasoning.display !== "updates"
|
|
20864
21026
|
};
|
|
20865
21027
|
if (req.reasoning.effort !== undefined)
|
|
20866
21028
|
note("antigravity:reasoning-effort-dropped");
|
|
@@ -22735,6 +22897,8 @@ function toCustomChatWire(req, model) {
|
|
|
22735
22897
|
}
|
|
22736
22898
|
if (req.toolChoice !== undefined)
|
|
22737
22899
|
body.tool_choice = encodeChatToolChoice(req.toolChoice);
|
|
22900
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
22901
|
+
note("custom:reasoning-between-tools-as-off");
|
|
22738
22902
|
const effort = customEffort(req.reasoning);
|
|
22739
22903
|
if (effort !== undefined)
|
|
22740
22904
|
body.reasoning_effort = effort;
|
|
@@ -22865,9 +23029,14 @@ function toCustomResponsesWire(req, model) {
|
|
|
22865
23029
|
}
|
|
22866
23030
|
if (req.toolChoice !== undefined)
|
|
22867
23031
|
body.tool_choice = encodeResponsesToolChoice(req.toolChoice);
|
|
23032
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
23033
|
+
note("custom:reasoning-between-tools-as-off");
|
|
22868
23034
|
const effort = customEffort(req.reasoning);
|
|
22869
23035
|
if (effort !== undefined)
|
|
22870
|
-
body.reasoning = {
|
|
23036
|
+
body.reasoning = {
|
|
23037
|
+
effort,
|
|
23038
|
+
...req.reasoning?.mode === "adaptive" && (req.reasoning.display === "omitted" || req.reasoning.display === "updates") ? {} : { summary: "auto" }
|
|
23039
|
+
};
|
|
22871
23040
|
else if (req.reasoning?.mode === "budget")
|
|
22872
23041
|
note("custom:reasoning-budget-dropped");
|
|
22873
23042
|
Object.assign(body, req.vendor?.openai ?? {});
|
|
@@ -23260,12 +23429,17 @@ function toGrokWire(req, model) {
|
|
|
23260
23429
|
}
|
|
23261
23430
|
if (req.toolChoice !== undefined)
|
|
23262
23431
|
body.tool_choice = encodeToolChoice3(req.toolChoice);
|
|
23263
|
-
if (req.reasoning
|
|
23432
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
23433
|
+
note("grok:reasoning-between-tools-as-off");
|
|
23434
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
23264
23435
|
if (req.reasoning.mode === "budget") {
|
|
23265
23436
|
note("grok:reasoning-budget-dropped");
|
|
23266
23437
|
} else {
|
|
23267
23438
|
const effort = req.reasoning.effort ?? "medium";
|
|
23268
|
-
body.reasoning = {
|
|
23439
|
+
body.reasoning = {
|
|
23440
|
+
effort,
|
|
23441
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "concise" }
|
|
23442
|
+
};
|
|
23269
23443
|
}
|
|
23270
23444
|
}
|
|
23271
23445
|
Object.assign(body, req.vendor?.grok ?? {});
|
|
@@ -23725,7 +23899,9 @@ function toKiloWire(req, model) {
|
|
|
23725
23899
|
}
|
|
23726
23900
|
if (req.toolChoice !== undefined)
|
|
23727
23901
|
body.tool_choice = encodeToolChoice4(req.toolChoice);
|
|
23728
|
-
if (req.reasoning
|
|
23902
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
23903
|
+
note("kilo:reasoning-between-tools-as-off");
|
|
23904
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
23729
23905
|
if (req.reasoning.mode === "budget") {
|
|
23730
23906
|
body.reasoning = { max_tokens: req.reasoning.budgetTokens };
|
|
23731
23907
|
} else {
|
|
@@ -24003,6 +24179,8 @@ function toChatWire(req, model, vendor = "kimi") {
|
|
|
24003
24179
|
}
|
|
24004
24180
|
if (req.toolChoice !== undefined)
|
|
24005
24181
|
body.tool_choice = encodeToolChoice5(req.toolChoice);
|
|
24182
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
24183
|
+
note("kimi:reasoning-between-tools-as-off");
|
|
24006
24184
|
if (req.reasoning !== undefined)
|
|
24007
24185
|
note("kimi:reasoning-dropped");
|
|
24008
24186
|
Object.assign(body, req.vendor?.[vendor] ?? {});
|
|
@@ -24425,12 +24603,17 @@ function toMuseWire(req, model) {
|
|
|
24425
24603
|
}
|
|
24426
24604
|
if (req.toolChoice !== undefined)
|
|
24427
24605
|
body.tool_choice = encodeToolChoice6(req.toolChoice);
|
|
24428
|
-
if (req.reasoning
|
|
24606
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
24607
|
+
note("muse:reasoning-between-tools-as-off");
|
|
24608
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
24429
24609
|
if (req.reasoning.mode === "budget") {
|
|
24430
24610
|
note("muse:reasoning-budget-dropped");
|
|
24431
24611
|
} else {
|
|
24432
24612
|
const effort = req.reasoning.effort ?? "medium";
|
|
24433
|
-
body.reasoning = {
|
|
24613
|
+
body.reasoning = {
|
|
24614
|
+
effort,
|
|
24615
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "auto" }
|
|
24616
|
+
};
|
|
24434
24617
|
}
|
|
24435
24618
|
}
|
|
24436
24619
|
const key = suppliedKey(req) ?? cacheKey(req, instructions ?? "", input[0]);
|
|
@@ -24861,12 +25044,17 @@ function toResponsesWire(req, model, opts = { oauth: false }) {
|
|
|
24861
25044
|
}
|
|
24862
25045
|
if (req.toolChoice !== undefined)
|
|
24863
25046
|
body.tool_choice = encodeToolChoice7(req.toolChoice);
|
|
24864
|
-
if (req.reasoning
|
|
25047
|
+
if (req.reasoning?.mode === "betweenTools")
|
|
25048
|
+
degradations.push("openai:reasoning-between-tools-as-off");
|
|
25049
|
+
if (req.reasoning !== undefined && req.reasoning.mode !== "off" && req.reasoning.mode !== "betweenTools") {
|
|
24865
25050
|
if (req.reasoning.mode === "budget") {
|
|
24866
25051
|
degradations.push("openai:reasoning-budget-dropped");
|
|
24867
25052
|
} else {
|
|
24868
25053
|
const effort = req.reasoning.effort ?? "medium";
|
|
24869
|
-
body.reasoning = {
|
|
25054
|
+
body.reasoning = {
|
|
25055
|
+
effort,
|
|
25056
|
+
...req.reasoning.display === "omitted" || req.reasoning.display === "updates" ? {} : { summary: "auto" }
|
|
25057
|
+
};
|
|
24870
25058
|
}
|
|
24871
25059
|
}
|
|
24872
25060
|
const key = suppliedKey2(req) ?? cacheKey2(req, instructions ?? "", input[0]);
|
|
@@ -25220,6 +25408,7 @@ var settingsSchema = object({
|
|
|
25220
25408
|
breakerThreshold: number2().int().min(1),
|
|
25221
25409
|
breakerCooldownMs: number2().int().positive(),
|
|
25222
25410
|
logRetentionDays: number2().int().min(1),
|
|
25411
|
+
bodyRetentionDays: retentionSchema.shape.maxAgeDays.optional(),
|
|
25223
25412
|
quotaPollIntervalMs: number2().int().min(0),
|
|
25224
25413
|
rtkEnabled: boolean2(),
|
|
25225
25414
|
autoCacheEnabled: boolean2(),
|
|
@@ -25383,7 +25572,7 @@ function requiredCapabilities(request) {
|
|
|
25383
25572
|
return {
|
|
25384
25573
|
tools: (request.tools?.length ?? 0) > 0,
|
|
25385
25574
|
images,
|
|
25386
|
-
reasoning: request.reasoning !== undefined && request.reasoning.mode !== "off"
|
|
25575
|
+
reasoning: request.reasoning !== undefined && request.reasoning.mode !== "off" && request.reasoning.mode !== "betweenTools"
|
|
25387
25576
|
};
|
|
25388
25577
|
}
|
|
25389
25578
|
function cooldownMs(failures, threshold, base) {
|
|
@@ -27882,9 +28071,10 @@ async function getSettings(store) {
|
|
|
27882
28071
|
return store.config.getSettings();
|
|
27883
28072
|
}
|
|
27884
28073
|
async function putSettings(store, input) {
|
|
27885
|
-
const { snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
28074
|
+
const { bodyRetentionDays, snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
27886
28075
|
const patch = {
|
|
27887
28076
|
...rest,
|
|
28077
|
+
...bodyRetentionDays === undefined ? {} : { bodyRetentionDays },
|
|
27888
28078
|
...snapshotKeepLatest === undefined ? {} : { snapshotKeepLatest },
|
|
27889
28079
|
...snapshotMaxAgeDays === undefined ? {} : { snapshotMaxAgeDays }
|
|
27890
28080
|
};
|
|
@@ -46949,10 +47139,11 @@ var schema = object({
|
|
|
46949
47139
|
thinking: union([
|
|
46950
47140
|
object({
|
|
46951
47141
|
type: literal("adaptive"),
|
|
46952
|
-
display: _enum(["summarized", "omitted"]).optional()
|
|
47142
|
+
display: _enum(["summarized", "omitted", "updates"]).optional()
|
|
46953
47143
|
}),
|
|
46954
47144
|
object({ type: literal("enabled"), budget_tokens: number2().int().positive() }),
|
|
46955
|
-
object({ type: literal("disabled") })
|
|
47145
|
+
object({ type: literal("disabled") }),
|
|
47146
|
+
object({ type: literal("between_tools") })
|
|
46956
47147
|
]).optional(),
|
|
46957
47148
|
metadata: object({ user_id: string2().max(512).nullish() }).nullish()
|
|
46958
47149
|
});
|
|
@@ -47178,6 +47369,8 @@ function toIrReasoning(thinking, effort) {
|
|
|
47178
47369
|
return { mode: "budget", budgetTokens: thinking.budget_tokens };
|
|
47179
47370
|
case "disabled":
|
|
47180
47371
|
return { mode: "off" };
|
|
47372
|
+
case "between_tools":
|
|
47373
|
+
return { mode: "betweenTools" };
|
|
47181
47374
|
}
|
|
47182
47375
|
}
|
|
47183
47376
|
function readBetas(headers) {
|
|
@@ -47237,8 +47430,13 @@ function parseAnthropicRequest(body, headers) {
|
|
|
47237
47430
|
const conversation = typeof userId === "string" && userId.length > 0 ? userId : readConversationHeader(headers ?? undefined);
|
|
47238
47431
|
if (conversation !== undefined)
|
|
47239
47432
|
request.conversationId = conversation;
|
|
47240
|
-
const
|
|
47241
|
-
|
|
47433
|
+
const rawThinking = body.thinking;
|
|
47434
|
+
const thinkingExtras = parsed.thinking !== undefined && typeof rawThinking === "object" && rawThinking !== null ? extraFields(rawThinking, ["type", "display", "budget_tokens"]) : undefined;
|
|
47435
|
+
const extras = {
|
|
47436
|
+
...extraFields(body, KNOWN),
|
|
47437
|
+
...thinkingExtras === undefined ? {} : { thinking: thinkingExtras }
|
|
47438
|
+
};
|
|
47439
|
+
if (Object.keys(extras).length > 0)
|
|
47242
47440
|
request.vendor = { anthropic: extras };
|
|
47243
47441
|
if (named.betas.length > 0)
|
|
47244
47442
|
request.betas = named.betas;
|
|
@@ -49035,7 +49233,7 @@ function createRing(limits = DEFAULT_RING_LIMITS) {
|
|
|
49035
49233
|
}
|
|
49036
49234
|
|
|
49037
49235
|
// apps/gateway/src/version.ts
|
|
49038
|
-
var VERSION = "0.13.
|
|
49236
|
+
var VERSION = "0.13.5";
|
|
49039
49237
|
|
|
49040
49238
|
// apps/gateway/src/app.ts
|
|
49041
49239
|
var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
|
|
@@ -49824,7 +50022,8 @@ async function pruneLogs(store, now) {
|
|
|
49824
50022
|
const raw = await store.usage.prune(rawHorizon);
|
|
49825
50023
|
const daily = await store.usage.pruneDaily(now - ROLLUP_RETENTION_DAYS * DAY_MS4);
|
|
49826
50024
|
const quotaSamples = await store.credentials.pruneQuotaSamples(rawHorizon);
|
|
49827
|
-
const
|
|
50025
|
+
const bodyHorizon = now - Math.min(settings.bodyRetentionDays, settings.logRetentionDays) * DAY_MS4;
|
|
50026
|
+
const bodies = await store.bodies.prune(bodyHorizon);
|
|
49828
50027
|
const bodiesOverCap = await store.bodies.pruneToCap();
|
|
49829
50028
|
const bodyOrphans = await store.bodies.sweepOrphans();
|
|
49830
50029
|
return { raw, daily, quotaSamples, bodies, bodiesOverCap, bodyOrphans };
|
|
@@ -50055,11 +50254,11 @@ function installPluginProviders(providers, logger, registry = OAUTH_PROVIDERS) {
|
|
|
50055
50254
|
}
|
|
50056
50255
|
|
|
50057
50256
|
// apps/gateway/src/plugins/loader.ts
|
|
50058
|
-
import { readdir as readdir2, readFile as
|
|
50257
|
+
import { readdir as readdir2, readFile as readFile2 } from "fs/promises";
|
|
50059
50258
|
import { join as join5, resolve as resolve5, sep as sep5 } from "path";
|
|
50060
50259
|
|
|
50061
50260
|
// apps/gateway/src/plugins/capabilities.ts
|
|
50062
|
-
import { mkdir as mkdir2, readFile
|
|
50261
|
+
import { mkdir as mkdir2, readFile, realpath, writeFile as writeFile2 } from "fs/promises";
|
|
50063
50262
|
import { dirname as dirname4, resolve as resolve4, sep as sep4 } from "path";
|
|
50064
50263
|
async function resolveInside(root, path) {
|
|
50065
50264
|
const rootReal = await realpath(root);
|
|
@@ -50089,7 +50288,7 @@ function createPluginFiles(root) {
|
|
|
50089
50288
|
async read(path) {
|
|
50090
50289
|
const target = await ensureRootThen(root, () => resolveInside(root, path));
|
|
50091
50290
|
try {
|
|
50092
|
-
const data = await
|
|
50291
|
+
const data = await readFile(target);
|
|
50093
50292
|
return new Uint8Array(data);
|
|
50094
50293
|
} catch {
|
|
50095
50294
|
return null;
|
|
@@ -50103,7 +50302,7 @@ function createPluginFiles(root) {
|
|
|
50103
50302
|
async exists(path) {
|
|
50104
50303
|
const target = await ensureRootThen(root, () => resolveInside(root, path));
|
|
50105
50304
|
try {
|
|
50106
|
-
await
|
|
50305
|
+
await readFile(target);
|
|
50107
50306
|
return true;
|
|
50108
50307
|
} catch {
|
|
50109
50308
|
return false;
|
|
@@ -50210,7 +50409,7 @@ async function loadPlugins(deps) {
|
|
|
50210
50409
|
};
|
|
50211
50410
|
let manifest;
|
|
50212
50411
|
try {
|
|
50213
|
-
const raw = await
|
|
50412
|
+
const raw = await readFile2(join5(home, "omni-plugin.json"), "utf8");
|
|
50214
50413
|
const parsed = safeParseManifest(JSON.parse(raw));
|
|
50215
50414
|
if (!parsed.ok) {
|
|
50216
50415
|
fail(parsed.reason);
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{At as e,B as t,j as n,lt as r}from"./Lamp-Dk9XrTCg.js";import{S as i,a,n as o,o as s,s as ee,t as c,x as l}from"./Panel-CsovmtxF.js";import{D as u,t as d}from"./Rack-CDUOJkS2.js";import{a as f,c as p,o as m,s as h}from"./index-
|
|
1
|
+
import{At as e,B as t,j as n,lt as r}from"./Lamp-Dk9XrTCg.js";import{S as i,a,n as o,o as s,s as ee,t as c,x as l}from"./Panel-CsovmtxF.js";import{D as u,t as d}from"./Rack-CDUOJkS2.js";import{a as f,c as p,o as m,s as h}from"./index-BYDVTknB.js";import{i as g}from"./Field-DG1317zr.js";import{useQueryClient as te}from"@tanstack/react-query";import{useLayoutEffect as ne,useMemo as _,useRef as v,useState as y}from"react";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";import C from"styled-components";var w={debug:10,info:20,warn:30,error:40};function T(e){return typeof e==`string`&&e in w}function E(e,t){return!T(t)||e.level===null||w[e.level]>=w[t]}function D(e){if(typeof e!=`object`||!e)return null;let{raw:t,at:n,level:r,msg:i}=e;return typeof t!=`string`||n!==null&&typeof n!=`number`||r!==null&&!T(r)||i!==null&&typeof i!=`string`?null:{raw:t,at:n,level:r,msg:i}}function re(e){if(typeof e!=`object`||!e)return null;let{lines:t}=e;if(!Array.isArray(t))return null;let n=[];for(let e of t){let t=D(e);if(t===null)return null;n.push(t)}return n}var O=[100,200,500],ie=[{value:``,label:`All levels`},{value:`debug`,label:`Debug and above`},{value:`info`,label:`Info and above`},{value:`warn`,label:`Warnings and errors`},{value:`error`,label:`Errors only`}],ae=C(i)`
|
|
2
2
|
gap: ${({theme:e})=>e.space(2)};
|
|
3
3
|
flex-wrap: wrap;
|
|
4
4
|
`,k=C(g)`
|
package/public/assets/{_app.plugins._pluginId-BSlXzAHP.js → _app.plugins._pluginId-cCDDM_D_.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jt as e}from"./Lamp-Dk9XrTCg.js";import{t}from"./preload-helper-B7KDmXJ9.js";import{T as n,a as r,d as i,m as a,o,p as s,r as c,s as l,u}from"./Panel-CsovmtxF.js";import{t as d}from"./Rack-CDUOJkS2.js";import{t as f}from"./index-
|
|
1
|
+
import{jt as e}from"./Lamp-Dk9XrTCg.js";import{t}from"./preload-helper-B7KDmXJ9.js";import{T as n,a as r,d as i,m as a,o,p as s,r as c,s as l,u}from"./Panel-CsovmtxF.js";import{t as d}from"./Rack-CDUOJkS2.js";import{t as f}from"./index-BYDVTknB.js";import{Component as p,Suspense as m,createContext as h,lazy as g,useContext as _,useMemo as v}from"react";import{Fragment as y,jsx as b,jsxs as x}from"react/jsx-runtime";import S from"styled-components";import{pluginApiPath as C}from"@omnigateway/dashboard-sdk";var w=new Map;function T(e){let t=w.get(e);if(t!==void 0)return t;let n={get:(t,n)=>i(C(e,t),n),post:(t,n)=>s(C(e,t),n),put:(t,n)=>a(C(e,t),n),del:t=>u(C(e,t))};return w.set(e,n),n}var E=h(e=>t(()=>import(e),[]));E.Provider;function D(){return _(E)}function O(e,t){let n=e?.default;if(n==null)throw Error(`plugin ${t} has no default export from definePluginUI`);if(typeof n.mount!=`function`)throw Error(`plugin ${t} exported a default without a mount function`);return n}function k(e,t,n){return g(async()=>{let r=O(await n(t),e);return{default:()=>r.mount({pluginId:e,api:T(e)})}})}var A=S.p`
|
|
2
2
|
font-size: 13px;
|
|
3
3
|
color: ${({theme:e})=>e.color.down};
|
|
4
4
|
`,j=S.p`
|
|
@@ -34,7 +34,7 @@ import{J as e,Jt as t,Qt as n,Ut as r,X as i,Z as a,kt as o,qt as s}from"./Lamp-
|
|
|
34
34
|
display: grid;
|
|
35
35
|
grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
|
|
36
36
|
gap: ${({theme:e})=>e.space(2)};
|
|
37
|
-
`,oe=[{key:`defaultModel`,label:`Default model`,required:!0},{key:`fableModel`,label:`Fable model`,required:!1},{key:`opusModel`,label:`Opus model`,required:!1},{key:`sonnetModel`,label:`Sonnet model`,required:!1},{key:`haikuModel`,label:`Haiku model`,required:!1}];function V(){let[t,n]=O(`claude`),[r,i]=O(()=>({claude:{},opencode:{}})),a=o(),s=r[t],u=typeof s.defaultModel==`string`&&s.defaultModel!==``?s:void 0,_=e(t,u),v=z.find(e=>e.id===t);return k(h,{legend:`Agent setup`,children:A(l,{children:[k(c,{children:z.map(e=>k(p,{type:`button`,$variant:e.id===t?`primary`:`ghost`,onClick:()=>n(e.id),children:e.label},e.id))}),A(B,{children:[v?.where,`. The key is a placeholder — paste your own over it. Or run`,` `,A(d,{children:[`omni setup `,t]}),` to write these files directly.`]}),t===`claude`?A(B,{children:[`Claude Code cannot read a window from this gateway, so it assumes 200k for a pool id it does not recognise and auto-compacts there. For a pool whose models hold 1M, append`,` `,k(d,{children:`[1m]`}),` to the model name — `,k(d,{children:`--model 'pool[1m]'`}),` — which lifts it per invocation. The suffix is stripped before the request is sent, so the pool id arrives unchanged.`]}):null,(a.data?.length??0)>0?k(ae,{children:oe.map(e=>k(w,{label:e.label,children:n=>A(S,{...n,value:s[e.key]??``,onChange:n=>i(r=>({...r,[t]:{...r[t],[e.key]:n.target.value||void 0}})),children:[k(`option`,{value:``,children:e.required?`Choose a pool`:`Not mapped`}),a.data?.map(e=>k(`option`,{value:e.id,children:e.id},e.id))]})},e.key))}):null,a.isLoading?k(g,{rows:2}):_.isError?k(m,{error:_.error,onRetry:()=>void _.refetch()}):_.isLoading?k(g,{rows:4}):(a.data?.length??0)===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):u===void 0?A(B,{children:[`Choose a default model to generate `,v?.label,` settings.`]}):_.data===void 0||_.data.length===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):_.data.map(e=>A(`div`,{children:[k(ie,{children:e.path}),k(re,{as:`pre`,children:e.contents.trimEnd()})]},e.path)),_.isError?k(B,{children:f(_.error)}):null]})})}var H={off:`Off`,lite:`Lite — names the lazier option`,full:`Full — the ladder enforced`,ultra:`Ultra — challenges the requirement`},U=[{id:`tier`,label:`Tier`,blurb:`Prefers a lower tier.`},{id:`health`,label:`Health`,blurb:`Penalises recent failures and an open breaker.`},{id:`quota`,label:`Quota`,blurb:`Prefers accounts ahead of their window's burn rate.`},{id:`cost`,label:`Cost`,blurb:`Prefers the cheaper candidate.`},{id:`latency`,label:`Latency`,blurb:`Prefers the faster observed first token.`},{id:`load`,label:`Load`,blurb:`Prefers accounts with fewer requests in flight.`}],W=[{id:`maxAttempts`,label:`Attempts per request`,hint:`Candidates dispatch may try. 1 disables failover.`,unit:`attempts`,step:1,min:1},{id:`requestDeadlineMs`,label:`Request deadline`,hint:`Across all attempts. 0 disables only OmniGateway's deadline.`,unit:`ms`,step:1e3,min:0},{id:`breakerThreshold`,label:`Breaker threshold`,hint:`Consecutive failures before an account and model leaves rotation.`,unit:`failures`,step:1,min:1},{id:`breakerCooldownMs`,label:`Breaker cooldown`,hint:`Wait before a tripped account is probed. Doubles per extra failure.`,unit:`ms`,step:1e3,min:1},{id:`logRetentionDays`,label:`Log retention`,hint:`How long request rows are kept before pruning.`,unit:`days`,step:1,min:1},{id:`quotaPollIntervalMs`,label:`Quota poll interval`,hint:`How often a provider is asked for remaining quota. 0 disables. Needs a restart.`,unit:`ms`,step:6e4,min:0}],G=j.div`
|
|
37
|
+
`,oe=[{key:`defaultModel`,label:`Default model`,required:!0},{key:`fableModel`,label:`Fable model`,required:!1},{key:`opusModel`,label:`Opus model`,required:!1},{key:`sonnetModel`,label:`Sonnet model`,required:!1},{key:`haikuModel`,label:`Haiku model`,required:!1}];function V(){let[t,n]=O(`claude`),[r,i]=O(()=>({claude:{},opencode:{}})),a=o(),s=r[t],u=typeof s.defaultModel==`string`&&s.defaultModel!==``?s:void 0,_=e(t,u),v=z.find(e=>e.id===t);return k(h,{legend:`Agent setup`,children:A(l,{children:[k(c,{children:z.map(e=>k(p,{type:`button`,$variant:e.id===t?`primary`:`ghost`,onClick:()=>n(e.id),children:e.label},e.id))}),A(B,{children:[v?.where,`. The key is a placeholder — paste your own over it. Or run`,` `,A(d,{children:[`omni setup `,t]}),` to write these files directly.`]}),t===`claude`?A(B,{children:[`Claude Code cannot read a window from this gateway, so it assumes 200k for a pool id it does not recognise and auto-compacts there. For a pool whose models hold 1M, append`,` `,k(d,{children:`[1m]`}),` to the model name — `,k(d,{children:`--model 'pool[1m]'`}),` — which lifts it per invocation. The suffix is stripped before the request is sent, so the pool id arrives unchanged.`]}):null,(a.data?.length??0)>0?k(ae,{children:oe.map(e=>k(w,{label:e.label,children:n=>A(S,{...n,value:s[e.key]??``,onChange:n=>i(r=>({...r,[t]:{...r[t],[e.key]:n.target.value||void 0}})),children:[k(`option`,{value:``,children:e.required?`Choose a pool`:`Not mapped`}),a.data?.map(e=>k(`option`,{value:e.id,children:e.id},e.id))]})},e.key))}):null,a.isLoading?k(g,{rows:2}):_.isError?k(m,{error:_.error,onRetry:()=>void _.refetch()}):_.isLoading?k(g,{rows:4}):(a.data?.length??0)===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):u===void 0?A(B,{children:[`Choose a default model to generate `,v?.label,` settings.`]}):_.data===void 0||_.data.length===0?k(B,{children:`No virtual models configured yet, so there is nothing to point a client at.`}):_.data.map(e=>A(`div`,{children:[k(ie,{children:e.path}),k(re,{as:`pre`,children:e.contents.trimEnd()})]},e.path)),_.isError?k(B,{children:f(_.error)}):null]})})}var H={off:`Off`,lite:`Lite — names the lazier option`,full:`Full — the ladder enforced`,ultra:`Ultra — challenges the requirement`},U=[{id:`tier`,label:`Tier`,blurb:`Prefers a lower tier.`},{id:`health`,label:`Health`,blurb:`Penalises recent failures and an open breaker.`},{id:`quota`,label:`Quota`,blurb:`Prefers accounts ahead of their window's burn rate.`},{id:`cost`,label:`Cost`,blurb:`Prefers the cheaper candidate.`},{id:`latency`,label:`Latency`,blurb:`Prefers the faster observed first token.`},{id:`load`,label:`Load`,blurb:`Prefers accounts with fewer requests in flight.`}],W=[{id:`maxAttempts`,label:`Attempts per request`,hint:`Candidates dispatch may try. 1 disables failover.`,unit:`attempts`,step:1,min:1},{id:`requestDeadlineMs`,label:`Request deadline`,hint:`Across all attempts. 0 disables only OmniGateway's deadline.`,unit:`ms`,step:1e3,min:0},{id:`breakerThreshold`,label:`Breaker threshold`,hint:`Consecutive failures before an account and model leaves rotation.`,unit:`failures`,step:1,min:1},{id:`breakerCooldownMs`,label:`Breaker cooldown`,hint:`Wait before a tripped account is probed. Doubles per extra failure.`,unit:`ms`,step:1e3,min:1},{id:`logRetentionDays`,label:`Log retention`,hint:`How long request rows are kept before pruning.`,unit:`days`,step:1,min:1},{id:`bodyRetentionDays`,label:`Body retention`,hint:`Captured bodies only. Never longer than log retention; swept hourly.`,unit:`days`,step:1,min:1,max:3650},{id:`quotaPollIntervalMs`,label:`Quota poll interval`,hint:`How often a provider is asked for remaining quota. 0 disables. Needs a restart.`,unit:`ms`,step:6e4,min:0}],G=j.div`
|
|
38
38
|
display: grid;
|
|
39
39
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
40
40
|
gap: ${({theme:e})=>e.space(3)};
|
|
@@ -85,4 +85,4 @@ import{J as e,Jt as t,Qt as n,Ut as r,X as i,Z as a,kt as o,qt as s}from"./Lamp-
|
|
|
85
85
|
code {
|
|
86
86
|
font-family: ${({theme:e})=>e.font.mono};
|
|
87
87
|
}
|
|
88
|
-
`;function de(e){let t={};for(let n of U)t[`w.${n.id}`]=String(e.weights[n.id]);for(let n of W)t[n.id]=String(e[n.id]);return t.rtkEnabled=String(e.rtkEnabled),t.autoCacheEnabled=String(e.autoCacheEnabled),t.ponytailMode=e.ponytailMode,t.bodyLoggingEnabled=String(e.bodyLoggingEnabled),t.bodyLoggingCaptureStreamChunks=String(e.bodyLoggingCaptureStreamChunks),t}function fe(e){let t={};for(let n of U){let r=(e[`w.${n.id}`]??``).trim(),i=Number(r);if(r.length===0||!Number.isFinite(i))return{ok:!1,problem:`${n.label} must be a number.`};t[n.id]=i}let n={};for(let t of W){let r=(e[t.id]??``).trim(),i=Number(r);if(r.length===0||!Number.isInteger(i)||i<t.min)return{ok:!1,problem:`${t.label} must be a whole number of ${t.min} or more.`};n[t.id]=i}return n.maxAttempts>10?{ok:!1,problem:`Attempts per request cannot exceed 10.`}:{ok:!0,settings:{weights:t,...n,rtkEnabled:e.rtkEnabled===`true`,autoCacheEnabled:e.autoCacheEnabled===`true`,ponytailMode:e.ponytailMode!==void 0&&Object.hasOwn(H,e.ponytailMode)?e.ponytailMode:`off`,bodyLoggingEnabled:e.bodyLoggingEnabled===`true`,bodyLoggingCaptureStreamChunks:e.bodyLoggingCaptureStreamChunks===`true`}}}function pe(){let e=t(),n=i(),a=r(),[o,s]=O({}),[u,x]=O(null),[E,D]=O(!1);ee(()=>{e.data!==void 0&&s(de(e.data))},[e.data]);let j=Math.max(1e-4,...U.map(e=>Math.abs(Number(o[`w.${e.id}`])||0)));return A(te,{children:[k(b,{legend:`Settings`,title:`Routing and retention`,summary:`Applied to every request the gateway routes. Changes take effect on the next request; nothing restarts.`,actions:k(p,{type:`button`,$variant:`primary`,disabled:a.isPending||e.isLoading,onClick:()=>{D(!1);let e=fe(o);if(!e.ok){x(e.problem);return}x(null),a.mutate(e.settings,{onSuccess:()=>D(!0),onError:e=>x(f(e))})},children:a.isPending?`Saving…`:`Save changes`})}),e.isError?k(h,{legend:`Settings`,children:k(m,{error:e.error,onRetry:()=>void e.refetch()})}):e.isLoading?k(h,{legend:`Settings`,children:k(g,{rows:6})}):A(l,{$gap:4,children:[k(h,{legend:`Scoring weights`,meta:`relative to each other`,footer:A(c,{children:[k(y,{children:`Score is the sum of each term times its weight, then multiplied by the account and target weights.`}),k(v,{})]}),children:k(G,{children:U.map(e=>{let t=Number(o[`w.${e.id}`])||0;return A(K,{children:[k(w,{label:e.label,children:t=>k(C,{...t,type:`number`,step:.5,value:o[`w.${e.id}`]??``,onChange:t=>s({...o,[`w.${e.id}`]:t.target.value})})}),k(T,{fraction:Math.abs(t)/j,height:4,tone:`var(--accent)`,label:`${e.label} weight ${t}`}),k(q,{children:e.blurb})]},e.id)})})}),k(h,{legend:`Limits`,children:k(G,{children:W.map(e=>k(K,{children:k(w,{label:e.label,hint:e.hint,children:t=>A(c,{$gap:2,children:[k(C,{...t,type:`number`,min:e.min,step:e.step,value:o[e.id]??``,onChange:t=>s({...o,[e.id]:t.target.value})}),k(y,{children:e.unit})]})})},e.id))})}),A(_,{$min:`380px`,$stretch:!0,children:[k(h,{legend:`Request handling`,meta:`applied before dispatch`,children:A(J,{children:[k(Q,{label:`Enable RTK compression`,checked:o.rtkEnabled===`true`,onCheckedChange:e=>s({...o,rtkEnabled:String(e)}),children:`Compresses recognized historical tool results. Confirmed non-shell tools are excluded; unknown-origin results may be compressed only when a detector recognizes shell output. Lossy.`}),k(Q,{label:`Add a cache breakpoint when a client sends none`,checked:o.autoCacheEnabled===`true`,onCheckedChange:e=>s({...o,autoCacheEnabled:String(e)}),children:`Marks the end of the system prompt on Anthropic requests carrying no breakpoint of their own. Requests that mark one are untouched.`}),k(ce,{label:`Lazy senior dev mode`,blurb:`Appends the ponytail ruleset, about 1,240 tokens, to every system prompt. A request already carrying it is left alone.`,children:e=>k(S,{...e,value:o.ponytailMode??`off`,onChange:e=>s({...o,ponytailMode:e.target.value}),children:Object.entries(H).map(([e,t])=>k(`option`,{value:e,children:t},e))})})]})}),k(h,{legend:`Request and response bodies`,meta:n.data===!0?`permitted by the environment`:`not permitted`,children:A(l,{$gap:2,children:[n.data===!0?null:A(ue,{children:[`This gateway started without `,k(`code`,{children:`OMNI_BODY_LOGGING_ALLOWED`}),`, so nothing below can record anything. Set it in the installation's `,k(`code`,{children:`.env`}),` and restart first.`]}),A(J,{children:[k(Q,{label:`Capture request and response bodies`,checked:o.bodyLoggingEnabled===`true`,disabled:n.data!==!0,onCheckedChange:e=>s({...o,bodyLoggingEnabled:String(e)}),children:`Stores what each client sent and each provider returned, encrypted beside the database. Tokens and keys are masked; headers are never captured. Expires on the
|
|
88
|
+
`;function de(e){let t={};for(let n of U)t[`w.${n.id}`]=String(e.weights[n.id]);for(let n of W)t[n.id]=String(e[n.id]);return t.rtkEnabled=String(e.rtkEnabled),t.autoCacheEnabled=String(e.autoCacheEnabled),t.ponytailMode=e.ponytailMode,t.bodyLoggingEnabled=String(e.bodyLoggingEnabled),t.bodyLoggingCaptureStreamChunks=String(e.bodyLoggingCaptureStreamChunks),t}function fe(e){let t={};for(let n of U){let r=(e[`w.${n.id}`]??``).trim(),i=Number(r);if(r.length===0||!Number.isFinite(i))return{ok:!1,problem:`${n.label} must be a number.`};t[n.id]=i}let n={};for(let t of W){let r=(e[t.id]??``).trim(),i=Number(r);if(r.length===0||!Number.isInteger(i)||i<t.min)return{ok:!1,problem:`${t.label} must be a whole number of ${t.min} or more.`};if(t.max!==void 0&&i>t.max)return{ok:!1,problem:`${t.label} cannot exceed ${t.max}.`};n[t.id]=i}return n.maxAttempts>10?{ok:!1,problem:`Attempts per request cannot exceed 10.`}:{ok:!0,settings:{weights:t,...n,rtkEnabled:e.rtkEnabled===`true`,autoCacheEnabled:e.autoCacheEnabled===`true`,ponytailMode:e.ponytailMode!==void 0&&Object.hasOwn(H,e.ponytailMode)?e.ponytailMode:`off`,bodyLoggingEnabled:e.bodyLoggingEnabled===`true`,bodyLoggingCaptureStreamChunks:e.bodyLoggingCaptureStreamChunks===`true`}}}function pe(){let e=t(),n=i(),a=r(),[o,s]=O({}),[u,x]=O(null),[E,D]=O(!1);ee(()=>{e.data!==void 0&&s(de(e.data))},[e.data]);let j=Math.max(1e-4,...U.map(e=>Math.abs(Number(o[`w.${e.id}`])||0)));return A(te,{children:[k(b,{legend:`Settings`,title:`Routing and retention`,summary:`Applied to every request the gateway routes. Changes take effect on the next request; nothing restarts.`,actions:k(p,{type:`button`,$variant:`primary`,disabled:a.isPending||e.isLoading,onClick:()=>{D(!1);let e=fe(o);if(!e.ok){x(e.problem);return}x(null),a.mutate(e.settings,{onSuccess:()=>D(!0),onError:e=>x(f(e))})},children:a.isPending?`Saving…`:`Save changes`})}),e.isError?k(h,{legend:`Settings`,children:k(m,{error:e.error,onRetry:()=>void e.refetch()})}):e.isLoading?k(h,{legend:`Settings`,children:k(g,{rows:6})}):A(l,{$gap:4,children:[k(h,{legend:`Scoring weights`,meta:`relative to each other`,footer:A(c,{children:[k(y,{children:`Score is the sum of each term times its weight, then multiplied by the account and target weights.`}),k(v,{})]}),children:k(G,{children:U.map(e=>{let t=Number(o[`w.${e.id}`])||0;return A(K,{children:[k(w,{label:e.label,children:t=>k(C,{...t,type:`number`,step:.5,value:o[`w.${e.id}`]??``,onChange:t=>s({...o,[`w.${e.id}`]:t.target.value})})}),k(T,{fraction:Math.abs(t)/j,height:4,tone:`var(--accent)`,label:`${e.label} weight ${t}`}),k(q,{children:e.blurb})]},e.id)})})}),k(h,{legend:`Limits`,children:k(G,{children:W.map(e=>k(K,{children:k(w,{label:e.label,hint:e.hint,children:t=>A(c,{$gap:2,children:[k(C,{...t,type:`number`,min:e.min,max:e.max,step:e.step,value:o[e.id]??``,onChange:t=>s({...o,[e.id]:t.target.value})}),k(y,{children:e.unit})]})})},e.id))})}),A(_,{$min:`380px`,$stretch:!0,children:[k(h,{legend:`Request handling`,meta:`applied before dispatch`,children:A(J,{children:[k(Q,{label:`Enable RTK compression`,checked:o.rtkEnabled===`true`,onCheckedChange:e=>s({...o,rtkEnabled:String(e)}),children:`Compresses recognized historical tool results. Confirmed non-shell tools are excluded; unknown-origin results may be compressed only when a detector recognizes shell output. Lossy.`}),k(Q,{label:`Add a cache breakpoint when a client sends none`,checked:o.autoCacheEnabled===`true`,onCheckedChange:e=>s({...o,autoCacheEnabled:String(e)}),children:`Marks the end of the system prompt on Anthropic requests carrying no breakpoint of their own. Requests that mark one are untouched.`}),k(ce,{label:`Lazy senior dev mode`,blurb:`Appends the ponytail ruleset, about 1,240 tokens, to every system prompt. A request already carrying it is left alone.`,children:e=>k(S,{...e,value:o.ponytailMode??`off`,onChange:e=>s({...o,ponytailMode:e.target.value}),children:Object.entries(H).map(([e,t])=>k(`option`,{value:e,children:t},e))})})]})}),k(h,{legend:`Request and response bodies`,meta:n.data===!0?`permitted by the environment`:`not permitted`,children:A(l,{$gap:2,children:[n.data===!0?null:A(ue,{children:[`This gateway started without `,k(`code`,{children:`OMNI_BODY_LOGGING_ALLOWED`}),`, so nothing below can record anything. Set it in the installation's `,k(`code`,{children:`.env`}),` and restart first.`]}),A(J,{children:[k(Q,{label:`Capture request and response bodies`,checked:o.bodyLoggingEnabled===`true`,disabled:n.data!==!0,onCheckedChange:e=>s({...o,bodyLoggingEnabled:String(e)}),children:`Stores what each client sent and each provider returned, encrypted beside the database. Tokens and keys are masked; headers are never captured. Expires on the body retention window above, never later than the request log.`}),k(Q,{label:`Also keep raw stream frames`,checked:o.bodyLoggingCaptureStreamChunks===`true`,disabled:n.data!==!0||o.bodyLoggingEnabled!==`true`,onCheckedChange:e=>s({...o,bodyLoggingCaptureStreamChunks:String(e)}),children:`Also keeps the raw SSE frames of each attempt. The most expensive thing capture stores.`})]})]})})]}),u===null?null:k(le,{role:`alert`,children:u}),E&&u===null?k($,{role:`status`,children:`Settings saved.`}):null,A(_,{$min:`380px`,$stretch:!0,children:[k(V,{}),k(ne,{})]}),k(h,{legend:`Known limits`,children:A(l,{$gap:2,children:[A(c,{$gap:2,$align:`start`,children:[k(d,{$dim:!0,children:`rate limits`}),k(q,{children:`Counted per gateway process and reset when it restarts. Not shared across instances.`})]}),A(c,{$gap:2,$align:`start`,children:[k(d,{$dim:!0,children:`logs`}),k(q,{children:`Request rows record routing and token counts only. Prompts and responses only when body capture is on, to a separate encrypted store. Credentials to neither.`})]})]})})]})]})}var me=pe;export{me as component};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{_ as e,i as t,y as n}from"./shared-DDpLUhCp.js";import{$ as r,$t as i,F as a,I as o,K as ee,L as s,V as te,W as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-Dk9XrTCg.js";import{A as m,C as h,S as g,T as _,b as v,k as y,o as le,r as ue,s as de,x as b,y as x}from"./Panel-CsovmtxF.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CDUOJkS2.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-i3TtCB9m.js";import{t as C}from"./chevron-down-Bb5ZGvwk.js";import{t as w}from"./chevron-right-hwF5mD6-.js";import{i as T,r as E}from"./index-
|
|
1
|
+
import{_ as e,i as t,y as n}from"./shared-DDpLUhCp.js";import{$ as r,$t as i,F as a,I as o,K as ee,L as s,V as te,W as ne,at as re,et as ie,g as c,it as ae,j as l,l as oe,nt as u,ot as d,r as f,rt as se,tt as p,u as ce}from"./Lamp-Dk9XrTCg.js";import{A as m,C as h,S as g,T as _,b as v,k as y,o as le,r as ue,s as de,x as b,y as x}from"./Panel-CsovmtxF.js";import{D as fe,i as pe,t as me,x as S}from"./Rack-CDUOJkS2.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./RequestTable-i3TtCB9m.js";import{t as C}from"./chevron-down-Bb5ZGvwk.js";import{t as w}from"./chevron-right-hwF5mD6-.js";import{i as T,r as E}from"./index-BYDVTknB.js";import{i as be}from"./Field-DG1317zr.js";import{t as D}from"./Meter-stpt3vQu.js";import{i as O,n as k,r as A,t as j}from"./Table-CVDZ69Zx.js";import{n as xe,r as M}from"./WindowChart-Bqbl-KFO.js";import{i as N,n as P,r as Se,t as Ce}from"./SummaryDeck-DrzTQQo5.js";import{Fragment as we,useMemo as F,useState as I}from"react";import{Fragment as Te,jsx as L,jsxs as R}from"react/jsx-runtime";import z from"styled-components";var B=z.div`
|
|
2
2
|
display: grid;
|
|
3
3
|
grid-template-areas:
|
|
4
4
|
"chassis"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-CSru2YTE.js","assets/Panel-CsovmtxF.js","assets/client-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_app-CSru2YTE.js","assets/Panel-CsovmtxF.js","assets/client-DEALADtD.js","assets/shared-DDpLUhCp.js","assets/Lamp-Dk9XrTCg.js","assets/Rack-CDUOJkS2.js","assets/RequestTable-i3TtCB9m.js","assets/TokenBreakdown-BC6nqo1v.js","assets/chevron-right-hwF5mD6-.js","assets/dist-BBGxva0Y.js","assets/Chip-D0XSbQUr.js","assets/Field-DG1317zr.js","assets/Table-CVDZ69Zx.js","assets/chevron-down-Bb5ZGvwk.js","assets/Meter-stpt3vQu.js","assets/WindowChart-Bqbl-KFO.js","assets/SummaryDeck-DrzTQQo5.js","assets/Readout-DlT5oxGO.js","assets/login-BhkdR1f4.js","assets/reasons-Du1OBWAM.js","assets/_app.index-BV1kJJjA.js","assets/_app.accounts-2syjcpos.js","assets/CopyValue-DAlmkISB.js","assets/plus-BgcHxxIr.js","assets/rotate-ccw-Do43Argv.js","assets/trash-00950_yY.js","assets/Toggle-CdMD58sy.js","assets/_app.console-facio1_r.js","assets/_app.database-CqSoTi2l.js","assets/_app.keys-Dq5O0AG9.js","assets/_app.logs-PjRK5wqy.js","assets/_app.models-BfmeeB5e.js","assets/_app.settings-CdSQyweb.js","assets/_app.usage--5qFtU1W.js","assets/_app.plugins._pluginId-cCDDM_D_.js","assets/preload-helper-B7KDmXJ9.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{An as e,Cn as t,Dn as n,En as r,Fn as i,H as a,In as o,K as s,Mt as c,Nn as l,On as u,Pn as d,Rn as f,Tn as p,W as m,_n as h,an as g,bn as _,cn as v,dn as y,fn as b,gn as x,hn as S,jn as C,kn as w,ln as T,mn as E,sn as D,un as ee,vn as te,wn as ne,xn as re,yn as ie}from"./Lamp-Dk9XrTCg.js";import{a as ae,c as oe,i as se,n as O,o as ce,r as k,s as le,t as A}from"./preload-helper-B7KDmXJ9.js";import{M as ue,T as de,d as fe,j,k as pe,l as me,r as he,s as ge,y as _e}from"./Panel-CsovmtxF.js";import{C as ve,E as ye,T as be,n as xe}from"./Rack-CDUOJkS2.js";import{MutationCache as Se,QueryCache as Ce,QueryClient as we,QueryClientProvider as Te,useQueryClient as Ee}from"@tanstack/react-query";import*as M from"react";import{StrictMode as De,createContext as Oe,use as ke,useEffect as N,useRef as Ae,useState as je,useSyncExternalStore as Me}from"react";import{Fragment as Ne,jsx as P,jsxs as F}from"react/jsx-runtime";import{createRoot as Pe}from"react-dom/client";import Fe from"styled-components";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function I(e){return e?.isNotFound===!0}function Ie(){try{return sessionStorage}catch{return}}var Le=`tsr-scroll-restoration-v1_3`,Re=Ie();function ze(){try{return JSON.parse(Re?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function Be(){try{Re?.setItem(Le,JSON.stringify(L))}catch{}}var L=ze(),Ve=`data-scroll-restoration-id`,He=e=>e.state.__TSR_key||e.href;function Ue(e){let t=e.getAttribute(Ve);if(t)return`[${Ve}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var We=!1,Ge=`window`;function Ke(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function qe(e){let t=new Set;for(let n of e){if(n===Ge)continue;let e=Ke(n);e&&t.add(e)}return t}function Je(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||He,a=new Set,o=e=>{let t=L[e]||={};for(let e of a)e===document?t[Ge]={scrollX,scrollY}:e.isConnected&&(t[Ue(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,We=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{We||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),Be()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=L[d];if(e){let t=L[u];for(let n in e){if(n===Ge){if(s)continue}else{let e=Ke(n);if(!e||s&&o&&(l??=qe(o),l.has(e)))continue}t||=L[u]={},t[n]??=e[n]}}}We=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=qe(o));let t=e&&i&&c,s=r.restoring?L[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===Ge){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=Ke(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{We=!1}}))}function Ye(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function Xe(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function Ze(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=Xe(r):Array.isArray(t)?t.push(Xe(r)):n[e]=[t,Xe(r)]}return n}var Qe=/^(?:\s|["[{\d-]|fa|nu|tr)/,$e=tt(JSON.parse),et=nt(JSON.stringify,JSON.parse);function tt(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=Ze(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!Qe.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function nt(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!Qe.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=Ye(e,r);return t?`?${t}`:``}}function rt(e){return{input:({url:t})=>{for(let n of e)t=at(n,t);return t},output:({url:t})=>{for(let n=e.length-1;n>=0;n--)t=ot(e[n],t);return t}}}function it(e){let t=b(e.basepath),n=`/${t}`,r=e.caseSensitive?n:n.toLowerCase(),i=`${r}/`;return{input:({url:t})=>{let a=e.caseSensitive?t.pathname:t.pathname.toLowerCase();return a===r?t.pathname=`/`:a.startsWith(i)&&(t.pathname=t.pathname.slice(n.length)),t},output:({url:e})=>(e.pathname=ee([`/`,t,e.pathname]),e)}}function at(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function ot(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function st(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{ne(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var R=`__TSR_index`,ct=`popstate`,lt=`beforeunload`,ut=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function dt(e){let t=ut.exec(e);return t?`/`+e.slice(t[0].length):e}function ft(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>`
|
|
3
3
|
\r`.includes(e)?``:encodeURIComponent(e))),dt(e)}function pt(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=gt(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[R];i=mt(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[R];i=mt(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[R]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function mt(e,t){t||={};let n=_t();return{...t,key:n,__TSR_key:n,[R]:e}}function ht(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>ft(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>gt(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=_t();t.history.replaceState({[R]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=gt(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[R]-l.state[R],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=pt({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(lt,x,{capture:!0}),t.removeEventListener(ct,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(lt,x,{capture:!0}),t.addEventListener(ct,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function gt(e,t){let n=ft(e),r=n.indexOf(`#`),i=n.indexOf(`?`),a=_t();return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t||{[R]:0,key:a,__TSR_key:a}}}function _t(){return(Math.random()+1).toString(36).substring(7)}function vt(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function yt(e){return e.pathname+e.search+e.hash}function bt(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function xt(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function St({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function Ct(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function wt(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var Tt=class{constructor(a,s){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.routeBranchCache=new WeakMap,this.lightweightCache=new WeakMap,this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options,n=this.basepath??t?.basepath??`/`,r=this.basepath===void 0,i=t?.rewrite;if(this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=v(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:ht()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`,this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;this.resolvePathCache=re(1e3),e=this.buildRouteTree(),this.setRoutes(e)}if(!this.stores&&this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=st(this.latestLocation,e),Je(this)}let a=this.options.basepath??`/`,o=this.options.rewrite;if(r||n!==a||i!==o){this.basepath=a;let e=[],t=b(a);t&&t!==`/`&&e.push(it({basepath:a})),o&&e.push(o),this.rewrite=e.length===0?void 0:e.length===1?e[0]:rt(e),this.history&&this.updateLatestLocation(),this.stores&&this.stores.location.set(this.latestLocation)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=_(this.routeTree,this.options.caseSensitive,(e,t)=>{e.init({originalIndex:t})});return this.options.routeMasks&&ie(this.options.routeMasks,e.processedTree),e},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i,state:a})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),s=this.options.stringifySearch(i);return{href:e+s+r,publicHref:e+s+r,pathname:p(e),external:!1,searchStr:s,search:d(t?.search,i),hash:p(r.slice(1)),state:o(t?.state,a)}}let s=new URL(i,this.origin),c=at(this.rewrite,s),l=this.options.parseSearch(c.search),u=this.options.stringifySearch(l);return c.search=u,{href:c.href.replace(c.origin,``),publicHref:i,pathname:p(dt(c.pathname)),external:!!this.rewrite&&vt(c,this.origin),searchStr:u,search:d(t?.search,l),hash:p(c.hash.slice(1)),state:o(t?.state,a)}},r=n(e),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i);return e.state.key=r.state.key,e.state.__TSR_key=r.state.__TSR_key,delete e.state.__tempLocation,{...e,maskedLocation:r}}return r},this.resolvePathWithBase=(e,t)=>y({base:e,to:t,trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=h(E(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=t=>{let r=(r={})=>{if(r.href){let e=gt(r.href,{});r={...r,to:at(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let i=r._fromLocation||this._pendingLocation||this.latestLocation,a=this.matchRoutesLightweight(i),s=r.unsafeRelative===`path`?i.pathname:r.from??a[1],c=a[2],l=a[3],f=this.resolvePathWithBase(s,r.to?`${r.to}`:`.`),m=Mt(r.params,l),h=this.routesByPath[E(f)],g;if(h)g=this.getRouteBranch(h);else if(f.includes(`$`))g=[];else{let[e,t,n]=this.getMatchedRoutes(f);g=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(g=[...g,this.options.notFoundRoute])}if(g.length&&e(m))for(let e of g){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){m===l&&(m=Object.assign(Object.create(null),m));try{Object.assign(m,t(m))}catch{}}}let _=t.leaveParams?f:p(dt(T({path:f,params:m,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath)),v=c;if(t._includeValidateSearch&&this.options.search?.strict){let e={};g.forEach(t=>{if(t.options.validateSearch)try{Object.assign(e,kt(t.options.validateSearch,{...e,...v}))}catch{}}),v=e}v=At(v,r,g,t._includeValidateSearch),v=d(c,v);let y=this.options.stringifySearch(v),b=r.hash===!0?i.hash:r.hash?u(r.hash,i.hash):void 0,x=b?`#${b}`:``,S=r.state===!0?i.state:r.state?u(r.state,i.state):{};r.state&&(S=o(i.state,S));let C=`${_}${y}${x}`,w,D,ee=!1;if(this.rewrite){let e=new URL(C,this.origin),t=e.origin,n=ot(this.rewrite,e);w=yt(e),vt(n,t)?(D=n.href,ee=!0):D=dt(yt(n))}else w=n(C),D=w;return{publicHref:D,href:w,pathname:_,search:v,searchStr:y,state:S,hash:b??``,external:ee,unmaskOnReload:r.unmaskOnReload}},i=r(t);if(t.mask)i.maskedLocation=r({from:t.from,...t.mask});else if(this.options.routeMasks){let e=x(i.pathname,this.processedTree);if(e){let n=Object.assign(Object.create(null),e.rawParams),{from:a,params:o,...s}=e.route,c=Mt(o,n);i.maskedLocation=r({from:t.from,...s,params:c})}}return i},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let i=n.maskedLocation??n;if(i.external)return Et(this,i.publicHref,{replace:n.replace,ignoreBlocker:t});let a,o=E(this.latestLocation.href)===E(n.href)&&r(St(n.state),St(this.latestLocation.state)),s=this._commitPromise,c,l=new Promise(e=>{c=e});if(l.resolve=()=>{c(),s?.resolve()},this._commitPromise=l,o)this.load();else{let{maskedLocation:r,hashScrollIntoView:i,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state.__hashScrollIntoViewOptions=i??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,a=n.replace?`REPLACE`:`PUSH`,this.history[a===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:a}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?w(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return Et(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await pn(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(xt(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set([...t,...this._cache.values(),...[...r?.values()??[]].flat(),...this._tx?.[3]??[]].filter(e=>!n||n(e)).map(e=>e.id)),a=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),a.push(e));let o=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&bt(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(o);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of a)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(i.test(n)||(r=w(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:vt(e,this.origin)||(n=yt(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=z,this.preloadRoute=e=>mn(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?this.resolvePathWithBase(e.from||``,e.to):void 0,params:e.params||{},leaveParams:!0},i=this.buildLocation(n),a=this.stores.status.get()===`pending`;if(t?.pending&&!a)return!1;let o=t?.pending??!a?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),s=te(i.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,o.pathname,this.processedTree);return!s||e.params&&!r(s.rawParams,e.params,{partial:!0})?!1:t?.includeSearch??!0?r(o.search,i.search,{partial:!0})?s.rawParams:!1:s.rawParams},this.getStoreConfig=s,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...a,caseSensitive:a.caseSensitive??!1,notFoundMode:a.notFoundMode??`fuzzy`,stringifySearch:a.stringifySearch??et,parseSearch:a.parseSearch??$e,protocolAllowlist:a.protocolAllowlist??t}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes({routesById:e,routesByPath:t,processedTree:n}){this.routesById=e,this.routesByPath=t,this.processedTree=n;let r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}getRouteBranch(e){let t=this.routeBranchCache.get(e);return t||(t=S(e),this.routeBranchCache.set(e,t)),t}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,s=!1;(i?i.path!==`/`&&r[`**`]:E(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:s=!0);let c=s?jt(this.options.notFoundMode,a):void 0,l=Array(a.length),u=this._committed,f=(e,t)=>{let n=u[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?u.find(t=>t.routeId===e.id):void 0},p;for(let n=0;n<a.length;n++){let i=a[n],s=l[n-1],u,m,h;{let n=s?.search??e.search,r=s?._strictSearch??void 0;try{let e=kt(i.options.validateSearch,{...n})??void 0;u={...n,...e},m={...r,...e}}catch(e){let r=e;if(e instanceof Dt||(r=new Dt(e.message,{cause:e})),t?.throwOnError)throw r;u=n,m={},h=r}}let g=``,_=``;try{g=i.options.loaderDeps?.({search:u})??``,_=g&&JSON.stringify(g)||``}catch(e){if(t?.throwOnError)throw e;h??=e}let{interpolatedPath:v,usedParams:y}=T({path:i.fullPath,params:r,decoder:this.pathParamsDecoder,server:this.isServer}),b=i.id+v+_,x=f(i,n),S=this._cache.get(b)??(x?.id===b?x:void 0);p=S?._strictParams??Object.assign(y,p);let C;if(!S)try{Nt(i,p)}catch(e){if(C=I(e)||ce(e)?e:new Ot(e.message,{cause:e}),t?.throwOnError)throw C}let w=x?`stay`:`enter`,E;if(S)E={...S,cause:w,search:d(x?x.search:S.search,u),_strictSearch:m,searchError:h};else{let e=bt(i)?`pending`:`success`;E={id:b,ssr:i.options.ssr,index:n,routeId:i.id,params:x?.params??p,_strictParams:p,pathname:v,updatedAt:Date.now(),search:x?d(x.search,u):u,_strictSearch:m,searchError:h,status:e,isFetching:!1,error:void 0,paramsError:C,context:{},abortController:t?._controller??new AbortController,cause:w,loaderDeps:x?o(x.loaderDeps,g):g,invalid:!1,preload:!1,staticData:i.options.staticData||{},fullPath:i.fullPath}}let D=c===i.id;E._notFound&&!D&&(E.error=void 0),E._notFound=D,l[n]=E}for(let e=0;e<l.length;e++){let n=l[e];n.params=n.cause===`stay`?d(n.params,p):p,t?._controller&&(n.context={})}return l}matchRoutesLightweight(e){let t=l(this.stores.ids.get()),n=t?this.stores.byRoute.get(t).get():void 0,r=n?.id,i=this.lightweightCache.get(e);if(i&&i[0]===r)return i[1];let[a,o]=this.getMatchedRoutes(e.pathname),s=l(a),c={...e.search};for(let e of a)try{Object.assign(c,kt(e.options.validateSearch,c))}catch{}let u=n&&n.routeId===s.id&&n.pathname===e.pathname,d;if(u)d=n.params;else{let e=Object.assign(Object.create(null),o);for(let t of a)try{Nt(t,e)}catch{}d=e}let f=[a,s.fullPath,c,d];return this.lightweightCache.set(e,[r,f]),f}};async function Et(e,t,{replace:n,ignoreBlocker:r}){if(!C(t,e.protocolAllowlist)){if(!r){let t=e.history._getBlockers();for(let r of t)if(r?.blockerFn&&await r.blockerFn({currentLocation:e.history.location,nextLocation:e.history.location,action:n?`REPLACE`:`PUSH`}))return}e.history._ignoreNextBeforeUnload?.(t),n?window.location.replace(t):window.location.href=t}}var Dt=class extends Error{},Ot=class extends Error{};function kt(e,t){if(e==null)return{};if(`~standard`in e){let n=e[`~standard`].validate(t);if(n instanceof Promise)throw new Dt(`Async validation not supported`);if(n.issues)throw new Dt(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return`parse`in e?e.parse(t):typeof e==`function`?e(t):{}}function At(e,t,n,r){let i=[];for(let e of n){let t=e.options;`search`in t?t.search?.middlewares&&i.push(...t.search.middlewares):(t.preSearchFilters||t.postSearchFilters)&&i.push(({search:e,next:n})=>{let r=n(t.preSearchFilters?t.preSearchFilters.reduce((e,t)=>t(e),e):e);return t.postSearchFilters?t.postSearchFilters.reduce((e,t)=>t(e),r):r});let n=t.validateSearch;r&&n&&i.push(({search:e,next:t,meta:r})=>{let i=t(e);try{let e=kt(n,i);if(r&&e)for(let t in e)t in i||(r.defaulted||=new Map).set(t,e[t]);return{...i,...e}}catch{}return i})}let a=(e,n,r)=>{if(e>=i.length){if(!t.search)return{};if(t.search===!0)return n;let e=u(t.search,n);return r&&(r.explicit=e),e}return i[e]({search:n,next:(t,n)=>{if(n){let n=r||{};return{search:a(e+1,t,n),meta:n}}return a(e+1,t,r)},meta:r})};return a(0,e)}function jt(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return oe}function Mt(e,t){if(e===!1||e===null)return Object.create(null);if((e??!0)===!0)return t;let n=Object.assign(Object.create(null),t);return Object.assign(n,u(e,n))}function Nt(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Pt(e,t){return e.options[t]?.preload?.()}function Ft(e,t){let n=Pt(e,`component`),r=Pt(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function z(e,t,n){let r=()=>t===!1?void 0:t?Pt(e,t):Ft(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function It(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t<e.length?e.slice(0,t):e}var B=0,V=1,Lt=2,H=3,U=[4];function W(e){return typeof e[0]==`number`}function G(e,t){return t.aborted?Promise.race([Promise.reject(t),e]):new Promise((n,r)=>{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function K(e,t){return e.routesById[t.routeId]}function Rt(e,t,n){return ce(e)?[H,e]:I(e)?(e.routeId||=n,[Lt,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[V,e]):[B,e]}function zt(e,t){let n=Rt(t,!0,e.id);if(n[0]!==V)return n;try{e.options.onError?.(n[1])}catch(t){n=Rt(t,!0,e.id)}return n}function Bt(e,t,n,r,i){return i[0].signal.aborted?U:$t(e,t,n,zt(n,r),i)}async function Vt(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;i<r;i++){let r=s[i],u=K(e,r);r.abortController=n[0];let d=s[i-1]?.context??e.options.context??{},f={params:r.params,location:o,navigate:t=>e.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return q(e,r),[i,Bt(e,t,u,a,n)]}if(c.aborted)return[i,U];let p=r.paramsError??r.searchError;if(p!==void 0)return q(e,r),[i,Bt(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Wt(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?G(a,c):a);if(c.aborted)return[i,U];let s=$t(e,t,u,Rt(o,!1,u.id),n);if(s[0]!==B)return q(e,r),[i,s];r.context={...r.context,...o}}catch(a){return q(e,r),[i,Bt(e,t,u,a,n)]}finally{r.status=h,Wt(e,r,!1,n[0])}}i()}function Ht(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function q(e,t){let n=t._flight;t._flight=void 0,Ht(e,t,n)?.abort()}function J(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=Ht(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Ut(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Wt(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Gt(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Kt(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return U;if(!i)return[B,void 0];let l=n._flight;Wt(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Gt(e,t,n,r,s,a,!!o[3]))).then(e=>Rt(e,!1,r.id),e=>Rt(e,!0,r.id)).then(t=>(t[0]!==B&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===V&&l[2]?zt(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],$t(e,t,r,await G(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return q(e,n),U}finally{Wt(e,n,!1,s)}}function qt(e,t,n){t[0]!==H&&(e.status=`success`,e.error=void 0,t[0]===B?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Jt(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&q(e,r)}function Yt(e,t){return t[0]===V||t[0]===Lt?{...e,status:t[0]===V?`error`:`notFound`,error:t[1],_flight:void 0}:e}function Xt(e,t,n,r,i,a,o){let s=t[1][n],c=K(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Gt(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=U)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,q(e,s),p=Bt(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,Ht(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Kt(e,t,s,c,g,i,a).then(t=>(qt(s,t,l),t[0]===B&&(m&&!a[0].signal.aborted&&Jt(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[B,s.loaderData]),T=(async()=>{try{let e=z(c,void 0,C);e&&await G(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Bt(e,t,c,r,a)]}let r=await w;x&&r[0]===B&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Yt(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=Kt(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,qt(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>Yt(E,e))}async function Zt(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=K(e,t[n]);try{let e=z(i,!1);e&&await G(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Y(e,t){t[2]&&=(J(e,t[2].map(e=>e[3])),void 0)}async function Qt(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=H)throw[a,t];!i&&t[0]!==B&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===H)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function $t(e,t,n,r,i,a){for(;r[0]===H;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[H,t]:[H,t,a]}return[H,o,n]}catch(e){r=a?[V,e]:zt(n,e),a=!0}}return r}async function en(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Lt?Zt(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=H)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==B&&t[0]<H&&!(`loaderData`in o[e[0]])){s=[e[0],t],d=s[2]=await u(s);break}}}for(let e of n){if(e[0]>=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=H){let n=s[1];if(n[0]!==H||n[1].options.reloadDocument||n[2])return Y(e,t),n;c=!0,s=[0,[V,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===V?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=K(e,u);try{await G(i?Promise.resolve().then(()=>z(m,l===V?`errorComponent`:`notFoundComponent`)):Promise.all([z(m),z(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Y(e,t),U}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Y(e,t),J(e,o),p()):u.status=`success`}return t}async function tn(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;t<i;t++){let r=a[t],i=K(e,r).options;if(i.head||i.scripts)try{let t={ssr:e.options.ssr,matches:a,match:r,params:r.params,loaderData:r.loaderData},[o,s]=await G(Promise.all([i.head?.(t),i.scripts?.(t)]),n);r.meta=o?.meta,r.links=o?.links,r.headScripts=o?.scripts,r.styles=o?.styles,r.scripts=s}catch(e){if(e===n&&n.aborted)break;console.error(e)}if(r.status!==`success`||r._notFound)break}return t}async function nn(e,t,n,r){let i=[t,n],a=r[0].signal,o;try{let t=e.stores.matches.get(),s=n.findIndex(e=>e._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Zt(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l<c&&l!==s;){let e=n[l],i=r[2][l],a=t[l];if(i?.id!==e.id||i.status!==`success`||e.preload||a?.id!==e.id||a.status!==`success`||(l++,i._notFound||a._notFound))break}let u=[],d=r[6]??0,f=d?Promise.resolve(n[d-1]):void 0,p=()=>{for(let t=d;t<c&&!a.aborted;t++)f=Xt(e,i,t,u,f,r,l)},m=await Vt(e,i,r,c,p,l);if(m){if(r[4]=!0,c=m[0],m[1][0]===Lt){let t=await Zt(e,n,m,a);m[2]=t,c=Math.min(c,t+1)}else m[1][0]>=H&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=en(e,i,u,r[0],Qt(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=Qt(i[2],void 0,void 0,h.then(e=>W(e)?0:It(n).length,()=>0))),o=await h}catch(t){if(Y(e,i),t===a&&a.aborted)return U;throw t}return W(o)?o:tn(e,o,a,r[6]===n.length?r[6]:0)}function rn(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a<n.length;a++){let o=n[a],s=o.status===`success`&&!o._notFound,c=r[a]?.id===o.id&&r[a]?.status===`pending`;if(s&&!c)continue;let l=K(e,o),u=s||o.invalid?0:l.options.pendingMs??e.options.defaultPendingMs,d=l.options.pendingComponent??e.options.defaultPendingComponent;if(!d||typeof u!=`number`||u===1/0){i&&(i[0]=t,i[2]=0,i[4]=!0);return}let f=l.options.pendingMinMs??e.options.defaultPendingMinMs??0,p=!1;if(i?.[1]===o.id?(p=i[0]!==t,i[0]=t):(clearTimeout(i?.[3]),e._pending=i=void 0),i||(e._pending=i=[t,o.id,c?Date.now()+f:t[4]+u,void 0,c||void 0,d]),i[4]&&!p&&i[5]===d)return;if(i[5]=d,!i[4]){clearTimeout(i[3]);let n=i[2]-Date.now();if(n>0){i[3]=setTimeout(()=>rn(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function an(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function on(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!It(t[3]).some(e=>e.id===n[1]))return;let i;try{await G(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function sn(e,t){e._committed=t,e.stores.setMatches(t)}function cn(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=It(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e<n.length;e++){let t=n[e];(e<s||t.status===`success`)&&r.add(t.id)}for(let n of[...i,...o.values()]){if(n.status!==`success`||r.has(n.id))continue;let i=K(e,n);!i.options.loader||t-n.updatedAt>=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=Ct(n);sn(e,n),J(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),wt(e,i,n,a,l,t)}async function ln(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function un(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function dn(e,t,n,r,i){let a=n.map(e=>({...e}));Ut(a);for(let t of r)q(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await en(e,o,r,t[0],i)}catch(t){throw J(e,a),t}if(W(s)){J(e,a),s[0]===H&&e._tx===t&&e._committed===n&&await un(e,t,s);return}if(await tn(e,s,t[0].signal),e._tx!==t||e._committed!==n){J(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),q(e,n))}sn(e,a),J(e,n,a)}async function fn(e,t,n,r,i,a){let o=await nn(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(W(o)){let n=o[0]===H&&e._tx===t;if((!n||o[1].options.reloadDocument)&&an(e,t),J(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){an(e,t);return}await un(e,t,o);return}let s=o[1];if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let c=t[2],l=xt(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await on(e,t),e._tx!==t){an(e,t),J(e,s),Y(e,o);return}let n=await e.startTransition(()=>{an(e,t),cn(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Y(e,o);return}u?.length&&dn(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function pn(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=xt(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await ln(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Ut(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){J(e,m),await ln(e,n);return}e._preflight=void 0;let g,_=()=>fn(e,y,f,()=>rn(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>ln(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Wt(e,t,!1)}n[0].abort(),J(e,n[3],y[3],!0)}if(e._tx!==y){J(e,y[3]),y[3]=[],g?.(),await ln(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&rn(e,y),g?.(_()),await y[5]}async function mn(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Ut(a),o=(e._preloads??=new Map).set(i,a),s=await nn(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),J(e,a)),i.abort()}if(!W(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){I(e)||console.error(e);return}}}var hn=class extends M.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?M.createElement(this.props.errorComponent??gn,{error:e[0],reset:this.reset}):this.props.children}};function gn({error:e}){let[t,n]=M.useState(!1);return F(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[F(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[P(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),P(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),P(`div`,{style:{height:`.25rem`}}),t?P(`div`,{children:P(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?P(`code`,{children:e.message}):null})}):null]})}var X=(e=>(e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e))(X||{});function _n({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function vn(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var yn=[],bn=0,{link:xn,unlink:Sn,propagate:Cn,checkDirty:wn,shallowPropagate:Tn}=_n({update(e){return e._update()},notify(e){yn[Dn++]=e,e.flags&=~X.Watching},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=X.Mutable|X.Dirty,An(e))}}),En=0,Dn=0,Z,On=0;function kn(e){try{++On,e()}finally{--On||jn()}}function An(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Sn(n,e)}function jn(){if(!(On>0)){for(;En<Dn;){let e=yn[En];yn[En++]=void 0,e.notify()}En=0,Dn=0}}function Mn(e,t){let n=typeof e==`function`,r=e,i={_snapshot:n?void 0:e,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:n?X.None:X.Mutable,get(){return Z!==void 0&&xn(i,Z,bn),i._snapshot},subscribe(e){let t=vn(e),n={current:!1},r=Nn(()=>{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Z,o=t?.compare??Object.is;if(n)Z=i,++bn,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=X.Mutable|X.RecursedCheck);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Z=a,n&&(i.flags&=~X.RecursedCheck),An(i)}}};return n?(i.flags=X.Mutable|X.Dirty,i.get=function(){let e=i.flags;if(e&X.Dirty||e&X.Pending&&wn(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Tn(e)}}else e&X.Pending&&(i.flags=e&~X.Pending);return Z!==void 0&&xn(i,Z,bn),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Cn(e),Tn(e),jn())}},i}function Nn(e){let t=()=>{let t=Z;Z=n,++bn,n.depsTail=void 0,n.flags=X.Watching|X.RecursedCheck;try{return e()}finally{Z=t,n.flags&=~X.RecursedCheck,An(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:X.Watching|X.RecursedCheck,notify(){let e=this.flags;e&X.Dirty||e&X.Pending&&wn(this.deps,this)?t():this.flags=X.Watching},stop(){this.flags=X.None,this.depsTail=void 0,An(this)}};return t(),n}function Pn(e){let t=j(),n=`not-found-${g(t.stores.location,e=>e.pathname)}-${g(t.stores.status,e=>e)}`;return P(hn,{getResetKey:()=>n,onCatch:(t,n)=>{if(I(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(I(t))return e.fallback?.(t);throw t},children:e.children})}function Fn(){return P(`p`,{children:`Not Found`})}function Q(e){return P(Ne,{children:e.children})}function In(e,t,n){return t.options.notFoundComponent?P(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?P(e.options.defaultNotFoundComponent,{...n}):P(Fn,{})}function Ln(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?P(n,{}):null}var Rn=(e,t)=>e[0]===t[0]&&e[1]===t[1],zn=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,Bn=M.memo(function({routeId:e}){let t=j();return P(Vn,{router:t,match:g(t.stores.getMatchStore(e),e=>e)})});function Vn({router:e,match:t}){let n=e.routesById[t.routeId],r=Ln(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=zn(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?M.Suspense:Q,l=i?hn:Q,u=o?Pn:Q;return F(n.isRoot?n.options.shellComponent??Q:Q,{children:[P(ae.Provider,{value:t.routeId,children:P(c,{fallback:r,children:P(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(I(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:P(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return M.createElement(o,e)},children:s?P(D,{fallback:r,children:P(Hn,{match:t})}):P(Hn,{match:t})})})})}),null]})}var Hn=M.memo(function({match:e}){let t=j(),n=e.routeId,r=t.routesById[n],i=M.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=M.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?P(e,{},i):P(Un,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!zn(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return Ln(t,r)}if(e.status===`notFound`)return In(t,r,e.error);if(e.status===`error`)throw e.error;return a}),Un=M.memo(function(){let e=j(),t=M.useContext(ae),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=g(a,e=>[!!e._notFound,e.error],Rn),i=g(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return In(e,e.routesById[t],r);if(!i)return null;let a=P(Bn,{routeId:i});return t===`__root__`?P(M.Suspense,{fallback:Ln(e),children:a}):a});function Wn(e,t){let n=e[1];e.length=0,n?.(t)}function Gn({t:e}){let t=j(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Wn(n,!1),n.push(i,a),e(t),M.startTransition(r)}),f(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(E(r.publicHref)!==E(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...xt(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function Kn(){let e=j(),t=e.routesById[oe],n=Ln(e,t),r=e.ssr?Q:M.Suspense,i=F(Ne,{children:[P(Gn,{t:M.useState()[1]}),P(r,{fallback:n,children:P(qn,{})})]});return e.options.InnerWrap?P(e.options.InnerWrap,{children:i}):i}function qn(){let e=j(),t=e._rendered,n=g(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;f(()=>{t[0]===n&&Wn(t,!0)},[t,n]);let a=i?P(Bn,{routeId:i}):null;return P(ae.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:P(hn,{getResetKey:()=>r,onCatch:void 0,children:a})})}var Jn=e=>({createMutableStore:Mn,createReadonlyStore:Mn,batch:kn}),Yn=e=>new Xn(e),Xn=class extends Tt{constructor(e){super(e,Jn)}};function Zn({router:t,children:n,...r}){e(r)&&t.update({...t.options,...r,context:{...t.options.context,...r.context}});let i=P(ue.Provider,{value:t,children:n});return t.options.Wrap?P(t.options.Wrap,{children:i}):i}function Qn({router:e,...t}){return P(Zn,{router:e,...t,children:P(Kn,{})})}var $n=Fe.div`
|
|
4
4
|
display: flex;
|
|
@@ -11,4 +11,4 @@ import{An as e,Cn as t,Dn as n,En as r,Fn as i,H as a,In as o,K as s,Mt as c,Nn
|
|
|
11
11
|
font-size: 13px;
|
|
12
12
|
color: ${({theme:e})=>e.color.inkDim};
|
|
13
13
|
max-width: 48ch;
|
|
14
|
-
`,tr=se()({component:Un,notFoundComponent:()=>P($n,{children:F(de,{$gap:3,style:{alignItems:`center`},children:[P(_e,{children:`Not found`}),P(er,{children:`This console has no screen at that address.`}),P(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&m(e.state.data)},"res:credentials":{queryKey:s.credentials},"res:keys":{queryKey:s.keys},"res:settings":{queryKey:s.settings},"res:models":{queryKey:s.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=Oe(null),xr=Oe(null),Sr=Oe(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=Ee(),[o]=je(()=>yr({client:a,timer:n,now:r,url:i})),[s]=je(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));N(()=>{if(t)return o.start()},[o,t]);let c=Me(o.subscribe,o.snapshot,o.snapshot);return P(br,{value:c,children:P(xr,{value:o.onStream,children:P(Sr,{value:s,children:e})})})}function Tr(){return ke(br)??Cr}function Er(e,t){let n=ke(xr),r=Ae(t);N(()=>{r.current=t}),N(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=ke(Sr),r=Ae(t);N(()=>{r.current=t}),N(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=ke(Sr);return P(ye,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:s.status,queryFn:()=>fe(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw le({to:`/login`,search:{next:t}});if(n!==`/`)throw le({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw le({to:`/login`,search:{next:t}});if(n!==`/client`)throw le({to:n})}var Nr=k(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(a)},pendingComponent:Pr,pendingMs:200,errorComponent:O(()=>A(()=>import(`./_app-CSru2YTE.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return P(he,{legend:`Console`,children:P(ge,{rows:6})})}function Fr(){let e=c().data??[];return P(wr,{children:F(Or,{children:[P(be,{$providers:e}),P(xe,{children:P(Un,{})})]})})}var Ir=k(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:O(()=>A(()=>import(`./client-
|
|
14
|
+
`,tr=se()({component:Un,notFoundComponent:()=>P($n,{children:F(de,{$gap:3,style:{alignItems:`center`},children:[P(_e,{children:`Not found`}),P(er,{children:`This console has no screen at that address.`}),P(pe,{as:`a`,href:`/`,$variant:`primary`,$size:`sm`,children:`Back to the rack`})]})})}),nr=`stream:console`,rr={"res:usage":{predicate:e=>e.queryKey[0]===`usage`||e.queryKey[0]===`client`&&(e.queryKey[1]===`usage`||e.queryKey[1]===`summary`)},"res:logs":{predicate:e=>e.queryKey[0]===`logs`&&e.queryKey[1]!==`body`||e.queryKey[0]===`client`&&e.queryKey[1]===`logs`||(e.queryKey[0]===`logPages`||e.queryKey[0]===`client`&&e.queryKey[1]===`logPages`)&&m(e.state.data)},"res:credentials":{queryKey:s.credentials},"res:keys":{queryKey:s.keys},"res:settings":{queryKey:s.settings},"res:models":{queryKey:s.models},"res:quota":{predicate:e=>e.queryKey[0]===`quota-history`||e.queryKey[0]===`credentials`&&e.queryKey[1]===`health`},[nr]:{queryKey:[`console`]}},ir=Object.keys(rr),ar=ir.filter(e=>e.startsWith(`res:`)),or=ir.filter(e=>e.startsWith(`stream:`));function sr(e,t){if(t===`res:*`){lr(e);return}let n=rr[t];n!==void 0&&e.invalidateQueries(n)}function cr(e){for(let t of ir)sr(e,t)}function lr(e){e.invalidateQueries()}var ur=4401,dr=500,fr=3e4,pr=new Set([...ar,...or]),mr=3,hr=6e4,gr=(e,t)=>{let n=setTimeout(e,t);return()=>clearTimeout(n)};function _r(){let{protocol:e,host:t}=window.location;return`${e===`https:`?`wss:`:`ws:`}//${t}/api/stream`}function vr(e){if(typeof e!=`string`)return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t||Array.isArray(t))return null;let n=t,{type:r,topic:i,seq:a}=n;return typeof r!=`string`||i!==void 0&&typeof i!=`string`||a!==void 0&&typeof a!=`number`?null:{type:r,...typeof i==`string`?{topic:i}:{},...typeof a==`number`?{seq:a}:{},...`payload`in n?{payload:n.payload}:{}}}function yr(e){let t=new Set,n=new Set,r=new Map,i=new Map,a=new Map,o=e=>a.has(e)||pr.has(e),s=[],c=null,l=!1,u=!1,d=!1,f=!1,p=!1,m=0,h=null,g={status:`poll`,pushed:()=>!1};function _(){let e=p?`offline`:u&&!f?`push`:`poll`,r=e===`push`;g={status:e,pushed:e=>r&&n.has(e)};for(let e of t)e()}function v(e){c?.send(JSON.stringify(e))}function y(e,t){let n=i.get(e);if(n===void 0||n.size===0)return!1;for(let e of[...n])e(t);return!0}function b(){for(let e of ar)v({type:`subscribe`,topic:e});for(let e of or){let t=r.get(e);v(t===void 0?{type:`subscribe`,topic:e}:{type:`subscribe`,topic:e,sinceSeq:t})}for(let e of a.keys())v({type:`subscribe`,topic:e})}function x(){u=!0,m=0,n.clear(),d&&cr(e.client),d=!0,b(),_()}function S(t){let i=vr(t.data);if(i===null)return;let{topic:a}=i;if(i.type===`ack`){a!==void 0&&o(a)&&(n.add(a),y(a,{kind:`open`}),_());return}if(i.type===`error`){a!==void 0&&(n.delete(a)&&_(),y(a,{kind:`refused`}));return}if(a!==void 0){if(i.type===`gap`){i.seq!==void 0&&r.set(a,i.seq),y(a,{kind:`gap`}),sr(e.client,a);return}if(i.type===`event`){if(a===`res:*`){lr(e.client);return}if(i.seq!==void 0){let t=r.get(a);if(r.set(a,i.seq),t!==void 0&&i.seq>t+1){y(a,{kind:`gap`}),sr(e.client,a);return}}i.payload!==void 0&&y(a,{kind:`frame`,payload:i.payload})||sr(e.client,a)}}}function C(t){let r=u;u=!1,c=null,n.clear();for(let e of[...i.keys()])y(e,{kind:`closed`});if(l){if(t.code===ur){p=!0,l=!1,_(),lr(e.client);return}if(!r)f=!0;else{let t=e.now();s=[...s.filter(e=>e>t-hr),t],s.length>=mr&&(f=!0)}_(),w()}}function w(){let t=Math.min(fr,dr*2**m);m+=1,h=e.timer(()=>{h=null,l&&T()},t)}function T(){let t=new WebSocket(e.url());c=t,t.addEventListener(`open`,x),t.addEventListener(`message`,S),t.addEventListener(`close`,C)}function E(e,t){let n=i.get(e)??new Set;return i.set(e,n),n.add(t),()=>{n.delete(t),n.size===0&&i.delete(e)}}return{subscribe(e){return t.add(e),()=>{t.delete(e)}},snapshot:()=>g,hold(e,t){let r=E(e,t),i=(a.get(e)??0)+1;a.set(e,i),i===1&&u&&v({type:`subscribe`,topic:e}),n.has(e)&&t({kind:`open`});let o=!1;return()=>{if(o)return;o=!0,r();let t=(a.get(e)??1)-1;if(t>0){a.set(e,t);return}a.delete(e),n.delete(e)&&_(),u&&v({type:`unsubscribe`,topic:e})}},publish(e,t){return!u||!n.has(e)?!1:(v({type:`send`,topic:e,payload:t}),!0)},onStream:E,start(){return l=!0,T(),()=>{l=!1,h?.(),h=null;let e=c;c=null,u=!1,e?.close()}}}}var br=Oe(null),xr=Oe(null),Sr=Oe(null),Cr={status:`poll`,pushed:()=>!1};function wr({children:e,enabled:t=!0,timer:n=gr,now:r=Date.now,url:i=_r}){let a=Ee(),[o]=je(()=>yr({client:a,timer:n,now:r,url:i})),[s]=je(()=>({subscribe:(e,t)=>o.hold(e,e=>{if(e.kind===`gap`){t({kind:`closed`});return}t(e)}),send:o.publish}));N(()=>{if(t)return o.start()},[o,t]);let c=Me(o.subscribe,o.snapshot,o.snapshot);return P(br,{value:c,children:P(xr,{value:o.onStream,children:P(Sr,{value:s,children:e})})})}function Tr(){return ke(br)??Cr}function Er(e,t){let n=ke(xr),r=Ae(t);N(()=>{r.current=t}),N(()=>{if(n!==null)return n(e,e=>r.current(e))},[n,e])}function Dr(e,t){let n=ke(Sr),r=Ae(t);N(()=>{r.current=t}),N(()=>{if(n!==null&&e!==null)return n.subscribe(e,e=>r.current(e))},[n,e])}function Or({children:e}){let t=Tr(),n=ke(Sr);return P(ye,{connection:t,...n===null?{}:{channels:n},children:e})}async function kr(e){return e.queryClient.ensureQueryData({queryKey:s.status,queryFn:()=>fe(`/api/status`),revalidateIfStale:!0})}function Ar(e){let t=e.principal;return e.authenticated!==!0||t==null?`/login`:t.kind===`client`?`/client`:t.kind===`admin`||t.kind===`viewer`?`/`:`/login`}function jr(e,t){let n=Ar(e);if(n===`/login`)throw le({to:`/login`,search:{next:t}});if(n!==`/`)throw le({to:n})}function Mr(e,t){let n=Ar(e);if(n===`/login`)throw le({to:`/login`,search:{next:t}});if(n!==`/client`)throw le({to:n})}var Nr=k(`/_app`)({beforeLoad:async({context:e,location:t})=>{jr(await kr(e),t.href),await e.queryClient.ensureQueryData(a)},pendingComponent:Pr,pendingMs:200,errorComponent:O(()=>A(()=>import(`./_app-CSru2YTE.js`),__vite__mapDeps([0,1])),`errorComponent`),component:Fr});function Pr(){return P(he,{legend:`Console`,children:P(ge,{rows:6})})}function Fr(){let e=c().data??[];return P(wr,{children:F(Or,{children:[P(be,{$providers:e}),P(xe,{children:P(Un,{})})]})})}var Ir=k(`/client`)({beforeLoad:async({context:e,location:t})=>{Mr(await kr(e),t.href)},component:O(()=>A(()=>import(`./client-DEALADtD.js`),__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17])),`component`)}),Lr=k(`/login`)({validateSearch:e=>({...typeof e.next==`string`?{next:e.next}:{},...typeof e.reason==`string`?{reason:e.reason}:{}}),component:O(()=>A(()=>import(`./login-BhkdR1f4.js`),__vite__mapDeps([18,4,1,11,19])),`component`)}),Rr=k(`/_app/`)({component:O(()=>A(()=>import(`./_app.index-BV1kJJjA.js`),__vite__mapDeps([20,4,1,5,7,10,14,12,17])),`component`)}),zr=k(`/_app/accounts`)({component:O(()=>A(()=>import(`./_app.accounts-2syjcpos.js`),__vite__mapDeps([21,4,1,5,22,13,8,23,24,25,26,9,10,11,14,12,15,3])),`component`)}),Br=k(`/_app/console`)({component:O(()=>A(()=>import(`./_app.console-facio1_r.js`),__vite__mapDeps([27,4,1,5,11])),`component`)}),Vr=k(`/_app/database`)({component:O(()=>A(()=>import(`./_app.database-CqSoTi2l.js`),__vite__mapDeps([28,4,1,5,25,11,14,12,17,19])),`component`)}),Hr=k(`/_app/keys`)({component:O(()=>A(()=>import(`./_app.keys-Dq5O0AG9.js`),__vite__mapDeps([29,4,1,5,22,13,8,23,26,9,10,11,14,12])),`component`)}),Ur=k(`/_app/logs`)({component:O(()=>A(()=>import(`./_app.logs-PjRK5wqy.js`),__vite__mapDeps([30,4,1,5,6,7,8,9,10,11,12])),`component`)}),Wr=k(`/_app/models`)({component:O(()=>A(()=>import(`./_app.models-BfmeeB5e.js`),__vite__mapDeps([31,4,1,5,23,24,25,26,9,10,11,14])),`component`)}),Gr=k(`/_app/settings`)({component:O(()=>A(()=>import(`./_app.settings-CdSQyweb.js`),__vite__mapDeps([32,4,1,5,26,9,11,14,19])),`component`)}),Kr=k(`/_app/usage`)({component:O(()=>A(()=>import(`./_app.usage--5qFtU1W.js`),__vite__mapDeps([33,3,4,1,5,12,16,17])),`component`)}),qr=k(`/_app/plugins/$pluginId`)({component:O(()=>A(()=>import(`./_app.plugins._pluginId-cCDDM_D_.js`),__vite__mapDeps([34,4,1,35,5])),`component`)}),$=Nr.update({id:`/_app`,getParentRoute:()=>tr}),Jr=Ir.update({id:`/client`,path:`/client`,getParentRoute:()=>tr}),Yr=Lr.update({id:`/login`,path:`/login`,getParentRoute:()=>tr}),Xr=Rr.update({id:`/`,path:`/`,getParentRoute:()=>$}),Zr={AppAccountsRoute:zr.update({id:`/accounts`,path:`/accounts`,getParentRoute:()=>$}),AppConsoleRoute:Br.update({id:`/console`,path:`/console`,getParentRoute:()=>$}),AppDatabaseRoute:Vr.update({id:`/database`,path:`/database`,getParentRoute:()=>$}),AppKeysRoute:Hr.update({id:`/keys`,path:`/keys`,getParentRoute:()=>$}),AppLogsRoute:Ur.update({id:`/logs`,path:`/logs`,getParentRoute:()=>$}),AppModelsRoute:Wr.update({id:`/models`,path:`/models`,getParentRoute:()=>$}),AppSettingsRoute:Gr.update({id:`/settings`,path:`/settings`,getParentRoute:()=>$}),AppUsageRoute:Kr.update({id:`/usage`,path:`/usage`,getParentRoute:()=>$}),AppIndexRoute:Xr,AppPluginsPluginIdRoute:qr.update({id:`/plugins/$pluginId`,path:`/plugins/$pluginId`,getParentRoute:()=>$})},Qr={AppRoute:$._addFileChildren(Zr),ClientRoute:Jr,LoginRoute:Yr},$r=tr._addFileChildren(Qr)._addFileTypes();function ei(e){return{isLoginRoute:()=>e().state.location.pathname===`/login`,onUnauthenticated:()=>void e().navigate({to:`/login`,search:{next:e().state.location.href}})}}function ti(e){let t=t=>{t instanceof me&&t.isUnauthenticated&&(e.isLoginRoute()||e.onUnauthenticated())};return new we({queryCache:new Ce({onError:t}),mutationCache:new Se({onError:t}),defaultOptions:{queries:{retry:(e,t)=>t instanceof me&&t.isUnauthenticated?!1:e<2,staleTime:5e3,refetchOnWindowFocus:!0},mutations:{retry:!1}}})}var ni,ri=ti(ei(()=>ni));ni=Yn({routeTree:$r,context:{queryClient:ri}});var ii=document.getElementById(`root`);if(ii===null)throw Error(`#root is missing from index.html`);Pe(ii).render(P(De,{children:P(ve,{children:P(Te,{client:ri,children:P(Qn,{router:ni})})})}));export{Dr as a,sr as c,Or as i,Lr as n,Er as o,wr as r,nr as s,qr as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Et as e,Qt as t,Yt as n,in as r,t as i}from"./Lamp-Dk9XrTCg.js";import{O as a,S as o,T as s,c,i as l,k as u,y as d}from"./Panel-CsovmtxF.js";import{n as f}from"./index-
|
|
1
|
+
import{Et as e,Qt as t,Yt as n,in as r,t as i}from"./Lamp-Dk9XrTCg.js";import{O as a,S as o,T as s,c,i as l,k as u,y as d}from"./Panel-CsovmtxF.js";import{n as f}from"./index-BYDVTknB.js";import{n as p,t as m}from"./Field-DG1317zr.js";import{t as h}from"./reasons-Du1OBWAM.js";import{useState as g}from"react";import{jsx as _,jsxs as v}from"react/jsx-runtime";import y from"styled-components";var b=y.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
justify-content: center;
|
package/public/index.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
10
10
|
<title>OmniGateway — One endpoint in front of the AI accounts you already pay for.</title>
|
|
11
11
|
<script type="importmap">{"imports":{"react":"/shared/react.js","react/jsx-runtime":"/shared/jsx-runtime.js","react-dom":"/shared/react-dom.js","react-dom/client":"/shared/react-dom-client.js","styled-components":"/shared/styled-components.js","@tanstack/react-query":"/shared/react-query.js","@omnigateway/dashboard-sdk":"/shared/dashboard-sdk.js"}}</script>
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-BYDVTknB.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/Panel-CsovmtxF.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/Lamp-Dk9XrTCg.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-B7KDmXJ9.js">
|