@koda-sl/baker-cli 0.561.0 → 0.562.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -4801,7 +4801,7 @@ baker feedback report --kind feature --title "winning-ads cannot read one countr
|
|
|
4801
4801
|
```
|
|
4802
4802
|
|
|
4803
4803
|
- `--kind` is `bug` or `feature`; `--title` is one sentence (10+ characters), `--body` what was run, what came back and what was expected (20+); `--user-asked` when the user asked for it. Run it from a chat; a chat makes at most 10.
|
|
4804
|
-
- Answers
|
|
4804
|
+
- Answers as soon as the report is saved, with its `id` and `status` (usually `sending`); it reaches the tracker on its own, retried if needed, so the command never waits for it.
|
|
4805
4805
|
- The hints say what comes next: one plain line to the user that the Baker team was told, then carry on with what can still be done.
|
|
4806
4806
|
|
|
4807
4807
|
---
|
package/dist/cli.js
CHANGED
|
@@ -553,7 +553,7 @@ Introspection: Run 'baker schema <command>' to inspect argument schemas.`
|
|
|
553
553
|
"lead-routes": () => import("./lead-routes-ZMKRNL57.js").then((m) => m.leadRoutesCommand),
|
|
554
554
|
mcp: () => import("./mcp-QSDCAWMU.js").then((m) => m.mcpCommand),
|
|
555
555
|
"setup-links": () => import("./setup-links-CK7LBYJK.js").then((m) => m.setupLinksCommand),
|
|
556
|
-
feedback: () => import("./feedback-
|
|
556
|
+
feedback: () => import("./feedback-ECAZWGJP.js").then((m) => m.feedbackCommand),
|
|
557
557
|
organization: () => import("./organization-6T4Q6XYI.js").then((m) => m.organizationCommand),
|
|
558
558
|
schema: () => import("./schema-L4PETLZT.js").then((m) => m.schemaCommand)
|
|
559
559
|
}
|
|
@@ -14,7 +14,6 @@ import "./chunk-G4FG5EQO.js";
|
|
|
14
14
|
import "./chunk-R7XDGNZD.js";
|
|
15
15
|
import "./chunk-MSMTG6OC.js";
|
|
16
16
|
import {
|
|
17
|
-
apiGet,
|
|
18
17
|
apiPost
|
|
19
18
|
} from "./chunk-QEREDRZO.js";
|
|
20
19
|
import "./chunk-JXTNP3B5.js";
|
|
@@ -53,11 +52,11 @@ var ARGS = {
|
|
|
53
52
|
};
|
|
54
53
|
registerSchema({
|
|
55
54
|
command: "feedback.report",
|
|
56
|
-
description: `Start here when Baker itself is in the way: a command, check, hook, skill or doc that is broken, or a capability the work needs that Baker does not have. Example: baker feedback report --kind bug --title "verify fails on an archived test version" --body "\u2026" (add --user-asked when the user asked you to).
|
|
55
|
+
description: `Start here when Baker itself is in the way: a command, check, hook, skill or doc that is broken, or a capability the work needs that Baker does not have. Example: baker feedback report --kind bug --title "verify fails on an archived test version" --body "\u2026" (add --user-asked when the user asked you to). Answers as soon as it is saved; it reaches the Baker team on its own, with the client's details taken out. Never a Task, never a message for the user to pass on. Then say one plain line to the user and keep going with what you can still do.`,
|
|
57
56
|
args: ARGS
|
|
58
57
|
});
|
|
59
58
|
var REPORT_HINTS = [
|
|
60
|
-
"The Baker team has it
|
|
59
|
+
"The Baker team has it: once saved, the report reaches their tracker on its own, so a status of sending is the normal answer and there is nothing more to do or to tell the user about delivery. Tell the user in one plain line that you let the Baker team know \u2014 no ids, commands or file names \u2014 and never ask them to pass it on.",
|
|
61
60
|
"Then keep going: work around it with what this workspace still lets you change (the pages, Forms, Knowledge and Brand you own, a staged change instead of a blocked one), finish the rest of the job, and say plainly what is left undone. One broken piece should not stop the whole task.",
|
|
62
61
|
"It is not a Task: don't also file one for it."
|
|
63
62
|
];
|
|
@@ -79,20 +78,6 @@ function reportBody(args) {
|
|
|
79
78
|
}
|
|
80
79
|
return { ok: true, body: parsed.data };
|
|
81
80
|
}
|
|
82
|
-
var ISSUE_WAIT_MS = 2e4;
|
|
83
|
-
var ISSUE_POLL_MS = 2e3;
|
|
84
|
-
async function waitForIssue(sent, read, sleep, budgetMs = ISSUE_WAIT_MS) {
|
|
85
|
-
let state = sent;
|
|
86
|
-
for (let waited = 0; state.status === "sending" && waited < budgetMs; waited += ISSUE_POLL_MS) {
|
|
87
|
-
await sleep(ISSUE_POLL_MS);
|
|
88
|
-
try {
|
|
89
|
-
state = await read();
|
|
90
|
-
} catch {
|
|
91
|
-
return state;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return state;
|
|
95
|
-
}
|
|
96
81
|
var reportCommand = defineCommand({
|
|
97
82
|
meta: {
|
|
98
83
|
name: "report",
|
|
@@ -107,12 +92,7 @@ Start here: baker feedback report --kind bug --title "<what is wrong, one senten
|
|
|
107
92
|
}
|
|
108
93
|
try {
|
|
109
94
|
const response = await apiPost("/api/feedback/report", parsed.body);
|
|
110
|
-
|
|
111
|
-
response.data,
|
|
112
|
-
async () => (await apiGet("/api/feedback/report", { id: response.data.id })).data,
|
|
113
|
-
(ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
114
|
-
);
|
|
115
|
-
writeJson({ ok: true, data, hints: REPORT_HINTS });
|
|
95
|
+
writeJson({ ok: true, data: response.data, hints: REPORT_HINTS });
|
|
116
96
|
} catch (err) {
|
|
117
97
|
failApi(err);
|
|
118
98
|
}
|
|
@@ -127,10 +107,8 @@ Full guide: ${DOC}`
|
|
|
127
107
|
subCommands: { report: reportCommand }
|
|
128
108
|
});
|
|
129
109
|
export {
|
|
130
|
-
ISSUE_WAIT_MS,
|
|
131
110
|
REPORT_HINTS,
|
|
132
111
|
feedbackCommand,
|
|
133
|
-
reportBody
|
|
134
|
-
waitForIssue
|
|
112
|
+
reportBody
|
|
135
113
|
};
|
|
136
|
-
//# sourceMappingURL=feedback-
|
|
114
|
+
//# sourceMappingURL=feedback-ECAZWGJP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/feedback/index.ts"],"sourcesContent":["import {\n type FeedbackReportRequest,\n type FeedbackReportResponse,\n feedbackReportRequestSchema,\n PLATFORM_REPORT_KINDS,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"../actions/shared.ts\";\n\nconst DOC = \"__tooling__/docs/tools/baker/feedback.md\";\n\nconst ARGS = {\n kind: {\n type: \"string\",\n description:\n \"bug — something in Baker is broken (a command, check, hook, skill or doc does the wrong thing). feature — Baker has no way to do what the work needs.\",\n required: true,\n },\n title: {\n type: \"string\",\n description:\n \"One sentence, what is wrong or missing, in Baker's terms: \\\"baker winning-ads has no way to read one country's ads\\\".\",\n required: true,\n },\n body: {\n type: \"string\",\n description:\n \"What you ran, what came back (the exact message), what you expected, and what you ruled out. Describe the problem, not the client: no names, emails or figures from their accounts.\",\n required: true,\n },\n \"user-asked\": {\n type: \"boolean\",\n description:\n \"Set when the user asked you to tell the Baker team. Leave it off when you are reporting on your own; the team reads which it was.\",\n required: false,\n default: false,\n },\n} as const;\n\nregisterSchema({\n command: \"feedback.report\",\n description:\n 'Start here when Baker itself is in the way: a command, check, hook, skill or doc that is broken, or a capability the work needs that Baker does not have. Example: baker feedback report --kind bug --title \"verify fails on an archived test version\" --body \"…\" (add --user-asked when the user asked you to). Answers as soon as it is saved; it reaches the Baker team on its own, with the client\\'s details taken out. Never a Task, never a message for the user to pass on. Then say one plain line to the user and keep going with what you can still do.',\n args: ARGS,\n});\n\n/**\n * What to do once the report is saved. Hints rather than prose in a doc,\n * because the moment that matters is right after the call: the agent has just\n * hit a wall, and the two things it reaches for — stopping, or asking the\n * marketer to carry the report — are both wrong.\n */\nexport const REPORT_HINTS = [\n \"The Baker team has it: once saved, the report reaches their tracker on its own, so a status of sending is the normal answer and there is nothing more to do or to tell the user about delivery. Tell the user in one plain line that you let the Baker team know — no ids, commands or file names — and never ask them to pass it on.\",\n \"Then keep going: work around it with what this workspace still lets you change (the pages, Forms, Knowledge and Brand you own, a staged change instead of a blocked one), finish the rest of the job, and say plainly what is left undone. One broken piece should not stop the whole task.\",\n \"It is not a Task: don't also file one for it.\",\n];\n\ntype ReportArgs = { kind?: string; title?: string; body?: string; \"user-asked\"?: boolean };\n\n/** The request one `report` line asks for, or why it cannot be sent. */\nexport function reportBody(args: ReportArgs): { ok: true; body: FeedbackReportRequest } | { ok: false; error: string } {\n if (!(PLATFORM_REPORT_KINDS as readonly string[]).includes(args.kind ?? \"\")) {\n return { ok: false, error: `--kind is ${PLATFORM_REPORT_KINDS.join(\" or \")}, got \"${args.kind ?? \"\"}\".` };\n }\n const parsed = feedbackReportRequestSchema.safeParse({\n kind: args.kind,\n title: args.title,\n body: args.body,\n askedByUser: args[\"user-asked\"] === true,\n });\n if (!parsed.success) {\n return {\n ok: false,\n error:\n \"A report needs a --title of at least 10 characters (one sentence, what is wrong or missing) and a --body of at least 20 (what you ran, what came back, what you expected).\",\n };\n }\n return { ok: true, body: parsed.data };\n}\n\nconst reportCommand = defineCommand({\n meta: {\n name: \"report\",\n description: `Tell the Baker team about a defect in Baker or a capability it lacks; sent to their tracker at once.\nStart here: baker feedback report --kind bug --title \"<what is wrong, one sentence>\" --body \"<what you ran, what came back, what you expected>\"`,\n },\n args: ARGS,\n run: async ({ args }) => {\n const parsed = reportBody(args);\n if (!parsed.ok) {\n failValidation(parsed.error);\n }\n try {\n const response = await apiPost<FeedbackReportResponse>(\"/api/feedback/report\", parsed.body);\n writeJson({ ok: true, data: response.data, hints: REPORT_HINTS });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const feedbackCommand = defineCommand({\n meta: {\n name: \"feedback\",\n description: `Report a defect in Baker, or a capability it lacks, to the Baker team — never to the user, never as a Task. Subcommands: report.\nFull guide: ${DOC}`,\n },\n subCommands: { report: reportCommand },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;AAM9B,IAAM,MAAM;AAEZ,IAAM,OAAO;AAAA,EACX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AACF;AAEA,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AACR,CAAC;AAQM,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF;AAKO,SAAS,WAAW,MAA4F;AACrH,MAAI,CAAE,sBAA4C,SAAS,KAAK,QAAQ,EAAE,GAAG;AAC3E,WAAO,EAAE,IAAI,OAAO,OAAO,aAAa,sBAAsB,KAAK,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC1G;AACA,QAAM,SAAS,4BAA4B,UAAU;AAAA,IACnD,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,aAAa,KAAK,YAAY,MAAM;AAAA,EACtC,CAAC;AACD,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OACE;AAAA,IACJ;AAAA,EACF;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK;AACvC;AAEA,IAAM,gBAAgB,cAAc;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA,EAEf;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,WAAW,IAAI;AAC9B,QAAI,CAAC,OAAO,IAAI;AACd,qBAAe,OAAO,KAAK;AAAA,IAC7B;AACA,QAAI;AACF,YAAM,WAAW,MAAM,QAAgC,wBAAwB,OAAO,IAAI;AAC1F,gBAAU,EAAE,IAAI,MAAM,MAAM,SAAS,MAAM,OAAO,aAAa,CAAC;AAAA,IAClE,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,cACH,GAAG;AAAA,EACf;AAAA,EACA,aAAa,EAAE,QAAQ,cAAc;AACvC,CAAC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/feedback/index.ts"],"sourcesContent":["import {\n type FeedbackReportRequest,\n type FeedbackReportResponse,\n feedbackReportRequestSchema,\n PLATFORM_REPORT_KINDS,\n type PlatformReportState,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiGet, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"../actions/shared.ts\";\n\nconst DOC = \"__tooling__/docs/tools/baker/feedback.md\";\n\nconst ARGS = {\n kind: {\n type: \"string\",\n description:\n \"bug — something in Baker is broken (a command, check, hook, skill or doc does the wrong thing). feature — Baker has no way to do what the work needs.\",\n required: true,\n },\n title: {\n type: \"string\",\n description:\n \"One sentence, what is wrong or missing, in Baker's terms: \\\"baker winning-ads has no way to read one country's ads\\\".\",\n required: true,\n },\n body: {\n type: \"string\",\n description:\n \"What you ran, what came back (the exact message), what you expected, and what you ruled out. Describe the problem, not the client: no names, emails or figures from their accounts.\",\n required: true,\n },\n \"user-asked\": {\n type: \"boolean\",\n description:\n \"Set when the user asked you to tell the Baker team. Leave it off when you are reporting on your own; the team reads which it was.\",\n required: false,\n default: false,\n },\n} as const;\n\nregisterSchema({\n command: \"feedback.report\",\n description:\n 'Start here when Baker itself is in the way: a command, check, hook, skill or doc that is broken, or a capability the work needs that Baker does not have. Example: baker feedback report --kind bug --title \"verify fails on an archived test version\" --body \"…\" (add --user-asked when the user asked you to). Sent to the Baker team at once, with the client\\'s details taken out; the answer names the issue it is on. Never a Task, never a message for the user to pass on. Then say one plain line to the user and keep going with what you can still do.',\n args: ARGS,\n});\n\n/**\n * What to do once the report is saved. Hints rather than prose in a doc,\n * because the moment that matters is right after the call: the agent has just\n * hit a wall, and the two things it reaches for — stopping, or asking the\n * marketer to carry the report — are both wrong.\n */\nexport const REPORT_HINTS = [\n \"The Baker team has it (or will within minutes, if it is still sending — nothing more to do). Tell the user in one plain line that you let the Baker team know — no ids, commands or file names — and never ask them to pass it on.\",\n \"Then keep going: work around it with what this workspace still lets you change (the pages, Forms, Knowledge and Brand you own, a staged change instead of a blocked one), finish the rest of the job, and say plainly what is left undone. One broken piece should not stop the whole task.\",\n \"It is not a Task: don't also file one for it.\",\n];\n\ntype ReportArgs = { kind?: string; title?: string; body?: string; \"user-asked\"?: boolean };\n\n/** The request one `report` line asks for, or why it cannot be sent. */\nexport function reportBody(args: ReportArgs): { ok: true; body: FeedbackReportRequest } | { ok: false; error: string } {\n if (!(PLATFORM_REPORT_KINDS as readonly string[]).includes(args.kind ?? \"\")) {\n return { ok: false, error: `--kind is ${PLATFORM_REPORT_KINDS.join(\" or \")}, got \"${args.kind ?? \"\"}\".` };\n }\n const parsed = feedbackReportRequestSchema.safeParse({\n kind: args.kind,\n title: args.title,\n body: args.body,\n askedByUser: args[\"user-asked\"] === true,\n });\n if (!parsed.success) {\n return {\n ok: false,\n error:\n \"A report needs a --title of at least 10 characters (one sentence, what is wrong or missing) and a --body of at least 20 (what you ran, what came back, what you expected).\",\n };\n }\n return { ok: true, body: parsed.data };\n}\n\n/** How long the command waits for the tracker to answer before returning \"sending\". */\nexport const ISSUE_WAIT_MS = 20_000;\nconst ISSUE_POLL_MS = 2_000;\n\n/**\n * Wait, briefly, for the report to land on an issue. The send runs on its own\n * whatever happens here: this only lets the answer say where it landed.\n */\nexport async function waitForIssue(\n sent: PlatformReportState,\n read: () => Promise<PlatformReportState>,\n sleep: (ms: number) => Promise<void>,\n budgetMs: number = ISSUE_WAIT_MS,\n): Promise<PlatformReportState> {\n let state = sent;\n for (let waited = 0; state.status === \"sending\" && waited < budgetMs; waited += ISSUE_POLL_MS) {\n await sleep(ISSUE_POLL_MS);\n try {\n state = await read();\n } catch {\n return state;\n }\n }\n return state;\n}\n\nconst reportCommand = defineCommand({\n meta: {\n name: \"report\",\n description: `Tell the Baker team about a defect in Baker or a capability it lacks; sent to their tracker at once.\nStart here: baker feedback report --kind bug --title \"<what is wrong, one sentence>\" --body \"<what you ran, what came back, what you expected>\"`,\n },\n args: ARGS,\n run: async ({ args }) => {\n const parsed = reportBody(args);\n if (!parsed.ok) {\n failValidation(parsed.error);\n }\n try {\n const response = await apiPost<FeedbackReportResponse>(\"/api/feedback/report\", parsed.body);\n const data = await waitForIssue(\n response.data,\n async () => (await apiGet<FeedbackReportResponse>(\"/api/feedback/report\", { id: response.data.id })).data,\n (ms) => new Promise((resolve) => setTimeout(resolve, ms)),\n );\n writeJson({ ok: true, data, hints: REPORT_HINTS });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const feedbackCommand = defineCommand({\n meta: {\n name: \"feedback\",\n description: `Report a defect in Baker, or a capability it lacks, to the Baker team — never to the user, never as a Task. Subcommands: report.\nFull guide: ${DOC}`,\n },\n subCommands: { report: reportCommand },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,SAAS,qBAAqB;AAM9B,IAAM,MAAM;AAEZ,IAAM,OAAO;AAAA,EACX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AACF;AAEA,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AACR,CAAC;AAQM,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF;AAKO,SAAS,WAAW,MAA4F;AACrH,MAAI,CAAE,sBAA4C,SAAS,KAAK,QAAQ,EAAE,GAAG;AAC3E,WAAO,EAAE,IAAI,OAAO,OAAO,aAAa,sBAAsB,KAAK,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC1G;AACA,QAAM,SAAS,4BAA4B,UAAU;AAAA,IACnD,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,aAAa,KAAK,YAAY,MAAM;AAAA,EACtC,CAAC;AACD,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,OACE;AAAA,IACJ;AAAA,EACF;AACA,SAAO,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK;AACvC;AAGO,IAAM,gBAAgB;AAC7B,IAAM,gBAAgB;AAMtB,eAAsB,aACpB,MACA,MACA,OACA,WAAmB,eACW;AAC9B,MAAI,QAAQ;AACZ,WAAS,SAAS,GAAG,MAAM,WAAW,aAAa,SAAS,UAAU,UAAU,eAAe;AAC7F,UAAM,MAAM,aAAa;AACzB,QAAI;AACF,cAAQ,MAAM,KAAK;AAAA,IACrB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,gBAAgB,cAAc;AAAA,EAClC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA,EAEf;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,WAAW,IAAI;AAC9B,QAAI,CAAC,OAAO,IAAI;AACd,qBAAe,OAAO,KAAK;AAAA,IAC7B;AACA,QAAI;AACF,YAAM,WAAW,MAAM,QAAgC,wBAAwB,OAAO,IAAI;AAC1F,YAAM,OAAO,MAAM;AAAA,QACjB,SAAS;AAAA,QACT,aAAa,MAAM,OAA+B,wBAAwB,EAAE,IAAI,SAAS,KAAK,GAAG,CAAC,GAAG;AAAA,QACrG,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,MAC1D;AACA,gBAAU,EAAE,IAAI,MAAM,MAAM,OAAO,aAAa,CAAC;AAAA,IACnD,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,cACH,GAAG;AAAA,EACf;AAAA,EACA,aAAa,EAAE,QAAQ,cAAc;AACvC,CAAC;","names":[]}
|