pi-better-harness 0.33.0 → 0.33.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/node_modules/pi-better-subagents/README.md +3 -2
- package/node_modules/pi-better-subagents/catalog-schema.ts +1 -1
- package/node_modules/pi-better-subagents/config.json +1 -1
- package/node_modules/pi-better-subagents/config.ts +1 -1
- package/node_modules/pi-better-subagents/docs/agent-catalog.md +1 -1
- package/node_modules/pi-better-subagents/docs/usage.md +4 -3
- package/node_modules/pi-better-subagents/index.ts +5 -2
- package/node_modules/pi-better-subagents/package.json +1 -1
- package/node_modules/pi-better-subagents/roles/role.researcher.md +1 -1
- package/node_modules/pi-better-subagents/settings-page.ts +6 -2
- package/package.json +2 -2
|
@@ -39,10 +39,11 @@ Linux confinement requires a usable `bubblewrap` backend and Pi SDK 0.82.1 or ne
|
|
|
39
39
|
|
|
40
40
|
The user config sets `delegationMode` to `manual`, `adaptive` (default), or
|
|
41
41
|
`coordinator`. `/subagents settings` (or `/subagents`) opens a settings page
|
|
42
|
-
for delegation mode and the concurrent-subagent cap (default
|
|
42
|
+
for delegation mode and the concurrent-subagent cap (default 6). Edits apply to
|
|
43
43
|
this session and persist across reloads; Ctrl+S saves both as defaults, and
|
|
44
44
|
Reset to defaults clears
|
|
45
|
-
session overrides.
|
|
45
|
+
session overrides. Agents opens the same catalog as `/agents`.
|
|
46
|
+
`/subagents mode manual|adaptive|coordinator` and
|
|
46
47
|
`/subagents cap <number>` are command equivalents; `/subagents save` persists
|
|
47
48
|
both. Lowering the cap blocks new single and batch launches, including launches
|
|
48
49
|
still preparing, without stopping running work. Saved configuration changes are
|
|
@@ -72,7 +72,7 @@ export const PARSER_LIMITS = {
|
|
|
72
72
|
* runtime already uses. Tiers are catalog policy, not benchmark rankings.
|
|
73
73
|
*/
|
|
74
74
|
export const APPROVED_ROLE_DEFAULTS = [
|
|
75
|
-
{ id: "role.researcher", name: "Researcher", model: "openai/gpt-6.1-
|
|
75
|
+
{ id: "role.researcher", name: "Researcher", model: "openai/gpt-6.1-terra", effort: "medium", tier: "balanced" },
|
|
76
76
|
{ id: "role.explorer", name: "Explorer", model: "openai/gpt-6-luna", effort: "medium", tier: "efficient" },
|
|
77
77
|
{ id: "role.product-manager", name: "Product Manager", model: "openai/gpt-6.1-sol", effort: "medium", tier: "balanced" },
|
|
78
78
|
{ id: "role.developer", name: "Developer", model: "openai/gpt-6.1-sol", effort: "high", tier: "balanced" },
|
|
@@ -73,7 +73,7 @@ export interface SubagentConfig extends TimingSettings {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
/** Concurrency cap when config.json sets none. */
|
|
76
|
-
export const DEFAULT_MAX_CONCURRENT =
|
|
76
|
+
export const DEFAULT_MAX_CONCURRENT = 6;
|
|
77
77
|
|
|
78
78
|
export function isConcurrencyCap(value: unknown): value is number {
|
|
79
79
|
return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
|
|
@@ -100,7 +100,7 @@ Model availability, same-tier fallback, and nearest-effort adjustment are not de
|
|
|
100
100
|
|
|
101
101
|
| Role | Stored id | Name | Model | Effort | Tier |
|
|
102
102
|
| --- | --- | --- | --- | --- | --- |
|
|
103
|
-
| `researcher` | `role.researcher` | Researcher | `openai/gpt-6.1-
|
|
103
|
+
| `researcher` | `role.researcher` | Researcher | `openai/gpt-6.1-terra` | medium | balanced |
|
|
104
104
|
| `explorer` | `role.explorer` | Explorer | `openai/gpt-6-luna` | medium | efficient |
|
|
105
105
|
| `product-manager` | `role.product-manager` | Product Manager | `openai/gpt-6.1-sol` | medium | balanced |
|
|
106
106
|
| `developer` | `role.developer` | Developer | `openai/gpt-6.1-sol` | high | balanced |
|
|
@@ -19,7 +19,8 @@ Set `delegationMode` in the user config described under
|
|
|
19
19
|
`coordinator` (default `adaptive`). This controls foreground delegation guidance,
|
|
20
20
|
not child permissions or catalog definitions. `/subagents settings` (or simply
|
|
21
21
|
`/subagents`) opens the terminal settings page with mode and concurrent-subagent
|
|
22
|
-
cap controls and Reset to defaults.
|
|
22
|
+
cap controls, an Agents shortcut to `/agents`, and Reset to defaults.
|
|
23
|
+
The page uses the same selected-row and
|
|
23
24
|
active-cell styling as `/sandbox`, with one editable value column.
|
|
24
25
|
Edits automatically persist for this session, including across reloads; Escape
|
|
25
26
|
closes the page without undoing them.
|
|
@@ -35,7 +36,7 @@ Command equivalents also work outside the terminal UI:
|
|
|
35
36
|
/subagents reset
|
|
36
37
|
```
|
|
37
38
|
|
|
38
|
-
The cap defaults to
|
|
39
|
+
The cap defaults to 6 and applies to both single and batch launches. Lowering it
|
|
39
40
|
below the running count leaves existing work untouched and blocks new admissions
|
|
40
41
|
until capacity becomes available. Slots already reserved by an in-flight launch
|
|
41
42
|
remain admitted. Settings apply to this parent Pi process, not
|
|
@@ -481,7 +482,7 @@ The effective config also sets:
|
|
|
481
482
|
- `delegationMode` — foreground policy (`manual`, `adaptive`, or `coordinator`;
|
|
482
483
|
default `adaptive`). `/subagents mode ...` changes only the current session.
|
|
483
484
|
`/subagents save` saves mode and cap together as config defaults.
|
|
484
|
-
- `maxConcurrent` — positive whole-number concurrency cap (**default
|
|
485
|
+
- `maxConcurrent` — positive whole-number concurrency cap (**default 6**).
|
|
485
486
|
`/subagents cap <number>` overrides it for this session. Both single and batch
|
|
486
487
|
admissions respect the cap; existing runs are never stopped by a cap change.
|
|
487
488
|
Use `/subagents settings` to edit both controls or `/subagents reset` to return
|
|
@@ -2298,7 +2298,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2298
2298
|
});
|
|
2299
2299
|
const openSettings = async (ctx: ExtensionCommandContext): Promise<void> => {
|
|
2300
2300
|
if (ctx.mode === "tui" && ctx.hasUI && typeof ctx.ui.custom === "function") {
|
|
2301
|
-
await ctx.ui.custom<
|
|
2301
|
+
const next = await ctx.ui.custom<"agents" | undefined>((tui, theme, _kb, done) => createSubagentSettingsPage(theme, {
|
|
2302
2302
|
get: () => {
|
|
2303
2303
|
const settings = effectiveSettings();
|
|
2304
2304
|
return {
|
|
@@ -2310,7 +2310,10 @@ export default function (pi: ExtensionAPI) {
|
|
|
2310
2310
|
};
|
|
2311
2311
|
},
|
|
2312
2312
|
changeMode, changeCap, save: saveSettings, reset: resetSettings,
|
|
2313
|
-
|
|
2313
|
+
// Close this page first; the catalog opens after ui.custom resolves.
|
|
2314
|
+
openAgents: () => done("agents"),
|
|
2315
|
+
}, () => { refreshBackgroundWorkNavigator(ctx); tui.requestRender(); }, () => done(undefined)));
|
|
2316
|
+
if (next === "agents") await agentOperations.openCatalog(ctx);
|
|
2314
2317
|
} else {
|
|
2315
2318
|
ctx.ui.notify(`Delegation mode: ${activeDelegationMode()}. Concurrent subagents: ${activeConcurrencyCap()}. Use /subagents mode <mode> or /subagents cap <number>; /subagents save persists both.`, "info");
|
|
2316
2319
|
}
|
|
@@ -18,9 +18,11 @@ export interface SubagentSettingsHandlers {
|
|
|
18
18
|
changeCap(cap: number): void;
|
|
19
19
|
save(): { ok: boolean; message: string };
|
|
20
20
|
reset(): void;
|
|
21
|
+
/** Opens the same catalog as `/agents`. The caller closes this page first. */
|
|
22
|
+
openAgents?(): void;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
const labels = ["Delegation mode", "Concurrent subagents", "Reset to defaults"];
|
|
25
|
+
const labels = ["Delegation mode", "Concurrent subagents", "Agents", "Reset to defaults"];
|
|
24
26
|
|
|
25
27
|
function cell(text: string, width: number): string {
|
|
26
28
|
const clipped = Tui.truncateToWidth(text, width, "");
|
|
@@ -57,6 +59,8 @@ export function createSubagentSettingsPage(
|
|
|
57
59
|
input.handleInput("\x05");
|
|
58
60
|
input.focused = focused;
|
|
59
61
|
report("");
|
|
62
|
+
} else if (row === 2) {
|
|
63
|
+
handlers.openAgents?.();
|
|
60
64
|
} else {
|
|
61
65
|
handlers.reset();
|
|
62
66
|
report("Session settings reset to saved defaults.");
|
|
@@ -118,7 +122,7 @@ export function createSubagentSettingsPage(
|
|
|
118
122
|
const lines: string[] = [theme.fg("accent", theme.bold(" Subagent settings")), ""];
|
|
119
123
|
labels.forEach((label, index) => {
|
|
120
124
|
const selected = index === row;
|
|
121
|
-
if (index ===
|
|
125
|
+
if (index === labels.length - 1) lines.push("");
|
|
122
126
|
const title = theme.fg(selected ? "accent" : "text", marker(selected) + label);
|
|
123
127
|
if (index >= 2) {
|
|
124
128
|
lines.push(highlight(title, selected));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-better-harness",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.1",
|
|
4
4
|
"description": "Pi extension bundle for a write sandbox, subagents, background tasks, SSH, goals, and Outcome & Todo.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"pi-better-goal": "0.10.1",
|
|
58
58
|
"pi-better-sandbox": "0.14.0",
|
|
59
59
|
"pi-better-ssh": "0.1.3",
|
|
60
|
-
"pi-better-subagents": "0.21.
|
|
60
|
+
"pi-better-subagents": "0.21.1",
|
|
61
61
|
"proper-lockfile": "^4.1.2",
|
|
62
62
|
"smol-toml": "1.9.0",
|
|
63
63
|
"yaml": "^2.9.1"
|