Skip to content

gut: remove vestigial embedded Pi orchestrator stubs and call sites #2146

@alexey-pelykh

Description

@alexey-pelykh

Summary

The embedded Pi orchestrator (OpenClaw's in-process LLM runner) was gutted but its call sites remain with undefined-returning stubs. These stubs silently no-op code paths that should either be removed or replaced with RemoteClaw's CLI runtime equivalents.

Production stubs (10 across 6 files)

src/auto-reply/reply/agent-runner.ts

  • Line 7queueEmbeddedPiMessage stub (always returns false)
  • Line 221 — call site: queueEmbeddedPiMessage(...) — dead steering logic (stub returns falsy, so steered is always false)

src/auto-reply/reply/get-reply-run.ts

  • Line 5abortEmbeddedPiRun stub (always returns false)
  • Line 6isEmbeddedPiRunActive stub (always returns false)
  • Line 7isEmbeddedPiRunStreaming stub (always returns false)
  • Line 8resolveEmbeddedSessionLane stub (formats a session lane key)
  • Lines 441–450 — call sites: abortEmbeddedPiRun, isEmbeddedPiRunActive, isEmbeddedPiRunStreaming, resolveEmbeddedSessionLane

src/agents/tools/subagents-tool.ts

  • Line 30abortEmbeddedPiRun stub (returns undefined)
  • Line 250 — call site: abortEmbeddedPiRun(sessionId)
  • Line 617 — call site: abortEmbeddedPiRun(sessionId)

src/auto-reply/reply/commands-session.ts

  • Line 21handleAbortTrigger stub (async no-op)
  • Line 23handleStopCommand stub (async no-op)
  • Line 474 — exports: handleAbortTrigger, handleStopCommand

src/gateway/server-reload-handlers.ts

  • Line 2getActiveEmbeddedRunCount stub (always returns 0)
  • Line 167 — call site: getActiveEmbeddedRunCount()

src/gateway/server.impl.ts

  • Line 4getActiveEmbeddedRunCount stub (always returns 0)
  • Line 434 — call site: getActiveEmbeddedRunCount()

src/auto-reply/reply/queue/cleanup.ts

  • Line 2resolveEmbeddedSessionLane stub (duplicate of the one in get-reply-run.ts)
  • Line 28 — call site: resolveEmbeddedSessionLane(cleaned)

Config schema entries (4 files)

  • src/config/types.agent-defaults.ts:182embeddedPi? type field
  • src/config/zod-schema.agent-defaults.ts:116embeddedPi Zod schema
  • src/config/schema.help.ts:954–956 — help text for agents.defaults.embeddedPi and agents.defaults.embeddedPi.projectSettingsPolicy
  • src/config/schema.labels.ts:430–431 — labels for agents.defaults.embeddedPi and agents.defaults.embeddedPi.projectSettingsPolicy

Test files (8 files with embeddedPi mocks)

  • src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.tsrunEmbeddedPiAgentMock (41 references)
  • src/auto-reply/reply.directive.directive-behavior.e2e-harness.tsrunEmbeddedPiAgent mock export
  • src/auto-reply/reply.directive.directive-behavior.applies-inline-reasoning-mixed-messages-acks-immediately.test.tsrunEmbeddedPiAgent assertions
  • src/auto-reply/reply.triggers.trigger-handling.targets-active-session-native-stop.e2e.test.tsgetCompactEmbeddedPiSessionMock, getAbortEmbeddedPiRunMock, runEmbeddedPiAgentMock (26 references)
  • src/auto-reply/reply.heartbeat-typing.test.tsrunEmbeddedPiAgentMock import and usage
  • src/agents/subagent-announce.format.e2e.test.tsisEmbeddedPiRunActive, isEmbeddedPiRunStreaming, queueEmbeddedPiMessage, waitForEmbeddedPiRunEnd mocks (46 references)
  • src/cron/isolated-agent/run.test-harness.tsrunEmbeddedPiAgentMock (3 references)
  • extensions/test-utils/plugin-runtime-mock.tsrunEmbeddedPiAgent: noopAsync

What to do

Remove each stub and its surrounding call site. The queueEmbeddedPiMessage call in agent-runner.ts:221 is a dead code block (stub returns false, so steered is always falsy). The abort/stop stubs disable those commands entirely. The getActiveEmbeddedRunCount stubs always return 0, making them no-ops in the busy-wait and drain logic. Clean up config schema entries and rename test mocks to reflect the CLI runtime bridge.

Files NOT in scope (verified: zero embeddedPi references)

  • src/auto-reply/reply/abort.ts — no embeddedPi refs
  • src/gateway/server-methods/sessions.ts — no embeddedPi refs

Acceptance Criteria

  • grep -ri "embeddedPi" src/ extensions/ returns zero matches
  • pnpm check passes

Metadata

Metadata

Assignees

No one assigned

    Labels

    gutRemoving dead upstream subsystems

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions