@tangle-network/sandbox 0.60.36-develop.20261011055857.b608789 → 0.60.36-develop.20261011062548.c10773e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.js +2 -2
- package/dist/agent/preview.d.ts +1 -1
- package/dist/{client-CO5ShEdk.d.ts → client-CPt8NJRl.d.ts} +1 -1
- package/dist/{client-B8OutXq2.js → client-_Xbp4cHc.js} +3 -3
- package/dist/core.d.ts +2 -2
- package/dist/core.js +2 -2
- package/dist/{index-DdUzvzA_.d.ts → index-DoB4GMBh.d.ts} +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.js +3 -3
- package/dist/{preview-DNAuiZly.d.ts → preview-Ce8eC44V.d.ts} +2 -2
- package/dist/{sandbox-Dw9YNtU4.d.ts → sandbox-BQf4G_7z.d.ts} +9 -1
- package/dist/{sandbox-CfGVI_xk.js → sandbox-DNwEDkL2.js} +347 -7
- package/dist/tangle/index.d.ts +1 -1
- package/dist/tangle/index.js +1 -1
- package/dist/{tangle-Dt4FMrZs.js → tangle-7nYoMui0.js} +1 -1
- package/package.json +4 -4
- package/dist/{local-cli-auth-D-_fMdNS.js → local-cli-auth-Bs0An6Cw.js} +1 -1
package/dist/agent/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { _ as SandboxSession, h as SandboxTaskSession, r as SandboxInstance } from "../sandbox-
|
|
1
|
+
import { _ as SandboxSession, h as SandboxTaskSession, r as SandboxInstance } from "../sandbox-BQf4G_7z.js";
|
|
2
2
|
import { D as CodeExecutionResult, E as CodeExecutionOptions, Ji as SessionInfo, Jr as SandboxFleetParent, O as CodeLanguage, Xi as SessionListOptions, d as BackendConfig, k as CodeResultPart, oo as BackendType } from "../types-C0XwJqxx.js";
|
|
3
|
-
import { i as Sandbox } from "../client-
|
|
4
|
-
import { u as PreviewAuthorizer } from "../preview-
|
|
3
|
+
import { i as Sandbox } from "../client-CPt8NJRl.js";
|
|
4
|
+
import { u as PreviewAuthorizer } from "../preview-Ce8eC44V.js";
|
|
5
5
|
import * as _$_modelcontextprotocol_sdk_server_index_js0 from "@modelcontextprotocol/sdk/server/index.js";
|
|
6
6
|
import { JSONSchema } from "zod/v4/core";
|
|
7
7
|
import { ToolSet } from "ai";
|
package/dist/agent/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as TOOL_SPECS, i as ALL_TOOL_SPECS, o as serializeToolResult, r as bindToolSpecs, t as createMcpServer } from "../mcp-local-DjryqUiY.js";
|
|
2
2
|
import { E as assertCurrentBackendType } from "../interactive-controller-Dxt5sW2N.js";
|
|
3
3
|
import { h as StateError, l as NotFoundError, v as ValidationError } from "../errors-Cq4hMysQ.js";
|
|
4
|
-
import { n as Sandbox } from "../client-
|
|
5
|
-
import { t as SandboxInstance } from "../sandbox-
|
|
4
|
+
import { n as Sandbox } from "../client-_Xbp4cHc.js";
|
|
5
|
+
import { t as SandboxInstance } from "../sandbox-DNwEDkL2.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
//#region src/agent/instances.ts
|
|
8
8
|
const managers = /* @__PURE__ */ new WeakMap();
|
package/dist/agent/preview.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as publishAgentPreview, a as previewOperationTool, c as AgentPreviewOptions, d as PreviewExecutionContext, f as PublishAgentPreviewOptions, g as listAgentPreviews, h as getAgentPreview, i as PreviewTool, l as PreviewAuthorizationRequest, m as ensureAgentPreview, n as PREVIEW_MCP_ALIAS, o as previewToolsForProfile, p as assertPreviewId, r as PREVIEW_TOOLS, s as AgentPreviewError, t as servePreviewMcp, u as PreviewAuthorizer, v as removeAgentPreview, y as resolveSelfSandbox } from "../preview-
|
|
1
|
+
import { _ as publishAgentPreview, a as previewOperationTool, c as AgentPreviewOptions, d as PreviewExecutionContext, f as PublishAgentPreviewOptions, g as listAgentPreviews, h as getAgentPreview, i as PreviewTool, l as PreviewAuthorizationRequest, m as ensureAgentPreview, n as PREVIEW_MCP_ALIAS, o as previewToolsForProfile, p as assertPreviewId, r as PREVIEW_TOOLS, s as AgentPreviewError, t as servePreviewMcp, u as PreviewAuthorizer, v as removeAgentPreview, y as resolveSelfSandbox } from "../preview-Ce8eC44V.js";
|
|
2
2
|
export { AgentPreviewError, AgentPreviewOptions, PREVIEW_MCP_ALIAS, PREVIEW_TOOLS, PreviewAuthorizationRequest, PreviewAuthorizer, PreviewExecutionContext, PreviewTool, PublishAgentPreviewOptions, assertPreviewId, ensureAgentPreview, getAgentPreview, listAgentPreviews, previewOperationTool, previewToolsForProfile, publishAgentPreview, removeAgentPreview, resolveSelfSandbox, servePreviewMcp };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { l as TraceExportResult, n as HttpClient, r as SandboxInstance, u as TraceExportSink } from "./sandbox-
|
|
1
|
+
import { l as TraceExportResult, n as HttpClient, r as SandboxInstance, u as TraceExportSink } from "./sandbox-BQf4G_7z.js";
|
|
2
2
|
import { $r as SandboxFleetToken, Ar as SandboxFleetAgent, B as CreateSandboxOptions, Bt as FleetDispatchStreamOptions, Ca as TokenRefreshHandler, En as ListSandboxOptions, F as CreateIntelligenceReportOptions, Ft as FleetAgentResult, G as DeleteMatchingSandboxesFilter, Gr as SandboxFleetManifest, Gt as FleetMachineId, Ht as FleetDriveTurnRequest, I as CreateRequestOptions, Ir as SandboxFleetDispatchResponse, Jn as PromptResult, Jr as SandboxFleetParent, Jt as FleetRunEvent, K as DeleteMatchingSandboxesOptions, Kn as PromptInputPart, Kt as FleetPromptDispatchOptions, L as CreateSandboxFleetOptions, Lr as SandboxFleetDriverCapability, Lt as FleetDispatchCancelResult, M as ConversationTurnOptions, Mr as SandboxFleetArtifact, N as ConversationTurnResult, Nr as SandboxFleetArtifactSpec, Nt as FleetAgentId, Or as SandboxEnvironment, Pr as SandboxFleetCostEstimate, Qr as SandboxFleetSpend, R as CreateSandboxFleetTokenOptions, Ri as SecretsManager, Rt as FleetDispatchResultBuffer, Si as SandboxShapesInfo, Tn as ListSandboxFleetOptions, Ur as SandboxFleetMachineRecord, Ut as FleetExecDispatchOptions, Vt as FleetDriveTurnOutcome, Wr as SandboxFleetMachineSpec, Wt as FleetExecDispatchResult, Xr as SandboxFleetPolicy, Yt as FleetRunOptions, _i as SandboxRunGeneration, _n as IntelligenceReport, ar as ReapExpiredSandboxFleetsResult, b as BatchRunRequest, br as SandboxConfig, ca as SshKeysManager, ci as SandboxFleetWorkspaceSnapshotResult, d as BackendConfig, ei as SandboxFleetTraceBundle, er as PublicTemplateInfo, fa as SubscriptionInfo, ii as SandboxFleetUsage, ir as ReapExpiredSandboxFleetsOptions, ka as UsageInfo, l as AttachSandboxFleetMachineOptions, li as SandboxIdentity, nr as PublishPublicTemplateOptions, oi as SandboxFleetWorkspaceReconcileResult, or as ReconcileSandboxFleetsOptions, q as DeleteMatchingSandboxesResult, qn as PromptOptions, qr as SandboxFleetOperationsSummary, qt as FleetPromptDispatchResult, ri as SandboxFleetTraceOptions, rr as PublishPublicTemplateVersionOptions, si as SandboxFleetWorkspaceRestoreResult, sr as ReconcileSandboxFleetsResult, to as BatchEvent, tr as PublicTemplateVersionInfo, ui as SandboxInfo, v as BatchResult, vn as IntelligenceReportBudget, vt as ExecOptions, xn as IntelligenceReportWindow, y as BatchRunOptions, yn as IntelligenceReportCompareTo, yt as ExecResult, z as CreateSandboxFleetWithCoordinatorOptions, zr as SandboxFleetInfo, zt as FleetDispatchResultBufferOptions } from "./types-C0XwJqxx.js";
|
|
3
3
|
import { l as ScopedToken, s as MintInteractiveSessionTokenOptions } from "./terminal-stream-CV1pMSKC.js";
|
|
4
4
|
import { I as LinesClient } from "./lines-DQmR5ypP.js";
|
|
@@ -2,7 +2,7 @@ import { r as backendTypeSchema } from "./backend-types-C7b_Gpa0.js";
|
|
|
2
2
|
import { D as foldModelRoutingFields, E as assertCurrentBackendType, M as withProfileHarness, S as encodePromptForWire, T as applyRequestedModel, k as normalizeRuntimeBackendConfig, s as requestInteractiveSessionToken, w as parseSSEStream } from "./interactive-controller-Dxt5sW2N.js";
|
|
3
3
|
import { _ as TimeoutError, b as parseResponseError, c as NetworkError, d as QuotaError, l as NotFoundError, m as ServerError, p as SandboxError, s as NON_RETRYABLE_CREATE_QUOTA_REASONS, t as AuthError, u as PartialFailureError, v as ValidationError, x as readResponseJson, y as parseErrorResponse } from "./errors-Cq4hMysQ.js";
|
|
4
4
|
import { f as combineAbortSignals } from "./browser-interactive-control-controller-BJf0P_J4.js";
|
|
5
|
-
import { A as exportTraceBundle, C as splitInlineProfileFileMounts, D as normalizeSandboxShape, E as normalizeConnection, O as rewrapResponse, T as validateDeferredProfileFileMounts, a as normalizeStartupDiagnostics, i as normalizeSandboxCreateReceipt, n as createSandboxInstanceFromResponse, r as normalizeCaptureProof, w as splitInlineProfileSkills } from "./sandbox-
|
|
5
|
+
import { A as exportTraceBundle, C as splitInlineProfileFileMounts, D as normalizeSandboxShape, E as normalizeConnection, O as rewrapResponse, T as validateDeferredProfileFileMounts, a as normalizeStartupDiagnostics, i as normalizeSandboxCreateReceipt, n as createSandboxInstanceFromResponse, r as normalizeCaptureProof, w as splitInlineProfileSkills } from "./sandbox-DNwEDkL2.js";
|
|
6
6
|
import { LinesClient } from "./lines.js";
|
|
7
7
|
import { agentProfileSchema } from "@tangle-network/agent-interface";
|
|
8
8
|
import { z } from "zod";
|
|
@@ -3323,11 +3323,11 @@ function withRequestContextHeaders(response, path, method) {
|
|
|
3323
3323
|
return rewrapResponse(response, headers);
|
|
3324
3324
|
}
|
|
3325
3325
|
async function resolveLocalCliAuthFiles(backendType) {
|
|
3326
|
-
const { discoverLocalCliAuthFiles } = await import("./local-cli-auth-
|
|
3326
|
+
const { discoverLocalCliAuthFiles } = await import("./local-cli-auth-Bs0An6Cw.js");
|
|
3327
3327
|
return discoverLocalCliAuthFiles(backendType);
|
|
3328
3328
|
}
|
|
3329
3329
|
async function describeLocalCliAuthExpectation(backendType) {
|
|
3330
|
-
const { describeLocalCliAuthExpectation: describe } = await import("./local-cli-auth-
|
|
3330
|
+
const { describeLocalCliAuthExpectation: describe } = await import("./local-cli-auth-Bs0An6Cw.js");
|
|
3331
3331
|
return describe(backendType);
|
|
3332
3332
|
}
|
|
3333
3333
|
async function hydrateLocalCliBackendAuth(backend, baseUrl, trustLocalCliAuth) {
|
package/dist/core.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as WorkspaceImagePublishRequestOptions, i as WorkspaceImagePublishInput, o as WorkspaceImagePublishResult, r as SandboxInstance, s as WorkspaceImages } from "./sandbox-
|
|
1
|
+
import { a as WorkspaceImagePublishRequestOptions, i as WorkspaceImagePublishInput, o as WorkspaceImagePublishResult, r as SandboxInstance, s as WorkspaceImages } from "./sandbox-BQf4G_7z.js";
|
|
2
2
|
import { An as NetworkConfig, B as CreateSandboxOptions, Ba as ManagedProcessResumeOptions, Ci as SandboxStatus, Fn as PreviewLinkInfo, Ha as ManagedProcessState, Ia as ManagedProcessClient, In as PreviewLinkManager, Kn as PromptInputPart, La as ManagedProcessJobs, Ln as PreviewLinkWaitOptions, M as ConversationTurnOptions, N as ConversationTurnResult, Qi as SessionMessageAdmission, Ra as ManagedProcessOptions, Ua as SandboxEnvRecovery, Va as ManagedProcessSpec, Wa as SandboxEnvRecoveryView, br as SandboxConfig, ui as SandboxInfo, vt as ExecOptions, yt as ExecResult, za as ManagedProcessRecord } from "./types-C0XwJqxx.js";
|
|
3
3
|
import { A as LineSenderVerification, B as profileChannelReference, C as LineReplyCodeInput, G as LineApplicationResult, H as LINE_APPLICATION_REQUEST_MAX_BYTES, I as LinesClient, J as parseLineApplicationRequest, K as LineApplicationState, O as LineSendInput, S as LineReplyCode, U as LineApplication, V as LINE_APPLICATION_REPLY_MAX_CHARS, W as LineApplicationRequest, Y as parseLineApplicationResult, a as LineApplicationAttachOptions, b as LineProvider, c as LineAttachmentReauthorization, d as LineInstanceAttachOptions, f as LineInstanceCreate, h as LineMemberInstance, j as LineSenderVerificationStart, k as LineSendReceipt, l as LineExecutionKey, m as LineMember, n as LineAgentRolePolicy, q as LineApplicationView, s as LineAttachment, t as Line, x as LineReminderPreferences, y as LineNumberInventory, z as lineInstanceKey } from "./lines-DQmR5ypP.js";
|
|
4
|
-
import { A as BackendRegistryEntry, C as InstancesClient, F as backendRegistryInteractionKindSchema, I as backendRegistryResponseSchema, L as isBackendRegistryInteractionKind, M as BackendRegistryResponse, N as backendRegistryCapabilitiesSchema, P as backendRegistryEntrySchema, R as parseBackendRegistryResponse, _ as EnsureInstanceOptions, b as InstanceRecord, i as Sandbox, j as BackendRegistryInteractionKind, k as BackendRegistryCapabilities, v as HostedInstance, x as InstanceRestartingError, y as InstanceProfile, z as parseBackendRegistryResponseBody } from "./client-
|
|
4
|
+
import { A as BackendRegistryEntry, C as InstancesClient, F as backendRegistryInteractionKindSchema, I as backendRegistryResponseSchema, L as isBackendRegistryInteractionKind, M as BackendRegistryResponse, N as backendRegistryCapabilitiesSchema, P as backendRegistryEntrySchema, R as parseBackendRegistryResponse, _ as EnsureInstanceOptions, b as InstanceRecord, i as Sandbox, j as BackendRegistryInteractionKind, k as BackendRegistryCapabilities, v as HostedInstance, x as InstanceRestartingError, y as InstanceProfile, z as parseBackendRegistryResponseBody } from "./client-CPt8NJRl.js";
|
|
5
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-CRssX9qs.js";
|
|
6
6
|
|
|
7
7
|
//#region src/core.d.ts
|
package/dist/core.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
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-Cq4hMysQ.js";
|
|
2
|
-
import { _ as parseBackendRegistryResponse, a as InstanceRestartingError, f as backendRegistryCapabilitiesSchema, g as isBackendRegistryInteractionKind, h as backendRegistryResponseSchema, i as HostedInstance, m as backendRegistryInteractionKindSchema, n as Sandbox, o as InstancesClient, p as backendRegistryEntrySchema, v as parseBackendRegistryResponseBody } from "./client-
|
|
3
|
-
import { o as WorkspaceImages, t as SandboxInstance, x as ManagedProcessClient } from "./sandbox-
|
|
2
|
+
import { _ as parseBackendRegistryResponse, a as InstanceRestartingError, f as backendRegistryCapabilitiesSchema, g as isBackendRegistryInteractionKind, h as backendRegistryResponseSchema, i as HostedInstance, m as backendRegistryInteractionKindSchema, n as Sandbox, o as InstancesClient, p as backendRegistryEntrySchema, v as parseBackendRegistryResponseBody } from "./client-_Xbp4cHc.js";
|
|
3
|
+
import { o as WorkspaceImages, t as SandboxInstance, x as ManagedProcessClient } from "./sandbox-DNwEDkL2.js";
|
|
4
4
|
import { LinesClient, lineInstanceKey, profileChannelReference } from "./lines.js";
|
|
5
5
|
import { i as parseLineApplicationResult, n as LINE_APPLICATION_REQUEST_MAX_BYTES, r as parseLineApplicationRequest, t as LINE_APPLICATION_REPLY_MAX_CHARS } from "./line-application-Cq6dJLBD.js";
|
|
6
6
|
//#region src/core.ts
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { A as InteractiveStopCommand, B as SandboxInteractionConflict, C as InteractiveSessionHandleOptions, D as InteractiveSessionRef, E as InteractiveSessionInfo, F as InteractiveTerminalFrameLog, G as CONTROL_PLANE_MCP_SERVER_NAME, H as SandboxInteractionResult, I as InteractiveTerminalMetadata, J as SandboxMcpEndpoint, K as SANDBOX_MCP_SERVER_NAME, L as createInteractiveTerminalCapture, M as RespondToPermissionOptions, N as agentInteractiveSessionPromptRequestDigest, O as InteractiveSessionStartOptions, P as InteractiveTerminalCapture, R as createInteractiveTerminalSession, S as InteractiveSessionHandle, T as InteractiveSessionIncarnationId, U as BuildControlPlaneMcpConfigOptions, V as SandboxInteractionResolution, W as BuildSandboxMcpConfigOptions, X as buildControlPlaneMcpConfig, Y as SandboxMcpServerEntry, Z as buildSandboxMcpConfig, _ as SandboxSession, a as WorkspaceImagePublishRequestOptions, b as InteractivePromptCommand, c as TraceExportFormat, d as buildTraceExportPayload, f as exportTraceBundle, g as RawEvidenceExport, h as SandboxTaskSession, i as WorkspaceImagePublishInput, j as InterruptResult, k as InteractiveSessionStartResult, l as TraceExportResult, m as toOtelJson, o as WorkspaceImagePublishResult, p as otelTraceIdForTangleTrace, q as SandboxMcpConfig, r as SandboxInstance, s as WorkspaceImages, t as ForkAcknowledgement, u as TraceExportSink, v as AgentInteractiveTerminalSession, w as InteractiveSessionHost, x as InteractiveSessionControlClaim, y as InteractiveControlClaimRequest, z as SandboxInteractionCommandResult } from "./sandbox-
|
|
1
|
+
import { A as InteractiveStopCommand, B as SandboxInteractionConflict, C as InteractiveSessionHandleOptions, D as InteractiveSessionRef, E as InteractiveSessionInfo, F as InteractiveTerminalFrameLog, G as CONTROL_PLANE_MCP_SERVER_NAME, H as SandboxInteractionResult, I as InteractiveTerminalMetadata, J as SandboxMcpEndpoint, K as SANDBOX_MCP_SERVER_NAME, L as createInteractiveTerminalCapture, M as RespondToPermissionOptions, N as agentInteractiveSessionPromptRequestDigest, O as InteractiveSessionStartOptions, P as InteractiveTerminalCapture, R as createInteractiveTerminalSession, S as InteractiveSessionHandle, T as InteractiveSessionIncarnationId, U as BuildControlPlaneMcpConfigOptions, V as SandboxInteractionResolution, W as BuildSandboxMcpConfigOptions, X as buildControlPlaneMcpConfig, Y as SandboxMcpServerEntry, Z as buildSandboxMcpConfig, _ as SandboxSession, a as WorkspaceImagePublishRequestOptions, b as InteractivePromptCommand, c as TraceExportFormat, d as buildTraceExportPayload, f as exportTraceBundle, g as RawEvidenceExport, h as SandboxTaskSession, i as WorkspaceImagePublishInput, j as InterruptResult, k as InteractiveSessionStartResult, l as TraceExportResult, m as toOtelJson, o as WorkspaceImagePublishResult, p as otelTraceIdForTangleTrace, q as SandboxMcpConfig, r as SandboxInstance, s as WorkspaceImages, t as ForkAcknowledgement, u as TraceExportSink, v as AgentInteractiveTerminalSession, w as InteractiveSessionHost, x as InteractiveSessionControlClaim, y as InteractiveControlClaimRequest, z as SandboxInteractionCommandResult } from "./sandbox-BQf4G_7z.js";
|
|
2
2
|
import { $ as DownloadOptions, $a as PublicBatchRunRequest, $i as SessionMessageInputPart, $n as PublicProfileConflict, $r as SandboxFleetToken, $t as GPU_LEASE_PROVIDER_NAMES, A as CommitTaskSessionOptions, Aa as WaitForOptions, Ai as SandboxTraceBundle, An as NetworkConfig, Ar as SandboxFleetAgent, At as FileUsageOptions, B as CreateSandboxOptions, Ba as ManagedProcessResumeOptions, Bi as SendSessionMessageRequest, Bn as ProcessListOptions, Br as SandboxFleetIntelligenceEnvelope, Bt as FleetDispatchStreamOptions, C as BranchOptions, Ca as TokenRefreshHandler, Ci as SandboxStatus, Cn as ListMessagesOptions, Cr as SandboxCreateReceipt, Ct as FileReadError, Da as UploadOptions, Di as SandboxTerminalManager, Dn as MAX_EGRESS_DENIALS_LIMIT, Dr as SandboxEgressUsage, Dt as FileTreeFile, Ea as UpdateUserOptions, Ei as SandboxTerminalInfo, En as ListSandboxOptions, Er as SandboxDeleteOutcome, Et as FileSystem, F as CreateIntelligenceReportOptions, Fa as WriteManyOptions, Fi as SearchMatch, Fn as PreviewLinkInfo, Fr as SandboxFleetDispatchFailureClass, Ft as FleetAgentResult, G as DeleteMatchingSandboxesFilter, Ga as RawEvidenceArchiveManifest, Gi as SessionExecutionStatus, Gn as ProcessStatus, Gr as SandboxFleetManifest, Gt as FleetMachineId, H as CreateTaskSessionOptions, Ha as ManagedProcessState, Hi as SessionBackendCredentials, Hn as ProcessManager, Hr as SandboxFleetMachineMeteredUsage, Ht as FleetDriveTurnRequest, I as CreateRequestOptions, Ia as ManagedProcessClient, Ii as SearchOptions, In as PreviewLinkManager, Ir as SandboxFleetDispatchResponse, It as FleetAgentRunStatus, J as DeleteOptions, Ja as RawEvidenceNativeFile, Ji as SessionInfo, Jn as PromptResult, Jr as SandboxFleetParent, Jt as FleetRunEvent, K as DeleteMatchingSandboxesOptions, Ka as RawEvidenceDirectoryExport, Ki as SessionFailureReason, Kn as PromptInputPart, Kr as SandboxFleetManifestMachine, Kt as FleetPromptDispatchOptions, L as CreateSandboxFleetOptions, La as ManagedProcessJobs, Li as SecretInfo, Ln as PreviewLinkWaitOptions, Lr as SandboxFleetDriverCapability, Lt as FleetDispatchCancelResult, M as ConversationTurnOptions, Ma as WorkspaceOperationLookup, Mi as SandboxTraceExport, Mn as NonHostAgentDriverConfig, Mr as SandboxFleetArtifact, Mt as FileWriteResult, N as ConversationTurnResult, Na as WriteFileOptions, Ni as SandboxTraceOptions, Nn as PermissionLevel, Nr as SandboxFleetArtifactSpec, Nt as FleetAgentId, Oa as UploadProgress, Oi as SandboxTerminalRequestOptions, On as McpServerConfig, Or as SandboxEnvironment, Ot as FileTreeOptions, P as CreateGpuLeaseOptions, Pa as WriteManyFile, Pi as SandboxUser, Pn as PermissionsManager, Pr as SandboxFleetCostEstimate, Pt as FleetAgentPlacement, Q as DispatchedSession, Qi as SessionMessageAdmission, Qn as ProvisionStep, Qr as SandboxFleetSpend, Qt as ForkLookupOptions, Ra as ManagedProcessOptions, Ri as SecretsManager, Rn as Process, Rr as SandboxFleetDriverTimings, Rt as FleetDispatchResultBuffer, S as BatchTaskResult, Sa as TeePublicKeyResponse, Si as SandboxShapesInfo, Sr as SandboxCreateOutcome, St as FileReadBatchResult, T as ChunkedUploadResult, Ta as TurnDriveResult, Ti as SandboxTerminalCreateOptions, Tn as ListSandboxFleetOptions, Tr as SandboxDeleteOptions, Tt as FileRenameResult, U as DeleteMatchingSandboxOutcome, Ua as SandboxEnvRecovery, Ui as SessionEventStreamOptions, Un as ProcessSignal, Ur as SandboxFleetMachineRecord, Ut as FleetExecDispatchOptions, V as CreateSessionOptions, Va as ManagedProcessSpec, Vi as SentSessionMessage, Vn as ProcessLogEntry, Vr as SandboxFleetMachine, Vt as FleetDriveTurnOutcome, W as DeleteMatchingSandboxResult, Wa as SandboxEnvRecoveryView, Wi as SessionExecutionInfo, Wn as ProcessSpawnOptions, Wr as SandboxFleetMachineSpec, X as DirectoryPermission, Xa as RawEvidenceRecordsFile, Xi as SessionListOptions, Xn as ProvisionResult, Xr as SandboxFleetPolicy, Xt as ForkCounts, Y as DevServerInfo, Ya as RawEvidencePayloadFile, Yi as SessionInterruptOptions, Yn as ProvisionEvent, Yr as SandboxFleetPlacement, Yt as FleetRunOptions, Z as DispatchPromptOptions, Zi as SessionMessage, Zn as ProvisionStatus, Zr as SandboxFleetProfileRef, Zt as ForkIdempotency, _ as BatchBackend, _a as TaskSessionProfile, _i as SandboxRunGeneration, _n as IntelligenceReport, _r as RolloutTurnPart, _t as ExactProcessSpawnOptions, aa as SnapshotInfo, ai as SandboxFleetWorkspace, an as GitStatus, ao as ALL_BACKEND_TYPES, ar as ReapExpiredSandboxFleetsResult, at as DriverType, b as BatchRunRequest, ba as TeeAttestationResponse, bi as SandboxShape, bn as IntelligenceReportSubjectType, br as SandboxConfig, bt as FileInfo, c as AttachGpuLeaseOptions, ci as SandboxFleetWorkspaceSnapshotResult, cn as GpuLeaseCommandResult, cr as RenameOptions, d as BackendConfig, da as StorageConfig, di as SandboxIntelligenceEnvelope, dn as GpuLeaseManager, dr as Rollout, dt as EffectiveBackendSource, ea as SessionResultOptions, ei as SandboxFleetTraceBundle, en as GitAuth, eo as BatchBackendStats, er as PublicTemplateInfo, et as DownloadProgress, f as BackendInfo, fa as SubscriptionInfo, fi as SandboxPortBinding, fn as GpuLeaseProviderName, fr as RolloutChildResult, ft as EgressDenial, g as BackendStatus, ga as TaskSessionInfo, gi as SandboxResources, gn as InstalledTool, gr as RolloutStatus, gt as EventStreamOptions, h as BackendRuntimeConfigUpdate, ha as TaskSessionFileChange, hi as SandboxResourceUsage, hn as HostAgentRuntimeBackend, hr as RolloutStartResult, ht as EnsureDevServerOptions, ia as SnapshotIdempotency, ii as SandboxFleetUsage, in as GitDiff, io as BatchTaskUsage, ir as ReapExpiredSandboxFleetsOptions, it as DriverInfo, j as CompletedTurnResult, ja as WaitForRolloutOptions, ji as SandboxTraceEvent, jn as NetworkManager, jr as SandboxFleetAgentSpec, jt as FileUsageResult, ka as UsageInfo, ki as SandboxTerminals, kn as MkdirOptions, kr as SandboxEvent, kt as FileTreeResult, l as AttachSandboxFleetMachineOptions, la as StartupDiagnostics, li as SandboxIdentity, ln as GpuLeaseExecOptions, lt as EffectiveBackend, m as BackendMcpServerStatus, ma as TaskSessionCommitResult, mi as SandboxRemovalState, mn as HostAgentDriverConfig, mr as RolloutScorer, mt as EgressPolicy, n as AccessPolicyRule, na as SnapshotDeleteAcknowledgement, ni as SandboxFleetTraceExport, nn as GitCommit, no as BatchEventDataMap, nr as PublishPublicTemplateOptions, nt as DriveTurnOptions, oa as SnapshotOptions, oi as SandboxFleetWorkspaceReconcileResult, on as GpuLease, oo as BackendType, or as ReconcileSandboxFleetsOptions, ot as DurablePlan, p as BackendManager, pa as TaskSessionChanges, pi as SandboxPortPreviewLink, pn as GpuLeaseStatus, pr as RolloutOptions, pt as EgressManager, q as DeleteMatchingSandboxesResult, qa as RawEvidenceExportOptions, qi as SessionForkOptions, qn as PromptOptions, qr as SandboxFleetOperationsSummary, qt as FleetPromptDispatchResult, r as AddUserOptions, ra as SnapshotDeleteOutcome, ri as SandboxFleetTraceOptions, rn as GitConfig, ro as BatchSidecarGroup, rr as PublishPublicTemplateVersionOptions, rt as DriverConfig, sa as SnapshotResult, si as SandboxFleetWorkspaceRestoreResult, sn as GpuLeaseBilling, so as parseBackendType, sr as ReconcileSandboxFleetsResult, st as DurablePlanDecisionResult, t as AcceleratorKind, ta as SessionStatus, ti as SandboxFleetTraceEvent, tn as GitBranch, to as BatchEvent, tr as PublicTemplateVersionInfo, tt as DownloadResult, u as BackendCapabilities, ua as StartupOperation, ui as SandboxInfo, un as GpuLeaseExecResult, ut as EffectiveBackendProfile, v as BatchResult, va as TeeAttestationOptions, vi as SandboxRuntimeCapabilities, vn as IntelligenceReportBudget, vr as SSHCommandDescriptor, vt as ExecOptions, w as ChunkedUploadOptions, wa as TokenUsage, wi as SandboxTerminalAttachOptions, wn as ListOptions, wr as SandboxDeleteAcknowledgement, wt as FileReadResult, x as BatchTask, xa as TeePublicKey, xi as SandboxShapePreset, xn as IntelligenceReportWindow, xr as SandboxConnection, xt as FileReadBatchOptions, y as BatchRunOptions, ya as TeeAttestationReport, yi as SandboxRuntimeHealth, yn as IntelligenceReportCompareTo, yr as SSHCredentials, yt as ExecResult, z as CreateSandboxFleetWithCoordinatorOptions, za as ManagedProcessRecord, zi as SendSessionMessageOptions, zn as ProcessInfo, zr as SandboxFleetInfo, zt as FleetDispatchResultBufferOptions } from "./types-C0XwJqxx.js";
|
|
3
3
|
import { c as MintScopedTokenOptions, d as TERMINAL_WS_ECHO_SUBPROTOCOL, f as TerminalExitInfo, g as TerminalStreamAuthFormat, h as TerminalReadyInfo, i as TerminalStreamOptions, l as ScopedToken, m as TerminalOutputMessage, n as TerminalStreamError, o as TerminalStreamToken, p as TerminalInteractiveSessionIdentity, r as TerminalStreamHandlers, s as MintInteractiveSessionTokenOptions, t as TerminalStream, u as ScopedTokenScope } from "./terminal-stream-CV1pMSKC.js";
|
|
4
4
|
import { a as InteractiveSessionControlController, c as InteractiveSessionIdentity, d as interactiveSessionIdentityDigest, f as InteractiveAttachOptions, g as InteractiveSessionStatus, h as InteractiveRequestOptions, i as INTERACTIVE_CONTROL_CLEANUP_TIMEOUT_MS, l as InteractiveSessionNotRunningError, m as InteractiveControlClaimOptions, n as BrowserInteractiveSessionControlControllerOptions, o as InteractiveSessionControlControllerOptions, p as InteractiveControlClaimAcknowledgement, r as browserInteractiveControlHolderId, s as InteractiveSessionControlTransport, t as BrowserInteractiveSessionControlController, u as createInteractiveControlHolderId } from "./browser-interactive-control-controller-JUW3gOGH.js";
|
|
5
5
|
import { a as InteractiveSessionControllerOptions, i as InteractiveSessionController, n as BrowserInteractiveSessionControllerOptions, o as InteractiveSessionControllerTransport, r as InteractiveAttachRequest, t as BrowserInteractiveSessionController } from "./interactive-controller-DNbLzamS.js";
|
|
6
6
|
import { A as LineSenderVerification, B as profileChannelReference, C as LineReplyCodeInput, D as LineRole, E as LineRespondView, F as LineVoiceOptions, G as LineApplicationResult, H as LINE_APPLICATION_REQUEST_MAX_BYTES, I as LinesClient, J as parseLineApplicationRequest, K as LineApplicationState, M as LineThread, N as LineTransport, O as LineSendInput, P as LineVoice, R as SandboxLines, S as LineReplyCode, T as LineRespondAgent, U as LineApplication, V as LINE_APPLICATION_REPLY_MAX_CHARS, W as LineApplicationRequest, Y as parseLineApplicationResult, _ 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, q as LineApplicationView, 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-DQmR5ypP.js";
|
|
7
|
-
import { A as BackendRegistryEntry, C as InstancesClient, D as ParsedSSEEvent, E as ParseSSEStreamOptions, F as backendRegistryInteractionKindSchema, I as backendRegistryResponseSchema, L as isBackendRegistryInteractionKind, M as BackendRegistryResponse, N as backendRegistryCapabilitiesSchema, O as parseSSEStream, P as backendRegistryEntrySchema, R as parseBackendRegistryResponse, S as InstanceStart, T as SandboxFleetClient, _ as EnsureInstanceOptions, a as Team, b as InstanceRecord, c as SessionBroadcastEvent, d as RunPlacement, f as RunPlacementRecord, g as RunsHttpClient, h as RunsClient, i as Sandbox, j as BackendRegistryInteractionKind, k as BackendRegistryCapabilities, l as SessionBroadcastResult, m as RunWaitOptions, n as IntelligenceClient, o as TeamInvitation, p as RunRecord, r as InviteTeamMemberOptions, s as TeamMember, t as CreateTeamOptions, u as RunOptions, v as HostedInstance, w as SandboxFleet, x as InstanceRestartingError, y as InstanceProfile, z as parseBackendRegistryResponseBody } from "./client-
|
|
7
|
+
import { A as BackendRegistryEntry, C as InstancesClient, D as ParsedSSEEvent, E as ParseSSEStreamOptions, F as backendRegistryInteractionKindSchema, I as backendRegistryResponseSchema, L as isBackendRegistryInteractionKind, M as BackendRegistryResponse, N as backendRegistryCapabilitiesSchema, O as parseSSEStream, P as backendRegistryEntrySchema, R as parseBackendRegistryResponse, S as InstanceStart, T as SandboxFleetClient, _ as EnsureInstanceOptions, a as Team, b as InstanceRecord, c as SessionBroadcastEvent, d as RunPlacement, f as RunPlacementRecord, g as RunsHttpClient, h as RunsClient, i as Sandbox, j as BackendRegistryInteractionKind, k as BackendRegistryCapabilities, l as SessionBroadcastResult, m as RunWaitOptions, n as IntelligenceClient, o as TeamInvitation, p as RunRecord, r as InviteTeamMemberOptions, s as TeamMember, t as CreateTeamOptions, u as RunOptions, v as HostedInstance, w as SandboxFleet, x as InstanceRestartingError, y as InstanceProfile, z as parseBackendRegistryResponseBody } from "./client-CPt8NJRl.js";
|
|
8
8
|
import { _ as StreamInterruptedError, a as FileWriteConflictError, b as ValidationError, c as NotFoundError, d as ResumeEnvRequiredError, f as SandboxError, g as StateError, h as ServerError, i as EgressProxyRecoveryError, l as PartialFailureError, m as SandboxFailureDetail, n as CapabilityError, o as KeyBudgetExhaustedError, p as SandboxErrorJson, r as EdgeNotReadyError, s as NetworkError, t as AuthError, u as QuotaError, v as StreamInterruptionReason, y as TimeoutError } from "./errors-CRssX9qs.js";
|
|
9
9
|
import { d as AnyTokenPayload, h as IssueCollaborationTokenOptions, m as CollaborationTokenPayload, p as CollaborationAccess } from "./index-BgmgfYZZ.js";
|
|
10
10
|
import { _ as CollaborationTransportConfig, a as CollaborationClient, c as CollaborationClientConfig, d as CollaborationDocumentRef, f as CollaborationFileBridgeOptions, g as CollaborationTokenRefreshResponse, h as CollaborationTokenRefreshRequest, i as parseCollaborationDocumentId, l as CollaborationDocumentAdapter, m as CollaborationPermissions, n as buildCollaborationDocumentId, o as CollaborationBootstrapRequest, p as CollaborationFileEvent, r as normalizeCollaborationPath, s as CollaborationBootstrapResponse, t as CollaborationFileBridge, u as CollaborationDocumentChange, v as SaveCollaborationSnapshotRequest, y as SaveCollaborationSnapshotResponse } from "./index-DHuHjNie.js";
|
|
11
11
|
import { a as deriveAgentRunOutcome, i as deriveAgentResultOutcome, n as AgentRunOutcomeTracker, o as projectAgentTerminalRecord, r as createAgentRunOutcomeTracker, t as AgentRunOutcome } from "./agent-run-outcome-C0CsZPED.js";
|
|
12
|
-
import { b as TangleSandboxClientConfig, h as TangleSandboxClient } from "./index-
|
|
12
|
+
import { b as TangleSandboxClientConfig, h as TangleSandboxClient } from "./index-DoB4GMBh.js";
|
|
13
13
|
import * as _$_tangle_network_agent_interface0 from "@tangle-network/agent-interface";
|
|
14
14
|
import { AgentProfile, AgentProfile as AgentProfile$1, AgentProfileCapabilities, AgentProfileConfidential, AgentProfileConfigValue, AgentProfileConnection, AgentProfileFileMount, AgentProfileFileMount as AgentProfileFileMount$1, AgentProfileMcpServer, AgentProfileModelHints, AgentProfilePermissionValue, AgentProfilePrompt, AgentProfileResourceRef, AgentProfileResources, AgentProfileSecurityPolicy, AgentProfileValidationIssue, AgentProfileValidationResult, AgentRunCancellationAcknowledgement, AgentRunCancellationRequest, AgentSubagentProfile, Capability, SANDBOX_SIZE_PRESET_NAMES, SandboxSizePreset } from "@tangle-network/agent-interface";
|
|
15
15
|
import { z } from "zod";
|
|
@@ -4140,6 +4140,13 @@ type ProfileFileMountBox = {
|
|
|
4140
4140
|
*/
|
|
4141
4141
|
uploadData?: FileSystem["uploadData"];
|
|
4142
4142
|
};
|
|
4143
|
+
/**
|
|
4144
|
+
* Optional box runtime HTTP transport — the same fetch `/agents/profiles`
|
|
4145
|
+
* rides. Backs the profile-bundle cache claim/publish protocol; a box
|
|
4146
|
+
* without it (foreign implementations, tests) always takes the legacy
|
|
4147
|
+
* staged path and never claims or publishes.
|
|
4148
|
+
*/
|
|
4149
|
+
runtimeFetch?: (endpoint: string, init?: RequestInit) => Promise<Response>;
|
|
4143
4150
|
};
|
|
4144
4151
|
/**
|
|
4145
4152
|
* Synchronous pre-flight validation of deferred inline mounts: the same
|
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
2
|
import { A as requestedPublicProfileDigest, F as deriveAgentResultOutcome, I as deriveAgentRunOutcome, L as projectAgentTerminalRecord, P as createAgentRunOutcomeTracker, a as TERMINAL_WS_ECHO_SUBPROTOCOL, i as TerminalStreamError, k as normalizeRuntimeBackendConfig, n as InteractiveSessionController, r as TerminalStream, t as BrowserInteractiveSessionController, w as parseSSEStream } from "./interactive-controller-Dxt5sW2N.js";
|
|
3
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-Cq4hMysQ.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-
|
|
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-_Xbp4cHc.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-
|
|
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-DNwEDkL2.js";
|
|
7
7
|
import { LinesClient, SandboxLines, lineInstanceKey, profileChannelReference } from "./lines.js";
|
|
8
8
|
import { a as CollaborationClient, i as parseCollaborationDocumentId, n as buildCollaborationDocumentId, r as normalizeCollaborationPath, t as CollaborationFileBridge } from "./collaboration-DaWEv29D.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-Cq6dJLBD.js";
|
|
10
|
-
import { s as TangleSandboxClient } from "./tangle-
|
|
10
|
+
import { s as TangleSandboxClient } from "./tangle-7nYoMui0.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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as SandboxInstance } from "./sandbox-
|
|
1
|
+
import { r as SandboxInstance } from "./sandbox-BQf4G_7z.js";
|
|
2
2
|
import { Fn as PreviewLinkInfo, ht as EnsureDevServerOptions } from "./types-C0XwJqxx.js";
|
|
3
|
-
import { i as Sandbox } from "./client-
|
|
3
|
+
import { i as Sandbox } from "./client-CPt8NJRl.js";
|
|
4
4
|
|
|
5
5
|
//#region src/agent/preview-operations.d.ts
|
|
6
6
|
type AgentPreviewOptions = Pick<EnsureDevServerOptions, "sessionId" | "cwd"> & {
|
|
@@ -1875,7 +1875,15 @@ declare class SandboxInstance {
|
|
|
1875
1875
|
private ensureRunning;
|
|
1876
1876
|
private ensureRunningForPrompt;
|
|
1877
1877
|
private assertFilesystemIncarnationReady;
|
|
1878
|
-
|
|
1878
|
+
/**
|
|
1879
|
+
* One authenticated runtime HTTP call for this sandbox, relative endpoint
|
|
1880
|
+
* (`/agents/...`), scoped to the current filesystem incarnation. This is
|
|
1881
|
+
* the transport `/agents/profiles` rides and the box surface mount
|
|
1882
|
+
* delivery uses for profile-bundle cache claim/publish.
|
|
1883
|
+
*/
|
|
1884
|
+
runtimeFetch(path: string, options?: RequestInit, fetchOptions?: {
|
|
1885
|
+
timeoutMs?: number;
|
|
1886
|
+
}): Promise<Response>;
|
|
1879
1887
|
/**
|
|
1880
1888
|
* Delegates to the shared `parseSSEStream` in `lib/sse-parser.ts`
|
|
1881
1889
|
* — one canonical SSE implementation for the whole SDK. The
|
|
@@ -9,6 +9,10 @@ import { AgentExactRunControlRefSchema, AgentInteractiveSessionAttachSchema, Age
|
|
|
9
9
|
import { z } from "zod";
|
|
10
10
|
import { AgentInteractiveSessionControlClaimSchema as AgentInteractiveSessionControlClaimSchema$1, AgentInteractiveSessionPromptAcknowledgementSchema as AgentInteractiveSessionPromptAcknowledgementSchema$1, AgentInteractiveSessionRefSchema as AgentInteractiveSessionRefSchema$1, AgentInteractiveSessionStatusSchema, AgentInteractiveSessionStopAcknowledgementSchema as AgentInteractiveSessionStopAcknowledgementSchema$1 } from "@tangle-network/agent-interface/environment-interactive-control";
|
|
11
11
|
import { readTokenCostUsd, readTokenUsage } from "@tangle-network/agent-core";
|
|
12
|
+
import { createHash } from "node:crypto";
|
|
13
|
+
import { constants } from "node:fs";
|
|
14
|
+
import "node:path";
|
|
15
|
+
import "node:fs/promises";
|
|
12
16
|
//#region src/trace-exporter.ts
|
|
13
17
|
function buildTraceExportPayload(bundle, format = "tangle", serviceName = "tangle-sandbox") {
|
|
14
18
|
if (format === "tangle") return bundle;
|
|
@@ -327,7 +331,7 @@ const UNDECIDED_WRITE_STATUSES = new Set([
|
|
|
327
331
|
504
|
|
328
332
|
]);
|
|
329
333
|
const PROFILE_FILE_MOUNT_PACE_MS = 0;
|
|
330
|
-
const PROFILE_BIN_DIR_RE = /(^|\/)(s?bin)\//;
|
|
334
|
+
const PROFILE_BIN_DIR_RE$1 = /(^|\/)(s?bin)\//;
|
|
331
335
|
const PROFILE_AGENT_HOME = ["/home", "agent"].join("/");
|
|
332
336
|
/**
|
|
333
337
|
* Wire budget for a single-shot `POST /files/write` of a mount.
|
|
@@ -476,8 +480,27 @@ function fileApiTarget(mount, absolutePrefixes) {
|
|
|
476
480
|
if (mount.path.length === 0) return null;
|
|
477
481
|
return mount.path;
|
|
478
482
|
}
|
|
483
|
+
/**
|
|
484
|
+
* The delivery target exactly as the staged manifest's `path` computes it:
|
|
485
|
+
* the file-API target when the box exposes writeMany, else the mount path.
|
|
486
|
+
* The publish manifest's `target` must match this byte-for-byte — the host
|
|
487
|
+
* re-admits delivered bundles by reading the bytes at these paths.
|
|
488
|
+
*/
|
|
489
|
+
function profileFileDeliveryTarget(box, mount) {
|
|
490
|
+
return stagedProfileFileTarget(box, mount, DEFAULT_PROFILE_FILE_API_ABSOLUTE_PREFIXES);
|
|
491
|
+
}
|
|
492
|
+
function stagedProfileFileTarget(box, mount, absolutePrefixes) {
|
|
493
|
+
return typeof box.fs?.writeMany === "function" ? fileApiTarget(mount, absolutePrefixes) ?? mount.path : mount.path;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* The exact content bytes of an inline mount — the bytes the staged
|
|
497
|
+
* manifest's sha256 covers and the bundle manifest's `sizeBytes` sums.
|
|
498
|
+
*/
|
|
499
|
+
function inlineProfileFileContent(mount) {
|
|
500
|
+
return inlineContent(mount);
|
|
501
|
+
}
|
|
479
502
|
function isExecutableProfileFile(mount) {
|
|
480
|
-
return mount.executable ?? PROFILE_BIN_DIR_RE.test(mount.path);
|
|
503
|
+
return mount.executable ?? PROFILE_BIN_DIR_RE$1.test(mount.path);
|
|
481
504
|
}
|
|
482
505
|
function profileFileMode(mount) {
|
|
483
506
|
return isExecutableProfileFile(mount) ? 493 : void 0;
|
|
@@ -808,7 +831,8 @@ async function materializeAbsentProfileFiles(box, files, options) {
|
|
|
808
831
|
const stage = `.sandbox-profile-${globalThis.crypto.randomUUID()}`;
|
|
809
832
|
const absolutePrefixes = normalizeAbsolutePrefixes(options.fileApiAbsolutePrefixes ?? DEFAULT_PROFILE_FILE_API_ABSOLUTE_PREFIXES);
|
|
810
833
|
const manifest = await Promise.all(files.map(async (mount) => ({
|
|
811
|
-
path:
|
|
834
|
+
path: stagedProfileFileTarget(box, mount, absolutePrefixes),
|
|
835
|
+
mountPath: mount.path,
|
|
812
836
|
sha256: await sha256Hex(inlineContent(mount)),
|
|
813
837
|
mode: profileFileMode(mount) ?? 420
|
|
814
838
|
})));
|
|
@@ -2050,27 +2074,270 @@ function waitForReconnect(ms, signal) {
|
|
|
2050
2074
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
2051
2075
|
});
|
|
2052
2076
|
}
|
|
2077
|
+
const CODEX_SYSTEM_PROMPT_FILE = ".codex/system-prompt.md";
|
|
2078
|
+
const OPENCODE_APPEND_SYSTEM_PROMPT_FILE = ".opencode/agent-system-prompt.md";
|
|
2079
|
+
const OPENCODE_CONFIG_FILE = "opencode.json";
|
|
2080
|
+
/** Project context file each harness actually reads from cwd. NEVER a constant. */
|
|
2081
|
+
const CONTEXT_FILE = {
|
|
2082
|
+
"claude-code": "CLAUDE.md",
|
|
2083
|
+
nanoclaw: "CLAUDE.md",
|
|
2084
|
+
codex: "AGENTS.md",
|
|
2085
|
+
opencode: ".opencode/profile-instructions.md",
|
|
2086
|
+
"kimi-code": "AGENTS.md",
|
|
2087
|
+
pi: "AGENTS.md",
|
|
2088
|
+
prime: "AGENTS.md",
|
|
2089
|
+
gemini: "GEMINI.md",
|
|
2090
|
+
hermes: "HERMES.md",
|
|
2091
|
+
openclaw: "AGENTS.md"
|
|
2092
|
+
};
|
|
2093
|
+
/**
|
|
2094
|
+
* The paths a profile resource may never mount.
|
|
2095
|
+
*
|
|
2096
|
+
* Codex names no system-prompt file of its own — `model_instructions_file`
|
|
2097
|
+
* takes whatever path it is given — and opencode names none either, since it
|
|
2098
|
+
* reads exactly the files its config lists. All three names below were chosen
|
|
2099
|
+
* here, so a file already at one of them is this materializer's own output from
|
|
2100
|
+
* an earlier application into the same workspace, and a mount there could not
|
|
2101
|
+
* survive the next application.
|
|
2102
|
+
*
|
|
2103
|
+
* That is an inference from the path name, not verified provenance: nothing
|
|
2104
|
+
* checks the existing bytes are prior materializer output, so a workspace that
|
|
2105
|
+
* carried a foreign file at one of these invented names is overwritten on the
|
|
2106
|
+
* first application. Accepted cost of stateless multi-turn re-application,
|
|
2107
|
+
* bounded by the names being ones no harness or user convention uses.
|
|
2108
|
+
*/
|
|
2109
|
+
const MATERIALIZER_RESERVED_PATHS = new Set([
|
|
2110
|
+
CODEX_SYSTEM_PROMPT_FILE,
|
|
2111
|
+
OPENCODE_APPEND_SYSTEM_PROMPT_FILE,
|
|
2112
|
+
CONTEXT_FILE.opencode
|
|
2113
|
+
]);
|
|
2114
|
+
/** Every path any harness reads as its project context file. */
|
|
2115
|
+
const CONTEXT_FILE_PATHS = new Set(Object.values(CONTEXT_FILE));
|
|
2116
|
+
/**
|
|
2117
|
+
* The context files this package owns by MARKER rather than by name:
|
|
2118
|
+
* `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `HERMES.md`.
|
|
2119
|
+
*
|
|
2120
|
+
* Each is a documented name a repository can already carry, so the name proves
|
|
2121
|
+
* nothing. A generated one carries the line {@link markMaterializerContextFile}
|
|
2122
|
+
* writes, and only that line lets the next materialization replace it.
|
|
2123
|
+
*
|
|
2124
|
+
* opencode's context file is absent because it is a RESERVED name this package
|
|
2125
|
+
* invented, already owned by the name alone.
|
|
2126
|
+
*/
|
|
2127
|
+
const MATERIALIZER_CONTEXT_PATHS = new Set([...CONTEXT_FILE_PATHS].filter((path) => !MATERIALIZER_RESERVED_PATHS.has(path)));
|
|
2128
|
+
new Set([
|
|
2129
|
+
...MATERIALIZER_RESERVED_PATHS,
|
|
2130
|
+
...MATERIALIZER_CONTEXT_PATHS,
|
|
2131
|
+
OPENCODE_CONFIG_FILE
|
|
2132
|
+
]);
|
|
2133
|
+
/** The one provenance token every generated-file marker carries. */
|
|
2134
|
+
const MATERIALIZER_MARKER = "tangle-agent-profile-materialize: generated";
|
|
2135
|
+
`${MATERIALIZER_MARKER}`;
|
|
2136
|
+
const MATERIALIZER_CONTEXT_MARKER_NOTE = "do not edit; the next profile materialization replaces this file";
|
|
2137
|
+
`${MATERIALIZER_MARKER}`;
|
|
2138
|
+
`${MATERIALIZER_CONTEXT_MARKER_NOTE}`;
|
|
2139
|
+
//#endregion
|
|
2140
|
+
//#region ../../../packages/agent-profile-materialize/dist/workspace-files.js
|
|
2141
|
+
const compareStrings = (a, b) => a < b ? -1 : a > b ? 1 : 0;
|
|
2142
|
+
constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | (typeof constants.O_NOFOLLOW === "number" ? constants.O_NOFOLLOW : 0);
|
|
2143
|
+
//#endregion
|
|
2144
|
+
//#region ../../../packages/agent-profile-materialize/dist/plan-types.js
|
|
2145
|
+
/**
|
|
2146
|
+
* The subset of {@link BINDABLE_LAUNCH_CONTROLS} the plan HANDS OVER rather than
|
|
2147
|
+
* executes: controls a caller reaches only by composing the harness's own
|
|
2148
|
+
* configuration, so no file, flag or env var the plan writes can touch them.
|
|
2149
|
+
*
|
|
2150
|
+
* - `opencode.agent-prompt` — opencode's `agent.<name>.prompt` config field,
|
|
2151
|
+
* the one control that replaces its built-in provider prompt. It binds to a
|
|
2152
|
+
* SINGLE agent, and the agent is chosen at launch. A caller that builds
|
|
2153
|
+
* opencode's config itself and picks the agent there reads neither
|
|
2154
|
+
* `plan.files` nor `plan.flags`, so for that one the plan names the control
|
|
2155
|
+
* and hands over the text in {@link WorkspacePlan.systemPromptBinding}.
|
|
2156
|
+
*
|
|
2157
|
+
* Every other bindable control names a capability the plan still lowers itself
|
|
2158
|
+
* once the caller has declared the plan's launch inputs really reach the spawn.
|
|
2159
|
+
*/
|
|
2160
|
+
const EXECUTOR_SYSTEM_PROMPT_BINDINGS = ["opencode.agent-prompt"];
|
|
2161
|
+
new Set(EXECUTOR_SYSTEM_PROMPT_BINDINGS);
|
|
2162
|
+
/**
|
|
2163
|
+
* Launcher controls an executor can declare it OWNS via `materializeProfile`'s
|
|
2164
|
+
* `binds` option.
|
|
2165
|
+
*
|
|
2166
|
+
* Some harness controls live outside any workspace: opencode's exact
|
|
2167
|
+
* system-prompt replacement (`agent.<name>.prompt`) binds to the ONE agent
|
|
2168
|
+
* whoever starts the process selects, which a plan-forwarding executor cannot
|
|
2169
|
+
* guarantee — so the plan refuses the intent (harnessSystemPromptIntents in
|
|
2170
|
+
* @tangle-network/agent-interface answers `replace: false` for opencode).
|
|
2171
|
+
*
|
|
2172
|
+
* The two declarations describe the two executor shapes that CAN reach it, and
|
|
2173
|
+
* each gets the lowering it can actually apply:
|
|
2174
|
+
*
|
|
2175
|
+
* - `systemPrompt` — the executor applies the plan's launch flags to the
|
|
2176
|
+
* spawn it owns, so the plan writes the generated `mode: primary` agent and
|
|
2177
|
+
* selects it with `--agent`.
|
|
2178
|
+
* - `opencode.agent-prompt` — the executor composes opencode's own config and
|
|
2179
|
+
* picks the agent there, reading neither plan files nor plan flags, so the
|
|
2180
|
+
* plan hands the text over in {@link WorkspacePlan.systemPromptBinding}
|
|
2181
|
+
* instead of writing a workspace agent that would never be selected.
|
|
2182
|
+
*
|
|
2183
|
+
* They are mutually exclusive claims about the same caller: declaring both is a
|
|
2184
|
+
* caller bug, not a broader capability.
|
|
2185
|
+
*/
|
|
2186
|
+
const BINDABLE_LAUNCH_CONTROLS = ["systemPrompt", ...EXECUTOR_SYSTEM_PROMPT_BINDINGS];
|
|
2187
|
+
new Set(BINDABLE_LAUNCH_CONTROLS);
|
|
2188
|
+
new TextDecoder("utf-8", {
|
|
2189
|
+
fatal: true,
|
|
2190
|
+
ignoreBOM: true
|
|
2191
|
+
});
|
|
2192
|
+
//#endregion
|
|
2193
|
+
//#region ../../../packages/agent-profile-materialize/dist/resource-resolution.js
|
|
2194
|
+
function describeUnresolvedRef(r) {
|
|
2195
|
+
const name = typeof r.name === "string" ? r.name : void 0;
|
|
2196
|
+
const path = typeof r.path === "string" ? r.path : void 0;
|
|
2197
|
+
if (name && path) return `"${name}" (${path})`;
|
|
2198
|
+
if (name) return `"${name}"`;
|
|
2199
|
+
if (path) return `"${path}"`;
|
|
2200
|
+
return "resource";
|
|
2201
|
+
}
|
|
2202
|
+
/** Resolve inline bytes already present on the profile. Remote resources must
|
|
2203
|
+
* be resolved by {@link resolveAgentProfileResources} before materialization.
|
|
2204
|
+
*
|
|
2205
|
+
* FAIL-CLOSED: a ref that declares `kind: "inline"` is asserting its bytes are
|
|
2206
|
+
* already resolved, so missing/non-string `content` is a caller bug, not an
|
|
2207
|
+
* empty file — silently coercing it (`String(content ?? "")`) would produce a
|
|
2208
|
+
* file that "looks provisioned, loads nothing", exactly the trap this module's
|
|
2209
|
+
* docstring warns against. */
|
|
2210
|
+
function resolveInlineRef(ref) {
|
|
2211
|
+
const r = ref;
|
|
2212
|
+
if (typeof r.content === "string") return {
|
|
2213
|
+
name: String(r.name ?? r.path ?? "resource"),
|
|
2214
|
+
content: r.content
|
|
2215
|
+
};
|
|
2216
|
+
if (r.kind === "inline") throw new Error(`Profile resource ${describeUnresolvedRef(r)} declares kind "inline" but has no string content`);
|
|
2217
|
+
return null;
|
|
2218
|
+
}
|
|
2219
|
+
Object.freeze({ async get() {} });
|
|
2220
|
+
//#endregion
|
|
2221
|
+
//#region ../../../packages/agent-profile-materialize/dist/profile-bundle-key.js
|
|
2222
|
+
const PROFILE_BUNDLE_SCHEMA = "agent-profile-bundle/v1";
|
|
2223
|
+
const PROFILE_BIN_DIR_RE = /(^|\/)(s?bin)\//;
|
|
2224
|
+
/**
|
|
2225
|
+
* Derive the canonical bundle file entry for one inline mount. The sha256 is
|
|
2226
|
+
* computed over the exact inline content bytes and the mode mirrors the SDK's
|
|
2227
|
+
* `profileFileMode`/`isExecutableProfileFile`: `mount.executable` wins when
|
|
2228
|
+
* present, otherwise a path under a `bin/` or `sbin/` directory is executable.
|
|
2229
|
+
* A mount whose resource is not inline is a caller bug and throws, matching
|
|
2230
|
+
* the fail-closed discipline of {@link resolveInlineRef}.
|
|
2231
|
+
*/
|
|
2232
|
+
function profileBundleFileEntry(mount) {
|
|
2233
|
+
const resolved = resolveInlineRef(mount.resource);
|
|
2234
|
+
if (resolved === null) throw new Error(`profileBundleFileEntry: ${mount.path} requires an inline resource`);
|
|
2235
|
+
const executable = mount.executable ?? PROFILE_BIN_DIR_RE.test(mount.path);
|
|
2236
|
+
return {
|
|
2237
|
+
mountPath: mount.path,
|
|
2238
|
+
sha256: createHash("sha256").update(resolved.content, "utf8").digest("hex"),
|
|
2239
|
+
mode: executable ? 493 : 420
|
|
2240
|
+
};
|
|
2241
|
+
}
|
|
2242
|
+
/**
|
|
2243
|
+
* The canonical file table: one entry per mount, sorted by (mountPath, sha256)
|
|
2244
|
+
* so any array order of the same mounts produces the same table.
|
|
2245
|
+
*/
|
|
2246
|
+
function profileBundleFileTable(mounts) {
|
|
2247
|
+
return mounts.map(profileBundleFileEntry).sort((left, right) => left.mountPath !== right.mountPath ? compareStrings(left.mountPath, right.mountPath) : compareStrings(left.sha256, right.sha256));
|
|
2248
|
+
}
|
|
2249
|
+
/**
|
|
2250
|
+
* The content-addressed bundle key. The digest covers EXACTLY the schema
|
|
2251
|
+
* version and, per file, the logical mount path, the sha256 of the content
|
|
2252
|
+
* bytes, and the full file mode — the same image-content-hash discipline as
|
|
2253
|
+
* scripts/ci/image-content-hash.mjs: hash exactly the inputs that determine
|
|
2254
|
+
* the cached bytes (and their placement semantics), nothing more. Any profile
|
|
2255
|
+
* change — content, path, or mode — produces a new key; anything else
|
|
2256
|
+
* (mount order, transport-only target paths, timestamps) does not.
|
|
2257
|
+
*/
|
|
2258
|
+
function profileFileBundleKey(mounts) {
|
|
2259
|
+
return canonicalCandidateDigest({
|
|
2260
|
+
schema: PROFILE_BUNDLE_SCHEMA,
|
|
2261
|
+
files: profileBundleFileTable(mounts)
|
|
2262
|
+
});
|
|
2263
|
+
}
|
|
2053
2264
|
//#endregion
|
|
2054
2265
|
//#region src/profile-file-delivery.ts
|
|
2266
|
+
const PROFILE_BUNDLE_CLAIM_ENDPOINT = "/agents/profile-bundle/claim";
|
|
2267
|
+
const PROFILE_BUNDLE_PUBLISH_ENDPOINT = "/agents/profile-bundle/publish";
|
|
2268
|
+
/**
|
|
2269
|
+
* Wall-clock ceiling for one claim/publish round trip. The cache is an
|
|
2270
|
+
* optimization: a stalled box must fall back to (or skip) delivery, never
|
|
2271
|
+
* hold create() hostage.
|
|
2272
|
+
*/
|
|
2273
|
+
const PROFILE_BUNDLE_HTTP_TIMEOUT_MS = 1e4;
|
|
2274
|
+
/**
|
|
2275
|
+
* Answers that mean the box predates the cache API: no route, a route that
|
|
2276
|
+
* rejects the method, or a recognized-but-unimplemented handler. Remembered
|
|
2277
|
+
* per box handle so an old box is never probed twice.
|
|
2278
|
+
*/
|
|
2279
|
+
const PROFILE_BUNDLE_API_GONE_STATUSES = new Set([
|
|
2280
|
+
404,
|
|
2281
|
+
405,
|
|
2282
|
+
501
|
|
2283
|
+
]);
|
|
2284
|
+
function profileBundleDebug(message, data = {}) {
|
|
2285
|
+
if (globalThis.process?.env?.TANGLE_SANDBOX_SDK_PROFILE_BUNDLE_DEBUG !== "1") return;
|
|
2286
|
+
console.debug(`[sandbox-sdk] profile bundle: ${message}`, data);
|
|
2287
|
+
}
|
|
2288
|
+
async function withProfileBundleTimeout(work, what) {
|
|
2289
|
+
let timer;
|
|
2290
|
+
try {
|
|
2291
|
+
return await Promise.race([work, new Promise((_, reject) => {
|
|
2292
|
+
const timeoutError = /* @__PURE__ */ new Error(`${what} timed out after ${PROFILE_BUNDLE_HTTP_TIMEOUT_MS}ms`);
|
|
2293
|
+
timer = setTimeout(() => reject(timeoutError), PROFILE_BUNDLE_HTTP_TIMEOUT_MS);
|
|
2294
|
+
timer.unref?.();
|
|
2295
|
+
})]);
|
|
2296
|
+
} finally {
|
|
2297
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
2298
|
+
}
|
|
2299
|
+
}
|
|
2300
|
+
function buildPublishManifest(box, deferredFiles, bundle) {
|
|
2301
|
+
const byMountPath = new Map(deferredFiles.map((mount) => [mount.path, mount]));
|
|
2302
|
+
const encoder = new TextEncoder();
|
|
2303
|
+
let sizeBytes = 0;
|
|
2304
|
+
const files = profileBundleFileTable(deferredFiles).map((entry) => {
|
|
2305
|
+
const mount = byMountPath.get(entry.mountPath);
|
|
2306
|
+
if (!mount) throw new Error(`profile bundle manifest: no mount for ${entry.mountPath}`);
|
|
2307
|
+
sizeBytes += encoder.encode(inlineProfileFileContent(mount)).byteLength;
|
|
2308
|
+
return {
|
|
2309
|
+
...entry,
|
|
2310
|
+
target: profileFileDeliveryTarget(box, mount)
|
|
2311
|
+
};
|
|
2312
|
+
});
|
|
2313
|
+
return {
|
|
2314
|
+
schema: PROFILE_BUNDLE_SCHEMA,
|
|
2315
|
+
bundle,
|
|
2316
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2317
|
+
sizeBytes,
|
|
2318
|
+
files
|
|
2319
|
+
};
|
|
2320
|
+
}
|
|
2055
2321
|
/** Successful immutable mount delivery is scoped to one filesystem incarnation. */
|
|
2056
2322
|
var ProfileFileDelivery = class {
|
|
2057
2323
|
delivered;
|
|
2058
2324
|
pending = Promise.resolve();
|
|
2325
|
+
unsupportedBoxes = /* @__PURE__ */ new WeakSet();
|
|
2059
2326
|
prepare(box, profile, signal, existingFiles = "allow-identical") {
|
|
2060
2327
|
const { leanProfile, deferredFiles } = splitInlineProfileFileMounts(structuredClone(profile));
|
|
2061
2328
|
validateDeferredProfileFileMounts(deferredFiles);
|
|
2062
2329
|
if (deferredFiles.length === 0) return Promise.resolve(leanProfile);
|
|
2330
|
+
const bundle = profileFileBundleKey(deferredFiles);
|
|
2063
2331
|
const prepared = this.pending.then(async () => {
|
|
2064
2332
|
signal?.throwIfAborted();
|
|
2065
2333
|
const incarnation = box.filesystemIncarnationId;
|
|
2066
|
-
|
|
2067
|
-
if (incarnation === void 0 || this.delivered?.incarnation !== incarnation || this.delivered.fingerprint !== fingerprint) {
|
|
2334
|
+
if (incarnation === void 0 || this.delivered?.incarnation !== incarnation || this.delivered.fingerprint !== bundle) {
|
|
2068
2335
|
this.delivered = void 0;
|
|
2069
|
-
await
|
|
2336
|
+
await this.deliverProfileFiles(box, deferredFiles, bundle, existingFiles);
|
|
2070
2337
|
if (box.filesystemIncarnationId !== incarnation) throw new StateError("Filesystem incarnation changed during profile file delivery", box.filesystemIncarnationId ?? "unknown", incarnation ?? "unknown");
|
|
2071
2338
|
if (incarnation !== void 0) this.delivered = {
|
|
2072
2339
|
incarnation,
|
|
2073
|
-
fingerprint
|
|
2340
|
+
fingerprint: bundle
|
|
2074
2341
|
};
|
|
2075
2342
|
}
|
|
2076
2343
|
signal?.throwIfAborted();
|
|
@@ -2079,6 +2346,73 @@ var ProfileFileDelivery = class {
|
|
|
2079
2346
|
this.pending = prepared.then(() => {}, () => {});
|
|
2080
2347
|
return prepared;
|
|
2081
2348
|
}
|
|
2349
|
+
async deliverProfileFiles(box, deferredFiles, bundle, existingFiles) {
|
|
2350
|
+
const claim = await this.claimProfileBundle(box, deferredFiles, bundle);
|
|
2351
|
+
if (claim.kind === "legacy") {
|
|
2352
|
+
await materializeProfileFileMounts(box, deferredFiles, { existingFiles });
|
|
2353
|
+
return;
|
|
2354
|
+
}
|
|
2355
|
+
const remaining = deferredFiles.filter((mount) => claim.missing.has(mount.path));
|
|
2356
|
+
if (remaining.length === 0) return;
|
|
2357
|
+
await materializeProfileFileMounts(box, remaining, { existingFiles });
|
|
2358
|
+
await this.publishProfileBundle(box, deferredFiles, bundle);
|
|
2359
|
+
}
|
|
2360
|
+
async claimProfileBundle(box, deferredFiles, bundle) {
|
|
2361
|
+
if (typeof box.runtimeFetch !== "function" || this.unsupportedBoxes.has(box)) return { kind: "legacy" };
|
|
2362
|
+
const table = profileBundleFileTable(deferredFiles);
|
|
2363
|
+
try {
|
|
2364
|
+
const response = await withProfileBundleTimeout(box.runtimeFetch(PROFILE_BUNDLE_CLAIM_ENDPOINT, {
|
|
2365
|
+
method: "POST",
|
|
2366
|
+
headers: { "content-type": "application/json" },
|
|
2367
|
+
body: JSON.stringify({
|
|
2368
|
+
bundle,
|
|
2369
|
+
files: table.map(({ mountPath, sha256 }) => ({
|
|
2370
|
+
mountPath,
|
|
2371
|
+
sha256
|
|
2372
|
+
}))
|
|
2373
|
+
})
|
|
2374
|
+
}), "profile bundle claim");
|
|
2375
|
+
if (PROFILE_BUNDLE_API_GONE_STATUSES.has(response.status)) {
|
|
2376
|
+
this.unsupportedBoxes.add(box);
|
|
2377
|
+
profileBundleDebug("box predates the bundle cache API", { status: response.status });
|
|
2378
|
+
return { kind: "legacy" };
|
|
2379
|
+
}
|
|
2380
|
+
if (!response.ok) {
|
|
2381
|
+
profileBundleDebug("claim refused; legacy delivery this turn", { status: response.status });
|
|
2382
|
+
return { kind: "legacy" };
|
|
2383
|
+
}
|
|
2384
|
+
const body = await response.json();
|
|
2385
|
+
if (body.status === "hit") return {
|
|
2386
|
+
kind: "claimed",
|
|
2387
|
+
missing: /* @__PURE__ */ new Set()
|
|
2388
|
+
};
|
|
2389
|
+
const claimed = new Set(table.map(({ mountPath }) => mountPath));
|
|
2390
|
+
if (body.status !== "miss" || !Array.isArray(body.missing) || !body.missing.every((mountPath) => typeof mountPath === "string" && claimed.has(mountPath))) throw new Error("Malformed profile bundle claim response");
|
|
2391
|
+
return {
|
|
2392
|
+
kind: "claimed",
|
|
2393
|
+
missing: new Set(body.missing)
|
|
2394
|
+
};
|
|
2395
|
+
} catch (error) {
|
|
2396
|
+
profileBundleDebug("claim failed; legacy delivery this turn", { error: error instanceof Error ? error.message : String(error) });
|
|
2397
|
+
return { kind: "legacy" };
|
|
2398
|
+
}
|
|
2399
|
+
}
|
|
2400
|
+
async publishProfileBundle(box, deferredFiles, bundle) {
|
|
2401
|
+
if (typeof box.runtimeFetch !== "function" || this.unsupportedBoxes.has(box)) return;
|
|
2402
|
+
try {
|
|
2403
|
+
const response = await withProfileBundleTimeout(box.runtimeFetch(PROFILE_BUNDLE_PUBLISH_ENDPOINT, {
|
|
2404
|
+
method: "POST",
|
|
2405
|
+
headers: { "content-type": "application/json" },
|
|
2406
|
+
body: JSON.stringify({
|
|
2407
|
+
bundle,
|
|
2408
|
+
manifest: buildPublishManifest(box, deferredFiles, bundle)
|
|
2409
|
+
})
|
|
2410
|
+
}), "profile bundle publish");
|
|
2411
|
+
if (!response.ok) profileBundleDebug("publish refused", { status: response.status });
|
|
2412
|
+
} catch (error) {
|
|
2413
|
+
profileBundleDebug("publish failed", { error: error instanceof Error ? error.message : String(error) });
|
|
2414
|
+
}
|
|
2415
|
+
}
|
|
2082
2416
|
};
|
|
2083
2417
|
//#endregion
|
|
2084
2418
|
//#region ../../../packages/runtime-contracts/dist/interactive-session-http.js
|
|
@@ -7711,6 +8045,12 @@ var SandboxInstance = class SandboxInstance {
|
|
|
7711
8045
|
assertFilesystemIncarnationReady() {
|
|
7712
8046
|
if (this.filesystemIncarnationReadiness !== "ready") throw new StateError("Sandbox filesystem incarnation is not ready", this.status, "running with a ready filesystem incarnation");
|
|
7713
8047
|
}
|
|
8048
|
+
/**
|
|
8049
|
+
* One authenticated runtime HTTP call for this sandbox, relative endpoint
|
|
8050
|
+
* (`/agents/...`), scoped to the current filesystem incarnation. This is
|
|
8051
|
+
* the transport `/agents/profiles` rides and the box surface mount
|
|
8052
|
+
* delivery uses for profile-bundle cache claim/publish.
|
|
8053
|
+
*/
|
|
7714
8054
|
async runtimeFetch(path, options, fetchOptions) {
|
|
7715
8055
|
this.assertFilesystemIncarnationReady();
|
|
7716
8056
|
const url = `/v1/sandboxes/${encodeURIComponent(this.id)}/runtime${path}`;
|
package/dist/tangle/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as JsonResponseParamTypes, E as SandboxIdParamTypes, S as ITangleJobsAbi, T as SandboxCreateResponseParamTypes, _ as JOB_SANDBOX_DELETE, a as fetchQuote, b as TangleSandboxClientConfig, c as parseQuoteResponse, d as OperatorSession, f as OperatorSessionError, g as JOB_SANDBOX_CREATE, h as TangleSandboxClient, i as SignedQuote, l as validateQuote, m as SignMessage, n as QuoteDomain, o as inputsHashOf, p as OperatorSessionToken, r as QuoteError, s as jobQuoteDigest, t as JobQuoteDetails, u as OperatorChallenge, v as TANGLE_CHAIN_ID, w as SandboxCreateParamTypes, x as AgentSandboxBlueprintAbi, y as TANGLE_JOBS_CONTRACT } from "../index-
|
|
1
|
+
import { C as JsonResponseParamTypes, E as SandboxIdParamTypes, S as ITangleJobsAbi, T as SandboxCreateResponseParamTypes, _ as JOB_SANDBOX_DELETE, a as fetchQuote, b as TangleSandboxClientConfig, c as parseQuoteResponse, d as OperatorSession, f as OperatorSessionError, g as JOB_SANDBOX_CREATE, h as TangleSandboxClient, i as SignedQuote, l as validateQuote, m as SignMessage, n as QuoteDomain, o as inputsHashOf, p as OperatorSessionToken, r as QuoteError, s as jobQuoteDigest, t as JobQuoteDetails, u as OperatorChallenge, v as TANGLE_CHAIN_ID, w as SandboxCreateParamTypes, x as AgentSandboxBlueprintAbi, y as TANGLE_JOBS_CONTRACT } from "../index-DoB4GMBh.js";
|
|
2
2
|
export { AgentSandboxBlueprintAbi, ITangleJobsAbi, JOB_SANDBOX_CREATE, JOB_SANDBOX_DELETE, JobQuoteDetails, JsonResponseParamTypes, OperatorChallenge, OperatorSession, OperatorSessionError, OperatorSessionToken, QuoteDomain, QuoteError, SandboxCreateParamTypes, SandboxCreateResponseParamTypes, SandboxIdParamTypes, SignMessage, SignedQuote, TANGLE_CHAIN_ID, TANGLE_JOBS_CONTRACT, TangleSandboxClient, TangleSandboxClientConfig, fetchQuote, inputsHashOf, jobQuoteDigest, parseQuoteResponse, validateQuote };
|
package/dist/tangle/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as SandboxCreateParamTypes, a as parseQuoteResponse, c as OperatorSession, d as JOB_SANDBOX_DELETE, f as TANGLE_CHAIN_ID, g as JsonResponseParamTypes, h as ITangleJobsAbi, i as jobQuoteDigest, l as OperatorSessionError, m as AgentSandboxBlueprintAbi, n as fetchQuote, o as validateQuote, p as TANGLE_JOBS_CONTRACT, r as inputsHashOf, s as TangleSandboxClient, t as QuoteError, u as JOB_SANDBOX_CREATE, v as SandboxCreateResponseParamTypes, y as SandboxIdParamTypes } from "../tangle-
|
|
1
|
+
import { _ as SandboxCreateParamTypes, a as parseQuoteResponse, c as OperatorSession, d as JOB_SANDBOX_DELETE, f as TANGLE_CHAIN_ID, g as JsonResponseParamTypes, h as ITangleJobsAbi, i as jobQuoteDigest, l as OperatorSessionError, m as AgentSandboxBlueprintAbi, n as fetchQuote, o as validateQuote, p as TANGLE_JOBS_CONTRACT, r as inputsHashOf, s as TangleSandboxClient, t as QuoteError, u as JOB_SANDBOX_CREATE, v as SandboxCreateResponseParamTypes, y as SandboxIdParamTypes } from "../tangle-7nYoMui0.js";
|
|
2
2
|
export { AgentSandboxBlueprintAbi, ITangleJobsAbi, JOB_SANDBOX_CREATE, JOB_SANDBOX_DELETE, JsonResponseParamTypes, OperatorSession, OperatorSessionError, QuoteError, SandboxCreateParamTypes, SandboxCreateResponseParamTypes, SandboxIdParamTypes, TANGLE_CHAIN_ID, TANGLE_JOBS_CONTRACT, TangleSandboxClient, fetchQuote, inputsHashOf, jobQuoteDigest, parseQuoteResponse, validateQuote };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { x as readResponseJson } from "./errors-Cq4hMysQ.js";
|
|
2
|
-
import { n as createSandboxInstanceFromResponse } from "./sandbox-
|
|
2
|
+
import { n as createSandboxInstanceFromResponse } from "./sandbox-DNwEDkL2.js";
|
|
3
3
|
import { _ as rotlBH, a as anumber, b as rotlSL, d as createXOFer, g as u32, h as toBytes$1, l as createHasher, m as swap32IfBE, n as abytes, o as aoutput, r as aexists, s as clean, t as Hash, v as rotlBL, x as split, y as rotlSH } from "./utils-B7_9Hl_z.js";
|
|
4
4
|
//#region src/tangle/abi.ts
|
|
5
5
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/sandbox",
|
|
3
|
-
"version": "0.60.36-develop.
|
|
3
|
+
"version": "0.60.36-develop.20261011062548.c10773e",
|
|
4
4
|
"description": "Client SDK for the Tangle Sandbox platform - build AI agent applications with dev containers",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -150,12 +150,12 @@
|
|
|
150
150
|
"ws": "^8.20.0",
|
|
151
151
|
"yjs": "13.6.30",
|
|
152
152
|
"@products/sandbox-test-utils": "0.0.0",
|
|
153
|
-
"@repo/shared": "0.0.0",
|
|
154
153
|
"@tangle-network/agent-profile-materialize": "0.22.4",
|
|
155
154
|
"@tangle-network/cli-agent-registry": "0.6.2",
|
|
156
|
-
"@tangle-network/runtime-contracts": "0.16.0",
|
|
157
155
|
"@tangle-network/sdk": "4.0.3",
|
|
158
|
-
"@tangle-network/sse-core": "0.0.0"
|
|
156
|
+
"@tangle-network/sse-core": "0.0.0",
|
|
157
|
+
"@tangle-network/runtime-contracts": "0.16.0",
|
|
158
|
+
"@repo/shared": "0.0.0"
|
|
159
159
|
},
|
|
160
160
|
"scripts": {
|
|
161
161
|
"build": "node scripts/build-dist.mjs",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as AUTH_BUNDLE_PATHS } from "./cli-auth-bundle-Br8s2y4r.js";
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
3
|
import { join } from "node:path";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
5
|
//#region ../../../packages/cli-agent-registry/dist/local-cli-auth.mjs
|
|
6
6
|
const DEFAULT_MODE = 384;
|
|
7
7
|
function readAuthFile(sourcePath, targetPath) {
|