@yuaone/core 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.
Files changed (235) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +15 -0
  3. package/dist/__tests__/context-manager.test.d.ts +6 -0
  4. package/dist/__tests__/context-manager.test.d.ts.map +1 -0
  5. package/dist/__tests__/context-manager.test.js +220 -0
  6. package/dist/__tests__/context-manager.test.js.map +1 -0
  7. package/dist/__tests__/governor.test.d.ts +6 -0
  8. package/dist/__tests__/governor.test.d.ts.map +1 -0
  9. package/dist/__tests__/governor.test.js +210 -0
  10. package/dist/__tests__/governor.test.js.map +1 -0
  11. package/dist/__tests__/model-router.test.d.ts +6 -0
  12. package/dist/__tests__/model-router.test.d.ts.map +1 -0
  13. package/dist/__tests__/model-router.test.js +329 -0
  14. package/dist/__tests__/model-router.test.js.map +1 -0
  15. package/dist/agent-logger.d.ts +384 -0
  16. package/dist/agent-logger.d.ts.map +1 -0
  17. package/dist/agent-logger.js +820 -0
  18. package/dist/agent-logger.js.map +1 -0
  19. package/dist/agent-loop.d.ts +163 -0
  20. package/dist/agent-loop.d.ts.map +1 -0
  21. package/dist/agent-loop.js +609 -0
  22. package/dist/agent-loop.js.map +1 -0
  23. package/dist/agent-modes.d.ts +85 -0
  24. package/dist/agent-modes.d.ts.map +1 -0
  25. package/dist/agent-modes.js +418 -0
  26. package/dist/agent-modes.js.map +1 -0
  27. package/dist/approval.d.ts +137 -0
  28. package/dist/approval.d.ts.map +1 -0
  29. package/dist/approval.js +299 -0
  30. package/dist/approval.js.map +1 -0
  31. package/dist/async-completion-queue.d.ts +56 -0
  32. package/dist/async-completion-queue.d.ts.map +1 -0
  33. package/dist/async-completion-queue.js +77 -0
  34. package/dist/async-completion-queue.js.map +1 -0
  35. package/dist/auto-fix.d.ts +174 -0
  36. package/dist/auto-fix.d.ts.map +1 -0
  37. package/dist/auto-fix.js +319 -0
  38. package/dist/auto-fix.js.map +1 -0
  39. package/dist/codebase-context.d.ts +396 -0
  40. package/dist/codebase-context.d.ts.map +1 -0
  41. package/dist/codebase-context.js +1260 -0
  42. package/dist/codebase-context.js.map +1 -0
  43. package/dist/conflict-resolver.d.ts +191 -0
  44. package/dist/conflict-resolver.d.ts.map +1 -0
  45. package/dist/conflict-resolver.js +524 -0
  46. package/dist/conflict-resolver.js.map +1 -0
  47. package/dist/constants.d.ts +52 -0
  48. package/dist/constants.d.ts.map +1 -0
  49. package/dist/constants.js +141 -0
  50. package/dist/constants.js.map +1 -0
  51. package/dist/context-budget.d.ts +435 -0
  52. package/dist/context-budget.d.ts.map +1 -0
  53. package/dist/context-budget.js +903 -0
  54. package/dist/context-budget.js.map +1 -0
  55. package/dist/context-compressor.d.ts +143 -0
  56. package/dist/context-compressor.d.ts.map +1 -0
  57. package/dist/context-compressor.js +511 -0
  58. package/dist/context-compressor.js.map +1 -0
  59. package/dist/context-manager.d.ts +112 -0
  60. package/dist/context-manager.d.ts.map +1 -0
  61. package/dist/context-manager.js +247 -0
  62. package/dist/context-manager.js.map +1 -0
  63. package/dist/continuous-reflection.d.ts +267 -0
  64. package/dist/continuous-reflection.d.ts.map +1 -0
  65. package/dist/continuous-reflection.js +338 -0
  66. package/dist/continuous-reflection.js.map +1 -0
  67. package/dist/cross-file-refactor.d.ts +352 -0
  68. package/dist/cross-file-refactor.d.ts.map +1 -0
  69. package/dist/cross-file-refactor.js +1544 -0
  70. package/dist/cross-file-refactor.js.map +1 -0
  71. package/dist/dag-orchestrator.d.ts +138 -0
  72. package/dist/dag-orchestrator.d.ts.map +1 -0
  73. package/dist/dag-orchestrator.js +379 -0
  74. package/dist/dag-orchestrator.js.map +1 -0
  75. package/dist/debate-orchestrator.d.ts +301 -0
  76. package/dist/debate-orchestrator.d.ts.map +1 -0
  77. package/dist/debate-orchestrator.js +719 -0
  78. package/dist/debate-orchestrator.js.map +1 -0
  79. package/dist/dependency-analyzer.d.ts +113 -0
  80. package/dist/dependency-analyzer.d.ts.map +1 -0
  81. package/dist/dependency-analyzer.js +444 -0
  82. package/dist/dependency-analyzer.js.map +1 -0
  83. package/dist/design-loop.d.ts +59 -0
  84. package/dist/design-loop.d.ts.map +1 -0
  85. package/dist/design-loop.js +344 -0
  86. package/dist/design-loop.js.map +1 -0
  87. package/dist/doc-intelligence.d.ts +383 -0
  88. package/dist/doc-intelligence.d.ts.map +1 -0
  89. package/dist/doc-intelligence.js +1307 -0
  90. package/dist/doc-intelligence.js.map +1 -0
  91. package/dist/dynamic-role-generator.d.ts +76 -0
  92. package/dist/dynamic-role-generator.d.ts.map +1 -0
  93. package/dist/dynamic-role-generator.js +194 -0
  94. package/dist/dynamic-role-generator.js.map +1 -0
  95. package/dist/errors.d.ts +69 -0
  96. package/dist/errors.d.ts.map +1 -0
  97. package/dist/errors.js +102 -0
  98. package/dist/errors.js.map +1 -0
  99. package/dist/event-bus.d.ts +159 -0
  100. package/dist/event-bus.d.ts.map +1 -0
  101. package/dist/event-bus.js +305 -0
  102. package/dist/event-bus.js.map +1 -0
  103. package/dist/execution-engine.d.ts +425 -0
  104. package/dist/execution-engine.d.ts.map +1 -0
  105. package/dist/execution-engine.js +1555 -0
  106. package/dist/execution-engine.js.map +1 -0
  107. package/dist/git-intelligence.d.ts +306 -0
  108. package/dist/git-intelligence.d.ts.map +1 -0
  109. package/dist/git-intelligence.js +1099 -0
  110. package/dist/git-intelligence.js.map +1 -0
  111. package/dist/governor.d.ts +77 -0
  112. package/dist/governor.d.ts.map +1 -0
  113. package/dist/governor.js +161 -0
  114. package/dist/governor.js.map +1 -0
  115. package/dist/hierarchical-planner.d.ts +313 -0
  116. package/dist/hierarchical-planner.d.ts.map +1 -0
  117. package/dist/hierarchical-planner.js +981 -0
  118. package/dist/hierarchical-planner.js.map +1 -0
  119. package/dist/index.d.ts +121 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +123 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/intent-inference.d.ts +103 -0
  124. package/dist/intent-inference.d.ts.map +1 -0
  125. package/dist/intent-inference.js +605 -0
  126. package/dist/intent-inference.js.map +1 -0
  127. package/dist/interrupt-manager.d.ts +143 -0
  128. package/dist/interrupt-manager.d.ts.map +1 -0
  129. package/dist/interrupt-manager.js +196 -0
  130. package/dist/interrupt-manager.js.map +1 -0
  131. package/dist/kernel.d.ts +564 -0
  132. package/dist/kernel.d.ts.map +1 -0
  133. package/dist/kernel.js +1419 -0
  134. package/dist/kernel.js.map +1 -0
  135. package/dist/language-support.d.ts +232 -0
  136. package/dist/language-support.d.ts.map +1 -0
  137. package/dist/language-support.js +1134 -0
  138. package/dist/language-support.js.map +1 -0
  139. package/dist/llm-client.d.ts +82 -0
  140. package/dist/llm-client.d.ts.map +1 -0
  141. package/dist/llm-client.js +475 -0
  142. package/dist/llm-client.js.map +1 -0
  143. package/dist/mcp-client.d.ts +232 -0
  144. package/dist/mcp-client.d.ts.map +1 -0
  145. package/dist/mcp-client.js +718 -0
  146. package/dist/mcp-client.js.map +1 -0
  147. package/dist/memory-manager.d.ts +200 -0
  148. package/dist/memory-manager.d.ts.map +1 -0
  149. package/dist/memory-manager.js +568 -0
  150. package/dist/memory-manager.js.map +1 -0
  151. package/dist/memory.d.ts +87 -0
  152. package/dist/memory.d.ts.map +1 -0
  153. package/dist/memory.js +341 -0
  154. package/dist/memory.js.map +1 -0
  155. package/dist/model-router.d.ts +245 -0
  156. package/dist/model-router.d.ts.map +1 -0
  157. package/dist/model-router.js +632 -0
  158. package/dist/model-router.js.map +1 -0
  159. package/dist/parallel-executor.d.ts +125 -0
  160. package/dist/parallel-executor.d.ts.map +1 -0
  161. package/dist/parallel-executor.js +201 -0
  162. package/dist/parallel-executor.js.map +1 -0
  163. package/dist/perf-optimizer.d.ts +212 -0
  164. package/dist/perf-optimizer.d.ts.map +1 -0
  165. package/dist/perf-optimizer.js +721 -0
  166. package/dist/perf-optimizer.js.map +1 -0
  167. package/dist/persona.d.ts +305 -0
  168. package/dist/persona.d.ts.map +1 -0
  169. package/dist/persona.js +887 -0
  170. package/dist/persona.js.map +1 -0
  171. package/dist/planner.d.ts +70 -0
  172. package/dist/planner.d.ts.map +1 -0
  173. package/dist/planner.js +264 -0
  174. package/dist/planner.js.map +1 -0
  175. package/dist/qa-pipeline.d.ts +365 -0
  176. package/dist/qa-pipeline.d.ts.map +1 -0
  177. package/dist/qa-pipeline.js +1352 -0
  178. package/dist/qa-pipeline.js.map +1 -0
  179. package/dist/reasoning-adapter.d.ts +116 -0
  180. package/dist/reasoning-adapter.d.ts.map +1 -0
  181. package/dist/reasoning-adapter.js +187 -0
  182. package/dist/reasoning-adapter.js.map +1 -0
  183. package/dist/role-registry.d.ts +55 -0
  184. package/dist/role-registry.d.ts.map +1 -0
  185. package/dist/role-registry.js +192 -0
  186. package/dist/role-registry.js.map +1 -0
  187. package/dist/sandbox-tiers.d.ts +327 -0
  188. package/dist/sandbox-tiers.d.ts.map +1 -0
  189. package/dist/sandbox-tiers.js +928 -0
  190. package/dist/sandbox-tiers.js.map +1 -0
  191. package/dist/security-scanner.d.ts +222 -0
  192. package/dist/security-scanner.d.ts.map +1 -0
  193. package/dist/security-scanner.js +1129 -0
  194. package/dist/security-scanner.js.map +1 -0
  195. package/dist/security.d.ts +93 -0
  196. package/dist/security.d.ts.map +1 -0
  197. package/dist/security.js +393 -0
  198. package/dist/security.js.map +1 -0
  199. package/dist/self-reflection.d.ts +397 -0
  200. package/dist/self-reflection.d.ts.map +1 -0
  201. package/dist/self-reflection.js +908 -0
  202. package/dist/self-reflection.js.map +1 -0
  203. package/dist/session-persistence.d.ts +191 -0
  204. package/dist/session-persistence.d.ts.map +1 -0
  205. package/dist/session-persistence.js +395 -0
  206. package/dist/session-persistence.js.map +1 -0
  207. package/dist/speculative-executor.d.ts +210 -0
  208. package/dist/speculative-executor.d.ts.map +1 -0
  209. package/dist/speculative-executor.js +618 -0
  210. package/dist/speculative-executor.js.map +1 -0
  211. package/dist/state-machine.d.ts +289 -0
  212. package/dist/state-machine.d.ts.map +1 -0
  213. package/dist/state-machine.js +695 -0
  214. package/dist/state-machine.js.map +1 -0
  215. package/dist/sub-agent.d.ts +177 -0
  216. package/dist/sub-agent.d.ts.map +1 -0
  217. package/dist/sub-agent.js +303 -0
  218. package/dist/sub-agent.js.map +1 -0
  219. package/dist/system-prompt.d.ts +26 -0
  220. package/dist/system-prompt.d.ts.map +1 -0
  221. package/dist/system-prompt.js +84 -0
  222. package/dist/system-prompt.js.map +1 -0
  223. package/dist/test-intelligence.d.ts +439 -0
  224. package/dist/test-intelligence.d.ts.map +1 -0
  225. package/dist/test-intelligence.js +1165 -0
  226. package/dist/test-intelligence.js.map +1 -0
  227. package/dist/types.d.ts +632 -0
  228. package/dist/types.d.ts.map +1 -0
  229. package/dist/types.js +6 -0
  230. package/dist/types.js.map +1 -0
  231. package/dist/vector-index.d.ts +314 -0
  232. package/dist/vector-index.d.ts.map +1 -0
  233. package/dist/vector-index.js +618 -0
  234. package/dist/vector-index.js.map +1 -0
  235. package/package.json +41 -0
