@minpeter/pss-runtime 0.1.0-next.2 → 0.1.0-next.4
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 +172 -85
- package/dist/agent-host-session-store.js +2 -4
- package/dist/agent-host-session-store.js.map +1 -1
- package/dist/agent-loop.js +9 -8
- package/dist/agent-loop.js.map +1 -1
- package/dist/agent-namespace.js +3 -7
- package/dist/agent-namespace.js.map +1 -1
- package/dist/agent-options.d.ts +4 -19
- package/dist/agent-options.js +2 -8
- package/dist/agent-options.js.map +1 -1
- package/dist/agent-resume.js +2 -82
- package/dist/agent-resume.js.map +1 -1
- package/dist/agent-session-entry.d.ts +1 -1
- package/dist/agent.d.ts +4 -4
- package/dist/agent.js +19 -89
- package/dist/agent.js.map +1 -1
- package/dist/cloudflare/cloudflare-agent-context.d.ts +40 -0
- package/dist/cloudflare/cloudflare-agent-context.js +37 -0
- package/dist/cloudflare/cloudflare-agent-context.js.map +1 -0
- package/dist/cloudflare/cloudflare-alarm-budget.d.ts +18 -0
- package/dist/cloudflare/cloudflare-alarm-budget.js +77 -0
- package/dist/cloudflare/cloudflare-alarm-budget.js.map +1 -0
- package/dist/cloudflare/cloudflare-alarm-drainer.d.ts +45 -0
- package/dist/cloudflare/cloudflare-alarm-drainer.js +103 -0
- package/dist/cloudflare/cloudflare-alarm-drainer.js.map +1 -0
- package/dist/cloudflare/cloudflare-alarm-run-drain.d.ts +13 -0
- package/dist/cloudflare/cloudflare-alarm-run-drain.js +81 -0
- package/dist/cloudflare/cloudflare-alarm-run-drain.js.map +1 -0
- package/dist/cloudflare/cloudflare-alarm-work.js +110 -0
- package/dist/cloudflare/cloudflare-alarm-work.js.map +1 -0
- package/dist/cloudflare/cloudflare-checkpoint-store.js +39 -0
- package/dist/cloudflare/cloudflare-checkpoint-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-durable-object-fetch.d.ts +21 -0
- package/dist/cloudflare/cloudflare-durable-object-fetch.js +11 -0
- package/dist/cloudflare/cloudflare-durable-object-fetch.js.map +1 -0
- package/dist/cloudflare/cloudflare-event-store.js +33 -0
- package/dist/cloudflare/cloudflare-event-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-execution-session-store.js +40 -0
- package/dist/cloudflare/cloudflare-execution-session-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-execution-store.js +35 -0
- package/dist/cloudflare/cloudflare-execution-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-host.d.ts +61 -0
- package/dist/cloudflare/cloudflare-host.js +113 -0
- package/dist/cloudflare/cloudflare-host.js.map +1 -0
- package/dist/cloudflare/cloudflare-notification-store.js +59 -0
- package/dist/cloudflare/cloudflare-notification-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-run-store.js +81 -0
- package/dist/cloudflare/cloudflare-run-store.js.map +1 -0
- package/dist/cloudflare/cloudflare-store-utils.js +43 -0
- package/dist/cloudflare/cloudflare-store-utils.js.map +1 -0
- package/dist/cloudflare/durable-object-storage.d.ts +20 -0
- package/dist/cloudflare/durable-object-storage.js +76 -0
- package/dist/cloudflare/durable-object-storage.js.map +1 -0
- package/dist/cloudflare/index.d.ts +7 -0
- package/dist/cloudflare/index.js +6 -0
- package/dist/execution/capabilities.d.ts +40 -0
- package/dist/execution/host.d.ts +9 -0
- package/dist/execution/host.js +49 -1
- package/dist/execution/host.js.map +1 -1
- package/dist/execution/index.d.ts +3 -1
- package/dist/execution/index.js +2 -1
- package/dist/execution/memory.js +1 -1
- package/dist/execution/memory.js.map +1 -1
- package/dist/execution/types.d.ts +5 -10
- package/dist/index.d.ts +9 -5
- package/dist/index.js +6 -2
- package/dist/llm-tool-execution.js.map +1 -1
- package/dist/llm.d.ts +1 -21
- package/dist/llm.js +12 -14
- package/dist/llm.js.map +1 -1
- package/dist/plugins.d.ts +27 -5
- package/dist/plugins.js +35 -6
- package/dist/plugins.js.map +1 -1
- package/dist/session/delegate-input.d.ts +9 -0
- package/dist/session/delegate-input.js +16 -0
- package/dist/session/delegate-input.js.map +1 -0
- package/dist/session/events.d.ts +43 -25
- package/dist/session/events.js +41 -0
- package/dist/session/events.js.map +1 -0
- package/dist/session/input-meta-types.d.ts +10 -0
- package/dist/session/input-meta.d.ts +13 -0
- package/dist/session/input-meta.js +45 -0
- package/dist/session/input-meta.js.map +1 -0
- package/dist/session/input.d.ts +4 -0
- package/dist/session/mapping.js +4 -2
- package/dist/session/mapping.js.map +1 -1
- package/dist/session/runtime-input-emit.js +41 -0
- package/dist/session/runtime-input-emit.js.map +1 -0
- package/dist/session/runtime-input.js +5 -1
- package/dist/session/runtime-input.js.map +1 -1
- package/dist/session/session-events.js +20 -6
- package/dist/session/session-events.js.map +1 -1
- package/dist/session/session-notification.js +3 -2
- package/dist/session/session-notification.js.map +1 -1
- package/dist/session/session-runtime-drain.js +3 -9
- package/dist/session/session-runtime-drain.js.map +1 -1
- package/dist/session/session-turn-processor.js +10 -20
- package/dist/session/session-turn-processor.js.map +1 -1
- package/dist/session/session.js +15 -8
- package/dist/session/session.js.map +1 -1
- package/package.json +6 -1
- package/dist/agent-child-runs.js +0 -16
- package/dist/agent-child-runs.js.map +0 -1
- package/dist/agent-host-capabilities.js +0 -9
- package/dist/agent-host-capabilities.js.map +0 -1
- package/dist/agent-validation.js +0 -35
- package/dist/agent-validation.js.map +0 -1
- package/dist/child-session-cleanups.js +0 -61
- package/dist/child-session-cleanups.js.map +0 -1
- package/dist/execution/run.js +0 -55
- package/dist/execution/run.js.map +0 -1
- package/dist/subagent-background-child-run-state.js +0 -51
- package/dist/subagent-background-child-run-state.js.map +0 -1
- package/dist/subagent-background-child-run.js +0 -103
- package/dist/subagent-background-child-run.js.map +0 -1
- package/dist/subagent-background-in-process.js +0 -98
- package/dist/subagent-background-in-process.js.map +0 -1
- package/dist/subagent-background-notification-inbox.js +0 -106
- package/dist/subagent-background-notification-inbox.js.map +0 -1
- package/dist/subagent-background-notify.js +0 -136
- package/dist/subagent-background-notify.js.map +0 -1
- package/dist/subagent-background-resume-group.js +0 -99
- package/dist/subagent-background-resume-group.js.map +0 -1
- package/dist/subagent-background-runner.js +0 -115
- package/dist/subagent-background-runner.js.map +0 -1
- package/dist/subagent-background-schedule.js +0 -43
- package/dist/subagent-background-schedule.js.map +0 -1
- package/dist/subagent-child-run.js +0 -68
- package/dist/subagent-child-run.js.map +0 -1
- package/dist/subagent-job-cancel.js +0 -84
- package/dist/subagent-job-cancel.js.map +0 -1
- package/dist/subagent-job-observer.js +0 -19
- package/dist/subagent-job-observer.js.map +0 -1
- package/dist/subagent-job-output.js +0 -87
- package/dist/subagent-job-output.js.map +0 -1
- package/dist/subagent-job-state.js +0 -66
- package/dist/subagent-job-state.js.map +0 -1
- package/dist/subagent-jobs.js +0 -96
- package/dist/subagent-jobs.js.map +0 -1
- package/dist/subagent-prompt-schema.js +0 -114
- package/dist/subagent-prompt-schema.js.map +0 -1
- package/dist/subagent-run.js +0 -111
- package/dist/subagent-run.js.map +0 -1
- package/dist/subagents.js +0 -125
- package/dist/subagents.js.map +0 -1
package/dist/subagents.js
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { scopedChildSessionKey } from "./subagent-run.js";
|
|
2
|
-
import { normalizeAgentInput } from "./session/input-normalization.js";
|
|
3
|
-
import { blockingSubagentDedupeKey, runBlockingChild } from "./subagent-child-run.js";
|
|
4
|
-
import { createBackgroundCancelTool } from "./subagent-job-cancel.js";
|
|
5
|
-
import { createBackgroundOutputTool } from "./subagent-job-output.js";
|
|
6
|
-
import { startBackgroundJob } from "./subagent-jobs.js";
|
|
7
|
-
import { delegatePromptSchema } from "./subagent-prompt-schema.js";
|
|
8
|
-
import { jsonSchema, tool } from "ai";
|
|
9
|
-
//#region src/subagents.ts
|
|
10
|
-
function createSubagentTools({ backgroundSubagents, executionHost, parentAgentNamespace, parentSession, parentSessionKey, registerChildSession, subagents }) {
|
|
11
|
-
if (subagents.length === 0) return {};
|
|
12
|
-
const jobs = /* @__PURE__ */ new Map();
|
|
13
|
-
const groups = /* @__PURE__ */ new Map();
|
|
14
|
-
const blockingRuns = /* @__PURE__ */ new Map();
|
|
15
|
-
const backgroundToolScope = { childSessionKeyPrefix: `parent:${parentAgentNamespace}:${parentSessionKey}:subagent:` };
|
|
16
|
-
const generatedTools = backgroundSubagents ? {
|
|
17
|
-
background_cancel: createBackgroundCancelTool(jobs, executionHost, backgroundToolScope),
|
|
18
|
-
background_output: createBackgroundOutputTool(jobs, executionHost, backgroundToolScope)
|
|
19
|
-
} : {};
|
|
20
|
-
for (const subagent of subagents) {
|
|
21
|
-
const name = subagent.name;
|
|
22
|
-
if (!name) continue;
|
|
23
|
-
generatedTools[`delegate_to_${name.replaceAll("-", "_")}`] = createDelegateTool({
|
|
24
|
-
jobs,
|
|
25
|
-
groups,
|
|
26
|
-
backgroundSubagents,
|
|
27
|
-
blockingRuns,
|
|
28
|
-
executionHost,
|
|
29
|
-
parentAgentNamespace,
|
|
30
|
-
parentSession,
|
|
31
|
-
parentSessionKey,
|
|
32
|
-
registerChildSession,
|
|
33
|
-
subagent
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return generatedTools;
|
|
37
|
-
}
|
|
38
|
-
function createDelegateTool({ jobs, groups, backgroundSubagents, blockingRuns, executionHost, parentAgentNamespace, parentSession, parentSessionKey, registerChildSession, subagent }) {
|
|
39
|
-
return tool({
|
|
40
|
-
description: `Delegate work to ${subagent.name}: ${subagent.description}`,
|
|
41
|
-
execute: async (input, { abortSignal, toolCallId }) => {
|
|
42
|
-
const prompt = normalizeAgentInput(input.prompt);
|
|
43
|
-
const sessionKey = scopedChildSessionKey({
|
|
44
|
-
parentAgentNamespace,
|
|
45
|
-
parentSessionKey,
|
|
46
|
-
sessionKey: input.sessionKey,
|
|
47
|
-
subagent: subagent.name ?? "subagent"
|
|
48
|
-
});
|
|
49
|
-
if (input.run_in_background === true) {
|
|
50
|
-
if (!backgroundSubagents) throw new Error("Background subagent delegation is not available for this host.");
|
|
51
|
-
return await startBackgroundJob({
|
|
52
|
-
abortSignal: abortSignal ?? new AbortController().signal,
|
|
53
|
-
description: input.description,
|
|
54
|
-
executionHost,
|
|
55
|
-
groupId: parentSession.currentBackgroundGroupId?.(),
|
|
56
|
-
groups,
|
|
57
|
-
jobs,
|
|
58
|
-
delegateToolCallId: toolCallId,
|
|
59
|
-
parentSession,
|
|
60
|
-
parentRunId: parentSession.currentRunId?.() ?? parentAgentNamespace,
|
|
61
|
-
parentSessionKey,
|
|
62
|
-
ownerNamespace: parentAgentNamespace,
|
|
63
|
-
prompt,
|
|
64
|
-
registerCleanup: (cleanup) => registerChildSession(parentSessionKey, cleanup),
|
|
65
|
-
sessionKey,
|
|
66
|
-
subagent
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
registerChildSession(parentSessionKey, () => subagent.session(sessionKey).delete());
|
|
70
|
-
await parentSession.emitObserverEvent({
|
|
71
|
-
description: input.description,
|
|
72
|
-
delegateToolCallId: toolCallId,
|
|
73
|
-
run_in_background: false,
|
|
74
|
-
subagent: subagent.name ?? "subagent",
|
|
75
|
-
type: "subagent-job-start"
|
|
76
|
-
});
|
|
77
|
-
const dedupeKey = blockingSubagentDedupeKey(parentAgentNamespace, toolCallId);
|
|
78
|
-
const result = blockingRuns.get(dedupeKey) ?? runBlockingChild({
|
|
79
|
-
abortSignal,
|
|
80
|
-
dedupeKey,
|
|
81
|
-
executionHost,
|
|
82
|
-
parentRunId: parentSession.currentRunId?.() ?? parentAgentNamespace,
|
|
83
|
-
prompt,
|
|
84
|
-
sessionKey,
|
|
85
|
-
subagent
|
|
86
|
-
});
|
|
87
|
-
blockingRuns.set(dedupeKey, result);
|
|
88
|
-
const awaitedResult = await result;
|
|
89
|
-
await parentSession.emitObserverEvent({
|
|
90
|
-
error: awaitedResult.error,
|
|
91
|
-
eventCount: awaitedResult.eventCount,
|
|
92
|
-
delegateToolCallId: toolCallId,
|
|
93
|
-
status: awaitedResult.result,
|
|
94
|
-
subagent: subagent.name ?? "subagent",
|
|
95
|
-
type: "subagent-job-end"
|
|
96
|
-
});
|
|
97
|
-
return awaitedResult;
|
|
98
|
-
},
|
|
99
|
-
inputSchema: jsonSchema({
|
|
100
|
-
additionalProperties: false,
|
|
101
|
-
properties: createDelegateToolProperties(backgroundSubagents),
|
|
102
|
-
required: ["prompt"],
|
|
103
|
-
type: "object"
|
|
104
|
-
})
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
function createDelegateToolProperties(backgroundSubagents) {
|
|
108
|
-
const baseProperties = {
|
|
109
|
-
description: { type: "string" },
|
|
110
|
-
prompt: delegatePromptSchema,
|
|
111
|
-
sessionKey: { type: "string" }
|
|
112
|
-
};
|
|
113
|
-
if (!backgroundSubagents) return baseProperties;
|
|
114
|
-
return {
|
|
115
|
-
...baseProperties,
|
|
116
|
-
run_in_background: {
|
|
117
|
-
default: false,
|
|
118
|
-
type: "boolean"
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
//#endregion
|
|
123
|
-
export { createSubagentTools };
|
|
124
|
-
|
|
125
|
-
//# sourceMappingURL=subagents.js.map
|
package/dist/subagents.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagents.js","names":[],"sources":["../src/subagents.ts"],"sourcesContent":["import { jsonSchema, type ToolSet, tool } from \"ai\";\nimport type { ExecutionHost } from \"./execution/types\";\nimport { normalizeAgentInput } from \"./session/input-normalization\";\nimport {\n type BlockingSubagentRunCache,\n blockingSubagentDedupeKey,\n runBlockingChild,\n} from \"./subagent-child-run\";\nimport { createBackgroundCancelTool } from \"./subagent-job-cancel\";\nimport { createBackgroundOutputTool } from \"./subagent-job-output\";\nimport { startBackgroundJob } from \"./subagent-jobs\";\nimport { delegatePromptSchema } from \"./subagent-prompt-schema\";\nimport { scopedChildSessionKey } from \"./subagent-run\";\nimport type {\n CreateSubagentToolsOptions,\n DelegateInput,\n RuntimeInputSink,\n Subagent,\n SubagentJob,\n SubagentJobGroup,\n} from \"./subagent-types\";\n\nexport function createSubagentTools({\n backgroundSubagents,\n executionHost,\n parentAgentNamespace,\n parentSession,\n parentSessionKey,\n registerChildSession,\n subagents,\n}: CreateSubagentToolsOptions): ToolSet {\n if (subagents.length === 0) {\n return {};\n }\n\n const jobs = new Map<string, SubagentJob>();\n const groups = new Map<string, SubagentJobGroup>();\n const blockingRuns: BlockingSubagentRunCache = new Map();\n const backgroundToolScope = {\n childSessionKeyPrefix: `parent:${parentAgentNamespace}:${parentSessionKey}:subagent:`,\n };\n const generatedTools: Record<string, unknown> = backgroundSubagents\n ? {\n background_cancel: createBackgroundCancelTool(\n jobs,\n executionHost,\n backgroundToolScope\n ),\n background_output: createBackgroundOutputTool(\n jobs,\n executionHost,\n backgroundToolScope\n ),\n }\n : {};\n\n for (const subagent of subagents) {\n const name = subagent.name;\n if (!name) {\n continue;\n }\n\n generatedTools[`delegate_to_${name.replaceAll(\"-\", \"_\")}`] =\n createDelegateTool({\n jobs,\n groups,\n backgroundSubagents,\n blockingRuns,\n executionHost,\n parentAgentNamespace,\n parentSession,\n parentSessionKey,\n registerChildSession,\n subagent,\n });\n }\n\n return generatedTools as ToolSet;\n}\n\nfunction createDelegateTool({\n jobs,\n groups,\n backgroundSubagents,\n blockingRuns,\n executionHost,\n parentAgentNamespace,\n parentSession,\n parentSessionKey,\n registerChildSession,\n subagent,\n}: {\n readonly jobs: Map<string, SubagentJob>;\n readonly groups: Map<string, SubagentJobGroup>;\n readonly backgroundSubagents: boolean;\n readonly blockingRuns: BlockingSubagentRunCache;\n readonly executionHost?: ExecutionHost;\n readonly parentAgentNamespace: string;\n readonly parentSession: RuntimeInputSink;\n readonly parentSessionKey: string;\n readonly registerChildSession: CreateSubagentToolsOptions[\"registerChildSession\"];\n readonly subagent: Subagent;\n}) {\n return tool<DelegateInput, unknown, Record<string, unknown>>({\n description: `Delegate work to ${subagent.name}: ${subagent.description}`,\n execute: async (input: DelegateInput, { abortSignal, toolCallId }) => {\n const prompt = normalizeAgentInput(input.prompt);\n const sessionKey = scopedChildSessionKey({\n parentAgentNamespace,\n parentSessionKey,\n sessionKey: input.sessionKey,\n subagent: subagent.name ?? \"subagent\",\n });\n if (input.run_in_background === true) {\n if (!backgroundSubagents) {\n throw new Error(\n \"Background subagent delegation is not available for this host.\"\n );\n }\n\n return await startBackgroundJob({\n abortSignal: abortSignal ?? new AbortController().signal,\n description: input.description,\n executionHost,\n groupId: parentSession.currentBackgroundGroupId?.(),\n groups,\n jobs,\n delegateToolCallId: toolCallId,\n parentSession,\n parentRunId: parentSession.currentRunId?.() ?? parentAgentNamespace,\n parentSessionKey,\n ownerNamespace: parentAgentNamespace,\n prompt,\n registerCleanup: (cleanup) =>\n registerChildSession(parentSessionKey, cleanup),\n sessionKey,\n subagent,\n });\n }\n\n registerChildSession(parentSessionKey, () =>\n subagent.session(sessionKey).delete()\n );\n await parentSession.emitObserverEvent({\n description: input.description,\n delegateToolCallId: toolCallId,\n run_in_background: false,\n subagent: subagent.name ?? \"subagent\",\n type: \"subagent-job-start\",\n });\n const dedupeKey = blockingSubagentDedupeKey(\n parentAgentNamespace,\n toolCallId\n );\n const existing = blockingRuns.get(dedupeKey);\n const result =\n existing ??\n runBlockingChild({\n abortSignal,\n dedupeKey,\n executionHost,\n parentRunId: parentSession.currentRunId?.() ?? parentAgentNamespace,\n prompt,\n sessionKey,\n subagent,\n });\n blockingRuns.set(dedupeKey, result);\n const awaitedResult = await result;\n await parentSession.emitObserverEvent({\n error: awaitedResult.error,\n eventCount: awaitedResult.eventCount,\n delegateToolCallId: toolCallId,\n status: awaitedResult.result,\n subagent: subagent.name ?? \"subagent\",\n type: \"subagent-job-end\",\n });\n return awaitedResult;\n },\n inputSchema: jsonSchema<DelegateInput>({\n additionalProperties: false,\n properties: createDelegateToolProperties(backgroundSubagents),\n required: [\"prompt\"],\n type: \"object\",\n }),\n });\n}\n\nfunction createDelegateToolProperties(backgroundSubagents: boolean) {\n const baseProperties = {\n description: { type: \"string\" },\n prompt: delegatePromptSchema,\n sessionKey: { type: \"string\" },\n };\n\n if (!backgroundSubagents) {\n return baseProperties;\n }\n\n return {\n ...baseProperties,\n run_in_background: { default: false, type: \"boolean\" },\n };\n}\n"],"mappings":";;;;;;;;;AAsBA,SAAgB,oBAAoB,EAClC,qBACA,eACA,sBACA,eACA,kBACA,sBACA,aACsC;CACtC,IAAI,UAAU,WAAW,GACvB,OAAO,CAAC;CAGV,MAAM,uBAAO,IAAI,IAAyB;CAC1C,MAAM,yBAAS,IAAI,IAA8B;CACjD,MAAM,+BAAyC,IAAI,IAAI;CACvD,MAAM,sBAAsB,EAC1B,uBAAuB,UAAU,qBAAqB,GAAG,iBAAiB,YAC5E;CACA,MAAM,iBAA0C,sBAC5C;EACE,mBAAmB,2BACjB,MACA,eACA,mBACF;EACA,mBAAmB,2BACjB,MACA,eACA,mBACF;CACF,IACA,CAAC;CAEL,KAAK,MAAM,YAAY,WAAW;EAChC,MAAM,OAAO,SAAS;EACtB,IAAI,CAAC,MACH;EAGF,eAAe,eAAe,KAAK,WAAW,KAAK,GAAG,OACpD,mBAAmB;GACjB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC;CACL;CAEA,OAAO;AACT;AAEA,SAAS,mBAAmB,EAC1B,MACA,QACA,qBACA,cACA,eACA,sBACA,eACA,kBACA,sBACA,YAYC;CACD,OAAO,KAAsD;EAC3D,aAAa,oBAAoB,SAAS,KAAK,IAAI,SAAS;EAC5D,SAAS,OAAO,OAAsB,EAAE,aAAa,iBAAiB;GACpE,MAAM,SAAS,oBAAoB,MAAM,MAAM;GAC/C,MAAM,aAAa,sBAAsB;IACvC;IACA;IACA,YAAY,MAAM;IAClB,UAAU,SAAS,QAAQ;GAC7B,CAAC;GACD,IAAI,MAAM,sBAAsB,MAAM;IACpC,IAAI,CAAC,qBACH,MAAM,IAAI,MACR,gEACF;IAGF,OAAO,MAAM,mBAAmB;KAC9B,aAAa,eAAe,IAAI,gBAAgB,EAAE;KAClD,aAAa,MAAM;KACnB;KACA,SAAS,cAAc,2BAA2B;KAClD;KACA;KACA,oBAAoB;KACpB;KACA,aAAa,cAAc,eAAe,KAAK;KAC/C;KACA,gBAAgB;KAChB;KACA,kBAAkB,YAChB,qBAAqB,kBAAkB,OAAO;KAChD;KACA;IACF,CAAC;GACH;GAEA,qBAAqB,wBACnB,SAAS,QAAQ,UAAU,EAAE,OAAO,CACtC;GACA,MAAM,cAAc,kBAAkB;IACpC,aAAa,MAAM;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,UAAU,SAAS,QAAQ;IAC3B,MAAM;GACR,CAAC;GACD,MAAM,YAAY,0BAChB,sBACA,UACF;GAEA,MAAM,SADW,aAAa,IAAI,SAEzB,KACP,iBAAiB;IACf;IACA;IACA;IACA,aAAa,cAAc,eAAe,KAAK;IAC/C;IACA;IACA;GACF,CAAC;GACH,aAAa,IAAI,WAAW,MAAM;GAClC,MAAM,gBAAgB,MAAM;GAC5B,MAAM,cAAc,kBAAkB;IACpC,OAAO,cAAc;IACrB,YAAY,cAAc;IAC1B,oBAAoB;IACpB,QAAQ,cAAc;IACtB,UAAU,SAAS,QAAQ;IAC3B,MAAM;GACR,CAAC;GACD,OAAO;EACT;EACA,aAAa,WAA0B;GACrC,sBAAsB;GACtB,YAAY,6BAA6B,mBAAmB;GAC5D,UAAU,CAAC,QAAQ;GACnB,MAAM;EACR,CAAC;CACH,CAAC;AACH;AAEA,SAAS,6BAA6B,qBAA8B;CAClE,MAAM,iBAAiB;EACrB,aAAa,EAAE,MAAM,SAAS;EAC9B,QAAQ;EACR,YAAY,EAAE,MAAM,SAAS;CAC/B;CAEA,IAAI,CAAC,qBACH,OAAO;CAGT,OAAO;EACL,GAAG;EACH,mBAAmB;GAAE,SAAS;GAAO,MAAM;EAAU;CACvD;AACF"}
|