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.
@@ -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 4). Edits apply to
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. `/subagents mode manual|adaptive|coordinator` and
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-sol", effort: "medium", tier: "balanced" },
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" },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "defaultModel": null,
3
3
  "defaultTools": "read, bash, edit, write, web_search, web_fetch",
4
- "maxConcurrent": 4,
4
+ "maxConcurrent": 6,
5
5
  "delegationMode": "adaptive",
6
6
 
7
7
  "toolExtensions": {
@@ -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 = 4;
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-sol` | medium | balanced |
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. The page uses the same selected-row and
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 4 and applies to both single and batch launches. Lowering it
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 4**).
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<void>((tui, theme, _kb, done) => createSubagentSettingsPage(theme, {
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
- }, () => { refreshBackgroundWorkNavigator(ctx); tui.requestRender(); }, () => done()));
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
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-better-subagents",
3
- "version": "0.21.0",
3
+ "version": "0.21.1",
4
4
  "description": "Pi extension for detached, sandboxed subagent runs that keep the foreground session free.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -5,7 +5,7 @@ id: role.researcher
5
5
  name: Researcher
6
6
  description: Owns external-source evidence and factual uncertainty; excludes repo mapping and changes.
7
7
  defaults:
8
- model: openai/gpt-6.1-sol
8
+ model: openai/gpt-6.1-terra
9
9
  effort: medium
10
10
  tier: balanced
11
11
  ---
@@ -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 === 2) lines.push("");
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.0",
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.0",
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"