omnigateway 0.13.4 → 0.13.6
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 +1 -1
- package/bin/omni.js +195 -17
- package/gateway.js +202 -23
- 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
|
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";
|
|
@@ -6580,31 +6582,199 @@ function prepareArtifact(input) {
|
|
|
6580
6582
|
const stripped = { ...omitted, error: marker };
|
|
6581
6583
|
return { artifact: stripped, json: JSON.stringify(stripped) };
|
|
6582
6584
|
}
|
|
6585
|
+
var MAX_ENVELOPE_BYTES = 2 * MAX_ARTIFACT_BYTES + 65;
|
|
6586
|
+
var BINARY_MAGIC = encoder2.encode("OGBA");
|
|
6587
|
+
var LEGACY_PREFIX = encoder2.encode("enc:v1:");
|
|
6588
|
+
var BINARY_VERSION = 1;
|
|
6589
|
+
var BINARY_HEADER_BYTES = 10;
|
|
6590
|
+
var BINARY_IV_BYTES = 12;
|
|
6591
|
+
var BINARY_TAG_BYTES = 16;
|
|
6592
|
+
var BINARY_OVERHEAD = BINARY_HEADER_BYTES + BINARY_IV_BYTES + BINARY_TAG_BYTES;
|
|
6593
|
+
var MAX_BINARY_ENVELOPE_BYTES = MAX_ARTIFACT_BYTES + BINARY_OVERHEAD;
|
|
6594
|
+
var CODEC_RAW = 0;
|
|
6595
|
+
var CODEC_GZIP = 1;
|
|
6596
|
+
var GZIP_FRAME_BYTES = 18;
|
|
6597
|
+
var gzipAsync = promisify(gzip);
|
|
6598
|
+
var gunzipAsync = promisify(gunzip);
|
|
6599
|
+
function own2(bytes, start, end) {
|
|
6600
|
+
return bytes.slice(start, end);
|
|
6601
|
+
}
|
|
6602
|
+
function plaintextOf(json) {
|
|
6603
|
+
const plain = encoder2.encode(json);
|
|
6604
|
+
if (plain.length < 1 || plain.length > MAX_ARTIFACT_BYTES) {
|
|
6605
|
+
throw new Error("artifact plaintext is outside the binary envelope's bounds");
|
|
6606
|
+
}
|
|
6607
|
+
return plain;
|
|
6608
|
+
}
|
|
6583
6609
|
async function sealArtifact(key, json) {
|
|
6584
|
-
const
|
|
6610
|
+
const plain = plaintextOf(json);
|
|
6611
|
+
return sealBinary(key, plain.length, CODEC_RAW, plain);
|
|
6612
|
+
}
|
|
6613
|
+
async function sealBinary(key, claimed, codec, payload) {
|
|
6614
|
+
const bytes = new Uint8Array(BINARY_OVERHEAD + payload.length);
|
|
6615
|
+
bytes.set(BINARY_MAGIC, 0);
|
|
6616
|
+
bytes[4] = BINARY_VERSION;
|
|
6617
|
+
bytes[5] = codec;
|
|
6618
|
+
new DataView(bytes.buffer).setUint32(6, claimed, false);
|
|
6619
|
+
const iv = crypto.getRandomValues(new Uint8Array(BINARY_IV_BYTES));
|
|
6620
|
+
const sealed = await crypto.subtle.encrypt({
|
|
6621
|
+
name: "AES-GCM",
|
|
6622
|
+
iv,
|
|
6623
|
+
additionalData: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
6624
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
6625
|
+
}, key, own2(payload, 0));
|
|
6626
|
+
bytes.set(iv, BINARY_HEADER_BYTES);
|
|
6627
|
+
bytes.set(new Uint8Array(sealed), BINARY_HEADER_BYTES + BINARY_IV_BYTES);
|
|
6585
6628
|
return { bytes, sha256: await sha256Hex(bytes) };
|
|
6586
6629
|
}
|
|
6587
6630
|
async function readArtifact(key, dir, relPath, expectedSha256) {
|
|
6588
|
-
|
|
6631
|
+
const acquired = await acquireArtifact(join(dir, relPath));
|
|
6632
|
+
if (!(acquired instanceof Uint8Array))
|
|
6633
|
+
return { ok: false, failure: acquired };
|
|
6634
|
+
return decodeArtifact(key, acquired, expectedSha256);
|
|
6635
|
+
}
|
|
6636
|
+
async function acquireArtifact(path) {
|
|
6637
|
+
let handle;
|
|
6589
6638
|
try {
|
|
6590
|
-
|
|
6639
|
+
handle = await open2(path, "r");
|
|
6591
6640
|
} catch {
|
|
6592
|
-
return
|
|
6641
|
+
return "missing";
|
|
6642
|
+
}
|
|
6643
|
+
try {
|
|
6644
|
+
const { size } = await handle.stat();
|
|
6645
|
+
if (size > MAX_ENVELOPE_BYTES)
|
|
6646
|
+
return "corrupt";
|
|
6647
|
+
const buffer = new Uint8Array(size + 1);
|
|
6648
|
+
let filled = 0;
|
|
6649
|
+
while (filled < buffer.length) {
|
|
6650
|
+
const { bytesRead } = await handle.read(buffer, filled, buffer.length - filled, filled);
|
|
6651
|
+
if (bytesRead === 0)
|
|
6652
|
+
break;
|
|
6653
|
+
filled += bytesRead;
|
|
6654
|
+
}
|
|
6655
|
+
return filled > size ? "corrupt" : buffer.subarray(0, filled);
|
|
6656
|
+
} catch {
|
|
6657
|
+
return "missing";
|
|
6658
|
+
} finally {
|
|
6659
|
+
await handle.close().catch(() => {});
|
|
6660
|
+
}
|
|
6661
|
+
}
|
|
6662
|
+
var LEGACY_HEX = /^(?:[0-9a-f]{2})*$/;
|
|
6663
|
+
var LEGACY_IV_HEX_CHARS = 24;
|
|
6664
|
+
var LEGACY_TAG_HEX_CHARS = 32;
|
|
6665
|
+
function isLegacyStructure(text) {
|
|
6666
|
+
const parts = text.split(":");
|
|
6667
|
+
const [scheme, version, iv, body, tag] = parts;
|
|
6668
|
+
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);
|
|
6669
|
+
}
|
|
6670
|
+
function payloadFits(codec, payloadBytes, claimed) {
|
|
6671
|
+
switch (codec) {
|
|
6672
|
+
case CODEC_RAW:
|
|
6673
|
+
return payloadBytes === claimed;
|
|
6674
|
+
case CODEC_GZIP:
|
|
6675
|
+
return payloadBytes >= GZIP_FRAME_BYTES;
|
|
6676
|
+
default:
|
|
6677
|
+
return false;
|
|
6678
|
+
}
|
|
6679
|
+
}
|
|
6680
|
+
async function expand(codec, payload, claimed) {
|
|
6681
|
+
switch (codec) {
|
|
6682
|
+
case CODEC_RAW:
|
|
6683
|
+
return payload;
|
|
6684
|
+
case CODEC_GZIP:
|
|
6685
|
+
return gunzipArtifact(payload, claimed);
|
|
6686
|
+
default:
|
|
6687
|
+
throw new Error("unsupported artifact codec");
|
|
6593
6688
|
}
|
|
6594
|
-
|
|
6689
|
+
}
|
|
6690
|
+
async function gunzipArtifact(payload, claimed) {
|
|
6691
|
+
const result = await gunzipAsync(payload, {
|
|
6692
|
+
maxOutputLength: MAX_ARTIFACT_BYTES,
|
|
6693
|
+
info: true
|
|
6694
|
+
});
|
|
6695
|
+
const inflated = inflateResult(result);
|
|
6696
|
+
if (inflated === null)
|
|
6697
|
+
throw new Error("gzip result has an unexpected shape");
|
|
6698
|
+
if (inflated.consumed !== payload.length)
|
|
6699
|
+
throw new Error("bytes follow the gzip stream");
|
|
6700
|
+
if (inflated.output.length !== claimed)
|
|
6701
|
+
throw new Error("gzip output is not the claimed length");
|
|
6702
|
+
return inflated.output;
|
|
6703
|
+
}
|
|
6704
|
+
function inflateResult(result) {
|
|
6705
|
+
if (typeof result !== "object" || result === null)
|
|
6706
|
+
return null;
|
|
6707
|
+
if (!("buffer" in result) || !("engine" in result))
|
|
6708
|
+
return null;
|
|
6709
|
+
const { buffer, engine } = result;
|
|
6710
|
+
if (!(buffer instanceof Uint8Array) || typeof engine !== "object" || engine === null)
|
|
6711
|
+
return null;
|
|
6712
|
+
if (!("bytesWritten" in engine) || typeof engine.bytesWritten !== "number")
|
|
6713
|
+
return null;
|
|
6714
|
+
return { output: buffer, consumed: engine.bytesWritten };
|
|
6715
|
+
}
|
|
6716
|
+
function parseBinary(bytes) {
|
|
6717
|
+
if (bytes.length < BINARY_OVERHEAD || bytes.length > MAX_BINARY_ENVELOPE_BYTES)
|
|
6718
|
+
return null;
|
|
6719
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
6720
|
+
const version = view.getUint8(4);
|
|
6721
|
+
const codec = view.getUint8(5);
|
|
6722
|
+
const claimed = view.getUint32(6, false);
|
|
6723
|
+
if (version !== BINARY_VERSION)
|
|
6724
|
+
return null;
|
|
6725
|
+
if (claimed < 1 || claimed > MAX_ARTIFACT_BYTES)
|
|
6726
|
+
return null;
|
|
6727
|
+
if (!payloadFits(codec, bytes.length - BINARY_OVERHEAD, claimed))
|
|
6728
|
+
return null;
|
|
6729
|
+
return {
|
|
6730
|
+
header: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
6731
|
+
codec,
|
|
6732
|
+
claimed,
|
|
6733
|
+
iv: own2(bytes, BINARY_HEADER_BYTES, BINARY_HEADER_BYTES + BINARY_IV_BYTES),
|
|
6734
|
+
sealed: own2(bytes, BINARY_HEADER_BYTES + BINARY_IV_BYTES)
|
|
6735
|
+
};
|
|
6736
|
+
}
|
|
6737
|
+
async function openBinary(key, envelope) {
|
|
6738
|
+
const payload = await crypto.subtle.decrypt({
|
|
6739
|
+
name: "AES-GCM",
|
|
6740
|
+
iv: envelope.iv,
|
|
6741
|
+
additionalData: envelope.header,
|
|
6742
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
6743
|
+
}, key, envelope.sealed);
|
|
6744
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(await expand(envelope.codec, new Uint8Array(payload), envelope.claimed));
|
|
6745
|
+
}
|
|
6746
|
+
function startsWith(bytes, prefix) {
|
|
6747
|
+
if (bytes.length < prefix.length)
|
|
6748
|
+
return false;
|
|
6749
|
+
return prefix.every((byte, i) => bytes[i] === byte);
|
|
6595
6750
|
}
|
|
6596
6751
|
async function decodeArtifact(key, bytes, expectedSha256) {
|
|
6752
|
+
const corrupt = { ok: false, failure: "corrupt" };
|
|
6597
6753
|
try {
|
|
6598
|
-
if (
|
|
6599
|
-
return
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6754
|
+
if (bytes.length > MAX_ENVELOPE_BYTES)
|
|
6755
|
+
return corrupt;
|
|
6756
|
+
let unseal;
|
|
6757
|
+
if (startsWith(bytes, BINARY_MAGIC)) {
|
|
6758
|
+
const envelope = parseBinary(bytes);
|
|
6759
|
+
if (envelope === null)
|
|
6760
|
+
return corrupt;
|
|
6761
|
+
unseal = () => openBinary(key, envelope);
|
|
6762
|
+
} else if (startsWith(bytes, LEGACY_PREFIX)) {
|
|
6763
|
+
const text = new TextDecoder().decode(bytes);
|
|
6764
|
+
if (!isLegacyStructure(text))
|
|
6765
|
+
return corrupt;
|
|
6766
|
+
unseal = () => decrypt(key, text);
|
|
6767
|
+
} else {
|
|
6768
|
+
return corrupt;
|
|
6604
6769
|
}
|
|
6770
|
+
if (expectedSha256 !== null && await sha256Hex(bytes) !== expectedSha256)
|
|
6771
|
+
return corrupt;
|
|
6772
|
+
const parsed = JSON.parse(await unseal());
|
|
6773
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed))
|
|
6774
|
+
return corrupt;
|
|
6605
6775
|
return { ok: true, artifact: parsed };
|
|
6606
6776
|
} catch {
|
|
6607
|
-
return
|
|
6777
|
+
return corrupt;
|
|
6608
6778
|
}
|
|
6609
6779
|
}
|
|
6610
6780
|
async function writeArtifact(dir, relPath, bytes) {
|
|
@@ -7637,13 +7807,16 @@ function createBodyRepo(sql, key) {
|
|
|
7637
7807
|
return row;
|
|
7638
7808
|
},
|
|
7639
7809
|
async get(requestId) {
|
|
7640
|
-
const found = (await sql.unsafe(
|
|
7810
|
+
const found = (await sql.unsafe(`SELECT ${META},
|
|
7811
|
+
CASE WHEN octet_length(bytes) <= $2 THEN bytes ELSE NULL END AS bytes,
|
|
7812
|
+
octet_length(bytes) AS encoded_size
|
|
7813
|
+
FROM request_bodies WHERE request_id = $1`, [requestId, MAX_ENVELOPE_BYTES]))[0];
|
|
7641
7814
|
if (found === undefined)
|
|
7642
7815
|
return null;
|
|
7643
7816
|
const row = toRow(found);
|
|
7644
7817
|
if (row.relPath === null || row.detailState === "none")
|
|
7645
7818
|
return { row, artifact: null };
|
|
7646
|
-
const read = found.
|
|
7819
|
+
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
7820
|
if (read.ok) {
|
|
7648
7821
|
if (row.detailState !== "ready")
|
|
7649
7822
|
await recordState(requestId, "ready");
|
|
@@ -7743,6 +7916,7 @@ var DEFAULT_SETTINGS = {
|
|
|
7743
7916
|
breakerThreshold: 3,
|
|
7744
7917
|
breakerCooldownMs: 30000,
|
|
7745
7918
|
logRetentionDays: 30,
|
|
7919
|
+
bodyRetentionDays: 1,
|
|
7746
7920
|
quotaPollIntervalMs: 300000,
|
|
7747
7921
|
rtkEnabled: false,
|
|
7748
7922
|
autoCacheEnabled: true,
|
|
@@ -7812,6 +7986,7 @@ function createConfigRepo(sql, emit) {
|
|
|
7812
7986
|
rtkEnabled: stored.rtkEnabled === true,
|
|
7813
7987
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
7814
7988
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
7989
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
7815
7990
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
7816
7991
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
7817
7992
|
weights: knownWeights(stored.weights)
|
|
@@ -9301,6 +9476,7 @@ function createConfigRepo2(db, emit = () => {}) {
|
|
|
9301
9476
|
rtkEnabled: stored.rtkEnabled === true,
|
|
9302
9477
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
9303
9478
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
9479
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
9304
9480
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
9305
9481
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
9306
9482
|
weights: knownWeights2(stored.weights)
|
|
@@ -19584,6 +19760,7 @@ var settingsSchema = object({
|
|
|
19584
19760
|
breakerThreshold: number2().int().min(1),
|
|
19585
19761
|
breakerCooldownMs: number2().int().positive(),
|
|
19586
19762
|
logRetentionDays: number2().int().min(1),
|
|
19763
|
+
bodyRetentionDays: retentionSchema.shape.maxAgeDays.optional(),
|
|
19587
19764
|
quotaPollIntervalMs: number2().int().min(0),
|
|
19588
19765
|
rtkEnabled: boolean2(),
|
|
19589
19766
|
autoCacheEnabled: boolean2(),
|
|
@@ -22763,9 +22940,10 @@ async function getSettings(store) {
|
|
|
22763
22940
|
return store.config.getSettings();
|
|
22764
22941
|
}
|
|
22765
22942
|
async function putSettings(store, input) {
|
|
22766
|
-
const { snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
22943
|
+
const { bodyRetentionDays, snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
22767
22944
|
const patch = {
|
|
22768
22945
|
...rest,
|
|
22946
|
+
...bodyRetentionDays === undefined ? {} : { bodyRetentionDays },
|
|
22769
22947
|
...snapshotKeepLatest === undefined ? {} : { snapshotKeepLatest },
|
|
22770
22948
|
...snapshotMaxAgeDays === undefined ? {} : { snapshotMaxAgeDays }
|
|
22771
22949
|
};
|
|
@@ -25109,7 +25287,7 @@ function createServiceDeps(input) {
|
|
|
25109
25287
|
}
|
|
25110
25288
|
|
|
25111
25289
|
// apps/cli/src/version.ts
|
|
25112
|
-
var VERSION = "0.13.
|
|
25290
|
+
var VERSION = "0.13.6";
|
|
25113
25291
|
|
|
25114
25292
|
// apps/cli/src/commands/service.ts
|
|
25115
25293
|
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";
|
|
@@ -11882,31 +11884,199 @@ function prepareArtifact(input) {
|
|
|
11882
11884
|
const stripped = { ...omitted, error: marker };
|
|
11883
11885
|
return { artifact: stripped, json: JSON.stringify(stripped) };
|
|
11884
11886
|
}
|
|
11887
|
+
var MAX_ENVELOPE_BYTES = 2 * MAX_ARTIFACT_BYTES + 65;
|
|
11888
|
+
var BINARY_MAGIC = encoder2.encode("OGBA");
|
|
11889
|
+
var LEGACY_PREFIX = encoder2.encode("enc:v1:");
|
|
11890
|
+
var BINARY_VERSION = 1;
|
|
11891
|
+
var BINARY_HEADER_BYTES = 10;
|
|
11892
|
+
var BINARY_IV_BYTES = 12;
|
|
11893
|
+
var BINARY_TAG_BYTES = 16;
|
|
11894
|
+
var BINARY_OVERHEAD = BINARY_HEADER_BYTES + BINARY_IV_BYTES + BINARY_TAG_BYTES;
|
|
11895
|
+
var MAX_BINARY_ENVELOPE_BYTES = MAX_ARTIFACT_BYTES + BINARY_OVERHEAD;
|
|
11896
|
+
var CODEC_RAW = 0;
|
|
11897
|
+
var CODEC_GZIP = 1;
|
|
11898
|
+
var GZIP_FRAME_BYTES = 18;
|
|
11899
|
+
var gzipAsync = promisify(gzip);
|
|
11900
|
+
var gunzipAsync = promisify(gunzip);
|
|
11901
|
+
function own2(bytes, start, end) {
|
|
11902
|
+
return bytes.slice(start, end);
|
|
11903
|
+
}
|
|
11904
|
+
function plaintextOf(json) {
|
|
11905
|
+
const plain = encoder2.encode(json);
|
|
11906
|
+
if (plain.length < 1 || plain.length > MAX_ARTIFACT_BYTES) {
|
|
11907
|
+
throw new Error("artifact plaintext is outside the binary envelope's bounds");
|
|
11908
|
+
}
|
|
11909
|
+
return plain;
|
|
11910
|
+
}
|
|
11885
11911
|
async function sealArtifact(key, json) {
|
|
11886
|
-
const
|
|
11912
|
+
const plain = plaintextOf(json);
|
|
11913
|
+
return sealBinary(key, plain.length, CODEC_RAW, plain);
|
|
11914
|
+
}
|
|
11915
|
+
async function sealBinary(key, claimed, codec, payload) {
|
|
11916
|
+
const bytes = new Uint8Array(BINARY_OVERHEAD + payload.length);
|
|
11917
|
+
bytes.set(BINARY_MAGIC, 0);
|
|
11918
|
+
bytes[4] = BINARY_VERSION;
|
|
11919
|
+
bytes[5] = codec;
|
|
11920
|
+
new DataView(bytes.buffer).setUint32(6, claimed, false);
|
|
11921
|
+
const iv = crypto.getRandomValues(new Uint8Array(BINARY_IV_BYTES));
|
|
11922
|
+
const sealed = await crypto.subtle.encrypt({
|
|
11923
|
+
name: "AES-GCM",
|
|
11924
|
+
iv,
|
|
11925
|
+
additionalData: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
11926
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
11927
|
+
}, key, own2(payload, 0));
|
|
11928
|
+
bytes.set(iv, BINARY_HEADER_BYTES);
|
|
11929
|
+
bytes.set(new Uint8Array(sealed), BINARY_HEADER_BYTES + BINARY_IV_BYTES);
|
|
11887
11930
|
return { bytes, sha256: await sha256Hex(bytes) };
|
|
11888
11931
|
}
|
|
11889
11932
|
async function readArtifact(key, dir, relPath, expectedSha256) {
|
|
11890
|
-
|
|
11933
|
+
const acquired = await acquireArtifact(join(dir, relPath));
|
|
11934
|
+
if (!(acquired instanceof Uint8Array))
|
|
11935
|
+
return { ok: false, failure: acquired };
|
|
11936
|
+
return decodeArtifact(key, acquired, expectedSha256);
|
|
11937
|
+
}
|
|
11938
|
+
async function acquireArtifact(path) {
|
|
11939
|
+
let handle;
|
|
11891
11940
|
try {
|
|
11892
|
-
|
|
11941
|
+
handle = await open2(path, "r");
|
|
11893
11942
|
} catch {
|
|
11894
|
-
return
|
|
11943
|
+
return "missing";
|
|
11944
|
+
}
|
|
11945
|
+
try {
|
|
11946
|
+
const { size } = await handle.stat();
|
|
11947
|
+
if (size > MAX_ENVELOPE_BYTES)
|
|
11948
|
+
return "corrupt";
|
|
11949
|
+
const buffer = new Uint8Array(size + 1);
|
|
11950
|
+
let filled = 0;
|
|
11951
|
+
while (filled < buffer.length) {
|
|
11952
|
+
const { bytesRead } = await handle.read(buffer, filled, buffer.length - filled, filled);
|
|
11953
|
+
if (bytesRead === 0)
|
|
11954
|
+
break;
|
|
11955
|
+
filled += bytesRead;
|
|
11956
|
+
}
|
|
11957
|
+
return filled > size ? "corrupt" : buffer.subarray(0, filled);
|
|
11958
|
+
} catch {
|
|
11959
|
+
return "missing";
|
|
11960
|
+
} finally {
|
|
11961
|
+
await handle.close().catch(() => {});
|
|
11962
|
+
}
|
|
11963
|
+
}
|
|
11964
|
+
var LEGACY_HEX = /^(?:[0-9a-f]{2})*$/;
|
|
11965
|
+
var LEGACY_IV_HEX_CHARS = 24;
|
|
11966
|
+
var LEGACY_TAG_HEX_CHARS = 32;
|
|
11967
|
+
function isLegacyStructure(text) {
|
|
11968
|
+
const parts = text.split(":");
|
|
11969
|
+
const [scheme, version, iv, body, tag] = parts;
|
|
11970
|
+
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);
|
|
11971
|
+
}
|
|
11972
|
+
function payloadFits(codec, payloadBytes, claimed) {
|
|
11973
|
+
switch (codec) {
|
|
11974
|
+
case CODEC_RAW:
|
|
11975
|
+
return payloadBytes === claimed;
|
|
11976
|
+
case CODEC_GZIP:
|
|
11977
|
+
return payloadBytes >= GZIP_FRAME_BYTES;
|
|
11978
|
+
default:
|
|
11979
|
+
return false;
|
|
11895
11980
|
}
|
|
11896
|
-
|
|
11981
|
+
}
|
|
11982
|
+
async function expand(codec, payload, claimed) {
|
|
11983
|
+
switch (codec) {
|
|
11984
|
+
case CODEC_RAW:
|
|
11985
|
+
return payload;
|
|
11986
|
+
case CODEC_GZIP:
|
|
11987
|
+
return gunzipArtifact(payload, claimed);
|
|
11988
|
+
default:
|
|
11989
|
+
throw new Error("unsupported artifact codec");
|
|
11990
|
+
}
|
|
11991
|
+
}
|
|
11992
|
+
async function gunzipArtifact(payload, claimed) {
|
|
11993
|
+
const result = await gunzipAsync(payload, {
|
|
11994
|
+
maxOutputLength: MAX_ARTIFACT_BYTES,
|
|
11995
|
+
info: true
|
|
11996
|
+
});
|
|
11997
|
+
const inflated = inflateResult(result);
|
|
11998
|
+
if (inflated === null)
|
|
11999
|
+
throw new Error("gzip result has an unexpected shape");
|
|
12000
|
+
if (inflated.consumed !== payload.length)
|
|
12001
|
+
throw new Error("bytes follow the gzip stream");
|
|
12002
|
+
if (inflated.output.length !== claimed)
|
|
12003
|
+
throw new Error("gzip output is not the claimed length");
|
|
12004
|
+
return inflated.output;
|
|
12005
|
+
}
|
|
12006
|
+
function inflateResult(result) {
|
|
12007
|
+
if (typeof result !== "object" || result === null)
|
|
12008
|
+
return null;
|
|
12009
|
+
if (!("buffer" in result) || !("engine" in result))
|
|
12010
|
+
return null;
|
|
12011
|
+
const { buffer, engine } = result;
|
|
12012
|
+
if (!(buffer instanceof Uint8Array) || typeof engine !== "object" || engine === null)
|
|
12013
|
+
return null;
|
|
12014
|
+
if (!("bytesWritten" in engine) || typeof engine.bytesWritten !== "number")
|
|
12015
|
+
return null;
|
|
12016
|
+
return { output: buffer, consumed: engine.bytesWritten };
|
|
12017
|
+
}
|
|
12018
|
+
function parseBinary(bytes) {
|
|
12019
|
+
if (bytes.length < BINARY_OVERHEAD || bytes.length > MAX_BINARY_ENVELOPE_BYTES)
|
|
12020
|
+
return null;
|
|
12021
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
12022
|
+
const version = view.getUint8(4);
|
|
12023
|
+
const codec = view.getUint8(5);
|
|
12024
|
+
const claimed = view.getUint32(6, false);
|
|
12025
|
+
if (version !== BINARY_VERSION)
|
|
12026
|
+
return null;
|
|
12027
|
+
if (claimed < 1 || claimed > MAX_ARTIFACT_BYTES)
|
|
12028
|
+
return null;
|
|
12029
|
+
if (!payloadFits(codec, bytes.length - BINARY_OVERHEAD, claimed))
|
|
12030
|
+
return null;
|
|
12031
|
+
return {
|
|
12032
|
+
header: own2(bytes, 0, BINARY_HEADER_BYTES),
|
|
12033
|
+
codec,
|
|
12034
|
+
claimed,
|
|
12035
|
+
iv: own2(bytes, BINARY_HEADER_BYTES, BINARY_HEADER_BYTES + BINARY_IV_BYTES),
|
|
12036
|
+
sealed: own2(bytes, BINARY_HEADER_BYTES + BINARY_IV_BYTES)
|
|
12037
|
+
};
|
|
12038
|
+
}
|
|
12039
|
+
async function openBinary(key, envelope) {
|
|
12040
|
+
const payload = await crypto.subtle.decrypt({
|
|
12041
|
+
name: "AES-GCM",
|
|
12042
|
+
iv: envelope.iv,
|
|
12043
|
+
additionalData: envelope.header,
|
|
12044
|
+
tagLength: BINARY_TAG_BYTES * 8
|
|
12045
|
+
}, key, envelope.sealed);
|
|
12046
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(await expand(envelope.codec, new Uint8Array(payload), envelope.claimed));
|
|
12047
|
+
}
|
|
12048
|
+
function startsWith(bytes, prefix) {
|
|
12049
|
+
if (bytes.length < prefix.length)
|
|
12050
|
+
return false;
|
|
12051
|
+
return prefix.every((byte, i) => bytes[i] === byte);
|
|
11897
12052
|
}
|
|
11898
12053
|
async function decodeArtifact(key, bytes, expectedSha256) {
|
|
12054
|
+
const corrupt = { ok: false, failure: "corrupt" };
|
|
11899
12055
|
try {
|
|
11900
|
-
if (
|
|
11901
|
-
return
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
12056
|
+
if (bytes.length > MAX_ENVELOPE_BYTES)
|
|
12057
|
+
return corrupt;
|
|
12058
|
+
let unseal;
|
|
12059
|
+
if (startsWith(bytes, BINARY_MAGIC)) {
|
|
12060
|
+
const envelope = parseBinary(bytes);
|
|
12061
|
+
if (envelope === null)
|
|
12062
|
+
return corrupt;
|
|
12063
|
+
unseal = () => openBinary(key, envelope);
|
|
12064
|
+
} else if (startsWith(bytes, LEGACY_PREFIX)) {
|
|
12065
|
+
const text = new TextDecoder().decode(bytes);
|
|
12066
|
+
if (!isLegacyStructure(text))
|
|
12067
|
+
return corrupt;
|
|
12068
|
+
unseal = () => decrypt(key, text);
|
|
12069
|
+
} else {
|
|
12070
|
+
return corrupt;
|
|
11906
12071
|
}
|
|
12072
|
+
if (expectedSha256 !== null && await sha256Hex(bytes) !== expectedSha256)
|
|
12073
|
+
return corrupt;
|
|
12074
|
+
const parsed = JSON.parse(await unseal());
|
|
12075
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed))
|
|
12076
|
+
return corrupt;
|
|
11907
12077
|
return { ok: true, artifact: parsed };
|
|
11908
12078
|
} catch {
|
|
11909
|
-
return
|
|
12079
|
+
return corrupt;
|
|
11910
12080
|
}
|
|
11911
12081
|
}
|
|
11912
12082
|
async function writeArtifact(dir, relPath, bytes) {
|
|
@@ -13184,13 +13354,16 @@ function createBodyRepo(sql, key) {
|
|
|
13184
13354
|
return row;
|
|
13185
13355
|
},
|
|
13186
13356
|
async get(requestId) {
|
|
13187
|
-
const found = (await sql.unsafe(
|
|
13357
|
+
const found = (await sql.unsafe(`SELECT ${META},
|
|
13358
|
+
CASE WHEN octet_length(bytes) <= $2 THEN bytes ELSE NULL END AS bytes,
|
|
13359
|
+
octet_length(bytes) AS encoded_size
|
|
13360
|
+
FROM request_bodies WHERE request_id = $1`, [requestId, MAX_ENVELOPE_BYTES]))[0];
|
|
13188
13361
|
if (found === undefined)
|
|
13189
13362
|
return null;
|
|
13190
13363
|
const row = toRow(found);
|
|
13191
13364
|
if (row.relPath === null || row.detailState === "none")
|
|
13192
13365
|
return { row, artifact: null };
|
|
13193
|
-
const read = found.
|
|
13366
|
+
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
13367
|
if (read.ok) {
|
|
13195
13368
|
if (row.detailState !== "ready")
|
|
13196
13369
|
await recordState(requestId, "ready");
|
|
@@ -13278,6 +13451,7 @@ var DEFAULT_SETTINGS = {
|
|
|
13278
13451
|
breakerThreshold: 3,
|
|
13279
13452
|
breakerCooldownMs: 30000,
|
|
13280
13453
|
logRetentionDays: 30,
|
|
13454
|
+
bodyRetentionDays: 1,
|
|
13281
13455
|
quotaPollIntervalMs: 300000,
|
|
13282
13456
|
rtkEnabled: false,
|
|
13283
13457
|
autoCacheEnabled: true,
|
|
@@ -13347,6 +13521,7 @@ function createConfigRepo(sql, emit) {
|
|
|
13347
13521
|
rtkEnabled: stored.rtkEnabled === true,
|
|
13348
13522
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
13349
13523
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
13524
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
13350
13525
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
13351
13526
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
13352
13527
|
weights: knownWeights(stored.weights)
|
|
@@ -14836,6 +15011,7 @@ function createConfigRepo2(db, emit = () => {}) {
|
|
|
14836
15011
|
rtkEnabled: stored.rtkEnabled === true,
|
|
14837
15012
|
autoCacheEnabled: stored.autoCacheEnabled === undefined ? true : stored.autoCacheEnabled === true,
|
|
14838
15013
|
ponytailMode: isPonytailMode(stored.ponytailMode) ? stored.ponytailMode : "off",
|
|
15014
|
+
bodyRetentionDays: Number.isInteger(stored.bodyRetentionDays) && (stored.bodyRetentionDays ?? 0) >= 1 && (stored.bodyRetentionDays ?? 0) <= 3650 ? stored.bodyRetentionDays : DEFAULT_SETTINGS.bodyRetentionDays,
|
|
14839
15015
|
bodyLoggingEnabled: stored.bodyLoggingEnabled === true,
|
|
14840
15016
|
bodyLoggingCaptureStreamChunks: stored.bodyLoggingCaptureStreamChunks === true,
|
|
14841
15017
|
weights: knownWeights2(stored.weights)
|
|
@@ -25256,6 +25432,7 @@ var settingsSchema = object({
|
|
|
25256
25432
|
breakerThreshold: number2().int().min(1),
|
|
25257
25433
|
breakerCooldownMs: number2().int().positive(),
|
|
25258
25434
|
logRetentionDays: number2().int().min(1),
|
|
25435
|
+
bodyRetentionDays: retentionSchema.shape.maxAgeDays.optional(),
|
|
25259
25436
|
quotaPollIntervalMs: number2().int().min(0),
|
|
25260
25437
|
rtkEnabled: boolean2(),
|
|
25261
25438
|
autoCacheEnabled: boolean2(),
|
|
@@ -27918,9 +28095,10 @@ async function getSettings(store) {
|
|
|
27918
28095
|
return store.config.getSettings();
|
|
27919
28096
|
}
|
|
27920
28097
|
async function putSettings(store, input) {
|
|
27921
|
-
const { snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
28098
|
+
const { bodyRetentionDays, snapshotKeepLatest, snapshotMaxAgeDays, ...rest } = parseOrThrow(settingsSchema, input);
|
|
27922
28099
|
const patch = {
|
|
27923
28100
|
...rest,
|
|
28101
|
+
...bodyRetentionDays === undefined ? {} : { bodyRetentionDays },
|
|
27924
28102
|
...snapshotKeepLatest === undefined ? {} : { snapshotKeepLatest },
|
|
27925
28103
|
...snapshotMaxAgeDays === undefined ? {} : { snapshotMaxAgeDays }
|
|
27926
28104
|
};
|
|
@@ -49079,7 +49257,7 @@ function createRing(limits = DEFAULT_RING_LIMITS) {
|
|
|
49079
49257
|
}
|
|
49080
49258
|
|
|
49081
49259
|
// apps/gateway/src/version.ts
|
|
49082
|
-
var VERSION = "0.13.
|
|
49260
|
+
var VERSION = "0.13.6";
|
|
49083
49261
|
|
|
49084
49262
|
// apps/gateway/src/app.ts
|
|
49085
49263
|
var ADMIN_SESSION_TTL_MS = 12 * 60 * 60 * 1000;
|
|
@@ -49868,7 +50046,8 @@ async function pruneLogs(store, now) {
|
|
|
49868
50046
|
const raw = await store.usage.prune(rawHorizon);
|
|
49869
50047
|
const daily = await store.usage.pruneDaily(now - ROLLUP_RETENTION_DAYS * DAY_MS4);
|
|
49870
50048
|
const quotaSamples = await store.credentials.pruneQuotaSamples(rawHorizon);
|
|
49871
|
-
const
|
|
50049
|
+
const bodyHorizon = now - Math.min(settings.bodyRetentionDays, settings.logRetentionDays) * DAY_MS4;
|
|
50050
|
+
const bodies = await store.bodies.prune(bodyHorizon);
|
|
49872
50051
|
const bodiesOverCap = await store.bodies.pruneToCap();
|
|
49873
50052
|
const bodyOrphans = await store.bodies.sweepOrphans();
|
|
49874
50053
|
return { raw, daily, quotaSamples, bodies, bodiesOverCap, bodyOrphans };
|
|
@@ -50099,11 +50278,11 @@ function installPluginProviders(providers, logger, registry = OAUTH_PROVIDERS) {
|
|
|
50099
50278
|
}
|
|
50100
50279
|
|
|
50101
50280
|
// apps/gateway/src/plugins/loader.ts
|
|
50102
|
-
import { readdir as readdir2, readFile as
|
|
50281
|
+
import { readdir as readdir2, readFile as readFile2 } from "fs/promises";
|
|
50103
50282
|
import { join as join5, resolve as resolve5, sep as sep5 } from "path";
|
|
50104
50283
|
|
|
50105
50284
|
// apps/gateway/src/plugins/capabilities.ts
|
|
50106
|
-
import { mkdir as mkdir2, readFile
|
|
50285
|
+
import { mkdir as mkdir2, readFile, realpath, writeFile as writeFile2 } from "fs/promises";
|
|
50107
50286
|
import { dirname as dirname4, resolve as resolve4, sep as sep4 } from "path";
|
|
50108
50287
|
async function resolveInside(root, path) {
|
|
50109
50288
|
const rootReal = await realpath(root);
|
|
@@ -50133,7 +50312,7 @@ function createPluginFiles(root) {
|
|
|
50133
50312
|
async read(path) {
|
|
50134
50313
|
const target = await ensureRootThen(root, () => resolveInside(root, path));
|
|
50135
50314
|
try {
|
|
50136
|
-
const data = await
|
|
50315
|
+
const data = await readFile(target);
|
|
50137
50316
|
return new Uint8Array(data);
|
|
50138
50317
|
} catch {
|
|
50139
50318
|
return null;
|
|
@@ -50147,7 +50326,7 @@ function createPluginFiles(root) {
|
|
|
50147
50326
|
async exists(path) {
|
|
50148
50327
|
const target = await ensureRootThen(root, () => resolveInside(root, path));
|
|
50149
50328
|
try {
|
|
50150
|
-
await
|
|
50329
|
+
await readFile(target);
|
|
50151
50330
|
return true;
|
|
50152
50331
|
} catch {
|
|
50153
50332
|
return false;
|
|
@@ -50254,7 +50433,7 @@ async function loadPlugins(deps) {
|
|
|
50254
50433
|
};
|
|
50255
50434
|
let manifest;
|
|
50256
50435
|
try {
|
|
50257
|
-
const raw = await
|
|
50436
|
+
const raw = await readFile2(join5(home, "omni-plugin.json"), "utf8");
|
|
50258
50437
|
const parsed = safeParseManifest(JSON.parse(raw));
|
|
50259
50438
|
if (!parsed.ok) {
|
|
50260
50439
|
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">
|