@hopping-dev/hub 0.1.1 → 0.1.2

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,650 +0,0 @@
1
- /** 風險等級(Cloud ApprovalSummary.riskLevel + Hub operations.risk_level) */
2
- export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
3
- /** 審核決策(Cloud ApprovalSummary.decision) */
4
- export type ApprovalDecision = 'approved' | 'denied' | 'conditional' | 'timeout' | 'pending';
5
- /** 超時行為子集(toApprovalDecision() 的輸出集合,不含 conditional) */
6
- export type TimeoutDecision = 'approved' | 'denied' | 'timeout' | 'pending';
7
- /** Agent 連線狀態(Cloud Agent.status) */
8
- export type AgentStatus = 'online' | 'offline' | 'error';
9
- export type AgentType = 'claude_code' | 'cursor' | 'generic_mcp';
10
- export type AgentCapability = 'shell_execution' | 'file_operations' | 'mcp_tools' | 'composer_mode' | 'web_scraping' | 'code_generation';
11
- /** @deprecated 請改用 AgentStatus */
12
- export type AgentConnectionStatus = AgentStatus;
13
- export interface AgentInfo {
14
- id: string;
15
- type: AgentType;
16
- name: string;
17
- version: string;
18
- capabilities: AgentCapability[];
19
- connectedAt: string;
20
- status: AgentStatus;
21
- }
22
- /**
23
- * 根據 clientInfo.name 識別 Agent 類型
24
- */
25
- export declare function identifyAgentType(clientName: string): AgentType;
26
- export type PolicyAction = 'WARN' | 'ASK' | 'ALLOW';
27
- export type PolicyType = 'command_filter' | 'file_protection' | 'cost_limit' | 'time_restriction' | 'network_filter' | 'custom';
28
- export type PolicyConditionField = 'command' | 'command_args' | 'file_path' | 'file_extension' | 'file_action' | 'sql_statement' | 'api_endpoint' | 'token_cost' | 'session_cost' | 'time_of_day' | 'agent_type' | 'action_type' | 'target' | 'tool_name';
29
- export type PolicyConditionOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'matches_regex' | 'greater_than' | 'less_than' | 'in_list' | 'not_in_list';
30
- export interface PolicyCondition {
31
- field: PolicyConditionField;
32
- operator: PolicyConditionOperator;
33
- value: string | number | string[];
34
- caseSensitive?: boolean;
35
- }
36
- export interface Policy {
37
- id: string;
38
- name: string;
39
- description: string;
40
- type: PolicyType;
41
- enabled: boolean;
42
- priority: number;
43
- isSystem: boolean;
44
- conditions: PolicyCondition[];
45
- action: PolicyAction;
46
- scope: {
47
- agentTypes?: AgentType[];
48
- agentIds?: string[];
49
- };
50
- }
51
- export interface TriggeredPolicy {
52
- policyId: string;
53
- policyName: string;
54
- action: PolicyAction;
55
- matchedConditions: MatchedCondition[];
56
- }
57
- export interface MatchedCondition {
58
- field: string;
59
- operator: string;
60
- expected: unknown;
61
- actual: unknown;
62
- }
63
- export interface PolicyEvaluationResult {
64
- requestId: string;
65
- finalAction: PolicyAction;
66
- triggeredPolicies: TriggeredPolicy[];
67
- evaluationTimeMs: number;
68
- evaluatedAt: string;
69
- }
70
- export interface EvaluationContext {
71
- requestId: string;
72
- agentId: string;
73
- agentType: AgentType;
74
- operation: {
75
- type: string;
76
- target?: string;
77
- toolName?: string;
78
- command?: string;
79
- filePath?: string;
80
- sqlStatement?: string;
81
- apiEndpoint?: string;
82
- };
83
- session: {
84
- costUsd: number;
85
- durationSeconds: number;
86
- approvalCount: number;
87
- };
88
- timestamp: string;
89
- }
90
- /** Prompt 互動類型(預設 'approval') */
91
- export type PromptType = 'approval' | 'native_permission' | 'question';
92
- /** 回應格式類型(預設 'binary') */
93
- export type ResponseType = 'binary' | 'choice' | 'freetext';
94
- /** hopping.ask 支援的回應格式(排除 binary,ask 不支援二元回應) */
95
- export type AskResponseType = Exclude<ResponseType, 'binary'>;
96
- /** 選擇題選項 */
97
- export interface PromptOption {
98
- id: string;
99
- label: string;
100
- description?: string;
101
- /** 若為 true,Mobile 選中後展開 textarea 讓用戶輸入自訂文字。
102
- * 回應時 answer = option.id,customText = 用戶輸入內容。
103
- * Agent 應優先讀取 customText(若有值)作為實際指令。 */
104
- isOther?: boolean;
105
- }
106
- /** 被審核工具的上下文(描述「要執行什麼」,與 taskContext 的「在做什麼」語意不同) */
107
- export interface ToolContext {
108
- /** 工具的人類可讀描述(如 "執行 Shell 指令") */
109
- description?: string;
110
- /** 工具的完整參數(型別與 HoppingCheckInput.toolInput 一致;
111
- * 結構化工具參數屬 Tool Registry 層,不在此處定義) */
112
- parameters?: Record<string, unknown>;
113
- }
114
- export interface PermissionPromptPayload {
115
- id: string;
116
- agentId: string;
117
- toolName: string;
118
- riskLevel: RiskLevel;
119
- summary: string;
120
- policyAction: PolicyAction;
121
- sessionId?: string;
122
- timestamp: string;
123
- /** Hub 對此審核實際使用的超時時間(ms)。Cloud 用此值排程自己的超時清理 job(delay = timeoutMs + buffer)。
124
- * 舊版 Hub 不包含此欄位時,Cloud 使用 300,000ms (5 min) 作為 fallback。 */
125
- timeoutMs?: number;
126
- /** Hub 配置的超時行為(TimeoutDecision — 不含 conditional)。Cloud 用此值決定排程策略:
127
- * 'pending' → 使用 PENDING_SAFETY_NET_MS(12h)延長排程;其他值 → 使用 timeoutMs + buffer。
128
- * undefined → 向下相容,使用預設排程(same as 'timeout')。 */
129
- onTimeout?: TimeoutDecision;
130
- /** 任務上下文(truncated 200 chars each,不含 userPrompt) */
131
- taskContext?: {
132
- taskDescription?: string;
133
- reasoning?: string;
134
- };
135
- /** Prompt 互動類型(預設 'approval';舊版 Hub 不送此欄位時 Mobile 使用 'approval') */
136
- promptType?: PromptType;
137
- /** 回應格式(預設 'binary';舊版 Hub 不送此欄位時 Mobile 使用 'binary') */
138
- responseType?: ResponseType;
139
- /** 選擇題選項(responseType='choice' 時有效) */
140
- options?: PromptOption[];
141
- /** 自由輸入提示文字(responseType='freetext' 時有效) */
142
- placeholder?: string;
143
- /** 被審核工具的上下文(工具描述 + 完整參數,Mobile 用於顯示更豐富的審核資訊) */
144
- toolContext?: ToolContext;
145
- }
146
- export interface AgentStatusPayload {
147
- agentId: string;
148
- status: AgentStatus;
149
- agentName?: string;
150
- agentType?: AgentType;
151
- timestamp: string;
152
- agentMode?: AgentMode;
153
- agentModeChangedAt?: string;
154
- }
155
- export type ProgressMessageType = 'progress' | 'command_ack' | 'status_report' | 'operation_report' | 'task_completed' | 'yolo_observation';
156
- export interface ProgressUpdatePayload {
157
- agentId: string;
158
- sessionId: string;
159
- message: string;
160
- progress?: number;
161
- timestamp: string;
162
- messageType?: ProgressMessageType;
163
- toolName?: string;
164
- riskLevel?: RiskLevel;
165
- decision?: string;
166
- filePaths?: string[];
167
- }
168
- export interface PermissionResponsePayload {
169
- id: string;
170
- decision: ApprovalDecision;
171
- reason?: string;
172
- respondedBy?: string;
173
- timestamp?: string;
174
- /** 用戶選擇的選項 ID(responseType='choice' 時) */
175
- selectedOption?: string;
176
- /** 用戶輸入的自由文字(responseType='freetext' 時) */
177
- freetext?: string;
178
- /** 當選擇 isOther=true 選項時,用戶輸入的自訂文字(選擇題 + 自訂輸入的組合回應) */
179
- customText?: string;
180
- }
181
- export interface DetailRequestPayload {
182
- operationId: string;
183
- }
184
- /** YOLO session 操作歷史項目(Hub → Cloud → Mobile,透過 stats_response.timeline 傳遞) */
185
- export interface SessionTimelineItem {
186
- operationId: string;
187
- toolName: string;
188
- riskLevel: RiskLevel | null;
189
- decision: string | null;
190
- durationMs: number | null;
191
- source: string | null;
192
- createdAt: string;
193
- }
194
- export interface StatsRequestPayload {
195
- agentId: string;
196
- period?: 'day' | 'week' | 'month';
197
- /** JS getTimezoneOffset() semantics: minutes west of UTC. UTC+8 = -480, UTC-7 = 420. Defaults to 0 (UTC). */
198
- timezoneOffset?: number;
199
- /** 查詢類型:'stats'(預設)或 'session_timeline'(YOLO 歷史補齊) */
200
- type?: 'stats' | 'session_timeline';
201
- /** session_timeline 專用:最多回傳筆數(預設 100) */
202
- limit?: number;
203
- /** session_timeline 專用:指定 session(不傳則由 Hub 查最近操作) */
204
- sessionId?: string;
205
- }
206
- export interface CommandPayload {
207
- agentId: string;
208
- command: string;
209
- args?: Record<string, unknown>;
210
- }
211
- export interface StatsRequestBatchPayload {
212
- agentIds: string[];
213
- period?: 'day' | 'week' | 'month';
214
- /** JS getTimezoneOffset() semantics: minutes west of UTC. UTC+8 = -480, UTC-7 = 420. Defaults to 0 (UTC). */
215
- timezoneOffset?: number;
216
- }
217
- export interface StatsResponseBatchPayload {
218
- results: StatsResponsePayload[];
219
- period: 'day' | 'week' | 'month';
220
- }
221
- /** detail_response 錯誤碼 — Gateway 透傳層產生 */
222
- export declare const DETAIL_RESPONSE_ERRORS: {
223
- readonly INVALID_OPERATION_ID: "INVALID_OPERATION_ID";
224
- readonly NOT_FOUND: "NOT_FOUND";
225
- readonly FORBIDDEN: "FORBIDDEN";
226
- readonly HUB_OFFLINE: "HUB_OFFLINE";
227
- readonly INTERNAL_ERROR: "INTERNAL_ERROR";
228
- };
229
- export type DetailResponseError = (typeof DETAIL_RESPONSE_ERRORS)[keyof typeof DETAIL_RESPONSE_ERRORS];
230
- export interface DetailResponsePayload {
231
- operationId: string;
232
- toolName: string;
233
- toolParams?: Record<string, unknown>;
234
- filePaths?: string[];
235
- riskLevel?: RiskLevel;
236
- decision?: ApprovalDecision;
237
- createdAt: string;
238
- decidedAt?: string;
239
- /** 操作元資料(來自 Hub SQLite metadata 表,透過 detail_request 透傳) */
240
- metadata?: {
241
- agentType?: string;
242
- sessionId?: string;
243
- durationMs?: number | null;
244
- contextTags?: Record<string, unknown> | null;
245
- source?: OperationSource;
246
- resultStatus?: ResultStatus;
247
- toolResultSummary?: string;
248
- };
249
- /** Gateway 錯誤碼 — 存在時表示無法取得詳情 */
250
- error?: DetailResponseError;
251
- }
252
- /** stats_response 錯誤碼 — Gateway 透傳層產生 */
253
- export declare const STATS_RESPONSE_ERRORS: {
254
- readonly INVALID_AGENT_ID: "INVALID_AGENT_ID";
255
- readonly AGENT_NOT_FOUND: "AGENT_NOT_FOUND";
256
- readonly HUB_OFFLINE: "HUB_OFFLINE";
257
- readonly TIMEOUT: "TIMEOUT";
258
- readonly INTERNAL_ERROR: "INTERNAL_ERROR";
259
- };
260
- export type StatsResponseError = (typeof STATS_RESPONSE_ERRORS)[keyof typeof STATS_RESPONSE_ERRORS];
261
- export interface StatsResponsePayload {
262
- agentId: string;
263
- period: 'day' | 'week' | 'month';
264
- totalOperations: number;
265
- approvedCount: number;
266
- deniedCount: number;
267
- autoApprovedCount: number;
268
- topTools: Array<{
269
- toolName: string;
270
- count: number;
271
- }>;
272
- /** Gateway 錯誤碼 — 存在時表示無法取得統計資料 */
273
- error?: StatsResponseError;
274
- /** YOLO session 操作歷史(type=session_timeline 時填充) */
275
- timeline?: SessionTimelineItem[];
276
- }
277
- export interface ServerToClientEvents {
278
- permission_prompt: (payload: PermissionPromptPayload) => void;
279
- agent_status: (payload: AgentStatusPayload) => void;
280
- progress_update: (payload: ProgressUpdatePayload) => void;
281
- detail_response: (payload: DetailResponsePayload) => void;
282
- stats_response: (payload: StatsResponsePayload) => void;
283
- stats_response_batch: (payload: StatsResponseBatchPayload) => void;
284
- }
285
- export interface ClientToServerEvents {
286
- permission_response: (payload: PermissionResponsePayload) => void;
287
- detail_request: (payload: DetailRequestPayload) => void;
288
- stats_request: (payload: StatsRequestPayload) => void;
289
- stats_request_batch: (payload: StatsRequestBatchPayload) => void;
290
- command: (payload: CommandPayload) => void;
291
- }
292
- export type HubToCloudEvents = ServerToClientEvents;
293
- export type CloudToHubEvents = ClientToServerEvents;
294
- export type HoppingToolName = 'hopping.check' | 'hopping.report' | 'hopping.status' | 'hopping.pair' | 'hopping.respond' | 'hopping.ask' | 'hopping.mode';
295
- export interface HoppingCheckInput {
296
- toolName: string;
297
- toolInput: Record<string, unknown>;
298
- sessionId?: string;
299
- cwd?: string;
300
- context?: {
301
- recentFiles?: string[];
302
- branch?: string;
303
- project?: string;
304
- /** Agent 正在執行的任務描述(由 Skill 引導提供) */
305
- taskDescription?: string;
306
- /** Agent 為什麼需要此操作的推理(由 Skill 引導提供) */
307
- reasoning?: string;
308
- /** 用戶的原始 prompt(敏感資料,僅存本地 Hub SQLite,不送 Cloud) */
309
- userPrompt?: string;
310
- };
311
- }
312
- export interface HoppingCheckOutput {
313
- approvalId: string;
314
- decision: ApprovalDecision;
315
- riskLevel: RiskLevel;
316
- policyResult: PolicyEvaluationResult;
317
- message: string;
318
- waitedForRemote: boolean;
319
- }
320
- export interface HoppingReportInput {
321
- toolName: string;
322
- toolParams?: Record<string, unknown>;
323
- result?: string;
324
- duration?: number;
325
- success?: boolean;
326
- filePaths?: string[];
327
- sessionId?: string;
328
- agentType?: string;
329
- context?: {
330
- branch?: string;
331
- project?: string;
332
- cwd?: string;
333
- taskCompleted?: boolean;
334
- };
335
- }
336
- export interface HoppingReportOutput {
337
- recorded: boolean;
338
- operationId: string;
339
- }
340
- export interface HoppingStatusInput {
341
- query?: 'sessions' | 'pending' | 'stats' | 'all';
342
- agentId?: string;
343
- }
344
- export interface HoppingStatusOutput {
345
- activeSessions: number;
346
- pendingApprovals: number;
347
- todayOperations: number;
348
- hubUptime: number;
349
- connectedToCloud: boolean;
350
- /** S4-HUB-DONTASK-001: Don't-ask-again tools currently in session memory */
351
- sessionMemory?: Array<{
352
- toolName: string;
353
- riskLevel: RiskLevel;
354
- addedAt: number;
355
- }>;
356
- }
357
- export interface HoppingRespondInput {
358
- approvalId: string;
359
- decision: 'approved' | 'denied';
360
- reason?: string;
361
- }
362
- export interface HoppingRespondOutput {
363
- success: boolean;
364
- decision?: ApprovalDecision;
365
- source?: 'local' | 'remote';
366
- error?: string;
367
- }
368
- export interface HoppingAskInput {
369
- question: string;
370
- responseType: AskResponseType;
371
- options?: PromptOption[];
372
- placeholder?: string;
373
- context?: {
374
- taskDescription?: string;
375
- reasoning?: string;
376
- };
377
- }
378
- /** hopping.ask 回應狀態 */
379
- export type AskStatus = 'ask_locally' | 'answered' | 'timeout';
380
- export interface HoppingAskOutput {
381
- questionId: string;
382
- /** 回應狀態:ask_locally(local 模式立即回傳)、answered(away 模式收到回答)、timeout(away 模式超時) */
383
- status: AskStatus;
384
- /** responseType='choice' 時為選中的 option.id;responseType='freetext' 時為用戶輸入文字 */
385
- answer: string;
386
- /** 當用戶選擇 isOther=true 選項時,用戶輸入的自訂文字。
387
- * Agent 應優先讀取 customText(若有值)作為實際指令,answer 為選項 id。 */
388
- customText?: string;
389
- respondedBy: 'mobile' | 'local';
390
- message: string;
391
- }
392
- export type AskMode = 'local' | 'away';
393
- export interface HoppingModeInput {
394
- mode: AskMode;
395
- }
396
- export interface HoppingModeOutput {
397
- mode: AskMode;
398
- message: string;
399
- }
400
- /** hopping.ask 的 timeout 設定(~/.hopping/config.json askConfig section) */
401
- export interface AskConfig {
402
- timeoutEnabled: boolean;
403
- timeoutMs: number;
404
- }
405
- export interface HoppingPairInput {
406
- pairingCode: string;
407
- cloudUrl?: string;
408
- }
409
- export interface HoppingPairOutput {
410
- paired: boolean;
411
- agentId?: string;
412
- agentName?: string;
413
- connectedToCloud: boolean;
414
- message: string;
415
- }
416
- /** operations 表對應 */
417
- export interface OperationRecord {
418
- id: string;
419
- approvalId: string | null;
420
- toolName: string;
421
- toolParams: string | null;
422
- filePaths: string | null;
423
- riskLevel: RiskLevel | null;
424
- decision: ApprovalDecision | null;
425
- createdAt: string;
426
- decidedAt: string | null;
427
- /** Claude Code tool_use_id — pre/post 關聯鍵(v3 新增) */
428
- toolUseId: string | null;
429
- /** Prompt 互動類型(v4 新增) */
430
- promptType?: PromptType | null;
431
- /** 回應格式類型(v4 新增) */
432
- responseType?: ResponseType | null;
433
- /** Rich response JSON:{ selectedOption?, freetext?, customText? }(v4 新增) */
434
- responseData?: string | null;
435
- }
436
- /** metadata.source 的值域 */
437
- export type OperationSource = 'check' | 'report' | 'hook';
438
- /** metadata.result_status 的值域 */
439
- export type ResultStatus = 'success' | 'failure' | 'unknown';
440
- /** metadata 表對應 */
441
- export interface OperationMetadataRecord {
442
- id: number;
443
- operationId: string;
444
- agentType: string;
445
- sessionId: string;
446
- durationMs: number | null;
447
- tokenUsage: number | null;
448
- contextTags: string | null;
449
- source: OperationSource | null;
450
- resultStatus: ResultStatus | null;
451
- toolResultSummary: string | null;
452
- createdAt: string;
453
- }
454
- export interface PaginatedResponse<T> {
455
- data: T[];
456
- meta: {
457
- total: number;
458
- page: number;
459
- limit: number;
460
- totalPages: number;
461
- timestamp: string;
462
- };
463
- }
464
- export interface PaginationQuery {
465
- page?: number;
466
- limit?: number;
467
- sortBy?: string;
468
- sortOrder?: 'asc' | 'desc';
469
- }
470
- /** User 公開資訊(不含 OAuth 敏感欄位) */
471
- export interface UserDto {
472
- id: string;
473
- email: string;
474
- name: string | null;
475
- avatarUrl: string | null;
476
- createdAt: string;
477
- }
478
- /** Agent 公開資訊(不含 token) */
479
- export interface AgentDto {
480
- id: string;
481
- name: string;
482
- agentType: AgentType;
483
- status: AgentStatus;
484
- createdAt: string;
485
- updatedAt: string;
486
- }
487
- /** Approval 摘要 DTO */
488
- export interface ApprovalSummaryDto {
489
- id: string;
490
- agentId: string;
491
- toolName: string;
492
- riskLevel: RiskLevel;
493
- summary: string;
494
- decision: ApprovalDecision | null;
495
- reason: string | null;
496
- policyAction: PolicyAction | null;
497
- sessionId: string | null;
498
- taskDescription: string | null;
499
- reasoning: string | null;
500
- createdAt: string;
501
- decidedAt: string | null;
502
- promptType: PromptType | null;
503
- responseType: ResponseType | null;
504
- selectedOption: string | null;
505
- freetext: string | null;
506
- customText: string | null;
507
- options: PromptOption[] | null;
508
- placeholder: string | null;
509
- timeoutMs: number | null;
510
- toolDescription: string | null;
511
- }
512
- export type SessionStatus = 'active' | 'idle' | 'disconnected' | 'closed';
513
- export interface SessionMessage {
514
- id: string;
515
- sessionId: string;
516
- sender: 'user' | 'agent' | 'system';
517
- content: string;
518
- status?: 'pending' | 'executing' | 'awaiting_approval' | 'done' | 'error';
519
- timestamp: string;
520
- metadata?: {
521
- tokensUsed?: number;
522
- operationType?: string;
523
- approvalId?: string;
524
- };
525
- }
526
- export interface Session {
527
- id: string;
528
- agentId: string;
529
- agentType: AgentType;
530
- agentName: string;
531
- status: SessionStatus;
532
- createdAt: string;
533
- lastActivity: string;
534
- messages: SessionMessage[];
535
- metadata: {
536
- totalTokens: number;
537
- totalApprovals: number;
538
- totalRejections: number;
539
- costUsd: number;
540
- };
541
- }
542
- export type DevMode = 'isolated' | 'allowlist' | 'full' | 'yolo';
543
- /** Agent 操作模式('normal' = 一般審核模式,'yolo' = 觀測模式自動放行) */
544
- export type AgentMode = 'normal' | 'yolo';
545
- /** Hub 本地持久化設定(配對後寫入,token 讀取優先順序:env > 此檔 > 無) */
546
- export interface HubLocalConfig {
547
- agentId: string;
548
- token: string;
549
- cloudUrl: string;
550
- pairedAt: string;
551
- }
552
- /** 審核請求:Hook 寫入 ~/.hopping/pending/{id}.json */
553
- export interface IpcPendingRequest {
554
- id: string;
555
- toolName: string;
556
- toolInput: Record<string, unknown>;
557
- sessionId?: string;
558
- cwd?: string;
559
- /** Claude Code 提供的 tool_use_id,用於追蹤同一次工具呼叫的 pre/post 事件 */
560
- toolUseId?: string;
561
- timestamp: string;
562
- }
563
- /** 審核結果:Hub 寫入 ~/.hopping/resolved/{id}.json */
564
- export interface IpcResolvedResponse {
565
- id: string;
566
- approved: boolean;
567
- reason?: string;
568
- timestamp: string;
569
- }
570
- /** 觀測記錄:post-tool-use Hook 直接寫入 Hub SQLite */
571
- export interface IpcOperationRecord {
572
- id: string;
573
- toolName: string;
574
- toolParams?: string;
575
- filePaths?: string;
576
- riskLevel?: RiskLevel;
577
- decision?: ApprovalDecision;
578
- createdAt: string;
579
- }
580
- export interface ConnectedMessage {
581
- type: 'connected';
582
- message: string;
583
- timestamp: string;
584
- }
585
- export interface PingMessage {
586
- type: 'ping';
587
- }
588
- export interface PongMessage {
589
- type: 'pong';
590
- }
591
- export type OAuthProvider = 'github' | 'google';
592
- /** Token Exchange request (Mobile → Backend) */
593
- export interface TokenExchangeRequest {
594
- provider: OAuthProvider;
595
- code: string;
596
- codeVerifier: string;
597
- redirectUri: string;
598
- }
599
- /** Auth token response (Backend → Mobile) — includes refresh token */
600
- export interface AuthTokenResponse {
601
- accessToken: string;
602
- refreshToken: string;
603
- tokenType: 'Bearer';
604
- expiresIn: number;
605
- user: {
606
- id: string;
607
- email: string;
608
- name: string | null;
609
- avatarUrl: string | null;
610
- };
611
- }
612
- /** Refresh token request (Mobile → Backend) */
613
- export interface RefreshTokenRequest {
614
- refreshToken: string;
615
- }
616
- /** Refresh token response (Backend → Mobile) — no user object */
617
- export interface RefreshTokenResponse {
618
- accessToken: string;
619
- refreshToken: string;
620
- tokenType: 'Bearer';
621
- expiresIn: number;
622
- }
623
- /** JWT payload stored in token */
624
- export interface JwtTokenPayload {
625
- sub: string;
626
- email: string;
627
- provider: OAuthProvider;
628
- iat: number;
629
- exp: number;
630
- }
631
- export interface DeduplicationEntry {
632
- operationId: string;
633
- result: 'approved' | 'rejected';
634
- timestamp: number;
635
- }
636
- /** 本地審核通道設定(~/.hopping/config.json localApproval section) */
637
- export interface LocalApprovalConfig {
638
- enabled: boolean;
639
- dialogEnabled: boolean;
640
- soundEnabled: boolean;
641
- raceMode: boolean;
642
- }
643
- /** 本地審核決策來源 */
644
- export type LocalApprovalSource = 'local_dialog' | 'local_respond' | 'timeout';
645
- /** LocalApprovalChannel.requestApproval() 回傳結果 */
646
- export interface LocalApprovalResult {
647
- decision: 'approved' | 'denied' | 'timeout';
648
- source: LocalApprovalSource;
649
- }
650
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AASA,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7F,wDAAwD;AACxD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5E,qCAAqC;AACrC,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAMzD,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEjE,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,iBAAiB,GACjB,WAAW,GACX,eAAe,GACf,cAAc,GACd,iBAAiB,CAAC;AAEtB,kCAAkC;AAClC,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAsB/D;AAMD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,YAAY,GACZ,kBAAkB,GAClB,gBAAgB,GAChB,QAAQ,CAAC;AAEb,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,cAAc,GACd,YAAY,GACZ,cAAc,GACd,aAAa,GACb,YAAY,GACZ,aAAa,GACb,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,SAAS,GACT,aAAa,CAAC;AAElB,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE;QACL,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,YAAY,CAAC;IAC1B,iBAAiB,EAAE,eAAe,EAAE,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,iCAAiC;AACjC,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,mBAAmB,GAAG,UAAU,CAAC;AAEvE,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,iDAAiD;AACjD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE9D,YAAY;AACZ,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;6CAEyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;2CACuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AASD,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB;iEAC6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;sDAEkD;IAClD,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oDAAoD;IACpD,WAAW,CAAC,EAAE;QACZ,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oEAAoE;IACpE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yDAAyD;IACzD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uCAAuC;IACvC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAID,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,6GAA6G;IAC7G,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACpC,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAClC,6GAA6G;IAC7G,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CAClC;AAID,0CAA0C;AAC1C,eAAO,MAAM,sBAAsB;;;;;;CAMzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,OAAO,sBAAsB,CAAC,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QAC7C,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,gCAAgC;IAChC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,yCAAyC;AACzC,eAAO,MAAM,qBAAqB;;;;;;CAMxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAEpG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,kCAAkC;IAClC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAID,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC9D,YAAY,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,eAAe,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC1D,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,oBAAoB,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAClE,cAAc,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,mBAAmB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACjE,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAGD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAGpD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAMpD,MAAM,MAAM,eAAe,GACvB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,cAAc,CAAC;AAGnB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,oCAAoC;QACpC,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,sCAAsC;QACtC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,sBAAsB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAGD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAGD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,uBAAuB;AACvB,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,MAAM,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf;2DACuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAqB;AACrB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oDAAoD;IACpD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yBAAyB;IACzB,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC/B,oBAAoB;IACpB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,0BAA0B;AAC1B,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1D,iCAAiC;AACjC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,mBAAmB;AACnB,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,+BAA+B;AAC/B,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2BAA2B;AAC3B,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sBAAsB;AACtB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAMD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAMD,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjE,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAM1C,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC;CACH;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAMD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAe;AACf,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG,eAAe,GAAG,SAAS,CAAC;AAE/E,kDAAkD;AAClD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,MAAM,EAAE,mBAAmB,CAAC;CAC7B"}