@agent-vm/agent-portal-sdk 0.0.113 → 0.0.115
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/contract-fixtures/portable-contracts/artifacts/artifact-read-result-authority-field-rejected.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/artifacts/artifact-read-result-default-truncated.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/artifacts/artifact-reference-path-rejected.fixture.json +17 -0
- package/contract-fixtures/portable-contracts/artifacts/artifact-reference-valid.fixture.json +24 -0
- package/contract-fixtures/portable-contracts/bounds/artifact-read-maximum-bytes.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/bounds/artifact-read-over-maximum-bytes.fixture.json +19 -0
- package/contract-fixtures/portable-contracts/bounds/json-object-over-maximum-entries.fixture.json +1013 -0
- package/contract-fixtures/portable-contracts/bounds/list-request-maximum-limit.fixture.json +30 -0
- package/contract-fixtures/portable-contracts/bounds/list-request-over-maximum-limit.fixture.json +22 -0
- package/contract-fixtures/portable-contracts/bounds/progress-maximum-percent.fixture.json +22 -0
- package/contract-fixtures/portable-contracts/bounds/progress-minimum-percent.fixture.json +22 -0
- package/contract-fixtures/portable-contracts/bounds/progress-over-maximum-percent.fixture.json +16 -0
- package/contract-fixtures/portable-contracts/bounds/unsafe-integer.fixture.json +11 -0
- package/contract-fixtures/portable-contracts/canonical-json/nested-key-order-and-negative-zero.fixture.json +24 -0
- package/contract-fixtures/portable-contracts/coverage/gateway-trusted-invocation-context.fixture.json +53 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-close-request.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-close-result.fixture.json +31 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-open-request.fixture.json +17 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-open-result.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-status-request.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-environment-status-result.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-cancel-request.fixture.json +25 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-cancel-result.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-start-request.fixture.json +51 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-start-result.fixture.json +31 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-wait-request.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-exec-wait-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-list-request.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-list-result.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-mkdir-request.fixture.json +31 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-mkdir-result.fixture.json +23 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-read-request.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-read-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-remove-request.fixture.json +31 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-remove-result.fixture.json +23 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-rename-request.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-rename-result.fixture.json +23 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-stat-request.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-stat-result.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-write-request.fixture.json +43 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-fs-write-result.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-operation-identity.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-cancel-request.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-cancel-result.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-logs-request.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-logs-result.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-start-request.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-start-result.fixture.json +39 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-status-request.fixture.json +27 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-status-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-wait-request.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-process-wait-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-retained-result-lookup-request.fixture.json +25 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-close-request.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-close-result.fixture.json +31 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-read-request.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-read-result.fixture.json +47 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-write-request.fixture.json +45 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-stream-write-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-terminal-attach-request.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-terminal-attach-result.fixture.json +53 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-terminal-resize-request.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/coverage/sandbox-terminal-resize-result.fixture.json +37 -0
- package/contract-fixtures/portable-contracts/defaults/describe-request-defaults.fixture.json +44 -0
- package/contract-fixtures/portable-contracts/defaults/list-request-default-limit.fixture.json +29 -0
- package/contract-fixtures/portable-contracts/defaults/search-request-defaults.fixture.json +33 -0
- package/contract-fixtures/portable-contracts/discovery/describe-result.fixture.json +18 -0
- package/contract-fixtures/portable-contracts/discovery/list-result.fixture.json +18 -0
- package/contract-fixtures/portable-contracts/discovery/search-result.fixture.json +18 -0
- package/contract-fixtures/portable-contracts/gateway/attachment-duplicate-agent.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/gateway/attachment-valid.fixture.json +32 -0
- package/contract-fixtures/portable-contracts/gateway/managed-agent-projection-hermes-valid.fixture.json +28 -0
- package/contract-fixtures/portable-contracts/gateway/managed-agent-projection-old-authority-rejected.fixture.json +20 -0
- package/contract-fixtures/portable-contracts/gateway/managed-agent-projection-openclaw-valid.fixture.json +28 -0
- package/contract-fixtures/portable-contracts/gateway/managed-agent-projection-self-root-rejected.fixture.json +20 -0
- package/contract-fixtures/portable-contracts/gateway/managed-agent-projection-work-root-rejected.fixture.json +20 -0
- package/contract-fixtures/portable-contracts/operations/cancellation-pending.fixture.json +18 -0
- package/contract-fixtures/portable-contracts/operations/retained-ambiguous.fixture.json +28 -0
- package/contract-fixtures/portable-contracts/outcomes/ambiguous.fixture.json +40 -0
- package/contract-fixtures/portable-contracts/outcomes/call-result-aggregate-status-invalid.fixture.json +35 -0
- package/contract-fixtures/portable-contracts/outcomes/call-result-aggregate-status-valid.fixture.json +54 -0
- package/contract-fixtures/portable-contracts/outcomes/cancelled-proven.fixture.json +40 -0
- package/contract-fixtures/portable-contracts/outcomes/completed-failed.fixture.json +42 -0
- package/contract-fixtures/portable-contracts/outcomes/completed-succeeded.fixture.json +40 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-ambiguous-retry-class.fixture.json +25 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-error-completed-succeeded.fixture.json +26 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-error-result-with-value.fixture.json +19 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-not-dispatched-certainty.fixture.json +25 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-ok-completed-failed.fixture.json +23 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-ok-result-with-error.fixture.json +19 -0
- package/contract-fixtures/portable-contracts/outcomes/invalid-replaced-missing-prior-side-effects.fixture.json +25 -0
- package/contract-fixtures/portable-contracts/outcomes/missing-operation-identity-outcome.fixture.json +26 -0
- package/contract-fixtures/portable-contracts/outcomes/not-dispatched.fixture.json +40 -0
- package/contract-fixtures/portable-contracts/outcomes/replaced-proven.fixture.json +42 -0
- package/contract-fixtures/portable-contracts/outcomes/timed-out-proven.fixture.json +40 -0
- package/contract-fixtures/portable-contracts/requests/call-request-canonical.fixture.json +42 -0
- package/contract-fixtures/portable-contracts/requests/call-request-duplicate-id.fixture.json +26 -0
- package/contract-fixtures/portable-contracts/requests/call-request-reserved-id.fixture.json +20 -0
- package/contract-fixtures/portable-contracts/requests/call-request-unknown-field.fixture.json +21 -0
- package/contract-fixtures/portable-contracts/sandbox/exec-start-duplicate-environment-name.fixture.json +32 -0
- package/contract-fixtures/portable-contracts/sandbox/fs-stat-parent-path.fixture.json +26 -0
- package/contract-fixtures/portable-contracts/sandbox/stream-write-byte-length.fixture.json +21 -0
- package/dist/adapter-boundary/index.d.ts +2 -41
- package/dist/adapter-boundary/index.js +1 -28
- package/dist/adapter-boundary-BIagsTUH.js +29 -0
- package/dist/adapter-boundary-BIagsTUH.js.map +1 -0
- package/dist/approval-surface/index.d.ts +2 -48
- package/dist/approval-surface/index.js +2 -22
- package/dist/approval-surface-en5VAY5h.js +20 -0
- package/dist/approval-surface-en5VAY5h.js.map +1 -0
- package/dist/{artifact-reference-schema-XiJ280uV.js → artifact-reference-schema-CiEjxYPd.js} +4 -3
- package/dist/artifact-reference-schema-CiEjxYPd.js.map +1 -0
- package/dist/artifact-surface/index.d.ts +2 -49
- package/dist/artifact-surface/index.js +3 -27
- package/dist/artifact-surface-BstQxq6b.js +65 -0
- package/dist/artifact-surface-BstQxq6b.js.map +1 -0
- package/dist/capability-description-surface/index.d.ts +2 -142
- package/dist/capability-description-surface/index.js +2 -1
- package/dist/capability-description-surface-BdzknTKT.js +2 -0
- package/dist/{capability-descriptor-schema-wgtHF0Ic.js → capability-descriptor-schema-zRnfGjBc.js} +2 -2
- package/dist/{capability-descriptor-schema-wgtHF0Ic.js.map → capability-descriptor-schema-zRnfGjBc.js.map} +1 -1
- package/dist/cli/tool-portal.d.ts +1 -0
- package/dist/cli/tool-portal.js +207 -0
- package/dist/cli/tool-portal.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts-RgGW0RX2.js +611 -0
- package/dist/contracts-RgGW0RX2.js.map +1 -0
- package/dist/gateway-runtime-client/index.d.ts +385 -0
- package/dist/gateway-runtime-client/index.d.ts.map +1 -0
- package/dist/gateway-runtime-client/index.js +1439 -0
- package/dist/gateway-runtime-client/index.js.map +1 -0
- package/dist/gateway-runtime-local-exec/gateway-runtime-local-exec-helper.d.ts +1 -0
- package/dist/gateway-runtime-local-exec/gateway-runtime-local-exec-helper.js +125 -0
- package/dist/gateway-runtime-local-exec/gateway-runtime-local-exec-helper.js.map +1 -0
- package/dist/gateway-runtime-local-exec/index.d.ts +54 -0
- package/dist/gateway-runtime-local-exec/index.d.ts.map +1 -0
- package/dist/gateway-runtime-local-exec/index.js +2 -0
- package/dist/gateway-runtime-local-exec-transport-B1hy2A3Q.js +427 -0
- package/dist/gateway-runtime-local-exec-transport-B1hy2A3Q.js.map +1 -0
- package/dist/index-B5hgm1KH.d.ts +84 -0
- package/dist/index-B5hgm1KH.d.ts.map +1 -0
- package/dist/index-BWE2_BcN.d.ts +64 -0
- package/dist/index-BWE2_BcN.d.ts.map +1 -0
- package/dist/index-Bdnvj5j3.d.ts +142 -0
- package/dist/index-Bdnvj5j3.d.ts.map +1 -0
- package/dist/index-BmH68K78.d.ts +41 -0
- package/dist/index-BmH68K78.d.ts.map +1 -0
- package/dist/index-C-NPMMvc.d.ts +2396 -0
- package/dist/index-C-NPMMvc.d.ts.map +1 -0
- package/dist/index-DKBSYuxW.d.ts +239 -0
- package/dist/index-DKBSYuxW.d.ts.map +1 -0
- package/dist/{index-DJiaGYF_.d.ts → index-Dj4galCJ.d.ts} +1 -1
- package/dist/{index-DJiaGYF_.d.ts.map → index-Dj4galCJ.d.ts.map} +1 -1
- package/dist/index-Dxoz-ORl.d.ts +229 -0
- package/dist/index-Dxoz-ORl.d.ts.map +1 -0
- package/dist/index-v8suC0qe.d.ts +69 -0
- package/dist/index-v8suC0qe.d.ts.map +1 -0
- package/dist/index-yeFGRMdv.d.ts +152 -0
- package/dist/index-yeFGRMdv.d.ts.map +1 -0
- package/dist/index.d.ts +12 -10
- package/dist/index.js +16 -12
- package/dist/{json-value-schema-Bj42URkc.d.ts → json-value-schema-M87sjwWL.d.ts} +1 -1
- package/dist/{json-value-schema-Bj42URkc.d.ts.map → json-value-schema-M87sjwWL.d.ts.map} +1 -1
- package/dist/{json-value-schema-D-3hfAyL.js → json-value-schema-hdPkabRZ.js} +12 -2
- package/dist/json-value-schema-hdPkabRZ.js.map +1 -0
- package/dist/node-tool-portal-mcp-transport-Cl2VKbLY.js +156 -0
- package/dist/node-tool-portal-mcp-transport-Cl2VKbLY.js.map +1 -0
- package/dist/portable-contracts/index.d.ts +2 -0
- package/dist/portable-contracts/index.js +3 -0
- package/dist/portable-contracts-Bca33zVa.js +326 -0
- package/dist/portable-contracts-Bca33zVa.js.map +1 -0
- package/dist/portable-refinement-authoring-ZSmR-amG.js +196 -0
- package/dist/portable-refinement-authoring-ZSmR-amG.js.map +1 -0
- package/dist/portal-call-request-schema-Cp6CMGs9.js +41 -0
- package/dist/portal-call-request-schema-Cp6CMGs9.js.map +1 -0
- package/dist/portal-call-result-schema-ByxHRCEN.js +158 -0
- package/dist/portal-call-result-schema-ByxHRCEN.js.map +1 -0
- package/dist/{portal-call-result-schema-DjpKPcE_.d.ts → portal-call-result-schema-wSCaz3mC.d.ts} +235 -21
- package/dist/portal-call-result-schema-wSCaz3mC.d.ts.map +1 -0
- package/dist/portal-call-surface/index.d.ts +3 -153
- package/dist/portal-call-surface/index.js +5 -69
- package/dist/portal-call-surface-DjZVquFt.js +83 -0
- package/dist/portal-call-surface-DjZVquFt.js.map +1 -0
- package/dist/{portal-error-schema-D58onG2t.js → portal-error-schema-CQHgoFq4.js} +12 -2
- package/dist/portal-error-schema-CQHgoFq4.js.map +1 -0
- package/dist/portal-event-surface/index.d.ts +2 -229
- package/dist/portal-event-surface/index.js +2 -50
- package/dist/portal-event-surface-CdScrgoN.js +51 -0
- package/dist/portal-event-surface-CdScrgoN.js.map +1 -0
- package/dist/testing/index.d.ts +2 -3
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +10 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/tool-portal-mcp-client/index.d.ts +2 -0
- package/dist/tool-portal-mcp-client/index.js +2 -0
- package/dist/tool-portal-mcp-client/node-tool-portal-mcp-transport.d.ts +17 -0
- package/dist/tool-portal-mcp-client/node-tool-portal-mcp-transport.d.ts.map +1 -0
- package/dist/tool-portal-mcp-client/node-tool-portal-mcp-transport.js +2 -0
- package/dist/tool-portal-mcp-client-DwJF-48Y.js +90 -0
- package/dist/tool-portal-mcp-client-DwJF-48Y.js.map +1 -0
- package/package.json +32 -2
- package/portable-contract-schema-manifest.json +7960 -0
- package/dist/adapter-boundary/index.d.ts.map +0 -1
- package/dist/adapter-boundary/index.js.map +0 -1
- package/dist/approval-surface/index.d.ts.map +0 -1
- package/dist/approval-surface/index.js.map +0 -1
- package/dist/artifact-reference-schema-XiJ280uV.js.map +0 -1
- package/dist/artifact-surface/index.d.ts.map +0 -1
- package/dist/artifact-surface/index.js.map +0 -1
- package/dist/capability-description-surface/index.d.ts.map +0 -1
- package/dist/json-value-schema-D-3hfAyL.js.map +0 -1
- package/dist/portal-call-result-schema-BIqFTFK8.js +0 -102
- package/dist/portal-call-result-schema-BIqFTFK8.js.map +0 -1
- package/dist/portal-call-result-schema-DjpKPcE_.d.ts.map +0 -1
- package/dist/portal-call-surface/index.d.ts.map +0 -1
- package/dist/portal-call-surface/index.js.map +0 -1
- package/dist/portal-error-schema-D58onG2t.js.map +0 -1
- package/dist/portal-event-surface/index.d.ts.map +0 -1
- package/dist/portal-event-surface/index.js.map +0 -1
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
import { n as withPortableSuperRefinement } from "./portable-refinement-authoring-ZSmR-amG.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/contracts/contract-foundations.ts
|
|
4
|
+
const PORTABLE_MAXIMUM_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;
|
|
5
|
+
const SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES = 100;
|
|
6
|
+
const SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS = 256;
|
|
7
|
+
const SANDBOX_MAXIMUM_PATH_CHARACTERS = 1024;
|
|
8
|
+
const SANDBOX_MAXIMUM_TEXT_CHARACTERS = 64 * 1024;
|
|
9
|
+
const SANDBOX_MAXIMUM_BINARY_BYTES = 16 * 1024 * 1024;
|
|
10
|
+
const SANDBOX_MAXIMUM_LIST_ITEMS = 1e3;
|
|
11
|
+
const SANDBOX_MAXIMUM_OPERATION_MILLISECONDS = 3600 * 1e3;
|
|
12
|
+
const BoundedOpaqueIdentifierSchema = z.string().min(1).max(256);
|
|
13
|
+
const PositiveSafeIntegerSchema = z.number().int().positive().max(PORTABLE_MAXIMUM_SAFE_INTEGER);
|
|
14
|
+
const NonnegativeSafeIntegerSchema = z.number().int().nonnegative().max(PORTABLE_MAXIMUM_SAFE_INTEGER);
|
|
15
|
+
const BoundedOperationMillisecondsSchema = PositiveSafeIntegerSchema.max(SANDBOX_MAXIMUM_OPERATION_MILLISECONDS);
|
|
16
|
+
const BoundedByteCountSchema = PositiveSafeIntegerSchema.max(SANDBOX_MAXIMUM_BINARY_BYTES);
|
|
17
|
+
const BoundedTextSchema = z.string().max(SANDBOX_MAXIMUM_TEXT_CHARACTERS);
|
|
18
|
+
const SandboxShellCommandSchema = z.string().min(1).max(SANDBOX_MAXIMUM_TEXT_CHARACTERS).regex(/^[^\0]+$/u);
|
|
19
|
+
const SandboxGuestAbsolutePathSchema = z.string().min(1).max(SANDBOX_MAXIMUM_PATH_CHARACTERS).startsWith("/").regex(/^[^\0]+$/u);
|
|
20
|
+
const SandboxGuestPathSchema = z.string().min(1).max(SANDBOX_MAXIMUM_PATH_CHARACTERS).regex(/^[^\0]+$/u);
|
|
21
|
+
const SandboxEnvironmentVariableNameSchema = z.string().min(1).max(256).regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);
|
|
22
|
+
const SandboxEnvironmentVariableValueSchema = z.string().max(SANDBOX_MAXIMUM_TEXT_CHARACTERS).regex(/^[^\0]*$/u);
|
|
23
|
+
const CanonicalBase64Schema = z.string().max(Math.ceil(SANDBOX_MAXIMUM_BINARY_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u);
|
|
24
|
+
const Sha256DigestSchema = z.string().regex(/^sha256:[0-9a-f]{64}$/u);
|
|
25
|
+
const SandboxWorkRelativePathSchema = withPortableSuperRefinement({
|
|
26
|
+
refinement: (requestedPath, context) => {
|
|
27
|
+
if (requestedPath.length === 0 || requestedPath.includes("\0") || requestedPath.startsWith("/") || requestedPath.endsWith("/") || requestedPath.split("/").some((segment) => segment === "" || segment === "." || segment === "..")) context.addIssue({
|
|
28
|
+
code: "custom",
|
|
29
|
+
message: "Sandbox path must remain relative to the server-selected work root."
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
refinementIdentity: "sandbox.path.work-relative",
|
|
33
|
+
schema: z.string().max(SANDBOX_MAXIMUM_PATH_CHARACTERS)
|
|
34
|
+
});
|
|
35
|
+
const SandboxHandleKindSchema = z.enum([
|
|
36
|
+
"environment",
|
|
37
|
+
"process",
|
|
38
|
+
"stream",
|
|
39
|
+
"terminal"
|
|
40
|
+
]);
|
|
41
|
+
const SandboxStreamChannelSchema = z.enum([
|
|
42
|
+
"stdin",
|
|
43
|
+
"stdout",
|
|
44
|
+
"stderr",
|
|
45
|
+
"pty"
|
|
46
|
+
]);
|
|
47
|
+
const SandboxBoundHandleSchema = z.object({
|
|
48
|
+
handleId: BoundedOpaqueIdentifierSchema,
|
|
49
|
+
kind: SandboxHandleKindSchema,
|
|
50
|
+
owningGeneration: BoundedOpaqueIdentifierSchema
|
|
51
|
+
}).strict();
|
|
52
|
+
function createSandboxBoundHandleSchema(kind) {
|
|
53
|
+
return SandboxBoundHandleSchema.extend({ kind: z.literal(kind) }).strict();
|
|
54
|
+
}
|
|
55
|
+
const SandboxEnvironmentHandleSchema = createSandboxBoundHandleSchema("environment");
|
|
56
|
+
const SandboxProcessHandleSchema = createSandboxBoundHandleSchema("process");
|
|
57
|
+
const SandboxStreamHandleSchema = createSandboxBoundHandleSchema("stream").extend({ channel: SandboxStreamChannelSchema }).strict();
|
|
58
|
+
const SandboxTerminalHandleSchema = createSandboxBoundHandleSchema("terminal");
|
|
59
|
+
const SandboxEnvironmentVariableSchema = z.object({
|
|
60
|
+
name: SandboxEnvironmentVariableNameSchema,
|
|
61
|
+
value: SandboxEnvironmentVariableValueSchema
|
|
62
|
+
}).strict().readonly();
|
|
63
|
+
const SandboxDirectShellStartRequestSchema = withPortableSuperRefinement({
|
|
64
|
+
refinement: (request, context) => {
|
|
65
|
+
const environmentVariableNames = request.environmentVariables?.map((environmentVariable) => environmentVariable.name) ?? [];
|
|
66
|
+
if (new Set(environmentVariableNames).size !== environmentVariableNames.length) context.addIssue({
|
|
67
|
+
code: "custom",
|
|
68
|
+
message: "Direct Sandbox environment contains a duplicate variable name."
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
refinementIdentity: "sandbox.environment-variable.unique-names",
|
|
72
|
+
schema: z.object({
|
|
73
|
+
command: SandboxShellCommandSchema,
|
|
74
|
+
cwd: SandboxGuestAbsolutePathSchema.optional(),
|
|
75
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
76
|
+
environmentVariables: z.array(SandboxEnvironmentVariableSchema).max(100).readonly().optional()
|
|
77
|
+
}).strict()
|
|
78
|
+
});
|
|
79
|
+
function decodedCanonicalBase64ByteLength(contentBase64) {
|
|
80
|
+
if (contentBase64.length === 0) return 0;
|
|
81
|
+
const paddingCharacters = contentBase64.endsWith("==") ? 2 : contentBase64.endsWith("=") ? 1 : 0;
|
|
82
|
+
return contentBase64.length / 4 * 3 - paddingCharacters;
|
|
83
|
+
}
|
|
84
|
+
const SandboxBinaryChunkSchema = withPortableSuperRefinement({
|
|
85
|
+
refinement: (chunk, context) => {
|
|
86
|
+
if (chunk.byteLength !== decodedCanonicalBase64ByteLength(chunk.contentBase64)) context.addIssue({
|
|
87
|
+
code: "custom",
|
|
88
|
+
message: "Binary chunk byte length does not match decoded canonical base64 content.",
|
|
89
|
+
path: ["byteLength"]
|
|
90
|
+
});
|
|
91
|
+
},
|
|
92
|
+
refinementIdentity: "sandbox.binary-chunk.byte-length",
|
|
93
|
+
schema: z.object({
|
|
94
|
+
byteLength: NonnegativeSafeIntegerSchema.max(SANDBOX_MAXIMUM_BINARY_BYTES),
|
|
95
|
+
contentBase64: CanonicalBase64Schema,
|
|
96
|
+
encoding: z.literal("base64")
|
|
97
|
+
}).strict()
|
|
98
|
+
});
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region src/contracts/operation-contracts.ts
|
|
101
|
+
const SandboxOperationIdentitySchema = z.object({
|
|
102
|
+
operationId: BoundedOpaqueIdentifierSchema,
|
|
103
|
+
owningGeneration: BoundedOpaqueIdentifierSchema
|
|
104
|
+
}).strict();
|
|
105
|
+
const SandboxCompletedSucceededOutcomeSchema = z.object({
|
|
106
|
+
certainty: z.literal("proven"),
|
|
107
|
+
completion: z.literal("succeeded"),
|
|
108
|
+
kind: z.literal("completed"),
|
|
109
|
+
retryClass: z.literal("forbidden")
|
|
110
|
+
}).strict();
|
|
111
|
+
const SandboxCompletedFailedOutcomeSchema = z.object({
|
|
112
|
+
certainty: z.literal("proven"),
|
|
113
|
+
completion: z.literal("failed"),
|
|
114
|
+
kind: z.literal("completed"),
|
|
115
|
+
retryClass: z.enum(["forbidden", "policy-gated"])
|
|
116
|
+
}).strict();
|
|
117
|
+
const SandboxNotDispatchedOutcomeSchema = z.object({
|
|
118
|
+
certainty: z.literal("proven"),
|
|
119
|
+
kind: z.literal("not-dispatched"),
|
|
120
|
+
retryClass: z.literal("safe-before-dispatch")
|
|
121
|
+
}).strict();
|
|
122
|
+
const SandboxProvenTerminationOutcomeSchema = z.discriminatedUnion("kind", [
|
|
123
|
+
z.object({
|
|
124
|
+
certainty: z.literal("proven-terminated"),
|
|
125
|
+
kind: z.literal("cancelled-proven"),
|
|
126
|
+
retryClass: z.literal("manual-only")
|
|
127
|
+
}).strict(),
|
|
128
|
+
z.object({
|
|
129
|
+
certainty: z.literal("proven-terminated"),
|
|
130
|
+
kind: z.literal("timed-out-proven"),
|
|
131
|
+
retryClass: z.literal("manual-only")
|
|
132
|
+
}).strict(),
|
|
133
|
+
z.object({
|
|
134
|
+
certainty: z.literal("proven-terminated"),
|
|
135
|
+
kind: z.literal("replaced-proven"),
|
|
136
|
+
priorSideEffects: z.literal("possible"),
|
|
137
|
+
retryClass: z.literal("manual-only")
|
|
138
|
+
}).strict()
|
|
139
|
+
]);
|
|
140
|
+
const SandboxAmbiguousOutcomeSchema = z.object({
|
|
141
|
+
certainty: z.literal("side-effects-and-termination-unknown"),
|
|
142
|
+
kind: z.literal("ambiguous"),
|
|
143
|
+
retryClass: z.literal("forbidden")
|
|
144
|
+
}).strict();
|
|
145
|
+
const SandboxTerminalOutcomeSchema = z.union([
|
|
146
|
+
SandboxNotDispatchedOutcomeSchema,
|
|
147
|
+
SandboxCompletedSucceededOutcomeSchema,
|
|
148
|
+
SandboxCompletedFailedOutcomeSchema,
|
|
149
|
+
SandboxProvenTerminationOutcomeSchema,
|
|
150
|
+
SandboxAmbiguousOutcomeSchema
|
|
151
|
+
]);
|
|
152
|
+
const SandboxOperationControlResultSchema = z.discriminatedUnion("kind", [
|
|
153
|
+
z.object({
|
|
154
|
+
kind: z.literal("running"),
|
|
155
|
+
operation: SandboxOperationIdentitySchema
|
|
156
|
+
}).strict(),
|
|
157
|
+
z.object({
|
|
158
|
+
kind: z.literal("cancel-request-accepted"),
|
|
159
|
+
operation: SandboxOperationIdentitySchema
|
|
160
|
+
}).strict(),
|
|
161
|
+
z.object({
|
|
162
|
+
kind: z.literal("cancellation-pending"),
|
|
163
|
+
operation: SandboxOperationIdentitySchema
|
|
164
|
+
}).strict(),
|
|
165
|
+
z.object({
|
|
166
|
+
kind: z.literal("termination-proven"),
|
|
167
|
+
operation: SandboxOperationIdentitySchema,
|
|
168
|
+
outcome: SandboxProvenTerminationOutcomeSchema
|
|
169
|
+
}).strict(),
|
|
170
|
+
z.object({
|
|
171
|
+
kind: z.literal("already-terminal"),
|
|
172
|
+
operation: SandboxOperationIdentitySchema,
|
|
173
|
+
outcome: SandboxTerminalOutcomeSchema
|
|
174
|
+
}).strict(),
|
|
175
|
+
z.object({
|
|
176
|
+
kind: z.literal("ambiguous"),
|
|
177
|
+
operation: SandboxOperationIdentitySchema,
|
|
178
|
+
outcome: SandboxAmbiguousOutcomeSchema
|
|
179
|
+
}).strict()
|
|
180
|
+
]);
|
|
181
|
+
const SandboxRetainedResultLookupRequestSchema = z.object({ operation: SandboxOperationIdentitySchema }).strict();
|
|
182
|
+
const SandboxRetainedResultLookupResultSchema = z.discriminatedUnion("kind", [
|
|
183
|
+
z.object({
|
|
184
|
+
kind: z.literal("retained"),
|
|
185
|
+
operation: SandboxOperationIdentitySchema,
|
|
186
|
+
outcome: SandboxTerminalOutcomeSchema
|
|
187
|
+
}).strict(),
|
|
188
|
+
z.object({
|
|
189
|
+
kind: z.literal("pending"),
|
|
190
|
+
operation: SandboxOperationIdentitySchema
|
|
191
|
+
}).strict(),
|
|
192
|
+
z.object({
|
|
193
|
+
kind: z.literal("unavailable"),
|
|
194
|
+
reason: z.literal("not-retained-or-not-authorized")
|
|
195
|
+
}).strict()
|
|
196
|
+
]);
|
|
197
|
+
//#endregion
|
|
198
|
+
//#region src/contracts/sandbox-environment-contracts.ts
|
|
199
|
+
const SandboxEnvironmentLogicalCwdSchema = SandboxWorkRelativePathSchema.optional();
|
|
200
|
+
const SandboxEnvironmentOpenRequestSchema = z.object({ logicalCwd: SandboxEnvironmentLogicalCwdSchema }).strict();
|
|
201
|
+
const SandboxEnvironmentOpenResultSchema = z.object({
|
|
202
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
203
|
+
kind: z.literal("opened"),
|
|
204
|
+
logicalCwd: SandboxEnvironmentLogicalCwdSchema
|
|
205
|
+
}).strict();
|
|
206
|
+
const SandboxEnvironmentHandleRequestSchema = z.object({ environment: SandboxEnvironmentHandleSchema }).strict();
|
|
207
|
+
const SandboxEnvironmentCloseResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
208
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
209
|
+
kind: z.literal("closed")
|
|
210
|
+
}).strict(), z.object({
|
|
211
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
212
|
+
kind: z.literal("already-closed")
|
|
213
|
+
}).strict()]);
|
|
214
|
+
const SandboxEnvironmentStatusResultSchema = z.discriminatedUnion("kind", [
|
|
215
|
+
z.object({
|
|
216
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
217
|
+
kind: z.literal("active"),
|
|
218
|
+
logicalCwd: SandboxEnvironmentLogicalCwdSchema
|
|
219
|
+
}).strict(),
|
|
220
|
+
z.object({
|
|
221
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
222
|
+
kind: z.literal("closed")
|
|
223
|
+
}).strict(),
|
|
224
|
+
z.object({
|
|
225
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
226
|
+
kind: z.literal("replaced")
|
|
227
|
+
}).strict()
|
|
228
|
+
]);
|
|
229
|
+
//#endregion
|
|
230
|
+
//#region src/contracts/sandbox-execution-contracts.ts
|
|
231
|
+
const SandboxExecStartModeSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("direct") }).strict(), z.object({
|
|
232
|
+
attachTimeoutMs: BoundedOperationMillisecondsSchema,
|
|
233
|
+
kind: z.literal("attachment-reserved"),
|
|
234
|
+
terminal: z.boolean()
|
|
235
|
+
}).strict()]);
|
|
236
|
+
const SandboxExecStartRequestSchema = SandboxDirectShellStartRequestSchema.extend({
|
|
237
|
+
mode: SandboxExecStartModeSchema,
|
|
238
|
+
timeoutMs: BoundedOperationMillisecondsSchema
|
|
239
|
+
}).strict();
|
|
240
|
+
const SandboxExecDirectStartedResultSchema = z.object({
|
|
241
|
+
kind: z.literal("started"),
|
|
242
|
+
mode: z.literal("direct"),
|
|
243
|
+
operation: SandboxOperationIdentitySchema,
|
|
244
|
+
streams: z.array(SandboxStreamHandleSchema).max(3)
|
|
245
|
+
}).strict();
|
|
246
|
+
const SandboxExecAttachmentReservedResultSchema = z.object({
|
|
247
|
+
kind: z.literal("started"),
|
|
248
|
+
mode: z.literal("attachment-reserved"),
|
|
249
|
+
operation: SandboxOperationIdentitySchema,
|
|
250
|
+
terminal: SandboxTerminalHandleSchema
|
|
251
|
+
}).strict();
|
|
252
|
+
const SandboxExecStartResultSchema = z.union([SandboxExecDirectStartedResultSchema, SandboxExecAttachmentReservedResultSchema]);
|
|
253
|
+
const SandboxExecWaitRequestSchema = z.object({
|
|
254
|
+
operation: SandboxOperationIdentitySchema,
|
|
255
|
+
timeoutMs: BoundedOperationMillisecondsSchema
|
|
256
|
+
}).strict();
|
|
257
|
+
const SandboxExecWaitResultSchema = z.object({
|
|
258
|
+
exitCode: NonnegativeSafeIntegerSchema.max(255).optional(),
|
|
259
|
+
operation: SandboxOperationIdentitySchema,
|
|
260
|
+
outcome: SandboxTerminalOutcomeSchema
|
|
261
|
+
}).strict();
|
|
262
|
+
const SandboxExecCancelRequestSchema = z.object({ operation: SandboxOperationIdentitySchema }).strict();
|
|
263
|
+
const SandboxExecCancelResultSchema = SandboxOperationControlResultSchema;
|
|
264
|
+
const SandboxTerminalSizeSchema = z.object({
|
|
265
|
+
columns: PositiveSafeIntegerSchema.max(1e3),
|
|
266
|
+
rows: PositiveSafeIntegerSchema.max(1e3)
|
|
267
|
+
}).strict();
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/contracts/sandbox-filesystem-contracts.ts
|
|
270
|
+
const SandboxFilesystemPathRequestSchema = z.object({
|
|
271
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
272
|
+
path: SandboxGuestPathSchema
|
|
273
|
+
}).strict();
|
|
274
|
+
const SandboxFsStatRequestSchema = SandboxFilesystemPathRequestSchema;
|
|
275
|
+
const SandboxFilesystemEntrySchema = z.object({
|
|
276
|
+
byteLength: NonnegativeSafeIntegerSchema.optional(),
|
|
277
|
+
kind: z.enum([
|
|
278
|
+
"file",
|
|
279
|
+
"directory",
|
|
280
|
+
"symlink"
|
|
281
|
+
]),
|
|
282
|
+
path: SandboxGuestPathSchema
|
|
283
|
+
}).strict();
|
|
284
|
+
const SandboxFsStatResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
285
|
+
entry: SandboxFilesystemEntrySchema,
|
|
286
|
+
kind: z.literal("stat")
|
|
287
|
+
}).strict(), z.object({
|
|
288
|
+
kind: z.literal("not-found"),
|
|
289
|
+
path: SandboxGuestPathSchema
|
|
290
|
+
}).strict()]);
|
|
291
|
+
const SandboxFsListRequestSchema = SandboxFilesystemPathRequestSchema.extend({
|
|
292
|
+
cursor: BoundedOpaqueIdentifierSchema.optional(),
|
|
293
|
+
maxDepth: PositiveSafeIntegerSchema.max(32),
|
|
294
|
+
maxEntries: PositiveSafeIntegerSchema.max(1e3)
|
|
295
|
+
}).strict();
|
|
296
|
+
const SandboxFsListResultSchema = z.object({
|
|
297
|
+
entries: z.array(SandboxFilesystemEntrySchema).max(1e3),
|
|
298
|
+
kind: z.literal("listed"),
|
|
299
|
+
nextCursor: BoundedOpaqueIdentifierSchema.optional()
|
|
300
|
+
}).strict();
|
|
301
|
+
const SandboxFsReadRequestSchema = SandboxFilesystemPathRequestSchema.extend({
|
|
302
|
+
maxBytes: BoundedByteCountSchema,
|
|
303
|
+
offsetBytes: NonnegativeSafeIntegerSchema
|
|
304
|
+
}).strict();
|
|
305
|
+
const SandboxFsReadResultSchema = z.object({
|
|
306
|
+
chunk: SandboxBinaryChunkSchema,
|
|
307
|
+
eof: z.boolean(),
|
|
308
|
+
kind: z.literal("read"),
|
|
309
|
+
nextOffsetBytes: NonnegativeSafeIntegerSchema,
|
|
310
|
+
path: SandboxGuestPathSchema
|
|
311
|
+
}).strict();
|
|
312
|
+
const SandboxFsWriteRequestSchema = SandboxFilesystemPathRequestSchema.extend({
|
|
313
|
+
atomic: z.boolean(),
|
|
314
|
+
content: SandboxBinaryChunkSchema,
|
|
315
|
+
offsetBytes: NonnegativeSafeIntegerSchema.optional()
|
|
316
|
+
}).strict();
|
|
317
|
+
const SandboxFsWriteResultSchema = z.object({
|
|
318
|
+
bytesWritten: NonnegativeSafeIntegerSchema,
|
|
319
|
+
contentDigest: Sha256DigestSchema,
|
|
320
|
+
kind: z.literal("written"),
|
|
321
|
+
path: SandboxGuestPathSchema
|
|
322
|
+
}).strict();
|
|
323
|
+
const SandboxFsMkdirRequestSchema = SandboxFilesystemPathRequestSchema.extend({ recursive: z.boolean() }).strict();
|
|
324
|
+
const SandboxFsMkdirResultSchema = z.object({
|
|
325
|
+
created: z.boolean(),
|
|
326
|
+
kind: z.literal("directory-ready"),
|
|
327
|
+
path: SandboxGuestPathSchema
|
|
328
|
+
}).strict();
|
|
329
|
+
const SandboxFsRenameRequestSchema = z.object({
|
|
330
|
+
destinationPath: SandboxGuestPathSchema,
|
|
331
|
+
environment: SandboxEnvironmentHandleSchema,
|
|
332
|
+
replace: z.boolean(),
|
|
333
|
+
sourcePath: SandboxGuestPathSchema
|
|
334
|
+
}).strict();
|
|
335
|
+
const SandboxFsRenameResultSchema = z.object({
|
|
336
|
+
destinationPath: SandboxGuestPathSchema,
|
|
337
|
+
kind: z.literal("renamed"),
|
|
338
|
+
sourcePath: SandboxGuestPathSchema
|
|
339
|
+
}).strict();
|
|
340
|
+
const SandboxFsRemoveRequestSchema = SandboxFilesystemPathRequestSchema.extend({ recursive: z.boolean() }).strict();
|
|
341
|
+
const SandboxFsRemoveResultSchema = z.object({
|
|
342
|
+
kind: z.literal("removed"),
|
|
343
|
+
path: SandboxGuestPathSchema,
|
|
344
|
+
removed: z.boolean()
|
|
345
|
+
}).strict();
|
|
346
|
+
//#endregion
|
|
347
|
+
//#region src/contracts/sandbox-process-contracts.ts
|
|
348
|
+
const SandboxProcessStartRequestSchema = SandboxDirectShellStartRequestSchema.extend({
|
|
349
|
+
maxRuntimeMs: BoundedOperationMillisecondsSchema,
|
|
350
|
+
retainOutputBytes: BoundedByteCountSchema
|
|
351
|
+
}).strict();
|
|
352
|
+
const SandboxProcessStartResultSchema = z.object({
|
|
353
|
+
kind: z.literal("started"),
|
|
354
|
+
operation: SandboxOperationIdentitySchema,
|
|
355
|
+
process: SandboxProcessHandleSchema,
|
|
356
|
+
streams: z.array(SandboxStreamHandleSchema).max(3)
|
|
357
|
+
}).strict();
|
|
358
|
+
const SandboxProcessHandleRequestSchema = z.object({ process: SandboxProcessHandleSchema }).strict();
|
|
359
|
+
const SandboxProcessStatusResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
360
|
+
kind: z.literal("running"),
|
|
361
|
+
operation: SandboxOperationIdentitySchema,
|
|
362
|
+
process: SandboxProcessHandleSchema
|
|
363
|
+
}).strict(), z.object({
|
|
364
|
+
kind: z.literal("terminal"),
|
|
365
|
+
operation: SandboxOperationIdentitySchema,
|
|
366
|
+
outcome: SandboxTerminalOutcomeSchema,
|
|
367
|
+
process: SandboxProcessHandleSchema
|
|
368
|
+
}).strict()]);
|
|
369
|
+
const SandboxProcessWaitRequestSchema = SandboxProcessHandleRequestSchema.extend({ timeoutMs: BoundedOperationMillisecondsSchema }).strict();
|
|
370
|
+
const SandboxProcessWaitResultSchema = SandboxProcessStatusResultSchema;
|
|
371
|
+
const SandboxProcessLogsRequestSchema = SandboxProcessHandleRequestSchema.extend({
|
|
372
|
+
channels: z.array(SandboxStreamChannelSchema).min(1).max(4),
|
|
373
|
+
cursor: BoundedOpaqueIdentifierSchema.optional(),
|
|
374
|
+
maxBytes: BoundedByteCountSchema
|
|
375
|
+
}).strict();
|
|
376
|
+
const SandboxProcessLogChunkSchema = z.object({
|
|
377
|
+
channel: SandboxStreamChannelSchema,
|
|
378
|
+
chunk: SandboxBinaryChunkSchema,
|
|
379
|
+
sequence: NonnegativeSafeIntegerSchema
|
|
380
|
+
}).strict();
|
|
381
|
+
const SandboxProcessLogsResultSchema = z.object({
|
|
382
|
+
chunks: z.array(SandboxProcessLogChunkSchema).max(1e3),
|
|
383
|
+
kind: z.literal("logs"),
|
|
384
|
+
nextCursor: BoundedOpaqueIdentifierSchema.optional(),
|
|
385
|
+
process: SandboxProcessHandleSchema,
|
|
386
|
+
truncated: z.boolean()
|
|
387
|
+
}).strict();
|
|
388
|
+
const SandboxProcessCancelRequestSchema = SandboxProcessHandleRequestSchema;
|
|
389
|
+
const SandboxProcessCancelResultSchema = SandboxOperationControlResultSchema;
|
|
390
|
+
//#endregion
|
|
391
|
+
//#region src/contracts/sandbox-stream-contracts.ts
|
|
392
|
+
const SandboxStreamReadRequestSchema = z.object({
|
|
393
|
+
cursor: BoundedOpaqueIdentifierSchema.optional(),
|
|
394
|
+
maxBytes: BoundedByteCountSchema,
|
|
395
|
+
stream: SandboxStreamHandleSchema
|
|
396
|
+
}).strict();
|
|
397
|
+
const SandboxStreamReadResultSchema = z.object({
|
|
398
|
+
chunk: SandboxBinaryChunkSchema,
|
|
399
|
+
eof: z.boolean(),
|
|
400
|
+
kind: z.literal("read"),
|
|
401
|
+
nextCursor: BoundedOpaqueIdentifierSchema.optional(),
|
|
402
|
+
sequence: NonnegativeSafeIntegerSchema,
|
|
403
|
+
stream: SandboxStreamHandleSchema
|
|
404
|
+
}).strict();
|
|
405
|
+
const SandboxStreamWriteRequestSchema = z.object({
|
|
406
|
+
content: SandboxBinaryChunkSchema,
|
|
407
|
+
contentDigest: Sha256DigestSchema,
|
|
408
|
+
sequence: NonnegativeSafeIntegerSchema,
|
|
409
|
+
stream: SandboxStreamHandleSchema
|
|
410
|
+
}).strict();
|
|
411
|
+
const SandboxStreamWriteResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
412
|
+
bytesWritten: NonnegativeSafeIntegerSchema,
|
|
413
|
+
kind: z.literal("written"),
|
|
414
|
+
sequence: NonnegativeSafeIntegerSchema,
|
|
415
|
+
stream: SandboxStreamHandleSchema
|
|
416
|
+
}).strict(), z.object({
|
|
417
|
+
kind: z.literal("already-written"),
|
|
418
|
+
sequence: NonnegativeSafeIntegerSchema,
|
|
419
|
+
stream: SandboxStreamHandleSchema
|
|
420
|
+
}).strict()]);
|
|
421
|
+
const SandboxStreamCloseRequestSchema = z.object({ stream: SandboxStreamHandleSchema }).strict();
|
|
422
|
+
const SandboxStreamCloseResultSchema = z.discriminatedUnion("kind", [z.object({
|
|
423
|
+
kind: z.literal("closed"),
|
|
424
|
+
stream: SandboxStreamHandleSchema
|
|
425
|
+
}).strict(), z.object({
|
|
426
|
+
kind: z.literal("already-closed"),
|
|
427
|
+
stream: SandboxStreamHandleSchema
|
|
428
|
+
}).strict()]);
|
|
429
|
+
//#endregion
|
|
430
|
+
//#region src/contracts/sandbox-terminal-contracts.ts
|
|
431
|
+
const SandboxTerminalAttachRequestSchema = z.object({
|
|
432
|
+
operation: SandboxOperationIdentitySchema,
|
|
433
|
+
size: SandboxTerminalSizeSchema
|
|
434
|
+
}).strict();
|
|
435
|
+
const SandboxTerminalAttachResultSchema = z.object({
|
|
436
|
+
input: SandboxStreamHandleSchema,
|
|
437
|
+
kind: z.literal("attached"),
|
|
438
|
+
output: SandboxStreamHandleSchema,
|
|
439
|
+
terminal: SandboxTerminalHandleSchema
|
|
440
|
+
}).strict();
|
|
441
|
+
const SandboxTerminalResizeRequestSchema = z.object({
|
|
442
|
+
size: SandboxTerminalSizeSchema,
|
|
443
|
+
terminal: SandboxTerminalHandleSchema
|
|
444
|
+
}).strict();
|
|
445
|
+
const SandboxTerminalResizeResultSchema = z.object({
|
|
446
|
+
kind: z.literal("resized"),
|
|
447
|
+
size: SandboxTerminalSizeSchema,
|
|
448
|
+
terminal: SandboxTerminalHandleSchema
|
|
449
|
+
}).strict();
|
|
450
|
+
//#endregion
|
|
451
|
+
//#region src/contracts/trusted-context-contracts.ts
|
|
452
|
+
const GatewayRuntimeFrameworkKindSchema = z.enum(["openclaw", "hermes"]);
|
|
453
|
+
const GatewayRuntimeManagedPluginClientKindSchema = z.enum(["openclaw-managed-plugin", "hermes-managed-plugin"]);
|
|
454
|
+
const GatewayRuntimeFrameworkIdentitySchema = z.discriminatedUnion("kind", [z.object({
|
|
455
|
+
agentId: BoundedOpaqueIdentifierSchema,
|
|
456
|
+
kind: z.literal("openclaw")
|
|
457
|
+
}).strict(), z.object({
|
|
458
|
+
kind: z.literal("hermes"),
|
|
459
|
+
profileName: BoundedOpaqueIdentifierSchema
|
|
460
|
+
}).strict()]).readonly();
|
|
461
|
+
const GatewayRuntimeProjectionCohortDigestSchema = z.string().regex(/^projection-cohort:[a-f0-9]{64}$/u);
|
|
462
|
+
const ManagedAgentProjectionSchema = z.object({
|
|
463
|
+
agentId: BoundedOpaqueIdentifierSchema,
|
|
464
|
+
frameworkIdentity: GatewayRuntimeFrameworkIdentitySchema,
|
|
465
|
+
profileAssignmentRevision: BoundedOpaqueIdentifierSchema,
|
|
466
|
+
toolPortalProfileId: BoundedOpaqueIdentifierSchema
|
|
467
|
+
}).strict().readonly();
|
|
468
|
+
const GatewayRuntimeAttachmentMetadataSchema = withPortableSuperRefinement({
|
|
469
|
+
refinement: (metadata, context) => {
|
|
470
|
+
if (new Set(metadata.configuredAgentIds).size !== metadata.configuredAgentIds.length) context.addIssue({
|
|
471
|
+
code: "custom",
|
|
472
|
+
message: "Gateway attachment metadata contains a duplicate configured agent id.",
|
|
473
|
+
path: ["configuredAgentIds"]
|
|
474
|
+
});
|
|
475
|
+
},
|
|
476
|
+
refinementIdentity: "gateway.attachment.unique-agent-ids",
|
|
477
|
+
schema: z.object({
|
|
478
|
+
attachmentGeneration: PositiveSafeIntegerSchema,
|
|
479
|
+
clientKind: GatewayRuntimeManagedPluginClientKindSchema,
|
|
480
|
+
configuredAgentIds: z.array(BoundedOpaqueIdentifierSchema).min(1).max(128),
|
|
481
|
+
frameworkEpoch: BoundedOpaqueIdentifierSchema,
|
|
482
|
+
gatewayEpoch: BoundedOpaqueIdentifierSchema,
|
|
483
|
+
protocolVersion: PositiveSafeIntegerSchema,
|
|
484
|
+
projectionCohortDigest: GatewayRuntimeProjectionCohortDigestSchema,
|
|
485
|
+
runtimeEpoch: BoundedOpaqueIdentifierSchema,
|
|
486
|
+
schemaVersion: PositiveSafeIntegerSchema
|
|
487
|
+
}).strict()
|
|
488
|
+
});
|
|
489
|
+
const GatewayStablePrincipalDigestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
|
|
490
|
+
const GatewayRuntimeTrustedInvocationPrincipalSchema = z.object({
|
|
491
|
+
agentId: BoundedOpaqueIdentifierSchema,
|
|
492
|
+
frameworkIdentity: GatewayRuntimeFrameworkIdentitySchema,
|
|
493
|
+
profileAssignmentRevision: BoundedOpaqueIdentifierSchema,
|
|
494
|
+
toolPortalProfileId: BoundedOpaqueIdentifierSchema
|
|
495
|
+
}).strict();
|
|
496
|
+
const GatewayRuntimeTrustedInvocationRequesterSchema = z.object({ authenticatedSubjectId: BoundedOpaqueIdentifierSchema }).strict();
|
|
497
|
+
const GatewayRuntimeTrustedInvocationCorrelationSchema = z.object({
|
|
498
|
+
runId: BoundedOpaqueIdentifierSchema.optional(),
|
|
499
|
+
sessionId: BoundedOpaqueIdentifierSchema.optional(),
|
|
500
|
+
sessionKey: BoundedOpaqueIdentifierSchema.optional(),
|
|
501
|
+
toolCallId: BoundedOpaqueIdentifierSchema.optional()
|
|
502
|
+
}).strict();
|
|
503
|
+
const GatewayRuntimeTrustedInvocationContextSchema = z.object({
|
|
504
|
+
correlation: GatewayRuntimeTrustedInvocationCorrelationSchema.optional(),
|
|
505
|
+
principal: GatewayRuntimeTrustedInvocationPrincipalSchema,
|
|
506
|
+
requester: GatewayRuntimeTrustedInvocationRequesterSchema.optional()
|
|
507
|
+
}).strict();
|
|
508
|
+
//#endregion
|
|
509
|
+
//#region src/contracts/index.ts
|
|
510
|
+
const SANDBOX_METHOD_CONTRACTS = {
|
|
511
|
+
"sandbox.environment.close": {
|
|
512
|
+
request: SandboxEnvironmentHandleRequestSchema,
|
|
513
|
+
result: SandboxEnvironmentCloseResultSchema
|
|
514
|
+
},
|
|
515
|
+
"sandbox.environment.open": {
|
|
516
|
+
request: SandboxEnvironmentOpenRequestSchema,
|
|
517
|
+
result: SandboxEnvironmentOpenResultSchema
|
|
518
|
+
},
|
|
519
|
+
"sandbox.environment.status": {
|
|
520
|
+
request: SandboxEnvironmentHandleRequestSchema,
|
|
521
|
+
result: SandboxEnvironmentStatusResultSchema
|
|
522
|
+
},
|
|
523
|
+
"sandbox.exec.cancel": {
|
|
524
|
+
request: SandboxExecCancelRequestSchema,
|
|
525
|
+
result: SandboxExecCancelResultSchema
|
|
526
|
+
},
|
|
527
|
+
"sandbox.exec.start": {
|
|
528
|
+
request: SandboxExecStartRequestSchema,
|
|
529
|
+
result: SandboxExecStartResultSchema
|
|
530
|
+
},
|
|
531
|
+
"sandbox.exec.wait": {
|
|
532
|
+
request: SandboxExecWaitRequestSchema,
|
|
533
|
+
result: SandboxExecWaitResultSchema
|
|
534
|
+
},
|
|
535
|
+
"sandbox.retained-result.lookup": {
|
|
536
|
+
request: SandboxRetainedResultLookupRequestSchema,
|
|
537
|
+
result: SandboxRetainedResultLookupResultSchema
|
|
538
|
+
},
|
|
539
|
+
"sandbox.fs.list": {
|
|
540
|
+
request: SandboxFsListRequestSchema,
|
|
541
|
+
result: SandboxFsListResultSchema
|
|
542
|
+
},
|
|
543
|
+
"sandbox.fs.mkdir": {
|
|
544
|
+
request: SandboxFsMkdirRequestSchema,
|
|
545
|
+
result: SandboxFsMkdirResultSchema
|
|
546
|
+
},
|
|
547
|
+
"sandbox.fs.read": {
|
|
548
|
+
request: SandboxFsReadRequestSchema,
|
|
549
|
+
result: SandboxFsReadResultSchema
|
|
550
|
+
},
|
|
551
|
+
"sandbox.fs.remove": {
|
|
552
|
+
request: SandboxFsRemoveRequestSchema,
|
|
553
|
+
result: SandboxFsRemoveResultSchema
|
|
554
|
+
},
|
|
555
|
+
"sandbox.fs.rename": {
|
|
556
|
+
request: SandboxFsRenameRequestSchema,
|
|
557
|
+
result: SandboxFsRenameResultSchema
|
|
558
|
+
},
|
|
559
|
+
"sandbox.fs.stat": {
|
|
560
|
+
request: SandboxFsStatRequestSchema,
|
|
561
|
+
result: SandboxFsStatResultSchema
|
|
562
|
+
},
|
|
563
|
+
"sandbox.fs.write": {
|
|
564
|
+
request: SandboxFsWriteRequestSchema,
|
|
565
|
+
result: SandboxFsWriteResultSchema
|
|
566
|
+
},
|
|
567
|
+
"sandbox.process.cancel": {
|
|
568
|
+
request: SandboxProcessCancelRequestSchema,
|
|
569
|
+
result: SandboxProcessCancelResultSchema
|
|
570
|
+
},
|
|
571
|
+
"sandbox.process.logs": {
|
|
572
|
+
request: SandboxProcessLogsRequestSchema,
|
|
573
|
+
result: SandboxProcessLogsResultSchema
|
|
574
|
+
},
|
|
575
|
+
"sandbox.process.start": {
|
|
576
|
+
request: SandboxProcessStartRequestSchema,
|
|
577
|
+
result: SandboxProcessStartResultSchema
|
|
578
|
+
},
|
|
579
|
+
"sandbox.process.status": {
|
|
580
|
+
request: SandboxProcessHandleRequestSchema,
|
|
581
|
+
result: SandboxProcessStatusResultSchema
|
|
582
|
+
},
|
|
583
|
+
"sandbox.process.wait": {
|
|
584
|
+
request: SandboxProcessWaitRequestSchema,
|
|
585
|
+
result: SandboxProcessWaitResultSchema
|
|
586
|
+
},
|
|
587
|
+
"sandbox.stream.close": {
|
|
588
|
+
request: SandboxStreamCloseRequestSchema,
|
|
589
|
+
result: SandboxStreamCloseResultSchema
|
|
590
|
+
},
|
|
591
|
+
"sandbox.stream.read": {
|
|
592
|
+
request: SandboxStreamReadRequestSchema,
|
|
593
|
+
result: SandboxStreamReadResultSchema
|
|
594
|
+
},
|
|
595
|
+
"sandbox.stream.write": {
|
|
596
|
+
request: SandboxStreamWriteRequestSchema,
|
|
597
|
+
result: SandboxStreamWriteResultSchema
|
|
598
|
+
},
|
|
599
|
+
"sandbox.terminal.attach": {
|
|
600
|
+
request: SandboxTerminalAttachRequestSchema,
|
|
601
|
+
result: SandboxTerminalAttachResultSchema
|
|
602
|
+
},
|
|
603
|
+
"sandbox.terminal.resize": {
|
|
604
|
+
request: SandboxTerminalResizeRequestSchema,
|
|
605
|
+
result: SandboxTerminalResizeResultSchema
|
|
606
|
+
}
|
|
607
|
+
};
|
|
608
|
+
//#endregion
|
|
609
|
+
export { SandboxExecStartResultSchema as $, SandboxProcessStartResultSchema as A, SandboxBinaryChunkSchema as At, SandboxFsReadResultSchema as B, SandboxProcessHandleSchema as Bt, SandboxProcessCancelRequestSchema as C, SANDBOX_MAXIMUM_BINARY_BYTES as Ct, SandboxProcessLogsRequestSchema as D, SANDBOX_MAXIMUM_OPERATION_MILLISECONDS as Dt, SandboxProcessLogChunkSchema as E, SANDBOX_MAXIMUM_LIST_ITEMS as Et, SandboxFsListRequestSchema as F, SandboxEnvironmentVariableSchema as Ft, SandboxFsStatRequestSchema as G, SandboxWorkRelativePathSchema as Gt, SandboxFsRemoveResultSchema as H, SandboxStreamChannelSchema as Ht, SandboxFsListResultSchema as I, SandboxEnvironmentVariableValueSchema as It, SandboxFsWriteResultSchema as J, SandboxFsStatResultSchema as K, Sha256DigestSchema as Kt, SandboxFsMkdirRequestSchema as L, SandboxGuestAbsolutePathSchema as Lt, SandboxProcessWaitRequestSchema as M, SandboxDirectShellStartRequestSchema as Mt, SandboxProcessWaitResultSchema as N, SandboxEnvironmentHandleSchema as Nt, SandboxProcessLogsResultSchema as O, SANDBOX_MAXIMUM_PATH_CHARACTERS as Ot, SandboxFilesystemEntrySchema as P, SandboxEnvironmentVariableNameSchema as Pt, SandboxExecStartRequestSchema as Q, SandboxFsMkdirResultSchema as R, SandboxGuestPathSchema as Rt, SandboxStreamWriteResultSchema as S, PositiveSafeIntegerSchema as St, SandboxProcessHandleRequestSchema as T, SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS as Tt, SandboxFsRenameRequestSchema as U, SandboxStreamHandleSchema as Ut, SandboxFsRemoveRequestSchema as V, SandboxShellCommandSchema as Vt, SandboxFsRenameResultSchema as W, SandboxTerminalHandleSchema as Wt, SandboxExecCancelResultSchema as X, SandboxExecCancelRequestSchema as Y, SandboxExecStartModeSchema as Z, SandboxStreamCloseRequestSchema as _, BoundedOperationMillisecondsSchema as _t, GatewayRuntimeManagedPluginClientKindSchema as a, SandboxEnvironmentOpenRequestSchema as at, SandboxStreamReadResultSchema as b, NonnegativeSafeIntegerSchema as bt, GatewayRuntimeTrustedInvocationCorrelationSchema as c, SandboxAmbiguousOutcomeSchema as ct, GatewayStablePrincipalDigestSchema as d, SandboxProvenTerminationOutcomeSchema as dt, SandboxExecWaitRequestSchema as et, ManagedAgentProjectionSchema as f, SandboxRetainedResultLookupRequestSchema as ft, SandboxTerminalResizeResultSchema as g, BoundedOpaqueIdentifierSchema as gt, SandboxTerminalResizeRequestSchema as h, BoundedByteCountSchema as ht, GatewayRuntimeFrameworkKindSchema as i, SandboxEnvironmentHandleRequestSchema as it, SandboxProcessStatusResultSchema as j, SandboxBoundHandleSchema as jt, SandboxProcessStartRequestSchema as k, SANDBOX_MAXIMUM_TEXT_CHARACTERS as kt, GatewayRuntimeTrustedInvocationPrincipalSchema as l, SandboxOperationControlResultSchema as lt, SandboxTerminalAttachResultSchema as m, SandboxTerminalOutcomeSchema as mt, GatewayRuntimeAttachmentMetadataSchema as n, SandboxTerminalSizeSchema as nt, GatewayRuntimeProjectionCohortDigestSchema as o, SandboxEnvironmentOpenResultSchema as ot, SandboxTerminalAttachRequestSchema as p, SandboxRetainedResultLookupResultSchema as pt, SandboxFsWriteRequestSchema as q, createSandboxBoundHandleSchema as qt, GatewayRuntimeFrameworkIdentitySchema as r, SandboxEnvironmentCloseResultSchema as rt, GatewayRuntimeTrustedInvocationContextSchema as s, SandboxEnvironmentStatusResultSchema as st, SANDBOX_METHOD_CONTRACTS as t, SandboxExecWaitResultSchema as tt, GatewayRuntimeTrustedInvocationRequesterSchema as u, SandboxOperationIdentitySchema as ut, SandboxStreamCloseResultSchema as v, BoundedTextSchema as vt, SandboxProcessCancelResultSchema as w, SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES as wt, SandboxStreamWriteRequestSchema as x, PORTABLE_MAXIMUM_SAFE_INTEGER as xt, SandboxStreamReadRequestSchema as y, CanonicalBase64Schema as yt, SandboxFsReadRequestSchema as z, SandboxHandleKindSchema as zt };
|
|
610
|
+
|
|
611
|
+
//# sourceMappingURL=contracts-RgGW0RX2.js.map
|