5.6 KiB
pi-crew runtime refactor source map
This document records the source projects used as the baseline for the pi-crew subagent/runtime refactor. The goal is to avoid ad-hoc fixes in critical process orchestration paths and instead align pi-crew with proven Pi extension patterns.
Source/pi-subagents
Primary source for child-process worker execution.
pi-spawn.ts: robust Pi CLI resolution on Windows and package installs.async-execution.ts: detached async runner withwindowsHide: trueto avoid blank console windows.subagent-runner.ts: streaming child Pi process runner, output capture, result extraction.post-exit-stdio-guard.ts: guards for child processes that exit before stdio fully closes.result-watcher.tsandasync-job-tracker.ts: durable async job/result observation patterns.model-fallback.ts: model fallback policy independent of hardcoded provider assumptions.subagent-control.ts,run-status.ts: status and control semantics.
pi-crew alignment:
- Background runner and child worker spawn options now explicitly set
windowsHide: true. - Parallel research no longer gates all shard workers behind a single discover worker.
- Further work should consolidate
child-pi.ts,async-runner.ts, andsubagent-manager.tsinto a durable-first subagent runtime module.
Source/pi-subagents2
Primary source for higher-level agent management and UI patterns.
src/agent-manager.ts: agent lifecycle registry boundaries.src/agent-runner.ts: invocation/run abstraction separate from UI registration.src/model-resolver.ts: cleaner model resolution responsibility.src/output-file.ts: output file abstraction.src/ui/agent-widget.ts,src/ui/conversation-viewer.ts: compact live status and transcript viewing.
pi-crew alignment:
- Keep
Agent/crew_agenttools as thin adapters over a durable manager. - Avoid storing essential run mapping in memory only.
- Keep UI active-only and file-backed.
Source/pi-mono
Primary source for Pi extension API/lifecycle constraints.
packages/coding-agent/src/core/extensions/types.ts: extension context/tool contracts.packages/coding-agent/src/core/extensions/runner.ts: extension execution boundaries.packages/coding-agent/src/core/model-registry.ts: available model discovery.packages/coding-agent/src/modes/interactive/interactive-mode.ts: session lifecycle/UI behavior.
pi-crew alignment:
- Treat session-bound foreground workers differently from explicit async background workers.
- Do not assume hardcoded providers/models.
- Use Pi-native UI calls without modal auto-open by default.
Source/pi-powerbar, pi-plan, pi-diff-review, pi-extensions*
Sources for UI and small-extension patterns.
pi-powerbar/src/powerbar/*: low-noise status segment publishing.pi-plan/src/plan-action-ui.ts: action-oriented UI without persistent heavy overlays.pi-diff-review/src/*: command/tool registration and review UX patterns.pi-extensions2/files-widget/*: file-backed UI composition and navigation.
pi-crew alignment:
- Keep persistent widget active-only.
- Prefer manual dashboard/transcript commands for history.
- Avoid expensive render scans and auto-opening focus-capturing overlays.
Source/oh-my-pi
Primary source for broader agent runtime, UI, extension, hook, skill, native process, and release patterns.
Detailed distillation: docs/research-oh-my-pi-distillation.md.
Next implementation roadmap: docs/next-upgrade-roadmap.md.
Key patterns to apply:
- Separate durable run history from worker/provider prompt context.
- Distinguish steering (interrupt active work) from follow-up (continue after idle).
- Preserve cancellation invariants with structured cancel reasons and synthetic terminal events.
- Use shared/exclusive execution semantics and intent tracing for risky actions.
- Keep TUI components small, width-safe, event-driven, coalesced, and lifecycle-clean.
- Split extension/plugin lifecycle into register vs initialized side-effect phases.
- Normalize teams/workflows/agents/skills/hooks/tools into a capability inventory with disabled/shadowed states.
- Add typed lifecycle hooks for crew operations.
- Move toward append-only run history with attempt/branch provenance.
- Use cooperative cancellation tokens and two-phase process teardown for workers.
- Cache raw scan entries, not final semantic query results.
- Consider content-addressed blob artifacts for large worker outputs/log chunks.
Current refactor checkpoints
- Hide Windows console windows for background runner and child Pi workers.
- Make parallel research shard workers start in parallel instead of depending on a single discover worker.
- Keep direct-agent reconstruction gated by
workflow === "direct-agent"only. - Persist subagent records and recover terminal results after restart.
- Fail fast for unrecoverable persisted records without
runIdinstead of hanging. - Persist direct-agent model override into task state for background/resume reconstruction.
For the current prioritized upgrade backlog, see docs/next-upgrade-roadmap.md.
Remaining larger subsystem work
- Consolidate subagent runtime into
src/subagents/*or equivalent durable-first module. - Move model routing transparency into persisted task/subagent records: requested model, selected model, fallback chain, fallback reason.
- Add real integration smoke scripts for Windows process visibility, async restart recovery, and multi-shard fanout.
- Add adaptive planner repair/retry for invalid JSON instead of immediate block when safe.