@tangle-network/sandbox 0.60.25 → 0.60.26-develop.20261008101636.48f71b4

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 (34) hide show
  1. package/README.md +28 -0
  2. package/dist/agent/index.d.ts +4 -4
  3. package/dist/agent/index.js +4 -4
  4. package/dist/agent/preview.d.ts +1 -1
  5. package/dist/{agent-run-outcome-BMRvIstg.d.ts → agent-run-outcome-D5VVd5Ei.d.ts} +4 -2
  6. package/dist/auth/index.js +1 -1
  7. package/dist/{cli-auth-bundle-xnHi1LpC.js → cli-auth-bundle-CZfgymgf.js} +3 -3
  8. package/dist/{client-JaupThcm.js → client-B4ehn1iw.js} +5 -5
  9. package/dist/{client-BFOltIeq.d.ts → client-DqA0N91W.d.ts} +4 -4
  10. package/dist/collaboration/index.js +1 -1
  11. package/dist/{collaboration-CFe2H--1.js → collaboration-D15xoinI.js} +1 -1
  12. package/dist/core.d.ts +5 -5
  13. package/dist/core.js +3 -3
  14. package/dist/{errors-DS32ViPj.d.ts → errors-BXMXbVFO.d.ts} +32 -1
  15. package/dist/{errors-C1c3Q6Bj.js → errors-DMxVFCS6.js} +34 -1
  16. package/dist/{index-DaQYTQXD.d.ts → index-Dv77g3s5.d.ts} +2 -2
  17. package/dist/index.d.ts +18 -8
  18. package/dist/index.js +8 -7
  19. package/dist/intelligence/index.js +1 -1
  20. package/dist/{interactive-controller-DtX6fHC6.js → interactive-controller-4Fo9aDih.js} +100 -7
  21. package/dist/{lines-CJK_ysel.d.ts → lines-d9AEcbCd.d.ts} +22 -6
  22. package/dist/lines.d.ts +1 -1
  23. package/dist/lines.js +8 -5
  24. package/dist/{local-cli-auth-Ch35WOLn.js → local-cli-auth-CwrrtpaB.js} +1 -1
  25. package/dist/{preview-BM4uaIvf.d.ts → preview-CCAwjkRr.d.ts} +3 -3
  26. package/dist/runtime.d.ts +4 -4
  27. package/dist/runtime.js +3 -3
  28. package/dist/{sandbox-CmYUc66b.js → sandbox-C42UAlFT.js} +226 -59
  29. package/dist/{sandbox-C-MO0nYW.d.ts → sandbox-CSFajXr_.d.ts} +7 -6
  30. package/dist/tangle/index.d.ts +1 -1
  31. package/dist/tangle/index.js +1 -1
  32. package/dist/{tangle-t-VT4qL1.js → tangle-9TwNLIs5.js} +2 -2
  33. package/dist/{types-DwHQuPFG.d.ts → types-Di0cLhOV.d.ts} +30 -8
  34. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { i as parseBackendType, r as backendTypeSchema, t as ALL_BACKEND_TYPES } from "./backend-types-C7b_Gpa0.js";
2
- import { D as parseSSEStream, L as createAgentRunOutcomeTracker, M as normalizeRuntimeBackendConfig, N as requestedPublicProfileDigest, R as deriveAgentResultOutcome, a as TERMINAL_WS_ECHO_SUBPROTOCOL, i as TerminalStreamError, n as InteractiveSessionController, r as TerminalStream, t as BrowserInteractiveSessionController, z as deriveAgentRunOutcome } from "./interactive-controller-DtX6fHC6.js";
3
- import { _ as ValidationError, a as FileWriteConflictError, c as NetworkError, d as QuotaError, f as ResumeEnvRequiredError, g as TimeoutError, h as StateError, i as EgressProxyRecoveryError, l as NotFoundError, m as ServerError, n as CapabilityError, o as KeyBudgetExhaustedError, p as SandboxError, r as EdgeNotReadyError, t as AuthError, u as PartialFailureError } from "./errors-C1c3Q6Bj.js";
4
- import { _ as parseBackendRegistryResponse, a as InstanceRestartingError, c as SandboxFleetClient, d as validateBatchRunRequest, f as backendRegistryCapabilitiesSchema, g as isBackendRegistryInteractionKind, h as backendRegistryResponseSchema, i as HostedInstance, l as runtimeWorkspaceCwdSchema, m as backendRegistryInteractionKindSchema, n as Sandbox, o as InstancesClient, p as backendRegistryEntrySchema, r as RunsClient, s as SandboxFleet, t as IntelligenceClient, u as createBatchResultAccumulator, v as parseBackendRegistryResponseBody } from "./client-JaupThcm.js";
2
+ import { B as projectAgentTerminalRecord, D as parseSSEStream, L as createAgentRunOutcomeTracker, M as normalizeRuntimeBackendConfig, N as requestedPublicProfileDigest, R as deriveAgentResultOutcome, a as TERMINAL_WS_ECHO_SUBPROTOCOL, i as TerminalStreamError, n as InteractiveSessionController, r as TerminalStream, t as BrowserInteractiveSessionController, z as deriveAgentRunOutcome } from "./interactive-controller-4Fo9aDih.js";
3
+ import { _ as TimeoutError, a as FileWriteConflictError, c as NetworkError, d as QuotaError, f as ResumeEnvRequiredError, g as StreamInterruptedError, h as StateError, i as EgressProxyRecoveryError, l as NotFoundError, m as ServerError, n as CapabilityError, o as KeyBudgetExhaustedError, p as SandboxError, r as EdgeNotReadyError, t as AuthError, u as PartialFailureError, v as ValidationError } from "./errors-DMxVFCS6.js";
4
+ import { _ as parseBackendRegistryResponse, a as InstanceRestartingError, c as SandboxFleetClient, d as validateBatchRunRequest, f as backendRegistryCapabilitiesSchema, g as isBackendRegistryInteractionKind, h as backendRegistryResponseSchema, i as HostedInstance, l as runtimeWorkspaceCwdSchema, m as backendRegistryInteractionKindSchema, n as Sandbox, o as InstancesClient, p as backendRegistryEntrySchema, r as RunsClient, s as SandboxFleet, t as IntelligenceClient, u as createBatchResultAccumulator, v as parseBackendRegistryResponseBody } from "./client-B4ehn1iw.js";
5
5
  import { a as INTERACTIVE_CONTROL_CLEANUP_TIMEOUT_MS, l as createInteractiveControlHolderId, n as browserInteractiveControlHolderId, o as InteractiveSessionControlController, s as InteractiveSessionNotRunningError, t as BrowserInteractiveSessionControlController, u as interactiveSessionIdentityDigest } from "./browser-interactive-control-controller-BJf0P_J4.js";
6
- import { A as exportTraceBundle, C as splitInlineProfileFileMounts, M as toOtelJson, S as materializeProfileFileMounts, T as validateDeferredProfileFileMounts, _ as collectAgentFinalMessageText, b as isToolBearingEvent, c as MAX_EGRESS_DENIALS_LIMIT, d as InteractiveSessionHandle, f as agentInteractiveSessionPromptRequestDigest, g as applySandboxEventText, h as createInteractiveTerminalSession, j as otelTraceIdForTangleTrace, k as buildTraceExportPayload, l as SandboxTaskSession, m as createInteractiveTerminalCapture, o as WorkspaceImages, p as InteractiveTerminalFrameLog, s as GPU_LEASE_PROVIDER_NAMES, t as SandboxInstance, u as SandboxSession, v as collectAgentResponseText, w as splitInlineProfileSkills, x as ManagedProcessClient, y as getSandboxEventText } from "./sandbox-CmYUc66b.js";
6
+ import { A as exportTraceBundle, C as splitInlineProfileFileMounts, M as toOtelJson, S as materializeProfileFileMounts, T as validateDeferredProfileFileMounts, _ as collectAgentFinalMessageText, b as isToolBearingEvent, c as MAX_EGRESS_DENIALS_LIMIT, d as InteractiveSessionHandle, f as agentInteractiveSessionPromptRequestDigest, g as applySandboxEventText, h as createInteractiveTerminalSession, j as otelTraceIdForTangleTrace, k as buildTraceExportPayload, l as SandboxTaskSession, m as createInteractiveTerminalCapture, o as WorkspaceImages, p as InteractiveTerminalFrameLog, s as GPU_LEASE_PROVIDER_NAMES, t as SandboxInstance, u as SandboxSession, v as collectAgentResponseText, w as splitInlineProfileSkills, x as ManagedProcessClient, y as getSandboxEventText } from "./sandbox-C42UAlFT.js";
7
7
  import { LinesClient, SandboxLines, lineInstanceKey, profileChannelReference } from "./lines.js";
8
- import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-CFe2H--1.js";
8
+ import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-D15xoinI.js";
9
9
  import { i as parseLineApplicationResult, n as LINE_APPLICATION_REQUEST_MAX_BYTES, r as parseLineApplicationRequest, t as LINE_APPLICATION_REPLY_MAX_CHARS } from "./line-application-C2SuT1zK.js";
10
- import { s as TangleSandboxClient } from "./tangle-t-VT4qL1.js";
10
+ import { s as TangleSandboxClient } from "./tangle-9TwNLIs5.js";
11
11
  import { SANDBOX_SIZE_PRESET_NAMES, agentProfileConfidentialSchema, agentProfileSchema } from "@tangle-network/agent-interface";
12
12
  import { z } from "zod";
13
13
  //#region src/confidential.ts
@@ -659,6 +659,7 @@ const backendSchema = z.strictObject({
659
659
  }).optional(),
660
660
  metadata: z.strictObject({
661
661
  containerType: nonEmptyStringSchema.optional(),
662
+ profileSecretIsolation: z.literal(true).optional(),
662
663
  traceAttributes: envSchema.optional()
663
664
  }).optional()
664
665
  });
@@ -1481,4 +1482,4 @@ function stripUndefined(value) {
1481
1482
  return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== void 0).map(([k, v]) => [k, stripUndefined(v)]));
1482
1483
  }
1483
1484
  //#endregion
