cartethyia 2.5.2 → 2.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dashboard/assets/{BannedPage-MsQaeQTs.js → BannedPage-hfCzi-Ux.js} +1 -1
- package/dist/dashboard/assets/BannedPage-hfCzi-Ux.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolDetailPage-BO9nKg9w.js → CliToolDetailPage-DLGqYEwI.js} +1 -1
- package/dist/dashboard/assets/CliToolDetailPage-DLGqYEwI.js.gz +0 -0
- package/dist/dashboard/assets/{CliToolsPage-DfWHTJ7v.js → CliToolsPage-DEDyKBlC.js} +1 -1
- package/dist/dashboard/assets/CliToolsPage-DEDyKBlC.js.gz +0 -0
- package/dist/dashboard/assets/{CombosPage-BrCBQDAc.js → CombosPage-CfuYiQ8Z.js} +1 -1
- package/dist/dashboard/assets/CombosPage-CfuYiQ8Z.js.gz +0 -0
- package/dist/dashboard/assets/{ConsoleLogPage-C6Uh33er.js → ConsoleLogPage-bsLuZmYH.js} +1 -1
- package/dist/dashboard/assets/ConsoleLogPage-bsLuZmYH.js.gz +0 -0
- package/dist/dashboard/assets/{CustomizationPage-8aS9hyJu.js → CustomizationPage-_UWhwziJ.js} +1 -1
- package/dist/dashboard/assets/CustomizationPage-_UWhwziJ.js.gz +0 -0
- package/dist/dashboard/assets/{HealthEventsModal-qomXThxX.js → HealthEventsModal-Cjfc5WFS.js} +1 -1
- package/dist/dashboard/assets/HealthEventsModal-Cjfc5WFS.js.gz +0 -0
- package/dist/dashboard/assets/{LoginPage-C8hKyXBe.js → LoginPage-DDVIfZGW.js} +1 -1
- package/dist/dashboard/assets/LoginPage-DDVIfZGW.js.gz +0 -0
- package/dist/dashboard/assets/{OverviewPage-C-ExCy1V.js → OverviewPage-B53YYMng.js} +1 -1
- package/dist/dashboard/assets/OverviewPage-B53YYMng.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js +3 -0
- package/dist/dashboard/assets/ProviderDetailPage-B0KaAQf0.js.gz +0 -0
- package/dist/dashboard/assets/{ProvidersPage-BS9IEpvv.js → ProvidersPage-Dx31DgIO.js} +1 -1
- package/dist/dashboard/assets/ProvidersPage-Dx31DgIO.js.gz +0 -0
- package/dist/dashboard/assets/{ProxyPage-Rn_qXScb.js → ProxyPage-BpnR4kXT.js} +1 -1
- package/dist/dashboard/assets/ProxyPage-BpnR4kXT.js.gz +0 -0
- package/dist/dashboard/assets/{QuotaPage-BihkgQSq.js → QuotaPage-BpOQCnun.js} +1 -1
- package/dist/dashboard/assets/QuotaPage-BpOQCnun.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js +1 -0
- package/dist/dashboard/assets/SettingsPage-DV1eo2J_.js.gz +0 -0
- package/dist/dashboard/assets/{SetupPage-CXjUlfqr.js → SetupPage-D6pmQ86L.js} +1 -1
- package/dist/dashboard/assets/SetupPage-D6pmQ86L.js.gz +0 -0
- package/dist/dashboard/assets/{SortableList-C-_oD3F2.js → SortableList-DWvKiuSl.js} +1 -1
- package/dist/dashboard/assets/SortableList-DWvKiuSl.js.gz +0 -0
- package/dist/dashboard/assets/{StudioPage-u9IxmYOI.js → StudioPage-CmkUrgdj.js} +1 -1
- package/dist/dashboard/assets/StudioPage-CmkUrgdj.js.gz +0 -0
- package/dist/dashboard/assets/{UsagePage-BEVLVrwP.js → UsagePage-B47uOydr.js} +1 -1
- package/dist/dashboard/assets/UsagePage-B47uOydr.js.gz +0 -0
- package/dist/dashboard/assets/{entry-Dj9AR0gY.js → entry-CkryrIea.js} +3 -3
- package/dist/dashboard/assets/entry-CkryrIea.js.gz +0 -0
- package/dist/dashboard/assets/{index-DCBtROoK.js → index-BydyKaDz.js} +2 -2
- package/dist/dashboard/assets/index-BydyKaDz.js.gz +0 -0
- package/dist/dashboard/assets/{select-DsX5QT8K.js → select-BO6h8yNv.js} +1 -1
- package/dist/dashboard/assets/select-BO6h8yNv.js.gz +0 -0
- package/dist/dashboard/index.html +1 -1
- package/dist/dashboard/index.html.gz +0 -0
- package/dist/dashboard/precompressed-assets.json +21 -21
- package/package.json +1 -1
- package/scripts/cli/command/console-menu.ts +248 -246
- package/scripts/cli/command/tray.ts +208 -204
- package/src/config/spec.ts +26 -2
- package/src/console/backup/routes.ts +52 -1
- package/src/console/backup/service.ts +60 -4
- package/src/console/share/share-router.ts +6 -9
- package/src/observability/payload-capture.ts +366 -344
- package/src/observability/payload-store.ts +12 -2
- package/src/observability/telemetry-status.ts +28 -16
- package/src/persistence/stores/api-key-store.ts +6 -0
- package/src/persistence/stores/share-store.ts +583 -556
- package/src/persistence/stores/telemetry-store.ts +1 -1
- package/src/protocol/response/gemini.ts +18 -4
- package/src/providers/integrations/antigravity/antigravity-quota.ts +11 -3
- package/src/providers/integrations/buddy/buddy-catalog-shared.ts +4 -4
- package/src/providers/integrations/buddy/workbuddy/shared.ts +201 -200
- package/src/providers/integrations/cline/cline-quota.ts +8 -11
- package/src/providers/integrations/opencode/provider.ts +532 -532
- package/src/providers/integrations/tokenharbor.ts +2 -2
- package/src/providers/integrations/trae/trae-catalog.ts +5 -3
- package/src/providers/operations/account-health-service.ts +23 -0
- package/src/providers/operations/client-versions.ts +9 -2
- package/src/providers/provider-metadata.ts +7 -1
- package/src/transport/dispatch/attempt-finalize.ts +46 -5
- package/src/transport/dispatch/proxy-request.ts +9 -0
- package/src/transport/dispatch/streaming/stream.ts +16 -2
- package/src/transport/routing/route-catalog.ts +806 -799
- package/dist/dashboard/assets/BannedPage-MsQaeQTs.js.gz +0 -0
- package/dist/dashboard/assets/CliToolDetailPage-BO9nKg9w.js.gz +0 -0
- package/dist/dashboard/assets/CliToolsPage-DfWHTJ7v.js.gz +0 -0
- package/dist/dashboard/assets/CombosPage-BrCBQDAc.js.gz +0 -0
- package/dist/dashboard/assets/ConsoleLogPage-C6Uh33er.js.gz +0 -0
- package/dist/dashboard/assets/CustomizationPage-8aS9hyJu.js.gz +0 -0
- package/dist/dashboard/assets/HealthEventsModal-qomXThxX.js.gz +0 -0
- package/dist/dashboard/assets/LoginPage-C8hKyXBe.js.gz +0 -0
- package/dist/dashboard/assets/OverviewPage-C-ExCy1V.js.gz +0 -0
- package/dist/dashboard/assets/ProviderDetailPage-tr811uaF.js +0 -3
- package/dist/dashboard/assets/ProviderDetailPage-tr811uaF.js.gz +0 -0
- package/dist/dashboard/assets/ProvidersPage-BS9IEpvv.js.gz +0 -0
- package/dist/dashboard/assets/ProxyPage-Rn_qXScb.js.gz +0 -0
- package/dist/dashboard/assets/QuotaPage-BihkgQSq.js.gz +0 -0
- package/dist/dashboard/assets/SettingsPage-DhiEjm6T.js +0 -1
- package/dist/dashboard/assets/SettingsPage-DhiEjm6T.js.gz +0 -0
- package/dist/dashboard/assets/SetupPage-CXjUlfqr.js.gz +0 -0
- package/dist/dashboard/assets/SortableList-C-_oD3F2.js.gz +0 -0
- package/dist/dashboard/assets/StudioPage-u9IxmYOI.js.gz +0 -0
- package/dist/dashboard/assets/UsagePage-BEVLVrwP.js.gz +0 -0
- package/dist/dashboard/assets/entry-Dj9AR0gY.js.gz +0 -0
- package/dist/dashboard/assets/index-DCBtROoK.js.gz +0 -0
- package/dist/dashboard/assets/select-DsX5QT8K.js.gz +0 -0
|
@@ -23,7 +23,6 @@ import type { ShareFamilyStats, ShareStatsPort } from "./share-stats";
|
|
|
23
23
|
import { consoleSseResponse, createConsoleSseStream } from "../observability/sse";
|
|
24
24
|
import { GatewayError, publicGatewayErrorBody } from "../../protocol/gateway-error";
|
|
25
25
|
import {
|
|
26
|
-
hashShareToken,
|
|
27
26
|
type ShareLinkPolicy,
|
|
28
27
|
type ShareLinkRefusal,
|
|
29
28
|
type ShareLinkStore,
|
|
@@ -224,7 +223,7 @@ async function resolveFamilyStats(
|
|
|
224
223
|
stats: ShareStatsPort,
|
|
225
224
|
token: string,
|
|
226
225
|
): Promise<ShareFamilyStats | null> {
|
|
227
|
-
const resolved = await shareStore.resolveShareLink(
|
|
226
|
+
const resolved = await shareStore.resolveShareLink(token);
|
|
228
227
|
if (resolved === null) return null;
|
|
229
228
|
const templateId = resolved.key.id;
|
|
230
229
|
const tenantId = resolved.key.tenantId;
|
|
@@ -267,8 +266,7 @@ export function createShareRouter(options: ShareRouterOptions): Elysia {
|
|
|
267
266
|
if (typeof params.token !== "string") return notFound();
|
|
268
267
|
const token = params.token;
|
|
269
268
|
if (token.length < MIN_TOKEN_LENGTH) return notFound();
|
|
270
|
-
const
|
|
271
|
-
const outcome = await shareStore.resolveShareLinkOutcome(tokenHash);
|
|
269
|
+
const outcome = await shareStore.resolveShareLinkOutcome(token);
|
|
272
270
|
if (!outcome.ok) return notFound(outcome.refusal);
|
|
273
271
|
const resolved = outcome.resolution;
|
|
274
272
|
const row = resolved.key;
|
|
@@ -276,7 +274,7 @@ export function createShareRouter(options: ShareRouterOptions): Elysia {
|
|
|
276
274
|
const clientIpKey = clientIp === null ? undefined : canonicalClientIpKey(clientIp);
|
|
277
275
|
const models = await modelsForShare(db, row);
|
|
278
276
|
const modelInfo = await modelInfoForShare(db, row, models);
|
|
279
|
-
void shareStore.touchView(
|
|
277
|
+
void shareStore.touchView(token).catch(() => undefined);
|
|
280
278
|
const policy = {
|
|
281
279
|
name: row.name,
|
|
282
280
|
keyPrefix: row.keyPrefix,
|
|
@@ -330,7 +328,7 @@ export function createShareRouter(options: ShareRouterOptions): Elysia {
|
|
|
330
328
|
if (typeof params.token !== "string") return notFound();
|
|
331
329
|
const token = params.token;
|
|
332
330
|
if (token.length < MIN_TOKEN_LENGTH) return notFound();
|
|
333
|
-
const resolved = await shareStore.resolveShareLink(
|
|
331
|
+
const resolved = await shareStore.resolveShareLink(token);
|
|
334
332
|
const image = resolved?.key.sharePopupImage;
|
|
335
333
|
const mime = resolved?.key.sharePopupImageMime;
|
|
336
334
|
if (!image || !mime) return notFound();
|
|
@@ -355,8 +353,7 @@ export function createShareRouter(options: ShareRouterOptions): Elysia {
|
|
|
355
353
|
if (clientIpKey === undefined)
|
|
356
354
|
return json({ error: { code: "client_ip_invalid", message: "Client IP could not be normalized" } }, 400);
|
|
357
355
|
|
|
358
|
-
const
|
|
359
|
-
const outcome = await shareStore.resolveShareLinkOutcome(tokenHash);
|
|
356
|
+
const outcome = await shareStore.resolveShareLinkOutcome(token);
|
|
360
357
|
// A handoff link reveals an existing key; it never mints one.
|
|
361
358
|
if (!outcome.ok) return notFound(outcome.refusal);
|
|
362
359
|
const resolved = outcome.resolution;
|
|
@@ -374,7 +371,7 @@ export function createShareRouter(options: ShareRouterOptions): Elysia {
|
|
|
374
371
|
}
|
|
375
372
|
const template = resolved.key;
|
|
376
373
|
const generated = generateApiKeySecret(resolveShareKeyPrefix(template.keyPrefix ?? undefined));
|
|
377
|
-
const issued = await shareStore.issueSharedApiKey(
|
|
374
|
+
const issued = await shareStore.issueSharedApiKey(token, {
|
|
378
375
|
keyHash: generated.hash,
|
|
379
376
|
keyPrefix: generated.prefix,
|
|
380
377
|
clientIp,
|