From be989bae87c3260c29b15b81d73a64b21193fff3 Mon Sep 17 00:00:00 2001 From: iamjr15 Date: Thu, 13 Aug 2026 03:28:52 +0530 Subject: [PATCH] perf(agent): remove redundant sandbox warmup Publish project creation immediately after the database commit. Treat the workspace directory operation as the readiness boundary instead of running a second synthetic Python probe. --- apps/agent-worker/README.md | 4 ++++ .../durable-objects/agent-run-app-builder.ts | 19 ++----------------- .../src/durable-objects/agent-run-path.ts | 3 +-- .../durable-objects/agent-run-workspace.ts | 2 +- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/apps/agent-worker/README.md b/apps/agent-worker/README.md index b653de47..f7ecec8e 100644 --- a/apps/agent-worker/README.md +++ b/apps/agent-worker/README.md @@ -105,6 +105,10 @@ the Daytona adapter normalizes the provider's structured `503` response to an in then the lifecycle verifies the active-run lease and canonical volume mount before replacing the stopped container on the same isolated workspace-volume subpath. This preserves user files while avoiding an indefinite dependency on one unhealthy runner. +Project materialization publishes its durable project-created event immediately after the database +commit, before waiting on Daytona workspace preparation. The workspace directory operation is +itself the sandbox readiness boundary; app-builder preparation does not issue a second synthetic +code-execution probe after that operation succeeds. Provider output-length termination is nonterminal: the Workflow checkpoints the partial model turn, adds an internal continuation message, and resumes from that durable state. A tool-free turn completes the run only when the model reports an actual stop; content filtering, provider errors, and invalid diff --git a/apps/agent-worker/src/durable-objects/agent-run-app-builder.ts b/apps/agent-worker/src/durable-objects/agent-run-app-builder.ts index 835f0561..45d36941 100644 --- a/apps/agent-worker/src/durable-objects/agent-run-app-builder.ts +++ b/apps/agent-worker/src/durable-objects/agent-run-app-builder.ts @@ -29,8 +29,8 @@ import { projectLocalSourceDir, } from "./project-sandbox-package-runtime"; -export type ProjectSandboxStub = CodeRuntimeContext["sandbox"]; -export type AgentRunLogger = ReturnType; +type ProjectSandboxStub = CodeRuntimeContext["sandbox"]; +type AgentRunLogger = ReturnType; interface AgentRunAppBuilderEnv extends AnalyticsBindings { HYPERDRIVE: Hyperdrive; @@ -491,21 +491,6 @@ function repoImportError(message: string): APIError { }); } -export async function warmSandbox( - sandbox: ProjectSandboxStub, - logger: AgentRunLogger, -): Promise { - const result = await sandbox.runCode({ - code: "print('ready')", - language: "python", - }); - const stdout = result.stdout; - logger.info("sandbox_warmed", { - success: result.success, - stdoutBytes: stdout.length, - }); -} - async function startExpoDevServer( sandbox: ProjectSandboxStub, logger: AgentRunLogger, diff --git a/apps/agent-worker/src/durable-objects/agent-run-path.ts b/apps/agent-worker/src/durable-objects/agent-run-path.ts index bea8ac87..df9962b7 100644 --- a/apps/agent-worker/src/durable-objects/agent-run-path.ts +++ b/apps/agent-worker/src/durable-objects/agent-run-path.ts @@ -1,7 +1,7 @@ import type { createLogger } from "@cheatcode/observability"; import type { CodeRuntimeContext, WorkspaceResolver } from "@cheatcode/sandbox-contracts"; import type { UIMessageChunk } from "ai"; -import { runAppBuilder, warmSandbox } from "./agent-run-app-builder"; +import { runAppBuilder } from "./agent-run-app-builder"; import type { AgentRunEnv } from "./agent-run-env"; import type { StartRunInput } from "./agent-run-schemas"; @@ -43,7 +43,6 @@ export async function prepareAppBuilderRun( options.input.projectMode = appBuilderMode; await options.workspaceResolver(); const boundOptions = { ...options, input: requireProjectBinding(options.input) }; - await warmSandbox(boundOptions.sandbox, boundOptions.logger); if (boundOptions.isCanceled()) { return { options: boundOptions, usesManagedPreview: false, waitsForGeneratedPreview: false }; } diff --git a/apps/agent-worker/src/durable-objects/agent-run-workspace.ts b/apps/agent-worker/src/durable-objects/agent-run-workspace.ts index 630c7589..786fe147 100644 --- a/apps/agent-worker/src/durable-objects/agent-run-workspace.ts +++ b/apps/agent-worker/src/durable-objects/agent-run-workspace.ts @@ -56,13 +56,13 @@ async function resolveWorkspace(input: WorkspaceResolverInput): Promise