1484
- export { ALL_BACKEND_TYPES, AuthError, BrowserInteractiveSessionControlController, BrowserInteractiveSessionController, CONTROL_PLANE_MCP_SERVER_NAME, CapabilityError, CollaborationClient, CollaborationFileBridge, DEFAULT_SANDBOX_SIZE, EdgeNotReadyError, EgressProxyRecoveryError, FileWriteConflictError, GPU_LEASE_PROVIDER_NAMES, HostedInstance, INTERACTIVE_CONTROL_CLEANUP_TIMEOUT_MS, Image, ImageBuilder, InstanceRestartingError, InstancesClient, IntelligenceClient, InteractiveSessionControlController, InteractiveSessionController, InteractiveSessionHandle, InteractiveSessionNotRunningError, InteractiveTerminalFrameLog, KeyBudgetExhaustedError, LINE_APPLICATION_REPLY_MAX_CHARS, LINE_APPLICATION_REQUEST_MAX_BYTES, LinesClient, MANAGE_SANDBOXES_PARAMETERS, MANAGE_SANDBOXES_TOOL_NAME, MAX_EGRESS_DENIALS_LIMIT, ManagedProcessClient, NetworkError, NotFoundError, PartialFailureError, QuotaError, ResumeEnvRequiredError, RunsClient, SANDBOX_MCP_SERVER_NAME, SANDBOX_SIZE_PRESETS, SANDBOX_SIZE_PRESET_NAMES, Sandbox, SandboxError, SandboxFleet, SandboxFleetClient, SandboxInstance, SandboxLines, SandboxSession, SandboxTaskSession, ServerError, StateError, TERMINAL_WS_ECHO_SUBPROTOCOL, TangleSandboxClient, TerminalStream, TerminalStreamError, TimeoutError, ValidationError, WorkspaceImages, applySandboxEventText, backendRegistryCapabilitiesSchema, backendRegistryEntrySchema, backendRegistryInteractionKindSchema, backendRegistryResponseSchema, browserInteractiveControlHolderId, buildCollaborationDocumentId, buildControlPlaneMcpConfig, buildSandboxMcpConfig, buildTangleRouterEvalMatrixRequest, buildTangleRouterResponsesWebSearchRequest, buildTangleRouterSearchBackend, buildTangleRouterSearchProfile, buildTraceExportPayload, collectAgentFinalMessageText, collectAgentResponseText, createAgentRunOutcomeTracker, createBatchResultAccumulator, createConfidentialSandbox, createInteractiveControlHolderId, createInteractiveTerminalCapture, createInteractiveTerminalSession, createManageSandboxesTool, deriveAgentResultOutcome, deriveAgentRunOutcome, exportTraceBundle, fetchTangleRouterSearchConfig, generateAttestationNonce, generateDockerfile, getSandboxEventText, agentInteractiveSessionPromptRequestDigest as interactivePromptRequestDigest, interactiveSessionIdentityDigest, isBackendRegistryInteractionKind, isToolBearingEvent, lineInstanceKey, manageSandboxesInputSchema, materializeProfileFileMounts, normalizeCollaborationPath, normalizeRuntimeBackendConfig, otelTraceIdForTangleTrace, parseBackendRegistryResponse, parseBackendRegistryResponseBody, parseBackendType, parseCollaborationDocumentId, parseLineApplicationRequest, parseLineApplicationResult, parseSSEStream, profileChannelReference, requestedPublicProfileDigest, resolveSandboxResources, runTangleRouterEvalMatrixInSandbox, sandboxResourcesForSize, splitInlineProfileFileMounts, splitInlineProfileSkills, startTeeAttestationHeartbeat, toOtelJson, validateBatchRunRequest, validateDeferredProfileFileMounts };
1485
+ export { ALL_BACKEND_TYPES, AuthError, BrowserInteractiveSessionControlController, BrowserInteractiveSessionController, CONTROL_PLANE_MCP_SERVER_NAME, CapabilityError, CollaborationClient, CollaborationFileBridge, DEFAULT_SANDBOX_SIZE, EdgeNotReadyError, EgressProxyRecoveryError, FileWriteConflictError, GPU_LEASE_PROVIDER_NAMES, HostedInstance, INTERACTIVE_CONTROL_CLEANUP_TIMEOUT_MS, Image, ImageBuilder, InstanceRestartingError, InstancesClient, IntelligenceClient, InteractiveSessionControlController, InteractiveSessionController, InteractiveSessionHandle, InteractiveSessionNotRunningError, InteractiveTerminalFrameLog, KeyBudgetExhaustedError, LINE_APPLICATION_REPLY_MAX_CHARS, LINE_APPLICATION_REQUEST_MAX_BYTES, LinesClient, MANAGE_SANDBOXES_PARAMETERS, MANAGE_SANDBOXES_TOOL_NAME, MAX_EGRESS_DENIALS_LIMIT, ManagedProcessClient, NetworkError, NotFoundError, PartialFailureError, QuotaError, ResumeEnvRequiredError, RunsClient, SANDBOX_MCP_SERVER_NAME, SANDBOX_SIZE_PRESETS, SANDBOX_SIZE_PRESET_NAMES, Sandbox, SandboxError, SandboxFleet, SandboxFleetClient, SandboxInstance, SandboxLines, SandboxSession, SandboxTaskSession, ServerError, StateError, StreamInterruptedError, TERMINAL_WS_ECHO_SUBPROTOCOL, TangleSandboxClient, TerminalStream, TerminalStreamError, TimeoutError, ValidationError, WorkspaceImages, applySandboxEventText, backendRegistryCapabilitiesSchema, backendRegistryEntrySchema, backendRegistryInteractionKindSchema, backendRegistryResponseSchema, browserInteractiveControlHolderId, buildCollaborationDocumentId, buildControlPlaneMcpConfig, buildSandboxMcpConfig, buildTangleRouterEvalMatrixRequest, buildTangleRouterResponsesWebSearchRequest, buildTangleRouterSearchBackend, buildTangleRouterSearchProfile, buildTraceExportPayload, collectAgentFinalMessageText, collectAgentResponseText, createAgentRunOutcomeTracker, createBatchResultAccumulator, createConfidentialSandbox, createInteractiveControlHolderId, createInteractiveTerminalCapture, createInteractiveTerminalSession, createManageSandboxesTool, deriveAgentResultOutcome, deriveAgentRunOutcome, exportTraceBundle, fetchTangleRouterSearchConfig, generateAttestationNonce, generateDockerfile, getSandboxEventText, agentInteractiveSessionPromptRequestDigest as interactivePromptRequestDigest, interactiveSessionIdentityDigest, isBackendRegistryInteractionKind, isToolBearingEvent, lineInstanceKey, manageSandboxesInputSchema, materializeProfileFileMounts, normalizeCollaborationPath, normalizeRuntimeBackendConfig, otelTraceIdForTangleTrace, parseBackendRegistryResponse, parseBackendRegistryResponseBody, parseBackendType, parseCollaborationDocumentId, parseLineApplicationRequest, parseLineApplicationResult, parseSSEStream, profileChannelReference, projectAgentTerminalRecord, requestedPublicProfileDigest, resolveSandboxResources, runTangleRouterEvalMatrixInSandbox, sandboxResourcesForSize, splitInlineProfileFileMounts, splitInlineProfileSkills, startTeeAttestationHeartbeat, toOtelJson, validateBatchRunRequest, validateDeferredProfileFileMounts };
@@ -1,4 +1,4 @@
1
- import { c as NetworkError, g as TimeoutError, v as parseErrorResponse } from "../errors-C1c3Q6Bj.js";
1
+ import { _ as TimeoutError, c as NetworkError, y as parseErrorResponse } from "../errors-DMxVFCS6.js";
2
2
  //#region src/intelligence/index.ts
