@adhdev/daemon-standalone 0.9.82-rc.310 → 0.9.82-rc.312
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/index.js +1059 -262
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-Cw4o3csc.css +1 -0
- package/public/assets/index-DiyV4rNX.js +113 -0
- package/public/assets/index-jzEwV60L.js +114 -0
- package/public/index.html +2 -2
- package/vendor/mcp-server/index.js +41 -0
- package/vendor/mcp-server/index.js.map +1 -1
package/public/index.html
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
<meta name="description" content="ADHDev self-hosted dashboard for controlling AI agents" />
|
|
8
8
|
<link rel="icon" href="/otter-logo.png" />
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet" />
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-jzEwV60L.js"></script>
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-BHUMCOj6.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Cw4o3csc.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<!-- Apply theme immediately to prevent FOIT (Flash of Incorrect Theme) -->
|
|
@@ -2404,6 +2404,21 @@ var MESH_GIT_STATUS_TOOL = {
|
|
|
2404
2404
|
required: ["node_id"]
|
|
2405
2405
|
}
|
|
2406
2406
|
};
|
|
2407
|
+
var MESH_READ_NODE_LOGS_TOOL = {
|
|
2408
|
+
name: "mesh_read_node_logs",
|
|
2409
|
+
description: "Fetch a recent daemon LOG tail directly from a (possibly remote) mesh node over P2P \u2014 no session launch, no PowerShell/shell grep on the remote machine. Use this to debug a node's daemon: read its error/warn lines, grep for a pattern, or read since a timestamp. The reply is byte-bounded (\u2264128KB, default 64KB; truncated:true when the file was larger, newest lines kept) and secrets (API keys, machine secrets, bearer tokens, JWTs, TURN credentials) are redacted before transmission. This reads the DAEMON log, not an agent session transcript \u2014 for a session transcript use mesh_read_chat / mesh_read_debug.",
|
|
2410
|
+
inputSchema: {
|
|
2411
|
+
type: "object",
|
|
2412
|
+
properties: {
|
|
2413
|
+
node_id: { type: "string", description: "Target node ID (the daemon owning it serves its own log)." },
|
|
2414
|
+
grep: { type: "string", description: "Optional regex (case-insensitive) \u2014 only matching log lines are returned. Invalid regex falls back to a literal substring match." },
|
|
2415
|
+
since_ms: { type: "number", description: "Optional epoch-ms floor \u2014 only log lines at/after this time are returned (lines without a parseable timestamp are kept)." },
|
|
2416
|
+
tail_bytes: { type: "number", description: "Max bytes of log tail to read (default 65536, capped at 131072). Larger files are truncated to the newest tail_bytes." },
|
|
2417
|
+
date: { type: "string", description: "Optional YYYY-MM-DD log date (defaults to today). Falls back to the size-rotation backup when the active file is absent." }
|
|
2418
|
+
},
|
|
2419
|
+
required: ["node_id"]
|
|
2420
|
+
}
|
|
2421
|
+
};
|
|
2407
2422
|
var MESH_FAST_FORWARD_NODE_TOOL = {
|
|
2408
2423
|
name: "mesh_fast_forward_node",
|
|
2409
2424
|
description: 'Safely dry-run or execute an obvious direct fast-forward for a mesh node without launching an agent session. mode="merge" (default) absorbs upstream commits into the local branch via git merge --ff-only (ahead=0, behind>0). mode="push" publishes local commits to origin via a strict ff-only push (HEAD must be a descendant of origin/<branch>). Defaults to dry-run; execution requires execute=true. Never force-pushes, rebases, resets, cleans, or checks out arbitrary revisions. When the merge path finds the branch ahead with nothing to merge, it returns code "ahead_needs_push" pointing at mode="push".',
|
|
@@ -2668,6 +2683,7 @@ var ALL_MESH_TOOLS = [
|
|
|
2668
2683
|
MESH_READ_DEBUG_TOOL,
|
|
2669
2684
|
MESH_LAUNCH_SESSION_TOOL,
|
|
2670
2685
|
MESH_GIT_STATUS_TOOL,
|
|
2686
|
+
MESH_READ_NODE_LOGS_TOOL,
|
|
2671
2687
|
MESH_FAST_FORWARD_NODE_TOOL,
|
|
2672
2688
|
MESH_CHECKPOINT_TOOL,
|
|
2673
2689
|
MESH_APPROVE_TOOL,
|
|
@@ -4146,6 +4162,28 @@ async function meshGitStatus(ctx, args) {
|
|
|
4146
4162
|
}, null, 2);
|
|
4147
4163
|
}
|
|
4148
4164
|
}
|
|
4165
|
+
async function meshReadNodeLogs(ctx, args) {
|
|
4166
|
+
const node = await findNodeWithRefresh(ctx, args.node_id);
|
|
4167
|
+
try {
|
|
4168
|
+
const result = await commandForNode(ctx, node, "get_mesh_node_logs", {
|
|
4169
|
+
meshId: ctx.mesh.id,
|
|
4170
|
+
nodeId: args.node_id,
|
|
4171
|
+
...typeof args.grep === "string" && args.grep.trim() ? { grep: args.grep.trim() } : {},
|
|
4172
|
+
...Number.isFinite(args.since_ms) ? { sinceMs: args.since_ms } : {},
|
|
4173
|
+
...Number.isFinite(args.tail_bytes) ? { tailBytes: args.tail_bytes } : {},
|
|
4174
|
+
...typeof args.date === "string" && args.date.trim() ? { date: args.date.trim() } : {}
|
|
4175
|
+
});
|
|
4176
|
+
const payload = unwrapCommandPayload(result);
|
|
4177
|
+
return JSON.stringify(payload, null, 2);
|
|
4178
|
+
} catch (e) {
|
|
4179
|
+
const failure = buildCoordinatorP2pRelayFailure(e, {
|
|
4180
|
+
command: "get_mesh_node_logs",
|
|
4181
|
+
targetDaemonId: node.daemonId,
|
|
4182
|
+
nodeId: args.node_id
|
|
4183
|
+
});
|
|
4184
|
+
return JSON.stringify(failure, null, 2);
|
|
4185
|
+
}
|
|
4186
|
+
}
|
|
4149
4187
|
async function meshFastForwardNode(ctx, args) {
|
|
4150
4188
|
await refreshMeshFromDaemon(ctx);
|
|
4151
4189
|
const node = await findNodeWithRefresh(ctx, args.node_id);
|
|
@@ -5557,6 +5595,9 @@ async function startMcpServer(opts) {
|
|
|
5557
5595
|
case "mesh_git_status":
|
|
5558
5596
|
text = await meshGitStatus(meshCtx, a);
|
|
5559
5597
|
break;
|
|
5598
|
+
case "mesh_read_node_logs":
|
|
5599
|
+
text = await meshReadNodeLogs(meshCtx, a);
|
|
5600
|
+
break;
|
|
5560
5601
|
case "mesh_fast_forward_node":
|
|
5561
5602
|
text = await meshFastForwardNode(meshCtx, a);
|
|
5562
5603
|
break;
|