eacn3 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/state.js CHANGED
@@ -1,7 +1,15 @@
1
1
  /**
2
- * Local state persistence — reads/writes ~/.eacn3/state.json.
2
+ * Local state persistence — per-agent file isolation.
3
+ *
4
+ * Storage layout:
5
+ * ~/.eacn3/server.json ← shared server identity (rarely written)
6
+ * ~/.eacn3/agents/{agent_id}.json ← per-agent state (only one process writes)
7
+ * ~/.eacn3/events-{agent_id}.json ← per-agent events (already isolated)
8
+ *
9
+ * Each CC session owns exactly one agent and only writes to its own files.
10
+ * No cross-process file locking needed.
3
11
  */
4
- import { readFileSync, writeFileSync, mkdirSync, existsSync, copyFileSync, renameSync } from "node:fs";
12
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync, renameSync, unlinkSync } from "node:fs";
5
13
  import { randomBytes } from "node:crypto";
6
14
  import { join } from "node:path";
7
15
  import { homedir } from "node:os";
@@ -10,40 +18,203 @@ import { MAX_MESSAGES_PER_SESSION, createDefaultState } from "./models.js";
10
18
  // Paths
11
19
  // ---------------------------------------------------------------------------
12
20
  const EACN3_DIR = process.env.EACN3_STATE_DIR ?? join(homedir(), ".eacn3");
