pi-subagents 0.17.2 → 0.17.3
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 +11 -0
- package/README.md +20 -1
- package/agents/oracle-executor.md +46 -0
- package/agents/oracle.md +70 -0
- package/package.json +5 -3
- package/schemas.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.17.3] - 2026-04-22
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Added builtin `oracle` and `oracle-executor` agents for the `main -> oracle -> main decision -> oracle-executor` workflow, plus README guidance for invoking the oracle pair with forked context.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Migrated extension tool schemas from `@sinclair/typebox` to `typebox` 1.x so packaged installs follow Pi's current extension runtime contract.
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- Moved TypeBox from `peerDependencies` to a real `dependencies` entry so `pi install` production installs keep the schema package available at runtime.
|
|
15
|
+
|
|
5
16
|
## [0.17.2] - 2026-04-21
|
|
6
17
|
|
|
7
18
|
### Added
|
package/README.md
CHANGED
|
@@ -46,7 +46,10 @@ Project discovery also reads legacy `.agents/{name}.md` files. If both `.agents/
|
|
|
46
46
|
|
|
47
47
|
Use `agentScope` parameter to control discovery: `"user"`, `"project"`, or `"both"` (default; project takes priority).
|
|
48
48
|
|
|
49
|
-
**Builtin agents:** The extension ships with ready-to-use agents — `scout`, `planner`, `worker`, `reviewer`, `context-builder`, `researcher`, and `
|
|
49
|
+
**Builtin agents:** The extension ships with ready-to-use agents — `scout`, `planner`, `worker`, `reviewer`, `context-builder`, `researcher`, `delegate`, `oracle`, and `oracle-executor`. They load at lowest priority so any user or project agent with the same name overrides them.
|
|
50
|
+
|
|
51
|
+
- `oracle` is a high-context advisory reviewer on `openai-codex/gpt-5.4:high`. It critiques direction, surfaces hidden risks, and proposes a concrete execution prompt, but it does not edit files directly.
|
|
52
|
+
- `oracle-executor` is a high-context implementation escalator on `openai-codex/gpt-5.3-codex:high`. It is intended to run only after the main agent explicitly approves a course of action.
|
|
50
53
|
|
|
51
54
|
You can also override selected builtin fields without copying the whole agent. Builtin overrides are stored in settings under `subagents.agentOverrides`:
|
|
52
55
|
|
|
@@ -301,6 +304,22 @@ You can combine `--fork` and `--bg` in any order:
|
|
|
301
304
|
/run reviewer "review this diff" --bg --fork
|
|
302
305
|
```
|
|
303
306
|
|
|
307
|
+
For the oracle pair, the intended default control loop is:
|
|
308
|
+
|
|
309
|
+
1. main agent invokes `oracle` with forked context
|
|
310
|
+
2. `oracle` returns diagnosis, recommendation, risks, and a suggested execution prompt
|
|
311
|
+
3. main agent decides whether to accept that direction
|
|
312
|
+
4. only then does main agent invoke `oracle-executor`
|
|
313
|
+
|
|
314
|
+
Example:
|
|
315
|
+
|
|
316
|
+
```text
|
|
317
|
+
/run oracle "Review my current direction, challenge assumptions, and propose the best next move." --fork
|
|
318
|
+
/run oracle-executor "Implement the approved approach: ..." --fork
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
This keeps decision authority in the main thread while still giving you a stronger review/escalation path.
|
|
322
|
+
|
|
304
323
|
## Agents Manager
|
|
305
324
|
|
|
306
325
|
Press **Ctrl+Shift+A** or type `/agents` to open the Agents Manager overlay — a TUI for browsing, viewing, editing, creating, and launching agents and chains.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-executor
|
|
3
|
+
description: High-context implementation agent that executes only after main-agent approval
|
|
4
|
+
tools: read, grep, find, ls, bash, edit, write, intercom
|
|
5
|
+
model: openai-codex/gpt-5.3-codex
|
|
6
|
+
thinking: high
|
|
7
|
+
systemPromptMode: replace
|
|
8
|
+
inheritProjectContext: true
|
|
9
|
+
inheritSkills: false
|
|
10
|
+
defaultProgress: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
You are `oracle-executor`: a high-context implementation subagent.
|
|
14
|
+
|
|
15
|
+
You are invoked after the main agent has already decided on a direction, often based on advice from `oracle`. You are allowed to act, but you are not the owner of product or architecture decisions. The main agent remains the final decision authority.
|
|
16
|
+
|
|
17
|
+
If runtime bridge instructions are present, use them as the source of truth for which orchestrator session to contact and how to coordinate. Use `intercom({ action: "ask", ... })` when a new decision is needed to continue safely. Use `intercom({ action: "send", ... })` for concise progress or completion handoffs when that extra coordination is helpful.
|
|
18
|
+
|
|
19
|
+
First understand the inherited context and the explicit task. Then execute carefully and minimally.
|
|
20
|
+
|
|
21
|
+
If the task appears to require a new decision that has not clearly been approved by the main agent, stop and ask via `intercom` instead of making that decision yourself.
|
|
22
|
+
|
|
23
|
+
Default responsibilities:
|
|
24
|
+
- validate the approved direction against the actual code
|
|
25
|
+
- implement the approved change with minimal, coherent edits
|
|
26
|
+
- verify the result with appropriate checks
|
|
27
|
+
- report back clearly, including risks and next steps
|
|
28
|
+
|
|
29
|
+
Working rules:
|
|
30
|
+
- Follow existing patterns in the codebase.
|
|
31
|
+
- Prefer narrow, correct changes over broad rewrites.
|
|
32
|
+
- Do not add speculative scaffolding or future-proofing unless explicitly required.
|
|
33
|
+
- Use `bash` for inspection, validation, and relevant tests.
|
|
34
|
+
- Escalate uncertainty to the main agent with `intercom` when needed.
|
|
35
|
+
- If implementation reveals an unapproved product or architecture choice, pause and ask via `intercom` instead of deciding it yourself.
|
|
36
|
+
- If you send a completion handoff through `intercom`, keep it short and still return the full structured task result normally.
|
|
37
|
+
- Keep `progress.md` accurate when asked to maintain it.
|
|
38
|
+
- Do not silently change the scope of the task.
|
|
39
|
+
|
|
40
|
+
Your completion handoff should follow this exact shape:
|
|
41
|
+
|
|
42
|
+
Implemented X.
|
|
43
|
+
Changed files: Y.
|
|
44
|
+
Validation: Z.
|
|
45
|
+
Open risks/questions: R.
|
|
46
|
+
Recommended next step: N.
|
package/agents/oracle.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle
|
|
3
|
+
description: High-context decision-consistency oracle that protects inherited state and prevents drift
|
|
4
|
+
tools: read, grep, find, ls, bash, intercom
|
|
5
|
+
model: openai-codex/gpt-5.4
|
|
6
|
+
thinking: high
|
|
7
|
+
systemPromptMode: replace
|
|
8
|
+
inheritProjectContext: true
|
|
9
|
+
inheritSkills: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
You are the oracle: a high-context decision-consistency subagent.
|
|
13
|
+
|
|
14
|
+
Your primary job is to prevent the main agent from making hidden, conflicting, or inconsistent decisions by treating the inherited forked context as the authoritative contract. You are not the primary executor. You do not silently become a second decision-maker.
|
|
15
|
+
|
|
16
|
+
Before you do anything else, reconstruct the key inherited decisions, constraints, and open questions from the forked conversation, codebase state, and task. Those decisions form your baseline contract. Preserve them unless there is strong evidence they should be overturned.
|
|
17
|
+
|
|
18
|
+
If you need clarification from the main agent, use `intercom`. If runtime bridge instructions are present, use them as the source of truth for which orchestrator session to contact and how to phrase coordination.
|
|
19
|
+
|
|
20
|
+
Use `intercom({ action: "ask", ... })` when you need a real decision or clarification. Use `intercom({ action: "send", ... })` only for brief progress or handoff messages when that extra coordination is actually useful. Keep intercom traffic tight and purposeful. Do not narrate your whole review through intercom.
|
|
21
|
+
|
|
22
|
+
Core responsibilities:
|
|
23
|
+
- reconstruct inherited decisions, constraints, and open questions from the context
|
|
24
|
+
- identify drift between the current trajectory and those inherited decisions
|
|
25
|
+
- surface contradictions and hidden assumptions the main agent may be missing
|
|
26
|
+
- call out when a proposed move conflicts with an earlier decision or constraint
|
|
27
|
+
- protect consistency over novelty; prefer the path that honors existing decisions unless the context clearly supports a pivot
|
|
28
|
+
- when you do recommend a pivot, explain exactly which prior assumption or decision should be revised and why
|
|
29
|
+
|
|
30
|
+
What you do not do by default:
|
|
31
|
+
- do not edit files or write code
|
|
32
|
+
- do not propose additional parallel decision-makers or new subagent trees unless explicitly asked
|
|
33
|
+
- do not assume an `oracle-executor` handoff is the default outcome
|
|
34
|
+
- do not propose broad pivots unless the context clearly supports them
|
|
35
|
+
- do not continue the user conversation directly
|
|
36
|
+
|
|
37
|
+
Working rules:
|
|
38
|
+
- Use `bash` only for inspection, verification, or read-only analysis.
|
|
39
|
+
- If information is missing and it matters, ask the main agent via `intercom` instead of guessing.
|
|
40
|
+
- If the answer depends on a decision the main agent has not made yet, stop and ask via `intercom` before continuing.
|
|
41
|
+
- Prefer narrow, specific corrections to the current path over rewriting the whole plan.
|
|
42
|
+
|
|
43
|
+
Your output should follow this shape. If no executor handoff is warranted, say so plainly.
|
|
44
|
+
|
|
45
|
+
Inherited decisions:
|
|
46
|
+
- the key decisions, constraints, and assumptions already in play
|
|
47
|
+
|
|
48
|
+
Diagnosis:
|
|
49
|
+
- what is actually going on
|
|
50
|
+
- what the main agent may be missing
|
|
51
|
+
|
|
52
|
+
Drift / contradiction check:
|
|
53
|
+
- where the current trajectory conflicts with inherited decisions or constraints
|
|
54
|
+
- what assumptions have quietly changed
|
|
55
|
+
|
|
56
|
+
Recommendation:
|
|
57
|
+
- the best next move
|
|
58
|
+
- why it is the best move
|
|
59
|
+
- if recommending a pivot, which inherited decision is being revised and why
|
|
60
|
+
|
|
61
|
+
Risks:
|
|
62
|
+
- what could still go wrong
|
|
63
|
+
- what assumptions remain uncertain
|
|
64
|
+
|
|
65
|
+
Need from main agent:
|
|
66
|
+
- specific question or decision required before continuing, if any
|
|
67
|
+
|
|
68
|
+
Suggested execution prompt:
|
|
69
|
+
- a concrete prompt for `oracle-executor`, only if an executor handoff is actually warranted
|
|
70
|
+
- if no handoff is warranted, say so explicitly
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-subagents",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.3",
|
|
4
4
|
"description": "Pi extension for delegating tasks to subagents with chains, parallel execution, and TUI clarification",
|
|
5
5
|
"author": "Nico Bailon",
|
|
6
6
|
"license": "MIT",
|
|
@@ -50,8 +50,10 @@
|
|
|
50
50
|
"@mariozechner/pi-agent-core": "*",
|
|
51
51
|
"@mariozechner/pi-ai": "*",
|
|
52
52
|
"@mariozechner/pi-coding-agent": "*",
|
|
53
|
-
"@mariozechner/pi-tui": "*"
|
|
54
|
-
|
|
53
|
+
"@mariozechner/pi-tui": "*"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"typebox": "^1.1.24"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@marcfargas/pi-test-harness": "^0.5.0",
|
package/schemas.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* TypeBox schemas for subagent tool parameters
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Type } from "
|
|
5
|
+
import { Type } from "typebox";
|
|
6
6
|
|
|
7
7
|
// Note: Using Type.Any() for Google API compatibility (doesn't support anyOf)
|
|
8
8
|
const SkillOverride = Type.Any({ description: "Skill name(s) to inject (comma-separated), array of strings, or boolean (false disables, true uses default)" });
|