@lightining/general.ai 1.0.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.
Files changed (46) hide show
  1. package/LICENSE +178 -0
  2. package/README.md +809 -0
  3. package/dist/defaults.d.ts +7 -0
  4. package/dist/defaults.js +58 -0
  5. package/dist/defaults.js.map +1 -0
  6. package/dist/endpoint-adapters.d.ts +12 -0
  7. package/dist/endpoint-adapters.js +225 -0
  8. package/dist/endpoint-adapters.js.map +1 -0
  9. package/dist/general-ai.d.ts +13 -0
  10. package/dist/general-ai.js +54 -0
  11. package/dist/general-ai.js.map +1 -0
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.js +8 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/memory.d.ts +6 -0
  16. package/dist/memory.js +10 -0
  17. package/dist/memory.js.map +1 -0
  18. package/dist/prompts/endpoint-chat-completions.txt +7 -0
  19. package/dist/prompts/endpoint-responses.txt +7 -0
  20. package/dist/prompts/identity.txt +17 -0
  21. package/dist/prompts/memory.txt +9 -0
  22. package/dist/prompts/personality.txt +9 -0
  23. package/dist/prompts/protocol.txt +54 -0
  24. package/dist/prompts/safety.txt +10 -0
  25. package/dist/prompts/task.txt +7 -0
  26. package/dist/prompts/thinking.txt +10 -0
  27. package/dist/prompts/tools-subagents.txt +18 -0
  28. package/dist/prompts.d.ts +11 -0
  29. package/dist/prompts.js +126 -0
  30. package/dist/prompts.js.map +1 -0
  31. package/dist/protocol.d.ts +15 -0
  32. package/dist/protocol.js +393 -0
  33. package/dist/protocol.js.map +1 -0
  34. package/dist/runtime.d.ts +20 -0
  35. package/dist/runtime.js +871 -0
  36. package/dist/runtime.js.map +1 -0
  37. package/dist/tools.d.ts +21 -0
  38. package/dist/tools.js +49 -0
  39. package/dist/tools.js.map +1 -0
  40. package/dist/types.d.ts +358 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils.d.ts +14 -0
  44. package/dist/utils.js +115 -0
  45. package/dist/utils.js.map +1 -0
  46. package/package.json +63 -0
