@jwilger/pi-development-system 0.12.0 → 0.13.0
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/agents/implementer.md
CHANGED
|
@@ -32,7 +32,7 @@ You are an implementer. You receive exactly one task record and nothing else: do
|
|
|
32
32
|
- Touch only the files the task lists. If the task needs another file, a new dependency, or a design choice, call agent_pause naming what you need. Do not invent policy to make something pass.
|
|
33
33
|
- Never weaken, skip or delete a test to get green, and never add a lint suppression without a stated reason.
|
|
34
34
|
- Do not commit, push or run git history commands; the coordinator delivers.
|
|
35
|
-
-
|
|
35
|
+
- You start with no skills or repository rules loaded and no devsys guards running in your session: the rules in this list are the whole contract. If the task conflicts with one, stop and ask.
|
|
36
36
|
|
|
37
37
|
## Finish
|
|
38
38
|
|
package/package.json
CHANGED
|
@@ -28,7 +28,7 @@ implementer and reviewer work. It returns a slot, a thinking level and, when one
|
|
|
28
28
|
resolves on this machine, a model. Pass them through:
|
|
29
29
|
|
|
30
30
|
```text
|
|
31
|
-
agent_spawn({path: "/
|
|
31
|
+
agent_spawn({path: "/impl-add-flag", type: "implementer", task: "...",
|
|
32
32
|
model: "<from route>", thinkingLevel: "<from route>"})
|
|
33
33
|
```
|
|
34
34
|
|
|
@@ -48,8 +48,10 @@ you deliver after review.
|
|
|
48
48
|
|
|
49
49
|
## The reviewer is always fresh
|
|
50
50
|
|
|
51
|
-
A reviewer that watched the work being written shares its blind spots.
|
|
52
|
-
|
|
51
|
+
A reviewer that watched the work being written shares its blind spots. A path
|
|
52
|
+
under `/root/...` inherits your whole conversation, so spawn reviewers and
|
|
53
|
+
implementers at a top-level independent path (one segment, for example
|
|
54
|
+
`/review-1` or `/impl-add-flag`): independent roots start with no history. Give it the diff
|
|
53
55
|
range and the packet format (`agents/reviewer.md`), and never tell it what you
|
|
54
56
|
concluded. Fix every blocking and should-fix finding, then ask for a new round.
|
|
55
57
|
|
|
@@ -730,6 +730,8 @@ export class ThreadManager {
|
|
|
730
730
|
...record.view,
|
|
731
731
|
sessionFile: record.driver ? record.driver.sessionFile : record.view.sessionFile,
|
|
732
732
|
});
|
|
733
|
+
// devsys: show per-spawn pins so agent_status reports what the thread was told to run on.
|
|
734
|
+
if (record.definition?.spawnOverrides) view.pinned = { ...record.definition.spawnOverrides };
|
|
733
735
|
if (record.liveInputTokens) view.inputTokens = (view.inputTokens ?? 0) + record.liveInputTokens;
|
|
734
736
|
if (record.liveOutputTokens)
|
|
735
737
|
view.outputTokens = (view.outputTokens ?? 0) + record.liveOutputTokens;
|
|
@@ -200,7 +200,9 @@ export function createDriverFactory(
|
|
|
200
200
|
? resolved.get(`${ctx.sessionManager.getSessionId()}:${parentPath}`)
|
|
201
201
|
: undefined;
|
|
202
202
|
const mode = getModelSelection();
|
|
203
|
-
|
|
203
|
+
// devsys: an explicit per-spawn model pin bypasses preference/scope policy (also on resume).
|
|
204
|
+
const pinned = type.spawnOverrides?.model !== undefined;
|
|
205
|
+
const preferences = mode === "use-current" || pinned ? undefined : getModelPreferences(type);
|
|
204
206
|
let provider = parent?.provider ?? ctx.model?.provider;
|
|
205
207
|
let id = parent?.id ?? ctx.model?.id;
|
|
206
208
|
if (mode === "use-current") {
|
package/src/subagents/types.ts
CHANGED
|
@@ -68,6 +68,8 @@ export interface ThreadView {
|
|
|
68
68
|
inputTokens?: number;
|
|
69
69
|
/** Cumulative output tokens. Live views include the in-progress message. */
|
|
70
70
|
outputTokens?: number;
|
|
71
|
+
/** devsys: per-spawn model/thinkingLevel pin requested through agent_spawn, when any. */
|
|
72
|
+
pinned?: SpawnOverrides;
|
|
71
73
|
}
|
|
72
74
|
export type DriverEvent =
|
|
73
75
|
| { kind: "activity" | "error"; text: string }
|