@cargo-ai/cli 1.0.92 → 1.0.95

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 (130) hide show
  1. package/README.md +17 -17
  2. package/build/commands/ai/chat.d.ts.map +1 -1
  3. package/build/commands/ai/chat.js +2 -1
  4. package/build/commands/ai/message.d.ts.map +1 -1
  5. package/build/commands/ai/message.js +2 -1
  6. package/build/commands/ai/release.d.ts.map +1 -1
  7. package/build/commands/ai/release.js +7 -6
  8. package/build/commands/ask/harness/approvals.d.ts +7 -0
  9. package/build/commands/ask/harness/approvals.d.ts.map +1 -0
  10. package/build/commands/ask/harness/approvals.js +82 -0
  11. package/build/commands/ask/harness/artifacts.d.ts.map +1 -0
  12. package/build/commands/ask/harness/claudeConfig.d.ts.map +1 -0
  13. package/build/commands/ask/harness/create.d.ts +59 -0
  14. package/build/commands/ask/harness/create.d.ts.map +1 -0
  15. package/build/commands/ask/harness/create.js +292 -0
  16. package/build/commands/ask/harness/index.d.ts +8 -0
  17. package/build/commands/ask/harness/index.d.ts.map +1 -0
  18. package/build/commands/ask/harness/index.js +7 -0
  19. package/build/commands/ask/harness/ingest.d.ts +25 -0
  20. package/build/commands/ask/harness/ingest.d.ts.map +1 -0
  21. package/build/commands/ask/harness/ingest.js +35 -0
  22. package/build/commands/ask/harness/instructions.d.ts +13 -0
  23. package/build/commands/ask/harness/instructions.d.ts.map +1 -0
  24. package/build/commands/ask/harness/instructions.js +41 -0
  25. package/build/commands/ask/harness/layout.d.ts +23 -0
  26. package/build/commands/ask/harness/layout.d.ts.map +1 -0
  27. package/build/commands/ask/harness/layout.js +32 -0
  28. package/build/commands/ask/harness/mcp.d.ts +25 -0
  29. package/build/commands/ask/harness/mcp.d.ts.map +1 -0
  30. package/build/commands/ask/harness/mcp.js +72 -0
  31. package/build/commands/ask/harness/pnpmShim.d.ts.map +1 -0
  32. package/build/commands/ask/harness/release.d.ts +18 -0
  33. package/build/commands/ask/harness/release.d.ts.map +1 -0
  34. package/build/commands/ask/harness/release.js +117 -0
  35. package/build/commands/ask/harness/sandbox.d.ts +9 -0
  36. package/build/commands/ask/harness/sandbox.d.ts.map +1 -0
  37. package/build/commands/ask/harness/sandbox.js +27 -0
  38. package/build/commands/ask/harness/timing.d.ts +16 -0
  39. package/build/commands/ask/harness/timing.d.ts.map +1 -0
  40. package/build/commands/ask/harness/timing.js +72 -0
  41. package/build/commands/ask/harness/turn.d.ts +145 -0
  42. package/build/commands/ask/harness/turn.d.ts.map +1 -0
  43. package/build/commands/ask/harness/turn.js +626 -0
  44. package/build/commands/ask/harness/usage.d.ts +50 -0
  45. package/build/commands/ask/harness/usage.d.ts.map +1 -0
  46. package/build/commands/ask/harness/usage.js +87 -0
  47. package/build/commands/ask/index.d.ts +9 -0
  48. package/build/commands/ask/index.d.ts.map +1 -1
  49. package/build/commands/ask/index.js +7 -7
  50. package/build/commands/ask/input/completer.d.ts.map +1 -0
  51. package/build/commands/ask/input/index.d.ts +5 -0
  52. package/build/commands/ask/input/index.d.ts.map +1 -0
  53. package/build/commands/ask/input/index.js +4 -0
  54. package/build/commands/ask/input/prompt.d.ts.map +1 -0
  55. package/build/commands/ask/{prompt.js → input/prompt.js} +1 -1
  56. package/build/commands/ask/input/slash.d.ts.map +1 -0
  57. package/build/commands/ask/{slash.js → input/slash.js} +2 -2
  58. package/build/commands/ask/input/typeAhead.d.ts.map +1 -0
  59. package/build/commands/ask/{history.d.ts → persist/history.d.ts} +1 -1
  60. package/build/commands/ask/persist/history.d.ts.map +1 -0
  61. package/build/commands/ask/persist/index.d.ts +4 -0
  62. package/build/commands/ask/persist/index.d.ts.map +1 -0
  63. package/build/commands/ask/persist/index.js +3 -0
  64. package/build/commands/ask/persist/persist.d.ts.map +1 -0
  65. package/build/commands/ask/persist/state.d.ts.map +1 -0
  66. package/build/commands/ask/session/claim.d.ts +56 -0
  67. package/build/commands/ask/session/claim.d.ts.map +1 -0
  68. package/build/commands/ask/session/claim.js +76 -0
  69. package/build/commands/ask/session/index.d.ts +5 -0
  70. package/build/commands/ask/session/index.d.ts.map +1 -0
  71. package/build/commands/ask/session/index.js +4 -0
  72. package/build/commands/ask/session/run.d.ts +36 -0
  73. package/build/commands/ask/session/run.d.ts.map +1 -0
  74. package/build/commands/ask/session/run.js +832 -0
  75. package/build/commands/ask/session/thinking.d.ts.map +1 -0
  76. package/build/commands/ask/session/tree.d.ts +90 -0
  77. package/build/commands/ask/session/tree.d.ts.map +1 -0
  78. package/build/commands/ask/session/tree.js +318 -0
  79. package/build/commands/start/brief.js +1 -1
  80. package/build/commands/start/index.d.ts +1 -1
  81. package/build/commands/start/index.d.ts.map +1 -1
  82. package/build/commands/start/index.js +7 -7
  83. package/build/index.js +6 -1
  84. package/build/paletteLayout.d.ts.map +1 -1
  85. package/build/paletteLayout.js +9 -8
  86. package/build/utils/cdkState.js +2 -2
  87. package/build/utils/loadCompiledAgent.js +1 -1
  88. package/package.json +6 -5
  89. package/build/commands/ask/artifacts.d.ts.map +0 -1
  90. package/build/commands/ask/binding.d.ts +0 -13
  91. package/build/commands/ask/binding.d.ts.map +0 -1
  92. package/build/commands/ask/binding.js +0 -19
  93. package/build/commands/ask/claudeConfig.d.ts.map +0 -1
  94. package/build/commands/ask/completer.d.ts.map +0 -1
  95. package/build/commands/ask/history.d.ts.map +0 -1
  96. package/build/commands/ask/localHarness.d.ts +0 -278
  97. package/build/commands/ask/localHarness.d.ts.map +0 -1
  98. package/build/commands/ask/localHarness.js +0 -1300
  99. package/build/commands/ask/messageStream.d.ts +0 -33
  100. package/build/commands/ask/messageStream.d.ts.map +0 -1
  101. package/build/commands/ask/messageStream.js +0 -114
  102. package/build/commands/ask/persist.d.ts.map +0 -1
  103. package/build/commands/ask/pnpmShim.d.ts.map +0 -1
  104. package/build/commands/ask/prompt.d.ts.map +0 -1
  105. package/build/commands/ask/session.d.ts +0 -101
  106. package/build/commands/ask/session.d.ts.map +0 -1
  107. package/build/commands/ask/session.js +0 -1328
  108. package/build/commands/ask/slash.d.ts.map +0 -1
  109. package/build/commands/ask/state.d.ts.map +0 -1
  110. package/build/commands/ask/thinking.d.ts.map +0 -1
  111. package/build/commands/ask/typeAhead.d.ts.map +0 -1
  112. /package/build/commands/ask/{artifacts.d.ts → harness/artifacts.d.ts} +0 -0
  113. /package/build/commands/ask/{artifacts.js → harness/artifacts.js} +0 -0
  114. /package/build/commands/ask/{claudeConfig.d.ts → harness/claudeConfig.d.ts} +0 -0
  115. /package/build/commands/ask/{claudeConfig.js → harness/claudeConfig.js} +0 -0
  116. /package/build/commands/ask/{pnpmShim.d.ts → harness/pnpmShim.d.ts} +0 -0
  117. /package/build/commands/ask/{pnpmShim.js → harness/pnpmShim.js} +0 -0
  118. /package/build/commands/ask/{completer.d.ts → input/completer.d.ts} +0 -0
  119. /package/build/commands/ask/{completer.js → input/completer.js} +0 -0
  120. /package/build/commands/ask/{prompt.d.ts → input/prompt.d.ts} +0 -0
  121. /package/build/commands/ask/{slash.d.ts → input/slash.d.ts} +0 -0
  122. /package/build/commands/ask/{typeAhead.d.ts → input/typeAhead.d.ts} +0 -0
  123. /package/build/commands/ask/{typeAhead.js → input/typeAhead.js} +0 -0
  124. /package/build/commands/ask/{history.js → persist/history.js} +0 -0
  125. /package/build/commands/ask/{persist.d.ts → persist/persist.d.ts} +0 -0
  126. /package/build/commands/ask/{persist.js → persist/persist.js} +0 -0
  127. /package/build/commands/ask/{state.d.ts → persist/state.d.ts} +0 -0
  128. /package/build/commands/ask/{state.js → persist/state.js} +0 -0
  129. /package/build/commands/ask/{thinking.d.ts → session/thinking.d.ts} +0 -0
  130. /package/build/commands/ask/{thinking.js → session/thinking.js} +0 -0
