@adhdev/daemon-standalone 0.9.76-rc.55 → 0.9.76-rc.57
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 +39 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-CPCf-dYE.js +96 -0
- package/public/index.html +1 -1
- package/vendor/mcp-server/index.js +39 -22
- package/vendor/mcp-server/index.js.map +1 -1
package/public/index.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
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-CPCf-dYE.js"></script>
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/vendor-CLec0455.js">
|
|
12
12
|
<link rel="stylesheet" crossorigin href="/assets/index-Pbz3ARg_.css">
|
|
13
13
|
</head>
|
|
@@ -25757,7 +25757,7 @@ function buildRulesSection(coordinatorCliType) {
|
|
|
25757
25757
|
- **Respect explicit provider requests.** If the user names an agent/provider, pass the matching provider type to \`mesh_launch_session\`: Hermes \u2192 \`hermes-cli\`, Claude Code/Claude \u2192 \`claude-cli\`, Codex \u2192 \`codex-cli\`, Gemini \u2192 \`gemini-cli\`. Never substitute \`claude-cli\` just because the coordinator itself is Claude Code.
|
|
25758
25758
|
- **Front-load the task message.** When calling \`mesh_send_task\`, include everything the agent needs: what files to touch, what the problem is, what the fix should look like. The agent won't ask follow-up questions.
|
|
25759
25759
|
- **Don't inspect code.** Trust the agent's output. Verify via \`mesh_git_status\`, not by reading source files.
|
|
25760
|
-
- **Don't over-parallelize.** Start with 1-2 concurrent tasks. Scale up if they succeed.
|
|
25760
|
+
- **Don't over-parallelize.** Start with 1-2 concurrent tasks. Scale up if they succeed. Never launch a duplicate session or second worker solely because \`mesh_read_chat\` has no final assistant message while the delegated session is still showing tool/terminal activity.
|
|
25761
25761
|
- **Handle failures gracefully.** If a task fails, read the chat to understand why, then retry or reassign.
|
|
25762
25762
|
- **Keep the user informed.** Report progress after each delegation round \u2014 one or two sentences, not a narration.
|
|
25763
25763
|
- **Respect node capabilities.** Don't send build tasks to read-only nodes. Don't push from nodes that aren't allowed to.
|
|
@@ -28800,21 +28800,31 @@ function readMessageMeta(message) {
|
|
|
28800
28800
|
const meta3 = message?.meta;
|
|
28801
28801
|
return meta3 && typeof meta3 === "object" && !Array.isArray(meta3) ? meta3 : null;
|
|
28802
28802
|
}
|
|
28803
|
-
function
|
|
28804
|
-
|
|
28805
|
-
const visibility = typeof meta3.transcriptVisibility === "string" ? meta3.transcriptVisibility.trim().toLowerCase() : "";
|
|
28806
|
-
return visibility === "hidden" || visibility === "debug" || meta3.internal === true || meta3.debug === true || meta3.statusOnly === true || meta3.controlOnly === true;
|
|
28803
|
+
function readStringField(value) {
|
|
28804
|
+
return typeof value === "string" ? value.trim().toLowerCase() : "";
|
|
28807
28805
|
}
|
|
28808
|
-
function
|
|
28809
|
-
|
|
28810
|
-
|
|
28811
|
-
|
|
28806
|
+
function readVisibilityField(message, meta3) {
|
|
28807
|
+
const record2 = message;
|
|
28808
|
+
return readStringField(record2.visibility ?? record2.transcriptVisibility ?? meta3?.visibility ?? meta3?.transcriptVisibility);
|
|
28809
|
+
}
|
|
28810
|
+
function isExplicitlyHiddenFromTranscript(message, meta3) {
|
|
28811
|
+
const record2 = message;
|
|
28812
|
+
const visibility = readVisibilityField(message, meta3);
|
|
28813
|
+
const audience = readStringField(record2.audience ?? meta3?.audience);
|
|
28814
|
+
const source = readStringField(record2.source ?? meta3?.source);
|
|
28815
|
+
return visibility === "hidden" || visibility === "debug" || visibility === "internal" || audience === "debug" || audience === "trace" || audience === "internal" || source === "runtime_status" || source === "runtime_activity" || source === "provider_chrome" || source === "control" || record2.internal === true || record2.isInternal === true || record2.debug === true || meta3?.internal === true || meta3?.isInternal === true || meta3?.debug === true || meta3?.statusOnly === true || meta3?.controlOnly === true;
|
|
28816
|
+
}
|
|
28817
|
+
function isExplicitlyVisibleInTranscript(message, meta3) {
|
|
28818
|
+
const record2 = message;
|
|
28819
|
+
const visibility = readVisibilityField(message, meta3);
|
|
28820
|
+
const audience = readStringField(record2.audience ?? meta3?.audience);
|
|
28821
|
+
return visibility === "visible" || visibility === "user" || visibility === "chat" || audience === "chat" || record2.userFacing === true || meta3?.userFacing === true;
|
|
28812
28822
|
}
|
|
28813
28823
|
function isUserFacingChatMessage(message) {
|
|
28814
28824
|
if (!message) return false;
|
|
28815
28825
|
const meta3 = readMessageMeta(message);
|
|
28816
|
-
if (isExplicitlyHiddenFromTranscript(meta3)) return false;
|
|
28817
|
-
if (isExplicitlyVisibleInTranscript(meta3)) return true;
|
|
28826
|
+
if (isExplicitlyHiddenFromTranscript(message, meta3)) return false;
|
|
28827
|
+
if (isExplicitlyVisibleInTranscript(message, meta3)) return true;
|
|
28818
28828
|
const role = typeof message.role === "string" ? message.role.trim().toLowerCase() : "";
|
|
28819
28829
|
const kind = resolveChatMessageKind(message);
|
|
28820
28830
|
if (role === "user" || role === "human") return kind === "standard" || kind === "";
|
|
@@ -30003,6 +30013,14 @@ function validateMessage(message, source, index) {
|
|
|
30003
30013
|
if (typeof message.senderName === "string") normalized.senderName = message.senderName;
|
|
30004
30014
|
if (typeof message._type === "string") normalized._type = message._type;
|
|
30005
30015
|
if (typeof message._sub === "string") normalized._sub = message._sub;
|
|
30016
|
+
if (typeof message.visibility === "string") normalized.visibility = message.visibility;
|
|
30017
|
+
if (typeof message.transcriptVisibility === "string") normalized.transcriptVisibility = message.transcriptVisibility;
|
|
30018
|
+
if (typeof message.audience === "string") normalized.audience = message.audience;
|
|
30019
|
+
if (typeof message.source === "string") normalized.source = message.source;
|
|
30020
|
+
if (typeof message.userFacing === "boolean") normalized.userFacing = message.userFacing;
|
|
30021
|
+
if (typeof message.internal === "boolean") normalized.internal = message.internal;
|
|
30022
|
+
if (typeof message.isInternal === "boolean") normalized.isInternal = message.isInternal;
|
|
30023
|
+
if (typeof message.debug === "boolean") normalized.debug = message.debug;
|
|
30006
30024
|
return normalized;
|
|
30007
30025
|
}
|
|
30008
30026
|
function validateModal(activeModal, status, source) {
|
|
@@ -30992,19 +31010,19 @@ function buildReadChatCommandResult(payload, args) {
|
|
|
30992
31010
|
const visibleMessages = filterUserFacingChatMessages(messages);
|
|
30993
31011
|
const sync = buildFullTail(visibleMessages, normalizeReadChatTailLimit(args));
|
|
30994
31012
|
const hiddenMsgCount = Math.max(0, messages.length - visibleMessages.length);
|
|
30995
|
-
const
|
|
30996
|
-
...debugReadChat
|
|
30997
|
-
fullMsgCount: messages.length,
|
|
31013
|
+
const returnedDebugReadChat = debugReadChat ? {
|
|
31014
|
+
...debugReadChat,
|
|
31015
|
+
fullMsgCount: typeof debugReadChat.fullMsgCount === "number" ? debugReadChat.fullMsgCount : messages.length,
|
|
30998
31016
|
visibleMsgCount: visibleMessages.length,
|
|
30999
31017
|
hiddenMsgCount,
|
|
31000
31018
|
returnedMsgCount: sync.messages.length
|
|
31001
|
-
};
|
|
31019
|
+
} : void 0;
|
|
31002
31020
|
return {
|
|
31003
31021
|
success: true,
|
|
31004
31022
|
...validatedPayload,
|
|
31005
31023
|
messages: sync.messages,
|
|
31006
31024
|
totalMessages: sync.totalMessages,
|
|
31007
|
-
debugReadChat:
|
|
31025
|
+
...returnedDebugReadChat ? { debugReadChat: returnedDebugReadChat } : {}
|
|
31008
31026
|
};
|
|
31009
31027
|
}
|
|
31010
31028
|
function truncateDebugString(value, maxLength) {
|
|
@@ -40164,8 +40182,8 @@ var init_dist2 = __esm({
|
|
|
40164
40182
|
b. If you need branch isolation for parallel work, call \`mesh_clone_node\` to create a worktree node first.
|
|
40165
40183
|
c. If no session exists, call \`mesh_launch_session\` to start one.
|
|
40166
40184
|
d. Call \`mesh_send_task\` with a **complete, self-contained** instruction that includes all context the agent needs (file paths, line numbers, what to change, why). Do not send partial instructions expecting future follow-up.
|
|
40167
|
-
4. **Monitor** \u2014
|
|
40168
|
-
5. **Verify** \u2014 When a task reports completion, call \`mesh_git_status\` to verify changes were made.
|
|
40185
|
+
4. **Monitor** \u2014 Prefer event-driven completion/status notifications. Do **not** poll \`mesh_read_chat\` repeatedly just because the delegated session has not produced a final assistant message yet; tool/terminal activity means work may still be in progress. Use at most one compact \`mesh_read_chat\` check after a completion/approval signal, an explicit user status request, or a real timeout/stall. Handle approvals via \`mesh_approve\`.
|
|
40186
|
+
5. **Verify** \u2014 When a task reports completion or git work is visible, call \`mesh_git_status\` to verify changes were made.
|
|
40169
40187
|
6. **Checkpoint** \u2014 Call \`mesh_checkpoint\` to save the work.
|
|
40170
40188
|
7. **Clean up** \u2014 Remove worktree nodes via \`mesh_remove_node\` after their work is merged or no longer needed.
|
|
40171
40189
|
8. **Report** \u2014 Summarize what was done, what changed, and any issues.`;
|
|
@@ -47248,12 +47266,11 @@ ${effect.notification.body || ""}`.trim();
|
|
|
47248
47266
|
return Number.isFinite(value) && value > 0 ? value : 0;
|
|
47249
47267
|
};
|
|
47250
47268
|
const getRole = (message) => typeof message.role === "string" ? message.role.trim().toLowerCase() : "";
|
|
47251
|
-
const
|
|
47269
|
+
const isRuntimeOverlay = (entry) => {
|
|
47252
47270
|
if (entry.source !== "runtime") return false;
|
|
47253
47271
|
const key = typeof entry.runtimeKey === "string" ? entry.runtimeKey.trim().toLowerCase() : "";
|
|
47254
47272
|
if (key.startsWith("auto_approval:")) return true;
|
|
47255
|
-
|
|
47256
|
-
return content.startsWith("auto-approved:");
|
|
47273
|
+
return !isUserFacingChatMessage(entry.message);
|
|
47257
47274
|
};
|
|
47258
47275
|
const shouldKeepParsedBeforeUntimedRuntime = (message) => {
|
|
47259
47276
|
const role = getRole(message);
|
|
@@ -47272,7 +47289,7 @@ ${effect.notification.body || ""}`.trim();
|
|
|
47272
47289
|
if (a.source !== b.source && aTime !== bTime) {
|
|
47273
47290
|
const parsedEntry = a.source === "parsed" ? a : b.source === "parsed" ? b : null;
|
|
47274
47291
|
const runtimeEntry = a.source === "runtime" ? a : b.source === "runtime" ? b : null;
|
|
47275
|
-
if (parsedEntry && runtimeEntry &&
|
|
47292
|
+
if (parsedEntry && runtimeEntry && isRuntimeOverlay(runtimeEntry) && getTime(parsedEntry.message) === 0 && getTime(runtimeEntry.message) > 0) {
|
|
47276
47293
|
if (shouldKeepParsedBeforeUntimedRuntime(parsedEntry.message)) {
|
|
47277
47294
|
return a.source === "parsed" ? -1 : 1;
|
|
47278
47295
|
}
|