@nodetool-ai/cli-chat 0.0.0-stage → 0.8.9-beta.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.
Files changed (107) hide show
  1. package/README.md +13 -2
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/ExecutionTree.d.ts +20 -0
  4. package/dist/ExecutionTree.d.ts.map +1 -0
  5. package/dist/ExecutionTree.js +100 -0
  6. package/dist/ExecutionTree.js.map +1 -0
  7. package/dist/agent-toolbelt.d.ts +15 -0
  8. package/dist/agent-toolbelt.d.ts.map +1 -0
  9. package/dist/agent-toolbelt.js +28 -0
  10. package/dist/agent-toolbelt.js.map +1 -0
  11. package/dist/app.d.ts +40 -0
  12. package/dist/app.d.ts.map +1 -0
  13. package/dist/app.js +1070 -0
  14. package/dist/app.js.map +1 -0
  15. package/dist/bash-tool.d.ts +13 -0
  16. package/dist/bash-tool.d.ts.map +1 -0
  17. package/dist/bash-tool.js +85 -0
  18. package/dist/bash-tool.js.map +1 -0
  19. package/dist/chat-codeact.d.ts +93 -0
  20. package/dist/chat-codeact.d.ts.map +1 -0
  21. package/dist/chat-codeact.js +179 -0
  22. package/dist/chat-codeact.js.map +1 -0
  23. package/dist/chat-context.d.ts +18 -0
  24. package/dist/chat-context.d.ts.map +1 -0
  25. package/dist/chat-context.js +32 -0
  26. package/dist/chat-context.js.map +1 -0
  27. package/dist/chat-entry.d.ts +13 -0
  28. package/dist/chat-entry.d.ts.map +1 -0
  29. package/dist/chat-entry.js +233 -0
  30. package/dist/chat-entry.js.map +1 -0
  31. package/dist/chat-media.d.ts +3 -0
  32. package/dist/chat-media.d.ts.map +1 -0
  33. package/dist/chat-media.js +46 -0
  34. package/dist/chat-media.js.map +1 -0
  35. package/dist/chat-prompts.d.ts +20 -0
  36. package/dist/chat-prompts.d.ts.map +1 -0
  37. package/dist/chat-prompts.js +42 -0
  38. package/dist/chat-prompts.js.map +1 -0
  39. package/dist/chat-sessions.d.ts +25 -0
  40. package/dist/chat-sessions.d.ts.map +1 -0
  41. package/dist/chat-sessions.js +153 -0
  42. package/dist/chat-sessions.js.map +1 -0
  43. package/dist/commands/agent.d.ts +33 -0
  44. package/dist/commands/agent.d.ts.map +1 -0
  45. package/dist/commands/agent.js +516 -0
  46. package/dist/commands/agent.js.map +1 -0
  47. package/dist/commands/tools.d.ts +11 -0
  48. package/dist/commands/tools.d.ts.map +1 -0
  49. package/dist/commands/tools.js +206 -0
  50. package/dist/commands/tools.js.map +1 -0
  51. package/dist/diagnose.d.ts +139 -0
  52. package/dist/diagnose.d.ts.map +1 -0
  53. package/dist/diagnose.js +435 -0
  54. package/dist/diagnose.js.map +1 -0
  55. package/dist/index.d.ts +14 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +40 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/markdown.d.ts +9 -0
  60. package/dist/markdown.d.ts.map +1 -0
  61. package/dist/markdown.js +53 -0
  62. package/dist/markdown.js.map +1 -0
  63. package/dist/nodetool.d.ts +3 -0
  64. package/dist/nodetool.d.ts.map +1 -0
  65. package/dist/nodetool.js +4 -0
  66. package/dist/nodetool.js.map +1 -0
  67. package/dist/permission-gate.d.ts +55 -0
  68. package/dist/permission-gate.d.ts.map +1 -0
  69. package/dist/permission-gate.js +118 -0
  70. package/dist/permission-gate.js.map +1 -0
  71. package/dist/readline-input.d.ts +23 -0
  72. package/dist/readline-input.d.ts.map +1 -0
  73. package/dist/readline-input.js +210 -0
  74. package/dist/readline-input.js.map +1 -0
  75. package/dist/settings.d.ts +19 -0
  76. package/dist/settings.d.ts.map +1 -0
  77. package/dist/settings.js +146 -0
  78. package/dist/settings.js.map +1 -0
  79. package/dist/stdin.d.ts +52 -0
  80. package/dist/stdin.d.ts.map +1 -0
  81. package/dist/stdin.js +363 -0
  82. package/dist/stdin.js.map +1 -0
  83. package/dist/terminal-clipboard.d.ts +3 -0
  84. package/dist/terminal-clipboard.d.ts.map +1 -0
  85. package/dist/terminal-clipboard.js +24 -0
  86. package/dist/terminal-clipboard.js.map +1 -0
  87. package/dist/terminal-mouse.d.ts +24 -0
  88. package/dist/terminal-mouse.d.ts.map +1 -0
  89. package/dist/terminal-mouse.js +84 -0
  90. package/dist/terminal-mouse.js.map +1 -0
  91. package/dist/terminal-screen.d.ts +41 -0
  92. package/dist/terminal-screen.d.ts.map +1 -0
  93. package/dist/terminal-screen.js +228 -0
  94. package/dist/terminal-screen.js.map +1 -0
  95. package/dist/tool-format.d.ts +54 -0
  96. package/dist/tool-format.d.ts.map +1 -0
  97. package/dist/tool-format.js +360 -0
  98. package/dist/tool-format.js.map +1 -0
  99. package/dist/useExecutionState.d.ts +44 -0
  100. package/dist/useExecutionState.d.ts.map +1 -0
  101. package/dist/useExecutionState.js +285 -0
  102. package/dist/useExecutionState.js.map +1 -0
  103. package/dist/websocket-client.d.ts +159 -0
  104. package/dist/websocket-client.d.ts.map +1 -0
  105. package/dist/websocket-client.js +677 -0
  106. package/dist/websocket-client.js.map +1 -0
  107. package/package.json +73 -4
