cpa-agents 0.2.0 → 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 +158 -68
- package/dist/adapters/openclaw.d.ts +16 -4
- package/dist/adapters/openclaw.d.ts.map +1 -1
- package/dist/adapters/openclaw.js +100 -42
- package/dist/adapters/openclaw.js.map +1 -1
- package/dist/adapters/pi-harness.d.ts +58 -4
- package/dist/adapters/pi-harness.d.ts.map +1 -1
- package/dist/adapters/pi-harness.js +197 -37
- 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
|
@@ -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,18 +58,35 @@ 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
|
};
|
|
74
|
+
"cpa:retry": {
|
|
75
|
+
description: string;
|
|
76
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
77
|
+
};
|
|
78
|
+
"cpa:fallback": {
|
|
79
|
+
description: string;
|
|
80
|
+
handler: (args: string, piCtx: PiHostContext) => Promise<SchedulerResult<unknown>>;
|
|
81
|
+
};
|
|
82
|
+
"cpa:saga": {
|
|
83
|
+
description: string;
|
|
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>>;
|
|
89
|
+
};
|
|
36
90
|
};
|
|
37
91
|
};
|
|
38
92
|
//# sourceMappingURL=pi-harness.d.ts.map
|
|
@@ -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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"}
|
|
@@ -1,74 +1,234 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pi Harness adapter
|
|
3
3
|
*/
|
|
4
|
-
import { par, } from "../process.js";
|
|
5
|
-
import {
|
|
4
|
+
import { par, branchFix, } from "../process.js";
|
|
5
|
+
import { fanOut } from "../agent.js";
|
|
6
|
+
import { invertible, or, retryWithBackoff, saga, timeout } from "../operators.js";
|
|
6
7
|
import { Scheduler } from "../scheduler.js";
|
|
8
|
+
import { sessionTreeToMarkdown } from "../session-tree.js";
|
|
9
|
+
import { VERSION } from "../version.js";
|
|
10
|
+
let configuredPiBridge;
|
|
11
|
+
/** Connect standalone piTool/piSubAgent factories to a host runtime. */
|
|
12
|
+
export function configurePiBridge(bridge) {
|
|
13
|
+
configuredPiBridge = bridge;
|
|
14
|
+
}
|
|
15
|
+
function resolvePiBridge(explicit) {
|
|
16
|
+
const bridge = explicit ?? configuredPiBridge;
|
|
17
|
+
if (!bridge) {
|
|
18
|
+
throw new Error("Pi bridge not connected. Pass bridge to the factory, call configurePiBridge(), " +
|
|
19
|
+
"or use createPiCpaExtension() with piCtx.agent.");
|
|
20
|
+
}
|
|
21
|
+
return bridge;
|
|
22
|
+
}
|
|
23
|
+
function requirePiAgent(ctx) {
|
|
24
|
+
if (!ctx.agent) {
|
|
25
|
+
throw new Error("Pi agent runtime not connected. Provide piCtx.agent with a run() method.");
|
|
26
|
+
}
|
|
27
|
+
return ctx.agent;
|
|
28
|
+
}
|
|
29
|
+
function sessionId(ctx) {
|
|
30
|
+
return ctx.session?.id ?? "default";
|
|
31
|
+
}
|
|
32
|
+
function makeScheduler(ctx) {
|
|
33
|
+
return new Scheduler({
|
|
34
|
+
onTrace: (e) => {
|
|
35
|
+
ctx.log?.(`[cpa] ${e.type}: ${e.runId}`);
|
|
36
|
+
ctx.session?.appendEvent?.(e);
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function makeRunTask(agent) {
|
|
41
|
+
return (task, model) => async (runCtx) => {
|
|
42
|
+
const result = await agent.run(task, {
|
|
43
|
+
model,
|
|
44
|
+
signal: runCtx.signal,
|
|
45
|
+
});
|
|
46
|
+
if (result.errors?.length) {
|
|
47
|
+
throw new Error(result.errors.join("; "));
|
|
48
|
+
}
|
|
49
|
+
return result.output;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function makeRunTaskVoid(agent) {
|
|
53
|
+
const runTask = makeRunTask(agent);
|
|
54
|
+
return (task, model) => async (runCtx) => {
|
|
55
|
+
await runTask(task, model)(runCtx);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
7
58
|
export function piTool(opts) {
|
|
8
59
|
return {
|
|
9
60
|
name: `pi:${opts.name}`,
|
|
10
|
-
invoke: async (
|
|
11
|
-
|
|
12
|
-
|
|
61
|
+
invoke: async (input, signal) => {
|
|
62
|
+
const bridge = resolvePiBridge(opts.bridge);
|
|
63
|
+
const raw = await bridge.runTool({ tool: opts.tool, args: opts.buildArgs(input) }, signal);
|
|
64
|
+
return opts.parseResult(raw);
|
|
13
65
|
},
|
|
14
66
|
};
|
|
15
67
|
}
|
|
16
68
|
export function piSubAgent(opts) {
|
|
17
69
|
return {
|
|
18
70
|
name: `pi:subagent:${opts.name}`,
|
|
19
|
-
invoke: async (_,
|
|
20
|
-
|
|
71
|
+
invoke: async (_, signal) => {
|
|
72
|
+
const bridge = resolvePiBridge(opts.bridge);
|
|
73
|
+
const output = await bridge.runSubAgent({ prompt: opts.prompt, model: opts.model }, signal);
|
|
74
|
+
return opts.parseResult(output);
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function createPiBridgeFromAgent(agent) {
|
|
79
|
+
return {
|
|
80
|
+
runSubAgent: async ({ prompt, model }, signal) => {
|
|
81
|
+
const result = await agent.run(prompt, { model, signal });
|
|
82
|
+
if (result.errors?.length) {
|
|
83
|
+
throw new Error(result.errors.join("; "));
|
|
84
|
+
}
|
|
85
|
+
return result.output;
|
|
86
|
+
},
|
|
87
|
+
runTool: async ({ tool, args }, signal) => {
|
|
88
|
+
if (!agent.runTool) {
|
|
89
|
+
throw new Error(`Pi agent runtime has no runTool() for tool "${tool}"`);
|
|
90
|
+
}
|
|
91
|
+
return agent.runTool(tool, args, { signal });
|
|
21
92
|
},
|
|
22
93
|
};
|
|
23
94
|
}
|
|
24
95
|
export function createPiCpaExtension() {
|
|
96
|
+
const lastTrees = new Map();
|
|
97
|
+
async function rememberTree(ctx, result) {
|
|
98
|
+
lastTrees.set(sessionId(ctx), result.sessionTree);
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
25
101
|
return {
|
|
26
102
|
name: "cpa-agents",
|
|
27
|
-
version:
|
|
103
|
+
version: VERSION,
|
|
28
104
|
description: "Concurrent Process Algebra for AI agent orchestration",
|
|
29
105
|
commands: {
|
|
30
106
|
"cpa:par": {
|
|
31
107
|
description: "Run tasks in parallel using process algebra",
|
|
32
108
|
handler: async (args, piCtx) => {
|
|
33
|
-
const
|
|
34
|
-
const scheduler =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const parallelProc = par(...processes.map((p) => agentProcess(p, undefined)));
|
|
43
|
-
return scheduler.run("par", parallelProc);
|
|
109
|
+
const agent = requirePiAgent(piCtx);
|
|
110
|
+
const scheduler = makeScheduler(piCtx);
|
|
111
|
+
const tasks = args
|
|
112
|
+
.split("|")
|
|
113
|
+
.map((t) => t.trim())
|
|
114
|
+
.filter(Boolean);
|
|
115
|
+
const runTask = makeRunTask(agent);
|
|
116
|
+
const processes = tasks.map((task) => runTask(task));
|
|
117
|
+
return rememberTree(piCtx, await scheduler.run("par", par(...processes)));
|
|
44
118
|
},
|
|
45
119
|
},
|
|
46
120
|
"cpa:fix": {
|
|
47
121
|
description: "Run a task with automatic fix-on-error branching",
|
|
48
122
|
handler: async (args, piCtx) => {
|
|
49
|
-
const
|
|
50
|
-
|
|
123
|
+
const agent = requirePiAgent(piCtx);
|
|
124
|
+
const scheduler = makeScheduler(piCtx);
|
|
125
|
+
const task = args.trim();
|
|
126
|
+
const proc = branchFix({
|
|
127
|
+
name: "pi-fix",
|
|
128
|
+
main: (requestFix) => async (ctx) => {
|
|
129
|
+
const result = await agent.run(task, { signal: ctx.signal });
|
|
130
|
+
if (result.errors?.length) {
|
|
131
|
+
await requestFix(result.errors.join("; "));
|
|
132
|
+
}
|
|
133
|
+
return result.output;
|
|
134
|
+
},
|
|
135
|
+
fix: (reason) => async (ctx) => {
|
|
136
|
+
await agent.run(`Fix the following issues: ${reason}`, {
|
|
137
|
+
signal: ctx.signal,
|
|
138
|
+
});
|
|
139
|
+
},
|
|
51
140
|
});
|
|
52
|
-
|
|
53
|
-
name: "coder",
|
|
54
|
-
invoke: async (task, _signal) => `// TODO: implement ${task}`,
|
|
55
|
-
};
|
|
56
|
-
const checker = {
|
|
57
|
-
name: "checker",
|
|
58
|
-
invoke: async (_code, _signal) => ({ pass: true, errors: [] }),
|
|
59
|
-
};
|
|
60
|
-
const fixer = {
|
|
61
|
-
name: "fixer",
|
|
62
|
-
invoke: async (input, _signal) => input.code,
|
|
63
|
-
};
|
|
64
|
-
const proc = codeThenFix({ coder, checker, fixer, task: args });
|
|
65
|
-
return scheduler.run("fix", proc);
|
|
141
|
+
return rememberTree(piCtx, await scheduler.run("fix", proc));
|
|
66
142
|
},
|
|
67
143
|
},
|
|
68
144
|
"cpa:tree": {
|
|
69
145
|
description: "Display the CPA session tree",
|
|
70
|
-
handler: async (_args,
|
|
71
|
-
|
|
146
|
+
handler: async (_args, piCtx) => {
|
|
147
|
+
const tree = lastTrees.get(sessionId(piCtx)) ?? [];
|
|
148
|
+
return {
|
|
149
|
+
tree,
|
|
150
|
+
markdown: sessionTreeToMarkdown(tree),
|
|
151
|
+
};
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
"cpa:retry": {
|
|
155
|
+
description: "Retry a Pi task with backoff and timeout",
|
|
156
|
+
handler: async (args, piCtx) => {
|
|
157
|
+
const agent = requirePiAgent(piCtx);
|
|
158
|
+
const scheduler = makeScheduler(piCtx);
|
|
159
|
+
const task = args.trim();
|
|
160
|
+
const runTask = makeRunTask(agent);
|
|
161
|
+
const proc = retryWithBackoff({
|
|
162
|
+
process: timeout(30_000, runTask(task)),
|
|
163
|
+
maxAttempts: 3,
|
|
164
|
+
initialDelayMs: 100,
|
|
165
|
+
});
|
|
166
|
+
return rememberTree(piCtx, await scheduler.run("retry", proc));
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
"cpa:fallback": {
|
|
170
|
+
description: "Run fallback Pi task if primary fails",
|
|
171
|
+
handler: async (args, piCtx) => {
|
|
172
|
+
const agent = requirePiAgent(piCtx);
|
|
173
|
+
const scheduler = makeScheduler(piCtx);
|
|
174
|
+
const [primary, fallback] = args
|
|
175
|
+
.split("||")
|
|
176
|
+
.map((part) => part.trim())
|
|
177
|
+
.filter(Boolean);
|
|
178
|
+
const primaryPrompt = primary ?? args.trim();
|
|
179
|
+
const fallbackPrompt = fallback ?? `Fallback for: ${primaryPrompt}`;
|
|
180
|
+
const runTask = makeRunTask(agent);
|
|
181
|
+
const proc = async (ctx) => {
|
|
182
|
+
const result = await or(runTask(primaryPrompt), runTask(fallbackPrompt))(ctx);
|
|
183
|
+
if (!result.ok) {
|
|
184
|
+
throw result.error;
|
|
185
|
+
}
|
|
186
|
+
return result.value;
|
|
187
|
+
};
|
|
188
|
+
return rememberTree(piCtx, await scheduler.run("fallback", proc));
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
"cpa:saga": {
|
|
192
|
+
description: "Run rollback-aware multi-step Pi workflow",
|
|
193
|
+
handler: async (args, piCtx) => {
|
|
194
|
+
const agent = requirePiAgent(piCtx);
|
|
195
|
+
const scheduler = makeScheduler(piCtx);
|
|
196
|
+
const runTask = makeRunTask(agent);
|
|
197
|
+
const runTaskVoid = makeRunTaskVoid(agent);
|
|
198
|
+
const steps = args
|
|
199
|
+
.split("|")
|
|
200
|
+
.map((part) => part.trim())
|
|
201
|
+
.filter(Boolean);
|
|
202
|
+
const proc = saga(steps.map((step) => invertible(runTask(step), () => runTaskVoid(`Rollback/undo the effects of this step: ${step}`))));
|
|
203
|
+
return rememberTree(piCtx, await scheduler.run("saga", proc));
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
"cpa:fan-out": {
|
|
207
|
+
description: "Run the same task across multiple Pi models",
|
|
208
|
+
handler: async (args, piCtx) => {
|
|
209
|
+
const agent = requirePiAgent(piCtx);
|
|
210
|
+
const scheduler = makeScheduler(piCtx);
|
|
211
|
+
const [taskPart, modelsPart] = args.split("::").map((s) => s.trim());
|
|
212
|
+
const task = taskPart || args.trim();
|
|
213
|
+
const models = modelsPart
|
|
214
|
+
? modelsPart.split(",").map((m) => m.trim()).filter(Boolean)
|
|
215
|
+
: [undefined];
|
|
216
|
+
const agents = models.map((model) => ({
|
|
217
|
+
name: model ? `model:${model}` : "model:default",
|
|
218
|
+
invoke: async (input, signal) => {
|
|
219
|
+
const result = await agent.run(input, { model, signal });
|
|
220
|
+
if (result.errors?.length) {
|
|
221
|
+
throw new Error(result.errors.join("; "));
|
|
222
|
+
}
|
|
223
|
+
return result.output;
|
|
224
|
+
},
|
|
225
|
+
}));
|
|
226
|
+
const proc = fanOut({
|
|
227
|
+
agents,
|
|
228
|
+
input: task,
|
|
229
|
+
merge: (results) => ({ results, count: results.length }),
|
|
230
|
+
});
|
|
231
|
+
return rememberTree(piCtx, await scheduler.run("fan-out", proc));
|
|
72
232
|
},
|
|
73
233
|
},
|
|
74
234
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-harness.js","sourceRoot":"","sources":["../../src/adapters/pi-harness.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"pi-harness.js","sourceRoot":"","sources":["../../src/adapters/pi-harness.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAKL,GAAG,EACH,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAgC,MAAM,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAkCxC,IAAI,kBAAwC,CAAC;AAE7C,wEAAwE;AACxE,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe,CAAC,QAAmB;IAC1C,MAAM,MAAM,GAAG,QAAQ,IAAI,kBAAkB,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iFAAiF;YAC/E,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB;IACxC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,GAAkB;IACnC,OAAO,GAAG,CAAC,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,GAAkB;IACvC,OAAO,IAAI,SAAS,CAAC;QACnB,OAAO,EAAE,CAAC,CAAa,EAAE,EAAE;YACzB,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAqB;IACxC,OAAO,CAAC,IAAY,EAAE,KAAc,EAAmB,EAAE,CACvD,KAAK,EAAE,MAAsB,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YACnC,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAAqB;IAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,IAAY,EAAE,KAAc,EAAiB,EAAE,CACrD,KAAK,EAAE,MAAsB,EAAE,EAAE;QAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,MAAM,CAAkB,IAMvC;IACC,OAAO;QACL,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,MAAmB,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAChD,MAAM,CACP,CAAC;YACF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAU,IAMnC;IACC,OAAO;QACL,IAAI,EAAE,eAAe,IAAI,CAAC,IAAI,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,CAAO,EAAE,MAAmB,EAAE,EAAE;YAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CACrC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAC1C,MAAM,CACP,CAAC;YACF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAqB;IAC3D,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,GAAG,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEnD,KAAK,UAAU,YAAY,CACzB,GAAkB,EAClB,MAAgC;QAEhC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,uDAAuD;QAEpE,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,KAAK,GAAG,IAAI;yBACf,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;yBAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEnB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAE7D,OAAO,YAAY,CACjB,KAAK,EACL,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAC9C,CAAC;gBACJ,CAAC;aACF;YAED,SAAS,EAAE;gBACT,WAAW,EAAE,kDAAkD;gBAC/D,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAEzB,MAAM,IAAI,GAAG,SAAS,CAAS;wBAC7B,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;4BAClD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC7D,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gCAC1B,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC7C,CAAC;4BACD,OAAO,MAAM,CAAC,MAAM,CAAC;wBACvB,CAAC;wBACD,GAAG,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,KAAK,EAAE,GAAmB,EAAE,EAAE;4BACrD,MAAM,KAAK,CAAC,GAAG,CAAC,6BAA6B,MAAM,EAAE,EAAE;gCACrD,MAAM,EAAE,GAAG,CAAC,MAAM;6BACnB,CAAC,CAAC;wBACL,CAAC;qBACF,CAAC,CAAC;oBAEH,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;aACF;YAED,UAAU,EAAE;gBACV,WAAW,EAAE,8BAA8B;gBAC3C,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,KAAoB,EAAE,EAAE;oBACrD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnD,OAAO;wBACL,IAAI;wBACJ,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC;qBACtC,CAAC;gBACJ,CAAC;aACF;YAED,WAAW,EAAE;gBACX,WAAW,EAAE,0CAA0C;gBACvD,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBAEnC,MAAM,IAAI,GAAG,gBAAgB,CAAC;wBAC5B,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBACvC,WAAW,EAAE,CAAC;wBACd,cAAc,EAAE,GAAG;qBACpB,CAAC,CAAC;oBAEH,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjE,CAAC;aACF;YAED,cAAc,EAAE;gBACd,WAAW,EAAE,uCAAuC;gBACpD,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBAEvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI;yBAC7B,KAAK,CAAC,IAAI,CAAC;yBACX,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;yBAClC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEnB,MAAM,aAAa,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,cAAc,GAAG,QAAQ,IAAI,iBAAiB,aAAa,EAAE,CAAC;oBACpE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBAEnC,MAAM,IAAI,GAAoB,KAAK,EAAE,GAAmB,EAAE,EAAE;wBAC1D,MAAM,MAAM,GAAG,MAAM,EAAE,CACrB,OAAO,CAAC,aAAa,CAAC,EACtB,OAAO,CAAC,cAAc,CAAC,CACxB,CAAC,GAAG,CAAC,CAAC;wBACP,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;4BACf,MAAM,MAAM,CAAC,KAAK,CAAC;wBACrB,CAAC;wBACD,OAAO,MAAM,CAAC,KAAK,CAAC;oBACtB,CAAC,CAAC;oBAEF,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpE,CAAC;aACF;YAED,UAAU,EAAE;gBACV,WAAW,EAAE,2CAA2C;gBACxD,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;oBACnC,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;oBAE3C,MAAM,KAAK,GAAG,IAAI;yBACf,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;yBAClC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEnB,MAAM,IAAI,GAAG,IAAI,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,UAAU,CACR,OAAO,CAAC,IAAI,CAAC,EACb,GAAG,EAAE,CACH,WAAW,CAAC,2CAA2C,IAAI,EAAE,CAAC,CACjE,CACF,CACF,CAAC;oBAEF,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChE,CAAC;aACF;YAED,aAAa,EAAE;gBACb,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,KAAoB,EAAE,EAAE;oBACpD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBAEvC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrE,MAAM,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACrC,MAAM,MAAM,GAAG,UAAU;wBACvB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC5D,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAEhB,MAAM,MAAM,GAAgC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACjE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe;wBAChD,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,MAAmB,EAAE,EAAE;4BACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;4BACzD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gCAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC5C,CAAC;4BACD,OAAO,MAAM,CAAC,MAAM,CAAC;wBACvB,CAAC;qBACF,CAAC,CAAC,CAAC;oBAEJ,MAAM,IAAI,GAAG,MAAM,CAAC;wBAClB,MAAM;wBACN,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,CAAC,OAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;qBACnE,CAAC,CAAC;oBAEH,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;gBACnE,CAAC;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/agent.js
CHANGED
|
@@ -129,11 +129,11 @@ export function handoff(opts) {
|
|
|
129
129
|
channel: ch.name,
|
|
130
130
|
ts: Date.now(),
|
|
131
131
|
});
|
|
132
|
-
await ch.send(result);
|
|
132
|
+
await ch.send(result, pCtx.signal);
|
|
133
133
|
},
|
|
134
134
|
// Consumer: receives from channel, runs `to`
|
|
135
135
|
async (cCtx) => {
|
|
136
|
-
const value = await ch.receive();
|
|
136
|
+
const value = await ch.receive(cCtx.signal);
|
|
137
137
|
cCtx.trace.emit({
|
|
138
138
|
type: "receive",
|
|
139
139
|
runId: cCtx.runId,
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/channel.d.ts
CHANGED
|
@@ -24,12 +24,12 @@ export declare class Channel<T = unknown> {
|
|
|
24
24
|
* Send a value. Blocks until a receiver picks it up (rendezvous).
|
|
25
25
|
* In π-calculus: ā⟨v⟩.P — output v on channel a, then continue as P.
|
|
26
26
|
*/
|
|
27
|
-
send(value: T): Promise<void>;
|
|
27
|
+
send(value: T, signal?: AbortSignal): Promise<void>;
|
|
28
28
|
/**
|
|
29
29
|
* Receive a value. Blocks until a sender provides one.
|
|
30
30
|
* In π-calculus: a(x).P — input x from channel a, then continue as P.
|
|
31
31
|
*/
|
|
32
|
-
receive(): Promise<T>;
|
|
32
|
+
receive(signal?: AbortSignal): Promise<T>;
|
|
33
33
|
/**
|
|
34
34
|
* Non-blocking try-receive. Returns undefined if nothing is waiting.
|
|
35
35
|
*/
|
|
@@ -38,6 +38,11 @@ export declare class Channel<T = unknown> {
|
|
|
38
38
|
* Close the channel. Rejects all pending waiters.
|
|
39
39
|
*/
|
|
40
40
|
close(): void;
|
|
41
|
+
/** Cancel pending receivers without closing the channel. */
|
|
42
|
+
cancelPendingReceives(reason?: Error): void;
|
|
43
|
+
/** Cancel pending senders without closing the channel. */
|
|
44
|
+
cancelPendingSends(reason?: Error): void;
|
|
45
|
+
private cancelPendingWaiters;
|
|
41
46
|
/**
|
|
42
47
|
* π-calculus restriction: ν(x). Creates a fresh channel
|
|
43
48
|
* scoped to the provided function. The channel is closed
|
|
@@ -48,10 +53,12 @@ export declare class Channel<T = unknown> {
|
|
|
48
53
|
/**
|
|
49
54
|
* Select: π-calculus external choice (P + Q).
|
|
50
55
|
* Waits on multiple channels, returns the first that fires.
|
|
56
|
+
* Losing branches are cancelled so receivers do not leak.
|
|
51
57
|
*/
|
|
52
58
|
export interface SelectCase<T> {
|
|
53
59
|
channel: Channel<T>;
|
|
54
60
|
handler: (value: T) => Promise<void> | void;
|
|
55
61
|
}
|
|
62
|
+
export declare function select(signal: AbortSignal, ...cases: SelectCase<any>[]): Promise<void>;
|
|
56
63
|
export declare function select(...cases: SelectCase<any>[]): Promise<void>;
|
|
57
64
|
//# sourceMappingURL=channel.d.ts.map
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAG1D,wBAAgB,OAAO,CAAC,MAAM,SAAO,GAAG,SAAS,CAEhD;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAG1D,wBAAgB,OAAO,CAAC,MAAM,SAAO,GAAG,SAAS,CAEhD;AAwBD;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,GAAG,OAAO;IAC9B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,CAAC,EAAE,MAAM;IAKzB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCnD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;IAiCzC;;OAEG;IACH,UAAU,IAAI,CAAC,GAAG,SAAS;IAU3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb,4DAA4D;IAC5D,qBAAqB,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;IAS3C,0DAA0D;IAC1D,kBAAkB,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;IASxC,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;WACU,QAAQ,CAAC,CAAC,EAAE,CAAC,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,CAAC,CAAC;CAQd;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC7C;AAED,wBAAsB,MAAM,CAC1B,MAAM,EAAE,WAAW,EACnB,GAAG,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,wBAAsB,MAAM,CAAC,GAAG,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|