cpa-agents 0.2.2 → 0.3.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/README.md +34 -1
- package/dist/adapters/openclaw.d.ts +16 -4
- package/dist/adapters/openclaw.d.ts.map +1 -1
- package/dist/adapters/openclaw.js +29 -41
- package/dist/adapters/openclaw.js.map +1 -1
- package/dist/adapters/pi-harness.d.ts +49 -7
- package/dist/adapters/pi-harness.d.ts.map +1 -1
- package/dist/adapters/pi-harness.js +160 -77
- package/dist/adapters/pi-harness.js.map +1 -1
- package/dist/agent.js +2 -2
- package/dist/agent.js.map +1 -1
- package/dist/channel.d.ts +9 -2
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +138 -17
- package/dist/channel.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/jsonl.d.ts +25 -0
- package/dist/jsonl.d.ts.map +1 -0
- package/dist/jsonl.js +53 -0
- package/dist/jsonl.js.map +1 -0
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js +68 -37
- package/dist/process.js.map +1 -1
- package/dist/scheduler.d.ts +14 -3
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +32 -1
- package/dist/scheduler.js.map +1 -1
- package/dist/session-tree.d.ts +3 -0
- package/dist/session-tree.d.ts.map +1 -0
- package/dist/session-tree.js +29 -0
- package/dist/session-tree.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Concurrent Process Algebra for AI Agents.
|
|
|
7
7
|
- fork algebra (relational composition and paired derivations)
|
|
8
8
|
- operator algebra (practical control flow: rollback, retries, guards, timeout)
|
|
9
9
|
|
|
10
|
-
Designed for [Pi
|
|
10
|
+
Designed for [Pi Coding Agent](https://github.com/earendil-works/pi) (`@earendil-works/pi-coding-agent`), [OpenClaw](https://github.com/openclaw/openclaw), and standalone TypeScript workflows.
|
|
11
11
|
|
|
12
12
|
## Install
|
|
13
13
|
|
|
@@ -167,18 +167,51 @@ Skill authoring docs are in `skills/cpa-agents/SKILL.md`.
|
|
|
167
167
|
|
|
168
168
|
## Pi Harness integration
|
|
169
169
|
|
|
170
|
+
Pi upstream lives at [`earendil-works/pi`](https://github.com/earendil-works/pi) with packages `@earendil-works/pi-coding-agent`, `@earendil-works/pi-agent-core`, and `@earendil-works/pi-ai`. The adapter below targets the extension API and expects `piCtx.agent.run(task)`:
|
|
171
|
+
|
|
170
172
|
```typescript
|
|
171
173
|
// .pi/extensions/cpa.ts
|
|
172
174
|
import { createPiCpaExtension } from "cpa-agents/adapters/pi";
|
|
175
|
+
|
|
173
176
|
export default createPiCpaExtension();
|
|
174
177
|
```
|
|
175
178
|
|
|
179
|
+
Extension commands: `cpa:par`, `cpa:fix`, `cpa:tree`, `cpa:retry`, `cpa:fallback`, `cpa:saga`, `cpa:fan-out`.
|
|
180
|
+
|
|
181
|
+
For standalone workflows outside the extension, wire factories via `configurePiBridge()` or pass `bridge` per factory:
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
import { configurePiBridge, piSubAgent } from "cpa-agents/adapters/pi";
|
|
185
|
+
|
|
186
|
+
configurePiBridge({
|
|
187
|
+
runSubAgent: async ({ prompt }, signal) => host.run(prompt, { signal }),
|
|
188
|
+
runTool: async ({ tool, args }, signal) => host.runTool(tool, args, { signal }),
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
|
|
176
192
|
## Session tree and trace
|
|
177
193
|
|
|
178
194
|
Every scheduler run emits:
|
|
179
195
|
- `sessionTree` (hierarchical execution tree)
|
|
180
196
|
- `trace` (flat event list)
|
|
181
197
|
|
|
198
|
+
Persist traces as JSONL (Pi-compatible) and reload them:
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
import { Scheduler, loadJsonlTree, eventsToSessionTree } from "cpa-agents";
|
|
202
|
+
|
|
203
|
+
const scheduler = new Scheduler();
|
|
204
|
+
const sink = scheduler.attachJsonl("./session.jsonl");
|
|
205
|
+
|
|
206
|
+
const result = await scheduler.run("workflow", myProcess);
|
|
207
|
+
await sink.close();
|
|
208
|
+
|
|
209
|
+
const tree = await loadJsonlTree("./session.jsonl");
|
|
210
|
+
// or: eventsToSessionTree(result.trace.events)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Inspect the live tree:
|
|
214
|
+
|
|
182
215
|
```typescript
|
|
183
216
|
const result = await scheduler.run("workflow", myProcess);
|
|
184
217
|
|
|
@@ -3,19 +3,33 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Integrates cpa-agents as an OpenClaw skill.
|
|
5
5
|
*/
|
|
6
|
-
import { type TraceEvent
|
|
6
|
+
import { type TraceEvent } from "../process.js";
|
|
7
7
|
import { type AgentCall } from "../agent.js";
|
|
8
8
|
import { type SchedulerResult } from "../scheduler.js";
|
|
9
|
-
|
|
9
|
+
import { sessionTreeToMarkdown } from "../session-tree.js";
|
|
10
|
+
export { sessionTreeToMarkdown };
|
|
11
|
+
export declare const SKILL_MD: string;
|
|
12
|
+
export interface OpenClawBridge {
|
|
13
|
+
runTool: (tool: string, args: Record<string, unknown>, signal?: AbortSignal) => Promise<unknown>;
|
|
14
|
+
readMemory: (key: string, signal?: AbortSignal) => Promise<string>;
|
|
15
|
+
writeMemory: (input: {
|
|
16
|
+
key: string;
|
|
17
|
+
value: string;
|
|
18
|
+
}, signal?: AbortSignal) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
/** Connect standalone openclawTool/workspaceAgent factories to a gateway. */
|
|
21
|
+
export declare function configureOpenClawBridge(bridge: OpenClawBridge | undefined): void;
|
|
10
22
|
export declare function openclawTool<TInput, TOutput>(opts: {
|
|
11
23
|
name: string;
|
|
12
24
|
tool: string;
|
|
13
25
|
buildArgs: (input: TInput) => Record<string, unknown>;
|
|
14
26
|
parseResult: (raw: unknown) => TOutput;
|
|
27
|
+
bridge?: OpenClawBridge;
|
|
15
28
|
}): AgentCall<TInput, TOutput>;
|
|
16
29
|
export declare function workspaceAgent(opts: {
|
|
17
30
|
name: string;
|
|
18
31
|
workspacePath?: string;
|
|
32
|
+
bridge?: OpenClawBridge;
|
|
19
33
|
}): {
|
|
20
34
|
readMemory: AgentCall<string, string>;
|
|
21
35
|
writeMemory: AgentCall<{
|
|
@@ -44,6 +58,4 @@ export declare function createOpenClawSkill(): {
|
|
|
44
58
|
skillMd: string;
|
|
45
59
|
handleCommand(command: string, args: Record<string, unknown>, openclawCtx: OpenClawContext): Promise<SchedulerResult<unknown>>;
|
|
46
60
|
};
|
|
47
|
-
export declare function sessionTreeToMarkdown(nodes: SessionNode[], depth?: number): string;
|
|
48
|
-
export {};
|
|
49
61
|
//# sourceMappingURL=openclaw.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,KAAK,UAAU,EAIhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,SAAS,EAAwB,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAIjC,eAAO,MAAM,QAAQ,QAoGpB,CAAC;AAIF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,WAAW,EAAE,CACX,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EACrC,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAID,6EAA6E;AAC7E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,IAAI,CAEN;AAaD,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,WAAW,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IACvC,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAa7B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG;IACF,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,SAAS,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,IAAI,CAAC,CAAC;CAC9D,CAoBA;AAID,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;KAC3C,CAAC;IACF,KAAK,EAAE;QACL,GAAG,EAAE,CACH,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,KAC5C,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACrD,CAAC;CACH;AAED,wBAAgB,mBAAmB;;;;2BASpB,MAAM,QACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eAChB,eAAe,GAC3B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;EA4LvC"}
|
|
@@ -7,6 +7,9 @@ import { par, branchFix, } from "../process.js";
|
|
|
7
7
|
import { agentProcess, fanOut } from "../agent.js";
|
|
8
8
|
import { invertible, or, retryWithBackoff, saga, timeout } from "../operators.js";
|
|
9
9
|
import { Scheduler } from "../scheduler.js";
|
|
10
|
+
import { sessionTreeToMarkdown } from "../session-tree.js";
|
|
11
|
+
import { VERSION } from "../version.js";
|
|
12
|
+
export { sessionTreeToMarkdown };
|
|
10
13
|
// ─── SKILL.md content ───────────────────────────────────────────
|
|
11
14
|
export const SKILL_MD = `# cpa-agents — Concurrent Process Algebra
|
|
12
15
|
|
|
@@ -31,7 +34,7 @@ export default createOpenClawSkill();
|
|
|
31
34
|
### 3) Ensure OpenClaw can execute skills
|
|
32
35
|
- OpenClaw Gateway must be running.
|
|
33
36
|
- Your skill runtime must allow async tool execution.
|
|
34
|
-
- Keep this package at version \`
|
|
37
|
+
- Keep this package at version \`${VERSION}\` or newer.
|
|
35
38
|
|
|
36
39
|
## Commands
|
|
37
40
|
|
|
@@ -109,28 +112,42 @@ Input:
|
|
|
109
112
|
- **No session events**
|
|
110
113
|
- Confirm session context has \`appendEvent\` enabled.
|
|
111
114
|
`;
|
|
112
|
-
|
|
115
|
+
let configuredOpenClawBridge;
|
|
116
|
+
/** Connect standalone openclawTool/workspaceAgent factories to a gateway. */
|
|
117
|
+
export function configureOpenClawBridge(bridge) {
|
|
118
|
+
configuredOpenClawBridge = bridge;
|
|
119
|
+
}
|
|
120
|
+
function resolveOpenClawBridge(explicit) {
|
|
121
|
+
const bridge = explicit ?? configuredOpenClawBridge;
|
|
122
|
+
if (!bridge) {
|
|
123
|
+
throw new Error("OpenClaw bridge not connected. Pass bridge to the factory, call configureOpenClawBridge(), " +
|
|
124
|
+
"or use createOpenClawSkill() with openclawCtx.agent.");
|
|
125
|
+
}
|
|
126
|
+
return bridge;
|
|
127
|
+
}
|
|
113
128
|
export function openclawTool(opts) {
|
|
114
129
|
return {
|
|
115
130
|
name: `openclaw:${opts.name}`,
|
|
116
|
-
invoke: async (
|
|
117
|
-
|
|
118
|
-
|
|
131
|
+
invoke: async (input, signal) => {
|
|
132
|
+
const bridge = resolveOpenClawBridge(opts.bridge);
|
|
133
|
+
const raw = await bridge.runTool(opts.tool, opts.buildArgs(input), signal);
|
|
134
|
+
return opts.parseResult(raw);
|
|
119
135
|
},
|
|
120
136
|
};
|
|
121
137
|
}
|
|
122
138
|
export function workspaceAgent(opts) {
|
|
139
|
+
const getBridge = () => resolveOpenClawBridge(opts.bridge);
|
|
123
140
|
return {
|
|
124
141
|
readMemory: {
|
|
125
142
|
name: `workspace:read:${opts.name}`,
|
|
126
|
-
invoke: async (
|
|
127
|
-
|
|
143
|
+
invoke: async (key, signal) => {
|
|
144
|
+
return getBridge().readMemory(key, signal);
|
|
128
145
|
},
|
|
129
146
|
},
|
|
130
147
|
writeMemory: {
|
|
131
148
|
name: `workspace:write:${opts.name}`,
|
|
132
|
-
invoke: async (
|
|
133
|
-
|
|
149
|
+
invoke: async (input, signal) => {
|
|
150
|
+
await getBridge().writeMemory(input, signal);
|
|
134
151
|
},
|
|
135
152
|
},
|
|
136
153
|
};
|
|
@@ -139,7 +156,7 @@ export function createOpenClawSkill() {
|
|
|
139
156
|
const schedulers = new Map();
|
|
140
157
|
return {
|
|
141
158
|
name: "cpa-agents",
|
|
142
|
-
version:
|
|
159
|
+
version: VERSION,
|
|
143
160
|
skillMd: SKILL_MD,
|
|
144
161
|
async handleCommand(command, args, openclawCtx) {
|
|
145
162
|
const scheduler = new Scheduler({
|
|
@@ -258,14 +275,14 @@ export function createOpenClawSkill() {
|
|
|
258
275
|
return {
|
|
259
276
|
success: true,
|
|
260
277
|
value: { message: "No active CPA processes" },
|
|
261
|
-
trace: scheduler
|
|
278
|
+
trace: scheduler.traceCollector,
|
|
262
279
|
sessionTree: [],
|
|
263
280
|
};
|
|
264
281
|
}
|
|
265
282
|
return {
|
|
266
283
|
success: true,
|
|
267
284
|
value: { tree: s.getSessionTree() },
|
|
268
|
-
trace: s
|
|
285
|
+
trace: s.traceCollector,
|
|
269
286
|
sessionTree: s.getSessionTree(),
|
|
270
287
|
};
|
|
271
288
|
}
|
|
@@ -279,33 +296,4 @@ export function createOpenClawSkill() {
|
|
|
279
296
|
},
|
|
280
297
|
};
|
|
281
298
|
}
|
|
282
|
-
// ─── Session tree serialization ─────────────────────────────────
|
|
283
|
-
export function sessionTreeToMarkdown(nodes, depth = 0) {
|
|
284
|
-
const indent = " ".repeat(depth);
|
|
285
|
-
let md = "";
|
|
286
|
-
for (const node of nodes) {
|
|
287
|
-
const status = node.events.some((e) => e.type === "error")
|
|
288
|
-
? "error"
|
|
289
|
-
: node.events.some((e) => e.type === "done")
|
|
290
|
-
? "done"
|
|
291
|
-
: "running";
|
|
292
|
-
md += `${indent}- **${node.name}** (${node.runId}) [${status}]\n`;
|
|
293
|
-
const branches = node.events.filter((e) => e.type === "branch");
|
|
294
|
-
for (const b of branches) {
|
|
295
|
-
if (b.type === "branch") {
|
|
296
|
-
md += `${indent} - Branch: chose "${b.chosen}" from [${b.alternatives.join(", ")}]\n`;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
const fixes = node.events.filter((e) => e.type === "fix_start" || e.type === "fix_end");
|
|
300
|
-
for (const f of fixes) {
|
|
301
|
-
if (f.type === "fix_start") {
|
|
302
|
-
md += `${indent} - Fix started: ${f.reason}\n`;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (node.children.length > 0) {
|
|
306
|
-
md += sessionTreeToMarkdown(node.children, depth + 1);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
return md;
|
|
310
|
-
}
|
|
311
299
|
//# sourceMappingURL=openclaw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../src/adapters/openclaw.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pi Harness adapter
|
|
3
3
|
*/
|
|
4
|
+
import { type TraceEvent, type SessionNode } from "../process.js";
|
|
4
5
|
import { type AgentCall } from "../agent.js";
|
|
6
|
+
import { type SchedulerResult } from "../scheduler.js";
|
|
7
|
+
export interface PiAgentRuntime {
|
|
8
|
+
run: (task: string, opts?: {
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
model?: string;
|
|
11
|
+
}) => Promise<{
|
|
12
|
+
output: string;
|
|
13
|
+
errors?: string[];
|
|
14
|
+
}>;
|
|
15
|
+
runTool?: (tool: string, args: Record<string, unknown>, opts?: {
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}) => Promise<string>;
|
|
18
|
+
}
|
|
19
|
+
export interface PiHostContext {
|
|
20
|
+
log?: (msg: string) => void;
|
|
21
|
+
session?: {
|
|
22
|
+
id: string;
|
|
23
|
+
appendEvent?: (event: TraceEvent) => void;
|
|
24
|
+
};
|
|
25
|
+
agent?: PiAgentRuntime;
|
|
26
|
+
}
|
|
27
|
+
export interface PiBridge {
|
|
28
|
+
runSubAgent: (opts: {
|
|
29
|
+
prompt: string;
|
|
30
|
+
model?: string;
|
|
31
|
+
}, signal: AbortSignal) => Promise<string>;
|
|
32
|
+
runTool: (opts: {
|
|
33
|
+
tool: string;
|
|
34
|
+
args: Record<string, unknown>;
|
|
35
|
+
}, signal: AbortSignal) => Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
/** Connect standalone piTool/piSubAgent factories to a host runtime. */
|
|
38
|
+
export declare function configurePiBridge(bridge: PiBridge | undefined): void;
|
|
5
39
|
export declare function piTool<TInput, TOutput>(opts: {
|
|
6
40
|
name: string;
|
|
7
41
|
tool: string;
|
|
8
42
|
buildArgs: (input: TInput) => Record<string, unknown>;
|
|
9
43
|
parseResult: (raw: string) => TOutput;
|
|
44
|
+
bridge?: PiBridge;
|
|
10
45
|
}): AgentCall<TInput, TOutput>;
|
|
11
46
|
export declare function piSubAgent<TOutput>(opts: {
|
|
12
47
|
name: string;
|
|
13
48
|
prompt: string;
|
|
14
49
|
model?: string;
|
|
15
50
|
parseResult: (sessionOutput: string) => TOutput;
|
|
51
|
+
bridge?: PiBridge;
|
|
16
52
|
}): AgentCall<void, TOutput>;
|
|
53
|
+
export declare function createPiBridgeFromAgent(agent: PiAgentRuntime): PiBridge;
|
|
17
54
|
export declare function createPiCpaExtension(): {
|
|
18
55
|
name: string;
|
|
19
56
|
version: string;
|
|
@@ -21,29 +58,34 @@ export declare function createPiCpaExtension(): {
|
|
|
21
58
|
commands: {
|
|
22
59
|
"cpa:par": {
|
|
23
60
|
description: string;
|
|
24
|
-
handler: (args: string, piCtx:
|
|
61
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
25
62
|
};
|
|
26
63
|
"cpa:fix": {
|
|
27
64
|
description: string;
|
|
28
|
-
handler: (args: string, piCtx:
|
|
65
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
29
66
|
};
|
|
30
67
|
"cpa:tree": {
|
|
31
68
|
description: string;
|
|
32
|
-
handler: (_args: string,
|
|
33
|
-
|
|
69
|
+
handler: (_args: string, piCtx: PiHostContext) => Promise<{
|
|
70
|
+
tree: SessionNode[];
|
|
71
|
+
markdown: string;
|
|
34
72
|
}>;
|
|
35
73
|
};
|
|
36
74
|
"cpa:retry": {
|
|
37
75
|
description: string;
|
|
38
|
-
handler: (args: string, piCtx:
|
|
76
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
39
77
|
};
|
|
40
78
|
"cpa:fallback": {
|
|
41
79
|
description: string;
|
|
42
|
-
handler: (args: string, piCtx:
|
|
80
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
43
81
|
};
|
|
44
82
|
"cpa:saga": {
|
|
45
83
|
description: string;
|
|
46
|
-
handler: (args: string, piCtx:
|
|
84
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
85
|
+
};
|
|
86
|
+
"cpa:fan-out": {
|
|
87
|
+
description: string;
|
|
88
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
47
89
|
};
|
|
48
90
|
};
|
|
49
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-harness.d.ts","sourceRoot":"","sources":["../../src/adapters/pi-harness.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"pi-harness.d.ts","sourceRoot":"","sources":["../../src/adapters/pi-harness.ts"],"names":[],"mappings":"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"}
|