pi-cohort 2.0.0 → 3.0.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/CHANGELOG.md +14 -0
- package/README.md +6 -12
- package/package.json +1 -1
- package/skills/pi-cohort/SKILL.md +3 -3
- package/src/extension/config.ts +2 -2
- package/src/extension/index.ts +1 -1
- package/src/intercom/intercom-bridge.ts +1 -1
- package/src/shared/types.ts +2 -2
- package/src/slash/slash-commands.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.0.0] - 2026-07-02
|
|
4
|
+
|
|
5
|
+
Completes the `pi-subagents` -> `pi-cohort` rename by rebranding the last user-facing identifiers that still carried the old name.
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- **BREAKING:** Renamed the `/subagents-doctor` slash command to `/cohort-doctor`. The old name is gone; update any muscle-memory or scripted invocations.
|
|
9
|
+
- **BREAKING:** Moved the extension config file from `<PI_CODING_AGENT_DIR>/extensions/subagent/config.json` to `<PI_CODING_AGENT_DIR>/extensions/pi-cohort/config.json`, aligning it with where `pi install npm:pi-cohort` places the extension. An existing `extensions/subagent/config.json` is no longer read; move it to the new path. The same rename applies to the default intercom-bridge settings dir and the documented `instructionFile` relative-path root.
|
|
10
|
+
- Rebranded the internal async widget and grand-total status keys (`subagent-async` -> `pi-cohort-async`, `subagents-grand-total` -> `pi-cohort-grand-total`). No user action required.
|
|
11
|
+
|
|
12
|
+
## [2.0.1] - 2026-07-02
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- Removed the stale `pi-subagents` banner image and demo video from the README; they carried the old branding and rendered wrong on the GitHub and npm package pages.
|
|
16
|
+
|
|
3
17
|
## [2.0.0] - 2026-07-02
|
|
4
18
|
|
|
5
19
|
First public npm release under the new name. Breaking public-identity change: package renamed, distribution moved from git-tag pins to npm.
|
package/README.md
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
<p>
|
|
2
|
-
<img src="https://raw.githubusercontent.com/jjuraszek/pi-cohort/main/banner.png" alt="pi-cohort" width="1100">
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
1
|
# pi-cohort
|
|
6
2
|
|
|
7
3
|
`pi-cohort` lets Pi delegate work to focused child agents. Use it for code review, scouting, implementation, parallel audits, saved workflows, background jobs, and anything else that benefits from a second or third set of model eyes.
|
|
8
4
|
|
|
9
|
-
https://github.com/user-attachments/assets/702554ec-faaf-4635-80aa-fb5d6e292fd1
|
|
10
|
-
|
|
11
5
|
## Installation
|
|
12
6
|
|
|
13
7
|
```bash
|
|
@@ -194,7 +188,7 @@ Show me the current async runs.
|
|
|
194
188
|
If something feels misconfigured, run:
|
|
195
189
|
|
|
196
190
|
```text
|
|
197
|
-
/
|
|
191
|
+
/cohort-doctor
|
|
198
192
|
```
|
|
199
193
|
|
|
200
194
|
or ask:
|
|
@@ -263,7 +257,7 @@ If a child appears stalled, needs-attention notices can show up in the parent se
|
|
|
263
257
|
If messages do not show up, run:
|
|
264
258
|
|
|
265
259
|
```text
|
|
266
|
-
/
|
|
260
|
+
/cohort-doctor
|
|
267
261
|
```
|
|
268
262
|
|
|
269
263
|
For normal use, you do not need to configure anything. Advanced users can tune the bridge with `intercomBridge` in the configuration section below.
|
|
@@ -290,7 +284,7 @@ Skip this section until you want exact syntax.
|
|
|
290
284
|
| `/chain agent1 "task1" -> agent2 "task2"` | Run agents in sequence |
|
|
291
285
|
| `/parallel agent1 "task1" -> agent2 "task2"` | Run agents in parallel |
|
|
292
286
|
| `/run-chain <chainName> -- <task>` | Launch a saved `.chain.md` or `.chain.json` workflow |
|
|
293
|
-
| `/
|
|
287
|
+
| `/cohort-doctor` | Show read-only setup diagnostics |
|
|
294
288
|
|
|
295
289
|
Commands validate agent names locally, support tab completion, and send results back into the conversation.
|
|
296
290
|
|
|
@@ -400,7 +394,7 @@ Agent locations, lowest to highest priority:
|
|
|
400
394
|
|
|
401
395
|
| Scope | Path |
|
|
402
396
|
|-------|------|
|
|
403
|
-
| Builtin | `<agent-dir>/extensions/
|
|
397
|
+
| Builtin | `<agent-dir>/extensions/pi-cohort/agents/` |
|
|
404
398
|
| User (global) | `~/.agents/*.md` |
|
|
405
399
|
| User (pi profile) | `<PI_CODING_AGENT_DIR>/agents/*.md` |
|
|
406
400
|
| Project (legacy) * | `<level>/.agents/*.md` |
|
|
@@ -953,7 +947,7 @@ After a worktree parallel step completes, per-agent diff stats are appended to t
|
|
|
953
947
|
|
|
954
948
|
## Configuration
|
|
955
949
|
|
|
956
|
-
`pi-cohort` reads optional JSON config from `<PI_CODING_AGENT_DIR>/extensions/
|
|
950
|
+
`pi-cohort` reads optional JSON config from `<PI_CODING_AGENT_DIR>/extensions/pi-cohort/config.json`.
|
|
957
951
|
|
|
958
952
|
### `PI_CODING_AGENT_DIR`
|
|
959
953
|
|
|
@@ -1037,7 +1031,7 @@ Controls whether subagents receive runtime intercom coordination instructions an
|
|
|
1037
1031
|
Fields:
|
|
1038
1032
|
|
|
1039
1033
|
- `mode`: default `always`; use `fork-only` to inject only for forked runs, or `off` to disable the bridge.
|
|
1040
|
-
- `instructionFile`: optional Markdown template replacing the default bridge instructions. `{orchestratorTarget}` is interpolated. Relative paths resolve from `~/.pi/agent/extensions/
|
|
1034
|
+
- `instructionFile`: optional Markdown template replacing the default bridge instructions. `{orchestratorTarget}` is interpolated. Relative paths resolve from `~/.pi/agent/extensions/pi-cohort/`.
|
|
1041
1035
|
|
|
1042
1036
|
Bridge activation also requires `pi-intercom` to be installed and enabled through `pi install npm:pi-intercom` or a legacy local extension checkout, a targetable current session name or fallback alias, and `pi-intercom` in any explicit agent `extensions` allowlist.
|
|
1043
1037
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-cohort",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Delegate Pi work to focused child agents: code review, scouting, implementation, parallel audits, saved chains, and background jobs.",
|
|
5
5
|
"author": "Jacek Juraszek",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,7 +33,7 @@ Humans often use the slash-command layer instead:
|
|
|
33
33
|
- `/chain` — launch a chain of steps
|
|
34
34
|
- `/parallel` — launch top-level parallel tasks
|
|
35
35
|
- `/run-chain` — launch a saved `.chain.md` or `.chain.json` workflow
|
|
36
|
-
- `/
|
|
36
|
+
- `/cohort-doctor` — diagnose setup, discovery, async paths, and intercom bridge state
|
|
37
37
|
|
|
38
38
|
Prefer the tool when you are writing agent logic. Prefer the slash commands when
|
|
39
39
|
you are guiding a human through an interactive flow.
|
|
@@ -349,7 +349,7 @@ Use diagnostics when setup or child startup looks wrong:
|
|
|
349
349
|
subagent({ action: "doctor" })
|
|
350
350
|
```
|
|
351
351
|
|
|
352
|
-
Humans can use `/
|
|
352
|
+
Humans can use `/cohort-doctor` for the same read-only report. It checks runtime paths, discovery counts, async support, current session context, and intercom bridge state.
|
|
353
353
|
|
|
354
354
|
### Subagent control
|
|
355
355
|
|
|
@@ -497,7 +497,7 @@ Or inspects unresolved asks first:
|
|
|
497
497
|
intercom({ action: "pending" })
|
|
498
498
|
```
|
|
499
499
|
|
|
500
|
-
If intercom messages do not show up, run `subagent({ action: "doctor" })` or `/
|
|
500
|
+
If intercom messages do not show up, run `subagent({ action: "doctor" })` or `/cohort-doctor`.
|
|
501
501
|
|
|
502
502
|
## Management Mode
|
|
503
503
|
|
package/src/extension/config.ts
CHANGED
|
@@ -4,13 +4,13 @@ import type { ExtensionConfig } from "../shared/types.ts";
|
|
|
4
4
|
import { getAgentDir } from "../shared/utils.ts";
|
|
5
5
|
|
|
6
6
|
export function loadConfig(): ExtensionConfig {
|
|
7
|
-
const configPath = path.join(getAgentDir(), "extensions", "
|
|
7
|
+
const configPath = path.join(getAgentDir(), "extensions", "pi-cohort", "config.json");
|
|
8
8
|
try {
|
|
9
9
|
if (fs.existsSync(configPath)) {
|
|
10
10
|
return JSON.parse(fs.readFileSync(configPath, "utf-8")) as ExtensionConfig;
|
|
11
11
|
}
|
|
12
12
|
} catch (error) {
|
|
13
|
-
console.error(`Failed to load
|
|
13
|
+
console.error(`Failed to load pi-cohort config from '${configPath}':`, error);
|
|
14
14
|
}
|
|
15
15
|
return {};
|
|
16
16
|
}
|
package/src/extension/index.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Modes: single (agent + task), parallel (tasks[]), chain (chain[] with {previous})
|
|
9
9
|
* Toggle: async parameter (default: false, configurable via config.json)
|
|
10
10
|
*
|
|
11
|
-
* Config file: ~/.pi/agent/extensions/
|
|
11
|
+
* Config file: ~/.pi/agent/extensions/pi-cohort/config.json
|
|
12
12
|
* { "asyncByDefault": true, "forceTopLevelAsync": true, "maxSubagentDepth": 1, "showRosterOnStart": true, "intercomBridge": { "mode": "always", "instructionFile": "./intercom-bridge.md" }, "worktreeSetupHook": "./scripts/setup-worktree.mjs" }
|
|
13
13
|
*/
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ function defaultIntercomConfigPath(agentDir = defaultAgentDir()): string {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
function defaultSubagentConfigDir(agentDir = defaultAgentDir()): string {
|
|
25
|
-
return path.join(agentDir, "extensions", "
|
|
25
|
+
return path.join(agentDir, "extensions", "pi-cohort");
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
const DEFAULT_INTERCOM_TARGET_PREFIX = "subagent-chat";
|
package/src/shared/types.ts
CHANGED
|
@@ -929,8 +929,8 @@ export const RESULTS_DIR = path.join(TEMP_ROOT_DIR, "async-subagent-results");
|
|
|
929
929
|
export const ASYNC_DIR = path.join(TEMP_ROOT_DIR, "async-subagent-runs");
|
|
930
930
|
export const CHAIN_RUNS_DIR = path.join(TEMP_ROOT_DIR, "chain-runs");
|
|
931
931
|
export const TEMP_ARTIFACTS_DIR = path.join(TEMP_ROOT_DIR, "artifacts");
|
|
932
|
-
export const WIDGET_KEY = "
|
|
933
|
-
export const GRAND_TOTAL_STATUS_KEY = "
|
|
932
|
+
export const WIDGET_KEY = "pi-cohort-async";
|
|
933
|
+
export const GRAND_TOTAL_STATUS_KEY = "pi-cohort-grand-total";
|
|
934
934
|
export const SLASH_RESULT_TYPE = "subagent-slash-result";
|
|
935
935
|
export const SLASH_SUBAGENT_REQUEST_EVENT = "subagent:slash:request";
|
|
936
936
|
export const SLASH_SUBAGENT_STARTED_EVENT = "subagent:slash:started";
|
|
@@ -557,8 +557,8 @@ export function registerSlashCommands(
|
|
|
557
557
|
});
|
|
558
558
|
|
|
559
559
|
|
|
560
|
-
pi.registerCommand("
|
|
561
|
-
description: "Show
|
|
560
|
+
pi.registerCommand("cohort-doctor", {
|
|
561
|
+
description: "Show pi-cohort diagnostics",
|
|
562
562
|
handler: async (_args, ctx) => {
|
|
563
563
|
await runSlashSubagent(pi, ctx, { action: "doctor" });
|
|
564
564
|
},
|