@adhdev/daemon-standalone 0.9.82-rc.172 → 0.9.82-rc.173
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 +769 -685
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-BSeeeP5M.css +1 -0
- package/public/assets/index-DcGt6j-i.js +99 -0
- package/public/index.html +2 -2
- package/vendor/mcp-server/index.js +9 -5
- 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-DcGt6j-i.js"></script>
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-DNk1FT1R.js">
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BSeeeP5M.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<!-- Apply theme immediately to prevent FOIT (Flash of Incorrect Theme) -->
|
|
@@ -1724,7 +1724,9 @@ var MESH_ENQUEUE_TASK_TOOL = {
|
|
|
1724
1724
|
properties: {
|
|
1725
1725
|
message: { type: "string", description: "The task instruction for the agent." },
|
|
1726
1726
|
task_mode: { type: "string", enum: ["code_change", "validation", "live_debug_readonly", "launch_app", "convergence"], description: "Optional task-mode contract. live_debug_readonly rejects obvious write/commit/push/deploy/destructive instructions before dispatch." },
|
|
1727
|
-
taskMode: { type: "string", enum: ["code_change", "validation", "live_debug_readonly", "launch_app", "convergence"], description: "CamelCase alias for task_mode." }
|
|
1727
|
+
taskMode: { type: "string", enum: ["code_change", "validation", "live_debug_readonly", "launch_app", "convergence"], description: "CamelCase alias for task_mode." },
|
|
1728
|
+
requiredTags: { type: "array", items: { type: "string" }, description: "Optional capability tags that every eligible node must have, e.g. os=darwin, provider=codex-cli, gpu." },
|
|
1729
|
+
required_tags: { type: "array", items: { type: "string" }, description: "Snake_case alias for requiredTags." }
|
|
1728
1730
|
},
|
|
1729
1731
|
required: ["message"]
|
|
1730
1732
|
}
|
|
@@ -2364,12 +2366,13 @@ async function meshListNodes(ctx) {
|
|
|
2364
2366
|
}
|
|
2365
2367
|
async function meshEnqueueTask(ctx, args) {
|
|
2366
2368
|
const taskMode = readString(args.task_mode) || readString(args.taskMode);
|
|
2369
|
+
const requiredTags = (0, import_daemon_core.normalizeMeshCapabilityTags)(Array.isArray(args.requiredTags) ? args.requiredTags : args.required_tags);
|
|
2367
2370
|
try {
|
|
2368
|
-
const task = (0, import_daemon_core.enqueueTask)(ctx.mesh.id, args.message, { taskMode });
|
|
2371
|
+
const task = (0, import_daemon_core.enqueueTask)(ctx.mesh.id, args.message, { taskMode, requiredTags });
|
|
2369
2372
|
if (isLocalTransport(ctx.transport) && !(ctx.transport instanceof IpcTransport)) {
|
|
2370
2373
|
ctx.transport.command("trigger_mesh_queue", { meshId: ctx.mesh.id }).catch(() => {
|
|
2371
2374
|
});
|
|
2372
|
-
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode });
|
|
2375
|
+
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode, requiredTags: task.requiredTags });
|
|
2373
2376
|
}
|
|
2374
2377
|
if (ctx.transport instanceof IpcTransport) {
|
|
2375
2378
|
ctx.transport.command("trigger_mesh_queue", { meshId: ctx.mesh.id }).catch(() => {
|
|
@@ -2378,6 +2381,7 @@ async function meshEnqueueTask(ctx, args) {
|
|
|
2378
2381
|
for (const node of ctx.mesh.nodes) {
|
|
2379
2382
|
const isLocalNode = isLocalControlPlaneNode(ctx, node);
|
|
2380
2383
|
if (isLocalNode || !node.daemonId) continue;
|
|
2384
|
+
if (!(0, import_daemon_core.nodeSatisfiesRequiredTags)(requiredTags, (0, import_daemon_core.buildMeshNodeCapabilityTags)(node))) continue;
|
|
2381
2385
|
dispatchPromises.push(
|
|
2382
2386
|
ipcDispatchToRemoteAgent(ctx, node, { message: args.message }).then((result) => {
|
|
2383
2387
|
if (result.success) {
|
|
@@ -2424,9 +2428,9 @@ async function meshEnqueueTask(ctx, args) {
|
|
|
2424
2428
|
}
|
|
2425
2429
|
Promise.all(dispatchPromises).catch(() => {
|
|
2426
2430
|
});
|
|
2427
|
-
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode });
|
|
2431
|
+
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode, requiredTags: task.requiredTags });
|
|
2428
2432
|
}
|
|
2429
|
-
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode });
|
|
2433
|
+
return JSON.stringify({ success: true, source: "queue", taskId: task.id, status: task.status, taskMode: task.taskMode, requiredTags: task.requiredTags });
|
|
2430
2434
|
} catch (e) {
|
|
2431
2435
|
const message = e?.message || String(e);
|
|
2432
2436
|
if (message.includes("live_debug_readonly_guardrail_violation")) {
|