eacn3 0.5.0 → 0.6.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.
- package/AGENT_GUIDE.md +345 -0
- package/dist/index.js +75 -62
- package/dist/index.js.map +1 -1
- package/dist/server.js +588 -229
- package/dist/server.js.map +1 -1
- package/dist/src/event-transport.d.ts +24 -7
- package/dist/src/event-transport.js +92 -114
- package/dist/src/event-transport.js.map +1 -1
- package/dist/src/models.d.ts +12 -8
- package/dist/src/models.js.map +1 -1
- package/dist/src/network-client.d.ts +2 -0
- package/dist/src/network-client.js +83 -9
- package/dist/src/network-client.js.map +1 -1
- package/dist/src/reverse-control.js +3 -3
- package/dist/src/reverse-control.js.map +1 -1
- package/dist/src/state.d.ts +37 -4
- package/dist/src/state.js +406 -58
- package/dist/src/state.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -2
- package/scripts/cli.cjs +29 -12
package/dist/src/state.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Local state persistence —
|
|
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,
|
|
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
|
|
14
|
-
const
|
|
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
|
-
*
|
|
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
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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
|
|
56
|
-
* 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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
111
|
-
|
|
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
|
|
139
|
-
|
|
140
|
-
|
|
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
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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
|
package/dist/src/state.js.map
CHANGED
|
@@ -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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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -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.
|
|
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.
|
|
3
|
+
"version": "0.6.0",
|
|
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",
|