3
3
  /**
4
4
  * `@tangle-network/sandbox/intelligence` — browser-safe typed client for the
@@ -1,5 +1,5 @@
1
1
  import { r as backendTypeSchema } from "./backend-types-C7b_Gpa0.js";
2
- import { _ as ValidationError, c as NetworkError, d as QuotaError, g as TimeoutError, m as ServerError, n as CapabilityError, p as SandboxError, v as parseErrorResponse, y as parseResponseError } from "./errors-C1c3Q6Bj.js";
2
+ import { _ as TimeoutError, b as parseResponseError, c as NetworkError, d as QuotaError, m as ServerError, n as CapabilityError, p as SandboxError, v as ValidationError, y as parseErrorResponse } from "./errors-DMxVFCS6.js";
3
3
  import { c as assertInteractiveSessionRef, d as awaitWithAbort, f as combineAbortSignals, i as createBrowserInteractiveSessionControlTransport, o as InteractiveSessionControlController, r as browserInteractiveTerminalEndpoint } from "./browser-interactive-control-controller-BJf0P_J4.js";
4
4
  import { AgentExactRunControlRefSchema, AgentExecutionOutcomeSchema, AgentInteractiveSessionAttachSchema, AgentInteractiveSessionControlClaimSchema, AgentInteractiveSessionRefSchema, AgentRuntimeAttachmentsSchema, DurablePlanSchema, InteractionRequestSchema, agentInteractiveSessionControlClaimMatchesRef, agentProfileSchema, canonicalCandidateDigest } from "@tangle-network/agent-interface";
5
5
  import { z } from "zod";
@@ -18,6 +18,40 @@ function parsePlan(value) {
18
18
  const parsed = DurablePlanSchema.safeParse(value);
19
19
  return parsed.success ? parsed.data : void 0;
20
20
  }
21
+ /** Validate the bounded approval summary carried without cumulative tool history. */
22
+ function parseApproval(value) {
23
+ const record = plainRecord(value);
24
+ if (!record || Object.keys(record).some((key) => key !== "message" && key !== "approvalId" && key !== "connectionId")) return void 0;
25
+ const approval = {};
26
+ for (const key of [
27
+ "message",
28
+ "approvalId",
29
+ "connectionId"
30
+ ]) {
31
+ if (record[key] === void 0) continue;
32
+ const value = readString(record[key]);
33
+ if (!value || value.length > (key === "message" ? 4096 : 512)) return void 0;
34
+ approval[key] = value;
35
+ }
36
+ return approval;
37
+ }
38
+ /** Inspect outcome markers without copying potentially large tool inputs and outputs. */
39
+ function inspectTerminalToolOutcomes(value) {
40
+ if (!Array.isArray(value)) return { malformed: true };
41
+ const tools = [];
42
+ for (const entry of value) {
43
+ const tool = plainRecord(entry);
44
+ const toolName = readString(tool?.toolName);
45
+ if (!tool || !toolName || tool.isError !== void 0 && typeof tool.isError !== "boolean") return { malformed: true };
46
+ if (tool.isError === true && typeof tool.result === "string" && new TextEncoder().encode(tool.result).byteLength > MAX_SERIALIZED_TOOL_VALUE_BYTES) return { malformed: true };
47
+ tools.push({
48
+ toolName,
49
+ isError: tool.isError === true,
50
+ result: tool.result
51
+ });
52
+ }
53
+ return inspectToolOutcomes(tools);
54
+ }
21
55
  function parseToolInvocations(value) {
22
56
  if (!Array.isArray(value)) return void 0;
23
57
  const result = [];
@@ -172,6 +206,53 @@ function deriveAgentResultOutcome(result) {
172
206
  observeOutcomeFrame(state, "result", result, true);
173
207
  return settleOutcome(state);
174
208
  }
209
+ /** Keep terminal outcome evidence while omitting cumulative tool history. */
210
+ function projectAgentTerminalRecord(record) {
211
+ const { toolInvocations, ...terminal } = record;
212
+ const nested = plainRecord(record.result);
213
+ const { toolInvocations: nestedTools, approval: nestedApproval, ...nestedTerminal } = nested ?? {};
214
+ const summary = inspectTerminalApproval(record);
215
+ if (summary.malformed) throw new Error("Agent terminal approval summary is malformed or conflicting");
216
+ return {
217
+ ...terminal,
218
+ ...nested === void 0 ? {} : { result: nestedTerminal },
219
+ ...summary.approval === void 0 ? {} : { approval: summary.approval }
220
+ };
221
+ }
222
+ function inspectTerminalApproval(record, prior) {
223
+ const nested = plainRecord(record.result);
224
+ const inspections = [record.toolInvocations, nested?.toolInvocations].filter((value) => value !== void 0).map(inspectTerminalToolOutcomes);
225
+ if (inspections.some((inspection) => inspection.malformed)) return { malformed: true };
226
+ return mergeApprovalCandidates([
227
+ prior,
228
+ record.approval,
229
+ nested?.approval,
230
+ ...inspections.map((inspection) => inspection.approval)
231
+ ]);
232
+ }
233
+ function mergeApprovalCandidates(candidates) {
234
+ let approval;
235
+ for (const candidate of candidates) {
236
+ if (candidate === void 0) continue;
237
+ const next = parseApproval(candidate);
238
+ if (!next || approval && !sameApproval(approval, next)) return { malformed: true };
239
+ approval = {
240
+ ...approval,
241
+ ...next
242
+ };
243
+ }
244
+ return {
245
+ approval,
246
+ malformed: false
247
+ };
248
+ }
249
+ function sameApproval(left, right) {
250
+ return [
251
+ "message",
252
+ "approvalId",
253
+ "connectionId"
254
+ ].every((key) => left[key] === void 0 || right[key] === void 0 || left[key] === right[key]);
255
+ }
175
256
  function createOutcomeState() {
176
257
  return {
177
258
  terminalReached: false,
@@ -273,9 +354,9 @@ function observeOutcomeFrame(state, type, data, terminal) {
273
354
  if (invocations) retainToolInvocations(state, invocations);
274
355
  else state.malformed = true;
275
356
  }
276
- const toolOutcome = inspectToolOutcomes(state.toolInvocations);
277
- if (toolOutcome.malformed) state.malformed = true;
278
- state.approval = toolOutcome.approval;
357
+ const summary = inspectTerminalApproval(data, state.approval);
358
+ if (summary.malformed) state.malformed = true;
359
+ else state.approval = summary.approval;
279
360
  }
280
361
  function settleOutcome(state) {
281
362
  const common = outcomeDetails(state);
@@ -415,6 +496,19 @@ function publicProfileRequestDigest(backend) {
415
496
  backend: JSON.parse(JSON.stringify(backend))
416
497
  });
417
498
  }
499
+ /** Bind public controls for an isolated turn while private auth stays on wire. */
500
+ function secretProfilePublicRequestDigest(backend) {
501
+ const { runtimeSecrets: _runtimeSecrets, metadata: _metadata, model, ...publicBackend } = backend;
502
+ if (!model || typeof model !== "object" || Array.isArray(model)) return publicProfileRequestDigest({
503
+ ...publicBackend,
504
+ model
505
+ });
506
+ const { apiKey: _apiKey, authFiles: _authFiles, cliAuth: _cliAuth, ...publicModel } = model;
507
+ return publicProfileRequestDigest({
508
+ ...publicBackend,
509
+ model: publicModel
510
+ });
511
+ }
418
512
  //#endregion
419
513
  //#region src/backend-config.ts
420
514
  function assertCurrentBackendType(value, field = "backend.type") {
@@ -607,8 +701,7 @@ function requestedPublicProfileDigest(backend) {
607
701
  }
608
702
  /** Digest public profile controls while private turn fields remain on wire. */
609
703
  function requestedSecretProfilePublicDigest(backend) {
610
- const { runtimeSecrets: _turnOnly, metadata: _private, ...publicBackend } = normalizeRuntimeBackendConfig(backend, { allowRuntimeSecrets: true }) ?? {};
611
- return publicProfileRequestDigest(publicBackend);
704
+ return secretProfilePublicRequestDigest(normalizeRuntimeBackendConfig(backend, { allowRuntimeSecrets: true }) ?? {});
612
705
  }
613
706
  //#endregion
614
707
  //#region ../../../packages/sse-core/dist/index.js
@@ -2644,4 +2737,4 @@ var BrowserInteractiveSessionController = class extends InteractiveSessionContro
2644
2737
  }
2645
2738
  };
