@cmdctrl/claude-code 0.1.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/dist/adapter/claude-cli.d.ts +41 -0
- package/dist/adapter/claude-cli.d.ts.map +1 -0
- package/dist/adapter/claude-cli.js +525 -0
- package/dist/adapter/claude-cli.js.map +1 -0
- package/dist/adapter/events.d.ts +52 -0
- package/dist/adapter/events.d.ts.map +1 -0
- package/dist/adapter/events.js +134 -0
- package/dist/adapter/events.js.map +1 -0
- package/dist/client/messages.d.ts +140 -0
- package/dist/client/messages.d.ts.map +1 -0
- package/dist/client/messages.js +6 -0
- package/dist/client/messages.js.map +1 -0
- package/dist/client/websocket.d.ts +115 -0
- package/dist/client/websocket.d.ts.map +1 -0
- package/dist/client/websocket.js +434 -0
- package/dist/client/websocket.js.map +1 -0
- package/dist/commands/register.d.ts +10 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +175 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/start.d.ts +9 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +54 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +38 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +59 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/unregister.d.ts +5 -0
- package/dist/commands/unregister.d.ts.map +1 -0
- package/dist/commands/unregister.js +28 -0
- package/dist/commands/unregister.js.map +1 -0
- package/dist/config/config.d.ts +68 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +193 -0
- package/dist/config/config.js.map +1 -0
- package/dist/handlers/context-handler.d.ts +37 -0
- package/dist/handlers/context-handler.d.ts.map +1 -0
- package/dist/handlers/context-handler.js +303 -0
- package/dist/handlers/context-handler.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/message-reader.d.ts +25 -0
- package/dist/message-reader.d.ts.map +1 -0
- package/dist/message-reader.js +454 -0
- package/dist/message-reader.js.map +1 -0
- package/dist/session-discovery.d.ts +48 -0
- package/dist/session-discovery.d.ts.map +1 -0
- package/dist/session-discovery.js +496 -0
- package/dist/session-discovery.js.map +1 -0
- package/dist/session-watcher.d.ts +92 -0
- package/dist/session-watcher.d.ts.map +1 -0
- package/dist/session-watcher.js +494 -0
- package/dist/session-watcher.js.map +1 -0
- package/dist/session-watcher.test.d.ts +9 -0
- package/dist/session-watcher.test.d.ts.map +1 -0
- package/dist/session-watcher.test.js +149 -0
- package/dist/session-watcher.test.js.map +1 -0
- package/jest.config.js +8 -0
- package/package.json +42 -0
- package/src/adapter/claude-cli.ts +591 -0
- package/src/adapter/events.ts +186 -0
- package/src/client/messages.ts +193 -0
- package/src/client/websocket.ts +509 -0
- package/src/commands/register.ts +201 -0
- package/src/commands/start.ts +70 -0
- package/src/commands/status.ts +47 -0
- package/src/commands/stop.ts +58 -0
- package/src/commands/unregister.ts +30 -0
- package/src/config/config.ts +163 -0
- package/src/handlers/context-handler.ts +337 -0
- package/src/index.ts +45 -0
- package/src/message-reader.ts +485 -0
- package/src/session-discovery.ts +557 -0
- package/src/session-watcher.test.ts +141 -0
- package/src/session-watcher.ts +560 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Types for Claude CLI stream-json output
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatVerboseOutput = formatVerboseOutput;
|
|
7
|
+
exports.extractProgressFromToolUse = extractProgressFromToolUse;
|
|
8
|
+
/**
|
|
9
|
+
* Format raw stream output into human-readable string for verbose display
|
|
10
|
+
* Returns null if the event should be skipped
|
|
11
|
+
*/
|
|
12
|
+
function formatVerboseOutput(line) {
|
|
13
|
+
try {
|
|
14
|
+
const data = JSON.parse(line);
|
|
15
|
+
if (data.type === 'system' && data.subtype === 'init') {
|
|
16
|
+
return '● Task started';
|
|
17
|
+
}
|
|
18
|
+
if (data.type === 'assistant' && data.message?.content) {
|
|
19
|
+
// Check for text content first
|
|
20
|
+
const texts = data.message.content
|
|
21
|
+
.filter(c => c.type === 'text' && c.text)
|
|
22
|
+
.map(c => c.text.substring(0, 100));
|
|
23
|
+
if (texts.length > 0) {
|
|
24
|
+
const joined = texts.join(' ');
|
|
25
|
+
const truncated = joined.length > 80 ? joined.substring(0, 80) + '...' : joined;
|
|
26
|
+
return `💬 ${truncated}`;
|
|
27
|
+
}
|
|
28
|
+
// Check for tool use
|
|
29
|
+
const tools = data.message.content.filter(c => c.type === 'tool_use');
|
|
30
|
+
if (tools.length > 0) {
|
|
31
|
+
const tool = tools[0];
|
|
32
|
+
const name = tool.name || 'unknown';
|
|
33
|
+
const input = tool.input;
|
|
34
|
+
switch (name) {
|
|
35
|
+
case 'Read': return `📖 Reading ${input?.file_path || 'file'}`;
|
|
36
|
+
case 'Write': return `✏️ Writing ${input?.file_path || 'file'}`;
|
|
37
|
+
case 'Edit': return `🔧 Editing ${input?.file_path || 'file'}`;
|
|
38
|
+
case 'Bash': {
|
|
39
|
+
const cmd = String(input?.command || '').substring(0, 60);
|
|
40
|
+
return `⚡ ${cmd}`;
|
|
41
|
+
}
|
|
42
|
+
case 'Glob': return `🔍 Searching: ${input?.pattern || ''}`;
|
|
43
|
+
case 'Grep': return `🔎 Grepping: ${input?.pattern || ''}`;
|
|
44
|
+
case 'Task': return `📋 Spawning agent`;
|
|
45
|
+
case 'TodoWrite': return `📝 Updating todos`;
|
|
46
|
+
case 'WebSearch': return `🌐 Searching: ${input?.query || ''}`;
|
|
47
|
+
case 'WebFetch': return `🌐 Fetching: ${input?.url || ''}`;
|
|
48
|
+
default: return `🔧 ${name}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (data.type === 'result') {
|
|
53
|
+
// Check for permission denials
|
|
54
|
+
if (data.permission_denials?.length) {
|
|
55
|
+
const denial = data.permission_denials[0];
|
|
56
|
+
const toolName = denial.tool_name;
|
|
57
|
+
if (toolName === 'AskUserQuestion') {
|
|
58
|
+
return '❓ Waiting for your input';
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return `⚠️ Permission required: ${toolName}`;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return '✓ Completed';
|
|
65
|
+
}
|
|
66
|
+
// Skip uninteresting events
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Not JSON - show raw if short enough
|
|
71
|
+
const trimmed = line.trim();
|
|
72
|
+
if (trimmed && trimmed.length < 100) {
|
|
73
|
+
return trimmed;
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Extract progress info from tool use
|
|
80
|
+
*/
|
|
81
|
+
function extractProgressFromToolUse(toolName, input) {
|
|
82
|
+
const inputObj = input;
|
|
83
|
+
switch (toolName) {
|
|
84
|
+
case 'Read':
|
|
85
|
+
return {
|
|
86
|
+
action: 'Reading',
|
|
87
|
+
target: inputObj?.file_path || 'file'
|
|
88
|
+
};
|
|
89
|
+
case 'Write':
|
|
90
|
+
return {
|
|
91
|
+
action: 'Writing',
|
|
92
|
+
target: inputObj?.file_path || 'file'
|
|
93
|
+
};
|
|
94
|
+
case 'Edit':
|
|
95
|
+
return {
|
|
96
|
+
action: 'Editing',
|
|
97
|
+
target: inputObj?.file_path || 'file'
|
|
98
|
+
};
|
|
99
|
+
case 'Bash':
|
|
100
|
+
const cmd = inputObj?.command || '';
|
|
101
|
+
return {
|
|
102
|
+
action: 'Running',
|
|
103
|
+
target: cmd.length > 30 ? cmd.substring(0, 30) + '...' : cmd
|
|
104
|
+
};
|
|
105
|
+
case 'Glob':
|
|
106
|
+
return {
|
|
107
|
+
action: 'Searching',
|
|
108
|
+
target: inputObj?.pattern || 'files'
|
|
109
|
+
};
|
|
110
|
+
case 'Grep':
|
|
111
|
+
return {
|
|
112
|
+
action: 'Searching',
|
|
113
|
+
target: inputObj?.pattern || 'pattern'
|
|
114
|
+
};
|
|
115
|
+
case 'WebSearch':
|
|
116
|
+
return {
|
|
117
|
+
action: 'Searching web',
|
|
118
|
+
target: inputObj?.query || ''
|
|
119
|
+
};
|
|
120
|
+
case 'WebFetch':
|
|
121
|
+
return {
|
|
122
|
+
action: 'Fetching',
|
|
123
|
+
target: inputObj?.url || 'URL'
|
|
124
|
+
};
|
|
125
|
+
case 'Task':
|
|
126
|
+
return {
|
|
127
|
+
action: 'Running agent',
|
|
128
|
+
target: inputObj?.description || ''
|
|
129
|
+
};
|
|
130
|
+
default:
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/adapter/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message types for daemon <-> server communication
|
|
3
|
+
*/
|
|
4
|
+
export interface PingMessage {
|
|
5
|
+
type: 'ping';
|
|
6
|
+
}
|
|
7
|
+
export interface TaskStartMessage {
|
|
8
|
+
type: 'task_start';
|
|
9
|
+
task_id: string;
|
|
10
|
+
instruction: string;
|
|
11
|
+
project_path?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TaskResumeMessage {
|
|
14
|
+
type: 'task_resume';
|
|
15
|
+
task_id: string;
|
|
16
|
+
session_id: string;
|
|
17
|
+
message: string;
|
|
18
|
+
project_path?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskCancelMessage {
|
|
21
|
+
type: 'task_cancel';
|
|
22
|
+
task_id: string;
|
|
23
|
+
}
|
|
24
|
+
export interface GetMessagesMessage {
|
|
25
|
+
type: 'get_messages';
|
|
26
|
+
request_id: string;
|
|
27
|
+
session_id: string;
|
|
28
|
+
limit: number;
|
|
29
|
+
before_uuid?: string;
|
|
30
|
+
after_uuid?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface WatchSessionMessage {
|
|
33
|
+
type: 'watch_session';
|
|
34
|
+
session_id: string;
|
|
35
|
+
file_path: string;
|
|
36
|
+
}
|
|
37
|
+
export interface UnwatchSessionMessage {
|
|
38
|
+
type: 'unwatch_session';
|
|
39
|
+
session_id: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ContextRequestMessage {
|
|
42
|
+
type: 'context_request';
|
|
43
|
+
request_id: string;
|
|
44
|
+
session_id: string;
|
|
45
|
+
include: {
|
|
46
|
+
initial_prompt?: boolean;
|
|
47
|
+
recent_messages?: number;
|
|
48
|
+
last_tool_use?: boolean;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type ServerMessage = PingMessage | TaskStartMessage | TaskResumeMessage | TaskCancelMessage | GetMessagesMessage | WatchSessionMessage | UnwatchSessionMessage | ContextRequestMessage;
|
|
52
|
+
export interface PongMessage {
|
|
53
|
+
type: 'pong';
|
|
54
|
+
}
|
|
55
|
+
export interface StatusMessage {
|
|
56
|
+
type: 'status';
|
|
57
|
+
running_tasks: string[];
|
|
58
|
+
}
|
|
59
|
+
export interface EventMessage {
|
|
60
|
+
type: 'event';
|
|
61
|
+
task_id: string;
|
|
62
|
+
event_type: string;
|
|
63
|
+
[key: string]: unknown;
|
|
64
|
+
}
|
|
65
|
+
export interface SessionInfo {
|
|
66
|
+
session_id: string;
|
|
67
|
+
slug: string;
|
|
68
|
+
title: string;
|
|
69
|
+
project: string;
|
|
70
|
+
project_name: string;
|
|
71
|
+
file_path: string;
|
|
72
|
+
last_message: string;
|
|
73
|
+
last_activity: string;
|
|
74
|
+
is_active: boolean;
|
|
75
|
+
message_count: number;
|
|
76
|
+
}
|
|
77
|
+
export interface ReportSessionsMessage {
|
|
78
|
+
type: 'report_sessions';
|
|
79
|
+
sessions: SessionInfo[];
|
|
80
|
+
}
|
|
81
|
+
export interface MessageEntry {
|
|
82
|
+
uuid: string;
|
|
83
|
+
role: 'USER' | 'AGENT' | 'SYSTEM';
|
|
84
|
+
content: string;
|
|
85
|
+
timestamp: string;
|
|
86
|
+
}
|
|
87
|
+
export interface MessagesResponseMessage {
|
|
88
|
+
type: 'messages';
|
|
89
|
+
request_id: string;
|
|
90
|
+
session_id: string;
|
|
91
|
+
messages: MessageEntry[];
|
|
92
|
+
has_more: boolean;
|
|
93
|
+
oldest_uuid?: string;
|
|
94
|
+
newest_uuid?: string;
|
|
95
|
+
error?: string;
|
|
96
|
+
}
|
|
97
|
+
export interface SessionActivityMessage {
|
|
98
|
+
type: 'session_activity';
|
|
99
|
+
session_id: string;
|
|
100
|
+
file_path: string;
|
|
101
|
+
last_message: string;
|
|
102
|
+
message_count: number;
|
|
103
|
+
is_completion: boolean;
|
|
104
|
+
user_message_uuid?: string;
|
|
105
|
+
last_activity: string;
|
|
106
|
+
}
|
|
107
|
+
export type SessionStatus = 'working' | 'waiting_for_input' | 'completed' | 'errored' | 'stale';
|
|
108
|
+
export interface SessionStatusMessage {
|
|
109
|
+
type: 'session_status';
|
|
110
|
+
session_id: string;
|
|
111
|
+
status: SessionStatus;
|
|
112
|
+
status_detail?: string;
|
|
113
|
+
last_tool_use?: string;
|
|
114
|
+
message_count: number;
|
|
115
|
+
elapsed_minutes: number;
|
|
116
|
+
}
|
|
117
|
+
export interface ContextResponseMessage {
|
|
118
|
+
type: 'context_response';
|
|
119
|
+
request_id: string;
|
|
120
|
+
session_id: string;
|
|
121
|
+
context: {
|
|
122
|
+
title: string;
|
|
123
|
+
project_path: string;
|
|
124
|
+
initial_prompt?: string;
|
|
125
|
+
recent_messages?: Array<{
|
|
126
|
+
role: 'USER' | 'AGENT';
|
|
127
|
+
content: string;
|
|
128
|
+
}>;
|
|
129
|
+
last_tool_use?: string;
|
|
130
|
+
message_count: number;
|
|
131
|
+
started_at?: string;
|
|
132
|
+
last_activity_at: string;
|
|
133
|
+
status: SessionStatus;
|
|
134
|
+
status_detail?: string;
|
|
135
|
+
};
|
|
136
|
+
error?: string;
|
|
137
|
+
}
|
|
138
|
+
export type DaemonMessage = PongMessage | StatusMessage | EventMessage | ReportSessionsMessage | MessagesResponseMessage | SessionActivityMessage | SessionStatusMessage | ContextResponseMessage;
|
|
139
|
+
export type EventType = 'SESSION_STARTED' | 'WAIT_FOR_USER' | 'TASK_COMPLETE' | 'OUTPUT' | 'PROGRESS' | 'ERROR' | 'AGENT_RESPONSE' | 'VERBOSE' | 'USER_MESSAGE';
|
|
140
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/client/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/client/messages.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { CmdCtrlConfig, Credentials } from '../config/config';
|
|
2
|
+
export declare class DaemonClient {
|
|
3
|
+
private ws;
|
|
4
|
+
private config;
|
|
5
|
+
private credentials;
|
|
6
|
+
private reconnectDelay;
|
|
7
|
+
private reconnectTimer;
|
|
8
|
+
private pingTimer;
|
|
9
|
+
private sessionRefreshTimer;
|
|
10
|
+
private shouldReconnect;
|
|
11
|
+
private adapter;
|
|
12
|
+
private managedSessionIds;
|
|
13
|
+
private lastReportedSessionCount;
|
|
14
|
+
private sessionWatcher;
|
|
15
|
+
constructor(config: CmdCtrlConfig, credentials: Credentials);
|
|
16
|
+
/**
|
|
17
|
+
* Handle session events from the JSONL watcher and forward to server
|
|
18
|
+
* Converts SessionEvent to EventMessage format
|
|
19
|
+
*/
|
|
20
|
+
private handleSessionEvent;
|
|
21
|
+
/**
|
|
22
|
+
* Handle session completion events from the JSONL watcher
|
|
23
|
+
* Sends session_activity message with is_completion=true to trigger push notifications
|
|
24
|
+
*/
|
|
25
|
+
private handleSessionCompletion;
|
|
26
|
+
/**
|
|
27
|
+
* Connect to the CmdCtrl server via WebSocket
|
|
28
|
+
*/
|
|
29
|
+
connect(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Disconnect from server
|
|
32
|
+
*/
|
|
33
|
+
disconnect(): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Send a message to the server
|
|
36
|
+
*/
|
|
37
|
+
private send;
|
|
38
|
+
/**
|
|
39
|
+
* Send an event for a task
|
|
40
|
+
*/
|
|
41
|
+
private sendEvent;
|
|
42
|
+
/**
|
|
43
|
+
* Send current status to server
|
|
44
|
+
*/
|
|
45
|
+
private sendStatus;
|
|
46
|
+
/**
|
|
47
|
+
* Handle incoming message from server
|
|
48
|
+
*/
|
|
49
|
+
private handleMessage;
|
|
50
|
+
/**
|
|
51
|
+
* Handle task_start message
|
|
52
|
+
*/
|
|
53
|
+
private handleTaskStart;
|
|
54
|
+
/**
|
|
55
|
+
* Handle task_resume message
|
|
56
|
+
*/
|
|
57
|
+
private handleTaskResume;
|
|
58
|
+
/**
|
|
59
|
+
* Handle task_cancel message
|
|
60
|
+
*/
|
|
61
|
+
private handleTaskCancel;
|
|
62
|
+
/**
|
|
63
|
+
* Handle get_messages request
|
|
64
|
+
*/
|
|
65
|
+
private handleGetMessages;
|
|
66
|
+
/**
|
|
67
|
+
* Handle watch_session request - start monitoring a session file for changes
|
|
68
|
+
*/
|
|
69
|
+
private handleWatchSession;
|
|
70
|
+
/**
|
|
71
|
+
* Handle unwatch_session request - stop monitoring a session file
|
|
72
|
+
*/
|
|
73
|
+
private handleUnwatchSession;
|
|
74
|
+
/**
|
|
75
|
+
* Handle context_request - extract session context for dashboard summaries
|
|
76
|
+
*/
|
|
77
|
+
private handleContextRequest;
|
|
78
|
+
/**
|
|
79
|
+
* Schedule reconnection with exponential backoff
|
|
80
|
+
*/
|
|
81
|
+
private scheduleReconnect;
|
|
82
|
+
/**
|
|
83
|
+
* Start ping interval to keep connection alive
|
|
84
|
+
*/
|
|
85
|
+
private startPingInterval;
|
|
86
|
+
/**
|
|
87
|
+
* Stop ping interval
|
|
88
|
+
*/
|
|
89
|
+
private stopPingInterval;
|
|
90
|
+
/**
|
|
91
|
+
* Report discovered external sessions to server
|
|
92
|
+
*/
|
|
93
|
+
private reportSessions;
|
|
94
|
+
/**
|
|
95
|
+
* Start periodic session refresh
|
|
96
|
+
*/
|
|
97
|
+
private startSessionRefreshInterval;
|
|
98
|
+
/**
|
|
99
|
+
* Stop session refresh interval
|
|
100
|
+
*/
|
|
101
|
+
private stopSessionRefreshInterval;
|
|
102
|
+
/**
|
|
103
|
+
* Add a session ID to the managed set (sessions started via this daemon)
|
|
104
|
+
*/
|
|
105
|
+
addManagedSession(sessionId: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Remove a session ID from the managed set
|
|
108
|
+
*/
|
|
109
|
+
removeManagedSession(sessionId: string): void;
|
|
110
|
+
/**
|
|
111
|
+
* Refresh access token using refresh token
|
|
112
|
+
*/
|
|
113
|
+
refreshToken(): Promise<boolean>;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/client/websocket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AA0BhF,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW;IAU3D;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC;;OAEG;IACH,OAAO,CAAC,IAAI;IAWZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAwBjB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoDrB;;OAEG;YACW,eAAe;IAa7B;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;YACW,cAAc;IA8B5B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAMnC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAOvC"}
|