swarm-engine 1.43.0 → 1.54.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 (165) hide show
  1. package/README.md +145 -42
  2. package/agents/implementer.md +1 -14
  3. package/agents/orchestrator.md +127 -246
  4. package/agents/reviewer.md +3 -18
  5. package/dist/cli/commands/agents.js +13 -1
  6. package/dist/cli/commands/agents.js.map +1 -1
  7. package/dist/cli/commands/dashboard.d.ts +3 -0
  8. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  9. package/dist/cli/commands/dashboard.js +43 -0
  10. package/dist/cli/commands/dashboard.js.map +1 -0
  11. package/dist/cli/commands/orchestrate.d.ts.map +1 -1
  12. package/dist/cli/commands/orchestrate.js +17 -0
  13. package/dist/cli/commands/orchestrate.js.map +1 -1
  14. package/dist/cli/commands/run.d.ts.map +1 -1
  15. package/dist/cli/commands/run.js +20 -1
  16. package/dist/cli/commands/run.js.map +1 -1
  17. package/dist/cli/commands/status.d.ts +1 -0
  18. package/dist/cli/commands/status.d.ts.map +1 -1
  19. package/dist/cli/commands/status.js +5 -2
  20. package/dist/cli/commands/status.js.map +1 -1
  21. package/dist/cli/commands/usage.d.ts +3 -0
  22. package/dist/cli/commands/usage.d.ts.map +1 -0
  23. package/dist/cli/commands/usage.js +85 -0
  24. package/dist/cli/commands/usage.js.map +1 -0
  25. package/dist/cli/index.js +2 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/core/event-bus.d.ts.map +1 -1
  28. package/dist/core/event-bus.js +4 -1
  29. package/dist/core/event-bus.js.map +1 -1
  30. package/dist/core/types.d.ts +44 -1
  31. package/dist/core/types.d.ts.map +1 -1
  32. package/dist/core/types.js +4 -0
  33. package/dist/core/types.js.map +1 -1
  34. package/dist/hooks/cli.js +4 -1
  35. package/dist/hooks/cli.js.map +1 -1
  36. package/dist/hooks/index.d.ts +9 -0
  37. package/dist/hooks/index.d.ts.map +1 -1
  38. package/dist/hooks/index.js +54 -0
  39. package/dist/hooks/index.js.map +1 -1
  40. package/dist/hooks/transcript-parser.d.ts +68 -0
  41. package/dist/hooks/transcript-parser.d.ts.map +1 -0
  42. package/dist/hooks/transcript-parser.js +163 -0
  43. package/dist/hooks/transcript-parser.js.map +1 -0
  44. package/dist/hooks/usage-logger.d.ts +30 -0
  45. package/dist/hooks/usage-logger.d.ts.map +1 -0
  46. package/dist/hooks/usage-logger.js +67 -0
  47. package/dist/hooks/usage-logger.js.map +1 -0
  48. package/dist/index.d.ts +16 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +10 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/memory/index.js +2 -2
  53. package/dist/memory/index.js.map +1 -1
  54. package/dist/runtime/agent-runner.d.ts +9 -0
  55. package/dist/runtime/agent-runner.d.ts.map +1 -1
  56. package/dist/runtime/agent-runner.js +167 -11
  57. package/dist/runtime/agent-runner.js.map +1 -1
  58. package/dist/runtime/backends/claude.d.ts +30 -0
  59. package/dist/runtime/backends/claude.d.ts.map +1 -1
  60. package/dist/runtime/backends/claude.js +112 -2
  61. package/dist/runtime/backends/claude.js.map +1 -1
  62. package/dist/runtime/backends/codex.d.ts.map +1 -1
  63. package/dist/runtime/backends/codex.js +4 -0
  64. package/dist/runtime/backends/codex.js.map +1 -1
  65. package/dist/runtime/backends/gemini.d.ts.map +1 -1
  66. package/dist/runtime/backends/gemini.js +4 -0
  67. package/dist/runtime/backends/gemini.js.map +1 -1
  68. package/dist/runtime/benefits.d.ts +81 -1
  69. package/dist/runtime/benefits.d.ts.map +1 -1
  70. package/dist/runtime/benefits.js +199 -12
  71. package/dist/runtime/benefits.js.map +1 -1
  72. package/dist/runtime/cache-optimizer.d.ts +7 -3
  73. package/dist/runtime/cache-optimizer.d.ts.map +1 -1
  74. package/dist/runtime/cache-optimizer.js +11 -7
  75. package/dist/runtime/cache-optimizer.js.map +1 -1
  76. package/dist/runtime/compaction.d.ts +6 -1
  77. package/dist/runtime/compaction.d.ts.map +1 -1
  78. package/dist/runtime/compaction.js +39 -2
  79. package/dist/runtime/compaction.js.map +1 -1
  80. package/dist/runtime/cost-model.d.ts.map +1 -1
  81. package/dist/runtime/cost-model.js +20 -17
  82. package/dist/runtime/cost-model.js.map +1 -1
  83. package/dist/runtime/engine.d.ts +2 -0
  84. package/dist/runtime/engine.d.ts.map +1 -1
  85. package/dist/runtime/engine.js +162 -3
  86. package/dist/runtime/engine.js.map +1 -1
  87. package/dist/runtime/graph-discovery.js +2 -2
  88. package/dist/runtime/graph-discovery.js.map +1 -1
  89. package/dist/runtime/graph-trajectory.js +3 -3
  90. package/dist/runtime/graph-trajectory.js.map +1 -1
  91. package/dist/runtime/handoff.d.ts +8 -0
  92. package/dist/runtime/handoff.d.ts.map +1 -0
  93. package/dist/runtime/handoff.js +109 -0
  94. package/dist/runtime/handoff.js.map +1 -0
  95. package/dist/runtime/heuristics.d.ts +2 -1
  96. package/dist/runtime/heuristics.d.ts.map +1 -1
  97. package/dist/runtime/heuristics.js +15 -2
  98. package/dist/runtime/heuristics.js.map +1 -1
  99. package/dist/runtime/lsp.d.ts.map +1 -1
  100. package/dist/runtime/lsp.js +4 -0
  101. package/dist/runtime/lsp.js.map +1 -1
  102. package/dist/runtime/mcp.d.ts +1 -0
  103. package/dist/runtime/mcp.d.ts.map +1 -1
  104. package/dist/runtime/mcp.js +38 -0
  105. package/dist/runtime/mcp.js.map +1 -1
  106. package/dist/runtime/model-router.d.ts +2 -1
  107. package/dist/runtime/model-router.d.ts.map +1 -1
  108. package/dist/runtime/model-router.js +8 -1
  109. package/dist/runtime/model-router.js.map +1 -1
  110. package/dist/runtime/output-summarizer.d.ts +45 -0
  111. package/dist/runtime/output-summarizer.d.ts.map +1 -0
  112. package/dist/runtime/output-summarizer.js +171 -0
  113. package/dist/runtime/output-summarizer.js.map +1 -0
  114. package/dist/runtime/plugins.d.ts +5 -1
  115. package/dist/runtime/plugins.d.ts.map +1 -1
  116. package/dist/runtime/plugins.js +14 -2
  117. package/dist/runtime/plugins.js.map +1 -1
  118. package/dist/runtime/prompt-tier.d.ts +33 -0
  119. package/dist/runtime/prompt-tier.d.ts.map +1 -0
  120. package/dist/runtime/prompt-tier.js +105 -0
  121. package/dist/runtime/prompt-tier.js.map +1 -0
  122. package/dist/runtime/savings-manifest.d.ts +66 -0
  123. package/dist/runtime/savings-manifest.d.ts.map +1 -0
  124. package/dist/runtime/savings-manifest.js +103 -0
  125. package/dist/runtime/savings-manifest.js.map +1 -0
  126. package/dist/runtime/sharing.js +2 -1
  127. package/dist/runtime/sharing.js.map +1 -1
  128. package/dist/runtime/stats.d.ts +2 -0
  129. package/dist/runtime/stats.d.ts.map +1 -1
  130. package/dist/runtime/stats.js +23 -3
  131. package/dist/runtime/stats.js.map +1 -1
  132. package/dist/runtime/violation-tracker.d.ts +31 -0
  133. package/dist/runtime/violation-tracker.d.ts.map +1 -0
  134. package/dist/runtime/violation-tracker.js +125 -0
  135. package/dist/runtime/violation-tracker.js.map +1 -0
  136. package/dist/utils/project-config.d.ts +20 -0
  137. package/dist/utils/project-config.d.ts.map +1 -1
  138. package/dist/utils/project-config.js +46 -1
  139. package/dist/utils/project-config.js.map +1 -1
  140. package/dist/utils/redact.d.ts.map +1 -1
  141. package/dist/utils/redact.js +5 -1
  142. package/dist/utils/redact.js.map +1 -1
  143. package/dist/web/bridge.d.ts +47 -0
  144. package/dist/web/bridge.d.ts.map +1 -0
  145. package/dist/web/bridge.js +267 -0
  146. package/dist/web/bridge.js.map +1 -0
  147. package/dist/web/graph-api.d.ts +19 -0
  148. package/dist/web/graph-api.d.ts.map +1 -0
  149. package/dist/web/graph-api.js +157 -0
  150. package/dist/web/graph-api.js.map +1 -0
  151. package/dist/web/index.d.ts +21 -0
  152. package/dist/web/index.d.ts.map +1 -0
  153. package/dist/web/index.js +38 -0
  154. package/dist/web/index.js.map +1 -0
  155. package/dist/web/public/index.html +1304 -0
  156. package/dist/web/public/public/index.html +1307 -0
  157. package/dist/web/server.d.ts +24 -0
  158. package/dist/web/server.d.ts.map +1 -0
  159. package/dist/web/server.js +113 -0
  160. package/dist/web/server.js.map +1 -0
  161. package/dist/web/tray.d.ts +23 -0
  162. package/dist/web/tray.d.ts.map +1 -0
  163. package/dist/web/tray.js +205 -0
  164. package/dist/web/tray.js.map +1 -0
  165. package/package.json +1 -1