2646
2739
  //#endregion
2647
- export { foldModelRoutingFields as A, SANDBOX_PROXY_REQUEST_MAX_BYTES as C, parseSSEStream as D, encodeTextForWire as E, withProfileHarness as F, withoutRuntimeSecrets as I, createAgentRunOutcomeTracker as L, normalizeRuntimeBackendConfig as M, requestedPublicProfileDigest as N, applyRequestedModel as O, requestedSecretProfilePublicDigest as P, deriveAgentResultOutcome as R, validateAcceptedDispatchRunRef as S, encodePromptForWire as T, resolveTraceId as _, TERMINAL_WS_ECHO_SUBPROTOCOL as a, uploadChunked as b, requestScopedToken as c, normalizeSessionInfo as d, sessionMessageRequestBody as f, mintTraceId as g, isTraceId as h, TerminalStreamError as i, mergeRuntimeBackendConfig as j, assertCurrentBackendType as k, SandboxRuntimeApi as l, TRACE_ID_HEADER as m, InteractiveSessionController as n, assertScopedTokenActive as o, waitForRetryAfter as p, TerminalStream as r, requestInteractiveSessionToken as s, BrowserInteractiveSessionController as t, isRetryableCredentialRefusal as u, appendSessionIdQuery as v, FILE_DECODED_WRITE_MAX_BYTES as w, resolveDispatchRunIdentity as x, sessionHeaders as y, deriveAgentRunOutcome as z };
2740
+ export { foldModelRoutingFields as A, projectAgentTerminalRecord as B, SANDBOX_PROXY_REQUEST_MAX_BYTES as C, parseSSEStream as D, encodeTextForWire as E, withProfileHarness as F, withoutRuntimeSecrets as I, createAgentRunOutcomeTracker as L, normalizeRuntimeBackendConfig as M, requestedPublicProfileDigest as N, applyRequestedModel as O, requestedSecretProfilePublicDigest as P, deriveAgentResultOutcome as R, validateAcceptedDispatchRunRef as S, encodePromptForWire as T, resolveTraceId as _, TERMINAL_WS_ECHO_SUBPROTOCOL as a, uploadChunked as b, requestScopedToken as c, normalizeSessionInfo as d, sessionMessageRequestBody as f, mintTraceId as g, isTraceId as h, TerminalStreamError as i, mergeRuntimeBackendConfig as j, assertCurrentBackendType as k, SandboxRuntimeApi as l, TRACE_ID_HEADER as m, InteractiveSessionController as n, assertScopedTokenActive as o, waitForRetryAfter as p, TerminalStream as r, requestInteractiveSessionToken as s, BrowserInteractiveSessionController as t, isRetryableCredentialRefusal as u, appendSessionIdQuery as v, FILE_DECODED_WRITE_MAX_BYTES as w, resolveDispatchRunIdentity as x, sessionHeaders as y, deriveAgentRunOutcome as z };
@@ -1,4 +1,4 @@
1
- import { B as CreateSandboxOptions, d as BackendConfig } from "./types-DwHQuPFG.js";
1
+ import { B as CreateSandboxOptions, d as BackendConfig } from "./types-Di0cLhOV.js";
2
2
 
3
3
  //#region src/line-application.d.ts
4
4
  /** Bounded callback request bytes after canonicalization, including JSON framing. */
