@agent-vm/agent-portal-sdk 0.0.150 → 0.0.151

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.
Files changed (101) hide show
  1. package/contract-fixtures/portable-contracts/catalog/catalog-manifest.fixture.json +28 -0
  2. package/contract-fixtures/portable-contracts/catalog/catalog-offer-request.fixture.json +16 -0
  3. package/contract-fixtures/portable-contracts/catalog/catalog-offer-result.fixture.json +12 -0
  4. package/contract-fixtures/portable-contracts/catalog/catalog-prepare-request.fixture.json +12 -0
  5. package/contract-fixtures/portable-contracts/catalog/catalog-prepare-result.fixture.json +12 -0
  6. package/contract-fixtures/portable-contracts/catalog/catalog-read-request.fixture.json +22 -0
  7. package/contract-fixtures/portable-contracts/catalog/catalog-read-result.fixture.json +12 -0
  8. package/contract-fixtures/portable-contracts/catalog/catalog-release-request.fixture.json +18 -0
  9. package/contract-fixtures/portable-contracts/catalog/catalog-release-result.fixture.json +12 -0
  10. package/dist/adapter-boundary/index.d.ts +1 -1
  11. package/dist/approval-surface/index.d.ts +1 -1
  12. package/dist/approval-surface/index.js +1 -1
  13. package/dist/{approval-surface-CfbAG-81.js → approval-surface-BsE8CS3l.js} +3 -3
  14. package/dist/{approval-surface-CfbAG-81.js.map → approval-surface-BsE8CS3l.js.map} +1 -1
  15. package/dist/artifact-surface/index.d.ts +1 -1
  16. package/dist/capability-description-surface/index.d.ts +1 -1
  17. package/dist/capability-description-surface/index.js +1 -1
  18. package/dist/cli/tool-portal.js +13 -5
  19. package/dist/cli/tool-portal.js.map +1 -1
  20. package/dist/contracts/index.d.ts +2 -2
  21. package/dist/contracts/index.js +2 -2
  22. package/dist/{contracts-K6l783Yb.js → contracts-DlvJ0mo0.js} +87 -5
  23. package/dist/contracts-DlvJ0mo0.js.map +1 -0
  24. package/dist/gateway-runtime-client/index.d.ts +5 -5
  25. package/dist/gateway-runtime-client/index.js +6 -6
  26. package/dist/gateway-runtime-local-exec/gateway-runtime-local-exec-helper.js +1 -1
  27. package/dist/gateway-runtime-local-exec/index.js +1 -1
  28. package/dist/{gateway-runtime-local-exec-transport-CO2bQ3wz.js → gateway-runtime-local-exec-transport-CV4xijjZ.js} +2 -2
  29. package/dist/{gateway-runtime-local-exec-transport-CO2bQ3wz.js.map → gateway-runtime-local-exec-transport-CV4xijjZ.js.map} +1 -1
  30. package/dist/generated-tools/index.d.ts +53 -0
  31. package/dist/generated-tools/index.d.ts.map +1 -0
  32. package/dist/generated-tools/index.js +56 -0
  33. package/dist/generated-tools/index.js.map +1 -0
  34. package/dist/{index-CLHNSgWL.d.ts → index-BHXQ_e0h.d.ts} +3 -3
  35. package/dist/{index-CLHNSgWL.d.ts.map → index-BHXQ_e0h.d.ts.map} +1 -1
  36. package/dist/{index-E3B9TETl.d.ts → index-BU_dNZIt.d.ts} +1 -1
  37. package/dist/{index-E3B9TETl.d.ts.map → index-BU_dNZIt.d.ts.map} +1 -1
  38. package/dist/{index-D_69tlLY.d.ts → index-BiZZR4uU.d.ts} +1 -1
  39. package/dist/{index-D_69tlLY.d.ts.map → index-BiZZR4uU.d.ts.map} +1 -1
  40. package/dist/{index-ksJ4wmQG.d.ts → index-C7qqwbMQ.d.ts} +180 -2
  41. package/dist/index-C7qqwbMQ.d.ts.map +1 -0
  42. package/dist/{index-DDLN0DE_.d.ts → index-C8Wl2up5.d.ts} +2 -2
  43. package/dist/{index-DDLN0DE_.d.ts.map → index-C8Wl2up5.d.ts.map} +1 -1
  44. package/dist/{index-B5Yuf_ir.d.ts → index-D4njH5CE.d.ts} +4 -4
  45. package/dist/{index-B5Yuf_ir.d.ts.map → index-D4njH5CE.d.ts.map} +1 -1
  46. package/dist/{index-DwxCTubj.d.ts → index-D6WrkwXg.d.ts} +1 -1
  47. package/dist/{index-DwxCTubj.d.ts.map → index-D6WrkwXg.d.ts.map} +1 -1
  48. package/dist/{index-DZJH4Rau.d.ts → index-DD4JUntM.d.ts} +1 -1
  49. package/dist/{index-DZJH4Rau.d.ts.map → index-DD4JUntM.d.ts.map} +1 -1
  50. package/dist/{index-BdK9cTP_.d.ts → index-S_R4y_hm.d.ts} +1 -1
  51. package/dist/{index-BdK9cTP_.d.ts.map → index-S_R4y_hm.d.ts.map} +1 -1
  52. package/dist/{index-ByBEiqZp.d.ts → index-e6sqWv5h.d.ts} +3 -3
  53. package/dist/{index-ByBEiqZp.d.ts.map → index-e6sqWv5h.d.ts.map} +1 -1
  54. package/dist/index.d.ts +19 -12
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +27 -11
  57. package/dist/index.js.map +1 -0
  58. package/dist/{json-value-schema-CwDmttWU.d.ts → json-value-schema-CBPcpqFG.d.ts} +1 -1
  59. package/dist/{json-value-schema-CwDmttWU.d.ts.map → json-value-schema-CBPcpqFG.d.ts.map} +1 -1
  60. package/dist/local-transport-75M3QuSr.js +383 -0
  61. package/dist/local-transport-75M3QuSr.js.map +1 -0
  62. package/dist/local-transport-LampGTSy.js +2 -0
  63. package/dist/portable-contracts/index.d.ts +1 -1
  64. package/dist/portable-contracts/index.js +1 -1
  65. package/dist/{portable-contracts-D7axGgu1.js → portable-contracts-j7lwJkzK.js} +43 -7
  66. package/dist/portable-contracts-j7lwJkzK.js.map +1 -0
  67. package/dist/{portal-call-request-schema-B1dbBjmW.js → portal-call-request-schema-8wgpdxjI.js} +2 -2
  68. package/dist/{portal-call-request-schema-B1dbBjmW.js.map → portal-call-request-schema-8wgpdxjI.js.map} +1 -1
  69. package/dist/{portal-call-result-schema-BEPp8X4z.d.ts → portal-call-result-schema-CxyfznDF.d.ts} +2 -2
  70. package/dist/{portal-call-result-schema-BEPp8X4z.d.ts.map → portal-call-result-schema-CxyfznDF.d.ts.map} +1 -1
  71. package/dist/{portal-call-result-schema-DVJ6FyTz.js → portal-call-result-schema-bjzGidd5.js} +3 -3
  72. package/dist/{portal-call-result-schema-DVJ6FyTz.js.map → portal-call-result-schema-bjzGidd5.js.map} +1 -1
  73. package/dist/portal-call-surface/index.d.ts +2 -2
  74. package/dist/portal-call-surface/index.js +4 -4
  75. package/dist/{portal-call-surface-BPVX-rjw.js → portal-call-surface-CG609sIB.js} +5 -5
  76. package/dist/{portal-call-surface-BPVX-rjw.js.map → portal-call-surface-CG609sIB.js.map} +1 -1
  77. package/dist/portal-error-schema-Ft5ydM8F.js +25 -0
  78. package/dist/portal-error-schema-Ft5ydM8F.js.map +1 -0
  79. package/dist/portal-event-surface/index.d.ts +1 -1
  80. package/dist/portal-event-surface/index.js +2 -2
  81. package/dist/{portal-event-surface-Z76kra2a.js → portal-event-surface-AGsuU_aJ.js} +3 -3
  82. package/dist/{portal-event-surface-Z76kra2a.js.map → portal-event-surface-AGsuU_aJ.js.map} +1 -1
  83. package/dist/safe-diagnostic-schema-CpcrwZlp.js +51 -0
  84. package/dist/safe-diagnostic-schema-CpcrwZlp.js.map +1 -0
  85. package/dist/testing/index.d.ts +2 -2
  86. package/dist/testing/index.js +2 -2
  87. package/dist/tool-portal-mcp-client/index.d.ts +1 -1
  88. package/dist/tool-portal-mcp-client/index.js +1 -1
  89. package/dist/tool-portal-mcp-client/node-tool-portal-mcp-transport.d.ts +1 -1
  90. package/dist/{tool-portal-mcp-client-DSDLoZ5e.js → tool-portal-mcp-client-CKnzM8W5.js} +4 -4
  91. package/dist/{tool-portal-mcp-client-DSDLoZ5e.js.map → tool-portal-mcp-client-CKnzM8W5.js.map} +1 -1
  92. package/package.json +6 -2
  93. package/portable-contract-schema-manifest.json +607 -0
  94. package/dist/contracts-K6l783Yb.js.map +0 -1
  95. package/dist/index-ksJ4wmQG.d.ts.map +0 -1
  96. package/dist/portable-contracts-D7axGgu1.js.map +0 -1
  97. package/dist/portal-error-schema-TSNrpQSy.js +0 -52
  98. package/dist/portal-error-schema-TSNrpQSy.js.map +0 -1
  99. package/dist/request-id-schema-DQ84TX-D.js +0 -23
  100. package/dist/request-id-schema-DQ84TX-D.js.map +0 -1
  101. /package/dist/{capability-description-surface-DKZLjpG4.js → capability-description-surface-BFRN8Ohb.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { r as withPortableSuperRefinement } from "./portable-refinement-authoring-oFICWLOo.js";
2
- import "./request-id-schema-DQ84TX-D.js";
2
+ import { n as SafeDiagnosticSchema } from "./safe-diagnostic-schema-CpcrwZlp.js";
3
3
  import "./capability-reference-schema-K7qXJgEa.js";
4
4
  import "./json-value-schema-rxMrw9uZ.js";
5
5
  import { t as EffectiveNamespaceDiscoverySchema } from "./namespace-discovery-schema-BBWRZZnD.js";
@@ -101,6 +101,82 @@ const SandboxBinaryChunkSchema = withPortableSuperRefinement({
101
101
  }).strict()
102
102
  });
103
103
  //#endregion
104
+ //#region src/catalog-surface/models/catalog-source-contracts.ts
105
+ const PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES = 16 * 1024 * 1024;
106
+ const PORTAL_CATALOG_MAXIMUM_FILES = 256;
107
+ const PORTAL_CATALOG_MAXIMUM_FILE_BYTES = 1 * 1024 * 1024;
108
+ const PORTAL_CATALOG_MAXIMUM_READ_BYTES = 64 * 1024;
109
+ const PORTAL_CATALOG_MAXIMUM_MANIFEST_BYTES = 1 * 1024 * 1024;
110
+ const PortalCatalogDefinitionFingerprintSchema = z.string().regex(/^[a-f0-9]{64}$/u);
111
+ const PortalCatalogSourceFileSchema = z.object({
112
+ byteLength: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_FILE_BYTES),
113
+ namespace: BoundedOpaqueIdentifierSchema,
114
+ path: SandboxWorkRelativePathSchema,
115
+ sha256: z.string().regex(/^[a-f0-9]{64}$/u)
116
+ }).strict();
117
+ const PortalCatalogSourceNamespaceSchema = z.object({
118
+ exportedFactoryName: BoundedOpaqueIdentifierSchema,
119
+ modulePath: SandboxWorkRelativePathSchema,
120
+ namespace: BoundedOpaqueIdentifierSchema
121
+ }).strict();
122
+ const PortalCatalogSourceManifestSchema = z.object({
123
+ bundleByteLength: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES),
124
+ bundleSha256: Sha256DigestSchema,
125
+ definitionFingerprint: PortalCatalogDefinitionFingerprintSchema,
126
+ files: z.array(PortalCatalogSourceFileSchema).max(256).readonly(),
127
+ generatorVersion: BoundedOpaqueIdentifierSchema,
128
+ namespaces: z.array(PortalCatalogSourceNamespaceSchema).max(256).readonly(),
129
+ sdkContractVersion: BoundedOpaqueIdentifierSchema
130
+ }).strict();
131
+ const PortalCatalogPrepareRequestSchema = z.object({}).strict();
132
+ const PortalCatalogPrepareResultSchema = z.discriminatedUnion("kind", [z.object({
133
+ cacheDisposition: z.enum(["prepared", "reused"]),
134
+ kind: z.literal("complete"),
135
+ manifest: PortalCatalogSourceManifestSchema
136
+ }).strict(), z.object({
137
+ diagnostics: z.array(SafeDiagnosticSchema).max(64).readonly(),
138
+ kind: z.literal("incomplete"),
139
+ reason: z.enum([
140
+ "catalog-capacity-exhausted",
141
+ "catalog-incomplete",
142
+ "catalog-preparation-failed"
143
+ ]),
144
+ retainedDefinitionFingerprint: PortalCatalogDefinitionFingerprintSchema.optional()
145
+ }).strict()]);
146
+ const PortalCatalogOfferRequestSchema = z.object({ definitionFingerprint: PortalCatalogDefinitionFingerprintSchema }).strict();
147
+ const PortalCatalogOfferResultSchema = z.discriminatedUnion("kind", [z.object({
148
+ kind: z.literal("offered"),
149
+ manifest: PortalCatalogSourceManifestSchema,
150
+ offerId: BoundedOpaqueIdentifierSchema
151
+ }).strict(), z.object({
152
+ kind: z.literal("unavailable"),
153
+ reason: z.literal("catalog-source-unavailable")
154
+ }).strict()]);
155
+ const PortalCatalogReadRequestSchema = z.object({
156
+ definitionFingerprint: PortalCatalogDefinitionFingerprintSchema,
157
+ length: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_READ_BYTES),
158
+ offerId: BoundedOpaqueIdentifierSchema,
159
+ offset: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES)
160
+ }).strict();
161
+ const PortalCatalogReadResultSchema = z.discriminatedUnion("kind", [z.object({
162
+ byteLength: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_READ_BYTES),
163
+ contentBase64: CanonicalBase64Schema.max(Math.ceil(PORTAL_CATALOG_MAXIMUM_READ_BYTES / 3) * 4),
164
+ eof: z.boolean(),
165
+ kind: z.literal("content"),
166
+ totalLength: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES)
167
+ }).strict(), z.object({
168
+ kind: z.literal("unavailable"),
169
+ reason: z.literal("catalog-source-unavailable")
170
+ }).strict()]);
171
+ const PortalCatalogReleaseRequestSchema = z.object({
172
+ definitionFingerprint: PortalCatalogDefinitionFingerprintSchema,
173
+ offerId: BoundedOpaqueIdentifierSchema
174
+ }).strict();
175
+ const PortalCatalogReleaseResultSchema = z.discriminatedUnion("kind", [z.object({ kind: z.literal("released") }).strict(), z.object({
176
+ kind: z.literal("unavailable"),
177
+ reason: z.literal("catalog-source-unavailable")
178
+ }).strict()]);
179
+ //#endregion
104
180
  //#region src/contracts/operation-contracts.ts
