@codexhost/cli-darwin-arm64 0.18.0-beta.1 → 0.18.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +103 -93
- package/app/console-web.js +104 -94
- package/app/desktop-controller.mjs +103 -109
- package/app/host-runtime.mjs +10067 -8374
- package/app/plugins/antigravity/plugin.mjs +103 -93
- package/app/plugins/claude-code/plugin.mjs +103 -93
- package/app/plugins/codebuddy/plugin.mjs +103 -93
- package/app/plugins/codex-usage/plugin.mjs +103 -93
- package/app/plugins/copilot/plugin.mjs +103 -93
- package/app/plugins/cursor-cli/plugin.mjs +103 -93
- package/app/plugins/deepseek-harness/plugin.mjs +103 -93
- package/app/plugins/devin/plugin.mjs +103 -93
- package/app/plugins/enabled.json +0 -1
- package/app/plugins/grok/plugin.mjs +103 -93
- package/app/plugins/hermes/plugin.mjs +103 -93
- package/app/plugins/kimi-code/plugin.mjs +103 -93
- package/app/plugins/kiro-cli/plugin.mjs +103 -93
- package/app/plugins/omp/plugin.mjs +103 -93
- package/app/plugins/opencode/plugin.mjs +103 -93
- package/app/plugins/pi/plugin.mjs +103 -93
- package/app/plugins/qoder/plugin.mjs +103 -93
- package/app/plugins/qoder-cn/plugin.mjs +103 -93
- package/app/plugins/qwen-code/plugin.mjs +103 -93
- package/app/plugins/workbuddy/plugin.mjs +103 -93
- package/app/plugins/zcode/plugin.mjs +103 -93
- package/app/renderer-extension.js +122 -149
- package/app/web/assets/index-C3lniEH1.css +1 -0
- package/app/web/assets/index-aKvkfNJN.js +199 -0
- package/app/web/codexhost-settings.js +104 -94
- 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-ui-chat/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +63 -62
- package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +85 -85
- 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-sidebar/client.js +1 -1
- 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 -8
- package/app/web/sw.js +55 -24
- package/app/web-modules/server.mjs +1091 -680
- 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,16 @@ 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({ includeArchived: external_exports.boolean().optional() }).strict();
|
|
15301
|
+
var threadCatalogReadResultSchema = external_exports.object({
|
|
15302
|
+
threads: external_exports.array(jsonObjectSchema),
|
|
15303
|
+
ownership: external_exports.array(threadOwnershipSchema),
|
|
15304
|
+
/** Known archived IDs, including visible local external records even when their rows are
|
|
15305
|
+
* excluded. Native archived IDs are complete only when includeArchived is true. */
|
|
15306
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema)
|
|
15307
|
+
}).strict();
|
|
15308
|
+
|
|
15288
15309
|
// ../shared-contracts/dist/voice.js
|
|
15289
15310
|
var VOICE_AUDIO_MAX_BYTES = 10 * 1024 * 1024;
|
|
15290
15311
|
var voiceAudioMimeTypeSchema = external_exports.string().regex(/^audio\/[a-z0-9.+-]+(?:\s*;[^\r\n]*)?$/i);
|
|
@@ -15525,96 +15546,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15525
15546
|
timeoutMinutes: 30
|
|
15526
15547
|
});
|
|
15527
15548
|
|
|
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"]
|
|
15603
|
-
});
|
|
15604
|
-
|
|
15605
15549
|
// ../shared-contracts/dist/harness-preferences.js
|
|
15606
15550
|
var HARNESS_PREFERENCES_GET_METHOD = "codexhost/harness/preferences/get";
|
|
15607
15551
|
var HARNESS_PREFERENCES_PATCH_METHOD = "codexhost/harness/preferences/patch";
|
|
15608
15552
|
var HARNESS_PREFERENCES_CHANGED_METHOD = "codexhost/harness/preferences/changed";
|
|
15609
15553
|
var harnessPreferenceScopeSchema = external_exports.string().regex(/^external$/u);
|
|
15610
|
-
var preferenceHarnessKey =
|
|
15554
|
+
var preferenceHarnessKey = harnessIdSchema.transform((id) => String(id));
|
|
15611
15555
|
var harnessDefaultConfigurationSchema = external_exports.strictObject({
|
|
15612
15556
|
model: harnessModelRefSchema.optional(),
|
|
15613
15557
|
thinkingOptionId: harnessThinkingOptionIdSchema.optional(),
|
|
15614
15558
|
permissionModeId: harnessPermissionModeIdSchema.optional()
|
|
15615
15559
|
}).refine((value) => Boolean(value.model || value.thinkingOptionId || value.permissionModeId), "A default configuration must contain a preference");
|
|
15616
15560
|
var newThreadDefaultsSchema = external_exports.strictObject({
|
|
15617
|
-
lastHarness:
|
|
15561
|
+
lastHarness: harnessIdSchema.optional(),
|
|
15618
15562
|
byHarness: external_exports.record(preferenceHarnessKey, harnessDefaultConfigurationSchema)
|
|
15619
15563
|
});
|
|
15620
15564
|
var modelId = external_exports.string().min(1).max(1024);
|
|
@@ -15635,19 +15579,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15635
15579
|
external_exports.strictObject({ kind: external_exports.literal("idleRelease"), value: idleReleaseSettingsSchema }),
|
|
15636
15580
|
external_exports.strictObject({
|
|
15637
15581
|
kind: external_exports.literal("favorite"),
|
|
15638
|
-
harnessId:
|
|
15582
|
+
harnessId: harnessIdSchema,
|
|
15639
15583
|
modelId,
|
|
15640
15584
|
enabled: external_exports.boolean()
|
|
15641
15585
|
}),
|
|
15642
15586
|
external_exports.strictObject({
|
|
15643
15587
|
kind: external_exports.literal("favorites"),
|
|
15644
|
-
harnessId:
|
|
15588
|
+
harnessId: harnessIdSchema,
|
|
15645
15589
|
modelIds: external_exports.array(modelId).max(2048)
|
|
15646
15590
|
}),
|
|
15647
15591
|
external_exports.strictObject({
|
|
15648
15592
|
kind: external_exports.literal("newThread"),
|
|
15649
|
-
lastHarness:
|
|
15650
|
-
harnessId:
|
|
15593
|
+
lastHarness: harnessIdSchema.optional(),
|
|
15594
|
+
harnessId: harnessIdSchema.optional(),
|
|
15651
15595
|
configuration: harnessDefaultConfigurationSchema.optional()
|
|
15652
15596
|
})
|
|
15653
15597
|
]);
|
|
@@ -15663,12 +15607,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15663
15607
|
code: "custom",
|
|
15664
15608
|
message: "A default Harness or complete configuration is required"
|
|
15665
15609
|
});
|
|
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
15610
|
}
|
|
15673
15611
|
});
|
|
15674
15612
|
var harnessPreferencesDocumentSchema = external_exports.strictObject({
|
|
@@ -16064,6 +16002,76 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16064
16002
|
accounts: external_exports.array(requireReportedQuota(harnessAccountSnapshotObject.extend(harnessAccountIdentityShape))).max(128)
|
|
16065
16003
|
}).strict();
|
|
16066
16004
|
|
|
16005
|
+
// ../shared-contracts/dist/harness-plugins.js
|
|
16006
|
+
var HARNESS_PLUGIN_MANIFEST_MAX_BYTES = 32 * 1024;
|
|
16007
|
+
var HARNESS_PLUGIN_ICON_MAX_BYTES = 128 * 1024;
|
|
16008
|
+
var HARNESS_PLUGIN_LIMIT = 128;
|
|
16009
|
+
var installedHarnessPluginIdSchema = external_exports.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/u).pipe(harnessIdSchema);
|
|
16010
|
+
var harnessPluginIdSchema = installedHarnessPluginIdSchema.refine((id) => id !== "codex", "The official Codex identity is reserved");
|
|
16011
|
+
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");
|
|
16012
|
+
var documentationUrlSchema = external_exports.url().refine((value) => /^https:\/\/[^/?#@]+(?:[/?#]|$)/iu.test(value), "Plugin documentation links must be credential-free HTTPS URLs");
|
|
16013
|
+
var localizedTextSchema = external_exports.object({ en: external_exports.string().max(4096), "zh-CN": external_exports.string().max(4096).optional() }).strict();
|
|
16014
|
+
var harnessInstallationGuideSchema = external_exports.object({
|
|
16015
|
+
commands: external_exports.array(external_exports.object({ terminal: external_exports.string().max(256), command: external_exports.string().max(4096) }).strict()).max(8),
|
|
16016
|
+
before: localizedTextSchema.optional(),
|
|
16017
|
+
after: localizedTextSchema.optional(),
|
|
16018
|
+
downloads: external_exports.array(external_exports.object({ label: external_exports.string().max(128), url: documentationUrlSchema }).strict()).max(8).optional()
|
|
16019
|
+
}).strict();
|
|
16020
|
+
var pluginPresentationShape = {
|
|
16021
|
+
id: installedHarnessPluginIdSchema,
|
|
16022
|
+
name: external_exports.string().trim().min(1).max(128),
|
|
16023
|
+
version: external_exports.string().min(1).max(128),
|
|
16024
|
+
/** Capability-only plugin; omitted for existing session-capable plugins. */
|
|
16025
|
+
kind: external_exports.literal("usage").optional(),
|
|
16026
|
+
/** Original image styling or bounded vector paths; never arbitrary CSS/SVG markup. */
|
|
16027
|
+
iconStyle: external_exports.object({
|
|
16028
|
+
vector: external_exports.object({
|
|
16029
|
+
viewBox: external_exports.string().max(128).regex(/^-?\d+(?:\.\d+)?(?: +-?\d+(?:\.\d+)?){3}$/u),
|
|
16030
|
+
color: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu),
|
|
16031
|
+
paths: external_exports.array(external_exports.object({
|
|
16032
|
+
d: external_exports.string().min(1).max(32768).regex(/^[MmLlHhVvCcSsQqTtAaZz\d.,+eE\s-]+$/u),
|
|
16033
|
+
fillRule: external_exports.enum(["evenodd", "nonzero"]).optional(),
|
|
16034
|
+
fill: external_exports.string().regex(/^(?:currentColor|#[a-f0-9]{6})$/iu).optional()
|
|
16035
|
+
}).strict()).min(1).max(32)
|
|
16036
|
+
}).strict().optional(),
|
|
16037
|
+
background: external_exports.string().regex(/^#[a-f0-9]{6}$/iu).optional(),
|
|
16038
|
+
borderRadius: external_exports.number().min(0).max(50).optional(),
|
|
16039
|
+
paddingRatio: external_exports.number().min(0).max(0.25).optional()
|
|
16040
|
+
}).strict().optional(),
|
|
16041
|
+
installation: harnessInstallationGuideSchema.optional(),
|
|
16042
|
+
notice: localizedTextSchema.optional(),
|
|
16043
|
+
/** The factory accepts a persisted local entrypoint through its construction context. */
|
|
16044
|
+
launchCommand: external_exports.literal(true).optional(),
|
|
16045
|
+
links: external_exports.object({
|
|
16046
|
+
website: documentationUrlSchema.optional(),
|
|
16047
|
+
documentation: documentationUrlSchema.optional(),
|
|
16048
|
+
installation: documentationUrlSchema.optional()
|
|
16049
|
+
}).strict().optional()
|
|
16050
|
+
};
|
|
16051
|
+
var harnessPluginManifestSchema = external_exports.object({
|
|
16052
|
+
manifestVersion: external_exports.literal(1),
|
|
16053
|
+
...pluginPresentationShape,
|
|
16054
|
+
adapterApiVersion: external_exports.number().int().positive(),
|
|
16055
|
+
entry: relativeResourceSchema,
|
|
16056
|
+
icon: relativeResourceSchema.optional()
|
|
16057
|
+
}).strict();
|
|
16058
|
+
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);
|
|
16059
|
+
var harnessPluginDescriptorSchema = external_exports.object({
|
|
16060
|
+
...pluginPresentationShape,
|
|
16061
|
+
icon: harnessPluginIconSchema.optional()
|
|
16062
|
+
}).strict();
|
|
16063
|
+
var harnessPluginListParamsSchema = external_exports.object({}).strict();
|
|
16064
|
+
var harnessPluginListResultSchema = external_exports.object({
|
|
16065
|
+
plugins: external_exports.array(harnessPluginDescriptorSchema.extend({ id: harnessPluginIdSchema })).max(HARNESS_PLUGIN_LIMIT)
|
|
16066
|
+
}).strict();
|
|
16067
|
+
var harnessPluginConfigurationSchema = external_exports.object({
|
|
16068
|
+
version: external_exports.literal(1),
|
|
16069
|
+
enabled: external_exports.array(installedHarnessPluginIdSchema).max(HARNESS_PLUGIN_LIMIT)
|
|
16070
|
+
}).strict().refine((value) => new Set(value.enabled).size === value.enabled.length, {
|
|
16071
|
+
message: "Enabled plugin IDs must be unique",
|
|
16072
|
+
path: ["enabled"]
|
|
16073
|
+
});
|
|
16074
|
+
|
|
16067
16075
|
// ../shared-contracts/dist/harness-route.js
|
|
16068
16076
|
var harnessPluginRouteSchema = external_exports.object({
|
|
16069
16077
|
harnessId: harnessPluginIdSchema,
|
|
@@ -16263,6 +16271,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16263
16271
|
}).strict();
|
|
16264
16272
|
var harnessCommandCatalogSchema = external_exports.object({
|
|
16265
16273
|
commands: external_exports.array(harnessCommandDescriptorSchema),
|
|
16274
|
+
/** Partial discovery failures; valid commands remain available. */
|
|
16275
|
+
warnings: external_exports.array(external_exports.string().min(1)).optional(),
|
|
16266
16276
|
/**
|
|
16267
16277
|
* `live` when the catalog includes what a native Session reports for its
|
|
16268
16278
|
* workspace (custom commands, skills); `static` for Adapter built-ins only.
|
|
@@ -16298,7 +16308,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16298
16308
|
}).strict();
|
|
16299
16309
|
var threadCommandExecuteResultSchema = external_exports.object({
|
|
16300
16310
|
accepted: external_exports.literal(true),
|
|
16301
|
-
turnId: hostTurnIdSchema
|
|
16311
|
+
turnId: hostTurnIdSchema.optional()
|
|
16302
16312
|
}).strict();
|
|
16303
16313
|
|
|
16304
16314
|
// ../shared-contracts/dist/json-rpc.js
|
|
@@ -32504,7 +32514,7 @@ ${messages.harnessVersionLatest}: ${harnessVersionLabel(version2.state, messages
|
|
|
32504
32514
|
`;
|
|
32505
32515
|
|
|
32506
32516
|
// 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';
|
|
32517
|
+
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
32518
|
|
|
32509
32519
|
// src/web-request-manager.ts
|
|
32510
32520
|
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-aKvkfNJN.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??this.timeout,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. */
|