@jaybeeuu/agent-cortex 1.42.0 → 1.43.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/skills/style-versioning/SKILL.md +73 -2
- package/.github/workflows/ci.yml +47 -27
- package/AGENTS.md +23 -2
- package/CHANGELOG.md +166 -0
- package/README.md +125 -73
- package/agents/README.md +17 -4
- package/bin/agent-cortex.mjs +48 -30
- package/bin/installers/pi.mjs +885 -237
- package/docs/claude-hooks.md +5 -4
- package/docs/commit-signing.md +231 -0
- package/docs/ideas/enable-signed-commit-enforcement-changesets-bot-commits-must-be-signed.md +10 -1
- package/docs/ideas/extension-manifests.md +5 -0
- package/docs/research/disable-model-invocation.md +103 -0
- package/docs/research/skill-design-research.md +2 -2
- package/docs/skills/skill-anatomy.md +5 -1
- package/docs/technical-direction/harness-config.md +25 -1
- package/docs/technical-direction/migration-execution-labels.md +17 -9
- package/extensions/agent-modes/discover.test.ts +19 -0
- package/extensions/agent-modes/discover.ts +25 -3
- package/extensions/session-start/README.md +38 -0
- package/extensions/session-start/index.test.ts +122 -0
- package/extensions/session-start/index.ts +27 -0
- package/extensions/session-start/package.json +19 -0
- package/extensions/session-start/tsconfig.json +12 -0
- package/extensions/skill-stats/pnpm-lock.yaml +329 -0
- package/extensions/subagent/README.md +1 -1
- package/extensions/subagent/agents.test.ts +176 -0
- package/extensions/subagent/agents.ts +102 -11
- package/extensions/subagent/index.ts +2 -1
- package/extensions/subagent/package.json +1 -1
- package/lib/cli.mjs +35 -9
- package/package.json +6 -5
- package/pi/settings.json +1 -7
- package/plugin.json +1 -1
- package/pnpm-workspace.yaml +6 -0
- package/scripts/check-changeset.mjs +42 -0
- package/scripts/lib/release-gates.mjs +61 -0
- package/scripts/lib/verify-worker-tree.mjs +107 -0
- package/scripts/resolve-publish-command.mjs +17 -0
- package/skills/planning/create-task/scripts/pnpm-lock.yaml +342 -0
- package/skills/productivity/validate-agent-dir/scripts/pnpm-lock.yaml +329 -0
- package/skills/workflow/git-workflow/SKILL.md +35 -1
- package/skills/workflow/ralph/REFERENCE.md +17 -1
- package/skills/workflow/ralph/SKILL.md +4 -1
- package/skills/workflow/run-pipeline-stage/SKILL.md +11 -4
- package/skills/workflow/run-pipeline-stage/playbooks/code.md +2 -0
- package/skills/workflow/run-pipeline-stage/playbooks/document.md +3 -0
- package/skills/workflow/run-pipeline-stage/playbooks/fix.md +2 -0
- package/skills/workflow/run-pipeline-stage/prompts/stage-runner.md +11 -0
- package/skills/workflow/run-pipeline-stage/scripts/pnpm-lock.yaml +342 -0
- package/test/cli.test.mjs +26 -29
- package/test/helpers/fake-pi.mjs +132 -0
- package/test/pi-installer.test.mjs +345 -286
- package/test/pi-register.test.mjs +342 -0
- package/test/pi-sweep.test.mjs +619 -0
- package/test/release-gates.test.mjs +190 -0
- package/test/verify-worker-tree.test.mjs +120 -0
- package/token-map.README.md +7 -6
- package/token-map.json +6 -5
- package/extensions/session-start.ts +0 -44
- package/lib/pi-packages.mjs +0 -169
- package/test/pi-packages.test.mjs +0 -295
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { after, before, describe, it } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
7
|
+
|
|
8
|
+
import sessionStartExtension from "./index.ts";
|
|
9
|
+
|
|
10
|
+
// ─── Harness ─────────────────────────────────────────────────────────────────
|
|
11
|
+
|
|
12
|
+
interface InjectedMessage {
|
|
13
|
+
customType: string;
|
|
14
|
+
content: string;
|
|
15
|
+
display: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** A handler recorded from `pi.on`, invoked via Reflect.apply so its exact
|
|
19
|
+
* overload signature does not leak into the fake. */
|
|
20
|
+
type RecordedHandler = (...args: never[]) => unknown;
|
|
21
|
+
|
|
22
|
+
interface FakePi {
|
|
23
|
+
pi: ExtensionAPI;
|
|
24
|
+
/** Simulate pi dispatching `before_agent_start` and return the injected message. */
|
|
25
|
+
start(cwd: string): Promise<InjectedMessage | undefined>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function createFakePi(): FakePi {
|
|
29
|
+
const handlers = new Map<string, RecordedHandler[]>();
|
|
30
|
+
|
|
31
|
+
const pi: ExtensionAPI = {
|
|
32
|
+
on: (event: string, handler: RecordedHandler) => {
|
|
33
|
+
const list = handlers.get(event) ?? [];
|
|
34
|
+
list.push(handler);
|
|
35
|
+
handlers.set(event, list);
|
|
36
|
+
},
|
|
37
|
+
} as unknown as ExtensionAPI;
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
pi,
|
|
41
|
+
async start(cwd) {
|
|
42
|
+
const handler = handlers.get("before_agent_start")?.[0];
|
|
43
|
+
assert.ok(handler, "session-start should register a before_agent_start handler");
|
|
44
|
+
const run = handler as unknown as (
|
|
45
|
+
event: unknown,
|
|
46
|
+
ctx: { cwd: string },
|
|
47
|
+
) => Promise<{ message?: InjectedMessage } | undefined>;
|
|
48
|
+
const result = await run({}, { cwd });
|
|
49
|
+
return result?.message;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Run one simulated session start against `cwd` and return the injected text. */
|
|
55
|
+
async function inject(cwd: string): Promise<string | undefined> {
|
|
56
|
+
const fake = createFakePi();
|
|
57
|
+
sessionStartExtension(fake.pi);
|
|
58
|
+
const message = await fake.start(cwd);
|
|
59
|
+
return message?.content;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ─── Fixtures ────────────────────────────────────────────────────────────────
|
|
63
|
+
|
|
64
|
+
const AGENTS_MD = "# AGENTS\n\nProject instructions live here.";
|
|
65
|
+
const PREFERENCES_MD = "# User Preferences\n\nPrefer pnpm over npm.";
|
|
66
|
+
|
|
67
|
+
describe("session-start injection", () => {
|
|
68
|
+
let emptyProject: string;
|
|
69
|
+
let fullProject: string;
|
|
70
|
+
|
|
71
|
+
before(() => {
|
|
72
|
+
emptyProject = mkdtempSync(join(tmpdir(), "session-start-empty-"));
|
|
73
|
+
fullProject = mkdtempSync(join(tmpdir(), "session-start-full-"));
|
|
74
|
+
writeFileSync(join(fullProject, "AGENTS.md"), AGENTS_MD, "utf-8");
|
|
75
|
+
mkdirSync(join(fullProject, "docs"), { recursive: true });
|
|
76
|
+
writeFileSync(join(fullProject, "docs", "user-preferences.md"), PREFERENCES_MD, "utf-8");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
after(() => {
|
|
80
|
+
rmSync(emptyProject, { recursive: true, force: true });
|
|
81
|
+
rmSync(fullProject, { recursive: true, force: true });
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("injects AGENTS.md and docs/user-preferences.md content", async () => {
|
|
85
|
+
const content = await inject(fullProject);
|
|
86
|
+
assert.ok(content, "expected the context files to be injected");
|
|
87
|
+
assert.match(content, /--- AGENTS\.md ---/);
|
|
88
|
+
assert.match(content, /Project instructions live here\./);
|
|
89
|
+
assert.match(content, /--- user-preferences\.md ---/);
|
|
90
|
+
assert.match(content, /Prefer pnpm over npm\./);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("marks the injected message as a hidden session-start message", async () => {
|
|
94
|
+
const fake = createFakePi();
|
|
95
|
+
sessionStartExtension(fake.pi);
|
|
96
|
+
const message = await fake.start(fullProject);
|
|
97
|
+
|
|
98
|
+
assert.ok(message);
|
|
99
|
+
assert.equal(message.customType, "session-start");
|
|
100
|
+
assert.equal(message.display, false);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it("injects nothing for a project without context files", async () => {
|
|
104
|
+
const content = await inject(emptyProject);
|
|
105
|
+
assert.equal(content, undefined, "no context files means no injected message");
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("never advertises skills with pi-unresolvable /skill: syntax", async () => {
|
|
109
|
+
const content = await inject(fullProject);
|
|
110
|
+
assert.ok(content);
|
|
111
|
+
assert.ok(!content.includes("/skill:"), "pi has no /skill: resolver — drop the hint blurb");
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("never enumerates a fixed subset of skill names", async () => {
|
|
115
|
+
// pi's system prompt already lists every discovered skill with its SKILL.md
|
|
116
|
+
// path; a hand-maintained subset here drifts from skills/ silently.
|
|
117
|
+
const content = (await inject(fullProject)) ?? "";
|
|
118
|
+
for (const skill of ["using-agent-skills", "bd-tool", "git-workflow"]) {
|
|
119
|
+
assert.ok(!content.includes(skill), `${skill} should not be hardcoded in session-start`);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import { loadSessionContext } from "../lib/context-loader.ts";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Session-start extension.
|
|
6
|
+
*
|
|
7
|
+
* Injects the project context files (AGENTS.md, docs/user-preferences.md) at
|
|
8
|
+
* the start of every PI session.
|
|
9
|
+
*
|
|
10
|
+
* It deliberately injects nothing about skills: pi's own system prompt already
|
|
11
|
+
* lists every discovered skill with the absolute path to its SKILL.md, so a
|
|
12
|
+
* local copy is incomplete by construction and drifts from `skills/` silently.
|
|
13
|
+
*/
|
|
14
|
+
export default function (pi: ExtensionAPI) {
|
|
15
|
+
pi.on("before_agent_start", async (_event, ctx) => {
|
|
16
|
+
const contextFiles = loadSessionContext(ctx.cwd);
|
|
17
|
+
if (!contextFiles) return;
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
message: {
|
|
21
|
+
customType: "session-start",
|
|
22
|
+
content: contextFiles,
|
|
23
|
+
display: false,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agent-cortex/session-start",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "node --test --import tsx/esm index.test.ts",
|
|
8
|
+
"typecheck": "tsc --noEmit"
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@earendil-works/pi-coding-agent": "^0.78.1",
|
|
12
|
+
"@types/node": "^22.0.0",
|
|
13
|
+
"tsx": "^4.0.0",
|
|
14
|
+
"typescript": "^5.0.0"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"@earendil-works/pi-coding-agent": "^0.78.1"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
lockfileVersion: '9.0'
|
|
2
|
+
|
|
3
|
+
settings:
|
|
4
|
+
autoInstallPeers: true
|
|
5
|
+
excludeLinksFromLockfile: false
|
|
6
|
+
|
|
7
|
+
importers:
|
|
8
|
+
|
|
9
|
+
.:
|
|
10
|
+
devDependencies:
|
|
11
|
+
'@types/node':
|
|
12
|
+
specifier: ^22.0.0
|
|
13
|
+
version: 22.19.20
|
|
14
|
+
tsx:
|
|
15
|
+
specifier: ^4.0.0
|
|
16
|
+
version: 4.22.4
|
|
17
|
+
typescript:
|
|
18
|
+
specifier: ^5.0.0
|
|
19
|
+
version: 5.9.3
|
|
20
|
+
|
|
21
|
+
packages:
|
|
22
|
+
|
|
23
|
+
'@esbuild/aix-ppc64@0.28.0':
|
|
24
|
+
resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
|
|
25
|
+
engines: {node: '>=18'}
|
|
26
|
+
cpu: [ppc64]
|
|
27
|
+
os: [aix]
|
|
28
|
+
|
|
29
|
+
'@esbuild/android-arm64@0.28.0':
|
|
30
|
+
resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
|
|
31
|
+
engines: {node: '>=18'}
|
|
32
|
+
cpu: [arm64]
|
|
33
|
+
os: [android]
|
|
34
|
+
|
|
35
|
+
'@esbuild/android-arm@0.28.0':
|
|
36
|
+
resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
|
|
37
|
+
engines: {node: '>=18'}
|
|
38
|
+
cpu: [arm]
|
|
39
|
+
os: [android]
|
|
40
|
+
|
|
41
|
+
'@esbuild/android-x64@0.28.0':
|
|
42
|
+
resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
|
|
43
|
+
engines: {node: '>=18'}
|
|
44
|
+
cpu: [x64]
|
|
45
|
+
os: [android]
|
|
46
|
+
|
|
47
|
+
'@esbuild/darwin-arm64@0.28.0':
|
|
48
|
+
resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
|
|
49
|
+
engines: {node: '>=18'}
|
|
50
|
+
cpu: [arm64]
|
|
51
|
+
os: [darwin]
|
|
52
|
+
|
|
53
|
+
'@esbuild/darwin-x64@0.28.0':
|
|
54
|
+
resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
|
|
55
|
+
engines: {node: '>=18'}
|
|
56
|
+
cpu: [x64]
|
|
57
|
+
os: [darwin]
|
|
58
|
+
|
|
59
|
+
'@esbuild/freebsd-arm64@0.28.0':
|
|
60
|
+
resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
|
|
61
|
+
engines: {node: '>=18'}
|
|
62
|
+
cpu: [arm64]
|
|
63
|
+
os: [freebsd]
|
|
64
|
+
|
|
65
|
+
'@esbuild/freebsd-x64@0.28.0':
|
|
66
|
+
resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
|
|
67
|
+
engines: {node: '>=18'}
|
|
68
|
+
cpu: [x64]
|
|
69
|
+
os: [freebsd]
|
|
70
|
+
|
|
71
|
+
'@esbuild/linux-arm64@0.28.0':
|
|
72
|
+
resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
|
|
73
|
+
engines: {node: '>=18'}
|
|
74
|
+
cpu: [arm64]
|
|
75
|
+
os: [linux]
|
|
76
|
+
|
|
77
|
+
'@esbuild/linux-arm@0.28.0':
|
|
78
|
+
resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
|
|
79
|
+
engines: {node: '>=18'}
|
|
80
|
+
cpu: [arm]
|
|
81
|
+
os: [linux]
|
|
82
|
+
|
|
83
|
+
'@esbuild/linux-ia32@0.28.0':
|
|
84
|
+
resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
|
|
85
|
+
engines: {node: '>=18'}
|
|
86
|
+
cpu: [ia32]
|
|
87
|
+
os: [linux]
|
|
88
|
+
|
|
89
|
+
'@esbuild/linux-loong64@0.28.0':
|
|
90
|
+
resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
|
|
91
|
+
engines: {node: '>=18'}
|
|
92
|
+
cpu: [loong64]
|
|
93
|
+
os: [linux]
|
|
94
|
+
|
|
95
|
+
'@esbuild/linux-mips64el@0.28.0':
|
|
96
|
+
resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
|
|
97
|
+
engines: {node: '>=18'}
|
|
98
|
+
cpu: [mips64el]
|
|
99
|
+
os: [linux]
|
|
100
|
+
|
|
101
|
+
'@esbuild/linux-ppc64@0.28.0':
|
|
102
|
+
resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
|
|
103
|
+
engines: {node: '>=18'}
|
|
104
|
+
cpu: [ppc64]
|
|
105
|
+
os: [linux]
|
|
106
|
+
|
|
107
|
+
'@esbuild/linux-riscv64@0.28.0':
|
|
108
|
+
resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
|
|
109
|
+
engines: {node: '>=18'}
|
|
110
|
+
cpu: [riscv64]
|
|
111
|
+
os: [linux]
|
|
112
|
+
|
|
113
|
+
'@esbuild/linux-s390x@0.28.0':
|
|
114
|
+
resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
|
|
115
|
+
engines: {node: '>=18'}
|
|
116
|
+
cpu: [s390x]
|
|
117
|
+
os: [linux]
|
|
118
|
+
|
|
119
|
+
'@esbuild/linux-x64@0.28.0':
|
|
120
|
+
resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
|
|
121
|
+
engines: {node: '>=18'}
|
|
122
|
+
cpu: [x64]
|
|
123
|
+
os: [linux]
|
|
124
|
+
|
|
125
|
+
'@esbuild/netbsd-arm64@0.28.0':
|
|
126
|
+
resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
|
|
127
|
+
engines: {node: '>=18'}
|
|
128
|
+
cpu: [arm64]
|
|
129
|
+
os: [netbsd]
|
|
130
|
+
|
|
131
|
+
'@esbuild/netbsd-x64@0.28.0':
|
|
132
|
+
resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
|
|
133
|
+
engines: {node: '>=18'}
|
|
134
|
+
cpu: [x64]
|
|
135
|
+
os: [netbsd]
|
|
136
|
+
|
|
137
|
+
'@esbuild/openbsd-arm64@0.28.0':
|
|
138
|
+
resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
|
|
139
|
+
engines: {node: '>=18'}
|
|
140
|
+
cpu: [arm64]
|
|
141
|
+
os: [openbsd]
|
|
142
|
+
|
|
143
|
+
'@esbuild/openbsd-x64@0.28.0':
|
|
144
|
+
resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
|
|
145
|
+
engines: {node: '>=18'}
|
|
146
|
+
cpu: [x64]
|
|
147
|
+
os: [openbsd]
|
|
148
|
+
|
|
149
|
+
'@esbuild/openharmony-arm64@0.28.0':
|
|
150
|
+
resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
|
|
151
|
+
engines: {node: '>=18'}
|
|
152
|
+
cpu: [arm64]
|
|
153
|
+
os: [openharmony]
|
|
154
|
+
|
|
155
|
+
'@esbuild/sunos-x64@0.28.0':
|
|
156
|
+
resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
|
|
157
|
+
engines: {node: '>=18'}
|
|
158
|
+
cpu: [x64]
|
|
159
|
+
os: [sunos]
|
|
160
|
+
|
|
161
|
+
'@esbuild/win32-arm64@0.28.0':
|
|
162
|
+
resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
|
|
163
|
+
engines: {node: '>=18'}
|
|
164
|
+
cpu: [arm64]
|
|
165
|
+
os: [win32]
|
|
166
|
+
|
|
167
|
+
'@esbuild/win32-ia32@0.28.0':
|
|
168
|
+
resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
|
|
169
|
+
engines: {node: '>=18'}
|
|
170
|
+
cpu: [ia32]
|
|
171
|
+
os: [win32]
|
|
172
|
+
|
|
173
|
+
'@esbuild/win32-x64@0.28.0':
|
|
174
|
+
resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
|
|
175
|
+
engines: {node: '>=18'}
|
|
176
|
+
cpu: [x64]
|
|
177
|
+
os: [win32]
|
|
178
|
+
|
|
179
|
+
'@types/node@22.19.20':
|
|
180
|
+
resolution: {integrity: sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==}
|
|
181
|
+
|
|
182
|
+
esbuild@0.28.0:
|
|
183
|
+
resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
|
|
184
|
+
engines: {node: '>=18'}
|
|
185
|
+
hasBin: true
|
|
186
|
+
|
|
187
|
+
fsevents@2.3.3:
|
|
188
|
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
|
189
|
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
|
190
|
+
os: [darwin]
|
|
191
|
+
|
|
192
|
+
tsx@4.22.4:
|
|
193
|
+
resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==}
|
|
194
|
+
engines: {node: '>=18.0.0'}
|
|
195
|
+
hasBin: true
|
|
196
|
+
|
|
197
|
+
typescript@5.9.3:
|
|
198
|
+
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
|
|
199
|
+
engines: {node: '>=14.17'}
|
|
200
|
+
hasBin: true
|
|
201
|
+
|
|
202
|
+
undici-types@6.21.0:
|
|
203
|
+
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
|
|
204
|
+
|
|
205
|
+
snapshots:
|
|
206
|
+
|
|
207
|
+
'@esbuild/aix-ppc64@0.28.0':
|
|
208
|
+
optional: true
|
|
209
|
+
|
|
210
|
+
'@esbuild/android-arm64@0.28.0':
|
|
211
|
+
optional: true
|
|
212
|
+
|
|
213
|
+
'@esbuild/android-arm@0.28.0':
|
|
214
|
+
optional: true
|
|
215
|
+
|
|
216
|
+
'@esbuild/android-x64@0.28.0':
|
|
217
|
+
optional: true
|
|
218
|
+
|
|
219
|
+
'@esbuild/darwin-arm64@0.28.0':
|
|
220
|
+
optional: true
|
|
221
|
+
|
|
222
|
+
'@esbuild/darwin-x64@0.28.0':
|
|
223
|
+
optional: true
|
|
224
|
+
|
|
225
|
+
'@esbuild/freebsd-arm64@0.28.0':
|
|
226
|
+
optional: true
|
|
227
|
+
|
|
228
|
+
'@esbuild/freebsd-x64@0.28.0':
|
|
229
|
+
optional: true
|
|
230
|
+
|
|
231
|
+
'@esbuild/linux-arm64@0.28.0':
|
|
232
|
+
optional: true
|
|
233
|
+
|
|
234
|
+
'@esbuild/linux-arm@0.28.0':
|
|
235
|
+
optional: true
|
|
236
|
+
|
|
237
|
+
'@esbuild/linux-ia32@0.28.0':
|
|
238
|
+
optional: true
|
|
239
|
+
|
|
240
|
+
'@esbuild/linux-loong64@0.28.0':
|
|
241
|
+
optional: true
|
|
242
|
+
|
|
243
|
+
'@esbuild/linux-mips64el@0.28.0':
|
|
244
|
+
optional: true
|
|
245
|
+
|
|
246
|
+
'@esbuild/linux-ppc64@0.28.0':
|
|
247
|
+
optional: true
|
|
248
|
+
|
|
249
|
+
'@esbuild/linux-riscv64@0.28.0':
|
|
250
|
+
optional: true
|
|
251
|
+
|
|
252
|
+
'@esbuild/linux-s390x@0.28.0':
|
|
253
|
+
optional: true
|
|
254
|
+
|
|
255
|
+
'@esbuild/linux-x64@0.28.0':
|
|
256
|
+
optional: true
|
|
257
|
+
|
|
258
|
+
'@esbuild/netbsd-arm64@0.28.0':
|
|
259
|
+
optional: true
|
|
260
|
+
|
|
261
|
+
'@esbuild/netbsd-x64@0.28.0':
|
|
262
|
+
optional: true
|
|
263
|
+
|
|
264
|
+
'@esbuild/openbsd-arm64@0.28.0':
|
|
265
|
+
optional: true
|
|
266
|
+
|
|
267
|
+
'@esbuild/openbsd-x64@0.28.0':
|
|
268
|
+
optional: true
|
|
269
|
+
|
|
270
|
+
'@esbuild/openharmony-arm64@0.28.0':
|
|
271
|
+
optional: true
|
|
272
|
+
|
|
273
|
+
'@esbuild/sunos-x64@0.28.0':
|
|
274
|
+
optional: true
|
|
275
|
+
|
|
276
|
+
'@esbuild/win32-arm64@0.28.0':
|
|
277
|
+
optional: true
|
|
278
|
+
|
|
279
|
+
'@esbuild/win32-ia32@0.28.0':
|
|
280
|
+
optional: true
|
|
281
|
+
|
|
282
|
+
'@esbuild/win32-x64@0.28.0':
|
|
283
|
+
optional: true
|
|
284
|
+
|
|
285
|
+
'@types/node@22.19.20':
|
|
286
|
+
dependencies:
|
|
287
|
+
undici-types: 6.21.0
|
|
288
|
+
|
|
289
|
+
esbuild@0.28.0:
|
|
290
|
+
optionalDependencies:
|
|
291
|
+
'@esbuild/aix-ppc64': 0.28.0
|
|
292
|
+
'@esbuild/android-arm': 0.28.0
|
|
293
|
+
'@esbuild/android-arm64': 0.28.0
|
|
294
|
+
'@esbuild/android-x64': 0.28.0
|
|
295
|
+
'@esbuild/darwin-arm64': 0.28.0
|
|
296
|
+
'@esbuild/darwin-x64': 0.28.0
|
|
297
|
+
'@esbuild/freebsd-arm64': 0.28.0
|
|
298
|
+
'@esbuild/freebsd-x64': 0.28.0
|
|
299
|
+
'@esbuild/linux-arm': 0.28.0
|
|
300
|
+
'@esbuild/linux-arm64': 0.28.0
|
|
301
|
+
'@esbuild/linux-ia32': 0.28.0
|
|
302
|
+
'@esbuild/linux-loong64': 0.28.0
|
|
303
|
+
'@esbuild/linux-mips64el': 0.28.0
|
|
304
|
+
'@esbuild/linux-ppc64': 0.28.0
|
|
305
|
+
'@esbuild/linux-riscv64': 0.28.0
|
|
306
|
+
'@esbuild/linux-s390x': 0.28.0
|
|
307
|
+
'@esbuild/linux-x64': 0.28.0
|
|
308
|
+
'@esbuild/netbsd-arm64': 0.28.0
|
|
309
|
+
'@esbuild/netbsd-x64': 0.28.0
|
|
310
|
+
'@esbuild/openbsd-arm64': 0.28.0
|
|
311
|
+
'@esbuild/openbsd-x64': 0.28.0
|
|
312
|
+
'@esbuild/openharmony-arm64': 0.28.0
|
|
313
|
+
'@esbuild/sunos-x64': 0.28.0
|
|
314
|
+
'@esbuild/win32-arm64': 0.28.0
|
|
315
|
+
'@esbuild/win32-ia32': 0.28.0
|
|
316
|
+
'@esbuild/win32-x64': 0.28.0
|
|
317
|
+
|
|
318
|
+
fsevents@2.3.3:
|
|
319
|
+
optional: true
|
|
320
|
+
|
|
321
|
+
tsx@4.22.4:
|
|
322
|
+
dependencies:
|
|
323
|
+
esbuild: 0.28.0
|
|
324
|
+
optionalDependencies:
|
|
325
|
+
fsevents: 2.3.3
|
|
326
|
+
|
|
327
|
+
typescript@5.9.3: {}
|
|
328
|
+
|
|
329
|
+
undici-types@6.21.0: {}
|
|
@@ -58,7 +58,7 @@ This tool executes a separate `pi` subprocess with a delegated system prompt and
|
|
|
58
58
|
|
|
59
59
|
**Project-local agents** (`.pi/agents/*.md`) are repo-controlled prompts that can instruct the model to read files, run bash commands, etc.
|
|
60
60
|
|
|
61
|
-
**Default behavior:** Only loads **user-level agents**
|
|
61
|
+
**Default behavior:** Only loads **user-level agents** — pi's own `~/.pi/agent/agents`, plus the `agents/` tree of the package this extension ships inside when that is a rendered (staged) tree, e.g. `~/.agent-cortex/pi/agents` after `agent-cortex install pi`.
|
|
62
62
|
|
|
63
63
|
To enable project-local agents, pass `agentScope: "both"` (or `"project"`). Only do this for repositories you trust.
|
|
64
64
|
|