@vitos-pizza/vitos-pizza 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +5 -3
- package/package.json +11 -11
- package/packages/agent-mode/package.json +3 -3
- package/packages/agent-mode/src/plan-instructions.ts +19 -59
- package/packages/keybindings/package.json +1 -1
- package/packages/permission-system/package.json +2 -2
- package/packages/question/package.json +1 -1
- package/packages/session-title/package.json +3 -3
- package/packages/settings-preset/package.json +1 -1
- package/packages/subagents/agents/planner.md +10 -14
- package/packages/subagents/agents/scout.md +9 -18
- package/packages/subagents/agents/title.md +1 -0
- package/packages/subagents/agents/worker.md +7 -19
- package/packages/subagents/package.json +1 -1
- package/packages/subagents/skills/subagents/SKILL.md +27 -28
- package/packages/subagents/src/agents.ts +17 -0
- package/packages/subagents/src/execute-subagent.ts +3 -6
- package/packages/subagents/src/run-agent.ts +2 -1
- package/packages/todoist/package.json +1 -1
- package/packages/ui-enhancements/package.json +1 -1
- package/packages/websearch/extensions/index.ts +4 -2
- package/packages/websearch/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to vitos-pizza are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.3.1] - 2026-07-11
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- **Prompt optimization** — plan mode: authoritative short system instructions + supersede; sticky reminder without JSON dumps
|
|
10
|
+
- Subagents skill: mode constraints one-liners; plan vs execute/agent examples split (no worker chain in plan)
|
|
11
|
+
- Scout / planner / worker / title prompts tightened; planner output adds `## 功能验收`
|
|
12
|
+
- Hide internal `title` agent from public subagent listings
|
|
13
|
+
- `web_search` guidelines: prefer local tools; use web only for current external facts
|
|
14
|
+
|
|
15
|
+
### Acknowledgments
|
|
16
|
+
|
|
17
|
+
- Claude Code plan-mode reminder pattern and OpenAI Codex base-instruction style (prompt craft reference)
|
|
18
|
+
|
|
5
19
|
## [0.3.0] - 2026-07-11
|
|
6
20
|
|
|
7
21
|
### Added
|
package/README.md
CHANGED
|
@@ -25,10 +25,10 @@ npm install -g --ignore-scripts @earendil-works/pi-coding-agent
|
|
|
25
25
|
|
|
26
26
|
```bash
|
|
27
27
|
# npm (recommended)
|
|
28
|
-
pi install npm:@vitos-pizza/vitos-pizza@0.3.
|
|
28
|
+
pi install npm:@vitos-pizza/vitos-pizza@0.3.1
|
|
29
29
|
|
|
30
30
|
# git (pinned tag)
|
|
31
|
-
pi install git:github.com/xin2017338/vitos-pizza@v0.3.
|
|
31
|
+
pi install git:github.com/xin2017338/vitos-pizza@v0.3.1
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
From source:
|
|
@@ -117,7 +117,7 @@ subagent({ tasks: [{ agent: "scout", task: "scan src" }, { agent: "scout", task:
|
|
|
117
117
|
subagent({ agent: "worker", task: "...", async: true }) → wait({ id: "<runId>" })
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
Built-in agents: **scout**, **planner**, **worker
|
|
120
|
+
Built-in agents: **scout**, **planner**, **worker**. Other modules request runs over `pi.events` RPC — import `requestSubagentRun` from `@vitos-pizza/subagents/rpc/client`.
|
|
121
121
|
|
|
122
122
|
## Web search
|
|
123
123
|
|
|
@@ -216,6 +216,8 @@ vitos-pizza builds on the Pi ecosystem and several open-source projects. We are
|
|
|
216
216
|
| [Pi `border-status-editor` example](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/examples/extensions/border-status-editor.ts) | `@vitos-pizza/ui-enhancements` | Editor-border status bar (model, thinking, context, cwd, git) |
|
|
217
217
|
| [sf-welcome](https://github.com/salesforce/sf-pi/blob/main/extensions/sf-welcome/index.ts) | `@vitos-pizza/ui-enhancements` | Welcome header session lifecycle and tips layout |
|
|
218
218
|
| **Claude Code** permission UX | Agent modes (`agent` / `plan` / `execute`) | Preset naming and mode-switching inspiration (not a code dependency) |
|
|
219
|
+
| [Claude Code system prompts](https://github.com/CANYOUFINDIT/claude-code-system-prompts) (plan-mode reminders) | `@vitos-pizza/agent-mode` plan instructions | Short sticky reminder + supersede pattern for plan mode (not a code dependency) |
|
|
220
|
+
| [OpenAI Codex base instructions](https://github.com/openai/codex/blob/main/codex-rs/protocol/src/prompts/base_instructions/default.md) | Plan / subagent prompt style | Concise hard rules and precedence over conflicting guidance (not a code dependency) |
|
|
219
221
|
| [Claude Code TodoWrite / Task tools](https://code.claude.com/docs/en/agent-sdk/todo-tracking.md) | `@vitos-pizza/todoist` | Complete = status done; delete only when no longer relevant (cancelled / mistaken) |
|
|
220
222
|
| [@capyup/pi-basic-tools todo](https://www.npmjs.com/package/@capyup/pi-basic-tools) | `@vitos-pizza/todoist` | completed vs deleted prompt boundary for task-list tools |
|
|
221
223
|
| [pi-package-template](https://github.com/S1M0N38/pi-package-template) | Repo layout | Pi package monorepo conventions |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitos-pizza/vitos-pizza",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Vito's Pizzeria — a Pi distribution (Garfield-approved)",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -38,16 +38,16 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"typebox": "^1.1.38",
|
|
41
|
-
"@vitos-pizza/agent-mode": "0.3.
|
|
42
|
-
"@vitos-pizza/keybindings": "0.3.
|
|
43
|
-
"@vitos-pizza/permission-system": "0.3.
|
|
44
|
-
"@vitos-pizza/question": "0.3.
|
|
45
|
-
"@vitos-pizza/session-title": "0.3.
|
|
46
|
-
"@vitos-pizza/settings-preset": "0.3.
|
|
47
|
-
"@vitos-pizza/subagents": "0.3.
|
|
48
|
-
"@vitos-pizza/todoist": "0.3.
|
|
49
|
-
"@vitos-pizza/ui-enhancements": "0.3.
|
|
50
|
-
"@vitos-pizza/websearch": "0.3.
|
|
41
|
+
"@vitos-pizza/agent-mode": "0.3.1",
|
|
42
|
+
"@vitos-pizza/keybindings": "0.3.1",
|
|
43
|
+
"@vitos-pizza/permission-system": "0.3.1",
|
|
44
|
+
"@vitos-pizza/question": "0.3.1",
|
|
45
|
+
"@vitos-pizza/session-title": "0.3.1",
|
|
46
|
+
"@vitos-pizza/settings-preset": "0.3.1",
|
|
47
|
+
"@vitos-pizza/subagents": "0.3.1",
|
|
48
|
+
"@vitos-pizza/todoist": "0.3.1",
|
|
49
|
+
"@vitos-pizza/ui-enhancements": "0.3.1",
|
|
50
|
+
"@vitos-pizza/websearch": "0.3.1"
|
|
51
51
|
},
|
|
52
52
|
"bundledDependencies": [
|
|
53
53
|
"@vitos-pizza/agent-mode",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitos-pizza/agent-mode",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Centralized agent / plan / execute mode switching for Vito's Pizzeria",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"lint:fix": "biome check --write ."
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@vitos-pizza/keybindings": "0.3.
|
|
17
|
-
"@vitos-pizza/permission-system": "0.3.
|
|
16
|
+
"@vitos-pizza/keybindings": "0.3.1",
|
|
17
|
+
"@vitos-pizza/permission-system": "0.3.1"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
20
|
"@earendil-works/pi-coding-agent": "*"
|
|
@@ -12,77 +12,37 @@ export const PLAN_MODE_TOOLS = [
|
|
|
12
12
|
|
|
13
13
|
export const PLAN_INSTRUCTIONS = `## PLAN MODE
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
This supersedes conflicting skill or prior guidance about implementing code or calling worker in this mode.
|
|
16
16
|
|
|
17
|
-
**
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
17
|
+
**Hard rules**
|
|
18
|
+
- Main agent: no write, edit, or bash. Do not call worker.
|
|
19
|
+
- Produce an Implementation Plan and wait for confirmation.
|
|
20
|
+
- To implement, the user switches via \`/mode execute\` or \`/mode agent\`.
|
|
21
21
|
|
|
22
|
-
**
|
|
23
|
-
-
|
|
24
|
-
- Do **not** call worker or edit code directly in this mode
|
|
22
|
+
**Clarification**
|
|
23
|
+
- Prefer \`question\` for mutually exclusive choices (2–5 options); skip when context is enough. Available to main, scout, and planner.
|
|
25
24
|
|
|
26
|
-
**
|
|
27
|
-
- Scout is
|
|
28
|
-
-
|
|
29
|
-
- Independent areas → parallel scouts via \`subagent({ tasks: [...] })\` to finish recon faster; then planner
|
|
30
|
-
- For light lookups, the main agent may use read/grep/find/ls directly — no scout required
|
|
25
|
+
**Exploration**
|
|
26
|
+
- Scout is optional — only for unfamiliar or multi-file recon. Parallel scouts via \`subagent({ tasks: [...] })\` for independent areas, then planner. Light lookups: use read/grep/find/ls yourself.
|
|
27
|
+
- Web tools only for current external facts outside the repo.
|
|
31
28
|
|
|
32
29
|
**Delegation**
|
|
33
|
-
- Enough context
|
|
34
|
-
- Need recon
|
|
35
|
-
- Multi-area recon → parallel scouts, then planner with the combined findings
|
|
30
|
+
- Enough context → \`subagent({ agent: "planner", task })\`
|
|
31
|
+
- Need recon → \`subagent({ chain: [scout, planner] })\`
|
|
36
32
|
|
|
37
|
-
**
|
|
38
|
-
When helpful, add a short **Next** footer — Cursor-style suggested actions. Skip it if the next step is already obvious.
|
|
39
|
-
- 2–3 bullets max; each one line
|
|
40
|
-
- Concrete verbs the user can reply with (e.g. confirm → \`/mode execute\`, tweak scope)
|
|
41
|
-
- No essays, no restating the whole plan
|
|
33
|
+
**Optional Next footer** (2–3 one-line reply verbs) when the next step is not obvious:
|
|
42
34
|
|
|
43
|
-
Example:
|
|
44
35
|
\`\`\`
|
|
45
36
|
**Next**
|
|
46
|
-
- Confirm → \`/mode execute\` (or Ctrl+. / Alt+M)
|
|
47
|
-
- Say what to change if
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
**To implement**, the user must switch to execute or agent mode (\`/mode execute\` or \`/mode agent\`).`;
|
|
37
|
+
- Confirm → \`/mode execute\` (or Ctrl+. / Alt+M)
|
|
38
|
+
- Say what to change if scope is off
|
|
39
|
+
\`\`\``;
|
|
51
40
|
|
|
52
41
|
export const PLAN_MODE_MESSAGE = `[PLAN MODE ACTIVE]
|
|
53
42
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
2. Scout only if needed; parallel scouts (\`tasks: [...]\`) when exploring independent areas; otherwise go straight to planner
|
|
58
|
-
3. Return the plan and wait; optionally a short **Next** footer (2–3 one-line actions) when helpful
|
|
59
|
-
4. Do NOT call worker or make code changes
|
|
60
|
-
|
|
61
|
-
Planner only (no scout):
|
|
62
|
-
\`\`\`json
|
|
63
|
-
{ "agent": "planner", "task": "Create an implementation plan for ..." }
|
|
64
|
-
\`\`\`
|
|
65
|
-
|
|
66
|
-
Scout → planner (when recon is needed):
|
|
67
|
-
\`\`\`json
|
|
68
|
-
{
|
|
69
|
-
"chain": [
|
|
70
|
-
{ "agent": "scout", "task": "Map relevant code for this task" },
|
|
71
|
-
{ "agent": "planner", "task": "Create an implementation plan from {previous}" }
|
|
72
|
-
]
|
|
73
|
-
}
|
|
74
|
-
\`\`\`
|
|
75
|
-
|
|
76
|
-
Parallel scouts (independent areas), then planner:
|
|
77
|
-
\`\`\`json
|
|
78
|
-
{
|
|
79
|
-
"tasks": [
|
|
80
|
-
{ "agent": "scout", "task": "Map area A" },
|
|
81
|
-
{ "agent": "scout", "task": "Map area B" }
|
|
82
|
-
]
|
|
83
|
-
}
|
|
84
|
-
\`\`\`
|
|
85
|
-
Then \`subagent({ agent: "planner", task: "Plan from the scout findings above" })\`.`;
|
|
43
|
+
Read-only planning. No write/edit/bash/worker.
|
|
44
|
+
Clarify with \`question\` when needed. Scout only if recon is required; otherwise planner.
|
|
45
|
+
Return the plan and wait; optionally a short **Next** footer.`;
|
|
86
46
|
|
|
87
47
|
export const PLAN_MODE_ENDED_MESSAGE = `[PLAN MODE ENDED]
|
|
88
48
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitos-pizza/permission-system",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Permission enforcement for Vito's Pizzeria Pi distribution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"lint:fix": "biome check --write ."
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@vitos-pizza/keybindings": "0.3.
|
|
21
|
+
"@vitos-pizza/keybindings": "0.3.1",
|
|
22
22
|
"tree-sitter-bash": "^0.25.1",
|
|
23
23
|
"web-tree-sitter": "^0.25.10",
|
|
24
24
|
"zod": "^3.25.76"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitos-pizza/session-title",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Async session auto-naming for Vito's Pizzeria Pi distribution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@vitos-pizza/subagents": "0.3.
|
|
14
|
+
"@vitos-pizza/subagents": "0.3.1"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
17
|
"test": "vitest run",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@earendil-works/pi-ai": "*",
|
|
32
32
|
"@earendil-works/pi-coding-agent": "*",
|
|
33
|
-
"@vitos-pizza/subagents": "0.3.
|
|
33
|
+
"@vitos-pizza/subagents": "0.3.1",
|
|
34
34
|
"typebox": "*",
|
|
35
35
|
"vitest": "^3.2.4"
|
|
36
36
|
}
|
|
@@ -6,18 +6,13 @@ thinking: high
|
|
|
6
6
|
systemPromptMode: replace
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
You are a
|
|
9
|
+
You are planner: turn requirements and code context into a concrete implementation plan. Do not change application code. You may `write` only to persist the plan document.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Name exact files whenever you can.
|
|
17
|
-
- Prefer small, ordered, actionable tasks over vague phases.
|
|
18
|
-
- Call out risks, dependencies, and anything that needs explicit validation.
|
|
19
|
-
- If the task is underspecified, use the `question` tool to ask the user for clarification before guessing.
|
|
20
|
-
- Mutually exclusive design choices (2–5 options) → always use `question`; never ask "which do you prefer?" in free text.
|
|
11
|
+
Rules:
|
|
12
|
+
- Read provided context (and more code as needed) before planning.
|
|
13
|
+
- Name exact files; prefer small, ordered, actionable tasks; call out risks and dependencies.
|
|
14
|
+
- Underspecified or mutually exclusive choices → use `question` before guessing.
|
|
15
|
+
- Web tools only for current external facts outside the repo.
|
|
21
16
|
|
|
22
17
|
Output format:
|
|
23
18
|
|
|
@@ -39,8 +34,9 @@ Numbered steps, each small and actionable.
|
|
|
39
34
|
Which tasks depend on others.
|
|
40
35
|
|
|
41
36
|
## Risks
|
|
42
|
-
Anything likely to go wrong
|
|
37
|
+
Anything likely to go wrong or need careful verification.
|
|
43
38
|
|
|
44
|
-
|
|
39
|
+
## 功能验收
|
|
40
|
+
3–6 checkboxes of observable outcomes (yes/no verifiable).
|
|
45
41
|
|
|
46
|
-
Keep the plan concrete
|
|
42
|
+
Keep the plan concrete enough for another agent to execute without guessing. The parent may add a short **Next** footer — do not write a long next-steps essay.
|
|
@@ -6,23 +6,14 @@ thinking: low
|
|
|
6
6
|
systemPromptMode: replace
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
You are
|
|
9
|
+
You are scout: fast codebase recon for handoff. Do not guess. Prefer targeted search over whole-file reads.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Return the minimum context another agent needs: entry points, key types/APIs, data flow, files likely to change, risks and open questions.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- files that are likely to need changes
|
|
18
|
-
- constraints, risks, and open questions
|
|
19
|
-
|
|
20
|
-
Working rules:
|
|
21
|
-
- Use `grep`, `find`, `ls`, and `read` to map the area before diving deeper.
|
|
22
|
-
- You have the `question` tool. Use it when clarification would materially improve recon (ambiguous scope, mutually exclusive choices). Skip it when context is already enough.
|
|
23
|
-
- When you do ask, prefer `question` over free-text "which do you prefer?".
|
|
24
|
-
- When you cite code, use exact file paths and line ranges.
|
|
25
|
-
- When running solo, summarize what you found in the final response.
|
|
13
|
+
Rules:
|
|
14
|
+
- Cite exact file paths and line ranges.
|
|
15
|
+
- Use `question` only when ambiguity blocks recon; prefer structured options over free-text choices.
|
|
16
|
+
- Web tools only for current external facts outside the repo.
|
|
26
17
|
|
|
27
18
|
Output format:
|
|
28
19
|
|
|
@@ -32,10 +23,10 @@ Output format:
|
|
|
32
23
|
List exact files and line ranges.
|
|
33
24
|
|
|
34
25
|
## Key Code
|
|
35
|
-
|
|
26
|
+
Critical types, interfaces, functions, and small snippets that matter.
|
|
36
27
|
|
|
37
28
|
## Architecture
|
|
38
|
-
|
|
29
|
+
How the pieces connect.
|
|
39
30
|
|
|
40
31
|
## Start Here
|
|
41
|
-
|
|
32
|
+
First file another agent should open and why.
|
|
@@ -9,5 +9,6 @@ You analyze the user's intent together with the assistant's last reply and produ
|
|
|
9
9
|
|
|
10
10
|
Rules:
|
|
11
11
|
- Output only the title text — no quotes, no explanation, no markdown.
|
|
12
|
+
- Match the language of the user's message.
|
|
12
13
|
- If there is no clear task intent, output exactly `SKIP`.
|
|
13
14
|
- Respect the maximum title length given in the task.
|
|
@@ -6,28 +6,16 @@ thinking: high
|
|
|
6
6
|
systemPromptMode: replace
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
You are
|
|
9
|
+
You are worker: the single writer thread. Execute the assigned task or approved plan with narrow, coherent edits. The main agent and user remain the decision authority.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Default responsibilities:
|
|
16
|
-
- validate the task or approved direction against the actual code
|
|
17
|
-
- implement the smallest correct change
|
|
18
|
-
- follow existing patterns in the codebase
|
|
19
|
-
- verify the result with appropriate checks when possible
|
|
20
|
-
- report back clearly with changes, validation, risks, and next steps
|
|
21
|
-
|
|
22
|
-
Working rules:
|
|
23
|
-
- Prefer narrow, correct changes over broad rewrites.
|
|
24
|
-
- Do not add speculative scaffolding or future-proofing unless explicitly required.
|
|
25
|
-
- Do not leave placeholder code, TODOs, or silent scope changes.
|
|
11
|
+
Rules:
|
|
12
|
+
- Read inherited context/plan first; validate against the actual code.
|
|
13
|
+
- Prefer the smallest correct change; follow existing patterns.
|
|
14
|
+
- No speculative scaffolding, placeholders, TODOs, or silent scope changes.
|
|
26
15
|
- Use `bash` for inspection, validation, and relevant tests.
|
|
27
|
-
- If
|
|
28
|
-
- If your delegated task expects code or file edits and you have not made those edits, do not return a success summary.
|
|
16
|
+
- If the task expects file edits and you made none, do not claim success.
|
|
29
17
|
|
|
30
|
-
|
|
18
|
+
Final response shape:
|
|
31
19
|
|
|
32
20
|
Implemented X.
|
|
33
21
|
Changed files: Y.
|
|
@@ -7,56 +7,41 @@ description: Delegate exploration, planning, and implementation to Vito's Pizzer
|
|
|
7
7
|
|
|
8
8
|
Use the `subagent` tool to delegate work to focused child agents with isolated context.
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## Modes
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
16
|
-
| **agent** | Default balanced work |
|
|
17
|
-
| **plan** | Read-only planning — planner (+ optional scout); `question` available anytime when helpful; optional short **Next** footer |
|
|
18
|
-
| **execute** | Full implementation after plan is approved |
|
|
19
|
-
|
|
20
|
-
In **plan** mode the main agent cannot write/edit/bash. Delegate with subagents. Scout is optional — use it only when codebase recon is needed; otherwise call planner directly. When recon spans independent areas, run multiple scouts in parallel (`tasks: [...]`) then planner. The main agent, scout, and planner can all use `question` during plan when clarification would help (not required if context is enough):
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
[optional scout(s) →] planner → (user confirms) → switch to execute → worker
|
|
24
|
-
```
|
|
12
|
+
| Mode | Constraint |
|
|
13
|
+
|------|------------|
|
|
14
|
+
| **plan** | Read-only. Scout (optional) → planner. Never call worker. |
|
|
15
|
+
| **agent** / **execute** | May call worker after a plan is approved (or for focused implementation). |
|
|
25
16
|
|
|
26
17
|
## Built-in agents
|
|
27
18
|
|
|
28
19
|
| Agent | Use when |
|
|
29
20
|
|-------|----------|
|
|
30
|
-
| `scout` | Fast codebase recon;
|
|
21
|
+
| `scout` | Fast codebase recon; compressed context for handoff |
|
|
31
22
|
| `planner` | Turn context + requirements into an implementation plan |
|
|
32
23
|
| `worker` | Execute an approved plan with narrow, correct edits |
|
|
33
|
-
| `title` | Generate short session titles (used by `@vitos-pizza/session-title`) |
|
|
34
|
-
|
|
35
|
-
## Typical workflow
|
|
36
24
|
|
|
37
|
-
|
|
38
|
-
[optional scout →] planner → worker
|
|
39
|
-
```
|
|
25
|
+
## Plan-mode examples
|
|
40
26
|
|
|
41
|
-
### Planner only
|
|
27
|
+
### Planner only
|
|
42
28
|
|
|
43
29
|
```json
|
|
44
30
|
{ "agent": "planner", "task": "Create an implementation plan for ..." }
|
|
45
31
|
```
|
|
46
32
|
|
|
47
|
-
###
|
|
33
|
+
### Scout → planner
|
|
48
34
|
|
|
49
35
|
```json
|
|
50
36
|
{
|
|
51
37
|
"chain": [
|
|
52
38
|
{ "agent": "scout", "task": "Map the auth module and key entry points" },
|
|
53
|
-
{ "agent": "planner", "task": "Create a plan based on {previous}" }
|
|
54
|
-
{ "agent": "worker", "task": "Implement the plan from {previous}" }
|
|
39
|
+
{ "agent": "planner", "task": "Create a plan based on {previous}" }
|
|
55
40
|
]
|
|
56
41
|
}
|
|
57
42
|
```
|
|
58
43
|
|
|
59
|
-
### Parallel
|
|
44
|
+
### Parallel scouts
|
|
60
45
|
|
|
61
46
|
```json
|
|
62
47
|
{
|
|
@@ -67,9 +52,23 @@ In **plan** mode the main agent cannot write/edit/bash. Delegate with subagents.
|
|
|
67
52
|
}
|
|
68
53
|
```
|
|
69
54
|
|
|
70
|
-
|
|
55
|
+
Then call planner with the combined findings.
|
|
56
|
+
|
|
57
|
+
## After plan approval (agent / execute)
|
|
71
58
|
|
|
72
|
-
|
|
59
|
+
### Chain through worker
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"chain": [
|
|
64
|
+
{ "agent": "scout", "task": "Map relevant code" },
|
|
65
|
+
{ "agent": "planner", "task": "Create a plan based on {previous}" },
|
|
66
|
+
{ "agent": "worker", "task": "Implement the plan from {previous}" }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Async + wait
|
|
73
72
|
|
|
74
73
|
```json
|
|
75
74
|
{ "agent": "worker", "task": "...", "async": true }
|
|
@@ -36,6 +36,23 @@ const THINKING_LEVELS = new Set([
|
|
|
36
36
|
"max",
|
|
37
37
|
]);
|
|
38
38
|
|
|
39
|
+
/** Internal agents (e.g. session naming) — callable by name, not listed to the main agent. */
|
|
40
|
+
const INTERNAL_AGENT_NAMES = new Set(["title"]);
|
|
41
|
+
|
|
42
|
+
export function isPublicAgent(name: string): boolean {
|
|
43
|
+
return !INTERNAL_AGENT_NAMES.has(name);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function formatAvailableAgents(
|
|
47
|
+
agents: Array<{ name: string; source: string }>,
|
|
48
|
+
): string {
|
|
49
|
+
const visible = agents.filter((agent) => isPublicAgent(agent.name));
|
|
50
|
+
return (
|
|
51
|
+
visible.map((agent) => `${agent.name} (${agent.source})`).join(", ") ||
|
|
52
|
+
"none"
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
39
56
|
export function getBuiltinAgentsDir(): string {
|
|
40
57
|
return path.join(
|
|
41
58
|
path.dirname(fileURLToPath(import.meta.url)),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import type { AgentToolResult } from "@earendil-works/pi-agent-core";
|
|
3
|
-
import { discoverAgents } from "./agents.ts";
|
|
3
|
+
import { discoverAgents, formatAvailableAgents } from "./agents.ts";
|
|
4
4
|
import { runSingleAgent } from "./run-agent.ts";
|
|
5
5
|
import type {
|
|
6
6
|
AgentScope,
|
|
@@ -67,9 +67,7 @@ export async function executeSubagent(
|
|
|
67
67
|
const mode = resolveMode(input);
|
|
68
68
|
|
|
69
69
|
if (countModes(input) !== 1 || !mode) {
|
|
70
|
-
const available =
|
|
71
|
-
agents.map((agent) => `${agent.name} (${agent.source})`).join(", ") ||
|
|
72
|
-
"none";
|
|
70
|
+
const available = formatAvailableAgents(agents);
|
|
73
71
|
return {
|
|
74
72
|
content: [
|
|
75
73
|
{
|
|
@@ -267,8 +265,7 @@ export async function executeSubagent(
|
|
|
267
265
|
};
|
|
268
266
|
}
|
|
269
267
|
|
|
270
|
-
const available =
|
|
271
|
-
agents.map((agent) => `${agent.name} (${agent.source})`).join(", ") || "none";
|
|
268
|
+
const available = formatAvailableAgents(agents);
|
|
272
269
|
return {
|
|
273
270
|
content: [
|
|
274
271
|
{
|
|
@@ -7,6 +7,7 @@ import type { Message } from "@earendil-works/pi-ai";
|
|
|
7
7
|
import { withFileMutationQueue } from "@earendil-works/pi-coding-agent";
|
|
8
8
|
import {
|
|
9
9
|
applyThinkingSuffix,
|
|
10
|
+
formatAvailableAgents,
|
|
10
11
|
type AgentConfig,
|
|
11
12
|
} from "./agents.ts";
|
|
12
13
|
import {
|
|
@@ -77,7 +78,7 @@ export async function runSingleAgent(
|
|
|
77
78
|
|
|
78
79
|
const agent = agents.find((entry) => entry.name === agentName);
|
|
79
80
|
if (!agent) {
|
|
80
|
-
const available = agents
|
|
81
|
+
const available = formatAvailableAgents(agents);
|
|
81
82
|
return {
|
|
82
83
|
agent: agentName,
|
|
83
84
|
agentSource: "unknown",
|
|
@@ -25,9 +25,11 @@ export default function (pi: ExtensionAPI) {
|
|
|
25
25
|
label: "Web Search",
|
|
26
26
|
description:
|
|
27
27
|
"Search the web using configured backends. Auto mode tries Exa MCP, Firecrawl, and optional keyed providers.",
|
|
28
|
-
promptSnippet:
|
|
28
|
+
promptSnippet:
|
|
29
|
+
"Search the web only when local context is insufficient for current external facts",
|
|
29
30
|
promptGuidelines: [
|
|
30
|
-
"
|
|
31
|
+
"Do not use web_search when the answer is already in the repo, conversation, or local tools (read/grep/find/ls)",
|
|
32
|
+
"Use web_search only when you need current external facts, docs, or news that local context cannot provide",
|
|
31
33
|
"Auto mode tries enabled backends in order; Exa MCP works without API keys",
|
|
32
34
|
"Configure Tavily or Brave in .pi/search.json for higher-quality results",
|
|
33
35
|
],
|