Summary
Remove the pi-embedded execution engine — OpenClaw's original in-process AI execution mechanism. All tools and sandbox infrastructure depending on this engine have already been removed in prior PRs (#64, #67, #69, #71, #73). The engine itself is now dead code: nothing calls runEmbeddedPiAgent() productively. All AI execution is routed through the CLI agent subprocess architecture (ChannelBridge → CLI runtimes).
Scope
Files to DELETE (~127 files)
src/agents/pi-embedded-runner/ (~55 files)
The complete execution engine directory:
run.ts — main entry point (runEmbeddedPiAgent())
run/attempt.ts — single execution attempt orchestration
run/params.ts — 104-property parameter type
types.ts — EmbeddedPiRunResult, EmbeddedPiRunMeta definitions
compact.ts — session compaction logic
model.ts — model resolution
system-prompt.ts — system prompt handling
logger.ts, history.ts, lanes.ts, sandbox-info.ts, extensions.ts
tool-result-truncation.ts — tool result handling
- ~20 test files
Root-level src/agents/pi-embedded-*.ts (~72 files)
All pi-embedded module files at the agents root level:
pi-embedded.ts — public API re-exports
pi-embedded-runner.ts — runner interface re-export
pi-embedded-subscribe.ts — event subscription system
pi-embedded-helpers.ts — error handling, sanitization utilities
pi-embedded-payloads.ts — result payload formatting
pi-embedded-messaging.ts — tool messaging utilities
pi-embedded-utils.ts — general utilities
pi-embedded-block-chunker.ts — output chunking
- ~54 test files
Files to MODIFY (~30 files)
These files import or reference EmbeddedPiRunResult or runEmbeddedPiAgent and need those references removed:
src/auto-reply/ (~21 files)
reply/agent-runner-execution.ts — core integration: uses mapToEmbeddedPiRunResult() to bridge ChannelBridge results back to legacy type; remove the mapping, use AgentDeliveryResult directly
- Test harnesses, mock result builders, directive behavior tests — update or delete mock pi-embedded results
src/cron/ (~5 files)
isolated-agent/run.ts — core integration: maps AgentDeliveryResult → EmbeddedPiRunResult; remove mapping
- Test setup, mocks, test helpers — update or delete
src/commands/ (~4 files)
agent.ts — orchestrates agent command lifecycle; uses runWithModelFallback() wrapping runEmbeddedPiAgent(); rewire to use ChannelBridge directly
agent/delivery.ts, agent/session-store.ts — type annotations referencing EmbeddedPiRunResult
models/list.probe.ts — model probing via pi-embedded
Other
src/hooks/llm-slug-generator.ts — directly calls runEmbeddedPiAgent() for slug generation
src/extensionAPI.ts — re-exports pi-embedded types
Key Type Removal: EmbeddedPiRunResult
Defined in: src/agents/pi-embedded-runner/types.ts
Structure (what consumers depend on):
type EmbeddedPiRunResult = {
payloads?: Array<{ text?, mediaUrl?, mediaUrls?, replyToId?, isError? }>;
meta: EmbeddedPiRunMeta; // duration, usage, errors, stop reason
didSendViaMessagingTool?: boolean;
messagingToolSentTexts?: string[];
messagingToolSentMediaUrls?: string[];
messagingToolSentTargets?: MessagingToolSend[];
successfulCronAdds?: number;
};
41 references across the codebase. After deleting the pi-embedded directories, the remaining references in auto-reply, cron, and commands must be rewritten to use the ChannelBridge's AgentDeliveryResult type instead.
Approach
- Delete all files in
src/agents/pi-embedded-runner/ — the complete execution engine
- Delete all
src/agents/pi-embedded-*.ts files — root-level modules and tests
- Rewire auto-reply: Remove
mapToEmbeddedPiRunResult() bridge; consume AgentDeliveryResult from ChannelBridge directly. Update test mocks.
- Rewire cron: Same pattern — remove EmbeddedPiRunResult mapping, use AgentDeliveryResult
- Rewire commands/agent.ts: Replace
runWithModelFallback() → runEmbeddedPiAgent() chain with direct ChannelBridge invocation. Update delivery.ts and session-store.ts types.
- Remove hooks/llm-slug-generator.ts pi-embedded usage or rewire to use ChannelBridge
- Clean extensionAPI.ts — remove pi-embedded re-exports
- Verify:
pnpm build passes, grep confirms zero remaining EmbeddedPiRunResult / runEmbeddedPiAgent / pi-embedded imports
Verification Criteria
Context
The pi-embedded execution engine was OpenClaw's mechanism for running AI agents in-process using provider SDKs directly. RemoteClaw replaces this with CLI agent subprocesses (Claude Code, Gemini CLI, Codex CLI, OpenCode) orchestrated via the ChannelBridge middleware. The middleware layer is fully operational — this PR removes the now-dead legacy engine.
Summary
Remove the pi-embedded execution engine — OpenClaw's original in-process AI execution mechanism. All tools and sandbox infrastructure depending on this engine have already been removed in prior PRs (#64, #67, #69, #71, #73). The engine itself is now dead code: nothing calls
runEmbeddedPiAgent()productively. All AI execution is routed through the CLI agent subprocess architecture (ChannelBridge → CLI runtimes).Scope
Files to DELETE (~127 files)
src/agents/pi-embedded-runner/(~55 files)The complete execution engine directory:
run.ts— main entry point (runEmbeddedPiAgent())run/attempt.ts— single execution attempt orchestrationrun/params.ts— 104-property parameter typetypes.ts—EmbeddedPiRunResult,EmbeddedPiRunMetadefinitionscompact.ts— session compaction logicmodel.ts— model resolutionsystem-prompt.ts— system prompt handlinglogger.ts,history.ts,lanes.ts,sandbox-info.ts,extensions.tstool-result-truncation.ts— tool result handlingRoot-level
src/agents/pi-embedded-*.ts(~72 files)All pi-embedded module files at the agents root level:
pi-embedded.ts— public API re-exportspi-embedded-runner.ts— runner interface re-exportpi-embedded-subscribe.ts— event subscription systempi-embedded-helpers.ts— error handling, sanitization utilitiespi-embedded-payloads.ts— result payload formattingpi-embedded-messaging.ts— tool messaging utilitiespi-embedded-utils.ts— general utilitiespi-embedded-block-chunker.ts— output chunkingFiles to MODIFY (~30 files)
These files import or reference
EmbeddedPiRunResultorrunEmbeddedPiAgentand need those references removed:src/auto-reply/(~21 files)reply/agent-runner-execution.ts— core integration: usesmapToEmbeddedPiRunResult()to bridge ChannelBridge results back to legacy type; remove the mapping, useAgentDeliveryResultdirectlysrc/cron/(~5 files)isolated-agent/run.ts— core integration: mapsAgentDeliveryResult→EmbeddedPiRunResult; remove mappingsrc/commands/(~4 files)agent.ts— orchestrates agent command lifecycle; usesrunWithModelFallback()wrappingrunEmbeddedPiAgent(); rewire to use ChannelBridge directlyagent/delivery.ts,agent/session-store.ts— type annotations referencingEmbeddedPiRunResultmodels/list.probe.ts— model probing via pi-embeddedOther
src/hooks/llm-slug-generator.ts— directly callsrunEmbeddedPiAgent()for slug generationsrc/extensionAPI.ts— re-exports pi-embedded typesKey Type Removal:
EmbeddedPiRunResultDefined in:
src/agents/pi-embedded-runner/types.tsStructure (what consumers depend on):
41 references across the codebase. After deleting the pi-embedded directories, the remaining references in auto-reply, cron, and commands must be rewritten to use the ChannelBridge's
AgentDeliveryResulttype instead.Approach
src/agents/pi-embedded-runner/— the complete execution enginesrc/agents/pi-embedded-*.tsfiles — root-level modules and testsmapToEmbeddedPiRunResult()bridge; consumeAgentDeliveryResultfrom ChannelBridge directly. Update test mocks.runWithModelFallback()→runEmbeddedPiAgent()chain with direct ChannelBridge invocation. Update delivery.ts and session-store.ts types.pnpm buildpasses, grep confirms zero remainingEmbeddedPiRunResult/runEmbeddedPiAgent/pi-embeddedimportsVerification Criteria
src/agents/pi-embedded*existsrc/agents/pi-embedded-runner/directory existsgrep -r "EmbeddedPiRunResult" src/returns zero resultsgrep -r "runEmbeddedPiAgent" src/returns zero resultsgrep -r "pi-embedded" src/ --include="*.ts"returns zero import/reference resultspnpm buildpassesContext
The pi-embedded execution engine was OpenClaw's mechanism for running AI agents in-process using provider SDKs directly. RemoteClaw replaces this with CLI agent subprocesses (Claude Code, Gemini CLI, Codex CLI, OpenCode) orchestrated via the ChannelBridge middleware. The middleware layer is fully operational — this PR removes the now-dead legacy engine.