openpond-sdk 0.6.2 → 0.6.3
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/{chunk-6T23L3LH.js → chunk-2DMYAJLS.js} +2 -2
- package/dist/{chunk-22RMONJA.js → chunk-CEZEVILU.js} +4 -4
- package/dist/chunk-CEZEVILU.js.map +7 -0
- package/dist/{chunk-FJ7IMEG5.js → chunk-IWT6JUZD.js} +2 -2
- package/dist/{chunk-JHKNPQD5.js → chunk-MEKWESBF.js} +2 -2
- package/dist/index.js +9 -7
- package/dist/index.js.map +2 -2
- package/dist/profile-actions.js +2 -2
- package/dist/project-actions.js +2 -2
- package/dist/types/packages/cloud/src/api/core.d.ts +2 -1
- package/dist/types/packages/cloud/src/api/core.d.ts.map +1 -1
- package/dist/workflows.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-22RMONJA.js.map +0 -7
- /package/dist/{chunk-6T23L3LH.js.map → chunk-2DMYAJLS.js.map} +0 -0
- /package/dist/{chunk-FJ7IMEG5.js.map → chunk-IWT6JUZD.js.map} +0 -0
- /package/dist/{chunk-JHKNPQD5.js.map → chunk-MEKWESBF.js.map} +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../cloud/src/sandbox/client-handles.ts", "../../cloud/src/sandbox/runtime-handle.ts", "../../cloud/src/sandbox/smoke.ts", "../../cloud/src/sandbox/async-request-options.ts", "../../cloud/src/urls.ts", "../../cloud/src/sandbox/stream.ts", "../../cloud/src/sandbox/url.ts", "../../cloud/src/sandbox/sandbox-instance-client.ts", "../../cloud/src/sandbox/client.ts", "../../cloud/src/hosted-chat.ts", "../src/work-sandbox.ts", "../src/work-model.ts", "../src/work.ts", "../../cloud/src/sandbox/types/runtime-profiles.ts", "../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["import type { OpenPondSandboxClient } from \"./client.js\";\nimport type {\n SandboxAgentRunInput,\n SandboxAgentSourceChecksRequestInput,\n SandboxAgentSourcePublishInput,\n SandboxAgentSourceSetupConfigureInput,\n SandboxAgentUpdateInput,\n SandboxAgentUpsertInput,\n SandboxCreateInput,\n SandboxAsyncRequestOptions,\n SandboxProjectUpdateInput,\n SandboxProjectUpsertInput,\n SandboxProjectSourceUploadInput,\n SandboxRuntime,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimeCreateInput,\n SandboxRuntimeEventInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeTransitionInput,\n OpenPondHostedProfilePushInput,\n OpenPondHostedProfilePushResponse,\n OpenPondHostedProfileSummary,\n} from \"./types/index.js\";\n\nexport function createSandboxRuntimeNamespace(client: OpenPondSandboxClient) {\n return {\n list: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.listSandboxRuntimes(input),\n create: (input: SandboxRuntimeCreateInput) =>\n client.createSandboxRuntime(input),\n handle: (runtimeId: string, initial: SandboxRuntime | null = null) =>\n client.sandboxRuntime(runtimeId, initial),\n get: (runtimeId: string) => client.getSandboxRuntime(runtimeId),\n createSandbox: (\n runtimeId: string,\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ) => client.createSandboxRuntimeSandbox(runtimeId, input, options),\n updateStatus: (runtimeId: string, input: SandboxRuntimeTransitionInput) =>\n client.updateSandboxRuntimeStatus(runtimeId, input),\n events: (runtimeId: string) => client.listSandboxRuntimeEvents(runtimeId),\n event: (runtimeId: string, input: SandboxRuntimeEventInput) =>\n client.emitSandboxRuntimeEvent(runtimeId, input),\n checkpoint: (\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput = {}\n ) => client.checkpointSandboxRuntime(runtimeId, input),\n promote: (\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options: { teamId?: string } = {}\n ) => client.promoteSandboxRuntime(runtimeId, input, options),\n preserveSource: (\n runtimeId: string,\n input: SandboxRuntimeSourcePreserveInput = {},\n options: { teamId?: string } = {}\n ) => client.preserveSandboxRuntimeSource(runtimeId, input, options),\n };\n}\n\nexport function createSandboxNamespace(client: OpenPondSandboxClient) {\n return {\n list: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.list(input),\n create: (input: SandboxCreateInput) => client.create(input),\n get: (sandboxId: string) => client.get(sandboxId),\n pricing: () => client.pricing(),\n costs: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.costs(input),\n };\n}\n\nexport function createSandboxProjectNamespace(client: OpenPondSandboxClient) {\n return {\n list: (input: { teamId: string }) => client.listProjects(input),\n upsert: (input: SandboxProjectUpsertInput) => client.upsertProject(input),\n upsertGitRemote: (input: SandboxProjectUpsertInput) =>\n client.upsertProjectGitRemote(input),\n get: (projectId: string, input: { teamId: string }) =>\n client.getProject(projectId, input),\n update: (projectId: string, input: SandboxProjectUpdateInput) =>\n client.updateProject(projectId, input),\n sync: (projectId: string, input: { teamId: string }) =>\n client.syncProject(projectId, input),\n ensureGitRemote: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n getGitRemote: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n git: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n uploadSource: (\n projectId: string,\n input: SandboxProjectSourceUploadInput\n ) => client.uploadProjectSource(projectId, input),\n archive: (projectId: string, input: { teamId: string }) =>\n client.archiveProject(projectId, input),\n };\n}\n\nexport function createSandboxProfileNamespace(client: OpenPondSandboxClient): {\n get(input: { teamId: string }): Promise<OpenPondHostedProfileSummary | null>;\n status(input: { teamId: string }): Promise<OpenPondHostedProfileSummary | null>;\n ensureHosted(input: { teamId: string }): Promise<OpenPondHostedProfileSummary>;\n push(input: OpenPondHostedProfilePushInput): Promise<OpenPondHostedProfilePushResponse>;\n} {\n return {\n get: (input: { teamId: string }) => client.getHostedProfile(input),\n status: (input: { teamId: string }) => client.getHostedProfile(input),\n ensureHosted: (input: { teamId: string }) =>\n client.ensureHostedProfile(input),\n push: (input: OpenPondHostedProfilePushInput) =>\n client.pushHostedProfile(input),\n };\n}\n\nexport function createSandboxAgentNamespace(client: OpenPondSandboxClient) {\n return {\n list: (input: { teamId: string }) => client.listAgents(input),\n upsert: (input: SandboxAgentUpsertInput) => client.upsertAgent(input),\n get: (agentId: string, input: { teamId: string }) =>\n client.getAgent(agentId, input),\n update: (agentId: string, input: SandboxAgentUpdateInput) =>\n client.updateAgent(agentId, input),\n archive: (agentId: string, input: { teamId: string }) =>\n client.archiveAgent(agentId, input),\n run: (agentId: string, input: SandboxAgentRunInput) =>\n client.runAgent(agentId, input),\n sourceDeployPlan: (agentId: string, input: { teamId: string }) =>\n client.getAgentSourceDeployPlan(agentId, input),\n manifestSnapshots: (\n agentId: string,\n input: { teamId: string; limit?: number }\n ) => client.listAgentManifestSnapshots(agentId, input),\n requestSourceChecks: (\n agentId: string,\n input: SandboxAgentSourceChecksRequestInput\n ) => client.requestAgentSourceChecks(agentId, input),\n configureSourceSetup: (\n agentId: string,\n input: SandboxAgentSourceSetupConfigureInput\n ) => client.configureAgentSourceSetup(agentId, input),\n publishSource: (agentId: string, input: SandboxAgentSourcePublishInput) =>\n client.publishAgentSource(agentId, input),\n };\n}\n", "import type {\n OpenPondSandboxRuntimeHandle,\n RuntimeWorkflowCheckpointHintInput,\n RuntimeWorkflowKeepAliveInput,\n RuntimeWorkflowWaitForUserInput,\n SandboxExecInput,\n SandboxFileDownloadInput,\n SandboxFileListInput,\n SandboxFileMkdirInput,\n SandboxFileMoveInput,\n SandboxFileSearchInput,\n SandboxOpenPortInput,\n SandboxRecord,\n SandboxRuntime,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimeEventInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimePromoteResponse,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeSourcePreserveResponse,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeSandboxResponse,\n SandboxRuntimeTransitionInput,\n SandboxRuntimeEventsResponse,\n SandboxRuntimeEventResponse,\n SandboxAsyncRequestOptions,\n SandboxFileUploadResponse,\n SandboxFileDownloadResponse,\n SandboxFileDeleteResponse,\n SandboxFileListResponse,\n SandboxFileMkdirResponse,\n SandboxFileMoveResponse,\n SandboxFileStatResponse,\n SandboxFileSearchResponse,\n SandboxOpenPortResponse,\n SandboxExecResponse,\n} from \"./types/index.js\";\n\nexport type SandboxRuntimeHandleClient = {\n getSandboxRuntime(runtimeId: string): Promise<SandboxRuntime>;\n createSandboxRuntimeSandbox(\n runtimeId: string,\n input?: SandboxRuntimeSandboxCreateInput,\n options?: SandboxAsyncRequestOptions\n ): Promise<SandboxRuntimeSandboxResponse>;\n updateSandboxRuntimeStatus(\n runtimeId: string,\n input: SandboxRuntimeTransitionInput\n ): Promise<SandboxRuntime>;\n listSandboxRuntimeEvents(\n runtimeId: string\n ): Promise<SandboxRuntimeEventsResponse>;\n emitSandboxRuntimeEvent(\n runtimeId: string,\n input: SandboxRuntimeEventInput\n ): Promise<SandboxRuntimeEventResponse>;\n checkpointSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput\n ): Promise<SandboxRuntime>;\n promoteSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options?: { teamId?: string }\n ): Promise<SandboxRuntimePromoteResponse>;\n preserveSandboxRuntimeSource(\n runtimeId: string,\n input?: SandboxRuntimeSourcePreserveInput,\n options?: { teamId?: string }\n ): Promise<SandboxRuntimeSourcePreserveResponse>;\n get(sandboxId: string): Promise<SandboxRecord>;\n start(\n sandboxId: string,\n options?: SandboxAsyncRequestOptions\n ): Promise<{ sandbox: SandboxRecord }>;\n restore(sandboxId: string): Promise<{ sandbox: SandboxRecord }>;\n uploadFile(\n sandboxId: string,\n path: string,\n contents: string\n ): Promise<SandboxFileUploadResponse>;\n downloadFile(sandboxId: string, path: string): Promise<string>;\n downloadFileResponse(\n sandboxId: string,\n input: string | SandboxFileDownloadInput\n ): Promise<SandboxFileDownloadResponse>;\n listFiles(\n sandboxId: string,\n input?: SandboxFileListInput\n ): Promise<SandboxFileListResponse>;\n deleteFile(\n sandboxId: string,\n path: string,\n input?: { recursive?: boolean }\n ): Promise<SandboxFileDeleteResponse>;\n searchFiles(\n sandboxId: string,\n input: SandboxFileSearchInput\n ): Promise<SandboxFileSearchResponse>;\n statFile(sandboxId: string, path: string): Promise<SandboxFileStatResponse>;\n mkdir(\n sandboxId: string,\n input: string | SandboxFileMkdirInput\n ): Promise<SandboxFileMkdirResponse>;\n moveFile(\n sandboxId: string,\n input: SandboxFileMoveInput\n ): Promise<SandboxFileMoveResponse>;\n exec(\n sandboxId: string,\n input: SandboxExecInput\n ): Promise<SandboxExecResponse>;\n openPort(\n sandboxId: string,\n input: SandboxOpenPortInput\n ): Promise<SandboxOpenPortResponse>;\n};\n\nexport function createSandboxRuntimeHandle(\n client: SandboxRuntimeHandleClient,\n runtimeId: string,\n initial: SandboxRuntime | null = null\n): OpenPondSandboxRuntimeHandle {\n const currentSandbox = async (\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> => {\n const runtime = await client.getSandboxRuntime(runtimeId);\n if (runtime.sandboxId) {\n return client.get(runtime.sandboxId);\n }\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n };\n const resume = async (\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> => {\n const runtime = await client.getSandboxRuntime(runtimeId);\n if (!runtime.sandboxId) {\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n }\n const sandbox = await client.get(runtime.sandboxId);\n if (sandbox.state === \"stopped\") {\n return client.start(sandbox.id, options).then((payload) => payload.sandbox);\n }\n if (sandbox.state === \"archived\") {\n return client.restore(sandbox.id).then((payload) => payload.sandbox);\n }\n if (sandbox.state === \"deleted\" || sandbox.state === \"error\") {\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n }\n return sandbox;\n };\n const checkpointHint = (input: RuntimeWorkflowCheckpointHintInput = {}) =>\n client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.checkpoint_hint\",\n summary: input.summary ?? input.reason ?? \"Workflow checkpoint hint\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n },\n artifactRefs: input.artifactRefs,\n lifecycleHint: {\n kind: \"checkpoint\",\n reason: input.reason ?? null,\n },\n });\n const waitForUser = async (input: RuntimeWorkflowWaitForUserInput = {}) => {\n await client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.waiting_for_user\",\n summary: input.summary ?? input.reason ?? \"Waiting for user\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n },\n lifecycleHint: {\n kind: \"waiting_for_user\",\n reason: input.reason ?? null,\n },\n });\n const current = await client.getSandboxRuntime(runtimeId);\n if (current.status === \"waiting_for_user\") return current;\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: \"waiting_for_user\",\n expectedVersion: current.version,\n summary: input.summary ?? input.reason,\n metadata: {\n workflowWaitForUserReason: input.reason ?? null,\n },\n });\n };\n const keepAlive = (input: RuntimeWorkflowKeepAliveInput = {}) => {\n const keepaliveUntil = runtimeKeepaliveUntilIso(input);\n return client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.keepalive\",\n summary: input.summary ?? input.reason ?? \"Workflow keepalive\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n keepaliveUntil,\n },\n lifecycleHint: {\n kind: \"keepalive\",\n reason: input.reason ?? null,\n keepaliveUntil,\n },\n });\n };\n return {\n id: runtimeId,\n initial,\n get: () => client.getSandboxRuntime(runtimeId),\n sandbox: currentSandbox,\n resume,\n createSandbox: (input = {}, options = {}) =>\n client.createSandboxRuntimeSandbox(runtimeId, input, options),\n status: async (input) => {\n if (typeof input !== \"string\") {\n return client.updateSandboxRuntimeStatus(runtimeId, input);\n }\n const current = await client.getSandboxRuntime(runtimeId);\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: input,\n expectedVersion: current.version,\n });\n },\n events: () => client.listSandboxRuntimeEvents(runtimeId),\n event: (input) => client.emitSandboxRuntimeEvent(runtimeId, input),\n recordCommit: (commitSha, input = {}) =>\n client.emitSandboxRuntimeEvent(runtimeId, {\n ...input,\n type: input.type ?? \"git.commit\",\n commitSha,\n }),\n checkpointHint,\n waitForUser,\n keepAlive,\n checkpoint: (input) => client.checkpointSandboxRuntime(runtimeId, input),\n files: {\n write: async (path, contents) =>\n client.uploadFile((await resume()).id, path, contents),\n read: async (path) => client.downloadFile((await resume()).id, path),\n readResponse: async (input) =>\n client.downloadFileResponse((await resume()).id, input),\n list: async (input = {}) => client.listFiles((await resume()).id, input),\n delete: async (path, input = {}) =>\n client.deleteFile((await resume()).id, path, input),\n search: async (input) => client.searchFiles((await resume()).id, input),\n stat: async (path) => client.statFile((await resume()).id, path),\n mkdir: async (input) => client.mkdir((await resume()).id, input),\n move: async (input) => client.moveFile((await resume()).id, input),\n },\n commands: {\n run: async (command) =>\n client.exec(\n (await resume()).id,\n typeof command === \"string\" ? { command } : command\n ),\n },\n ports: {\n expose: async (port) =>\n client.openPort(\n (await resume()).id,\n typeof port === \"number\" ? { port } : port\n ),\n },\n promote: (input, options = {}) =>\n client.promoteSandboxRuntime(runtimeId, input, options),\n preserveSource: (input = {}, options = {}) =>\n client.preserveSandboxRuntimeSource(runtimeId, input, options),\n archive: async (expectedVersion) => {\n const version =\n expectedVersion ?? (await client.getSandboxRuntime(runtimeId)).version;\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: \"archived\",\n expectedVersion: version,\n });\n },\n };\n}\n\nfunction runtimeKeepaliveUntilIso(\n input: RuntimeWorkflowKeepAliveInput | undefined\n): string {\n if (input?.until instanceof Date) {\n return input.until.toISOString();\n }\n if (typeof input?.until === \"string\" && input.until.trim()) {\n return new Date(input.until).toISOString();\n }\n const seconds =\n typeof input?.seconds === \"number\" && Number.isFinite(input.seconds)\n ? Math.max(1, Math.trunc(input.seconds))\n : 60;\n return new Date(Date.now() + seconds * 1000).toISOString();\n}\n", "import type { OpenPondSandboxClient } from \"./client.js\";\nimport type {\n SandboxReceipt,\n SandboxRecord,\n SandboxSmokeOptions,\n SandboxSmokeSummary,\n SandboxSnapshotResponse,\n} from \"./types/index.js\";\n\nexport async function runSandboxSmoke(\n client: OpenPondSandboxClient,\n options: SandboxSmokeOptions = {}\n): Promise<SandboxSmokeSummary> {\n const runId = `openpond-code-smoke-${Date.now()}`;\n const expectedExec = `openpond-code-exec-ok:${runId}`;\n const expectedPreview = `openpond-code-preview-ok:${runId}`;\n const expectedFile = `openpond-code-file-ok:${runId}`;\n const previewPort = 4173;\n let sandboxId: string | null = null;\n let forkSandboxId: string | null = null;\n let deleted = false;\n let forkDeleted = false;\n\n try {\n const sandbox = await waitForCreateReady(\n client,\n await client.create(\n {\n repo: options.repo ?? \"https://github.com/octocat/Hello-World\",\n resources: {\n cpu: options.cpu ?? 1,\n memoryGb: options.memoryGb ?? 1,\n diskGb: options.diskGb ?? 8,\n },\n budget: { maxUsd: options.budgetUsd ?? \"0.05\" },\n quotas: {\n maxSpendUsd: options.budgetUsd ?? \"0.05\",\n maxDurationSeconds: 600,\n idleTimeoutSeconds: 600,\n maxOpenPorts: 2,\n },\n metadata: {\n runId,\n source: \"openpond-code-sandbox-smoke\",\n },\n },\n { async: true }\n )\n );\n sandboxId = sandbox.id;\n\n const expectedMppMode = options.expectedMppMode;\n if (expectedMppMode && sandbox.reservation.mpp?.mode !== expectedMppMode) {\n throw new Error(\n `expected ${expectedMppMode} reservation, got ${\n sandbox.reservation.mpp?.mode ?? \"none\"\n }`\n );\n }\n if (!expectedMppMode && !sandbox.reservation.mpp?.mode) {\n throw new Error(\"expected sandbox reservation MPP metadata\");\n }\n\n const exec = await client.exec(sandbox.id, {\n command: [\n `printf '${expectedExec}\\\\n'`,\n \"test -f README && printf 'repo-clone-ok\\\\n'\",\n \"cat > server.cjs <<'EOF'\",\n \"const { createServer } = require('node:http');\",\n `createServer((_request, response) => response.end('${expectedPreview}')).listen(${previewPort}, '0.0.0.0');`,\n \"EOF\",\n \"nohup node server.cjs > server.log 2>&1 & sleep 1\",\n ].join(\"\\n\"),\n timeoutSeconds: 120,\n });\n if (exec.command.status !== \"succeeded\") {\n throw new Error(`expected command success, got ${exec.command.status}`);\n }\n if (!exec.command.output.includes(expectedExec)) {\n throw new Error(\"expected exec marker\");\n }\n\n await client.uploadFile(\n sandbox.id,\n \"openpond-code-smoke.txt\",\n expectedFile\n );\n const downloaded = await client.downloadFile(\n sandbox.id,\n \"openpond-code-smoke.txt\"\n );\n if (downloaded !== expectedFile) {\n throw new Error(\"expected file roundtrip marker\");\n }\n\n let snapshotId: string | null = null;\n if (options.snapshot || options.fork) {\n const snapshotResponse = (await client.createSnapshot(sandbox.id, {\n async: true,\n name: `openpond-code-smoke-${runId}`,\n replay: {\n entrypoints: [\n {\n command: \"cat openpond-code-smoke.txt\",\n name: \"default\",\n },\n ],\n retention: {\n class: \"pinned\",\n },\n safety: {\n cleanup: \"delete\",\n idleTimeoutSeconds: 600,\n internetEgress: \"block\",\n maxDurationSeconds: 600,\n maxSpendUsd: options.budgetUsd ?? \"0.05\",\n publicPreview: false,\n },\n validation: {\n commands: [\n {\n command: \"test -f openpond-code-smoke.txt\",\n },\n ],\n },\n },\n })) as SandboxSnapshotResponse & {\n snapshotJob?: {\n snapshotId?: string;\n status?: string;\n error?: string | null;\n };\n };\n const snapshot =\n snapshotResponse.snapshot ??\n (\n await waitForSnapshotReady(\n client,\n sandbox.id,\n snapshotResponse.snapshotJob?.snapshotId\n )\n ).snapshot;\n snapshotId = snapshot.id;\n if (snapshot.state !== \"ready\") {\n throw new Error(`expected ready snapshot, got ${snapshot.state}`);\n }\n }\n\n if (options.fork) {\n if (!snapshotId) {\n throw new Error(\"expected snapshot id before fork\");\n }\n const forked = await waitForCreateReady(\n client,\n (\n await client.forkSnapshot(\n snapshotId,\n {\n budget: { maxUsd: options.budgetUsd ?? \"0.05\" },\n metadata: {\n source: \"openpond-code-sandbox-smoke-fork\",\n templateSnapshotId: snapshotId,\n },\n },\n { async: true }\n )\n ).sandbox\n );\n forkSandboxId = forked.id;\n const forkExec = await client.exec(forked.id, {\n command: \"cat openpond-code-smoke.txt\",\n timeoutSeconds: 120,\n });\n if (forkExec.command.status !== \"succeeded\") {\n throw new Error(\n `expected fork command success, got ${forkExec.command.status}`\n );\n }\n if (!forkExec.command.output.includes(expectedFile)) {\n throw new Error(\"expected fork snapshot marker\");\n }\n if (!options.keep) {\n await deleteSandboxForSmoke(client, forked.id);\n forkDeleted = true;\n }\n }\n\n let previewStatus: number | null = null;\n if (options.preview !== false) {\n const opened = await client.openPort(sandbox.id, {\n label: \"openpond-code-smoke\",\n port: previewPort,\n });\n const preview = await fetch(opened.preview.url);\n previewStatus = preview.status;\n const body = await preview.text();\n if (preview.status !== 200) {\n throw new Error(`expected preview HTTP 200, got ${preview.status}`);\n }\n if (!body.includes(expectedPreview)) {\n throw new Error(\"expected preview marker\");\n }\n }\n\n const { sandbox: readback, receipts } = await stopSandboxForSmoke(\n client,\n sandbox.id\n );\n\n if (!options.keep) {\n await deleteSandboxForSmoke(client, sandbox.id);\n deleted = true;\n }\n\n return {\n deleted,\n execOutput: exec.command.output.trim(),\n fileRoundtrip: true,\n forkSandboxId,\n previewStatus,\n receiptRefs: receipts.map((receipt) => receipt.mpp.receiptRef ?? null),\n reservationRef: sandbox.reservation.mpp?.reservationRef ?? null,\n runId,\n sandboxId: sandbox.id,\n snapshotId,\n state: readback.state,\n };\n } finally {\n if (forkSandboxId && !options.keep && !forkDeleted) {\n await cleanupSandboxBestEffort(client, forkSandboxId);\n }\n if (sandboxId && !options.keep && !deleted) {\n await cleanupSandboxBestEffort(client, sandboxId);\n }\n }\n}\n\nasync function stopSandboxForSmoke(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<{ sandbox: SandboxRecord; receipts: SandboxReceipt[] }> {\n try {\n await client.stop(sandboxId);\n } catch {\n await client.stop(sandboxId, { async: true });\n }\n const sandbox = await waitForSandboxState(\n client,\n sandboxId,\n new Set([\"stopped\", \"deleted\"]),\n \"stop\"\n );\n const receipts = await waitForReceipts(client, sandboxId);\n if (receipts.length === 0) {\n throw new Error(\"expected receipt readback\");\n }\n return { sandbox, receipts };\n}\n\nasync function deleteSandboxForSmoke(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<SandboxRecord> {\n try {\n const deleted = await client.delete(sandboxId);\n if (deleted.state === \"deleted\") {\n return deleted;\n }\n await client.delete(sandboxId, { async: true });\n } catch {\n await client.delete(sandboxId, { async: true });\n }\n return waitForSandboxState(\n client,\n sandboxId,\n new Set([\"deleted\"]),\n \"delete\"\n );\n}\n\nasync function cleanupSandboxBestEffort(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<void> {\n try {\n await deleteSandboxForSmoke(client, sandboxId);\n } catch {\n await client.delete(sandboxId, { async: true }).catch(() => undefined);\n }\n}\n\nasync function waitForSandboxState(\n client: OpenPondSandboxClient,\n sandboxId: string,\n targetStates: Set<SandboxRecord[\"state\"]>,\n operation: \"delete\" | \"stop\"\n): Promise<SandboxRecord> {\n const timeoutMs = 5 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = await client.get(sandboxId);\n while (Date.now() < deadline) {\n if (targetStates.has(latest.state)) {\n return latest;\n }\n if (latest.state === \"error\") {\n throw new Error(`sandbox ${operation} failed: ${sandboxId}`);\n }\n await sleep(pollMs);\n latest = await client.get(sandboxId);\n }\n throw new Error(\n `sandbox ${operation} did not reach ${[...targetStates].join(\n \"/\"\n )} before timeout: ${sandboxId} (${latest.state})`\n );\n}\n\nasync function waitForReceipts(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<SandboxReceipt[]> {\n const timeoutMs = 2 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let receipts = await client.receipts(sandboxId);\n while (Date.now() < deadline) {\n if (receipts.length > 0) {\n return receipts;\n }\n await sleep(pollMs);\n receipts = await client.receipts(sandboxId);\n }\n return receipts;\n}\n\nasync function waitForCreateReady(\n client: OpenPondSandboxClient,\n sandbox: SandboxRecord\n): Promise<SandboxRecord> {\n if (sandbox.state === \"running\" || sandbox.state === \"stopped\") {\n return sandbox;\n }\n if (sandbox.state === \"error\") {\n throw new Error(\n `sandbox create failed: ${sandbox.id}\\n${sandbox.logs.join(\"\\n\")}`\n );\n }\n\n const timeoutMs = 12 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = sandbox;\n while (Date.now() < deadline) {\n await sleep(pollMs);\n latest = await client.get(sandbox.id);\n if (latest.state === \"running\" || latest.state === \"stopped\") {\n return latest;\n }\n if (latest.state === \"error\") {\n throw new Error(\n `sandbox create failed: ${latest.id}\\n${latest.logs.join(\"\\n\")}`\n );\n }\n }\n\n throw new Error(\n `sandbox create did not reach running state before timeout: ${latest.id} (${latest.state})`\n );\n}\n\nasync function waitForSnapshotReady(\n client: OpenPondSandboxClient,\n sandboxId: string,\n snapshotId?: string\n): Promise<SandboxSnapshotResponse> {\n if (!snapshotId) {\n throw new Error(\"snapshot job did not return snapshot id\");\n }\n const timeoutMs = 12 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = await client.get(sandboxId);\n while (Date.now() < deadline) {\n const snapshot = latest.snapshots?.find((item) => item.id === snapshotId);\n if (snapshot?.state === \"ready\") {\n return { sandbox: latest, snapshot };\n }\n const job = latest.snapshotJobs?.find(\n (item) => item.snapshotId === snapshotId\n );\n if (job?.status === \"failed\") {\n throw new Error(`snapshot job failed: ${job.error ?? snapshotId}`);\n }\n await sleep(pollMs);\n latest = await client.get(sandboxId);\n }\n throw new Error(\n `snapshot did not reach ready state before timeout: ${snapshotId}`\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n", "import type { SandboxAsyncRequestOptions } from \"./types/index.js\";\n\nexport function asyncRequestHeaders(\n options: SandboxAsyncRequestOptions = {}\n): HeadersInit | undefined {\n return options.async || options.respondAsync\n ? { Prefer: \"respond-async\" }\n : undefined;\n}\n", "export const DEFAULT_OPENPOND_WEB_BASE_URL = \"https://openpond.ai\";\nexport const DEFAULT_OPENPOND_API_BASE_URL = \"https://api.openpond.ai\";\nexport const DEFAULT_OPENPOND_OPCHAT_API_BASE_URL =\n \"https://api.openpond.ai/opchat/v1\";\nexport const DEFAULT_OPENPOND_CHAT_API_BASE_URL =\n DEFAULT_OPENPOND_OPCHAT_API_BASE_URL;\n", "import { apiFetch } from \"../api/core.js\";\nimport type { SandboxPtyInput } from \"./types/index.js\";\n\nexport async function streamSandboxEventOutput(params: {\n sandboxApiUrl: string;\n apiKey: string;\n path: string;\n}): Promise<void> {\n const response = await apiFetch(\n params.sandboxApiUrl,\n params.apiKey,\n params.path,\n { timeoutMs: 0, maxResponseBytes: 0 },\n );\n if (!response.body) {\n return;\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffered = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffered += decoder.decode(value, { stream: true });\n let separatorIndex = buffered.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const event = buffered.slice(0, separatorIndex);\n buffered = buffered.slice(separatorIndex + 2);\n const output = parseProcessOutputEvent(event);\n if (output) process.stdout.write(output);\n separatorIndex = buffered.indexOf(\"\\n\\n\");\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function normalizePtyInput(\n input: string | Uint8Array | SandboxPtyInput\n): SandboxPtyInput {\n if (typeof input === \"string\") {\n return { dataBase64: Buffer.from(input, \"utf-8\").toString(\"base64\") };\n }\n if (input instanceof Uint8Array) {\n return { dataBase64: Buffer.from(input).toString(\"base64\") };\n }\n return input;\n}\n\nfunction parseProcessOutputEvent(event: string): string | null {\n if (!event.includes(\"event: output\")) {\n return null;\n }\n const dataLines = event\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data: \"))\n .map((line) => line.slice(\"data: \".length));\n if (dataLines.length === 0) {\n return null;\n }\n try {\n const parsed = JSON.parse(dataLines.join(\"\\n\")) as { output?: unknown };\n return typeof parsed.output === \"string\" ? parsed.output : null;\n } catch {\n return null;\n }\n}\n", "import {\n DEFAULT_OPENPOND_API_BASE_URL,\n DEFAULT_OPENPOND_WEB_BASE_URL,\n} from \"../urls.js\";\n\nexport function normalizeSandboxApiUrl(baseUrlOrApiUrl: string): string {\n const trimmed = baseUrlOrApiUrl.trim().replace(/\\/$/, \"\");\n if (!trimmed) {\n throw new Error(\"sandbox API URL must be non-empty\");\n }\n const url = new URL(trimmed);\n const normalizedPath = url.pathname.replace(/\\/$/, \"\");\n if (\n normalizedPath.endsWith(\"/v1/sandboxes\") ||\n normalizedPath.endsWith(\"/api/sandboxes\")\n ) {\n return `${url.origin}${normalizedPath}`;\n }\n if (normalizedPath.endsWith(\"/v1\")) {\n return `${url.origin}${normalizedPath}/sandboxes`;\n }\n if (isOpenPondHostedApiHost(url.hostname)) {\n return `${url.origin}${normalizedPath}/v1/sandboxes`;\n }\n if (url.origin === DEFAULT_OPENPOND_WEB_BASE_URL) {\n return `${DEFAULT_OPENPOND_API_BASE_URL}/v1/sandboxes`;\n }\n return `${url.origin}${normalizedPath}/api/sandboxes`;\n}\n\nexport function apiRootUrlFromSandboxApiUrl(sandboxApiUrl: string): string {\n const suffix = \"/sandboxes\";\n if (!sandboxApiUrl.endsWith(suffix)) {\n throw new Error(\"sandbox API URL must end with /sandboxes\");\n }\n return sandboxApiUrl.slice(0, -suffix.length);\n}\n\nfunction isOpenPondHostedApiHost(hostname: string): boolean {\n return (\n hostname === \"api.openpond.ai\" ||\n hostname === \"staging-api.openpond.ai\" ||\n (hostname.startsWith(\"api\") && hostname.endsWith(\".openpond.ai\"))\n );\n}\n", "import {\n apiFetch,\n readApiJson,\n type ApiFetchOptions,\n} from \"../api/core.js\";\nimport { DEFAULT_OPENPOND_API_BASE_URL } from \"../urls.js\";\nimport { asyncRequestHeaders } from \"./async-request-options.js\";\nimport { normalizePtyInput, streamSandboxEventOutput } from \"./stream.js\";\nimport type {\n SandboxIntegrationConnectionLeaseInput,\n SandboxCreateInput,\n SandboxCreateOptions,\n SandboxAsyncRequestOptions,\n SandboxForkInput,\n SandboxExecInput,\n SandboxProcessStartInput,\n SandboxPtyStartInput,\n SandboxPtyInput,\n SandboxOpenPortInput,\n SandboxGitDiffInput,\n SandboxGitPatchExportInput,\n SandboxGitBranchInput,\n SandboxGitCommitInput,\n SandboxGitPullInput,\n SandboxGitPushInput,\n SandboxFileDownloadInput,\n SandboxFileListInput,\n SandboxFileMkdirInput,\n SandboxFileMoveInput,\n SandboxFileSearchInput,\n SandboxReceipt,\n SandboxSnapshotValidateInput,\n SandboxSnapshotUpdateInput,\n SandboxSnapshotInput,\n SandboxRecord,\n SandboxCreateResponse,\n SandboxIntegrationLeasesResponse,\n SandboxExecResponse,\n SandboxProcessStartResponse,\n SandboxProcessListResponse,\n SandboxProcessStatusResponse,\n SandboxProcessStopResponse,\n SandboxPtyStartResponse,\n SandboxPtyListResponse,\n SandboxPtyStatusResponse,\n SandboxPtyInputResponse,\n SandboxPtyStopResponse,\n SandboxOpenPortResponse,\n SandboxSnapshotResponse,\n SandboxSnapshotValidationResponse,\n SandboxForkResponse,\n SandboxReceiptResponse,\n SandboxLifecycleAcceptedResponse,\n SandboxStartResponse,\n SandboxRestoreResponse,\n SandboxReceiptsResponse,\n SandboxLogsResponse,\n SandboxGitStatusResponse,\n SandboxGitDiffResponse,\n SandboxGitPatchExportResponse,\n SandboxGitBranchResponse,\n SandboxGitCommitResponse,\n SandboxGitPullResponse,\n SandboxGitPushResponse,\n SandboxFileUploadResponse,\n SandboxFileDownloadResponse,\n SandboxFileListResponse,\n SandboxFileDeleteResponse,\n SandboxFileMkdirResponse,\n SandboxFileMoveResponse,\n SandboxFileStatResponse,\n SandboxFileSearchResponse,\n SandboxBillingStatusResponse,\n SandboxPricingResponse,\n SandboxCostSummaryResponse,\n OpenPondSandboxClientOptions,\n} from \"./types/index.js\";\n\nimport { apiRootUrlFromSandboxApiUrl, normalizeSandboxApiUrl } from \"./url.js\";\n\nexport class OpenPondSandboxInstanceClient {\n readonly apiKey: string;\n readonly apiRootUrl: string;\n readonly sandboxApiUrl: string;\n readonly customEndpoint: boolean;\n\n constructor(options: OpenPondSandboxClientOptions) {\n this.apiKey = options.apiKey;\n this.customEndpoint = options.customEndpoint ?? false;\n this.sandboxApiUrl = normalizeSandboxApiUrl(\n options.sandboxApiUrl ?? options.baseUrl ?? DEFAULT_OPENPOND_API_BASE_URL\n );\n this.apiRootUrl = apiRootUrlFromSandboxApiUrl(this.sandboxApiUrl);\n }\n\n create(\n input: SandboxCreateInput,\n options: SandboxCreateOptions = {}\n ): Promise<SandboxRecord> {\n return this.request<SandboxCreateResponse>(\"\", {\n method: \"POST\",\n ...(this.customEndpoint ? { timeoutMs: 180_000 } : {}),\n headers: asyncRequestHeaders(options),\n body: JSON.stringify(input),\n }).then((payload) => payload.sandbox);\n }\n\n get(sandboxId: string): Promise<SandboxRecord> {\n return this.request<{ sandbox: SandboxRecord }>(\n `/${encodeURIComponent(sandboxId)}`\n ).then((payload) => payload.sandbox);\n }\n\n exec(\n sandboxId: string,\n input: SandboxExecInput\n ): Promise<SandboxExecResponse> {\n return this.request<SandboxExecResponse>(\n `/${encodeURIComponent(sandboxId)}/exec`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n startProcess(\n sandboxId: string,\n input: SandboxProcessStartInput\n ): Promise<SandboxProcessStartResponse> {\n return this.request<SandboxProcessStartResponse>(\n `/${encodeURIComponent(sandboxId)}/processes`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listProcesses(sandboxId: string): Promise<SandboxProcessListResponse> {\n return this.request<SandboxProcessListResponse>(\n `/${encodeURIComponent(sandboxId)}/processes`\n );\n }\n\n getProcess(\n sandboxId: string,\n processId: string,\n input: { since?: number } = {}\n ): Promise<SandboxProcessStatusResponse> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n return this.request<SandboxProcessStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n stopProcess(\n sandboxId: string,\n processId: string\n ): Promise<SandboxProcessStopResponse> {\n return this.request<SandboxProcessStopResponse>(\n `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async streamProcessOutput(\n sandboxId: string,\n processId: string,\n input: { since?: number } = {}\n ): Promise<void> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n await streamSandboxEventOutput({\n sandboxApiUrl: this.sandboxApiUrl,\n apiKey: this.apiKey,\n path: `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}/stream${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n });\n }\n\n startPty(\n sandboxId: string,\n input: SandboxPtyStartInput = {}\n ): Promise<SandboxPtyStartResponse> {\n return this.request<SandboxPtyStartResponse>(\n `/${encodeURIComponent(sandboxId)}/pty`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listPtys(sandboxId: string): Promise<SandboxPtyListResponse> {\n return this.request<SandboxPtyListResponse>(\n `/${encodeURIComponent(sandboxId)}/pty`\n );\n }\n\n getPty(\n sandboxId: string,\n ptyId: string,\n input: { since?: number } = {}\n ): Promise<SandboxPtyStatusResponse> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n return this.request<SandboxPtyStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(ptyId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n writePtyInput(\n sandboxId: string,\n ptyId: string,\n input: string | Uint8Array | SandboxPtyInput\n ): Promise<SandboxPtyInputResponse> {\n return this.request<SandboxPtyInputResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(\n ptyId\n )}/input`,\n {\n method: \"POST\",\n body: JSON.stringify(normalizePtyInput(input)),\n }\n );\n }\n\n stopPty(sandboxId: string, ptyId: string): Promise<SandboxPtyStopResponse> {\n return this.request<SandboxPtyStopResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(ptyId)}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async streamPtyOutput(\n sandboxId: string,\n ptyId: string,\n input: { since?: number } = {}\n ): Promise<void> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n await streamSandboxEventOutput({\n sandboxApiUrl: this.sandboxApiUrl,\n apiKey: this.apiKey,\n path: `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(\n ptyId\n )}/stream${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n });\n }\n\n uploadFile(\n sandboxId: string,\n path: string,\n contents: string\n ): Promise<SandboxFileUploadResponse> {\n return this.uploadFileBase64(\n sandboxId,\n path,\n Buffer.from(contents, \"utf-8\").toString(\"base64\")\n );\n }\n\n uploadFileBase64(\n sandboxId: string,\n path: string,\n contentsBase64: string\n ): Promise<SandboxFileUploadResponse> {\n return this.request<SandboxFileUploadResponse>(\n `/${encodeURIComponent(sandboxId)}/files`,\n {\n method: \"POST\",\n body: JSON.stringify({\n path,\n contentsBase64,\n }),\n }\n );\n }\n\n async downloadFile(sandboxId: string, path: string): Promise<string> {\n const payload = await this.downloadFileResponse(sandboxId, path);\n return Buffer.from(payload.file.contentsBase64, \"base64\").toString(\"utf-8\");\n }\n\n downloadFileResponse(\n sandboxId: string,\n input: string | SandboxFileDownloadInput\n ): Promise<SandboxFileDownloadResponse> {\n const normalized = typeof input === \"string\" ? { path: input } : input;\n const query = new URLSearchParams({ path: normalized.path });\n if (normalized.offsetBytes !== undefined) {\n query.set(\"offsetBytes\", String(normalized.offsetBytes));\n }\n if (normalized.maxBytes !== undefined) {\n query.set(\"maxBytes\", String(normalized.maxBytes));\n }\n return this.request<SandboxFileDownloadResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n listFiles(\n sandboxId: string,\n input: SandboxFileListInput = {}\n ): Promise<SandboxFileListResponse> {\n const query = new URLSearchParams({ list: \"1\" });\n if (input.path) query.set(\"path\", input.path);\n if (input.recursive !== undefined)\n query.set(\"recursive\", String(input.recursive));\n if (input.maxEntries !== undefined)\n query.set(\"maxEntries\", String(input.maxEntries));\n return this.request<SandboxFileListResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n deleteFile(\n sandboxId: string,\n path: string,\n input: { recursive?: boolean } = {}\n ): Promise<SandboxFileDeleteResponse> {\n const query = new URLSearchParams({ path });\n if (input.recursive !== undefined)\n query.set(\"recursive\", String(input.recursive));\n return this.request<SandboxFileDeleteResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n statFile(sandboxId: string, path: string): Promise<SandboxFileStatResponse> {\n const query = new URLSearchParams({ stat: \"1\", path });\n return this.request<SandboxFileStatResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n mkdir(\n sandboxId: string,\n input: string | SandboxFileMkdirInput\n ): Promise<SandboxFileMkdirResponse> {\n const normalized = typeof input === \"string\" ? { path: input } : input;\n const query = new URLSearchParams({ path: normalized.path });\n if (normalized.recursive !== undefined)\n query.set(\"recursive\", String(normalized.recursive));\n return this.request<SandboxFileMkdirResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"PUT\",\n }\n );\n }\n\n moveFile(\n sandboxId: string,\n input: SandboxFileMoveInput\n ): Promise<SandboxFileMoveResponse> {\n const query = new URLSearchParams({\n fromPath: input.fromPath,\n toPath: input.toPath,\n });\n if (input.overwrite !== undefined)\n query.set(\"overwrite\", String(input.overwrite));\n return this.request<SandboxFileMoveResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"PATCH\",\n }\n );\n }\n\n searchFiles(\n sandboxId: string,\n input: SandboxFileSearchInput\n ): Promise<SandboxFileSearchResponse> {\n const query = new URLSearchParams({\n search: \"1\",\n query: input.query,\n });\n if (input.path) query.set(\"path\", input.path);\n if (input.maxResults !== undefined)\n query.set(\"maxResults\", String(input.maxResults));\n return this.request<SandboxFileSearchResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n openPort(\n sandboxId: string,\n input: SandboxOpenPortInput\n ): Promise<SandboxOpenPortResponse> {\n return this.request<SandboxOpenPortResponse>(\n `/${encodeURIComponent(sandboxId)}/ports`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n createSnapshot(\n sandboxId: string,\n input: SandboxSnapshotInput\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n updateSnapshot(\n sandboxId: string,\n snapshotId: string,\n input: SandboxSnapshotUpdateInput\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n validateSnapshot(\n sandboxId: string,\n snapshotId: string,\n input: SandboxSnapshotValidateInput = {}\n ): Promise<SandboxSnapshotValidationResponse> {\n return this.request<SandboxSnapshotValidationResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}/validate`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n publishSnapshot(\n sandboxId: string,\n snapshotId: string\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}/publish`,\n {\n method: \"POST\",\n }\n );\n }\n\n fork(\n sandboxId: string,\n input: SandboxForkInput = {}\n ): Promise<SandboxForkResponse> {\n return this.request<SandboxForkResponse>(\n `/${encodeURIComponent(sandboxId)}/fork`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n stop(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxReceiptResponse | SandboxLifecycleAcceptedResponse> {\n const query = new URLSearchParams();\n if (options.failOnUnpreservedChanges) {\n query.set(\"failOnUnpreservedChanges\", \"true\");\n }\n return this.request<SandboxReceiptResponse>(\n `/${encodeURIComponent(sandboxId)}/stop${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n }\n );\n }\n\n start(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxStartResponse> {\n return this.request<SandboxStartResponse>(\n `/${encodeURIComponent(sandboxId)}/start`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n }\n );\n }\n\n restore(sandboxId: string): Promise<SandboxRestoreResponse> {\n return this.request<SandboxRestoreResponse>(\n `/${encodeURIComponent(sandboxId)}/restore`,\n {\n method: \"POST\",\n }\n );\n }\n\n delete(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> {\n const query = new URLSearchParams();\n if (options.failOnUnpreservedChanges) {\n query.set(\"failOnUnpreservedChanges\", \"true\");\n }\n return this.request<{ sandbox: SandboxRecord }>(\n `/${encodeURIComponent(sandboxId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"DELETE\",\n headers: asyncRequestHeaders(options),\n }\n ).then((payload) => payload.sandbox);\n }\n\n receipts(sandboxId: string): Promise<SandboxReceipt[]> {\n return this.request<SandboxReceiptsResponse>(\n `/${encodeURIComponent(sandboxId)}/receipts`\n ).then((payload) => payload.receipts);\n }\n\n logs(sandboxId: string): Promise<string[]> {\n return this.request<SandboxLogsResponse>(\n `/${encodeURIComponent(sandboxId)}/logs`\n ).then((payload) => payload.logs);\n }\n\n gitStatus(sandboxId: string): Promise<SandboxGitStatusResponse> {\n return this.request<SandboxGitStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/git/status`\n );\n }\n\n gitDiff(\n sandboxId: string,\n input: SandboxGitDiffInput = {}\n ): Promise<SandboxGitDiffResponse> {\n return this.request<SandboxGitDiffResponse>(\n `/${encodeURIComponent(sandboxId)}/git/diff`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitExportPatch(\n sandboxId: string,\n input: SandboxGitPatchExportInput = {}\n ): Promise<SandboxGitPatchExportResponse> {\n return this.request<SandboxGitPatchExportResponse>(\n `/${encodeURIComponent(sandboxId)}/git/export-patch`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitBranch(\n sandboxId: string,\n input: SandboxGitBranchInput\n ): Promise<SandboxGitBranchResponse> {\n return this.request<SandboxGitBranchResponse>(\n `/${encodeURIComponent(sandboxId)}/git/branch`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitCommit(\n sandboxId: string,\n input: SandboxGitCommitInput\n ): Promise<SandboxGitCommitResponse> {\n return this.request<SandboxGitCommitResponse>(\n `/${encodeURIComponent(sandboxId)}/git/commit`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitPull(\n sandboxId: string,\n input: SandboxGitPullInput = {}\n ): Promise<SandboxGitPullResponse> {\n return this.request<SandboxGitPullResponse>(\n `/${encodeURIComponent(sandboxId)}/git/pull`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitPush(\n sandboxId: string,\n input: SandboxGitPushInput = {}\n ): Promise<SandboxGitPushResponse> {\n return this.request<SandboxGitPushResponse>(\n `/${encodeURIComponent(sandboxId)}/git/push`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n billing(sandboxId: string): Promise<SandboxBillingStatusResponse> {\n return this.request<SandboxBillingStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/billing`\n );\n }\n\n pricing(): Promise<SandboxPricingResponse> {\n return this.request<SandboxPricingResponse>(\"/pricing\");\n }\n\n costs(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxCostSummaryResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.request<SandboxCostSummaryResponse>(\n `/costs${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n integrationLeases(\n sandboxId: string\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`\n );\n }\n\n attachIntegrationConnection(\n sandboxId: string,\n input: SandboxIntegrationConnectionLeaseInput\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n removeIntegrationLease(\n sandboxId: string,\n leaseId: string\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`,\n {\n method: \"DELETE\",\n body: JSON.stringify({ leaseId }),\n }\n );\n }\n\n async request<T>(path: string, init: ApiFetchOptions = {}): Promise<T> {\n const response = await apiFetch(\n this.sandboxApiUrl,\n this.apiKey,\n path,\n this.customEndpoint ? { ...init, useEnvironmentApiKey: false, redirect: \"error\" } : init\n );\n return readApiJson<T>(response, \"Sandbox request\");\n }\n\n async requestApiRoot<T>(\n path: string,\n init: ApiFetchOptions = {}\n ): Promise<T> {\n const response = await apiFetch(this.apiRootUrl, this.apiKey, path,\n this.customEndpoint ? { ...init, useEnvironmentApiKey: false, redirect: \"error\" } : init);\n return readApiJson<T>(response, \"OpenPond API request\");\n }\n}\n", "import {\n createSandboxAgentNamespace,\n createSandboxNamespace,\n createSandboxProfileNamespace,\n createSandboxProjectNamespace,\n createSandboxRuntimeNamespace,\n} from \"./client-handles.js\";\nimport { createSandboxRuntimeHandle } from \"./runtime-handle.js\";\nimport { runSandboxSmoke } from \"./smoke.js\";\nimport { asyncRequestHeaders } from \"./async-request-options.js\";\nimport { OpenPondSandboxInstanceClient } from \"./sandbox-instance-client.js\";\nimport type {\n SandboxIntegrationConnectionStatusFilter,\n SandboxAsyncRequestOptions,\n SandboxScheduleCreateInput,\n SandboxScheduleUpdateInput,\n SandboxForkInput,\n SandboxForkOptions,\n SandboxTemplateLaunchInput,\n SandboxPublishedSnapshotBuildCreateInput,\n SandboxPublishedSnapshotBuildRecord,\n SandboxSecretMetadata,\n SandboxSecretCreateInput,\n SandboxSecretRotateInput,\n SandboxSecretAttachInput,\n SandboxSecretListResponse,\n SandboxSecretResponse,\n SandboxSnapshotTemplateVisibility,\n SandboxTemplateBuildCreateInput,\n SandboxTemplateBuildRecord,\n OpenPondOrganization,\n OpenPondOrganizationCreateInput,\n OpenPondOrganizationUpdateInput,\n OpenPondOrganizationMember,\n OpenPondOrganizationMemberUpsertInput,\n OpenPondOrganizationMcpServer,\n OpenPondOrganizationMcpGenerateInput,\n SandboxProject,\n OpenPondHostedProfilePushInput,\n OpenPondHostedProfilePushResponse,\n OpenPondHostedProfileResponse,\n OpenPondHostedProfileSummary,\n SandboxAgent,\n SandboxProjectUpsertInput,\n SandboxProjectUpdateInput,\n SandboxProjectSourceUploadInput,\n SandboxProjectGitRemoteResponse,\n SandboxAgentUpsertInput,\n SandboxAgentUpdateInput,\n SandboxAgentRunInput,\n SandboxAgentSourceChecksRequestInput,\n SandboxAgentSourceChecksRequestResult,\n SandboxAgentSourceDeployPlan,\n SandboxAgentSourceDeployPlanResponse,\n SandboxAgentSourcePublishInput,\n SandboxAgentSourcePublishResult,\n SandboxAgentSourceSetupConfigureInput,\n SandboxAgentSourceSetupConfigureResult,\n SandboxAgentManifestSnapshot,\n SandboxAgentManifestSnapshotsResponse,\n SandboxProjectListResponse,\n SandboxProjectResponse,\n SandboxAgentListResponse,\n SandboxAgentResponse,\n SandboxAgentRunResponse,\n MicrosoftTeamsBotOverview,\n MicrosoftTeamsBotBindingTargetInput,\n MicrosoftTeamsBotBindingResponse,\n MicrosoftTeamsBotDiagnosticRunInput,\n MicrosoftTeamsBotDiagnosticRunResponse,\n SandboxRecord,\n SandboxSnapshotCatalogResponse,\n SandboxPublishedSnapshotCatalogResponse,\n SandboxTemplateCatalogResponse,\n SandboxRuntime,\n SandboxRuntimeCreateInput,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeEventInput,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeTransitionInput,\n SandboxRuntimeListResponse,\n SandboxRuntimeResponse,\n SandboxRuntimeSandboxResponse,\n SandboxRuntimeEventResponse,\n SandboxRuntimeEventsResponse,\n SandboxRuntimePromoteResponse,\n SandboxRuntimeSourcePreserveResponse,\n SandboxIntegrationConnectionsResponse,\n SandboxForkResponse,\n SandboxPublishedSnapshotLaunchResponse,\n SandboxTemplateLaunchResponse,\n SandboxScheduleListResponse,\n SandboxScheduleResponse,\n SandboxScheduleRunListResponse,\n SandboxScheduleRunResponse,\n SandboxReplayInput,\n SandboxReplayResponse,\n SandboxReplayListResponse,\n SandboxReplayLogsResponse,\n SandboxReplayArtifactsResponse,\n SandboxPublishedSnapshotBuildResponse,\n SandboxPublishedSnapshotBuildListResponse,\n SandboxPublishedSnapshotBuildLogsResponse,\n SandboxTemplateBuildResponse,\n SandboxTemplateBuildListResponse,\n SandboxTemplateBuildLogsResponse,\n OpenPondOrganizationsResponse,\n OpenPondOrganizationResponse,\n OpenPondOrganizationMembersResponse,\n OpenPondOrganizationMemberResponse,\n OpenPondOrganizationMcpServerResponse,\n SandboxSmokeOptions,\n SandboxSmokeSummary,\n OpenPondSandboxClientOptions,\n OpenPondSandboxMcpServerConfig,\n OpenPondSandboxRuntimeHandle,\n} from \"./types/index.js\";\nexport class OpenPondSandboxClient extends OpenPondSandboxInstanceClient {\n\n readonly runtimes = createSandboxRuntimeNamespace(this);\n readonly sandboxes = createSandboxNamespace(this);\n readonly profile = createSandboxProfileNamespace(this);\n readonly projects = createSandboxProjectNamespace(this);\n readonly agents = createSandboxAgentNamespace(this);\n\n list(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxRecord[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.request<{ sandboxes: SandboxRecord[] }>(\n query.size > 0 ? `?${query.toString()}` : \"\"\n ).then((payload) => payload.sandboxes);\n }\n\n listSecrets(\n input: {\n teamId?: string;\n } = {}\n ): Promise<SandboxSecretMetadata[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretListResponse>(\n `/sandbox-secrets${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => payload.secrets);\n }\n\n getSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n ).then((payload) => payload.secret);\n }\n\n createSecret(\n input: SandboxSecretCreateInput\n ): Promise<SandboxSecretMetadata> {\n return this.requestApiRoot<SandboxSecretResponse>(\"/sandbox-secrets\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.secret);\n }\n\n rotateSecret(\n secretId: string,\n input: SandboxSecretRotateInput\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/rotate${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.secret);\n }\n\n attachSecret(\n secretId: string,\n input: SandboxSecretAttachInput\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/attach${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.secret);\n }\n\n revokeSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/revoke${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n { method: \"POST\" }\n ).then((payload) => payload.secret);\n }\n\n deleteSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n { method: \"DELETE\" }\n ).then((payload) => payload.secret);\n }\n\n snapshotCatalog(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n q?: string;\n kind?: \"snapshot\" | \"archive\";\n replayState?: \"draft\" | \"validated\" | \"published\";\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxSnapshotCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n if (input.q) query.set(\"q\", input.q);\n if (input.kind) query.set(\"kind\", input.kind);\n if (input.replayState) query.set(\"replayState\", input.replayState);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<SandboxSnapshotCatalogResponse>(\n `/catalog/snapshots${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n listSandboxRuntimes(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxRuntime[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.requestApiRoot<SandboxRuntimeListResponse>(\n `/runtimes${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => payload.runtimes);\n }\n\n listProjects(input: { teamId: string }): Promise<SandboxProject[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectListResponse>(\n `/projects?${query.toString()}`\n ).then((payload) => payload.projects);\n }\n\n upsertProject(input: SandboxProjectUpsertInput): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.project);\n }\n\n getHostedProfile(input: {\n teamId: string;\n }): Promise<OpenPondHostedProfileSummary | null> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<OpenPondHostedProfileResponse>(\n `/profile?${query.toString()}`\n ).then((payload) => payload.profile);\n }\n\n ensureHostedProfile(input: {\n teamId: string;\n }): Promise<OpenPondHostedProfileSummary> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<OpenPondHostedProfileResponse>(\n `/profile/ensure?${query.toString()}`,\n { method: \"POST\" }\n ).then((payload) => {\n if (!payload.profile) {\n throw new Error(\"hosted_profile_missing\");\n }\n return payload.profile;\n });\n }\n\n pushHostedProfile(input: OpenPondHostedProfilePushInput): Promise<OpenPondHostedProfilePushResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<OpenPondHostedProfilePushResponse>(\n `/profile/push?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n async upsertProjectGitRemote(\n input: SandboxProjectUpsertInput\n ): Promise<SandboxProjectGitRemoteResponse> {\n const project = await this.upsertProject(input);\n return this.ensureProjectGitRemote(project.id, { teamId: input.teamId });\n }\n\n getProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`\n ).then((payload) => payload.project);\n }\n\n syncProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}/sync?${query.toString()}`,\n { method: \"POST\" }\n ).then((payload) => payload.project);\n }\n\n ensureProjectGitRemote(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProjectGitRemoteResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectGitRemoteResponse>(\n `/projects/${encodeURIComponent(projectId)}/git?${query.toString()}`,\n { method: \"POST\" }\n );\n }\n\n uploadProjectSource(\n projectId: string,\n input: SandboxProjectSourceUploadInput\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}/source?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.project);\n }\n\n updateProject(\n projectId: string,\n input: SandboxProjectUpdateInput\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.project);\n }\n\n archiveProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`,\n { method: \"DELETE\" }\n ).then((payload) => payload.project);\n }\n\n listAgents(input: { teamId: string }): Promise<SandboxAgent[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentListResponse>(\n `/agents?${query.toString()}`\n ).then((payload) => payload.agents);\n }\n\n upsertAgent(input: SandboxAgentUpsertInput): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.agent);\n }\n\n getAgent(agentId: string, input: { teamId: string }): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`\n ).then((payload) => payload.agent);\n }\n\n archiveAgent(\n agentId: string,\n input: { teamId: string }\n ): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`,\n { method: \"DELETE\" }\n ).then((payload) => payload.agent);\n }\n\n updateAgent(\n agentId: string,\n input: SandboxAgentUpdateInput\n ): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.agent);\n }\n\n runAgent(\n agentId: string,\n input: SandboxAgentRunInput\n ): Promise<SandboxAgentRunResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentRunResponse>(\n `/agents/${encodeURIComponent(agentId)}/run?${query.toString()}`,\n {\n method: \"POST\",\n headers: {\n Prefer: \"respond-async\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n getAgentSourceDeployPlan(\n agentId: string,\n input: { teamId: string }\n ): Promise<SandboxAgentSourceDeployPlan> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentSourceDeployPlanResponse>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/deploy-plan?${query.toString()}`\n ).then((payload) => payload.deployPlan);\n }\n\n listAgentManifestSnapshots(\n agentId: string,\n input: { teamId: string; limit?: number }\n ): Promise<SandboxAgentManifestSnapshot[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n if (input.limit !== undefined) query.set(\"limit\", String(input.limit));\n return this.requestApiRoot<SandboxAgentManifestSnapshotsResponse>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/manifest-snapshots?${query.toString()}`\n ).then((payload) => payload.manifestSnapshots);\n }\n\n requestAgentSourceChecks(\n agentId: string,\n input: SandboxAgentSourceChecksRequestInput\n ): Promise<SandboxAgentSourceChecksRequestResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourceChecksRequestResult>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/checks?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n timeoutMs: 15 * 60 * 1000,\n }\n );\n }\n\n configureAgentSourceSetup(\n agentId: string,\n input: SandboxAgentSourceSetupConfigureInput\n ): Promise<SandboxAgentSourceSetupConfigureResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourceSetupConfigureResult>(\n `/agents/${encodeURIComponent(agentId)}/source/setup?${query.toString()}`,\n { method: \"POST\", body: JSON.stringify(body) }\n );\n }\n\n publishAgentSource(\n agentId: string,\n input: SandboxAgentSourcePublishInput\n ): Promise<SandboxAgentSourcePublishResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourcePublishResult>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/publish?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n getMicrosoftTeamsBotOverview(input: {\n teamId: string;\n }): Promise<MicrosoftTeamsBotOverview> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<MicrosoftTeamsBotOverview>(\n `/teams/bot/overview?${query.toString()}`\n );\n }\n\n bindMicrosoftTeamsBotConversation(\n input: MicrosoftTeamsBotBindingTargetInput & { token: string }\n ): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n \"/teams/bot/bindings\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n rebindMicrosoftTeamsBotConversation(\n bindingId: string,\n input: MicrosoftTeamsBotBindingTargetInput\n ): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n `/teams/bot/bindings/${encodeURIComponent(bindingId)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n unlinkMicrosoftTeamsBotConversation(input: {\n teamId: string;\n bindingId: string;\n }): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n `/teams/bot/bindings/${encodeURIComponent(input.bindingId)}`,\n {\n method: \"DELETE\",\n body: JSON.stringify({ teamId: input.teamId }),\n }\n );\n }\n\n sendMicrosoftTeamsBotDiagnostic(input: {\n teamId: string;\n bindingId: string;\n }): Promise<MicrosoftTeamsBotBindingResponse & { diagnosticStatus: string }> {\n return this.requestApiRoot<\n MicrosoftTeamsBotBindingResponse & { diagnosticStatus: string }\n >(\"/teams/bot/diagnostics\", {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n }\n\n sendMicrosoftTeamsBotDiagnosticRun(\n input: MicrosoftTeamsBotDiagnosticRunInput\n ): Promise<MicrosoftTeamsBotDiagnosticRunResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotDiagnosticRunResponse>(\n \"/teams/bot/diagnostics/run\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n createSandboxRuntime(\n input: SandboxRuntimeCreateInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\"/runtimes\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.runtime);\n }\n\n sandboxRuntime(\n runtimeId: string,\n initial: SandboxRuntime | null = null\n ): OpenPondSandboxRuntimeHandle {\n return createSandboxRuntimeHandle(this, runtimeId, initial);\n }\n\n getSandboxRuntime(runtimeId: string): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}`\n ).then((payload) => payload.runtime);\n }\n\n createSandboxRuntimeSandbox(\n runtimeId: string,\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRuntimeSandboxResponse> {\n return this.requestApiRoot<SandboxRuntimeSandboxResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/sandbox`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n body: JSON.stringify(input),\n }\n );\n }\n\n updateSandboxRuntimeStatus(\n runtimeId: string,\n input: SandboxRuntimeTransitionInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/status`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.runtime);\n }\n\n listSandboxRuntimeEvents(\n runtimeId: string\n ): Promise<SandboxRuntimeEventsResponse> {\n return this.requestApiRoot<SandboxRuntimeEventsResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/events`\n );\n }\n\n emitSandboxRuntimeEvent(\n runtimeId: string,\n input: SandboxRuntimeEventInput\n ): Promise<SandboxRuntimeEventResponse> {\n return this.requestApiRoot<SandboxRuntimeEventResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/events`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n checkpointSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/checkpoints`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.runtime);\n }\n\n promoteSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options: { teamId?: string } = {}\n ): Promise<SandboxRuntimePromoteResponse> {\n const query = new URLSearchParams();\n if (options.teamId) query.set(\"teamId\", options.teamId);\n return this.requestApiRoot<SandboxRuntimePromoteResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/promote${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n preserveSandboxRuntimeSource(\n runtimeId: string,\n input: SandboxRuntimeSourcePreserveInput = {},\n options: { teamId?: string } = {}\n ): Promise<SandboxRuntimeSourcePreserveResponse> {\n const query = new URLSearchParams();\n if (options.teamId) query.set(\"teamId\", options.teamId);\n return this.requestApiRoot<SandboxRuntimeSourcePreserveResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/preserve-source${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n forkSnapshot(\n snapshotId: string,\n input: SandboxForkInput & { teamId?: string; projectId?: string } = {},\n options: SandboxForkOptions = {}\n ): Promise<SandboxForkResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (options.async) query.set(\"async\", \"1\");\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<SandboxForkResponse>(\n `/catalog/snapshots/${encodeURIComponent(snapshotId)}/fork${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n headers: options.async ? { Prefer: \"respond-async\" } : undefined,\n body: JSON.stringify({\n ...body,\n snapshotId,\n }),\n }\n );\n }\n\n templates(\n input: {\n teamId?: string;\n projectId?: string;\n q?: string;\n name?: string;\n version?: string;\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxTemplateCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.q) query.set(\"q\", input.q);\n if (input.name) query.set(\"name\", input.name);\n if (input.version) query.set(\"version\", input.version);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<SandboxTemplateCatalogResponse>(\n `/templates${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n publishedSnapshots(\n input: {\n teamId?: string;\n projectId?: string;\n q?: string;\n name?: string;\n version?: string;\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxPublishedSnapshotCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.q) query.set(\"q\", input.q);\n if (input.name) query.set(\"name\", input.name);\n if (input.version) query.set(\"version\", input.version);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<\n SandboxTemplateCatalogResponse &\n Partial<\n Pick<SandboxPublishedSnapshotCatalogResponse, \"publishedSnapshots\">\n >\n >(\n `/published-snapshots${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => {\n const publishedSnapshots =\n payload.publishedSnapshots ?? payload.templates;\n return {\n ...payload,\n templates: publishedSnapshots,\n publishedSnapshots,\n };\n });\n }\n\n launchTemplate(\n input: SandboxTemplateLaunchInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxTemplateLaunchResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<SandboxTemplateLaunchResponse>(\n `/templates/launch${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n runPublishedSnapshot(\n input: SandboxTemplateLaunchInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxPublishedSnapshotLaunchResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<\n SandboxTemplateLaunchResponse &\n Partial<Pick<SandboxPublishedSnapshotLaunchResponse, \"publishedSnapshot\">>\n >(\n `/published-snapshots/launch${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => {\n const publishedSnapshot = payload.publishedSnapshot ?? payload.template;\n return {\n ...payload,\n template: publishedSnapshot,\n publishedSnapshot,\n };\n });\n }\n\n listSchedules(\n input: {\n teamId?: string;\n projectId?: string;\n sourceSandboxId?: string;\n } = {}\n ): Promise<SandboxScheduleListResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.sourceSandboxId)\n query.set(\"sourceSandboxId\", input.sourceSandboxId);\n return this.request<SandboxScheduleListResponse>(\n `/schedules${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n createSchedule(\n input: SandboxScheduleCreateInput\n ): Promise<SandboxScheduleResponse> {\n const query = new URLSearchParams();\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { projectId: _projectId, ...body } = input;\n return this.request<SandboxScheduleResponse>(\n `/schedules${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n getSchedule(scheduleId: string): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`\n );\n }\n\n updateSchedule(\n scheduleId: string,\n input: SandboxScheduleUpdateInput\n ): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n deleteSchedule(scheduleId: string): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n listScheduleRuns(\n scheduleId: string,\n input: { limit?: number } = {}\n ): Promise<SandboxScheduleRunListResponse> {\n const query = new URLSearchParams();\n if (input.limit !== undefined) query.set(\"limit\", String(input.limit));\n return this.request<SandboxScheduleRunListResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}/runs${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n runScheduleNow(\n scheduleId: string,\n input: { idempotencyKey?: string } = {}\n ): Promise<SandboxScheduleRunResponse> {\n return this.request<SandboxScheduleRunResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}/run`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listTemplateBuilds(input: {\n teamId: string;\n }): Promise<SandboxTemplateBuildRecord[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxTemplateBuildListResponse>(\n `/sandbox-template-builds?${query.toString()}`\n ).then((payload) => payload.builds);\n }\n\n createTemplateBuild(\n input: SandboxTemplateBuildCreateInput\n ): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n \"/sandbox-template-builds\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.build);\n }\n\n getTemplateBuild(buildId: string): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}`\n ).then((payload) => payload.build);\n }\n\n getTemplateBuildLogs(\n buildId: string\n ): Promise<SandboxTemplateBuildLogsResponse> {\n return this.requestApiRoot<SandboxTemplateBuildLogsResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}/logs`\n );\n }\n\n cancelTemplateBuild(buildId: string): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}/cancel`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.build);\n }\n\n listPublishedSnapshotBuilds(input: {\n teamId: string;\n }): Promise<SandboxPublishedSnapshotBuildRecord[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxPublishedSnapshotBuildListResponse>(\n `/published-snapshot-builds?${query.toString()}`\n ).then((payload) => payload.builds);\n }\n\n createPublishedSnapshotBuild(\n input: SandboxPublishedSnapshotBuildCreateInput\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n \"/published-snapshot-builds\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.build);\n }\n\n getPublishedSnapshotBuild(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}`\n ).then((payload) => payload.build);\n }\n\n getPublishedSnapshotBuildLogs(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildLogsResponse> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildLogsResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}/logs`\n );\n }\n\n cancelPublishedSnapshotBuild(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}/cancel`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.build);\n }\n\n listOrganizations(): Promise<OpenPondOrganization[]> {\n return this.requestApiRoot<OpenPondOrganizationsResponse & { teams?: OpenPondOrganization[] }>(\n \"/organizations\"\n ).then((payload) => payload.organizations ?? payload.teams ?? []);\n }\n\n createOrganization(\n input: OpenPondOrganizationCreateInput\n ): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\"/organizations\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.organization);\n }\n\n getOrganization(slug: string): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\n `/organizations/${encodeURIComponent(slug)}`\n ).then((payload) => payload.organization);\n }\n\n updateOrganization(\n slug: string,\n input: OpenPondOrganizationUpdateInput\n ): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\n `/organizations/${encodeURIComponent(slug)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.organization);\n }\n\n listOrganizationMembers(slug: string): Promise<OpenPondOrganizationMember[]> {\n return this.requestApiRoot<OpenPondOrganizationMembersResponse>(\n `/organizations/${encodeURIComponent(slug)}/members`\n ).then((payload) => payload.members);\n }\n\n upsertOrganizationMember(\n slug: string,\n input: OpenPondOrganizationMemberUpsertInput\n ): Promise<OpenPondOrganizationMember> {\n return this.requestApiRoot<OpenPondOrganizationMemberResponse>(\n `/organizations/${encodeURIComponent(slug)}/members`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.member);\n }\n\n getOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server`\n ).then((payload) => payload.mcpServer);\n }\n\n generateOrganizationMcpServer(\n slug: string,\n input: OpenPondOrganizationMcpGenerateInput = {}\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.mcpServer);\n }\n\n rotateOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/rotate`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n disableOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/disable`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n enableOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/enable`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n startReplay(\n input: SandboxReplayInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n listReplays(\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayListResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayListResponse>(\n `/sandbox-replays${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n getReplay(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n getReplayLogs(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayLogsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayLogsResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/logs${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n getReplayArtifacts(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayArtifactsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayArtifactsResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/artifacts${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n cancelReplay(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/cancel${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n }\n );\n }\n\n integrationConnections(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n status?: SandboxIntegrationConnectionStatusFilter;\n } = {}\n ): Promise<SandboxIntegrationConnectionsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n if (input.status) query.set(\"status\", input.status);\n return this.requestApiRoot<SandboxIntegrationConnectionsResponse>(\n `/integrations/connections${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n mcpServerConfig(): OpenPondSandboxMcpServerConfig {\n return {\n name: \"openpond-sandboxes\",\n transport: \"streamable-http\",\n url: `${this.sandboxApiUrl}/mcp`,\n headers: {\n \"openpond-api-key\": this.apiKey,\n },\n };\n }\n\n smoke(options: SandboxSmokeOptions = {}): Promise<SandboxSmokeSummary> {\n return runSandboxSmoke(this, options);\n }\n\n}\n\nexport function createOpenPondSandboxClient(\n options: OpenPondSandboxClientOptions\n): OpenPondSandboxClient {\n return new OpenPondSandboxClient(options);\n}\n\nexport { normalizeSandboxApiUrl } from \"./url.js\";\n", "import { randomUUID } from \"node:crypto\";\nimport { DEFAULT_OPENPOND_OPCHAT_API_BASE_URL } from \"./urls.js\";\n\nexport type HostedChatRole = \"system\" | \"user\" | \"assistant\" | \"tool\";\n\nexport type HostedChatToolCall = {\n id?: string;\n type: \"function\" | string;\n function?: {\n name?: string;\n arguments?: string;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatTool = {\n type: \"function\" | string;\n function?: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatToolChoice =\n | \"none\"\n | \"auto\"\n | \"required\"\n | {\n type: \"function\";\n function: {\n name: string;\n };\n };\n\nexport type HostedChatContinuation =\n | {\n kind: \"chat_completions_reasoning\";\n reasoningContent: string;\n }\n | {\n kind: \"responses_reasoning_items\";\n items: Array<Record<string, unknown>>;\n };\n\nexport type HostedChatImageInput = {\n url: string;\n detail?: \"low\" | \"high\" | \"auto\";\n};\n\nexport type HostedChatMessage = {\n role: HostedChatRole;\n content?: string | null;\n images?: HostedChatImageInput[];\n continuation?: HostedChatContinuation;\n name?: string;\n tool_call_id?: string;\n tool_calls?: HostedChatToolCall[];\n};\n\nexport type HostedModel = {\n id: string;\n object?: string;\n created?: number;\n owned_by?: string;\n [key: string]: unknown;\n};\n\nexport type HostedProvider = {\n id: string;\n object?: string;\n display_name?: string;\n owned_by?: string;\n lifecycle_status?: string;\n credential_modes?: string[];\n routing?: Record<string, unknown>;\n default_model?: string | null;\n model_ids?: string[];\n capabilities?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type HostedModelsResponse = {\n object: \"list\" | string;\n data: HostedModel[];\n};\n\nexport type HostedProvidersResponse = {\n object: \"list\" | string;\n data: HostedProvider[];\n};\n\nexport type HostedChatUsage = {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n input_tokens?: number;\n output_tokens?: number;\n cached_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation_input_tokens?: number;\n prompt_cache_hit_tokens?: number;\n prompt_cache_miss_tokens?: number;\n cache_telemetry_source?: \"provider_usage_body\" | \"provider_response_headers\";\n prompt_tokens_details?: {\n cached_tokens?: number;\n [key: string]: unknown;\n };\n input_tokens_details?: {\n cached_tokens?: number;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatCompletion = {\n id?: string;\n object?: string;\n created?: number;\n model?: string;\n choices?: Array<{\n index?: number;\n message?: {\n role?: string;\n content?: string | null;\n tool_calls?: HostedChatToolCall[];\n };\n finish_reason?: string | null;\n }>;\n usage?: HostedChatUsage;\n [key: string]: unknown;\n};\n\nexport type HostedChatStreamDelta =\n | {\n type: \"text_delta\";\n text: string;\n raw: unknown;\n }\n | {\n type: \"reasoning_delta\";\n text: string;\n raw: unknown;\n }\n | {\n type: \"continuation\";\n continuation: HostedChatContinuation;\n raw: unknown;\n }\n | {\n type: \"tool_call_delta\";\n toolCalls: HostedChatToolCall[];\n raw: unknown;\n }\n | {\n type: \"usage\";\n usage: HostedChatUsage;\n raw: unknown;\n }\n | {\n type: \"finish\";\n finishReason: string | null;\n raw: unknown;\n };\n\nexport type HostedChatRequestOptions = {\n apiBaseUrl: string;\n token: string;\n model: string;\n messages: HostedChatMessage[];\n requestId?: string;\n signal?: AbortSignal;\n temperature?: number;\n maxTokens?: number;\n tools?: HostedChatTool[];\n toolChoice?: HostedChatToolChoice;\n tool_choice?: HostedChatToolChoice;\n metadata?: Record<string, unknown>;\n};\n\nexport type HostedModelsRequestOptions = {\n apiBaseUrl: string;\n token: string;\n signal?: AbortSignal;\n};\n\nexport type HostedModelRequestOptions = HostedModelsRequestOptions & {\n model: string;\n};\n\nexport type HostedProvidersRequestOptions = HostedModelsRequestOptions;\n\nexport type HostedProviderRequestOptions = HostedModelsRequestOptions & {\n provider: string;\n};\n\nexport type HostedChatApiBaseUrlOptions = {\n apiBaseUrl?: string | null;\n chatApiBaseUrl?: string | null;\n opChatApiBaseUrl?: string | null;\n env?: Record<string, string | undefined>;\n};\n\nfunction normalizeApiBaseUrl(value: string): string {\n const trimmed = normalizeOptionalOpChatApiBaseUrl(value);\n if (!trimmed) throw new Error(\"apiBaseUrl is required\");\n return trimmed;\n}\n\nfunction trimTrailingSlashes(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction normalizeOptionalOpChatApiBaseUrl(value?: string | null): string | null {\n let trimmed = trimTrailingSlashes(value?.trim() ?? \"\");\n if (!trimmed) return null;\n\n trimmed = trimmed\n .replace(/\\/chat\\/completions$/i, \"\")\n .replace(/\\/models(?:\\/[^/]+)?$/i, \"\");\n\n if (trimmed.endsWith(\"/opchat/v1\")) return trimmed;\n if (trimmed.endsWith(\"/opchat\")) return `${trimmed}/v1`;\n if (trimmed.endsWith(\"/v1\")) {\n trimmed = trimmed.slice(0, -\"/v1\".length);\n }\n return `${trimTrailingSlashes(trimmed)}/opchat/v1`;\n}\n\nexport function resolveOpChatApiBaseUrl(\n options: HostedChatApiBaseUrlOptions = {}\n): string {\n const runtimeEnv =\n options.env ??\n (typeof process !== \"undefined\"\n ? (process.env as Record<string, string | undefined>)\n : {});\n const explicit =\n normalizeOptionalOpChatApiBaseUrl(options.opChatApiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_OPCHAT_API_URL);\n if (explicit) return explicit;\n\n const migrationInput =\n normalizeOptionalOpChatApiBaseUrl(options.chatApiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_CHAT_API_URL) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_GATEWAY_URL);\n if (migrationInput) return migrationInput;\n\n const apiBase =\n normalizeOptionalOpChatApiBaseUrl(options.apiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_API_URL);\n return apiBase ?? DEFAULT_OPENPOND_OPCHAT_API_BASE_URL;\n}\n\nexport function resolveHostedChatApiBaseUrl(\n options: HostedChatApiBaseUrlOptions = {}\n): string {\n return resolveOpChatApiBaseUrl(options);\n}\n\nfunction requireToken(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) throw new Error(\"OpenPond API key is required\");\n return trimmed;\n}\n\nfunction hostedHeaders(\n token: string,\n accept: string,\n requestId?: string\n): Headers {\n const headers = new Headers();\n headers.set(\"Authorization\", `Bearer ${requireToken(token)}`);\n headers.set(\"Content-Type\", \"application/json\");\n headers.set(\"Accept\", accept);\n headers.set(\"x-openpond-client\", \"openpond-code\");\n headers.set(\"x-openpond-request-id\", requestId || randomUUID());\n return headers;\n}\n\nasync function readError(response: Response): Promise<string> {\n const text = await response.text().catch(() => \"\");\n if (!text) return response.statusText || `HTTP ${response.status}`;\n try {\n const payload = JSON.parse(text) as {\n error?: unknown;\n message?: unknown;\n code?: unknown;\n };\n const error =\n typeof payload.error === \"string\"\n ? payload.error\n : payload.error &&\n typeof payload.error === \"object\" &&\n !Array.isArray(payload.error)\n ? (payload.error as { code?: unknown; message?: unknown; type?: unknown })\n : null;\n const code =\n typeof payload.code === \"string\"\n ? payload.code\n : error && typeof error !== \"string\" && typeof error.code === \"string\"\n ? error.code\n : null;\n const message =\n typeof payload.message === \"string\"\n ? payload.message\n : error &&\n typeof error !== \"string\" &&\n typeof error.message === \"string\"\n ? error.message\n : null;\n const label =\n typeof error === \"string\"\n ? error\n : error && typeof error.type === \"string\"\n ? error.type\n : null;\n return [code, label, message].filter(Boolean).join(\": \") || text;\n } catch {\n return text;\n }\n}\n\nfunction buildHostedChatBody(\n options: HostedChatRequestOptions,\n stream: boolean\n): Record<string, unknown> {\n const body: Record<string, unknown> = {\n model: options.model,\n messages: options.messages,\n stream,\n };\n if (typeof options.temperature === \"number\") {\n body.temperature = options.temperature;\n }\n if (typeof options.maxTokens === \"number\") {\n body.max_tokens = options.maxTokens;\n }\n if (options.tools) {\n body.tools = options.tools;\n }\n const toolChoice = options.toolChoice ?? options.tool_choice;\n if (toolChoice !== undefined) {\n body.tool_choice = toolChoice;\n }\n if (options.metadata) {\n body.metadata = options.metadata;\n }\n return body;\n}\n\nexport async function listOpChatModels(\n options: HostedModelsRequestOptions\n): Promise<HostedModelsResponse> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/models`;\n const response = await fetch(requestUrl, {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted model list failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedModelsResponse;\n}\n\nexport async function getOpChatModel(\n options: HostedModelRequestOptions\n): Promise<HostedModel> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/models/${encodeURIComponent(options.model)}`;\n const response = await fetch(\n requestUrl,\n {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n }\n );\n if (!response.ok) {\n throw new Error(\n `Hosted model lookup failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedModel;\n}\n\nexport const listHostedModels = listOpChatModels;\n\nexport async function listOpChatProviders(\n options: HostedProvidersRequestOptions\n): Promise<HostedProvidersResponse> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/providers`;\n const response = await fetch(requestUrl, {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted provider list failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedProvidersResponse;\n}\n\nexport async function getOpChatProvider(\n options: HostedProviderRequestOptions\n): Promise<HostedProvider> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/providers/${encodeURIComponent(options.provider)}`;\n const response = await fetch(\n requestUrl,\n {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n }\n );\n if (!response.ok) {\n throw new Error(\n `Hosted provider lookup failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedProvider;\n}\n\nexport const listHostedProviders = listOpChatProviders;\n\nexport async function sendHostedChatTurn(\n options: HostedChatRequestOptions\n): Promise<HostedChatCompletion> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/chat/completions`;\n const response = await fetch(requestUrl, {\n method: \"POST\",\n headers: hostedHeaders(\n options.token,\n \"application/json\",\n options.requestId\n ),\n body: JSON.stringify(buildHostedChatBody(options, false)),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted chat failed: ${response.status} ${await readError(response)}`\n );\n }\n return (await response.json()) as HostedChatCompletion;\n}\n\ntype OpenAIStreamChunk = {\n choices?: Array<{\n delta?: {\n content?: string;\n reasoning_content?: string;\n tool_calls?: HostedChatToolCall[];\n };\n finish_reason?: string | null;\n }>;\n usage?: HostedChatUsage;\n error?: {\n message?: string;\n code?: string;\n type?: string;\n };\n};\n\nasync function* parseOpenAISSE(\n stream: ReadableStream<Uint8Array>,\n signal?: AbortSignal\n): AsyncGenerator<unknown, void, unknown> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n const readAbortError = () =>\n signal?.reason instanceof Error\n ? signal.reason\n : new Error(\"hosted_chat_aborted\");\n\n try {\n while (true) {\n if (signal?.aborted) throw readAbortError();\n const result = await reader.read();\n if (result.done) break;\n buffer += decoder.decode(result.value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed.startsWith(\"data:\")) continue;\n const data = trimmed.slice(5).trim();\n if (!data) continue;\n if (data === \"[DONE]\") return;\n yield JSON.parse(data) as unknown;\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Ignore release-lock failures when the stream is already closed.\n }\n }\n}\n\nexport async function* streamHostedChatTurn(\n options: HostedChatRequestOptions\n): AsyncGenerator<HostedChatStreamDelta, void, unknown> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/chat/completions`;\n const response = await fetch(requestUrl, {\n method: \"POST\",\n headers: hostedHeaders(\n options.token,\n \"text/event-stream\",\n options.requestId\n ),\n body: JSON.stringify(buildHostedChatBody(options, true)),\n signal: options.signal,\n });\n if (!response.ok || !response.body) {\n throw new Error(\n `Hosted chat stream failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n\n for await (const raw of parseOpenAISSE(response.body, options.signal)) {\n const chunk = raw as OpenAIStreamChunk;\n if (chunk.error) {\n throw new Error(chunk.error.message || \"Hosted chat stream error\");\n }\n if (chunk.usage) {\n yield { type: \"usage\", usage: chunk.usage, raw };\n }\n const choice = chunk.choices?.[0];\n if (!choice) continue;\n const content = choice.delta?.content;\n if (content) {\n yield { type: \"text_delta\", text: content, raw };\n }\n const reasoning = choice.delta?.reasoning_content;\n if (reasoning) {\n yield { type: \"reasoning_delta\", text: reasoning, raw };\n }\n const toolCalls = choice.delta?.tool_calls;\n if (Array.isArray(toolCalls) && toolCalls.length > 0) {\n yield { type: \"tool_call_delta\", toolCalls, raw };\n }\n if (choice.finish_reason !== undefined && choice.finish_reason !== null) {\n yield { type: \"finish\", finishReason: choice.finish_reason, raw };\n }\n }\n}\n", "import type { OpenPondSandboxClient } from \"@openpond/cloud/sandbox/client\";\nimport type { SandboxRecord } from \"@openpond/cloud/sandbox/types\";\nimport type { OpenPondClientOptions } from \"./types.js\";\n\n/** The operations used by Work; provider-specific provisioning stays here. */\nexport type WorkSandbox = Pick<OpenPondSandboxClient,\n \"get\" | \"start\" | \"exec\" | \"mkdir\" | \"uploadFile\" | \"uploadFileBase64\" |\n \"listFiles\" | \"downloadFileResponse\" | \"stop\" | \"delete\"\n> & {\n readonly supportsResume: boolean;\n createWork(input: { requestId?: string; repo?: string; budgetUsd?: string; metadata?: Record<string, unknown> }): Promise<SandboxRecord>;\n};\n\nexport function workSandbox(client: OpenPondSandboxClient, custom?: OpenPondClientOptions[\"sandbox\"]): WorkSandbox {\n return {\n supportsResume: !custom,\n get: (...args) => client.get(...args),\n start: custom ? async () => { throw new Error(\"This runtime does not support resuming a stopped guest; start fresh Work with saved outputs\"); } : (...args) => client.start(...args),\n exec: (id, input) => client.exec(id, custom ? { ...input, timeoutSeconds: Math.min(input.timeoutSeconds ?? 30, 60) } : input),\n mkdir: (...args) => client.mkdir(...args),\n uploadFile: (...args) => client.uploadFile(...args),\n uploadFileBase64: (...args) => client.uploadFileBase64(...args),\n listFiles: (...args) => client.listFiles(...args),\n downloadFileResponse: (...args) => client.downloadFileResponse(...args),\n stop: (...args) => client.stop(...args),\n delete: (...args) => client.delete(...args),\n createWork: ({ requestId, repo, budgetUsd, metadata }) => {\n if (custom) {\n if (repo?.trim()) throw new Error(\"This runtime does not support repository provisioning; provide Work inputs instead\");\n if (budgetUsd !== undefined) throw new Error(\"Hosted spending budgets are not supported by this runtime\");\n const request = { resources: custom.resources ?? { cpu: 1, memoryGb: 2, diskGb: 10 }, ...(requestId ? { requestId } : {}) };\n return client.create(request);\n }\n const budget = budgetUsd?.trim() || \"1.00\";\n return client.create({\n ...(repo?.trim() ? { repo: repo.trim() } : {}),\n runtimeProfileId: \"openpond-work-v1\",\n resources: { cpu: 2, memoryGb: 4, diskGb: 16 },\n budget: { maxUsd: budget },\n quotas: { maxSpendUsd: budget, maxDurationSeconds: 3600, idleTimeoutSeconds: 900, maxCommands: 200, maxOpenPorts: 4 },\n metadata: { source: \"openpond-sdk-work\", ...metadata, ...(requestId ? { workRequestId: requestId } : {}) },\n }, { async: true });\n },\n };\n}\n\nexport function configuredEndpoint(value: string, name: string): string {\n const endpoint = new URL(value);\n if (![\"http:\", \"https:\"].includes(endpoint.protocol) || endpoint.username || endpoint.password || endpoint.search || endpoint.hash)\n throw new Error(`${name} must be an HTTP(S) endpoint without embedded credentials, query or fragment`);\n return endpoint.toString().replace(/\\/$/, \"\");\n}\n\nexport function configuredKey(value: string, name: string): string {\n if (!value?.trim()) throw new Error(`${name} is required`);\n return value.trim();\n}\n", "import { z } from \"zod\";\nimport { sendHostedChatTurn, type HostedChatRequestOptions } from \"@openpond/cloud/hosted-chat\";\n\nconst completionSchema = z.object({\n choices: z.array(z.object({ message: z.object({\n content: z.string().nullable().optional(),\n tool_calls: z.array(z.object({\n id: z.string().min(1), type: z.literal(\"function\"),\n function: z.object({ name: z.string().min(1), arguments: z.string() }),\n })).optional(),\n }) })).min(1),\n});\n\nexport async function workModelTurn(options: HostedChatRequestOptions, custom: boolean) {\n if (!custom) return sendHostedChatTurn(options);\n const response = await fetch(`${options.apiBaseUrl}/chat/completions`, {\n method: \"POST\",\n headers: { authorization: `Bearer ${options.token}`, \"content-type\": \"application/json\" },\n body: JSON.stringify({ model: options.model, messages: options.messages, tools: options.tools, tool_choice: \"auto\", stream: false }),\n signal: options.signal,\n redirect: \"error\",\n });\n if (!response.ok) throw new Error(`Configured model request failed (${response.status})`);\n return completionSchema.parse(await response.json());\n}\n", "import { OpenPondApiError } from \"@openpond/cloud/api/core\";\nimport {\n type HostedChatMessage,\n type HostedChatTool,\n type HostedChatToolCall,\n} from \"@openpond/cloud/hosted-chat\";\nimport type { OpenPondSandboxClient } from \"@openpond/cloud/sandbox/client\";\nimport { workSandbox, type WorkSandbox } from \"./work-sandbox.js\";\nimport type { OpenPondClientOptions } from \"./types.js\";\nimport { workModelTurn } from \"./work-model.js\";\nimport type {\n SandboxFileDownloadResponse,\n SandboxFileEntry,\n SandboxRecord,\n} from \"@openpond/cloud/sandbox/types\";\n\nconst DEFAULT_MODEL = \"openpond-chat\";\nconst DEFAULT_MAX_STEPS = 24;\nconst MAX_TOOL_OUTPUT_CHARS = 40_000;\nexport const MAX_WORK_COMMAND_CHARS = 20_000;\nconst WORK_OUTPUT_DIRECTORY = \"outputs\";\nconst WORK_INPUT_DIRECTORY = \"inputs/previous-outputs\";\nconst WORK_INPUT_MANIFEST = \"inputs/.openpond-context.json\";\nconst MAX_WORK_OUTPUTS = 100;\nconst MAX_WORK_INPUTS = 100;\nconst MAX_WORK_INPUT_BYTES = 100 * 1024 * 1024;\n\nexport type OpenPondWorkCleanup = \"keep\" | \"stop\" | \"delete\";\n\nexport type OpenPondWorkHistoryMessage = {\n role: \"user\" | \"assistant\";\n content: string;\n};\n\nexport type OpenPondWorkOutput = {\n path: string;\n name: string;\n mimeType: string;\n sizeBytes: number;\n updatedAt: string;\n isBinary: boolean | null;\n previewable: boolean;\n};\n\nexport type OpenPondWorkInputFile = {\n id: string;\n name: string;\n contentsBase64: string;\n mimeType?: string;\n checksumSha256?: string;\n revision?: number;\n metadata?: Record<string, unknown>;\n};\n\nexport type OpenPondWorkOutputPersistenceContext = {\n output: OpenPondWorkOutput;\n /** Downloads and verifies the complete output at most once. */\n download: () => Promise<SandboxFileDownloadResponse>;\n};\n\nexport type OpenPondWorkLifecycle = {\n cleanupPolicy: OpenPondWorkCleanup;\n persistence: {\n status: \"not_requested\" | \"not_needed\" | \"running\" | \"complete\" | \"failed\";\n outputCount: number;\n persistedCount: number;\n error?: string;\n };\n cleanup: {\n status: \"not_requested\" | \"running\" | \"complete\" | \"pending\" | \"failed\";\n finalSandboxState?: SandboxRecord[\"state\"];\n error?: string;\n };\n};\n\nexport type OpenPondWorkEvent =\n | { type: \"status\"; message: string }\n | {\n type: \"sandbox\";\n sandboxId: string;\n state: SandboxRecord[\"state\"];\n }\n | { type: \"assistant\"; text: string }\n | {\n type: \"tool\";\n toolCallId: string;\n command: string;\n status: \"started\" | \"succeeded\" | \"failed\";\n output?: string;\n exitCode?: number | null;\n }\n | { type: \"output\"; output: OpenPondWorkOutput }\n | {\n type: \"persistence\";\n output: OpenPondWorkOutput;\n status: \"started\" | \"succeeded\" | \"failed\";\n error?: string;\n }\n | {\n type: \"cleanup\";\n policy: OpenPondWorkCleanup;\n status: \"started\" | \"complete\" | \"pending\" | \"failed\";\n sandboxState?: SandboxRecord[\"state\"];\n error?: string;\n }\n | {\n type: \"done\";\n sandboxId: string;\n text: string;\n steps: number;\n outputs: OpenPondWorkOutput[];\n lifecycle: OpenPondWorkLifecycle;\n };\n\nexport type OpenPondWorkRunInput = {\n prompt: string;\n /** Durable caller-generated UUID for recovering a BYOC create after an app restart. */\n requestId?: string;\n /** Reuse this sandbox to continue work in an existing conversation. */\n sandboxId?: string;\n /** Repository cloned when a new sandbox is created. */\n repo?: string;\n history?: OpenPondWorkHistoryMessage[];\n model?: string;\n maxSteps?: number;\n budgetUsd?: string;\n timeoutSeconds?: number;\n signal?: AbortSignal;\n metadata?: Record<string, unknown>;\n /** Defaults to keep for backwards compatibility. First-party Work callers use delete. */\n cleanup?: OpenPondWorkCleanup;\n /** Required before delete when a turn creates outputs, unless discardOutputs is true. */\n persistOutput?: (\n context: OpenPondWorkOutputPersistenceContext,\n ) => void | Promise<void>;\n /** Explicitly allows delete to discard detected outputs. */\n discardOutputs?: boolean;\n /** Durable outputs or other caller-owned files to stage into fresh compute. */\n inputs?: OpenPondWorkInputFile[];\n onEvent?: (event: OpenPondWorkEvent) => void | Promise<void>;\n};\n\nexport type OpenPondWorkRunResult = {\n sandboxId: string;\n text: string;\n steps: number;\n outputs: OpenPondWorkOutput[];\n lifecycle: OpenPondWorkLifecycle;\n};\n\ntype WorkClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n chatApiBaseUrl: string;\n sandboxes: OpenPondSandboxClient;\n sandboxConfig?: OpenPondClientOptions[\"sandbox\"];\n defaultModel?: string;\n customModel?: boolean;\n};\n\nexport class OpenPondWorkClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n readonly #chatApiBaseUrl: string;\n readonly #sandboxes: WorkSandbox;\n readonly #defaultModel: string;\n readonly #customModel: boolean;\n\n constructor(input: WorkClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl;\n this.#chatApiBaseUrl = input.chatApiBaseUrl;\n this.#sandboxes = workSandbox(input.sandboxes, input.sandboxConfig);\n this.#defaultModel = input.defaultModel ?? DEFAULT_MODEL;\n this.#customModel = input.customModel ?? false;\n }\n\n async run(input: OpenPondWorkRunInput): Promise<OpenPondWorkRunResult> {\n const prompt = input.prompt.trim();\n if (!prompt) throw new Error(\"Work prompt is required\");\n input.signal?.throwIfAborted();\n\n const emit = async (event: OpenPondWorkEvent) => input.onEvent?.(event);\n const cleanupPolicy = input.cleanup ?? \"keep\";\n const lifecycle = initialLifecycle(cleanupPolicy);\n let sandbox: SandboxRecord | null = null;\n let outputBaseline: Map<string, string> | null = null;\n let finalizationAttempted = false;\n const maxSteps = boundedInteger(input.maxSteps, 1, 100, DEFAULT_MAX_STEPS);\n let finalText = \"\";\n try {\n await emit({ type: \"status\", message: \"Preparing sandbox\" });\n sandbox = await this.#resolveSandbox(input);\n await emit({\n type: \"sandbox\",\n sandboxId: sandbox.id,\n state: sandbox.state,\n });\n await this.#stageInputs(sandbox.id, input.inputs ?? []);\n outputBaseline = await this.#prepareOutputDirectory(sandbox.id);\n const messages: HostedChatMessage[] = [\n {\n role: \"system\",\n content: systemPrompt(sandbox.id, (input.inputs?.length ?? 0) > 0),\n },\n ...(input.history ?? []).map((message) => ({ ...message })),\n { role: \"user\", content: prompt },\n ];\n\n for (let step = 1; step <= maxSteps; step += 1) {\n input.signal?.throwIfAborted();\n await emit({ type: \"status\", message: `Thinking \u00B7 step ${step}` });\n const completion = await workModelTurn({\n apiBaseUrl: this.#chatApiBaseUrl,\n token: this.#apiKey,\n model: input.model?.trim() || this.#defaultModel,\n messages,\n tools: WORK_TOOLS,\n toolChoice: \"auto\",\n signal: input.signal,\n metadata: {\n source: \"openpond-sdk-work\",\n sandboxId: sandbox.id,\n apiBaseUrl: this.#apiBaseUrl,\n ...input.metadata,\n },\n }, this.#customModel);\n const choice = completion.choices?.[0];\n const assistantText = choice?.message?.content?.trim() ?? \"\";\n const toolCalls = choice?.message?.tool_calls ?? [];\n messages.push({\n role: \"assistant\",\n content: assistantText || null,\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n });\n\n if (assistantText) {\n finalText = assistantText;\n await emit({ type: \"assistant\", text: assistantText });\n }\n if (toolCalls.length === 0) {\n const outputs = await this.#collectOutputs(sandbox.id, outputBaseline);\n for (const output of outputs) await emit({ type: \"output\", output });\n finalizationAttempted = true;\n await this.#finalizeSandbox(sandbox.id, outputs, input, lifecycle, emit);\n const result = {\n sandboxId: sandbox.id,\n text: finalText,\n steps: step,\n outputs,\n lifecycle,\n };\n await emit({ type: \"done\", ...result });\n return result;\n }\n\n for (const [index, toolCall] of toolCalls.entries()) {\n input.signal?.throwIfAborted();\n const result = await this.#executeTool(\n sandbox.id,\n toolCall,\n index,\n input.timeoutSeconds,\n emit,\n );\n messages.push(result);\n }\n }\n\n throw new Error(`Work did not finish within ${maxSteps} steps`);\n } catch (error) {\n if (sandbox && outputBaseline && !finalizationAttempted) {\n try {\n const outputs = await this.#collectOutputs(sandbox.id, outputBaseline);\n for (const output of outputs) await emit({ type: \"output\", output });\n await this.#finalizeSandbox(sandbox.id, outputs, input, lifecycle, emit);\n } catch (finalizationError) {\n attachWorkFailure(error, lifecycle, finalizationError);\n }\n }\n attachWorkFailure(error, lifecycle);\n throw error;\n }\n }\n\n async deleteSandbox(sandboxId: string): Promise<void> {\n try {\n const sandbox = await this.#sandboxes.get(sandboxId);\n if (sandbox.state === \"deleted\") return;\n await this.#sandboxes.delete(sandboxId);\n } catch (error) {\n // Deletion may have finished before the response or app was interrupted.\n if (error instanceof OpenPondApiError && error.status === 404) return;\n throw error;\n }\n }\n\n async #stageInputs(\n sandboxId: string,\n inputs: OpenPondWorkInputFile[],\n ): Promise<void> {\n if (inputs.length === 0) return;\n if (inputs.length > MAX_WORK_INPUTS) {\n throw new Error(`Work inputs exceed the ${MAX_WORK_INPUTS} file limit`);\n }\n const decodedBytes = inputs.reduce(\n (total, input) => total + Buffer.byteLength(input.contentsBase64, \"base64\"),\n 0,\n );\n if (decodedBytes > MAX_WORK_INPUT_BYTES) {\n throw new Error(`Work inputs exceed the ${MAX_WORK_INPUT_BYTES} byte limit`);\n }\n\n await this.#sandboxes.mkdir(sandboxId, {\n path: WORK_INPUT_DIRECTORY,\n recursive: true,\n });\n const usedNames = new Set<string>();\n const manifest = [];\n for (const [index, input] of inputs.entries()) {\n const name = uniqueInputName(input, index, usedNames);\n const stagedPath = `${WORK_INPUT_DIRECTORY}/${name}`;\n await this.#sandboxes.uploadFileBase64(\n sandboxId,\n stagedPath,\n input.contentsBase64,\n );\n manifest.push({\n id: input.id,\n path: stagedPath,\n name: input.name,\n mimeType: input.mimeType ?? null,\n checksumSha256: input.checksumSha256 ?? null,\n revision: input.revision ?? null,\n metadata: input.metadata ?? {},\n });\n }\n await this.#sandboxes.uploadFile(\n sandboxId,\n WORK_INPUT_MANIFEST,\n JSON.stringify({ version: 1, files: manifest }, null, 2),\n );\n }\n\n async #finalizeSandbox(\n sandboxId: string,\n outputs: OpenPondWorkOutput[],\n input: OpenPondWorkRunInput,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<void> {\n lifecycle.persistence.outputCount = outputs.length;\n if (outputs.length === 0) {\n lifecycle.persistence.status = \"not_needed\";\n } else if (input.persistOutput) {\n lifecycle.persistence.status = \"running\";\n for (const output of outputs) {\n await emit({ type: \"persistence\", output, status: \"started\" });\n try {\n const download = lazyOutputDownload(this.#sandboxes, sandboxId, output);\n await input.persistOutput({ output, download });\n lifecycle.persistence.persistedCount += 1;\n await emit({ type: \"persistence\", output, status: \"succeeded\" });\n } catch (error) {\n const message = errorMessage(error);\n lifecycle.persistence.status = \"failed\";\n lifecycle.persistence.error = message;\n await emit({\n type: \"persistence\",\n output,\n status: \"failed\",\n error: message,\n });\n if ((input.cleanup ?? \"keep\") !== \"keep\") {\n await this.#preserveFailedOutputs(sandboxId, lifecycle, emit);\n }\n throw error;\n }\n }\n lifecycle.persistence.status = \"complete\";\n } else if ((input.cleanup ?? \"keep\") === \"delete\" && !input.discardOutputs) {\n lifecycle.persistence.status = \"failed\";\n lifecycle.persistence.error =\n \"Deleting a Work sandbox with outputs requires persistOutput or discardOutputs: true\";\n await this.#preserveFailedOutputs(sandboxId, lifecycle, emit);\n throw new Error(lifecycle.persistence.error);\n } else {\n lifecycle.persistence.status = \"not_requested\";\n }\n\n await this.#cleanupSandbox(\n sandboxId,\n input.cleanup ?? \"keep\",\n lifecycle,\n emit,\n );\n }\n\n async #preserveFailedOutputs(\n sandboxId: string,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ) {\n if (this.#sandboxes.supportsResume) {\n await this.#cleanupSandbox(sandboxId, \"stop\", lifecycle, emit);\n return;\n }\n // A fresh-only runtime cannot restart a stopped guest to recover files.\n // Keep it available for the application's durable persistence retry.\n lifecycle.cleanup.status = \"pending\";\n lifecycle.cleanup.finalSandboxState = \"running\";\n lifecycle.cleanup.error = \"Output persistence must be retried before guest deletion\";\n await emit({ type: \"cleanup\", policy: lifecycle.cleanupPolicy, status: \"pending\", sandboxState: \"running\", error: lifecycle.cleanup.error });\n }\n\n async #cleanupSandbox(\n sandboxId: string,\n policy: OpenPondWorkCleanup,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<void> {\n if (policy === \"keep\") return;\n lifecycle.cleanup.status = \"running\";\n await emit({ type: \"cleanup\", policy, status: \"started\" });\n try {\n const sandbox =\n policy === \"delete\"\n ? await this.#sandboxes.delete(sandboxId)\n : (await this.#sandboxes.stop(sandboxId)).sandbox;\n lifecycle.cleanup.finalSandboxState = sandbox.state;\n lifecycle.cleanup.status =\n (policy === \"delete\" && sandbox.state === \"deleted\") ||\n (policy === \"stop\" && sandbox.state === \"stopped\")\n ? \"complete\"\n : \"pending\";\n await emit({\n type: \"cleanup\",\n policy,\n status: lifecycle.cleanup.status,\n sandboxState: sandbox.state,\n });\n } catch (error) {\n const message = errorMessage(error);\n lifecycle.cleanup.status = \"failed\";\n lifecycle.cleanup.error = message;\n await emit({ type: \"cleanup\", policy, status: \"failed\", error: message });\n throw error;\n }\n }\n\n downloadOutput(\n sandboxId: string,\n output: OpenPondWorkOutput | string,\n ): Promise<SandboxFileDownloadResponse> {\n return this.#sandboxes.downloadFileResponse(\n sandboxId,\n typeof output === \"string\" ? output : output.path,\n );\n }\n\n async #prepareOutputDirectory(sandboxId: string): Promise<Map<string, string>> {\n await this.#sandboxes.mkdir(sandboxId, {\n path: WORK_OUTPUT_DIRECTORY,\n recursive: true,\n });\n return outputSignatures(await this.#listOutputFiles(sandboxId));\n }\n\n async #collectOutputs(\n sandboxId: string,\n baseline: Map<string, string>,\n ): Promise<OpenPondWorkOutput[]> {\n const files = await this.#listOutputFiles(sandboxId);\n return files\n .filter((file) => baseline.get(file.path) !== outputSignature(file))\n .sort((left, right) => left.path.localeCompare(right.path))\n .slice(0, MAX_WORK_OUTPUTS)\n .map(workOutputFromFile);\n }\n\n async #listOutputFiles(sandboxId: string): Promise<SandboxFileEntry[]> {\n const listed = await this.#sandboxes.listFiles(sandboxId, {\n path: WORK_OUTPUT_DIRECTORY,\n recursive: true,\n maxEntries: 500,\n });\n return listed.files.filter(\n (file) =>\n file.type === \"file\" &&\n !normalizedOutputPath(file.path).includes(\"/.openpond-\"),\n );\n }\n\n async #resolveSandbox(input: OpenPondWorkRunInput): Promise<SandboxRecord> {\n if (input.sandboxId) {\n const existing = await this.#sandboxes.get(input.sandboxId);\n if (existing.state === \"stopped\") {\n await this.#sandboxes.start(existing.id, { async: true });\n } else if (existing.state === \"deleted\" || existing.state === \"error\") {\n throw new Error(`Cannot resume sandbox ${existing.id} in state ${existing.state}`);\n }\n const ready = await this.#waitUntilRunning(existing.id, input.signal);\n return ready;\n }\n\n const created = await this.#sandboxes.createWork(input);\n return this.#waitUntilRunning(created.id, input.signal);\n }\n\n async #waitUntilRunning(sandboxId: string, signal?: AbortSignal): Promise<SandboxRecord> {\n const deadline = Date.now() + 12 * 60_000;\n let sandbox = await this.#sandboxes.get(sandboxId);\n while (Date.now() < deadline) {\n signal?.throwIfAborted();\n if (sandbox.state === \"running\") return sandbox;\n if (sandbox.state === \"error\" || sandbox.state === \"deleted\") {\n throw new Error(\n `Sandbox ${sandbox.id} entered ${sandbox.state}${sandbox.logs.length ? `: ${sandbox.logs.join(\"\\n\")}` : \"\"}`,\n );\n }\n await sleep(2_000, signal);\n sandbox = await this.#sandboxes.get(sandboxId);\n }\n throw new Error(`Sandbox ${sandboxId} did not become ready before timeout`);\n }\n\n async #executeTool(\n sandboxId: string,\n toolCall: HostedChatToolCall,\n index: number,\n timeoutSeconds: number | undefined,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<HostedChatMessage> {\n const toolCallId = toolCall.id || `work_tool_${index}`;\n const name = toolCall.function?.name;\n if (name !== \"run_command\") {\n return toolMessage(toolCallId, { error: `Unknown tool: ${name ?? \"missing\"}` });\n }\n\n let args: { command?: unknown };\n try {\n args = JSON.parse(toolCall.function?.arguments || \"{}\") as { command?: unknown };\n } catch (error) {\n return toolMessage(toolCallId, { error: `Invalid tool arguments: ${errorMessage(error)}` });\n }\n const command = typeof args.command === \"string\" ? args.command.trim() : \"\";\n if (!command) return toolMessage(toolCallId, { error: \"command is required\" });\n if (command.length > MAX_WORK_COMMAND_CHARS) {\n const output = `command exceeds the ${MAX_WORK_COMMAND_CHARS} character limit`;\n await emit({ type: \"tool\", toolCallId, command, status: \"failed\", output });\n return toolMessage(toolCallId, { status: \"failed\", error: output });\n }\n\n await emit({ type: \"tool\", toolCallId, command, status: \"started\" });\n try {\n const response = await this.#sandboxes.exec(sandboxId, {\n command,\n timeoutSeconds: boundedInteger(timeoutSeconds, 1, 900, 180),\n });\n const output = truncate(response.command.output, MAX_TOOL_OUTPUT_CHARS);\n const status = response.command.status === \"succeeded\" ? \"succeeded\" : \"failed\";\n await emit({\n type: \"tool\",\n toolCallId,\n command,\n status,\n output,\n exitCode: response.command.exitCode,\n });\n return toolMessage(toolCallId, {\n status: response.command.status,\n exitCode: response.command.exitCode,\n output,\n });\n } catch (error) {\n if (error instanceof OpenPondApiError) throw error;\n const output = errorMessage(error);\n await emit({ type: \"tool\", toolCallId, command, status: \"failed\", output });\n return toolMessage(toolCallId, { status: \"failed\", error: output });\n }\n }\n}\n\nconst WORK_TOOLS: HostedChatTool[] = [\n {\n type: \"function\",\n function: {\n name: \"run_command\",\n description:\n \"Run a shell command inside the persistent OpenPond sandbox. Use standard shell tools to inspect, edit, build, and test files. Commands start in the repository workspace.\",\n parameters: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n command: {\n type: \"string\",\n minLength: 1,\n maxLength: MAX_WORK_COMMAND_CHARS,\n description: \"Shell command to execute.\",\n },\n },\n required: [\"command\"],\n },\n },\n },\n];\n\nfunction systemPrompt(sandboxId: string, hasInputs: boolean): string {\n return [\n \"You are OpenPond Work, a careful coding agent operating in an isolated Linux sandbox.\",\n `The active sandbox is ${sandboxId}.`,\n ...(hasInputs\n ? [\n `Caller-provided durable files are staged under ${WORK_INPUT_DIRECTORY}; structured metadata is in ${WORK_INPUT_MANIFEST}.`,\n ]\n : []),\n \"Use run_command to inspect the workspace, edit files, and validate your work.\",\n `Place completed user-facing files in ${WORK_OUTPUT_DIRECTORY}. The runtime collects new and revised files there automatically when the turn completes.`,\n \"Do the requested work completely. Preserve existing user changes and avoid destructive commands.\",\n \"Keep the user informed with concise prose, but call tools whenever verification or file changes are needed.\",\n \"Before finishing, run relevant tests and summarize the concrete result.\",\n ].join(\"\\n\");\n}\n\nfunction initialLifecycle(\n cleanupPolicy: OpenPondWorkCleanup,\n): OpenPondWorkLifecycle {\n return {\n cleanupPolicy,\n persistence: {\n status: \"not_requested\",\n outputCount: 0,\n persistedCount: 0,\n },\n cleanup: { status: \"not_requested\" },\n };\n}\n\nfunction lazyOutputDownload(\n sandboxes: WorkSandbox,\n sandboxId: string,\n output: OpenPondWorkOutput,\n): () => Promise<SandboxFileDownloadResponse> {\n let pending: Promise<SandboxFileDownloadResponse> | null = null;\n return () => {\n pending ??= sandboxes\n .downloadFileResponse(sandboxId, {\n path: output.path,\n maxBytes: Math.max(1, output.sizeBytes),\n })\n .then((response) => {\n const decodedBytes = Buffer.byteLength(\n response.file.contentsBase64,\n \"base64\",\n );\n if (\n response.file.truncated ||\n response.file.returnedBytes !== response.file.totalSizeBytes ||\n decodedBytes !== output.sizeBytes\n ) {\n throw new Error(`Output download was incomplete for ${output.name}`);\n }\n return response;\n });\n return pending;\n };\n}\n\nfunction uniqueInputName(\n input: OpenPondWorkInputFile,\n index: number,\n usedNames: Set<string>,\n): string {\n const safeId = input.id.replace(/[^a-zA-Z0-9._-]+/g, \"-\").slice(0, 80) || `input-${index + 1}`;\n const safeName = input.name.replace(/[^a-zA-Z0-9._-]+/g, \"-\").slice(-120) || \"file\";\n const base = `${safeId}-${safeName}`;\n let candidate = base;\n let collision = 1;\n while (usedNames.has(candidate)) {\n collision += 1;\n candidate = `${base}-${collision}`;\n }\n usedNames.add(candidate);\n return candidate;\n}\n\nfunction attachWorkFailure(\n error: unknown,\n lifecycle: OpenPondWorkLifecycle,\n finalizationError?: unknown,\n): void {\n if (!error || typeof error !== \"object\") return;\n Object.assign(error, {\n workLifecycle: lifecycle,\n ...(finalizationError\n ? { workFinalizationError: errorMessage(finalizationError) }\n : {}),\n });\n}\n\nfunction outputSignatures(files: SandboxFileEntry[]): Map<string, string> {\n return new Map(files.map((file) => [file.path, outputSignature(file)]));\n}\n\nfunction outputSignature(file: SandboxFileEntry): string {\n return `${file.sizeBytes}:${file.updatedAt}`;\n}\n\nfunction workOutputFromFile(file: SandboxFileEntry): OpenPondWorkOutput {\n const name = normalizedOutputPath(file.path).split(\"/\").at(-1) || file.path;\n const mimeType = workOutputMimeType(name);\n return {\n path: file.path,\n name,\n mimeType,\n sizeBytes: file.sizeBytes,\n updatedAt: file.updatedAt,\n isBinary: file.isBinary ?? null,\n previewable:\n file.previewable ??\n (mimeType.startsWith(\"image/\") ||\n mimeType === \"application/pdf\" ||\n mimeType.startsWith(\"text/\")),\n };\n}\n\nfunction normalizedOutputPath(value: string): string {\n return value.replaceAll(\"\\\\\", \"/\");\n}\n\nfunction workOutputMimeType(name: string): string {\n const extension = name.toLowerCase().match(/\\.[^.]+$/)?.[0] ?? \"\";\n return WORK_OUTPUT_MIME_TYPES[extension] ?? \"application/octet-stream\";\n}\n\nconst WORK_OUTPUT_MIME_TYPES: Readonly<Record<string, string>> = Object.freeze({\n \".avif\": \"image/avif\",\n \".csv\": \"text/csv\",\n \".docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".gif\": \"image/gif\",\n \".html\": \"text/html\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".json\": \"application/json\",\n \".m4a\": \"audio/mp4\",\n \".md\": \"text/markdown\",\n \".mov\": \"video/quicktime\",\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"video/mp4\",\n \".pdf\": \"application/pdf\",\n \".png\": \"image/png\",\n \".pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".svg\": \"image/svg+xml\",\n \".tsv\": \"text/tab-separated-values\",\n \".txt\": \"text/plain\",\n \".wav\": \"audio/wav\",\n \".webm\": \"video/webm\",\n \".webp\": \"image/webp\",\n \".xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n});\n\nfunction toolMessage(toolCallId: string, payload: Record<string, unknown>): HostedChatMessage {\n return { role: \"tool\", tool_call_id: toolCallId, content: JSON.stringify(payload) };\n}\n\nfunction boundedInteger(\n value: number | undefined,\n minimum: number,\n maximum: number,\n fallback: number,\n): number {\n if (!Number.isFinite(value)) return fallback;\n return Math.min(maximum, Math.max(minimum, Math.floor(value!)));\n}\n\nfunction truncate(value: string, maximum: number): string {\n if (value.length <= maximum) return value;\n return `${value.slice(0, maximum)}\\n\u2026 output truncated by openpond-sdk`;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction sleep(milliseconds: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n const timer = setTimeout(resolve, milliseconds);\n timer.unref?.();\n signal?.addEventListener(\n \"abort\",\n () => {\n clearTimeout(timer);\n reject(signal.reason);\n },\n { once: true },\n );\n });\n}\n", "export const SANDBOX_RUNTIME_PROFILE_IDS = [\n \"openpond-generic-v1\",\n \"openpond-work-v1\",\n \"openpond-coding-core-v1\",\n \"openpond-agent-harness-v1\",\n] as const;\n\nexport type SandboxRuntimeProfileId =\n (typeof SANDBOX_RUNTIME_PROFILE_IDS)[number];\n\nexport type SandboxRuntimeProfileCapability =\n | \"files\"\n | \"exec\"\n | \"processes\"\n | \"pty\"\n | \"ports\"\n | \"preview\"\n | \"git\"\n | \"coding_task\";\n\nexport type SandboxRuntimeProfile = {\n id: SandboxRuntimeProfileId;\n label: string;\n description: string;\n version: number;\n workspaceRoot: string;\n defaultExecutionProfileId: string;\n requiredTools: string[];\n excludedToolchains: string[];\n capabilities: SandboxRuntimeProfileCapability[];\n};\n\nexport type SandboxRuntimeProfileSummary = Omit<\n SandboxRuntimeProfile,\n \"description\"\n>;\n", "import {\n createOpenPondSandboxClient,\n type OpenPondSandboxClient,\n} from \"@openpond/cloud/sandbox/client\";\nimport { resolveOpChatApiBaseUrl } from \"@openpond/cloud/hosted-chat\";\n\nimport { OpenPondWorkClient } from \"./work.js\";\nimport { OpenPondProjectActionsClient } from \"./project-actions.js\";\nimport { OpenPondProfileActionsClient } from \"./profile-actions.js\";\nimport { OpenPondWorkflowsClient } from \"./workflows.js\";\nimport type { OpenPondClientOptions } from \"./types.js\";\nimport { OpenPondLearningClient } from \"./learning-client.js\";\nimport { configuredEndpoint, configuredKey } from \"./work-sandbox.js\";\n\nexport class OpenPondClient {\n readonly sandboxes: OpenPondSandboxClient;\n readonly work: OpenPondWorkClient;\n readonly workflows: OpenPondWorkflowsClient;\n readonly actions: OpenPondProjectActionsClient;\n readonly profileActions: OpenPondProfileActionsClient;\n readonly learning: (scope: string) => OpenPondLearningClient;\n\n constructor(options: OpenPondClientOptions) {\n const apiKey = options.apiKey?.trim() ?? \"\";\n if (!apiKey && (!options.sandbox || !options.model))\n throw new Error(\"OpenPond API key is required when using a default sandbox or model\");\n const sandbox = options.sandbox ? {\n ...options.sandbox,\n endpoint: configuredEndpoint(options.sandbox.endpoint, \"Sandbox endpoint\"),\n apiKey: configuredKey(options.sandbox.apiKey, \"Sandbox API key\"),\n } : undefined;\n const model = options.model ? {\n endpoint: configuredEndpoint(options.model.endpoint, \"Model endpoint\"),\n apiKey: configuredKey(options.model.apiKey, \"Model API key\"),\n model: configuredKey(options.model.model, \"Model ID\"),\n } : undefined;\n\n const apiBaseUrl = options.baseUrl?.trim() || \"https://api.openpond.ai\";\n this.learning = (scope) => new OpenPondLearningClient({ apiKey, baseUrl: apiBaseUrl, scope });\n this.sandboxes = createOpenPondSandboxClient({\n apiKey: sandbox?.apiKey ?? apiKey,\n baseUrl: apiBaseUrl,\n sandboxApiUrl: sandbox?.endpoint ?? options.sandboxApiUrl,\n customEndpoint: Boolean(sandbox),\n });\n this.work = new OpenPondWorkClient({\n apiKey: model?.apiKey ?? apiKey,\n apiBaseUrl,\n chatApiBaseUrl:\n model?.endpoint || options.chatApiUrl?.trim() ||\n resolveOpChatApiBaseUrl({ apiBaseUrl, env: {} }),\n sandboxes: this.sandboxes,\n sandboxConfig: sandbox,\n defaultModel: model?.model,\n customModel: Boolean(model),\n });\n this.workflows = new OpenPondWorkflowsClient({ apiKey, apiBaseUrl });\n this.actions = new OpenPondProjectActionsClient({ apiKey, apiBaseUrl });\n this.profileActions = new OpenPondProfileActionsClient({ apiKey, apiBaseUrl });\n }\n}\n\nexport function createOpenPondClient(options: OpenPondClientOptions): OpenPondClient {\n return new OpenPondClient(options);\n}\n\nexport type { OpenPondClientOptions } from \"./types.js\";\nexport { OpenPondWorkClient } from \"./work.js\";\nexport { OpenPondWorkflowsClient } from \"./workflows.js\";\nexport { OpenPondProjectActionsClient } from \"./project-actions.js\";\nexport { OpenPondProfileActionsClient } from \"./profile-actions.js\";\nexport type {\n HostedProjectActionCatalog,\n ProjectActionInvocation,\n ProjectActionRelease,\n} from \"./project-actions.js\";\nexport type {\n OpenPondProfileActionCatalog,\n OpenPondProfileActionCatalogEntry,\n OpenPondProfileActionInvocation,\n OpenPondProfileActionSetupRequirement,\n} from \"./profile-actions.js\";\nexport { OpenPondApiError } from \"@openpond/cloud/api/core\";\nexport type {\n OpenPondWorkEvent,\n OpenPondWorkCleanup,\n OpenPondWorkHistoryMessage,\n OpenPondWorkInputFile,\n OpenPondWorkLifecycle,\n OpenPondWorkOutput,\n OpenPondWorkOutputPersistenceContext,\n OpenPondWorkRunInput,\n OpenPondWorkRunResult,\n} from \"./work.js\";\nexport type {\n OpenPondWorkflowCatalog,\n OpenPondWorkflowCreateInput,\n OpenPondWorkflowCreateResult,\n OpenPondWorkflowDefinition,\n OpenPondWorkflowDeleteResult,\n OpenPondWorkflowRecurrence,\n OpenPondWorkflowRequestOptions,\n OpenPondWorkflowRun,\n OpenPondWorkflowRunNowResult,\n OpenPondWorkflowSchedule,\n OpenPondWorkflowUpdateInput,\n OpenPondWorkflowUpdateResult,\n OpenPondWorkflowWeekday,\n} from \"./workflows.js\";\nexport * from \"./refiner.js\";\nexport { OpenPondLearningClient, OpenPondLearningError } from \"./learning-client.js\";\nexport type { OpenPondLearningClientOptions, LearningRequestOptions } from \"./learning-client.js\";\n\nexport * from \"@openpond/cloud/sandbox/client\";\nexport * from \"@openpond/cloud/sandbox/types\";\nexport {\n getOpChatModel,\n getOpChatProvider,\n listOpChatModels,\n listOpChatProviders,\n resolveOpChatApiBaseUrl,\n sendHostedChatTurn,\n streamHostedChatTurn,\n} from \"@openpond/cloud/hosted-chat\";\nexport type {\n HostedChatCompletion,\n HostedChatMessage,\n HostedChatStreamDelta,\n HostedChatTool,\n HostedChatToolCall,\n HostedChatUsage,\n HostedModel,\n HostedModelsResponse,\n HostedProvider,\n HostedProvidersResponse,\n} from \"@openpond/cloud/hosted-chat\";\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type { OpenPondSandboxClient } from \"./client.js\";\nimport type {\n SandboxAgentRunInput,\n SandboxAgentSourceChecksRequestInput,\n SandboxAgentSourcePublishInput,\n SandboxAgentSourceSetupConfigureInput,\n SandboxAgentUpdateInput,\n SandboxAgentUpsertInput,\n SandboxCreateInput,\n SandboxAsyncRequestOptions,\n SandboxProjectUpdateInput,\n SandboxProjectUpsertInput,\n SandboxProjectSourceUploadInput,\n SandboxRuntime,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimeCreateInput,\n SandboxRuntimeEventInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeTransitionInput,\n OpenPondHostedProfilePushInput,\n OpenPondHostedProfilePushResponse,\n OpenPondHostedProfileSummary,\n} from \"./types/index.js\";\n\nexport function createSandboxRuntimeNamespace(client: OpenPondSandboxClient) {\n return {\n list: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.listSandboxRuntimes(input),\n create: (input: SandboxRuntimeCreateInput) =>\n client.createSandboxRuntime(input),\n handle: (runtimeId: string, initial: SandboxRuntime | null = null) =>\n client.sandboxRuntime(runtimeId, initial),\n get: (runtimeId: string) => client.getSandboxRuntime(runtimeId),\n createSandbox: (\n runtimeId: string,\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ) => client.createSandboxRuntimeSandbox(runtimeId, input, options),\n updateStatus: (runtimeId: string, input: SandboxRuntimeTransitionInput) =>\n client.updateSandboxRuntimeStatus(runtimeId, input),\n events: (runtimeId: string) => client.listSandboxRuntimeEvents(runtimeId),\n event: (runtimeId: string, input: SandboxRuntimeEventInput) =>\n client.emitSandboxRuntimeEvent(runtimeId, input),\n checkpoint: (\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput = {}\n ) => client.checkpointSandboxRuntime(runtimeId, input),\n promote: (\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options: { teamId?: string } = {}\n ) => client.promoteSandboxRuntime(runtimeId, input, options),\n preserveSource: (\n runtimeId: string,\n input: SandboxRuntimeSourcePreserveInput = {},\n options: { teamId?: string } = {}\n ) => client.preserveSandboxRuntimeSource(runtimeId, input, options),\n };\n}\n\nexport function createSandboxNamespace(client: OpenPondSandboxClient) {\n return {\n list: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.list(input),\n create: (input: SandboxCreateInput) => client.create(input),\n get: (sandboxId: string) => client.get(sandboxId),\n pricing: () => client.pricing(),\n costs: (\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ) => client.costs(input),\n };\n}\n\nexport function createSandboxProjectNamespace(client: OpenPondSandboxClient) {\n return {\n list: (input: { teamId: string }) => client.listProjects(input),\n upsert: (input: SandboxProjectUpsertInput) => client.upsertProject(input),\n upsertGitRemote: (input: SandboxProjectUpsertInput) =>\n client.upsertProjectGitRemote(input),\n get: (projectId: string, input: { teamId: string }) =>\n client.getProject(projectId, input),\n update: (projectId: string, input: SandboxProjectUpdateInput) =>\n client.updateProject(projectId, input),\n sync: (projectId: string, input: { teamId: string }) =>\n client.syncProject(projectId, input),\n ensureGitRemote: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n getGitRemote: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n git: (projectId: string, input: { teamId: string }) =>\n client.ensureProjectGitRemote(projectId, input),\n uploadSource: (\n projectId: string,\n input: SandboxProjectSourceUploadInput\n ) => client.uploadProjectSource(projectId, input),\n archive: (projectId: string, input: { teamId: string }) =>\n client.archiveProject(projectId, input),\n };\n}\n\nexport function createSandboxProfileNamespace(client: OpenPondSandboxClient): {\n get(input: { teamId: string }): Promise<OpenPondHostedProfileSummary | null>;\n status(input: { teamId: string }): Promise<OpenPondHostedProfileSummary | null>;\n ensureHosted(input: { teamId: string }): Promise<OpenPondHostedProfileSummary>;\n push(input: OpenPondHostedProfilePushInput): Promise<OpenPondHostedProfilePushResponse>;\n} {\n return {\n get: (input: { teamId: string }) => client.getHostedProfile(input),\n status: (input: { teamId: string }) => client.getHostedProfile(input),\n ensureHosted: (input: { teamId: string }) =>\n client.ensureHostedProfile(input),\n push: (input: OpenPondHostedProfilePushInput) =>\n client.pushHostedProfile(input),\n };\n}\n\nexport function createSandboxAgentNamespace(client: OpenPondSandboxClient) {\n return {\n list: (input: { teamId: string }) => client.listAgents(input),\n upsert: (input: SandboxAgentUpsertInput) => client.upsertAgent(input),\n get: (agentId: string, input: { teamId: string }) =>\n client.getAgent(agentId, input),\n update: (agentId: string, input: SandboxAgentUpdateInput) =>\n client.updateAgent(agentId, input),\n archive: (agentId: string, input: { teamId: string }) =>\n client.archiveAgent(agentId, input),\n run: (agentId: string, input: SandboxAgentRunInput) =>\n client.runAgent(agentId, input),\n sourceDeployPlan: (agentId: string, input: { teamId: string }) =>\n client.getAgentSourceDeployPlan(agentId, input),\n manifestSnapshots: (\n agentId: string,\n input: { teamId: string; limit?: number }\n ) => client.listAgentManifestSnapshots(agentId, input),\n requestSourceChecks: (\n agentId: string,\n input: SandboxAgentSourceChecksRequestInput\n ) => client.requestAgentSourceChecks(agentId, input),\n configureSourceSetup: (\n agentId: string,\n input: SandboxAgentSourceSetupConfigureInput\n ) => client.configureAgentSourceSetup(agentId, input),\n publishSource: (agentId: string, input: SandboxAgentSourcePublishInput) =>\n client.publishAgentSource(agentId, input),\n };\n}\n", "import type {\n OpenPondSandboxRuntimeHandle,\n RuntimeWorkflowCheckpointHintInput,\n RuntimeWorkflowKeepAliveInput,\n RuntimeWorkflowWaitForUserInput,\n SandboxExecInput,\n SandboxFileDownloadInput,\n SandboxFileListInput,\n SandboxFileMkdirInput,\n SandboxFileMoveInput,\n SandboxFileSearchInput,\n SandboxOpenPortInput,\n SandboxRecord,\n SandboxRuntime,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimeEventInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimePromoteResponse,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeSourcePreserveResponse,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeSandboxResponse,\n SandboxRuntimeTransitionInput,\n SandboxRuntimeEventsResponse,\n SandboxRuntimeEventResponse,\n SandboxAsyncRequestOptions,\n SandboxFileUploadResponse,\n SandboxFileDownloadResponse,\n SandboxFileDeleteResponse,\n SandboxFileListResponse,\n SandboxFileMkdirResponse,\n SandboxFileMoveResponse,\n SandboxFileStatResponse,\n SandboxFileSearchResponse,\n SandboxOpenPortResponse,\n SandboxExecResponse,\n} from \"./types/index.js\";\n\nexport type SandboxRuntimeHandleClient = {\n getSandboxRuntime(runtimeId: string): Promise<SandboxRuntime>;\n createSandboxRuntimeSandbox(\n runtimeId: string,\n input?: SandboxRuntimeSandboxCreateInput,\n options?: SandboxAsyncRequestOptions\n ): Promise<SandboxRuntimeSandboxResponse>;\n updateSandboxRuntimeStatus(\n runtimeId: string,\n input: SandboxRuntimeTransitionInput\n ): Promise<SandboxRuntime>;\n listSandboxRuntimeEvents(\n runtimeId: string\n ): Promise<SandboxRuntimeEventsResponse>;\n emitSandboxRuntimeEvent(\n runtimeId: string,\n input: SandboxRuntimeEventInput\n ): Promise<SandboxRuntimeEventResponse>;\n checkpointSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput\n ): Promise<SandboxRuntime>;\n promoteSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options?: { teamId?: string }\n ): Promise<SandboxRuntimePromoteResponse>;\n preserveSandboxRuntimeSource(\n runtimeId: string,\n input?: SandboxRuntimeSourcePreserveInput,\n options?: { teamId?: string }\n ): Promise<SandboxRuntimeSourcePreserveResponse>;\n get(sandboxId: string): Promise<SandboxRecord>;\n start(\n sandboxId: string,\n options?: SandboxAsyncRequestOptions\n ): Promise<{ sandbox: SandboxRecord }>;\n restore(sandboxId: string): Promise<{ sandbox: SandboxRecord }>;\n uploadFile(\n sandboxId: string,\n path: string,\n contents: string\n ): Promise<SandboxFileUploadResponse>;\n downloadFile(sandboxId: string, path: string): Promise<string>;\n downloadFileResponse(\n sandboxId: string,\n input: string | SandboxFileDownloadInput\n ): Promise<SandboxFileDownloadResponse>;\n listFiles(\n sandboxId: string,\n input?: SandboxFileListInput\n ): Promise<SandboxFileListResponse>;\n deleteFile(\n sandboxId: string,\n path: string,\n input?: { recursive?: boolean }\n ): Promise<SandboxFileDeleteResponse>;\n searchFiles(\n sandboxId: string,\n input: SandboxFileSearchInput\n ): Promise<SandboxFileSearchResponse>;\n statFile(sandboxId: string, path: string): Promise<SandboxFileStatResponse>;\n mkdir(\n sandboxId: string,\n input: string | SandboxFileMkdirInput\n ): Promise<SandboxFileMkdirResponse>;\n moveFile(\n sandboxId: string,\n input: SandboxFileMoveInput\n ): Promise<SandboxFileMoveResponse>;\n exec(\n sandboxId: string,\n input: SandboxExecInput\n ): Promise<SandboxExecResponse>;\n openPort(\n sandboxId: string,\n input: SandboxOpenPortInput\n ): Promise<SandboxOpenPortResponse>;\n};\n\nexport function createSandboxRuntimeHandle(\n client: SandboxRuntimeHandleClient,\n runtimeId: string,\n initial: SandboxRuntime | null = null\n): OpenPondSandboxRuntimeHandle {\n const currentSandbox = async (\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> => {\n const runtime = await client.getSandboxRuntime(runtimeId);\n if (runtime.sandboxId) {\n return client.get(runtime.sandboxId);\n }\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n };\n const resume = async (\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> => {\n const runtime = await client.getSandboxRuntime(runtimeId);\n if (!runtime.sandboxId) {\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n }\n const sandbox = await client.get(runtime.sandboxId);\n if (sandbox.state === \"stopped\") {\n return client.start(sandbox.id, options).then((payload) => payload.sandbox);\n }\n if (sandbox.state === \"archived\") {\n return client.restore(sandbox.id).then((payload) => payload.sandbox);\n }\n if (sandbox.state === \"deleted\" || sandbox.state === \"error\") {\n return client\n .createSandboxRuntimeSandbox(runtimeId, input, options)\n .then((payload) => payload.sandbox);\n }\n return sandbox;\n };\n const checkpointHint = (input: RuntimeWorkflowCheckpointHintInput = {}) =>\n client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.checkpoint_hint\",\n summary: input.summary ?? input.reason ?? \"Workflow checkpoint hint\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n },\n artifactRefs: input.artifactRefs,\n lifecycleHint: {\n kind: \"checkpoint\",\n reason: input.reason ?? null,\n },\n });\n const waitForUser = async (input: RuntimeWorkflowWaitForUserInput = {}) => {\n await client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.waiting_for_user\",\n summary: input.summary ?? input.reason ?? \"Waiting for user\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n },\n lifecycleHint: {\n kind: \"waiting_for_user\",\n reason: input.reason ?? null,\n },\n });\n const current = await client.getSandboxRuntime(runtimeId);\n if (current.status === \"waiting_for_user\") return current;\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: \"waiting_for_user\",\n expectedVersion: current.version,\n summary: input.summary ?? input.reason,\n metadata: {\n workflowWaitForUserReason: input.reason ?? null,\n },\n });\n };\n const keepAlive = (input: RuntimeWorkflowKeepAliveInput = {}) => {\n const keepaliveUntil = runtimeKeepaliveUntilIso(input);\n return client.emitSandboxRuntimeEvent(runtimeId, {\n type: \"workflow.keepalive\",\n summary: input.summary ?? input.reason ?? \"Workflow keepalive\",\n payload: {\n ...input.payload,\n reason: input.reason ?? null,\n keepaliveUntil,\n },\n lifecycleHint: {\n kind: \"keepalive\",\n reason: input.reason ?? null,\n keepaliveUntil,\n },\n });\n };\n return {\n id: runtimeId,\n initial,\n get: () => client.getSandboxRuntime(runtimeId),\n sandbox: currentSandbox,\n resume,\n createSandbox: (input = {}, options = {}) =>\n client.createSandboxRuntimeSandbox(runtimeId, input, options),\n status: async (input) => {\n if (typeof input !== \"string\") {\n return client.updateSandboxRuntimeStatus(runtimeId, input);\n }\n const current = await client.getSandboxRuntime(runtimeId);\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: input,\n expectedVersion: current.version,\n });\n },\n events: () => client.listSandboxRuntimeEvents(runtimeId),\n event: (input) => client.emitSandboxRuntimeEvent(runtimeId, input),\n recordCommit: (commitSha, input = {}) =>\n client.emitSandboxRuntimeEvent(runtimeId, {\n ...input,\n type: input.type ?? \"git.commit\",\n commitSha,\n }),\n checkpointHint,\n waitForUser,\n keepAlive,\n checkpoint: (input) => client.checkpointSandboxRuntime(runtimeId, input),\n files: {\n write: async (path, contents) =>\n client.uploadFile((await resume()).id, path, contents),\n read: async (path) => client.downloadFile((await resume()).id, path),\n readResponse: async (input) =>\n client.downloadFileResponse((await resume()).id, input),\n list: async (input = {}) => client.listFiles((await resume()).id, input),\n delete: async (path, input = {}) =>\n client.deleteFile((await resume()).id, path, input),\n search: async (input) => client.searchFiles((await resume()).id, input),\n stat: async (path) => client.statFile((await resume()).id, path),\n mkdir: async (input) => client.mkdir((await resume()).id, input),\n move: async (input) => client.moveFile((await resume()).id, input),\n },\n commands: {\n run: async (command) =>\n client.exec(\n (await resume()).id,\n typeof command === \"string\" ? { command } : command\n ),\n },\n ports: {\n expose: async (port) =>\n client.openPort(\n (await resume()).id,\n typeof port === \"number\" ? { port } : port\n ),\n },\n promote: (input, options = {}) =>\n client.promoteSandboxRuntime(runtimeId, input, options),\n preserveSource: (input = {}, options = {}) =>\n client.preserveSandboxRuntimeSource(runtimeId, input, options),\n archive: async (expectedVersion) => {\n const version =\n expectedVersion ?? (await client.getSandboxRuntime(runtimeId)).version;\n return client.updateSandboxRuntimeStatus(runtimeId, {\n status: \"archived\",\n expectedVersion: version,\n });\n },\n };\n}\n\nfunction runtimeKeepaliveUntilIso(\n input: RuntimeWorkflowKeepAliveInput | undefined\n): string {\n if (input?.until instanceof Date) {\n return input.until.toISOString();\n }\n if (typeof input?.until === \"string\" && input.until.trim()) {\n return new Date(input.until).toISOString();\n }\n const seconds =\n typeof input?.seconds === \"number\" && Number.isFinite(input.seconds)\n ? Math.max(1, Math.trunc(input.seconds))\n : 60;\n return new Date(Date.now() + seconds * 1000).toISOString();\n}\n", "import type { OpenPondSandboxClient } from \"./client.js\";\nimport type {\n SandboxReceipt,\n SandboxRecord,\n SandboxSmokeOptions,\n SandboxSmokeSummary,\n SandboxSnapshotResponse,\n} from \"./types/index.js\";\n\nexport async function runSandboxSmoke(\n client: OpenPondSandboxClient,\n options: SandboxSmokeOptions = {}\n): Promise<SandboxSmokeSummary> {\n const runId = `openpond-code-smoke-${Date.now()}`;\n const expectedExec = `openpond-code-exec-ok:${runId}`;\n const expectedPreview = `openpond-code-preview-ok:${runId}`;\n const expectedFile = `openpond-code-file-ok:${runId}`;\n const previewPort = 4173;\n let sandboxId: string | null = null;\n let forkSandboxId: string | null = null;\n let deleted = false;\n let forkDeleted = false;\n\n try {\n const sandbox = await waitForCreateReady(\n client,\n await client.create(\n {\n repo: options.repo ?? \"https://github.com/octocat/Hello-World\",\n resources: {\n cpu: options.cpu ?? 1,\n memoryGb: options.memoryGb ?? 1,\n diskGb: options.diskGb ?? 8,\n },\n budget: { maxUsd: options.budgetUsd ?? \"0.05\" },\n quotas: {\n maxSpendUsd: options.budgetUsd ?? \"0.05\",\n maxDurationSeconds: 600,\n idleTimeoutSeconds: 600,\n maxOpenPorts: 2,\n },\n metadata: {\n runId,\n source: \"openpond-code-sandbox-smoke\",\n },\n },\n { async: true }\n )\n );\n sandboxId = sandbox.id;\n\n const expectedMppMode = options.expectedMppMode;\n if (expectedMppMode && sandbox.reservation.mpp?.mode !== expectedMppMode) {\n throw new Error(\n `expected ${expectedMppMode} reservation, got ${\n sandbox.reservation.mpp?.mode ?? \"none\"\n }`\n );\n }\n if (!expectedMppMode && !sandbox.reservation.mpp?.mode) {\n throw new Error(\"expected sandbox reservation MPP metadata\");\n }\n\n const exec = await client.exec(sandbox.id, {\n command: [\n `printf '${expectedExec}\\\\n'`,\n \"test -f README && printf 'repo-clone-ok\\\\n'\",\n \"cat > server.cjs <<'EOF'\",\n \"const { createServer } = require('node:http');\",\n `createServer((_request, response) => response.end('${expectedPreview}')).listen(${previewPort}, '0.0.0.0');`,\n \"EOF\",\n \"nohup node server.cjs > server.log 2>&1 & sleep 1\",\n ].join(\"\\n\"),\n timeoutSeconds: 120,\n });\n if (exec.command.status !== \"succeeded\") {\n throw new Error(`expected command success, got ${exec.command.status}`);\n }\n if (!exec.command.output.includes(expectedExec)) {\n throw new Error(\"expected exec marker\");\n }\n\n await client.uploadFile(\n sandbox.id,\n \"openpond-code-smoke.txt\",\n expectedFile\n );\n const downloaded = await client.downloadFile(\n sandbox.id,\n \"openpond-code-smoke.txt\"\n );\n if (downloaded !== expectedFile) {\n throw new Error(\"expected file roundtrip marker\");\n }\n\n let snapshotId: string | null = null;\n if (options.snapshot || options.fork) {\n const snapshotResponse = (await client.createSnapshot(sandbox.id, {\n async: true,\n name: `openpond-code-smoke-${runId}`,\n replay: {\n entrypoints: [\n {\n command: \"cat openpond-code-smoke.txt\",\n name: \"default\",\n },\n ],\n retention: {\n class: \"pinned\",\n },\n safety: {\n cleanup: \"delete\",\n idleTimeoutSeconds: 600,\n internetEgress: \"block\",\n maxDurationSeconds: 600,\n maxSpendUsd: options.budgetUsd ?? \"0.05\",\n publicPreview: false,\n },\n validation: {\n commands: [\n {\n command: \"test -f openpond-code-smoke.txt\",\n },\n ],\n },\n },\n })) as SandboxSnapshotResponse & {\n snapshotJob?: {\n snapshotId?: string;\n status?: string;\n error?: string | null;\n };\n };\n const snapshot =\n snapshotResponse.snapshot ??\n (\n await waitForSnapshotReady(\n client,\n sandbox.id,\n snapshotResponse.snapshotJob?.snapshotId\n )\n ).snapshot;\n snapshotId = snapshot.id;\n if (snapshot.state !== \"ready\") {\n throw new Error(`expected ready snapshot, got ${snapshot.state}`);\n }\n }\n\n if (options.fork) {\n if (!snapshotId) {\n throw new Error(\"expected snapshot id before fork\");\n }\n const forked = await waitForCreateReady(\n client,\n (\n await client.forkSnapshot(\n snapshotId,\n {\n budget: { maxUsd: options.budgetUsd ?? \"0.05\" },\n metadata: {\n source: \"openpond-code-sandbox-smoke-fork\",\n templateSnapshotId: snapshotId,\n },\n },\n { async: true }\n )\n ).sandbox\n );\n forkSandboxId = forked.id;\n const forkExec = await client.exec(forked.id, {\n command: \"cat openpond-code-smoke.txt\",\n timeoutSeconds: 120,\n });\n if (forkExec.command.status !== \"succeeded\") {\n throw new Error(\n `expected fork command success, got ${forkExec.command.status}`\n );\n }\n if (!forkExec.command.output.includes(expectedFile)) {\n throw new Error(\"expected fork snapshot marker\");\n }\n if (!options.keep) {\n await deleteSandboxForSmoke(client, forked.id);\n forkDeleted = true;\n }\n }\n\n let previewStatus: number | null = null;\n if (options.preview !== false) {\n const opened = await client.openPort(sandbox.id, {\n label: \"openpond-code-smoke\",\n port: previewPort,\n });\n const preview = await fetch(opened.preview.url);\n previewStatus = preview.status;\n const body = await preview.text();\n if (preview.status !== 200) {\n throw new Error(`expected preview HTTP 200, got ${preview.status}`);\n }\n if (!body.includes(expectedPreview)) {\n throw new Error(\"expected preview marker\");\n }\n }\n\n const { sandbox: readback, receipts } = await stopSandboxForSmoke(\n client,\n sandbox.id\n );\n\n if (!options.keep) {\n await deleteSandboxForSmoke(client, sandbox.id);\n deleted = true;\n }\n\n return {\n deleted,\n execOutput: exec.command.output.trim(),\n fileRoundtrip: true,\n forkSandboxId,\n previewStatus,\n receiptRefs: receipts.map((receipt) => receipt.mpp.receiptRef ?? null),\n reservationRef: sandbox.reservation.mpp?.reservationRef ?? null,\n runId,\n sandboxId: sandbox.id,\n snapshotId,\n state: readback.state,\n };\n } finally {\n if (forkSandboxId && !options.keep && !forkDeleted) {\n await cleanupSandboxBestEffort(client, forkSandboxId);\n }\n if (sandboxId && !options.keep && !deleted) {\n await cleanupSandboxBestEffort(client, sandboxId);\n }\n }\n}\n\nasync function stopSandboxForSmoke(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<{ sandbox: SandboxRecord; receipts: SandboxReceipt[] }> {\n try {\n await client.stop(sandboxId);\n } catch {\n await client.stop(sandboxId, { async: true });\n }\n const sandbox = await waitForSandboxState(\n client,\n sandboxId,\n new Set([\"stopped\", \"deleted\"]),\n \"stop\"\n );\n const receipts = await waitForReceipts(client, sandboxId);\n if (receipts.length === 0) {\n throw new Error(\"expected receipt readback\");\n }\n return { sandbox, receipts };\n}\n\nasync function deleteSandboxForSmoke(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<SandboxRecord> {\n try {\n const deleted = await client.delete(sandboxId);\n if (deleted.state === \"deleted\") {\n return deleted;\n }\n await client.delete(sandboxId, { async: true });\n } catch {\n await client.delete(sandboxId, { async: true });\n }\n return waitForSandboxState(\n client,\n sandboxId,\n new Set([\"deleted\"]),\n \"delete\"\n );\n}\n\nasync function cleanupSandboxBestEffort(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<void> {\n try {\n await deleteSandboxForSmoke(client, sandboxId);\n } catch {\n await client.delete(sandboxId, { async: true }).catch(() => undefined);\n }\n}\n\nasync function waitForSandboxState(\n client: OpenPondSandboxClient,\n sandboxId: string,\n targetStates: Set<SandboxRecord[\"state\"]>,\n operation: \"delete\" | \"stop\"\n): Promise<SandboxRecord> {\n const timeoutMs = 5 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = await client.get(sandboxId);\n while (Date.now() < deadline) {\n if (targetStates.has(latest.state)) {\n return latest;\n }\n if (latest.state === \"error\") {\n throw new Error(`sandbox ${operation} failed: ${sandboxId}`);\n }\n await sleep(pollMs);\n latest = await client.get(sandboxId);\n }\n throw new Error(\n `sandbox ${operation} did not reach ${[...targetStates].join(\n \"/\"\n )} before timeout: ${sandboxId} (${latest.state})`\n );\n}\n\nasync function waitForReceipts(\n client: OpenPondSandboxClient,\n sandboxId: string\n): Promise<SandboxReceipt[]> {\n const timeoutMs = 2 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let receipts = await client.receipts(sandboxId);\n while (Date.now() < deadline) {\n if (receipts.length > 0) {\n return receipts;\n }\n await sleep(pollMs);\n receipts = await client.receipts(sandboxId);\n }\n return receipts;\n}\n\nasync function waitForCreateReady(\n client: OpenPondSandboxClient,\n sandbox: SandboxRecord\n): Promise<SandboxRecord> {\n if (sandbox.state === \"running\" || sandbox.state === \"stopped\") {\n return sandbox;\n }\n if (sandbox.state === \"error\") {\n throw new Error(\n `sandbox create failed: ${sandbox.id}\\n${sandbox.logs.join(\"\\n\")}`\n );\n }\n\n const timeoutMs = 12 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = sandbox;\n while (Date.now() < deadline) {\n await sleep(pollMs);\n latest = await client.get(sandbox.id);\n if (latest.state === \"running\" || latest.state === \"stopped\") {\n return latest;\n }\n if (latest.state === \"error\") {\n throw new Error(\n `sandbox create failed: ${latest.id}\\n${latest.logs.join(\"\\n\")}`\n );\n }\n }\n\n throw new Error(\n `sandbox create did not reach running state before timeout: ${latest.id} (${latest.state})`\n );\n}\n\nasync function waitForSnapshotReady(\n client: OpenPondSandboxClient,\n sandboxId: string,\n snapshotId?: string\n): Promise<SandboxSnapshotResponse> {\n if (!snapshotId) {\n throw new Error(\"snapshot job did not return snapshot id\");\n }\n const timeoutMs = 12 * 60_000;\n const pollMs = 3_000;\n const deadline = Date.now() + timeoutMs;\n let latest = await client.get(sandboxId);\n while (Date.now() < deadline) {\n const snapshot = latest.snapshots?.find((item) => item.id === snapshotId);\n if (snapshot?.state === \"ready\") {\n return { sandbox: latest, snapshot };\n }\n const job = latest.snapshotJobs?.find(\n (item) => item.snapshotId === snapshotId\n );\n if (job?.status === \"failed\") {\n throw new Error(`snapshot job failed: ${job.error ?? snapshotId}`);\n }\n await sleep(pollMs);\n latest = await client.get(sandboxId);\n }\n throw new Error(\n `snapshot did not reach ready state before timeout: ${snapshotId}`\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n", "import type { SandboxAsyncRequestOptions } from \"./types/index.js\";\n\nexport function asyncRequestHeaders(\n options: SandboxAsyncRequestOptions = {}\n): HeadersInit | undefined {\n return options.async || options.respondAsync\n ? { Prefer: \"respond-async\" }\n : undefined;\n}\n", "export const DEFAULT_OPENPOND_WEB_BASE_URL = \"https://openpond.ai\";\nexport const DEFAULT_OPENPOND_API_BASE_URL = \"https://api.openpond.ai\";\nexport const DEFAULT_OPENPOND_OPCHAT_API_BASE_URL =\n \"https://api.openpond.ai/opchat/v1\";\nexport const DEFAULT_OPENPOND_CHAT_API_BASE_URL =\n DEFAULT_OPENPOND_OPCHAT_API_BASE_URL;\n", "import { apiFetch } from \"../api/core.js\";\nimport type { SandboxPtyInput } from \"./types/index.js\";\n\nexport async function streamSandboxEventOutput(params: {\n sandboxApiUrl: string;\n apiKey: string;\n path: string;\n}): Promise<void> {\n const response = await apiFetch(\n params.sandboxApiUrl,\n params.apiKey,\n params.path,\n { timeoutMs: 0, maxResponseBytes: 0 },\n );\n if (!response.body) {\n return;\n }\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffered = \"\";\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffered += decoder.decode(value, { stream: true });\n let separatorIndex = buffered.indexOf(\"\\n\\n\");\n while (separatorIndex !== -1) {\n const event = buffered.slice(0, separatorIndex);\n buffered = buffered.slice(separatorIndex + 2);\n const output = parseProcessOutputEvent(event);\n if (output) process.stdout.write(output);\n separatorIndex = buffered.indexOf(\"\\n\\n\");\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nexport function normalizePtyInput(\n input: string | Uint8Array | SandboxPtyInput\n): SandboxPtyInput {\n if (typeof input === \"string\") {\n return { dataBase64: Buffer.from(input, \"utf-8\").toString(\"base64\") };\n }\n if (input instanceof Uint8Array) {\n return { dataBase64: Buffer.from(input).toString(\"base64\") };\n }\n return input;\n}\n\nfunction parseProcessOutputEvent(event: string): string | null {\n if (!event.includes(\"event: output\")) {\n return null;\n }\n const dataLines = event\n .split(/\\r?\\n/)\n .filter((line) => line.startsWith(\"data: \"))\n .map((line) => line.slice(\"data: \".length));\n if (dataLines.length === 0) {\n return null;\n }\n try {\n const parsed = JSON.parse(dataLines.join(\"\\n\")) as { output?: unknown };\n return typeof parsed.output === \"string\" ? parsed.output : null;\n } catch {\n return null;\n }\n}\n", "import {\n DEFAULT_OPENPOND_API_BASE_URL,\n DEFAULT_OPENPOND_WEB_BASE_URL,\n} from \"../urls.js\";\n\nexport function normalizeSandboxApiUrl(baseUrlOrApiUrl: string): string {\n const trimmed = baseUrlOrApiUrl.trim().replace(/\\/$/, \"\");\n if (!trimmed) {\n throw new Error(\"sandbox API URL must be non-empty\");\n }\n const url = new URL(trimmed);\n const normalizedPath = url.pathname.replace(/\\/$/, \"\");\n if (\n normalizedPath.endsWith(\"/v1/sandboxes\") ||\n normalizedPath.endsWith(\"/api/sandboxes\")\n ) {\n return `${url.origin}${normalizedPath}`;\n }\n if (normalizedPath.endsWith(\"/v1\")) {\n return `${url.origin}${normalizedPath}/sandboxes`;\n }\n if (isOpenPondHostedApiHost(url.hostname)) {\n return `${url.origin}${normalizedPath}/v1/sandboxes`;\n }\n if (url.origin === DEFAULT_OPENPOND_WEB_BASE_URL) {\n return `${DEFAULT_OPENPOND_API_BASE_URL}/v1/sandboxes`;\n }\n return `${url.origin}${normalizedPath}/api/sandboxes`;\n}\n\nexport function apiRootUrlFromSandboxApiUrl(sandboxApiUrl: string): string {\n const suffix = \"/sandboxes\";\n if (!sandboxApiUrl.endsWith(suffix)) {\n throw new Error(\"sandbox API URL must end with /sandboxes\");\n }\n return sandboxApiUrl.slice(0, -suffix.length);\n}\n\nfunction isOpenPondHostedApiHost(hostname: string): boolean {\n return (\n hostname === \"api.openpond.ai\" ||\n hostname === \"staging-api.openpond.ai\" ||\n (hostname.startsWith(\"api\") && hostname.endsWith(\".openpond.ai\"))\n );\n}\n", "import {\n apiFetch,\n readApiJson,\n type ApiFetchOptions,\n} from \"../api/core.js\";\nimport { DEFAULT_OPENPOND_API_BASE_URL } from \"../urls.js\";\nimport { asyncRequestHeaders } from \"./async-request-options.js\";\nimport { normalizePtyInput, streamSandboxEventOutput } from \"./stream.js\";\nimport type {\n SandboxIntegrationConnectionLeaseInput,\n SandboxCreateInput,\n SandboxCreateOptions,\n SandboxAsyncRequestOptions,\n SandboxForkInput,\n SandboxExecInput,\n SandboxProcessStartInput,\n SandboxPtyStartInput,\n SandboxPtyInput,\n SandboxOpenPortInput,\n SandboxGitDiffInput,\n SandboxGitPatchExportInput,\n SandboxGitBranchInput,\n SandboxGitCommitInput,\n SandboxGitPullInput,\n SandboxGitPushInput,\n SandboxFileDownloadInput,\n SandboxFileListInput,\n SandboxFileMkdirInput,\n SandboxFileMoveInput,\n SandboxFileSearchInput,\n SandboxReceipt,\n SandboxSnapshotValidateInput,\n SandboxSnapshotUpdateInput,\n SandboxSnapshotInput,\n SandboxRecord,\n SandboxCreateResponse,\n SandboxIntegrationLeasesResponse,\n SandboxExecResponse,\n SandboxProcessStartResponse,\n SandboxProcessListResponse,\n SandboxProcessStatusResponse,\n SandboxProcessStopResponse,\n SandboxPtyStartResponse,\n SandboxPtyListResponse,\n SandboxPtyStatusResponse,\n SandboxPtyInputResponse,\n SandboxPtyStopResponse,\n SandboxOpenPortResponse,\n SandboxSnapshotResponse,\n SandboxSnapshotValidationResponse,\n SandboxForkResponse,\n SandboxReceiptResponse,\n SandboxLifecycleAcceptedResponse,\n SandboxStartResponse,\n SandboxRestoreResponse,\n SandboxReceiptsResponse,\n SandboxLogsResponse,\n SandboxGitStatusResponse,\n SandboxGitDiffResponse,\n SandboxGitPatchExportResponse,\n SandboxGitBranchResponse,\n SandboxGitCommitResponse,\n SandboxGitPullResponse,\n SandboxGitPushResponse,\n SandboxFileUploadResponse,\n SandboxFileDownloadResponse,\n SandboxFileListResponse,\n SandboxFileDeleteResponse,\n SandboxFileMkdirResponse,\n SandboxFileMoveResponse,\n SandboxFileStatResponse,\n SandboxFileSearchResponse,\n SandboxBillingStatusResponse,\n SandboxPricingResponse,\n SandboxCostSummaryResponse,\n OpenPondSandboxClientOptions,\n} from \"./types/index.js\";\n\nimport { apiRootUrlFromSandboxApiUrl, normalizeSandboxApiUrl } from \"./url.js\";\n\nexport class OpenPondSandboxInstanceClient {\n readonly apiKey: string;\n readonly apiRootUrl: string;\n readonly sandboxApiUrl: string;\n readonly customEndpoint: boolean;\n\n constructor(options: OpenPondSandboxClientOptions) {\n this.apiKey = options.apiKey;\n this.customEndpoint = options.customEndpoint ?? false;\n this.sandboxApiUrl = normalizeSandboxApiUrl(\n options.sandboxApiUrl ?? options.baseUrl ?? DEFAULT_OPENPOND_API_BASE_URL\n );\n this.apiRootUrl = apiRootUrlFromSandboxApiUrl(this.sandboxApiUrl);\n }\n\n create(\n input: SandboxCreateInput,\n options: SandboxCreateOptions = {}\n ): Promise<SandboxRecord> {\n return this.request<SandboxCreateResponse>(\"\", {\n method: \"POST\",\n ...(this.customEndpoint ? { timeoutMs: 180_000 } : {}),\n headers: asyncRequestHeaders(options),\n body: JSON.stringify(input),\n }).then((payload) => payload.sandbox);\n }\n\n get(sandboxId: string): Promise<SandboxRecord> {\n return this.request<{ sandbox: SandboxRecord }>(\n `/${encodeURIComponent(sandboxId)}`\n ).then((payload) => payload.sandbox);\n }\n\n exec(\n sandboxId: string,\n input: SandboxExecInput\n ): Promise<SandboxExecResponse> {\n return this.request<SandboxExecResponse>(\n `/${encodeURIComponent(sandboxId)}/exec`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n startProcess(\n sandboxId: string,\n input: SandboxProcessStartInput\n ): Promise<SandboxProcessStartResponse> {\n return this.request<SandboxProcessStartResponse>(\n `/${encodeURIComponent(sandboxId)}/processes`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listProcesses(sandboxId: string): Promise<SandboxProcessListResponse> {\n return this.request<SandboxProcessListResponse>(\n `/${encodeURIComponent(sandboxId)}/processes`\n );\n }\n\n getProcess(\n sandboxId: string,\n processId: string,\n input: { since?: number } = {}\n ): Promise<SandboxProcessStatusResponse> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n return this.request<SandboxProcessStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n stopProcess(\n sandboxId: string,\n processId: string\n ): Promise<SandboxProcessStopResponse> {\n return this.request<SandboxProcessStopResponse>(\n `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async streamProcessOutput(\n sandboxId: string,\n processId: string,\n input: { since?: number } = {}\n ): Promise<void> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n await streamSandboxEventOutput({\n sandboxApiUrl: this.sandboxApiUrl,\n apiKey: this.apiKey,\n path: `/${encodeURIComponent(sandboxId)}/processes/${encodeURIComponent(\n processId\n )}/stream${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n });\n }\n\n startPty(\n sandboxId: string,\n input: SandboxPtyStartInput = {}\n ): Promise<SandboxPtyStartResponse> {\n return this.request<SandboxPtyStartResponse>(\n `/${encodeURIComponent(sandboxId)}/pty`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listPtys(sandboxId: string): Promise<SandboxPtyListResponse> {\n return this.request<SandboxPtyListResponse>(\n `/${encodeURIComponent(sandboxId)}/pty`\n );\n }\n\n getPty(\n sandboxId: string,\n ptyId: string,\n input: { since?: number } = {}\n ): Promise<SandboxPtyStatusResponse> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n return this.request<SandboxPtyStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(ptyId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n writePtyInput(\n sandboxId: string,\n ptyId: string,\n input: string | Uint8Array | SandboxPtyInput\n ): Promise<SandboxPtyInputResponse> {\n return this.request<SandboxPtyInputResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(\n ptyId\n )}/input`,\n {\n method: \"POST\",\n body: JSON.stringify(normalizePtyInput(input)),\n }\n );\n }\n\n stopPty(sandboxId: string, ptyId: string): Promise<SandboxPtyStopResponse> {\n return this.request<SandboxPtyStopResponse>(\n `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(ptyId)}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async streamPtyOutput(\n sandboxId: string,\n ptyId: string,\n input: { since?: number } = {}\n ): Promise<void> {\n const query = new URLSearchParams();\n if (input.since !== undefined)\n query.set(\"since\", String(Math.max(0, input.since)));\n await streamSandboxEventOutput({\n sandboxApiUrl: this.sandboxApiUrl,\n apiKey: this.apiKey,\n path: `/${encodeURIComponent(sandboxId)}/pty/${encodeURIComponent(\n ptyId\n )}/stream${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n });\n }\n\n uploadFile(\n sandboxId: string,\n path: string,\n contents: string\n ): Promise<SandboxFileUploadResponse> {\n return this.uploadFileBase64(\n sandboxId,\n path,\n Buffer.from(contents, \"utf-8\").toString(\"base64\")\n );\n }\n\n uploadFileBase64(\n sandboxId: string,\n path: string,\n contentsBase64: string\n ): Promise<SandboxFileUploadResponse> {\n return this.request<SandboxFileUploadResponse>(\n `/${encodeURIComponent(sandboxId)}/files`,\n {\n method: \"POST\",\n body: JSON.stringify({\n path,\n contentsBase64,\n }),\n }\n );\n }\n\n async downloadFile(sandboxId: string, path: string): Promise<string> {\n const payload = await this.downloadFileResponse(sandboxId, path);\n return Buffer.from(payload.file.contentsBase64, \"base64\").toString(\"utf-8\");\n }\n\n downloadFileResponse(\n sandboxId: string,\n input: string | SandboxFileDownloadInput\n ): Promise<SandboxFileDownloadResponse> {\n const normalized = typeof input === \"string\" ? { path: input } : input;\n const query = new URLSearchParams({ path: normalized.path });\n if (normalized.offsetBytes !== undefined) {\n query.set(\"offsetBytes\", String(normalized.offsetBytes));\n }\n if (normalized.maxBytes !== undefined) {\n query.set(\"maxBytes\", String(normalized.maxBytes));\n }\n return this.request<SandboxFileDownloadResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n listFiles(\n sandboxId: string,\n input: SandboxFileListInput = {}\n ): Promise<SandboxFileListResponse> {\n const query = new URLSearchParams({ list: \"1\" });\n if (input.path) query.set(\"path\", input.path);\n if (input.recursive !== undefined)\n query.set(\"recursive\", String(input.recursive));\n if (input.maxEntries !== undefined)\n query.set(\"maxEntries\", String(input.maxEntries));\n return this.request<SandboxFileListResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n deleteFile(\n sandboxId: string,\n path: string,\n input: { recursive?: boolean } = {}\n ): Promise<SandboxFileDeleteResponse> {\n const query = new URLSearchParams({ path });\n if (input.recursive !== undefined)\n query.set(\"recursive\", String(input.recursive));\n return this.request<SandboxFileDeleteResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n statFile(sandboxId: string, path: string): Promise<SandboxFileStatResponse> {\n const query = new URLSearchParams({ stat: \"1\", path });\n return this.request<SandboxFileStatResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n mkdir(\n sandboxId: string,\n input: string | SandboxFileMkdirInput\n ): Promise<SandboxFileMkdirResponse> {\n const normalized = typeof input === \"string\" ? { path: input } : input;\n const query = new URLSearchParams({ path: normalized.path });\n if (normalized.recursive !== undefined)\n query.set(\"recursive\", String(normalized.recursive));\n return this.request<SandboxFileMkdirResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"PUT\",\n }\n );\n }\n\n moveFile(\n sandboxId: string,\n input: SandboxFileMoveInput\n ): Promise<SandboxFileMoveResponse> {\n const query = new URLSearchParams({\n fromPath: input.fromPath,\n toPath: input.toPath,\n });\n if (input.overwrite !== undefined)\n query.set(\"overwrite\", String(input.overwrite));\n return this.request<SandboxFileMoveResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`,\n {\n method: \"PATCH\",\n }\n );\n }\n\n searchFiles(\n sandboxId: string,\n input: SandboxFileSearchInput\n ): Promise<SandboxFileSearchResponse> {\n const query = new URLSearchParams({\n search: \"1\",\n query: input.query,\n });\n if (input.path) query.set(\"path\", input.path);\n if (input.maxResults !== undefined)\n query.set(\"maxResults\", String(input.maxResults));\n return this.request<SandboxFileSearchResponse>(\n `/${encodeURIComponent(sandboxId)}/files?${query.toString()}`\n );\n }\n\n openPort(\n sandboxId: string,\n input: SandboxOpenPortInput\n ): Promise<SandboxOpenPortResponse> {\n return this.request<SandboxOpenPortResponse>(\n `/${encodeURIComponent(sandboxId)}/ports`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n createSnapshot(\n sandboxId: string,\n input: SandboxSnapshotInput\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n updateSnapshot(\n sandboxId: string,\n snapshotId: string,\n input: SandboxSnapshotUpdateInput\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n validateSnapshot(\n sandboxId: string,\n snapshotId: string,\n input: SandboxSnapshotValidateInput = {}\n ): Promise<SandboxSnapshotValidationResponse> {\n return this.request<SandboxSnapshotValidationResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}/validate`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n publishSnapshot(\n sandboxId: string,\n snapshotId: string\n ): Promise<SandboxSnapshotResponse> {\n return this.request<SandboxSnapshotResponse>(\n `/${encodeURIComponent(sandboxId)}/snapshots/${encodeURIComponent(\n snapshotId\n )}/publish`,\n {\n method: \"POST\",\n }\n );\n }\n\n fork(\n sandboxId: string,\n input: SandboxForkInput = {}\n ): Promise<SandboxForkResponse> {\n return this.request<SandboxForkResponse>(\n `/${encodeURIComponent(sandboxId)}/fork`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n stop(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxReceiptResponse | SandboxLifecycleAcceptedResponse> {\n const query = new URLSearchParams();\n if (options.failOnUnpreservedChanges) {\n query.set(\"failOnUnpreservedChanges\", \"true\");\n }\n return this.request<SandboxReceiptResponse>(\n `/${encodeURIComponent(sandboxId)}/stop${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n }\n );\n }\n\n start(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxStartResponse> {\n return this.request<SandboxStartResponse>(\n `/${encodeURIComponent(sandboxId)}/start`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n }\n );\n }\n\n restore(sandboxId: string): Promise<SandboxRestoreResponse> {\n return this.request<SandboxRestoreResponse>(\n `/${encodeURIComponent(sandboxId)}/restore`,\n {\n method: \"POST\",\n }\n );\n }\n\n delete(\n sandboxId: string,\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRecord> {\n const query = new URLSearchParams();\n if (options.failOnUnpreservedChanges) {\n query.set(\"failOnUnpreservedChanges\", \"true\");\n }\n return this.request<{ sandbox: SandboxRecord }>(\n `/${encodeURIComponent(sandboxId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"DELETE\",\n headers: asyncRequestHeaders(options),\n }\n ).then((payload) => payload.sandbox);\n }\n\n receipts(sandboxId: string): Promise<SandboxReceipt[]> {\n return this.request<SandboxReceiptsResponse>(\n `/${encodeURIComponent(sandboxId)}/receipts`\n ).then((payload) => payload.receipts);\n }\n\n logs(sandboxId: string): Promise<string[]> {\n return this.request<SandboxLogsResponse>(\n `/${encodeURIComponent(sandboxId)}/logs`\n ).then((payload) => payload.logs);\n }\n\n gitStatus(sandboxId: string): Promise<SandboxGitStatusResponse> {\n return this.request<SandboxGitStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/git/status`\n );\n }\n\n gitDiff(\n sandboxId: string,\n input: SandboxGitDiffInput = {}\n ): Promise<SandboxGitDiffResponse> {\n return this.request<SandboxGitDiffResponse>(\n `/${encodeURIComponent(sandboxId)}/git/diff`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitExportPatch(\n sandboxId: string,\n input: SandboxGitPatchExportInput = {}\n ): Promise<SandboxGitPatchExportResponse> {\n return this.request<SandboxGitPatchExportResponse>(\n `/${encodeURIComponent(sandboxId)}/git/export-patch`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitBranch(\n sandboxId: string,\n input: SandboxGitBranchInput\n ): Promise<SandboxGitBranchResponse> {\n return this.request<SandboxGitBranchResponse>(\n `/${encodeURIComponent(sandboxId)}/git/branch`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitCommit(\n sandboxId: string,\n input: SandboxGitCommitInput\n ): Promise<SandboxGitCommitResponse> {\n return this.request<SandboxGitCommitResponse>(\n `/${encodeURIComponent(sandboxId)}/git/commit`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitPull(\n sandboxId: string,\n input: SandboxGitPullInput = {}\n ): Promise<SandboxGitPullResponse> {\n return this.request<SandboxGitPullResponse>(\n `/${encodeURIComponent(sandboxId)}/git/pull`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n gitPush(\n sandboxId: string,\n input: SandboxGitPushInput = {}\n ): Promise<SandboxGitPushResponse> {\n return this.request<SandboxGitPushResponse>(\n `/${encodeURIComponent(sandboxId)}/git/push`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n billing(sandboxId: string): Promise<SandboxBillingStatusResponse> {\n return this.request<SandboxBillingStatusResponse>(\n `/${encodeURIComponent(sandboxId)}/billing`\n );\n }\n\n pricing(): Promise<SandboxPricingResponse> {\n return this.request<SandboxPricingResponse>(\"/pricing\");\n }\n\n costs(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxCostSummaryResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.request<SandboxCostSummaryResponse>(\n `/costs${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n integrationLeases(\n sandboxId: string\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`\n );\n }\n\n attachIntegrationConnection(\n sandboxId: string,\n input: SandboxIntegrationConnectionLeaseInput\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n removeIntegrationLease(\n sandboxId: string,\n leaseId: string\n ): Promise<SandboxIntegrationLeasesResponse> {\n return this.request<SandboxIntegrationLeasesResponse>(\n `/${encodeURIComponent(sandboxId)}/integrations`,\n {\n method: \"DELETE\",\n body: JSON.stringify({ leaseId }),\n }\n );\n }\n\n async request<T>(path: string, init: ApiFetchOptions = {}): Promise<T> {\n const response = await apiFetch(\n this.sandboxApiUrl,\n this.apiKey,\n path,\n this.customEndpoint ? { ...init, explicitBearerAuth: true, redirect: \"error\" } : init\n );\n return readApiJson<T>(response, \"Sandbox request\");\n }\n\n async requestApiRoot<T>(\n path: string,\n init: ApiFetchOptions = {}\n ): Promise<T> {\n const response = await apiFetch(this.apiRootUrl, this.apiKey, path,\n this.customEndpoint ? { ...init, explicitBearerAuth: true, redirect: \"error\" } : init);\n return readApiJson<T>(response, \"OpenPond API request\");\n }\n}\n", "import {\n createSandboxAgentNamespace,\n createSandboxNamespace,\n createSandboxProfileNamespace,\n createSandboxProjectNamespace,\n createSandboxRuntimeNamespace,\n} from \"./client-handles.js\";\nimport { createSandboxRuntimeHandle } from \"./runtime-handle.js\";\nimport { runSandboxSmoke } from \"./smoke.js\";\nimport { asyncRequestHeaders } from \"./async-request-options.js\";\nimport { OpenPondSandboxInstanceClient } from \"./sandbox-instance-client.js\";\nimport type {\n SandboxIntegrationConnectionStatusFilter,\n SandboxAsyncRequestOptions,\n SandboxScheduleCreateInput,\n SandboxScheduleUpdateInput,\n SandboxForkInput,\n SandboxForkOptions,\n SandboxTemplateLaunchInput,\n SandboxPublishedSnapshotBuildCreateInput,\n SandboxPublishedSnapshotBuildRecord,\n SandboxSecretMetadata,\n SandboxSecretCreateInput,\n SandboxSecretRotateInput,\n SandboxSecretAttachInput,\n SandboxSecretListResponse,\n SandboxSecretResponse,\n SandboxSnapshotTemplateVisibility,\n SandboxTemplateBuildCreateInput,\n SandboxTemplateBuildRecord,\n OpenPondOrganization,\n OpenPondOrganizationCreateInput,\n OpenPondOrganizationUpdateInput,\n OpenPondOrganizationMember,\n OpenPondOrganizationMemberUpsertInput,\n OpenPondOrganizationMcpServer,\n OpenPondOrganizationMcpGenerateInput,\n SandboxProject,\n OpenPondHostedProfilePushInput,\n OpenPondHostedProfilePushResponse,\n OpenPondHostedProfileResponse,\n OpenPondHostedProfileSummary,\n SandboxAgent,\n SandboxProjectUpsertInput,\n SandboxProjectUpdateInput,\n SandboxProjectSourceUploadInput,\n SandboxProjectGitRemoteResponse,\n SandboxAgentUpsertInput,\n SandboxAgentUpdateInput,\n SandboxAgentRunInput,\n SandboxAgentSourceChecksRequestInput,\n SandboxAgentSourceChecksRequestResult,\n SandboxAgentSourceDeployPlan,\n SandboxAgentSourceDeployPlanResponse,\n SandboxAgentSourcePublishInput,\n SandboxAgentSourcePublishResult,\n SandboxAgentSourceSetupConfigureInput,\n SandboxAgentSourceSetupConfigureResult,\n SandboxAgentManifestSnapshot,\n SandboxAgentManifestSnapshotsResponse,\n SandboxProjectListResponse,\n SandboxProjectResponse,\n SandboxAgentListResponse,\n SandboxAgentResponse,\n SandboxAgentRunResponse,\n MicrosoftTeamsBotOverview,\n MicrosoftTeamsBotBindingTargetInput,\n MicrosoftTeamsBotBindingResponse,\n MicrosoftTeamsBotDiagnosticRunInput,\n MicrosoftTeamsBotDiagnosticRunResponse,\n SandboxRecord,\n SandboxSnapshotCatalogResponse,\n SandboxPublishedSnapshotCatalogResponse,\n SandboxTemplateCatalogResponse,\n SandboxRuntime,\n SandboxRuntimeCreateInput,\n SandboxRuntimeSandboxCreateInput,\n SandboxRuntimeEventInput,\n SandboxRuntimeCheckpointInput,\n SandboxRuntimePromoteInput,\n SandboxRuntimeSourcePreserveInput,\n SandboxRuntimeTransitionInput,\n SandboxRuntimeListResponse,\n SandboxRuntimeResponse,\n SandboxRuntimeSandboxResponse,\n SandboxRuntimeEventResponse,\n SandboxRuntimeEventsResponse,\n SandboxRuntimePromoteResponse,\n SandboxRuntimeSourcePreserveResponse,\n SandboxIntegrationConnectionsResponse,\n SandboxForkResponse,\n SandboxPublishedSnapshotLaunchResponse,\n SandboxTemplateLaunchResponse,\n SandboxScheduleListResponse,\n SandboxScheduleResponse,\n SandboxScheduleRunListResponse,\n SandboxScheduleRunResponse,\n SandboxReplayInput,\n SandboxReplayResponse,\n SandboxReplayListResponse,\n SandboxReplayLogsResponse,\n SandboxReplayArtifactsResponse,\n SandboxPublishedSnapshotBuildResponse,\n SandboxPublishedSnapshotBuildListResponse,\n SandboxPublishedSnapshotBuildLogsResponse,\n SandboxTemplateBuildResponse,\n SandboxTemplateBuildListResponse,\n SandboxTemplateBuildLogsResponse,\n OpenPondOrganizationsResponse,\n OpenPondOrganizationResponse,\n OpenPondOrganizationMembersResponse,\n OpenPondOrganizationMemberResponse,\n OpenPondOrganizationMcpServerResponse,\n SandboxSmokeOptions,\n SandboxSmokeSummary,\n OpenPondSandboxClientOptions,\n OpenPondSandboxMcpServerConfig,\n OpenPondSandboxRuntimeHandle,\n} from \"./types/index.js\";\nexport class OpenPondSandboxClient extends OpenPondSandboxInstanceClient {\n\n readonly runtimes = createSandboxRuntimeNamespace(this);\n readonly sandboxes = createSandboxNamespace(this);\n readonly profile = createSandboxProfileNamespace(this);\n readonly projects = createSandboxProjectNamespace(this);\n readonly agents = createSandboxAgentNamespace(this);\n\n list(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxRecord[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.request<{ sandboxes: SandboxRecord[] }>(\n query.size > 0 ? `?${query.toString()}` : \"\"\n ).then((payload) => payload.sandboxes);\n }\n\n listSecrets(\n input: {\n teamId?: string;\n } = {}\n ): Promise<SandboxSecretMetadata[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretListResponse>(\n `/sandbox-secrets${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => payload.secrets);\n }\n\n getSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n ).then((payload) => payload.secret);\n }\n\n createSecret(\n input: SandboxSecretCreateInput\n ): Promise<SandboxSecretMetadata> {\n return this.requestApiRoot<SandboxSecretResponse>(\"/sandbox-secrets\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.secret);\n }\n\n rotateSecret(\n secretId: string,\n input: SandboxSecretRotateInput\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/rotate${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.secret);\n }\n\n attachSecret(\n secretId: string,\n input: SandboxSecretAttachInput\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/attach${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.secret);\n }\n\n revokeSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}/revoke${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n { method: \"POST\" }\n ).then((payload) => payload.secret);\n }\n\n deleteSecret(\n secretId: string,\n input: { teamId?: string } = {}\n ): Promise<SandboxSecretMetadata> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n return this.requestApiRoot<SandboxSecretResponse>(\n `/sandbox-secrets/${encodeURIComponent(secretId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n { method: \"DELETE\" }\n ).then((payload) => payload.secret);\n }\n\n snapshotCatalog(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n q?: string;\n kind?: \"snapshot\" | \"archive\";\n replayState?: \"draft\" | \"validated\" | \"published\";\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxSnapshotCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n if (input.q) query.set(\"q\", input.q);\n if (input.kind) query.set(\"kind\", input.kind);\n if (input.replayState) query.set(\"replayState\", input.replayState);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<SandboxSnapshotCatalogResponse>(\n `/catalog/snapshots${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n listSandboxRuntimes(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n } = {}\n ): Promise<SandboxRuntime[]> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n return this.requestApiRoot<SandboxRuntimeListResponse>(\n `/runtimes${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => payload.runtimes);\n }\n\n listProjects(input: { teamId: string }): Promise<SandboxProject[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectListResponse>(\n `/projects?${query.toString()}`\n ).then((payload) => payload.projects);\n }\n\n upsertProject(input: SandboxProjectUpsertInput): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.project);\n }\n\n getHostedProfile(input: {\n teamId: string;\n }): Promise<OpenPondHostedProfileSummary | null> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<OpenPondHostedProfileResponse>(\n `/profile?${query.toString()}`\n ).then((payload) => payload.profile);\n }\n\n ensureHostedProfile(input: {\n teamId: string;\n }): Promise<OpenPondHostedProfileSummary> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<OpenPondHostedProfileResponse>(\n `/profile/ensure?${query.toString()}`,\n { method: \"POST\" }\n ).then((payload) => {\n if (!payload.profile) {\n throw new Error(\"hosted_profile_missing\");\n }\n return payload.profile;\n });\n }\n\n pushHostedProfile(input: OpenPondHostedProfilePushInput): Promise<OpenPondHostedProfilePushResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<OpenPondHostedProfilePushResponse>(\n `/profile/push?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n async upsertProjectGitRemote(\n input: SandboxProjectUpsertInput\n ): Promise<SandboxProjectGitRemoteResponse> {\n const project = await this.upsertProject(input);\n return this.ensureProjectGitRemote(project.id, { teamId: input.teamId });\n }\n\n getProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`\n ).then((payload) => payload.project);\n }\n\n syncProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}/sync?${query.toString()}`,\n { method: \"POST\" }\n ).then((payload) => payload.project);\n }\n\n ensureProjectGitRemote(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProjectGitRemoteResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectGitRemoteResponse>(\n `/projects/${encodeURIComponent(projectId)}/git?${query.toString()}`,\n { method: \"POST\" }\n );\n }\n\n uploadProjectSource(\n projectId: string,\n input: SandboxProjectSourceUploadInput\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}/source?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.project);\n }\n\n updateProject(\n projectId: string,\n input: SandboxProjectUpdateInput\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.project);\n }\n\n archiveProject(\n projectId: string,\n input: { teamId: string }\n ): Promise<SandboxProject> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxProjectResponse>(\n `/projects/${encodeURIComponent(projectId)}?${query.toString()}`,\n { method: \"DELETE\" }\n ).then((payload) => payload.project);\n }\n\n listAgents(input: { teamId: string }): Promise<SandboxAgent[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentListResponse>(\n `/agents?${query.toString()}`\n ).then((payload) => payload.agents);\n }\n\n upsertAgent(input: SandboxAgentUpsertInput): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.agent);\n }\n\n getAgent(agentId: string, input: { teamId: string }): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`\n ).then((payload) => payload.agent);\n }\n\n archiveAgent(\n agentId: string,\n input: { teamId: string }\n ): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`,\n { method: \"DELETE\" }\n ).then((payload) => payload.agent);\n }\n\n updateAgent(\n agentId: string,\n input: SandboxAgentUpdateInput\n ): Promise<SandboxAgent> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentResponse>(\n `/agents/${encodeURIComponent(agentId)}?${query.toString()}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(body),\n }\n ).then((payload) => payload.agent);\n }\n\n runAgent(\n agentId: string,\n input: SandboxAgentRunInput\n ): Promise<SandboxAgentRunResponse> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentRunResponse>(\n `/agents/${encodeURIComponent(agentId)}/run?${query.toString()}`,\n {\n method: \"POST\",\n headers: {\n Prefer: \"respond-async\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n getAgentSourceDeployPlan(\n agentId: string,\n input: { teamId: string }\n ): Promise<SandboxAgentSourceDeployPlan> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxAgentSourceDeployPlanResponse>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/deploy-plan?${query.toString()}`\n ).then((payload) => payload.deployPlan);\n }\n\n listAgentManifestSnapshots(\n agentId: string,\n input: { teamId: string; limit?: number }\n ): Promise<SandboxAgentManifestSnapshot[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n if (input.limit !== undefined) query.set(\"limit\", String(input.limit));\n return this.requestApiRoot<SandboxAgentManifestSnapshotsResponse>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/manifest-snapshots?${query.toString()}`\n ).then((payload) => payload.manifestSnapshots);\n }\n\n requestAgentSourceChecks(\n agentId: string,\n input: SandboxAgentSourceChecksRequestInput\n ): Promise<SandboxAgentSourceChecksRequestResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourceChecksRequestResult>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/checks?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n timeoutMs: 15 * 60 * 1000,\n }\n );\n }\n\n configureAgentSourceSetup(\n agentId: string,\n input: SandboxAgentSourceSetupConfigureInput\n ): Promise<SandboxAgentSourceSetupConfigureResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourceSetupConfigureResult>(\n `/agents/${encodeURIComponent(agentId)}/source/setup?${query.toString()}`,\n { method: \"POST\", body: JSON.stringify(body) }\n );\n }\n\n publishAgentSource(\n agentId: string,\n input: SandboxAgentSourcePublishInput\n ): Promise<SandboxAgentSourcePublishResult> {\n const query = new URLSearchParams({ teamId: input.teamId });\n const { teamId: _teamId, ...body } = input;\n return this.requestApiRoot<SandboxAgentSourcePublishResult>(\n `/agents/${encodeURIComponent(\n agentId\n )}/source/publish?${query.toString()}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n getMicrosoftTeamsBotOverview(input: {\n teamId: string;\n }): Promise<MicrosoftTeamsBotOverview> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<MicrosoftTeamsBotOverview>(\n `/teams/bot/overview?${query.toString()}`\n );\n }\n\n bindMicrosoftTeamsBotConversation(\n input: MicrosoftTeamsBotBindingTargetInput & { token: string }\n ): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n \"/teams/bot/bindings\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n rebindMicrosoftTeamsBotConversation(\n bindingId: string,\n input: MicrosoftTeamsBotBindingTargetInput\n ): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n `/teams/bot/bindings/${encodeURIComponent(bindingId)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n unlinkMicrosoftTeamsBotConversation(input: {\n teamId: string;\n bindingId: string;\n }): Promise<MicrosoftTeamsBotBindingResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotBindingResponse>(\n `/teams/bot/bindings/${encodeURIComponent(input.bindingId)}`,\n {\n method: \"DELETE\",\n body: JSON.stringify({ teamId: input.teamId }),\n }\n );\n }\n\n sendMicrosoftTeamsBotDiagnostic(input: {\n teamId: string;\n bindingId: string;\n }): Promise<MicrosoftTeamsBotBindingResponse & { diagnosticStatus: string }> {\n return this.requestApiRoot<\n MicrosoftTeamsBotBindingResponse & { diagnosticStatus: string }\n >(\"/teams/bot/diagnostics\", {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n }\n\n sendMicrosoftTeamsBotDiagnosticRun(\n input: MicrosoftTeamsBotDiagnosticRunInput\n ): Promise<MicrosoftTeamsBotDiagnosticRunResponse> {\n return this.requestApiRoot<MicrosoftTeamsBotDiagnosticRunResponse>(\n \"/teams/bot/diagnostics/run\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n createSandboxRuntime(\n input: SandboxRuntimeCreateInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\"/runtimes\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.runtime);\n }\n\n sandboxRuntime(\n runtimeId: string,\n initial: SandboxRuntime | null = null\n ): OpenPondSandboxRuntimeHandle {\n return createSandboxRuntimeHandle(this, runtimeId, initial);\n }\n\n getSandboxRuntime(runtimeId: string): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}`\n ).then((payload) => payload.runtime);\n }\n\n createSandboxRuntimeSandbox(\n runtimeId: string,\n input: SandboxRuntimeSandboxCreateInput = {},\n options: SandboxAsyncRequestOptions = {}\n ): Promise<SandboxRuntimeSandboxResponse> {\n return this.requestApiRoot<SandboxRuntimeSandboxResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/sandbox`,\n {\n method: \"POST\",\n headers: asyncRequestHeaders(options),\n body: JSON.stringify(input),\n }\n );\n }\n\n updateSandboxRuntimeStatus(\n runtimeId: string,\n input: SandboxRuntimeTransitionInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/status`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.runtime);\n }\n\n listSandboxRuntimeEvents(\n runtimeId: string\n ): Promise<SandboxRuntimeEventsResponse> {\n return this.requestApiRoot<SandboxRuntimeEventsResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/events`\n );\n }\n\n emitSandboxRuntimeEvent(\n runtimeId: string,\n input: SandboxRuntimeEventInput\n ): Promise<SandboxRuntimeEventResponse> {\n return this.requestApiRoot<SandboxRuntimeEventResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/events`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n checkpointSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimeCheckpointInput\n ): Promise<SandboxRuntime> {\n return this.requestApiRoot<SandboxRuntimeResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/checkpoints`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.runtime);\n }\n\n promoteSandboxRuntime(\n runtimeId: string,\n input: SandboxRuntimePromoteInput,\n options: { teamId?: string } = {}\n ): Promise<SandboxRuntimePromoteResponse> {\n const query = new URLSearchParams();\n if (options.teamId) query.set(\"teamId\", options.teamId);\n return this.requestApiRoot<SandboxRuntimePromoteResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/promote${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n preserveSandboxRuntimeSource(\n runtimeId: string,\n input: SandboxRuntimeSourcePreserveInput = {},\n options: { teamId?: string } = {}\n ): Promise<SandboxRuntimeSourcePreserveResponse> {\n const query = new URLSearchParams();\n if (options.teamId) query.set(\"teamId\", options.teamId);\n return this.requestApiRoot<SandboxRuntimeSourcePreserveResponse>(\n `/runtimes/${encodeURIComponent(runtimeId)}/preserve-source${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n forkSnapshot(\n snapshotId: string,\n input: SandboxForkInput & { teamId?: string; projectId?: string } = {},\n options: SandboxForkOptions = {}\n ): Promise<SandboxForkResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (options.async) query.set(\"async\", \"1\");\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<SandboxForkResponse>(\n `/catalog/snapshots/${encodeURIComponent(snapshotId)}/fork${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n headers: options.async ? { Prefer: \"respond-async\" } : undefined,\n body: JSON.stringify({\n ...body,\n snapshotId,\n }),\n }\n );\n }\n\n templates(\n input: {\n teamId?: string;\n projectId?: string;\n q?: string;\n name?: string;\n version?: string;\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxTemplateCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.q) query.set(\"q\", input.q);\n if (input.name) query.set(\"name\", input.name);\n if (input.version) query.set(\"version\", input.version);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<SandboxTemplateCatalogResponse>(\n `/templates${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n publishedSnapshots(\n input: {\n teamId?: string;\n projectId?: string;\n q?: string;\n name?: string;\n version?: string;\n visibility?: SandboxSnapshotTemplateVisibility;\n tag?: string;\n useCase?: string;\n limit?: number;\n } = {}\n ): Promise<SandboxPublishedSnapshotCatalogResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.q) query.set(\"q\", input.q);\n if (input.name) query.set(\"name\", input.name);\n if (input.version) query.set(\"version\", input.version);\n if (input.visibility) query.set(\"visibility\", input.visibility);\n if (input.tag) query.set(\"tag\", input.tag);\n if (input.useCase) query.set(\"useCase\", input.useCase);\n if (input.limit) query.set(\"limit\", String(input.limit));\n return this.request<\n SandboxTemplateCatalogResponse &\n Partial<\n Pick<SandboxPublishedSnapshotCatalogResponse, \"publishedSnapshots\">\n >\n >(\n `/published-snapshots${query.size > 0 ? `?${query.toString()}` : \"\"}`\n ).then((payload) => {\n const publishedSnapshots =\n payload.publishedSnapshots ?? payload.templates;\n return {\n ...payload,\n templates: publishedSnapshots,\n publishedSnapshots,\n };\n });\n }\n\n launchTemplate(\n input: SandboxTemplateLaunchInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxTemplateLaunchResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<SandboxTemplateLaunchResponse>(\n `/templates/launch${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n runPublishedSnapshot(\n input: SandboxTemplateLaunchInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxPublishedSnapshotLaunchResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.request<\n SandboxTemplateLaunchResponse &\n Partial<Pick<SandboxPublishedSnapshotLaunchResponse, \"publishedSnapshot\">>\n >(\n `/published-snapshots/launch${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n ).then((payload) => {\n const publishedSnapshot = payload.publishedSnapshot ?? payload.template;\n return {\n ...payload,\n template: publishedSnapshot,\n publishedSnapshot,\n };\n });\n }\n\n listSchedules(\n input: {\n teamId?: string;\n projectId?: string;\n sourceSandboxId?: string;\n } = {}\n ): Promise<SandboxScheduleListResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.sourceSandboxId)\n query.set(\"sourceSandboxId\", input.sourceSandboxId);\n return this.request<SandboxScheduleListResponse>(\n `/schedules${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n createSchedule(\n input: SandboxScheduleCreateInput\n ): Promise<SandboxScheduleResponse> {\n const query = new URLSearchParams();\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { projectId: _projectId, ...body } = input;\n return this.request<SandboxScheduleResponse>(\n `/schedules${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n getSchedule(scheduleId: string): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`\n );\n }\n\n updateSchedule(\n scheduleId: string,\n input: SandboxScheduleUpdateInput\n ): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n );\n }\n\n deleteSchedule(scheduleId: string): Promise<SandboxScheduleResponse> {\n return this.request<SandboxScheduleResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}`,\n {\n method: \"DELETE\",\n }\n );\n }\n\n listScheduleRuns(\n scheduleId: string,\n input: { limit?: number } = {}\n ): Promise<SandboxScheduleRunListResponse> {\n const query = new URLSearchParams();\n if (input.limit !== undefined) query.set(\"limit\", String(input.limit));\n return this.request<SandboxScheduleRunListResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}/runs${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n runScheduleNow(\n scheduleId: string,\n input: { idempotencyKey?: string } = {}\n ): Promise<SandboxScheduleRunResponse> {\n return this.request<SandboxScheduleRunResponse>(\n `/schedules/${encodeURIComponent(scheduleId)}/run`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n );\n }\n\n listTemplateBuilds(input: {\n teamId: string;\n }): Promise<SandboxTemplateBuildRecord[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxTemplateBuildListResponse>(\n `/sandbox-template-builds?${query.toString()}`\n ).then((payload) => payload.builds);\n }\n\n createTemplateBuild(\n input: SandboxTemplateBuildCreateInput\n ): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n \"/sandbox-template-builds\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.build);\n }\n\n getTemplateBuild(buildId: string): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}`\n ).then((payload) => payload.build);\n }\n\n getTemplateBuildLogs(\n buildId: string\n ): Promise<SandboxTemplateBuildLogsResponse> {\n return this.requestApiRoot<SandboxTemplateBuildLogsResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}/logs`\n );\n }\n\n cancelTemplateBuild(buildId: string): Promise<SandboxTemplateBuildRecord> {\n return this.requestApiRoot<SandboxTemplateBuildResponse>(\n `/sandbox-template-builds/${encodeURIComponent(buildId)}/cancel`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.build);\n }\n\n listPublishedSnapshotBuilds(input: {\n teamId: string;\n }): Promise<SandboxPublishedSnapshotBuildRecord[]> {\n const query = new URLSearchParams({ teamId: input.teamId });\n return this.requestApiRoot<SandboxPublishedSnapshotBuildListResponse>(\n `/published-snapshot-builds?${query.toString()}`\n ).then((payload) => payload.builds);\n }\n\n createPublishedSnapshotBuild(\n input: SandboxPublishedSnapshotBuildCreateInput\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n \"/published-snapshot-builds\",\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.build);\n }\n\n getPublishedSnapshotBuild(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}`\n ).then((payload) => payload.build);\n }\n\n getPublishedSnapshotBuildLogs(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildLogsResponse> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildLogsResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}/logs`\n );\n }\n\n cancelPublishedSnapshotBuild(\n buildId: string\n ): Promise<SandboxPublishedSnapshotBuildRecord> {\n return this.requestApiRoot<SandboxPublishedSnapshotBuildResponse>(\n `/published-snapshot-builds/${encodeURIComponent(buildId)}/cancel`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.build);\n }\n\n listOrganizations(): Promise<OpenPondOrganization[]> {\n return this.requestApiRoot<OpenPondOrganizationsResponse & { teams?: OpenPondOrganization[] }>(\n \"/organizations\"\n ).then((payload) => payload.organizations ?? payload.teams ?? []);\n }\n\n createOrganization(\n input: OpenPondOrganizationCreateInput\n ): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\"/organizations\", {\n method: \"POST\",\n body: JSON.stringify(input),\n }).then((payload) => payload.organization);\n }\n\n getOrganization(slug: string): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\n `/organizations/${encodeURIComponent(slug)}`\n ).then((payload) => payload.organization);\n }\n\n updateOrganization(\n slug: string,\n input: OpenPondOrganizationUpdateInput\n ): Promise<OpenPondOrganization> {\n return this.requestApiRoot<OpenPondOrganizationResponse>(\n `/organizations/${encodeURIComponent(slug)}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.organization);\n }\n\n listOrganizationMembers(slug: string): Promise<OpenPondOrganizationMember[]> {\n return this.requestApiRoot<OpenPondOrganizationMembersResponse>(\n `/organizations/${encodeURIComponent(slug)}/members`\n ).then((payload) => payload.members);\n }\n\n upsertOrganizationMember(\n slug: string,\n input: OpenPondOrganizationMemberUpsertInput\n ): Promise<OpenPondOrganizationMember> {\n return this.requestApiRoot<OpenPondOrganizationMemberResponse>(\n `/organizations/${encodeURIComponent(slug)}/members`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.member);\n }\n\n getOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server`\n ).then((payload) => payload.mcpServer);\n }\n\n generateOrganizationMcpServer(\n slug: string,\n input: OpenPondOrganizationMcpGenerateInput = {}\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server`,\n {\n method: \"POST\",\n body: JSON.stringify(input),\n }\n ).then((payload) => payload.mcpServer);\n }\n\n rotateOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/rotate`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n disableOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/disable`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n enableOrganizationMcpServer(\n slug: string\n ): Promise<OpenPondOrganizationMcpServer | null> {\n return this.requestApiRoot<OpenPondOrganizationMcpServerResponse>(\n `/organizations/${encodeURIComponent(slug)}/mcp-server/enable`,\n {\n method: \"POST\",\n }\n ).then((payload) => payload.mcpServer);\n }\n\n startReplay(\n input: SandboxReplayInput & { teamId?: string; projectId?: string }\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n const { teamId: _teamId, projectId: _projectId, ...body } = input;\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays${query.size > 0 ? `?${query.toString()}` : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify(body),\n }\n );\n }\n\n listReplays(\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayListResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayListResponse>(\n `/sandbox-replays${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n getReplay(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n getReplayLogs(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayLogsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayLogsResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/logs${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n getReplayArtifacts(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayArtifactsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayArtifactsResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/artifacts${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`\n );\n }\n\n cancelReplay(\n replayId: string,\n input: { teamId?: string; projectId?: string } = {}\n ): Promise<SandboxReplayResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n return this.requestApiRoot<SandboxReplayResponse>(\n `/sandbox-replays/${encodeURIComponent(replayId)}/cancel${\n query.size > 0 ? `?${query.toString()}` : \"\"\n }`,\n {\n method: \"POST\",\n }\n );\n }\n\n integrationConnections(\n input: {\n teamId?: string;\n projectId?: string;\n agentId?: string;\n status?: SandboxIntegrationConnectionStatusFilter;\n } = {}\n ): Promise<SandboxIntegrationConnectionsResponse> {\n const query = new URLSearchParams();\n if (input.teamId) query.set(\"teamId\", input.teamId);\n if (input.projectId) query.set(\"projectId\", input.projectId);\n if (input.agentId) query.set(\"agentId\", input.agentId);\n if (input.status) query.set(\"status\", input.status);\n return this.requestApiRoot<SandboxIntegrationConnectionsResponse>(\n `/integrations/connections${query.size > 0 ? `?${query.toString()}` : \"\"}`\n );\n }\n\n mcpServerConfig(): OpenPondSandboxMcpServerConfig {\n return {\n name: \"openpond-sandboxes\",\n transport: \"streamable-http\",\n url: `${this.sandboxApiUrl}/mcp`,\n headers: {\n \"openpond-api-key\": this.apiKey,\n },\n };\n }\n\n smoke(options: SandboxSmokeOptions = {}): Promise<SandboxSmokeSummary> {\n return runSandboxSmoke(this, options);\n }\n\n}\n\nexport function createOpenPondSandboxClient(\n options: OpenPondSandboxClientOptions\n): OpenPondSandboxClient {\n return new OpenPondSandboxClient(options);\n}\n\nexport { normalizeSandboxApiUrl } from \"./url.js\";\n", "import { randomUUID } from \"node:crypto\";\nimport { DEFAULT_OPENPOND_OPCHAT_API_BASE_URL } from \"./urls.js\";\n\nexport type HostedChatRole = \"system\" | \"user\" | \"assistant\" | \"tool\";\n\nexport type HostedChatToolCall = {\n id?: string;\n type: \"function\" | string;\n function?: {\n name?: string;\n arguments?: string;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatTool = {\n type: \"function\" | string;\n function?: {\n name: string;\n description?: string;\n parameters?: Record<string, unknown>;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatToolChoice =\n | \"none\"\n | \"auto\"\n | \"required\"\n | {\n type: \"function\";\n function: {\n name: string;\n };\n };\n\nexport type HostedChatContinuation =\n | {\n kind: \"chat_completions_reasoning\";\n reasoningContent: string;\n }\n | {\n kind: \"responses_reasoning_items\";\n items: Array<Record<string, unknown>>;\n };\n\nexport type HostedChatImageInput = {\n url: string;\n detail?: \"low\" | \"high\" | \"auto\";\n};\n\nexport type HostedChatMessage = {\n role: HostedChatRole;\n content?: string | null;\n images?: HostedChatImageInput[];\n continuation?: HostedChatContinuation;\n name?: string;\n tool_call_id?: string;\n tool_calls?: HostedChatToolCall[];\n};\n\nexport type HostedModel = {\n id: string;\n object?: string;\n created?: number;\n owned_by?: string;\n [key: string]: unknown;\n};\n\nexport type HostedProvider = {\n id: string;\n object?: string;\n display_name?: string;\n owned_by?: string;\n lifecycle_status?: string;\n credential_modes?: string[];\n routing?: Record<string, unknown>;\n default_model?: string | null;\n model_ids?: string[];\n capabilities?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nexport type HostedModelsResponse = {\n object: \"list\" | string;\n data: HostedModel[];\n};\n\nexport type HostedProvidersResponse = {\n object: \"list\" | string;\n data: HostedProvider[];\n};\n\nexport type HostedChatUsage = {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n input_tokens?: number;\n output_tokens?: number;\n cached_input_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation_input_tokens?: number;\n prompt_cache_hit_tokens?: number;\n prompt_cache_miss_tokens?: number;\n cache_telemetry_source?: \"provider_usage_body\" | \"provider_response_headers\";\n prompt_tokens_details?: {\n cached_tokens?: number;\n [key: string]: unknown;\n };\n input_tokens_details?: {\n cached_tokens?: number;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n};\n\nexport type HostedChatCompletion = {\n id?: string;\n object?: string;\n created?: number;\n model?: string;\n choices?: Array<{\n index?: number;\n message?: {\n role?: string;\n content?: string | null;\n tool_calls?: HostedChatToolCall[];\n };\n finish_reason?: string | null;\n }>;\n usage?: HostedChatUsage;\n [key: string]: unknown;\n};\n\nexport type HostedChatStreamDelta =\n | {\n type: \"text_delta\";\n text: string;\n raw: unknown;\n }\n | {\n type: \"reasoning_delta\";\n text: string;\n raw: unknown;\n }\n | {\n type: \"continuation\";\n continuation: HostedChatContinuation;\n raw: unknown;\n }\n | {\n type: \"tool_call_delta\";\n toolCalls: HostedChatToolCall[];\n raw: unknown;\n }\n | {\n type: \"usage\";\n usage: HostedChatUsage;\n raw: unknown;\n }\n | {\n type: \"finish\";\n finishReason: string | null;\n raw: unknown;\n };\n\nexport type HostedChatRequestOptions = {\n apiBaseUrl: string;\n token: string;\n model: string;\n messages: HostedChatMessage[];\n requestId?: string;\n signal?: AbortSignal;\n temperature?: number;\n maxTokens?: number;\n tools?: HostedChatTool[];\n toolChoice?: HostedChatToolChoice;\n tool_choice?: HostedChatToolChoice;\n metadata?: Record<string, unknown>;\n};\n\nexport type HostedModelsRequestOptions = {\n apiBaseUrl: string;\n token: string;\n signal?: AbortSignal;\n};\n\nexport type HostedModelRequestOptions = HostedModelsRequestOptions & {\n model: string;\n};\n\nexport type HostedProvidersRequestOptions = HostedModelsRequestOptions;\n\nexport type HostedProviderRequestOptions = HostedModelsRequestOptions & {\n provider: string;\n};\n\nexport type HostedChatApiBaseUrlOptions = {\n apiBaseUrl?: string | null;\n chatApiBaseUrl?: string | null;\n opChatApiBaseUrl?: string | null;\n env?: Record<string, string | undefined>;\n};\n\nfunction normalizeApiBaseUrl(value: string): string {\n const trimmed = normalizeOptionalOpChatApiBaseUrl(value);\n if (!trimmed) throw new Error(\"apiBaseUrl is required\");\n return trimmed;\n}\n\nfunction trimTrailingSlashes(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction normalizeOptionalOpChatApiBaseUrl(value?: string | null): string | null {\n let trimmed = trimTrailingSlashes(value?.trim() ?? \"\");\n if (!trimmed) return null;\n\n trimmed = trimmed\n .replace(/\\/chat\\/completions$/i, \"\")\n .replace(/\\/models(?:\\/[^/]+)?$/i, \"\");\n\n if (trimmed.endsWith(\"/opchat/v1\")) return trimmed;\n if (trimmed.endsWith(\"/opchat\")) return `${trimmed}/v1`;\n if (trimmed.endsWith(\"/v1\")) {\n trimmed = trimmed.slice(0, -\"/v1\".length);\n }\n return `${trimTrailingSlashes(trimmed)}/opchat/v1`;\n}\n\nexport function resolveOpChatApiBaseUrl(\n options: HostedChatApiBaseUrlOptions = {}\n): string {\n const runtimeEnv =\n options.env ??\n (typeof process !== \"undefined\"\n ? (process.env as Record<string, string | undefined>)\n : {});\n const explicit =\n normalizeOptionalOpChatApiBaseUrl(options.opChatApiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_OPCHAT_API_URL);\n if (explicit) return explicit;\n\n const migrationInput =\n normalizeOptionalOpChatApiBaseUrl(options.chatApiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_CHAT_API_URL) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_GATEWAY_URL);\n if (migrationInput) return migrationInput;\n\n const apiBase =\n normalizeOptionalOpChatApiBaseUrl(options.apiBaseUrl) ??\n normalizeOptionalOpChatApiBaseUrl(runtimeEnv.OPENPOND_API_URL);\n return apiBase ?? DEFAULT_OPENPOND_OPCHAT_API_BASE_URL;\n}\n\nexport function resolveHostedChatApiBaseUrl(\n options: HostedChatApiBaseUrlOptions = {}\n): string {\n return resolveOpChatApiBaseUrl(options);\n}\n\nfunction requireToken(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) throw new Error(\"OpenPond API key is required\");\n return trimmed;\n}\n\nfunction hostedHeaders(\n token: string,\n accept: string,\n requestId?: string\n): Headers {\n const headers = new Headers();\n headers.set(\"Authorization\", `Bearer ${requireToken(token)}`);\n headers.set(\"Content-Type\", \"application/json\");\n headers.set(\"Accept\", accept);\n headers.set(\"x-openpond-client\", \"openpond-code\");\n headers.set(\"x-openpond-request-id\", requestId || randomUUID());\n return headers;\n}\n\nasync function readError(response: Response): Promise<string> {\n const text = await response.text().catch(() => \"\");\n if (!text) return response.statusText || `HTTP ${response.status}`;\n try {\n const payload = JSON.parse(text) as {\n error?: unknown;\n message?: unknown;\n code?: unknown;\n };\n const error =\n typeof payload.error === \"string\"\n ? payload.error\n : payload.error &&\n typeof payload.error === \"object\" &&\n !Array.isArray(payload.error)\n ? (payload.error as { code?: unknown; message?: unknown; type?: unknown })\n : null;\n const code =\n typeof payload.code === \"string\"\n ? payload.code\n : error && typeof error !== \"string\" && typeof error.code === \"string\"\n ? error.code\n : null;\n const message =\n typeof payload.message === \"string\"\n ? payload.message\n : error &&\n typeof error !== \"string\" &&\n typeof error.message === \"string\"\n ? error.message\n : null;\n const label =\n typeof error === \"string\"\n ? error\n : error && typeof error.type === \"string\"\n ? error.type\n : null;\n return [code, label, message].filter(Boolean).join(\": \") || text;\n } catch {\n return text;\n }\n}\n\nfunction buildHostedChatBody(\n options: HostedChatRequestOptions,\n stream: boolean\n): Record<string, unknown> {\n const body: Record<string, unknown> = {\n model: options.model,\n messages: options.messages,\n stream,\n };\n if (typeof options.temperature === \"number\") {\n body.temperature = options.temperature;\n }\n if (typeof options.maxTokens === \"number\") {\n body.max_tokens = options.maxTokens;\n }\n if (options.tools) {\n body.tools = options.tools;\n }\n const toolChoice = options.toolChoice ?? options.tool_choice;\n if (toolChoice !== undefined) {\n body.tool_choice = toolChoice;\n }\n if (options.metadata) {\n body.metadata = options.metadata;\n }\n return body;\n}\n\nexport async function listOpChatModels(\n options: HostedModelsRequestOptions\n): Promise<HostedModelsResponse> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/models`;\n const response = await fetch(requestUrl, {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted model list failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedModelsResponse;\n}\n\nexport async function getOpChatModel(\n options: HostedModelRequestOptions\n): Promise<HostedModel> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/models/${encodeURIComponent(options.model)}`;\n const response = await fetch(\n requestUrl,\n {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n }\n );\n if (!response.ok) {\n throw new Error(\n `Hosted model lookup failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedModel;\n}\n\nexport const listHostedModels = listOpChatModels;\n\nexport async function listOpChatProviders(\n options: HostedProvidersRequestOptions\n): Promise<HostedProvidersResponse> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/providers`;\n const response = await fetch(requestUrl, {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted provider list failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedProvidersResponse;\n}\n\nexport async function getOpChatProvider(\n options: HostedProviderRequestOptions\n): Promise<HostedProvider> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/providers/${encodeURIComponent(options.provider)}`;\n const response = await fetch(\n requestUrl,\n {\n method: \"GET\",\n headers: hostedHeaders(options.token, \"application/json\"),\n signal: options.signal,\n }\n );\n if (!response.ok) {\n throw new Error(\n `Hosted provider lookup failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n return (await response.json()) as HostedProvider;\n}\n\nexport const listHostedProviders = listOpChatProviders;\n\nexport async function sendHostedChatTurn(\n options: HostedChatRequestOptions\n): Promise<HostedChatCompletion> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/chat/completions`;\n const response = await fetch(requestUrl, {\n method: \"POST\",\n headers: hostedHeaders(\n options.token,\n \"application/json\",\n options.requestId\n ),\n body: JSON.stringify(buildHostedChatBody(options, false)),\n signal: options.signal,\n });\n if (!response.ok) {\n throw new Error(\n `Hosted chat failed: ${response.status} ${await readError(response)}`\n );\n }\n return (await response.json()) as HostedChatCompletion;\n}\n\ntype OpenAIStreamChunk = {\n choices?: Array<{\n delta?: {\n content?: string;\n reasoning_content?: string;\n tool_calls?: HostedChatToolCall[];\n };\n finish_reason?: string | null;\n }>;\n usage?: HostedChatUsage;\n error?: {\n message?: string;\n code?: string;\n type?: string;\n };\n};\n\nasync function* parseOpenAISSE(\n stream: ReadableStream<Uint8Array>,\n signal?: AbortSignal\n): AsyncGenerator<unknown, void, unknown> {\n const reader = stream.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n const readAbortError = () =>\n signal?.reason instanceof Error\n ? signal.reason\n : new Error(\"hosted_chat_aborted\");\n\n try {\n while (true) {\n if (signal?.aborted) throw readAbortError();\n const result = await reader.read();\n if (result.done) break;\n buffer += decoder.decode(result.value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed.startsWith(\"data:\")) continue;\n const data = trimmed.slice(5).trim();\n if (!data) continue;\n if (data === \"[DONE]\") return;\n yield JSON.parse(data) as unknown;\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Ignore release-lock failures when the stream is already closed.\n }\n }\n}\n\nexport async function* streamHostedChatTurn(\n options: HostedChatRequestOptions\n): AsyncGenerator<HostedChatStreamDelta, void, unknown> {\n const apiBaseUrl = normalizeApiBaseUrl(options.apiBaseUrl);\n const requestUrl = `${apiBaseUrl}/chat/completions`;\n const response = await fetch(requestUrl, {\n method: \"POST\",\n headers: hostedHeaders(\n options.token,\n \"text/event-stream\",\n options.requestId\n ),\n body: JSON.stringify(buildHostedChatBody(options, true)),\n signal: options.signal,\n });\n if (!response.ok || !response.body) {\n throw new Error(\n `Hosted chat stream failed: ${response.status} ${await readError(\n response\n )}`\n );\n }\n\n for await (const raw of parseOpenAISSE(response.body, options.signal)) {\n const chunk = raw as OpenAIStreamChunk;\n if (chunk.error) {\n throw new Error(chunk.error.message || \"Hosted chat stream error\");\n }\n if (chunk.usage) {\n yield { type: \"usage\", usage: chunk.usage, raw };\n }\n const choice = chunk.choices?.[0];\n if (!choice) continue;\n const content = choice.delta?.content;\n if (content) {\n yield { type: \"text_delta\", text: content, raw };\n }\n const reasoning = choice.delta?.reasoning_content;\n if (reasoning) {\n yield { type: \"reasoning_delta\", text: reasoning, raw };\n }\n const toolCalls = choice.delta?.tool_calls;\n if (Array.isArray(toolCalls) && toolCalls.length > 0) {\n yield { type: \"tool_call_delta\", toolCalls, raw };\n }\n if (choice.finish_reason !== undefined && choice.finish_reason !== null) {\n yield { type: \"finish\", finishReason: choice.finish_reason, raw };\n }\n }\n}\n", "import type { OpenPondSandboxClient } from \"@openpond/cloud/sandbox/client\";\nimport type { SandboxRecord } from \"@openpond/cloud/sandbox/types\";\nimport type { OpenPondClientOptions } from \"./types.js\";\n\n/** The operations used by Work; provider-specific provisioning stays here. */\nexport type WorkSandbox = Pick<OpenPondSandboxClient,\n \"get\" | \"start\" | \"exec\" | \"mkdir\" | \"uploadFile\" | \"uploadFileBase64\" |\n \"listFiles\" | \"downloadFileResponse\" | \"stop\" | \"delete\"\n> & {\n readonly supportsResume: boolean;\n createWork(input: { requestId?: string; repo?: string; budgetUsd?: string; metadata?: Record<string, unknown> }): Promise<SandboxRecord>;\n};\n\nexport function workSandbox(client: OpenPondSandboxClient, custom?: OpenPondClientOptions[\"sandbox\"]): WorkSandbox {\n return {\n supportsResume: !custom,\n get: (...args) => client.get(...args),\n start: custom ? async () => { throw new Error(\"This runtime does not support resuming a stopped guest; start fresh Work with saved outputs\"); } : (...args) => client.start(...args),\n exec: (id, input) => client.exec(id, custom ? { ...input, timeoutSeconds: Math.min(input.timeoutSeconds ?? 30, 60) } : input),\n mkdir: (...args) => client.mkdir(...args),\n uploadFile: (...args) => client.uploadFile(...args),\n uploadFileBase64: (...args) => client.uploadFileBase64(...args),\n listFiles: (...args) => client.listFiles(...args),\n downloadFileResponse: (...args) => client.downloadFileResponse(...args),\n stop: (...args) => client.stop(...args),\n delete: (...args) => client.delete(...args),\n createWork: ({ requestId, repo, budgetUsd, metadata }) => {\n if (custom) {\n if (repo?.trim()) throw new Error(\"This runtime does not support repository provisioning; provide Work inputs instead\");\n if (budgetUsd !== undefined) throw new Error(\"Hosted spending budgets are not supported by this runtime\");\n const request = { resources: custom.resources ?? { cpu: 1, memoryGb: 2, diskGb: 10 }, ...(requestId ? { requestId } : {}) };\n return client.create(request);\n }\n const budget = budgetUsd?.trim() || \"1.00\";\n return client.create({\n ...(repo?.trim() ? { repo: repo.trim() } : {}),\n runtimeProfileId: \"openpond-work-v1\",\n resources: { cpu: 2, memoryGb: 4, diskGb: 16 },\n budget: { maxUsd: budget },\n quotas: { maxSpendUsd: budget, maxDurationSeconds: 3600, idleTimeoutSeconds: 900, maxCommands: 200, maxOpenPorts: 4 },\n metadata: { source: \"openpond-sdk-work\", ...metadata, ...(requestId ? { workRequestId: requestId } : {}) },\n }, { async: true });\n },\n };\n}\n\nexport function configuredEndpoint(value: string, name: string): string {\n const endpoint = new URL(value);\n if (![\"http:\", \"https:\"].includes(endpoint.protocol) || endpoint.username || endpoint.password || endpoint.search || endpoint.hash)\n throw new Error(`${name} must be an HTTP(S) endpoint without embedded credentials, query or fragment`);\n return endpoint.toString().replace(/\\/$/, \"\");\n}\n\nexport function configuredKey(value: string, name: string): string {\n if (!value?.trim()) throw new Error(`${name} is required`);\n return value.trim();\n}\n", "import { z } from \"zod\";\nimport { sendHostedChatTurn, type HostedChatRequestOptions } from \"@openpond/cloud/hosted-chat\";\n\nconst completionSchema = z.object({\n choices: z.array(z.object({ message: z.object({\n content: z.string().nullable().optional(),\n tool_calls: z.array(z.object({\n id: z.string().min(1), type: z.literal(\"function\"),\n function: z.object({ name: z.string().min(1), arguments: z.string() }),\n })).optional(),\n }) })).min(1),\n});\n\nexport async function workModelTurn(options: HostedChatRequestOptions, custom: boolean) {\n if (!custom) return sendHostedChatTurn(options);\n const response = await fetch(`${options.apiBaseUrl}/chat/completions`, {\n method: \"POST\",\n headers: { authorization: `Bearer ${options.token}`, \"content-type\": \"application/json\" },\n body: JSON.stringify({ model: options.model, messages: options.messages, tools: options.tools, tool_choice: \"auto\", stream: false }),\n signal: options.signal,\n redirect: \"error\",\n });\n if (!response.ok) throw new Error(`Configured model request failed (${response.status})`);\n return completionSchema.parse(await response.json());\n}\n", "import { OpenPondApiError } from \"@openpond/cloud/api/core\";\nimport {\n type HostedChatMessage,\n type HostedChatTool,\n type HostedChatToolCall,\n} from \"@openpond/cloud/hosted-chat\";\nimport type { OpenPondSandboxClient } from \"@openpond/cloud/sandbox/client\";\nimport { workSandbox, type WorkSandbox } from \"./work-sandbox.js\";\nimport type { OpenPondClientOptions } from \"./types.js\";\nimport { workModelTurn } from \"./work-model.js\";\nimport type {\n SandboxFileDownloadResponse,\n SandboxFileEntry,\n SandboxRecord,\n} from \"@openpond/cloud/sandbox/types\";\n\nconst DEFAULT_MODEL = \"openpond-chat\";\nconst DEFAULT_MAX_STEPS = 24;\nconst MAX_TOOL_OUTPUT_CHARS = 40_000;\nexport const MAX_WORK_COMMAND_CHARS = 20_000;\nconst WORK_OUTPUT_DIRECTORY = \"outputs\";\nconst WORK_INPUT_DIRECTORY = \"inputs/previous-outputs\";\nconst WORK_INPUT_MANIFEST = \"inputs/.openpond-context.json\";\nconst MAX_WORK_OUTPUTS = 100;\nconst MAX_WORK_INPUTS = 100;\nconst MAX_WORK_INPUT_BYTES = 100 * 1024 * 1024;\n\nexport type OpenPondWorkCleanup = \"keep\" | \"stop\" | \"delete\";\n\nexport type OpenPondWorkHistoryMessage = {\n role: \"user\" | \"assistant\";\n content: string;\n};\n\nexport type OpenPondWorkOutput = {\n path: string;\n name: string;\n mimeType: string;\n sizeBytes: number;\n updatedAt: string;\n isBinary: boolean | null;\n previewable: boolean;\n};\n\nexport type OpenPondWorkInputFile = {\n id: string;\n name: string;\n contentsBase64: string;\n mimeType?: string;\n checksumSha256?: string;\n revision?: number;\n metadata?: Record<string, unknown>;\n};\n\nexport type OpenPondWorkOutputPersistenceContext = {\n output: OpenPondWorkOutput;\n /** Downloads and verifies the complete output at most once. */\n download: () => Promise<SandboxFileDownloadResponse>;\n};\n\nexport type OpenPondWorkLifecycle = {\n cleanupPolicy: OpenPondWorkCleanup;\n persistence: {\n status: \"not_requested\" | \"not_needed\" | \"running\" | \"complete\" | \"failed\";\n outputCount: number;\n persistedCount: number;\n error?: string;\n };\n cleanup: {\n status: \"not_requested\" | \"running\" | \"complete\" | \"pending\" | \"failed\";\n finalSandboxState?: SandboxRecord[\"state\"];\n error?: string;\n };\n};\n\nexport type OpenPondWorkEvent =\n | { type: \"status\"; message: string }\n | {\n type: \"sandbox\";\n sandboxId: string;\n state: SandboxRecord[\"state\"];\n }\n | { type: \"assistant\"; text: string }\n | {\n type: \"tool\";\n toolCallId: string;\n command: string;\n status: \"started\" | \"succeeded\" | \"failed\";\n output?: string;\n exitCode?: number | null;\n }\n | { type: \"output\"; output: OpenPondWorkOutput }\n | {\n type: \"persistence\";\n output: OpenPondWorkOutput;\n status: \"started\" | \"succeeded\" | \"failed\";\n error?: string;\n }\n | {\n type: \"cleanup\";\n policy: OpenPondWorkCleanup;\n status: \"started\" | \"complete\" | \"pending\" | \"failed\";\n sandboxState?: SandboxRecord[\"state\"];\n error?: string;\n }\n | {\n type: \"done\";\n sandboxId: string;\n text: string;\n steps: number;\n outputs: OpenPondWorkOutput[];\n lifecycle: OpenPondWorkLifecycle;\n };\n\nexport type OpenPondWorkRunInput = {\n prompt: string;\n /** Durable caller-generated UUID for recovering a BYOC create after an app restart. */\n requestId?: string;\n /** Reuse this sandbox to continue work in an existing conversation. */\n sandboxId?: string;\n /** Repository cloned when a new sandbox is created. */\n repo?: string;\n history?: OpenPondWorkHistoryMessage[];\n model?: string;\n maxSteps?: number;\n budgetUsd?: string;\n timeoutSeconds?: number;\n signal?: AbortSignal;\n metadata?: Record<string, unknown>;\n /** Defaults to keep for backwards compatibility. First-party Work callers use delete. */\n cleanup?: OpenPondWorkCleanup;\n /** Required before delete when a turn creates outputs, unless discardOutputs is true. */\n persistOutput?: (\n context: OpenPondWorkOutputPersistenceContext,\n ) => void | Promise<void>;\n /** Explicitly allows delete to discard detected outputs. */\n discardOutputs?: boolean;\n /** Durable outputs or other caller-owned files to stage into fresh compute. */\n inputs?: OpenPondWorkInputFile[];\n onEvent?: (event: OpenPondWorkEvent) => void | Promise<void>;\n};\n\nexport type OpenPondWorkRunResult = {\n sandboxId: string;\n text: string;\n steps: number;\n outputs: OpenPondWorkOutput[];\n lifecycle: OpenPondWorkLifecycle;\n};\n\ntype WorkClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n chatApiBaseUrl: string;\n sandboxes: OpenPondSandboxClient;\n sandboxConfig?: OpenPondClientOptions[\"sandbox\"];\n defaultModel?: string;\n customModel?: boolean;\n};\n\nexport class OpenPondWorkClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n readonly #chatApiBaseUrl: string;\n readonly #sandboxes: WorkSandbox;\n readonly #defaultModel: string;\n readonly #customModel: boolean;\n\n constructor(input: WorkClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl;\n this.#chatApiBaseUrl = input.chatApiBaseUrl;\n this.#sandboxes = workSandbox(input.sandboxes, input.sandboxConfig);\n this.#defaultModel = input.defaultModel ?? DEFAULT_MODEL;\n this.#customModel = input.customModel ?? false;\n }\n\n async run(input: OpenPondWorkRunInput): Promise<OpenPondWorkRunResult> {\n const prompt = input.prompt.trim();\n if (!prompt) throw new Error(\"Work prompt is required\");\n input.signal?.throwIfAborted();\n\n const emit = async (event: OpenPondWorkEvent) => input.onEvent?.(event);\n const cleanupPolicy = input.cleanup ?? \"keep\";\n const lifecycle = initialLifecycle(cleanupPolicy);\n let sandbox: SandboxRecord | null = null;\n let outputBaseline: Map<string, string> | null = null;\n let finalizationAttempted = false;\n const maxSteps = boundedInteger(input.maxSteps, 1, 100, DEFAULT_MAX_STEPS);\n let finalText = \"\";\n try {\n await emit({ type: \"status\", message: \"Preparing sandbox\" });\n sandbox = await this.#resolveSandbox(input);\n await emit({\n type: \"sandbox\",\n sandboxId: sandbox.id,\n state: sandbox.state,\n });\n await this.#stageInputs(sandbox.id, input.inputs ?? []);\n outputBaseline = await this.#prepareOutputDirectory(sandbox.id);\n const messages: HostedChatMessage[] = [\n {\n role: \"system\",\n content: systemPrompt(sandbox.id, (input.inputs?.length ?? 0) > 0),\n },\n ...(input.history ?? []).map((message) => ({ ...message })),\n { role: \"user\", content: prompt },\n ];\n\n for (let step = 1; step <= maxSteps; step += 1) {\n input.signal?.throwIfAborted();\n await emit({ type: \"status\", message: `Thinking \u00B7 step ${step}` });\n const completion = await workModelTurn({\n apiBaseUrl: this.#chatApiBaseUrl,\n token: this.#apiKey,\n model: input.model?.trim() || this.#defaultModel,\n messages,\n tools: WORK_TOOLS,\n toolChoice: \"auto\",\n signal: input.signal,\n metadata: {\n source: \"openpond-sdk-work\",\n sandboxId: sandbox.id,\n apiBaseUrl: this.#apiBaseUrl,\n ...input.metadata,\n },\n }, this.#customModel);\n const choice = completion.choices?.[0];\n const assistantText = choice?.message?.content?.trim() ?? \"\";\n const toolCalls = choice?.message?.tool_calls ?? [];\n messages.push({\n role: \"assistant\",\n content: assistantText || null,\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n });\n\n if (assistantText) {\n finalText = assistantText;\n await emit({ type: \"assistant\", text: assistantText });\n }\n if (toolCalls.length === 0) {\n const outputs = await this.#collectOutputs(sandbox.id, outputBaseline);\n for (const output of outputs) await emit({ type: \"output\", output });\n finalizationAttempted = true;\n await this.#finalizeSandbox(sandbox.id, outputs, input, lifecycle, emit);\n const result = {\n sandboxId: sandbox.id,\n text: finalText,\n steps: step,\n outputs,\n lifecycle,\n };\n await emit({ type: \"done\", ...result });\n return result;\n }\n\n for (const [index, toolCall] of toolCalls.entries()) {\n input.signal?.throwIfAborted();\n const result = await this.#executeTool(\n sandbox.id,\n toolCall,\n index,\n input.timeoutSeconds,\n emit,\n );\n messages.push(result);\n }\n }\n\n throw new Error(`Work did not finish within ${maxSteps} steps`);\n } catch (error) {\n if (sandbox && outputBaseline && !finalizationAttempted) {\n try {\n const outputs = await this.#collectOutputs(sandbox.id, outputBaseline);\n for (const output of outputs) await emit({ type: \"output\", output });\n await this.#finalizeSandbox(sandbox.id, outputs, input, lifecycle, emit);\n } catch (finalizationError) {\n attachWorkFailure(error, lifecycle, finalizationError);\n }\n }\n attachWorkFailure(error, lifecycle);\n throw error;\n }\n }\n\n async deleteSandbox(sandboxId: string): Promise<void> {\n try {\n const sandbox = await this.#sandboxes.get(sandboxId);\n if (sandbox.state === \"deleted\") return;\n await this.#sandboxes.delete(sandboxId);\n } catch (error) {\n // Deletion may have finished before the response or app was interrupted.\n if (error instanceof OpenPondApiError && error.status === 404) return;\n throw error;\n }\n }\n\n async #stageInputs(\n sandboxId: string,\n inputs: OpenPondWorkInputFile[],\n ): Promise<void> {\n if (inputs.length === 0) return;\n if (inputs.length > MAX_WORK_INPUTS) {\n throw new Error(`Work inputs exceed the ${MAX_WORK_INPUTS} file limit`);\n }\n const decodedBytes = inputs.reduce(\n (total, input) => total + Buffer.byteLength(input.contentsBase64, \"base64\"),\n 0,\n );\n if (decodedBytes > MAX_WORK_INPUT_BYTES) {\n throw new Error(`Work inputs exceed the ${MAX_WORK_INPUT_BYTES} byte limit`);\n }\n\n await this.#sandboxes.mkdir(sandboxId, {\n path: WORK_INPUT_DIRECTORY,\n recursive: true,\n });\n const usedNames = new Set<string>();\n const manifest = [];\n for (const [index, input] of inputs.entries()) {\n const name = uniqueInputName(input, index, usedNames);\n const stagedPath = `${WORK_INPUT_DIRECTORY}/${name}`;\n await this.#sandboxes.uploadFileBase64(\n sandboxId,\n stagedPath,\n input.contentsBase64,\n );\n manifest.push({\n id: input.id,\n path: stagedPath,\n name: input.name,\n mimeType: input.mimeType ?? null,\n checksumSha256: input.checksumSha256 ?? null,\n revision: input.revision ?? null,\n metadata: input.metadata ?? {},\n });\n }\n await this.#sandboxes.uploadFile(\n sandboxId,\n WORK_INPUT_MANIFEST,\n JSON.stringify({ version: 1, files: manifest }, null, 2),\n );\n }\n\n async #finalizeSandbox(\n sandboxId: string,\n outputs: OpenPondWorkOutput[],\n input: OpenPondWorkRunInput,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<void> {\n lifecycle.persistence.outputCount = outputs.length;\n if (outputs.length === 0) {\n lifecycle.persistence.status = \"not_needed\";\n } else if (input.persistOutput) {\n lifecycle.persistence.status = \"running\";\n for (const output of outputs) {\n await emit({ type: \"persistence\", output, status: \"started\" });\n try {\n const download = lazyOutputDownload(this.#sandboxes, sandboxId, output);\n await input.persistOutput({ output, download });\n lifecycle.persistence.persistedCount += 1;\n await emit({ type: \"persistence\", output, status: \"succeeded\" });\n } catch (error) {\n const message = errorMessage(error);\n lifecycle.persistence.status = \"failed\";\n lifecycle.persistence.error = message;\n await emit({\n type: \"persistence\",\n output,\n status: \"failed\",\n error: message,\n });\n if ((input.cleanup ?? \"keep\") !== \"keep\") {\n await this.#preserveFailedOutputs(sandboxId, lifecycle, emit);\n }\n throw error;\n }\n }\n lifecycle.persistence.status = \"complete\";\n } else if ((input.cleanup ?? \"keep\") === \"delete\" && !input.discardOutputs) {\n lifecycle.persistence.status = \"failed\";\n lifecycle.persistence.error =\n \"Deleting a Work sandbox with outputs requires persistOutput or discardOutputs: true\";\n await this.#preserveFailedOutputs(sandboxId, lifecycle, emit);\n throw new Error(lifecycle.persistence.error);\n } else {\n lifecycle.persistence.status = \"not_requested\";\n }\n\n await this.#cleanupSandbox(\n sandboxId,\n input.cleanup ?? \"keep\",\n lifecycle,\n emit,\n );\n }\n\n async #preserveFailedOutputs(\n sandboxId: string,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ) {\n if (this.#sandboxes.supportsResume) {\n await this.#cleanupSandbox(sandboxId, \"stop\", lifecycle, emit);\n return;\n }\n // A fresh-only runtime cannot restart a stopped guest to recover files.\n // Keep it available for the application's durable persistence retry.\n lifecycle.cleanup.status = \"pending\";\n lifecycle.cleanup.finalSandboxState = \"running\";\n lifecycle.cleanup.error = \"Output persistence must be retried before guest deletion\";\n await emit({ type: \"cleanup\", policy: lifecycle.cleanupPolicy, status: \"pending\", sandboxState: \"running\", error: lifecycle.cleanup.error });\n }\n\n async #cleanupSandbox(\n sandboxId: string,\n policy: OpenPondWorkCleanup,\n lifecycle: OpenPondWorkLifecycle,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<void> {\n if (policy === \"keep\") return;\n lifecycle.cleanup.status = \"running\";\n await emit({ type: \"cleanup\", policy, status: \"started\" });\n try {\n const sandbox =\n policy === \"delete\"\n ? await this.#sandboxes.delete(sandboxId)\n : (await this.#sandboxes.stop(sandboxId)).sandbox;\n lifecycle.cleanup.finalSandboxState = sandbox.state;\n lifecycle.cleanup.status =\n (policy === \"delete\" && sandbox.state === \"deleted\") ||\n (policy === \"stop\" && sandbox.state === \"stopped\")\n ? \"complete\"\n : \"pending\";\n await emit({\n type: \"cleanup\",\n policy,\n status: lifecycle.cleanup.status,\n sandboxState: sandbox.state,\n });\n } catch (error) {\n const message = errorMessage(error);\n lifecycle.cleanup.status = \"failed\";\n lifecycle.cleanup.error = message;\n await emit({ type: \"cleanup\", policy, status: \"failed\", error: message });\n throw error;\n }\n }\n\n downloadOutput(\n sandboxId: string,\n output: OpenPondWorkOutput | string,\n ): Promise<SandboxFileDownloadResponse> {\n return this.#sandboxes.downloadFileResponse(\n sandboxId,\n typeof output === \"string\" ? output : output.path,\n );\n }\n\n async #prepareOutputDirectory(sandboxId: string): Promise<Map<string, string>> {\n await this.#sandboxes.mkdir(sandboxId, {\n path: WORK_OUTPUT_DIRECTORY,\n recursive: true,\n });\n return outputSignatures(await this.#listOutputFiles(sandboxId));\n }\n\n async #collectOutputs(\n sandboxId: string,\n baseline: Map<string, string>,\n ): Promise<OpenPondWorkOutput[]> {\n const files = await this.#listOutputFiles(sandboxId);\n return files\n .filter((file) => baseline.get(file.path) !== outputSignature(file))\n .sort((left, right) => left.path.localeCompare(right.path))\n .slice(0, MAX_WORK_OUTPUTS)\n .map(workOutputFromFile);\n }\n\n async #listOutputFiles(sandboxId: string): Promise<SandboxFileEntry[]> {\n const listed = await this.#sandboxes.listFiles(sandboxId, {\n path: WORK_OUTPUT_DIRECTORY,\n recursive: true,\n maxEntries: 500,\n });\n return listed.files.filter(\n (file) =>\n file.type === \"file\" &&\n !normalizedOutputPath(file.path).includes(\"/.openpond-\"),\n );\n }\n\n async #resolveSandbox(input: OpenPondWorkRunInput): Promise<SandboxRecord> {\n if (input.sandboxId) {\n const existing = await this.#sandboxes.get(input.sandboxId);\n if (existing.state === \"stopped\") {\n await this.#sandboxes.start(existing.id, { async: true });\n } else if (existing.state === \"deleted\" || existing.state === \"error\") {\n throw new Error(`Cannot resume sandbox ${existing.id} in state ${existing.state}`);\n }\n const ready = await this.#waitUntilRunning(existing.id, input.signal);\n return ready;\n }\n\n const created = await this.#sandboxes.createWork(input);\n return this.#waitUntilRunning(created.id, input.signal);\n }\n\n async #waitUntilRunning(sandboxId: string, signal?: AbortSignal): Promise<SandboxRecord> {\n const deadline = Date.now() + 12 * 60_000;\n let sandbox = await this.#sandboxes.get(sandboxId);\n while (Date.now() < deadline) {\n signal?.throwIfAborted();\n if (sandbox.state === \"running\") return sandbox;\n if (sandbox.state === \"error\" || sandbox.state === \"deleted\") {\n throw new Error(\n `Sandbox ${sandbox.id} entered ${sandbox.state}${sandbox.logs.length ? `: ${sandbox.logs.join(\"\\n\")}` : \"\"}`,\n );\n }\n await sleep(2_000, signal);\n sandbox = await this.#sandboxes.get(sandboxId);\n }\n throw new Error(`Sandbox ${sandboxId} did not become ready before timeout`);\n }\n\n async #executeTool(\n sandboxId: string,\n toolCall: HostedChatToolCall,\n index: number,\n timeoutSeconds: number | undefined,\n emit: (event: OpenPondWorkEvent) => void | Promise<void>,\n ): Promise<HostedChatMessage> {\n const toolCallId = toolCall.id || `work_tool_${index}`;\n const name = toolCall.function?.name;\n if (name !== \"run_command\") {\n return toolMessage(toolCallId, { error: `Unknown tool: ${name ?? \"missing\"}` });\n }\n\n let args: { command?: unknown };\n try {\n args = JSON.parse(toolCall.function?.arguments || \"{}\") as { command?: unknown };\n } catch (error) {\n return toolMessage(toolCallId, { error: `Invalid tool arguments: ${errorMessage(error)}` });\n }\n const command = typeof args.command === \"string\" ? args.command.trim() : \"\";\n if (!command) return toolMessage(toolCallId, { error: \"command is required\" });\n if (command.length > MAX_WORK_COMMAND_CHARS) {\n const output = `command exceeds the ${MAX_WORK_COMMAND_CHARS} character limit`;\n await emit({ type: \"tool\", toolCallId, command, status: \"failed\", output });\n return toolMessage(toolCallId, { status: \"failed\", error: output });\n }\n\n await emit({ type: \"tool\", toolCallId, command, status: \"started\" });\n try {\n const response = await this.#sandboxes.exec(sandboxId, {\n command,\n timeoutSeconds: boundedInteger(timeoutSeconds, 1, 900, 180),\n });\n const output = truncate(response.command.output, MAX_TOOL_OUTPUT_CHARS);\n const status = response.command.status === \"succeeded\" ? \"succeeded\" : \"failed\";\n await emit({\n type: \"tool\",\n toolCallId,\n command,\n status,\n output,\n exitCode: response.command.exitCode,\n });\n return toolMessage(toolCallId, {\n status: response.command.status,\n exitCode: response.command.exitCode,\n output,\n });\n } catch (error) {\n if (error instanceof OpenPondApiError) throw error;\n const output = errorMessage(error);\n await emit({ type: \"tool\", toolCallId, command, status: \"failed\", output });\n return toolMessage(toolCallId, { status: \"failed\", error: output });\n }\n }\n}\n\nconst WORK_TOOLS: HostedChatTool[] = [\n {\n type: \"function\",\n function: {\n name: \"run_command\",\n description:\n \"Run a shell command inside the persistent OpenPond sandbox. Use standard shell tools to inspect, edit, build, and test files. Commands start in the repository workspace.\",\n parameters: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n command: {\n type: \"string\",\n minLength: 1,\n maxLength: MAX_WORK_COMMAND_CHARS,\n description: \"Shell command to execute.\",\n },\n },\n required: [\"command\"],\n },\n },\n },\n];\n\nfunction systemPrompt(sandboxId: string, hasInputs: boolean): string {\n return [\n \"You are OpenPond Work, a careful coding agent operating in an isolated Linux sandbox.\",\n `The active sandbox is ${sandboxId}.`,\n ...(hasInputs\n ? [\n `The authoritative saved files for this turn are staged under /workspace/${WORK_INPUT_DIRECTORY}; their manifest is /workspace/${WORK_INPUT_MANIFEST}.`,\n \"Before revising a previous output, read its staged file and manifest. Copy the staged input into the output directory before editing it; previous output paths may not exist in this sandbox.\",\n \"Preserve the actual file bytes. Never reconstruct a saved file from the conversation or claim to have preserved it without reading the staged input.\",\n ]\n : []),\n \"Use run_command to inspect the workspace, edit files, and validate your work.\",\n `Place completed user-facing files in ${WORK_OUTPUT_DIRECTORY}. The runtime collects new and revised files there automatically when the turn completes.`,\n \"Do the requested work completely. Preserve existing user changes and avoid destructive commands.\",\n \"Keep the user informed with concise prose, but call tools whenever verification or file changes are needed.\",\n \"Before finishing, run relevant tests and summarize the concrete result.\",\n ].join(\"\\n\");\n}\n\nfunction initialLifecycle(\n cleanupPolicy: OpenPondWorkCleanup,\n): OpenPondWorkLifecycle {\n return {\n cleanupPolicy,\n persistence: {\n status: \"not_requested\",\n outputCount: 0,\n persistedCount: 0,\n },\n cleanup: { status: \"not_requested\" },\n };\n}\n\nfunction lazyOutputDownload(\n sandboxes: WorkSandbox,\n sandboxId: string,\n output: OpenPondWorkOutput,\n): () => Promise<SandboxFileDownloadResponse> {\n let pending: Promise<SandboxFileDownloadResponse> | null = null;\n return () => {\n pending ??= sandboxes\n .downloadFileResponse(sandboxId, {\n path: output.path,\n maxBytes: Math.max(1, output.sizeBytes),\n })\n .then((response) => {\n const decodedBytes = Buffer.byteLength(\n response.file.contentsBase64,\n \"base64\",\n );\n if (\n response.file.truncated ||\n response.file.returnedBytes !== response.file.totalSizeBytes ||\n decodedBytes !== output.sizeBytes\n ) {\n throw new Error(`Output download was incomplete for ${output.name}`);\n }\n return response;\n });\n return pending;\n };\n}\n\nfunction uniqueInputName(\n input: OpenPondWorkInputFile,\n index: number,\n usedNames: Set<string>,\n): string {\n const safeId = input.id.replace(/[^a-zA-Z0-9._-]+/g, \"-\").slice(0, 80) || `input-${index + 1}`;\n const safeName = input.name.replace(/[^a-zA-Z0-9._-]+/g, \"-\").slice(-120) || \"file\";\n const base = `${safeId}-${safeName}`;\n let candidate = base;\n let collision = 1;\n while (usedNames.has(candidate)) {\n collision += 1;\n candidate = `${base}-${collision}`;\n }\n usedNames.add(candidate);\n return candidate;\n}\n\nfunction attachWorkFailure(\n error: unknown,\n lifecycle: OpenPondWorkLifecycle,\n finalizationError?: unknown,\n): void {\n if (!error || typeof error !== \"object\") return;\n Object.assign(error, {\n workLifecycle: lifecycle,\n ...(finalizationError\n ? { workFinalizationError: errorMessage(finalizationError) }\n : {}),\n });\n}\n\nfunction outputSignatures(files: SandboxFileEntry[]): Map<string, string> {\n return new Map(files.map((file) => [file.path, outputSignature(file)]));\n}\n\nfunction outputSignature(file: SandboxFileEntry): string {\n return `${file.sizeBytes}:${file.updatedAt}`;\n}\n\nfunction workOutputFromFile(file: SandboxFileEntry): OpenPondWorkOutput {\n const name = normalizedOutputPath(file.path).split(\"/\").at(-1) || file.path;\n const mimeType = workOutputMimeType(name);\n return {\n path: file.path,\n name,\n mimeType,\n sizeBytes: file.sizeBytes,\n updatedAt: file.updatedAt,\n isBinary: file.isBinary ?? null,\n previewable:\n file.previewable ??\n (mimeType.startsWith(\"image/\") ||\n mimeType === \"application/pdf\" ||\n mimeType.startsWith(\"text/\")),\n };\n}\n\nfunction normalizedOutputPath(value: string): string {\n return value.replaceAll(\"\\\\\", \"/\");\n}\n\nfunction workOutputMimeType(name: string): string {\n const extension = name.toLowerCase().match(/\\.[^.]+$/)?.[0] ?? \"\";\n return WORK_OUTPUT_MIME_TYPES[extension] ?? \"application/octet-stream\";\n}\n\nconst WORK_OUTPUT_MIME_TYPES: Readonly<Record<string, string>> = Object.freeze({\n \".avif\": \"image/avif\",\n \".csv\": \"text/csv\",\n \".docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".gif\": \"image/gif\",\n \".html\": \"text/html\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".json\": \"application/json\",\n \".m4a\": \"audio/mp4\",\n \".md\": \"text/markdown\",\n \".mov\": \"video/quicktime\",\n \".mp3\": \"audio/mpeg\",\n \".mp4\": \"video/mp4\",\n \".pdf\": \"application/pdf\",\n \".png\": \"image/png\",\n \".pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".svg\": \"image/svg+xml\",\n \".tsv\": \"text/tab-separated-values\",\n \".txt\": \"text/plain\",\n \".wav\": \"audio/wav\",\n \".webm\": \"video/webm\",\n \".webp\": \"image/webp\",\n \".xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n});\n\nfunction toolMessage(toolCallId: string, payload: Record<string, unknown>): HostedChatMessage {\n return { role: \"tool\", tool_call_id: toolCallId, content: JSON.stringify(payload) };\n}\n\nfunction boundedInteger(\n value: number | undefined,\n minimum: number,\n maximum: number,\n fallback: number,\n): number {\n if (!Number.isFinite(value)) return fallback;\n return Math.min(maximum, Math.max(minimum, Math.floor(value!)));\n}\n\nfunction truncate(value: string, maximum: number): string {\n if (value.length <= maximum) return value;\n return `${value.slice(0, maximum)}\\n\u2026 output truncated by openpond-sdk`;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction sleep(milliseconds: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n const timer = setTimeout(resolve, milliseconds);\n timer.unref?.();\n signal?.addEventListener(\n \"abort\",\n () => {\n clearTimeout(timer);\n reject(signal.reason);\n },\n { once: true },\n );\n });\n}\n", "export const SANDBOX_RUNTIME_PROFILE_IDS = [\n \"openpond-generic-v1\",\n \"openpond-work-v1\",\n \"openpond-coding-core-v1\",\n \"openpond-agent-harness-v1\",\n] as const;\n\nexport type SandboxRuntimeProfileId =\n (typeof SANDBOX_RUNTIME_PROFILE_IDS)[number];\n\nexport type SandboxRuntimeProfileCapability =\n | \"files\"\n | \"exec\"\n | \"processes\"\n | \"pty\"\n | \"ports\"\n | \"preview\"\n | \"git\"\n | \"coding_task\";\n\nexport type SandboxRuntimeProfile = {\n id: SandboxRuntimeProfileId;\n label: string;\n description: string;\n version: number;\n workspaceRoot: string;\n defaultExecutionProfileId: string;\n requiredTools: string[];\n excludedToolchains: string[];\n capabilities: SandboxRuntimeProfileCapability[];\n};\n\nexport type SandboxRuntimeProfileSummary = Omit<\n SandboxRuntimeProfile,\n \"description\"\n>;\n", "import {\n createOpenPondSandboxClient,\n type OpenPondSandboxClient,\n} from \"@openpond/cloud/sandbox/client\";\nimport { resolveOpChatApiBaseUrl } from \"@openpond/cloud/hosted-chat\";\n\nimport { OpenPondWorkClient } from \"./work.js\";\nimport { OpenPondProjectActionsClient } from \"./project-actions.js\";\nimport { OpenPondProfileActionsClient } from \"./profile-actions.js\";\nimport { OpenPondWorkflowsClient } from \"./workflows.js\";\nimport type { OpenPondClientOptions } from \"./types.js\";\nimport { OpenPondLearningClient } from \"./learning-client.js\";\nimport { configuredEndpoint, configuredKey } from \"./work-sandbox.js\";\n\nexport class OpenPondClient {\n readonly sandboxes: OpenPondSandboxClient;\n readonly work: OpenPondWorkClient;\n readonly workflows: OpenPondWorkflowsClient;\n readonly actions: OpenPondProjectActionsClient;\n readonly profileActions: OpenPondProfileActionsClient;\n readonly learning: (scope: string) => OpenPondLearningClient;\n\n constructor(options: OpenPondClientOptions) {\n const apiKey = options.apiKey?.trim() ?? \"\";\n if (!apiKey && (!options.sandbox || !options.model))\n throw new Error(\"OpenPond API key is required when using a default sandbox or model\");\n const sandbox = options.sandbox ? {\n ...options.sandbox,\n endpoint: configuredEndpoint(options.sandbox.endpoint, \"Sandbox endpoint\"),\n apiKey: configuredKey(options.sandbox.apiKey, \"Sandbox API key\"),\n } : undefined;\n const model = options.model ? {\n endpoint: configuredEndpoint(options.model.endpoint, \"Model endpoint\"),\n apiKey: configuredKey(options.model.apiKey, \"Model API key\"),\n model: configuredKey(options.model.model, \"Model ID\"),\n } : undefined;\n\n const apiBaseUrl = options.baseUrl?.trim() || \"https://api.openpond.ai\";\n this.learning = (scope) => new OpenPondLearningClient({ apiKey, baseUrl: apiBaseUrl, scope });\n this.sandboxes = createOpenPondSandboxClient({\n apiKey: sandbox?.apiKey ?? apiKey,\n baseUrl: apiBaseUrl,\n sandboxApiUrl: sandbox?.endpoint ?? options.sandboxApiUrl,\n customEndpoint: Boolean(sandbox),\n });\n this.work = new OpenPondWorkClient({\n apiKey: model?.apiKey ?? apiKey,\n apiBaseUrl,\n chatApiBaseUrl:\n model?.endpoint || options.chatApiUrl?.trim() ||\n resolveOpChatApiBaseUrl({ apiBaseUrl, env: {} }),\n sandboxes: this.sandboxes,\n sandboxConfig: sandbox,\n defaultModel: model?.model,\n customModel: Boolean(model),\n });\n this.workflows = new OpenPondWorkflowsClient({ apiKey, apiBaseUrl });\n this.actions = new OpenPondProjectActionsClient({ apiKey, apiBaseUrl });\n this.profileActions = new OpenPondProfileActionsClient({ apiKey, apiBaseUrl });\n }\n}\n\nexport function createOpenPondClient(options: OpenPondClientOptions): OpenPondClient {\n return new OpenPondClient(options);\n}\n\nexport type { OpenPondClientOptions } from \"./types.js\";\nexport { OpenPondWorkClient } from \"./work.js\";\nexport { OpenPondWorkflowsClient } from \"./workflows.js\";\nexport { OpenPondProjectActionsClient } from \"./project-actions.js\";\nexport { OpenPondProfileActionsClient } from \"./profile-actions.js\";\nexport type {\n HostedProjectActionCatalog,\n ProjectActionInvocation,\n ProjectActionRelease,\n} from \"./project-actions.js\";\nexport type {\n OpenPondProfileActionCatalog,\n OpenPondProfileActionCatalogEntry,\n OpenPondProfileActionInvocation,\n OpenPondProfileActionSetupRequirement,\n} from \"./profile-actions.js\";\nexport { OpenPondApiError } from \"@openpond/cloud/api/core\";\nexport type {\n OpenPondWorkEvent,\n OpenPondWorkCleanup,\n OpenPondWorkHistoryMessage,\n OpenPondWorkInputFile,\n OpenPondWorkLifecycle,\n OpenPondWorkOutput,\n OpenPondWorkOutputPersistenceContext,\n OpenPondWorkRunInput,\n OpenPondWorkRunResult,\n} from \"./work.js\";\nexport type {\n OpenPondWorkflowCatalog,\n OpenPondWorkflowCreateInput,\n OpenPondWorkflowCreateResult,\n OpenPondWorkflowDefinition,\n OpenPondWorkflowDeleteResult,\n OpenPondWorkflowRecurrence,\n OpenPondWorkflowRequestOptions,\n OpenPondWorkflowRun,\n OpenPondWorkflowRunNowResult,\n OpenPondWorkflowSchedule,\n OpenPondWorkflowUpdateInput,\n OpenPondWorkflowUpdateResult,\n OpenPondWorkflowWeekday,\n} from \"./workflows.js\";\nexport * from \"./refiner.js\";\nexport { OpenPondLearningClient, OpenPondLearningError } from \"./learning-client.js\";\nexport type { OpenPondLearningClientOptions, LearningRequestOptions } from \"./learning-client.js\";\n\nexport * from \"@openpond/cloud/sandbox/client\";\nexport * from \"@openpond/cloud/sandbox/types\";\nexport {\n getOpChatModel,\n getOpChatProvider,\n listOpChatModels,\n listOpChatProviders,\n resolveOpChatApiBaseUrl,\n sendHostedChatTurn,\n streamHostedChatTurn,\n} from \"@openpond/cloud/hosted-chat\";\nexport type {\n HostedChatCompletion,\n HostedChatMessage,\n HostedChatStreamDelta,\n HostedChatTool,\n HostedChatToolCall,\n HostedChatUsage,\n HostedModel,\n HostedModelsResponse,\n HostedProvider,\n HostedProvidersResponse,\n} from \"@openpond/cloud/hosted-chat\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["sleep"]
|
|
7
7
|
}
|