pi-cohort 2.0.1 → 3.0.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/CHANGELOG.md +16 -0
- package/README.md +6 -6
- package/package.json +3 -2
- 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,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.0.1] - 2026-07-04
|
|
4
|
+
|
|
5
|
+
Tagged releases now get GitHub Release notes automatically, sourced from the CHANGELOG rather than an LLM or external API.
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **`release.yml` posts release notes.** A new `release-notes` job (`needs: publish`, `contents: write`) extracts the CHANGELOG section matching the pushed tag with `awk` and publishes it as the GitHub Release body via `gh release create` (falling back to `gh release edit`). No LLM or API key; only `github.token`.
|
|
9
|
+
|
|
10
|
+
## [3.0.0] - 2026-07-02
|
|
11
|
+
|
|
12
|
+
Completes the `pi-subagents` -> `pi-cohort` rename by rebranding the last user-facing identifiers that still carried the old name.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **BREAKING:** Renamed the `/subagents-doctor` slash command to `/cohort-doctor`. The old name is gone; update any muscle-memory or scripted invocations.
|
|
16
|
+
- **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.
|
|
17
|
+
- 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.
|
|
18
|
+
|
|
3
19
|
## [2.0.1] - 2026-07-02
|
|
4
20
|
|
|
5
21
|
### Fixed
|
package/README.md
CHANGED
|
@@ -188,7 +188,7 @@ Show me the current async runs.
|
|
|
188
188
|
If something feels misconfigured, run:
|
|
189
189
|
|
|
190
190
|
```text
|
|
191
|
-
/
|
|
191
|
+
/cohort-doctor
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
or ask:
|
|
@@ -257,7 +257,7 @@ If a child appears stalled, needs-attention notices can show up in the parent se
|
|
|
257
257
|
If messages do not show up, run:
|
|
258
258
|
|
|
259
259
|
```text
|
|
260
|
-
/
|
|
260
|
+
/cohort-doctor
|
|
261
261
|
```
|
|
262
262
|
|
|
263
263
|
For normal use, you do not need to configure anything. Advanced users can tune the bridge with `intercomBridge` in the configuration section below.
|
|
@@ -284,7 +284,7 @@ Skip this section until you want exact syntax.
|
|
|
284
284
|
| `/chain agent1 "task1" -> agent2 "task2"` | Run agents in sequence |
|
|
285
285
|
| `/parallel agent1 "task1" -> agent2 "task2"` | Run agents in parallel |
|
|
286
286
|
| `/run-chain <chainName> -- <task>` | Launch a saved `.chain.md` or `.chain.json` workflow |
|
|
287
|
-
| `/
|
|
287
|
+
| `/cohort-doctor` | Show read-only setup diagnostics |
|
|
288
288
|
|
|
289
289
|
Commands validate agent names locally, support tab completion, and send results back into the conversation.
|
|
290
290
|
|
|
@@ -394,7 +394,7 @@ Agent locations, lowest to highest priority:
|
|
|
394
394
|
|
|
395
395
|
| Scope | Path |
|
|
396
396
|
|-------|------|
|
|
397
|
-
| Builtin | `<agent-dir>/extensions/
|
|
397
|
+
| Builtin | `<agent-dir>/extensions/pi-cohort/agents/` |
|
|
398
398
|
| User (global) | `~/.agents/*.md` |
|
|
399
399
|
| User (pi profile) | `<PI_CODING_AGENT_DIR>/agents/*.md` |
|
|
400
400
|
| Project (legacy) * | `<level>/.agents/*.md` |
|
|
@@ -947,7 +947,7 @@ After a worktree parallel step completes, per-agent diff stats are appended to t
|
|
|
947
947
|
|
|
948
948
|
## Configuration
|
|
949
949
|
|
|
950
|
-
`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`.
|
|
951
951
|
|
|
952
952
|
### `PI_CODING_AGENT_DIR`
|
|
953
953
|
|
|
@@ -1031,7 +1031,7 @@ Controls whether subagents receive runtime intercom coordination instructions an
|
|
|
1031
1031
|
Fields:
|
|
1032
1032
|
|
|
1033
1033
|
- `mode`: default `always`; use `fork-only` to inject only for forked runs, or `off` to disable the bridge.
|
|
1034
|
-
- `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/`.
|
|
1035
1035
|
|
|
1036
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.
|
|
1037
1037
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-cohort",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
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",
|
|
@@ -34,10 +34,11 @@
|
|
|
34
34
|
"CHANGELOG.md"
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
|
+
"check:agents-core": "node scripts/check-agents-core.mjs",
|
|
37
38
|
"test": "npm run test:unit",
|
|
38
39
|
"test:unit": "node --experimental-strip-types --test test/unit/*.test.ts",
|
|
39
40
|
"test:integration": "node --experimental-transform-types --import ./test/support/register-loader.mjs --test test/integration/*.test.ts",
|
|
40
|
-
"test:all": "npm run test:unit && npm run test:integration"
|
|
41
|
+
"test:all": "npm run check:agents-core && npm run test:unit && npm run test:integration"
|
|
41
42
|
},
|
|
42
43
|
"pi": {
|
|
43
44
|
"extensions": [
|
|
@@ -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
|
},
|