@@ -0,0 +1,126 @@
1
+ import { access, readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { PROMPT_SECTION_ORDER, PROMPT_SECTION_TITLES, } from "./defaults.js";
5
+ const PROMPT_FILES = {
6
+ identity: "identity.txt",
7
+ endpoint_responses: "endpoint-responses.txt",
8
+ endpoint_chat_completions: "endpoint-chat-completions.txt",
9
+ protocol: "protocol.txt",
10
+ safety: "safety.txt",
11
+ personality: "personality.txt",
12
+ thinking: "thinking.txt",
13
+ tools_subagents: "tools-subagents.txt",
14
+ memory: "memory.txt",
15
+ task: "task.txt",
16
+ };
17
+ const bundledPromptDir = fileURLToPath(new URL("./prompts/", import.meta.url));
18
+ let bundledPromptCache;
19
+ async function fileExists(path) {
20
+ try {
21
+ await access(path);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async function readPromptFile(path) {
29
+ return await readFile(path, "utf8");
30
+ }
31
+ async function loadBundledPromptTemplates() {
32
+ bundledPromptCache ??= (async () => {
33
+ const entries = await Promise.all(PROMPT_SECTION_ORDER.map(async (key) => {
34
+ const file = resolve(bundledPromptDir, PROMPT_FILES[key]);
35
+ return [key, await readPromptFile(file)];
36
+ }));
37
+ return Object.fromEntries(entries);
38
+ })();
39
+ return await bundledPromptCache;
40
+ }
41
+ async function loadPromptPackTemplates(promptPack) {
42
+ if (!promptPack?.rootDir) {
43
+ return promptPack?.sections ?? {};
44
+ }
45
+ const entries = await Promise.all(PROMPT_SECTION_ORDER.map(async (key) => {
46
+ const filePath = resolve(promptPack.rootDir, PROMPT_FILES[key]);
47
+ if (!(await fileExists(filePath))) {
48
+ return [key, undefined];
49
+ }
50
+ return [key, await readPromptFile(filePath)];
51
+ }));
52
+ return {
53
+ ...Object.fromEntries(entries),
54
+ ...promptPack.sections,
55
+ };
56
+ }
57
+ function applyPlaceholders(template, context) {
58
+ return template
59
+ .replace(/\{data:([a-zA-Z0-9_.-]+)\}/g, (_match, key) => {
60
+ const value = context.data[key];
61
+ return value === undefined || value === null ? "" : String(value);
62
+ })
63
+ .replace(/\{block:([a-zA-Z0-9_.-]+)\}/g, (_match, key) => {
64
+ return context.blocks[key] ?? "";
65
+ })
66
+ .trim();
67
+ }
68
+ export async function renderPromptSections(options) {
69
+ const bundled = await loadBundledPromptTemplates();
70
+ const fromPack = await loadPromptPackTemplates(options.promptPack);
71
+ const mergedTemplates = {
72
+ ...bundled,
73
+ ...fromPack,
74
+ ...options.constructorOverrides?.sections,
75
+ ...options.runtimeOverrides?.sections,
76
+ };
77
+ const context = {
78
+ data: {
79
+ ...options.constructorOverrides?.data,
80
+ ...options.runtimeOverrides?.data,
81
+ ...options.context.data,
82
+ },
83
+ blocks: {
84
+ ...options.constructorOverrides?.blocks,
85
+ ...options.runtimeOverrides?.blocks,
86
+ ...options.context.blocks,
87
+ },
88
+ };
89
+ const sections = [];
90
+ for (const key of PROMPT_SECTION_ORDER) {
91
+ const template = mergedTemplates[key];
92
+ if (!template) {
93
+ continue;
94
+ }
95
+ const text = applyPlaceholders(template, context);
96
+ if (!text) {
97
+ continue;
98
+ }
99
+ sections.push({
100
+ key,
101
+ title: PROMPT_SECTION_TITLES[key],
102
+ text,
103
+ });
104
+ }
105
+ let fullPrompt = sections
106
+ .map((section) => `## ${section.title}\n${section.text}`)
107
+ .join("\n\n");
108
+ const raw = {
109
+ ...options.constructorOverrides?.raw,
110
+ ...options.runtimeOverrides?.raw,
111
+ };
112
+ if (raw.replace) {
113
+ fullPrompt = applyPlaceholders(raw.replace, context);
114
+ }
115
+ if (raw.prepend) {
116
+ fullPrompt = `${applyPlaceholders(raw.prepend, context)}\n\n${fullPrompt}`.trim();
117
+ }
118
+ if (raw.append) {
119
+ fullPrompt = `${fullPrompt}\n\n${applyPlaceholders(raw.append, context)}`.trim();
120
+ }
121
+ return {
122
+ sections,
123
+ fullPrompt,
124
+ };
125
+ }
126
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { GeneralAIParsedProtocol, GeneralAIProtocolEvent } from "./types.js";
2
+ interface ParseContext {
3
+ step: number;
4
+ }
5
+ export declare class ProtocolStreamParser {
6
+ #private;
7
+ private readonly context;
8
+ constructor(context: ParseContext);
9
+ push(chunk: string): GeneralAIParsedProtocol;
10
+ end(): GeneralAIParsedProtocol;
11
+ snapshot(): GeneralAIParsedProtocol;
12
+ }
13
+ export declare function parseProtocol(text: string, context?: ParseContext): GeneralAIParsedProtocol;
14
+ export declare function validateProtocolSequence(events: GeneralAIProtocolEvent[], safetyEnabled: boolean): string[];
15
+ export {};
@@ -0,0 +1,393 @@
1
+ const MARKER_PREFIX = "[[[status:";
2
+ const MARKER_SUFFIX = "]]]";
3
+ const LENIENT_MARKER_SUFFIX = "]]";
4
+ function buildMarker(inner, suffix = MARKER_SUFFIX) {
5
+ return `${MARKER_PREFIX}${inner}${suffix}`;
6
+ }
7
+ function normalizeProtocolText(text) {
8
+ return text
9
+ .replace(/([^\n])(\[\[\[status:)/g, "$1\n$2")
10
+ .replace(/(\[\[\[status:[^\n]*?(?:\]\]\]|\]\](?!\])))(?=[^\n])/g, "$1\n");
11
+ }
12
+ function parseJsonPayload(payload, marker) {
13
+ try {
14
+ const parsed = JSON.parse(payload);
15
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
16
+ throw new Error("JSON payload must decode to an object.");
17
+ }
18
+ return parsed;
19
+ }
20
+ catch (error) {
21
+ throw new Error(`Invalid JSON payload in protocol marker ${marker}: ${error instanceof Error ? error.message : String(error)}`);
22
+ }
23
+ }
24
+ function parseOptionalJsonPayload(payload, marker) {
25
+ const trimmed = payload.trim();
26
+ if (!trimmed) {
27
+ return {};
28
+ }
29
+ return parseJsonPayload(trimmed, marker);
30
+ }
31
+ function parseMarker(inner, context, rawMarker = buildMarker(inner)) {
32
+ if (inner === "writing") {
33
+ return { openBlock: "writing", rawMarker };
34
+ }
35
+ if (inner === "thinking") {
36
+ return { openBlock: "thinking", rawMarker };
37
+ }
38
+ if (inner === "checkpoint") {
39
+ const event = {
40
+ kind: "checkpoint",
41
+ step: context.step,
42
+ rawMarker,
43
+ };
44
+ return event;
45
+ }
46
+ if (inner === "revise") {
47
+ const event = {
48
+ kind: "revise",
49
+ step: context.step,
50
+ rawMarker,
51
+ };
52
+ return event;
53
+ }
54
+ if (inner === "done") {
55
+ const event = {
56
+ kind: "done",
57
+ step: context.step,
58
+ rawMarker,
59
+ };
60
+ return event;
61
+ }
62
+ if (inner.startsWith("input_safety:")) {
63
+ const payload = parseJsonPayload(inner.slice("input_safety:".length), rawMarker);
64
+ const event = {
65
+ kind: "input_safety",
66
+ payload,
67
+ step: context.step,
68
+ rawMarker,
69
+ };
70
+ return event;
71
+ }
72
+ if (inner === "input_safety") {
73
+ return {
74
+ openBlock: "input_safety",
75
+ rawMarker,
76
+ };
77
+ }
78
+ if (inner.startsWith("output_safety:")) {
79
+ const payload = parseJsonPayload(inner.slice("output_safety:".length), rawMarker);
80
+ const event = {
81
+ kind: "output_safety",
82
+ payload,
83
+ step: context.step,
84
+ rawMarker,
85
+ };
86
+ return event;
87
+ }
88
+ if (inner === "output_safety") {
89
+ return {
90
+ openBlock: "output_safety",
91
+ rawMarker,
92
+ };
93
+ }
94
+ if (inner.startsWith("error:")) {
95
+ const payload = parseJsonPayload(inner.slice("error:".length), rawMarker);
96
+ const event = {
97
+ kind: "error",
98
+ payload,
99
+ step: context.step,
100
+ rawMarker,
101
+ };
102
+ return event;
103
+ }
104
+ if (inner === "error") {
105
+ return {
106
+ openBlock: "error",
107
+ rawMarker,
108
+ };
109
+ }
110
+ if (inner.startsWith('call_tool:"')) {
111
+ const remainder = inner.slice('call_tool:"'.length);
112
+ const splitIndex = remainder.indexOf('":');
113
+ if (splitIndex === -1) {
114
+ return {
115
+ openBlock: "call_tool",
116
+ rawMarker,
117
+ name: remainder.slice(0, -1),
118
+ };
119
+ }
120
+ const name = remainder.slice(0, splitIndex);
121
+ const payload = JSON.parse(remainder.slice(splitIndex + 2));
122
+ const event = {
123
+ kind: "call_tool",
124
+ name,
125
+ arguments: payload,
126
+ step: context.step,
127
+ rawMarker,
128
+ };
129
+ return event;
130
+ }
131
+ if (inner.startsWith('call_subagent:"')) {
132
+ const remainder = inner.slice('call_subagent:"'.length);
133
+ const splitIndex = remainder.indexOf('":');
134
+ if (splitIndex === -1) {
135
+ return {
136
+ openBlock: "call_subagent",
137
+ rawMarker,
138
+ name: remainder.slice(0, -1),
139
+ };
140
+ }
141
+ const name = remainder.slice(0, splitIndex);
142
+ const payload = JSON.parse(remainder.slice(splitIndex + 2));
143
+ const event = {
144
+ kind: "call_subagent",
145
+ name,
146
+ arguments: payload,
147
+ step: context.step,
148
+ rawMarker,
149
+ };
150
+ return event;
151
+ }
152
+ throw new Error(`Unknown protocol marker: ${rawMarker}`);
153
+ }
154
+ function flushBlock(block, context, events) {
155
+ if (!block) {
156
+ return;
157
+ }
158
+ if ((block.type === "writing" || block.type === "thinking") &&
159
+ !block.content.trim()) {
160
+ return;
161
+ }
162
+ if (block.type === "writing") {
163
+ const event = {
164
+ kind: "writing",
165
+ content: block.content,
166
+ step: context.step,
167
+ rawMarker: block.rawMarker,
168
+ };
169
+ events.push(event);
170
+ return;
171
+ }
172
+ if (block.type === "input_safety" ||
173
+ block.type === "output_safety" ||
174
+ block.type === "error" ||
175
+ block.type === "call_tool" ||
176
+ block.type === "call_subagent") {
177
+ flushStructuredBlock(block, context, events);
178
+ return;
179
+ }
180
+ const event = {
181
+ kind: "thinking",
182
+ content: block.content,
183
+ step: context.step,
184
+ rawMarker: block.rawMarker,
185
+ };
186
+ events.push(event);
187
+ return;
188
+ }
189
+ function flushStructuredBlock(block, context, events) {
190
+ if (block.type === "input_safety") {
191
+ events.push({
192
+ kind: "input_safety",
193
+ payload: parseOptionalJsonPayload(block.content, block.rawMarker),
194
+ step: context.step,
195
+ rawMarker: block.rawMarker,
196
+ });
197
+ return;
198
+ }
199
+ if (block.type === "output_safety") {
200
+ events.push({
201
+ kind: "output_safety",
202
+ payload: parseOptionalJsonPayload(block.content, block.rawMarker),
203
+ step: context.step,
204
+ rawMarker: block.rawMarker,
205
+ });
206
+ return;
207
+ }
208
+ if (block.type === "error") {
209
+ events.push({
210
+ kind: "error",
211
+ payload: parseOptionalJsonPayload(block.content, block.rawMarker),
212
+ step: context.step,
213
+ rawMarker: block.rawMarker,
214
+ });
215
+ return;
216
+ }
217
+ if (block.type === "call_tool") {
218
+ events.push({
219
+ kind: "call_tool",
220
+ name: block.name,
221
+ arguments: parseOptionalJsonPayload(block.content, block.rawMarker),
222
+ step: context.step,
223
+ rawMarker: block.rawMarker,
224
+ });
225
+ return;
226
+ }
227
+ if (block.type === "call_subagent") {
228
+ events.push({
229
+ kind: "call_subagent",
230
+ name: block.name,
231
+ arguments: parseOptionalJsonPayload(block.content, block.rawMarker),
232
+ step: context.step,
233
+ rawMarker: block.rawMarker,
234
+ });
235
+ }
236
+ }
237
+ export class ProtocolStreamParser {
238
+ context;
239
+ #buffer = "";
240
+ #events = [];
241
+ #warnings = [];
242
+ #deltas = [];
243
+ #seenMarker = false;
244
+ #activeBlock = null;
245
+ constructor(context) {
246
+ this.context = context;
247
+ }
248
+ push(chunk) {
249
+ this.#buffer = normalizeProtocolText(this.#buffer + chunk);
250
+ this.#consume(false);
251
+ return this.snapshot();
252
+ }
253
+ end() {
254
+ this.#consume(true);
255
+ return this.snapshot();
256
+ }
257
+ snapshot() {
258
+ return {
259
+ events: [...this.#events],
260
+ deltas: [...this.#deltas],
261
+ warnings: [...this.#warnings],
262
+ };
263
+ }
264
+ #consume(flushPartial) {
265
+ while (this.#buffer.length > 0) {
266
+ if (this.#buffer.startsWith(MARKER_PREFIX)) {
267
+ const newlineIndex = this.#buffer.indexOf("\n");
268
+ if (!flushPartial && newlineIndex === -1) {
269
+ break;
270
+ }
271
+ const line = newlineIndex === -1 ? this.#buffer : this.#buffer.slice(0, newlineIndex);
272
+ const suffix = line.endsWith(MARKER_SUFFIX)
273
+ ? MARKER_SUFFIX
274
+ : line.endsWith(LENIENT_MARKER_SUFFIX)
275
+ ? LENIENT_MARKER_SUFFIX
276
+ : null;
277
+ if (!suffix) {
278
+ break;
279
+ }
280
+ const marker = line;
281
+ this.#buffer =
282
+ newlineIndex === -1 ? "" : this.#buffer.slice(newlineIndex + 1);
283
+ this.#seenMarker = true;
284
+ flushBlock(this.#activeBlock, this.context, this.#events);
285
+ this.#activeBlock = null;
286
+ const parsed = parseMarker(marker.slice(MARKER_PREFIX.length, -suffix.length), this.context, marker);
287
+ if ("openBlock" in parsed) {
288
+ this.#activeBlock =
289
+ "name" in parsed
290
+ ? {
291
+ type: parsed.openBlock,
292
+ rawMarker: parsed.rawMarker,
293
+ content: "",
294
+ name: parsed.name,
295
+ }
296
+ : {
297
+ type: parsed.openBlock,
298
+ rawMarker: parsed.rawMarker,
299
+ content: "",
300
+ };
301
+ continue;
302
+ }
303
+ this.#events.push(parsed);
304
+ continue;
305
+ }
306
+ const nextMarkerIndex = this.#buffer.indexOf(`\n${MARKER_PREFIX}`);
307
+ if (this.#activeBlock) {
308
+ if (nextMarkerIndex !== -1) {
309
+ this.#appendToBlock(this.#buffer.slice(0, nextMarkerIndex + 1));
310
+ this.#buffer = this.#buffer.slice(nextMarkerIndex + 1);
311
+ continue;
312
+ }
313
+ if (flushPartial) {
314
+ this.#appendToBlock(this.#buffer);
315
+ this.#buffer = "";
316
+ break;
317
+ }
318
+ const lastNewline = this.#buffer.lastIndexOf("\n");
319
+ if (lastNewline === -1) {
320
+ break;
321
+ }
322
+ this.#appendToBlock(this.#buffer.slice(0, lastNewline + 1));
323
+ this.#buffer = this.#buffer.slice(lastNewline + 1);
324
+ continue;
325
+ }
326
+ if (flushPartial) {
327
+ if (!this.#seenMarker && this.#buffer.trim()) {
328
+ this.#warnings.push("Model output did not include protocol markers. Falling back to implicit writing block.");
329
+ this.#events.push({
330
+ kind: "writing",
331
+ content: this.#buffer,
332
+ step: this.context.step,
333
+ });
334
+ }
335
+ else if (this.#buffer.trim()) {
336
+ this.#warnings.push(`Ignoring stray text outside protocol blocks: ${this.#buffer.trim()}`);
337
+ }
338
+ this.#buffer = "";
339
+ break;
340
+ }
341
+ break;
342
+ }
343
+ if (flushPartial) {
344
+ flushBlock(this.#activeBlock, this.context, this.#events);
345
+ this.#activeBlock = null;
346
+ }
347
+ }
348
+ #appendToBlock(text) {
349
+ if (!this.#activeBlock || !text) {
350
+ return;
351
+ }
352
+ this.#activeBlock.content += text;
353
+ if (this.#activeBlock.type === "writing" || this.#activeBlock.type === "thinking") {
354
+ this.#deltas.push({
355
+ type: this.#activeBlock.type === "writing" ? "writing_delta" : "thinking_delta",
356
+ block: this.#activeBlock.type,
357
+ text,
358
+ });
359
+ }
360
+ }
361
+ }
362
+ export function parseProtocol(text, context = { step: 1 }) {
363
+ const parser = new ProtocolStreamParser(context);
364
+ parser.push(text);
365
+ return parser.end();
366
+ }
367
+ export function validateProtocolSequence(events, safetyEnabled) {
368
+ const warnings = [];
369
+ const kinds = events.map((event) => event.kind);
370
+ if (events.length === 0) {
371
+ warnings.push("No protocol events were produced.");
372
+ return warnings;
373
+ }
374
+ if (events[0]?.kind !== "thinking") {
375
+ warnings.push("Protocol sequence does not begin with a thinking block.");
376
+ }
377
+ if (safetyEnabled && !kinds.includes("input_safety")) {
378
+ warnings.push("Protocol sequence does not include input_safety.");
379
+ }
380
+ if (safetyEnabled && !kinds.includes("output_safety")) {
381
+ warnings.push("Protocol sequence does not include output_safety.");
382
+ }
383
+ const doneIndex = kinds.lastIndexOf("done");
384
+ if (doneIndex === -1) {
385
+ warnings.push("Protocol sequence does not include done.");
386
+ }
387
+ const outputSafetyIndex = kinds.lastIndexOf("output_safety");
388
+ if (outputSafetyIndex !== -1 && doneIndex !== -1 && outputSafetyIndex > doneIndex) {
389
+ warnings.push("output_safety appears after done.");
390
+ }
391
+ return warnings;
392
+ }
393
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAgBA,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAkBnC,SAAS,WAAW,CAAC,KAAa,EAAE,MAAM,GAAG,aAAa;IACxD,OAAO,GAAG,aAAa,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI;SACR,OAAO,CAAC,yBAAyB,EAAE,QAAQ,CAAC;SAC5C,OAAO,CAAC,uDAAuD,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,MAAc;IACvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAC9C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,MAAiC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,2CAA2C,MAAM,KAC/C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,OAAe,EACf,MAAc;IAEd,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAClB,KAAa,EACb,OAAqB,EACrB,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAG9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QAC3B,MAAM,KAAK,GAA6B;YACtC,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,KAAK,GAAyB;YAClC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QACjF,MAAM,KAAK,GAA8B;YACvC,IAAI,EAAE,cAAc;YACpB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,cAAc;YACzB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAClF,MAAM,KAAK,GAA+B;YACxC,IAAI,EAAE,eAAe;YACrB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;QAC9B,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAwB;YACjC,IAAI,EAAE,OAAO;YACb,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,SAAS;gBACT,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAY,CAAC;QACvE,MAAM,KAAK,GAA2B;YACpC,IAAI,EAAE,WAAW;YACjB,IAAI;YACJ,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,SAAS,EAAE,eAAe;gBAC1B,SAAS;gBACT,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAY,CAAC;QACvE,MAAM,KAAK,GAA+B;YACxC,IAAI,EAAE,eAAe;YACrB,IAAI;YACJ,SAAS,EAAE,OAAO;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;SACV,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CACjB,KAaQ,EACR,OAAqB,EACrB,MAAgC;IAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;QACvD,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EACrB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,KAAK,GAA0B;YACnC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,IACE,KAAK,CAAC,IAAI,KAAK,cAAc;QAC7B,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,KAAK,CAAC,IAAI,KAAK,OAAO;QACtB,KAAK,CAAC,IAAI,KAAK,WAAW;QAC1B,KAAK,CAAC,IAAI,KAAK,eAAe,EAC9B,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAA2B;QACpC,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO;AACT,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAWK,EACL,OAAqB,EACrB,MAAgC;IAEhC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACjE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACjE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACjE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;YACnE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,OAAO,oBAAoB;IAqBF;IApB7B,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,GAA6B,EAAE,CAAC;IACvC,SAAS,GAAa,EAAE,CAAC;IACzB,OAAO,GAAkC,EAAE,CAAC;IAC5C,WAAW,GAAG,KAAK,CAAC;IACpB,YAAY,GAaD,IAAI,CAAC;IAEhB,YAA6B,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAEtD,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,GAAG;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,OAAO;YACL,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,YAAqB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;oBACzC,MAAM;gBACR,CAAC;gBAED,MAAM,IAAI,GACR,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACzC,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;wBACpC,CAAC,CAAC,qBAAqB;wBACvB,CAAC,CAAC,IAAI,CAAC;gBAEX,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,OAAO;oBACV,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAEzB,MAAM,MAAM,GAAG,WAAW,CACxB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAClD,IAAI,CAAC,OAAO,EACZ,MAAM,CACP,CAAC;gBAEF,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,YAAY;wBACf,MAAM,IAAI,MAAM;4BACd,CAAC,CAAC;gCACE,IAAI,EAAE,MAAM,CAAC,SAAS;gCACtB,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,OAAO,EAAE,EAAE;gCACX,IAAI,EAAE,MAAM,CAAC,IAAI;6BAClB;4BACH,CAAC,CAAC;gCACE,IAAI,EAAE,MAAM,CAAC,SAAS;gCACtB,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,OAAO,EAAE,EAAE;6BACZ,CAAC;oBACR,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;oBACvD,SAAS;gBACX,CAAC;gBAED,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAClC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;oBAClB,MAAM;gBACR,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;oBACvB,MAAM;gBACR,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,wFAAwF,CACzF,CAAC;oBACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;qBACxB,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,gDAAgD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CACtE,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAClB,MAAM;YACR,CAAC;YAED,MAAM;QACR,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,IAAI,EACF,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;gBAC3E,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gBAC7B,IAAI;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,UAAwB,EAAE,IAAI,EAAE,CAAC,EAAE;IAEnC,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAgC,EAChC,aAAsB;IAEtB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,iBAAiB,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,iBAAiB,GAAG,SAAS,EAAE,CAAC;QAClF,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type OpenAI from "openai";
2
+ import type { GeneralAIAgentParams, GeneralAIAgentResult, GeneralAIAgentStreamEvent, GeneralAILibraryDefaults, GeneralAIMemoryAdapter, GeneralAIPromptPack } from "./types.js";
3
+ interface AgentRuntimeDependencies {
4
+ openai: OpenAI;
5
+ defaults?: GeneralAILibraryDefaults;
6
+ promptPack?: GeneralAIPromptPack;
7
+ memoryAdapter: GeneralAIMemoryAdapter;
8
+ debug: boolean;
9
+ runSubagent(params: GeneralAIAgentParams, depth: number): Promise<GeneralAIAgentResult>;
10
+ }
11
+ export declare class AgentRuntime {
12
+ #private;
13
+ private readonly deps;
14
+ private readonly depth;
15
+ constructor(deps: AgentRuntimeDependencies, params: GeneralAIAgentParams, depth?: number);
16
+ renderPrompts(): Promise<import("./types.js").GeneralAIRenderedPrompts>;
17
+ run(): Promise<GeneralAIAgentResult>;
18
+ stream(): AsyncGenerator<GeneralAIAgentStreamEvent, GeneralAIAgentResult>;
19
+ }
20
+ export {};