@skelm/pi 0.3.6 → 0.3.8

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/README.md CHANGED
@@ -37,29 +37,58 @@ npm install @mariozechner/pi-coding-agent
37
37
 
38
38
  ## SDK backend (recommended)
39
39
 
40
+ Register the backend via `instances:` in `skelm.config.ts` and reference it by id on each step:
41
+
40
42
  ```ts
41
- import { agent, pipeline } from 'skelm'
43
+ // skelm.config.ts
44
+ import { defineConfig } from 'skelm'
42
45
  import { createPiSdkBackend } from '@skelm/pi'
43
46
 
44
- const pi = createPiSdkBackend({
45
- // All options are optional
46
- cwd: './workspace', // working directory; defaults to process.cwd()
47
- timeout: 300_000, // ms; default 5 min
48
- maxConcurrent: 4, // queued beyond this; 0 = unlimited
47
+ export default defineConfig({
48
+ backends: { agent: 'pi' },
49
+ instances: [
50
+ createPiSdkBackend({
51
+ id: 'pi',
52
+ // cwd: './workspace', // defaults to process.cwd()
53
+ // timeout: 300_000, // ms; default 5 min
54
+ // maxConcurrent: 4, // queued beyond this; 0 = unlimited
55
+ }),
56
+ ],
57
+ registries: {
58
+ skills: { glob: 'skills/**/SKILL.md' },
59
+ },
49
60
  })
61
+ ```
62
+
63
+ A workflow that reviews a PR using a **skill** that encodes your team's style guide:
64
+
65
+ ```ts
66
+ // workflows/review-pr.workflow.ts
67
+ import { agent, pipeline } from 'skelm'
68
+ import { z } from 'zod'
50
69
 
51
70
  export default pipeline({
52
- id: 'refactor',
71
+ id: 'review-pr',
72
+ input: z.object({ diff: z.string() }),
73
+ output: z.object({ verdict: z.string(), notes: z.array(z.string()) }),
53
74
  steps: [
54
75
  agent({
55
- id: 'pi-step',
56
- backend: pi,
57
- prompt: 'Refactor the auth module to use async/await throughout.',
76
+ id: 'reviewer',
77
+ backend: 'pi',
78
+ skills: ['style-guide'], // injected from skills/style-guide/SKILL.md
79
+ prompt: (ctx) =>
80
+ `Review this diff against the style guide and return JSON {verdict, notes}:\n\n${ctx.input.diff}`,
58
81
  permissions: {
59
- allowedExecutables: ['bash'],
60
- fsRead: ['./src'],
61
- fsWrite: ['./src'],
82
+ allowedTools: [], // read-only — no tools needed
83
+ allowedExecutables: [],
84
+ allowedMcpServers: [],
85
+ allowedSkills: ['style-guide'],
86
+ networkEgress: 'deny',
87
+ fsRead: [],
88
+ fsWrite: [],
62
89
  },
90
+ output: z.object({ verdict: z.string(), notes: z.array(z.string()) }),
91
+ maxTurns: 3,
63
92
  }),
64
93
  ],
65
94
  })
package/dist/backend.d.ts CHANGED
@@ -19,6 +19,9 @@ export declare class PiBackendTimeoutError extends PiBackendError {
19
19
  * Each backend instance keeps one pi process alive and reuses it across
20
20
  * calls (a new session per call, same process). Use maxConcurrent to
21
21
  * limit simultaneous requests.
22
+ *
23
+ * @param options Backend configuration
24
+ * @param options.egressProxyUrl Optional egress proxy URL to inject into subprocess
22
25
  */
23
26
  export declare function createPiBackend(options?: PiBackendOptions): SkelmBackend;
24
27
  //# sourceMappingURL=backend.d.ts.map
@@ -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,CAsF5E"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAMV,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;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,YAAY,CAyG5E"}
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, createConcurrencySemaphore, loadSkillBodies } 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 {
@@ -30,46 +30,65 @@ export class PiBackendTimeoutError extends PiBackendError {
30
30
  * Each backend instance keeps one pi process alive and reuses it across
31
31
  * calls (a new session per call, same process). Use maxConcurrent to
32
32
  * limit simultaneous requests.
33
+ *
34
+ * @param options Backend configuration
35
+ * @param options.egressProxyUrl Optional egress proxy URL to inject into subprocess
33
36
  */
34
37
  export function createPiBackend(options = {}) {
35
38
  const capabilities = {
36
- prompt: false, // pi is agent-only; use a dedicated LLM backend for llm() steps
39
+ // RPC mode runs an agent loop; for single-shot inference (llm() steps)
40
+ // use the pi-sdk backend which can disable tools via noTools: 'all'.
41
+ prompt: false,
37
42
  streaming: true,
38
43
  sessionLifecycle: true,
39
44
  mcp: false, // pi manages its own tools; no external MCP wiring
40
45
  skills: true,
41
46
  modelSelection: options.model !== undefined,
42
- toolPermissions: 'native', // pi enforces its own tool permissions
43
- };
44
- // Concurrency semaphore limits simultaneous pi processes
45
- const maxConcurrent = options.maxConcurrent ?? 4;
46
- let active = 0;
47
- const queue = [];
48
- const acquire = () => {
49
- if (maxConcurrent === 0 || active < maxConcurrent) {
50
- active++;
51
- return Promise.resolve();
52
- }
53
- return new Promise((resolve) => queue.push(resolve));
54
- };
55
- const release = () => {
56
- const next = queue.shift();
57
- if (next)
58
- next();
59
- else
60
- active--;
47
+ // RPC mode runs pi in a subprocess; skelm cannot intercept tool_call events
48
+ // mid-run, so it cannot enforce allowedTools, allowedExecutables,
49
+ // fsRead/fsWrite, allowedMcpServers, or allowedSkills. The new gateway
50
+ // egress proxy DOES enforce networkEgress out-of-band (HTTP_PROXY +
51
+ // SKELM_EGRESS_TOKEN), but that is orthogonal to *tool* permissions. We
52
+ // therefore keep toolPermissions: 'unsupported' and refuse below when a
53
+ // caller hands us a non-network-only policy (defense-in-depth).
54
+ toolPermissions: 'unsupported',
61
55
  };
56
+ const { acquire, release } = createConcurrencySemaphore(options.maxConcurrent ?? 4);
62
57
  return {
63
58
  id: options.id ?? 'pi',
64
59
  label: options.label ?? 'Pi Coding Agent',
65
60
  capabilities,
66
61
  async run(request, context) {
62
+ const policy = context.permissions ?? request.permissions;
63
+ // Defense-in-depth: Pi RPC cannot enforce tool / executable /
64
+ // filesystem / MCP / skill permissions inside the pi subprocess. We
65
+ // refuse when the workflow *explicitly declared* one of those
66
+ // dimensions. networkEgress alone is fine because the gateway egress
67
+ // proxy enforces it out-of-band, and a fully-defaulted policy
68
+ // (everything intersected to the deny-all empty set, e.g. from
69
+ // project defaults) is policy resolution — not user intent.
70
+ //
71
+ // When `declaredPermissions` is supplied (the canonical runner path)
72
+ // we use it directly; otherwise fall back to inspecting the resolved
73
+ // policy so callers that hand-build a ResolvedPolicy still get the
74
+ // refusal.
75
+ const refuse = context.declaredPermissions !== undefined
76
+ ? declaresNonNetworkDimension(context.declaredPermissions)
77
+ : policy !== undefined && resolvedPolicyHasNonNetworkConstraints(policy);
78
+ if (refuse) {
79
+ throw new PermissionDeniedError('pi RPC backend cannot enforce tool, executable, filesystem, MCP, or skill permissions in-subprocess. Use the pi-sdk backend for tool-level enforcement, or remove those dimensions and rely on networkEgress + the gateway egress proxy.');
80
+ }
67
81
  await acquire();
68
82
  const client = new PiRpcClient({
69
83
  command: options.command ?? 'pi',
70
84
  ...(options.provider !== undefined && { provider: options.provider }),
71
85
  ...(options.model !== undefined && { model: options.model }),
72
86
  ...((request.cwd ?? options.cwd) !== undefined && { cwd: request.cwd ?? options.cwd }),
87
+ ...(options.egressProxyUrl !== undefined && { egressProxyUrl: options.egressProxyUrl }),
88
+ ...(context.egressToken !== undefined && { egressToken: context.egressToken }),
89
+ // Per-step proxy env from the runtime (canonical path; takes precedence
90
+ // over options.egressProxyUrl).
91
+ ...(context.proxyEnv !== undefined && { proxyEnv: context.proxyEnv }),
73
92
  persistSession: false,
74
93
  });
75
94
  const onAbort = () => client.abort().catch(() => { });
@@ -110,23 +129,56 @@ export function createPiBackend(options = {}) {
110
129
  };
111
130
  }
112
131
  /**
113
- * Build the prompt string sent to pi, incorporating system prompt and
114
- * any multi-turn context from the request.
132
+ * True iff the workflow author explicitly declared at least one non-network
133
+ * dimension on the step. Walks the raw `AgentPermissions` input, NOT the
134
+ * resolved `ResolvedPolicy` (which always has every dimension populated by
135
+ * intersection — so we cannot tell user intent from defaulted deny-all).
115
136
  */
116
- async function loadSkillBodies(req, ctx) {
117
- if (!req.skills || req.skills.length === 0 || !ctx.loadSkill)
118
- return [];
119
- const bodies = [];
120
- for (const skillId of req.skills) {
121
- const skill = await ctx.loadSkill(skillId);
122
- if (skill !== null)
123
- bodies.push(formatSkillBlock(skill));
124
- }
125
- return bodies;
137
+ /**
138
+ * Fallback for callers that don't populate `BackendContext.declaredPermissions`
139
+ * (older test harnesses, hand-built ResolvedPolicy instances). Mirrors the
140
+ * pre-`declaredPermissions` heuristic: any non-default shape on a non-network
141
+ * dimension counts as a constraint Pi RPC cannot enforce.
142
+ */
143
+ function resolvedPolicyHasNonNetworkConstraints(policy) {
144
+ const tools = policy.allowedTools;
145
+ if (tools !== undefined && !tools.star)
146
+ return true;
147
+ if (policy.allowedExecutables !== undefined && policy.allowedExecutables.size === 0)
148
+ return true;
149
+ if (policy.allowedMcpServers !== undefined && policy.allowedMcpServers.size === 0)
150
+ return true;
151
+ if (policy.allowedSkills !== undefined && policy.allowedSkills.size === 0)
152
+ return true;
153
+ if (policy.fsRead !== undefined && policy.fsRead.size === 0)
154
+ return true;
155
+ if (policy.fsWrite !== undefined && policy.fsWrite.size === 0)
156
+ return true;
157
+ if (policy.approval !== undefined && policy.approval !== null)
158
+ return true;
159
+ return false;
160
+ }
161
+ function declaresNonNetworkDimension(declared) {
162
+ if (declared === undefined)
163
+ return false;
164
+ return (declared.allowedTools !== undefined ||
165
+ declared.deniedTools !== undefined ||
166
+ declared.allowedExecutables !== undefined ||
167
+ declared.allowedMcpServers !== undefined ||
168
+ declared.allowedSkills !== undefined ||
169
+ declared.allowedSecrets !== undefined ||
170
+ declared.fsRead !== undefined ||
171
+ declared.fsWrite !== undefined ||
172
+ declared.approval !== undefined ||
173
+ declared.profile !== undefined);
126
174
  }
127
175
  function buildPrompt(req, skillBodies = []) {
128
176
  const parts = [];
129
177
  const systemParts = [];
178
+ if (req.agentDef?.soul !== undefined)
179
+ systemParts.push(req.agentDef.soul);
180
+ if (req.agentDef !== undefined)
181
+ systemParts.push(req.agentDef.instructions);
130
182
  if (req.system)
131
183
  systemParts.push(req.system);
132
184
  for (const body of skillBodies)
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/factory.d.ts CHANGED
@@ -26,6 +26,8 @@ export interface PiBackendConfig {
26
26
  timeout?: number;
27
27
  /** Max concurrent pi processes */
28
28
  maxConcurrent?: number;
29
+ /** Egress proxy URL to inject into pi subprocess (for network egress enforcement) */
30
+ egressProxyUrl?: string;
29
31
  }
30
32
  /**
31
33
  * Create a pi backend from CLI configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAA;AAC9C,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,GAAG;IAAE,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,GACxD,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAA;AAC9C,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,GAAG;IAAE,eAAe,CAAC,EAAE,SAAS,CAAA;CAAE,GACxD,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA"}
package/dist/factory.js CHANGED
@@ -6,6 +6,9 @@ export function createPiBackendFromConfig(config) {
6
6
  if (config.commandProvider !== undefined) {
7
7
  return Promise.resolve(config.commandProvider()).then((cmd) => createPiBackend({ ...config, command: cmd }));
8
8
  }
9
- return createPiBackend(config);
9
+ return createPiBackend({
10
+ ...config,
11
+ ...(config.egressProxyUrl !== undefined && { egressProxyUrl: config.egressProxyUrl }),
12
+ });
10
13
  }
11
14
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAuC9C,MAAM,UAAU,yBAAyB,CACvC,MAAuB;IAEvB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5D,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAC7C,CAAA;IACH,CAAC;IACD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAyC9C,MAAM,UAAU,yBAAyB,CACvC,MAAuB;IAEvB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5D,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAC7C,CAAA;IACH,CAAC;IACD,OAAO,eAAe,CAAC;QACrB,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;KACtF,CAAC,CAAA;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@ export { createPiBackendFromConfig } from './factory.js';
10
10
  export { PiProvider, createPiProvider } from './provider.js';
11
11
  export { PiRpcClient } from './rpc-client.js';
12
12
  export { createPiSdkBackend, derivePiToolAllowlist, PiSdkBackendError, PiSdkBackendAuthenticationError, PiSdkBackendTimeoutError, } from './sdk-backend.js';
13
- export { PiSdkClient } from './sdk-client.js';
13
+ export { PiSdkClient, PiSdkUpstreamError } from './sdk-client.js';
14
14
  export type { PiBackendOptions, PiSdkBackendOptions } from './types.js';
15
15
  export type { PiBackendConfig } from './factory.js';
16
16
  export type { PiRpcClientOptions, PiRpcResponse } from './rpc-client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACxE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -10,5 +10,5 @@ export { createPiBackendFromConfig } from './factory.js';
10
10
  export { PiProvider, createPiProvider } from './provider.js';
11
11
  export { PiRpcClient } from './rpc-client.js';
12
12
  export { createPiSdkBackend, derivePiToolAllowlist, PiSdkBackendError, PiSdkBackendAuthenticationError, PiSdkBackendTimeoutError, } from './sdk-backend.js';
13
- export { PiSdkClient } from './sdk-client.js';
13
+ export { PiSdkClient, PiSdkUpstreamError } from './sdk-client.js';
14
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,cAAc,EACd,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,+BAA+B,EAC/B,wBAAwB,GACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -11,6 +11,17 @@ export interface PiRpcClientOptions {
11
11
  args?: readonly string[];
12
12
  /** Whether to persist the session (default: false — ephemeral) */
13
13
  persistSession?: boolean;
14
+ /** Optional egress proxy URL to inject into subprocess environment */
15
+ egressProxyUrl?: string;
16
+ /** Optional egress token to inject into subprocess environment */
17
+ egressToken?: string;
18
+ /**
19
+ * Optional pre-encoded proxy env (HTTP_PROXY/HTTPS_PROXY/SKELM_EGRESS_TOKEN)
20
+ * supplied by the runtime per-step. When set, overrides the legacy
21
+ * `egressProxyUrl`/`egressToken` fields. The HTTP_PROXY value already has
22
+ * the token embedded as Basic credentials.
23
+ */
24
+ proxyEnv?: Record<string, string>;
14
25
  }
15
26
  export interface PiRpcResponse {
16
27
  text: string;
@@ -41,4 +52,12 @@ export declare class PiRpcClient {
41
52
  private _send;
42
53
  private _rejectAll;
43
54
  }
55
+ /**
56
+ * Encode an egress token into the credential field of a proxy URL so that
57
+ * standard HTTP clients automatically send `Proxy-Authorization: Basic
58
+ * <base64(token:<egressToken>)>`.
59
+ *
60
+ * Exported for testing.
61
+ */
62
+ export declare function encodeProxyUrlWithToken(proxyUrl: string, token: string | undefined): string;
44
63
  //# sourceMappingURL=rpc-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../src/rpc-client.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAGZ;IACH,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,OAAO,GAAE,kBAAuB;IAI5C,oFAAoF;IAC9E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B,yEAAyE;IACnE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoE1E,0CAA0C;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,gCAAgC;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,UAAU;CASnB"}
1
+ {"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../src/rpc-client.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0BAA0B;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAGZ;IACH,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,OAAO,GAAE,kBAAuB;IAI5C,oFAAoF;IAC9E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkF5B,yEAAyE;IACnE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAoE1E,0CAA0C;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,gCAAgC;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,UAAU;CASnB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU3F"}
@@ -28,9 +28,26 @@ export class PiRpcClient {
28
28
  args.push('--no-session');
29
29
  if (this.options.args)
30
30
  args.push(...this.options.args);
31
+ // Build environment with optional egress proxy injection
32
+ const env = Object.fromEntries(Object.entries(process.env).filter(([, v]) => v !== undefined));
33
+ // Inject proxy env. Three sources, in priority order:
34
+ // 1. options.proxyEnv (per-step env from BackendContext.proxyEnv when
35
+ // the gateway runtime provides one — this is the canonical path).
36
+ // 2. options.egressProxyUrl + options.egressToken — legacy
37
+ // construction-time fields kept for back-compat.
38
+ if (this.options.proxyEnv !== undefined) {
39
+ Object.assign(env, this.options.proxyEnv);
40
+ }
41
+ else if (this.options.egressProxyUrl !== undefined) {
42
+ env.HTTP_PROXY = encodeProxyUrlWithToken(this.options.egressProxyUrl, this.options.egressToken);
43
+ env.HTTPS_PROXY = env.HTTP_PROXY;
44
+ if (this.options.egressToken !== undefined) {
45
+ env.SKELM_EGRESS_TOKEN = this.options.egressToken;
46
+ }
47
+ }
31
48
  const proc = spawn(command, args, {
32
49
  cwd: this.options.cwd ?? process.cwd(),
33
- env: { ...process.env },
50
+ env,
34
51
  stdio: ['pipe', 'pipe', 'pipe'],
35
52
  });
36
53
  this.proc = proc;
@@ -196,4 +213,24 @@ export class PiRpcClient {
196
213
  this.eventListeners = [];
197
214
  }
198
215
  }
216
+ /**
217
+ * Encode an egress token into the credential field of a proxy URL so that
218
+ * standard HTTP clients automatically send `Proxy-Authorization: Basic
219
+ * <base64(token:<egressToken>)>`.
220
+ *
221
+ * Exported for testing.
222
+ */
223
+ export function encodeProxyUrlWithToken(proxyUrl, token) {
224
+ if (token === undefined || token === '')
225
+ return proxyUrl;
226
+ try {
227
+ const url = new URL(proxyUrl);
228
+ url.username = 'token';
229
+ url.password = token;
230
+ return url.toString();
231
+ }
232
+ catch {
233
+ return proxyUrl;
234
+ }
235
+ }
199
236
  //# sourceMappingURL=rpc-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../src/rpc-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../src/rpc-client.ts"],"names":[],"mappings":"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"}
@@ -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,EAKV,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,CA6FlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAsB9F"}
1
+ {"version":3,"file":"sdk-backend.d.ts","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,KAAK,EAOV,cAAc,EACd,YAAY,EACb,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAKrD,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,CAwHlF;AAsBD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAwB9F"}
@@ -16,8 +16,9 @@
16
16
  * fsWrite.size > 0 → 'write', 'edit'
17
17
  * undefined policy → no override (pi defaults)
18
18
  */
19
- import { formatSkillBlock } from '@skelm/core';
20
- import { PiSdkClient } from './sdk-client.js';
19
+ import { assertEgressEnforceable as assertEgressEnforceableCore, createConcurrencySemaphore, loadSkillBodies, } from '@skelm/core';
20
+ import { PiSdkClient, PiSdkUpstreamError } from './sdk-client.js';
21
+ const assertEgressEnforceable = (policy) => assertEgressEnforceableCore(policy, 'pi-sdk');
21
22
  export class PiSdkBackendError extends Error {
22
23
  cause;
23
24
  name = 'PiSdkBackendError';
@@ -39,7 +40,7 @@ export class PiSdkBackendTimeoutError extends PiSdkBackendError {
39
40
  */
40
41
  export function createPiSdkBackend(options = {}) {
41
42
  const capabilities = {
42
- prompt: false,
43
+ prompt: true,
43
44
  streaming: true,
44
45
  sessionLifecycle: true,
45
46
  mcp: false,
@@ -47,31 +48,63 @@ export function createPiSdkBackend(options = {}) {
47
48
  modelSelection: false,
48
49
  toolPermissions: 'native',
49
50
  };
50
- const maxConcurrent = options.maxConcurrent ?? 4;
51
- let active = 0;
52
- const queue = [];
53
- const acquire = () => {
54
- if (maxConcurrent === 0 || active < maxConcurrent) {
55
- active++;
56
- return Promise.resolve();
57
- }
58
- return new Promise((resolve) => queue.push(resolve));
59
- };
60
- const release = () => {
61
- const next = queue.shift();
62
- if (next)
63
- next();
64
- else
65
- active--;
66
- };
51
+ const { acquire, release } = createConcurrencySemaphore(options.maxConcurrent ?? 4);
67
52
  return {
68
53
  id: options.id ?? 'pi-sdk',
69
54
  label: options.label ?? 'Pi Coding Agent (SDK)',
70
55
  capabilities,
56
+ async infer(request, context) {
57
+ // Fail-closed before acquiring the concurrency slot — see comment on
58
+ // assertEgressEnforceable.
59
+ assertEgressEnforceable(context.permissions);
60
+ await acquire();
61
+ try {
62
+ const cwd = options.cwd;
63
+ const promptText = buildInferPrompt(request);
64
+ const client = new PiSdkClient({
65
+ ...(cwd !== undefined && { cwd }),
66
+ // Pure inference: disable all built-in tools
67
+ tools: [],
68
+ noTools: 'all',
69
+ ...(options.noExtensions !== undefined && { noExtensions: options.noExtensions }),
70
+ ...(options.noSkills !== undefined && { noSkills: options.noSkills }),
71
+ ...(options.noContextFiles !== undefined && { noContextFiles: options.noContextFiles }),
72
+ ...(request.system !== undefined && {
73
+ system: request.system,
74
+ replaceSystemPrompt: false,
75
+ }),
76
+ });
77
+ const result = await client.prompt(promptText, context.signal, options.timeout ?? 300_000, context.onPartial);
78
+ const response = {
79
+ ...(result.usage !== undefined && {
80
+ usage: {
81
+ inputTokens: result.usage.inputTokens,
82
+ outputTokens: result.usage.outputTokens,
83
+ },
84
+ }),
85
+ };
86
+ if (request.outputSchema !== undefined) {
87
+ response.structured = parseStructured(result.text);
88
+ }
89
+ else {
90
+ response.text = result.text;
91
+ }
92
+ return response;
93
+ }
94
+ catch (err) {
95
+ throw classifyPiSdkError(err, 'inference');
96
+ }
97
+ finally {
98
+ release();
99
+ }
100
+ },
71
101
  async run(request, context) {
102
+ const policy = context.permissions ?? request.permissions;
103
+ // Fail-closed before acquiring the concurrency slot — see comment on
104
+ // assertEgressEnforceable.
105
+ assertEgressEnforceable(policy);
72
106
  await acquire();
73
107
  try {
74
- const policy = context.permissions ?? request.permissions;
75
108
  const toolAllowlist = derivePiToolAllowlist(policy);
76
109
  const skillBodies = await loadSkillBodies(request, context);
77
110
  const systemContent = buildSystemContent(options.systemPrompt, request, skillBodies);
@@ -89,7 +122,7 @@ export function createPiSdkBackend(options = {}) {
89
122
  replaceSystemPrompt: options.systemPrompt !== undefined,
90
123
  }),
91
124
  });
92
- const result = await client.prompt(request.prompt, context.signal, options.timeout ?? 300_000);
125
+ const result = await client.prompt(request.prompt, context.signal, options.timeout ?? 300_000, context.onPartial);
93
126
  return {
94
127
  text: result.text,
95
128
  stopReason: result.stopReason,
@@ -102,15 +135,7 @@ export function createPiSdkBackend(options = {}) {
102
135
  };
103
136
  }
104
137
  catch (err) {
105
- if (err instanceof Error) {
106
- if (err.message.includes('ENOENT') || err.message.includes('not installed')) {
107
- throw new PiSdkBackendAuthenticationError('pi SDK not available. Install it: npm install @mariozechner/pi-coding-agent', err);
108
- }
109
- if (err.message.includes('timed out')) {
110
- throw new PiSdkBackendTimeoutError(err.message, err);
111
- }
112
- }
113
- throw new PiSdkBackendError(`pi SDK agent execution failed: ${err.message}`, err);
138
+ throw classifyPiSdkError(err, 'agent execution');
114
139
  }
115
140
  finally {
116
141
  release();
@@ -118,18 +143,40 @@ export function createPiSdkBackend(options = {}) {
118
143
  },
119
144
  };
120
145
  }
146
+ function classifyPiSdkError(err, action) {
147
+ if (err instanceof PiSdkUpstreamError) {
148
+ // Already carries provider/model + upstream errorMessage; surface it as
149
+ // a backend-level error without obscuring the diagnostic.
150
+ return new PiSdkBackendError(`pi SDK ${action} failed: ${err.message}`, err);
151
+ }
152
+ if (err instanceof Error) {
153
+ if (err.message.includes('ENOENT') || err.message.includes('not installed')) {
154
+ return new PiSdkBackendAuthenticationError('pi SDK not available. Install it: npm install @mariozechner/pi-coding-agent', err);
155
+ }
156
+ if (err.message.includes('timed out')) {
157
+ return new PiSdkBackendTimeoutError(err.message, err);
158
+ }
159
+ }
160
+ return new PiSdkBackendError(`pi SDK ${action} failed: ${err.message}`, err);
161
+ }
121
162
  /**
122
163
  * Derive a pi tool allowlist from a skelm permission policy.
123
164
  *
124
165
  * Returns `undefined` when no policy is set (pi uses its defaults).
125
166
  * Returns a string[] (possibly empty) when a policy is present.
167
+ *
168
+ * networkEgress: 'deny' suppresses the bash tool entirely — pi has no native
169
+ * fetch tool, so the only way an agent can reach the network is via
170
+ * `curl`/`wget`/etc. spawned through bash. Dropping bash from the allowlist
171
+ * is a coarse but reliable enforcement of network-deny.
126
172
  */
127
173
  export function derivePiToolAllowlist(policy) {
128
174
  if (policy === undefined)
129
175
  return undefined;
176
+ const networkDenied = policy.networkEgress === 'deny';
130
177
  const allowed = [];
131
178
  const execs = policy.allowedExecutables;
132
- if (execs.has('bash') || execs.has('sh')) {
179
+ if (!networkDenied && (execs.has('bash') || execs.has('sh'))) {
133
180
  allowed.push('bash');
134
181
  }
135
182
  const fsRead = policy.fsRead;
@@ -154,21 +201,59 @@ function buildSystemContent(systemBase, req, skillBodies) {
154
201
  const parts = [];
155
202
  if (systemBase !== undefined)
156
203
  parts.push(systemBase);
204
+ if (req.agentDef?.soul !== undefined)
205
+ parts.push(req.agentDef.soul);
206
+ if (req.agentDef !== undefined)
207
+ parts.push(req.agentDef.instructions);
157
208
  if (req.system)
158
209
  parts.push(req.system);
159
210
  for (const body of skillBodies)
160
211
  parts.push(body);
161
212
  return parts.length > 0 ? parts.join('\n\n---\n\n') : undefined;
162
213
  }
163
- async function loadSkillBodies(req, ctx) {
164
- if (!req.skills || req.skills.length === 0 || !ctx.loadSkill)
165
- return [];
166
- const bodies = [];
167
- for (const skillId of req.skills) {
168
- const skill = await ctx.loadSkill(skillId);
169
- if (skill !== null)
170
- bodies.push(formatSkillBlock(skill));
214
+ /**
215
+ * Concatenate InferRequest messages into a single prompt string.
216
+ * Pi runs as a chat agent that takes one user prompt — for multi-turn
217
+ * histories we serialize the conversation into a labeled transcript.
218
+ */
219
+ function buildInferPrompt(req) {
220
+ if (req.messages.length === 1 && req.messages[0]?.role === 'user') {
221
+ return req.messages[0].content;
171
222
  }
172
- return bodies;
223
+ return req.messages
224
+ .map((m) => `${m.role === 'user' ? 'User' : m.role === 'assistant' ? 'Assistant' : m.role}: ${m.content}`)
225
+ .join('\n\n');
226
+ }
227
+ /**
228
+ * Extract a JSON value from the model's text output. Tolerates ```json
229
+ * fenced blocks and surrounding prose. The runner validates the result
230
+ * against the step's output schema, so we only need to parse here.
231
+ */
232
+ function parseStructured(text) {
233
+ const candidate = extractJson(text);
234
+ if (candidate === null) {
235
+ throw new PiSdkBackendError(`pi inference returned no parseable JSON. Output (first 200 chars): ${text.slice(0, 200)}`);
236
+ }
237
+ try {
238
+ return JSON.parse(candidate);
239
+ }
240
+ catch (err) {
241
+ throw new PiSdkBackendError(`pi inference output is not valid JSON: ${err.message}. Raw: ${text.slice(0, 200)}`, err);
242
+ }
243
+ }
244
+ function extractJson(text) {
245
+ const fenced = text.match(/```(?:json)?\s*([\s\S]*?)```/);
246
+ if (fenced?.[1])
247
+ return fenced[1].trim();
248
+ const start = text.search(/[{[]/);
249
+ if (start === -1)
250
+ return null;
251
+ // Greedy: take from first opener through last matching closer.
252
+ const opener = text[start];
253
+ const closer = opener === '{' ? '}' : ']';
254
+ const end = text.lastIndexOf(closer);
255
+ if (end <= start)
256
+ return null;
257
+ return text.slice(start, end + 1);
173
258
  }
174
259
  //# sourceMappingURL=sdk-backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-backend.js","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-backend.js","sourceRoot":"","sources":["../src/sdk-backend.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@
5
5
  * pass resource-loader options (system prompt, skill/extension suppression)
6
6
  * that createAgentSession does not expose directly.
7
7
  */
8
+ export interface PiSdkPromptOptions {
9
+ signal?: AbortSignal;
10
+ timeoutMs?: number;
11
+ onPartial?: (delta: string) => void;
12
+ }
8
13
  export interface PiSdkClientOptions {
9
14
  /** Working directory for pi's project-local discovery. Default: process.cwd() */
10
15
  cwd?: string;
@@ -53,10 +58,28 @@ export interface PiSdkResponse {
53
58
  outputTokens: number;
54
59
  };
55
60
  }
61
+ /**
62
+ * Thrown by `PiSdkClient.prompt` when pi terminates with a non-success
63
+ * stopReason ('error' or 'aborted' from the provider side). Carries the
64
+ * upstream `errorMessage` from pi's final assistant message so callers can
65
+ * surface a useful diagnostic (rate limits, 401s, network failures, …).
66
+ */
67
+ export declare class PiSdkUpstreamError extends Error {
68
+ /** The stopReason pi reported on the final assistant message. */
69
+ readonly stopReason: 'error' | 'aborted';
70
+ /** The raw `errorMessage` field from pi's assistant message, if present. */
71
+ readonly upstreamErrorMessage?: string | undefined;
72
+ readonly name = "PiSdkUpstreamError";
73
+ constructor(message: string,
74
+ /** The stopReason pi reported on the final assistant message. */
75
+ stopReason: 'error' | 'aborted',
76
+ /** The raw `errorMessage` field from pi's assistant message, if present. */
77
+ upstreamErrorMessage?: string | undefined);
78
+ }
56
79
  export declare class PiSdkClient {
57
80
  private readonly opts;
58
81
  constructor(opts?: PiSdkClientOptions);
59
- prompt(text: string, signal?: AbortSignal, timeoutMs?: number): Promise<PiSdkResponse>;
82
+ prompt(text: string, signal?: AbortSignal, timeoutMs?: number, onPartial?: (delta: string) => void): Promise<PiSdkResponse>;
60
83
  private _run;
61
84
  }
62
85
  //# sourceMappingURL=sdk-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/D,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,kBAAuB;IAEpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,SAAS,SAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7F,OAAO,CAAC,IAAI;CAuEb"}
1
+ {"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/D,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAIzC,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,SAAS;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM;IANxC,SAAkB,IAAI,wBAAuB;gBAE3C,OAAO,EAAE,MAAM;IACf,iEAAiE;IACxD,UAAU,EAAE,OAAO,GAAG,SAAS;IACxC,4EAA4E;IACnE,oBAAoB,CAAC,EAAE,MAAM,YAAA;CAIzC;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,kBAAuB;IAEpD,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,aAAa,CAAC;IA4CzB,OAAO,CAAC,IAAI;CAsIb"}
@@ -5,12 +5,32 @@
5
5
  * pass resource-loader options (system prompt, skill/extension suppression)
6
6
  * that createAgentSession does not expose directly.
7
7
  */
8
+ /**
9
+ * Thrown by `PiSdkClient.prompt` when pi terminates with a non-success
10
+ * stopReason ('error' or 'aborted' from the provider side). Carries the
11
+ * upstream `errorMessage` from pi's final assistant message so callers can
12
+ * surface a useful diagnostic (rate limits, 401s, network failures, …).
13
+ */
14
+ export class PiSdkUpstreamError extends Error {
15
+ stopReason;
16
+ upstreamErrorMessage;
17
+ name = 'PiSdkUpstreamError';
18
+ constructor(message,
19
+ /** The stopReason pi reported on the final assistant message. */
20
+ stopReason,
21
+ /** The raw `errorMessage` field from pi's assistant message, if present. */
22
+ upstreamErrorMessage) {
23
+ super(message);
24
+ this.stopReason = stopReason;
25
+ this.upstreamErrorMessage = upstreamErrorMessage;
26
+ }
27
+ }
8
28
  export class PiSdkClient {
9
29
  opts;
10
30
  constructor(opts = {}) {
11
31
  this.opts = opts;
12
32
  }
13
- async prompt(text, signal, timeoutMs = 300_000) {
33
+ async prompt(text, signal, timeoutMs, onPartial) {
14
34
  // Dynamic import keeps @mariozechner/pi-coding-agent optional at runtime
15
35
  const pi = await import('@mariozechner/pi-coding-agent').catch(() => {
16
36
  throw new Error('pi SDK not installed. Add @mariozechner/pi-coding-agent to your project: npm install @mariozechner/pi-coding-agent');
@@ -38,13 +58,13 @@ export class PiSdkClient {
38
58
  ...(this.opts.noTools !== undefined && { noTools: this.opts.noTools }),
39
59
  });
40
60
  try {
41
- return await this._run(session, text, signal, timeoutMs);
61
+ return await this._run(session, text, signal, timeoutMs ?? 300_000, onPartial);
42
62
  }
43
63
  finally {
44
64
  session.dispose();
45
65
  }
46
66
  }
47
- _run(session, text, signal, timeoutMs) {
67
+ _run(session, text, signal, timeoutMs, onPartial) {
48
68
  return new Promise((resolve, reject) => {
49
69
  let settled = false;
50
70
  const settle = (fn) => {
@@ -73,13 +93,56 @@ export class PiSdkClient {
73
93
  return;
74
94
  }
75
95
  signal?.addEventListener('abort', onAbort, { once: true });
96
+ // Track accumulated text per message for delta calculation
97
+ const partialTextByMsg = new Map();
76
98
  const unsub = session.subscribe((event) => {
99
+ // Forward partial text deltas if onPartial is provided.
100
+ // pi emits 'message_update' events during streaming with updated content arrays.
101
+ if (onPartial !== undefined && event.type === 'message_update') {
102
+ const msg = event.message;
103
+ if (msg.role === 'assistant' && Array.isArray(msg.content)) {
104
+ const fullText = msg.content
105
+ .filter((c) => c.type === 'text')
106
+ .map((c) => c.text)
107
+ .join('');
108
+ const msgId = event.messageId ?? 'default';
109
+ const prev = partialTextByMsg.get(msgId) ?? '';
110
+ if (fullText.length > prev.length) {
111
+ onPartial(fullText.slice(prev.length));
112
+ partialTextByMsg.set(msgId, fullText);
113
+ }
114
+ }
115
+ }
77
116
  if (event.type === 'agent_end') {
78
117
  unsub();
79
118
  settle(() => {
80
119
  const assistantMsg = [...event.messages].reverse().find((m) => m.role === 'assistant');
81
120
  if (!assistantMsg || assistantMsg.role !== 'assistant') {
82
- resolve({ text: '', stopReason: 'stop' });
121
+ // pi terminated without producing an assistant message. This is
122
+ // not a successful "empty stop" — surface it as a real error so
123
+ // the runner can mark the step failed instead of silently
124
+ // recording a completed step with empty text.
125
+ reject(new PiSdkUpstreamError('pi agent terminated without producing an assistant message', 'error'));
126
+ return;
127
+ }
128
+ // pi-coding-agent embeds upstream provider errors (rate limits,
129
+ // 401s, network failures, model-side aborts, …) into the final
130
+ // assistant message with stopReason: 'error' or 'aborted' and an
131
+ // optional `errorMessage` field. Without this guard the SDK would
132
+ // resolve `{ text: '', stopReason: 'error' }` which the runner
133
+ // records as `status: completed` — masquerading as success.
134
+ // Promote those terminal stopReasons to a thrown error.
135
+ if (assistantMsg.stopReason === 'error' || assistantMsg.stopReason === 'aborted') {
136
+ const detail = typeof assistantMsg.errorMessage === 'string'
137
+ ? assistantMsg.errorMessage
138
+ : undefined;
139
+ const apiTag = 'provider' in assistantMsg && 'model' in assistantMsg
140
+ ? ` (provider=${assistantMsg.provider ?? '?'}, model=${assistantMsg.model ?? '?'})`
141
+ : '';
142
+ const headline = assistantMsg.stopReason === 'aborted'
143
+ ? `pi inference aborted${apiTag}`
144
+ : `pi inference failed${apiTag}`;
145
+ reject(new PiSdkUpstreamError(detail !== undefined && detail.length > 0 ? `${headline}: ${detail}` : headline, assistantMsg.stopReason, detail));
83
146
  return;
84
147
  }
85
148
  const text = assistantMsg.content
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-client.js","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -59,5 +59,11 @@ export interface PiBackendOptions {
59
59
  * Excess calls are queued until a slot opens.
60
60
  */
61
61
  maxConcurrent?: number;
62
+ /**
63
+ * Optional egress proxy URL to inject into subprocess environment.
64
+ * When provided along with an egress token from the gateway, the pi process
65
+ * will route outbound connections through the proxy for network policy enforcement.
66
+ */
67
+ egressProxyUrl?: string;
62
68
  }
63
69
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@skelm/pi",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
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>",
7
- "homepage": "https://github.com/scottgl9/skelm#readme",
7
+ "homepage": "https://skelm.dev/",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/scottgl9/skelm.git",
@@ -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.6"
49
+ "@skelm/core": "^0.3.8"
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.6",
58
+ "@skelm/core": "^0.3.8",
59
59
  "@types/node": "^20.10.0",
60
60
  "typescript": "^5.3.0",
61
61
  "vitest": "^1.0.0"