@fabric-harness/sdk 2.1.2 → 2.2.0

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 (153) hide show
  1. package/NOTICE +11 -0
  2. package/dist/agent-definition.d.ts +8 -0
  3. package/dist/agent-definition.d.ts.map +1 -1
  4. package/dist/agent-definition.js +27 -4
  5. package/dist/agent-definition.js.map +1 -1
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +3 -0
  8. package/dist/agent.js.map +1 -1
  9. package/dist/approval-notifier.d.ts +63 -0
  10. package/dist/approval-notifier.d.ts.map +1 -0
  11. package/dist/approval-notifier.js +152 -0
  12. package/dist/approval-notifier.js.map +1 -0
  13. package/dist/attachment-store.d.ts +12 -0
  14. package/dist/attachment-store.d.ts.map +1 -1
  15. package/dist/attachment-store.js +61 -3
  16. package/dist/attachment-store.js.map +1 -1
  17. package/dist/channel-contract.d.ts +29 -0
  18. package/dist/channel-contract.d.ts.map +1 -0
  19. package/dist/channel-contract.js +153 -0
  20. package/dist/channel-contract.js.map +1 -0
  21. package/dist/channel-runtime.d.ts +7 -0
  22. package/dist/channel-runtime.d.ts.map +1 -0
  23. package/dist/channel-runtime.js +6 -0
  24. package/dist/channel-runtime.js.map +1 -0
  25. package/dist/conversation-projection.d.ts.map +1 -1
  26. package/dist/conversation-projection.js +12 -5
  27. package/dist/conversation-projection.js.map +1 -1
  28. package/dist/conversation-stream.d.ts +3 -0
  29. package/dist/conversation-stream.d.ts.map +1 -1
  30. package/dist/conversation-stream.js +14 -0
  31. package/dist/conversation-stream.js.map +1 -1
  32. package/dist/cost-budget.d.ts +5 -0
  33. package/dist/cost-budget.d.ts.map +1 -1
  34. package/dist/cost-budget.js +20 -0
  35. package/dist/cost-budget.js.map +1 -1
  36. package/dist/error.d.ts +16 -4
  37. package/dist/error.d.ts.map +1 -1
  38. package/dist/error.js +30 -5
  39. package/dist/error.js.map +1 -1
  40. package/dist/filesystem.d.ts +3 -3
  41. package/dist/filesystem.d.ts.map +1 -1
  42. package/dist/in-memory-submission-store.d.ts +4 -0
  43. package/dist/in-memory-submission-store.d.ts.map +1 -1
  44. package/dist/in-memory-submission-store.js +45 -0
  45. package/dist/in-memory-submission-store.js.map +1 -1
  46. package/dist/index.d.ts +24 -9
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +11 -4
  49. package/dist/index.js.map +1 -1
  50. package/dist/job-invoke.d.ts +43 -0
  51. package/dist/job-invoke.d.ts.map +1 -0
  52. package/dist/job-invoke.js +56 -0
  53. package/dist/job-invoke.js.map +1 -0
  54. package/dist/mcp.d.ts +53 -0
  55. package/dist/mcp.d.ts.map +1 -1
  56. package/dist/mcp.js +145 -20
  57. package/dist/mcp.js.map +1 -1
  58. package/dist/model.d.ts +22 -8
  59. package/dist/model.d.ts.map +1 -1
  60. package/dist/model.js +465 -230
  61. package/dist/model.js.map +1 -1
  62. package/dist/network-enforcement.d.ts +16 -0
  63. package/dist/network-enforcement.d.ts.map +1 -0
  64. package/dist/network-enforcement.js +36 -0
  65. package/dist/network-enforcement.js.map +1 -0
  66. package/dist/observability.d.ts +36 -0
  67. package/dist/observability.d.ts.map +1 -0
  68. package/dist/observability.js +89 -0
  69. package/dist/observability.js.map +1 -0
  70. package/dist/operational-metrics.d.ts +53 -0
  71. package/dist/operational-metrics.d.ts.map +1 -0
  72. package/dist/operational-metrics.js +119 -0
  73. package/dist/operational-metrics.js.map +1 -0
  74. package/dist/otel-observer.d.ts +3 -0
  75. package/dist/otel-observer.d.ts.map +1 -1
  76. package/dist/otel-observer.js +21 -9
  77. package/dist/otel-observer.js.map +1 -1
  78. package/dist/persistence-bundle-contract.d.ts +7 -0
  79. package/dist/persistence-bundle-contract.d.ts.map +1 -0
  80. package/dist/persistence-bundle-contract.js +86 -0
  81. package/dist/persistence-bundle-contract.js.map +1 -0
  82. package/dist/persistence-bundle.d.ts +56 -0
  83. package/dist/persistence-bundle.d.ts.map +1 -0
  84. package/dist/persistence-bundle.js +2 -0
  85. package/dist/persistence-bundle.js.map +1 -0
  86. package/dist/persistent-agent.d.ts +1 -1
  87. package/dist/persistent-agent.js +1 -1
  88. package/dist/policied-sandbox.d.ts +3 -0
  89. package/dist/policied-sandbox.d.ts.map +1 -1
  90. package/dist/policied-sandbox.js +25 -16
  91. package/dist/policied-sandbox.js.map +1 -1
  92. package/dist/policy.d.ts +8 -1
  93. package/dist/policy.d.ts.map +1 -1
  94. package/dist/policy.js +104 -19
  95. package/dist/policy.js.map +1 -1
  96. package/dist/redaction.js +1 -1
  97. package/dist/redaction.js.map +1 -1
  98. package/dist/sandbox-ref.d.ts +37 -2
  99. package/dist/sandbox-ref.d.ts.map +1 -1
  100. package/dist/sandbox-ref.js +164 -3
  101. package/dist/sandbox-ref.js.map +1 -1
  102. package/dist/sandbox.d.ts +26 -0
  103. package/dist/sandbox.d.ts.map +1 -1
  104. package/dist/sandbox.js +67 -19
  105. package/dist/sandbox.js.map +1 -1
  106. package/dist/secret-provider.d.ts +24 -0
  107. package/dist/secret-provider.d.ts.map +1 -0
  108. package/dist/secret-provider.js +36 -0
  109. package/dist/secret-provider.js.map +1 -0
  110. package/dist/session-submission-executor.d.ts +15 -0
  111. package/dist/session-submission-executor.d.ts.map +1 -0
  112. package/dist/session-submission-executor.js +79 -0
  113. package/dist/session-submission-executor.js.map +1 -0
  114. package/dist/session.d.ts +1 -1
  115. package/dist/session.d.ts.map +1 -1
  116. package/dist/session.js +24 -10
  117. package/dist/session.js.map +1 -1
  118. package/dist/store.d.ts +3 -0
  119. package/dist/store.d.ts.map +1 -1
  120. package/dist/store.js +28 -0
  121. package/dist/store.js.map +1 -1
  122. package/dist/strict.d.ts +20 -7
  123. package/dist/strict.d.ts.map +1 -1
  124. package/dist/strict.js +9 -3
  125. package/dist/strict.js.map +1 -1
  126. package/dist/submission-context.d.ts +5 -0
  127. package/dist/submission-context.d.ts.map +1 -1
  128. package/dist/submission-context.js.map +1 -1
  129. package/dist/submission-runner.d.ts +4 -0
  130. package/dist/submission-runner.d.ts.map +1 -1
  131. package/dist/submission-runner.js +13 -4
  132. package/dist/submission-runner.js.map +1 -1
  133. package/dist/submission-store.d.ts +6 -0
  134. package/dist/submission-store.d.ts.map +1 -1
  135. package/dist/submission-store.js.map +1 -1
  136. package/dist/testing-contracts.d.ts +4 -0
  137. package/dist/testing-contracts.d.ts.map +1 -1
  138. package/dist/testing-contracts.js +2 -0
  139. package/dist/testing-contracts.js.map +1 -1
  140. package/dist/tools.d.ts +4 -0
  141. package/dist/tools.d.ts.map +1 -1
  142. package/dist/tools.js.map +1 -1
  143. package/dist/types.d.ts +4 -2
  144. package/dist/types.d.ts.map +1 -1
  145. package/dist/types.js.map +1 -1
  146. package/dist/virtual-sandbox.d.ts.map +1 -1
  147. package/dist/virtual-sandbox.js +9 -2
  148. package/dist/virtual-sandbox.js.map +1 -1
  149. package/package.json +12 -6
  150. package/dist/lite.d.ts +0 -19
  151. package/dist/lite.d.ts.map +0 -1
  152. package/dist/lite.js +0 -19
  153. package/dist/lite.js.map +0 -1
