@cntyclub/agent-react 0.8.0 → 0.9.1

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.
@@ -1,4 +1,4 @@
1
- import type { AgentConfig, AgentPublicConfig, ChatResponse, ConversationSummary } from "./types";
1
+ import type { AgentConfig, AgentPublicConfig, AgentStreamEvent, ChatResponse, ConversationSummary } from "./types";
2
2
  export declare class AgentApiError extends Error {
3
3
  status: number;
4
4
  constructor(message: string, status: number);
@@ -17,6 +17,12 @@ export declare class AgentApiClient {
17
17
  getConfig(): Promise<AgentPublicConfig>;
18
18
  sendMessage(message: string, conversationId?: string | null, files?: File[]): Promise<ChatResponse>;
19
19
  resolveApproval(callId: string, approve: boolean): Promise<ChatResponse>;
20
+ /** POST a chat turn and yield parsed SSE events as they stream in. */
21
+ streamMessage(message: string, conversationId: string | null | undefined, files: File[] | undefined, onEvent: (event: AgentStreamEvent) => void, signal?: AbortSignal): Promise<void>;
22
+ /** POST an approval decision and yield the continued reply as SSE events. */
23
+ streamResolveApproval(callId: string, approve: boolean, onEvent: (event: AgentStreamEvent) => void, signal?: AbortSignal): Promise<void>;
24
+ private streamHeaders;
25
+ private consumeStream;
20
26
  listConversations(): Promise<{
21
27
  conversations: ConversationSummary[];
22
28
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAc,SAAQ,KAAK;IACtC,MAAM,EAAE,MAAM,CAAC;gBAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;YAIjB,OAAO;IAoDrB,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvC,WAAW,CACT,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,GACb,OAAO,CAAC,YAAY,CAAC;IAmBxB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAOxE,iBAAiB,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IAItE,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,iBAAiB,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;KACtD,CAAC;IAIF,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1D"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAc,SAAQ,KAAK;IACtC,MAAM,EAAE,MAAM,CAAC;gBAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;YAIjB,OAAO;IAoDrB,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAIvC,WAAW,CACT,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,KAAK,CAAC,EAAE,IAAI,EAAE,GACb,OAAO,CAAC,YAAY,CAAC;IAmBxB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IASxE,sEAAsE;IAChE,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,EACzB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAqBhB,6EAA6E;IACvE,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EAC1C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;YAcF,aAAa;YAab,aAAa;IA4D3B,iBAAiB,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IAItE,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,YAAY,EAAE,mBAAmB,CAAC;QAClC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,iBAAiB,EAAE,YAAY,CAAC,mBAAmB,CAAC,CAAC;KACtD,CAAC;IAIF,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1D"}
@@ -4,7 +4,13 @@ export interface AgentComposerProps {
4
4
  onValueChange: (value: string) => void;
5
5
  /** Submit the trimmed text plus any staged files. */
6
6
  onSubmit: (text: string) => void;
7
+ /** Hard-disable the input entirely (e.g. a pending approval must be resolved). */
7
8
  disabled?: boolean;
9
+ /**
10
+ * A reply is in progress. The textarea stays enabled and focused so the user
11
+ * can start writing their next message, but submitting is blocked until done.
12
+ */
13
+ busy?: boolean;
8
14
  placeholder?: string;
9
15
  className?: string;
10
16
  /** File upload wiring. Omit `onPickFiles` to hide the attach button. */
@@ -19,5 +25,5 @@ export interface AgentComposerProps {
19
25
  * Shift+Enter inserts a newline. Submitting is allowed when there is text OR at
20
26
  * least one staged file.
21
27
  */
22
- export declare function AgentComposer({ acceptAttribute, className, disabled, files, onPickFiles, onRemoveFile, onSubmit, onValueChange, placeholder, value, }: AgentComposerProps): React.JSX.Element;
28
+ export declare function AgentComposer({ acceptAttribute, busy, className, disabled, files, onPickFiles, onRemoveFile, onSubmit, onValueChange, placeholder, value, }: AgentComposerProps): React.JSX.Element;
23
29
  //# sourceMappingURL=agent-composer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,qDAAqD;IACrD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,SAAS,EACT,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAA6B,EAC7B,KAAK,GACN,EAAE,kBAAkB,qBAqHpB"}
1
+ {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,qDAAqD;IACrD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,WAA6B,EAC7B,KAAK,GACN,EAAE,kBAAkB,qBA6HpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-panel.d.ts","sourceRoot":"","sources":["../../src/components/agent-panel.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAO5C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACxC,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iEAAiE;IACjE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,MAAM,EACN,eAAe,EACf,OAAO,EACP,iBAAiB,GAClB,EAAE,eAAe,qBA2SjB"}
1
+ {"version":3,"file":"agent-panel.d.ts","sourceRoot":"","sources":["../../src/components/agent-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQ5C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC;IACxC,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iEAAiE;IACjE,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,MAAM,EACN,eAAe,EACf,OAAO,EACP,iBAAiB,GAClB,EAAE,eAAe,qBAkTjB"}
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ export type ChatScrollerProps = React.ComponentProps<"div">;
3
+ /**
4
+ * Scrollable message viewport that stays pinned to the bottom while content
5
+ * grows — including token-by-token streaming, where text is appended to the
6
+ * SAME message rather than adding new ones.
7
+ *
8
+ * Why not the UI kit's ChatMessages autoScroll: that container uses CSS
9
+ * `scroll-smooth`, so a programmatic jump to the bottom emits intermediate
10
+ * `scroll` events mid-animation whose distance-from-bottom is large, which
11
+ * flips its "pinned" flag to false — after the first delta it stops following.
12
+ * Here we scroll INSTANTLY (no smooth), so the only resulting scroll event is
13
+ * at the true bottom and the pin holds for the whole stream. The user can still
14
+ * scroll up to read history (that unpins), and scrolling back down re-pins.
15
+ */
16
+ export declare function ChatScroller({ children, className, ...props }: ChatScrollerProps): React.JSX.Element;
17
+ //# sourceMappingURL=chat-scroller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-scroller.d.ts","sourceRoot":"","sources":["../../src/components/chat-scroller.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAE5D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,qBA8BhF"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { AgentApiClient, AgentApiError } from "./api-client";
2
2
  export { AgentComposer, type AgentComposerProps } from "./components/agent-composer";
3
3
  export { AgentPanel, type AgentPanelProps } from "./components/agent-panel";
4
4
  export { AgentWidget, type AgentWidgetProps } from "./components/agent-widget";
5
+ export { ChatScroller, type ChatScrollerProps } from "./components/chat-scroller";
5
6
  export { DocumentCard } from "./components/document-card";
6
7
  export { MessageItem } from "./components/message-item";
7
8
  export { TaskChecklist } from "./components/task-checklist";
@@ -13,7 +14,7 @@ export { acceptAttribute, acceptedExtensions, DEFAULT_ACCEPT, fileUploadEnabled,
13
14
  export { groupMessages, type RenderItem, type ToolStep } from "./message-group";
14
15
  export { deriveDetails, humanizeToolName, resolveToolPresentation, type ResolvedToolPresentation, } from "./tool-presentation";
15
16
  export { useAlwaysApprove, type AlwaysApproveStore } from "./use-always-approve";
16
- export type { AgentConfig, AgentMessage, AgentModeSchemas, AgentPageMapping, AgentPublicConfig, ApprovalRequest, AttachmentInfo, ChatRequest, ChatResponse, ConversationSummary, DescribeToolCall, DocumentBlock, DocumentFormat, MessageBlock, PendingApproval, TableBlock, TaskItem, TasksBlock, TaskStatus, ToolCallDescription, ToolCallDetail, ToolCallInfo, WriteSuccessEvent, } from "./types";
17
+ export type { AgentConfig, AgentMessage, AgentModeSchemas, AgentPageMapping, AgentPublicConfig, AgentStreamEvent, ApprovalRequest, AttachmentInfo, ChatRequest, ChatResponse, ConversationSummary, DescribeToolCall, DocumentBlock, DocumentFormat, MessageBlock, PendingApproval, TableBlock, TaskItem, TasksBlock, TaskStatus, ToolCallDescription, ToolCallDetail, ToolCallInfo, WriteSuccessEvent, } from "./types";
17
18
  export type { components as AgentModeComponents, operations as AgentModeOperations, paths as AgentModePaths, } from "./api/schema";
18
19
  export { useAgentChat, type AgentChatActions, type AgentChatState, } from "./use-agent-chat";
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACjF,YAAY,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,UAAU,IAAI,mBAAmB,EACjC,UAAU,IAAI,mBAAmB,EACjC,KAAK,IAAI,cAAc,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACjF,YAAY,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,UAAU,IAAI,mBAAmB,EACjC,UAAU,IAAI,mBAAmB,EACjC,KAAK,IAAI,cAAc,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC"}