M2 — pi SDK session harness + prompt/skill composer #3

Closed
opened 2026-07-24 00:53:30 +00:00 by david · 0 comments
Owner

Goal: reusable helpers to (a) compose a stage system prompt and (b) run one stage as a fresh pi session.

Tasks

  • Prompt/skill composer: composeStagePrompt({ wrapper, skillPath, defaults }) → { systemPrompt, degraded }. Reads external skill SKILL.md body and concatenates wrapper + skill body. Missing/unreadable → default body + degraded = true.
  • Session runner: runStage({ systemPrompt, tools, userPrompt }) → result wrapping createAgentSession() + session.prompt().
    • Inject composed prompt via DefaultResourceLoader with systemPromptOverride (NOT additionalSkillPaths).
    • cwd = process.cwd(); SessionManager.inMemory(); ModelRuntime.create(); set thinkingLevel from config.
    • Per-stage least-privilege tool allowlist; subscribe to streaming events; session.dispose() in finally.

Depends on: M0.

Validation: composer unit tests (merge + missing-skill fallback). A read-only smoke stage runs, streams output, and disposes.

**Goal:** reusable helpers to (a) compose a stage system prompt and (b) run one stage as a fresh pi session. ### Tasks - [ ] Prompt/skill composer: `composeStagePrompt({ wrapper, skillPath, defaults }) → { systemPrompt, degraded }`. Reads external skill `SKILL.md` body and concatenates wrapper + skill body. Missing/unreadable → default body + `degraded = true`. - [ ] Session runner: `runStage({ systemPrompt, tools, userPrompt }) → result` wrapping `createAgentSession()` + `session.prompt()`. - Inject composed prompt via `DefaultResourceLoader` with `systemPromptOverride` (NOT `additionalSkillPaths`). - `cwd = process.cwd()`; `SessionManager.inMemory()`; `ModelRuntime.create()`; set `thinkingLevel` from config. - Per-stage least-privilege tool allowlist; subscribe to streaming events; `session.dispose()` in `finally`. **Depends on:** M0. **Validation:** composer unit tests (merge + missing-skill fallback). A read-only smoke stage runs, streams output, and disposes.
david closed this issue 2026-07-24 09:57:20 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
david/pi-loop#3
No description provided.