Skip to content

GUT pi-embedded execution engine core #74

@alexey-pelykh

Description

@alexey-pelykh

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.tsEmbeddedPiRunResult, 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 AgentDeliveryResultEmbeddedPiRunResult; 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

  1. Delete all files in src/agents/pi-embedded-runner/ — the complete execution engine
  2. Delete all src/agents/pi-embedded-*.ts files — root-level modules and tests
  3. Rewire auto-reply: Remove mapToEmbeddedPiRunResult() bridge; consume AgentDeliveryResult from ChannelBridge directly. Update test mocks.
  4. Rewire cron: Same pattern — remove EmbeddedPiRunResult mapping, use AgentDeliveryResult
  5. Rewire commands/agent.ts: Replace runWithModelFallback()runEmbeddedPiAgent() chain with direct ChannelBridge invocation. Update delivery.ts and session-store.ts types.
  6. Remove hooks/llm-slug-generator.ts pi-embedded usage or rewire to use ChannelBridge
  7. Clean extensionAPI.ts — remove pi-embedded re-exports
  8. Verify: pnpm build passes, grep confirms zero remaining EmbeddedPiRunResult / runEmbeddedPiAgent / pi-embedded imports

Verification Criteria

  • Zero files matching src/agents/pi-embedded* exist
  • Zero src/agents/pi-embedded-runner/ directory exists
  • grep -r "EmbeddedPiRunResult" src/ returns zero results
  • grep -r "runEmbeddedPiAgent" src/ returns zero results
  • grep -r "pi-embedded" src/ --include="*.ts" returns zero import/reference results
  • pnpm build passes
  • All existing tests that remain pass (some tests will be deleted with the engine)

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions