@jmfederico/pi-web 1.202608.2 → 1.202609.1
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 +3 -3
- package/dist/.plugins-ready +1 -0
- package/dist/cli.js +5 -2
- package/dist/cli.js.map +1 -1
- package/dist/client/apple-touch-icon-dev.png +0 -0
- package/dist/client/assets/index-AroYaCLx.js +4130 -0
- package/dist/client/assets/vendor-editor-core-YWog6mAR.js +10 -0
- package/dist/client/assets/vendor-editor-languages-DOCw3vc9.js +28 -0
- package/dist/client/favicon-dev.svg +8 -0
- package/dist/client/index.html +5 -5
- package/dist/client/pwa-icon-dev-192.png +0 -0
- package/dist/client/pwa-icon-dev-512.png +0 -0
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -1
- package/dist/docker/piWebDockerCommandPlan.js +9 -1
- package/dist/docker/piWebDockerCommandPlan.js.map +1 -1
- package/dist/nativeServices/installedServiceDefinitions.js +25 -19
- package/dist/nativeServices/installedServiceDefinitions.js.map +1 -1
- package/dist/nativeServices/serviceAction.js +38 -26
- package/dist/nativeServices/serviceAction.js.map +1 -1
- package/dist/nativeServices/servicePlan.js +3 -3
- package/dist/nativeServices/servicePlan.js.map +1 -1
- package/dist/pi-packages/captains-log/README.md +11 -0
- package/dist/pi-packages/captains-log/dist/browser/channelProtocol.js +29 -0
- package/dist/pi-packages/captains-log/dist/browser/index.js +144 -0
- package/dist/pi-packages/captains-log/dist/browser/markdown.js +67 -0
- package/dist/pi-packages/captains-log/dist/browser/panel.js +105 -0
- package/dist/pi-packages/captains-log/dist/browser/protocol.js +26 -0
- package/dist/pi-packages/captains-log/dist/companion.js +126 -0
- package/dist/pi-packages/captains-log/dist/roundtrip.js +62 -0
- package/dist/pi-packages/captains-log/dist/server.js +210 -0
- package/dist/pi-packages/captains-log/dist/store.js +75 -0
- package/dist/pi-packages/captains-log/docs/usage.md +30 -0
- package/dist/pi-packages/captains-log/package.json +35 -0
- package/dist/pi-packages/captains-log/tsconfig.json +21 -0
- package/dist/pi-packages/captains-log/vite.config.mjs +28 -0
- package/dist/pi-packages/relays/package.json +1 -1
- package/dist/pi-packages/relays/pi-web-plugin.js +1 -1
- package/dist/pi-packages/relays/prompts/relay-worktree.md +13 -142
- package/dist/pi-packages/relays/prompts/relay.md +25 -132
- package/dist/pi-packages/relays/relayDiscovery.js +2 -2
- package/dist/pi-packages/relays/relaysPanelElement.js +1 -1
- package/dist/pi-packages/relays/skills/relay/SKILL.md +59 -88
- package/dist/pi-packages/relays/skills/relay-runner/SKILL.md +253 -0
- package/dist/pi-web-plugins/files/browser/assets/files-icon-DZObYhxb.svg +3 -0
- package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +439 -0
- package/dist/pi-web-plugins/files/package.json +15 -0
- package/dist/pi-web-plugins/git/browser/git-panel.js +54 -24
- package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +1 -1
- package/dist/pi-web-plugins/git/git-backend.js +5 -5
- package/dist/pi-web-plugins/git/server-plugin.js +5 -3
- package/dist/pi-web-plugins/info/pi-web-plugin.js +1 -1
- package/dist/pi-web-plugins/mermaid/browser/mermaid-engine.js +3590 -0
- package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +6 -0
- package/dist/pi-web-plugins/mermaid/package.json +13 -0
- package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +210 -0
- package/dist/pi-web-plugins/terminal/package.json +16 -0
- package/dist/pi-web-plugins/terminal/server-plugin.js +365 -0
- package/dist/{server/terminals → pi-web-plugins/terminal}/terminalService.js +162 -65
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +45 -35
- package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +1 -1
- package/dist/piWebVersionReport.js +12 -4
- package/dist/piWebVersionReport.js.map +1 -1
- package/dist/plugin-api.d.ts +222 -23
- package/dist/plugin-api.js +1 -0
- package/dist/pluginRecoveryCli.js +3 -2
- package/dist/pluginRecoveryCli.js.map +1 -1
- package/dist/server/activity/workspaceActivityService.js.map +1 -1
- package/dist/server/app.js +33 -12
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +6 -1
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/deploymentIdentity.js +67 -0
- package/dist/server/deploymentIdentity.js.map +1 -0
- package/dist/server/deploymentIdentityRoutes.js +22 -0
- package/dist/server/deploymentIdentityRoutes.js.map +1 -0
- package/dist/server/knownAutoInstallPiPackages.js +1 -1
- package/dist/server/knownAutoInstallPiPackages.js.map +1 -1
- package/dist/server/knownPiPackages.js +12 -0
- package/dist/server/knownPiPackages.js.map +1 -0
- package/dist/server/machines/machineClient.js +2 -2
- package/dist/server/machines/machineClient.js.map +1 -1
- package/dist/server/machines/machinePluginProxyRoutes.js +53 -11
- package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
- package/dist/server/machines/machineProxyRoutes.js +70 -7
- package/dist/server/machines/machineProxyRoutes.js.map +1 -1
- package/dist/server/notices/serverNoticeRoutes.js +34 -0
- package/dist/server/notices/serverNoticeRoutes.js.map +1 -0
- package/dist/server/notices/serverNoticeService.js +26 -0
- package/dist/server/notices/serverNoticeService.js.map +1 -0
- package/dist/server/notices/serverNoticeStore.js +119 -0
- package/dist/server/notices/serverNoticeStore.js.map +1 -0
- package/dist/server/piPackageService.js +5 -5
- package/dist/server/piPackageService.js.map +1 -1
- package/dist/server/piWebPluginCatalog.js +46 -12
- package/dist/server/piWebPluginCatalog.js.map +1 -1
- package/dist/server/piWebPluginLifecycle.js +26 -3
- package/dist/server/piWebPluginLifecycle.js.map +1 -1
- package/dist/server/piWebPluginService.js +37 -2
- package/dist/server/piWebPluginService.js.map +1 -1
- package/dist/server/piWebStatus.js +1 -1
- package/dist/server/piWebStatus.js.map +1 -1
- package/dist/server/pluginCallbackDrain.js +35 -0
- package/dist/server/pluginCallbackDrain.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +84 -0
- package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js +234 -0
- package/dist/server/plugins/pluginBackendChannelProxyCoordinator.js.map +1 -0
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +52 -0
- package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -0
- package/dist/server/plugins/pluginBackendProxyRoutes.js +38 -31
- package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
- package/dist/server/plugins/pluginBackendRegistry.js +740 -0
- package/dist/server/plugins/pluginBackendRegistry.js.map +1 -0
- package/dist/server/plugins/serverPluginPiSessionEventsCapability.js +34 -0
- package/dist/server/plugins/serverPluginPiSessionEventsCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginPiSessionsCapability.js +185 -0
- package/dist/server/plugins/serverPluginPiSessionsCapability.js.map +1 -0
- package/dist/server/plugins/serverPluginRuntime.js +1028 -107
- package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
- package/dist/server/plugins/serverPluginWorkspacesCapability.js +114 -0
- package/dist/server/plugins/serverPluginWorkspacesCapability.js.map +1 -0
- package/dist/server/sessiond/pluginBackendChannelRoutes.js +393 -0
- package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -0
- package/dist/server/sessiond/pluginBackendRoutes.js +10 -7
- package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionDaemonShutdown.js +9 -2
- package/dist/server/sessiond/sessionDaemonShutdown.js.map +1 -1
- package/dist/server/sessiond/sessionProxyRoutes.js +2 -0
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
- package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
- package/dist/server/sessiond.js +82 -21
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/attachmentService.js +1 -5
- package/dist/server/sessions/attachmentService.js.map +1 -1
- package/dist/server/sessions/builtinCommands.js +2 -2
- package/dist/server/sessions/builtinCommands.js.map +1 -1
- package/dist/server/sessions/clientSessionPreview.js +14 -0
- package/dist/server/sessions/clientSessionPreview.js.map +1 -0
- package/dist/server/sessions/piSessionEventConnections.js +65 -0
- package/dist/server/sessions/piSessionEventConnections.js.map +1 -0
- package/dist/server/sessions/piSessionManagerGateway.js +171 -1
- package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +442 -90
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionActivityMarker.js +105 -0
- package/dist/server/sessions/sessionActivityMarker.js.map +1 -0
- package/dist/server/sessions/sessionEnvironmentFacts.js +5 -4
- package/dist/server/sessions/sessionEnvironmentFacts.js.map +1 -1
- package/dist/server/sessions/sessionNameGenerator.js +3 -2
- package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +18 -0
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/sessions/spawnSessionTool.js +1 -1
- package/dist/server/sessions/spawnSessionTool.js.map +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js +1 -1
- package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
- package/dist/server/sessions/transcriptBranchCache.js +81 -0
- package/dist/server/sessions/transcriptBranchCache.js.map +1 -0
- package/dist/server/sessions/transcriptMessages.js +54 -0
- package/dist/server/sessions/transcriptMessages.js.map +1 -0
- package/dist/server/terminals/requiredTerminalService.js +103 -0
- package/dist/server/terminals/requiredTerminalService.js.map +1 -0
- package/dist/server/webSocketBridge.js +339 -0
- package/dist/server/webSocketBridge.js.map +1 -1
- package/dist/server/workspaces/projectPiWebConfig.js +6 -1
- package/dist/server/workspaces/projectPiWebConfig.js.map +1 -1
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js +23 -3
- package/dist/server/workspaces/sessionDaemonWorkspaceCatalog.js.map +1 -1
- package/dist/server/workspaces/workspaceCatalog.js +3 -1
- package/dist/server/workspaces/workspaceCatalog.js.map +1 -1
- package/dist/server/workspaces/workspaceProviderRegistry.js +64 -149
- package/dist/server/workspaces/workspaceProviderRegistry.js.map +1 -1
- package/dist/server/workspaces/workspaceRemovalService.js +38 -5
- package/dist/server/workspaces/workspaceRemovalService.js.map +1 -1
- package/dist/server-plugin-api.d.ts +216 -22
- package/dist/server-plugin-api.js +319 -2
- package/dist/server-plugin-api.js.map +1 -1
- package/dist/serverPluginRecovery.js +4 -0
- package/dist/serverPluginRecovery.js.map +1 -1
- package/dist/sessiond/sessionDaemonClient.js +3 -3
- package/dist/sessiond/sessionDaemonClient.js.map +1 -1
- package/dist/shared/apiTypes.js +1 -1
- package/dist/shared/apiTypes.js.map +1 -1
- package/dist/shared/federatedRoutes.js +47 -17
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/dist/shared/machinePluginIds.js +28 -7
- package/dist/shared/machinePluginIds.js.map +1 -1
- package/dist/shared/pluginApiTypes.d.ts +21 -1
- package/dist/shared/pluginApiTypes.js +0 -1
- package/dist/shared/pluginBackendProtocol.js +163 -2
- package/dist/shared/pluginBackendProtocol.js.map +1 -1
- package/dist/shared/pluginIds.js +8 -1
- package/dist/shared/pluginIds.js.map +1 -1
- package/dist/shared/requiredTerminalPlugin.js +6 -0
- package/dist/shared/requiredTerminalPlugin.js.map +1 -0
- package/dist/shared/serverNoticeContract.js +88 -0
- package/dist/shared/serverNoticeContract.js.map +1 -0
- package/dist/shared/sessionDefaults.js +41 -0
- package/dist/shared/sessionDefaults.js.map +1 -0
- package/docs/config.md +77 -37
- package/docs/plugins.md +146 -1213
- package/examples/session-bridge-plugin/README.md +20 -0
- package/examples/session-bridge-plugin/docs/usage.md +54 -0
- package/examples/session-bridge-plugin/package.json +26 -0
- package/examples/session-bridge-plugin/src/browser/index.ts +84 -0
- package/examples/session-bridge-plugin/src/browser/protocol.ts +24 -0
- package/examples/session-bridge-plugin/src/companion.ts +65 -0
- package/examples/session-bridge-plugin/src/reviewRun.ts +39 -0
- package/examples/session-bridge-plugin/src/server.ts +85 -0
- package/examples/session-bridge-plugin/src/store.ts +57 -0
- package/examples/session-bridge-plugin/tsconfig.json +21 -0
- package/examples/workspace-provider-plugin/README.md +4 -4
- package/examples/workspace-provider-plugin/package.json +1 -1
- package/examples/workspace-provider-plugin/src/browser/index.ts +9 -9
- package/examples/workspace-provider-plugin/src/server.ts +15 -11
- package/package.json +17 -11
- package/dist/client/assets/CodeViewer-BMWwxG7q.js +0 -4
- package/dist/client/assets/TerminalPanel-CacQDIYn.js +0 -187
- package/dist/client/assets/index-DUW2xnoV.js +0 -4279
- package/dist/client/assets/vendor-editor-core-CXO8gGab.js +0 -12
- package/dist/client/assets/vendor-editor-languages-CpW4sJsX.js +0 -46
- package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +0 -1
- package/dist/client/assets/vendor-terminal-BrP-ENHg.css +0 -1
- package/dist/client/assets/vendor-terminal-D8k4UKM2.js +0 -35
- package/dist/server/terminalProxyRoutes.js +0 -141
- package/dist/server/terminalProxyRoutes.js.map +0 -1
- package/dist/server/terminals/terminalRoutes.js +0 -155
- package/dist/server/terminals/terminalRoutes.js.map +0 -1
- package/dist/server/terminals/terminalService.js.map +0 -1
- package/dist/server/terminals/terminalSize.js +0 -17
- package/dist/server/terminals/terminalSize.js.map +0 -1
|
@@ -1,13 +1,23 @@
|
|
|
1
|
-
import { isPiWebPluginId, isReservedPiWebPluginId } from "./pluginIds.js";
|
|
1
|
+
import { isPiWebBundledPluginId, isPiWebPluginId, isReservedPiWebPluginId } from "./pluginIds.js";
|
|
2
2
|
const MACHINE_PLUGIN_ID_PREFIX = "machine.";
|
|
3
3
|
export function machineScopedPluginId(machineId, pluginId) {
|
|
4
|
-
|
|
5
|
-
throw new Error("Machine id is required");
|
|
6
|
-
if (!isPiWebPluginId(pluginId))
|
|
7
|
-
throw new Error(`Invalid PI WEB plugin id: ${pluginId}`);
|
|
4
|
+
requireMachinePluginId(machineId, pluginId);
|
|
8
5
|
if (isReservedPiWebPluginId(pluginId))
|
|
9
6
|
throw new Error(`Reserved PI WEB plugin id: ${pluginId}`);
|
|
10
|
-
return
|
|
7
|
+
return scopedPluginId(machineId, pluginId);
|
|
8
|
+
}
|
|
9
|
+
/** Machine-scope a host-validated plugin from PI WEB's bundled-only namespace. */
|
|
10
|
+
export function machineScopedBundledPluginId(machineId, pluginId) {
|
|
11
|
+
requireMachinePluginId(machineId, pluginId);
|
|
12
|
+
if (!isPiWebBundledPluginId(pluginId))
|
|
13
|
+
throw new Error(`PI WEB bundled plugin id is required: ${pluginId}`);
|
|
14
|
+
return scopedPluginId(machineId, pluginId);
|
|
15
|
+
}
|
|
16
|
+
/** Machine-scope an id only after its host-authored manifest has been validated. */
|
|
17
|
+
export function machineScopedManifestPluginId(machineId, pluginId) {
|
|
18
|
+
return isPiWebBundledPluginId(pluginId)
|
|
19
|
+
? machineScopedBundledPluginId(machineId, pluginId)
|
|
20
|
+
: machineScopedPluginId(machineId, pluginId);
|
|
11
21
|
}
|
|
12
22
|
export function parseMachineScopedPluginId(pluginId) {
|
|
13
23
|
if (!pluginId.startsWith(MACHINE_PLUGIN_ID_PREFIX))
|
|
@@ -18,13 +28,24 @@ export function parseMachineScopedPluginId(pluginId) {
|
|
|
18
28
|
return undefined;
|
|
19
29
|
const encodedMachineId = rest.slice(0, separator);
|
|
20
30
|
const sourcePluginId = rest.slice(separator + 1);
|
|
21
|
-
if (!isHexString(encodedMachineId)
|
|
31
|
+
if (!isHexString(encodedMachineId)
|
|
32
|
+
|| !isPiWebPluginId(sourcePluginId)
|
|
33
|
+
|| (isReservedPiWebPluginId(sourcePluginId) && !isPiWebBundledPluginId(sourcePluginId)))
|
|
22
34
|
return undefined;
|
|
23
35
|
const machineId = hexToString(encodedMachineId);
|
|
24
36
|
if (machineId === "")
|
|
25
37
|
return undefined;
|
|
26
38
|
return { machineId, pluginId: sourcePluginId };
|
|
27
39
|
}
|
|
40
|
+
function requireMachinePluginId(machineId, pluginId) {
|
|
41
|
+
if (machineId === "")
|
|
42
|
+
throw new Error("Machine id is required");
|
|
43
|
+
if (!isPiWebPluginId(pluginId))
|
|
44
|
+
throw new Error(`Invalid PI WEB plugin id: ${pluginId}`);
|
|
45
|
+
}
|
|
46
|
+
function scopedPluginId(machineId, pluginId) {
|
|
47
|
+
return `${MACHINE_PLUGIN_ID_PREFIX}${stringToHex(machineId)}.${pluginId}`;
|
|
48
|
+
}
|
|
28
49
|
function stringToHex(value) {
|
|
29
50
|
return [...new TextEncoder().encode(value)]
|
|
30
51
|
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machinePluginIds.js","sourceRoot":"","sources":["../../src/shared/machinePluginIds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"machinePluginIds.js","sourceRoot":"","sources":["../../src/shared/machinePluginIds.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,28 @@ export type JsonValue = JsonPrimitive | JsonObject | readonly JsonValue[];
|
|
|
4
4
|
export interface JsonObject {
|
|
5
5
|
readonly [key: string]: JsonValue;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Typed token for one exact host/plugin capability version. The provider id
|
|
9
|
+
* and package-local id together with the version form the stable capability
|
|
10
|
+
* identity; matching keys do not imply matching parsers. `parse` validates and
|
|
11
|
+
* may snapshot values at provider, declared-requirement, and resolution boundaries.
|
|
12
|
+
* Parsers must be pure (no input mutation or lifecycle side effects) and tolerate
|
|
13
|
+
* repeated calls; invocation counts and returned object identity are not guaranteed.
|
|
14
|
+
* A resolver's parser receives the provider-parsed value, not the discarded result
|
|
15
|
+
* of declared-requirement validation.
|
|
16
|
+
*/
|
|
17
|
+
export interface PluginCapability<Value = unknown, Version extends number = number> {
|
|
18
|
+
readonly pluginId: string;
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly version: Version;
|
|
21
|
+
readonly parse: (value: unknown) => Value;
|
|
22
|
+
}
|
|
23
|
+
/** One capability value declaratively published by its owning plugin. */
|
|
24
|
+
export interface PluginCapabilityProvision<Value = unknown, Version extends number = number> {
|
|
25
|
+
readonly capability: PluginCapability<Value, Version>;
|
|
26
|
+
readonly value: Value;
|
|
27
|
+
}
|
|
7
28
|
export interface WorkspaceProviderCapabilities {
|
|
8
|
-
readonly request: boolean;
|
|
9
29
|
/** True only when this specific workspace advertises removal. */
|
|
10
30
|
readonly remove: boolean;
|
|
11
31
|
}
|
|
@@ -8,13 +8,47 @@ export const PLUGIN_BACKEND_REQUEST_BODY_MAX_BYTES = PLUGIN_BACKEND_JSON_MAX_BYT
|
|
|
8
8
|
export const PLUGIN_BACKEND_RESPONSE_BODY_MAX_BYTES = PLUGIN_BACKEND_RESPONSE_JSON_MAX_BYTES + 4 * 1024;
|
|
9
9
|
/** Bounded provider callback deadline inside sessiond. */
|
|
10
10
|
export const PLUGIN_BACKEND_REQUEST_TIMEOUT_MS = 10_000;
|
|
11
|
-
/** End-to-end sessiond deadline, including
|
|
11
|
+
/** End-to-end sessiond deadline, including workspace re-resolution and validation. */
|
|
12
12
|
export const PLUGIN_BACKEND_DISPATCH_TIMEOUT_MS = 25_000;
|
|
13
|
-
/** Remote gateway deadline, including workspace
|
|
13
|
+
/** Remote gateway deadline, including authoritative workspace re-resolution. */
|
|
14
14
|
export const PLUGIN_BACKEND_FEDERATION_TIMEOUT_MS = 30_000;
|
|
15
15
|
export const PLUGIN_BACKEND_OPERATION_MAX_LENGTH = 128;
|
|
16
16
|
export const PLUGIN_BACKEND_REVISION_MAX_LENGTH = 512;
|
|
17
|
+
/** Host-envelope allowance around the existing bounded request-sized channel open input. */
|
|
18
|
+
export const PLUGIN_BACKEND_CHANNEL_OPEN_FRAME_MAX_BYTES = PLUGIN_BACKEND_JSON_MAX_BYTES + 4 * 1024;
|
|
19
|
+
/** Maximum JSON payload carried by one channel data envelope. */
|
|
20
|
+
export const PLUGIN_BACKEND_CHANNEL_DATA_JSON_MAX_BYTES = 64 * 1024;
|
|
21
|
+
/** Host-envelope allowance around one bounded channel data payload. */
|
|
22
|
+
export const PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES = PLUGIN_BACKEND_CHANNEL_DATA_JSON_MAX_BYTES + 4 * 1024;
|
|
23
|
+
export const PLUGIN_BACKEND_CHANNEL_QUEUE_MAX_FRAMES = 128;
|
|
24
|
+
/** Browser-to-server aggregate queue bound at each host hop. */
|
|
25
|
+
export const PLUGIN_BACKEND_CHANNEL_QUEUE_MAX_BYTES = 1024 * 1024;
|
|
26
|
+
/** Server-to-browser bound accommodates Terminal's full worst-case escaped replay plus live output. */
|
|
27
|
+
export const PLUGIN_BACKEND_CHANNEL_SERVER_TO_BROWSER_QUEUE_MAX_BYTES = 1_280 * 1024;
|
|
28
|
+
/** Independent aggregate edge cap and authoritative sessiond global cap. */
|
|
29
|
+
export const PLUGIN_BACKEND_CHANNEL_MAX_TOTAL = 128;
|
|
30
|
+
/** Authoritative sessiond per-plugin admission cap. */
|
|
31
|
+
export const PLUGIN_BACKEND_CHANNEL_MAX_PER_PLUGIN = 32;
|
|
32
|
+
/** Authoritative sessiond per-plugin/workspace admission cap. */
|
|
33
|
+
export const PLUGIN_BACKEND_CHANNEL_MAX_PER_PLUGIN_WORKSPACE = 8;
|
|
34
|
+
export const PLUGIN_BACKEND_CHANNEL_CALLBACK_TIMEOUT_MS = 10_000;
|
|
35
|
+
/**
|
|
36
|
+
* Shared duration for independently owned edge transport-connect and sessiond
|
|
37
|
+
* plugin-open deadlines. An upstream OPEN cancels only the edge deadline.
|
|
38
|
+
*/
|
|
39
|
+
export const PLUGIN_BACKEND_CHANNEL_OPEN_TIMEOUT_MS = 10_000;
|
|
40
|
+
/** Maximum time a clean close may wait for already-accepted socket frames or callbacks. */
|
|
41
|
+
export const PLUGIN_BACKEND_CHANNEL_DRAIN_TIMEOUT_MS = 10_000;
|
|
42
|
+
/** Hard deadline before a non-cooperating peer is physically terminated. */
|
|
43
|
+
export const PLUGIN_BACKEND_CHANNEL_TEARDOWN_TIMEOUT_MS = 1_000;
|
|
44
|
+
export const PLUGIN_BACKEND_CHANNEL_MAX_LIFETIME_MS = 12 * 60 * 60_000;
|
|
45
|
+
export const PLUGIN_BACKEND_CHANNEL_CLOSE_REASON_MAX_BYTES = 120;
|
|
46
|
+
export const PLUGIN_BACKEND_CHANNEL_ERROR_MESSAGE_MAX_BYTES = 2_048;
|
|
47
|
+
export const PLUGIN_BACKEND_CHANNEL_ERROR_CODE_MAX_LENGTH = 64;
|
|
48
|
+
export const PAIRED_PLUGIN_BACKEND_REQUEST_ROUTE_PATH = "/paired-plugin-backends/:pluginId/projects/:projectId/workspaces/:workspaceId/:operation";
|
|
49
|
+
export const PAIRED_PLUGIN_BACKEND_CHANNEL_ROUTE_PATH = "/paired-plugin-backends/:pluginId/projects/:projectId/workspaces/:workspaceId/channels/:operation";
|
|
17
50
|
const OPERATION_PATTERN = /^[a-z][a-z0-9.-]*$/u;
|
|
51
|
+
const CHANNEL_ERROR_CODE_PATTERN = /^[a-z][a-z0-9.-]*$/u;
|
|
18
52
|
const MAX_JSON_DEPTH = 64;
|
|
19
53
|
export function isPluginBackendOperation(value) {
|
|
20
54
|
return value.length <= PLUGIN_BACKEND_OPERATION_MAX_LENGTH && OPERATION_PATTERN.test(value);
|
|
@@ -64,9 +98,136 @@ export function parsePluginBackendRequestEnvelope(value) {
|
|
|
64
98
|
input: cloneBoundedPluginBackendJson(value["input"], "Plugin backend request input"),
|
|
65
99
|
});
|
|
66
100
|
}
|
|
101
|
+
export function serializePluginBackendChannelOpenEnvelope(revision, input) {
|
|
102
|
+
return serializePluginBackendChannelEnvelope({
|
|
103
|
+
version: 1,
|
|
104
|
+
kind: "open",
|
|
105
|
+
revision: requirePluginBackendRevision(revision),
|
|
106
|
+
input: cloneBoundedPluginBackendJson(input, "Plugin backend channel open input", PLUGIN_BACKEND_JSON_MAX_BYTES),
|
|
107
|
+
}, "Plugin backend channel open envelope", PLUGIN_BACKEND_CHANNEL_OPEN_FRAME_MAX_BYTES);
|
|
108
|
+
}
|
|
109
|
+
export function serializePluginBackendChannelReadyEnvelope() {
|
|
110
|
+
return JSON.stringify({ version: 1, kind: "ready" });
|
|
111
|
+
}
|
|
112
|
+
export function serializePluginBackendChannelDataEnvelope(data) {
|
|
113
|
+
return serializePluginBackendChannelEnvelope({
|
|
114
|
+
version: 1,
|
|
115
|
+
kind: "data",
|
|
116
|
+
data: cloneBoundedPluginBackendJson(data, "Plugin backend channel data", PLUGIN_BACKEND_CHANNEL_DATA_JSON_MAX_BYTES),
|
|
117
|
+
}, "Plugin backend channel data envelope", PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES);
|
|
118
|
+
}
|
|
119
|
+
export function serializePluginBackendChannelErrorEnvelope(code, message) {
|
|
120
|
+
const parsedCode = requirePluginBackendChannelErrorCode(code);
|
|
121
|
+
const parsedMessage = requirePluginBackendChannelErrorMessage(message);
|
|
122
|
+
return serializePluginBackendChannelEnvelope({ version: 1, kind: "error", code: parsedCode, message: parsedMessage }, "Plugin backend channel error envelope", PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES);
|
|
123
|
+
}
|
|
124
|
+
export function parsePluginBackendChannelClientEnvelope(text) {
|
|
125
|
+
const value = parseChannelEnvelopeRecord(text, "Plugin backend channel client frame");
|
|
126
|
+
requireChannelEnvelopeVersion(value);
|
|
127
|
+
if (value["kind"] === "open") {
|
|
128
|
+
requireFrameByteLimit(text, PLUGIN_BACKEND_CHANNEL_OPEN_FRAME_MAX_BYTES, "Plugin backend channel open frame");
|
|
129
|
+
return Object.freeze({
|
|
130
|
+
version: 1,
|
|
131
|
+
kind: "open",
|
|
132
|
+
revision: requirePluginBackendRevision(value["revision"]),
|
|
133
|
+
input: cloneBoundedPluginBackendJson(value["input"], "Plugin backend channel open input", PLUGIN_BACKEND_JSON_MAX_BYTES),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (value["kind"] === "data")
|
|
137
|
+
return parseChannelDataEnvelope(value, text);
|
|
138
|
+
throw new Error("Plugin backend channel client frame kind is invalid");
|
|
139
|
+
}
|
|
140
|
+
export function parsePluginBackendChannelServerEnvelope(text) {
|
|
141
|
+
const value = parseChannelEnvelopeRecord(text, "Plugin backend channel server frame");
|
|
142
|
+
requireChannelEnvelopeVersion(value);
|
|
143
|
+
if (value["kind"] === "ready") {
|
|
144
|
+
requireFrameByteLimit(text, PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES, "Plugin backend channel ready frame");
|
|
145
|
+
return Object.freeze({ version: 1, kind: "ready" });
|
|
146
|
+
}
|
|
147
|
+
if (value["kind"] === "data")
|
|
148
|
+
return parseChannelDataEnvelope(value, text);
|
|
149
|
+
if (value["kind"] === "error") {
|
|
150
|
+
requireFrameByteLimit(text, PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES, "Plugin backend channel error frame");
|
|
151
|
+
return Object.freeze({
|
|
152
|
+
version: 1,
|
|
153
|
+
kind: "error",
|
|
154
|
+
code: requirePluginBackendChannelErrorCode(value["code"]),
|
|
155
|
+
message: requirePluginBackendChannelErrorMessage(value["message"]),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
throw new Error("Plugin backend channel server frame kind is invalid");
|
|
159
|
+
}
|
|
160
|
+
export function requirePluginBackendChannelCloseReason(value) {
|
|
161
|
+
if (typeof value !== "string")
|
|
162
|
+
throw new Error("Plugin backend channel close reason must be a string");
|
|
163
|
+
if (utf8ByteLength(value) > PLUGIN_BACKEND_CHANNEL_CLOSE_REASON_MAX_BYTES) {
|
|
164
|
+
throw new Error(`Plugin backend channel close reason exceeds the ${String(PLUGIN_BACKEND_CHANNEL_CLOSE_REASON_MAX_BYTES)} byte limit`);
|
|
165
|
+
}
|
|
166
|
+
return value;
|
|
167
|
+
}
|
|
168
|
+
export function boundedPluginBackendChannelCloseReason(value) {
|
|
169
|
+
const input = typeof value === "string" ? value : String(value);
|
|
170
|
+
if (utf8ByteLength(input) <= PLUGIN_BACKEND_CHANNEL_CLOSE_REASON_MAX_BYTES)
|
|
171
|
+
return input;
|
|
172
|
+
let output = "";
|
|
173
|
+
for (const character of input) {
|
|
174
|
+
if (utf8ByteLength(`${output}${character}`) > PLUGIN_BACKEND_CHANNEL_CLOSE_REASON_MAX_BYTES)
|
|
175
|
+
break;
|
|
176
|
+
output += character;
|
|
177
|
+
}
|
|
178
|
+
return output;
|
|
179
|
+
}
|
|
67
180
|
export function utf8ByteLength(value) {
|
|
68
181
|
return new TextEncoder().encode(value).byteLength;
|
|
69
182
|
}
|
|
183
|
+
function serializePluginBackendChannelEnvelope(value, label, maxBytes) {
|
|
184
|
+
const serialized = JSON.stringify(value);
|
|
185
|
+
requireFrameByteLimit(serialized, maxBytes, label);
|
|
186
|
+
return serialized;
|
|
187
|
+
}
|
|
188
|
+
function parseChannelEnvelopeRecord(text, label) {
|
|
189
|
+
requireFrameByteLimit(text, PLUGIN_BACKEND_CHANNEL_OPEN_FRAME_MAX_BYTES, label);
|
|
190
|
+
let value;
|
|
191
|
+
try {
|
|
192
|
+
value = JSON.parse(text);
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
throw new Error(`${label} must be valid JSON`, { cause: error });
|
|
196
|
+
}
|
|
197
|
+
if (!isPlainRecord(value))
|
|
198
|
+
throw new Error(`${label} must be an object`);
|
|
199
|
+
return value;
|
|
200
|
+
}
|
|
201
|
+
function parseChannelDataEnvelope(value, text) {
|
|
202
|
+
requireFrameByteLimit(text, PLUGIN_BACKEND_CHANNEL_DATA_FRAME_MAX_BYTES, "Plugin backend channel data frame");
|
|
203
|
+
return Object.freeze({
|
|
204
|
+
version: 1,
|
|
205
|
+
kind: "data",
|
|
206
|
+
data: cloneBoundedPluginBackendJson(value["data"], "Plugin backend channel data", PLUGIN_BACKEND_CHANNEL_DATA_JSON_MAX_BYTES),
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
function requireChannelEnvelopeVersion(value) {
|
|
210
|
+
if (value["version"] !== 1)
|
|
211
|
+
throw new Error("Plugin backend channel frame version is unsupported");
|
|
212
|
+
}
|
|
213
|
+
function requirePluginBackendChannelErrorCode(value) {
|
|
214
|
+
if (typeof value !== "string" || value.length > PLUGIN_BACKEND_CHANNEL_ERROR_CODE_MAX_LENGTH || !CHANNEL_ERROR_CODE_PATTERN.test(value)) {
|
|
215
|
+
throw new Error("Plugin backend channel error code is invalid");
|
|
216
|
+
}
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
function requirePluginBackendChannelErrorMessage(value) {
|
|
220
|
+
if (typeof value !== "string" || value === "")
|
|
221
|
+
throw new Error("Plugin backend channel error message must be a non-empty string");
|
|
222
|
+
if (utf8ByteLength(value) > PLUGIN_BACKEND_CHANNEL_ERROR_MESSAGE_MAX_BYTES) {
|
|
223
|
+
throw new Error(`Plugin backend channel error message exceeds the ${String(PLUGIN_BACKEND_CHANNEL_ERROR_MESSAGE_MAX_BYTES)} byte limit`);
|
|
224
|
+
}
|
|
225
|
+
return value;
|
|
226
|
+
}
|
|
227
|
+
function requireFrameByteLimit(text, maxBytes, label) {
|
|
228
|
+
if (utf8ByteLength(text) > maxBytes)
|
|
229
|
+
throw new Error(`${label} exceeds the ${String(maxBytes)} byte limit`);
|
|
230
|
+
}
|
|
70
231
|
function cloneJsonValue(value, ancestors, label, depth) {
|
|
71
232
|
if (depth > MAX_JSON_DEPTH)
|
|
72
233
|
throw new Error(`${label} exceeds the maximum JSON depth of ${String(MAX_JSON_DEPTH)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginBackendProtocol.js","sourceRoot":"","sources":["../../src/shared/pluginBackendProtocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pluginBackendProtocol.js","sourceRoot":"","sources":["../../src/shared/pluginBackendProtocol.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/pluginIds.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
export const piWebPluginIdPattern = /^[a-z][a-z0-9.-]*$/u;
|
|
2
2
|
const reservedPiWebPluginIds = new Set(["core", "themes"]);
|
|
3
3
|
const machinePluginIdPrefix = "machine.";
|
|
4
|
+
const bundledPiWebPluginId = "pi-web";
|
|
5
|
+
const bundledPiWebPluginIdPrefix = `${bundledPiWebPluginId}.`;
|
|
4
6
|
export function isPiWebPluginId(value) {
|
|
5
7
|
return piWebPluginIdPattern.test(value);
|
|
6
8
|
}
|
|
9
|
+
export function isPiWebBundledPluginId(value) {
|
|
10
|
+
return value === bundledPiWebPluginId || value.startsWith(bundledPiWebPluginIdPrefix);
|
|
11
|
+
}
|
|
7
12
|
export function isReservedPiWebPluginId(value) {
|
|
8
|
-
return reservedPiWebPluginIds.has(value)
|
|
13
|
+
return reservedPiWebPluginIds.has(value)
|
|
14
|
+
|| value.startsWith(machinePluginIdPrefix)
|
|
15
|
+
|| isPiWebBundledPluginId(value);
|
|
9
16
|
}
|
|
10
17
|
//# sourceMappingURL=pluginIds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginIds.js","sourceRoot":"","sources":["../../src/shared/pluginIds.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3D,MAAM,qBAAqB,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pluginIds.js","sourceRoot":"","sources":["../../src/shared/pluginIds.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3D,MAAM,qBAAqB,GAAG,UAAU,CAAC;AACzC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AACtC,MAAM,0BAA0B,GAAG,GAAG,oBAAoB,GAAG,CAAC;AAE9D,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,KAAK,KAAK,oBAAoB,IAAI,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC;WACnC,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC;WACvC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const REQUIRED_TERMINAL_PLUGIN_ID = "pi-web.terminal";
|
|
2
|
+
export function terminalPluginModeForSafeStart(safeStart) {
|
|
3
|
+
return safeStart === "none" ? "recovery-disabled" : "required";
|
|
4
|
+
}
|
|
5
|
+
export const REQUIRED_TERMINAL_RECOVERY_GUIDANCE = "Use `pi-web plugins safe-start set none --restart` to start PI WEB without Terminal for recovery.";
|
|
6
|
+
//# sourceMappingURL=requiredTerminalPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requiredTerminalPlugin.js","sourceRoot":"","sources":["../../src/shared/requiredTerminalPlugin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAI7D,MAAM,UAAU,8BAA8B,CAAC,SAA8C;IAC3F,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,mCAAmC,GAAG,mGAAmG,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** Reserved host-derived attribution prefix for plugin-authored notices. */
|
|
2
|
+
export const SERVER_PLUGIN_NOTICE_SOURCE_PREFIX = "plugin:";
|
|
3
|
+
/** Maximum UTF-8 size of one plugin-authored notice message. */
|
|
4
|
+
export const SERVER_PLUGIN_NOTICE_MESSAGE_MAX_BYTES = 4 * 1024;
|
|
5
|
+
/** Maximum serialized UTF-8 size of plugin-authored detached metadata. */
|
|
6
|
+
export const SERVER_PLUGIN_NOTICE_CONTEXT_MAX_BYTES = 16 * 1024;
|
|
7
|
+
/** Maximum nesting below a plugin-authored notice context root. */
|
|
8
|
+
export const SERVER_PLUGIN_NOTICE_CONTEXT_MAX_DEPTH = 32;
|
|
9
|
+
/** Maximum length of each project, workspace, or session scope identifier. */
|
|
10
|
+
export const SERVER_NOTICE_SCOPE_ID_MAX_LENGTH = 512;
|
|
11
|
+
/** Maximum retained notices attributed to one plugin source. */
|
|
12
|
+
export const SERVER_PLUGIN_NOTICE_PER_SOURCE_LIMIT = 25;
|
|
13
|
+
/** Maximum retained plugin-authored notices across all plugin sources. */
|
|
14
|
+
export const SERVER_PLUGIN_NOTICE_GLOBAL_LIMIT = 100;
|
|
15
|
+
const SERVER_NOTICE_SCOPE_KEYS = ["projectId", "workspaceId", "sessionId"];
|
|
16
|
+
/** Validate, detach, and freeze the visibility selectors carried by a notice. */
|
|
17
|
+
export function parseServerNoticeScope(value, label) {
|
|
18
|
+
if (!isPlainRecord(value))
|
|
19
|
+
throw new Error(`${label} must be an object`);
|
|
20
|
+
let hasOwnKey = false;
|
|
21
|
+
for (const key in value) {
|
|
22
|
+
if (!Object.hasOwn(value, key))
|
|
23
|
+
continue;
|
|
24
|
+
hasOwnKey = true;
|
|
25
|
+
if (!isServerNoticeScopeKey(key))
|
|
26
|
+
throw new Error(`Unsupported ${label} field: ${key}`);
|
|
27
|
+
}
|
|
28
|
+
if (!hasOwnKey) {
|
|
29
|
+
throw new Error(`${label} must contain at least one of projectId, workspaceId, or sessionId`);
|
|
30
|
+
}
|
|
31
|
+
const scope = {};
|
|
32
|
+
for (const key of SERVER_NOTICE_SCOPE_KEYS) {
|
|
33
|
+
if (!Object.hasOwn(value, key))
|
|
34
|
+
continue;
|
|
35
|
+
const id = value[key];
|
|
36
|
+
if (typeof id !== "string" || id.length > SERVER_NOTICE_SCOPE_ID_MAX_LENGTH || id.trim() === "") {
|
|
37
|
+
throw new Error(`${label} ${key} must be a non-empty string of at most ${String(SERVER_NOTICE_SCOPE_ID_MAX_LENGTH)} characters`);
|
|
38
|
+
}
|
|
39
|
+
scope[key] = id;
|
|
40
|
+
}
|
|
41
|
+
if (scope.projectId !== undefined)
|
|
42
|
+
return Object.freeze({ ...scope, projectId: scope.projectId });
|
|
43
|
+
if (scope.workspaceId !== undefined)
|
|
44
|
+
return Object.freeze({ ...scope, workspaceId: scope.workspaceId });
|
|
45
|
+
if (scope.sessionId !== undefined)
|
|
46
|
+
return Object.freeze({ ...scope, sessionId: scope.sessionId });
|
|
47
|
+
throw new Error(`${label} must contain at least one visibility selector`);
|
|
48
|
+
}
|
|
49
|
+
export function isPluginServerNoticeSource(source) {
|
|
50
|
+
return source?.startsWith(SERVER_PLUGIN_NOTICE_SOURCE_PREFIX) === true;
|
|
51
|
+
}
|
|
52
|
+
/** Return as soon as a string cannot fit within a notice UTF-8 byte budget. */
|
|
53
|
+
export function serverNoticeStringExceedsUtf8ByteLimit(value, maxBytes) {
|
|
54
|
+
let byteLength = 0;
|
|
55
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
56
|
+
const codeUnit = value.charCodeAt(index);
|
|
57
|
+
if (codeUnit <= 0x7f) {
|
|
58
|
+
byteLength += 1;
|
|
59
|
+
}
|
|
60
|
+
else if (codeUnit <= 0x7ff) {
|
|
61
|
+
byteLength += 2;
|
|
62
|
+
}
|
|
63
|
+
else if (codeUnit >= 0xd800 && codeUnit <= 0xdbff
|
|
64
|
+
&& index + 1 < value.length
|
|
65
|
+
&& value.charCodeAt(index + 1) >= 0xdc00
|
|
66
|
+
&& value.charCodeAt(index + 1) <= 0xdfff) {
|
|
67
|
+
byteLength += 4;
|
|
68
|
+
index += 1;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// TextEncoder replaces isolated surrogates with the three-byte U+FFFD.
|
|
72
|
+
byteLength += 3;
|
|
73
|
+
}
|
|
74
|
+
if (byteLength > maxBytes)
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
function isServerNoticeScopeKey(value) {
|
|
80
|
+
return SERVER_NOTICE_SCOPE_KEYS.some((key) => key === value);
|
|
81
|
+
}
|
|
82
|
+
function isPlainRecord(value) {
|
|
83
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
84
|
+
return false;
|
|
85
|
+
const prototype = Object.getPrototypeOf(value);
|
|
86
|
+
return prototype === Object.prototype || prototype === null;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=serverNoticeContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverNoticeContract.js","sourceRoot":"","sources":["../../src/shared/serverNoticeContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { isKnownThinkingLevel } from "./thinkingLevels.js";
|
|
2
|
+
/** Exactly one selector can be pinned per request; a model is always a pair. */
|
|
3
|
+
export function parseSessionDefaultsUpdate(value) {
|
|
4
|
+
const { provider, modelId, thinkingLevel } = value;
|
|
5
|
+
if (thinkingLevel !== undefined) {
|
|
6
|
+
if (provider !== undefined || modelId !== undefined)
|
|
7
|
+
throw new Error("Specify either provider/modelId or thinkingLevel");
|
|
8
|
+
if (typeof thinkingLevel !== "string" || !isKnownThinkingLevel(thinkingLevel))
|
|
9
|
+
throw new Error("Invalid thinking level");
|
|
10
|
+
return { thinkingLevel };
|
|
11
|
+
}
|
|
12
|
+
if (typeof provider !== "string" || provider.trim() === "" || typeof modelId !== "string" || modelId.trim() === "") {
|
|
13
|
+
throw new Error("provider and modelId must both be non-empty strings");
|
|
14
|
+
}
|
|
15
|
+
return { provider, modelId };
|
|
16
|
+
}
|
|
17
|
+
function isRecord(value) {
|
|
18
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
19
|
+
}
|
|
20
|
+
export function parseSessionDefaults(value) {
|
|
21
|
+
if (!isRecord(value))
|
|
22
|
+
throw new Error("Invalid session defaults");
|
|
23
|
+
const record = value;
|
|
24
|
+
const result = {};
|
|
25
|
+
for (const key of ["defaultProvider", "defaultModel"]) {
|
|
26
|
+
const field = record[key];
|
|
27
|
+
if (field === undefined)
|
|
28
|
+
continue;
|
|
29
|
+
if (typeof field !== "string")
|
|
30
|
+
throw new Error(`Invalid ${key}`);
|
|
31
|
+
result[key] = field;
|
|
32
|
+
}
|
|
33
|
+
const level = record["defaultThinkingLevel"];
|
|
34
|
+
if (level !== undefined) {
|
|
35
|
+
if (typeof level !== "string" || !isKnownThinkingLevel(level))
|
|
36
|
+
throw new Error("Invalid defaultThinkingLevel");
|
|
37
|
+
result.defaultThinkingLevel = level;
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=sessionDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionDefaults.js","sourceRoot":"","sources":["../../src/shared/sessionDefaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,gFAAgF;AAChF,MAAM,UAAU,0BAA0B,CAAC,KAA8B;IACvE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IACnD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACzH,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzH,OAAO,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnH,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAU,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC/G,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|