@@ -1,33 +0,0 @@
1
- export type StreamMessageInput = {
2
- baseUrl: string;
3
- getAccessToken: (forceRefresh?: boolean) => Promise<string | undefined>;
4
- workspaceUuid: string | undefined;
5
- chatUuid: string;
6
- messageUuid: string;
7
- parts: {
8
- type: "text";
9
- text: string;
10
- }[];
11
- agentUuid?: string;
12
- /**
13
- * Fired with the assistant message's uuid as soon as the server announces
14
- * it, so a caller that stops reading can still cancel the message.
15
- */
16
- onAssistantMessageUuid?: (messageUuid: string) => void;
17
- /**
18
- * Stops reading the stream. The message keeps running server-side, so a
19
- * caller that aborts should also cancel it by uuid — otherwise the next
20
- * question in that chat is refused with `lastMessageNotFinished`.
21
- */
22
- abortSignal?: AbortSignal;
23
- };
24
- /**
25
- * POST /v1/ai/messages/stream and yield assistant text deltas.
26
- *
27
- * The typed API client always buffers JSON, so Ask talks to the SSE endpoint
28
- * directly — same contract as the web app's DefaultChatTransport.
29
- */
30
- export declare function streamMessageTextDeltas(input: StreamMessageInput): AsyncGenerator<string>;
31
- /** Exported for tests — turns an error JSON body into a short message. */
32
- export declare function describeStreamFailure(status: number, body: string): string;
33
- //# sourceMappingURL=messageStream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageStream.d.ts","sourceRoot":"","sources":["../../../src/commands/ask/messageStream.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,wBAAuB,uBAAuB,CAC5C,KAAK,EAAE,kBAAkB,GACxB,cAAc,CAAC,MAAM,CAAC,CA8FxB;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAoC1E"}
@@ -1,114 +0,0 @@
1
- import { parseJsonEventStream, uiMessageChunkSchema } from "ai";
2
- import { getProxyFetch } from "../../proxy.js";
3
- /**
4
- * POST /v1/ai/messages/stream and yield assistant text deltas.
5
- *
6
- * The typed API client always buffers JSON, so Ask talks to the SSE endpoint
7
- * directly — same contract as the web app's DefaultChatTransport.
8
- */
9
- export async function* streamMessageTextDeltas(input) {
10
- const token = await input.getAccessToken();
11
- if (token === undefined) {
12
- throw new Error("Not authenticated.");
13
- }
14
- const url = `${input.baseUrl.replace(/\/$/, "")}/v1/ai/messages/stream`;
15
- const proxyFetch = getProxyFetch(url);
16
- const fetchFn = proxyFetch !== undefined ? proxyFetch : globalThis.fetch;
17
- const headers = {
18
- Authorization: `Bearer ${token}`,
19
- "Content-Type": "application/json",
20
- Accept: "text/event-stream",
21
- "x-cargo-origin": "cli",
22
- };
23
- if (input.workspaceUuid !== undefined) {
24
- headers["selected-workspace-uuid"] = input.workspaceUuid;
25
- }
26
- const body = {
27
- chatUuid: input.chatUuid,
28
- chatTrigger: { type: "cli" },
29
- uuid: input.messageUuid,
30
- parts: input.parts,
31
- };
32
- if (input.agentUuid !== undefined) {
33
- body["agentUuid"] = input.agentUuid;
34
- }
35
- const response = await fetchFn(url, {
36
- method: "POST",
37
- headers,
38
- body: JSON.stringify(body),
39
- signal: input.abortSignal,
40
- });
41
- if (response.ok === false) {
42
- const text = await response.text();
43
- throw new Error(describeStreamFailure(response.status, text));
44
- }
45
- if (response.body === null) {
46
- throw new Error("Message stream returned no body.");
47
- }
48
- const parsed = parseJsonEventStream({
49
- stream: response.body,
50
- schema: uiMessageChunkSchema,
51
- });
52
- const reader = parsed.getReader();
53
- try {
54
- for (;;) {
55
- const { done, value } = await reader.read();
56
- if (done === true) {
57
- break;
58
- }
59
- if (value.success === false) {
60
- continue;
61
- }
62
- const chunk = value.value;
63
- if (chunk.type === "start" && typeof chunk.messageId === "string") {
64
- if (input.onAssistantMessageUuid !== undefined) {
65
- input.onAssistantMessageUuid(chunk.messageId);
66
- }
67
- continue;
68
- }
69
- if (chunk.type === "text-delta" && typeof chunk.delta === "string") {
70
- yield chunk.delta;
71
- continue;
72
- }
73
- if (chunk.type === "error") {
74
- const message = typeof chunk.errorText === "string"
75
- ? chunk.errorText
76
- : "Message stream failed.";
77
- throw new Error(message);
78
- }
79
- }
80
- }
81
- finally {
82
- reader.releaseLock();
83
- }
84
- }
85
- /** Exported for tests — turns an error JSON body into a short message. */
86
- export function describeStreamFailure(status, body) {
87
- try {
88
- const parsed = JSON.parse(body);
89
- if (typeof parsed === "object" &&
90
- parsed !== null &&
91
- "error" in parsed &&
92
- typeof parsed.error === "object" &&
93
- parsed.error !== null) {
94
- const error = parsed.error;
95
- const description = typeof error["description"] === "string"
96
- ? error["description"]
97
- : undefined;
98
- const code = typeof error["code"] === "string" ? error["code"] : undefined;
99
- if (description !== undefined) {
100
- return description;
101
- }
102
- if (code !== undefined) {
103
- return `Message stream failed (${String(status)}): ${code}`;
104
- }
105
- }
106
- }
107
- catch {
108
- // Fall through to the raw body.
109
- }
110
- if (body.length > 0) {
111
- return `Message stream failed (${String(status)}): ${body}`;
112
- }
113
- return `Message stream failed (${String(status)}).`;
114
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../../src/commands/ask/persist.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,YAAY,IAAI,QAAQ,GAAG,SAAS,CAYnD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAUrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pnpmShim.d.ts","sourceRoot":"","sources":["../../../src/commands/ask/pnpmShim.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C,8EAA8E;AAC9E,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAchD;AAED,mDAAmD;AACnD,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/commands/ask/prompt.ts"],"names":[],"mappings":";AAiBA;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AASD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,CAAC,cAAc,EAC5B,GAAG,EAAE,MAAM;AACX;;;;GAIG;AACH,WAAW,SAAK,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiQ7B"}
@@ -1,101 +0,0 @@
1
- import type { Ai } from "@cargo-ai/api";
2
- import type { Api } from "../../api.js";
3
- export type AskSessionOptions = {
4
- api: Api;
5
- message?: string;
6
- continueChat: boolean;
7
- agentUuid?: string;
8
- chatUuid?: string;
9
- dir: string;
10
- };
11
- type SessionMode = {
12
- kind: "remote";
13
- } | {
14
- kind: "local";
15
- };
16
- /**
17
- * When the proxy token baked into the running harness stops being safe to
18
- * reuse.
19
- *
20
- * The server re-arms the token on every proxy call, so the clock runs from
21
- * the last turn that reached Anthropic rather than from when it was minted.
22
- * Anchoring it to mint time instead would tear down a conversation that is
23
- * still going — a cold start, a replayed history preamble and the loss of
24
- * Claude Code's in-session memory, for a token that had not expired.
25
- *
26
- * Exported for tests.
27
- */
28
- export declare function proxyTokenDeadlineMs(input: {
29
- mintedAtMs: number;
30
- lastUsedAtMs: number | undefined;
31
- ttlMs: number;
32
- }): number;
33
- /**
34
- * No agent → local Claude Code on the host. Any agent streams remotely, like
35
- * the webapp chat: what it runs — a tool loop or a harness against its bound
36
- * repo — follows from its deployed release, which the API resolves itself.
37
- *
38
- * Exported for tests.
39
- */
40
- export declare function modeForAgent(agent: Ai.Agent | undefined): SessionMode;
41
- /**
42
- * True when the chat is already on the server. A saved `--continue` uuid can
43
- * point at nothing (Esc before the first turn, wiped local DB, different API),
44
- * and that must become a create — not chatNotFound on the first message.
45
- *
46
- * Careful with the false case: it means "not readable", which covers a chat
47
- * that was deleted as well as one that never existed. Deletion is soft, so
48
- * the row keeps the uuid and creating it again fails on the primary key —
49
- * see where `--continue` resolves its uuid.
50
- */
51
- /**
52
- * The result of trying to take the chat for one local turn. `busy` is an
53
- * answer rather than a failure — another session is mid-turn — so it does not
54
- * end the session the way a transport error does.
55
- */
56
- type ChatTurnClaim = {
57
- outcome: "claimed";
58
- } | {
59
- outcome: "busy";
60
- } | {
61
- outcome: "unavailable";
62
- error: unknown;
63
- };
64
- /**
65
- * Take the chat for one local turn.
66
- *
67
- * Exported for tests.
68
- */
69
- export declare function claimChatTurn(api: Api, chatUuid: string, ownerId: string): Promise<ChatTurnClaim>;
70
- export declare function doesChatExist(api: Api, chatUuid: string): Promise<boolean>;
71
- /**
72
- * Greedy wrap on spaces. A word longer than the width keeps its own line
73
- * rather than being cut mid-token.
74
- *
75
- * Exported for tests.
76
- */
77
- export declare function wrapLine(text: string, width: number): string[];
78
- /**
79
- * A path inside the session directory reads better relative to it; anything
80
- * outside stays absolute so it is obvious the turn left the project.
81
- *
82
- * Exported for tests.
83
- */
84
- export declare function displayPath(path: string, dir: string): string;
85
- /**
86
- * Same tree grammar as the palette:
87
- * ◇ <your message>
88
- * ■ reply…
89
- * ◆
90
- * Empty Enter or /exit leaves to the parent palette.
91
- */
92
- export declare function runAskSession(options: AskSessionOptions): Promise<"palette" | "exit">;
93
- export declare function runAskPrint(input: {
94
- api: Api;
95
- message: string;
96
- agentUuid?: string;
97
- chatUuid?: string;
98
- dir: string;
99
- }): Promise<void>;
100
- export {};
101
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/commands/ask/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAmCxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAkC1D;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAKT;AAiBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,GAAG,WAAW,CAErE;AA8ED;;;;;;;;;GASG;AACH;;;;GAIG;AACH,KAAK,aAAa,GACd;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACnB;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/C;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAyCD,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAeD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAe9D;AAicD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ7D;AA2ID;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAoqB7B;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE;IACvC,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CA8HhB"}