package/dist/policy.js CHANGED
@@ -33,8 +33,12 @@ export function evaluateCommandPolicy(command, policy) {
33
33
  if (!policy || !command)
34
34
  return { allowed: true };
35
35
  const structured = evaluateNamedPolicy(command, policy.commandPolicy, 'command', policy);
36
- if (structured)
36
+ if (structured) {
37
+ if (structured.allowed && policy.commandPolicy?.allow?.length && hasShellIndirection(command) && !policy.commandPolicy.allow.includes(command)) {
38
+ return { allowed: false, reason: `Command with shell operators requires an exact allow entry: ${command}` };
39
+ }
37
40
  return structured;
41
+ }
38
42
  const approvalPattern = firstMatchingPattern(command, policy.approvals?.requiredFor, { loose: true });
39
43
  if (approvalPattern) {
40
44
  return {
@@ -47,8 +51,12 @@ export function evaluateCommandPolicy(command, policy) {
47
51
  }
48
52
  if (!policy.commands || policy.commands.length === 0)
49
53
  return { allowed: true };
50
- if (policy.commands.some((pattern) => matchesPattern(command, pattern, { loose: true })))
54
+ if (policy.commands.some((pattern) => matchesPattern(command, pattern, { loose: true }))) {
55
+ if (hasShellIndirection(command) && !policy.commands.includes(command)) {
56
+ return { allowed: false, reason: `Command with shell operators requires an exact allow entry: ${command}` };
57
+ }
51
58
  return { allowed: true };
59
+ }
52
60
  return { allowed: false, reason: `Command denied by policy: ${command}` };
53
61
  }
54
62
  /**
@@ -68,6 +76,9 @@ export function evaluateNetworkPolicy(input, policy) {
68
76
  if (network.mode === 'none') {
69
77
  return { allowed: false, reason: 'Network access denied by policy: mode=none' };
70
78
  }
79
+ if (network.allowPrivateNetwork !== true && isPrivateNetworkHost(url.hostname)) {
80
+ return { allowed: false, reason: `Private network host denied by policy: ${url.hostname}` };
81
+ }
71
82
  const host = url.host;
72
83
  if (network.mode === 'denylist') {
73
84
  const matched = firstMatchingPattern(host, network.hosts, { loose: true });
@@ -88,29 +99,103 @@ export function evaluateNetworkPolicy(input, policy) {
88
99
  // No mode configured and no hosts — fail-open (policy is purely a protocol filter).
89
100
  return { allowed: true };
90
101
  }
91
- /**
92
- * Wrap a `fetch`-like function with `CapabilityPolicy` enforcement. Tools and
93
- * connectors that make outbound HTTP should accept a custom `fetch` and pass
94
- * the result of `policiedFetch(fetch, policy)`.
95
- *
96
- * Throws a `FabricError` (`POLICY_DENIED`) when a request violates the policy;
97
- * never sends a forbidden request.
98
- */
99
- export function policiedFetch(fetchImpl, policy) {
102
+ export function policiedFetch(fetchImpl, policy, options = {}) {
100
103
  if (!policy?.network)
101
104
  return fetchImpl;
102
105
  return (async (input, init) => {
103
- const decision = evaluateNetworkPolicy(input, policy);
104
- if (!decision.allowed) {
105
- throw new FabricError({
106
- code: 'POLICY_DENIED',
107
- message: decision.reason ?? 'Network request denied by policy',
108
- ...(decision.matchedPattern ? { details: { matchedPattern: decision.matchedPattern } } : {}),
109
- });
106
+ let current = input;
107
+ let currentInit = init;
108
+ for (let redirects = 0; redirects <= 10; redirects += 1) {
109
+ assertNetworkAllowed(current, policy);
110
+ await assertDnsAnswersAllowed(current, policy, options);
111
+ const response = await fetchImpl(current, { ...currentInit, redirect: 'manual' });
112
+ if (![301, 302, 303, 307, 308].includes(response.status))
113
+ return response;
114
+ const location = response.headers.get('location');
115
+ if (!location)
116
+ return response;
117
+ if (redirects === 10)
118
+ throw new FabricError({ code: 'POLICY_DENIED', message: 'Network redirect limit exceeded.' });
119
+ const base = typeof current === 'string' ? current : current instanceof URL ? current.href : current.url;
120
+ current = new URL(location, base);
121
+ if (response.status === 303 || ((response.status === 301 || response.status === 302) && currentInit?.method?.toUpperCase() === 'POST')) {
122
+ const { body: _body, ...withoutBody } = currentInit ?? {};
123
+ currentInit = { ...withoutBody, method: 'GET' };
124
+ }
110
125
  }
111
- return fetchImpl(input, init);
126
+ throw new FabricError({ code: 'POLICY_DENIED', message: 'Network redirect limit exceeded.' });
112
127
  });
113
128
  }
129
+ async function assertDnsAnswersAllowed(input, policy, options) {
130
+ if (!policy.network?.resolveDns || policy.network.allowPrivateNetwork === true)
131
+ return;
132
+ const url = typeof input === 'string' ? new URL(input) : 'url' in input ? new URL(input.url) : input;
133
+ if (isIpAddress(url.hostname))
134
+ return;
135
+ const resolve = options.resolveHostname ?? defaultResolveHostname;
136
+ const addresses = await resolve(url.hostname);
137
+ if (addresses.length === 0) {
138
+ throw new FabricError({ code: 'POLICY_DENIED', message: `Network DNS resolution returned no addresses: ${url.hostname}` });
139
+ }
140
+ const privateAnswer = addresses.find(isPrivateNetworkHost);
141
+ if (privateAnswer) {
142
+ throw new FabricError({
143
+ code: 'POLICY_DENIED',
144
+ message: `Network DNS answer denied by policy: ${url.hostname} resolved to ${privateAnswer}`,
145
+ });
146
+ }
147
+ }
148
+ async function defaultResolveHostname(hostname) {
149
+ try {
150
+ const dns = await import('node:dns/promises');
151
+ return (await dns.lookup(hostname, { all: true, verbatim: true })).map((entry) => entry.address);
152
+ }
153
+ catch (error) {
154
+ throw new FabricError({
155
+ code: 'POLICY_DENIED',
156
+ message: `Network DNS verification failed for ${hostname}: ${error instanceof Error ? error.message : String(error)}`,
157
+ });
158
+ }
159
+ }
160
+ function isIpAddress(hostname) {
161
+ const host = hostname.toLowerCase().replace(/^\[|\]$/g, '');
162
+ return /^\d{1,3}(?:\.\d{1,3}){3}$/.test(host) || host.includes(':');
163
+ }
164
+ function assertNetworkAllowed(input, policy) {
165
+ const decision = evaluateNetworkPolicy(input, policy);
166
+ if (decision.allowed)
167
+ return;
168
+ throw new FabricError({
169
+ code: 'POLICY_DENIED',
170
+ message: decision.reason ?? 'Network request denied by policy',
171
+ ...(decision.matchedPattern ? { details: { matchedPattern: decision.matchedPattern } } : {}),
172
+ });
173
+ }
174
+ function hasShellIndirection(command) {
175
+ return /(?:&&|\|\||[;|\n`]|\$\(|(?:^|\s)[<>](?:\s|$))/.test(command);
176
+ }
177
+ function isPrivateNetworkHost(hostname) {
178
+ const host = hostname.toLowerCase().replace(/^\[|\]$/g, '');
179
+ if (host === 'localhost' || host.endsWith('.localhost') || host === '::1')
180
+ return true;
181
+ if (/^::ffff:\d{1,3}(?:\.\d{1,3}){3}$/.test(host))
182
+ return isPrivateNetworkHost(host.slice('::ffff:'.length));
183
+ const mapped = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i.exec(host);
184
+ if (mapped?.[1] && mapped[2]) {
185
+ const high = Number.parseInt(mapped[1], 16);
186
+ const low = Number.parseInt(mapped[2], 16);
187
+ return isPrivateNetworkHost(`${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`);
188
+ }
189
+ if (/^(?:fc|fd)[0-9a-f]{2}:|^fe[89ab][0-9a-f]:/i.test(host))
190
+ return true;
191
+ const parts = host.split('.').map(Number);
192
+ if (parts.length !== 4 || parts.some((part) => !Number.isInteger(part) || part < 0 || part > 255))
193
+ return false;
194
+ return parts[0] === 0 || parts[0] === 10 || parts[0] === 127 ||
195
+ (parts[0] === 169 && parts[1] === 254) ||
196
+ (parts[0] === 172 && (parts[1] ?? 0) >= 16 && (parts[1] ?? 0) <= 31) ||
197
+ (parts[0] === 192 && parts[1] === 168);
198
+ }
114
199
  export function clampCommandTimeout(timeout, policy) {
115
200
  if (!policy?.maxCommandTimeoutMs)
116
201
  return timeout;
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
package/dist/redaction.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const DEFAULT_SECRET_KEY_PATTERN = /(?:api[_-]?key|token|secret|password|passwd|credential|authorization|client[_-]?key|private[_-]?key|cert(?:ificate)?)/i;
2
- const DEFAULT_SECRET_VALUE_PATTERN = /(?:Bearer\s+[A-Za-z0-9._~+/=-]+|sk-[A-Za-z0-9]{16,}|[A-Za-z0-9_\-]{24,}\.[A-Za-z0-9_\-]{12,}\.[A-Za-z0-9_\-]{12,})/g;
2
+ const DEFAULT_SECRET_VALUE_PATTERN = /(?:Bearer\s+[A-Za-z0-9._~+/=-]+|sk-[A-Za-z0-9]{8,}|(?:api[_-]?key|token|secret|password|credential)\s*(?:=|:|\bis\b)?\s+[A-Za-z0-9._~+/=-]{4,}|[A-Za-z0-9_\-]{24,}\.[A-Za-z0-9_\-]{12,}\.[A-Za-z0-9_\-]{12,})/gi;
3
3
  export function redactText(value, options = {}) {
4
4
  const replacement = options.replacement ?? '[REDACTED]';
5
5
  let redacted = value.replace(options.secretValuePattern ?? DEFAULT_SECRET_VALUE_PATTERN, replacement);
@@ -1 +1 @@
1
- {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAEA,MAAM,0BAA0B,GAAG,wHAAwH,CAAC;AAC5J,MAAM,4BAA4B,GAAG,qHAAqH,CAAC;AAS3J,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,UAA4B,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,EAAE,WAAW,CAAC,CAAC;IACtG,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;QACrD,IAAI,MAAM;YAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,KAAQ,EAAE,UAA4B,EAAE;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IAEnC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,GAAY,EAAW,EAAE;QACrD,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,WAAW,CAAC;QACpD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,KAAK,CAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,UAA4B,EAAE;IACxE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAe,CAAC;IAC7G,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAe,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAEA,MAAM,0BAA0B,GAAG,wHAAwH,CAAC;AAC5J,MAAM,4BAA4B,GAAG,iNAAiN,CAAC;AASvP,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,UAA4B,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,EAAE,WAAW,CAAC,CAAC;IACtG,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;QACrD,IAAI,MAAM;YAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,KAAQ,EAAE,UAA4B,EAAE;IACpE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IAEnC,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,GAAY,EAAW,EAAE;QACrD,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,WAAW,CAAC;QACpD,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC1G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,KAAK,CAAC,KAAK,CAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,UAA4B,EAAE;IACxE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAe,CAAC;IAC7G,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAe,CAAC;AACrE,CAAC"}
@@ -16,6 +16,8 @@ export interface SandboxRef {
16
16
  * maps to a decoder registered via `registerSandboxRefDecoder()`.
17
17
  */
18
18
  export interface SerializedSandboxRef {
19
+ /** Stable identity used for ownership leases and audit correlation. */
20
+ referenceId?: string;
19
21
  /** Provider identifier — must match a registered decoder. */
20
22
  provider: string;
21
23
  /** Provider-specific routing data (sandbox/workspace/pod ID, region, etc.). */
@@ -26,9 +28,40 @@ export interface SerializedSandboxRef {
26
28
  capabilities?: SandboxCapabilities;
27
29
  /** Owner session id, for audit trails. */
28
30
  ownerSessionId?: string;
31
+ /** Tenant that owns this sandbox. Attach requires the same tenant when set. */
32
+ tenantId?: string;
29
33
  /** ISO timestamp of encoding. */
30
34
  encodedAt: string;
31
35
  }
36
+ export type SandboxContinuityMode = 'reconnect' | 'snapshot' | 'restore' | 'fork' | 'none';
37
+ export interface SandboxContinuityCapabilities {
38
+ reconnect: boolean;
39
+ snapshot: boolean;
40
+ restore: boolean;
41
+ fork: boolean;
42
+ modes: SandboxContinuityMode[];
43
+ }
44
+ /** Report the continuity operations that a backend or serialized ref can support. */
45
+ export declare function negotiateSandboxContinuity(value: SandboxEnv | SandboxRef | SerializedSandboxRef): SandboxContinuityCapabilities;
46
+ export interface SandboxOwnershipLeaseStore {
47
+ prepare?(): Promise<void>;
48
+ claim(key: string, ownerId: string, expiresAt: number, now: number): Promise<boolean>;
49
+ renew(key: string, ownerId: string, expiresAt: number, now: number): Promise<boolean>;
50
+ release(key: string, ownerId: string): Promise<void>;
51
+ }
52
+ export interface SandboxOwnershipOptions {
53
+ store: SandboxOwnershipLeaseStore;
54
+ /** Unique worker/replica identity. Reusing this value across workers defeats fencing. */
55
+ ownerId: string;
56
+ leaseMs?: number;
57
+ now?: () => number;
58
+ }
59
+ export interface AttachSandboxOptions {
60
+ tenantId?: string;
61
+ ownership?: SandboxOwnershipOptions;
62
+ }
63
+ /** Process-local lease store for tests and single-replica durable workers. */
64
+ export declare function memorySandboxOwnershipLeaseStore(): SandboxOwnershipLeaseStore;
32
65
  /**
33
66
  * Decoder for a `SerializedSandboxRef.provider`. Returns a SandboxFactory
34
67
  * that, when invoked, produces a SandboxEnv connected to the existing
@@ -76,13 +109,15 @@ export declare function unregisterSandbox(refId: string): void;
76
109
  * require a decoder registered for `serialized.provider` via
77
110
  * `registerSandboxRefDecoder()`.
78
111
  */
79
- export declare function attachSandbox(ref: SandboxRef | SerializedSandboxRef): SandboxFactory;
112
+ export declare function attachSandbox(ref: SandboxRef | SerializedSandboxRef, options?: AttachSandboxOptions): SandboxFactory;
80
113
  /**
81
114
  * Serialize an in-process `SandboxRef` into the cross-process form.
82
115
  * Requires the underlying sandbox to implement `encodeRef()`. Throws
83
116
  * `SANDBOX_UNAVAILABLE` if the backend is in-process-only.
84
117
  */
85
- export declare function serializeSandboxRef(ref: SandboxRef, ownerSessionId?: string): SerializedSandboxRef;
118
+ export declare function serializeSandboxRef(ref: SandboxRef, ownerSessionId?: string, tenantId?: string): SerializedSandboxRef;
119
+ /** Claim exclusive ownership of an already-connected portable sandbox. */
120
+ export declare function claimSandboxOwnership(ref: SerializedSandboxRef, env: SandboxEnv, options: SandboxOwnershipOptions): Promise<SandboxEnv>;
86
121
  /** Test-only: clear the registry. */
87
122
  export declare function _resetSandboxRegistry(): void;
88
123
  //# sourceMappingURL=sandbox-ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-ref.d.ts","sourceRoot":"","sources":["../src/sandbox-ref.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,mBAAmB,EACnB,UAAU,EAEV,cAAc,EAGf,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,KACzD,cAAc,CAAC;AAIpB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAE5F;AAED,uCAAuC;AACvC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CAgBtG;AAoBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAOrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,oBAAoB,GAAG,cAAc,CAkBpF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAyBlG;AAuED,qCAAqC;AACrC,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C"}
1
+ {"version":3,"file":"sandbox-ref.d.ts","sourceRoot":"","sources":["../src/sandbox-ref.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,49 @@
1
1
  import path from 'node:path';
2
2
  import { FabricError } from './error.js';
3
+ /** Report the continuity operations that a backend or serialized ref can support. */
4
+ export function negotiateSandboxContinuity(value) {
5
+ const capabilities = value.capabilities;
6
+ const reconnect = 'provider' in value || capabilities?.reconnect === true || ('encodeRef' in value && typeof value.encodeRef === 'function');
7
+ const snapshot = capabilities?.snapshots === true || ('snapshot' in value && typeof value.snapshot === 'function');
8
+ const restore = capabilities?.restore === true || ('restore' in value && typeof value.restore === 'function');
9
+ const fork = capabilities?.fork === true || ('fork' in value && typeof value.fork === 'function');
10
+ const modes = [];
11
+ if (reconnect)
12
+ modes.push('reconnect');
13
+ if (snapshot)
14
+ modes.push('snapshot');
15
+ if (restore)
16
+ modes.push('restore');
17
+ if (fork)
18
+ modes.push('fork');
19
+ if (modes.length === 0)
20
+ modes.push('none');
21
+ return { reconnect, snapshot, restore, fork, modes };
22
+ }
23
+ /** Process-local lease store for tests and single-replica durable workers. */
24
+ export function memorySandboxOwnershipLeaseStore() {
25
+ const leases = new Map();
26
+ return {
27
+ async claim(key, ownerId, expiresAt, now) {
28
+ const current = leases.get(key);
29
+ if (current && current.expiresAt > now)
30
+ return false;
31
+ leases.set(key, { ownerId, expiresAt });
32
+ return true;
33
+ },
34
+ async renew(key, ownerId, expiresAt, now) {
35
+ const current = leases.get(key);
36
+ if (!current || current.ownerId !== ownerId || current.expiresAt <= now)
37
+ return false;
38
+ leases.set(key, { ownerId, expiresAt });
39
+ return true;
40
+ },
41
+ async release(key, ownerId) {
42
+ if (leases.get(key)?.ownerId === ownerId)
43
+ leases.delete(key);
44
+ },
45
+ };
46
+ }
3
47
  const decoders = new Map();
4
48
  /**
5
49
  * Register a decoder for `provider` so `attachSandbox(serialized)` can
@@ -83,9 +127,10 @@ export function unregisterSandbox(refId) {
83
127
  * require a decoder registered for `serialized.provider` via
84
128
  * `registerSandboxRefDecoder()`.
85
129
  */
86
- export function attachSandbox(ref) {
130
+ export function attachSandbox(ref, options = {}) {
87
131
  if ('provider' in ref) {
88
132
  const serialized = ref;
133
+ assertTenant(serialized, options.tenantId);
89
134
  const decoder = decoders.get(serialized.provider);
90
135
  if (!decoder) {
91
136
  throw new FabricError({
@@ -93,10 +138,16 @@ export function attachSandbox(ref) {
93
138
  message: `No sandbox ref decoder registered for provider '${serialized.provider}'. Register one with registerSandboxRefDecoder('${serialized.provider}', ...) before calling attachSandbox().`,
94
139
  });
95
140
  }
96
- return decoder(serialized.providerData, {
141
+ const decoded = decoder(serialized.providerData, {
97
142
  cwd: serialized.cwd,
98
143
  ...(serialized.capabilities ? { capabilities: serialized.capabilities } : {}),
99
144
  });
145
+ return async (factoryOptions = {}) => {
146
+ const env = await decoded(factoryOptions);
147
+ return options.ownership
148
+ ? claimSandboxOwnership(serialized, env, options.ownership)
149
+ : env;
150
+ };
100
151
  }
101
152
  return (_options = {}) => {
102
153
  return new AttachedSandboxEnv(ref);
@@ -107,7 +158,7 @@ export function attachSandbox(ref) {
107
158
  * Requires the underlying sandbox to implement `encodeRef()`. Throws
108
159
  * `SANDBOX_UNAVAILABLE` if the backend is in-process-only.
109
160
  */
110
- export function serializeSandboxRef(ref, ownerSessionId) {
161
+ export function serializeSandboxRef(ref, ownerSessionId, tenantId) {
111
162
  const entry = lookupAlive(ref.id);
112
163
  if (!entry.env.encodeRef) {
113
164
  throw new FabricError({
@@ -123,6 +174,7 @@ export function serializeSandboxRef(ref, ownerSessionId) {
123
174
  });
124
175
  }
125
176
  const serialized = {
177
+ referenceId: portableReferenceId(encoded.provider, encoded.providerData, ownerSessionId ?? entry.ownerSessionId),
126
178
  provider: encoded.provider,
127
179
  providerData: encoded.providerData,
128
180
  cwd: ref.cwd,
@@ -133,8 +185,117 @@ export function serializeSandboxRef(ref, ownerSessionId) {
133
185
  const owner = ownerSessionId ?? entry.ownerSessionId;
134
186
  if (owner)
135
187
  serialized.ownerSessionId = owner;
188
+ if (tenantId)
189
+ serialized.tenantId = tenantId;
136
190
  return serialized;
137
191
  }
192
+ /** Claim exclusive ownership of an already-connected portable sandbox. */
193
+ export async function claimSandboxOwnership(ref, env, options) {
194
+ const now = options.now ?? Date.now;
195
+ const leaseMs = Math.max(1, options.leaseMs ?? 60_000);
196
+ await options.store.prepare?.();
197
+ const referenceId = serializedReferenceId(ref);
198
+ const claimed = await options.store.claim(referenceId, options.ownerId, now() + leaseMs, now());
199
+ if (!claimed)
200
+ throw ownershipError(referenceId);
201
+ return new OwnedSandboxEnv(ref, env, options, leaseMs, now);
202
+ }
203
+ class OwnedSandboxEnv {
204
+ ref;
205
+ env;
206
+ ownership;
207
+ leaseMs;
208
+ now;
209
+ cwd;
210
+ capabilities;
211
+ constructor(ref, env, ownership, leaseMs, now) {
212
+ this.ref = ref;
213
+ this.env = env;
214
+ this.ownership = ownership;
215
+ this.leaseMs = leaseMs;
216
+ this.now = now;
217
+ this.cwd = env.cwd;
218
+ if (env.capabilities)
219
+ this.capabilities = env.capabilities;
220
+ }
221
+ async owned(operation) {
222
+ const current = this.now();
223
+ const referenceId = serializedReferenceId(this.ref);
224
+ const renewed = await this.ownership.store.renew(referenceId, this.ownership.ownerId, current + this.leaseMs, current);
225
+ if (!renewed)
226
+ throw ownershipError(referenceId);
227
+ return operation();
228
+ }
229
+ exec(command, options) { return this.owned(() => this.env.exec(command, options)); }
230
+ readFile(p) { return this.owned(() => this.env.readFile(p)); }
231
+ readFileBuffer(p) { return this.owned(() => this.env.readFileBuffer(p)); }
232
+ writeFile(p, content) { return this.owned(() => this.env.writeFile(p, content)); }
233
+ stat(p) { return this.owned(() => this.env.stat(p)); }
234
+ readdir(p) { return this.owned(() => this.env.readdir(p)); }
235
+ exists(p) { return this.owned(() => this.env.exists(p)); }
236
+ mkdir(p, options) { return this.owned(() => this.env.mkdir(p, options)); }
237
+ rm(p, options) { return this.owned(() => this.env.rm(p, options)); }
238
+ resolvePath(p) { return this.env.resolvePath(p); }
239
+ snapshot() { return this.owned(async () => { if (!this.env.snapshot)
240
+ throw unsupported('snapshot'); return this.env.snapshot(); }); }
241
+ restore(snapshot) { return this.owned(async () => { if (!this.env.restore)
242
+ throw unsupported('restore'); await this.env.restore(snapshot); }); }
243
+ fork(snapshot) { return this.owned(async () => { if (!this.env.fork)
244
+ throw unsupported('fork'); return this.env.fork(snapshot); }); }
245
+ suspend() { return this.owned(async () => { if (!this.env.suspend)
246
+ throw unsupported('suspend'); await this.env.suspend(); }); }
247
+ resume() { return this.owned(async () => { if (!this.env.resume)
248
+ throw unsupported('resume'); await this.env.resume(); }); }
249
+ encodeRef() { return this.env.encodeRef?.(); }
250
+ __runWithPolicyApproval(call, operation) {
251
+ return this.owned(() => this.env.__runWithPolicyApproval ? this.env.__runWithPolicyApproval(call, operation) : operation());
252
+ }
253
+ async cleanup() {
254
+ await this.ownership.store.release(serializedReferenceId(this.ref), this.ownership.ownerId);
255
+ await this.env.cleanup();
256
+ }
257
+ }
258
+ function assertTenant(ref, tenantId) {
259
+ if (ref.tenantId === undefined)
260
+ return;
261
+ if (tenantId === ref.tenantId)
262
+ return;
263
+ throw new FabricError({
264
+ code: 'POLICY_DENIED',
265
+ message: `Sandbox reference belongs to tenant '${ref.tenantId}' and cannot be attached by tenant '${tenantId ?? '(unset)'}'.`,
266
+ publicMessage: 'Sandbox reference is not available to this tenant.',
267
+ });
268
+ }
269
+ function portableReferenceId(provider, providerData, ownerSessionId) {
270
+ const serialized = stableStringify(providerData);
271
+ let hash = 2166136261;
272
+ for (const char of `${provider}\u0000${serialized}\u0000${ownerSessionId ?? ''}`) {
273
+ hash ^= char.charCodeAt(0);
274
+ hash = Math.imul(hash, 16777619);
275
+ }
276
+ return `sbx-${provider}-${(hash >>> 0).toString(16).padStart(8, '0')}`;
277
+ }
278
+ function serializedReferenceId(ref) {
279
+ return ref.referenceId ?? portableReferenceId(ref.provider, ref.providerData, ref.ownerSessionId);
280
+ }
281
+ function stableStringify(value) {
282
+ if (value === null || typeof value !== 'object')
283
+ return JSON.stringify(value) ?? 'undefined';
284
+ if (Array.isArray(value))
285
+ return `[${value.map(stableStringify).join(',')}]`;
286
+ return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child)}`).join(',')}}`;
287
+ }
288
+ function ownershipError(referenceId) {
289
+ return new FabricError({
290
+ code: 'SANDBOX_UNAVAILABLE',
291
+ message: `Sandbox ownership lease is held by another worker or expired: ${referenceId}.`,
292
+ publicMessage: 'Sandbox is currently owned by another worker.',
293
+ retryable: true,
294
+ });
295
+ }
296
+ function unsupported(operation) {
297
+ return new FabricError({ code: 'SANDBOX_UNAVAILABLE', message: `Underlying sandbox does not support ${operation}.` });
298
+ }
138
299
  class AttachedSandboxEnv {
139
300
  ref;
140
301
  cwd;
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-ref.js","sourceRoot":"","sources":["../src/sandbox-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox-ref.js","sourceRoot":"","sources":["../src/sandbox-ref.ts"],"names":[],"mappings":"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"}
package/dist/sandbox.d.ts CHANGED
@@ -23,6 +23,10 @@ export interface SandboxExecOptions {
23
23
  env?: Record<string, string>;
24
24
  timeout?: number;
25
25
  signal?: AbortSignal;
26
+ /** Receives stdout chunks while the provider is executing the command. */
27
+ onStdout?: (chunk: string) => void;
28
+ /** Receives stderr chunks while the provider is executing the command. */
29
+ onStderr?: (chunk: string) => void;
26
30
  }
27
31
  export interface SandboxCapabilities {
28
32
  exec: boolean;
@@ -30,12 +34,23 @@ export interface SandboxCapabilities {
30
34
  binaryFiles: boolean;
31
35
  snapshots: boolean;
32
36
  restore: boolean;
37
+ /** True when a portable reference can reconnect to the same running sandbox. */
38
+ reconnect?: boolean;
33
39
  /** True when the sandbox can be forked from a snapshot into independent branches. */
34
40
  fork?: boolean;
35
41
  /** True when the sandbox can be suspended (paused) and later resumed without losing state. */
36
42
  suspend?: boolean;
37
43
  resume?: boolean;
38
44
  network: 'none' | 'restricted' | 'egress' | 'provider-managed';
45
+ /**
46
+ * Strongest layer that enforces the advertised network restriction.
47
+ * `process` policy is defense in depth only: code running in the sandbox can
48
+ * bypass it with a direct socket. Production allowlists should use a
49
+ * container, cluster, or provider boundary.
50
+ */
51
+ networkEnforcement?: 'none' | 'process' | 'container' | 'cluster' | 'provider';
52
+ /** Non-secret operator reference, such as a Docker network or NetworkPolicy name. */
53
+ networkBoundary?: string;
39
54
  persistence: 'ephemeral' | 'session' | 'durable';
40
55
  isolation: 'process' | 'container' | 'microvm' | 'provider';
41
56
  }
@@ -88,6 +103,8 @@ export interface SandboxEnv {
88
103
  provider: string;
89
104
  providerData: unknown;
90
105
  } | undefined;
106
+ /** @internal Scoped grant used only after the session approval machinery resolves a call. */
107
+ __runWithPolicyApproval?<T>(call: import('./tools.js').ToolCall, operation: () => Promise<T>): Promise<T>;
91
108
  cleanup(): Promise<void>;
92
109
  }
93
110
  export interface SandboxFactoryOptions {
@@ -236,6 +253,15 @@ export interface DockerSandboxOptions {
236
253
  image?: string;
237
254
  env?: Record<string, string>;
238
255
  network?: 'none' | 'bridge' | 'host' | string | boolean;
256
+ /**
257
+ * Assert that a named Docker network is `--internal` and routes outbound
258
+ * traffic only through an independently enforced egress proxy. Ignored for
259
+ * `network=none`, which is already enforced by Docker.
260
+ */
261
+ networkBoundary?: {
262
+ enforcement: 'container';
263
+ reference: string;
264
+ };
239
265
  user?: string;
240
266
  cpus?: string | number;
241
267
  memory?: string;