package/README.md CHANGED
@@ -1,3 +1,14 @@
1
- # Temporary Holding Version
1
+ # Chat and agent commands
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Interactive terminal chat, agent sessions and agent tool calls. Ink and React
4
+ belong to this feature rather than the default CLI.
5
+
6
+ Install this independent command feature through the default CLI:
7
+
8
+ ```bash
9
+ nodetool packs add cli-chat --yes
10
+ nodetool chat --help
11
+ ```
12
+
13
+ Commands do not install missing features automatically. See the
14
+ [command reference](../../docs/cli.md#install-command-features).
@@ -0,0 +1 @@
1
+ 2026-10-31T09:12:20.335Z
@@ -0,0 +1,20 @@
1
+ /**
2
+ * ExecutionTree — Ink component that renders the agent task/step hierarchy
3
+ * as an interactive tree with real-time updates.
4
+ *
5
+ * ◆ Plan: Research and summarize topic
6
+ * ├─ ✓ Task 1: Search for sources 3.2s (3 steps)
7
+ * ├─ ◐ Task 2: Analyze findings
8
+ * │ ├─ ✓ google_search("topic")
9
+ * │ │ → Found 5 results
10
+ * │ └─ ◐ llm_call
11
+ * │ → The key themes emerging from...
12
+ * └─ ○ Task 3: Write summary waiting
13
+ */
14
+ import React from "react";
15
+ import type { ExecutionState } from "./useExecutionState.js";
16
+ export declare function ExecutionTree({ state, treeActive, }: {
17
+ state: ExecutionState;
18
+ treeActive: boolean;
19
+ }): React.JSX.Element | null;
20
+ //# sourceMappingURL=ExecutionTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionTree.d.ts","sourceRoot":"","sources":["../src/ExecutionTree.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAC;AAmMnF,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,UAAU,GACX,EAAE;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB,4BA0CA"}
@@ -0,0 +1,100 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import Spinner from "ink-spinner";
4
+ // ---------------------------------------------------------------------------
5
+ // Icons
6
+ // ---------------------------------------------------------------------------
7
+ const ICONS = {
8
+ planned: "◇",
9
+ waiting: "○",
10
+ running: "◐",
11
+ completed: "✓",
12
+ failed: "✗",
13
+ plan: "◆",
14
+ };
15
+ const STATUS_COLORS = {
16
+ planned: "cyan",
17
+ waiting: "gray",
18
+ running: "yellow",
19
+ completed: "green",
20
+ failed: "red",
21
+ };
22
+ // ---------------------------------------------------------------------------
23
+ // Helpers
24
+ // ---------------------------------------------------------------------------
25
+ function formatDuration(seconds) {
26
+ if (seconds === undefined)
27
+ return "";
28
+ if (seconds < 0.1)
29
+ return "<0.1s";
30
+ if (seconds < 60)
31
+ return `${seconds.toFixed(1)}s`;
32
+ const mins = Math.floor(seconds / 60);
33
+ const secs = seconds % 60;
34
+ return `${mins}m${secs.toFixed(0)}s`;
35
+ }
36
+ function truncateOutput(output, maxLines = 2) {
37
+ if (!output)
38
+ return "";
39
+ const lines = output.trim().split("\n");
40
+ const truncated = lines.slice(-maxLines);
41
+ let result = truncated.join("\n").slice(0, 120);
42
+ if (lines.length > maxLines)
43
+ result = "..." + result;
44
+ return result;
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Step rendering
48
+ // ---------------------------------------------------------------------------
49
+ function StepNode({ step, isLast, parentPrefix, }) {
50
+ const branch = isLast ? "└─ " : "├─ ";
51
+ const cont = isLast ? " " : "│ ";
52
+ const color = STATUS_COLORS[step.status];
53
+ const icon = ICONS[step.status];
54
+ // Display name: prefer tool call info, fall back to step name
55
+ const displayName = step.toolName
56
+ ? step.toolArgs
57
+ ? `${step.toolName}(${step.toolArgs.slice(0, 50)})`
58
+ : step.toolName
59
+ : step.name.slice(0, 60);
60
+ const duration = step.duration !== undefined ? ` ${formatDuration(step.duration)}` : "";
61
+ const outputPreview = truncateOutput(step.output);
62
+ const errorPreview = step.error ? step.error.slice(0, 120) : "";
63
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: "gray", dimColor: true, children: [parentPrefix, branch] }), step.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, children: displayName }), duration ? _jsx(Text, { color: "gray", dimColor: true, children: duration }) : null] }), outputPreview && step.status === "running" ? (_jsx(Box, { children: _jsxs(Text, { color: "gray", dimColor: true, children: [parentPrefix, cont, " ", "→ ", outputPreview] }) })) : null, errorPreview ? (_jsx(Box, { children: _jsxs(Text, { color: "red", children: [parentPrefix, cont, " ", "✗ ", errorPreview] }) })) : null] }));
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Task rendering
67
+ // ---------------------------------------------------------------------------
68
+ function TaskNode({ task, isLast, isSelected, treeActive, }) {
69
+ const branch = isLast ? "└─ " : "├─ ";
70
+ const cont = isLast ? " " : "│ ";
71
+ const color = STATUS_COLORS[task.status];
72
+ const icon = ICONS[task.status];
73
+ const duration = task.duration !== undefined ? formatDuration(task.duration) : "";
74
+ const stepCount = task.steps.length;
75
+ const completedSteps = task.steps.filter((s) => s.status === "completed").length;
76
+ // Collapsed view for completed tasks
77
+ if (!task.expanded) {
78
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "gray", dimColor: true, children: branch }), treeActive && isSelected ? _jsx(Text, { color: "cyan", bold: true, children: "› " }) : null, task.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, bold: true, children: task.name }), duration ? _jsxs(Text, { color: "gray", dimColor: true, children: [" ", duration] }) : null, _jsxs(Text, { color: "gray", dimColor: true, children: [" (", completedSteps, "/", stepCount, " steps)"] })] }));
79
+ }
80
+ // Expanded view
81
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: "gray", dimColor: true, children: branch }), treeActive && isSelected ? _jsx(Text, { color: "cyan", bold: true, children: "› " }) : null, task.status === "running" ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " "] })) : (_jsxs(Text, { color: color, children: [icon, " "] })), _jsx(Text, { color: color, bold: true, children: task.name }), task.status === "waiting" ? (_jsx(Text, { color: "gray", dimColor: true, children: " waiting" })) : null] }), task.steps.map((step, i) => (_jsx(StepNode, { step: step, isLast: i === task.steps.length - 1, parentPrefix: cont }, step.id)))] }));
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // Planning phase
85
+ // ---------------------------------------------------------------------------
86
+ function PlanningPhase({ content }) {
87
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: "yellow", children: [_jsx(Spinner, { type: "dots" }), " "] }), _jsx(Text, { color: "yellow", children: "planning" }), content ? (_jsxs(Text, { color: "gray", dimColor: true, children: [" ", content.slice(0, 60)] })) : null] }));
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Main tree
91
+ // ---------------------------------------------------------------------------
92
+ export function ExecutionTree({ state, treeActive, }) {
93
+ if (state.phase === "idle")
94
+ return null;
95
+ const maxRows = Math.max((process.stdout.rows ?? 24) - 4, 8);
96
+ const completedCount = state.tasks.filter((t) => t.status === "completed").length;
97
+ const plannedCount = state.tasks.filter((t) => t.status === "planned").length;
98
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [state.phase === "planning" ? (_jsx(PlanningPhase, { content: state.planningContent })) : null, state.tasks.length > 0 ? (_jsxs(_Fragment, { children: [_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: [ICONS.plan, " "] }), _jsx(Text, { color: "cyan", bold: true, children: "Plan" }), _jsxs(Text, { color: "gray", dimColor: true, children: [" ", "(", completedCount, "/", state.tasks.length, " tasks", plannedCount > 0 ? `, ${plannedCount} planning` : "", ")"] })] }), _jsx(Box, { flexDirection: "column", children: state.tasks.slice(0, maxRows).map((task, i) => (_jsx(TaskNode, { task: task, isLast: i === state.tasks.length - 1, isSelected: i === state.selectedIndex, treeActive: treeActive }, task.id))) })] })) : null] }));
99
+ }
100
+ //# sourceMappingURL=ExecutionTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutionTree.js","sourceRoot":"","sources":["../src/ExecutionTree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The CLI's default agent toolbelt: the belt a server chat turn assembles in
3
+ * `packages/websocket/src/session/chat-turn.ts`, so a local turn reaches the
4
+ * same tools. `buildFullRegistry` also installs the sandbox pack catalog, so
5
+ * the session allowlist can admit the DSL, flow, Fabric and timeline packs.
6
+ *
7
+ * The server additionally offers `run_node`, the user's external MCP servers
8
+ * and Google Workspace. Those are built from server-only state.
9
+ */
10
+ import type { BaseProvider } from "@nodetool-ai/runtime";
11
+ import type { NodeRegistry } from "@nodetool-ai/node-sdk";
12
+ import { type Tool } from "@nodetool-ai/agents";
13
+ /** Every default tool, de-duplicated by name with the first one winning. */
14
+ export declare function buildCliToolbelt(providers: Record<string, BaseProvider>, registry?: NodeRegistry): Tool[];
15
+ //# sourceMappingURL=agent-toolbelt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-toolbelt.d.ts","sourceRoot":"","sources":["../src/agent-toolbelt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAML,KAAK,IAAI,EACV,MAAM,qBAAqB,CAAC;AAG7B,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACvC,QAAQ,CAAC,EAAE,YAAY,GACtB,IAAI,EAAE,CAaR"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The CLI's default agent toolbelt: the belt a server chat turn assembles in
3
+ * `packages/websocket/src/session/chat-turn.ts`, so a local turn reaches the
4
+ * same tools. `buildFullRegistry` also installs the sandbox pack catalog, so
5
+ * the session allowlist can admit the DSL, flow, Fabric and timeline packs.
6
+ *
7
+ * The server additionally offers `run_node`, the user's external MCP servers
8
+ * and Google Workspace. Those are built from server-only state.
9
+ */
10
+ import { getAllMcpTools, getApifyTools, getBuiltinTools, getSerpApiTools, toolForCapabilityName } from "@nodetool-ai/agents";
11
+ import { mcpToolHostDeps } from "@nodetool-ai/websocket";
12
+ /** Every default tool, de-duplicated by name with the first one winning. */
13
+ export function buildCliToolbelt(providers, registry) {
14
+ const byName = new Map();
15
+ for (const tool of [
16
+ ...getBuiltinTools(),
17
+ ...getApifyTools(),
18
+ ...getSerpApiTools(),
19
+ ...getAllMcpTools({ providers, registry, ...mcpToolHostDeps() }),
20
+ toolForCapabilityName("list_collections"),
21
+ toolForCapabilityName("query_collection")
22
+ ]) {
23
+ if (!byName.has(tool.name))
24
+ byName.set(tool.name, tool);
25
+ }
26
+ return [...byName.values()];
27
+ }
28
+ //# sourceMappingURL=agent-toolbelt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-toolbelt.js","sourceRoot":"","sources":["../src/agent-toolbelt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,qBAAqB,EAEtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAC9B,SAAuC,EACvC,QAAuB;IAEvB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI;QACjB,GAAG,eAAe,EAAE;QACpB,GAAG,aAAa,EAAE;QAClB,GAAG,eAAe,EAAE;QACpB,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAE,EAAE,CAAC;QAChE,qBAAqB,CAAC,kBAAkB,CAAC;QACzC,qBAAqB,CAAC,kBAAkB,CAAC;KAC1C,EAAE,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC"}
package/dist/app.d.ts ADDED
@@ -0,0 +1,40 @@
1
+ import React from "react";
2
+ import type { EventEmitter } from "node:events";
3
+ import { type PermissionMode } from "@nodetool-ai/agents";
4
+ import { ChatSessionStore } from "./chat-sessions.js";
5
+ export type { ChatMessage } from "./terminal-screen.js";
6
+ export interface AppProps {
7
+ readonly mouseEvents?: EventEmitter;
8
+ readonly initialProvider: string;
9
+ readonly initialModel: string;
10
+ /** `--tools`: narrows the belt to these names. Unset offers the full belt. */
11
+ readonly enabledTools?: string[];
12
+ readonly workspaceDir: string;
13
+ readonly wsUrl?: string;
14
+ readonly registry?: import("@nodetool-ai/node-sdk").NodeRegistry;
15
+ readonly agentProviders?: Record<string, import("@nodetool-ai/runtime").BaseProvider>;
16
+ readonly costCap?: string;
17
+ readonly timeout?: string;
18
+ readonly permissionMode?: PermissionMode;
19
+ readonly enableReadOnlySearch?: boolean;
20
+ readonly resume?: string | boolean;
21
+ readonly sessionStore?: ChatSessionStore;
22
+ }
23
+ export declare const CHAT_COMMANDS: {
24
+ readonly "/help": "Commands and keyboard shortcuts";
25
+ readonly "/new": "Start a new conversation";
26
+ readonly "/clear": "Clear the screen, keep conversation context";
27
+ readonly "/compact": "Summarize retained context";
28
+ readonly "/model": "Choose a model";
29
+ readonly "/agent": "Inspect sub-agent threads: /agent [id|main]";
30
+ readonly "/mode": "Permissions: default, auto, plan";
31
+ readonly "/sessions": "Browse saved conversations";
32
+ readonly "/resume": "Resume a session: /resume <id>";
33
+ readonly "/export": "Save transcript: /export <path.md>";
34
+ readonly "/tools": "Show available tools";
35
+ readonly "/details": "Toggle tool arguments, code and diffs";
36
+ readonly "/exit": "Save and quit";
37
+ readonly "/quit": "Save and quit";
38
+ };
39
+ export declare function App({ initialProvider, initialModel, enabledTools, workspaceDir, wsUrl, registry, agentProviders, costCap, timeout, permissionMode, enableReadOnlySearch, resume, sessionStore, mouseEvents }: AppProps): React.ReactElement;
40
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAahD,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAuC7B,OAAO,EACL,gBAAgB,EAIjB,MAAM,oBAAoB,CAAC;AAI5B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,uBAAuB,EAAE,YAAY,CAAC;IACjE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAC9B,MAAM,EACN,OAAO,sBAAsB,EAAE,YAAY,CAC5C,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC1C;AAED,eAAO,MAAM,aAAa;aACxB,OAAO,EAAE,iCAAiC;aAC1C,MAAM,EAAE,0BAA0B;aAClC,QAAQ,EAAE,6CAA6C;aACvD,UAAU,EAAE,4BAA4B;aACxC,QAAQ,EAAE,gBAAgB;aAC1B,QAAQ,EAAE,6CAA6C;aACvD,OAAO,EAAE,kCAAkC;aAC3C,WAAW,EAAE,4BAA4B;aACzC,SAAS,EAAE,gCAAgC;aAC3C,SAAS,EAAE,oCAAoC;aAC/C,QAAQ,EAAE,sBAAsB;aAChC,UAAU,EAAE,uCAAuC;aACnD,OAAO,EAAE,eAAe;aACxB,OAAO,EAAE,eAAe;CAChB,CAAC;AA0DX,wBAAgB,GAAG,CAAC,EAClB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,cAAc,EACd,OAAO,EACP,OAAO,EACP,cAA0B,EAC1B,oBAA2B,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACZ,EAAE,QAAQ,GAAG,KAAK,CAAC,YAAY,CAkxC/B"}