@flowdesk/opencode-plugin 0.1.14 → 0.1.16
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 +6 -6
- package/dist/agent-task-output.d.ts +12 -0
- package/dist/agent-task-output.d.ts.map +1 -1
- package/dist/agent-task-output.js +110 -4
- package/dist/agent-task-output.js.map +1 -1
- package/dist/agent-task-runner.d.ts +12 -1
- package/dist/agent-task-runner.d.ts.map +1 -1
- package/dist/agent-task-runner.js +237 -16
- package/dist/agent-task-runner.js.map +1 -1
- package/dist/completion-ui-cache.d.ts.map +1 -1
- package/dist/completion-ui-cache.js +159 -29
- package/dist/completion-ui-cache.js.map +1 -1
- package/dist/event-hook-observer.d.ts.map +1 -1
- package/dist/event-hook-observer.js +66 -2
- package/dist/event-hook-observer.js.map +1 -1
- package/dist/index.d.ts +2 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -17
- package/dist/index.js.map +1 -1
- package/dist/managed-dispatch-adapter.d.ts +62 -0
- package/dist/managed-dispatch-adapter.d.ts.map +1 -1
- package/dist/managed-dispatch-adapter.js +465 -1
- package/dist/managed-dispatch-adapter.js.map +1 -1
- package/dist/metadata.d.ts +19 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +18 -0
- package/dist/metadata.js.map +1 -0
- package/dist/model-selection-engine.d.ts +15 -2
- package/dist/model-selection-engine.d.ts.map +1 -1
- package/dist/model-selection-engine.js +109 -42
- package/dist/model-selection-engine.js.map +1 -1
- package/dist/provider-usage-live-tool.d.ts.map +1 -1
- package/dist/provider-usage-live-tool.js +135 -33
- package/dist/provider-usage-live-tool.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +53 -4
- package/dist/server.js.map +1 -1
- package/dist/stall-recovery.d.ts +4 -3
- package/dist/stall-recovery.d.ts.map +1 -1
- package/dist/stall-recovery.js +245 -25
- package/dist/stall-recovery.js.map +1 -1
- package/dist/status-live-tool.d.ts.map +1 -1
- package/dist/status-live-tool.js +1 -0
- package/dist/status-live-tool.js.map +1 -1
- package/dist/tui-subtask-activity.d.ts +4 -0
- package/dist/tui-subtask-activity.d.ts.map +1 -1
- package/dist/tui-subtask-activity.js +29 -24
- package/dist/tui-subtask-activity.js.map +1 -1
- package/dist/tui-usage-snapshot.d.ts.map +1 -1
- package/dist/tui-usage-snapshot.js +92 -6
- package/dist/tui-usage-snapshot.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +43 -16
- package/dist/tui.js.map +1 -1
- package/dist/workflow-assign-tool.d.ts.map +1 -1
- package/dist/workflow-assign-tool.js +21 -3
- package/dist/workflow-assign-tool.js.map +1 -1
- package/dist/workflow-dispatch-tool.d.ts +12 -0
- package/dist/workflow-dispatch-tool.d.ts.map +1 -1
- package/dist/workflow-dispatch-tool.js +24 -26
- package/dist/workflow-dispatch-tool.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -6,18 +6,18 @@ registration plus opt-in description-driven natural-language tools.
|
|
|
6
6
|
## Install
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
|
-
npm install @flowdesk/opencode-plugin@^0.1.
|
|
9
|
+
npm install @flowdesk/opencode-plugin@^0.1.16
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Configure
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
Use the package root as the OpenCode plugin entry. OpenCode resolves npm
|
|
15
|
+
plugin packages at the package root, and the package root exports the default
|
|
16
|
+
FlowDesk plugin object plus helper APIs:
|
|
17
17
|
|
|
18
18
|
```json
|
|
19
19
|
{
|
|
20
|
-
"plugin": ["@flowdesk/opencode-plugin
|
|
20
|
+
"plugin": ["@flowdesk/opencode-plugin"]
|
|
21
21
|
}
|
|
22
22
|
```
|
|
23
23
|
|
|
@@ -27,7 +27,7 @@ The minimum opt-in set for the natural-language tools is:
|
|
|
27
27
|
{
|
|
28
28
|
"plugin": [
|
|
29
29
|
[
|
|
30
|
-
"@flowdesk/opencode-plugin
|
|
30
|
+
"@flowdesk/opencode-plugin",
|
|
31
31
|
{
|
|
32
32
|
"providerUsageLive": {
|
|
33
33
|
"enabled": true,
|
|
@@ -10,7 +10,19 @@ export interface FlowDeskAgentTaskOutputObservationV1 {
|
|
|
10
10
|
messageCount: number;
|
|
11
11
|
outputKind: FlowDeskAgentTaskOutputKindV1;
|
|
12
12
|
usableForSynthesis: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* ADVISORY ONLY. The captured text superficially resembles a refusal or an
|
|
15
|
+
* error message. This is a hint for the coordinator's substance judgement; it
|
|
16
|
+
* NEVER causes the capture layer to drop or fail the result.
|
|
17
|
+
*/
|
|
18
|
+
looksLikeRefusalOrError: boolean;
|
|
13
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* ADVISORY heuristic for the coordinator: does this text look like a refusal or
|
|
22
|
+
* a bare error message rather than a substantive answer? Capture never gates on
|
|
23
|
+
* this; the main coordinator uses it to decide whether to re-select and retry.
|
|
24
|
+
*/
|
|
25
|
+
export declare function flowDeskTextLooksLikeRefusalOrErrorV1(text: string | undefined): boolean;
|
|
14
26
|
export declare function flowDeskAgentTaskMessageItems(value: unknown): unknown[];
|
|
15
27
|
export declare function classifyFlowDeskAgentTaskOutputKindV1(text: string | undefined): FlowDeskAgentTaskOutputKindV1;
|
|
16
28
|
export declare function observeFlowDeskAgentTaskOutputV1(response: unknown): FlowDeskAgentTaskOutputObservationV1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-task-output.d.ts","sourceRoot":"","sources":["../src/agent-task-output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mCAAmC,GAAG,OAAO,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,6BAA6B,GACtC,cAAc,GACd,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,OAAO,CAAC;AAEX,MAAM,WAAW,oCAAoC;IACpD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,6BAA6B,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-task-output.d.ts","sourceRoot":"","sources":["../src/agent-task-output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mCAAmC,GAAG,OAAO,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,6BAA6B,GACtC,cAAc,GACd,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,OAAO,CAAC;AAEX,MAAM,WAAW,oCAAoC;IACpD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,6BAA6B,CAAC;IAC1C,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,uBAAuB,EAAE,OAAO,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA6BvF;AAUD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAmBvE;AA+CD,wBAAgB,qCAAqC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,6BAA6B,CAqB7G;AAED,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,OAAO,GAAG,oCAAoC,CA4FxG"}
|
|
@@ -1,3 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADVISORY heuristic for the coordinator: does this text look like a refusal or
|
|
3
|
+
* a bare error message rather than a substantive answer? Capture never gates on
|
|
4
|
+
* this; the main coordinator uses it to decide whether to re-select and retry.
|
|
5
|
+
*/
|
|
6
|
+
export function flowDeskTextLooksLikeRefusalOrErrorV1(text) {
|
|
7
|
+
const normalized = text?.trim().toLowerCase() ?? "";
|
|
8
|
+
if (normalized.length === 0)
|
|
9
|
+
return false;
|
|
10
|
+
const patterns = [
|
|
11
|
+
"i cannot",
|
|
12
|
+
"i can't",
|
|
13
|
+
"i can not",
|
|
14
|
+
"i'm unable",
|
|
15
|
+
"i am unable",
|
|
16
|
+
"i'm sorry, but i can",
|
|
17
|
+
"i am sorry, but i can",
|
|
18
|
+
"i won't be able",
|
|
19
|
+
"i will not be able",
|
|
20
|
+
"as an ai",
|
|
21
|
+
"i'm not able to",
|
|
22
|
+
"i am not able to",
|
|
23
|
+
"error:",
|
|
24
|
+
"exception:",
|
|
25
|
+
"traceback (most recent call last)",
|
|
26
|
+
"rate limit",
|
|
27
|
+
"rate-limited",
|
|
28
|
+
"request failed",
|
|
29
|
+
"failed to",
|
|
30
|
+
"unable to complete",
|
|
31
|
+
];
|
|
32
|
+
// Only treat as refusal/error when the text is short-ish and dominated by the
|
|
33
|
+
// pattern, to avoid false positives on long answers that merely mention them.
|
|
34
|
+
const head = normalized.slice(0, 240);
|
|
35
|
+
return patterns.some(pattern => head.includes(pattern));
|
|
36
|
+
}
|
|
1
37
|
function isRecord(value) {
|
|
2
38
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3
39
|
}
|
|
@@ -12,7 +48,22 @@ export function flowDeskAgentTaskMessageItems(value) {
|
|
|
12
48
|
return [];
|
|
13
49
|
if (Array.isArray(data.items))
|
|
14
50
|
return data.items;
|
|
15
|
-
|
|
51
|
+
if (Array.isArray(data.messages))
|
|
52
|
+
return data.messages;
|
|
53
|
+
// Gemini candidates wrapper: { candidates: [{ content: { role, parts }, finishReason }] }
|
|
54
|
+
if (Array.isArray(data.candidates)) {
|
|
55
|
+
const msgs = [];
|
|
56
|
+
for (const candidate of data.candidates) {
|
|
57
|
+
if (!isRecord(candidate))
|
|
58
|
+
continue;
|
|
59
|
+
const content = isRecord(candidate.content) ? candidate.content : candidate;
|
|
60
|
+
const finishReason = typeof candidate.finishReason === "string" ? candidate.finishReason
|
|
61
|
+
: typeof candidate.finish_reason === "string" ? candidate.finish_reason : undefined;
|
|
62
|
+
msgs.push({ ...content, _finishReason: finishReason });
|
|
63
|
+
}
|
|
64
|
+
return msgs;
|
|
65
|
+
}
|
|
66
|
+
return [];
|
|
16
67
|
}
|
|
17
68
|
function partText(part) {
|
|
18
69
|
if (typeof part.text === "string")
|
|
@@ -25,6 +76,24 @@ function isTerminalPart(part) {
|
|
|
25
76
|
return ((type === "step-finish" || type === "step_finish" || type === "finish") &&
|
|
26
77
|
(reason === "stop" || reason === "complete" || reason === "completed"));
|
|
27
78
|
}
|
|
79
|
+
/** Check message-level terminal signals (OpenAI finish_reason, Gemini finishReason). */
|
|
80
|
+
function isTerminalMessage(msg) {
|
|
81
|
+
// OpenAI: finish_reason at message or choice level
|
|
82
|
+
const fr = typeof msg.finish_reason === "string" ? msg.finish_reason
|
|
83
|
+
: typeof msg.finishReason === "string" ? msg.finishReason
|
|
84
|
+
: typeof msg._finishReason === "string" ? msg._finishReason : undefined;
|
|
85
|
+
if (fr !== undefined) {
|
|
86
|
+
const normalized = fr.toLowerCase();
|
|
87
|
+
if (normalized === "stop" || normalized === "end_turn" || normalized === "complete" || normalized === "completed") {
|
|
88
|
+
return { terminal: true, reason: fr };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// OpenAI status field
|
|
92
|
+
if (msg.status === "completed" || msg.status === "complete") {
|
|
93
|
+
return { terminal: true, reason: String(msg.status) };
|
|
94
|
+
}
|
|
95
|
+
return { terminal: false, reason: undefined };
|
|
96
|
+
}
|
|
28
97
|
function terminalReason(part) {
|
|
29
98
|
return typeof part.reason === "string" ? part.reason : undefined;
|
|
30
99
|
}
|
|
@@ -73,11 +142,43 @@ export function observeFlowDeskAgentTaskOutputV1(response) {
|
|
|
73
142
|
const msgRec = isRecord(msg) ? msg : undefined;
|
|
74
143
|
const info = isRecord(msgRec?.info) ? msgRec.info : msgRec;
|
|
75
144
|
const role = info?.role;
|
|
76
|
-
|
|
145
|
+
// Accept "assistant" and "model" (Gemini uses "model" for assistant role)
|
|
146
|
+
const isAssistantRole = role === "assistant" || role === "model";
|
|
147
|
+
// Check message-level terminal signals (OpenAI/Gemini)
|
|
148
|
+
if (msgRec !== undefined) {
|
|
149
|
+
const msgTerminal = isTerminalMessage(msgRec);
|
|
150
|
+
if (!msgTerminal.terminal && info !== undefined && info !== msgRec) {
|
|
151
|
+
const infoTerminal = isTerminalMessage(info);
|
|
152
|
+
if (infoTerminal.terminal) {
|
|
153
|
+
terminalObserved = true;
|
|
154
|
+
observedTerminalReason = infoTerminal.reason;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (msgTerminal.terminal) {
|
|
158
|
+
terminalObserved = true;
|
|
159
|
+
observedTerminalReason = msgTerminal.reason;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Collect parts from msg.parts, msg.info.parts, or msg.content (when content is array of parts)
|
|
163
|
+
let parts = Array.isArray(msgRec?.parts)
|
|
77
164
|
? msgRec.parts
|
|
78
165
|
: Array.isArray(info?.parts)
|
|
79
166
|
? info.parts
|
|
80
167
|
: [];
|
|
168
|
+
// OpenAI multi-part content: content is array of part objects
|
|
169
|
+
if (parts.length === 0 && msgRec !== undefined && Array.isArray(msgRec.content)) {
|
|
170
|
+
parts = msgRec.content;
|
|
171
|
+
}
|
|
172
|
+
// Message-level content string (OpenAI Chat Completions: { role: "assistant", content: "..." })
|
|
173
|
+
if (parts.length === 0 && isAssistantRole && msgRec !== undefined && typeof msgRec.content === "string" && msgRec.content.trim().length > 0) {
|
|
174
|
+
latestText = msgRec.content;
|
|
175
|
+
textPartCount++;
|
|
176
|
+
}
|
|
177
|
+
// Also check info-level content string
|
|
178
|
+
if (parts.length === 0 && isAssistantRole && info !== undefined && info !== msgRec && typeof info.content === "string" && info.content.trim().length > 0) {
|
|
179
|
+
latestText = info.content;
|
|
180
|
+
textPartCount++;
|
|
181
|
+
}
|
|
81
182
|
for (const rawPart of parts) {
|
|
82
183
|
const part = isRecord(rawPart) ? rawPart : undefined;
|
|
83
184
|
if (part === undefined)
|
|
@@ -92,9 +193,10 @@ export function observeFlowDeskAgentTaskOutputV1(response) {
|
|
|
92
193
|
reasoningPartCount++;
|
|
93
194
|
continue;
|
|
94
195
|
}
|
|
95
|
-
if (
|
|
196
|
+
if (!isAssistantRole)
|
|
96
197
|
continue;
|
|
97
|
-
|
|
198
|
+
// Accept text, output_text (OpenAI Responses API), or undefined type
|
|
199
|
+
if (part.type !== undefined && part.type !== "text" && part.type !== "output_text")
|
|
98
200
|
continue;
|
|
99
201
|
const text = partText(part);
|
|
100
202
|
if (typeof text === "string" && text.trim().length > 0) {
|
|
@@ -113,7 +215,11 @@ export function observeFlowDeskAgentTaskOutputV1(response) {
|
|
|
113
215
|
reasoningPartCount,
|
|
114
216
|
messageCount: items.length,
|
|
115
217
|
outputKind,
|
|
218
|
+
// Capture-side usability = "there is some text to keep". This is advisory
|
|
219
|
+
// transport metadata, NOT a substance/quality judgement (that is the
|
|
220
|
+
// coordinator's job). Only genuinely empty/tool-only captures are unusable.
|
|
116
221
|
usableForSynthesis: outputKind !== "empty" && outputKind !== "tool_trace_only",
|
|
222
|
+
looksLikeRefusalOrError: flowDeskTextLooksLikeRefusalOrErrorV1(latestText),
|
|
117
223
|
};
|
|
118
224
|
}
|
|
119
225
|
//# sourceMappingURL=agent-task-output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-task-output.js","sourceRoot":"","sources":["../src/agent-task-output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-task-output.js","sourceRoot":"","sources":["../src/agent-task-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { type FlowDeskManagedDispatchBetaOpenCodeClientV1 } from "./managed-dispatch-adapter.js";
|
|
2
|
+
export interface FlowDeskAgentTaskFallbackBindingV1 {
|
|
3
|
+
agentRef: string;
|
|
4
|
+
providerQualifiedModelId: string;
|
|
5
|
+
}
|
|
2
6
|
export interface FlowDeskAgentTaskInputV1 {
|
|
3
7
|
workflowId: string;
|
|
4
8
|
taskId: string;
|
|
@@ -17,12 +21,19 @@ export interface FlowDeskAgentTaskInputV1 {
|
|
|
17
21
|
* The coordinator polls flowdesk_status_live to detect terminal state.
|
|
18
22
|
*/
|
|
19
23
|
asyncMode?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* When provided and the primary attempt fails with no_response,
|
|
26
|
+
* automatically retry once with this fallback agent/model binding.
|
|
27
|
+
*/
|
|
28
|
+
fallbackBinding?: FlowDeskAgentTaskFallbackBindingV1;
|
|
20
29
|
/** Override quiet period before nudge — for testing only */
|
|
21
30
|
_nudgeQuietPeriodMs?: number;
|
|
22
31
|
/** Override messages poll timeout — for testing only (default 3000ms in prod) */
|
|
23
32
|
_messagesTimeoutMs?: number;
|
|
24
|
-
/** Override launch timeout — for testing only (default
|
|
33
|
+
/** Override launch timeout — for testing only (default 30000ms in prod) */
|
|
25
34
|
_launchTimeoutMs?: number;
|
|
35
|
+
/** Internal: true when this is already a fallback retry (prevents infinite retry) */
|
|
36
|
+
_isFallbackRetry?: boolean;
|
|
26
37
|
}
|
|
27
38
|
export type FlowDeskAgentTaskResultV1 = {
|
|
28
39
|
status: "task_completed";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-task-runner.d.ts","sourceRoot":"","sources":["../src/agent-task-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-task-runner.d.ts","sourceRoot":"","sources":["../src/agent-task-runner.ts"],"names":[],"mappings":"AAcA,OAAO,EACN,KAAK,2CAA2C,EAGhD,MAAM,+BAA+B,CAAC;AASvC,MAAM,WAAW,kCAAkC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,2CAA2C,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,kCAAkC,CAAC;IACrD,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,yBAAyB,GAClC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9F,+DAA+D;AAC/D,eAAO,MAAM,uCAAuC,EAAG,sCAA+C,CAAC;AAsBvG,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAMrH;AA+bD,wBAAsB,0BAA0B,CAC/C,KAAK,EAAE,wBAAwB,GAC7B,OAAO,CAAC,yBAAyB,CAAC,CAmjBpC"}
|