@codexhost/cli-darwin-arm64 0.18.0-beta.1 → 0.18.0-beta.4
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/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +109 -94
- package/app/console-web.js +110 -95
- package/app/desktop-controller.mjs +109 -110
- package/app/host-runtime.mjs +14225 -10527
- package/app/plugins/antigravity/plugin.mjs +109 -94
- package/app/plugins/claude-code/plugin.mjs +229 -148
- package/app/plugins/codebuddy/plugin.mjs +109 -94
- package/app/plugins/codex-usage/plugin.mjs +109 -94
- package/app/plugins/copilot/plugin.mjs +109 -94
- package/app/plugins/cursor-cli/plugin.mjs +109 -94
- package/app/plugins/deepseek-harness/plugin.mjs +109 -94
- package/app/plugins/devin/plugin.mjs +109 -94
- package/app/plugins/enabled.json +0 -1
- package/app/plugins/grok/plugin.mjs +109 -94
- package/app/plugins/hermes/plugin.mjs +109 -94
- package/app/plugins/kimi-code/plugin.mjs +109 -94
- package/app/plugins/kiro-cli/plugin.mjs +109 -94
- package/app/plugins/omp/plugin.mjs +109 -94
- package/app/plugins/opencode/plugin.mjs +109 -94
- package/app/plugins/pi/plugin.mjs +109 -94
- package/app/plugins/qoder/plugin.mjs +109 -94
- package/app/plugins/qoder-cn/plugin.mjs +109 -94
- package/app/plugins/qwen-code/plugin.mjs +109 -94
- package/app/plugins/workbuddy/plugin.mjs +109 -94
- package/app/plugins/zcode/plugin.mjs +109 -94
- package/app/renderer-extension.js +128 -150
- package/app/web/assets/index-C3lniEH1.css +1 -0
- package/app/web/assets/index-D1dOzBMI.js +199 -0
- package/app/web/codexhost-settings.js +110 -95
- package/app/web/index.html +2 -2
- package/app/web/plugins/deepseek-ai__dsh-api-gateway/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-api-remotes/client.js +64 -64
- package/app/web/plugins/deepseek-ai__dsh-api-session-controller/client.js +69 -69
- package/app/web/plugins/deepseek-ai__dsh-client-connection/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-chat/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +57 -56
- package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +87 -87
- package/app/web/plugins/deepseek-ai__dsh-client-ui-directory-picker-browse/client.js +10 -10
- package/app/web/plugins/deepseek-ai__dsh-client-ui-input-trigger/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +3 -3
- package/app/web/plugins/deepseek-ai__dsh-client-ui-model-selection/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-permission-presets/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-settings/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-settings-general/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar-right/client.js +55 -55
- package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +18 -18
- package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -12
- package/app/web/plugins.json +4 -0
- package/app/web/sw.js +55 -24
- package/app/web-modules/server.mjs +1415 -784
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
- package/app/plugins/codex-cli/manifest.json +0 -16
- package/app/plugins/codex-cli/plugin.mjs +0 -20374
- package/app/web/assets/index-CIeTchMu.css +0 -1
- package/app/web/assets/index-DeAPBQbV.js +0 -199
- /package/app/{plugins/codex-cli/assets/icon.png → web/codex.png} +0 -0
|
@@ -14638,7 +14638,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14638
14638
|
var nonBlankTextSchema = external_exports.string().refine((value) => value.trim().length > 0, {
|
|
14639
14639
|
message: "Value must not be empty or whitespace"
|
|
14640
14640
|
});
|
|
14641
|
-
var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._
|
|
14641
|
+
var harnessPermissionModeIdSchema = nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_ID_MAX_LENGTH).regex(/^[A-Za-z0-9._~:-]+$/u, "Permission Mode ID must use transport-safe characters").brand();
|
|
14642
14642
|
var harnessPermissionModeSchema = external_exports.object({
|
|
14643
14643
|
id: harnessPermissionModeIdSchema,
|
|
14644
14644
|
label: nonBlankTextSchema.max(HARNESS_PERMISSION_MODE_LABEL_MAX_LENGTH),
|
|
@@ -15023,7 +15023,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15023
15023
|
}).strict();
|
|
15024
15024
|
var codexThreadInspectionSchema = external_exports.object({
|
|
15025
15025
|
owner: external_exports.literal("codex"),
|
|
15026
|
-
locked: external_exports.
|
|
15026
|
+
locked: external_exports.boolean(),
|
|
15027
|
+
effectiveModel: harnessModelRefSchema.optional(),
|
|
15028
|
+
resolvedModelLabel: harnessResolvedModelLabelSchema.optional(),
|
|
15029
|
+
effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
|
|
15030
|
+
effectivePermissionModeId: harnessPermissionModeIdSchema.optional(),
|
|
15031
|
+
history: harnessHistoryCapabilitiesSchema.optional(),
|
|
15027
15032
|
supportsThreadReferences: external_exports.literal(true).optional()
|
|
15028
15033
|
}).strict();
|
|
15029
15034
|
var externalThreadInspectionSchema = external_exports.object({
|
|
@@ -15245,7 +15250,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15245
15250
|
thread: external_exports.object({
|
|
15246
15251
|
id: external_exports.string().min(1),
|
|
15247
15252
|
cwd: external_exports.string(),
|
|
15248
|
-
|
|
15253
|
+
/** External rows use codexhost; native Codex rows retain their official provider. */
|
|
15254
|
+
modelProvider: external_exports.string().min(1),
|
|
15249
15255
|
createdAt: external_exports.number(),
|
|
15250
15256
|
updatedAt: external_exports.number(),
|
|
15251
15257
|
status: external_exports.object({ type: external_exports.string() }).passthrough(),
|
|
@@ -15259,6 +15265,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15259
15265
|
nextCursor: external_exports.string().nullable()
|
|
15260
15266
|
}),
|
|
15261
15267
|
configuration: external_exports.object({
|
|
15268
|
+
/** Native Codex model names are not external Harness transport refs. */
|
|
15269
|
+
native: external_exports.object({
|
|
15270
|
+
model: external_exports.string().min(1).max(1024).optional(),
|
|
15271
|
+
reasoningEffort: external_exports.string().min(1).max(128).optional()
|
|
15272
|
+
}).optional(),
|
|
15262
15273
|
effectiveModel: harnessModelRefSchema.optional(),
|
|
15263
15274
|
effectiveThinkingOptionId: harnessThinkingOptionIdSchema.optional(),
|
|
15264
15275
|
effectivePermissionModeId: harnessPermissionModeIdSchema.optional()
|
|
@@ -15285,6 +15296,21 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15285
15296
|
result: record2
|
|
15286
15297
|
});
|
|
15287
15298
|
|
|
15299
|
+
// ../shared-contracts/dist/thread-catalog.js
|
|
15300
|
+
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15301
|
+
includeArchived: external_exports.boolean().optional(),
|
|
15302
|
+
/** Absent means first page; null means this branch is exhausted. Native cursors only. */
|
|
15303
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15304
|
+
}).strict();
|
|
15305
|
+
var threadCatalogReadResultSchema = external_exports.object({
|
|
15306
|
+
threads: external_exports.array(jsonObjectSchema),
|
|
15307
|
+
ownership: external_exports.array(threadOwnershipSchema),
|
|
15308
|
+
/** Known archived IDs, including visible local external records even when their rows are
|
|
15309
|
+
* excluded. Native archived IDs describe only the returned page, never a complete set. */
|
|
15310
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema),
|
|
15311
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15312
|
+
}).strict();
|
|
15313
|
+
|
|
15288
15314
|
// ../shared-contracts/dist/voice.js
|
|
15289
15315
|
var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
|
|
15290
15316
|
var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
|
|
@@ -15522,84 +15548,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15522
15548
|
});
|
|
15523
15549
|
var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
|
|
15524
15550
|
enabled: false,
|
|
15525
|
-
timeoutMinutes:
|
|
15526
|
-
});
|
|
15527
|
-
|
|
15528
|
-
// ../shared-contracts/dist/harness-plugins.js
|
|
15529
|
-
var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
|
|
15530
|
-
var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
|
|
15531
|
-
var HARNESS_PLUGIN_LIMIT = 128;
|
|
15532
|
-
var HARNESS_PLUGIN_SURFACES = ["desktop", "web"];
|
|
15533
|
-
var harnessPluginSurfaceSchema = external_exports.enum(HARNESS_PLUGIN_SURFACES);
|
|
15534
|
-
var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
|
|
15535
|
-
var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
|
|
15536
|
-
var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
|
|
15537
|
-
var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
|
|
15538
|
-
var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
|
|
15539
|
-
var harnessInstallationGuideSchema = external_exports.object({
|
|
15540
|
-
commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
|
|
15541
|
-
before: localizedTextSchema.optional(),
|
|
15542
|
-
after: localizedTextSchema.optional(),
|
|
15543
|
-
downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
|
|
15544
|
-
}).strict();
|
|
15545
|
-
var pluginPresentationShape = {
|
|
15546
|
-
id: installedHarnessPluginIdSchema,
|
|
15547
|
-
name: external_exports.string().trim().min(1).max(128),
|
|
15548
|
-
version: external_exports.string().min(1).max(128),
|
|
15549
|
-
/** Capability-only plugin; omitted for existing session-capable plugins. */
|
|
15550
|
-
kind: external_exports.literal("usage").optional(),
|
|
15551
|
-
/** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
|
|
15552
|
-
iconStyle: external_exports.object({
|
|
15553
|
-
vector: external_exports.object({
|
|
15554
|
-
viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
|
|
15555
|
-
color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
|
|
15556
|
-
paths: external_exports.array(external_exports.object({
|
|
15557
|
-
d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
|
|
15558
|
-
fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
|
|
15559
|
-
fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
|
|
15560
|
-
}).strict()).min(1).max(32)
|
|
15561
|
-
}).strict().optional(),
|
|
15562
|
-
background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
|
|
15563
|
-
borderRadius: external_exports.number().min(0).max(50).optional(),
|
|
15564
|
-
paddingRatio: external_exports.number().min(0).max(0.25).optional()
|
|
15565
|
-
}).strict().optional(),
|
|
15566
|
-
installation: harnessInstallationGuideSchema.optional(),
|
|
15567
|
-
notice: localizedTextSchema.optional(),
|
|
15568
|
-
/** The factory accepts a persisted local entrypoint through its construction context. */
|
|
15569
|
-
launchCommand: external_exports.literal(true).optional(),
|
|
15570
|
-
links: external_exports.object({
|
|
15571
|
-
website: documentationUrlSchema.optional(),
|
|
15572
|
-
documentation: documentationUrlSchema.optional(),
|
|
15573
|
-
installation: documentationUrlSchema.optional()
|
|
15574
|
-
}).strict().optional()
|
|
15575
|
-
};
|
|
15576
|
-
var harnessPluginSurfacesSchema = external_exports.array(harnessPluginSurfaceSchema).min(1).max(HARNESS_PLUGIN_SURFACES.length).refine((surfaces) => new Set(surfaces).size === surfaces.length, {
|
|
15577
|
-
message: "Plugin surfaces must be unique"
|
|
15578
|
-
});
|
|
15579
|
-
var harnessPluginManifestSchema = external_exports.object({
|
|
15580
|
-
manifestVersion: external_exports.literal(1),
|
|
15581
|
-
...pluginPresentationShape,
|
|
15582
|
-
adapterApiVersion: external_exports.number().int().positive(),
|
|
15583
|
-
entry: relativeResourceSchema,
|
|
15584
|
-
icon: relativeResourceSchema.optional(),
|
|
15585
|
-
/** Omitted means the plugin appears in every surface; never inferred from its identity. */
|
|
15586
|
-
surfaces: harnessPluginSurfacesSchema.optional()
|
|
15587
|
-
}).strict();
|
|
15588
|
-
var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
|
|
15589
|
-
var harnessPluginDescriptorSchema = external_exports.object({
|
|
15590
|
-
...pluginPresentationShape,
|
|
15591
|
-
icon: harnessPluginIconSchema.optional()
|
|
15592
|
-
}).strict();
|
|
15593
|
-
var harnessPluginListParamsSchema = external_exports.object({}).strict();
|
|
15594
|
-
var harnessPluginListResultSchema = external_exports.object({
|
|
15595
|
-
plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
|
|
15596
|
-
}).strict();
|
|
15597
|
-
var harnessPluginConfigurationSchema = external_exports.object({
|
|
15598
|
-
version: external_exports.literal(1),
|
|
15599
|
-
enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
|
|
15600
|
-
}).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
|
|
15601
|
-
message: "Enabled plugin IDs must be unique",
|
|
15602
|
-
path: ["enabled"]
|
|
15551
|
+
timeoutMinutes: 10
|
|
15603
15552
|
});
|
|
15604
15553
|
|
|
15605
15554
|
// ../shared-contracts/dist/harness-preferences.js
|
|
@@ -15607,14 +15556,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15607
15556
|
var HARNESS_PREFERENCES_PATCH_METHOD = "codexhost/harness/preferences/patch";
|
|
15608
15557
|
var HARNESS_PREFERENCES_CHANGED_METHOD = "codexhost/harness/preferences/changed";
|
|
15609
15558
|
var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
|
|
15610
|
-
var preferenceHarnessKey =
|
|
15559
|
+
var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
|
|
15611
15560
|
var harnessDefaultConfigurationSchema = external_exports.strictObject({
|
|
15612
15561
|
model: harnessModelRefSchema.optional(),
|
|
15613
15562
|
thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
|
|
15614
15563
|
permissionModeId: harnessPermissionModeIdSchema.optional()
|
|
15615
15564
|
}).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
|
|
15616
15565
|
var newThreadDefaultsSchema = external_exports.strictObject({
|
|
15617
|
-
lastHarness:
|
|
15566
|
+
lastHarness: harnessIdSchema.optional(),
|
|
15618
15567
|
byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
|
|
15619
15568
|
});
|
|
15620
15569
|
var modelId = external_exports.string().min(1).max(1024);
|
|
@@ -15635,19 +15584,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15635
15584
|
external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
|
|
15636
15585
|
external_exports.strictObject({
|
|
15637
15586
|
kind: external_exports.literal("favorite"),
|
|
15638
|
-
harnessId:
|
|
15587
|
+
harnessId: harnessIdSchema,
|
|
15639
15588
|
modelId,
|
|
15640
15589
|
enabled: external_exports.boolean()
|
|
15641
15590
|
}),
|
|
15642
15591
|
external_exports.strictObject({
|
|
15643
15592
|
kind: external_exports.literal("favorites"),
|
|
15644
|
-
harnessId:
|
|
15593
|
+
harnessId: harnessIdSchema,
|
|
15645
15594
|
modelIds: external_exports.array(modelId).max(2048)
|
|
15646
15595
|
}),
|
|
15647
15596
|
external_exports.strictObject({
|
|
15648
15597
|
kind: external_exports.literal("newThread"),
|
|
15649
|
-
lastHarness:
|
|
15650
|
-
harnessId:
|
|
15598
|
+
lastHarness: harnessIdSchema.optional(),
|
|
15599
|
+
harnessId: harnessIdSchema.optional(),
|
|
15651
15600
|
configuration: harnessDefaultConfigurationSchema.optional()
|
|
15652
15601
|
})
|
|
15653
15602
|
]);
|
|
@@ -15663,12 +15612,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15663
15612
|
code: "custom",
|
|
15664
15613
|
message: "A default Harness or complete configuration is required"
|
|
15665
15614
|
});
|
|
15666
|
-
const harnessId = "harnessId" in operation ? operation.harnessId : void 0;
|
|
15667
|
-
if (harnessId === "codex")
|
|
15668
|
-
ctx.addIssue({
|
|
15669
|
-
code: "custom",
|
|
15670
|
-
message: "Official Codex is not an external Harness"
|
|
15671
|
-
});
|
|
15672
15615
|
}
|
|
15673
15616
|
});
|
|
15674
15617
|
var harnessPreferencesDocumentSchema = external_exports.strictObject({
|
|
@@ -16064,6 +16007,76 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16064
16007
|
accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
|
|
16065
16008
|
}).strict();
|
|
16066
16009
|
|
|
16010
|
+
// ../shared-contracts/dist/harness-plugins.js
|
|
16011
|
+
var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
|
|
16012
|
+
var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
|
|
16013
|
+
var HARNESS_PLUGIN_LIMIT = 128;
|
|
16014
|
+
var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
|
|
16015
|
+
var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
|
|
16016
|
+
var relativeResourceSchema = external_exports.string().min(1).max(512).refine((value) => !/[\\\u0000:#?]/u.test(value) && !value.startsWith("/") && !value.split("/").some((part) => part === ".." || part === ""), "Plugin resources must be relative paths inside the plugin");
|
|
16017
|
+
var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
|
|
16018
|
+
var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
|
|
16019
|
+
var harnessInstallationGuideSchema = external_exports.object({
|
|
16020
|
+
commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
|
|
16021
|
+
before: localizedTextSchema.optional(),
|
|
16022
|
+
after: localizedTextSchema.optional(),
|
|
16023
|
+
downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
|
|
16024
|
+
}).strict();
|
|
16025
|
+
var pluginPresentationShape = {
|
|
16026
|
+
id: installedHarnessPluginIdSchema,
|
|
16027
|
+
name: external_exports.string().trim().min(1).max(128),
|
|
16028
|
+
version: external_exports.string().min(1).max(128),
|
|
16029
|
+
/** Capability-only plugin; omitted for existing session-capable plugins. */
|
|
16030
|
+
kind: external_exports.literal("usage").optional(),
|
|
16031
|
+
/** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
|
|
16032
|
+
iconStyle: external_exports.object({
|
|
16033
|
+
vector: external_exports.object({
|
|
16034
|
+
viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
|
|
16035
|
+
color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
|
|
16036
|
+
paths: external_exports.array(external_exports.object({
|
|
16037
|
+
d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
|
|
16038
|
+
fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
|
|
16039
|
+
fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
|
|
16040
|
+
}).strict()).min(1).max(32)
|
|
16041
|
+
}).strict().optional(),
|
|
16042
|
+
background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
|
|
16043
|
+
borderRadius: external_exports.number().min(0).max(50).optional(),
|
|
16044
|
+
paddingRatio: external_exports.number().min(0).max(0.25).optional()
|
|
16045
|
+
}).strict().optional(),
|
|
16046
|
+
installation: harnessInstallationGuideSchema.optional(),
|
|
16047
|
+
notice: localizedTextSchema.optional(),
|
|
16048
|
+
/** The factory accepts a persisted local entrypoint through its construction context. */
|
|
16049
|
+
launchCommand: external_exports.literal(true).optional(),
|
|
16050
|
+
links: external_exports.object({
|
|
16051
|
+
website: documentationUrlSchema.optional(),
|
|
16052
|
+
documentation: documentationUrlSchema.optional(),
|
|
16053
|
+
installation: documentationUrlSchema.optional()
|
|
16054
|
+
}).strict().optional()
|
|
16055
|
+
};
|
|
16056
|
+
var harnessPluginManifestSchema = external_exports.object({
|
|
16057
|
+
manifestVersion: external_exports.literal(1),
|
|
16058
|
+
...pluginPresentationShape,
|
|
16059
|
+
adapterApiVersion: external_exports.number().int().positive(),
|
|
16060
|
+
entry: relativeResourceSchema,
|
|
16061
|
+
icon: relativeResourceSchema.optional()
|
|
16062
|
+
}).strict();
|
|
16063
|
+
var harnessPluginIconSchema = external_exports.string().max(Math.ceil(HARNESS_PLUGIN_ICON_MAX_BYTES / 3) * 4 + 64).regex(/^data:image\/(?:png|jpeg|webp|svg\+xml);base64,[A-Za-z0-9+/]+={0,2}$/u);
|
|
16064
|
+
var harnessPluginDescriptorSchema = external_exports.object({
|
|
16065
|
+
...pluginPresentationShape,
|
|
16066
|
+
icon: harnessPluginIconSchema.optional()
|
|
16067
|
+
}).strict();
|
|
16068
|
+
var harnessPluginListParamsSchema = external_exports.object({}).strict();
|
|
16069
|
+
var harnessPluginListResultSchema = external_exports.object({
|
|
16070
|
+
plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
|
|
16071
|
+
}).strict();
|
|
16072
|
+
var harnessPluginConfigurationSchema = external_exports.object({
|
|
16073
|
+
version: external_exports.literal(1),
|
|
16074
|
+
enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
|
|
16075
|
+
}).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
|
|
16076
|
+
message: "Enabled plugin IDs must be unique",
|
|
16077
|
+
path: ["enabled"]
|
|
16078
|
+
});
|
|
16079
|
+
|
|
16067
16080
|
// ../shared-contracts/dist/harness-route.js
|
|
16068
16081
|
var harnessPluginRouteSchema = external_exports.object({
|
|
16069
16082
|
harnessId: harnessPluginIdSchema,
|
|
@@ -16263,6 +16276,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16263
16276
|
}).strict();
|
|
16264
16277
|
var harnessCommandCatalogSchema = external_exports.object({
|
|
16265
16278
|
commands: external_exports.array(harnessCommandDescriptorSchema),
|
|
16279
|
+
/** Partial discovery failures; valid commands remain available. */
|
|
16280
|
+
warnings: external_exports.array(external_exports.string().min(1)).optional(),
|
|
16266
16281
|
/**
|
|
16267
16282
|
* `live` when the catalog includes what a native Session reports for its
|
|
16268
16283
|
* workspace (custom commands, skills); `static` for Adapter built-ins only.
|
|
@@ -16298,7 +16313,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16298
16313
|
}).strict();
|
|
16299
16314
|
var threadCommandExecuteResultSchema = external_exports.object({
|
|
16300
16315
|
accepted: external_exports.literal(true),
|
|
16301
|
-
turnId: hostTurnIdSchema
|
|
16316
|
+
turnId: hostTurnIdSchema.optional()
|
|
16302
16317
|
}).strict();
|
|
16303
16318
|
|
|
16304
16319
|
// ../shared-contracts/dist/json-rpc.js
|
|
@@ -32504,7 +32519,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
|
|
|
32504
32519
|
`;
|
|
32505
32520
|
|
|
32506
32521
|
// src/settings/tailwind.css
|
|
32507
|
-
var tailwind_default = '@layer properties, theme, base, components, utilities;\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-full{top:100%}.left-0{left:0}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-\\[45px\\]{margin-left:45px}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\\[60px\\]{min-height:60px}.w-9{width:calc(var(--spacing) * 9)}.w-14{width:calc(var(--spacing) * 14)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-64{max-width:calc(var(--spacing) * 64)}.min-w-0{min-width:0}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.overflow-x-auto{overflow-x:auto}.rounded-\\[10px\\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-settings-border{border-color:var(--settings-border)}.border-settings-divider{border-color:var(--settings-divider)}.bg-settings-panel{background-color:var(--settings-panel)}.bg-settings-subtle{background-color:var(--settings-subtle)}.bg-settings-surface{background-color:var(--settings-surface)}.bg-settings-surface-hover{background-color:var(--settings-surface-hover)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-4{padding:calc(var(--spacing) * 4)}.\\!px-0{padding-inline:0!important}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\\!text-right{text-align:right!important}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\\[18px\\]{--tw-leading:18px;line-height:18px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-settings-muted{color:var(--settings-muted)}.text-settings-subtle{color:var(--settings-subtle)}.text-settings-text{color:var(--settings-text)}.lowercase{text-transform:lowercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_10px_30px_rgb\\(0_0_0\\/0\\.22\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-settings-border{--tw-ring-color:var(--settings-border)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.ring-inset{--tw-ring-inset:inset}.group-focus-within\\:visible:is(:where(.group):focus-within *){visibility:visible}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\\[state\\=failed\\]\\/status\\:bg-settings-danger:is(:where(.group\\/status)[data-state=failed] *){background-color:var(--settings-danger)}.group-data-\\[state\\=unavailable\\]\\/status\\:bg-settings-warning:is(:where(.group\\/status)[data-state=unavailable] *){background-color:var(--settings-warning)}.marker\\:text-settings-subtle ::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle ::-webkit-details-marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::-webkit-details-marker{color:var(--settings-subtle)}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0\\.5:before{content:var(--tw-content);top:calc(var(--spacing) * .5)}.before\\:left-0\\.5:before{content:var(--tw-content);left:calc(var(--spacing) * .5)}.before\\:size-4:before{content:var(--tw-content);width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-white:before{content:var(--tw-content);background-color:#fff}.before\\:shadow-\\[0_1px_2px_rgb\\(0_0_0\\/0\\.3\\)\\]:before{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first-of-type\\:mt-0:first-of-type{margin-top:0}.checked\\:bg-settings-focus:checked{background-color:var(--settings-focus)}.checked\\:ring-transparent:checked{--tw-ring-color:transparent}.checked\\:before\\:translate-x-4:checked:before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.focus-within\\:border-settings-focus:focus-within{border-color:var(--settings-focus)}@media (hover:hover){.hover\\:bg-settings-hover:hover{background-color:var(--settings-hover)}.hover\\:text-settings-text:hover{color:var(--settings-text)}}.focus-visible\\:text-settings-text:focus-visible{color:var(--settings-text)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-settings-focus:focus-visible{outline-color:var(--settings-focus)}.data-\\[invalid\\=true\\]\\:border-settings-danger[data-invalid=true]{border-color:var(--settings-danger)}.data-\\[invalid\\=true\\]\\:text-settings-danger[data-invalid=true],.data-\\[state\\=failed\\]\\:text-settings-danger[data-state=failed]{color:var(--settings-danger)}.data-\\[state\\=unavailable\\]\\:text-settings-warning[data-state=unavailable]{color:var(--settings-warning)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@layer properties{\n *, ::before, ::after, ::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-drop-shadow-alpha:100%;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}\n';
|
|
32522
|
+
var tailwind_default = '@layer properties, theme, base, components, utilities;\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-full{top:100%}.left-0{left:0}.z-20{z-index:20}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-\\[45px\\]{margin-left:45px}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-\\[60px\\]{min-height:60px}.w-9{width:calc(var(--spacing) * 9)}.w-14{width:calc(var(--spacing) * 14)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-64{max-width:calc(var(--spacing) * 64)}.min-w-0{min-width:0}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.appearance-none{appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.overflow-x-auto{overflow-x:auto}.rounded-\\[10px\\]{border-radius:10px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-settings-border{border-color:var(--settings-border)}.border-settings-divider{border-color:var(--settings-divider)}.bg-settings-panel{background-color:var(--settings-panel)}.bg-settings-subtle{background-color:var(--settings-subtle)}.bg-settings-surface{background-color:var(--settings-surface)}.bg-settings-surface-hover{background-color:var(--settings-surface-hover)}.bg-transparent{background-color:#0000}.p-0{padding:0}.p-4{padding:calc(var(--spacing) * 4)}.\\!px-0{padding-inline:0!important}.px-1{padding-inline:var(--spacing)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\\!text-right{text-align:right!important}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\\[18px\\]{--tw-leading:18px;line-height:18px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-settings-muted{color:var(--settings-muted)}.text-settings-subtle{color:var(--settings-subtle)}.text-settings-text{color:var(--settings-text)}.lowercase{text-transform:lowercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-0{opacity:0}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_10px_30px_rgb\\(0_0_0\\/0\\.22\\)\\]{--tw-shadow:0 10px 30px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-settings-border{--tw-ring-color:var(--settings-border)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.ring-inset{--tw-ring-inset:inset}.group-focus-within\\:visible:is(:where(.group):focus-within *){visibility:visible}.group-focus-within\\:opacity-100:is(:where(.group):focus-within *){opacity:1}@media (hover:hover){.group-hover\\:visible:is(:where(.group):hover *){visibility:visible}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\\[state\\=failed\\]\\/status\\:bg-settings-danger:is(:where(.group\\/status)[data-state=failed] *){background-color:var(--settings-danger)}.group-data-\\[state\\=unavailable\\]\\/status\\:bg-settings-warning:is(:where(.group\\/status)[data-state=unavailable] *){background-color:var(--settings-warning)}.marker\\:text-settings-subtle ::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle ::-webkit-details-marker{color:var(--settings-subtle)}.marker\\:text-settings-subtle::-webkit-details-marker{color:var(--settings-subtle)}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-0\\.5:before{content:var(--tw-content);top:calc(var(--spacing) * .5)}.before\\:left-0\\.5:before{content:var(--tw-content);left:calc(var(--spacing) * .5)}.before\\:size-4:before{content:var(--tw-content);width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-white:before{content:var(--tw-content);background-color:#fff}.before\\:shadow-\\[0_1px_2px_rgb\\(0_0_0\\/0\\.3\\)\\]:before{content:var(--tw-content);--tw-shadow:0 1px 2px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\\:transition-transform:before{content:var(--tw-content);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.first\\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first-of-type\\:mt-0:first-of-type{margin-top:0}.checked\\:bg-settings-focus:checked{background-color:var(--settings-focus)}.checked\\:ring-transparent:checked{--tw-ring-color:transparent}.checked\\:before\\:translate-x-4:checked:before{content:var(--tw-content);--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.focus-within\\:border-settings-focus:focus-within{border-color:var(--settings-focus)}@media (hover:hover){.hover\\:bg-settings-hover:hover{background-color:var(--settings-hover)}.hover\\:text-settings-text:hover{color:var(--settings-text)}}.focus-visible\\:text-settings-text:focus-visible{color:var(--settings-text)}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-settings-focus:focus-visible{outline-color:var(--settings-focus)}.data-\\[invalid\\=true\\]\\:border-settings-danger[data-invalid=true]{border-color:var(--settings-danger)}.data-\\[invalid\\=true\\]\\:text-settings-danger[data-invalid=true],.data-\\[state\\=failed\\]\\:text-settings-danger[data-state=failed]{color:var(--settings-danger)}.data-\\[state\\=unavailable\\]\\:text-settings-warning[data-state=unavailable]{color:var(--settings-warning)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@layer properties{\n *, ::before, ::after, ::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-drop-shadow-alpha:100%;--tw-content:"";--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}\n';
|
|
32508
32523
|
|
|
32509
32524
|
// src/web-request-manager.ts
|
|
32510
32525
|
function webRequestManager() {
|
package/app/web/index.html
CHANGED
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
media="(prefers-color-scheme: light)"
|
|
27
27
|
/>
|
|
28
28
|
<title>CodexHost</title>
|
|
29
|
-
<script type="module" crossorigin src="./assets/index-
|
|
29
|
+
<script type="module" crossorigin src="./assets/index-D1dOzBMI.js"></script>
|
|
30
30
|
<link rel="modulepreload" crossorigin href="./assets/vendor-dSL872WO.js">
|
|
31
31
|
<link rel="stylesheet" crossorigin href="./assets/vendor-BNsW4eBh.css">
|
|
32
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
32
|
+
<link rel="stylesheet" crossorigin href="./assets/index-C3lniEH1.css">
|
|
33
33
|
</head>
|
|
34
34
|
<body>
|
|
35
35
|
<div id="root"></div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
window.__ModuleLoader__.load({id:`@deepseek-ai/dsh-api-gateway`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("@deepseek-ai/cordis");var i=class extends Error{code;details;isDSHRemoteError=!0;constructor(e,t,n,r){super(t,r),this.code=e,this.details=n,this.name=`RemoteError`}};function a(e){if(typeof e==`object`&&e&&e.isDSHRemoteError===!0&&typeof e.code==`string`)return e}let o=Symbol.for(`dsh.typert.owned-value`);function s(e){return typeof e==`object`&&!!e&&o in e&&e[o]===!0}function c(e){return u(e,/* @__PURE__ */ new Set)}function l(e){return e===void 0||c(e)}function u(e,t){if(e===null||typeof e==`string`||typeof e==`boolean`)return!0;if(typeof e==`number`)return Number.isFinite(e)&&!Object.is(e,-0);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype||Reflect.ownKeys(e).length!==e.length+1)return!1;for(let n=0;n<e.length;n++)if(!Object.hasOwn(e,n)||!u(e[n],t))return!1;return!0}let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)return!1;for(let n of Reflect.ownKeys(e))if(typeof n!=`string`||Object.getOwnPropertyDescriptor(e,n)?.enumerable!==!0||!u(Reflect.get(e,n),t))return!1;return!0}finally{t.delete(e)}}var d=class{send;failed;timer;pending;sequence=0;lastActivity=Date.now();stopped=!1;interval;timeout;restoreTimeout;constructor(e,t,n={}){this.send=e,this.failed=t,this.interval=n.intervalMs??25e3,this.timeout=n.timeoutMs??1e4,this.restoreTimeout=n.restoreTimeoutMs??2e3,this.schedule(this.interval)}received(e){this.stopped||(this.lastActivity=Date.now(),this.pending!==void 0&&e===this.pending&&(this.pending=void 0,this.schedule(this.interval)))}probe(){this.stopped||this.sendProbe(this.restoreTimeout)}stop(){this.stopped=!0,clearTimeout(this.timer),this.pending=void 0}schedule(e){clearTimeout(this.timer),this.timer=setTimeout(()=>this.tick(),e)}tick(){if(this.stopped)return;if(typeof document<`u`&&document.visibilityState===`hidden`){this.pending=void 0,this.lastActivity=Date.now(),this.schedule(this.interval);return}if(this.pending!==void 0){this.stop(),this.failed();return}let e=this.interval-(Date.now()-this.lastActivity);e>0?this.schedule(e):this.sendProbe(this.timeout)}sendProbe(e){this.pending=`heartbeat-${String(++this.sequence)}`,this.schedule(e);try{this.send(this.pending)}catch{this.stop(),this.failed()}}};let f={args:{}};function ee(e){let t=typeof e==`object`&&e?e:void 0,n=v(t,`name`)??`Error`,r=v(t,`message`)??String(e),i=v(t,`code`),a=t===void 0?void 0:Reflect.get(t,`details`);return{name:n,message:r,...i===void 0?{}:{code:i},...a===void 0||!c(a)?{}:{details:a}}}function p(e){return typeof e==`string`&&e.length>0}function te(e){return typeof e==`string`&&e.length>0}function ne(e){return typeof e==`string`&&e.length>0}function re(e){return m(e,e=>{if(e.type===`item`&&(g(e,[`type`,`streamId`])||g(e,[`type`,`streamId`,`value`]))&&_(e.streamId)||(e.type===`end`||e.type===`pong`)&&g(e,[`type`,`streamId`])&&_(e.streamId)||e.type===`error`&&g(e,[`type`,`streamId`,`error`])&&_(e.streamId)&&h(e.error)&&g(e.error,[`code`,`message`,`details`])&&typeof e.error.code==`string`&&typeof e.error.message==`string`&&h(e.error.details))return e;throw Error(`api gateway: invalid Remote stream server message`)})}function m(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`api gateway: Remote stream message is not JSON`,{cause:e})}if(!h(n))throw Error(`api gateway: Remote stream message must be an object`);return t(n)}function h(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function g(e,t){return Reflect.ownKeys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t))}function _(e){return typeof e==`string`&&e.length>0}function v(e,t){if(e===void 0)return;let n=Reflect.get(e,t);return typeof n==`string`?n:void 0}var y=class{buffer=Array(16);head=0;count=0;get size(){return this.count}pushBack(e){this.ensureCapacity();let t=this.head+this.count;this.buffer[t<this.buffer.length?t:t-this.buffer.length]=e,this.count+=1}pushFront(e){this.ensureCapacity(),this.head=this.head===0?this.buffer.length-1:this.head-1,this.buffer[this.head]=e,this.count+=1}popFront(){if(this.count===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head+=1,this.head===this.buffer.length&&(this.head=0),--this.count,this.compact(),e}clear(){this.buffer=Array(16),this.head=0,this.count=0}ensureCapacity(){this.count<this.buffer.length||this.resize(this.buffer.length*2)}compact(){this.count===0?this.head=0:this.buffer.length>16&&this.count<=this.buffer.length/4&&this.resize(Math.max(16,this.buffer.length/2))}resize(e){let t=Array(e),n=this.head;for(let e=0;e<this.count;e+=1)t[e]=this.buffer[n],n+=1,n===this.buffer.length&&(n=0);this.buffer=t,this.head=0}};function b(){let e=globalThis.crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16)),t=Array.from(e,(e,t)=>(t===6?e&15|64:t===8?e&63|128:e).toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var x=class extends Error{constructor(e,t){super(e,t),this.name=`RemoteStreamCarrierError`}};let S={value:void 0,done:!0};var ie=class{heartbeatOptions;socket;cancelCandidate;keepAlive;revision=0;streams=/* @__PURE__ */ new Map;waiters=/* @__PURE__ */ new Set;running=!1;disposed=!1;heartbeat;constructor(e={}){this.heartbeatOptions=e}start(){if(this.disposed||(this.running=!0,this.socket?.readyState===WebSocket.OPEN))return;let e=this.keepAlive;e===void 0?this.maintain():e.then(()=>{this.maintain()})}reconnect(){if(!this.running||this.disposed)return;let e=new x(`api gateway: Remote stream reconnect requested`),t=this.keepAlive;this.disconnect(e),t===void 0?this.maintain():t.then(()=>{this.maintain()})}probe(){return this.socket?.readyState!==WebSocket.OPEN||this.heartbeat===void 0?!1:(this.heartbeat.probe(),!0)}disconnect(e=new x(`api gateway: connection unavailable`)){this.revision++,this.heartbeat?.stop(),this.heartbeat=void 0,this.cancelCandidate?.(e);let t=this.socket;this.socket=void 0,this.failAll(e),t?.close(4e3,`connection unavailable`)}async*open(e,t,n,r){n.throwIfAborted();let a=b(),o=new ae,s={inbox:o,pump:void 0},c,l=!1,u=!1,d=()=>{o.fail(n.reason)};n.addEventListener(`abort`,d,{once:!0});try{let d=await this.waitForSocket(n);for(n.throwIfAborted(),c=d,this.streams.set(a,s),this.send(d,{type:`open`,streamId:a,endpoint:e,payload:t}),l=!0,r!==void 0&&(s.pump=this.pumpUplink(d,a,r,n,o));;){let e=await o.next();if(n.throwIfAborted(),e.type===`item`)yield e.value;else{if(u=!0,e.type===`error`)throw new i(e.error.code,e.error.message,e.error.details);return}}}finally{n.removeEventListener(`abort`,d),this.streams.delete(a),s.pump?.stop(),l&&!u&&c?.readyState===WebSocket.OPEN&&this.send(c,{type:`cancel`,streamId:a}),s.pump!==void 0&&await s.pump.done}}pumpUplink(e,t,n,r,i){let a,o={value:void 0,done:!0},s=n[Symbol.asyncIterator](),c={stopping:!1,exhausted:!1,released:!1},l=()=>{c.released||c.exhausted||(c.released=!0,n instanceof C&&n.close(),Promise.resolve().then(()=>s.return?.()).catch(()=>void 0))};return{done:(async()=>{try{for(;;){if(c.stopping)return;a=Promise.withResolvers();let n=await Promise.race([s.next(),a.promise]);if(a=void 0,c.stopping||n===o||r.aborted||this.socket!==e)return;if(n.done===!0){c.exhausted=!0;break}this.send(e,{type:`item`,streamId:t,value:n.value})}this.send(e,{type:`end`,streamId:t})}catch(e){i.fail(e)}finally{a=void 0,l()}})(),stop:()=>{c.stopping||(c.stopping=!0,a?.resolve(o),l())}}}async close(){if(!this.disposed){this.disposed=!0,this.running=!1,this.heartbeat?.stop(),this.heartbeat=void 0;let e=/* @__PURE__ */ Error(`api gateway: Remote stream client disposed`);this.failAll(e);for(let t of[...this.waiters])t.reject(e);this.cancelCandidate?.(e);let t=this.socket;this.socket=void 0,t?.close(1e3,`disposed`)}await this.keepAlive}connect(){let e=new WebSocket(oe());return new Promise((t,n)=>{let r=!1,i=t=>{r=!0,e.removeEventListener(`open`,a),e.removeEventListener(`error`,o),e.removeEventListener(`message`,c),e.removeEventListener(`close`,s),this.cancelCandidate=void 0,e.close(),n(t)},a=()=>{r=!0,this.cancelCandidate=void 0,this.socket=e,this.heartbeat=new d(t=>this.send(e,{type:`ping`,streamId:t}),()=>{this.lost(e,new x(`api gateway: heartbeat timed out`)),e.close(4e3,`heartbeat timed out`)},this.heartbeatOptions);for(let t of[...this.waiters])t.resolve(e);t(e)},o=()=>{if(!r){i(new x(`api gateway: Remote stream WebSocket failed to open`));return}let t=new x(`api gateway: Remote stream WebSocket failed`);this.lost(e,t),e.close()},s=()=>{r?this.lost(e):i(new x(`api gateway: Remote stream WebSocket closed before opening`))},c=t=>{this.receive(e,t.data)};this.cancelCandidate=i,e.addEventListener(`open`,a,{once:!0}),e.addEventListener(`error`,o,{once:!0}),e.addEventListener(`message`,c),e.addEventListener(`close`,s,{once:!0})})}waitForSocket(e){return e.throwIfAborted(),this.socket?.readyState===WebSocket.OPEN?Promise.resolve(this.socket):this.disposed?Promise.reject(/* @__PURE__ */ Error(`api gateway: Remote stream client disposed`)):this.running?new Promise((t,n)=>{let r=()=>{a.reject(e.reason)},i=()=>{this.waiters.delete(a),e.removeEventListener(`abort`,r)},a={revision:this.revision,resolve:e=>{i(),t(e)},reject:e=>{i(),n(e)}};this.waiters.add(a),e.addEventListener(`abort`,r,{once:!0})}):Promise.reject(/* @__PURE__ */ Error(`api gateway: Remote stream client not started`))}receive(e,t){if(e===this.socket)try{if(typeof t!=`string`)throw Error(`api gateway: Remote stream WebSocket requires text messages`);let e=re(t);if(this.heartbeat?.received(e.type===`pong`?e.streamId:void 0),e.type===`pong`)return;let n=this.streams.get(e.streamId);if(n===void 0)return;n.inbox.push(e),e.type!==`item`&&n.pump?.stop()}catch(t){let n=new x(`api gateway: invalid Remote stream frame`,{cause:t});this.failAll(n),this.lost(e,n),e.close(4002,`invalid Remote stream frame`)}}lost(e,t=new x(`api gateway: Remote stream WebSocket closed`)){this.socket===e&&(this.heartbeat?.stop(),this.heartbeat=void 0,this.socket=void 0,this.failAll(t))}maintain(){if(!this.running||this.disposed||this.socket?.readyState===WebSocket.OPEN||this.keepAlive!==void 0)return;let e=this.revision,t=this.connect().then(()=>void 0,t=>{if(this.running)for(let n of[...this.waiters])n.revision<=e&&n.reject(t)});this.keepAlive=t,t.then(()=>{this.keepAlive=void 0})}failAll(e){for(let t of this.streams.values())t.inbox.fail(e),t.pump?.stop()}send(e,t){e.send(JSON.stringify(t))}},ae=class{frames=new y;wake;failure;push(e){this.failure===void 0&&(this.frames.pushBack(e),this.wake?.(),this.wake=void 0)}fail(e){this.failure===void 0&&(this.failure=e instanceof Error?e:Error(String(e),{cause:e}),this.frames.clear(),this.wake?.(),this.wake=void 0)}async next(){for(;this.frames.size===0;){if(this.failure!==void 0)throw this.failure;await new Promise(e=>{this.wake=e})}return this.frames.popFront()}},C=class{endpoint;items=new y;ended=!1;closed=!1;wake;constructor(e){this.endpoint=e}push(e){if(this.closed)throw Error(`client api: ${this.endpoint} stream has terminated`);if(this.ended)throw Error(`client api: ${this.endpoint} uplink was ended`);this.items.pushBack(e),this.signal()}end(){this.ended||this.closed||(this.ended=!0,this.signal())}close(){this.closed||(this.closed=!0,this.items.clear(),this.signal())}[Symbol.asyncIterator](){return this}async next(){for(;;){if(this.closed)return S;if(this.items.size>0)return{value:this.items.popFront(),done:!1};if(this.ended)return S;if(this.wake!==void 0)throw Error(`client api: ${this.endpoint} uplink has one pending read`);await new Promise(e=>{this.wake=e})}}return(){return this.close(),Promise.resolve(S)}signal(){let e=this.wake;this.wake=void 0,e?.()}};function oe(){let e=new URL(`api/remote.mux`,globalThis.__DSH_TRANSPORT__?.streamBaseUrl??document.baseURI);return e.protocol=e.protocol===`https:`?`wss:`:`ws:`,e.href}let w=Symbol(`api-gateway.remote-event.next`);var se=class{ownerCtx;connection;openStream;eventPrefix=`internal/api-gateway/remote-event/${b()}/`;unregisterGeneration;activeGeneration;constructor(e,t,n){this.ownerCtx=e,this.connection=t,this.openStream=n,this.unregisterGeneration=t.registerGenerationSource(this.runGeneration)}subscribe(e,t,n){let r=A(e).on(this.eventKey(t),n);return()=>{r()}}async dispose(){this.unregisterGeneration(),await Promise.allSettled([this.activeGeneration])}runGeneration=(e,t)=>{let n=this.pumpEvents(e,t).finally(()=>{this.activeGeneration===n&&(this.activeGeneration=void 0)});return this.activeGeneration=n,n};deliver(e){A(this.ownerCtx).parallel(this.eventKey(e.event),...e.args).catch(t=>{this.reportError(e.event,t)})}async pumpEvents(e,t){let n,r=new AbortController,i=AbortSignal.any([e,r.signal]),a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set,s=this.openStream(`$events`,f,i),c=!1,l;try{for await(let e of s){if(n===void 0){let r=T(e);n=r.clientId,t(r.host);continue}let s=ce(e);if(s.type===`cancel`){a.get(s.eventId)?.abort(/* @__PURE__ */ Error(`client api: Remote event was cancelled by the Host`));continue}if(s.type===`emit`){this.deliver(s);continue}let c=new AbortController;a.set(s.eventId,c);let l=AbortSignal.any([i,c.signal]),u=this.answer(s,n,l).catch(e=>{l.aborted||r.abort(e)}).finally(()=>{a.delete(s.eventId),o.delete(u)});o.add(u)}}catch(e){c=!0,l=e}finally{for(let e of a.values())e.abort(/* @__PURE__ */ Error(`client api: Remote event generation ended`));await Promise.allSettled(o)}if(r.signal.aborted)throw le(r.signal.reason,`client api: Remote event result delivery failed`);if(!e.aborted)throw c?l:Error(`client api: forwarded Remote event stream ended unexpectedly`)}async answer(e,t,n){let r=this.ownerCtx.typert.contexts.getClient(`agent`),i;try{i=r?.resolve(e.agentId)}catch(t){this.reportError(e.event,t)}let a=s(i)?i:void 0;try{let r=s(i)?i.value:i,a={kind:`next`};if(r!==void 0)try{a=await this.dispatchWaterfall(r,e,n)}catch(e){if(n.aborted)return;a={kind:`rejected`,error:ee(e)}}if(n.aborted)return;let o={clientId:t,eventId:e.eventId,outcome:a.kind===`result`&&a.value===void 0?{kind:`result`}:a},c=await this.connection.rpc.call(`/api`,`$events/result`,{args:o},n);if(!c.ok)throw Error(c.error.message)}finally{a?.[Symbol.dispose]()}}async dispatchWaterfall(e,t,n){let r={...t.request,agent:e,signal:n},i=await A(e).waterfall(e,this.eventKey(t.event),r,()=>Promise.resolve(w));if(i!==w&&i!==void 0&&!c(i))throw TypeError(`Remote event listener result is not lossless JSON data`);return i===w?{kind:`next`}:{kind:`result`,value:i}}eventKey(e){return`${this.eventPrefix}${e}`}reportError(e,t){console.error(`client api: Remote event ${JSON.stringify(e)} listener threw:`,t)}};function T(e){if(!E(e)||!D(e,[`type`,`clientId`,`host`])||e.type!==`ready`||!te(e.clientId)||!E(e.host)||!D(e.host,[`home`])||typeof e.host.home!=`string`)throw TypeError(`client api: forwarded Remote event stream did not begin with ready`);return{clientId:e.clientId,host:{home:e.host.home}}}function ce(e){if(E(e)||k(),e.type===`cancel`&&D(e,[`type`,`eventId`])&&p(e.eventId))return{type:`cancel`,eventId:e.eventId};if(e.type===`emit`&&D(e,[`type`,`event`,`args`])&&O(e.event)&&Array.isArray(e.args)&&c(e.args))return{type:`emit`,event:e.event,args:e.args};if(e.type===`waterfall`&&D(e,[`type`,`event`,`eventId`,`agentId`,`request`])&&O(e.event)&&p(e.eventId)&&ne(e.agentId)&&E(e.request)&&!Object.hasOwn(e.request,`agent`)&&!Object.hasOwn(e.request,`signal`)&&c(e.request))return{type:`waterfall`,event:e.event,eventId:e.eventId,agentId:e.agentId,request:e.request};k()}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function D(e,t){return Reflect.ownKeys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t))}function O(e){return typeof e==`string`&&e.length>0}function k(){throw TypeError(`client api: invalid forwarded Remote event frame`)}function A(e){return e}function le(e,t){return e instanceof Error?e:Error(t,{cause:e})}var j=class{connection;options;lifetime=new AbortController;generationAbort;iterator;closing;revision=0;taken=!1;constructor(e,t){this.connection=e,this.options=t}get signal(){return this.lifetime.signal}restart(){this.lifetime.signal.aborted||(this.revision++,this.generationAbort?.abort(/* @__PURE__ */ Error(`${this.options.name} generation restarted`)))}dispose(){if(this.closing!==void 0)return this.closing;if(!this.lifetime.signal.aborted){let e=/* @__PURE__ */ Error(`${this.options.name} disposed`);this.lifetime.abort(e),this.generationAbort?.abort(e)}let e=this.iterator;if(e===void 0)return Promise.resolve();let t=P(e);return this.closing=t,t}[Symbol.asyncIterator](){if(this.taken)throw Error(`${this.options.name} already has a consumer`);this.taken=!0;let e=this.read();return this.iterator=e,e}async*read(){let e=0,t=0,n=this.revision;try{for(;!N(this.lifetime.signal);){n!==this.revision&&(n=this.revision,e=0);let r=this.revision,i=new AbortController;this.generationAbort=i;let a=AbortSignal.any([this.lifetime.signal,i.signal]),o=++t,s=!1;try{for await(let t of this.options.open(a)){if(N(this.lifetime.signal))return;if(r!==this.revision)break;yield{generation:o,value:t,signal:a,accept:()=>{this.generationAbort===i&&r===this.revision&&(s=!0,e=0)}}}if(N(this.lifetime.signal))return;if(r!==this.revision)continue;throw this.options.ended(s)}catch(t){if(N(this.lifetime.signal))return;if(r!==this.revision)continue;if(!(t instanceof x))throw M(t);if(this.options.carrierFailed?.(t),r!==this.revision)continue;e++;try{await ue(this.connection,e,a)}catch(e){if(N(this.lifetime.signal))return;if(r!==this.revision)continue;throw M(e)}}finally{this.generationAbort=void 0,i.signal.aborted||i.abort(/* @__PURE__ */ Error(`${this.options.name} generation ended`))}}}finally{this.lifetime.signal.aborted||this.lifetime.abort(/* @__PURE__ */ Error(`${this.options.name} consumer closed`)),this.generationAbort?.abort(this.lifetime.signal.reason),this.generationAbort=void 0}}};async function ue(e,t,n){n.throwIfAborted(),e.generation.getSnapshot()===void 0?await new Promise((t,r)=>{let i={finished:!1},a=e=>{i.finished||(i.finished=!0,i.dispose?.(),n.removeEventListener(`abort`,s),e===void 0?t():r(e))},o=()=>{e.generation.getSnapshot()!==void 0&&a()},s=()=>{a(Error(`Remote stream retry aborted`,{cause:n.reason}))},c=e.generation.subscribe(o);i.dispose=c,i.finished&&c(),n.addEventListener(`abort`,s,{once:!0}),n.aborted?s():o()}):await new Promise((e,r)=>{let i=setTimeout(()=>{n.removeEventListener(`abort`,a),e()},Math.min(100*2**Math.min(t-1,5),3e3)),a=()=>{clearTimeout(i),n.removeEventListener(`abort`,a),r(n.reason)};n.addEventListener(`abort`,a,{once:!0}),n.aborted&&a()})}function M(e){return a(e)??new i(`gateway/internal`,e instanceof Error?e.message:String(e),{},{cause:e})}function N(e){return e.aborted}async function P(e){try{await e.return?.()}catch{}}function F(e){return new i(`gateway/internal`,e,{})}var I=class{options;stream;initialRequest;resumeCursor;hasResumeCursor=!1;generation=0;firstCursor;lastCursor;started=!1;opened=!1;disposed=!1;done;closing;pendingNext;constructor(e,t){this.options=t,this.stream=e.$stream({name:t.name,open:e=>this.follow(this.initialRequest,e),ended:e=>e?new x(`${t.name} ended without a terminal result`):F(`${this.hasResumeCursor?`resumed `:``}${t.name} ended before its opening cursor`),...t.carrierFailed===void 0?{}:{carrierFailed:t.carrierFailed}})}get signal(){return this.stream.signal}async open(e){if(this.started)throw Error(`${this.options.name} already opened`);this.started=!0,this.initialRequest=e;let t=this.stream[Symbol.asyncIterator]();try{let e=await this.takeNext(t);if(e.done)throw F(`${this.options.name} ended before its opening cursor`);this.replaceGeneration(e.value,!1),this.opened=!0,this.done=this.consume(t)}catch(e){throw await this.stream.dispose(),e}}async prepend(e){if(!this.opened||this.disposed)throw Error(`${this.options.name} is not open`);let t=await this.readPage(e,this.currentCursor(),this.stream.signal);this.stream.signal.throwIfAborted();let n=this.options.entries(t);this.assertPage(n);let r=this.firstCursor,i=r===void 0?[...n]:n.filter(e=>this.options.compare(this.options.first(e),r)<0),a=i.at(-1);if(a!==void 0&&r!==void 0&&!this.options.follows(this.options.last(a),r))throw this.options.publish({type:`prepend`,page:t,entries:[],hasMore:!1}),F(`${this.options.name} history page is discontinuous`);let o=i[0];o!==void 0&&(this.firstCursor=this.options.first(o)),this.options.publish({type:`prepend`,page:t,entries:i,hasMore:this.options.hasMore(t)})}restart(){this.stream.restart()}dispose(){if(this.closing!==void 0)return this.closing;this.disposed=!0;let e=this.done,t=(async()=>{await this.stream.dispose(),await e})();return this.closing=t,t}async consume(e){try{for(;;){let t=await this.takeNext(e);if(t.done)return;let n=t.value;if(n.generation!==this.generation)this.replaceGeneration(n,!0);else{if(n.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);n.value.type===`notification`?this.publishNotification(n.value.notification):await this.acceptEntry(n.value.entry,n,e)}}}catch(e){this.disposed||this.options.failed(e)}}replaceGeneration(e,t){let n=this.opening(e,t);this.replaceFromOpening(n.page,n.cursor)}opening(e,t){if(e.value.type!==`opened`)throw F(`${t?`resumed `:``}${this.options.name} emitted an entry before its opening cursor`);let n=e.value.cursor;if(t&&e.value.reset!==!0&&this.lastCursor!==void 0&&this.options.compare(n,this.lastCursor)<0)throw F(`${this.options.name} resumed at a cursor behind the last applied entry`);return this.generation=e.generation,e.accept(),{cursor:n,page:e.value.page}}replaceFromOpening(e,t){this.assertPageThrough(e,t);let n=[...this.options.entries(e)];this.assertPage(n);let r=n[0];this.firstCursor=r===void 0?void 0:this.options.first(r),this.lastCursor=t,this.setResumeCursor(t),this.options.publish({type:`replace`,page:e,entries:n,hasMore:this.options.hasMore(e)})}async acceptEntry(e,t,n){let{first:r,last:i}=this.entryRange(e),a=this.lastCursor;if(!(this.options.compare(i,a)<=0)){if(this.options.compare(r,a)<=0)throw F(`${this.options.name} emitted a partially overlapping entry`);if(this.options.follows(a,r))this.firstCursor===void 0&&(this.firstCursor=r),this.lastCursor=i,this.setResumeCursor(i),this.options.publish({type:`append`,entry:e});else{let r=this.repairPageRequest(),a=await this.replaceThrough(r,i,t.generation,t.signal,n,[e],[]);a!==void 0&&this.replaceGeneration(a,!0)}}}async replaceThrough(e,t,n,r,i,a,o){let s=await this.readPageWhileFollowing(e,t,n,r,i,a,o);if(s.type===`superseded`)return s.item;let c=s.page;this.assertPageThrough(c,t);let l=this.mergeReplacement(c,a),u=this.maxCursor(t,a);if(l===void 0||this.options.compare(this.tailCursor(l),u)<0){if(s=await this.readPageWhileFollowing(this.repairPageRequest(),u,n,r,i,a,o),s.type===`superseded`)return s.item;c=s.page,this.assertPageThrough(c,u),l=this.mergeReplacement(c,a),u=this.maxCursor(t,a)}if(l===void 0||this.options.compare(this.tailCursor(l),u)<0)throw F(`${this.options.name} page did not reach its opening cursor`);let d=l[0];this.firstCursor=d===void 0?void 0:this.options.first(d),this.lastCursor=this.tailCursor(l),this.setResumeCursor(this.lastCursor),this.options.publish({type:`replace`,page:c,entries:l,hasMore:this.options.hasMore(c)});for(let e of o)this.publishNotification(e)}async readPageWhileFollowing(e,t,n,r,i,a,o){let s=this.readPage(e,t,r).then(e=>({type:`page`,value:e}),e=>({type:`page-error`,error:e}));for(;;){let e=this.nextResult(i),t=e.then(e=>({type:`next`,value:e}),e=>({type:`next-error`,error:e})),c=await Promise.race([s,t]);if(c.type===`page`)return r.throwIfAborted(),{type:`page`,page:c.value};if(c.type===`page-error`){if(!r.aborted||this.stream.signal.aborted)throw c.error;return this.awaitReplacementGeneration(n,i,e)}if(this.releaseNext(),c.type===`next-error`)throw c.error;if(c.value.done)throw r.throwIfAborted(),F(`${this.options.name} ended while reading its replacement page`);let l=c.value.value;if(l.generation!==n)return{type:`superseded`,item:l};if(l.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);l.value.type===`notification`?o.push(l.value.notification):a.push(l.value.entry)}}async awaitReplacementGeneration(e,t,n){let r=n;for(;;){let n;try{n=await r}finally{this.releaseNext()}if(n.done)throw this.stream.signal.throwIfAborted(),F(`${this.options.name} ended while replacing an aborted page generation`);let i=n.value;if(i.generation!==e)return{type:`superseded`,item:i};if(i.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);r=this.nextResult(t)}}mergeReplacement(e,t){let n=[...this.options.entries(e)];this.assertPage(n);for(let e of t)this.entryRange(e);let r=[...t].sort((e,t)=>this.options.compare(this.options.first(e),this.options.first(t))),i=this.tailCursor(n);for(let e of r){let t=this.options.first(e),r=this.options.last(e);if(!(this.options.compare(r,i)<=0)){if(this.options.compare(t,i)<=0)throw F(`${this.options.name} replacement contains a partially overlapping entry`);if(!this.options.follows(i,t))return;n.push(e),i=r}}return n}maxCursor(e,t){let n=e;for(let e of t){let t=this.options.last(e);this.options.compare(t,n)>0&&(n=t)}return n}nextResult(e){return this.pendingNext??=e.next(),this.pendingNext}async takeNext(e){let t=this.nextResult(e);try{return await t}finally{this.releaseNext()}}releaseNext(){this.pendingNext=void 0}publishNotification(e){this.options.publish({type:`notification`,notification:e})}repairPageRequest(){return this.repairRequest(this.initialRequest)}setResumeCursor(e){this.resumeCursor=e,this.hasResumeCursor=!0}currentCursor(){return this.resumeCursor}tailCursor(e){let t=e.at(-1);return t===void 0?this.options.emptyCursor:this.options.last(t)}assertPage(e){let t=e[Symbol.iterator](),n=t.next();if(n.done)return;let r=this.entryRange(n.value);for(let e of t){let t=this.entryRange(e);if(!this.options.follows(r.last,t.first))throw F(`${this.options.name} page contains discontinuous entries`);r=t}}entryRange(e){let t=this.options.first(e),n=this.options.last(e);if(this.options.compare(t,n)>0)throw F(`${this.options.name} entry has an inverted cursor range`);return{first:t,last:n}}assertPageThrough(e,t){let n=this.tailCursor(this.options.entries(e));if(this.options.compare(n,t)!==0)throw F(`${this.options.name} page did not end at its requested cursor`)}};function L(e){return new i(`gateway/internal`,e,{})}var R=class{stream;options;started=!1;disposed=!1;done;constructor(e,t){this.stream=e,this.options=t}start(){this.started||(this.started=!0,this.done=this.consume())}restart(){this.stream.restart()}async dispose(){this.disposed=!0,await this.stream.dispose(),await this.done}async consume(){let e=0,t=!1;try{for await(let n of this.stream)if(n.generation!==e&&(e=n.generation,t=!1),this.options.isSnapshot(n.value)){if(t)throw L(`${this.options.name} emitted more than one opening snapshot`);this.options.replace(n.value),t=!0,n.accept()}else{if(!t)throw L(`${this.options.name} emitted an update before its opening snapshot`);this.options.update(n.value)}}catch(e){this.disposed||this.options.failed(e)}}};let z=[`typert`,`connection`];function B(e){new V(e)}var V=class extends r.Service{ownerCtx;connection;namespaces=/* @__PURE__ */ new Map;hostFacts;streams=new ie;events;mutations=Promise.resolve();constructor(e){super(e,`remote`),this.ownerCtx=e;let t=e.get(`connection`);this.connection=t,this.events=new se(e,t,(e,t,n)=>this.openRemoteStream(e,t,n)),t.rpc.open===void 0&&this.streams.start();let n=!1,r,i=()=>{n||(t.rpc.open===void 0&&this.streams.start(),r=t.start({onConnected:()=>{this.ownerCtx.emit(`connection/reset`)},onReconnectRequested:()=>{t.rpc.open===void 0&&this.streams.reconnect()},onProbeRequested:()=>t.rpc.open===void 0&&this.streams.probe(),onStateChange:e=>{e!==`connected`&&t.rpc.open===void 0&&this.streams.disconnect()}}))},a=e.get(`loader`);a===void 0?i():a.await().then(i,()=>{}),e.effect(()=>async()=>{n=!0,r?.stop(),await this.events.dispose(),await this.streams.close()},`api-gateway.client.transport`)}$stream(e){return new j(this.connection,e)}get $host(){let e=this.connection.generation.getSnapshot()?.host.home;return(this.hostFacts===void 0||this.hostFacts.home!==e)&&(this.hostFacts={home:e,isLoopback:this.connection.isLoopback}),this.hostFacts}async $mount(e){let t=this.ctx,n=t.effect(async()=>{let n=await this.enqueue(()=>this.mountContribution(t,e));return()=>this.enqueue(n)},`api-gateway.client.$mount(${JSON.stringify(e.package)})`);return await n,async()=>{await n()}}$on(e,t){return this.events.subscribe(this.ctx,e,t)}openRemoteStream(e,t,n,r,i=`client api: ${e} has no active Connection`){let a=this.ownerCtx.get(`connection`);if(a===void 0)throw Error(i);let o=a.rpc.open?.(`/api`,e,t,n,r);return o===void 0?this.streams.open(e,t,n,r):he(o)}enqueue(e){let t=this.mutations.then(e,e);return this.mutations=t.then(()=>void 0,()=>void 0),t}async mountContribution(e,t){this.validateContribution(t);let n=e.typert.remotes.register(t),r=/* @__PURE__ */ new Map;for(let e of t.descriptors){let t=r.get(e.namespace);t===void 0?r.set(e.namespace,[e]):t.push(e)}let i=[];try{for(let[e,t]of r)i.push(await this.installNamespace(e,t))}catch(e){for(let e of i.reverse())await e();throw await n(),e}return async()=>{for(let e of i.reverse())await e();await n()}}validateContribution(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map,r=(e,t,n)=>{let r=e.get(t.namespace)??/* @__PURE__ */ new Set;if(r.has(t.method))throw Error(`client api: contribution repeats ${n} method ${K(t)}`);if(r.add(t.method),e.set(t.namespace,r),(this.namespaces.get(t.namespace)?.service)?.has(n,t.method)===!0)throw Error(`client api: ${n} method ${K(t)} is already mounted`)};for(let i of e.descriptors)fe(i),i.invocation.kind===`direct`&&r(t,i,`direct`),J(i)!==void 0&&r(n,i,`scoped`);let i=/* @__PURE__ */ new Set([...t.keys(),...n.keys()]);for(let e of i){let r=this.namespaces.get(e)?.service;if(r===void 0){if(e in this)throw Error(`client api: namespace ${JSON.stringify(e)} conflicts with the Remote service`);let t=G(e);if(this.ownerCtx.reflect.props[t]?.type===`accessor`||this.ownerCtx.get(t)!==void 0)throw Error(`client api: namespace ${JSON.stringify(e)} conflicts with an existing Remote namespace`)}for(let i of/* @__PURE__ */ new Set([...t.get(e)??[],...n.get(e)??[]]))r===void 0?U.assertMethodAvailable(e,i):r.assertMethodAvailable(i)}}async installNamespace(e,t){let n=this.namespaces.get(e),r;n===void 0?{namespace:n,installed:r}=await this.createNamespace(e,t):r=W(n.service,t);let i=n;return async()=>{for(let e of[...r].reverse())
|
|
1
|
+
window.__ModuleLoader__.load({id:`@deepseek-ai/dsh-api-gateway`,factory:e=>{var t={exports:{}},n=t.exports;Object.defineProperty(n,Symbol.toStringTag,{value:`Module`});let r=e("@deepseek-ai/cordis");var i=class extends Error{code;details;isDSHRemoteError=!0;constructor(e,t,n,r){super(t,r),this.code=e,this.details=n,this.name=`RemoteError`}};function a(e){if(typeof e==`object`&&e&&e.isDSHRemoteError===!0&&typeof e.code==`string`)return e}let o=Symbol.for(`dsh.typert.owned-value`);function s(e){return typeof e==`object`&&!!e&&o in e&&e[o]===!0}function c(e){return u(e,/* @__PURE__ */ new Set)}function l(e){return e===void 0||c(e)}function u(e,t){if(e===null||typeof e==`string`||typeof e==`boolean`)return!0;if(typeof e==`number`)return Number.isFinite(e)&&!Object.is(e,-0);if(typeof e!=`object`||t.has(e))return!1;t.add(e);try{if(Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype||Reflect.ownKeys(e).length!==e.length+1)return!1;for(let n=0;n<e.length;n++)if(!Object.hasOwn(e,n)||!u(e[n],t))return!1;return!0}let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)return!1;for(let n of Reflect.ownKeys(e))if(typeof n!=`string`||Object.getOwnPropertyDescriptor(e,n)?.enumerable!==!0||!u(Reflect.get(e,n),t))return!1;return!0}finally{t.delete(e)}}var d=class{send;failed;timer;pending;sequence=0;lastActivity=Date.now();stopped=!1;interval;timeout;restoreTimeout;visibilityChanged=()=>{document.visibilityState===`hidden`&&(clearTimeout(this.timer),this.pending=void 0)};constructor(e,t,n={}){this.send=e,this.failed=t,this.interval=n.intervalMs??25e3,this.timeout=n.timeoutMs??1e4,this.restoreTimeout=n.restoreTimeoutMs??2500,typeof document<`u`&&document.addEventListener(`visibilitychange`,this.visibilityChanged),this.schedule(this.interval)}received(e){this.stopped||(this.lastActivity=Date.now(),this.pending!==void 0&&e===this.pending&&(this.pending=void 0,this.schedule(this.interval)))}probe(){this.stopped||this.sendProbe(this.restoreTimeout)}stop(){this.stopped=!0,typeof document<`u`&&document.removeEventListener(`visibilitychange`,this.visibilityChanged),clearTimeout(this.timer),this.pending=void 0}schedule(e){clearTimeout(this.timer),this.timer=setTimeout(()=>this.tick(),e)}tick(){if(this.stopped)return;if(typeof document<`u`&&document.visibilityState===`hidden`){this.pending=void 0,this.lastActivity=Date.now(),this.schedule(this.interval);return}if(this.pending!==void 0){this.stop(),this.failed();return}let e=this.interval-(Date.now()-this.lastActivity);e>0?this.schedule(e):this.sendProbe(this.timeout)}sendProbe(e){this.pending=`heartbeat-${String(++this.sequence)}`,this.schedule(e);try{this.send(this.pending)}catch{this.stop(),this.failed()}}};let f={args:{}};function ee(e){let t=typeof e==`object`&&e?e:void 0,n=v(t,`name`)??`Error`,r=v(t,`message`)??String(e),i=v(t,`code`),a=t===void 0?void 0:Reflect.get(t,`details`);return{name:n,message:r,...i===void 0?{}:{code:i},...a===void 0||!c(a)?{}:{details:a}}}function p(e){return typeof e==`string`&&e.length>0}function te(e){return typeof e==`string`&&e.length>0}function ne(e){return typeof e==`string`&&e.length>0}function re(e){return m(e,e=>{if(e.type===`item`&&(g(e,[`type`,`streamId`])||g(e,[`type`,`streamId`,`value`]))&&_(e.streamId)||(e.type===`end`||e.type===`pong`)&&g(e,[`type`,`streamId`])&&_(e.streamId)||e.type===`error`&&g(e,[`type`,`streamId`,`error`])&&_(e.streamId)&&h(e.error)&&g(e.error,[`code`,`message`,`details`])&&typeof e.error.code==`string`&&typeof e.error.message==`string`&&h(e.error.details))return e;throw Error(`api gateway: invalid Remote stream server message`)})}function m(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`api gateway: Remote stream message is not JSON`,{cause:e})}if(!h(n))throw Error(`api gateway: Remote stream message must be an object`);return t(n)}function h(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function g(e,t){return Reflect.ownKeys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t))}function _(e){return typeof e==`string`&&e.length>0}function v(e,t){if(e===void 0)return;let n=Reflect.get(e,t);return typeof n==`string`?n:void 0}var y=class{buffer=Array(16);head=0;count=0;get size(){return this.count}pushBack(e){this.ensureCapacity();let t=this.head+this.count;this.buffer[t<this.buffer.length?t:t-this.buffer.length]=e,this.count+=1}pushFront(e){this.ensureCapacity(),this.head=this.head===0?this.buffer.length-1:this.head-1,this.buffer[this.head]=e,this.count+=1}popFront(){if(this.count===0)return;let e=this.buffer[this.head];return this.buffer[this.head]=void 0,this.head+=1,this.head===this.buffer.length&&(this.head=0),--this.count,this.compact(),e}clear(){this.buffer=Array(16),this.head=0,this.count=0}ensureCapacity(){this.count<this.buffer.length||this.resize(this.buffer.length*2)}compact(){this.count===0?this.head=0:this.buffer.length>16&&this.count<=this.buffer.length/4&&this.resize(Math.max(16,this.buffer.length/2))}resize(e){let t=Array(e),n=this.head;for(let e=0;e<this.count;e+=1)t[e]=this.buffer[n],n+=1,n===this.buffer.length&&(n=0);this.buffer=t,this.head=0}};function b(){let e=globalThis.crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16)),t=Array.from(e,(e,t)=>(t===6?e&15|64:t===8?e&63|128:e).toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var x=class extends Error{constructor(e,t){super(e,t),this.name=`RemoteStreamCarrierError`}};let S={value:void 0,done:!0};var ie=class{heartbeatOptions;socket;cancelCandidate;keepAlive;revision=0;streams=/* @__PURE__ */ new Map;waiters=/* @__PURE__ */ new Set;running=!1;disposed=!1;heartbeat;constructor(e={}){this.heartbeatOptions=e}start(){if(this.disposed||(this.running=!0,this.socket?.readyState===WebSocket.OPEN))return;let e=this.keepAlive;e===void 0?this.maintain():e.then(()=>{this.maintain()})}reconnect(){if(!this.running||this.disposed)return;let e=new x(`api gateway: Remote stream reconnect requested`),t=this.keepAlive;this.disconnect(e),t===void 0?this.maintain():t.then(()=>{this.maintain()})}probe(){return this.socket?.readyState!==WebSocket.OPEN||this.heartbeat===void 0?!1:(this.heartbeat.probe(),!0)}disconnect(e=new x(`api gateway: connection unavailable`)){this.revision++,this.heartbeat?.stop(),this.heartbeat=void 0,this.cancelCandidate?.(e);let t=this.socket;this.socket=void 0,this.failAll(e),t?.close(4e3,`connection unavailable`)}async*open(e,t,n,r){n.throwIfAborted();let a=b(),o=new ae,s={inbox:o,pump:void 0},c,l=!1,u=!1,d=()=>{o.fail(n.reason)};n.addEventListener(`abort`,d,{once:!0});try{let d=await this.waitForSocket(n);for(n.throwIfAborted(),c=d,this.streams.set(a,s),this.send(d,{type:`open`,streamId:a,endpoint:e,payload:t}),l=!0,r!==void 0&&(s.pump=this.pumpUplink(d,a,r,n,o));;){let e=await o.next();if(n.throwIfAborted(),e.type===`item`)yield e.value;else{if(u=!0,e.type===`error`)throw new i(e.error.code,e.error.message,e.error.details);return}}}finally{n.removeEventListener(`abort`,d),this.streams.delete(a),s.pump?.stop(),l&&!u&&c?.readyState===WebSocket.OPEN&&this.send(c,{type:`cancel`,streamId:a}),s.pump!==void 0&&await s.pump.done}}pumpUplink(e,t,n,r,i){let a,o={value:void 0,done:!0},s=n[Symbol.asyncIterator](),c={stopping:!1,exhausted:!1,released:!1},l=()=>{c.released||c.exhausted||(c.released=!0,n instanceof C&&n.close(),Promise.resolve().then(()=>s.return?.()).catch(()=>void 0))};return{done:(async()=>{try{for(;;){if(c.stopping)return;a=Promise.withResolvers();let n=await Promise.race([s.next(),a.promise]);if(a=void 0,c.stopping||n===o||r.aborted||this.socket!==e)return;if(n.done===!0){c.exhausted=!0;break}this.send(e,{type:`item`,streamId:t,value:n.value})}this.send(e,{type:`end`,streamId:t})}catch(e){i.fail(e)}finally{a=void 0,l()}})(),stop:()=>{c.stopping||(c.stopping=!0,a?.resolve(o),l())}}}async close(){if(!this.disposed){this.disposed=!0,this.running=!1,this.heartbeat?.stop(),this.heartbeat=void 0;let e=/* @__PURE__ */ Error(`api gateway: Remote stream client disposed`);this.failAll(e);for(let t of[...this.waiters])t.reject(e);this.cancelCandidate?.(e);let t=this.socket;this.socket=void 0,t?.close(1e3,`disposed`)}await this.keepAlive}connect(){let e=new WebSocket(oe());return new Promise((t,n)=>{let r=!1,i=t=>{r=!0,e.removeEventListener(`open`,a),e.removeEventListener(`error`,o),e.removeEventListener(`message`,c),e.removeEventListener(`close`,s),this.cancelCandidate=void 0,e.close(),n(t)},a=()=>{r=!0,this.cancelCandidate=void 0,this.socket=e,this.heartbeat=new d(t=>this.send(e,{type:`ping`,streamId:t}),()=>{this.lost(e,new x(`api gateway: heartbeat timed out`)),e.close(4e3,`heartbeat timed out`)},this.heartbeatOptions);for(let t of[...this.waiters])t.resolve(e);t(e)},o=()=>{if(!r){i(new x(`api gateway: Remote stream WebSocket failed to open`));return}let t=new x(`api gateway: Remote stream WebSocket failed`);this.lost(e,t),e.close()},s=()=>{r?this.lost(e):i(new x(`api gateway: Remote stream WebSocket closed before opening`))},c=t=>{this.receive(e,t.data)};this.cancelCandidate=i,e.addEventListener(`open`,a,{once:!0}),e.addEventListener(`error`,o,{once:!0}),e.addEventListener(`message`,c),e.addEventListener(`close`,s,{once:!0})})}waitForSocket(e){return e.throwIfAborted(),this.socket?.readyState===WebSocket.OPEN?Promise.resolve(this.socket):this.disposed?Promise.reject(/* @__PURE__ */ Error(`api gateway: Remote stream client disposed`)):this.running?new Promise((t,n)=>{let r=()=>{a.reject(e.reason)},i=()=>{this.waiters.delete(a),e.removeEventListener(`abort`,r)},a={revision:this.revision,resolve:e=>{i(),t(e)},reject:e=>{i(),n(e)}};this.waiters.add(a),e.addEventListener(`abort`,r,{once:!0})}):Promise.reject(/* @__PURE__ */ Error(`api gateway: Remote stream client not started`))}receive(e,t){if(e===this.socket)try{if(typeof t!=`string`)throw Error(`api gateway: Remote stream WebSocket requires text messages`);let e=re(t);if(this.heartbeat?.received(e.type===`pong`?e.streamId:void 0),e.type===`pong`)return;let n=this.streams.get(e.streamId);if(n===void 0)return;n.inbox.push(e),e.type!==`item`&&n.pump?.stop()}catch(t){let n=new x(`api gateway: invalid Remote stream frame`,{cause:t});this.failAll(n),this.lost(e,n),e.close(4002,`invalid Remote stream frame`)}}lost(e,t=new x(`api gateway: Remote stream WebSocket closed`)){this.socket===e&&(this.heartbeat?.stop(),this.heartbeat=void 0,this.socket=void 0,this.failAll(t))}maintain(){if(!this.running||this.disposed||this.socket?.readyState===WebSocket.OPEN||this.keepAlive!==void 0)return;let e=this.revision,t=this.connect().then(()=>void 0,t=>{if(this.running)for(let n of[...this.waiters])n.revision<=e&&n.reject(t)});this.keepAlive=t,t.then(()=>{this.keepAlive=void 0})}failAll(e){for(let t of this.streams.values())t.inbox.fail(e),t.pump?.stop()}send(e,t){e.send(JSON.stringify(t))}},ae=class{frames=new y;wake;failure;push(e){this.failure===void 0&&(this.frames.pushBack(e),this.wake?.(),this.wake=void 0)}fail(e){this.failure===void 0&&(this.failure=e instanceof Error?e:Error(String(e),{cause:e}),this.frames.clear(),this.wake?.(),this.wake=void 0)}async next(){for(;this.frames.size===0;){if(this.failure!==void 0)throw this.failure;await new Promise(e=>{this.wake=e})}return this.frames.popFront()}},C=class{endpoint;items=new y;ended=!1;closed=!1;wake;constructor(e){this.endpoint=e}push(e){if(this.closed)throw Error(`client api: ${this.endpoint} stream has terminated`);if(this.ended)throw Error(`client api: ${this.endpoint} uplink was ended`);this.items.pushBack(e),this.signal()}end(){this.ended||this.closed||(this.ended=!0,this.signal())}close(){this.closed||(this.closed=!0,this.items.clear(),this.signal())}[Symbol.asyncIterator](){return this}async next(){for(;;){if(this.closed)return S;if(this.items.size>0)return{value:this.items.popFront(),done:!1};if(this.ended)return S;if(this.wake!==void 0)throw Error(`client api: ${this.endpoint} uplink has one pending read`);await new Promise(e=>{this.wake=e})}}return(){return this.close(),Promise.resolve(S)}signal(){let e=this.wake;this.wake=void 0,e?.()}};function oe(){let e=new URL(`api/remote.mux`,globalThis.__DSH_TRANSPORT__?.streamBaseUrl??document.baseURI);return e.protocol=e.protocol===`https:`?`wss:`:`ws:`,e.href}let w=Symbol(`api-gateway.remote-event.next`);var se=class{ownerCtx;connection;openStream;eventPrefix=`internal/api-gateway/remote-event/${b()}/`;unregisterGeneration;activeGeneration;constructor(e,t,n){this.ownerCtx=e,this.connection=t,this.openStream=n,this.unregisterGeneration=t.registerGenerationSource(this.runGeneration)}subscribe(e,t,n){let r=A(e).on(this.eventKey(t),n);return()=>{r()}}async dispose(){this.unregisterGeneration(),await Promise.allSettled([this.activeGeneration])}runGeneration=(e,t)=>{let n=this.pumpEvents(e,t).finally(()=>{this.activeGeneration===n&&(this.activeGeneration=void 0)});return this.activeGeneration=n,n};deliver(e){A(this.ownerCtx).parallel(this.eventKey(e.event),...e.args).catch(t=>{this.reportError(e.event,t)})}async pumpEvents(e,t){let n,r=new AbortController,i=AbortSignal.any([e,r.signal]),a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set,s=this.openStream(`$events`,f,i),c=!1,l;try{for await(let e of s){if(n===void 0){let r=T(e);n=r.clientId,t(r.host);continue}let s=ce(e);if(s.type===`cancel`){a.get(s.eventId)?.abort(/* @__PURE__ */ Error(`client api: Remote event was cancelled by the Host`));continue}if(s.type===`emit`){this.deliver(s);continue}let c=new AbortController;a.set(s.eventId,c);let l=AbortSignal.any([i,c.signal]),u=this.answer(s,n,l).catch(e=>{l.aborted||r.abort(e)}).finally(()=>{a.delete(s.eventId),o.delete(u)});o.add(u)}}catch(e){c=!0,l=e}finally{for(let e of a.values())e.abort(/* @__PURE__ */ Error(`client api: Remote event generation ended`));await Promise.allSettled(o)}if(r.signal.aborted)throw le(r.signal.reason,`client api: Remote event result delivery failed`);if(!e.aborted)throw c?l:Error(`client api: forwarded Remote event stream ended unexpectedly`)}async answer(e,t,n){let r=this.ownerCtx.typert.contexts.getClient(`agent`),i;try{i=r?.resolve(e.agentId)}catch(t){this.reportError(e.event,t)}let a=s(i)?i:void 0;try{let r=s(i)?i.value:i,a={kind:`next`};if(r!==void 0)try{a=await this.dispatchWaterfall(r,e,n)}catch(e){if(n.aborted)return;a={kind:`rejected`,error:ee(e)}}if(n.aborted)return;let o={clientId:t,eventId:e.eventId,outcome:a.kind===`result`&&a.value===void 0?{kind:`result`}:a},c=await this.connection.rpc.call(`/api`,`$events/result`,{args:o},n);if(!c.ok)throw Error(c.error.message)}finally{a?.[Symbol.dispose]()}}async dispatchWaterfall(e,t,n){let r={...t.request,agent:e,signal:n},i=await A(e).waterfall(e,this.eventKey(t.event),r,()=>Promise.resolve(w));if(i!==w&&i!==void 0&&!c(i))throw TypeError(`Remote event listener result is not lossless JSON data`);return i===w?{kind:`next`}:{kind:`result`,value:i}}eventKey(e){return`${this.eventPrefix}${e}`}reportError(e,t){console.error(`client api: Remote event ${JSON.stringify(e)} listener threw:`,t)}};function T(e){if(!E(e)||!D(e,[`type`,`clientId`,`host`])||e.type!==`ready`||!te(e.clientId)||!E(e.host)||!D(e.host,[`home`])||typeof e.host.home!=`string`)throw TypeError(`client api: forwarded Remote event stream did not begin with ready`);return{clientId:e.clientId,host:{home:e.host.home}}}function ce(e){if(E(e)||k(),e.type===`cancel`&&D(e,[`type`,`eventId`])&&p(e.eventId))return{type:`cancel`,eventId:e.eventId};if(e.type===`emit`&&D(e,[`type`,`event`,`args`])&&O(e.event)&&Array.isArray(e.args)&&c(e.args))return{type:`emit`,event:e.event,args:e.args};if(e.type===`waterfall`&&D(e,[`type`,`event`,`eventId`,`agentId`,`request`])&&O(e.event)&&p(e.eventId)&&ne(e.agentId)&&E(e.request)&&!Object.hasOwn(e.request,`agent`)&&!Object.hasOwn(e.request,`signal`)&&c(e.request))return{type:`waterfall`,event:e.event,eventId:e.eventId,agentId:e.agentId,request:e.request};k()}function E(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function D(e,t){return Reflect.ownKeys(e).length===t.length&&t.every(t=>Object.hasOwn(e,t))}function O(e){return typeof e==`string`&&e.length>0}function k(){throw TypeError(`client api: invalid forwarded Remote event frame`)}function A(e){return e}function le(e,t){return e instanceof Error?e:Error(t,{cause:e})}var j=class{connection;options;lifetime=new AbortController;generationAbort;iterator;closing;revision=0;taken=!1;constructor(e,t){this.connection=e,this.options=t}get signal(){return this.lifetime.signal}restart(){this.lifetime.signal.aborted||(this.revision++,this.generationAbort?.abort(/* @__PURE__ */ Error(`${this.options.name} generation restarted`)))}dispose(){if(this.closing!==void 0)return this.closing;if(!this.lifetime.signal.aborted){let e=/* @__PURE__ */ Error(`${this.options.name} disposed`);this.lifetime.abort(e),this.generationAbort?.abort(e)}let e=this.iterator;if(e===void 0)return Promise.resolve();let t=P(e);return this.closing=t,t}[Symbol.asyncIterator](){if(this.taken)throw Error(`${this.options.name} already has a consumer`);this.taken=!0;let e=this.read();return this.iterator=e,e}async*read(){let e=0,t=0,n=this.revision;try{for(;!N(this.lifetime.signal);){n!==this.revision&&(n=this.revision,e=0);let r=this.revision,i=new AbortController;this.generationAbort=i;let a=AbortSignal.any([this.lifetime.signal,i.signal]),o=++t,s=!1;try{for await(let t of this.options.open(a)){if(N(this.lifetime.signal))return;if(r!==this.revision)break;yield{generation:o,value:t,signal:a,accept:()=>{this.generationAbort===i&&r===this.revision&&(s=!0,e=0)}}}if(N(this.lifetime.signal))return;if(r!==this.revision)continue;throw this.options.ended(s)}catch(t){if(N(this.lifetime.signal))return;if(r!==this.revision)continue;if(!(t instanceof x))throw M(t);if(this.options.carrierFailed?.(t),r!==this.revision)continue;e++;try{await ue(this.connection,e,a)}catch(e){if(N(this.lifetime.signal))return;if(r!==this.revision)continue;throw M(e)}}finally{this.generationAbort=void 0,i.signal.aborted||i.abort(/* @__PURE__ */ Error(`${this.options.name} generation ended`))}}}finally{this.lifetime.signal.aborted||this.lifetime.abort(/* @__PURE__ */ Error(`${this.options.name} consumer closed`)),this.generationAbort?.abort(this.lifetime.signal.reason),this.generationAbort=void 0}}};async function ue(e,t,n){n.throwIfAborted(),e.generation.getSnapshot()===void 0?await new Promise((t,r)=>{let i={finished:!1},a=e=>{i.finished||(i.finished=!0,i.dispose?.(),n.removeEventListener(`abort`,s),e===void 0?t():r(e))},o=()=>{e.generation.getSnapshot()!==void 0&&a()},s=()=>{a(Error(`Remote stream retry aborted`,{cause:n.reason}))},c=e.generation.subscribe(o);i.dispose=c,i.finished&&c(),n.addEventListener(`abort`,s,{once:!0}),n.aborted?s():o()}):await new Promise((e,r)=>{let i=setTimeout(()=>{n.removeEventListener(`abort`,a),e()},Math.min(100*2**Math.min(t-1,5),3e3)),a=()=>{clearTimeout(i),n.removeEventListener(`abort`,a),r(n.reason)};n.addEventListener(`abort`,a,{once:!0}),n.aborted&&a()})}function M(e){return a(e)??new i(`gateway/internal`,e instanceof Error?e.message:String(e),{},{cause:e})}function N(e){return e.aborted}async function P(e){try{await e.return?.()}catch{}}function F(e){return new i(`gateway/internal`,e,{})}var I=class{options;stream;initialRequest;resumeCursor;hasResumeCursor=!1;generation=0;firstCursor;lastCursor;started=!1;opened=!1;disposed=!1;done;closing;pendingNext;constructor(e,t){this.options=t,this.stream=e.$stream({name:t.name,open:e=>this.follow(this.initialRequest,e),ended:e=>e?new x(`${t.name} ended without a terminal result`):F(`${this.hasResumeCursor?`resumed `:``}${t.name} ended before its opening cursor`),...t.carrierFailed===void 0?{}:{carrierFailed:t.carrierFailed}})}get signal(){return this.stream.signal}async open(e){if(this.started)throw Error(`${this.options.name} already opened`);this.started=!0,this.initialRequest=e;let t=this.stream[Symbol.asyncIterator]();try{let e=await this.takeNext(t);if(e.done)throw F(`${this.options.name} ended before its opening cursor`);this.replaceGeneration(e.value,!1),this.opened=!0,this.done=this.consume(t)}catch(e){throw await this.stream.dispose(),e}}async prepend(e){if(!this.opened||this.disposed)throw Error(`${this.options.name} is not open`);let t=await this.readPage(e,this.currentCursor(),this.stream.signal);this.stream.signal.throwIfAborted();let n=this.options.entries(t);this.assertPage(n);let r=this.firstCursor,i=r===void 0?[...n]:n.filter(e=>this.options.compare(this.options.first(e),r)<0),a=i.at(-1);if(a!==void 0&&r!==void 0&&!this.options.follows(this.options.last(a),r))throw this.options.publish({type:`prepend`,page:t,entries:[],hasMore:!1}),F(`${this.options.name} history page is discontinuous`);let o=i[0];o!==void 0&&(this.firstCursor=this.options.first(o)),this.options.publish({type:`prepend`,page:t,entries:i,hasMore:this.options.hasMore(t)})}restart(){this.stream.restart()}dispose(){if(this.closing!==void 0)return this.closing;this.disposed=!0;let e=this.done,t=(async()=>{await this.stream.dispose(),await e})();return this.closing=t,t}async consume(e){try{for(;;){let t=await this.takeNext(e);if(t.done)return;let n=t.value;if(n.generation!==this.generation)this.replaceGeneration(n,!0);else{if(n.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);n.value.type===`notification`?this.publishNotification(n.value.notification):await this.acceptEntry(n.value.entry,n,e)}}}catch(e){this.disposed||this.options.failed(e)}}replaceGeneration(e,t){let n=this.opening(e,t);this.replaceFromOpening(n.page,n.cursor)}opening(e,t){if(e.value.type!==`opened`)throw F(`${t?`resumed `:``}${this.options.name} emitted an entry before its opening cursor`);let n=e.value.cursor;if(t&&e.value.reset!==!0&&this.lastCursor!==void 0&&this.options.compare(n,this.lastCursor)<0)throw F(`${this.options.name} resumed at a cursor behind the last applied entry`);return this.generation=e.generation,e.accept(),{cursor:n,page:e.value.page}}replaceFromOpening(e,t){this.assertPageThrough(e,t);let n=[...this.options.entries(e)];this.assertPage(n);let r=n[0];this.firstCursor=r===void 0?void 0:this.options.first(r),this.lastCursor=t,this.setResumeCursor(t),this.options.publish({type:`replace`,page:e,entries:n,hasMore:this.options.hasMore(e)})}async acceptEntry(e,t,n){let{first:r,last:i}=this.entryRange(e),a=this.lastCursor;if(!(this.options.compare(i,a)<=0)){if(this.options.compare(r,a)<=0)throw F(`${this.options.name} emitted a partially overlapping entry`);if(this.options.follows(a,r))this.firstCursor===void 0&&(this.firstCursor=r),this.lastCursor=i,this.setResumeCursor(i),this.options.publish({type:`append`,entry:e});else{let r=this.repairPageRequest(),a=await this.replaceThrough(r,i,t.generation,t.signal,n,[e],[]);a!==void 0&&this.replaceGeneration(a,!0)}}}async replaceThrough(e,t,n,r,i,a,o){let s=await this.readPageWhileFollowing(e,t,n,r,i,a,o);if(s.type===`superseded`)return s.item;let c=s.page;this.assertPageThrough(c,t);let l=this.mergeReplacement(c,a),u=this.maxCursor(t,a);if(l===void 0||this.options.compare(this.tailCursor(l),u)<0){if(s=await this.readPageWhileFollowing(this.repairPageRequest(),u,n,r,i,a,o),s.type===`superseded`)return s.item;c=s.page,this.assertPageThrough(c,u),l=this.mergeReplacement(c,a),u=this.maxCursor(t,a)}if(l===void 0||this.options.compare(this.tailCursor(l),u)<0)throw F(`${this.options.name} page did not reach its opening cursor`);let d=l[0];this.firstCursor=d===void 0?void 0:this.options.first(d),this.lastCursor=this.tailCursor(l),this.setResumeCursor(this.lastCursor),this.options.publish({type:`replace`,page:c,entries:l,hasMore:this.options.hasMore(c)});for(let e of o)this.publishNotification(e)}async readPageWhileFollowing(e,t,n,r,i,a,o){let s=this.readPage(e,t,r).then(e=>({type:`page`,value:e}),e=>({type:`page-error`,error:e}));for(;;){let e=this.nextResult(i),t=e.then(e=>({type:`next`,value:e}),e=>({type:`next-error`,error:e})),c=await Promise.race([s,t]);if(c.type===`page`)return r.throwIfAborted(),{type:`page`,page:c.value};if(c.type===`page-error`){if(!r.aborted||this.stream.signal.aborted)throw c.error;return this.awaitReplacementGeneration(n,i,e)}if(this.releaseNext(),c.type===`next-error`)throw c.error;if(c.value.done)throw r.throwIfAborted(),F(`${this.options.name} ended while reading its replacement page`);let l=c.value.value;if(l.generation!==n)return{type:`superseded`,item:l};if(l.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);l.value.type===`notification`?o.push(l.value.notification):a.push(l.value.entry)}}async awaitReplacementGeneration(e,t,n){let r=n;for(;;){let n;try{n=await r}finally{this.releaseNext()}if(n.done)throw this.stream.signal.throwIfAborted(),F(`${this.options.name} ended while replacing an aborted page generation`);let i=n.value;if(i.generation!==e)return{type:`superseded`,item:i};if(i.value.type===`opened`)throw F(`${this.options.name} emitted more than one opening cursor`);r=this.nextResult(t)}}mergeReplacement(e,t){let n=[...this.options.entries(e)];this.assertPage(n);for(let e of t)this.entryRange(e);let r=[...t].sort((e,t)=>this.options.compare(this.options.first(e),this.options.first(t))),i=this.tailCursor(n);for(let e of r){let t=this.options.first(e),r=this.options.last(e);if(!(this.options.compare(r,i)<=0)){if(this.options.compare(t,i)<=0)throw F(`${this.options.name} replacement contains a partially overlapping entry`);if(!this.options.follows(i,t))return;n.push(e),i=r}}return n}maxCursor(e,t){let n=e;for(let e of t){let t=this.options.last(e);this.options.compare(t,n)>0&&(n=t)}return n}nextResult(e){return this.pendingNext??=e.next(),this.pendingNext}async takeNext(e){let t=this.nextResult(e);try{return await t}finally{this.releaseNext()}}releaseNext(){this.pendingNext=void 0}publishNotification(e){this.options.publish({type:`notification`,notification:e})}repairPageRequest(){return this.repairRequest(this.initialRequest)}setResumeCursor(e){this.resumeCursor=e,this.hasResumeCursor=!0}currentCursor(){return this.resumeCursor}tailCursor(e){let t=e.at(-1);return t===void 0?this.options.emptyCursor:this.options.last(t)}assertPage(e){let t=e[Symbol.iterator](),n=t.next();if(n.done)return;let r=this.entryRange(n.value);for(let e of t){let t=this.entryRange(e);if(!this.options.follows(r.last,t.first))throw F(`${this.options.name} page contains discontinuous entries`);r=t}}entryRange(e){let t=this.options.first(e),n=this.options.last(e);if(this.options.compare(t,n)>0)throw F(`${this.options.name} entry has an inverted cursor range`);return{first:t,last:n}}assertPageThrough(e,t){let n=this.tailCursor(this.options.entries(e));if(this.options.compare(n,t)!==0)throw F(`${this.options.name} page did not end at its requested cursor`)}};function L(e){return new i(`gateway/internal`,e,{})}var R=class{stream;options;started=!1;disposed=!1;done;constructor(e,t){this.stream=e,this.options=t}start(){this.started||(this.started=!0,this.done=this.consume())}restart(){this.stream.restart()}async dispose(){this.disposed=!0,await this.stream.dispose(),await this.done}async consume(){let e=0,t=!1;try{for await(let n of this.stream)if(n.generation!==e&&(e=n.generation,t=!1),this.options.isSnapshot(n.value)){if(t)throw L(`${this.options.name} emitted more than one opening snapshot`);this.options.replace(n.value),t=!0,n.accept()}else{if(!t)throw L(`${this.options.name} emitted an update before its opening snapshot`);this.options.update(n.value)}}catch(e){this.disposed||this.options.failed(e)}}};let z=[`typert`,`connection`];function B(e){new V(e)}var V=class extends r.Service{ownerCtx;connection;namespaces=/* @__PURE__ */ new Map;hostFacts;streams=new ie;events;mutations=Promise.resolve();constructor(e){super(e,`remote`),this.ownerCtx=e;let t=e.get(`connection`);this.connection=t,this.events=new se(e,t,(e,t,n)=>this.openRemoteStream(e,t,n)),t.rpc.open===void 0&&this.streams.start();let n=!1,r,i=()=>{n||(t.rpc.open===void 0&&this.streams.start(),r=t.start({onConnected:()=>{this.ownerCtx.emit(`connection/reset`)},onReconnectRequested:()=>{t.rpc.open===void 0&&this.streams.reconnect()},onProbeRequested:()=>t.rpc.open===void 0&&this.streams.probe(),onStateChange:e=>{e!==`connected`&&t.rpc.open===void 0&&this.streams.disconnect()}}))},a=e.get(`loader`);a===void 0?i():a.await().then(i,()=>{}),e.effect(()=>async()=>{n=!0,r?.stop(),await this.events.dispose(),await this.streams.close()},`api-gateway.client.transport`)}$stream(e){return new j(this.connection,e)}get $host(){let e=this.connection.generation.getSnapshot()?.host.home;return(this.hostFacts===void 0||this.hostFacts.home!==e)&&(this.hostFacts={home:e,isLoopback:this.connection.isLoopback}),this.hostFacts}async $mount(e){let t=this.ctx,n=t.effect(async()=>{let n=await this.enqueue(()=>this.mountContribution(t,e));return()=>this.enqueue(n)},`api-gateway.client.$mount(${JSON.stringify(e.package)})`);return await n,async()=>{await n()}}$on(e,t){return this.events.subscribe(this.ctx,e,t)}openRemoteStream(e,t,n,r,i=`client api: ${e} has no active Connection`){let a=this.ownerCtx.get(`connection`);if(a===void 0)throw Error(i);let o=a.rpc.open?.(`/api`,e,t,n,r);return o===void 0?this.streams.open(e,t,n,r):he(o)}enqueue(e){let t=this.mutations.then(e,e);return this.mutations=t.then(()=>void 0,()=>void 0),t}async mountContribution(e,t){this.validateContribution(t);let n=e.typert.remotes.register(t),r=/* @__PURE__ */ new Map;for(let e of t.descriptors){let t=r.get(e.namespace);t===void 0?r.set(e.namespace,[e]):t.push(e)}let i=[];try{for(let[e,t]of r)i.push(await this.installNamespace(e,t))}catch(e){for(let e of i.reverse())await e();throw await n(),e}return async()=>{for(let e of i.reverse())await e();await n()}}validateContribution(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map,r=(e,t,n)=>{let r=e.get(t.namespace)??/* @__PURE__ */ new Set;if(r.has(t.method))throw Error(`client api: contribution repeats ${n} method ${K(t)}`);if(r.add(t.method),e.set(t.namespace,r),(this.namespaces.get(t.namespace)?.service)?.has(n,t.method)===!0)throw Error(`client api: ${n} method ${K(t)} is already mounted`)};for(let i of e.descriptors)fe(i),i.invocation.kind===`direct`&&r(t,i,`direct`),J(i)!==void 0&&r(n,i,`scoped`);let i=/* @__PURE__ */ new Set([...t.keys(),...n.keys()]);for(let e of i){let r=this.namespaces.get(e)?.service;if(r===void 0){if(e in this)throw Error(`client api: namespace ${JSON.stringify(e)} conflicts with the Remote service`);let t=G(e);if(this.ownerCtx.reflect.props[t]?.type===`accessor`||this.ownerCtx.get(t)!==void 0)throw Error(`client api: namespace ${JSON.stringify(e)} conflicts with an existing Remote namespace`)}for(let i of/* @__PURE__ */ new Set([...t.get(e)??[],...n.get(e)??[]]))r===void 0?U.assertMethodAvailable(e,i):r.assertMethodAvailable(i)}}async installNamespace(e,t){let n=this.namespaces.get(e),r;n===void 0?{namespace:n,installed:r}=await this.createNamespace(e,t):r=W(n.service,t);let i=n;return async()=>{for(let e of[...r].reverse())
|
|
2
2
|
/* v8 ignore next -- Cordis effect disposers are idempotent and invoke this cleanup at most once. */
|
|
3
3
|
e.token.active&&(e.token.active=!1,e.token.abort.abort(),e.scoped&&i.service.remove(`scoped`,e.descriptor.method,e.token),e.direct&&i.service.remove(`direct`,e.descriptor.method,e.token));await this.disposeNamespace(e,i)}}async createNamespace(e,t){let n,r,i=this.ownerCtx.plugin({name:G(e),apply:i=>{n=new U(i,e,(e,t,n,r)=>this.invokeMethod(e,t,n,r)),r=W(n,t)}});try{await i}catch(e){throw await i.dispose(),e}
|
|
4
4
|
/* v8 ignore next 3 -- a settled namespace fiber synchronously constructs its Service and installs the group. */
|