@@ -0,0 +1,564 @@
1
+ /**
2
+ * @module kernel
3
+ * @description YUAN Agent Kernel — 4 Core Abstractions (SSOT)
4
+ *
5
+ * 1. AgentSession (KernelSession) — 실행 단위의 단일 진실 원본
6
+ * 2. PlanGraph (PlanGraphManager) — 계획의 운영 상태 관리
7
+ * 3. ToolContract (ToolContractRegistry) — 도구 계약 SSOT
8
+ * 4. EventLog — 모든 것을 이벤트로 기록
9
+ *
10
+ * 이 파일의 인터페이스와 클래스를 시스템 전체에서 SSOT로 참조한다.
11
+ */
12
+ import type { ExecutionPlan, ToolDefinition } from "./types.js";
13
+ /** 승인 대기 정보 */
14
+ export interface PendingApprovalInfo {
15
+ /** 고유 ID */
16
+ id: string;
17
+ /** 도구 이름 */
18
+ toolName: string;
19
+ /** 도구 인자 */
20
+ toolInput: Record<string, unknown>;
21
+ /** 위험도 */
22
+ risk: "low" | "medium" | "high" | "critical";
23
+ /** 유저에게 보여줄 설명 */
24
+ description: string;
25
+ /** 요청 시각 (epoch ms) */
26
+ requestedAt: number;
27
+ /** 타임아웃 (ms) */
28
+ timeoutMs: number;
29
+ }
30
+ /** 승인 기록 */
31
+ export interface ApprovalRecord {
32
+ /** 고유 ID */
33
+ id: string;
34
+ /** 도구 이름 */
35
+ toolName: string;
36
+ /** 위험도 */
37
+ risk: string;
38
+ /** 유저 응답 */
39
+ response: "approve" | "reject" | "always_approve";
40
+ /** 응답 시각 (epoch ms) */
41
+ respondedAt: number;
42
+ }
43
+ /** 세션 체크포인트 — 복구 지점 */
44
+ export interface SessionCheckpoint {
45
+ /** 체크포인트 ID */
46
+ id: string;
47
+ /** 생성 시각 (epoch ms) */
48
+ timestamp: number;
49
+ /** 체크포인트 시점의 phase */
50
+ phase: string;
51
+ /** 반복 횟수 */
52
+ iterationCount: number;
53
+ /** 토큰 사용량 */
54
+ tokenUsage: {
55
+ input: number;
56
+ output: number;
57
+ };
58
+ /** 변경된 파일 경로 목록 */
59
+ changedFiles: string[];
60
+ /** 체크포인트 요약 */
61
+ summary: string;
62
+ /** 작업 메모리 (자유 형식) */
63
+ workingMemory: Record<string, unknown>;
64
+ }
65
+ /**
66
+ * KernelSession — 에이전트 실행 단위의 전체 상태.
67
+ *
68
+ * AgentLoop, Governor, Planner 등 모든 모듈이 이 인터페이스를 통해
69
+ * 세션 상태를 조회/변경한다.
70
+ */
71
+ export interface KernelSession {
72
+ /** 세션 고유 ID */
73
+ id: string;
74
+ /** 실행 고유 ID (같은 세션의 재실행 구분) */
75
+ runId: string;
76
+ /** 에이전트에게 주어진 목표 */
77
+ goal: string;
78
+ /** 실행 모드 ("code" | "review" | "debug" 등) */
79
+ mode: string;
80
+ /** 프로젝트 루트 경로 */
81
+ projectPath: string;
82
+ /** 프로젝트 이름 */
83
+ projectName: string;
84
+ /** 현재 상태 머신 phase */
85
+ phase: string;
86
+ /** 세션 상태 */
87
+ status: "initializing" | "running" | "paused" | "waiting_approval" | "completed" | "failed" | "stopped";
88
+ /** 변경된 파일 경로 집합 */
89
+ changedFiles: Set<string>;
90
+ /** 파일별 원본 스냅샷 (변경 전 내용) */
91
+ originalSnapshots: Map<string, string>;
92
+ /** 현재 작업 중인 파일 */
93
+ activeFiles: Set<string>;
94
+ /** 현재 계획 ID (없으면 null) */
95
+ currentPlan: string | null;
96
+ /** 현재 진행 중인 단계 인덱스 */
97
+ currentStep: number;
98
+ /** 토큰 예산 */
99
+ tokenBudget: {
100
+ total: number;
101
+ used: {
102
+ input: number;
103
+ output: number;
104
+ };
105
+ };
106
+ /** 반복 예산 */
107
+ iterationBudget: {
108
+ max: number;
109
+ current: number;
110
+ };
111
+ /** 현재 대기 중인 승인 (없으면 null) */
112
+ pendingApproval: PendingApprovalInfo | null;
113
+ /** 승인 히스토리 */
114
+ approvalHistory: ApprovalRecord[];
115
+ /** 체크포인트 목록 */
116
+ checkpoints: SessionCheckpoint[];
117
+ /** 마지막 체크포인트 시각 (epoch ms) */
118
+ lastCheckpointAt: number;
119
+ /** 현재 등록된 도구 이름 목록 */
120
+ activeTools: string[];
121
+ /** 생성 시각 (epoch ms) */
122
+ createdAt: number;
123
+ /** 마지막 업데이트 시각 (epoch ms) */
124
+ updatedAt: number;
125
+ /** 실행 시작 시각 (epoch ms, 미시작이면 null) */
126
+ startedAt: number | null;
127
+ /** 완료 시각 (epoch ms, 미완료면 null) */
128
+ completedAt: number | null;
129
+ /** 프로젝트 메모리 파일 경로 (YUAN.md) */
130
+ projectMemoryPath: string;
131
+ }
132
+ /**
133
+ * PlanGraph는 ExecutionPlan을 런타임 상태로 래핑한다.
134
+ * LLM이 계획을 생성하고, PlanGraph가 실행 상태를 관리한다.
135
+ */
136
+ /** 계획 노드의 상태 */
137
+ export type PlanNodeStatus = "pending" | "ready" | "running" | "completed" | "failed" | "skipped" | "blocked";
138
+ /** 계획 그래프의 개별 노드 */
139
+ export interface PlanNode {
140
+ /** 노드 ID */
141
+ id: string;
142
+ /** 노드 목표 */
143
+ goal: string;
144
+ /** 대상 파일 */
145
+ targetFiles: string[];
146
+ /** 필요한 도구 */
147
+ tools: string[];
148
+ /** 의존하는 노드 ID 목록 */
149
+ dependsOn: string[];
150
+ /** 현재 상태 */
151
+ status: PlanNodeStatus;
152
+ /** 실행 시작 시각 */
153
+ startedAt: number | null;
154
+ /** 완료 시각 */
155
+ completedAt: number | null;
156
+ /** 실행 결과 요약 */
157
+ result: string | null;
158
+ /** 에러 메시지 */
159
+ error: string | null;
160
+ /** 변경된 파일 */
161
+ changedFiles: string[];
162
+ /** 토큰 사용량 */
163
+ tokensUsed: {
164
+ input: number;
165
+ output: number;
166
+ };
167
+ /** 시도 횟수 */
168
+ attempts: number;
169
+ /** 최대 시도 횟수 */
170
+ maxAttempts: number;
171
+ }
172
+ /** 계획 그래프의 전체 상태 */
173
+ export interface PlanGraphState {
174
+ /** 그래프 ID */
175
+ id: string;
176
+ /** 소속 세션 ID */
177
+ sessionId: string;
178
+ /** 전체 목표 */
179
+ goal: string;
180
+ /** 노드 맵 (id → PlanNode) */
181
+ nodes: Map<string, PlanNode>;
182
+ /** 완료된 노드 ID */
183
+ completedNodes: string[];
184
+ /** 실행 중인 노드 ID */
185
+ runningNodes: string[];
186
+ /** 대기 중인 노드 ID */
187
+ pendingNodes: string[];
188
+ /** 실패한 노드 ID */
189
+ failedNodes: string[];
190
+ /** 건너뛴 노드 ID */
191
+ skippedNodes: string[];
192
+ /** 전체 토큰 사용량 */
193
+ totalTokensUsed: {
194
+ input: number;
195
+ output: number;
196
+ };
197
+ /** 그래프 시작 시각 */
198
+ startedAt: number;
199
+ /** 예상 완료 시각 (없으면 null) */
200
+ estimatedCompletion: number | null;
201
+ /** 크리티컬 패스 (가장 긴 의존 체인) */
202
+ criticalPath: string[];
203
+ /** 병렬 실행 가능한 노드 그룹 */
204
+ parallelGroups: string[][];
205
+ }
206
+ /** 노드 추가 시 시스템이 자동으로 채우는 필드를 제외한 입력 타입 */
207
+ type PlanNodeInput = Omit<PlanNode, "status" | "startedAt" | "completedAt" | "result" | "error" | "changedFiles" | "tokensUsed" | "attempts" | "maxAttempts">;
208
+ /**
209
+ * PlanGraphManager — 계획 그래프의 상태 전이를 관리.
210
+ *
211
+ * - 노드 추가/제거
212
+ * - 의존성 기반 ready 판정
213
+ * - 상태 전이 (pending → ready → running → completed/failed/skipped)
214
+ * - 재시도 관리
215
+ * - 직렬화/역직렬화
216
+ */
217
+ export declare class PlanGraphManager {
218
+ private state;
219
+ constructor(sessionId: string, goal: string);
220
+ /**
221
+ * ExecutionPlan으로부터 PlanGraphManager를 생성.
222
+ * 각 PlanStep을 PlanNode로 변환하고 의존성을 연결한다.
223
+ */
224
+ static fromExecutionPlan(sessionId: string, plan: ExecutionPlan): PlanGraphManager;
225
+ /**
226
+ * 노드 추가. 런타임 상태 필드는 기본값으로 초기화.
227
+ */
228
+ addNode(input: PlanNodeInput): void;
229
+ /**
230
+ * 노드를 ready 상태로 전환 (의존성이 모두 완료됨).
231
+ */
232
+ markReady(nodeId: string): void;
233
+ /**
234
+ * 노드를 running 상태로 전환 (실행 시작).
235
+ */
236
+ markRunning(nodeId: string): void;
237
+ /**
238
+ * 노드를 completed 상태로 전환 (성공적으로 완료).
239
+ */
240
+ markCompleted(nodeId: string, result: string, changedFiles: string[], tokensUsed: {
241
+ input: number;
242
+ output: number;
243
+ }): void;
244
+ /**
245
+ * 노드를 failed 상태로 전환.
246
+ */
247
+ markFailed(nodeId: string, error: string): void;
248
+ /**
249
+ * 노드를 skipped 상태로 전환.
250
+ */
251
+ markSkipped(nodeId: string, reason: string): void;
252
+ /**
253
+ * 실패한 노드를 재시도. maxAttempts 초과 시 false 반환.
254
+ */
255
+ retry(nodeId: string): boolean;
256
+ /**
257
+ * 의존성이 모두 완료되어 실행 가능한 노드 목록.
258
+ */
259
+ getReadyNodes(): PlanNode[];
260
+ /** 노드 조회 */
261
+ getNode(id: string): PlanNode | undefined;
262
+ /** 전체 상태 (읽기 전용) */
263
+ getState(): Readonly<PlanGraphState>;
264
+ /**
265
+ * 모든 노드가 종료 상태(completed/failed/skipped)인지 확인.
266
+ */
267
+ isComplete(): boolean;
268
+ /** 진행률 */
269
+ getProgress(): {
270
+ completed: number;
271
+ total: number;
272
+ percent: number;
273
+ };
274
+ /**
275
+ * 의존성 완료 후 ready 상태로 전환할 수 있는 노드를 업데이트.
276
+ * @returns 새로 ready가 된 노드 ID 목록
277
+ */
278
+ updateReadyNodes(): string[];
279
+ /** JSON 직렬화 (Map/Set → 배열 변환) */
280
+ toJSON(): Record<string, unknown>;
281
+ /** JSON에서 PlanGraphManager 복구 */
282
+ static fromJSON(json: Record<string, unknown>): PlanGraphManager;
283
+ /** 노드 존재 확인 (없으면 throw) */
284
+ private requireNode;
285
+ /** 상태별 노드 목록 재계산 */
286
+ private rebuildComputedState;
287
+ /** 실패/스킵된 노드에 의존하는 노드를 blocked 상태로 전환 */
288
+ private blockDependents;
289
+ /** 크리티컬 패스 계산 (가장 긴 의존 체인) */
290
+ private computeCriticalPath;
291
+ /** 병렬 실행 가능한 노드 그룹 계산 (토폴로지 레벨별) */
292
+ private computeParallelGroups;
293
+ }
294
+ /** 도구 입력 스키마 */
295
+ export interface ToolInputSchema {
296
+ type: "object";
297
+ properties: Record<string, {
298
+ type: string;
299
+ description: string;
300
+ required?: boolean;
301
+ enum?: string[];
302
+ default?: unknown;
303
+ /** 정규식 검증 패턴 */
304
+ pattern?: string;
305
+ /** 최대 길이 */
306
+ maxLength?: number;
307
+ }>;
308
+ required: string[];
309
+ }
310
+ /** 도구 출력 스키마 */
311
+ export interface ToolOutputSchema {
312
+ /** 출력 타입 ("string" | "object") */
313
+ type: string;
314
+ /** 최대 출력 토큰 수 */
315
+ maxLength: number;
316
+ /** 초과 시 잘라내기 전략 */
317
+ truncateStrategy: "tail" | "head" | "middle";
318
+ }
319
+ /** 도구 권한 */
320
+ export interface ToolPermissions {
321
+ fileRead: boolean;
322
+ fileWrite: boolean;
323
+ fileDelete: boolean;
324
+ shellExec: boolean;
325
+ networkAccess: boolean;
326
+ gitOps: boolean;
327
+ /** 허용된 경로 패턴 (glob). 빈 배열 = 제한 없음 */
328
+ allowedPaths: string[];
329
+ /** 차단된 경로 패턴 (glob) */
330
+ blockedPaths: string[];
331
+ }
332
+ /** 도구 승인 정책 */
333
+ export interface ToolApprovalPolicy {
334
+ /** 승인 필요 여부 */
335
+ requiresApproval: boolean;
336
+ /** 자동 승인 조건 */
337
+ autoApproveConditions: AutoApproveCondition[];
338
+ /** 위험도 */
339
+ risk: "low" | "medium" | "high" | "critical";
340
+ /** 승인 대기 타임아웃 (ms) */
341
+ timeout: number;
342
+ }
343
+ /** 자동 승인 조건 */
344
+ export interface AutoApproveCondition {
345
+ /** 조건 유형 */
346
+ type: "always" | "same_tool" | "same_file" | "below_risk" | "user_setting";
347
+ /** 조건 값 (유형에 따라 해석) */
348
+ value?: string;
349
+ }
350
+ /** 도구 보안 정책 */
351
+ export interface ToolSecurityPolicy {
352
+ /** 샌드박스 티어 (0–4, 설계 문서 참조) */
353
+ sandboxTier: number;
354
+ /** 입력 살균 여부 */
355
+ inputSanitization: boolean;
356
+ /** 출력 살균 여부 */
357
+ outputSanitization: boolean;
358
+ /** 최대 실행 시간 (ms) */
359
+ maxExecutionTime: number;
360
+ /** 거부할 정규식 패턴 */
361
+ blockedPatterns: string[];
362
+ /** 모든 호출을 감사 로그에 기록 */
363
+ auditLog: boolean;
364
+ }
365
+ /** 도구 실행 제약 */
366
+ export interface ToolConstraints {
367
+ /** 반복당 최대 호출 수 */
368
+ maxCallsPerIteration: number;
369
+ /** 세션당 최대 호출 수 */
370
+ maxCallsPerSession: number;
371
+ /** 호출 간 최소 대기 시간 (ms) */
372
+ cooldownMs: number;
373
+ /** 다른 도구와 병렬 실행 가능 여부 */
374
+ parallelizable: boolean;
375
+ /** 프로젝트 컨텍스트 필요 여부 */
376
+ requiresProject: boolean;
377
+ /** 지원 언어 (빈 배열 = 전체) */
378
+ supportedLanguages: string[];
379
+ }
380
+ /**
381
+ * ToolContract — 도구의 전체 계약.
382
+ *
383
+ * 이름, 스키마, 권한, 승인 정책, 보안 정책, 실행 제약을 하나로 묶는다.
384
+ * 모든 도구는 이 계약을 준수해야 한다.
385
+ */
386
+ export interface ToolContract {
387
+ /** 도구 이름 (snake_case) */
388
+ name: string;
389
+ /** 도구 설명 */
390
+ description: string;
391
+ /** 입력 스키마 */
392
+ inputSchema: ToolInputSchema;
393
+ /** 출력 스키마 */
394
+ outputSchema: ToolOutputSchema;
395
+ /** 권한 */
396
+ permissions: ToolPermissions;
397
+ /** 승인 정책 */
398
+ approvalPolicy: ToolApprovalPolicy;
399
+ /** 보안 정책 */
400
+ securityPolicy: ToolSecurityPolicy;
401
+ /** 실행 제약 */
402
+ constraints: ToolConstraints;
403
+ }
404
+ /**
405
+ * ToolContractRegistry — 도구 계약 레지스트리.
406
+ *
407
+ * 모든 도구의 계약을 등록, 조회, 검증한다.
408
+ * LLM에게 전달할 ToolDefinition 목록도 여기서 생성.
409
+ */
410
+ export declare class ToolContractRegistry {
411
+ private contracts;
412
+ /** 계약 등록 */
413
+ register(contract: ToolContract): void;
414
+ /** 계약 조회 */
415
+ get(name: string): ToolContract | undefined;
416
+ /** 전체 계약 목록 */
417
+ getAll(): ToolContract[];
418
+ /**
419
+ * 도구 호출 입력을 계약에 대해 검증.
420
+ * @returns { valid, errors } — errors는 빈 배열이면 유효
421
+ */
422
+ validate(name: string, input: Record<string, unknown>): {
423
+ valid: boolean;
424
+ errors: string[];
425
+ };
426
+ /**
427
+ * 도구 호출에 승인이 필요한지 판단.
428
+ * @param autoApproveSettings 자동 승인된 도구/설정 목록
429
+ */
430
+ needsApproval(name: string, _input: Record<string, unknown>, autoApproveSettings: string[]): boolean;
431
+ /**
432
+ * 특정 권한을 가진 도구 목록 필터링.
433
+ */
434
+ getToolsWithPermission(permission: keyof ToolPermissions): ToolContract[];
435
+ /**
436
+ * LLM에 전달할 ToolDefinition 배열 생성.
437
+ */
438
+ toToolDefinitions(): ToolDefinition[];
439
+ /**
440
+ * YUAN 기본 9개 도구의 계약을 생성.
441
+ */
442
+ static createDefaultContracts(): ToolContractRegistry;
443
+ }
444
+ /** 커널 이벤트 타입 */
445
+ export type KernelEventType = "session:start" | "session:pause" | "session:resume" | "session:complete" | "session:fail" | "session:stop" | "plan:created" | "plan:updated" | "plan:node_ready" | "plan:node_running" | "plan:node_completed" | "plan:node_failed" | "plan:replan" | "tool:call" | "tool:result" | "tool:error" | "tool:approval_needed" | "tool:approved" | "tool:rejected" | "file:read" | "file:write" | "file:edit" | "file:delete" | "file:snapshot" | "verify:start" | "verify:pass" | "verify:concern" | "verify:fail" | "llm:request" | "llm:response" | "llm:text_delta" | "llm:thinking" | "agent:monologue" | "agent:decision" | "agent:learning" | "checkpoint:created" | "checkpoint:restored" | "context:summarized" | "context:evicted" | "context:warning" | "context:overflow";
446
+ /** 커널 이벤트 — 시스템의 모든 이벤트를 통일된 구조로 기록 */
447
+ export interface KernelEvent {
448
+ /** 이벤트 고유 ID */
449
+ id: string;
450
+ /** 단조 증가 시퀀스 번호 */
451
+ seq: number;
452
+ /** 이벤트 타입 */
453
+ type: KernelEventType;
454
+ /** 소속 세션 ID */
455
+ sessionId: string;
456
+ /** 발생 시각 (epoch ms) */
457
+ timestamp: number;
458
+ /** 이벤트 데이터 (타입별 자유 형식) */
459
+ data: Record<string, unknown>;
460
+ /** 원인 이벤트 ID (인과 체인) */
461
+ parentEventId?: string;
462
+ /** 관련 계획 노드 ID */
463
+ planNodeId?: string;
464
+ /** 관련 도구 이름 */
465
+ toolName?: string;
466
+ /** 관련 파일 경로 */
467
+ file?: string;
468
+ /** 이 이벤트의 토큰 비용 */
469
+ tokenCost?: number;
470
+ }
471
+ /** 이벤트 리스너 타입 */
472
+ type EventListener = (event: KernelEvent) => void;
473
+ /**
474
+ * EventLog — 순서가 보장되는 이벤트 스트림 관리.
475
+ *
476
+ * - append: 이벤트 추가 (id, seq, timestamp 자동 설정)
477
+ * - on: 타입별 구독 ("*"로 전체 구독)
478
+ * - query: 타입/세션/노드/범위별 조회
479
+ * - analysis: 타임라인, 도구 통계, 토큰 사용량
480
+ * - replay: 비동기 이벤트 재생
481
+ * - persistence: JSON 직렬화/역직렬화
482
+ */
483
+ export declare class EventLog {
484
+ private events;
485
+ private seqCounter;
486
+ private readonly maxSize;
487
+ private listeners;
488
+ /**
489
+ * @param maxSize 최대 이벤트 보관 수 (기본 10000)
490
+ */
491
+ constructor(maxSize?: number);
492
+ /**
493
+ * 이벤트 추가. id, seq, timestamp를 자동으로 설정한다.
494
+ * maxSize 초과 시 가장 오래된 이벤트를 제거.
495
+ */
496
+ append(event: Omit<KernelEvent, "id" | "seq" | "timestamp">): KernelEvent;
497
+ /**
498
+ * 이벤트 구독. "*"로 모든 이벤트를 구독할 수 있다.
499
+ * @returns 구독 해제 함수
500
+ */
501
+ on(type: KernelEventType | "*", listener: EventListener): () => void;
502
+ /** 전체 이벤트 목록 (읽기 전용) */
503
+ getAll(): readonly KernelEvent[];
504
+ /** 타입별 이벤트 조회 */
505
+ getByType(type: KernelEventType): KernelEvent[];
506
+ /** 세션별 이벤트 조회 */
507
+ getBySession(sessionId: string): KernelEvent[];
508
+ /** 계획 노드별 이벤트 조회 */
509
+ getByPlanNode(nodeId: string): KernelEvent[];
510
+ /** 시퀀스 범위로 이벤트 조회 */
511
+ getRange(fromSeq: number, toSeq?: number): KernelEvent[];
512
+ /** 마지막 N개 이벤트 조회 */
513
+ getLast(n: number): KernelEvent[];
514
+ /**
515
+ * 세션 타임라인 — 이벤트를 phase 전이 기준으로 그룹화.
516
+ */
517
+ getTimeline(sessionId: string): {
518
+ phase: string;
519
+ events: KernelEvent[];
520
+ duration: number;
521
+ }[];
522
+ /**
523
+ * 에이전트 의사결정 로그 (type === "agent:decision").
524
+ */
525
+ getDecisionLog(sessionId: string): KernelEvent[];
526
+ /**
527
+ * 도구별 통계 — 호출 수, 에러 수, 평균 실행 시간.
528
+ */
529
+ getToolStats(sessionId: string): {
530
+ tool: string;
531
+ calls: number;
532
+ errors: number;
533
+ avgDuration: number;
534
+ }[];
535
+ /**
536
+ * 세션별 토큰 사용량 — 전체 + phase별 분류.
537
+ */
538
+ getTokenUsage(sessionId: string): {
539
+ total: number;
540
+ byPhase: Record<string, number>;
541
+ };
542
+ /**
543
+ * 비동기 이벤트 재생 — 지정 시퀀스부터 이벤트를 순서대로 yield.
544
+ * @param fromSeq 시작 시퀀스 번호
545
+ * @param speed 재생 속도 배율 (1 = 실시간, 2 = 2배속). 0이면 즉시.
546
+ */
547
+ replay(fromSeq: number, speed?: number): AsyncGenerator<KernelEvent>;
548
+ /** JSON 직렬화 */
549
+ toJSON(): Record<string, unknown>;
550
+ /** JSON에서 EventLog 복구 */
551
+ static fromJSON(json: Record<string, unknown>): EventLog;
552
+ /**
553
+ * 오래된 이벤트를 제거.
554
+ * @param keepLast 유지할 최근 이벤트 수 (기본: maxSize의 절반)
555
+ * @returns 제거된 이벤트 수
556
+ */
557
+ prune(keepLast?: number): number;
558
+ /** 리스너에게 이벤트 통지 */
559
+ private notifyListeners;
560
+ /** 이벤트 타입에서 phase 감지 */
561
+ private detectPhase;
562
+ }
563
+ export {};
564
+ //# sourceMappingURL=kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMhE,eAAe;AACf,MAAM,WAAW,mBAAmB;IAClC,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU;IACV,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,YAAY;AACZ,MAAM,WAAW,cAAc;IAC7B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IAClD,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,uBAAuB;AACvB,MAAM,WAAW,iBAAiB;IAChC,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa;IACb,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,mBAAmB;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IAGd,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IAGb,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,WAAW,EAAE,MAAM,CAAC;IAGpB,qBAAqB;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,MAAM,EACF,cAAc,GACd,SAAS,GACT,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;IAGd,mBAAmB;IACnB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,2BAA2B;IAC3B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB;IAClB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAGzB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY;IACZ,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACxE,YAAY;IACZ,eAAe,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAGlD,6BAA6B;IAC7B,eAAe,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC5C,cAAc;IACd,eAAe,EAAE,cAAc,EAAE,CAAC;IAGlC,eAAe;IACf,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,8BAA8B;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IAGzB,sBAAsB;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IAGtB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kCAAkC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,+BAA+B;IAC/B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAMD;;;GAGG;AAEH,gBAAgB;AAChB,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,OAAO,GACP,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,oBAAoB;AACpB,MAAM,WAAW,QAAQ;IACvB,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oBAAoB;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IAGpB,YAAY;IACZ,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa;IACb,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAG7B,gBAAgB;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kBAAkB;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,gBAAgB;IAChB,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGnC,2BAA2B;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;CAC5B;AAED,0CAA0C;AAC1C,KAAK,aAAa,GAAG,IAAI,CACvB,QAAQ,EACN,QAAQ,GACR,WAAW,GACX,aAAa,GACb,QAAQ,GACR,OAAO,GACP,cAAc,GACd,YAAY,GACZ,UAAU,GACV,aAAa,CAChB,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAiB;gBAElB,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAmB3C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,GAClB,gBAAgB;IAmBnB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAmBnC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAW/B;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAajC;;OAEG;IACH,aAAa,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAC5C,IAAI;IAqBP;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAgB/C;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAWjD;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAoB9B;;OAEG;IACH,aAAa,IAAI,QAAQ,EAAE;IAU3B,YAAY;IACZ,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIzC,oBAAoB;IACpB,QAAQ,IAAI,QAAQ,CAAC,cAAc,CAAC;IAIpC;;OAEG;IACH,UAAU,IAAI,OAAO;IAarB,UAAU;IACV,WAAW,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAUpE;;;OAGG;IACH,gBAAgB,IAAI,MAAM,EAAE;IA0B5B,iCAAiC;IACjC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAuBjC,iCAAiC;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB;IA2BhE,2BAA2B;IAC3B,OAAO,CAAC,WAAW;IAQnB,oBAAoB;IACpB,OAAO,CAAC,oBAAoB;IA8B5B,yCAAyC;IACzC,OAAO,CAAC,eAAe;IAYvB,8BAA8B;IAC9B,OAAO,CAAC,mBAAmB;IAwC3B,oCAAoC;IACpC,OAAO,CAAC,qBAAqB;CA+C9B;AAMD,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,gBAAgB;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CACF,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,gBAAgB;AAChB,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;CAC9C;AAED,YAAY;AACZ,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAEhB,qCAAqC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uBAAuB;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,eAAe;IACf,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe;IACf,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,UAAU;IACV,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC7C,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAe;AACf,MAAM,WAAW,oBAAoB;IACnC,YAAY;IACZ,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;IAC3E,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAe;AACf,MAAM,WAAW,eAAe;IAC9B,kBAAkB;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,wBAAwB;IACxB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa;IACb,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa;IACb,YAAY,EAAE,gBAAgB,CAAC;IAE/B,SAAS;IACT,WAAW,EAAE,eAAe,CAAC;IAC7B,YAAY;IACZ,cAAc,EAAE,kBAAkB,CAAC;IACnC,YAAY;IACZ,cAAc,EAAE,kBAAkB,CAAC;IACnC,YAAY;IACZ,WAAW,EAAE,eAAe,CAAC;CAC9B;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAwC;IAEzD,YAAY;IACZ,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,YAAY;IACZ,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C,eAAe;IACf,MAAM,IAAI,YAAY,EAAE;IAIxB;;;OAGG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA8DvC;;;OAGG;IACH,aAAa,CACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,mBAAmB,EAAE,MAAM,EAAE,GAC5B,OAAO;IAsCV;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,eAAe,GAAG,YAAY,EAAE;IAQzE;;OAEG;IACH,iBAAiB,IAAI,cAAc,EAAE;IAwBrC;;OAEG;IACH,MAAM,CAAC,sBAAsB,IAAI,oBAAoB;CA0kBtD;AAMD,gBAAgB;AAChB,MAAM,MAAM,eAAe,GAEvB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,kBAAkB,GAClB,cAAc,GACd,cAAc,GAEd,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,GAClB,aAAa,GAEb,WAAW,GACX,aAAa,GACb,YAAY,GACZ,sBAAsB,GACtB,eAAe,GACf,eAAe,GAEf,WAAW,GACX,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GAEf,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,aAAa,GAEb,aAAa,GACb,cAAc,GACd,gBAAgB,GAChB,cAAc,GAEd,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAEhB,oBAAoB,GACpB,qBAAqB,GAErB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAiB;AACjB,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAElD;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,SAAS,CAGH;IAEd;;OAEG;gBACS,OAAO,SAAQ;IAM3B;;;OAGG;IACH,MAAM,CACJ,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,KAAK,GAAG,WAAW,CAAC,GACnD,WAAW;IAwBd;;;OAGG;IACH,EAAE,CACA,IAAI,EAAE,eAAe,GAAG,GAAG,EAC3B,QAAQ,EAAE,aAAa,GACtB,MAAM,IAAI;IAmBb,wBAAwB;IACxB,MAAM,IAAI,SAAS,WAAW,EAAE;IAIhC,iBAAiB;IACjB,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,EAAE;IAI/C,iBAAiB;IACjB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAI9C,oBAAoB;IACpB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE;IAI5C,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAMxD,oBAAoB;IACpB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAOjC;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,GAChB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE;IA8C/D;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAMhD;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,GAChB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE;IA4CzE;;OAEG;IACH,aAAa,CACX,SAAS,EAAE,MAAM,GAChB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAuBrD;;;;OAIG;IACI,MAAM,CACX,OAAO,EAAE,MAAM,EACf,KAAK,SAAI,GACR,cAAc,CAAC,WAAW,CAAC;IAmB9B,eAAe;IACf,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQjC,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ;IAUxD;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAWhC,mBAAmB;IACnB,OAAO,CAAC,eAAe;IA0BvB,wBAAwB;IACxB,OAAO,CAAC,WAAW;CAuBpB"}