13
- const STATE_FILE = join(EACN3_DIR, "state.json");
14
- const STATE_BACKUP = join(EACN3_DIR, "state.json.bak");
21
+ const SERVER_FILE = join(EACN3_DIR, "server.json");
22
+ const AGENTS_DIR = join(EACN3_DIR, "agents");
23
+ /** Legacy state file — migrated on first load. */
24
+ const LEGACY_STATE_FILE = join(EACN3_DIR, "state.json");
25
+ // ---------------------------------------------------------------------------
26
+ // Atomic file write helper
27
+ // ---------------------------------------------------------------------------
28
+ function atomicWrite(filePath, data) {
29
+ const dir = join(filePath, "..");
30
+ mkdirSync(dir, { recursive: true });
31
+ const tmpFile = filePath + "." + randomBytes(4).toString("hex") + ".tmp";
32
+ writeFileSync(tmpFile, data);
33
+ renameSync(tmpFile, filePath);
34
+ }
35
+ function safeReadJSON(filePath) {
36
+ try {
37
+ if (!existsSync(filePath))
38
+ return null;
39
+ return JSON.parse(readFileSync(filePath, "utf-8"));
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
15
45
  // ---------------------------------------------------------------------------
16
46
  // Singleton state
17
47
  // ---------------------------------------------------------------------------
18
48
  let state = null;
49
+ /** Agents owned by THIS process (registered or restored in this session). */
50
+ const ownedAgentIds = new Set();
51
+ // ---------------------------------------------------------------------------
52
+ // Server data (shared, rarely written)
53
+ // ---------------------------------------------------------------------------
54
+ function loadServerData() {
55
+ return safeReadJSON(SERVER_FILE) ?? { server_card: null, network_endpoint: "" };
56
+ }
19
57
  /**
20
- * Load state from disk. Creates default if not exists.
58
+ * Persist server identity to disk. Only call this from eacn3_connect —
59
+ * server_card and network_endpoint don't change outside of connect.
21
60
  */
22
- export function load() {
23
- if (existsSync(STATE_FILE)) {
24
- try {
25
- const raw = readFileSync(STATE_FILE, "utf-8");
26
- state = JSON.parse(raw);
61
+ export function saveServerData() {
62
+ if (!state)
63
+ return;
64
+ const data = {
65
+ server_card: state.server_card,
66
+ network_endpoint: state.network_endpoint,
67
+ };
68
+ atomicWrite(SERVER_FILE, JSON.stringify(data, null, 2));
69
+ }
70
+ // ---------------------------------------------------------------------------
71
+ // Per-agent data
72
+ // ---------------------------------------------------------------------------
73
+ function agentFilePath(agentId) {
74
+ return join(AGENTS_DIR, `${agentId}.json`);
75
+ }
76
+ function loadAgentData(agentId) {
77
+ return safeReadJSON(agentFilePath(agentId));
78
+ }
79
+ function saveAgentData(agentId) {
80
+ if (!state)
81
+ return;
82
+ const agent = state.agents[agentId];
83
+ if (!agent)
84
+ return;
85
+ const s = state;
86
+ const prefix = `${agentId}:`;
87
+ // Collect this agent's tasks
88
+ const tasks = {};
89
+ for (const [tid, task] of Object.entries(s.local_tasks)) {
90
+ if (task.agent_id === agentId)
91
+ tasks[tid] = task;
92
+ }
93
+ // Collect this agent's sessions
94
+ const sessions = {};
95
+ if (s.active_sessions) {
96
+ for (const [key, msgs] of Object.entries(s.active_sessions)) {
97
+ if (key.startsWith(prefix))
98
+ sessions[key] = msgs;
27
99
  }
28
- catch {
29
- // Primary corrupted try backup
30
- if (existsSync(STATE_BACKUP)) {
31
- try {
32
- const bak = readFileSync(STATE_BACKUP, "utf-8");
33
- state = JSON.parse(bak);
34
- }
35
- catch {
36
- state = createDefaultState();
37
- }
38
- }
39
- else {
40
- state = createDefaultState();
41
- }
100
+ }
101
+ // Collect this agent's teams
102
+ const teams = {};
103
+ if (s.teams) {
104
+ for (const [key, team] of Object.entries(s.teams)) {
105
+ if (team.my_agent_id === agentId)
106
+ teams[key] = team;
42
107
  }
43
108
  }
44
- else {
45
- state = createDefaultState();
109
+ const data = {
110
+ agent,
111
+ local_tasks: tasks,
112
+ reputation_cache: { [agentId]: s.reputation_cache[agentId] ?? 0 },
113
+ active_sessions: sessions,
114
+ teams,
115
+ };
116
+ atomicWrite(agentFilePath(agentId), JSON.stringify(data, null, 2));
117
+ }
118
+ function removeAgentFile(agentId) {
119
+ const filePath = agentFilePath(agentId);
120
+ try {
121
+ if (existsSync(filePath))
122
+ unlinkSync(filePath);
46
123
  }
124
+ catch { /* best-effort */ }
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // Migration from legacy state.json
128
+ // ---------------------------------------------------------------------------
129
+ function migrateLegacyState() {
130
+ if (!existsSync(LEGACY_STATE_FILE))
131
+ return;
132
+ // Rename first (atomic on all platforms) — prevents concurrent migration.
133
+ // If another process already renamed it, this throws and we skip.
134
+ const migratedPath = LEGACY_STATE_FILE + ".migrated";
135
+ try {
136
+ renameSync(LEGACY_STATE_FILE, migratedPath);
137
+ }
138
+ catch {
139
+ return;
140
+ }
141
+ let legacy;
142
+ try {
143
+ legacy = JSON.parse(readFileSync(migratedPath, "utf-8"));
144
+ }
145
+ catch {
146
+ return;
147
+ }
148
+ // Only write server.json if it doesn't already exist — don't overwrite newer data
149
+ if (!existsSync(SERVER_FILE)) {
150
+ const serverData = {
151
+ server_card: legacy.server_card,
152
+ network_endpoint: legacy.network_endpoint,
153
+ };
154
+ atomicWrite(SERVER_FILE, JSON.stringify(serverData, null, 2));
155
+ }
156
+ // Write per-agent data (only if agent file doesn't exist)
157
+ for (const [agentId, agent] of Object.entries(legacy.agents ?? {})) {
158
+ const prefix = `${agentId}:`;
159
+ const tasks = {};
160
+ for (const [tid, task] of Object.entries(legacy.local_tasks ?? {})) {
161
+ if (task.agent_id === agentId)
162
+ tasks[tid] = task;
163
+ }
164
+ const sessions = {};
165
+ for (const [key, msgs] of Object.entries(legacy.active_sessions ?? {})) {
166
+ if (key.startsWith(prefix))
167
+ sessions[key] = msgs;
168
+ }
169
+ const teams = {};
170
+ for (const [key, team] of Object.entries(legacy.teams ?? {})) {
171
+ if (team.my_agent_id === agentId)
172
+ teams[key] = team;
173
+ }
174
+ const data = {
175
+ agent,
176
+ local_tasks: tasks,
177
+ reputation_cache: { [agentId]: legacy.reputation_cache?.[agentId] ?? 0 },
178
+ active_sessions: sessions,
179
+ teams,
180
+ };
181
+ // Only write if agent file doesn't exist — don't overwrite newer data
182
+ if (!existsSync(agentFilePath(agentId))) {
183
+ atomicWrite(agentFilePath(agentId), JSON.stringify(data, null, 2));
184
+ }
185
+ }
186
+ // Migrate per-agent pending_events to event files
187
+ if (legacy.pending_events) {
188
+ for (const [agentId, events] of Object.entries(legacy.pending_events)) {
189
+ if (events.length > 0) {
190
+ agentEvents.set(agentId, events);
191
+ saveAgentEventsFile(agentId);
192
+ }
193
+ }
194
+ }
195
+ console.error("[State] migrated legacy state.json to per-agent files");
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // Assemble / Disassemble EacnState
199
+ // ---------------------------------------------------------------------------
200
+ function assembleState() {
201
+ const server = loadServerData();
202
+ // Only load server identity — agents are NOT loaded automatically.
203
+ // Each session must explicitly claim an agent via claimAgent().
204
+ const s = createDefaultState(server.network_endpoint || undefined);
205
+ s.server_card = server.server_card;
206
+ return s;
207
+ }
208
+ // ---------------------------------------------------------------------------
209
+ // Public API — same interface as before
210
+ // ---------------------------------------------------------------------------
211
+ /**
212
+ * Load state from disk. Creates default if not exists.
213
+ */
214
+ export function load() {
215
+ mkdirSync(EACN3_DIR, { recursive: true });
216
+ migrateLegacyState();
217
+ state = assembleState();
47
218
  return state;
48
219
  }
49
220
  /**
@@ -52,8 +223,8 @@ export function load() {
52
223
  let saveQueued = false;
53
224
  let saving = false;
54
225
  /**
55
- * Persist current state to disk using atomic write (#107).
56
- * Writes to a temp file first, then renames to avoid partial writes.
226
+ * Persist current state to disk.
227
+ * Writes server.json + per-agent files for agents known to this session.
57
228
  */
58
229
  export function save() {
59
230
  if (!state)
@@ -64,18 +235,16 @@ export function save() {
64
235
  }
65
236
  saving = true;
66
237
  try {
67
- mkdirSync(EACN3_DIR, { recursive: true });
68
- // Backup current file before overwriting
69
- if (existsSync(STATE_FILE)) {
70
- try {
71
- copyFileSync(STATE_FILE, STATE_BACKUP);
238
+ for (const agentId of ownedAgentIds) {
239
+ if (state.agents[agentId]) {
240
+ saveAgentData(agentId);
241
+ // Refresh claim lock timestamp so other sessions know we're still alive
242
+ try {
243
+ writeFileSync(claimLockPath(agentId), `${process.pid}:${Date.now()}`);
244
+ }
245
+ catch { /* best-effort */ }
72
246
  }
73
- catch { /* best-effort */ }
74
247
  }
75
- // Atomic write: write to temp, then rename (#107)
76
- const tmpFile = STATE_FILE + "." + randomBytes(4).toString("hex") + ".tmp";
77
- writeFileSync(tmpFile, JSON.stringify(state, null, 2));
78
- renameSync(tmpFile, STATE_FILE);
79
248
  }
80
249
  finally {
81
250
  saving = false;
@@ -102,13 +271,154 @@ export function setState(newState) {
102
271
  // ---------------------------------------------------------------------------
103
272
  // Convenience methods
104
273
  // ---------------------------------------------------------------------------
274
+ /**
275
+ * List agents available on disk (from previous sessions).
276
+ * Does NOT load them into memory — just reads metadata for display.
277
+ */
278
+ export function listAvailableAgents() {
279
+ const result = [];
280
+ if (!existsSync(AGENTS_DIR))
281
+ return result;
282
+ try {
283
+ for (const file of readdirSync(AGENTS_DIR)) {
284
+ if (!file.endsWith(".json") || file.startsWith("."))
285
+ continue;
286
+ const agentId = file.slice(0, -5);
287
+ // Skip agents already claimed by another session (lock file exists and is fresh)
288
+ const lockPath = claimLockPath(agentId);
289
+ if (existsSync(lockPath)) {
290
+ try {
291
+ const raw = readFileSync(lockPath, "utf-8");
292
+ const ts = parseInt(raw.split(":")[1], 10);
293
+ if (Date.now() - ts < 60_000)
294
+ continue; // Active claim — skip
295
+ }
296
+ catch { /* unreadable lock — show agent */ }
297
+ }
298
+ const data = safeReadJSON(join(AGENTS_DIR, file));
299
+ if (data?.agent) {
300
+ result.push({
301
+ agent_id: data.agent.agent_id,
302
+ name: data.agent.name,
303
+ domains: data.agent.domains,
304
+ tier: data.agent.tier,
305
+ });
306
+ }
307
+ }
308
+ }
309
+ catch { /* dir unreadable */ }
310
+ return result;
311
+ }
312
+ /** Lock file path for an agent claim — prevents two sessions claiming the same agent. */
313
+ function claimLockPath(agentId) {
314
+ return join(AGENTS_DIR, `.${agentId}.lock`);
315
+ }
316
+ /**
317
+ * Claim an existing agent from disk into this session.
318
+ * Loads the agent's full data (tasks, sessions, teams) into memory and marks ownership.
319
+ * Uses an exclusive lock file to prevent two sessions from claiming the same agent.
320
+ * Returns the AgentCard, or null if not found or already claimed by another session.
321
+ */
322
+ export function claimAgent(agentId) {
323
+ const data = loadAgentData(agentId);
324
+ if (!data)
325
+ return null;
326
+ // Acquire exclusive claim lock — prevents two sessions from claiming the same agent.
327
+ // Lock file contains PID so stale locks from crashed processes can be detected.
328
+ mkdirSync(AGENTS_DIR, { recursive: true });
329
+ const lockPath = claimLockPath(agentId);
330
+ try {
331
+ writeFileSync(lockPath, `${process.pid}:${Date.now()}`, { flag: "wx" }); // O_CREAT | O_EXCL
332
+ }
333
+ catch {
334
+ // Lock exists — check if stale (process crashed)
335
+ try {
336
+ const raw = readFileSync(lockPath, "utf-8");
337
+ const ts = parseInt(raw.split(":")[1], 10);
338
+ if (Date.now() - ts > 60_000) {
339
+ // Stale lock (>60s old) — force remove and retry once
340
+ unlinkSync(lockPath);
341
+ try {
342
+ writeFileSync(lockPath, `${process.pid}:${Date.now()}`, { flag: "wx" });
343
+ }
344
+ catch {
345
+ return null;
346
+ } // Still can't lock — another session grabbed it
347
+ }
348
+ else {
349
+ return null; // Active lock from another session
350
+ }
351
+ }
352
+ catch {
353
+ return null;
354
+ }
355
+ }
356
+ const s = getState();
357
+ s.agents[agentId] = data.agent;
358
+ Object.assign(s.local_tasks, data.local_tasks);
359
+ Object.assign(s.reputation_cache, data.reputation_cache);
360
+ if (!s.active_sessions)
361
+ s.active_sessions = {};
362
+ Object.assign(s.active_sessions, data.active_sessions);
363
+ if (!s.teams)
364
+ s.teams = {};
365
+ Object.assign(s.teams, data.teams);
366
+ ownedAgentIds.add(agentId);
367
+ return data.agent;
368
+ }
105
369
  export function addAgent(agent) {
106
370
  getState().agents[agent.agent_id] = agent;
371
+ ownedAgentIds.add(agent.agent_id);
372
+ // Write claim lock for new agent
373
+ mkdirSync(AGENTS_DIR, { recursive: true });
374
+ try {
375
+ writeFileSync(claimLockPath(agent.agent_id), `${process.pid}:${Date.now()}`, { flag: "wx" });
376
+ }
377
+ catch { /* may already own */ }
107
378
  save();
108
379
  }
109
380
  export function removeAgent(agentId) {
110
- delete getState().agents[agentId];
111
- save();
381
+ const s = getState();
382
+ // Remove agent record
383
+ delete s.agents[agentId];
384
+ // Remove agent's local tasks
385
+ for (const [taskId, task] of Object.entries(s.local_tasks)) {
386
+ if (task.agent_id === agentId) {
387
+ delete s.local_tasks[taskId];
388
+ }
389
+ }
390
+ // Remove agent's reputation cache
391
+ delete s.reputation_cache[agentId];
392
+ // Remove agent's message sessions
393
+ if (s.active_sessions) {
394
+ for (const key of Object.keys(s.active_sessions)) {
395
+ if (key.startsWith(`${agentId}:`)) {
396
+ delete s.active_sessions[key];
397
+ }
398
+ }
399
+ }
400
+ // Remove agent's team records
401
+ if (s.teams) {
402
+ for (const [key, team] of Object.entries(s.teams)) {
403
+ if (team.my_agent_id === agentId) {
404
+ delete s.teams[key];
405
+ }
406
+ }
407
+ }
408
+ // Remove per-agent files, ownership and claim lock
409
+ ownedAgentIds.delete(agentId);
410
+ removeAgentFile(agentId);
411
+ try {
412
+ unlinkSync(claimLockPath(agentId));
413
+ }
414
+ catch { /* best-effort */ }
415
+ agentEvents.delete(agentId);
416
+ const evtFile = eventsFilePath(agentId);
417
+ try {
418
+ if (existsSync(evtFile))
419
+ unlinkSync(evtFile);
420
+ }
421
+ catch { /* best-effort */ }
112
422
  }
113
423
  export function getAgent(agentId) {
114
424
  return getState().agents[agentId];
@@ -134,29 +444,60 @@ export function updateTaskStatus(taskId, status) {
134
444
  export function getTask(taskId) {
135
445
  return getState().local_tasks[taskId];
136
446
  }
447
+ // ---------------------------------------------------------------------------
448
+ // Per-agent event files (unchanged — already isolated)
449
+ // ---------------------------------------------------------------------------
450
+ /** In-memory cache of per-agent events. */
451
+ const agentEvents = new Map();
452
+ function eventsFilePath(agentId) {
453
+ return join(EACN3_DIR, `events-${agentId}.json`);
454
+ }
455
+ function loadAgentEventsFromFile(agentId) {
456
+ if (agentEvents.has(agentId))
457
+ return agentEvents.get(agentId);
458
+ const filePath = eventsFilePath(agentId);
459
+ try {
460
+ if (existsSync(filePath)) {
461
+ const raw = readFileSync(filePath, "utf-8");
462
+ const events = JSON.parse(raw);
463
+ agentEvents.set(agentId, events);
464
+ return events;
465
+ }
466
+ }
467
+ catch { /* corrupted — start fresh */ }
468
+ agentEvents.set(agentId, []);
469
+ return [];
470
+ }
471
+ function saveAgentEventsFile(agentId) {
472
+ const events = agentEvents.get(agentId) ?? [];
473
+ try {
474
+ mkdirSync(EACN3_DIR, { recursive: true });
475
+ const filePath = eventsFilePath(agentId);
476
+ const tmpFile = filePath + "." + randomBytes(4).toString("hex") + ".tmp";
477
+ writeFileSync(tmpFile, JSON.stringify(events));
478
+ renameSync(tmpFile, filePath);
479
+ }
480
+ catch { /* best-effort */ }
481
+ }
137
482
  export function pushEvents(agentId, events) {
138
- const s = getState();
139
- if (!s.pending_events[agentId])
140
- s.pending_events[agentId] = [];
141
- s.pending_events[agentId].push(...events);
142
- save();
483
+ const existing = loadAgentEventsFromFile(agentId);
484
+ existing.push(...events);
485
+ saveAgentEventsFile(agentId);
143
486
  }
144
487
  export function drainEvents(agentId) {
145
- const s = getState();
146
- const events = s.pending_events[agentId] ?? [];
147
- s.pending_events[agentId] = [];
148
- save();
488
+ const events = loadAgentEventsFromFile(agentId);
489
+ agentEvents.set(agentId, []);
490
+ saveAgentEventsFile(agentId);
149
491
  return events;
150
492
  }
151
493
  /** Drain events for ALL agents at once (used by legacy callers). */
152
494
  export function drainAllEvents() {
153
- const s = getState();
154
495
  const all = [];
155
- for (const events of Object.values(s.pending_events)) {
496
+ for (const [agentId, events] of agentEvents) {
156
497
  all.push(...events);
498
+ agentEvents.set(agentId, []);
499
+ saveAgentEventsFile(agentId);
157
500
  }
158
- s.pending_events = {};
159
- save();
160
501
  return all;
161
502
  }
162
503
  export function updateReputationCache(agentId, score) {
@@ -242,12 +583,11 @@ export function getTeamsForAgent(agentId) {
242
583
  return Object.values(ensureTeams()).filter((t) => t.my_agent_id === agentId);
243
584
  }
244
585
  export function updateTeamPeerBranch(teamId, peerId, branch) {
245
- // Find all team entries with this team_id (one per local agent)
246
586
  const teams = ensureTeams();
247
587
  const entries = Object.values(teams).filter((t) => t.team_id === teamId);
248
588
  for (const team of entries) {
249
589
  team.peer_branches[peerId] = branch;
250
- // Check if all peers have completed handshake
590
+ // Check if all peers have branches → team ready
251
591
  const peers = team.agent_ids.filter((id) => id !== team.my_agent_id);
252
592
  if (peers.every((id) => id in team.peer_branches)) {
253
593
  team.status = "ready";
@@ -256,7 +596,6 @@ export function updateTeamPeerBranch(teamId, peerId, branch) {
256
596
  }
257
597
  }
258
598
  export function setTeamBranch(teamId, branch) {
259
- // Update my_branch for all entries of this team (all local agents)
260
599
  const teams = ensureTeams();
261
600
  let saved = false;
262
601
  for (const team of Object.values(teams)) {
@@ -268,17 +607,26 @@ export function setTeamBranch(teamId, branch) {
268
607
  if (saved)
269
608
  save();
270
609
  }
610
+ /** Find team by handshake task ID (in either ack_out or ack_in). */
271
611
  export function findTeamByHandshakeTask(taskId) {
272
612
  for (const team of Object.values(ensureTeams())) {
273
- for (const [peerId, tid] of Object.entries(team.handshake_out)) {
613
+ for (const [peerId, tid] of Object.entries(team.ack_out)) {
274
614
  if (tid === taskId)
275
615
  return { team, direction: "out", peerId };
276
616
  }
277
- for (const [peerId, tid] of Object.entries(team.handshake_in)) {
617
+ for (const [peerId, tid] of Object.entries(team.ack_in)) {
278
618
  if (tid === taskId)
279
619
  return { team, direction: "in", peerId };
280
620
  }
281
621
  }
282
622
  return undefined;
283
623
  }
624
+ /** Record an incoming handshake task for a team. */
625
+ export function recordAckIn(teamId, agentId, peerId, taskId) {
626
+ const team = Object.values(ensureTeams()).find((t) => t.team_id === teamId && t.my_agent_id === agentId);
627
+ if (team) {
628
+ team.ack_in[peerId] = taskId;
629
+ save();
630
+ }
631
+ }
284
632
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/state.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "id": "eacn3",
3
3
  "name": "EACN3 Network Plugin",
4
4
  "description": "Agent collaboration network — install to go online, uninstall to go offline. Publish tasks, register agents, earn reputation.",
5
- "version": "0.5.0",
5
+ "version": "0.5.1",
6
6
  "configSchema": {
7
7
  "type": "object",
8
8
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eacn3",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "EACN3 network plugin — your digital network card for agent collaboration",
5
5
  "keywords": [
6
6
  "ai",
@@ -37,7 +37,8 @@
37
37
  ".mcp.json",
38
38
  "dist/",
39
39
  "scripts/",
40
- "skills/"
40
+ "skills/",
41
+ "AGENT_GUIDE.md"
41
42
  ],
42
43
  "dependencies": {
43
44
  "@modelcontextprotocol/sdk": "^1.12.1",