@allin-ai/agent-client 0.1.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/LICENSE +21 -0
- package/README.md +53 -0
- package/bin/allinai-agent +4 -0
- package/dist/capabilities/context.d.ts +16 -0
- package/dist/capabilities/context.d.ts.map +1 -0
- package/dist/capabilities/context.js +98 -0
- package/dist/capabilities/context.js.map +1 -0
- package/dist/capabilities/input.d.ts +7 -0
- package/dist/capabilities/input.d.ts.map +1 -0
- package/dist/capabilities/input.js +224 -0
- package/dist/capabilities/input.js.map +1 -0
- package/dist/capabilities/manifest.d.ts +15 -0
- package/dist/capabilities/manifest.d.ts.map +1 -0
- package/dist/capabilities/manifest.js +292 -0
- package/dist/capabilities/manifest.js.map +1 -0
- package/dist/capabilities/policy.d.ts +17 -0
- package/dist/capabilities/policy.d.ts.map +1 -0
- package/dist/capabilities/policy.js +57 -0
- package/dist/capabilities/policy.js.map +1 -0
- package/dist/capabilities/shell-host.d.ts +32 -0
- package/dist/capabilities/shell-host.d.ts.map +1 -0
- package/dist/capabilities/shell-host.js +378 -0
- package/dist/capabilities/shell-host.js.map +1 -0
- package/dist/capabilities/shell-wire.d.ts +13 -0
- package/dist/capabilities/shell-wire.d.ts.map +1 -0
- package/dist/capabilities/shell-wire.js +60 -0
- package/dist/capabilities/shell-wire.js.map +1 -0
- package/dist/capabilities/types.d.ts +46 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +7 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/cli/commands.d.ts +83 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +638 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +7 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/client/state-store.d.ts +80 -0
- package/dist/client/state-store.d.ts.map +1 -0
- package/dist/client/state-store.js +422 -0
- package/dist/client/state-store.js.map +1 -0
- package/dist/client/supervisor.d.ts +118 -0
- package/dist/client/supervisor.d.ts.map +1 -0
- package/dist/client/supervisor.js +627 -0
- package/dist/client/supervisor.js.map +1 -0
- package/dist/client/transport.d.ts +30 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +2 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/types.d.ts +65 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +13 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/wire.d.ts +32 -0
- package/dist/client/wire.d.ts.map +1 -0
- package/dist/client/wire.js +302 -0
- package/dist/client/wire.js.map +1 -0
- package/dist/client/ws-transport.d.ts +54 -0
- package/dist/client/ws-transport.d.ts.map +1 -0
- package/dist/client/ws-transport.js +229 -0
- package/dist/client/ws-transport.js.map +1 -0
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +125 -0
- package/dist/config.js.map +1 -0
- package/dist/control.d.ts +59 -0
- package/dist/control.d.ts.map +1 -0
- package/dist/control.js +217 -0
- package/dist/control.js.map +1 -0
- package/dist/credentials.d.ts +44 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +229 -0
- package/dist/credentials.js.map +1 -0
- package/dist/hub.d.ts +83 -0
- package/dist/hub.d.ts.map +1 -0
- package/dist/hub.js +412 -0
- package/dist/hub.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +47 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +175 -0
- package/dist/logger.js.map +1 -0
- package/dist/paths.d.ts +29 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +50 -0
- package/dist/paths.js.map +1 -0
- package/dist/plugins/git.d.ts +30 -0
- package/dist/plugins/git.d.ts.map +1 -0
- package/dist/plugins/git.js +80 -0
- package/dist/plugins/git.js.map +1 -0
- package/dist/plugins/manager.d.ts +41 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +328 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/manifest.d.ts +9 -0
- package/dist/plugins/manifest.d.ts.map +1 -0
- package/dist/plugins/manifest.js +63 -0
- package/dist/plugins/manifest.js.map +1 -0
- package/dist/plugins/types.d.ts +39 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/runtime/claude.d.ts +30 -0
- package/dist/runtime/claude.d.ts.map +1 -0
- package/dist/runtime/claude.js +163 -0
- package/dist/runtime/claude.js.map +1 -0
- package/dist/runtime/codex.d.ts +44 -0
- package/dist/runtime/codex.d.ts.map +1 -0
- package/dist/runtime/codex.js +192 -0
- package/dist/runtime/codex.js.map +1 -0
- package/dist/runtime/events.d.ts +7 -0
- package/dist/runtime/events.d.ts.map +1 -0
- package/dist/runtime/events.js +37 -0
- package/dist/runtime/events.js.map +1 -0
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +10 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/pi.d.ts +34 -0
- package/dist/runtime/pi.d.ts.map +1 -0
- package/dist/runtime/pi.js +211 -0
- package/dist/runtime/pi.js.map +1 -0
- package/dist/runtime/registry.d.ts +16 -0
- package/dist/runtime/registry.d.ts.map +1 -0
- package/dist/runtime/registry.js +22 -0
- package/dist/runtime/registry.js.map +1 -0
- package/dist/runtime/runner-child.d.ts +2 -0
- package/dist/runtime/runner-child.d.ts.map +1 -0
- package/dist/runtime/runner-child.js +41 -0
- package/dist/runtime/runner-child.js.map +1 -0
- package/dist/runtime/runner-manager.d.ts +77 -0
- package/dist/runtime/runner-manager.d.ts.map +1 -0
- package/dist/runtime/runner-manager.js +295 -0
- package/dist/runtime/runner-manager.js.map +1 -0
- package/dist/runtime/runner-wire.d.ts +23 -0
- package/dist/runtime/runner-wire.d.ts.map +1 -0
- package/dist/runtime/runner-wire.js +93 -0
- package/dist/runtime/runner-wire.js.map +1 -0
- package/dist/runtime/types.d.ts +43 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +3 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/zcode.d.ts +14 -0
- package/dist/runtime/zcode.d.ts.map +1 -0
- package/dist/runtime/zcode.js +21 -0
- package/dist/runtime/zcode.js.map +1 -0
- package/dist/service/launchd.d.ts +34 -0
- package/dist/service/launchd.d.ts.map +1 -0
- package/dist/service/launchd.js +86 -0
- package/dist/service/launchd.js.map +1 -0
- package/dist/service/systemd.d.ts +16 -0
- package/dist/service/systemd.d.ts.map +1 -0
- package/dist/service/systemd.js +89 -0
- package/dist/service/systemd.js.map +1 -0
- package/dist/wire.d.ts +24 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +7 -0
- package/dist/wire.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { query, } from "@anthropic-ai/claude-agent-sdk";
|
|
2
|
+
function isRecord(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
function text(value) {
|
|
6
|
+
return typeof value === "string" ? value : undefined;
|
|
7
|
+
}
|
|
8
|
+
function payload(message, values = {}) {
|
|
9
|
+
return { ...values, vendorMessage: message };
|
|
10
|
+
}
|
|
11
|
+
function messageRecord(message) {
|
|
12
|
+
return message;
|
|
13
|
+
}
|
|
14
|
+
function messageSessionId(message) {
|
|
15
|
+
return text(message.session_id) ?? text(message.sessionId);
|
|
16
|
+
}
|
|
17
|
+
function mapClaudeMessage(message) {
|
|
18
|
+
const raw = messageRecord(message);
|
|
19
|
+
const type = text(raw.type) ?? "unknown";
|
|
20
|
+
const subtype = text(raw.subtype);
|
|
21
|
+
if (type === "system" && subtype === "init") {
|
|
22
|
+
return {
|
|
23
|
+
type: "init",
|
|
24
|
+
payload: payload(message, {
|
|
25
|
+
runtimeSessionId: messageSessionId(raw),
|
|
26
|
+
plugins: raw.plugins,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (type === "system" && subtype === "thinking_tokens") {
|
|
31
|
+
return {
|
|
32
|
+
type: "thinking_delta",
|
|
33
|
+
payload: payload(message, { text: "" }),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (type === "stream_event" && isRecord(raw.event)) {
|
|
37
|
+
const event = raw.event;
|
|
38
|
+
const delta = isRecord(event.delta) ? event.delta : undefined;
|
|
39
|
+
if (delta?.type === "text_delta") {
|
|
40
|
+
return {
|
|
41
|
+
type: "text_delta",
|
|
42
|
+
payload: payload(message, { text: text(delta.text) ?? "" }),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (delta?.type === "thinking_delta") {
|
|
46
|
+
return {
|
|
47
|
+
type: "thinking_delta",
|
|
48
|
+
payload: payload(message, { text: text(delta.thinking) ?? "" }),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (type === "assistant" && isRecord(raw.message)) {
|
|
53
|
+
const content = Array.isArray(raw.message.content)
|
|
54
|
+
? raw.message.content
|
|
55
|
+
: [];
|
|
56
|
+
const firstText = content.find((block) => isRecord(block) &&
|
|
57
|
+
block.type === "text" &&
|
|
58
|
+
typeof block.text === "string");
|
|
59
|
+
if (isRecord(firstText)) {
|
|
60
|
+
return {
|
|
61
|
+
type: "text_delta",
|
|
62
|
+
payload: payload(message, { text: firstText.text }),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const firstThinking = content.find((block) => isRecord(block) &&
|
|
66
|
+
block.type === "thinking" &&
|
|
67
|
+
typeof block.thinking === "string");
|
|
68
|
+
if (isRecord(firstThinking)) {
|
|
69
|
+
return {
|
|
70
|
+
type: "thinking_delta",
|
|
71
|
+
payload: payload(message, { text: firstThinking.thinking }),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (type === "result") {
|
|
76
|
+
const result = text(raw.result);
|
|
77
|
+
if (raw.is_error === true || subtype === "error") {
|
|
78
|
+
return {
|
|
79
|
+
type: "error",
|
|
80
|
+
payload: payload(message, {
|
|
81
|
+
message: result ?? "Claude Agent SDK error",
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return { type: "done", payload: payload(message, { result }) };
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
type: "tool",
|
|
89
|
+
payload: payload(message, { vendorMessageType: type, subtype }),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function errorMessage(error) {
|
|
93
|
+
return error instanceof Error ? error.message : String(error);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Official Claude Agent SDK adapter. SDK setup/iteration and process cleanup
|
|
97
|
+
* stay here; provider selection and host callbacks are explicit input.
|
|
98
|
+
*/
|
|
99
|
+
export function createClaudeAdapter(deps = {}) {
|
|
100
|
+
const queryFactory = deps.query ?? query;
|
|
101
|
+
return {
|
|
102
|
+
id: "claude",
|
|
103
|
+
async probe() {
|
|
104
|
+
// This is deliberately SDK-presence reporting, not a provider auth or
|
|
105
|
+
// executable health check.
|
|
106
|
+
return { installed: true, version: null };
|
|
107
|
+
},
|
|
108
|
+
async *start(input, signal) {
|
|
109
|
+
if (signal.aborted) {
|
|
110
|
+
yield { type: "done", payload: { aborted: true } };
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const abortController = new AbortController();
|
|
114
|
+
let activeQuery = null;
|
|
115
|
+
let closed = false;
|
|
116
|
+
const close = () => {
|
|
117
|
+
if (closed)
|
|
118
|
+
return;
|
|
119
|
+
closed = true;
|
|
120
|
+
abortController.abort();
|
|
121
|
+
activeQuery?.close();
|
|
122
|
+
};
|
|
123
|
+
signal.addEventListener("abort", close, { once: true });
|
|
124
|
+
try {
|
|
125
|
+
activeQuery = queryFactory({
|
|
126
|
+
prompt: input.prompt,
|
|
127
|
+
options: {
|
|
128
|
+
...input.options,
|
|
129
|
+
abortController,
|
|
130
|
+
...(input.onAskUser ? { canUseTool: input.onAskUser } : {}),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
for await (const message of activeQuery) {
|
|
134
|
+
if (signal.aborted)
|
|
135
|
+
break;
|
|
136
|
+
const mapped = mapClaudeMessage(message);
|
|
137
|
+
yield mapped;
|
|
138
|
+
if (mapped.type === "done" || mapped.type === "error")
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
yield {
|
|
142
|
+
type: "done",
|
|
143
|
+
...(signal.aborted ? { payload: { aborted: true } } : {}),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (signal.aborted) {
|
|
148
|
+
yield { type: "done", payload: { aborted: true } };
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
yield {
|
|
152
|
+
type: "error",
|
|
153
|
+
payload: { message: errorMessage(error), cause: "sdk_throw" },
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
signal.removeEventListener("abort", close);
|
|
158
|
+
close();
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/runtime/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { PlatformEvent, PlatformProbe, PlatformRunInput } from "./types.js";
|
|
2
|
+
type CodexSdkEvent = {
|
|
3
|
+
type: string;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
type CodexThread = {
|
|
7
|
+
runStreamed(input: string, options?: {
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
events: AsyncIterable<CodexSdkEvent>;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
/** The small official SDK surface this adapter needs; injectable for tests. */
|
|
14
|
+
export type CodexSdk = {
|
|
15
|
+
startThread(options?: {
|
|
16
|
+
workingDirectory?: string;
|
|
17
|
+
model?: string;
|
|
18
|
+
}): CodexThread;
|
|
19
|
+
resumeThread(threadId: string, options?: {
|
|
20
|
+
workingDirectory?: string;
|
|
21
|
+
model?: string;
|
|
22
|
+
}): CodexThread;
|
|
23
|
+
};
|
|
24
|
+
export type CodexAdapterRunInput = PlatformRunInput & {
|
|
25
|
+
platform: "codex";
|
|
26
|
+
/** A previously reported Codex thread id, when this is a resume. */
|
|
27
|
+
resumeThreadId?: string;
|
|
28
|
+
};
|
|
29
|
+
export type CodexAdapter = {
|
|
30
|
+
readonly id: "codex";
|
|
31
|
+
probe(): Promise<PlatformProbe>;
|
|
32
|
+
start(input: CodexAdapterRunInput, signal: AbortSignal): AsyncIterable<PlatformEvent>;
|
|
33
|
+
};
|
|
34
|
+
export type CreateCodexAdapterDeps = {
|
|
35
|
+
/** Test seam. Production creates the installed official Codex SDK. */
|
|
36
|
+
createCodex?: () => CodexSdk;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Official Codex SDK adapter. It owns SDK event translation and takes the
|
|
40
|
+
* caller's AbortSignal unchanged, so cancellation reaches `runStreamed`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createCodexAdapter(deps?: CreateCodexAdapterDeps): CodexAdapter;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/runtime/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9D,KAAK,WAAW,GAAG;IACjB,WAAW,CACT,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,CAAC,OAAO,CAAC,EAAE;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,WAAW,CAAC;IAChB,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,WAAW,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,KAAK,CACH,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,aAAa,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC9B,CAAC;AAiIF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE,sBAA2B,GAChC,YAAY,CA4Ed"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Codex } from "@openai/codex-sdk";
|
|
2
|
+
function payload(values) {
|
|
3
|
+
return values;
|
|
4
|
+
}
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
function text(value) {
|
|
9
|
+
return typeof value === "string" ? value : undefined;
|
|
10
|
+
}
|
|
11
|
+
function mapCodexEvent(event) {
|
|
12
|
+
if (event.type === "thread.started") {
|
|
13
|
+
const runtimeSessionId = text(event.thread_id);
|
|
14
|
+
return runtimeSessionId
|
|
15
|
+
? {
|
|
16
|
+
type: "init",
|
|
17
|
+
payload: payload({ runtimeSessionId, vendorEventType: event.type }),
|
|
18
|
+
}
|
|
19
|
+
: null;
|
|
20
|
+
}
|
|
21
|
+
if (event.type === "item.completed" && isRecord(event.item)) {
|
|
22
|
+
if (event.item.type === "agent_message") {
|
|
23
|
+
const message = text(event.item.text);
|
|
24
|
+
return message
|
|
25
|
+
? {
|
|
26
|
+
type: "text_delta",
|
|
27
|
+
payload: payload({ text: message, vendorEventType: event.type }),
|
|
28
|
+
}
|
|
29
|
+
: null;
|
|
30
|
+
}
|
|
31
|
+
if (event.item.type === "reasoning") {
|
|
32
|
+
const reasoning = text(event.item.text);
|
|
33
|
+
return reasoning
|
|
34
|
+
? {
|
|
35
|
+
type: "thinking_delta",
|
|
36
|
+
payload: payload({ text: reasoning, vendorEventType: event.type }),
|
|
37
|
+
}
|
|
38
|
+
: null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (event.type === "turn.completed") {
|
|
42
|
+
return {
|
|
43
|
+
type: "done",
|
|
44
|
+
payload: payload({ usage: event.usage, vendorEventType: event.type }),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (event.type === "turn.failed") {
|
|
48
|
+
const message = isRecord(event.error)
|
|
49
|
+
? text(event.error.message)
|
|
50
|
+
: undefined;
|
|
51
|
+
return {
|
|
52
|
+
type: "error",
|
|
53
|
+
payload: payload({
|
|
54
|
+
message: message ?? "Codex turn failed",
|
|
55
|
+
vendorEventType: event.type,
|
|
56
|
+
}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (event.type === "error") {
|
|
60
|
+
return {
|
|
61
|
+
type: "error",
|
|
62
|
+
payload: payload({
|
|
63
|
+
message: text(event.message) ?? "Codex SDK error",
|
|
64
|
+
vendorEventType: event.type,
|
|
65
|
+
}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
if (event.type === "item.started" || event.type === "item.updated") {
|
|
69
|
+
return {
|
|
70
|
+
type: "tool",
|
|
71
|
+
payload: payload({ item: event.item, vendorEventType: event.type }),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
function errorMessage(error) {
|
|
77
|
+
return error instanceof Error ? error.message : String(error);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A vendor iterator is allowed to be waiting for stdout when cancellation
|
|
81
|
+
* arrives. Do not wait for it to produce another event before reporting the
|
|
82
|
+
* cancellation to the caller; Codex receives the same signal in
|
|
83
|
+
* `runStreamed` and the iterator is asked to return as additional cleanup.
|
|
84
|
+
*/
|
|
85
|
+
function nextEventOrAbort(iterator, signal) {
|
|
86
|
+
if (signal.aborted)
|
|
87
|
+
return Promise.resolve(null);
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
let settled = false;
|
|
90
|
+
const cleanup = () => signal.removeEventListener("abort", onAbort);
|
|
91
|
+
const onAbort = () => {
|
|
92
|
+
if (settled)
|
|
93
|
+
return;
|
|
94
|
+
settled = true;
|
|
95
|
+
cleanup();
|
|
96
|
+
void iterator.return?.();
|
|
97
|
+
resolve(null);
|
|
98
|
+
};
|
|
99
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
100
|
+
void iterator.next().then((next) => {
|
|
101
|
+
if (settled)
|
|
102
|
+
return;
|
|
103
|
+
settled = true;
|
|
104
|
+
cleanup();
|
|
105
|
+
resolve(next);
|
|
106
|
+
}, (error) => {
|
|
107
|
+
if (settled)
|
|
108
|
+
return;
|
|
109
|
+
settled = true;
|
|
110
|
+
cleanup();
|
|
111
|
+
reject(error);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Official Codex SDK adapter. It owns SDK event translation and takes the
|
|
117
|
+
* caller's AbortSignal unchanged, so cancellation reaches `runStreamed`.
|
|
118
|
+
*/
|
|
119
|
+
export function createCodexAdapter(deps = {}) {
|
|
120
|
+
const createCodex = deps.createCodex ?? (() => new Codex());
|
|
121
|
+
return {
|
|
122
|
+
id: "codex",
|
|
123
|
+
async probe() {
|
|
124
|
+
// The SDK is a required package dependency. This only reports that the
|
|
125
|
+
// SDK boundary is available; it intentionally does not claim CLI login
|
|
126
|
+
// or provider credentials are healthy.
|
|
127
|
+
return { installed: true, version: null };
|
|
128
|
+
},
|
|
129
|
+
async *start(input, signal) {
|
|
130
|
+
if (signal.aborted) {
|
|
131
|
+
yield { type: "done", payload: payload({ aborted: true }) };
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const sdk = createCodex();
|
|
135
|
+
const threadOptions = {
|
|
136
|
+
...(input.cwd ? { workingDirectory: input.cwd } : {}),
|
|
137
|
+
...(input.model ? { model: input.model } : {}),
|
|
138
|
+
};
|
|
139
|
+
const thread = input.resumeThreadId
|
|
140
|
+
? sdk.resumeThread(input.resumeThreadId, threadOptions)
|
|
141
|
+
: sdk.startThread(threadOptions);
|
|
142
|
+
let terminal = false;
|
|
143
|
+
if (input.resumeThreadId) {
|
|
144
|
+
yield {
|
|
145
|
+
type: "init",
|
|
146
|
+
payload: payload({
|
|
147
|
+
runtimeSessionId: input.resumeThreadId,
|
|
148
|
+
resumed: true,
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
const { events } = await thread.runStreamed(input.prompt, { signal });
|
|
154
|
+
const iterator = events[Symbol.asyncIterator]();
|
|
155
|
+
while (true) {
|
|
156
|
+
const next = await nextEventOrAbort(iterator, signal);
|
|
157
|
+
if (!next || next.done)
|
|
158
|
+
break;
|
|
159
|
+
const event = next.value;
|
|
160
|
+
const mapped = mapCodexEvent(event);
|
|
161
|
+
if (!mapped)
|
|
162
|
+
continue;
|
|
163
|
+
yield mapped;
|
|
164
|
+
if (mapped.type === "done" || mapped.type === "error") {
|
|
165
|
+
terminal = true;
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (!terminal) {
|
|
170
|
+
yield {
|
|
171
|
+
type: "done",
|
|
172
|
+
payload: signal.aborted ? payload({ aborted: true }) : undefined,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
if (signal.aborted) {
|
|
178
|
+
yield { type: "done", payload: payload({ aborted: true }) };
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
yield {
|
|
182
|
+
type: "error",
|
|
183
|
+
payload: payload({
|
|
184
|
+
message: errorMessage(error),
|
|
185
|
+
cause: "sdk_throw",
|
|
186
|
+
}),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/runtime/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PlatformEvent } from "./types.js";
|
|
2
|
+
export declare const PLATFORM_EVENT_TYPES: readonly ["init", "text_delta", "thinking_delta", "tool", "done", "error"];
|
|
3
|
+
export declare function isPlatformEvent(value: unknown): value is PlatformEvent;
|
|
4
|
+
export declare function isTerminalPlatformEvent(event: PlatformEvent): boolean;
|
|
5
|
+
/** Keeps process/protocol failures in the same durable event shape as SDK failures. */
|
|
6
|
+
export declare function platformErrorEvent(reason: string, message: string, details?: Record<string, unknown>): PlatformEvent;
|
|
7
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,oBAAoB,4EAOoB,CAAC;AAatD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAStE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAErE;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,aAAa,CASf"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export const PLATFORM_EVENT_TYPES = [
|
|
2
|
+
"init",
|
|
3
|
+
"text_delta",
|
|
4
|
+
"thinking_delta",
|
|
5
|
+
"tool",
|
|
6
|
+
"done",
|
|
7
|
+
"error",
|
|
8
|
+
];
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function hasOnlyKeys(value, keys) {
|
|
13
|
+
return Object.keys(value).every((key) => keys.includes(key));
|
|
14
|
+
}
|
|
15
|
+
export function isPlatformEvent(value) {
|
|
16
|
+
if (!isRecord(value) ||
|
|
17
|
+
!hasOnlyKeys(value, ["type", "payload"]) ||
|
|
18
|
+
!PLATFORM_EVENT_TYPES.includes(value.type)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return value.payload === undefined || isRecord(value.payload);
|
|
22
|
+
}
|
|
23
|
+
export function isTerminalPlatformEvent(event) {
|
|
24
|
+
return event.type === "done" || event.type === "error";
|
|
25
|
+
}
|
|
26
|
+
/** Keeps process/protocol failures in the same durable event shape as SDK failures. */
|
|
27
|
+
export function platformErrorEvent(reason, message, details) {
|
|
28
|
+
return {
|
|
29
|
+
type: "error",
|
|
30
|
+
payload: {
|
|
31
|
+
reason,
|
|
32
|
+
message,
|
|
33
|
+
...details,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,YAAY;IACZ,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,OAAO;CAC4C,CAAC;AAEtD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,WAAW,CAClB,KAA8B,EAC9B,IAAuB;IAEvB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAA6B,CAAC,EACnE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAoB;IAC1D,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACzD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAe,EACf,OAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE;YACP,MAAM;YACN,OAAO;YACP,GAAG,OAAO;SACX;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { PLATFORM_IDS, type PlatformAdapter, type PlatformEvent, type PlatformId, type PlatformProbe, type PlatformRunInput, type RunnerManager, } from "./types.js";
|
|
2
|
+
export { PLATFORM_EVENT_TYPES, isPlatformEvent, isTerminalPlatformEvent, platformErrorEvent, } from "./events.js";
|
|
3
|
+
export { DEFAULT_RUNNER_CHILD_ENTRYPOINT, createRunnerManager, IsolatedRunnerManager, type RunnerChildProcess, type RunnerManagerOptions, type RunnerSpawn, type RunnerSpawnOptions, } from "./runner-manager.js";
|
|
4
|
+
export { encodeJsonLine, encodeRunnerEvent, encodeRunnerStart, JsonlDecoder, parseRunnerChildMessage, parseRunnerStart, type RunnerChildMessage, type RunnerStartMessage, } from "./runner-wire.js";
|
|
5
|
+
export { createCodexAdapter, type CodexAdapter, type CodexAdapterRunInput, type CodexSdk, type CreateCodexAdapterDeps, } from "./codex.js";
|
|
6
|
+
export { createClaudeAdapter, type ClaudeAdapter, type ClaudeAdapterRunInput, type ClaudeQueryFactory, type ClaudeSdkMessage, type CreateClaudeAdapterDeps, } from "./claude.js";
|
|
7
|
+
export { createPiAdapter, type CreatePiAdapterDeps, type PiAdapter, type PiAdapterRunInput, } from "./pi.js";
|
|
8
|
+
export { ZCODE_UNAVAILABLE_REASON, createZCodeAdapter, type ZCodeAdapter, } from "./zcode.js";
|
|
9
|
+
export { createPlatformAdapterRegistry, type PlatformAdapterFor, type PlatformAdapterRegistry, type RegisteredPlatformAdapter, } from "./registry.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { PLATFORM_IDS, } from "./types.js";
|
|
2
|
+
export { PLATFORM_EVENT_TYPES, isPlatformEvent, isTerminalPlatformEvent, platformErrorEvent, } from "./events.js";
|
|
3
|
+
export { DEFAULT_RUNNER_CHILD_ENTRYPOINT, createRunnerManager, IsolatedRunnerManager, } from "./runner-manager.js";
|
|
4
|
+
export { encodeJsonLine, encodeRunnerEvent, encodeRunnerStart, JsonlDecoder, parseRunnerChildMessage, parseRunnerStart, } from "./runner-wire.js";
|
|
5
|
+
export { createCodexAdapter, } from "./codex.js";
|
|
6
|
+
export { createClaudeAdapter, } from "./claude.js";
|
|
7
|
+
export { createPiAdapter, } from "./pi.js";
|
|
8
|
+
export { ZCODE_UNAVAILABLE_REASON, createZCodeAdapter, } from "./zcode.js";
|
|
9
|
+
export { createPlatformAdapterRegistry, } from "./registry.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAOb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,EACnB,qBAAqB,GAKtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,GAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,GAKnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,GAMpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,GAIhB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAEnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,GAI9B,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type AgentSessionEvent } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { PlatformEvent, PlatformProbe, PlatformRunInput } from "./types.js";
|
|
3
|
+
type PiSession = {
|
|
4
|
+
readonly sessionId: string;
|
|
5
|
+
subscribe(listener: (event: AgentSessionEvent) => void): () => void;
|
|
6
|
+
prompt(text: string): Promise<void>;
|
|
7
|
+
abort(): Promise<void>;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
};
|
|
10
|
+
type PiCreateSession = (options?: {
|
|
11
|
+
cwd?: string;
|
|
12
|
+
}) => Promise<{
|
|
13
|
+
session: PiSession;
|
|
14
|
+
}>;
|
|
15
|
+
export type PiAdapterRunInput = PlatformRunInput & {
|
|
16
|
+
platform: "pi";
|
|
17
|
+
};
|
|
18
|
+
export type PiAdapter = {
|
|
19
|
+
readonly id: "pi";
|
|
20
|
+
probe(): Promise<PlatformProbe>;
|
|
21
|
+
start(input: PiAdapterRunInput, signal: AbortSignal): AsyncIterable<PlatformEvent>;
|
|
22
|
+
};
|
|
23
|
+
export type CreatePiAdapterDeps = {
|
|
24
|
+
/** Test seam; production uses the verified official Pi SDK factory. */
|
|
25
|
+
createAgentSession?: PiCreateSession;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Official Pi SDK adapter. It uses `createAgentSession()` and translates the
|
|
29
|
+
* session subscription stream; tests replace only this factory and never start
|
|
30
|
+
* a real Pi agent.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createPiAdapter(deps?: CreatePiAdapterDeps): PiAdapter;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=pi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../src/runtime/pi.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,eAAe,GAAG,CAAC,OAAO,CAAC,EAAE;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,KAAK,CACH,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,aAAa,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,eAAe,CAAC;CACtC,CAAC;AAoHF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,mBAAwB,GAAG,SAAS,CAgGzE"}
|