@@ -75,7 +75,7 @@ declare function parseLineApplicationResult(value: unknown, request: Pick<LineAp
75
75
  //#endregion
76
76
  //#region src/lines.d.ts
77
77
  /** The transport a line carries. */
78
- type LineTransport = "imessage" | "sms" | "whatsapp" | "email";
78
+ type LineTransport = "imessage" | "sms" | "whatsapp" | "email" | "voice";
79
79
  /** What a role's members share and may do in the attached sandbox. */
80
80
  interface LineRole {
81
81
  /** `shared`: the member's turns see other shared members' recent exchanges. `own`: they see none, and nobody sees theirs. */
@@ -119,6 +119,11 @@ interface LineMemberSpec {
119
119
  /** This member's allowance subject; requires limits.allowance.perMember.
120
120
  * The payer never determines the private workspace identity. */
121
121
  allowance?: LineAllowanceSubject;
122
+ /** Required for a ph0ny voice line: an owner attestation to this phone member's prior consent. */
123
+ voiceConsent?: {
124
+ recordedAt: string;
125
+ sourceRef: string;
126
+ };
122
127
  }
123
128
  /** Per-attachment bounds. */
124
129
  interface LineLimits {
@@ -356,6 +361,9 @@ type LineFromConnectionInput = LineFromConnectionCommon & ({
356
361
  } | {
357
362
  transport: "whatsapp";
358
363
  phoneNumberId: string;
364
+ } /** An already-owned ph0ny number; Hub admission is enabled separately. */ | {
365
+ transport: "voice";
366
+ phoneNumberId: string;
359
367
  });
360
368
  /** Fields a member update may change. */
361
369
  interface LineSendInput {
@@ -469,14 +477,18 @@ interface LineVoice {
469
477
  state: "enabling" | "enabled" | "disabled";
470
478
  ph0nyConnectionId: string;
471
479
  ph0nyAgentId: string;
480
+ /** The owned ph0ny number that answers through this line, when Twilio carries voice. */
481
+ ph0nyPhoneNumberId?: string | null;
472
482
  updatedAt: string;
473
483
  }
474
484
  /** Input to `client.lines.enableVoice()`. */
475
485
  interface LineVoiceOptions {
476
486
  /** Your ph0ny Hub connection (provider `phony`). */
477
487
  ph0nyConnectionId: string;
478
- /** The ph0ny agent that voices the calls; Hub adds its `ask_workspace` tool. */
488
+ /** The ph0ny agent that voices the calls. Inkbox voice adds `ask_workspace`. */
479
489
  ph0nyAgentId: string;
490
+ /** Bind this owned ph0ny number to any active Hub line's member and attachment rules. */
491
+ ph0nyPhoneNumberId?: string;
480
492
  }
481
493
  interface Line {
482
494
  id: string;
@@ -487,6 +499,8 @@ interface Line {
487
499
  connect: string | null;
488
500
  routerAddress: string | null;
489
501
  connectionId: string;
502
+ /** Hub provider owning this line, such as `inkbox` or `linq-whatsapp`. Older servers may omit it; never infer it from transport or address. */
503
+ providerId?: string;
490
504
  /** The provider's phone number id, or null for a line without a pinned number. */
491
505
  providerNumberId: string | null;
492
506
  /** Null means Hub has no verified workspace binding for this line. */
@@ -596,9 +610,11 @@ declare class LinesClient {
596
610
  */
597
611
  release(number: string): Promise<boolean>;
598
612
  /**
599
- * Take calls on a line (Inkbox iMessage lines). Hub points the identity's
600
- * incoming calls at itself, binds the ph0ny agent to the line and adds the
601
- * agent's `ask_workspace` tool. Enabling again replaces every credential.
613
+ * Take calls for an active Hub line. Without a phone number ID, the line
614
+ * must be Inkbox iMessage; Hub changes its call action and adds
615
+ * `ask_workspace` to the agent. With an owned ph0ny phone number ID, Hub
616
+ * binds that Twilio number to the line's admission hook and leaves the
617
+ * line's provider call settings unchanged.
602
618
  */
603
619
  enableVoice(lineId: string, options: LineVoiceOptions): Promise<Line>;
604
620
  /** Stop taking calls on a line: Hub refuses them and Inkbox rejects them. */
package/dist/lines.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as LineSenderVerification, B as profileChannelReference, C as LineReplyCodeInput, D as LineRole, E as LineRespondView, F as LineVoiceOptions, I as LinesClient, L as LinesHttpClient, M as LineThread, N as LineTransport, O as LineSendInput, P as LineVoice, R as SandboxLines, S as LineReplyCode, T as LineRespondAgent, _ as LineMemberSpec, a as LineApplicationAttachOptions, b as LineProvider, c as LineAttachmentReauthorization, d as LineInstanceAttachOptions, f as LineInstanceCreate, g as LineMemberPatch, h as LineMemberInstance, i as LineAllowanceSubject, j as LineSenderVerificationStart, k as LineSendReceipt, l as LineExecutionKey, m as LineMember, n as LineAgentRolePolicy, o as LineAttachOptions, p as LineLimits, r as LineAllowance, s as LineAttachment, t as Line, u as LineFromConnectionInput, v as LineMessage, w as LineReplyGate, x as LineReminderPreferences, y as LineNumberInventory, z as lineInstanceKey } from "./lines-CJK_ysel.js";
1
+ import { A as LineSenderVerification, B as profileChannelReference, C as LineReplyCodeInput, D as LineRole, E as LineRespondView, F as LineVoiceOptions, I as LinesClient, L as LinesHttpClient, M as LineThread, N as LineTransport, O as LineSendInput, P as LineVoice, R as SandboxLines, S as LineReplyCode, T as LineRespondAgent, _ as LineMemberSpec, a as LineApplicationAttachOptions, b as LineProvider, c as LineAttachmentReauthorization, d as LineInstanceAttachOptions, f as LineInstanceCreate, g as LineMemberPatch, h as LineMemberInstance, i as LineAllowanceSubject, j as LineSenderVerificationStart, k as LineSendReceipt, l as LineExecutionKey, m as LineMember, n as LineAgentRolePolicy, o as LineAttachOptions, p as LineLimits, r as LineAllowance, s as LineAttachment, t as Line, u as LineFromConnectionInput, v as LineMessage, w as LineReplyGate, x as LineReminderPreferences, y as LineNumberInventory, z as lineInstanceKey } from "./lines-d9AEcbCd.js";
2
2
  export { Line, LineAgentRolePolicy, LineAllowance, LineAllowanceSubject, LineApplicationAttachOptions, LineAttachOptions, LineAttachment, LineAttachmentReauthorization, LineExecutionKey, LineFromConnectionInput, LineInstanceAttachOptions, LineInstanceCreate, LineLimits, LineMember, LineMemberInstance, LineMemberPatch, LineMemberSpec, LineMessage, LineNumberInventory, LineProvider, LineReminderPreferences, LineReplyCode, LineReplyCodeInput, LineReplyGate, LineRespondAgent, LineRespondView, LineRole, LineSendInput, LineSendReceipt, LineSenderVerification, LineSenderVerificationStart, LineThread, LineTransport, LineVoice, LineVoiceOptions, LinesClient, LinesHttpClient, SandboxLines, lineInstanceKey, profileChannelReference };
package/dist/lines.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as ValidationError, v as parseErrorResponse } from "./errors-C1c3Q6Bj.js";
1
+ import { v as ValidationError, y as parseErrorResponse } from "./errors-DMxVFCS6.js";
2
2
  //#region src/lines.ts
3
3
  /**
4
4
  * Lines: give a sandbox a phone number or messaging address.
@@ -185,16 +185,19 @@ var LinesClient = class {
185
185
  return (await hubData(await this.http.fetch(`/v1/lines/${encodeURIComponent(lineId)}`, { method: "DELETE" }))).released;
186
186
  }
187
187
  /**
188
- * Take calls on a line (Inkbox iMessage lines). Hub points the identity's
189
- * incoming calls at itself, binds the ph0ny agent to the line and adds the
190
- * agent's `ask_workspace` tool. Enabling again replaces every credential.
188
+ * Take calls for an active Hub line. Without a phone number ID, the line
189
+ * must be Inkbox iMessage; Hub changes its call action and adds
190
+ * `ask_workspace` to the agent. With an owned ph0ny phone number ID, Hub
191
+ * binds that Twilio number to the line's admission hook and leaves the
192
+ * line's provider call settings unchanged.
191
193
  */
192
194
  async enableVoice(lineId, options) {
193
195
  return (await hubData(await this.http.fetch(`/v1/lines/${encodeURIComponent(lineId)}`, json("PATCH", { voice: {
194
196
  enabled: true,
195
197
  ph0ny: {
196
198
  connectionId: options.ph0nyConnectionId,
197
- agentId: options.ph0nyAgentId
199
+ agentId: options.ph0nyAgentId,
200
+ ...options.ph0nyPhoneNumberId ? { phoneNumberId: options.ph0nyPhoneNumberId } : {}
198
201
  }
199
202
  } })))).line;
200
203
  }
@@ -1,4 +1,4 @@
1
- import { t as AUTH_BUNDLE_PATHS } from "./cli-auth-bundle-xnHi1LpC.js";
1
+ import { t as AUTH_BUNDLE_PATHS } from "./cli-auth-bundle-CZfgymgf.js";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
@@ -1,6 +1,6 @@
1
- import { r as SandboxInstance } from "./sandbox-C-MO0nYW.js";
2
- import { Fn as PreviewLinkInfo, ht as EnsureDevServerOptions } from "./types-DwHQuPFG.js";
3
- import { i as Sandbox } from "./client-BFOltIeq.js";
1
+ import { r as SandboxInstance } from "./sandbox-CSFajXr_.js";
2
+ import { Fn as PreviewLinkInfo, ht as EnsureDevServerOptions } from "./types-Di0cLhOV.js";
3
+ import { i as Sandbox } from "./client-DqA0N91W.js";
4
4
 
5
5
  //#region src/agent/preview-operations.d.ts
6
6
  type AgentPreviewOptions = Pick<EnsureDevServerOptions, "sessionId" | "cwd"> & {
package/dist/runtime.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { A as CommitTaskSessionOptions, At as FileUsageOptions, Bi as SendSessionMessageRequest, Cn as ListMessagesOptions, Di as SandboxTerminalManager, Ei as SandboxTerminalInfo, Gi as SessionExecutionStatus, H as CreateTaskSessionOptions, Ji as SessionInfo, Mt as FileWriteResult, Na as WriteFileOptions, Oa as UploadProgress, Oi as SandboxTerminalRequestOptions, Ot as FileTreeOptions, Qi as SessionMessageAdmission, St as FileReadBatchResult, T as ChunkedUploadResult, Ti as SandboxTerminalCreateOptions, Tt as FileRenameResult, Ui as SessionEventStreamOptions, V as CreateSessionOptions, Vi as SentSessionMessage, Wi as SessionExecutionInfo, Zi as SessionMessage, cr as RenameOptions, fi as SandboxPortBinding, ga as TaskSessionInfo, jt as FileUsageResult, kr as SandboxEvent, kt as FileTreeResult, ma as TaskSessionCommitResult, pa as TaskSessionChanges, w as ChunkedUploadOptions, xt as FileReadBatchOptions, yi as SandboxRuntimeHealth, zi as SendSessionMessageOptions } from "./types-DwHQuPFG.js";
1
+ import { A as CommitTaskSessionOptions, At as FileUsageOptions, Bi as SendSessionMessageRequest, Cn as ListMessagesOptions, Di as SandboxTerminalManager, Ei as SandboxTerminalInfo, Gi as SessionExecutionStatus, H as CreateTaskSessionOptions, Ji as SessionInfo, Mt as FileWriteResult, Na as WriteFileOptions, Oa as UploadProgress, Oi as SandboxTerminalRequestOptions, Ot as FileTreeOptions, Qi as SessionMessageAdmission, St as FileReadBatchResult, T as ChunkedUploadResult, Ti as SandboxTerminalCreateOptions, Tt as FileRenameResult, Ui as SessionEventStreamOptions, V as CreateSessionOptions, Vi as SentSessionMessage, Wi as SessionExecutionInfo, Zi as SessionMessage, cr as RenameOptions, fi as SandboxPortBinding, ga as TaskSessionInfo, jt as FileUsageResult, kr as SandboxEvent, kt as FileTreeResult, ma as TaskSessionCommitResult, pa as TaskSessionChanges, w as ChunkedUploadOptions, xt as FileReadBatchOptions, yi as SandboxRuntimeHealth, zi as SendSessionMessageOptions } from "./types-Di0cLhOV.js";
2
2
  import { l as ScopedToken, t as TerminalStream } from "./terminal-stream-B6bUr0hj.js";
3
3
  import { c as InteractiveSessionIdentity, l as InteractiveSessionNotRunningError, r as browserInteractiveControlHolderId } from "./browser-interactive-control-controller-DRCfxOQz.js";
4
4
  import { t as BrowserInteractiveSessionController } from "./interactive-controller-ykaThYp6.js";
5
- import { _ as TimeoutError, a as FileWriteConflictError, c as NotFoundError, f as SandboxError, g as StateError, h as ServerError, l as PartialFailureError, m as SandboxFailureDetail, n as CapabilityError, p as SandboxErrorJson, s as NetworkError, t as AuthError, u as QuotaError, v as ValidationError } from "./errors-DS32ViPj.js";
6
- import { a as deriveAgentRunOutcome, i as deriveAgentResultOutcome, n as AgentRunOutcomeTracker, r as createAgentRunOutcomeTracker, t as AgentRunOutcome } from "./agent-run-outcome-BMRvIstg.js";
5
+ import { a as FileWriteConflictError, b as ValidationError, c as NotFoundError, f as SandboxError, g as StateError, h as ServerError, l as PartialFailureError, m as SandboxFailureDetail, n as CapabilityError, p as SandboxErrorJson, s as NetworkError, t as AuthError, u as QuotaError, y as TimeoutError } from "./errors-BXMXbVFO.js";
6
+ import { a as deriveAgentRunOutcome, i as deriveAgentResultOutcome, n as AgentRunOutcomeTracker, o as projectAgentTerminalRecord, r as createAgentRunOutcomeTracker, t as AgentRunOutcome } from "./agent-run-outcome-D5VVd5Ei.js";
7
7
 
8
8
  //#region src/lib/chunked-upload.d.ts
9
9
  /** The transport a caller wires this module to — {@link SandboxInstance.runtimeFetch}
@@ -135,4 +135,4 @@ declare class SandboxRuntimeClient extends SandboxRuntimeApi {
135
135
  }
136
136
  declare function createSandboxRuntimeClient(config: SandboxRuntimeClientConfig): SandboxRuntimeClient;
137
137
  //#endregion
138
- export { type AgentRunOutcome, type AgentRunOutcomeTracker, AuthError, BrowserInteractiveSessionController, CapabilityError, type ChunkedUploadOptions, type ChunkedUploadResult, type ChunkedUploadTransport, type FileReadBatchOptions, type FileReadBatchResult, type FileRenameResult, type FileTreeOptions, type FileTreeResult, FileWriteConflictError, type FileWriteResult, type InteractiveSessionIdentity, InteractiveSessionNotRunningError, type ListMessagesOptions, NetworkError, NotFoundError, PartialFailureError, QuotaError, type RenameOptions, SandboxError, type SandboxErrorJson, type SandboxEvent, type SandboxFailureDetail, SandboxRuntimeClient, type SandboxRuntimeClientConfig, type SandboxRuntimeHealth, type SandboxTerminalCreateOptions, type SandboxTerminalInfo, type SandboxTerminalManager, type SandboxTerminalRequestOptions, type ScopedToken, ServerError, type SessionEventStreamOptions, type SessionExecutionInfo, type SessionExecutionStatus, type SessionMessage, type SessionMessageAdmission, StateError, type TerminalStream, TimeoutError, type UploadProgress, ValidationError, type WriteFileOptions, browserInteractiveControlHolderId, createAgentRunOutcomeTracker, createSandboxRuntimeClient, deriveAgentResultOutcome, deriveAgentRunOutcome, uploadChunked };
138
+ export { type AgentRunOutcome, type AgentRunOutcomeTracker, AuthError, BrowserInteractiveSessionController, CapabilityError, type ChunkedUploadOptions, type ChunkedUploadResult, type ChunkedUploadTransport, type FileReadBatchOptions, type FileReadBatchResult, type FileRenameResult, type FileTreeOptions, type FileTreeResult, FileWriteConflictError, type FileWriteResult, type InteractiveSessionIdentity, InteractiveSessionNotRunningError, type ListMessagesOptions, NetworkError, NotFoundError, PartialFailureError, QuotaError, type RenameOptions, SandboxError, type SandboxErrorJson, type SandboxEvent, type SandboxFailureDetail, SandboxRuntimeClient, type SandboxRuntimeClientConfig, type SandboxRuntimeHealth, type SandboxTerminalCreateOptions, type SandboxTerminalInfo, type SandboxTerminalManager, type SandboxTerminalRequestOptions, type ScopedToken, ServerError, type SessionEventStreamOptions, type SessionExecutionInfo, type SessionExecutionStatus, type SessionMessage, type SessionMessageAdmission, StateError, type TerminalStream, TimeoutError, type UploadProgress, ValidationError, type WriteFileOptions, browserInteractiveControlHolderId, createAgentRunOutcomeTracker, createSandboxRuntimeClient, deriveAgentResultOutcome, deriveAgentRunOutcome, projectAgentTerminalRecord, uploadChunked };
package/dist/runtime.js CHANGED
@@ -1,5 +1,5 @@
1
- import { L as createAgentRunOutcomeTracker, R as deriveAgentResultOutcome, b as uploadChunked, l as SandboxRuntimeApi, t as BrowserInteractiveSessionController, z as deriveAgentRunOutcome } from "./interactive-controller-DtX6fHC6.js";
2
- import { _ as ValidationError, a as FileWriteConflictError, c as NetworkError, d as QuotaError, g as TimeoutError, h as StateError, l as NotFoundError, m as ServerError, n as CapabilityError, p as SandboxError, t as AuthError, u as PartialFailureError } from "./errors-C1c3Q6Bj.js";
1
+ import { B as projectAgentTerminalRecord, L as createAgentRunOutcomeTracker, R as deriveAgentResultOutcome, b as uploadChunked, l as SandboxRuntimeApi, t as BrowserInteractiveSessionController, z as deriveAgentRunOutcome } from "./interactive-controller-4Fo9aDih.js";
2
+ import { _ as TimeoutError, a as FileWriteConflictError, c as NetworkError, d as QuotaError, h as StateError, l as NotFoundError, m as ServerError, n as CapabilityError, p as SandboxError, t as AuthError, u as PartialFailureError, v as ValidationError } from "./errors-DMxVFCS6.js";
3
3
  import { f as combineAbortSignals, n as browserInteractiveControlHolderId, s as InteractiveSessionNotRunningError } from "./browser-interactive-control-controller-BJf0P_J4.js";
4
4
  //#region src/runtime-client.ts
5
5
  const DEFAULT_RUNTIME_TIMEOUT_MS = 3e4;
@@ -81,4 +81,4 @@ function createSandboxRuntimeClient(config) {
81
81
  return new SandboxRuntimeClient(config);
82
82
  }
83
83
  //#endregion
84
- export { AuthError, BrowserInteractiveSessionController, CapabilityError, FileWriteConflictError, InteractiveSessionNotRunningError, NetworkError, NotFoundError, PartialFailureError, QuotaError, SandboxError, SandboxRuntimeClient, ServerError, StateError, TimeoutError, ValidationError, browserInteractiveControlHolderId, createAgentRunOutcomeTracker, createSandboxRuntimeClient, deriveAgentResultOutcome, deriveAgentRunOutcome, uploadChunked };
84
+ export { AuthError, BrowserInteractiveSessionController, CapabilityError, FileWriteConflictError, InteractiveSessionNotRunningError, NetworkError, NotFoundError, PartialFailureError, QuotaError, SandboxError, SandboxRuntimeClient, ServerError, StateError, TimeoutError, ValidationError, browserInteractiveControlHolderId, createAgentRunOutcomeTracker, createSandboxRuntimeClient, deriveAgentResultOutcome, deriveAgentRunOutcome, projectAgentTerminalRecord, uploadChunked };