@skelm/pi 0.3.6 → 0.3.7
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/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +22 -3
- package/dist/backend.js.map +1 -1
- package/dist/sdk-backend.d.ts +5 -0
- package/dist/sdk-backend.d.ts.map +1 -1
- package/dist/sdk-backend.js +107 -2
- package/dist/sdk-backend.js.map +1 -1
- package/package.json +4 -4
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,gDAAgD;AAChD,qBAAa,cAAe,SAAQ,KAAK;aAInB,KAAK,CAAC,EAAE,OAAO;IAHnC,SAAkB,IAAI,oBAAmB;gBAEvC,OAAO,EAAE,MAAM,EACG,KAAK,CAAC,EAAE,OAAO,YAAA;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,cAAc;CAAG;AACnE,qBAAa,uBAAwB,SAAQ,cAAc;CAAG;AAC9D,qBAAa,qBAAsB,SAAQ,cAAc;CAAG;AAE5D;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,gDAAgD;AAChD,qBAAa,cAAe,SAAQ,KAAK;aAInB,KAAK,CAAC,EAAE,OAAO;IAHnC,SAAkB,IAAI,oBAAmB;gBAEvC,OAAO,EAAE,MAAM,EACG,KAAK,CAAC,EAAE,OAAO,YAAA;CAIpC;AAED,qBAAa,4BAA6B,SAAQ,cAAc;CAAG;AACnE,qBAAa,uBAAwB,SAAQ,cAAc;CAAG;AAC9D,qBAAa,qBAAsB,SAAQ,cAAc;CAAG;AAE5D;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,YAAY,CAuG5E"}
|
package/dist/backend.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
//
|
|
7
7
|
// Pi does NOT speak ACP; this backend uses the native pi RPC protocol
|
|
8
8
|
// documented in @mariozechner/pi-coding-agent/docs/rpc.md.
|
|
9
|
-
import { formatSkillBlock } from '@skelm/core';
|
|
9
|
+
import { PermissionDeniedError, formatSkillBlock } from '@skelm/core';
|
|
10
10
|
import { PiRpcClient } from './rpc-client.js';
|
|
11
11
|
/** Custom error types exposed from @skelm/pi */
|
|
12
12
|
export class PiBackendError extends Error {
|
|
@@ -33,13 +33,20 @@ export class PiBackendTimeoutError extends PiBackendError {
|
|
|
33
33
|
*/
|
|
34
34
|
export function createPiBackend(options = {}) {
|
|
35
35
|
const capabilities = {
|
|
36
|
-
|
|
36
|
+
// RPC mode runs an agent loop; for single-shot inference (llm() steps)
|
|
37
|
+
// use the pi-sdk backend which can disable tools via noTools: 'all'.
|
|
38
|
+
prompt: false,
|
|
37
39
|
streaming: true,
|
|
38
40
|
sessionLifecycle: true,
|
|
39
41
|
mcp: false, // pi manages its own tools; no external MCP wiring
|
|
40
42
|
skills: true,
|
|
41
43
|
modelSelection: options.model !== undefined,
|
|
42
|
-
|
|
44
|
+
// RPC mode runs pi in a subprocess; skelm cannot intercept tool_call events
|
|
45
|
+
// mid-run, so it cannot enforce allowedTools, networkEgress, fsRead/fsWrite,
|
|
46
|
+
// or any other dimension. Declaring 'unsupported' makes the runner reject
|
|
47
|
+
// steps that declare permissions, fail-closed, with an auditable event.
|
|
48
|
+
// Workflows that need permission enforcement must use the pi-sdk backend.
|
|
49
|
+
toolPermissions: 'unsupported',
|
|
43
50
|
};
|
|
44
51
|
// Concurrency semaphore — limits simultaneous pi processes
|
|
45
52
|
const maxConcurrent = options.maxConcurrent ?? 4;
|
|
@@ -64,6 +71,14 @@ export function createPiBackend(options = {}) {
|
|
|
64
71
|
label: options.label ?? 'Pi Coding Agent',
|
|
65
72
|
capabilities,
|
|
66
73
|
async run(request, context) {
|
|
74
|
+
const policy = context.permissions ?? request.permissions;
|
|
75
|
+
if (policy !== undefined) {
|
|
76
|
+
// Defense in depth: the runner's capability check (toolPermissions:
|
|
77
|
+
// 'unsupported') should already have rejected any step that declared
|
|
78
|
+
// permissions. This guard catches paths that bypass that check
|
|
79
|
+
// (e.g. backends invoked directly).
|
|
80
|
+
throw new PermissionDeniedError('pi RPC backend cannot enforce permission policies; use the pi-sdk backend instead');
|
|
81
|
+
}
|
|
67
82
|
await acquire();
|
|
68
83
|
const client = new PiRpcClient({
|
|
69
84
|
command: options.command ?? 'pi',
|
|
@@ -127,6 +142,10 @@ async function loadSkillBodies(req, ctx) {
|
|
|
127
142
|
function buildPrompt(req, skillBodies = []) {
|
|
128
143
|
const parts = [];
|
|
129
144
|
const systemParts = [];
|
|
145
|
+
if (req.agentDef?.soul !== undefined)
|
|
146
|
+
systemParts.push(req.agentDef.soul);
|
|
147
|
+
if (req.agentDef !== undefined)
|
|
148
|
+
systemParts.push(req.agentDef.instructions);
|
|
130
149
|
if (req.system)
|
|
131
150
|
systemParts.push(req.system);
|
|
132
151
|
for (const body of skillBodies)
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,2DAA2D;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk-backend.d.ts
CHANGED
|
@@ -40,6 +40,11 @@ export declare function createPiSdkBackend(options?: PiSdkBackendOptions): Skelm
|
|
|
40
40
|
*
|
|
41
41
|
* Returns `undefined` when no policy is set (pi uses its defaults).
|
|
42
42
|
* Returns a string[] (possibly empty) when a policy is present.
|
|
43
|
+
*
|
|
44
|
+
* networkEgress: 'deny' suppresses the bash tool entirely — pi has no native
|
|
45
|
+
* fetch tool, so the only way an agent can reach the network is via
|
|
46
|
+
* `curl`/`wget`/etc. spawned through bash. Dropping bash from the allowlist
|
|
47
|
+
* is a coarse but reliable enforcement of network-deny.
|
|
43
48
|
*/
|
|
44
49
|
export declare function derivePiToolAllowlist(policy: ResolvedPolicy | undefined): string[] | undefined;
|
|
45
50
|
//# sourceMappingURL=sdk-backend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-backend.d.ts","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"sdk-backend.d.ts","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAOV,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,qBAAa,iBAAkB,SAAQ,KAAK;aAItB,KAAK,CAAC,EAAE,OAAO;IAHnC,SAAkB,IAAI,uBAAsB;gBAE1C,OAAO,EAAE,MAAM,EACG,KAAK,CAAC,EAAE,OAAO,YAAA;CAIpC;AAED,qBAAa,+BAAgC,SAAQ,iBAAiB;CAAG;AACzE,qBAAa,wBAAyB,SAAQ,iBAAiB;CAAG;AAElE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAkJlF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAwB9F"}
|
package/dist/sdk-backend.js
CHANGED
|
@@ -39,7 +39,7 @@ export class PiSdkBackendTimeoutError extends PiSdkBackendError {
|
|
|
39
39
|
*/
|
|
40
40
|
export function createPiSdkBackend(options = {}) {
|
|
41
41
|
const capabilities = {
|
|
42
|
-
prompt:
|
|
42
|
+
prompt: true,
|
|
43
43
|
streaming: true,
|
|
44
44
|
sessionLifecycle: true,
|
|
45
45
|
mcp: false,
|
|
@@ -68,6 +68,56 @@ export function createPiSdkBackend(options = {}) {
|
|
|
68
68
|
id: options.id ?? 'pi-sdk',
|
|
69
69
|
label: options.label ?? 'Pi Coding Agent (SDK)',
|
|
70
70
|
capabilities,
|
|
71
|
+
async infer(request, context) {
|
|
72
|
+
await acquire();
|
|
73
|
+
try {
|
|
74
|
+
const cwd = options.cwd;
|
|
75
|
+
const promptText = buildInferPrompt(request);
|
|
76
|
+
const client = new PiSdkClient({
|
|
77
|
+
...(cwd !== undefined && { cwd }),
|
|
78
|
+
// Pure inference: disable all built-in tools
|
|
79
|
+
tools: [],
|
|
80
|
+
noTools: 'all',
|
|
81
|
+
...(options.noExtensions !== undefined && { noExtensions: options.noExtensions }),
|
|
82
|
+
...(options.noSkills !== undefined && { noSkills: options.noSkills }),
|
|
83
|
+
...(options.noContextFiles !== undefined && { noContextFiles: options.noContextFiles }),
|
|
84
|
+
...(request.system !== undefined && {
|
|
85
|
+
system: request.system,
|
|
86
|
+
replaceSystemPrompt: false,
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
const result = await client.prompt(promptText, context.signal, options.timeout ?? 300_000);
|
|
90
|
+
const response = {
|
|
91
|
+
...(result.usage !== undefined && {
|
|
92
|
+
usage: {
|
|
93
|
+
inputTokens: result.usage.inputTokens,
|
|
94
|
+
outputTokens: result.usage.outputTokens,
|
|
95
|
+
},
|
|
96
|
+
}),
|
|
97
|
+
};
|
|
98
|
+
if (request.outputSchema !== undefined) {
|
|
99
|
+
response.structured = parseStructured(result.text);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
response.text = result.text;
|
|
103
|
+
}
|
|
104
|
+
return response;
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
if (err instanceof Error) {
|
|
108
|
+
if (err.message.includes('ENOENT') || err.message.includes('not installed')) {
|
|
109
|
+
throw new PiSdkBackendAuthenticationError('pi SDK not available. Install it: npm install @mariozechner/pi-coding-agent', err);
|
|
110
|
+
}
|
|
111
|
+
if (err.message.includes('timed out')) {
|
|
112
|
+
throw new PiSdkBackendTimeoutError(err.message, err);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
throw new PiSdkBackendError(`pi SDK inference failed: ${err.message}`, err);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
release();
|
|
119
|
+
}
|
|
120
|
+
},
|
|
71
121
|
async run(request, context) {
|
|
72
122
|
await acquire();
|
|
73
123
|
try {
|
|
@@ -123,13 +173,19 @@ export function createPiSdkBackend(options = {}) {
|
|
|
123
173
|
*
|
|
124
174
|
* Returns `undefined` when no policy is set (pi uses its defaults).
|
|
125
175
|
* Returns a string[] (possibly empty) when a policy is present.
|
|
176
|
+
*
|
|
177
|
+
* networkEgress: 'deny' suppresses the bash tool entirely — pi has no native
|
|
178
|
+
* fetch tool, so the only way an agent can reach the network is via
|
|
179
|
+
* `curl`/`wget`/etc. spawned through bash. Dropping bash from the allowlist
|
|
180
|
+
* is a coarse but reliable enforcement of network-deny.
|
|
126
181
|
*/
|
|
127
182
|
export function derivePiToolAllowlist(policy) {
|
|
128
183
|
if (policy === undefined)
|
|
129
184
|
return undefined;
|
|
185
|
+
const networkDenied = policy.networkEgress === 'deny';
|
|
130
186
|
const allowed = [];
|
|
131
187
|
const execs = policy.allowedExecutables;
|
|
132
|
-
if (execs.has('bash') || execs.has('sh')) {
|
|
188
|
+
if (!networkDenied && (execs.has('bash') || execs.has('sh'))) {
|
|
133
189
|
allowed.push('bash');
|
|
134
190
|
}
|
|
135
191
|
const fsRead = policy.fsRead;
|
|
@@ -154,12 +210,61 @@ function buildSystemContent(systemBase, req, skillBodies) {
|
|
|
154
210
|
const parts = [];
|
|
155
211
|
if (systemBase !== undefined)
|
|
156
212
|
parts.push(systemBase);
|
|
213
|
+
if (req.agentDef?.soul !== undefined)
|
|
214
|
+
parts.push(req.agentDef.soul);
|
|
215
|
+
if (req.agentDef !== undefined)
|
|
216
|
+
parts.push(req.agentDef.instructions);
|
|
157
217
|
if (req.system)
|
|
158
218
|
parts.push(req.system);
|
|
159
219
|
for (const body of skillBodies)
|
|
160
220
|
parts.push(body);
|
|
161
221
|
return parts.length > 0 ? parts.join('\n\n---\n\n') : undefined;
|
|
162
222
|
}
|
|
223
|
+
/**
|
|
224
|
+
* Concatenate InferRequest messages into a single prompt string.
|
|
225
|
+
* Pi runs as a chat agent that takes one user prompt — for multi-turn
|
|
226
|
+
* histories we serialize the conversation into a labeled transcript.
|
|
227
|
+
*/
|
|
228
|
+
function buildInferPrompt(req) {
|
|
229
|
+
if (req.messages.length === 1 && req.messages[0]?.role === 'user') {
|
|
230
|
+
return req.messages[0].content;
|
|
231
|
+
}
|
|
232
|
+
return req.messages
|
|
233
|
+
.map((m) => `${m.role === 'user' ? 'User' : m.role === 'assistant' ? 'Assistant' : m.role}: ${m.content}`)
|
|
234
|
+
.join('\n\n');
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Extract a JSON value from the model's text output. Tolerates ```json
|
|
238
|
+
* fenced blocks and surrounding prose. The runner validates the result
|
|
239
|
+
* against the step's output schema, so we only need to parse here.
|
|
240
|
+
*/
|
|
241
|
+
function parseStructured(text) {
|
|
242
|
+
const candidate = extractJson(text);
|
|
243
|
+
if (candidate === null) {
|
|
244
|
+
throw new PiSdkBackendError(`pi inference returned no parseable JSON. Output (first 200 chars): ${text.slice(0, 200)}`);
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
return JSON.parse(candidate);
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
throw new PiSdkBackendError(`pi inference output is not valid JSON: ${err.message}. Raw: ${text.slice(0, 200)}`, err);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
function extractJson(text) {
|
|
254
|
+
const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
255
|
+
if (fenced?.[1])
|
|
256
|
+
return fenced[1].trim();
|
|
257
|
+
const start = text.search(/[{[]/);
|
|
258
|
+
if (start === -1)
|
|
259
|
+
return null;
|
|
260
|
+
// Greedy: take from first opener through last matching closer.
|
|
261
|
+
const opener = text[start];
|
|
262
|
+
const closer = opener === '{' ? '}' : ']';
|
|
263
|
+
const end = text.lastIndexOf(closer);
|
|
264
|
+
if (end <= start)
|
|
265
|
+
return null;
|
|
266
|
+
return text.slice(start, end + 1);
|
|
267
|
+
}
|
|
163
268
|
async function loadSkillBodies(req, ctx) {
|
|
164
269
|
if (!req.skills || req.skills.length === 0 || !ctx.loadSkill)
|
|
165
270
|
return [];
|
package/dist/sdk-backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-backend.js","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"sdk-backend.js","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skelm/pi",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "Pi coding-agent backend for skelm with full permission enforcement",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Scott Glover <scottgl@gmail.com>",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"build": "tsc -p tsconfig.json",
|
|
43
43
|
"test": "vitest run",
|
|
44
44
|
"test:watch": "vitest",
|
|
45
|
-
"clean": "rm -rf dist"
|
|
45
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@mariozechner/pi-coding-agent": ">=0.73.0",
|
|
49
|
-
"@skelm/core": "^0.3.
|
|
49
|
+
"@skelm/core": "^0.3.7"
|
|
50
50
|
},
|
|
51
51
|
"peerDependenciesMeta": {
|
|
52
52
|
"@mariozechner/pi-coding-agent": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@mariozechner/pi-coding-agent": "^0.73.0",
|
|
58
|
-
"@skelm/core": "^0.3.
|
|
58
|
+
"@skelm/core": "^0.3.7",
|
|
59
59
|
"@types/node": "^20.10.0",
|
|
60
60
|
"typescript": "^5.3.0",
|
|
61
61
|
"vitest": "^1.0.0"
|