eacn3 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.
@@ -0,0 +1,7 @@
1
+ /**
2
+ * EACN — Native OpenClaw plugin entry point.
3
+ *
4
+ * Registers the same 32 tools as server.ts but via api.registerTool().
5
+ * All logic delegates to the same src/ modules.
6
+ */
7
+ export default function (api: any): void;
package/dist/index.js ADDED
@@ -0,0 +1,574 @@
1
+ /**
2
+ * EACN — Native OpenClaw plugin entry point.
3
+ *
4
+ * Registers the same 32 tools as server.ts but via api.registerTool().
5
+ * All logic delegates to the same src/ modules.
6
+ */
7
+ import * as state from "./src/state.js";
8
+ import * as net from "./src/network-client.js";
9
+ import * as ws from "./src/ws-manager.js";
10
+ // ---------------------------------------------------------------------------
11
+ // Heartbeat
12
+ // ---------------------------------------------------------------------------
13
+ let heartbeatInterval = null;
14
+ function startHeartbeat() {
15
+ if (heartbeatInterval)
16
+ return;
17
+ heartbeatInterval = setInterval(async () => {
18
+ try {
19
+ await net.heartbeat();
20
+ }
21
+ catch { /* silent */ }
22
+ }, 60_000);
23
+ }
24
+ function stopHeartbeat() {
25
+ if (heartbeatInterval) {
26
+ clearInterval(heartbeatInterval);
27
+ heartbeatInterval = null;
28
+ }
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // Helper
32
+ // ---------------------------------------------------------------------------
33
+ function ok(data) {
34
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
35
+ }
36
+ function err(message) {
37
+ return { content: [{ type: "text", text: JSON.stringify({ error: message }) }] };
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // WS Event Callbacks — auto-actions when events arrive
41
+ // ---------------------------------------------------------------------------
42
+ function registerEventCallbacks() {
43
+ ws.setEventCallback((agentId, event) => {
44
+ const taskId = event.task_id;
45
+ switch (event.type) {
46
+ case "awaiting_retrieval":
47
+ state.updateTaskStatus(taskId, "awaiting_retrieval");
48
+ break;
49
+ case "subtask_completed": {
50
+ const subtaskId = event.payload?.subtask_id;
51
+ if (subtaskId) {
52
+ net.getTaskResults(subtaskId, agentId)
53
+ .then((res) => {
54
+ state.pushEvents([{
55
+ type: "subtask_completed",
56
+ task_id: taskId,
57
+ payload: { subtask_id: subtaskId, results: res.results },
58
+ received_at: Date.now(),
59
+ }]);
60
+ })
61
+ .catch(() => { });
62
+ }
63
+ break;
64
+ }
65
+ case "timeout":
66
+ state.updateTaskStatus(taskId, "no_one");
67
+ net.reportEvent(agentId, "task_timeout").catch(() => { });
68
+ break;
69
+ case "budget_confirmation":
70
+ break;
71
+ case "task_broadcast":
72
+ autoBidEvaluate(agentId, event).catch(() => { });
73
+ break;
74
+ }
75
+ });
76
+ }
77
+ async function autoBidEvaluate(agentId, event) {
78
+ const agent = state.getAgent(agentId);
79
+ if (!agent)
80
+ return;
81
+ const taskId = event.task_id;
82
+ const payload = event.payload;
83
+ const taskDomains = payload?.domains ?? [];
84
+ const overlap = taskDomains.some((d) => agent.domains.includes(d));
85
+ if (!overlap)
86
+ return;
87
+ if (agent.capabilities?.max_concurrent_tasks) {
88
+ const activeTasks = Object.values(state.getState().local_tasks).filter((t) => t.role === "executor" && t.status !== "completed" && t.status !== "no_one");
89
+ if (activeTasks.length >= agent.capabilities.max_concurrent_tasks)
90
+ return;
91
+ }
92
+ state.pushEvents([{
93
+ type: "task_broadcast",
94
+ task_id: taskId,
95
+ payload: { ...payload, auto_match: true, matched_agent: agentId },
96
+ received_at: Date.now(),
97
+ }]);
98
+ }
99
+ // ---------------------------------------------------------------------------
100
+ // Plugin entry
101
+ // ---------------------------------------------------------------------------
102
+ export default function (api) {
103
+ // Load state and register event callbacks
104
+ state.load();
105
+ registerEventCallbacks();
106
+ // ═══════════════════════════════════════════════════════════════════════════
107
+ // Server Management (4)
108
+ // ═══════════════════════════════════════════════════════════════════════════
109
+ // #1 eacn_connect
110
+ api.registerTool({
111
+ name: "eacn_connect",
112
+ description: "Connect to EACN network. Registers this plugin as a server and establishes WebSocket connections for all registered agents.",
113
+ parameters: {
114
+ type: "object",
115
+ properties: {
116
+ network_endpoint: { type: "string", description: "Network URL. Defaults to https://network.eacn.dev" },
117
+ },
118
+ },
119
+ async execute(_id, params) {
120
+ const endpoint = params.network_endpoint ?? "https://network.eacn.dev";
121
+ const s = state.getState();
122
+ s.network_endpoint = endpoint;
123
+ const res = await net.registerServer("0.1.0", "plugin://local", "plugin-user");
124
+ s.server_card = { server_id: res.server_id, version: "0.1.0", endpoint: "plugin://local", owner: "plugin-user", status: "online" };
125
+ state.save();
126
+ startHeartbeat();
127
+ for (const agentId of Object.keys(s.agents))
128
+ ws.connect(agentId);
129
+ return ok({ connected: true, server_id: res.server_id, network_endpoint: endpoint, agents_online: Object.keys(s.agents).length });
130
+ },
131
+ });
132
+ // #2 eacn_disconnect
133
+ api.registerTool({
134
+ name: "eacn_disconnect",
135
+ description: "Disconnect from EACN network. Unregisters server and closes all WebSocket connections.",
136
+ parameters: { type: "object", properties: {} },
137
+ async execute() {
138
+ stopHeartbeat();
139
+ ws.disconnectAll();
140
+ try {
141
+ await net.unregisterServer();
142
+ }
143
+ catch { /* */ }
144
+ const s = state.getState();
145
+ s.server_card = null;
146
+ s.agents = {};
147
+ state.save();
148
+ return ok({ disconnected: true });
149
+ },
150
+ });
151
+ // #3 eacn_heartbeat
152
+ api.registerTool({
153
+ name: "eacn_heartbeat",
154
+ description: "Send heartbeat to network. Background interval auto-sends every 60s; this is for manual trigger.",
155
+ parameters: { type: "object", properties: {} },
156
+ async execute() { return ok(await net.heartbeat()); },
157
+ });
158
+ // #4 eacn_server_info
159
+ api.registerTool({
160
+ name: "eacn_server_info",
161
+ description: "Get current server status: connection state, registered agents, local tasks.",
162
+ parameters: { type: "object", properties: {} },
163
+ async execute() {
164
+ const s = state.getState();
165
+ if (!s.server_card)
166
+ return err("Not connected");
167
+ let remote;
168
+ try {
169
+ remote = await net.getServer(s.server_card.server_id);
170
+ }
171
+ catch {
172
+ remote = null;
173
+ }
174
+ return ok({ server_card: s.server_card, network_endpoint: s.network_endpoint, agents_count: Object.keys(s.agents).length, agents: Object.keys(s.agents), tasks_count: Object.keys(s.local_tasks).length, remote_status: remote?.status ?? "unknown" });
175
+ },
176
+ });
177
+ // ═══════════════════════════════════════════════════════════════════════════
178
+ // Agent Management (7)
179
+ // ═══════════════════════════════════════════════════════════════════════════
180
+ // #5 eacn_register_agent
181
+ api.registerTool({
182
+ name: "eacn_register_agent",
183
+ description: "Register an Agent on the network. Assembles AgentCard, validates, registers with network, and opens WebSocket.",
184
+ parameters: {
185
+ type: "object",
186
+ properties: {
187
+ name: { type: "string", description: "Agent display name" },
188
+ description: { type: "string", description: "What this Agent does" },
189
+ domains: { type: "array", items: { type: "string" }, description: "Capability domains" },
190
+ skills: { type: "array", items: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, description: { type: "string" }, tags: { type: "array", items: { type: "string" } }, parameters: { type: "object" } } }, description: "Agent skills" },
191
+ capabilities: { type: "object", properties: { max_concurrent_tasks: { type: "number", description: "Max tasks simultaneously (0 = unlimited)" }, concurrent: { type: "boolean", description: "Whether Agent supports concurrent execution" } }, description: "Agent capacity limits" },
192
+ agent_type: { type: "string", enum: ["executor", "planner"], description: "Defaults to executor" },
193
+ agent_id: { type: "string", description: "Custom agent ID. Auto-generated if omitted." },
194
+ },
195
+ required: ["name", "description", "domains"],
196
+ },
197
+ async execute(_id, params) {
198
+ const s = state.getState();
199
+ if (!s.server_card)
200
+ return err("Not connected. Call eacn_connect first.");
201
+ if (!params.name?.trim())
202
+ return err("name cannot be empty");
203
+ if (!params.domains?.length)
204
+ return err("domains cannot be empty");
205
+ const agentId = params.agent_id ?? `agent-${Date.now().toString(36)}`;
206
+ const card = {
207
+ agent_id: agentId, name: params.name, agent_type: params.agent_type ?? "executor",
208
+ domains: params.domains, skills: params.skills ?? [], capabilities: params.capabilities,
209
+ url: `plugin://local/agents/${agentId}`, server_id: s.server_card.server_id,
210
+ network_id: "", description: params.description,
211
+ };
212
+ const res = await net.registerAgent(card);
213
+ state.addAgent(card);
214
+ ws.connect(agentId);
215
+ return ok({ registered: true, agent_id: agentId, seeds: res.seeds, domains: params.domains });
216
+ },
217
+ });
218
+ // #6 eacn_get_agent
219
+ api.registerTool({
220
+ name: "eacn_get_agent",
221
+ description: "Get any Agent's details (AgentCard) by ID.",
222
+ parameters: { type: "object", properties: { agent_id: { type: "string" } }, required: ["agent_id"] },
223
+ async execute(_id, params) {
224
+ const local = state.getAgent(params.agent_id);
225
+ if (local)
226
+ return ok(local);
227
+ return ok(await net.getAgentInfo(params.agent_id));
228
+ },
229
+ });
230
+ // #7 eacn_update_agent
231
+ api.registerTool({
232
+ name: "eacn_update_agent",
233
+ description: "Update an Agent's info (name, domains, skills, description).",
234
+ parameters: {
235
+ type: "object",
236
+ properties: {
237
+ agent_id: { type: "string" }, name: { type: "string" },
238
+ domains: { type: "array", items: { type: "string" } },
239
+ skills: { type: "array", items: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, description: { type: "string" }, tags: { type: "array", items: { type: "string" } }, parameters: { type: "object" } } } },
240
+ description: { type: "string" },
241
+ },
242
+ required: ["agent_id"],
243
+ },
244
+ async execute(_id, params) {
245
+ const { agent_id, ...updates } = params;
246
+ const res = await net.updateAgent(agent_id, updates);
247
+ const local = state.getAgent(agent_id);
248
+ if (local) {
249
+ if (updates.name !== undefined)
250
+ local.name = updates.name;
251
+ if (updates.domains !== undefined)
252
+ local.domains = updates.domains;
253
+ if (updates.skills !== undefined)
254
+ local.skills = updates.skills;
255
+ if (updates.description !== undefined)
256
+ local.description = updates.description;
257
+ state.addAgent(local);
258
+ }
259
+ return ok({ updated: true, agent_id, ...res });
260
+ },
261
+ });
262
+ // #8 eacn_unregister_agent
263
+ api.registerTool({
264
+ name: "eacn_unregister_agent",
265
+ description: "Unregister an Agent from the network.",
266
+ parameters: { type: "object", properties: { agent_id: { type: "string" } }, required: ["agent_id"] },
267
+ async execute(_id, params) {
268
+ const res = await net.unregisterAgent(params.agent_id);
269
+ ws.disconnect(params.agent_id);
270
+ state.removeAgent(params.agent_id);
271
+ return ok({ unregistered: true, agent_id: params.agent_id, ...res });
272
+ },
273
+ });
274
+ // #9 eacn_list_my_agents
275
+ api.registerTool({
276
+ name: "eacn_list_my_agents",
277
+ description: "List all Agents registered under this server.",
278
+ parameters: { type: "object", properties: {} },
279
+ async execute() {
280
+ const agents = state.listAgents();
281
+ return ok({ count: agents.length, agents: agents.map((a) => ({ agent_id: a.agent_id, name: a.name, agent_type: a.agent_type, domains: a.domains, ws_connected: ws.isConnected(a.agent_id) })) });
282
+ },
283
+ });
284
+ // #10 eacn_discover_agents
285
+ api.registerTool({
286
+ name: "eacn_discover_agents",
287
+ description: "Discover Agents by domain. Searches network via Gossip → DHT → Bootstrap fallback.",
288
+ parameters: { type: "object", properties: { domain: { type: "string" }, requester_id: { type: "string" } }, required: ["domain"] },
289
+ async execute(_id, params) {
290
+ return ok(await net.discoverAgents(params.domain, params.requester_id));
291
+ },
292
+ });
293
+ // #11 eacn_list_agents
294
+ api.registerTool({
295
+ name: "eacn_list_agents",
296
+ description: "List Agents from the network. Filter by domain or server_id.",
297
+ parameters: {
298
+ type: "object",
299
+ properties: {
300
+ domain: { type: "string" }, server_id: { type: "string" },
301
+ limit: { type: "number" }, offset: { type: "number" },
302
+ },
303
+ },
304
+ async execute(_id, params) {
305
+ const agents = await net.listAgentsRemote(params);
306
+ return ok({ count: agents.length, agents });
307
+ },
308
+ });
309
+ // ═══════════════════════════════════════════════════════════════════════════
310
+ // Task Query (4)
311
+ // ═══════════════════════════════════════════════════════════════════════════
312
+ // #12 eacn_get_task
313
+ api.registerTool({
314
+ name: "eacn_get_task",
315
+ description: "Get full task details including content, bids, and results.",
316
+ parameters: { type: "object", properties: { task_id: { type: "string" } }, required: ["task_id"] },
317
+ async execute(_id, params) { return ok(await net.getTask(params.task_id)); },
318
+ });
319
+ // #13 eacn_get_task_status
320
+ api.registerTool({
321
+ name: "eacn_get_task_status",
322
+ description: "Query task status and bid list (initiator only, no results).",
323
+ parameters: { type: "object", properties: { task_id: { type: "string" }, agent_id: { type: "string", description: "Initiator agent ID" } }, required: ["task_id", "agent_id"] },
324
+ async execute(_id, params) { return ok(await net.getTaskStatus(params.task_id, params.agent_id)); },
325
+ });
326
+ // #14 eacn_list_open_tasks
327
+ api.registerTool({
328
+ name: "eacn_list_open_tasks",
329
+ description: "List tasks open for bidding. Optionally filter by domains.",
330
+ parameters: { type: "object", properties: { domains: { type: "string", description: "Comma-separated domain filter" }, limit: { type: "number" }, offset: { type: "number" } } },
331
+ async execute(_id, params) {
332
+ const tasks = await net.getOpenTasks(params);
333
+ return ok({ count: tasks.length, tasks });
334
+ },
335
+ });
336
+ // #15 eacn_list_tasks
337
+ api.registerTool({
338
+ name: "eacn_list_tasks",
339
+ description: "List tasks with optional filters (status, initiator).",
340
+ parameters: { type: "object", properties: { status: { type: "string" }, initiator_id: { type: "string" }, limit: { type: "number" }, offset: { type: "number" } } },
341
+ async execute(_id, params) {
342
+ const tasks = await net.listTasks(params);
343
+ return ok({ count: tasks.length, tasks });
344
+ },
345
+ });
346
+ // ═══════════════════════════════════════════════════════════════════════════
347
+ // Task Operations — Initiator (7)
348
+ // ═══════════════════════════════════════════════════════════════════════════
349
+ // #16 eacn_create_task
350
+ api.registerTool({
351
+ name: "eacn_create_task",
352
+ description: "Create a new task. Checks local agents first, then broadcasts to network.",
353
+ parameters: {
354
+ type: "object",
355
+ properties: {
356
+ description: { type: "string" },
357
+ budget: { type: "number" },
358
+ domains: { type: "array", items: { type: "string" } },
359
+ deadline: { type: "string", description: "ISO 8601 deadline" },
360
+ max_concurrent_bidders: { type: "number" },
361
+ max_depth: { type: "number", description: "Max subtask nesting depth (default 3)" },
362
+ expected_output: {
363
+ type: "object",
364
+ properties: {
365
+ type: { type: "string", description: "Expected output format, e.g. 'json', 'text', 'code'" },
366
+ description: { type: "string", description: "What the output should contain" },
367
+ },
368
+ description: "Structured description of expected result",
369
+ },
370
+ human_contact: {
371
+ type: "object",
372
+ properties: {
373
+ allowed: { type: "boolean", description: "Whether human owner can be contacted for decisions" },
374
+ contact_id: { type: "string", description: "Human contact identifier" },
375
+ timeout_s: { type: "number", description: "Seconds to wait for human response before auto-reject" },
376
+ },
377
+ description: "Human-in-the-loop contact settings",
378
+ },
379
+ initiator_id: { type: "string", description: "Agent ID of the task initiator" },
380
+ },
381
+ required: ["description", "budget", "initiator_id"],
382
+ },
383
+ async execute(_id, params) {
384
+ const taskId = `t-${Date.now().toString(36)}`;
385
+ const localAgents = state.listAgents();
386
+ const matchedLocal = params.domains
387
+ ? localAgents.filter((a) => a.agent_id !== params.initiator_id && params.domains.some((d) => a.domains.includes(d)))
388
+ : [];
389
+ const task = await net.createTask({
390
+ task_id: taskId, initiator_id: params.initiator_id,
391
+ content: { description: params.description, expected_output: params.expected_output },
392
+ domains: params.domains, budget: params.budget, deadline: params.deadline,
393
+ max_concurrent_bidders: params.max_concurrent_bidders, max_depth: params.max_depth,
394
+ human_contact: params.human_contact,
395
+ });
396
+ state.updateTask({ task_id: taskId, role: "initiator", status: task.status, domains: params.domains ?? [], description_summary: params.description.slice(0, 100), created_at: new Date().toISOString() });
397
+ return ok({ task_id: taskId, status: task.status, budget: params.budget, local_matches: matchedLocal.map((a) => a.agent_id) });
398
+ },
399
+ });
400
+ // #17 eacn_get_task_results
401
+ api.registerTool({
402
+ name: "eacn_get_task_results",
403
+ description: "Retrieve task results and adjudications. First call transitions task from awaiting_retrieval to completed.",
404
+ parameters: { type: "object", properties: { task_id: { type: "string" }, initiator_id: { type: "string" } }, required: ["task_id", "initiator_id"] },
405
+ async execute(_id, params) { return ok(await net.getTaskResults(params.task_id, params.initiator_id)); },
406
+ });
407
+ // #18 eacn_select_result
408
+ api.registerTool({
409
+ name: "eacn_select_result",
410
+ description: "Select the winning result. Triggers economic settlement.",
411
+ parameters: { type: "object", properties: { task_id: { type: "string" }, agent_id: { type: "string", description: "ID of the agent whose result to select" }, initiator_id: { type: "string" } }, required: ["task_id", "agent_id", "initiator_id"] },
412
+ async execute(_id, params) { return ok(await net.selectResult(params.task_id, params.initiator_id, params.agent_id)); },
413
+ });
414
+ // #19 eacn_close_task
415
+ api.registerTool({
416
+ name: "eacn_close_task",
417
+ description: "Manually close a task (stop accepting bids/results).",
418
+ parameters: { type: "object", properties: { task_id: { type: "string" }, initiator_id: { type: "string" } }, required: ["task_id", "initiator_id"] },
419
+ async execute(_id, params) { return ok(await net.closeTask(params.task_id, params.initiator_id)); },
420
+ });
421
+ // #20 eacn_update_deadline
422
+ api.registerTool({
423
+ name: "eacn_update_deadline",
424
+ description: "Update task deadline.",
425
+ parameters: { type: "object", properties: { task_id: { type: "string" }, new_deadline: { type: "string", description: "New ISO 8601 deadline" }, initiator_id: { type: "string" } }, required: ["task_id", "new_deadline", "initiator_id"] },
426
+ async execute(_id, params) { return ok(await net.updateDeadline(params.task_id, params.initiator_id, params.new_deadline)); },
427
+ });
428
+ // #21 eacn_update_discussions
429
+ api.registerTool({
430
+ name: "eacn_update_discussions",
431
+ description: "Add a discussion message to a task. Synced to all bidders.",
432
+ parameters: { type: "object", properties: { task_id: { type: "string" }, message: { type: "string" }, initiator_id: { type: "string" } }, required: ["task_id", "message", "initiator_id"] },
433
+ async execute(_id, params) { return ok(await net.updateDiscussions(params.task_id, params.initiator_id, params.message)); },
434
+ });
435
+ // #22 eacn_confirm_budget
436
+ api.registerTool({
437
+ name: "eacn_confirm_budget",
438
+ description: "Respond to a budget confirmation request (when a bid exceeds current budget).",
439
+ parameters: { type: "object", properties: { task_id: { type: "string" }, approved: { type: "boolean" }, new_budget: { type: "number" }, initiator_id: { type: "string" } }, required: ["task_id", "approved", "initiator_id"] },
440
+ async execute(_id, params) { return ok(await net.confirmBudget(params.task_id, params.initiator_id, params.approved, params.new_budget)); },
441
+ });
442
+ // ═══════════════════════════════════════════════════════════════════════════
443
+ // Task Operations — Executor (5)
444
+ // ═══════════════════════════════════════════════════════════════════════════
445
+ // #23 eacn_submit_bid
446
+ api.registerTool({
447
+ name: "eacn_submit_bid",
448
+ description: "Submit a bid on a task (confidence + price).",
449
+ parameters: { type: "object", properties: { task_id: { type: "string" }, confidence: { type: "number", description: "0.0-1.0 confidence in ability to complete" }, price: { type: "number", description: "Bid price" }, agent_id: { type: "string" } }, required: ["task_id", "confidence", "price", "agent_id"] },
450
+ async execute(_id, params) {
451
+ const res = await net.submitBid(params.task_id, params.agent_id, params.confidence, params.price);
452
+ if (res.status && res.status !== "rejected") {
453
+ state.updateTask({ task_id: params.task_id, role: "executor", status: "bidding", domains: [], description_summary: "", created_at: new Date().toISOString() });
454
+ }
455
+ return ok(res);
456
+ },
457
+ });
458
+ // #24 eacn_submit_result
459
+ api.registerTool({
460
+ name: "eacn_submit_result",
461
+ description: "Submit execution result for a task.",
462
+ parameters: { type: "object", properties: { task_id: { type: "string" }, content: { type: "object", description: "Result content object" }, agent_id: { type: "string" } }, required: ["task_id", "content", "agent_id"] },
463
+ async execute(_id, params) {
464
+ const res = await net.submitResult(params.task_id, params.agent_id, params.content);
465
+ try {
466
+ await net.reportEvent(params.agent_id, "task_completed");
467
+ }
468
+ catch { /* non-critical */ }
469
+ return ok(res);
470
+ },
471
+ });
472
+ // #25 eacn_reject_task
473
+ api.registerTool({
474
+ name: "eacn_reject_task",
475
+ description: "Reject/return a task. Frees the execution slot. Note: rejection affects reputation.",
476
+ parameters: { type: "object", properties: { task_id: { type: "string" }, reason: { type: "string" }, agent_id: { type: "string" } }, required: ["task_id", "agent_id"] },
477
+ async execute(_id, params) {
478
+ const res = await net.rejectTask(params.task_id, params.agent_id, params.reason);
479
+ try {
480
+ await net.reportEvent(params.agent_id, "task_rejected");
481
+ }
482
+ catch { /* non-critical */ }
483
+ return ok(res);
484
+ },
485
+ });
486
+ // #26 eacn_create_subtask
487
+ api.registerTool({
488
+ name: "eacn_create_subtask",
489
+ description: "Create a subtask under a parent task. Budget is carved from parent's escrow.",
490
+ parameters: {
491
+ type: "object",
492
+ properties: {
493
+ parent_task_id: { type: "string" }, description: { type: "string" },
494
+ domains: { type: "array", items: { type: "string" } },
495
+ budget: { type: "number" }, deadline: { type: "string" },
496
+ initiator_id: { type: "string", description: "Agent ID of the executor creating the subtask" },
497
+ },
498
+ required: ["parent_task_id", "description", "domains", "budget", "initiator_id"],
499
+ },
500
+ async execute(_id, params) {
501
+ const task = await net.createSubtask(params.parent_task_id, params.initiator_id, { description: params.description }, params.domains, params.budget, params.deadline);
502
+ return ok({ subtask_id: task.id, parent_task_id: params.parent_task_id, status: task.status, depth: task.depth });
503
+ },
504
+ });
505
+ // #27 eacn_send_message
506
+ api.registerTool({
507
+ name: "eacn_send_message",
508
+ description: "Send a direct message to another Agent (A2A point-to-point).",
509
+ parameters: { type: "object", properties: { agent_id: { type: "string", description: "Target agent ID" }, content: { type: "string" }, sender_id: { type: "string", description: "Your agent ID" } }, required: ["agent_id", "content", "sender_id"] },
510
+ async execute(_id, params) {
511
+ return ok({ sent: true, to: params.agent_id, from: params.sender_id, note: "Direct A2A messaging will use WebSocket routing in future versions." });
512
+ },
513
+ });
514
+ // ═══════════════════════════════════════════════════════════════════════════
515
+ // Reputation (2)
516
+ // ═══════════════════════════════════════════════════════════════════════════
517
+ // #28 eacn_report_event
518
+ api.registerTool({
519
+ name: "eacn_report_event",
520
+ description: "Report a reputation event. Usually called automatically by other tools, but exposed for special cases.",
521
+ parameters: { type: "object", properties: { agent_id: { type: "string" }, event_type: { type: "string", description: "task_completed | task_rejected | task_timeout | bid_declined" } }, required: ["agent_id", "event_type"] },
522
+ async execute(_id, params) {
523
+ const res = await net.reportEvent(params.agent_id, params.event_type);
524
+ state.updateReputationCache(params.agent_id, res.score);
525
+ return ok(res);
526
+ },
527
+ });
528
+ // #29 eacn_get_reputation
529
+ api.registerTool({
530
+ name: "eacn_get_reputation",
531
+ description: "Query an Agent's global reputation score.",
532
+ parameters: { type: "object", properties: { agent_id: { type: "string" } }, required: ["agent_id"] },
533
+ async execute(_id, params) {
534
+ const res = await net.getReputation(params.agent_id);
535
+ state.updateReputationCache(params.agent_id, res.score);
536
+ return ok(res);
537
+ },
538
+ });
539
+ // ═══════════════════════════════════════════════════════════════════════════
540
+ // Economy (2)
541
+ // ═══════════════════════════════════════════════════════════════════════════
542
+ // #30 eacn_get_balance
543
+ api.registerTool({
544
+ name: "eacn_get_balance",
545
+ description: "Query an Agent's account balance: available funds and frozen (escrowed) funds.",
546
+ parameters: { type: "object", properties: { agent_id: { type: "string", description: "Agent ID to check balance for" } }, required: ["agent_id"] },
547
+ async execute(_id, params) {
548
+ return ok(await net.getBalance(params.agent_id));
549
+ },
550
+ });
551
+ // #31 eacn_deposit
552
+ api.registerTool({
553
+ name: "eacn_deposit",
554
+ description: "Deposit funds into an Agent's account. Increases available balance.",
555
+ parameters: { type: "object", properties: { agent_id: { type: "string", description: "Agent ID to deposit funds for" }, amount: { type: "number", description: "Amount to deposit (must be > 0)" } }, required: ["agent_id", "amount"] },
556
+ async execute(_id, params) {
557
+ return ok(await net.deposit(params.agent_id, params.amount));
558
+ },
559
+ });
560
+ // ═══════════════════════════════════════════════════════════════════════════
561
+ // Events (1)
562
+ // ═══════════════════════════════════════════════════════════════════════════
563
+ // #32 eacn_get_events
564
+ api.registerTool({
565
+ name: "eacn_get_events",
566
+ description: "Get pending events. WebSocket connections buffer events in memory; this drains the buffer.",
567
+ parameters: { type: "object", properties: {} },
568
+ async execute() {
569
+ const events = state.drainEvents();
570
+ return ok({ count: events.length, events });
571
+ },
572
+ });
573
+ }
574
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE1C,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,IAAI,iBAAiB,GAA0C,IAAI,CAAC;AAEpE,SAAS,cAAc;IACrB,IAAI,iBAAiB;QAAE,OAAO;IAC9B,iBAAiB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,CAAC;YAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,iBAAiB,EAAE,CAAC;QAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAAC,iBAAiB,GAAG,IAAI,CAAC;IAAC,CAAC;AACxF,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,EAAE,CAAC,IAAa;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,SAAS,sBAAsB;IAC7B,EAAE,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,oBAAoB;gBACvB,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBACrD,MAAM;YAER,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,SAAS,GAAI,KAAK,CAAC,OAAmC,EAAE,UAAgC,CAAC;gBAC/F,IAAI,SAAS,EAAE,CAAC;oBACd,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC;yBACnC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;wBACZ,KAAK,CAAC,UAAU,CAAC,CAAC;gCAChB,IAAI,EAAE,mBAAmB;gCACzB,OAAO,EAAE,MAAM;gCACf,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;gCACxD,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;6BACxB,CAAC,CAAC,CAAC;oBACN,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC;gBACzC,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,SAAS;gBACZ,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACzC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC;gBAC7E,MAAM;YAER,KAAK,qBAAqB;gBACxB,MAAM;YAER,KAAK,gBAAgB;gBACnB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC;gBACpE,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,KAAgB;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAkC,CAAC;IACzD,MAAM,WAAW,GAAI,OAAO,EAAE,OAAoB,IAAI,EAAE,CAAC;IAEzD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,KAAK,CAAC,YAAY,EAAE,oBAAoB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CACpE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAClF,CAAC;QACF,IAAI,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,oBAAoB;YAAE,OAAO;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;YAChB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;YACjE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,OAAO,WAAW,GAAQ;IAC/B,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,sBAAsB,EAAE,CAAC;IAEzB,8EAA8E;IAC9E,wBAAwB;IACxB,8EAA8E;IAE9E,kBAAkB;IAClB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,6HAA6H;QAC1I,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mDAAmD,EAAE;aACvG;SACF;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;YACvE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC/E,CAAC,CAAC,WAAW,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACnI,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;YACjB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACpI,CAAC;KACF,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,wFAAwF;QACrG,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO;YACX,aAAa,EAAE,CAAC;YAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;YAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;KACF,CAAC,CAAC;IAEH,oBAAoB;IACpB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,kGAAkG;QAC/G,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KACtD,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8EAA8E;QAC3F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,CAAC,WAAW;gBAAE,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC;YACnG,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QACzP,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,uBAAuB;IACvB,8EAA8E;IAE9E,yBAAyB;IACzB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,gHAAgH;QAC7H,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;gBACpE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBACxF,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;gBACxQ,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6CAA6C,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;gBACtR,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE;gBAClG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;aACzF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;SAC7C;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,CAAC,WAAW;gBAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;gBAAE,OAAO,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM;gBAAE,OAAO,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAc;gBACtB,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU;gBACjF,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;gBACvF,GAAG,EAAE,yBAAyB,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,SAAS;gBAC3E,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;aAChD,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;KACF,CAAC,CAAC;IAEH,oBAAoB;IACpB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,4CAA4C;QACzD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QACpG,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK;gBAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACtD,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACrD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;gBAC3O,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;oBAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;oBAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBACnE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;oBAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAChE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;oBAAE,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBAC/E,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;KACF,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,uCAAuC;QACpD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QACpG,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvD,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC;KACF,CAAC,CAAC;IAEH,yBAAyB;IACzB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+CAA+C;QAC5D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACnM,CAAC;KACF,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oFAAoF;QACjG,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;QAClI,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACtD;SACF;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E,oBAAoB;IACpB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,6DAA6D;QAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;QAClG,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1F,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;QAC/K,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACjH,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,4DAA4D;QACzE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChL,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,uDAAuD;QACpE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnK,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,kCAAkC;IAClC,8EAA8E;IAE9E,uBAAuB;IACvB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,2EAA2E;QACxF,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACrD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAC9D,sBAAsB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBACnF,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;wBAC5F,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;qBAC/E;oBACD,WAAW,EAAE,2CAA2C;iBACzD;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oDAAoD,EAAE;wBAC/F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;wBACvE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;qBACpG;oBACD,WAAW,EAAE,oCAAoC;iBAClD;gBACD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;aAChF;YACD,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC;SACpD;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO;gBACjC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvI,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC;gBAChC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY;gBAClD,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;gBACrF,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAClF,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC,CAAC,CAAC;YACH,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC1M,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5I,CAAC;KACF,CAAC,CAAC;IAEH,4BAA4B;IAC5B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,4GAA4G;QACzH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE;QACpJ,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;KACtH,CAAC,CAAC;IAEH,yBAAyB;IACzB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0DAA0D;QACvE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE;QACrP,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACrI,CAAC,CAAC;IAEH,sBAAsB;IACtB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sDAAsD;QACnE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE;QACpJ,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;KACjH,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE;QAC5O,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3I,CAAC,CAAC;IAEH,8BAA8B;IAC9B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,4DAA4D;QACzE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE;QAC5L,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACzI,CAAC,CAAC;IAEH,0BAA0B;IAC1B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,+EAA+E;QAC5F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE;QAC/N,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW,IAAI,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACzJ,CAAC,CAAC;IAEH,8EAA8E;IAC9E,iCAAiC;IACjC,8EAA8E;IAE9E,sBAAsB;IACtB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8CAA8C;QAC3D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE;QAClT,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC5C,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACjK,CAAC;YACD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,yBAAyB;IACzB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE;QAC1N,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACpF,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAC9F,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,uBAAuB;IACvB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qFAAqF;QAClG,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;QACxK,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjF,IAAI,CAAC;gBAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAC7F,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,0BAA0B;IAC1B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8EAA8E;QAC3F,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACnE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACrD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxD,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;aAC/F;YACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC;SACjF;QACD,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtK,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpH,CAAC;KACF,CAAC,CAAC;IAEH,wBAAwB;IACxB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,8DAA8D;QAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE;QACtP,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,qEAAqE,EAAE,CAAC,CAAC;QACtJ,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E,wBAAwB;IACxB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,wGAAwG;QACrH,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE;QAC/N,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACtE,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,0BAA0B;IAC1B,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QACpG,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrD,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAE9E,uBAAuB;IACvB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,gFAAgF;QAC7F,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;QAClJ,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,CAAC;KACF,CAAC,CAAC;IAEH,mBAAmB;IACnB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qEAAqE;QAClF,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;QACxO,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,MAAW;YACpC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;KACF,CAAC,CAAC;IAEH,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAE9E,sBAAsB;IACtB,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,4FAA4F;QACzG,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9C,KAAK,CAAC,OAAO;YACX,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * EACN MCP Server — exposes 32 tools via stdio transport.
3
+ *
4
+ * All intelligence lives in Skills (host LLM). This server is just
5
+ * state management + network API wrapper. No adapter, no registry —
6
+ * everything is inline.
7
+ */
8
+ export {};