@fleetagent/pi-coding-agent 0.0.10 → 0.0.11
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 +21 -0
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +16 -3
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts +2 -0
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +1 -0
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +86 -0
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +3 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +27 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +55 -2
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/pi-agent.d.ts.map +1 -1
- package/dist/core/pi-agent.js +1 -0
- package/dist/core/pi-agent.js.map +1 -1
- package/dist/core/prompt-templates.d.ts +5 -0
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +115 -0
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resource-loader.d.ts +15 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +332 -40
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/rules.d.ts +6 -0
- package/dist/core/rules.d.ts.map +1 -1
- package/dist/core/rules.js +216 -0
- package/dist/core/rules.js.map +1 -1
- package/dist/core/skills.d.ts +6 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +216 -0
- package/dist/core/skills.js.map +1 -1
- package/dist/core/source-info.d.ts +2 -0
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +6 -0
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +5 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +5 -5
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +2 -2
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +2 -2
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +2 -2
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +3 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +9 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +14 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +3 -2
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +7 -5
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +21 -9
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/extensions.md +82 -3
- package/docs/usage.md +2 -0
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
package/docs/extensions.md
CHANGED
|
@@ -869,6 +869,53 @@ UI methods for user interaction. See [Custom UI](#custom-ui) for full details.
|
|
|
869
869
|
|
|
870
870
|
Current working directory.
|
|
871
871
|
|
|
872
|
+
### ctx.toolOperations / ctx.getToolBackendInfo() / ctx.execToolBackend()
|
|
873
|
+
|
|
874
|
+
Backend-aware file and shell operations for extensions. These APIs use the same active backend as Pi's built-in tools: local by default, or SSH/remote when an SSH sandbox is configured.
|
|
875
|
+
|
|
876
|
+
Use these APIs for extension tools and extension-owned automation that reads files, writes files, lists directories, or executes shell commands. This is the only safe way for extension tools to run shell commands because it preserves Pi's active execution boundary. Direct local process APIs (`child_process`, `pi.exec`, shell libraries, etc.) bypass the configured tool backend and will run on the local machine even when Pi tools are remote.
|
|
877
|
+
|
|
878
|
+
```typescript
|
|
879
|
+
pi.registerTool({
|
|
880
|
+
name: "repo_status",
|
|
881
|
+
label: "Repo status",
|
|
882
|
+
description: "Show git status using the active Pi tool backend",
|
|
883
|
+
parameters: Type.Object({}),
|
|
884
|
+
async execute(_toolCallId, _params, _signal, _onUpdate, ctx) {
|
|
885
|
+
const backend = ctx.getToolBackendInfo();
|
|
886
|
+
const result = await ctx.execToolBackend("git status --short", {
|
|
887
|
+
signal: ctx.signal,
|
|
888
|
+
timeout: 30,
|
|
889
|
+
});
|
|
890
|
+
|
|
891
|
+
return {
|
|
892
|
+
content: [{ type: "text", text: result.output || `(no output from ${backend.type})` }],
|
|
893
|
+
};
|
|
894
|
+
},
|
|
895
|
+
});
|
|
896
|
+
```
|
|
897
|
+
|
|
898
|
+
`ctx.execToolBackend(command, options)` executes a shell command string through `ctx.toolOperations` and returns `BashResult`:
|
|
899
|
+
|
|
900
|
+
```typescript
|
|
901
|
+
{
|
|
902
|
+
output: string; // combined stdout/stderr, sanitized and possibly truncated
|
|
903
|
+
exitCode?: number; // undefined when cancelled
|
|
904
|
+
cancelled: boolean;
|
|
905
|
+
truncated: boolean;
|
|
906
|
+
fullOutputPath?: string;
|
|
907
|
+
}
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
Options:
|
|
911
|
+
|
|
912
|
+
- `cwd` - working directory; defaults to the active backend cwd
|
|
913
|
+
- `signal` - abort signal
|
|
914
|
+
- `timeout` - timeout in seconds
|
|
915
|
+
- `onChunk` - streaming output callback
|
|
916
|
+
|
|
917
|
+
Use `ctx.toolOperations` directly when you need backend-aware file operations such as `readFile`, `writeFile`, `stat`, `readdir`, `glob`, or `grep`.
|
|
918
|
+
|
|
872
919
|
### ctx.session
|
|
873
920
|
|
|
874
921
|
Read-only access to active session state. See [Session Format](session-format.md) for the full `Session` API and entry types.
|
|
@@ -1408,6 +1455,35 @@ pi.registerCommand("deploy", {
|
|
|
1408
1455
|
});
|
|
1409
1456
|
```
|
|
1410
1457
|
|
|
1458
|
+
### pi.registerSkill(skill) / pi.registerRule(rule) / pi.registerPrompt(prompt)
|
|
1459
|
+
|
|
1460
|
+
Register local extension-hosted skills, rules, or prompt templates. These stay on the local agent host even when built-in tools use an SSH backend.
|
|
1461
|
+
|
|
1462
|
+
Provide either `filePath` (relative to the extension file directory) or inline `content`. Inline content is available to `/skill:name`, `/rule:name`, and `/prompt-name` expansion.
|
|
1463
|
+
|
|
1464
|
+
```typescript
|
|
1465
|
+
pi.registerSkill({
|
|
1466
|
+
name: "agent-pod-tools",
|
|
1467
|
+
description: "Use for agent pod maintenance workflows",
|
|
1468
|
+
filePath: "./skills/agent-pod-tools/SKILL.md",
|
|
1469
|
+
});
|
|
1470
|
+
|
|
1471
|
+
pi.registerRule({
|
|
1472
|
+
name: "company-policy",
|
|
1473
|
+
description: "Mandatory policy for release tasks",
|
|
1474
|
+
content: "Only publish after the release checklist is complete.",
|
|
1475
|
+
});
|
|
1476
|
+
|
|
1477
|
+
pi.registerPrompt({
|
|
1478
|
+
name: "release-summary",
|
|
1479
|
+
description: "Draft a release summary",
|
|
1480
|
+
argumentHint: "<version>",
|
|
1481
|
+
content: "Summarize the release changes for $ARGUMENTS.",
|
|
1482
|
+
});
|
|
1483
|
+
```
|
|
1484
|
+
|
|
1485
|
+
Use `pi.registerPrompts([...])` to register multiple prompt templates at once.
|
|
1486
|
+
|
|
1411
1487
|
### pi.getCommands()
|
|
1412
1488
|
|
|
1413
1489
|
Get the slash commands available for invocation via `prompt` in the current session. Includes extension commands, prompt templates, skill commands, and rule commands.
|
|
@@ -1477,9 +1553,12 @@ if (pi.getFlag("plan")) {
|
|
|
1477
1553
|
|
|
1478
1554
|
### pi.exec(command, args, options?)
|
|
1479
1555
|
|
|
1480
|
-
Execute a
|
|
1556
|
+
Execute a local process with argv. This API is local-only and legacy-compatible. It does not use Pi's active tool backend and does not honor SSH/remote sandboxing.
|
|
1557
|
+
|
|
1558
|
+
Do not use `pi.exec` from extension tools or backend-sensitive automation. Use `ctx.execToolBackend()` from handlers/tools that receive `ExtensionContext` so shell commands execute in the same local/remote environment as built-in Pi tools.
|
|
1481
1559
|
|
|
1482
1560
|
```typescript
|
|
1561
|
+
// Local-only process execution. Avoid for extension tools.
|
|
1483
1562
|
const result = await pi.exec("git", ["status"], { signal, timeout: 5000 });
|
|
1484
1563
|
// result.stdout, result.stderr, result.code, result.killed
|
|
1485
1564
|
```
|
|
@@ -1743,8 +1822,8 @@ pi.registerTool({
|
|
|
1743
1822
|
details: { progress: 50 },
|
|
1744
1823
|
});
|
|
1745
1824
|
|
|
1746
|
-
// Run commands
|
|
1747
|
-
const result = await
|
|
1825
|
+
// Run commands through the active Pi tool backend (local or SSH/remote)
|
|
1826
|
+
const result = await ctx.execToolBackend("some-command", { signal });
|
|
1748
1827
|
|
|
1749
1828
|
// Return result
|
|
1750
1829
|
return {
|
package/docs/usage.md
CHANGED
|
@@ -211,6 +211,8 @@ Combine `--no-*` with explicit flags to load exactly what you need, ignoring set
|
|
|
211
211
|
pi --no-extensions -e ./my-extension.ts
|
|
212
212
|
```
|
|
213
213
|
|
|
214
|
+
With `--ssh`, project instruction resources are loaded from the tool backend cwd: `.pi/skills`, `.pi/rules`, `.pi/prompts`, ancestor `.agents/skills` and `.agents/rules`, and `AGENTS.md`/`CLAUDE.md`. Extension loading, themes, user resources, and package resources remain local.
|
|
215
|
+
|
|
214
216
|
### Other Options
|
|
215
217
|
|
|
216
218
|
| Option | Description |
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fleetagent/pi-coding-agent",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@fleetagent/pi-coding-agent",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.11",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@fleetagent/pi-agent-core": "^0.0.
|
|
13
|
-
"@fleetagent/pi-ai": "^0.0.
|
|
14
|
-
"@fleetagent/pi-tui": "^0.0.
|
|
12
|
+
"@fleetagent/pi-agent-core": "^0.0.11",
|
|
13
|
+
"@fleetagent/pi-ai": "^0.0.11",
|
|
14
|
+
"@fleetagent/pi-tui": "^0.0.11",
|
|
15
15
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
16
16
|
"chalk": "5.6.2",
|
|
17
17
|
"cross-spawn": "7.0.6",
|
|
@@ -473,11 +473,11 @@
|
|
|
473
473
|
}
|
|
474
474
|
},
|
|
475
475
|
"node_modules/@fleetagent/pi-agent-core": {
|
|
476
|
-
"version": "0.0.
|
|
477
|
-
"resolved": "https://registry.npmjs.org/@fleetagent/pi-agent-core/-/pi-agent-core-0.0.
|
|
476
|
+
"version": "0.0.11",
|
|
477
|
+
"resolved": "https://registry.npmjs.org/@fleetagent/pi-agent-core/-/pi-agent-core-0.0.11.tgz",
|
|
478
478
|
"license": "MIT",
|
|
479
479
|
"dependencies": {
|
|
480
|
-
"@fleetagent/pi-ai": "^0.0.
|
|
480
|
+
"@fleetagent/pi-ai": "^0.0.11",
|
|
481
481
|
"ignore": "7.0.5",
|
|
482
482
|
"typebox": "1.1.38",
|
|
483
483
|
"yaml": "2.9.0"
|
|
@@ -487,8 +487,8 @@
|
|
|
487
487
|
}
|
|
488
488
|
},
|
|
489
489
|
"node_modules/@fleetagent/pi-ai": {
|
|
490
|
-
"version": "0.0.
|
|
491
|
-
"resolved": "https://registry.npmjs.org/@fleetagent/pi-ai/-/pi-ai-0.0.
|
|
490
|
+
"version": "0.0.11",
|
|
491
|
+
"resolved": "https://registry.npmjs.org/@fleetagent/pi-ai/-/pi-ai-0.0.11.tgz",
|
|
492
492
|
"license": "MIT",
|
|
493
493
|
"dependencies": {
|
|
494
494
|
"@anthropic-ai/sdk": "0.91.1",
|
|
@@ -510,8 +510,8 @@
|
|
|
510
510
|
}
|
|
511
511
|
},
|
|
512
512
|
"node_modules/@fleetagent/pi-tui": {
|
|
513
|
-
"version": "0.0.
|
|
514
|
-
"resolved": "https://registry.npmjs.org/@fleetagent/pi-tui/-/pi-tui-0.0.
|
|
513
|
+
"version": "0.0.11",
|
|
514
|
+
"resolved": "https://registry.npmjs.org/@fleetagent/pi-tui/-/pi-tui-0.0.11.tgz",
|
|
515
515
|
"license": "MIT",
|
|
516
516
|
"dependencies": {
|
|
517
517
|
"get-east-asian-width": "1.6.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fleetagent/pi-coding-agent",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"piConfig": {
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@fleetagent/pi-agent-core": "^0.0.
|
|
43
|
-
"@fleetagent/pi-ai": "^0.0.
|
|
44
|
-
"@fleetagent/pi-tui": "^0.0.
|
|
42
|
+
"@fleetagent/pi-agent-core": "^0.0.11",
|
|
43
|
+
"@fleetagent/pi-ai": "^0.0.11",
|
|
44
|
+
"@fleetagent/pi-tui": "^0.0.11",
|
|
45
45
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
46
46
|
"chalk": "5.6.2",
|
|
47
47
|
"cross-spawn": "7.0.6",
|