openpond-sdk 0.0.1
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/LICENSE +21 -0
- package/README.md +127 -0
- package/dist/index.js +2635 -0
- package/dist/index.js.map +7 -0
- package/dist/types/packages/cloud/src/api/core.d.ts +23 -0
- package/dist/types/packages/cloud/src/api/core.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/api/vercel-protection.d.ts +2 -0
- package/dist/types/packages/cloud/src/api/vercel-protection.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/hosted-chat.d.ts +163 -0
- package/dist/types/packages/cloud/src/hosted-chat.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/async-request-options.d.ts +3 -0
- package/dist/types/packages/cloud/src/sandbox/async-request-options.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/client-handles.d.ts +101 -0
- package/dist/types/packages/cloud/src/sandbox/client-handles.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/client.d.ts +327 -0
- package/dist/types/packages/cloud/src/sandbox/client.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/runtime-handle.d.ts +37 -0
- package/dist/types/packages/cloud/src/sandbox/runtime-handle.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts +73 -0
- package/dist/types/packages/cloud/src/sandbox/sandbox-instance-client.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/smoke.d.ts +4 -0
- package/dist/types/packages/cloud/src/sandbox/smoke.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/stream.d.ts +8 -0
- package/dist/types/packages/cloud/src/sandbox/stream.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts +177 -0
- package/dist/types/packages/cloud/src/sandbox/types/billing.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/client.d.ts +104 -0
- package/dist/types/packages/cloud/src/sandbox/types/client.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/core.d.ts +141 -0
- package/dist/types/packages/cloud/src/sandbox/types/core.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/index.d.ts +15 -0
- package/dist/types/packages/cloud/src/sandbox/types/index.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/io.d.ts +241 -0
- package/dist/types/packages/cloud/src/sandbox/types/io.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/microsoft-teams-bot.d.ts +52 -0
- package/dist/types/packages/cloud/src/sandbox/types/microsoft-teams-bot.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/org-project-agent.d.ts +524 -0
- package/dist/types/packages/cloud/src/sandbox/types/org-project-agent.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/record.d.ts +54 -0
- package/dist/types/packages/cloud/src/sandbox/types/record.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/responses.d.ts +296 -0
- package/dist/types/packages/cloud/src/sandbox/types/responses.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime-environments.d.ts +3 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime-environments.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime-profiles.d.ts +16 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime-profiles.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime.d.ts +153 -0
- package/dist/types/packages/cloud/src/sandbox/types/runtime.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/schedules.d.ts +142 -0
- package/dist/types/packages/cloud/src/sandbox/types/schedules.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/snapshots.d.ts +206 -0
- package/dist/types/packages/cloud/src/sandbox/types/snapshots.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/workflow-modes.d.ts +2 -0
- package/dist/types/packages/cloud/src/sandbox/types/workflow-modes.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/types/workload-sources.d.ts +21 -0
- package/dist/types/packages/cloud/src/sandbox/types/workload-sources.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/sandbox/url.d.ts +3 -0
- package/dist/types/packages/cloud/src/sandbox/url.d.ts.map +1 -0
- package/dist/types/packages/cloud/src/urls.d.ts +5 -0
- package/dist/types/packages/cloud/src/urls.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/index.d.ts +17 -0
- package/dist/types/packages/sdk/src/index.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/types.d.ts +11 -0
- package/dist/types/packages/sdk/src/types.d.ts.map +1 -0
- package/dist/types/packages/sdk/src/work.d.ts +71 -0
- package/dist/types/packages/sdk/src/work.d.ts.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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/api/vercel-protection.ts", "../../cloud/src/api/core.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.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 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 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 expectedRuntimeDriver =\n options.expectedRuntimeDriver ?? \"remote-firecracker\";\n if (sandbox.runtimeDriver !== expectedRuntimeDriver) {\n throw new Error(\n `expected ${expectedRuntimeDriver}, got ${sandbox.runtimeDriver}`\n );\n }\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", "const VERCEL_PROTECTION_BYPASS_HEADER = \"x-vercel-protection-bypass\";\n\nexport function withVercelProtectionBypass(\n requestUrl: string,\n inputHeaders?: HeadersInit,\n env: Record<string, string | undefined> =\n typeof process === \"undefined\" ? {} : process.env,\n): Headers {\n const headers = new Headers(inputHeaders);\n const secret = env.VERCEL_AUTOMATION_BYPASS_SECRET?.trim();\n if (!secret || !isOpenPondStagingUrl(requestUrl)) return headers;\n headers.set(VERCEL_PROTECTION_BYPASS_HEADER, secret);\n return headers;\n}\n\nfunction isOpenPondStagingUrl(requestUrl: string): boolean {\n try {\n const hostname = new URL(requestUrl).hostname.toLowerCase();\n return (\n hostname === \"staging.openpond.ai\" ||\n hostname === \"staging-api.openpond.ai\" ||\n hostname.endsWith(\".staging-api.openpond.ai\")\n );\n } catch {\n return false;\n }\n}\n", "import { withVercelProtectionBypass } from \"./vercel-protection.js\";\n\nconst DEFAULT_API_TIMEOUT_MS = 30_000;\nconst DEFAULT_API_RESPONSE_BYTES = 8 * 1024 * 1024;\nexport const LONG_STREAM_API_OPTIONS = { timeoutMs: 15 * 60 * 1000, maxResponseBytes: 64 * 1024 * 1024 } as const;\n\nexport type ApiFetchOptions = RequestInit & {\n timeoutMs?: number;\n maxResponseBytes?: number;\n};\n\nexport class ApiTimeoutError extends Error {\n readonly code = \"OPENPOND_API_TIMEOUT\";\n\n constructor(readonly timeoutMs: number, readonly requestUrl: string) {\n super(`API request timed out after ${timeoutMs}ms: ${requestUrl}`);\n this.name = \"ApiTimeoutError\";\n }\n}\n\nexport class ApiResponseTooLargeError extends Error {\n readonly code = \"OPENPOND_API_RESPONSE_TOO_LARGE\";\n\n constructor(readonly maximumBytes: number, readonly requestUrl: string) {\n super(`API response exceeded ${maximumBytes} bytes: ${requestUrl}`);\n this.name = \"ApiResponseTooLargeError\";\n }\n}\n\nexport async function apiFetch(\n baseUrl: string,\n token: string | null,\n requestPath: string,\n options: ApiFetchOptions = {},\n): Promise<Response> {\n const { timeoutMs = DEFAULT_API_TIMEOUT_MS, maxResponseBytes = DEFAULT_API_RESPONSE_BYTES, ...init } = options;\n const requestUrl = `${baseUrl}${requestPath}`;\n const headers = withVercelProtectionBypass(requestUrl, init.headers);\n headers.set(\"Content-Type\", \"application/json\");\n const apiKey = process.env.OPENPOND_API_KEY;\n const trimmedToken = token?.trim() || \"\";\n const tokenIsApiKey = trimmedToken.startsWith(\"opk_\");\n const effectiveApiKey = apiKey || (tokenIsApiKey ? trimmedToken : null);\n if (effectiveApiKey && !headers.has(\"openpond-api-key\")) headers.set(\"openpond-api-key\", effectiveApiKey);\n if (token) {\n headers.set(\"Authorization\", tokenIsApiKey ? `ApiKey ${trimmedToken}` : `Bearer ${token}`);\n } else if (apiKey && !headers.has(\"Authorization\")) {\n headers.set(\"Authorization\", `ApiKey ${apiKey}`);\n }\n\n const timeoutController = new AbortController();\n const timeoutError = new ApiTimeoutError(timeoutMs, requestUrl);\n const timer = timeoutMs > 0\n ? setTimeout(() => timeoutController.abort(timeoutError), timeoutMs)\n : null;\n timer?.unref?.();\n const signal = composedSignal(init.signal, timeoutController.signal, timeoutMs);\n const cleanup = () => {\n if (timer) clearTimeout(timer);\n };\n\n try {\n const response = await fetch(requestUrl, { ...init, headers, signal });\n return boundedResponse(response, {\n cleanup,\n maximumBytes: maxResponseBytes,\n requestUrl,\n timeoutController,\n timeoutError,\n });\n } catch (error) {\n cleanup();\n if (timeoutController.signal.aborted) throw timeoutError;\n throw error;\n }\n}\n\nexport async function readApiJson<T>(response: Response, label: string): Promise<T> {\n let payload: T & { error?: unknown; message?: unknown };\n try {\n const text = await response.text();\n payload = (text ? JSON.parse(text) : {}) as T & { error?: unknown; message?: unknown };\n } catch (error) {\n if (error instanceof ApiTimeoutError || error instanceof ApiResponseTooLargeError) throw error;\n payload = {} as T & { error?: unknown; message?: unknown };\n }\n if (!response.ok) {\n const message = typeof payload.message === \"string\"\n ? payload.message\n : typeof payload.error === \"string\"\n ? payload.error\n : \"\";\n throw new Error(`${label} failed: ${response.status}${message ? ` ${message}` : \"\"}`);\n }\n return payload as T;\n}\n\nfunction boundedResponse(\n response: Response,\n input: {\n cleanup: () => void;\n maximumBytes: number;\n requestUrl: string;\n timeoutController: AbortController;\n timeoutError: ApiTimeoutError;\n },\n): Response {\n if (!response.body) {\n input.cleanup();\n return response;\n }\n const contentLength = Number(response.headers.get(\"content-length\"));\n if (input.maximumBytes > 0 && Number.isFinite(contentLength) && contentLength > input.maximumBytes) {\n input.cleanup();\n void response.body.cancel();\n throw new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl);\n }\n\n const reader = response.body.getReader();\n let receivedBytes = 0;\n const body = new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const result = await reader.read();\n if (result.done) {\n input.cleanup();\n controller.close();\n return;\n }\n receivedBytes += result.value.byteLength;\n if (input.maximumBytes > 0 && receivedBytes > input.maximumBytes) {\n input.cleanup();\n await reader.cancel();\n controller.error(new ApiResponseTooLargeError(input.maximumBytes, input.requestUrl));\n return;\n }\n controller.enqueue(result.value);\n } catch (error) {\n input.cleanup();\n controller.error(input.timeoutController.signal.aborted ? input.timeoutError : error);\n }\n },\n async cancel(reason) {\n input.cleanup();\n await reader.cancel(reason);\n },\n });\n return new Response(body, {\n headers: response.headers,\n status: response.status,\n statusText: response.statusText,\n });\n}\n\nfunction composedSignal(\n callerSignal: AbortSignal | null | undefined,\n timeoutSignal: AbortSignal,\n timeoutMs: number,\n): AbortSignal | undefined {\n if (timeoutMs <= 0) return callerSignal ?? undefined;\n return callerSignal ? AbortSignal.any([callerSignal, timeoutSignal]) : timeoutSignal;\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.startsWith(\"api\") && hostname.endsWith(\".openpond.ai\"))\n );\n}\n", "import { apiFetch, readApiJson } 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\n constructor(options: OpenPondSandboxClientOptions) {\n this.apiKey = options.apiKey;\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 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: RequestInit = {}): Promise<T> {\n const response = await apiFetch(\n this.sandboxApiUrl,\n this.apiKey,\n path,\n init\n );\n return readApiJson<T>(response, \"Sandbox request\");\n }\n\n async requestApiRoot<T>(\n path: string,\n init: RequestInit = {}\n ): Promise<T> {\n const response = await apiFetch(this.apiRootUrl, this.apiKey, path, 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 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 return this.requestApiRoot<SandboxProjectResponse>(\"/projects\", {\n method: \"POST\",\n body: JSON.stringify(input),\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 return this.requestApiRoot<SandboxAgentResponse>(\"/agents\", {\n method: \"POST\",\n body: JSON.stringify(input),\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 return this.requestApiRoot<SandboxAgentRunResponse>(\n `/agents/${encodeURIComponent(agentId)}/run`,\n {\n method: \"POST\",\n headers: {\n Prefer: \"respond-async\",\n },\n body: JSON.stringify(input),\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 }\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\";\nimport { withVercelProtectionBypass } from \"./api/vercel-protection.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 HostedChatMessage = {\n role: HostedChatRole;\n content?: string | null;\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};\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 requestUrl: string,\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 withVercelProtectionBypass(requestUrl, 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(requestUrl, 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(requestUrl, 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(requestUrl, 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(requestUrl, 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 requestUrl,\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 requestUrl,\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 {\n sendHostedChatTurn,\n type HostedChatMessage,\n type HostedChatTool,\n type HostedChatToolCall,\n} from \"../../cloud/src/hosted-chat.js\";\nimport type { OpenPondSandboxClient } from \"../../cloud/src/sandbox/client.js\";\nimport type { SandboxRecord } from \"../../cloud/src/sandbox/types/index.js\";\n\nconst DEFAULT_MODEL = \"openpond-chat\";\nconst DEFAULT_MAX_STEPS = 24;\nconst MAX_TOOL_OUTPUT_CHARS = 40_000;\n\nexport class OpenPondNonExecutingSandboxError extends Error {\n readonly code = \"OPENPOND_NON_EXECUTING_SANDBOX\";\n\n constructor(readonly sandboxId: string) {\n super(\n `Sandbox ${sandboxId} accepted a command without executing it. A real remote runner is required for OpenPond Work.`,\n );\n this.name = \"OpenPondNonExecutingSandboxError\";\n }\n}\n\nexport type OpenPondWorkHistoryMessage = {\n role: \"user\" | \"assistant\";\n content: string;\n};\n\nexport type OpenPondWorkEvent =\n | { type: \"status\"; message: string }\n | {\n type: \"sandbox\";\n sandboxId: string;\n state: SandboxRecord[\"state\"];\n runtimeDriver: SandboxRecord[\"runtimeDriver\"];\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: \"done\"; sandboxId: string; text: string; steps: number };\n\nexport type OpenPondWorkRunInput = {\n prompt: 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 /** Test-only escape hatch. Work rejects non-executing simulated sandboxes by default. */\n allowSimulated?: boolean;\n timeoutSeconds?: number;\n signal?: AbortSignal;\n metadata?: Record<string, unknown>;\n onEvent?: (event: OpenPondWorkEvent) => void | Promise<void>;\n};\n\nexport type OpenPondWorkRunResult = {\n sandboxId: string;\n text: string;\n steps: number;\n};\n\ntype WorkClientInput = {\n apiKey: string;\n apiBaseUrl: string;\n chatApiBaseUrl: string;\n sandboxes: OpenPondSandboxClient;\n};\n\nexport class OpenPondWorkClient {\n readonly #apiKey: string;\n readonly #apiBaseUrl: string;\n readonly #chatApiBaseUrl: string;\n readonly #sandboxes: OpenPondSandboxClient;\n\n constructor(input: WorkClientInput) {\n this.#apiKey = input.apiKey;\n this.#apiBaseUrl = input.apiBaseUrl;\n this.#chatApiBaseUrl = input.chatApiBaseUrl;\n this.#sandboxes = input.sandboxes;\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 await emit({ type: \"status\", message: \"Preparing sandbox\" });\n const sandbox = await this.#resolveSandbox(input);\n if (sandbox.runtimeDriver === \"simulated-firecracker\" && !input.allowSimulated) {\n if (!input.sandboxId) {\n await this.#sandboxes.delete(sandbox.id, { async: true }).catch(() => undefined);\n }\n throw new Error(\n \"OpenPond Work requires a remote-firecracker sandbox, but this environment returned the non-executing simulated-firecracker driver.\",\n );\n }\n await emit({\n type: \"sandbox\",\n sandboxId: sandbox.id,\n state: sandbox.state,\n runtimeDriver: sandbox.runtimeDriver,\n });\n const messages: HostedChatMessage[] = [\n { role: \"system\", content: systemPrompt(sandbox.id) },\n ...(input.history ?? []).map((message) => ({ ...message })),\n { role: \"user\", content: prompt },\n ];\n const maxSteps = boundedInteger(input.maxSteps, 1, 100, DEFAULT_MAX_STEPS);\n let finalText = \"\";\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 sendHostedChatTurn({\n apiBaseUrl: this.#chatApiBaseUrl,\n token: this.#apiKey,\n model: input.model?.trim() || DEFAULT_MODEL,\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 });\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 result = { sandboxId: sandbox.id, text: finalText, steps: step };\n await emit({ type: \"done\", ...result });\n return result;\n }\n\n for (const [index, toolCall] of toolCalls.entries()) {\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 }\n\n async deleteSandbox(sandboxId: string): Promise<void> {\n const sandbox = await this.#sandboxes.get(sandboxId);\n if (sandbox.state === \"deleted\") return;\n await this.#sandboxes.delete(sandboxId, { async: true });\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 budgetUsd = input.budgetUsd?.trim() || \"1.00\";\n const created = await this.#sandboxes.create(\n {\n ...(input.repo?.trim() ? { repo: input.repo.trim() } : {}),\n runtimeProfileId: \"openpond-work-v1\",\n resources: { cpu: 2, memoryGb: 4, diskGb: 16 },\n budget: { maxUsd: budgetUsd },\n quotas: {\n maxSpendUsd: budgetUsd,\n maxDurationSeconds: 3600,\n idleTimeoutSeconds: 900,\n maxCommands: 200,\n maxOpenPorts: 4,\n },\n metadata: { source: \"openpond-sdk-work\", ...input.metadata },\n },\n { async: true },\n );\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\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 if (isNonExecutingSandboxOutput(output)) {\n await emit({\n type: \"tool\",\n toolCallId,\n command,\n status: \"failed\",\n output: \"Staging accepted the command but did not execute it.\",\n exitCode: response.command.exitCode,\n });\n await this.#sandboxes.delete(sandboxId, { async: true }).catch(() => undefined);\n throw new OpenPondNonExecutingSandboxError(sandboxId);\n }\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 OpenPondNonExecutingSandboxError) 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: { type: \"string\", description: \"Shell command to execute.\" },\n },\n required: [\"command\"],\n },\n },\n },\n];\n\nfunction systemPrompt(sandboxId: string): string {\n return [\n \"You are OpenPond Work, a careful coding agent operating in a persistent Linux sandbox.\",\n `The active sandbox is ${sandboxId}.`,\n \"Use run_command to inspect the workspace, edit files, and validate your work.\",\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 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 isNonExecutingSandboxOutput(output: string): boolean {\n const normalized = output.toLowerCase();\n return (\n normalized.includes(\"command accepted by simulated-firecracker driver\") ||\n normalized.includes(\"no host command was executed\")\n );\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-firecracker-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 \"../../cloud/src/sandbox/client.js\";\nimport { resolveOpChatApiBaseUrl } from \"../../cloud/src/hosted-chat.js\";\n\nimport { OpenPondWorkClient } from \"./work.js\";\nimport type { OpenPondClientOptions } from \"./types.js\";\n\nexport class OpenPondClient {\n readonly sandboxes: OpenPondSandboxClient;\n readonly work: OpenPondWorkClient;\n\n constructor(options: OpenPondClientOptions) {\n const apiKey = options.apiKey.trim();\n if (!apiKey) throw new Error(\"OpenPond API key is required\");\n\n const apiBaseUrl = options.baseUrl?.trim() || \"https://api.openpond.ai\";\n this.sandboxes = createOpenPondSandboxClient({\n apiKey,\n baseUrl: apiBaseUrl,\n sandboxApiUrl: options.sandboxApiUrl,\n });\n this.work = new OpenPondWorkClient({\n apiKey,\n apiBaseUrl,\n chatApiBaseUrl:\n options.chatApiUrl?.trim() ||\n resolveOpChatApiBaseUrl({ apiBaseUrl, env: {} }),\n sandboxes: this.sandboxes,\n });\n }\n}\n\nexport function createOpenPondClient(options: OpenPondClientOptions): OpenPondClient {\n return new OpenPondClient(options);\n}\n\nexport type { OpenPondClientOptions } from \"./types.js\";\nexport { OpenPondNonExecutingSandboxError, OpenPondWorkClient } from \"./work.js\";\nexport type {\n OpenPondWorkEvent,\n OpenPondWorkHistoryMessage,\n OpenPondWorkRunInput,\n OpenPondWorkRunResult,\n} from \"./work.js\";\n\nexport * from \"../../cloud/src/sandbox/client.js\";\nexport * from \"../../cloud/src/sandbox/types/index.js\";\nexport {\n getOpChatModel,\n getOpChatProvider,\n listOpChatModels,\n listOpChatProviders,\n resolveOpChatApiBaseUrl,\n sendHostedChatTurn,\n streamHostedChatTurn,\n} from \"../../cloud/src/hosted-chat.js\";\nexport type {\n HostedChatCompletion,\n HostedChatMessage,\n HostedChatStreamDelta,\n HostedChatTool,\n HostedChatToolCall,\n HostedChatUsage,\n HostedModel,\n HostedModelsResponse,\n HostedProvider,\n HostedProvidersResponse,\n} from \"../../cloud/src/hosted-chat.js\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["sleep"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const LONG_STREAM_API_OPTIONS: {
|
|
2
|
+
readonly timeoutMs: number;
|
|
3
|
+
readonly maxResponseBytes: number;
|
|
4
|
+
};
|
|
5
|
+
export type ApiFetchOptions = RequestInit & {
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
maxResponseBytes?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare class ApiTimeoutError extends Error {
|
|
10
|
+
readonly timeoutMs: number;
|
|
11
|
+
readonly requestUrl: string;
|
|
12
|
+
readonly code = "OPENPOND_API_TIMEOUT";
|
|
13
|
+
constructor(timeoutMs: number, requestUrl: string);
|
|
14
|
+
}
|
|
15
|
+
export declare class ApiResponseTooLargeError extends Error {
|
|
16
|
+
readonly maximumBytes: number;
|
|
17
|
+
readonly requestUrl: string;
|
|
18
|
+
readonly code = "OPENPOND_API_RESPONSE_TOO_LARGE";
|
|
19
|
+
constructor(maximumBytes: number, requestUrl: string);
|
|
20
|
+
}
|
|
21
|
+
export declare function apiFetch(baseUrl: string, token: string | null, requestPath: string, options?: ApiFetchOptions): Promise<Response>;
|
|
22
|
+
export declare function readApiJson<T>(response: Response, label: string): Promise<T>;
|
|
23
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../cloud/src/api/core.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB;;;CAA6E,CAAC;AAElH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IAG5B,QAAQ,CAAC,SAAS,EAAE,MAAM;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAFnE,QAAQ,CAAC,IAAI,0BAA0B;gBAElB,SAAS,EAAE,MAAM,EAAW,UAAU,EAAE,MAAM;CAIpE;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IAGrC,QAAQ,CAAC,YAAY,EAAE,MAAM;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAFtE,QAAQ,CAAC,IAAI,qCAAqC;gBAE7B,YAAY,EAAE,MAAM,EAAW,UAAU,EAAE,MAAM;CAIvE;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAyCnB;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAkBlF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-protection.d.ts","sourceRoot":"","sources":["../../../../../../../cloud/src/api/vercel-protection.ts"],"names":[],"mappings":"AAEA,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,WAAW,EAC1B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CACa,GAClD,OAAO,CAMT"}
|