akemon 0.1.75 → 0.1.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/server.js +19 -0
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -15,6 +15,18 @@ import { selfDir, initWorld, initBioState, initGuide, biosPath, loadBioState, sa
15
15
  let engineBusy = false;
16
16
  let engineBusySince = 0;
17
17
  let lastEngineTrace = []; // execution trace for order reporting
18
+ /** Report an execution log to the relay (fire-and-forget) */
19
+ function reportExecutionLog(relayHttp, secretKey, agentName, type, refId, status, error, trace) {
20
+ if (!relayHttp || !secretKey)
21
+ return;
22
+ const traceJson = trace.length > 0 ? JSON.stringify(trace).slice(0, 50000) : "";
23
+ fetch(`${relayHttp}/v1/agent/${encodeURIComponent(agentName)}/logs`, {
24
+ method: "POST",
25
+ headers: { Authorization: `Bearer ${secretKey}`, "Content-Type": "application/json" },
26
+ body: JSON.stringify({ type, ref_id: refId, status, error: error.slice(0, 2000), trace: traceJson }),
27
+ signal: AbortSignal.timeout(10_000),
28
+ }).catch(() => { }); // fire-and-forget
29
+ }
18
30
  // Order push notification — urgent orders bypass 30s poll
19
31
  const urgentOrderIds = new Set();
20
32
  let triggerWork = null;
@@ -1080,6 +1092,7 @@ Reply ONLY with JSON.`;
1080
1092
  }
1081
1093
  catch (err) {
1082
1094
  console.log(`[self] Digestion engine failed: ${err.message}`);
1095
+ reportExecutionLog(relayHttp, secretKey, agentName, "self_cycle", "digestion", "failed", err.message, lastEngineTrace);
1083
1096
  engineBusy = false;
1084
1097
  return;
1085
1098
  }
@@ -1195,6 +1208,7 @@ Reply ONLY with the summary text, no JSON, no markdown headers.`;
1195
1208
  }
1196
1209
  catch (err) {
1197
1210
  console.log(`[self] Activity ${activity} failed: ${err.message}`);
1211
+ reportExecutionLog(relayHttp, secretKey, agentName, "self_cycle", activity, "failed", err.message, lastEngineTrace);
1198
1212
  }
1199
1213
  engineBusy = false;
1200
1214
  }
@@ -1206,6 +1220,7 @@ Reply ONLY with the summary text, no JSON, no markdown headers.`;
1206
1220
  }
1207
1221
  catch (err) {
1208
1222
  console.log(`[self] Digestion error: ${err.message}`);
1223
+ reportExecutionLog(relayHttp, secretKey, agentName, "self_cycle", "digestion", "failed", err.message, lastEngineTrace);
1209
1224
  }
1210
1225
  }
1211
1226
  async function syncToRelay(workdir, agentName, sd, relayHttp, secretKey, bio) {
@@ -1399,6 +1414,7 @@ When sub-order completes, incorporate result_text into YOUR delivery. Then call
1399
1414
  });
1400
1415
  if (deliverRes.ok) {
1401
1416
  console.log(`[orders] Delivered order ${order.id} (${result.length} bytes)`);
1417
+ reportExecutionLog(relayHttp, secretKey, agentName, "order", order.id, "success", "", trace);
1402
1418
  retryState.delete(order.id);
1403
1419
  try {
1404
1420
  await onTaskCompleted(workdir, agentName, true);
@@ -1415,6 +1431,7 @@ When sub-order completes, incorporate result_text into YOUR delivery. Then call
1415
1431
  }
1416
1432
  catch (err) {
1417
1433
  console.log(`[orders] Failed to fulfill ${order.id}: ${err.message}`);
1434
+ reportExecutionLog(relayHttp, secretKey, agentName, "order", order.id, "failed", err.message, lastEngineTrace);
1418
1435
  // Check if agent self-delivered despite empty stdout
1419
1436
  try {
1420
1437
  const checkRes = await fetch(`${relayHttp}/v1/orders/${order.id}`);
@@ -1493,6 +1510,7 @@ When sub-order completes, incorporate result_text into YOUR delivery. Then call
1493
1510
  }
1494
1511
  catch (err) {
1495
1512
  console.log(`[tasks] Failed to execute ${task.id}: ${err.message}`);
1513
+ reportExecutionLog(relayHttp, secretKey, agentName, "platform_task", task.id, "failed", err.message, lastEngineTrace);
1496
1514
  }
1497
1515
  finally {
1498
1516
  engineBusy = false;
@@ -1515,6 +1533,7 @@ When sub-order completes, incorporate result_text into YOUR delivery. Then call
1515
1533
  }
1516
1534
  catch (err) {
1517
1535
  console.log(`[user-tasks] Failed: ${task.title}: ${err.message}`);
1536
+ reportExecutionLog(relayHttp, secretKey, agentName, "user_task", task.title, "failed", err.message, lastEngineTrace);
1518
1537
  }
1519
1538
  finally {
1520
1539
  engineBusy = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akemon",
3
- "version": "0.1.75",
3
+ "version": "0.1.76",
4
4
  "description": "Agent work marketplace — train your agent, let it work for others",
5
5
  "type": "module",
6
6
  "license": "MIT",