105
181
  const SandboxOperationIdentitySchema = z.object({
106
182
  operationId: BoundedOpaqueIdentifierSchema,
@@ -349,7 +425,9 @@ const SandboxFsRemoveResultSchema = z.object({
349
425
  }).strict();
350
426
  //#endregion
351
427
  //#region src/contracts/sandbox-process-contracts.ts
428
+ const SandboxProcessIoProfileSchema = z.enum(["standard", "portal-relay"]);
352
429
  const SandboxProcessStartRequestSchema = SandboxDirectShellStartRequestSchema.extend({
430
+ ioProfile: SandboxProcessIoProfileSchema.optional(),
353
431
  maxRuntimeMs: BoundedOperationMillisecondsSchema,
354
432
  retainOutputBytes: BoundedByteCountSchema
355
433
  }).strict();
@@ -396,7 +474,8 @@ const SandboxProcessCancelResultSchema = SandboxOperationControlResultSchema;
396
474
  const SandboxStreamReadRequestSchema = z.object({
397
475
  cursor: BoundedOpaqueIdentifierSchema.optional(),
398
476
  maxBytes: BoundedByteCountSchema,
399
- stream: SandboxStreamHandleSchema
477
+ stream: SandboxStreamHandleSchema,
478
+ waitMs: NonnegativeSafeIntegerSchema.max(SANDBOX_MAXIMUM_OPERATION_MILLISECONDS).optional()
400
479
  }).strict();
401
480
  const SandboxStreamReadResultSchema = z.object({
402
481
  chunk: SandboxBinaryChunkSchema,
@@ -407,6 +486,7 @@ const SandboxStreamReadResultSchema = z.object({
407
486
  stream: SandboxStreamHandleSchema
408
487
  }).strict();
409
488
  const SandboxStreamWriteRequestSchema = z.object({
489
+ acknowledgedThrough: z.number().int().min(-1).max(PORTABLE_MAXIMUM_SAFE_INTEGER).optional(),
410
490
  content: SandboxBinaryChunkSchema,
411
491
  contentDigest: Sha256DigestSchema,
412
492
  sequence: NonnegativeSafeIntegerSchema,
@@ -490,6 +570,7 @@ const ManagedAgentProjectionSchema = withPortableSuperRefinement({
490
570
  agentId: BoundedOpaqueIdentifierSchema,
491
571
  frameworkIdentity: GatewayRuntimeFrameworkIdentitySchema,
492
572
  profileAssignmentRevision: BoundedOpaqueIdentifierSchema,
573
+ toolPortalCatalogMode: z.enum(["compact", "catalog"]).optional(),
493
574
  toolPortalNamespaces: z.array(EffectiveNamespaceDiscoverySchema).readonly(),
494
575
  toolPortalProfileId: BoundedOpaqueIdentifierSchema
495
576
  }).strict()
@@ -527,7 +608,8 @@ const GatewayRuntimeTrustedInvocationCorrelationSchema = z.object({
527
608
  runId: BoundedOpaqueIdentifierSchema.optional(),
528
609
  sessionId: BoundedOpaqueIdentifierSchema.optional(),
529
610
  sessionKey: BoundedOpaqueIdentifierSchema.optional(),
530
- toolCallId: BoundedOpaqueIdentifierSchema.optional()
611
+ toolCallId: BoundedOpaqueIdentifierSchema.optional(),
612
+ turnId: BoundedOpaqueIdentifierSchema.optional()
531
613
  }).strict();
532
614
  const GatewayRuntimeTrustedInvocationContextSchema = z.object({
533
615
  correlation: GatewayRuntimeTrustedInvocationCorrelationSchema.optional(),
@@ -635,6 +717,6 @@ const SANDBOX_METHOD_CONTRACTS = {
635
717
  }
636
718
  };
637
719
  //#endregion
638
- export { SandboxExecStartRequestSchema as $, SandboxProcessStartRequestSchema as A, SANDBOX_MAXIMUM_TEXT_CHARACTERS as At, SandboxFsReadRequestSchema as B, SandboxHandleKindSchema as Bt, SandboxStreamWriteResultSchema as C, PositiveSafeIntegerSchema as Ct, SandboxProcessLogChunkSchema as D, SANDBOX_MAXIMUM_LIST_ITEMS as Dt, SandboxProcessHandleRequestSchema as E, SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS as Et, SandboxFilesystemEntrySchema as F, SandboxEnvironmentVariableNameSchema as Ft, SandboxFsRenameResultSchema as G, SandboxTerminalHandleSchema as Gt, SandboxFsRemoveRequestSchema as H, SandboxShellCommandSchema as Ht, SandboxFsListRequestSchema as I, SandboxEnvironmentVariableSchema as It, SandboxFsWriteRequestSchema as J, createSandboxBoundHandleSchema as Jt, SandboxFsStatRequestSchema as K, SandboxWorkRelativePathSchema as Kt, SandboxFsListResultSchema as L, SandboxEnvironmentVariableValueSchema as Lt, SandboxProcessStatusResultSchema as M, SandboxBoundHandleSchema as Mt, SandboxProcessWaitRequestSchema as N, SandboxDirectShellStartRequestSchema as Nt, SandboxProcessLogsRequestSchema as O, SANDBOX_MAXIMUM_OPERATION_MILLISECONDS as Ot, SandboxProcessWaitResultSchema as P, SandboxEnvironmentHandleSchema as Pt, SandboxExecStartModeSchema as Q, SandboxFsMkdirRequestSchema as R, SandboxGuestAbsolutePathSchema as Rt, SandboxStreamWriteRequestSchema as S, PORTABLE_MAXIMUM_SAFE_INTEGER as St, SandboxProcessCancelResultSchema as T, SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES as Tt, SandboxFsRemoveResultSchema as U, SandboxStreamChannelSchema as Ut, SandboxFsReadResultSchema as V, SandboxProcessHandleSchema as Vt, SandboxFsRenameRequestSchema as W, SandboxStreamHandleSchema as Wt, SandboxExecCancelRequestSchema as X, SandboxFsWriteResultSchema as Y, SandboxExecCancelResultSchema as Z, SandboxTerminalResizeResultSchema as _, BoundedOpaqueIdentifierSchema as _t, GatewayRuntimeManagedPluginClientKindSchema as a, SandboxEnvironmentHandleRequestSchema as at, SandboxStreamReadRequestSchema as b, CanonicalBase64Schema as bt, GatewayRuntimeTrustedInvocationCorrelationSchema as c, SandboxEnvironmentStatusResultSchema as ct, GatewayStablePrincipalDigestSchema as d, SandboxOperationIdentitySchema as dt, SandboxExecStartResultSchema as et, ManagedAgentProjectionSchema as f, SandboxProvenTerminationOutcomeSchema as ft, SandboxTerminalResizeRequestSchema as g, BoundedByteCountSchema as gt, SandboxTerminalAttachResultSchema as h, SandboxTerminalOutcomeSchema as ht, GatewayRuntimeFrameworkKindSchema as i, SandboxEnvironmentCloseResultSchema as it, SandboxProcessStartResultSchema as j, SandboxBinaryChunkSchema as jt, SandboxProcessLogsResultSchema as k, SANDBOX_MAXIMUM_PATH_CHARACTERS as kt, GatewayRuntimeTrustedInvocationPrincipalSchema as l, SandboxAmbiguousOutcomeSchema as lt, SandboxTerminalAttachRequestSchema as m, SandboxRetainedResultLookupResultSchema as mt, GatewayRuntimeAttachmentMetadataSchema as n, SandboxExecWaitResultSchema as nt, GatewayRuntimeProjectionCohortDigestSchema as o, SandboxEnvironmentOpenRequestSchema as ot, compareUnicodeCodePointStrings as p, SandboxRetainedResultLookupRequestSchema as pt, SandboxFsStatResultSchema as q, Sha256DigestSchema as qt, GatewayRuntimeFrameworkIdentitySchema as r, SandboxTerminalSizeSchema as rt, GatewayRuntimeTrustedInvocationContextSchema as s, SandboxEnvironmentOpenResultSchema as st, SANDBOX_METHOD_CONTRACTS as t, SandboxExecWaitRequestSchema as tt, GatewayRuntimeTrustedInvocationRequesterSchema as u, SandboxOperationControlResultSchema as ut, SandboxStreamCloseRequestSchema as v, BoundedOperationMillisecondsSchema as vt, SandboxProcessCancelRequestSchema as w, SANDBOX_MAXIMUM_BINARY_BYTES as wt, SandboxStreamReadResultSchema as x, NonnegativeSafeIntegerSchema as xt, SandboxStreamCloseResultSchema as y, BoundedTextSchema as yt, SandboxFsMkdirResultSchema as z, SandboxGuestPathSchema as zt };
720
+ export { SandboxExecStartModeSchema as $, SandboxEnvironmentVariableNameSchema as $t, SandboxProcessLogsResultSchema as A, PortalCatalogReleaseResultSchema as At, SandboxFsMkdirResultSchema as B, PORTABLE_MAXIMUM_SAFE_INTEGER as Bt, SandboxStreamWriteResultSchema as C, PortalCatalogOfferRequestSchema as Ct, SandboxProcessIoProfileSchema as D, PortalCatalogReadRequestSchema as Dt, SandboxProcessHandleRequestSchema as E, PortalCatalogPrepareResultSchema as Et, SandboxProcessWaitResultSchema as F, BoundedOpaqueIdentifierSchema as Ft, SandboxFsRenameRequestSchema as G, SANDBOX_MAXIMUM_LIST_ITEMS as Gt, SandboxFsReadResultSchema as H, SANDBOX_MAXIMUM_BINARY_BYTES as Ht, SandboxFilesystemEntrySchema as I, BoundedOperationMillisecondsSchema as It, SandboxFsStatResultSchema as J, SANDBOX_MAXIMUM_TEXT_CHARACTERS as Jt, SandboxFsRenameResultSchema as K, SANDBOX_MAXIMUM_OPERATION_MILLISECONDS as Kt, SandboxFsListRequestSchema as L, BoundedTextSchema as Lt, SandboxProcessStartResultSchema as M, PortalCatalogSourceManifestSchema as Mt, SandboxProcessStatusResultSchema as N, PortalCatalogSourceNamespaceSchema as Nt, SandboxProcessLogChunkSchema as O, PortalCatalogReadResultSchema as Ot, SandboxProcessWaitRequestSchema as P, BoundedByteCountSchema as Pt, SandboxExecCancelResultSchema as Q, SandboxEnvironmentHandleSchema as Qt, SandboxFsListResultSchema as R, CanonicalBase64Schema as Rt, SandboxStreamWriteRequestSchema as S, PortalCatalogDefinitionFingerprintSchema as St, SandboxProcessCancelResultSchema as T, PortalCatalogPrepareRequestSchema as Tt, SandboxFsRemoveRequestSchema as U, SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES as Ut, SandboxFsReadRequestSchema as V, PositiveSafeIntegerSchema as Vt, SandboxFsRemoveResultSchema as W, SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS as Wt, SandboxFsWriteResultSchema as X, SandboxBoundHandleSchema as Xt, SandboxFsWriteRequestSchema as Y, SandboxBinaryChunkSchema as Yt, SandboxExecCancelRequestSchema as Z, SandboxDirectShellStartRequestSchema as Zt, SandboxTerminalResizeResultSchema as _, PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES as _t, GatewayRuntimeManagedPluginClientKindSchema as a, SandboxProcessHandleSchema as an, SandboxEnvironmentCloseResultSchema as at, SandboxStreamReadRequestSchema as b, PORTAL_CATALOG_MAXIMUM_MANIFEST_BYTES as bt, GatewayRuntimeTrustedInvocationCorrelationSchema as c, SandboxStreamHandleSchema as cn, SandboxEnvironmentOpenResultSchema as ct, GatewayStablePrincipalDigestSchema as d, Sha256DigestSchema as dn, SandboxOperationControlResultSchema as dt, SandboxEnvironmentVariableSchema as en, SandboxExecStartRequestSchema as et, ManagedAgentProjectionSchema as f, createSandboxBoundHandleSchema as fn, SandboxOperationIdentitySchema as ft, SandboxTerminalResizeRequestSchema as g, SandboxTerminalOutcomeSchema as gt, SandboxTerminalAttachResultSchema as h, SandboxRetainedResultLookupResultSchema as ht, GatewayRuntimeFrameworkKindSchema as i, SandboxHandleKindSchema as in, SandboxTerminalSizeSchema as it, SandboxProcessStartRequestSchema as j, PortalCatalogSourceFileSchema as jt, SandboxProcessLogsRequestSchema as k, PortalCatalogReleaseRequestSchema as kt, GatewayRuntimeTrustedInvocationPrincipalSchema as l, SandboxTerminalHandleSchema as ln, SandboxEnvironmentStatusResultSchema as lt, SandboxTerminalAttachRequestSchema as m, SandboxRetainedResultLookupRequestSchema as mt, GatewayRuntimeAttachmentMetadataSchema as n, SandboxGuestAbsolutePathSchema as nn, SandboxExecWaitRequestSchema as nt, GatewayRuntimeProjectionCohortDigestSchema as o, SandboxShellCommandSchema as on, SandboxEnvironmentHandleRequestSchema as ot, compareUnicodeCodePointStrings as p, SandboxProvenTerminationOutcomeSchema as pt, SandboxFsStatRequestSchema as q, SANDBOX_MAXIMUM_PATH_CHARACTERS as qt, GatewayRuntimeFrameworkIdentitySchema as r, SandboxGuestPathSchema as rn, SandboxExecWaitResultSchema as rt, GatewayRuntimeTrustedInvocationContextSchema as s, SandboxStreamChannelSchema as sn, SandboxEnvironmentOpenRequestSchema as st, SANDBOX_METHOD_CONTRACTS as t, SandboxEnvironmentVariableValueSchema as tn, SandboxExecStartResultSchema as tt, GatewayRuntimeTrustedInvocationRequesterSchema as u, SandboxWorkRelativePathSchema as un, SandboxAmbiguousOutcomeSchema as ut, SandboxStreamCloseRequestSchema as v, PORTAL_CATALOG_MAXIMUM_FILES as vt, SandboxProcessCancelRequestSchema as w, PortalCatalogOfferResultSchema as wt, SandboxStreamReadResultSchema as x, PORTAL_CATALOG_MAXIMUM_READ_BYTES as xt, SandboxStreamCloseResultSchema as y, PORTAL_CATALOG_MAXIMUM_FILE_BYTES as yt, SandboxFsMkdirRequestSchema as z, NonnegativeSafeIntegerSchema as zt };
639
721
 
640
- //# sourceMappingURL=contracts-K6l783Yb.js.map
722
+ //# sourceMappingURL=contracts-DlvJ0mo0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts-DlvJ0mo0.js","names":[],"sources":["../src/contracts/contract-foundations.ts","../src/catalog-surface/models/catalog-source-contracts.ts","../src/contracts/operation-contracts.ts","../src/contracts/sandbox-environment-contracts.ts","../src/contracts/sandbox-execution-contracts.ts","../src/contracts/sandbox-filesystem-contracts.ts","../src/contracts/sandbox-process-contracts.ts","../src/contracts/sandbox-stream-contracts.ts","../src/contracts/sandbox-terminal-contracts.ts","../src/contracts/trusted-context-contracts.ts","../src/contracts/index.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport { withPortableSuperRefinement } from '../portable-contracts/portable-refinement-authoring.js';\n\nexport const PORTABLE_MAXIMUM_SAFE_INTEGER = Number.MAX_SAFE_INTEGER;\nexport const SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES = 100;\nexport const SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS = 256;\nexport const SANDBOX_MAXIMUM_PATH_CHARACTERS = 1_024;\nexport const SANDBOX_MAXIMUM_TEXT_CHARACTERS = 64 * 1_024;\nexport const SANDBOX_MAXIMUM_BINARY_BYTES = 16 * 1_024 * 1_024;\nexport const SANDBOX_MAXIMUM_LIST_ITEMS = 1_000;\nexport const SANDBOX_MAXIMUM_OPERATION_MILLISECONDS = 60 * 60 * 1_000;\n\nexport const BoundedOpaqueIdentifierSchema = z\n\t.string()\n\t.min(1)\n\t.max(SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS);\nexport const PositiveSafeIntegerSchema = z\n\t.number()\n\t.int()\n\t.positive()\n\t.max(PORTABLE_MAXIMUM_SAFE_INTEGER);\nexport const NonnegativeSafeIntegerSchema = z\n\t.number()\n\t.int()\n\t.nonnegative()\n\t.max(PORTABLE_MAXIMUM_SAFE_INTEGER);\nexport const BoundedOperationMillisecondsSchema = PositiveSafeIntegerSchema.max(\n\tSANDBOX_MAXIMUM_OPERATION_MILLISECONDS,\n);\nexport const BoundedByteCountSchema = PositiveSafeIntegerSchema.max(SANDBOX_MAXIMUM_BINARY_BYTES);\nexport const BoundedTextSchema = z.string().max(SANDBOX_MAXIMUM_TEXT_CHARACTERS);\nexport const SandboxShellCommandSchema = z\n\t.string()\n\t.min(1)\n\t.max(SANDBOX_MAXIMUM_TEXT_CHARACTERS)\n\t// oxlint-disable-next-line no-control-regex -- The wire contract must reject embedded NUL bytes.\n\t.regex(/^[^\\0]+$/u);\nexport const SandboxGuestAbsolutePathSchema = z\n\t.string()\n\t.min(1)\n\t.max(SANDBOX_MAXIMUM_PATH_CHARACTERS)\n\t.startsWith('/')\n\t// oxlint-disable-next-line no-control-regex -- Guest paths cannot contain embedded NUL bytes.\n\t.regex(/^[^\\0]+$/u);\nexport const SandboxGuestPathSchema = z\n\t.string()\n\t.min(1)\n\t.max(SANDBOX_MAXIMUM_PATH_CHARACTERS)\n\t// oxlint-disable-next-line no-control-regex -- Guest paths cannot contain embedded NUL bytes.\n\t.regex(/^[^\\0]+$/u);\nexport const SandboxEnvironmentVariableNameSchema = z\n\t.string()\n\t.min(1)\n\t.max(SANDBOX_MAXIMUM_IDENTIFIER_CHARACTERS)\n\t.regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);\nexport const SandboxEnvironmentVariableValueSchema = z\n\t.string()\n\t.max(SANDBOX_MAXIMUM_TEXT_CHARACTERS)\n\t// oxlint-disable-next-line no-control-regex -- Environment values cannot contain embedded NUL bytes.\n\t.regex(/^[^\\0]*$/u);\n\nconst canonicalBase64Pattern = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u;\n\nexport const CanonicalBase64Schema = z\n\t.string()\n\t.max(Math.ceil(SANDBOX_MAXIMUM_BINARY_BYTES / 3) * 4)\n\t.regex(canonicalBase64Pattern);\nexport const Sha256DigestSchema = z.string().regex(/^sha256:[0-9a-f]{64}$/u);\n\nexport const SandboxWorkRelativePathSchema = withPortableSuperRefinement({\n\trefinement: (requestedPath, context) => {\n\t\tif (\n\t\t\trequestedPath.length === 0 ||\n\t\t\trequestedPath.includes('\\0') ||\n\t\t\trequestedPath.startsWith('/') ||\n\t\t\trequestedPath.endsWith('/') ||\n\t\t\trequestedPath\n\t\t\t\t.split('/')\n\t\t\t\t.some((segment) => segment === '' || segment === '.' || segment === '..')\n\t\t) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Sandbox path must remain relative to the server-selected work root.',\n\t\t\t});\n\t\t}\n\t},\n\trefinementIdentity: 'sandbox.path.work-relative',\n\tschema: z.string().max(SANDBOX_MAXIMUM_PATH_CHARACTERS),\n});\n\nexport const SandboxHandleKindSchema = z.enum(['environment', 'process', 'stream', 'terminal']);\nexport const SandboxStreamChannelSchema = z.enum(['stdin', 'stdout', 'stderr', 'pty']);\n\nexport const SandboxBoundHandleSchema = z\n\t.object({\n\t\thandleId: BoundedOpaqueIdentifierSchema,\n\t\tkind: SandboxHandleKindSchema,\n\t\towningGeneration: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\n// oxlint-disable-next-line explicit-function-return-type -- Preserve the literal handle kind in the returned Zod object schema.\nexport function createSandboxBoundHandleSchema<\n\tTHandleKind extends z.infer<typeof SandboxHandleKindSchema>,\n>(kind: THandleKind) {\n\treturn SandboxBoundHandleSchema.extend({ kind: z.literal(kind) }).strict();\n}\n\nexport const SandboxEnvironmentHandleSchema = createSandboxBoundHandleSchema('environment');\nexport const SandboxProcessHandleSchema = createSandboxBoundHandleSchema('process');\nexport const SandboxStreamHandleSchema = createSandboxBoundHandleSchema('stream')\n\t.extend({ channel: SandboxStreamChannelSchema })\n\t.strict();\nexport const SandboxTerminalHandleSchema = createSandboxBoundHandleSchema('terminal');\n\nexport const SandboxEnvironmentVariableSchema = z\n\t.object({\n\t\tname: SandboxEnvironmentVariableNameSchema,\n\t\tvalue: SandboxEnvironmentVariableValueSchema,\n\t})\n\t.strict()\n\t.readonly();\n\nexport const SandboxDirectShellStartRequestSchema = withPortableSuperRefinement({\n\trefinement: (request, context) => {\n\t\tconst environmentVariableNames =\n\t\t\trequest.environmentVariables?.map((environmentVariable) => environmentVariable.name) ?? [];\n\t\tif (new Set(environmentVariableNames).size !== environmentVariableNames.length) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Direct Sandbox environment contains a duplicate variable name.',\n\t\t\t});\n\t\t}\n\t},\n\trefinementIdentity: 'sandbox.environment-variable.unique-names',\n\tschema: z\n\t\t.object({\n\t\t\tcommand: SandboxShellCommandSchema,\n\t\t\tcwd: SandboxGuestAbsolutePathSchema.optional(),\n\t\t\tenvironment: SandboxEnvironmentHandleSchema,\n\t\t\tenvironmentVariables: z\n\t\t\t\t.array(SandboxEnvironmentVariableSchema)\n\t\t\t\t.max(SANDBOX_MAXIMUM_ENVIRONMENT_VARIABLES)\n\t\t\t\t.readonly()\n\t\t\t\t.optional(),\n\t\t})\n\t\t.strict(),\n});\n\nfunction decodedCanonicalBase64ByteLength(contentBase64: string): number {\n\tif (contentBase64.length === 0) return 0;\n\tconst paddingCharacters = contentBase64.endsWith('==') ? 2 : contentBase64.endsWith('=') ? 1 : 0;\n\treturn (contentBase64.length / 4) * 3 - paddingCharacters;\n}\n\nexport const SandboxBinaryChunkSchema = withPortableSuperRefinement({\n\trefinement: (chunk, context) => {\n\t\tif (chunk.byteLength !== decodedCanonicalBase64ByteLength(chunk.contentBase64)) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Binary chunk byte length does not match decoded canonical base64 content.',\n\t\t\t\tpath: ['byteLength'],\n\t\t\t});\n\t\t}\n\t},\n\trefinementIdentity: 'sandbox.binary-chunk.byte-length',\n\tschema: z\n\t\t.object({\n\t\t\tbyteLength: NonnegativeSafeIntegerSchema.max(SANDBOX_MAXIMUM_BINARY_BYTES),\n\t\t\tcontentBase64: CanonicalBase64Schema,\n\t\t\tencoding: z.literal('base64'),\n\t\t})\n\t\t.strict(),\n});\n\nexport type SandboxBoundHandle = z.infer<typeof SandboxBoundHandleSchema>;\nexport type SandboxDirectShellStartRequest = z.infer<typeof SandboxDirectShellStartRequestSchema>;\nexport type SandboxEnvironmentVariable = z.infer<typeof SandboxEnvironmentVariableSchema>;\nexport type SandboxEnvironmentHandle = z.infer<typeof SandboxEnvironmentHandleSchema>;\nexport type SandboxProcessHandle = z.infer<typeof SandboxProcessHandleSchema>;\nexport type SandboxStreamHandle = z.infer<typeof SandboxStreamHandleSchema>;\nexport type SandboxTerminalHandle = z.infer<typeof SandboxTerminalHandleSchema>;\n","import { z } from 'zod';\n\nimport {\n\tBoundedOpaqueIdentifierSchema,\n\tCanonicalBase64Schema,\n\tNonnegativeSafeIntegerSchema,\n\tPositiveSafeIntegerSchema,\n\tSandboxWorkRelativePathSchema,\n\tSha256DigestSchema,\n} from '../../contracts/contract-foundations.js';\nimport { SafeDiagnosticSchema } from '../../portal-event-surface/models/safe-diagnostic-schema.js';\n\nexport const PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES = 16 * 1_024 * 1_024;\nexport const PORTAL_CATALOG_MAXIMUM_FILES = 256;\nexport const PORTAL_CATALOG_MAXIMUM_FILE_BYTES = 1 * 1_024 * 1_024;\nexport const PORTAL_CATALOG_MAXIMUM_READ_BYTES = 64 * 1_024;\nexport const PORTAL_CATALOG_MAXIMUM_MANIFEST_BYTES = 1 * 1_024 * 1_024;\n\nexport const PortalCatalogDefinitionFingerprintSchema = z.string().regex(/^[a-f0-9]{64}$/u);\n\nexport const PortalCatalogSourceFileSchema = z\n\t.object({\n\t\tbyteLength: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_FILE_BYTES),\n\t\tnamespace: BoundedOpaqueIdentifierSchema,\n\t\tpath: SandboxWorkRelativePathSchema,\n\t\tsha256: z.string().regex(/^[a-f0-9]{64}$/u),\n\t})\n\t.strict();\n\nexport const PortalCatalogSourceNamespaceSchema = z\n\t.object({\n\t\texportedFactoryName: BoundedOpaqueIdentifierSchema,\n\t\tmodulePath: SandboxWorkRelativePathSchema,\n\t\tnamespace: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\nexport const PortalCatalogSourceManifestSchema = z\n\t.object({\n\t\tbundleByteLength: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES),\n\t\tbundleSha256: Sha256DigestSchema,\n\t\tdefinitionFingerprint: PortalCatalogDefinitionFingerprintSchema,\n\t\tfiles: z.array(PortalCatalogSourceFileSchema).max(PORTAL_CATALOG_MAXIMUM_FILES).readonly(),\n\t\tgeneratorVersion: BoundedOpaqueIdentifierSchema,\n\t\tnamespaces: z\n\t\t\t.array(PortalCatalogSourceNamespaceSchema)\n\t\t\t.max(PORTAL_CATALOG_MAXIMUM_FILES)\n\t\t\t.readonly(),\n\t\tsdkContractVersion: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\nexport const PortalCatalogPrepareRequestSchema = z.object({}).strict();\nexport const PortalCatalogPrepareResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tcacheDisposition: z.enum(['prepared', 'reused']),\n\t\t\tkind: z.literal('complete'),\n\t\t\tmanifest: PortalCatalogSourceManifestSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tdiagnostics: z.array(SafeDiagnosticSchema).max(64).readonly(),\n\t\t\tkind: z.literal('incomplete'),\n\t\t\treason: z.enum([\n\t\t\t\t'catalog-capacity-exhausted',\n\t\t\t\t'catalog-incomplete',\n\t\t\t\t'catalog-preparation-failed',\n\t\t\t]),\n\t\t\tretainedDefinitionFingerprint: PortalCatalogDefinitionFingerprintSchema.optional(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const PortalCatalogOfferRequestSchema = z\n\t.object({ definitionFingerprint: PortalCatalogDefinitionFingerprintSchema })\n\t.strict();\nexport const PortalCatalogOfferResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('offered'),\n\t\t\tmanifest: PortalCatalogSourceManifestSchema,\n\t\t\tofferId: BoundedOpaqueIdentifierSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({ kind: z.literal('unavailable'), reason: z.literal('catalog-source-unavailable') })\n\t\t.strict(),\n]);\n\nexport const PortalCatalogReadRequestSchema = z\n\t.object({\n\t\tdefinitionFingerprint: PortalCatalogDefinitionFingerprintSchema,\n\t\tlength: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_READ_BYTES),\n\t\tofferId: BoundedOpaqueIdentifierSchema,\n\t\toffset: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES),\n\t})\n\t.strict();\nexport const PortalCatalogReadResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tbyteLength: NonnegativeSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_READ_BYTES),\n\t\t\tcontentBase64: CanonicalBase64Schema.max(\n\t\t\t\tMath.ceil(PORTAL_CATALOG_MAXIMUM_READ_BYTES / 3) * 4,\n\t\t\t),\n\t\t\teof: z.boolean(),\n\t\t\tkind: z.literal('content'),\n\t\t\ttotalLength: PositiveSafeIntegerSchema.max(PORTAL_CATALOG_MAXIMUM_BUNDLE_BYTES),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({ kind: z.literal('unavailable'), reason: z.literal('catalog-source-unavailable') })\n\t\t.strict(),\n]);\n\nexport const PortalCatalogReleaseRequestSchema = z\n\t.object({\n\t\tdefinitionFingerprint: PortalCatalogDefinitionFingerprintSchema,\n\t\tofferId: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\nexport const PortalCatalogReleaseResultSchema = z.discriminatedUnion('kind', [\n\tz.object({ kind: z.literal('released') }).strict(),\n\tz\n\t\t.object({ kind: z.literal('unavailable'), reason: z.literal('catalog-source-unavailable') })\n\t\t.strict(),\n]);\n\nexport type PortalCatalogSourceManifest = z.infer<typeof PortalCatalogSourceManifestSchema>;\nexport type PortalCatalogPrepareRequest = z.infer<typeof PortalCatalogPrepareRequestSchema>;\nexport type PortalCatalogPrepareResult = z.infer<typeof PortalCatalogPrepareResultSchema>;\nexport type PortalCatalogOfferRequest = z.infer<typeof PortalCatalogOfferRequestSchema>;\nexport type PortalCatalogOfferResult = z.infer<typeof PortalCatalogOfferResultSchema>;\nexport type PortalCatalogReadRequest = z.infer<typeof PortalCatalogReadRequestSchema>;\nexport type PortalCatalogReadResult = z.infer<typeof PortalCatalogReadResultSchema>;\nexport type PortalCatalogReleaseRequest = z.infer<typeof PortalCatalogReleaseRequestSchema>;\nexport type PortalCatalogReleaseResult = z.infer<typeof PortalCatalogReleaseResultSchema>;\n","import { z } from 'zod';\n\nimport { BoundedOpaqueIdentifierSchema } from './contract-foundations.js';\n\nexport const SandboxOperationIdentitySchema = z\n\t.object({\n\t\toperationId: BoundedOpaqueIdentifierSchema,\n\t\towningGeneration: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\nconst SandboxCompletedSucceededOutcomeSchema = z\n\t.object({\n\t\tcertainty: z.literal('proven'),\n\t\tcompletion: z.literal('succeeded'),\n\t\tkind: z.literal('completed'),\n\t\tretryClass: z.literal('forbidden'),\n\t})\n\t.strict();\n\nconst SandboxCompletedFailedOutcomeSchema = z\n\t.object({\n\t\tcertainty: z.literal('proven'),\n\t\tcompletion: z.literal('failed'),\n\t\tkind: z.literal('completed'),\n\t\tretryClass: z.enum(['forbidden', 'policy-gated']),\n\t})\n\t.strict();\n\nconst SandboxNotDispatchedOutcomeSchema = z\n\t.object({\n\t\tcertainty: z.literal('proven'),\n\t\tkind: z.literal('not-dispatched'),\n\t\tretryClass: z.literal('safe-before-dispatch'),\n\t})\n\t.strict();\n\nexport const SandboxProvenTerminationOutcomeSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tcertainty: z.literal('proven-terminated'),\n\t\t\tkind: z.literal('cancelled-proven'),\n\t\t\tretryClass: z.literal('manual-only'),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tcertainty: z.literal('proven-terminated'),\n\t\t\tkind: z.literal('timed-out-proven'),\n\t\t\tretryClass: z.literal('manual-only'),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tcertainty: z.literal('proven-terminated'),\n\t\t\tkind: z.literal('replaced-proven'),\n\t\t\tpriorSideEffects: z.literal('possible'),\n\t\t\tretryClass: z.literal('manual-only'),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const SandboxAmbiguousOutcomeSchema = z\n\t.object({\n\t\tcertainty: z.literal('side-effects-and-termination-unknown'),\n\t\tkind: z.literal('ambiguous'),\n\t\tretryClass: z.literal('forbidden'),\n\t})\n\t.strict();\n\nexport const SandboxTerminalOutcomeSchema = z.union([\n\tSandboxNotDispatchedOutcomeSchema,\n\tSandboxCompletedSucceededOutcomeSchema,\n\tSandboxCompletedFailedOutcomeSchema,\n\tSandboxProvenTerminationOutcomeSchema,\n\tSandboxAmbiguousOutcomeSchema,\n]);\n\nexport const SandboxOperationControlResultSchema = z.discriminatedUnion('kind', [\n\tz.object({ kind: z.literal('running'), operation: SandboxOperationIdentitySchema }).strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('cancel-request-accepted'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('cancellation-pending'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('termination-proven'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\toutcome: SandboxProvenTerminationOutcomeSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('already-terminal'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\toutcome: SandboxTerminalOutcomeSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('ambiguous'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\toutcome: SandboxAmbiguousOutcomeSchema,\n\t\t})\n\t\t.strict(),\n]);\n\nexport const SandboxRetainedResultLookupRequestSchema = z\n\t.object({ operation: SandboxOperationIdentitySchema })\n\t.strict();\n\nexport const SandboxRetainedResultLookupResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('retained'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\toutcome: SandboxTerminalOutcomeSchema,\n\t\t})\n\t\t.strict(),\n\tz.object({ kind: z.literal('pending'), operation: SandboxOperationIdentitySchema }).strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('unavailable'),\n\t\t\treason: z.literal('not-retained-or-not-authorized'),\n\t\t})\n\t\t.strict(),\n]);\n\nexport type SandboxOperationIdentity = z.infer<typeof SandboxOperationIdentitySchema>;\nexport type SandboxOperationControlResult = z.infer<typeof SandboxOperationControlResultSchema>;\nexport type SandboxRetainedResultLookupRequest = z.infer<\n\ttypeof SandboxRetainedResultLookupRequestSchema\n>;\nexport type SandboxRetainedResultLookupResult = z.infer<\n\ttypeof SandboxRetainedResultLookupResultSchema\n>;\nexport type SandboxTerminalOutcome = z.infer<typeof SandboxTerminalOutcomeSchema>;\n","import { z } from 'zod';\n\nimport {\n\tSandboxEnvironmentHandleSchema,\n\tSandboxWorkRelativePathSchema,\n} from './contract-foundations.js';\n\n// Omission denotes the server-selected /work root; a present value is a strict child path.\nconst SandboxEnvironmentLogicalCwdSchema = SandboxWorkRelativePathSchema.optional();\n\nexport const SandboxEnvironmentOpenRequestSchema = z\n\t.object({ logicalCwd: SandboxEnvironmentLogicalCwdSchema })\n\t.strict();\n\nexport const SandboxEnvironmentOpenResultSchema = z\n\t.object({\n\t\tenvironment: SandboxEnvironmentHandleSchema,\n\t\tkind: z.literal('opened'),\n\t\tlogicalCwd: SandboxEnvironmentLogicalCwdSchema,\n\t})\n\t.strict();\n\nexport const SandboxEnvironmentHandleRequestSchema = z\n\t.object({ environment: SandboxEnvironmentHandleSchema })\n\t.strict();\n\nexport const SandboxEnvironmentCloseResultSchema = z.discriminatedUnion('kind', [\n\tz.object({ environment: SandboxEnvironmentHandleSchema, kind: z.literal('closed') }).strict(),\n\tz\n\t\t.object({ environment: SandboxEnvironmentHandleSchema, kind: z.literal('already-closed') })\n\t\t.strict(),\n]);\n\nexport const SandboxEnvironmentStatusResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tenvironment: SandboxEnvironmentHandleSchema,\n\t\t\tkind: z.literal('active'),\n\t\t\tlogicalCwd: SandboxEnvironmentLogicalCwdSchema,\n\t\t})\n\t\t.strict(),\n\tz.object({ environment: SandboxEnvironmentHandleSchema, kind: z.literal('closed') }).strict(),\n\tz.object({ environment: SandboxEnvironmentHandleSchema, kind: z.literal('replaced') }).strict(),\n]);\n\nexport type SandboxEnvironmentOpenRequest = z.infer<typeof SandboxEnvironmentOpenRequestSchema>;\nexport type SandboxEnvironmentOpenResult = z.infer<typeof SandboxEnvironmentOpenResultSchema>;\nexport type SandboxEnvironmentCloseRequest = z.infer<typeof SandboxEnvironmentHandleRequestSchema>;\nexport type SandboxEnvironmentCloseResult = z.infer<typeof SandboxEnvironmentCloseResultSchema>;\nexport type SandboxEnvironmentStatusRequest = z.infer<typeof SandboxEnvironmentHandleRequestSchema>;\nexport type SandboxEnvironmentStatusResult = z.infer<typeof SandboxEnvironmentStatusResultSchema>;\n","import { z } from 'zod';\n\nimport {\n\tBoundedOperationMillisecondsSchema,\n\tNonnegativeSafeIntegerSchema,\n\tPositiveSafeIntegerSchema,\n\tSandboxDirectShellStartRequestSchema,\n\tSandboxStreamHandleSchema,\n\tSandboxTerminalHandleSchema,\n} from './contract-foundations.js';\nimport {\n\tSandboxOperationControlResultSchema,\n\tSandboxOperationIdentitySchema,\n\tSandboxTerminalOutcomeSchema,\n} from './operation-contracts.js';\n\nexport const SandboxExecStartModeSchema = z.discriminatedUnion('kind', [\n\tz.object({ kind: z.literal('direct') }).strict(),\n\tz\n\t\t.object({\n\t\t\tattachTimeoutMs: BoundedOperationMillisecondsSchema,\n\t\t\tkind: z.literal('attachment-reserved'),\n\t\t\tterminal: z.boolean(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const SandboxExecStartRequestSchema = SandboxDirectShellStartRequestSchema.extend({\n\tmode: SandboxExecStartModeSchema,\n\ttimeoutMs: BoundedOperationMillisecondsSchema,\n}).strict();\n\nconst SandboxExecDirectStartedResultSchema = z\n\t.object({\n\t\tkind: z.literal('started'),\n\t\tmode: z.literal('direct'),\n\t\toperation: SandboxOperationIdentitySchema,\n\t\tstreams: z.array(SandboxStreamHandleSchema).max(3),\n\t})\n\t.strict();\n\nconst SandboxExecAttachmentReservedResultSchema = z\n\t.object({\n\t\tkind: z.literal('started'),\n\t\tmode: z.literal('attachment-reserved'),\n\t\toperation: SandboxOperationIdentitySchema,\n\t\tterminal: SandboxTerminalHandleSchema,\n\t})\n\t.strict();\n\nexport const SandboxExecStartResultSchema = z.union([\n\tSandboxExecDirectStartedResultSchema,\n\tSandboxExecAttachmentReservedResultSchema,\n]);\n\nexport const SandboxExecWaitRequestSchema = z\n\t.object({\n\t\toperation: SandboxOperationIdentitySchema,\n\t\ttimeoutMs: BoundedOperationMillisecondsSchema,\n\t})\n\t.strict();\n\nexport const SandboxExecWaitResultSchema = z\n\t.object({\n\t\texitCode: NonnegativeSafeIntegerSchema.max(255).optional(),\n\t\toperation: SandboxOperationIdentitySchema,\n\t\toutcome: SandboxTerminalOutcomeSchema,\n\t})\n\t.strict();\n\nexport const SandboxExecCancelRequestSchema = z\n\t.object({ operation: SandboxOperationIdentitySchema })\n\t.strict();\n\nexport const SandboxExecCancelResultSchema = SandboxOperationControlResultSchema;\n\nexport const SandboxTerminalSizeSchema = z\n\t.object({\n\t\tcolumns: PositiveSafeIntegerSchema.max(1_000),\n\t\trows: PositiveSafeIntegerSchema.max(1_000),\n\t})\n\t.strict();\n\nexport type SandboxExecStartRequest = z.infer<typeof SandboxExecStartRequestSchema>;\nexport type SandboxExecStartResult = z.infer<typeof SandboxExecStartResultSchema>;\nexport type SandboxExecWaitRequest = z.infer<typeof SandboxExecWaitRequestSchema>;\nexport type SandboxExecWaitResult = z.infer<typeof SandboxExecWaitResultSchema>;\nexport type SandboxExecCancelRequest = z.infer<typeof SandboxExecCancelRequestSchema>;\nexport type SandboxExecCancelResult = z.infer<typeof SandboxExecCancelResultSchema>;\n","import { z } from 'zod';\n\nimport {\n\tBoundedByteCountSchema,\n\tBoundedOpaqueIdentifierSchema,\n\tNonnegativeSafeIntegerSchema,\n\tPositiveSafeIntegerSchema,\n\tSandboxBinaryChunkSchema,\n\tSandboxEnvironmentHandleSchema,\n\tSandboxGuestPathSchema,\n\tSha256DigestSchema,\n} from './contract-foundations.js';\n\nconst SandboxFilesystemPathRequestSchema = z\n\t.object({\n\t\tenvironment: SandboxEnvironmentHandleSchema,\n\t\tpath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsStatRequestSchema = SandboxFilesystemPathRequestSchema;\n\nexport const SandboxFilesystemEntrySchema = z\n\t.object({\n\t\tbyteLength: NonnegativeSafeIntegerSchema.optional(),\n\t\tkind: z.enum(['file', 'directory', 'symlink']),\n\t\tpath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsStatResultSchema = z.discriminatedUnion('kind', [\n\tz.object({ entry: SandboxFilesystemEntrySchema, kind: z.literal('stat') }).strict(),\n\tz.object({ kind: z.literal('not-found'), path: SandboxGuestPathSchema }).strict(),\n]);\n\nexport const SandboxFsListRequestSchema = SandboxFilesystemPathRequestSchema.extend({\n\tcursor: BoundedOpaqueIdentifierSchema.optional(),\n\tmaxDepth: PositiveSafeIntegerSchema.max(32),\n\tmaxEntries: PositiveSafeIntegerSchema.max(1_000),\n}).strict();\n\nexport const SandboxFsListResultSchema = z\n\t.object({\n\t\tentries: z.array(SandboxFilesystemEntrySchema).max(1_000),\n\t\tkind: z.literal('listed'),\n\t\tnextCursor: BoundedOpaqueIdentifierSchema.optional(),\n\t})\n\t.strict();\n\nexport const SandboxFsReadRequestSchema = SandboxFilesystemPathRequestSchema.extend({\n\tmaxBytes: BoundedByteCountSchema,\n\toffsetBytes: NonnegativeSafeIntegerSchema,\n}).strict();\n\nexport const SandboxFsReadResultSchema = z\n\t.object({\n\t\tchunk: SandboxBinaryChunkSchema,\n\t\teof: z.boolean(),\n\t\tkind: z.literal('read'),\n\t\tnextOffsetBytes: NonnegativeSafeIntegerSchema,\n\t\tpath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsWriteRequestSchema = SandboxFilesystemPathRequestSchema.extend({\n\tatomic: z.boolean(),\n\tcontent: SandboxBinaryChunkSchema,\n\toffsetBytes: NonnegativeSafeIntegerSchema.optional(),\n}).strict();\n\nexport const SandboxFsWriteResultSchema = z\n\t.object({\n\t\tbytesWritten: NonnegativeSafeIntegerSchema,\n\t\tcontentDigest: Sha256DigestSchema,\n\t\tkind: z.literal('written'),\n\t\tpath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsMkdirRequestSchema = SandboxFilesystemPathRequestSchema.extend({\n\trecursive: z.boolean(),\n}).strict();\n\nexport const SandboxFsMkdirResultSchema = z\n\t.object({\n\t\tcreated: z.boolean(),\n\t\tkind: z.literal('directory-ready'),\n\t\tpath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsRenameRequestSchema = z\n\t.object({\n\t\tdestinationPath: SandboxGuestPathSchema,\n\t\tenvironment: SandboxEnvironmentHandleSchema,\n\t\treplace: z.boolean(),\n\t\tsourcePath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsRenameResultSchema = z\n\t.object({\n\t\tdestinationPath: SandboxGuestPathSchema,\n\t\tkind: z.literal('renamed'),\n\t\tsourcePath: SandboxGuestPathSchema,\n\t})\n\t.strict();\n\nexport const SandboxFsRemoveRequestSchema = SandboxFilesystemPathRequestSchema.extend({\n\trecursive: z.boolean(),\n}).strict();\n\nexport const SandboxFsRemoveResultSchema = z\n\t.object({ kind: z.literal('removed'), path: SandboxGuestPathSchema, removed: z.boolean() })\n\t.strict();\n\nexport type SandboxFsStatRequest = z.infer<typeof SandboxFsStatRequestSchema>;\nexport type SandboxFsStatResult = z.infer<typeof SandboxFsStatResultSchema>;\nexport type SandboxFsListRequest = z.infer<typeof SandboxFsListRequestSchema>;\nexport type SandboxFsListResult = z.infer<typeof SandboxFsListResultSchema>;\nexport type SandboxFsReadRequest = z.infer<typeof SandboxFsReadRequestSchema>;\nexport type SandboxFsReadResult = z.infer<typeof SandboxFsReadResultSchema>;\nexport type SandboxFsWriteRequest = z.infer<typeof SandboxFsWriteRequestSchema>;\nexport type SandboxFsWriteResult = z.infer<typeof SandboxFsWriteResultSchema>;\nexport type SandboxFsMkdirRequest = z.infer<typeof SandboxFsMkdirRequestSchema>;\nexport type SandboxFsMkdirResult = z.infer<typeof SandboxFsMkdirResultSchema>;\nexport type SandboxFsRenameRequest = z.infer<typeof SandboxFsRenameRequestSchema>;\nexport type SandboxFsRenameResult = z.infer<typeof SandboxFsRenameResultSchema>;\nexport type SandboxFsRemoveRequest = z.infer<typeof SandboxFsRemoveRequestSchema>;\nexport type SandboxFsRemoveResult = z.infer<typeof SandboxFsRemoveResultSchema>;\n","import { z } from 'zod';\n\nimport {\n\tBoundedByteCountSchema,\n\tBoundedOpaqueIdentifierSchema,\n\tBoundedOperationMillisecondsSchema,\n\tNonnegativeSafeIntegerSchema,\n\tSandboxBinaryChunkSchema,\n\tSandboxDirectShellStartRequestSchema,\n\tSandboxProcessHandleSchema,\n\tSandboxStreamChannelSchema,\n\tSandboxStreamHandleSchema,\n} from './contract-foundations.js';\nimport {\n\tSandboxOperationControlResultSchema,\n\tSandboxOperationIdentitySchema,\n\tSandboxTerminalOutcomeSchema,\n} from './operation-contracts.js';\n\nexport const SandboxProcessIoProfileSchema = z.enum(['standard', 'portal-relay']);\n\nexport const SandboxProcessStartRequestSchema = SandboxDirectShellStartRequestSchema.extend({\n\tioProfile: SandboxProcessIoProfileSchema.optional(),\n\tmaxRuntimeMs: BoundedOperationMillisecondsSchema,\n\tretainOutputBytes: BoundedByteCountSchema,\n}).strict();\n\nexport const SandboxProcessStartResultSchema = z\n\t.object({\n\t\tkind: z.literal('started'),\n\t\toperation: SandboxOperationIdentitySchema,\n\t\tprocess: SandboxProcessHandleSchema,\n\t\tstreams: z.array(SandboxStreamHandleSchema).max(3),\n\t})\n\t.strict();\n\nexport const SandboxProcessHandleRequestSchema = z\n\t.object({ process: SandboxProcessHandleSchema })\n\t.strict();\n\nexport const SandboxProcessStatusResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('running'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\tprocess: SandboxProcessHandleSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('terminal'),\n\t\t\toperation: SandboxOperationIdentitySchema,\n\t\t\toutcome: SandboxTerminalOutcomeSchema,\n\t\t\tprocess: SandboxProcessHandleSchema,\n\t\t})\n\t\t.strict(),\n]);\n\nexport const SandboxProcessWaitRequestSchema = SandboxProcessHandleRequestSchema.extend({\n\ttimeoutMs: BoundedOperationMillisecondsSchema,\n}).strict();\n\nexport const SandboxProcessWaitResultSchema = SandboxProcessStatusResultSchema;\n\nexport const SandboxProcessLogsRequestSchema = SandboxProcessHandleRequestSchema.extend({\n\tchannels: z.array(SandboxStreamChannelSchema).min(1).max(4),\n\tcursor: BoundedOpaqueIdentifierSchema.optional(),\n\tmaxBytes: BoundedByteCountSchema,\n}).strict();\n\nexport const SandboxProcessLogChunkSchema = z\n\t.object({\n\t\tchannel: SandboxStreamChannelSchema,\n\t\tchunk: SandboxBinaryChunkSchema,\n\t\tsequence: NonnegativeSafeIntegerSchema,\n\t})\n\t.strict();\n\nexport const SandboxProcessLogsResultSchema = z\n\t.object({\n\t\tchunks: z.array(SandboxProcessLogChunkSchema).max(1_000),\n\t\tkind: z.literal('logs'),\n\t\tnextCursor: BoundedOpaqueIdentifierSchema.optional(),\n\t\tprocess: SandboxProcessHandleSchema,\n\t\ttruncated: z.boolean(),\n\t})\n\t.strict();\n\nexport const SandboxProcessCancelRequestSchema = SandboxProcessHandleRequestSchema;\nexport const SandboxProcessCancelResultSchema = SandboxOperationControlResultSchema;\n\nexport type SandboxProcessStartRequest = z.infer<typeof SandboxProcessStartRequestSchema>;\nexport type SandboxProcessIoProfile = z.infer<typeof SandboxProcessIoProfileSchema>;\nexport type SandboxProcessStartResult = z.infer<typeof SandboxProcessStartResultSchema>;\nexport type SandboxProcessStatusRequest = z.infer<typeof SandboxProcessHandleRequestSchema>;\nexport type SandboxProcessStatusResult = z.infer<typeof SandboxProcessStatusResultSchema>;\nexport type SandboxProcessWaitRequest = z.infer<typeof SandboxProcessWaitRequestSchema>;\nexport type SandboxProcessWaitResult = z.infer<typeof SandboxProcessWaitResultSchema>;\nexport type SandboxProcessLogsRequest = z.infer<typeof SandboxProcessLogsRequestSchema>;\nexport type SandboxProcessLogsResult = z.infer<typeof SandboxProcessLogsResultSchema>;\nexport type SandboxProcessCancelRequest = z.infer<typeof SandboxProcessCancelRequestSchema>;\nexport type SandboxProcessCancelResult = z.infer<typeof SandboxProcessCancelResultSchema>;\n","import { z } from 'zod';\n\nimport {\n\tBoundedByteCountSchema,\n\tBoundedOpaqueIdentifierSchema,\n\tNonnegativeSafeIntegerSchema,\n\tPORTABLE_MAXIMUM_SAFE_INTEGER,\n\tSANDBOX_MAXIMUM_OPERATION_MILLISECONDS,\n\tSandboxBinaryChunkSchema,\n\tSandboxStreamHandleSchema,\n\tSha256DigestSchema,\n} from './contract-foundations.js';\n\nexport const SandboxStreamReadRequestSchema = z\n\t.object({\n\t\tcursor: BoundedOpaqueIdentifierSchema.optional(),\n\t\tmaxBytes: BoundedByteCountSchema,\n\t\tstream: SandboxStreamHandleSchema,\n\t\twaitMs: NonnegativeSafeIntegerSchema.max(SANDBOX_MAXIMUM_OPERATION_MILLISECONDS).optional(),\n\t})\n\t.strict();\n\nexport const SandboxStreamReadResultSchema = z\n\t.object({\n\t\tchunk: SandboxBinaryChunkSchema,\n\t\teof: z.boolean(),\n\t\tkind: z.literal('read'),\n\t\tnextCursor: BoundedOpaqueIdentifierSchema.optional(),\n\t\tsequence: NonnegativeSafeIntegerSchema,\n\t\tstream: SandboxStreamHandleSchema,\n\t})\n\t.strict();\n\nexport const SandboxStreamWriteRequestSchema = z\n\t.object({\n\t\tacknowledgedThrough: z.number().int().min(-1).max(PORTABLE_MAXIMUM_SAFE_INTEGER).optional(),\n\t\tcontent: SandboxBinaryChunkSchema,\n\t\tcontentDigest: Sha256DigestSchema,\n\t\tsequence: NonnegativeSafeIntegerSchema,\n\t\tstream: SandboxStreamHandleSchema,\n\t})\n\t.strict();\n\nexport const SandboxStreamWriteResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tbytesWritten: NonnegativeSafeIntegerSchema,\n\t\t\tkind: z.literal('written'),\n\t\t\tsequence: NonnegativeSafeIntegerSchema,\n\t\t\tstream: SandboxStreamHandleSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('already-written'),\n\t\t\tsequence: NonnegativeSafeIntegerSchema,\n\t\t\tstream: SandboxStreamHandleSchema,\n\t\t})\n\t\t.strict(),\n]);\n\nexport const SandboxStreamCloseRequestSchema = z\n\t.object({ stream: SandboxStreamHandleSchema })\n\t.strict();\n\nexport const SandboxStreamCloseResultSchema = z.discriminatedUnion('kind', [\n\tz.object({ kind: z.literal('closed'), stream: SandboxStreamHandleSchema }).strict(),\n\tz.object({ kind: z.literal('already-closed'), stream: SandboxStreamHandleSchema }).strict(),\n]);\n\nexport type SandboxStreamReadRequest = z.infer<typeof SandboxStreamReadRequestSchema>;\nexport type SandboxStreamReadResult = z.infer<typeof SandboxStreamReadResultSchema>;\nexport type SandboxStreamWriteRequest = z.infer<typeof SandboxStreamWriteRequestSchema>;\nexport type SandboxStreamWriteResult = z.infer<typeof SandboxStreamWriteResultSchema>;\nexport type SandboxStreamCloseRequest = z.infer<typeof SandboxStreamCloseRequestSchema>;\nexport type SandboxStreamCloseResult = z.infer<typeof SandboxStreamCloseResultSchema>;\n","import { z } from 'zod';\n\nimport { SandboxStreamHandleSchema, SandboxTerminalHandleSchema } from './contract-foundations.js';\nimport { SandboxOperationIdentitySchema } from './operation-contracts.js';\nimport { SandboxTerminalSizeSchema } from './sandbox-execution-contracts.js';\n\nexport const SandboxTerminalAttachRequestSchema = z\n\t.object({\n\t\toperation: SandboxOperationIdentitySchema,\n\t\tsize: SandboxTerminalSizeSchema,\n\t})\n\t.strict();\n\nexport const SandboxTerminalAttachResultSchema = z\n\t.object({\n\t\tinput: SandboxStreamHandleSchema,\n\t\tkind: z.literal('attached'),\n\t\toutput: SandboxStreamHandleSchema,\n\t\tterminal: SandboxTerminalHandleSchema,\n\t})\n\t.strict();\n\nexport const SandboxTerminalResizeRequestSchema = z\n\t.object({\n\t\tsize: SandboxTerminalSizeSchema,\n\t\tterminal: SandboxTerminalHandleSchema,\n\t})\n\t.strict();\n\nexport const SandboxTerminalResizeResultSchema = z\n\t.object({\n\t\tkind: z.literal('resized'),\n\t\tsize: SandboxTerminalSizeSchema,\n\t\tterminal: SandboxTerminalHandleSchema,\n\t})\n\t.strict();\n\nexport type SandboxTerminalAttachRequest = z.infer<typeof SandboxTerminalAttachRequestSchema>;\nexport type SandboxTerminalAttachResult = z.infer<typeof SandboxTerminalAttachResultSchema>;\nexport type SandboxTerminalResizeRequest = z.infer<typeof SandboxTerminalResizeRequestSchema>;\nexport type SandboxTerminalResizeResult = z.infer<typeof SandboxTerminalResizeResultSchema>;\n","import { z } from 'zod';\n\nimport {\n\tEffectiveNamespaceDiscoverySchema,\n\ttype EffectiveNamespaceDiscovery,\n} from '../contract-primitives/index.js';\nimport { withPortableSuperRefinement } from '../portable-contracts/portable-refinement-authoring.js';\nimport {\n\tBoundedOpaqueIdentifierSchema,\n\tPositiveSafeIntegerSchema,\n} from './contract-foundations.js';\n\nexport function compareUnicodeCodePointStrings(left: string, right: string): number {\n\tconst leftCodePoints = Array.from(left, (character) => character.codePointAt(0) ?? 0);\n\tconst rightCodePoints = Array.from(right, (character) => character.codePointAt(0) ?? 0);\n\tconst sharedLength = Math.min(leftCodePoints.length, rightCodePoints.length);\n\tfor (let index = 0; index < sharedLength; index += 1) {\n\t\tconst leftCodePoint = leftCodePoints[index] ?? 0;\n\t\tconst rightCodePoint = rightCodePoints[index] ?? 0;\n\t\tif (leftCodePoint !== rightCodePoint) {\n\t\t\treturn leftCodePoint - rightCodePoint;\n\t\t}\n\t}\n\treturn leftCodePoints.length - rightCodePoints.length;\n}\n\nexport const GatewayRuntimeFrameworkKindSchema = z.literal('hermes');\nexport const GatewayRuntimeManagedPluginClientKindSchema = z.literal('hermes-managed-plugin');\nexport const GatewayRuntimeFrameworkIdentitySchema = z\n\t.object({\n\t\tkind: z.literal('hermes'),\n\t\tprofileName: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict()\n\t.readonly();\nexport const GatewayRuntimeProjectionCohortDigestSchema = z\n\t.string()\n\t.regex(/^projection-cohort:[a-f0-9]{64}$/u);\n\nexport const ManagedAgentProjectionSchema = withPortableSuperRefinement({\n\trefinement: (projection, context) => {\n\t\tif (\n\t\t\tnew Set(\n\t\t\t\tprojection.toolPortalNamespaces.map(\n\t\t\t\t\t(namespaceDiscovery: EffectiveNamespaceDiscovery) => namespaceDiscovery.namespace,\n\t\t\t\t),\n\t\t\t).size !== projection.toolPortalNamespaces.length\n\t\t) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Managed Agent Projection Tool Portal namespaces must be unique.',\n\t\t\t\tpath: ['toolPortalNamespaces'],\n\t\t\t});\n\t\t}\n\t\tconst sortedNamespaceNames = projection.toolPortalNamespaces\n\t\t\t.map((namespaceDiscovery: EffectiveNamespaceDiscovery) => namespaceDiscovery.namespace)\n\t\t\t.toSorted(compareUnicodeCodePointStrings);\n\t\tif (\n\t\t\tprojection.toolPortalNamespaces.some(\n\t\t\t\t(namespaceDiscovery: EffectiveNamespaceDiscovery, index: number) =>\n\t\t\t\t\tnamespaceDiscovery.namespace !== sortedNamespaceNames[index],\n\t\t\t)\n\t\t) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Managed Agent Projection Tool Portal namespaces must be sorted.',\n\t\t\t\tpath: ['toolPortalNamespaces'],\n\t\t\t});\n\t\t}\n\t},\n\trefinementIdentity: 'gateway.managed-agent-projection.namespaces',\n\tschema: z\n\t\t.object({\n\t\t\tagentId: BoundedOpaqueIdentifierSchema,\n\t\t\tframeworkIdentity: GatewayRuntimeFrameworkIdentitySchema,\n\t\t\tprofileAssignmentRevision: BoundedOpaqueIdentifierSchema,\n\t\t\ttoolPortalCatalogMode: z.enum(['compact', 'catalog']).optional(),\n\t\t\ttoolPortalNamespaces: z.array(EffectiveNamespaceDiscoverySchema).readonly(),\n\t\t\ttoolPortalProfileId: BoundedOpaqueIdentifierSchema,\n\t\t})\n\t\t.strict(),\n}).readonly();\n\nexport const GatewayRuntimeAttachmentMetadataSchema = withPortableSuperRefinement({\n\trefinement: (metadata, context) => {\n\t\tif (new Set(metadata.configuredAgentIds).size !== metadata.configuredAgentIds.length) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Gateway attachment metadata contains a duplicate configured agent id.',\n\t\t\t\tpath: ['configuredAgentIds'],\n\t\t\t});\n\t\t}\n\t},\n\trefinementIdentity: 'gateway.attachment.unique-agent-ids',\n\tschema: z\n\t\t.object({\n\t\t\tattachmentGeneration: PositiveSafeIntegerSchema,\n\t\t\tclientKind: GatewayRuntimeManagedPluginClientKindSchema,\n\t\t\tconfiguredAgentIds: z.array(BoundedOpaqueIdentifierSchema).min(1).max(128),\n\t\t\tframeworkEpoch: BoundedOpaqueIdentifierSchema,\n\t\t\tgatewayEpoch: BoundedOpaqueIdentifierSchema,\n\t\t\tprotocolVersion: PositiveSafeIntegerSchema,\n\t\t\tprojectionCohortDigest: GatewayRuntimeProjectionCohortDigestSchema,\n\t\t\truntimeEpoch: BoundedOpaqueIdentifierSchema,\n\t\t\tschemaVersion: PositiveSafeIntegerSchema,\n\t\t})\n\t\t.strict(),\n});\n\nexport const GatewayStablePrincipalDigestSchema = z.string().regex(/^[a-f0-9]{64}$/u);\n\nexport const GatewayRuntimeTrustedInvocationPrincipalSchema = z\n\t.object({\n\t\tagentId: BoundedOpaqueIdentifierSchema,\n\t\tframeworkIdentity: GatewayRuntimeFrameworkIdentitySchema,\n\t\tprofileAssignmentRevision: BoundedOpaqueIdentifierSchema,\n\t\ttoolPortalProfileId: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\nexport const GatewayRuntimeTrustedInvocationRequesterSchema = z\n\t.object({\n\t\tauthenticatedSubjectId: BoundedOpaqueIdentifierSchema,\n\t})\n\t.strict();\n\nexport const GatewayRuntimeTrustedInvocationCorrelationSchema = z\n\t.object({\n\t\trunId: BoundedOpaqueIdentifierSchema.optional(),\n\t\tsessionId: BoundedOpaqueIdentifierSchema.optional(),\n\t\tsessionKey: BoundedOpaqueIdentifierSchema.optional(),\n\t\ttoolCallId: BoundedOpaqueIdentifierSchema.optional(),\n\t\tturnId: BoundedOpaqueIdentifierSchema.optional(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeTrustedInvocationContextSchema = z\n\t.object({\n\t\tcorrelation: GatewayRuntimeTrustedInvocationCorrelationSchema.optional(),\n\t\tprincipal: GatewayRuntimeTrustedInvocationPrincipalSchema,\n\t\trequester: GatewayRuntimeTrustedInvocationRequesterSchema.optional(),\n\t})\n\t.strict();\n\nexport type GatewayRuntimeAttachmentMetadata = z.infer<\n\ttypeof GatewayRuntimeAttachmentMetadataSchema\n>;\nexport type GatewayRuntimeFrameworkIdentity = z.infer<typeof GatewayRuntimeFrameworkIdentitySchema>;\nexport type GatewayRuntimeFrameworkKind = z.infer<typeof GatewayRuntimeFrameworkKindSchema>;\nexport type GatewayRuntimeManagedPluginClientKind = z.infer<\n\ttypeof GatewayRuntimeManagedPluginClientKindSchema\n>;\nexport type ManagedAgentProjection = z.infer<typeof ManagedAgentProjectionSchema>;\nexport type GatewayRuntimeTrustedInvocationCorrelation = z.infer<\n\ttypeof GatewayRuntimeTrustedInvocationCorrelationSchema\n>;\nexport type GatewayRuntimeTrustedInvocationContext = z.infer<\n\ttypeof GatewayRuntimeTrustedInvocationContextSchema\n>;\nexport type GatewayStablePrincipalDigest = z.infer<typeof GatewayStablePrincipalDigestSchema>;\nexport type GatewayRuntimeTrustedInvocationPrincipal = z.infer<\n\ttypeof GatewayRuntimeTrustedInvocationPrincipalSchema\n>;\nexport type GatewayRuntimeTrustedInvocationRequester = z.infer<\n\ttypeof GatewayRuntimeTrustedInvocationRequesterSchema\n>;\n","import type { z } from 'zod';\n\nexport * from '../catalog-surface/index.js';\n\nimport {\n\tSandboxRetainedResultLookupRequestSchema,\n\tSandboxRetainedResultLookupResultSchema,\n} from './operation-contracts.js';\nimport {\n\tSandboxEnvironmentCloseResultSchema,\n\tSandboxEnvironmentHandleRequestSchema,\n\tSandboxEnvironmentOpenRequestSchema,\n\tSandboxEnvironmentOpenResultSchema,\n\tSandboxEnvironmentStatusResultSchema,\n} from './sandbox-environment-contracts.js';\nimport {\n\tSandboxExecCancelRequestSchema,\n\tSandboxExecCancelResultSchema,\n\tSandboxExecStartRequestSchema,\n\tSandboxExecStartResultSchema,\n\tSandboxExecWaitRequestSchema,\n\tSandboxExecWaitResultSchema,\n} from './sandbox-execution-contracts.js';\nimport {\n\tSandboxFsListRequestSchema,\n\tSandboxFsListResultSchema,\n\tSandboxFsMkdirRequestSchema,\n\tSandboxFsMkdirResultSchema,\n\tSandboxFsReadRequestSchema,\n\tSandboxFsReadResultSchema,\n\tSandboxFsRemoveRequestSchema,\n\tSandboxFsRemoveResultSchema,\n\tSandboxFsRenameRequestSchema,\n\tSandboxFsRenameResultSchema,\n\tSandboxFsStatRequestSchema,\n\tSandboxFsStatResultSchema,\n\tSandboxFsWriteRequestSchema,\n\tSandboxFsWriteResultSchema,\n} from './sandbox-filesystem-contracts.js';\nimport {\n\tSandboxProcessCancelRequestSchema,\n\tSandboxProcessCancelResultSchema,\n\tSandboxProcessHandleRequestSchema,\n\tSandboxProcessLogsRequestSchema,\n\tSandboxProcessLogsResultSchema,\n\tSandboxProcessStartRequestSchema,\n\tSandboxProcessStartResultSchema,\n\tSandboxProcessStatusResultSchema,\n\tSandboxProcessWaitRequestSchema,\n\tSandboxProcessWaitResultSchema,\n} from './sandbox-process-contracts.js';\nimport {\n\tSandboxStreamCloseRequestSchema,\n\tSandboxStreamCloseResultSchema,\n\tSandboxStreamReadRequestSchema,\n\tSandboxStreamReadResultSchema,\n\tSandboxStreamWriteRequestSchema,\n\tSandboxStreamWriteResultSchema,\n} from './sandbox-stream-contracts.js';\nimport {\n\tSandboxTerminalAttachRequestSchema,\n\tSandboxTerminalAttachResultSchema,\n\tSandboxTerminalResizeRequestSchema,\n\tSandboxTerminalResizeResultSchema,\n} from './sandbox-terminal-contracts.js';\n\ninterface SandboxMethodContract {\n\treadonly request: z.ZodType;\n\treadonly result: z.ZodType;\n}\n\nexport const SANDBOX_METHOD_CONTRACTS = {\n\t'sandbox.environment.close': {\n\t\trequest: SandboxEnvironmentHandleRequestSchema,\n\t\tresult: SandboxEnvironmentCloseResultSchema,\n\t},\n\t'sandbox.environment.open': {\n\t\trequest: SandboxEnvironmentOpenRequestSchema,\n\t\tresult: SandboxEnvironmentOpenResultSchema,\n\t},\n\t'sandbox.environment.status': {\n\t\trequest: SandboxEnvironmentHandleRequestSchema,\n\t\tresult: SandboxEnvironmentStatusResultSchema,\n\t},\n\t'sandbox.exec.cancel': {\n\t\trequest: SandboxExecCancelRequestSchema,\n\t\tresult: SandboxExecCancelResultSchema,\n\t},\n\t'sandbox.exec.start': {\n\t\trequest: SandboxExecStartRequestSchema,\n\t\tresult: SandboxExecStartResultSchema,\n\t},\n\t'sandbox.exec.wait': {\n\t\trequest: SandboxExecWaitRequestSchema,\n\t\tresult: SandboxExecWaitResultSchema,\n\t},\n\t'sandbox.retained-result.lookup': {\n\t\trequest: SandboxRetainedResultLookupRequestSchema,\n\t\tresult: SandboxRetainedResultLookupResultSchema,\n\t},\n\t'sandbox.fs.list': { request: SandboxFsListRequestSchema, result: SandboxFsListResultSchema },\n\t'sandbox.fs.mkdir': {\n\t\trequest: SandboxFsMkdirRequestSchema,\n\t\tresult: SandboxFsMkdirResultSchema,\n\t},\n\t'sandbox.fs.read': { request: SandboxFsReadRequestSchema, result: SandboxFsReadResultSchema },\n\t'sandbox.fs.remove': {\n\t\trequest: SandboxFsRemoveRequestSchema,\n\t\tresult: SandboxFsRemoveResultSchema,\n\t},\n\t'sandbox.fs.rename': {\n\t\trequest: SandboxFsRenameRequestSchema,\n\t\tresult: SandboxFsRenameResultSchema,\n\t},\n\t'sandbox.fs.stat': { request: SandboxFsStatRequestSchema, result: SandboxFsStatResultSchema },\n\t'sandbox.fs.write': {\n\t\trequest: SandboxFsWriteRequestSchema,\n\t\tresult: SandboxFsWriteResultSchema,\n\t},\n\t'sandbox.process.cancel': {\n\t\trequest: SandboxProcessCancelRequestSchema,\n\t\tresult: SandboxProcessCancelResultSchema,\n\t},\n\t'sandbox.process.logs': {\n\t\trequest: SandboxProcessLogsRequestSchema,\n\t\tresult: SandboxProcessLogsResultSchema,\n\t},\n\t'sandbox.process.start': {\n\t\trequest: SandboxProcessStartRequestSchema,\n\t\tresult: SandboxProcessStartResultSchema,\n\t},\n\t'sandbox.process.status': {\n\t\trequest: SandboxProcessHandleRequestSchema,\n\t\tresult: SandboxProcessStatusResultSchema,\n\t},\n\t'sandbox.process.wait': {\n\t\trequest: SandboxProcessWaitRequestSchema,\n\t\tresult: SandboxProcessWaitResultSchema,\n\t},\n\t'sandbox.stream.close': {\n\t\trequest: SandboxStreamCloseRequestSchema,\n\t\tresult: SandboxStreamCloseResultSchema,\n\t},\n\t'sandbox.stream.read': {\n\t\trequest: SandboxStreamReadRequestSchema,\n\t\tresult: SandboxStreamReadResultSchema,\n\t},\n\t'sandbox.stream.write': {\n\t\trequest: SandboxStreamWriteRequestSchema,\n\t\tresult: SandboxStreamWriteResultSchema,\n\t},\n\t'sandbox.terminal.attach': {\n\t\trequest: SandboxTerminalAttachRequestSchema,\n\t\tresult: SandboxTerminalAttachResultSchema,\n\t},\n\t'sandbox.terminal.resize': {\n\t\trequest: SandboxTerminalResizeRequestSchema,\n\t\tresult: SandboxTerminalResizeResultSchema,\n\t},\n} as const satisfies Readonly<Record<string, SandboxMethodContract>>;\n\nexport * from './contract-foundations.js';\nexport * from './operation-contracts.js';\nexport * from './sandbox-environment-contracts.js';\nexport * from './sandbox-execution-contracts.js';\nexport * from './sandbox-filesystem-contracts.js';\nexport * from './sandbox-process-contracts.js';\nexport * from './sandbox-stream-contracts.js';\nexport * from './sandbox-terminal-contracts.js';\nexport * from './trusted-context-contracts.js';\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { a as GatewayApprovalDecisionResult, r as GatewayApprovalDecisionRequest } from "../index-BdK9cTP_.js";
2
- import { c as PortalArtifactReadRequest, u as PortalArtifactReadResult } from "../index-DDLN0DE_.js";
3
- import { A as SandboxTerminalResizeResult, At as SandboxFsRenameResult, B as SandboxStreamWriteRequest, Bt as SandboxExecCancelRequest, E as SandboxTerminalAttachResult, Et as SandboxFsRemoveResult, Gt as SandboxExecStartRequest, H as SandboxStreamWriteResult, Ht as SandboxExecCancelResult, I as SandboxStreamReadRequest, It as SandboxFsWriteRequest, K as SandboxProcessCancelResult, M as SandboxStreamCloseRequest, Mt as SandboxFsStatRequest, O as SandboxTerminalResizeRequest, Ot as SandboxFsRenameRequest, P as SandboxStreamCloseResult, Pt as SandboxFsStatResult, Q as SandboxProcessLogsResult, R as SandboxStreamReadResult, Rt as SandboxFsWriteResult, St as SandboxFsReadResult, W as SandboxProcessCancelRequest, X as SandboxProcessLogsRequest, Yt as SandboxExecWaitRequest, Zt as SandboxExecWaitResult, _ as GatewayRuntimeTrustedInvocationRequester, _n as SandboxRetainedResultLookupRequest, at as SandboxProcessStatusResult, bt as SandboxFsReadRequest, c as GatewayRuntimeManagedPluginClientKind, cn as SandboxEnvironmentStatusRequest, d as GatewayRuntimeTrustedInvocationContext, en as SandboxEnvironmentCloseRequest, et as SandboxProcessStartRequest, f as GatewayRuntimeTrustedInvocationContextSchema, ft as SandboxFsListRequest, g as GatewayRuntimeTrustedInvocationPrincipalSchema, gt as SandboxFsMkdirRequest, h as GatewayRuntimeTrustedInvocationPrincipal, in as SandboxEnvironmentOpenRequest, it as SandboxProcessStatusRequest, ln as SandboxEnvironmentStatusResult, lt as SandboxProcessWaitResult, m as GatewayRuntimeTrustedInvocationCorrelationSchema, mt as SandboxFsListResult, n as GatewayRuntimeAttachmentMetadata$1, nt as SandboxProcessStartResult, on as SandboxEnvironmentOpenResult, p as GatewayRuntimeTrustedInvocationCorrelation, qt as SandboxExecStartResult, st as SandboxProcessWaitRequest, tn as SandboxEnvironmentCloseResult, v as GatewayRuntimeTrustedInvocationRequesterSchema, vt as SandboxFsMkdirResult, w as SandboxTerminalAttachRequest, wt as SandboxFsRemoveRequest, yn as SandboxRetainedResultLookupResult } from "../index-ksJ4wmQG.js";
4
- import { P as PortalCallRequest, T as PortalListResult, b as PortalDescribeResult, g as PortalCallResult, k as PortalSearchResult } from "../portal-call-result-schema-BEPp8X4z.js";
5
- import { C as PortalDescribeRequest, g as PortalListRequest, p as PortalSearchRequest, r as PortalAttachmentResult, t as PortalAttachmentRequest } from "../index-CLHNSgWL.js";
1
+ import { a as GatewayApprovalDecisionResult, r as GatewayApprovalDecisionRequest } from "../index-S_R4y_hm.js";
2
+ import { c as PortalArtifactReadRequest, u as PortalArtifactReadResult } from "../index-C8Wl2up5.js";
3
+ import { $t as SandboxExecWaitResult, A as SandboxTerminalResizeResult, At as SandboxFsRenameRequest, B as SandboxStreamWriteRequest, Bt as SandboxFsWriteResult, E as SandboxTerminalAttachResult, Et as SandboxFsRemoveRequest, H as SandboxStreamWriteResult, Ht as SandboxExecCancelRequest, I as SandboxStreamReadRequest, It as SandboxFsStatResult, K as SandboxProcessCancelResult, M as SandboxStreamCloseRequest, Mt as SandboxFsRenameResult, O as SandboxTerminalResizeRequest, Ot as SandboxFsRemoveResult, P as SandboxStreamCloseResult, Pt as SandboxFsStatRequest, Q as SandboxProcessLogsRequest, R as SandboxStreamReadResult, Rt as SandboxFsWriteRequest, St as SandboxFsReadRequest, W as SandboxProcessCancelRequest, Wt as SandboxExecCancelResult, Yt as SandboxExecStartResult, Zt as SandboxExecWaitRequest, _ as GatewayRuntimeTrustedInvocationRequester, bt as SandboxFsMkdirResult, c as GatewayRuntimeManagedPluginClientKind, cn as SandboxEnvironmentOpenResult, d as GatewayRuntimeTrustedInvocationContext, dn as SandboxEnvironmentStatusResult, dt as SandboxProcessWaitResult, et as SandboxProcessLogsResult, f as GatewayRuntimeTrustedInvocationContextSchema, g as GatewayRuntimeTrustedInvocationPrincipalSchema, gt as SandboxFsListResult, h as GatewayRuntimeTrustedInvocationPrincipal, it as SandboxProcessStartResult, lt as SandboxProcessWaitRequest, m as GatewayRuntimeTrustedInvocationCorrelationSchema, mt as SandboxFsListRequest, n as GatewayRuntimeAttachmentMetadata$1, nn as SandboxEnvironmentCloseRequest, nt as SandboxProcessStartRequest, on as SandboxEnvironmentOpenRequest, ot as SandboxProcessStatusRequest, p as GatewayRuntimeTrustedInvocationCorrelation, qt as SandboxExecStartRequest, rn as SandboxEnvironmentCloseResult, st as SandboxProcessStatusResult, un as SandboxEnvironmentStatusRequest, v as GatewayRuntimeTrustedInvocationRequesterSchema, vt as SandboxFsMkdirRequest, w as SandboxTerminalAttachRequest, wt as SandboxFsReadResult, xn as SandboxRetainedResultLookupResult, yn as SandboxRetainedResultLookupRequest } from "../index-C7qqwbMQ.js";
4
+ import { P as PortalCallRequest, T as PortalListResult, b as PortalDescribeResult, g as PortalCallResult, k as PortalSearchResult } from "../portal-call-result-schema-CxyfznDF.js";
5
+ import { C as PortalDescribeRequest, g as PortalListRequest, p as PortalSearchRequest, r as PortalAttachmentResult, t as PortalAttachmentRequest } from "../index-BHXQ_e0h.js";
6
6
  import { z } from "zod/v4";
7
7
 
8
8
  //#region src/gateway-runtime-client/gateway-runtime-trace-context.d.ts
@@ -1,11 +1,11 @@
1
- import { C as PortalSearchResultSchema, b as PortalListResultSchema, g as PortalDescribeResultSchema, p as PortalCallResultSchema } from "../portal-call-result-schema-DVJ6FyTz.js";
2
- import { n as GatewayApprovalDecisionRequestSchema, r as GatewayApprovalDecisionResultSchema } from "../approval-surface-CfbAG-81.js";
1
+ import { C as PortalSearchResultSchema, b as PortalListResultSchema, g as PortalDescribeResultSchema, p as PortalCallResultSchema } from "../portal-call-result-schema-bjzGidd5.js";
2
+ import { n as GatewayApprovalDecisionRequestSchema, r as GatewayApprovalDecisionResultSchema } from "../approval-surface-BsE8CS3l.js";
3
3
  import { a as PortalArtifactReadRequestSchema, o as PortalArtifactReadResultSchema } from "../artifact-surface-Db5KQOA0.js";
4
- import { $ as SandboxExecStartRequestSchema, A as SandboxProcessStartRequestSchema, B as SandboxFsReadRequestSchema, C as SandboxStreamWriteResultSchema, E as SandboxProcessHandleRequestSchema, G as SandboxFsRenameResultSchema, H as SandboxFsRemoveRequestSchema, I as SandboxFsListRequestSchema, J as SandboxFsWriteRequestSchema, K as SandboxFsStatRequestSchema, L as SandboxFsListResultSchema, M as SandboxProcessStatusResultSchema, N as SandboxProcessWaitRequestSchema, O as SandboxProcessLogsRequestSchema, P as SandboxProcessWaitResultSchema, R as SandboxFsMkdirRequestSchema, S as SandboxStreamWriteRequestSchema, T as SandboxProcessCancelResultSchema, U as SandboxFsRemoveResultSchema, V as SandboxFsReadResultSchema, W as SandboxFsRenameRequestSchema, X as SandboxExecCancelRequestSchema, Y as SandboxFsWriteResultSchema, Z as SandboxExecCancelResultSchema, _ as SandboxTerminalResizeResultSchema, at as SandboxEnvironmentHandleRequestSchema, b as SandboxStreamReadRequestSchema, c as GatewayRuntimeTrustedInvocationCorrelationSchema, ct as SandboxEnvironmentStatusResultSchema, et as SandboxExecStartResultSchema, g as SandboxTerminalResizeRequestSchema, h as SandboxTerminalAttachResultSchema, it as SandboxEnvironmentCloseResultSchema, j as SandboxProcessStartResultSchema, k as SandboxProcessLogsResultSchema, l as GatewayRuntimeTrustedInvocationPrincipalSchema, m as SandboxTerminalAttachRequestSchema, mt as SandboxRetainedResultLookupResultSchema, n as GatewayRuntimeAttachmentMetadataSchema, nt as SandboxExecWaitResultSchema, ot as SandboxEnvironmentOpenRequestSchema, pt as SandboxRetainedResultLookupRequestSchema, q as SandboxFsStatResultSchema, s as GatewayRuntimeTrustedInvocationContextSchema, st as SandboxEnvironmentOpenResultSchema, tt as SandboxExecWaitRequestSchema, u as GatewayRuntimeTrustedInvocationRequesterSchema, v as SandboxStreamCloseRequestSchema, w as SandboxProcessCancelRequestSchema, x as SandboxStreamReadResultSchema, y as SandboxStreamCloseResultSchema, z as SandboxFsMkdirResultSchema } from "../contracts-K6l783Yb.js";
5
- import { r as PortalCallRequestSchema } from "../portal-call-request-schema-B1dbBjmW.js";
6
- import { c as PortalSearchRequestSchema, f as PortalDescribeRequestSchema, i as PortalAttachmentResultSchema, r as PortalAttachmentRequestSchema, u as PortalListRequestSchema } from "../portal-call-surface-BPVX-rjw.js";
7
- import { z } from "zod/v4";
4
+ import { A as SandboxProcessLogsResultSchema, B as SandboxFsMkdirResultSchema, C as SandboxStreamWriteResultSchema, E as SandboxProcessHandleRequestSchema, F as SandboxProcessWaitResultSchema, G as SandboxFsRenameRequestSchema, H as SandboxFsReadResultSchema, J as SandboxFsStatResultSchema, K as SandboxFsRenameResultSchema, L as SandboxFsListRequestSchema, M as SandboxProcessStartResultSchema, N as SandboxProcessStatusResultSchema, P as SandboxProcessWaitRequestSchema, Q as SandboxExecCancelResultSchema, R as SandboxFsListResultSchema, S as SandboxStreamWriteRequestSchema, T as SandboxProcessCancelResultSchema, U as SandboxFsRemoveRequestSchema, V as SandboxFsReadRequestSchema, W as SandboxFsRemoveResultSchema, X as SandboxFsWriteResultSchema, Y as SandboxFsWriteRequestSchema, Z as SandboxExecCancelRequestSchema, _ as SandboxTerminalResizeResultSchema, at as SandboxEnvironmentCloseResultSchema, b as SandboxStreamReadRequestSchema, c as GatewayRuntimeTrustedInvocationCorrelationSchema, ct as SandboxEnvironmentOpenResultSchema, et as SandboxExecStartRequestSchema, g as SandboxTerminalResizeRequestSchema, h as SandboxTerminalAttachResultSchema, ht as SandboxRetainedResultLookupResultSchema, j as SandboxProcessStartRequestSchema, k as SandboxProcessLogsRequestSchema, l as GatewayRuntimeTrustedInvocationPrincipalSchema, lt as SandboxEnvironmentStatusResultSchema, m as SandboxTerminalAttachRequestSchema, mt as SandboxRetainedResultLookupRequestSchema, n as GatewayRuntimeAttachmentMetadataSchema, nt as SandboxExecWaitRequestSchema, ot as SandboxEnvironmentHandleRequestSchema, q as SandboxFsStatRequestSchema, rt as SandboxExecWaitResultSchema, s as GatewayRuntimeTrustedInvocationContextSchema, st as SandboxEnvironmentOpenRequestSchema, tt as SandboxExecStartResultSchema, u as GatewayRuntimeTrustedInvocationRequesterSchema, v as SandboxStreamCloseRequestSchema, w as SandboxProcessCancelRequestSchema, x as SandboxStreamReadResultSchema, y as SandboxStreamCloseResultSchema, z as SandboxFsMkdirRequestSchema } from "../contracts-DlvJ0mo0.js";
5
+ import { r as PortalCallRequestSchema } from "../portal-call-request-schema-8wgpdxjI.js";
6
+ import { c as PortalSearchRequestSchema, f as PortalDescribeRequestSchema, i as PortalAttachmentResultSchema, r as PortalAttachmentRequestSchema, u as PortalListRequestSchema } from "../portal-call-surface-CG609sIB.js";
8
7
  import net from "node:net";
8
+ import { z } from "zod/v4";
9
9
  //#region src/gateway-runtime-client/gateway-runtime-sandbox-operations.ts
10
10
  async function requestSandboxOperation(props) {
11
11
  const publicRequest = props.requestSchema.parse(props.request);
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as encodeGatewayRuntimeLocalExecFrame, i as GatewayRuntimeLocalExecLineDecoder, n as GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV, o as parseGatewayRuntimeLocalExecServerFrame, t as GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV } from "../gateway-runtime-local-exec-transport-CO2bQ3wz.js";
2
+ import { a as encodeGatewayRuntimeLocalExecFrame, i as GatewayRuntimeLocalExecLineDecoder, n as GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV, o as parseGatewayRuntimeLocalExecServerFrame, t as GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV } from "../gateway-runtime-local-exec-transport-CV4xijjZ.js";
3
3
  import { createConnection } from "node:net";
4
4
  //#region src/gateway-runtime-local-exec/gateway-runtime-local-exec-helper.ts
5
5
  const CONNECTION_DEADLINE_MS = 1e4;
@@ -1,2 +1,2 @@
1
- import { n as GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV, r as GatewayRuntimeLocalExecTransport, t as GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV } from "../gateway-runtime-local-exec-transport-CO2bQ3wz.js";
1
+ import { n as GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV, r as GatewayRuntimeLocalExecTransport, t as GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV } from "../gateway-runtime-local-exec-transport-CV4xijjZ.js";
2
2
  export { GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV, GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV, GatewayRuntimeLocalExecTransport };
@@ -1,6 +1,6 @@
1
1
  import { chmod, mkdtemp, rm } from "node:fs/promises";
2
- import { join } from "node:path";
3
2
  import { createServer } from "node:net";
3
+ import { join } from "node:path";
4
4
  import { randomBytes } from "node:crypto";
5
5
  import { fileURLToPath } from "node:url";
6
6
  //#region src/gateway-runtime-local-exec/gateway-runtime-local-exec-protocol.ts
@@ -424,4 +424,4 @@ var GatewayRuntimeLocalExecTransport = class {
424
424
  //#endregion
425
425
  export { encodeGatewayRuntimeLocalExecFrame as a, GatewayRuntimeLocalExecLineDecoder as i, GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV as n, parseGatewayRuntimeLocalExecServerFrame as o, GatewayRuntimeLocalExecTransport as r, GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV as t };
426
426
 
427
- //# sourceMappingURL=gateway-runtime-local-exec-transport-CO2bQ3wz.js.map
427
+ //# sourceMappingURL=gateway-runtime-local-exec-transport-CV4xijjZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-runtime-local-exec-transport-CO2bQ3wz.js","names":["#buffer","#socket","#pendingWrite","#helperArgv","#reservationScheduler","#reservationTimeoutMs","#reservations","#temporaryDirectory","#expireReservation","#acceptConnection","#disposeReservation","#processClientFrames","#runAuthenticatedOperation","#disposeReservationOnce"],"sources":["../src/gateway-runtime-local-exec/gateway-runtime-local-exec-protocol.ts","../src/gateway-runtime-local-exec/gateway-runtime-local-exec-transport.ts"],"sourcesContent":["const MAXIMUM_LOCAL_EXEC_FRAME_BYTES = 128 * 1024;\nconst MAXIMUM_LOCAL_EXEC_STREAM_CHUNK_BYTES = 64 * 1024;\nconst MAXIMUM_LOCAL_EXEC_TOKEN_BYTES = 256;\n\nexport type GatewayRuntimeLocalExecClientFrame =\n\t| { readonly kind: 'authenticate'; readonly token: string }\n\t| { readonly kind: 'cancel' }\n\t| { readonly contentBase64: string; readonly kind: 'stdin-chunk' }\n\t| { readonly kind: 'stdin-end' }\n\t| { readonly columns: number; readonly kind: 'terminal-resize'; readonly rows: number };\n\nexport type GatewayRuntimeLocalExecServerFrame =\n\t| { readonly kind: 'accepted' }\n\t| { readonly contentBase64: string; readonly kind: 'stderr-chunk' }\n\t| { readonly kind: 'stderr-end' }\n\t| { readonly exitCode: number | null; readonly kind: 'exited' }\n\t| { readonly message: string; readonly kind: 'rejected' }\n\t| { readonly contentBase64: string; readonly kind: 'stdout-chunk' }\n\t| { readonly kind: 'stdout-end' };\n\nexport class GatewayRuntimeLocalExecProtocolError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'GatewayRuntimeLocalExecProtocolError';\n\t}\n}\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction requireExactKeys(value: Readonly<Record<string, unknown>>, keys: readonly string[]): void {\n\tconst actualKeys = Object.keys(value).toSorted();\n\tconst expectedKeys = keys.toSorted();\n\tif (\n\t\tactualKeys.length !== expectedKeys.length ||\n\t\tactualKeys.some((key, index) => key !== expectedKeys[index])\n\t) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame contains unexpected fields.');\n\t}\n}\n\nfunction requireString(value: unknown, fieldName: string): string {\n\tif (typeof value !== 'string' || value.length === 0) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t`Local exec frame field '${fieldName}' must be a non-empty string.`,\n\t\t);\n\t}\n\treturn value;\n}\n\nfunction requireBoundedToken(value: unknown): string {\n\tconst token = requireString(value, 'token');\n\tif (Buffer.byteLength(token, 'utf8') > MAXIMUM_LOCAL_EXEC_TOKEN_BYTES) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t'Local exec reservation token exceeds the byte limit.',\n\t\t);\n\t}\n\treturn token;\n}\n\nfunction requireCanonicalBase64(value: unknown): string {\n\tconst encoded = requireString(value, 'contentBase64');\n\tconst decoded = Buffer.from(encoded, 'base64');\n\tif (\n\t\tdecoded.byteLength > MAXIMUM_LOCAL_EXEC_STREAM_CHUNK_BYTES ||\n\t\tdecoded.toString('base64') !== encoded\n\t) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t'Local exec stream content must be canonical bounded base64.',\n\t\t);\n\t}\n\treturn encoded;\n}\n\nfunction requireTerminalDimension(value: unknown, fieldName: string): number {\n\tif (!Number.isSafeInteger(value) || (value as number) <= 0 || (value as number) > 1_000) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t`Local exec frame field '${fieldName}' must be a bounded positive integer.`,\n\t\t);\n\t}\n\treturn value as number;\n}\n\nfunction parseJsonObject(line: string): Readonly<Record<string, unknown>> {\n\tif (Buffer.byteLength(line, 'utf8') > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t}\n\tlet value: unknown;\n\ttry {\n\t\tvalue = JSON.parse(line);\n\t} catch (error: unknown) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\terror instanceof Error\n\t\t\t\t? `Local exec frame is not valid JSON: ${error.message}`\n\t\t\t\t: 'Local exec frame is not valid JSON.',\n\t\t);\n\t}\n\tif (!isRecord(value)) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame must be an object.');\n\t}\n\treturn value;\n}\n\nexport function encodeGatewayRuntimeLocalExecFrame(\n\tframe: GatewayRuntimeLocalExecClientFrame | GatewayRuntimeLocalExecServerFrame,\n): string {\n\treturn `${JSON.stringify(frame)}\\n`;\n}\n\nexport function parseGatewayRuntimeLocalExecClientFrame(\n\tline: string,\n): GatewayRuntimeLocalExecClientFrame {\n\tconst value = parseJsonObject(line);\n\tconst kind = requireString(value.kind, 'kind');\n\tswitch (kind) {\n\t\tcase 'authenticate':\n\t\t\trequireExactKeys(value, ['kind', 'token']);\n\t\t\treturn { kind, token: requireBoundedToken(value.token) };\n\t\tcase 'cancel':\n\t\tcase 'stdin-end':\n\t\t\trequireExactKeys(value, ['kind']);\n\t\t\treturn { kind };\n\t\tcase 'stdin-chunk':\n\t\t\trequireExactKeys(value, ['contentBase64', 'kind']);\n\t\t\treturn { contentBase64: requireCanonicalBase64(value.contentBase64), kind };\n\t\tcase 'terminal-resize':\n\t\t\trequireExactKeys(value, ['columns', 'kind', 'rows']);\n\t\t\treturn {\n\t\t\t\tcolumns: requireTerminalDimension(value.columns, 'columns'),\n\t\t\t\tkind,\n\t\t\t\trows: requireTerminalDimension(value.rows, 'rows'),\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(`Unknown local exec client frame '${kind}'.`);\n\t}\n}\n\nexport function parseGatewayRuntimeLocalExecServerFrame(\n\tline: string,\n): GatewayRuntimeLocalExecServerFrame {\n\tconst value = parseJsonObject(line);\n\tconst kind = requireString(value.kind, 'kind');\n\tswitch (kind) {\n\t\tcase 'accepted':\n\t\tcase 'stderr-end':\n\t\tcase 'stdout-end':\n\t\t\trequireExactKeys(value, ['kind']);\n\t\t\treturn { kind };\n\t\tcase 'stderr-chunk':\n\t\tcase 'stdout-chunk':\n\t\t\trequireExactKeys(value, ['contentBase64', 'kind']);\n\t\t\treturn { contentBase64: requireCanonicalBase64(value.contentBase64), kind };\n\t\tcase 'exited':\n\t\t\trequireExactKeys(value, ['exitCode', 'kind']);\n\t\t\tif (\n\t\t\t\tvalue.exitCode !== null &&\n\t\t\t\t(!Number.isSafeInteger(value.exitCode) ||\n\t\t\t\t\t(value.exitCode as number) < 0 ||\n\t\t\t\t\t(value.exitCode as number) > 255)\n\t\t\t) {\n\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t\t\t\"Local exec frame field 'exitCode' must be null or an integer from 0 through 255.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { exitCode: value.exitCode as number | null, kind };\n\t\tcase 'rejected':\n\t\t\trequireExactKeys(value, ['kind', 'message']);\n\t\t\treturn { kind, message: requireString(value.message, 'message') };\n\t\tdefault:\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(`Unknown local exec server frame '${kind}'.`);\n\t}\n}\n\nexport class GatewayRuntimeLocalExecLineDecoder {\n\t#buffer = Buffer.alloc(0);\n\n\tpush(chunk: Uint8Array): readonly string[] {\n\t\tif (chunk.byteLength + this.#buffer.byteLength > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t\t'Local exec frame batch exceeds the byte limit.',\n\t\t\t);\n\t\t}\n\t\tthis.#buffer = Buffer.concat([this.#buffer, chunk]);\n\t\tconst lines: string[] = [];\n\t\tlet newlineIndex = this.#buffer.indexOf(0x0a);\n\t\twhile (newlineIndex >= 0) {\n\t\t\tconst line = this.#buffer.subarray(0, newlineIndex).toString('utf8');\n\t\t\tthis.#buffer = this.#buffer.subarray(newlineIndex + 1);\n\t\t\tif (Buffer.byteLength(line, 'utf8') > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t\t\t}\n\t\t\tif (line.length > 0) lines.push(line);\n\t\t\tnewlineIndex = this.#buffer.indexOf(0x0a);\n\t\t}\n\t\tif (this.#buffer.byteLength > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t\t}\n\t\treturn lines;\n\t}\n}\n","import { randomBytes } from 'node:crypto';\nimport { chmod, mkdtemp, rm } from 'node:fs/promises';\nimport { createServer, type Server, type Socket } from 'node:net';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport {\n\tGatewayRuntimeLocalExecLineDecoder,\n\tGatewayRuntimeLocalExecProtocolError,\n\tencodeGatewayRuntimeLocalExecFrame,\n\tparseGatewayRuntimeLocalExecClientFrame,\n\ttype GatewayRuntimeLocalExecServerFrame,\n} from './gateway-runtime-local-exec-protocol.js';\n\nexport const GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV = 'AGENT_VM_LOCAL_EXEC_SOCKET';\nexport const GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV = 'AGENT_VM_LOCAL_EXEC_TOKEN';\n\nconst DEFAULT_RESERVATION_TIMEOUT_MS = 15_000;\nconst DEFAULT_TEMPORARY_DIRECTORY = '/tmp';\nconst MAXIMUM_STREAM_CHUNK_BYTES = 64 * 1024;\n\nexport type GatewayRuntimeLocalExecReadResult =\n\t| { readonly content: Uint8Array; readonly kind: 'chunk' }\n\t| { readonly kind: 'end' };\n\nexport interface GatewayRuntimeLocalExecOperation {\n\treadonly cancel: () => Promise<void>;\n\treadonly closeStdin: () => Promise<void>;\n\treadonly readStderr: (maximumBytes: number) => Promise<GatewayRuntimeLocalExecReadResult>;\n\treadonly readStdout: (maximumBytes: number) => Promise<GatewayRuntimeLocalExecReadResult>;\n\treadonly resizeTerminal?: (size: {\n\t\treadonly columns: number;\n\t\treadonly rows: number;\n\t}) => Promise<void>;\n\treadonly wait: () => Promise<{ readonly exitCode: number | null }>;\n\treadonly writeStdin: (content: Uint8Array) => Promise<void>;\n}\n\nexport interface GatewayRuntimeLocalExecReservationScheduler {\n\treadonly schedule: (callback: () => void, delayMs: number) => { readonly cancel: () => void };\n}\n\nexport interface GatewayRuntimeLocalExecFinalizeToken {\n\treadonly kind: 'gateway-runtime-local-exec';\n\treadonly reservationId: string;\n}\n\nexport interface GatewayRuntimeLocalExecSpec {\n\treadonly argv: readonly string[];\n\treadonly env: Readonly<Record<string, string>>;\n\treadonly finalizeToken: GatewayRuntimeLocalExecFinalizeToken;\n\treadonly stdinMode: 'pipe-open';\n}\n\nexport interface GatewayRuntimeLocalExecTransportOptions {\n\treadonly helperArgv?: readonly string[];\n\treadonly reservationScheduler?: GatewayRuntimeLocalExecReservationScheduler;\n\treadonly reservationTimeoutMs?: number;\n\treadonly temporaryDirectory?: string;\n}\n\ninterface ReservationRecord {\n\treadonly cancelExpiry: () => void;\n\treadonly operation: GatewayRuntimeLocalExecOperation;\n\treadonly reservationDirectory: string;\n\treadonly reservationId: string;\n\treadonly server: Server;\n\treadonly socketPath: string;\n\treadonly token: string;\n\tconsumed: boolean;\n\tdisposal?: Promise<void>;\n\tfinalized: boolean;\n\tsocket?: Socket;\n}\n\nconst defaultReservationScheduler: GatewayRuntimeLocalExecReservationScheduler = {\n\tschedule(callback, delayMs) {\n\t\tconst timeout = setTimeout(callback, delayMs);\n\t\treturn { cancel: () => clearTimeout(timeout) };\n\t},\n};\n\nfunction validateReservationTimeout(timeoutMs: number): number {\n\tif (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0 || timeoutMs > 60_000) {\n\t\tthrow new RangeError('Local exec reservation timeout must be an integer from 1 through 60000.');\n\t}\n\treturn timeoutMs;\n}\n\nasync function closeServer(server: Server): Promise<void> {\n\tif (!server.listening) return;\n\tawait new Promise<void>((resolve, reject) => {\n\t\tserver.close((error?: Error) => (error === undefined ? resolve() : reject(error)));\n\t});\n}\n\nasync function writeFrame(\n\tsocket: Socket,\n\tframe: GatewayRuntimeLocalExecServerFrame,\n): Promise<void> {\n\tconst encodedFrame = encodeGatewayRuntimeLocalExecFrame(frame);\n\tif (socket.write(encodedFrame)) return;\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst cleanup = (): void => {\n\t\t\tsocket.off('drain', handleDrain);\n\t\t\tsocket.off('error', handleError);\n\t\t};\n\t\tconst handleDrain = (): void => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t};\n\t\tconst handleError = (error: Error): void => {\n\t\t\tcleanup();\n\t\t\treject(error);\n\t\t};\n\t\tsocket.once('drain', handleDrain);\n\t\tsocket.once('error', handleError);\n\t});\n}\n\nclass GatewayRuntimeLocalExecFrameWriter {\n\t#pendingWrite = Promise.resolve();\n\treadonly #socket: Socket;\n\n\tconstructor(socket: Socket) {\n\t\tthis.#socket = socket;\n\t}\n\n\tasync write(frame: GatewayRuntimeLocalExecServerFrame): Promise<void> {\n\t\tconst write = this.#pendingWrite.then(async () => await writeFrame(this.#socket, frame));\n\t\tthis.#pendingWrite = write.catch(() => undefined);\n\t\tawait write;\n\t}\n}\n\nasync function endSocket(socket: Socket): Promise<void> {\n\tif (socket.destroyed) return;\n\tawait new Promise<void>((resolve) => socket.end(resolve));\n}\n\nasync function pumpOutput(props: {\n\treadonly frameWriter: GatewayRuntimeLocalExecFrameWriter;\n\treadonly kind: 'stderr' | 'stdout';\n\treadonly operation: GatewayRuntimeLocalExecOperation;\n\treadonly socket: Socket;\n}): Promise<void> {\n\tconst read =\n\t\tprops.kind === 'stdout'\n\t\t\t? props.operation.readStdout.bind(props.operation)\n\t\t\t: props.operation.readStderr.bind(props.operation);\n\tif (props.socket.destroyed) return;\n\tconst result = await read(MAXIMUM_STREAM_CHUNK_BYTES);\n\tif (result.kind === 'end') {\n\t\tawait props.frameWriter.write({ kind: `${props.kind}-end` });\n\t\treturn;\n\t}\n\tawait props.frameWriter.write({\n\t\tcontentBase64: Buffer.from(result.content).toString('base64'),\n\t\tkind: `${props.kind}-chunk`,\n\t});\n\tawait pumpOutput(props);\n}\n\nexport class GatewayRuntimeLocalExecTransport {\n\treadonly #helperArgv: readonly string[];\n\treadonly #reservationScheduler: GatewayRuntimeLocalExecReservationScheduler;\n\treadonly #reservationTimeoutMs: number;\n\treadonly #reservations = new Map<string, ReservationRecord>();\n\treadonly #temporaryDirectory: string;\n\n\tconstructor(options: GatewayRuntimeLocalExecTransportOptions = {}) {\n\t\tthis.#helperArgv =\n\t\t\toptions.helperArgv ??\n\t\t\tObject.freeze([\n\t\t\t\tprocess.execPath,\n\t\t\t\tfileURLToPath(\n\t\t\t\t\tnew URL(\n\t\t\t\t\t\t'./gateway-runtime-local-exec/gateway-runtime-local-exec-helper.js',\n\t\t\t\t\t\timport.meta.url,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t]);\n\t\tif (this.#helperArgv.length === 0)\n\t\t\tthrow new TypeError('Local exec helper argv cannot be empty.');\n\t\tthis.#reservationScheduler = options.reservationScheduler ?? defaultReservationScheduler;\n\t\tthis.#reservationTimeoutMs = validateReservationTimeout(\n\t\t\toptions.reservationTimeoutMs ?? DEFAULT_RESERVATION_TIMEOUT_MS,\n\t\t);\n\t\tthis.#temporaryDirectory = options.temporaryDirectory ?? DEFAULT_TEMPORARY_DIRECTORY;\n\t}\n\n\tasync reserve(operation: GatewayRuntimeLocalExecOperation): Promise<GatewayRuntimeLocalExecSpec> {\n\t\tconst reservationId = randomBytes(16).toString('hex');\n\t\tconst token = randomBytes(32).toString('base64url');\n\t\tconst reservationDirectory = await mkdtemp(\n\t\t\tjoin(this.#temporaryDirectory, 'agent-vm-local-exec-'),\n\t\t);\n\t\tawait chmod(reservationDirectory, 0o700);\n\t\tconst socketPath = join(reservationDirectory, 'relay.sock');\n\t\tconst server = createServer();\n\t\tconst expiry = this.#reservationScheduler.schedule(() => {\n\t\t\tvoid this.#expireReservation(reservationId).catch(() => undefined);\n\t\t}, this.#reservationTimeoutMs);\n\t\tconst reservation: ReservationRecord = {\n\t\t\tcancelExpiry: expiry.cancel,\n\t\t\tconsumed: false,\n\t\t\tfinalized: false,\n\t\t\toperation,\n\t\t\treservationDirectory,\n\t\t\treservationId,\n\t\t\tserver,\n\t\t\tsocketPath,\n\t\t\ttoken,\n\t\t};\n\t\tthis.#reservations.set(reservationId, reservation);\n\t\tserver.on('connection', (socket) => this.#acceptConnection(reservation, socket));\n\t\ttry {\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\tserver.once('error', reject);\n\t\t\t\tserver.listen(socketPath, () => {\n\t\t\t\t\tserver.off('error', reject);\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\tawait chmod(socketPath, 0o600);\n\t\t} catch (error: unknown) {\n\t\t\tawait this.#disposeReservation(reservation, true);\n\t\t\tthrow error;\n\t\t}\n\t\treturn {\n\t\t\targv: [...this.#helperArgv],\n\t\t\tenv: {\n\t\t\t\t[GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV]: socketPath,\n\t\t\t\t[GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV]: token,\n\t\t\t},\n\t\t\tfinalizeToken: { kind: 'gateway-runtime-local-exec', reservationId },\n\t\t\tstdinMode: 'pipe-open',\n\t\t};\n\t}\n\n\tasync finalize(token: unknown): Promise<void> {\n\t\tconst reservationId =\n\t\t\ttypeof token === 'object' && token !== null ? Reflect.get(token, 'reservationId') : undefined;\n\t\tif (\n\t\t\ttypeof token !== 'object' ||\n\t\t\ttoken === null ||\n\t\t\tReflect.get(token, 'kind') !== 'gateway-runtime-local-exec' ||\n\t\t\ttypeof reservationId !== 'string'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst reservation = this.#reservations.get(reservationId);\n\t\tif (reservation === undefined) return;\n\t\tawait this.#disposeReservation(reservation, !reservation.consumed);\n\t}\n\n\tasync close(): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.#reservations.values()].map(\n\t\t\t\tasync (reservation) => await this.#disposeReservation(reservation, true),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync #expireReservation(reservationId: string): Promise<void> {\n\t\tconst reservation = this.#reservations.get(reservationId);\n\t\tif (reservation === undefined || reservation.consumed) return;\n\t\tawait this.#disposeReservation(reservation, true);\n\t}\n\n\t#acceptConnection(reservation: ReservationRecord, socket: Socket): void {\n\t\tif (reservation.finalized || reservation.consumed) {\n\t\t\tvoid writeFrame(socket, {\n\t\t\t\tkind: 'rejected',\n\t\t\t\tmessage: 'Reservation already consumed.',\n\t\t\t})\n\t\t\t\t.catch(() => undefined)\n\t\t\t\t.finally(() => socket.destroy());\n\t\t\treturn;\n\t\t}\n\t\tconst decoder = new GatewayRuntimeLocalExecLineDecoder();\n\t\tconst connectionState = { authenticated: false };\n\t\tsocket.once('close', () => {\n\t\t\tif (connectionState.authenticated && !reservation.finalized) {\n\t\t\t\tvoid this.#disposeReservation(reservation, true).catch(() => undefined);\n\t\t\t}\n\t\t});\n\t\tsocket.on('data', (chunk: Buffer) => {\n\t\t\tsocket.pause();\n\t\t\tvoid this.#processClientFrames({\n\t\t\t\tchunk,\n\t\t\t\tconnectionState,\n\t\t\t\tdecoder,\n\t\t\t\treservation,\n\t\t\t\tsocket,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!socket.destroyed) socket.resume();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tvoid writeFrame(socket, {\n\t\t\t\t\t\tkind: 'rejected',\n\t\t\t\t\t\tmessage: error instanceof Error ? error.message : 'Invalid local exec frame.',\n\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\t\t.finally(() => socket.destroy());\n\t\t\t\t});\n\t\t});\n\t}\n\n\tasync #processClientFrames(props: {\n\t\treadonly chunk: Buffer;\n\t\treadonly connectionState: { authenticated: boolean };\n\t\treadonly decoder: GatewayRuntimeLocalExecLineDecoder;\n\t\treadonly reservation: ReservationRecord;\n\t\treadonly socket: Socket;\n\t}): Promise<void> {\n\t\t// oxlint-disable no-await-in-loop -- input frames must preserve order and backpressure.\n\t\tfor (const line of props.decoder.push(props.chunk)) {\n\t\t\tconst frame = parseGatewayRuntimeLocalExecClientFrame(line);\n\t\t\tif (!props.connectionState.authenticated) {\n\t\t\t\tif (\n\t\t\t\t\tframe.kind !== 'authenticate' ||\n\t\t\t\t\tframe.token !== props.reservation.token ||\n\t\t\t\t\tprops.reservation.consumed\n\t\t\t\t) {\n\t\t\t\t\tawait writeFrame(props.socket, {\n\t\t\t\t\t\tkind: 'rejected',\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\tframe.kind === 'authenticate' && frame.token === props.reservation.token\n\t\t\t\t\t\t\t\t? 'Reservation already consumed.'\n\t\t\t\t\t\t\t\t: 'Invalid reservation token.',\n\t\t\t\t\t});\n\t\t\t\t\tprops.socket.destroy();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprops.connectionState.authenticated = true;\n\t\t\t\tprops.reservation.consumed = true;\n\t\t\t\tprops.reservation.cancelExpiry();\n\t\t\t\tprops.reservation.socket = props.socket;\n\t\t\t\tprops.reservation.server.close();\n\t\t\t\tawait writeFrame(props.socket, { kind: 'accepted' });\n\t\t\t\tvoid this.#runAuthenticatedOperation(props.reservation, props.socket).catch(\n\t\t\t\t\t() => undefined,\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tswitch (frame.kind) {\n\t\t\t\tcase 'authenticate':\n\t\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Duplicate authentication frame.');\n\t\t\t\tcase 'cancel':\n\t\t\t\t\tawait props.reservation.operation.cancel();\n\t\t\t\t\treturn;\n\t\t\t\tcase 'stdin-chunk':\n\t\t\t\t\tawait props.reservation.operation.writeStdin(Buffer.from(frame.contentBase64, 'base64'));\n\t\t\t\t\tcontinue;\n\t\t\t\tcase 'stdin-end':\n\t\t\t\t\tawait props.reservation.operation.closeStdin();\n\t\t\t\t\tcontinue;\n\t\t\t\tcase 'terminal-resize':\n\t\t\t\t\tif (props.reservation.operation.resizeTerminal === undefined) {\n\t\t\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Terminal resize is unavailable.');\n\t\t\t\t\t}\n\t\t\t\t\tawait props.reservation.operation.resizeTerminal({\n\t\t\t\t\t\tcolumns: frame.columns,\n\t\t\t\t\t\trows: frame.rows,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// oxlint-enable no-await-in-loop\n\t}\n\n\tasync #runAuthenticatedOperation(reservation: ReservationRecord, socket: Socket): Promise<void> {\n\t\ttry {\n\t\t\tconst frameWriter = new GatewayRuntimeLocalExecFrameWriter(socket);\n\t\t\tconst [waitResult] = await Promise.all([\n\t\t\t\treservation.operation.wait(),\n\t\t\t\tpumpOutput({ frameWriter, kind: 'stdout', operation: reservation.operation, socket }),\n\t\t\t\tpumpOutput({ frameWriter, kind: 'stderr', operation: reservation.operation, socket }),\n\t\t\t]);\n\t\t\tif (!socket.destroyed) {\n\t\t\t\tawait frameWriter.write({ exitCode: waitResult.exitCode, kind: 'exited' });\n\t\t\t\tawait endSocket(socket);\n\t\t\t}\n\t\t} catch {\n\t\t\tsocket.destroy();\n\t\t} finally {\n\t\t\tawait this.#disposeReservation(reservation, false);\n\t\t}\n\t}\n\n\tasync #disposeReservation(reservation: ReservationRecord, cancel: boolean): Promise<void> {\n\t\tif (reservation.disposal !== undefined) return await reservation.disposal;\n\t\treservation.disposal = this.#disposeReservationOnce(reservation, cancel);\n\t\tawait reservation.disposal;\n\t}\n\n\tasync #disposeReservationOnce(reservation: ReservationRecord, cancel: boolean): Promise<void> {\n\t\tif (reservation.finalized) return;\n\t\treservation.finalized = true;\n\t\treservation.cancelExpiry();\n\t\tlet cancellationError: unknown;\n\t\tif (cancel) {\n\t\t\ttry {\n\t\t\t\tawait reservation.operation.cancel();\n\t\t\t} catch (error: unknown) {\n\t\t\t\tcancellationError = error;\n\t\t\t}\n\t\t}\n\t\tlet cleanupError: unknown;\n\t\ttry {\n\t\t\treservation.socket?.destroy();\n\t\t\tawait closeServer(reservation.server).catch(() => undefined);\n\t\t\tawait rm(reservation.reservationDirectory, { force: true, recursive: true });\n\t\t} catch (error: unknown) {\n\t\t\tcleanupError = error;\n\t\t} finally {\n\t\t\tthis.#reservations.delete(reservation.reservationId);\n\t\t}\n\t\tif (cancellationError !== undefined && cleanupError !== undefined) {\n\t\t\tthrow new AggregateError(\n\t\t\t\t[cancellationError, cleanupError],\n\t\t\t\t'Local exec cancellation and cleanup both failed.',\n\t\t\t);\n\t\t}\n\t\tif (cancellationError !== undefined) throw cancellationError;\n\t\tif (cleanupError !== undefined) throw cleanupError;\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"gateway-runtime-local-exec-transport-CV4xijjZ.js","names":["#buffer","#socket","#pendingWrite","#helperArgv","#reservationScheduler","#reservationTimeoutMs","#reservations","#temporaryDirectory","#expireReservation","#acceptConnection","#disposeReservation","#processClientFrames","#runAuthenticatedOperation","#disposeReservationOnce"],"sources":["../src/gateway-runtime-local-exec/gateway-runtime-local-exec-protocol.ts","../src/gateway-runtime-local-exec/gateway-runtime-local-exec-transport.ts"],"sourcesContent":["const MAXIMUM_LOCAL_EXEC_FRAME_BYTES = 128 * 1024;\nconst MAXIMUM_LOCAL_EXEC_STREAM_CHUNK_BYTES = 64 * 1024;\nconst MAXIMUM_LOCAL_EXEC_TOKEN_BYTES = 256;\n\nexport type GatewayRuntimeLocalExecClientFrame =\n\t| { readonly kind: 'authenticate'; readonly token: string }\n\t| { readonly kind: 'cancel' }\n\t| { readonly contentBase64: string; readonly kind: 'stdin-chunk' }\n\t| { readonly kind: 'stdin-end' }\n\t| { readonly columns: number; readonly kind: 'terminal-resize'; readonly rows: number };\n\nexport type GatewayRuntimeLocalExecServerFrame =\n\t| { readonly kind: 'accepted' }\n\t| { readonly contentBase64: string; readonly kind: 'stderr-chunk' }\n\t| { readonly kind: 'stderr-end' }\n\t| { readonly exitCode: number | null; readonly kind: 'exited' }\n\t| { readonly message: string; readonly kind: 'rejected' }\n\t| { readonly contentBase64: string; readonly kind: 'stdout-chunk' }\n\t| { readonly kind: 'stdout-end' };\n\nexport class GatewayRuntimeLocalExecProtocolError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'GatewayRuntimeLocalExecProtocolError';\n\t}\n}\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction requireExactKeys(value: Readonly<Record<string, unknown>>, keys: readonly string[]): void {\n\tconst actualKeys = Object.keys(value).toSorted();\n\tconst expectedKeys = keys.toSorted();\n\tif (\n\t\tactualKeys.length !== expectedKeys.length ||\n\t\tactualKeys.some((key, index) => key !== expectedKeys[index])\n\t) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame contains unexpected fields.');\n\t}\n}\n\nfunction requireString(value: unknown, fieldName: string): string {\n\tif (typeof value !== 'string' || value.length === 0) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t`Local exec frame field '${fieldName}' must be a non-empty string.`,\n\t\t);\n\t}\n\treturn value;\n}\n\nfunction requireBoundedToken(value: unknown): string {\n\tconst token = requireString(value, 'token');\n\tif (Buffer.byteLength(token, 'utf8') > MAXIMUM_LOCAL_EXEC_TOKEN_BYTES) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t'Local exec reservation token exceeds the byte limit.',\n\t\t);\n\t}\n\treturn token;\n}\n\nfunction requireCanonicalBase64(value: unknown): string {\n\tconst encoded = requireString(value, 'contentBase64');\n\tconst decoded = Buffer.from(encoded, 'base64');\n\tif (\n\t\tdecoded.byteLength > MAXIMUM_LOCAL_EXEC_STREAM_CHUNK_BYTES ||\n\t\tdecoded.toString('base64') !== encoded\n\t) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t'Local exec stream content must be canonical bounded base64.',\n\t\t);\n\t}\n\treturn encoded;\n}\n\nfunction requireTerminalDimension(value: unknown, fieldName: string): number {\n\tif (!Number.isSafeInteger(value) || (value as number) <= 0 || (value as number) > 1_000) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t`Local exec frame field '${fieldName}' must be a bounded positive integer.`,\n\t\t);\n\t}\n\treturn value as number;\n}\n\nfunction parseJsonObject(line: string): Readonly<Record<string, unknown>> {\n\tif (Buffer.byteLength(line, 'utf8') > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t}\n\tlet value: unknown;\n\ttry {\n\t\tvalue = JSON.parse(line);\n\t} catch (error: unknown) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\terror instanceof Error\n\t\t\t\t? `Local exec frame is not valid JSON: ${error.message}`\n\t\t\t\t: 'Local exec frame is not valid JSON.',\n\t\t);\n\t}\n\tif (!isRecord(value)) {\n\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame must be an object.');\n\t}\n\treturn value;\n}\n\nexport function encodeGatewayRuntimeLocalExecFrame(\n\tframe: GatewayRuntimeLocalExecClientFrame | GatewayRuntimeLocalExecServerFrame,\n): string {\n\treturn `${JSON.stringify(frame)}\\n`;\n}\n\nexport function parseGatewayRuntimeLocalExecClientFrame(\n\tline: string,\n): GatewayRuntimeLocalExecClientFrame {\n\tconst value = parseJsonObject(line);\n\tconst kind = requireString(value.kind, 'kind');\n\tswitch (kind) {\n\t\tcase 'authenticate':\n\t\t\trequireExactKeys(value, ['kind', 'token']);\n\t\t\treturn { kind, token: requireBoundedToken(value.token) };\n\t\tcase 'cancel':\n\t\tcase 'stdin-end':\n\t\t\trequireExactKeys(value, ['kind']);\n\t\t\treturn { kind };\n\t\tcase 'stdin-chunk':\n\t\t\trequireExactKeys(value, ['contentBase64', 'kind']);\n\t\t\treturn { contentBase64: requireCanonicalBase64(value.contentBase64), kind };\n\t\tcase 'terminal-resize':\n\t\t\trequireExactKeys(value, ['columns', 'kind', 'rows']);\n\t\t\treturn {\n\t\t\t\tcolumns: requireTerminalDimension(value.columns, 'columns'),\n\t\t\t\tkind,\n\t\t\t\trows: requireTerminalDimension(value.rows, 'rows'),\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(`Unknown local exec client frame '${kind}'.`);\n\t}\n}\n\nexport function parseGatewayRuntimeLocalExecServerFrame(\n\tline: string,\n): GatewayRuntimeLocalExecServerFrame {\n\tconst value = parseJsonObject(line);\n\tconst kind = requireString(value.kind, 'kind');\n\tswitch (kind) {\n\t\tcase 'accepted':\n\t\tcase 'stderr-end':\n\t\tcase 'stdout-end':\n\t\t\trequireExactKeys(value, ['kind']);\n\t\t\treturn { kind };\n\t\tcase 'stderr-chunk':\n\t\tcase 'stdout-chunk':\n\t\t\trequireExactKeys(value, ['contentBase64', 'kind']);\n\t\t\treturn { contentBase64: requireCanonicalBase64(value.contentBase64), kind };\n\t\tcase 'exited':\n\t\t\trequireExactKeys(value, ['exitCode', 'kind']);\n\t\t\tif (\n\t\t\t\tvalue.exitCode !== null &&\n\t\t\t\t(!Number.isSafeInteger(value.exitCode) ||\n\t\t\t\t\t(value.exitCode as number) < 0 ||\n\t\t\t\t\t(value.exitCode as number) > 255)\n\t\t\t) {\n\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t\t\t\"Local exec frame field 'exitCode' must be null or an integer from 0 through 255.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { exitCode: value.exitCode as number | null, kind };\n\t\tcase 'rejected':\n\t\t\trequireExactKeys(value, ['kind', 'message']);\n\t\t\treturn { kind, message: requireString(value.message, 'message') };\n\t\tdefault:\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(`Unknown local exec server frame '${kind}'.`);\n\t}\n}\n\nexport class GatewayRuntimeLocalExecLineDecoder {\n\t#buffer = Buffer.alloc(0);\n\n\tpush(chunk: Uint8Array): readonly string[] {\n\t\tif (chunk.byteLength + this.#buffer.byteLength > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError(\n\t\t\t\t'Local exec frame batch exceeds the byte limit.',\n\t\t\t);\n\t\t}\n\t\tthis.#buffer = Buffer.concat([this.#buffer, chunk]);\n\t\tconst lines: string[] = [];\n\t\tlet newlineIndex = this.#buffer.indexOf(0x0a);\n\t\twhile (newlineIndex >= 0) {\n\t\t\tconst line = this.#buffer.subarray(0, newlineIndex).toString('utf8');\n\t\t\tthis.#buffer = this.#buffer.subarray(newlineIndex + 1);\n\t\t\tif (Buffer.byteLength(line, 'utf8') > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t\t\t}\n\t\t\tif (line.length > 0) lines.push(line);\n\t\t\tnewlineIndex = this.#buffer.indexOf(0x0a);\n\t\t}\n\t\tif (this.#buffer.byteLength > MAXIMUM_LOCAL_EXEC_FRAME_BYTES) {\n\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Local exec frame exceeds the byte limit.');\n\t\t}\n\t\treturn lines;\n\t}\n}\n","import { randomBytes } from 'node:crypto';\nimport { chmod, mkdtemp, rm } from 'node:fs/promises';\nimport { createServer, type Server, type Socket } from 'node:net';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport {\n\tGatewayRuntimeLocalExecLineDecoder,\n\tGatewayRuntimeLocalExecProtocolError,\n\tencodeGatewayRuntimeLocalExecFrame,\n\tparseGatewayRuntimeLocalExecClientFrame,\n\ttype GatewayRuntimeLocalExecServerFrame,\n} from './gateway-runtime-local-exec-protocol.js';\n\nexport const GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV = 'AGENT_VM_LOCAL_EXEC_SOCKET';\nexport const GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV = 'AGENT_VM_LOCAL_EXEC_TOKEN';\n\nconst DEFAULT_RESERVATION_TIMEOUT_MS = 15_000;\nconst DEFAULT_TEMPORARY_DIRECTORY = '/tmp';\nconst MAXIMUM_STREAM_CHUNK_BYTES = 64 * 1024;\n\nexport type GatewayRuntimeLocalExecReadResult =\n\t| { readonly content: Uint8Array; readonly kind: 'chunk' }\n\t| { readonly kind: 'end' };\n\nexport interface GatewayRuntimeLocalExecOperation {\n\treadonly cancel: () => Promise<void>;\n\treadonly closeStdin: () => Promise<void>;\n\treadonly readStderr: (maximumBytes: number) => Promise<GatewayRuntimeLocalExecReadResult>;\n\treadonly readStdout: (maximumBytes: number) => Promise<GatewayRuntimeLocalExecReadResult>;\n\treadonly resizeTerminal?: (size: {\n\t\treadonly columns: number;\n\t\treadonly rows: number;\n\t}) => Promise<void>;\n\treadonly wait: () => Promise<{ readonly exitCode: number | null }>;\n\treadonly writeStdin: (content: Uint8Array) => Promise<void>;\n}\n\nexport interface GatewayRuntimeLocalExecReservationScheduler {\n\treadonly schedule: (callback: () => void, delayMs: number) => { readonly cancel: () => void };\n}\n\nexport interface GatewayRuntimeLocalExecFinalizeToken {\n\treadonly kind: 'gateway-runtime-local-exec';\n\treadonly reservationId: string;\n}\n\nexport interface GatewayRuntimeLocalExecSpec {\n\treadonly argv: readonly string[];\n\treadonly env: Readonly<Record<string, string>>;\n\treadonly finalizeToken: GatewayRuntimeLocalExecFinalizeToken;\n\treadonly stdinMode: 'pipe-open';\n}\n\nexport interface GatewayRuntimeLocalExecTransportOptions {\n\treadonly helperArgv?: readonly string[];\n\treadonly reservationScheduler?: GatewayRuntimeLocalExecReservationScheduler;\n\treadonly reservationTimeoutMs?: number;\n\treadonly temporaryDirectory?: string;\n}\n\ninterface ReservationRecord {\n\treadonly cancelExpiry: () => void;\n\treadonly operation: GatewayRuntimeLocalExecOperation;\n\treadonly reservationDirectory: string;\n\treadonly reservationId: string;\n\treadonly server: Server;\n\treadonly socketPath: string;\n\treadonly token: string;\n\tconsumed: boolean;\n\tdisposal?: Promise<void>;\n\tfinalized: boolean;\n\tsocket?: Socket;\n}\n\nconst defaultReservationScheduler: GatewayRuntimeLocalExecReservationScheduler = {\n\tschedule(callback, delayMs) {\n\t\tconst timeout = setTimeout(callback, delayMs);\n\t\treturn { cancel: () => clearTimeout(timeout) };\n\t},\n};\n\nfunction validateReservationTimeout(timeoutMs: number): number {\n\tif (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0 || timeoutMs > 60_000) {\n\t\tthrow new RangeError('Local exec reservation timeout must be an integer from 1 through 60000.');\n\t}\n\treturn timeoutMs;\n}\n\nasync function closeServer(server: Server): Promise<void> {\n\tif (!server.listening) return;\n\tawait new Promise<void>((resolve, reject) => {\n\t\tserver.close((error?: Error) => (error === undefined ? resolve() : reject(error)));\n\t});\n}\n\nasync function writeFrame(\n\tsocket: Socket,\n\tframe: GatewayRuntimeLocalExecServerFrame,\n): Promise<void> {\n\tconst encodedFrame = encodeGatewayRuntimeLocalExecFrame(frame);\n\tif (socket.write(encodedFrame)) return;\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst cleanup = (): void => {\n\t\t\tsocket.off('drain', handleDrain);\n\t\t\tsocket.off('error', handleError);\n\t\t};\n\t\tconst handleDrain = (): void => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t};\n\t\tconst handleError = (error: Error): void => {\n\t\t\tcleanup();\n\t\t\treject(error);\n\t\t};\n\t\tsocket.once('drain', handleDrain);\n\t\tsocket.once('error', handleError);\n\t});\n}\n\nclass GatewayRuntimeLocalExecFrameWriter {\n\t#pendingWrite = Promise.resolve();\n\treadonly #socket: Socket;\n\n\tconstructor(socket: Socket) {\n\t\tthis.#socket = socket;\n\t}\n\n\tasync write(frame: GatewayRuntimeLocalExecServerFrame): Promise<void> {\n\t\tconst write = this.#pendingWrite.then(async () => await writeFrame(this.#socket, frame));\n\t\tthis.#pendingWrite = write.catch(() => undefined);\n\t\tawait write;\n\t}\n}\n\nasync function endSocket(socket: Socket): Promise<void> {\n\tif (socket.destroyed) return;\n\tawait new Promise<void>((resolve) => socket.end(resolve));\n}\n\nasync function pumpOutput(props: {\n\treadonly frameWriter: GatewayRuntimeLocalExecFrameWriter;\n\treadonly kind: 'stderr' | 'stdout';\n\treadonly operation: GatewayRuntimeLocalExecOperation;\n\treadonly socket: Socket;\n}): Promise<void> {\n\tconst read =\n\t\tprops.kind === 'stdout'\n\t\t\t? props.operation.readStdout.bind(props.operation)\n\t\t\t: props.operation.readStderr.bind(props.operation);\n\tif (props.socket.destroyed) return;\n\tconst result = await read(MAXIMUM_STREAM_CHUNK_BYTES);\n\tif (result.kind === 'end') {\n\t\tawait props.frameWriter.write({ kind: `${props.kind}-end` });\n\t\treturn;\n\t}\n\tawait props.frameWriter.write({\n\t\tcontentBase64: Buffer.from(result.content).toString('base64'),\n\t\tkind: `${props.kind}-chunk`,\n\t});\n\tawait pumpOutput(props);\n}\n\nexport class GatewayRuntimeLocalExecTransport {\n\treadonly #helperArgv: readonly string[];\n\treadonly #reservationScheduler: GatewayRuntimeLocalExecReservationScheduler;\n\treadonly #reservationTimeoutMs: number;\n\treadonly #reservations = new Map<string, ReservationRecord>();\n\treadonly #temporaryDirectory: string;\n\n\tconstructor(options: GatewayRuntimeLocalExecTransportOptions = {}) {\n\t\tthis.#helperArgv =\n\t\t\toptions.helperArgv ??\n\t\t\tObject.freeze([\n\t\t\t\tprocess.execPath,\n\t\t\t\tfileURLToPath(\n\t\t\t\t\tnew URL(\n\t\t\t\t\t\t'./gateway-runtime-local-exec/gateway-runtime-local-exec-helper.js',\n\t\t\t\t\t\timport.meta.url,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t]);\n\t\tif (this.#helperArgv.length === 0)\n\t\t\tthrow new TypeError('Local exec helper argv cannot be empty.');\n\t\tthis.#reservationScheduler = options.reservationScheduler ?? defaultReservationScheduler;\n\t\tthis.#reservationTimeoutMs = validateReservationTimeout(\n\t\t\toptions.reservationTimeoutMs ?? DEFAULT_RESERVATION_TIMEOUT_MS,\n\t\t);\n\t\tthis.#temporaryDirectory = options.temporaryDirectory ?? DEFAULT_TEMPORARY_DIRECTORY;\n\t}\n\n\tasync reserve(operation: GatewayRuntimeLocalExecOperation): Promise<GatewayRuntimeLocalExecSpec> {\n\t\tconst reservationId = randomBytes(16).toString('hex');\n\t\tconst token = randomBytes(32).toString('base64url');\n\t\tconst reservationDirectory = await mkdtemp(\n\t\t\tjoin(this.#temporaryDirectory, 'agent-vm-local-exec-'),\n\t\t);\n\t\tawait chmod(reservationDirectory, 0o700);\n\t\tconst socketPath = join(reservationDirectory, 'relay.sock');\n\t\tconst server = createServer();\n\t\tconst expiry = this.#reservationScheduler.schedule(() => {\n\t\t\tvoid this.#expireReservation(reservationId).catch(() => undefined);\n\t\t}, this.#reservationTimeoutMs);\n\t\tconst reservation: ReservationRecord = {\n\t\t\tcancelExpiry: expiry.cancel,\n\t\t\tconsumed: false,\n\t\t\tfinalized: false,\n\t\t\toperation,\n\t\t\treservationDirectory,\n\t\t\treservationId,\n\t\t\tserver,\n\t\t\tsocketPath,\n\t\t\ttoken,\n\t\t};\n\t\tthis.#reservations.set(reservationId, reservation);\n\t\tserver.on('connection', (socket) => this.#acceptConnection(reservation, socket));\n\t\ttry {\n\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\tserver.once('error', reject);\n\t\t\t\tserver.listen(socketPath, () => {\n\t\t\t\t\tserver.off('error', reject);\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\tawait chmod(socketPath, 0o600);\n\t\t} catch (error: unknown) {\n\t\t\tawait this.#disposeReservation(reservation, true);\n\t\t\tthrow error;\n\t\t}\n\t\treturn {\n\t\t\targv: [...this.#helperArgv],\n\t\t\tenv: {\n\t\t\t\t[GATEWAY_RUNTIME_LOCAL_EXEC_SOCKET_ENV]: socketPath,\n\t\t\t\t[GATEWAY_RUNTIME_LOCAL_EXEC_TOKEN_ENV]: token,\n\t\t\t},\n\t\t\tfinalizeToken: { kind: 'gateway-runtime-local-exec', reservationId },\n\t\t\tstdinMode: 'pipe-open',\n\t\t};\n\t}\n\n\tasync finalize(token: unknown): Promise<void> {\n\t\tconst reservationId =\n\t\t\ttypeof token === 'object' && token !== null ? Reflect.get(token, 'reservationId') : undefined;\n\t\tif (\n\t\t\ttypeof token !== 'object' ||\n\t\t\ttoken === null ||\n\t\t\tReflect.get(token, 'kind') !== 'gateway-runtime-local-exec' ||\n\t\t\ttypeof reservationId !== 'string'\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst reservation = this.#reservations.get(reservationId);\n\t\tif (reservation === undefined) return;\n\t\tawait this.#disposeReservation(reservation, !reservation.consumed);\n\t}\n\n\tasync close(): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.#reservations.values()].map(\n\t\t\t\tasync (reservation) => await this.#disposeReservation(reservation, true),\n\t\t\t),\n\t\t);\n\t}\n\n\tasync #expireReservation(reservationId: string): Promise<void> {\n\t\tconst reservation = this.#reservations.get(reservationId);\n\t\tif (reservation === undefined || reservation.consumed) return;\n\t\tawait this.#disposeReservation(reservation, true);\n\t}\n\n\t#acceptConnection(reservation: ReservationRecord, socket: Socket): void {\n\t\tif (reservation.finalized || reservation.consumed) {\n\t\t\tvoid writeFrame(socket, {\n\t\t\t\tkind: 'rejected',\n\t\t\t\tmessage: 'Reservation already consumed.',\n\t\t\t})\n\t\t\t\t.catch(() => undefined)\n\t\t\t\t.finally(() => socket.destroy());\n\t\t\treturn;\n\t\t}\n\t\tconst decoder = new GatewayRuntimeLocalExecLineDecoder();\n\t\tconst connectionState = { authenticated: false };\n\t\tsocket.once('close', () => {\n\t\t\tif (connectionState.authenticated && !reservation.finalized) {\n\t\t\t\tvoid this.#disposeReservation(reservation, true).catch(() => undefined);\n\t\t\t}\n\t\t});\n\t\tsocket.on('data', (chunk: Buffer) => {\n\t\t\tsocket.pause();\n\t\t\tvoid this.#processClientFrames({\n\t\t\t\tchunk,\n\t\t\t\tconnectionState,\n\t\t\t\tdecoder,\n\t\t\t\treservation,\n\t\t\t\tsocket,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!socket.destroyed) socket.resume();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tvoid writeFrame(socket, {\n\t\t\t\t\t\tkind: 'rejected',\n\t\t\t\t\t\tmessage: error instanceof Error ? error.message : 'Invalid local exec frame.',\n\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\t\t.finally(() => socket.destroy());\n\t\t\t\t});\n\t\t});\n\t}\n\n\tasync #processClientFrames(props: {\n\t\treadonly chunk: Buffer;\n\t\treadonly connectionState: { authenticated: boolean };\n\t\treadonly decoder: GatewayRuntimeLocalExecLineDecoder;\n\t\treadonly reservation: ReservationRecord;\n\t\treadonly socket: Socket;\n\t}): Promise<void> {\n\t\t// oxlint-disable no-await-in-loop -- input frames must preserve order and backpressure.\n\t\tfor (const line of props.decoder.push(props.chunk)) {\n\t\t\tconst frame = parseGatewayRuntimeLocalExecClientFrame(line);\n\t\t\tif (!props.connectionState.authenticated) {\n\t\t\t\tif (\n\t\t\t\t\tframe.kind !== 'authenticate' ||\n\t\t\t\t\tframe.token !== props.reservation.token ||\n\t\t\t\t\tprops.reservation.consumed\n\t\t\t\t) {\n\t\t\t\t\tawait writeFrame(props.socket, {\n\t\t\t\t\t\tkind: 'rejected',\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\tframe.kind === 'authenticate' && frame.token === props.reservation.token\n\t\t\t\t\t\t\t\t? 'Reservation already consumed.'\n\t\t\t\t\t\t\t\t: 'Invalid reservation token.',\n\t\t\t\t\t});\n\t\t\t\t\tprops.socket.destroy();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprops.connectionState.authenticated = true;\n\t\t\t\tprops.reservation.consumed = true;\n\t\t\t\tprops.reservation.cancelExpiry();\n\t\t\t\tprops.reservation.socket = props.socket;\n\t\t\t\tprops.reservation.server.close();\n\t\t\t\tawait writeFrame(props.socket, { kind: 'accepted' });\n\t\t\t\tvoid this.#runAuthenticatedOperation(props.reservation, props.socket).catch(\n\t\t\t\t\t() => undefined,\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tswitch (frame.kind) {\n\t\t\t\tcase 'authenticate':\n\t\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Duplicate authentication frame.');\n\t\t\t\tcase 'cancel':\n\t\t\t\t\tawait props.reservation.operation.cancel();\n\t\t\t\t\treturn;\n\t\t\t\tcase 'stdin-chunk':\n\t\t\t\t\tawait props.reservation.operation.writeStdin(Buffer.from(frame.contentBase64, 'base64'));\n\t\t\t\t\tcontinue;\n\t\t\t\tcase 'stdin-end':\n\t\t\t\t\tawait props.reservation.operation.closeStdin();\n\t\t\t\t\tcontinue;\n\t\t\t\tcase 'terminal-resize':\n\t\t\t\t\tif (props.reservation.operation.resizeTerminal === undefined) {\n\t\t\t\t\t\tthrow new GatewayRuntimeLocalExecProtocolError('Terminal resize is unavailable.');\n\t\t\t\t\t}\n\t\t\t\t\tawait props.reservation.operation.resizeTerminal({\n\t\t\t\t\t\tcolumns: frame.columns,\n\t\t\t\t\t\trows: frame.rows,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// oxlint-enable no-await-in-loop\n\t}\n\n\tasync #runAuthenticatedOperation(reservation: ReservationRecord, socket: Socket): Promise<void> {\n\t\ttry {\n\t\t\tconst frameWriter = new GatewayRuntimeLocalExecFrameWriter(socket);\n\t\t\tconst [waitResult] = await Promise.all([\n\t\t\t\treservation.operation.wait(),\n\t\t\t\tpumpOutput({ frameWriter, kind: 'stdout', operation: reservation.operation, socket }),\n\t\t\t\tpumpOutput({ frameWriter, kind: 'stderr', operation: reservation.operation, socket }),\n\t\t\t]);\n\t\t\tif (!socket.destroyed) {\n\t\t\t\tawait frameWriter.write({ exitCode: waitResult.exitCode, kind: 'exited' });\n\t\t\t\tawait endSocket(socket);\n\t\t\t}\n\t\t} catch {\n\t\t\tsocket.destroy();\n\t\t} finally {\n\t\t\tawait this.#disposeReservation(reservation, false);\n\t\t}\n\t}\n\n\tasync #disposeReservation(reservation: ReservationRecord, cancel: boolean): Promise<void> {\n\t\tif (reservation.disposal !== undefined) return await reservation.disposal;\n\t\treservation.disposal = this.#disposeReservationOnce(reservation, cancel);\n\t\tawait reservation.disposal;\n\t}\n\n\tasync #disposeReservationOnce(reservation: ReservationRecord, cancel: boolean): Promise<void> {\n\t\tif (reservation.finalized) return;\n\t\treservation.finalized = true;\n\t\treservation.cancelExpiry();\n\t\tlet cancellationError: unknown;\n\t\tif (cancel) {\n\t\t\ttry {\n\t\t\t\tawait reservation.operation.cancel();\n\t\t\t} catch (error: unknown) {\n\t\t\t\tcancellationError = error;\n\t\t\t}\n\t\t}\n\t\tlet cleanupError: unknown;\n\t\ttry {\n\t\t\treservation.socket?.destroy();\n\t\t\tawait closeServer(reservation.server).catch(() => undefined);\n\t\t\tawait rm(reservation.reservationDirectory, { force: true, recursive: true });\n\t\t} catch (error: unknown) {\n\t\t\tcleanupError = error;\n\t\t} finally {\n\t\t\tthis.#reservations.delete(reservation.reservationId);\n\t\t}\n\t\tif (cancellationError !== undefined && cleanupError !== undefined) {\n\t\t\tthrow new AggregateError(\n\t\t\t\t[cancellationError, cleanupError],\n\t\t\t\t'Local exec cancellation and cleanup both failed.',\n\t\t\t);\n\t\t}\n\t\tif (cancellationError !== undefined) throw cancellationError;\n\t\tif (cleanupError !== undefined) throw cleanupError;\n\t}\n}\n"],"mappings":"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"}