@@ -0,0 +1,157 @@
1
+ const NODE_TYPES = ['orchestration', 'phase', 'agent', 'file', 'pattern', 'error', 'heuristic'];
2
+ const EDGE_TYPES = [
3
+ 'contains',
4
+ 'spawned',
5
+ 'produced',
6
+ 'consumed',
7
+ 'used_pattern',
8
+ 'touched_file',
9
+ 'caused_by',
10
+ 'learned_from',
11
+ 'similar_to',
12
+ 'co_modified',
13
+ ];
14
+ const DEFAULT_NODE_LIMIT = 500;
15
+ export class GraphApi {
16
+ graph;
17
+ bus;
18
+ constructor(graph, bus) {
19
+ this.graph = graph;
20
+ this.bus = bus ?? null;
21
+ }
22
+ /** Handle an API request. Returns true if the route was handled. */
23
+ handleRequest(req, res) {
24
+ try {
25
+ const url = new URL(req.url ?? '/', `http://${req.headers.host}`);
26
+ const pathname = url.pathname;
27
+ const params = url.searchParams;
28
+ // ─── POST /api/events — ingest external events ──────────────
29
+ if (req.method === 'POST' && pathname === '/api/events') {
30
+ this.handleEventIngest(req, res);
31
+ return true;
32
+ }
33
+ if (req.method !== 'GET')
34
+ return false;
35
+ // GET /api/graph/nodes?type=agent&limit=100
36
+ if (pathname === '/api/graph/nodes') {
37
+ const typeFilter = params.get('type');
38
+ const limit = parseInt(params.get('limit') ?? String(DEFAULT_NODE_LIMIT), 10);
39
+ let nodes;
40
+ if (typeFilter && NODE_TYPES.includes(typeFilter)) {
41
+ nodes = this.graph.getNodesByType(typeFilter);
42
+ }
43
+ else {
44
+ nodes = NODE_TYPES.flatMap((type) => this.graph.getNodesByType(type));
45
+ }
46
+ nodes = nodes.slice(-limit);
47
+ this.json(res, 200, nodes);
48
+ return true;
49
+ }
50
+ // GET /api/graph/edges?type=spawned&limit=100
51
+ if (pathname === '/api/graph/edges') {
52
+ const typeFilter = params.get('type');
53
+ const limit = parseInt(params.get('limit') ?? String(DEFAULT_NODE_LIMIT), 10);
54
+ let edges = typeFilter && EDGE_TYPES.includes(typeFilter)
55
+ ? this.graph.getEdgesByType(typeFilter)
56
+ : EDGE_TYPES.flatMap((type) => this.graph.getEdgesByType(type));
57
+ edges = edges.slice(-limit);
58
+ this.json(res, 200, edges);
59
+ return true;
60
+ }
61
+ if (pathname === '/api/graph/stats') {
62
+ this.json(res, 200, this.graph.stats());
63
+ return true;
64
+ }
65
+ // GET /api/graph/orchestrations — list all orchestration nodes (for picker)
66
+ if (pathname === '/api/graph/orchestrations') {
67
+ const orchestrations = this.graph.getNodesByType('orchestration');
68
+ orchestrations.sort((a, b) => (b.created_at ?? '').localeCompare(a.created_at ?? ''));
69
+ this.json(res, 200, orchestrations);
70
+ return true;
71
+ }
72
+ // GET /api/graph/subgraph/:nodeId?depth=3 — BFS from a root node
73
+ const subgraphMatch = pathname.match(/^\/api\/graph\/subgraph\/(.+)$/);
74
+ if (subgraphMatch) {
75
+ const nodeId = decodeURIComponent(subgraphMatch[1]);
76
+ const depth = parseInt(params.get('depth') ?? '3', 10);
77
+ this.json(res, 200, this.graph.bfs(nodeId, Math.min(depth, 6)));
78
+ return true;
79
+ }
80
+ // GET /api/graph/latest?count=1&depth=3
81
+ if (pathname === '/api/graph/latest') {
82
+ const count = Math.min(parseInt(params.get('count') ?? '1', 10), 10);
83
+ const depth = Math.min(parseInt(params.get('depth') ?? '3', 10), 6);
84
+ const orchestrations = this.graph.getNodesByType('orchestration');
85
+ orchestrations.sort((a, b) => (b.created_at ?? '').localeCompare(a.created_at ?? ''));
86
+ const recent = orchestrations.slice(0, count);
87
+ const allNodes = new Map();
88
+ const allEdges = [];
89
+ const edgeKeys = new Set();
90
+ for (const orch of recent) {
91
+ const sub = this.graph.bfs(orch.id, depth);
92
+ for (const n of sub.nodes)
93
+ allNodes.set(n.id, n);
94
+ for (const e of sub.edges) {
95
+ const key = `${e.source}-${e.target}-${e.type}`;
96
+ if (!edgeKeys.has(key)) {
97
+ edgeKeys.add(key);
98
+ allEdges.push(e);
99
+ }
100
+ }
101
+ }
102
+ this.json(res, 200, { nodes: [...allNodes.values()], edges: allEdges });
103
+ return true;
104
+ }
105
+ // Unknown /api/ route
106
+ if (pathname.startsWith('/api/')) {
107
+ this.json(res, 404, { error: 'Not found' });
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ catch {
113
+ res.writeHead(500, { 'Content-Type': 'application/json' });
114
+ res.end(JSON.stringify({ error: 'Internal server error' }));
115
+ return true;
116
+ }
117
+ }
118
+ /**
119
+ * POST /api/events — accept external events and inject into the EventBus.
120
+ * Body: single event { type, data, source? } or array of events.
121
+ * This allows Claude Code, Codex, and other external processes to push
122
+ * orchestration events into a running dashboard.
123
+ */
124
+ handleEventIngest(req, res) {
125
+ if (!this.bus) {
126
+ this.json(res, 503, { error: 'No EventBus connected' });
127
+ return;
128
+ }
129
+ const chunks = [];
130
+ req.on('data', (chunk) => chunks.push(chunk));
131
+ req.on('end', () => {
132
+ try {
133
+ const body = JSON.parse(Buffer.concat(chunks).toString());
134
+ const events = Array.isArray(body) ? body : [body];
135
+ let accepted = 0;
136
+ for (const evt of events) {
137
+ if (evt.type && evt.data) {
138
+ this.bus.emit(evt.type, evt.data, evt.source ?? 'external');
139
+ accepted++;
140
+ }
141
+ }
142
+ this.json(res, 200, { accepted, total: events.length });
143
+ }
144
+ catch {
145
+ this.json(res, 400, { error: 'Invalid JSON' });
146
+ }
147
+ });
148
+ req.on('error', () => {
149
+ this.json(res, 400, { error: 'Request error' });
150
+ });
151
+ }
152
+ json(res, code, data) {
153
+ res.writeHead(code, { 'Content-Type': 'application/json' });
154
+ res.end(JSON.stringify(data));
155
+ }
156
+ }
157
+ //# sourceMappingURL=graph-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-api.js","sourceRoot":"","sources":["../../src/web/graph-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { EventBus } from '../core/event-bus.js';
2
+ import type { ExecutionGraph } from '../runtime/execution-graph.js';
3
+ import { DashboardServer } from './server.js';
4
+ import { DashboardBridge } from './bridge.js';
5
+ export interface DashboardOptions {
6
+ bus: EventBus;
7
+ graph?: ExecutionGraph;
8
+ port?: number;
9
+ open?: boolean;
10
+ }
11
+ export declare function startDashboard(options: DashboardOptions): Promise<{
12
+ server: DashboardServer;
13
+ bridge: DashboardBridge;
14
+ stop: () => Promise<void>;
15
+ }>;
16
+ export { DashboardServer } from './server.js';
17
+ export { DashboardBridge } from './bridge.js';
18
+ export type { DashboardState, PhaseState, AgentState } from './bridge.js';
19
+ export { GraphApi } from './graph-api.js';
20
+ export { DashboardTray } from './tray.js';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACvE,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC,CAkCD;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { spawn } from 'child_process';
2
+ import { DashboardServer } from './server.js';
3
+ import { DashboardBridge } from './bridge.js';
4
+ import { GraphApi } from './graph-api.js';
5
+ export async function startDashboard(options) {
6
+ const port = options.port ?? 3101;
7
+ // Build the optional graph API handler
8
+ const graphApi = options.graph ? new GraphApi(options.graph, options.bus) : null;
9
+ const server = new DashboardServer({
10
+ port,
11
+ onRequest: graphApi ? (req, res) => graphApi.handleRequest(req, res) : undefined,
12
+ });
13
+ const bridge = new DashboardBridge(options.bus, server);
14
+ await server.start();
15
+ bridge.start();
16
+ // Open in default browser (unless disabled)
17
+ const url = `http://localhost:${port}`;
18
+ if (options.open !== false) {
19
+ const { platform } = process;
20
+ const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
21
+ const args = platform === 'win32' ? ['/c', 'start', '', url] : [url];
22
+ const shell = platform === 'win32';
23
+ spawn(cmd, args, { detached: true, stdio: 'ignore', ...(shell ? { shell: true } : {}) }).unref();
24
+ }
25
+ return {
26
+ server,
27
+ bridge,
28
+ stop: async () => {
29
+ bridge.stop();
30
+ await server.stop();
31
+ },
32
+ };
33
+ }
34
+ export { DashboardServer } from './server.js';
35
+ export { DashboardBridge } from './bridge.js';
36
+ export { GraphApi } from './graph-api.js';
37
+ export { DashboardTray } from './tray.js';
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS1C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAK5D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAElC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,IAAI;QACJ,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAExD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,4CAA4C;IAC5C,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,GAAG,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QACzF,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;QACnC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACnG,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}