@monoes/monomindcli 1.15.5 → 1.15.7
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/.claude/agents/github/repo-architect.md +1 -1
- package/.claude/agents/specialists/integration-architect.md +6 -6
- package/.claude/commands/hive-mind/hive-mind-init.md +1 -1
- package/.claude/commands/hive-mind/hive-mind-memory.md +1 -1
- package/.claude/commands/mastermind/brain.md +11 -11
- package/.claude/commands/mastermind/master.md +4 -4
- package/.claude/commands/mastermind/memory.md +6 -6
- package/.claude/commands/memory/README.md +4 -4
- package/.claude/commands/truth/start.md +3 -3
- package/.claude/helpers/extras-registry.json +2 -2
- package/.claude/helpers/skill-registry.json +26 -26
- package/.claude/helpers/statusline.cjs +8 -8
- package/.claude/skills/agentic-jujutsu/SKILL.md +3 -3
- package/.claude/skills/mastermind/_protocol.md +8 -8
- package/README.md +6 -6
- package/dist/src/__tests__/browse-analyzer.test.js +18 -1
- package/dist/src/__tests__/browse-analyzer.test.js.map +1 -1
- package/dist/src/commands/agent.js +2 -2
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/autopilot.js +1 -1
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/completions.d.ts.map +1 -1
- package/dist/src/commands/completions.js +2 -21
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +1 -1
- package/dist/src/commands/hive-mind.js +1 -1
- package/dist/src/commands/hooks-coverage-commands.js +31 -31
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
- package/dist/src/commands/hooks-routing-commands.js +1 -1
- package/dist/src/commands/hooks-routing-commands.js.map +1 -1
- package/dist/src/commands/hooks.js +1 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +0 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +0 -4
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.js +8 -8
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/memory.d.ts +1 -1
- package/dist/src/commands/memory.js +25 -25
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +2 -2
- package/dist/src/commands/neural.js +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/swarm.js +1 -1
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/config-adapter.d.ts.map +1 -1
- package/dist/src/config-adapter.js +8 -8
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +2 -2
- package/dist/src/init/executor.js +16 -16
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/shared-instructions-generator.d.ts +1 -1
- package/dist/src/init/shared-instructions-generator.js +1 -1
- package/dist/src/init/statusline-generator.d.ts +1 -1
- package/dist/src/init/statusline-generator.js +8 -8
- package/dist/src/init/types.d.ts +3 -3
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +3 -3
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -11
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +3 -3
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/coherence-tools.d.ts +2 -2
- package/dist/src/mcp-tools/coherence-tools.js +2 -2
- package/dist/src/mcp-tools/daa-tools.js +13 -13
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +4 -4
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +4 -4
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +23 -23
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +0 -1
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +0 -2
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts +22 -6
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +553 -505
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +1 -1
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/quality-tools.d.ts +2 -2
- package/dist/src/mcp-tools/quality-tools.js +3 -3
- package/dist/src/mcp-tools/quality-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +5 -5
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +1 -156
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.js +3 -3
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/hnsw-operations.js +5 -5
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.js +2 -2
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +86 -234
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +455 -1702
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.js +3 -3
- package/dist/src/memory/memory-crud.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +1 -1
- package/dist/src/memory/memory-initializer.js +5 -5
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-read.js +4 -4
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/suggest.js +0 -1
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/ui/dashboard.html +41 -5
- package/dist/src/ui/orgs.html +91 -5
- package/dist/src/ui/server.mjs +44 -0
- package/dist/src/update/validator.d.ts.map +1 -1
- package/dist/src/update/validator.js +1 -3
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/commands/plugins.d.ts +0 -11
- package/dist/src/commands/plugins.d.ts.map +0 -1
- package/dist/src/commands/plugins.js +0 -799
- package/dist/src/commands/plugins.js.map +0 -1
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.d.ts.map +0 -1
- package/dist/src/plugins/manager.js +0 -498
- package/dist/src/plugins/manager.js.map +0 -1
- package/dist/src/plugins/store/discovery.d.ts +0 -88
- package/dist/src/plugins/store/discovery.d.ts.map +0 -1
- package/dist/src/plugins/store/discovery.js +0 -770
- package/dist/src/plugins/store/discovery.js.map +0 -1
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.d.ts.map +0 -1
- package/dist/src/plugins/store/index.js +0 -141
- package/dist/src/plugins/store/index.js.map +0 -1
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.d.ts.map +0 -1
- package/dist/src/plugins/store/search.js +0 -231
- package/dist/src/plugins/store/search.js.map +0 -1
- package/dist/src/plugins/store/types.d.ts +0 -274
- package/dist/src/plugins/store/types.d.ts.map +0 -1
- package/dist/src/plugins/store/types.js +0 -7
- package/dist/src/plugins/store/types.js.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
- package/dist/src/plugins/tests/demo-plugin-store.js.map +0 -1
- package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
- package/dist/src/plugins/tests/standalone-test.d.ts.map +0 -1
- package/dist/src/plugins/tests/standalone-test.js +0 -188
- package/dist/src/plugins/tests/standalone-test.js.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/test-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.js +0 -206
- package/dist/src/plugins/tests/test-plugin-store.js.map +0 -1
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.d.ts.map +0 -1
- package/dist/src/services/registry-api.js +0 -199
- package/dist/src/services/registry-api.js.map +0 -1
- package/scripts/publish-registry.ts +0 -341
|
@@ -340,6 +340,14 @@ html, body { height: 100%; background: var(--bg); color: var(--text-hi); font-fa
|
|
|
340
340
|
#odt-chat-feed::-webkit-scrollbar { width:4px; }
|
|
341
341
|
#odt-chat-feed::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
|
|
342
342
|
#odt-chat-empty { font-size:11px; color:var(--text-lo); text-align:center; padding:32px 0; line-height:2; }
|
|
343
|
+
#odt-chat-compose { display:flex; gap:6px; padding:8px 12px; border-top:1px solid var(--border); flex-shrink:0; }
|
|
344
|
+
#odt-chat-input { flex:1; background:var(--surface); color:var(--text); border:1px solid var(--border); border-radius:4px; font-size:11px; font-family:var(--mono); padding:5px 8px; resize:none; min-height:28px; max-height:80px; line-height:1.4; }
|
|
345
|
+
#odt-chat-input:focus { outline:none; border-color:var(--accent); }
|
|
346
|
+
#odt-chat-send-btn { font-size:8px; letter-spacing:1.5px; padding:4px 10px; border-radius:3px; border:1px solid oklch(62% 0.2 186 / 0.4); color:oklch(62% 0.2 186); background:transparent; cursor:pointer; font-family:inherit; flex-shrink:0; align-self:flex-end; }
|
|
347
|
+
#odt-chat-send-btn:hover:not(:disabled) { background:oklch(62% 0.2 186 / 0.12); }
|
|
348
|
+
#odt-chat-send-btn:disabled { opacity:0.3; cursor:default; }
|
|
349
|
+
.cv-user-msg { align-self:flex-end; }
|
|
350
|
+
.cv-user-msg .cv-bub { background:oklch(20% 0.06 220); border-left:none; border-right:2px solid oklch(62% 0.2 186); }
|
|
343
351
|
.odt-mode-btn {
|
|
344
352
|
font-family: inherit; font-size: 7px; letter-spacing: 1.5px;
|
|
345
353
|
padding: 2px 7px; border-radius: 3px; cursor: pointer;
|
|
@@ -7246,6 +7254,10 @@ async function v2RenderOrgChat() {
|
|
|
7246
7254
|
<div id="odt-chat-excerpt" class="cv-excerpt-banner"></div>
|
|
7247
7255
|
<div id="odt-chat-feed">
|
|
7248
7256
|
<div id="odt-chat-empty">Select a session to see agent communications.<br><span style="font-size:10px;opacity:0.5">Sessions appear after the first /mastermind:runorg</span></div>
|
|
7257
|
+
</div>
|
|
7258
|
+
<div id="odt-chat-compose">
|
|
7259
|
+
<textarea id="odt-chat-input" rows="1" placeholder="Send a message to the org…" onkeydown="if(event.key==='Enter'&&!event.shiftKey){event.preventDefault();odtSendChatMessage();}"></textarea>
|
|
7260
|
+
<button id="odt-chat-send-btn" onclick="odtSendChatMessage()" disabled>SEND</button>
|
|
7249
7261
|
</div>`;
|
|
7250
7262
|
}
|
|
7251
7263
|
|
|
@@ -7627,18 +7639,39 @@ function _odtPopulateChatSel() {
|
|
|
7627
7639
|
}
|
|
7628
7640
|
}
|
|
7629
7641
|
|
|
7642
|
+
window.odtSendChatMessage = async function() {
|
|
7643
|
+
const inp = document.getElementById('odt-chat-input');
|
|
7644
|
+
const btn = document.getElementById('odt-chat-send-btn');
|
|
7645
|
+
if (!inp || !_v2SelOrg) return;
|
|
7646
|
+
const text = inp.value.trim();
|
|
7647
|
+
if (!text) return;
|
|
7648
|
+
inp.value = '';
|
|
7649
|
+
btn.disabled = true;
|
|
7650
|
+
try {
|
|
7651
|
+
await fetch('/api/orgs/'+encodeURIComponent(_v2SelOrg)+'/chat', { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({ text, runId: _odtChatCurrentId || null }) });
|
|
7652
|
+
} catch(e) {
|
|
7653
|
+
inp.value = text;
|
|
7654
|
+
} finally {
|
|
7655
|
+
btn.disabled = false;
|
|
7656
|
+
inp.focus();
|
|
7657
|
+
}
|
|
7658
|
+
};
|
|
7659
|
+
|
|
7630
7660
|
window.odtChatSelectSession = async function(id) {
|
|
7631
7661
|
_odtChatCurrentId = id;
|
|
7632
7662
|
_odtChatCurrentAgent = 'all';
|
|
7633
7663
|
const feed = document.getElementById('odt-chat-feed');
|
|
7634
7664
|
const emptyEl = document.getElementById('odt-chat-empty');
|
|
7635
7665
|
const bar = document.getElementById('odt-chat-agent-bar');
|
|
7666
|
+
const sendBtn = document.getElementById('odt-chat-send-btn');
|
|
7636
7667
|
feed.querySelectorAll('.cv-msg, .cv-session-hdr').forEach(e => e.remove());
|
|
7637
7668
|
if (!id) {
|
|
7638
7669
|
if (emptyEl) emptyEl.style.display = 'block';
|
|
7639
7670
|
if (bar) bar.style.display = 'none';
|
|
7671
|
+
if (sendBtn) sendBtn.disabled = true;
|
|
7640
7672
|
return;
|
|
7641
7673
|
}
|
|
7674
|
+
if (sendBtn) sendBtn.disabled = false;
|
|
7642
7675
|
|
|
7643
7676
|
// ── Run group path: render merged events from all runs in the group ──
|
|
7644
7677
|
if (id.startsWith('rgrp:') && _odtRunGroups[id]) {
|
|
@@ -7991,12 +8024,12 @@ function _odtAppendEvent(ev, animate) {
|
|
|
7991
8024
|
const _isSummaryType = _evType === 'agent:spawn' || _evType === 'agent:complete' ||
|
|
7992
8025
|
_evType === 'agent:edit' || _evType === 'org:comms' || _evType === 'org:error' ||
|
|
7993
8026
|
_evType === 'run:start' || _evType === 'run:complete' || _evType === 'org:start' ||
|
|
7994
|
-
_evType === 'org:checkpoint' || _evType === 'run:cycle:complete' || _evType === 'org:complete' || _evType === 'org:stop'
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
8027
|
+
_evType === 'org:checkpoint' || _evType === 'run:cycle:complete' || _evType === 'org:complete' || _evType === 'org:stop' ||
|
|
8028
|
+
_evType === 'user:message';
|
|
8029
|
+
// detailed: show all except pure noise (inverted — new event types auto-visible)
|
|
8030
|
+
const _isNoiseType = _evType === 'agent:usage' || _evType === 'loop:tick';
|
|
7998
8031
|
if (_odtChatMode === 'summary' && !_isSummaryType) return;
|
|
7999
|
-
if (_odtChatMode === 'detailed' &&
|
|
8032
|
+
if (_odtChatMode === 'detailed' && _isNoiseType) return;
|
|
8000
8033
|
// raw: show everything
|
|
8001
8034
|
const feed = document.getElementById('odt-chat-feed');
|
|
8002
8035
|
if (!feed) return;
|
|
@@ -8073,6 +8106,9 @@ function _odtAppendEvent(ev, animate) {
|
|
|
8073
8106
|
el.classList.add('cv-err');
|
|
8074
8107
|
} else if (ev.type === 'org:agent:offline') {
|
|
8075
8108
|
el = mkCVSys('◌ ' + esc(ev.title || ev.role || '?') + ' offline', ts);
|
|
8109
|
+
} else if (ev.type === 'user:message') {
|
|
8110
|
+
el = mkCVAgent('you', ev.text || ev.msg || ev.message || '', ts, 'user:message');
|
|
8111
|
+
el.classList.add('cv-user-msg');
|
|
8076
8112
|
} else {
|
|
8077
8113
|
el = mkCVSys(esc(ev.type || 'event'), ts);
|
|
8078
8114
|
}
|
package/dist/src/ui/orgs.html
CHANGED
|
@@ -254,12 +254,15 @@ html, body {
|
|
|
254
254
|
.tab-btn:hover { color: var(--muted); }
|
|
255
255
|
.tab-btn.active { color: var(--teal); border-bottom-color: var(--teal); }
|
|
256
256
|
|
|
257
|
-
#main-body { flex: 1; overflow-y: auto; overflow-x: hidden; }
|
|
257
|
+
#main-body { flex: 1; overflow-y: auto; overflow-x: hidden; min-height: 0; }
|
|
258
258
|
#main-body::-webkit-scrollbar { width: 4px; }
|
|
259
259
|
#main-body::-webkit-scrollbar-thumb { background: var(--teal-dim); border-radius: 2px; }
|
|
260
|
+
/* Chat tab needs a non-scrolling bounded container so compose stays visible */
|
|
261
|
+
#main-body.chat-active { overflow: hidden; display: flex; flex-direction: column; }
|
|
260
262
|
|
|
261
263
|
.tab-pane { display: none; }
|
|
262
264
|
.tab-pane.active { display: block; }
|
|
265
|
+
#main-body.chat-active #tab-chat { display: flex; flex-direction: column; flex: 1; min-height: 0; }
|
|
263
266
|
|
|
264
267
|
/* ── Empty / no-selection state ─────────────────────────────────── */
|
|
265
268
|
#no-org-state {
|
|
@@ -421,7 +424,7 @@ html, body {
|
|
|
421
424
|
|
|
422
425
|
/* ── Chat tab ───────────────────────────────────────────────────── */
|
|
423
426
|
#chat-pane {
|
|
424
|
-
display: flex; flex-direction: column; height:
|
|
427
|
+
display: flex; flex-direction: column; flex: 1; min-height: 0;
|
|
425
428
|
overflow: hidden;
|
|
426
429
|
}
|
|
427
430
|
#chat-session-bar {
|
|
@@ -491,6 +494,39 @@ html, body {
|
|
|
491
494
|
.cmsg.csys { align-self: center; max-width: 100%; }
|
|
492
495
|
.cmsg.cagent { align-self: flex-start; }
|
|
493
496
|
.cmsg.cic { align-self: flex-start; }
|
|
497
|
+
.cmsg.cuser { align-self: flex-end; }
|
|
498
|
+
.cmsg.cuser .cbubble {
|
|
499
|
+
background: oklch(14% 0.022 250);
|
|
500
|
+
border: 1px solid oklch(68% 0.18 250 / 0.28);
|
|
501
|
+
border-radius: 8px 2px 8px 8px;
|
|
502
|
+
padding: 7px 11px; color: oklch(80% 0.010 250);
|
|
503
|
+
font-size: 11px; line-height: 1.6;
|
|
504
|
+
word-break: break-word; white-space: pre-wrap;
|
|
505
|
+
}
|
|
506
|
+
#chat-compose {
|
|
507
|
+
display: flex; gap: 6px; align-items: flex-end;
|
|
508
|
+
padding: 8px 20px 12px;
|
|
509
|
+
border-top: 1px solid var(--border);
|
|
510
|
+
flex-shrink: 0;
|
|
511
|
+
}
|
|
512
|
+
#chat-compose-input {
|
|
513
|
+
flex: 1; background: oklch(10% 0.012 186);
|
|
514
|
+
border: 1px solid var(--border); border-radius: 4px;
|
|
515
|
+
color: var(--text); font-family: var(--mono); font-size: 11px;
|
|
516
|
+
padding: 6px 9px; resize: none; min-height: 32px; max-height: 120px;
|
|
517
|
+
line-height: 1.5; outline: none;
|
|
518
|
+
}
|
|
519
|
+
#chat-compose-input:focus { border-color: var(--teal-dim); }
|
|
520
|
+
#chat-compose-input::placeholder { color: var(--dim); }
|
|
521
|
+
#chat-send-btn {
|
|
522
|
+
background: oklch(14% 0.022 186); border: 1px solid var(--teal-dim);
|
|
523
|
+
color: var(--teal); border-radius: 4px; padding: 5px 12px;
|
|
524
|
+
font-family: var(--mono); font-size: 9px; letter-spacing: 1px;
|
|
525
|
+
cursor: pointer; flex-shrink: 0; align-self: flex-end;
|
|
526
|
+
transition: background 0.15s, border-color 0.15s;
|
|
527
|
+
}
|
|
528
|
+
#chat-send-btn:hover { background: oklch(62% 0.20 186 / 0.12); border-color: var(--teal); }
|
|
529
|
+
#chat-send-btn:disabled { opacity: 0.35; cursor: default; }
|
|
494
530
|
|
|
495
531
|
@keyframes cmsg-in { from{opacity:0;transform:translateY(3px)} to{opacity:1;transform:none} }
|
|
496
532
|
.cmsg.new { animation: cmsg-in 0.18s ease-out; }
|
|
@@ -914,6 +950,10 @@ html, body {
|
|
|
914
950
|
<div id="chat-feed-wrap">
|
|
915
951
|
<div id="chat-feed-empty">Select a session above to see agent communications.</div>
|
|
916
952
|
</div>
|
|
953
|
+
<div id="chat-compose">
|
|
954
|
+
<textarea id="chat-compose-input" rows="1" placeholder="Send a message to the org…" onkeydown="chatComposeKey(event)"></textarea>
|
|
955
|
+
<button id="chat-send-btn" onclick="sendChatMessage()" disabled>SEND</button>
|
|
956
|
+
</div>
|
|
917
957
|
</div>
|
|
918
958
|
</div>
|
|
919
959
|
|
|
@@ -956,7 +996,7 @@ let currentTab = 'chart';
|
|
|
956
996
|
let chatRenderMode = localStorage.getItem('chatRenderMode') || 'summary';
|
|
957
997
|
|
|
958
998
|
// Phase 3: Chat render mode — Summary / Detailed / Raw
|
|
959
|
-
const CHAT_SUMMARY_TYPES = new Set(['session:start','session:complete','domain:dispatch','domain:complete','agent:spawn','agent:complete','agent:edit','org:comms','loop:start','loop:complete','org:artifact','agent:message','intercom']);
|
|
999
|
+
const CHAT_SUMMARY_TYPES = new Set(['session:start','session:complete','domain:dispatch','domain:complete','agent:spawn','agent:complete','agent:edit','org:comms','loop:start','loop:complete','org:artifact','agent:message','intercom','user:message']);
|
|
960
1000
|
const CHAT_DETAILED_TYPES = new Set([...CHAT_SUMMARY_TYPES,'agent:bash','agent:bash:result','agent:browse','agent:read','agent:read:batch']);
|
|
961
1001
|
function setChatMode(mode) {
|
|
962
1002
|
chatRenderMode = mode;
|
|
@@ -1029,6 +1069,8 @@ window.switchTab = function(tab) {
|
|
|
1029
1069
|
document.querySelectorAll('.tab-pane').forEach(p => p.classList.remove('active'));
|
|
1030
1070
|
const pane = document.getElementById('tab-' + tab);
|
|
1031
1071
|
if (pane) pane.classList.add('active');
|
|
1072
|
+
const mainBody = document.getElementById('main-body');
|
|
1073
|
+
if (mainBody) mainBody.classList.toggle('chat-active', tab === 'chat');
|
|
1032
1074
|
if (tab === 'chat') renderChatTab();
|
|
1033
1075
|
else if (orgDetailData) renderTab(tab);
|
|
1034
1076
|
};
|
|
@@ -1638,12 +1680,15 @@ window.selectChatSession = function(id) {
|
|
|
1638
1680
|
const feed = document.getElementById('chat-feed-wrap');
|
|
1639
1681
|
const empty = document.getElementById('chat-feed-empty');
|
|
1640
1682
|
const bar = document.getElementById('chat-agent-bar');
|
|
1683
|
+
const sendBtn = document.getElementById('chat-send-btn');
|
|
1641
1684
|
if (!id) {
|
|
1642
1685
|
feed.querySelectorAll('.cmsg').forEach(e=>e.remove());
|
|
1643
1686
|
if (empty) empty.style.display = 'block';
|
|
1644
1687
|
if (bar) bar.style.display = 'none';
|
|
1688
|
+
if (sendBtn) sendBtn.disabled = true;
|
|
1645
1689
|
return;
|
|
1646
1690
|
}
|
|
1691
|
+
if (sendBtn) sendBtn.disabled = false;
|
|
1647
1692
|
const sess = chatSessions.find(s => s.id === id);
|
|
1648
1693
|
if (!sess) return;
|
|
1649
1694
|
feed.querySelectorAll('.cmsg').forEach(e=>e.remove());
|
|
@@ -1748,12 +1793,16 @@ function appendChatEvent(ev, animate) {
|
|
|
1748
1793
|
el = mkAgent(ev.agent||'agent', esc(ev.text||''), ts, dc(ev.domain), null);
|
|
1749
1794
|
} else if (ev.type === 'intercom') {
|
|
1750
1795
|
el = mkIntercom(ev.from, ev.to, esc(ev.msg||''), ts);
|
|
1796
|
+
} else if (ev.type === 'user:message') {
|
|
1797
|
+
el = mkUser(esc(ev.text||ev.msg||''), ts);
|
|
1751
1798
|
} else if (ev.type === 'loop:start') {
|
|
1752
1799
|
el = mkSys(`🔁 Loop: ${esc(ev.command||'')} (${ev.repeat||'?'} runs)`, ts);
|
|
1753
1800
|
} else if (ev.type === 'loop:complete') {
|
|
1754
1801
|
el = mkSys(`🔁 Loop done: ${esc(ev.command||'')} — ${ev.ranReps||'?'} run(s)`, ts);
|
|
1755
|
-
} else if (ev.type === 'org:artifact'
|
|
1756
|
-
|
|
1802
|
+
} else if (ev.type === 'org:artifact') {
|
|
1803
|
+
const _art = ev.artifact || (ev.path ? { path: ev.path, label: ev.label, mimeType: ev.mimeType } : null);
|
|
1804
|
+
if (_art) el = mkArtifact(_art, ts);
|
|
1805
|
+
else el = mkSys(`📄 artifact: ${esc(ev.label||ev.path||'file')}`, ts);
|
|
1757
1806
|
} else {
|
|
1758
1807
|
el = mkSys(`<span style="opacity:0.4">${esc(ev.type)}${ev.domain?' ['+esc(ev.domain)+']':''}</span>`, ts);
|
|
1759
1808
|
}
|
|
@@ -1795,6 +1844,43 @@ function mkArtifact(art, ts) {
|
|
|
1795
1844
|
return el;
|
|
1796
1845
|
}
|
|
1797
1846
|
|
|
1847
|
+
function mkUser(text, ts) {
|
|
1848
|
+
const el = document.createElement('div');
|
|
1849
|
+
el.className = 'cmsg cuser';
|
|
1850
|
+
el.innerHTML = `<div class="cmsg-meta" style="justify-content:flex-end"><span class="cts">${ts}</span><span class="ctag" style="border-color:oklch(68% 0.18 250 / 0.35);color:oklch(68% 0.14 250)">you</span></div><div class="cbubble">${text}</div>`;
|
|
1851
|
+
return el;
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1854
|
+
async function sendChatMessage() {
|
|
1855
|
+
const input = document.getElementById('chat-compose-input');
|
|
1856
|
+
const btn = document.getElementById('chat-send-btn');
|
|
1857
|
+
const text = (input?.value || '').trim();
|
|
1858
|
+
if (!text || !selectedOrg) return;
|
|
1859
|
+
btn.disabled = true;
|
|
1860
|
+
input.value = '';
|
|
1861
|
+
input.style.height = '';
|
|
1862
|
+
try {
|
|
1863
|
+
await fetch(`/api/orgs/${encodeURIComponent(selectedOrg)}/chat`, {
|
|
1864
|
+
method: 'POST',
|
|
1865
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1866
|
+
body: JSON.stringify({ text }),
|
|
1867
|
+
});
|
|
1868
|
+
} catch(_) {}
|
|
1869
|
+
btn.disabled = false;
|
|
1870
|
+
input.focus();
|
|
1871
|
+
}
|
|
1872
|
+
|
|
1873
|
+
function chatComposeKey(e) {
|
|
1874
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
1875
|
+
e.preventDefault();
|
|
1876
|
+
sendChatMessage();
|
|
1877
|
+
}
|
|
1878
|
+
// Auto-resize
|
|
1879
|
+
const ta = e.target;
|
|
1880
|
+
ta.style.height = 'auto';
|
|
1881
|
+
ta.style.height = Math.min(ta.scrollHeight, 120) + 'px';
|
|
1882
|
+
}
|
|
1883
|
+
|
|
1798
1884
|
async function viewArtifact(filePath, label) {
|
|
1799
1885
|
const orgName = selectedOrg;
|
|
1800
1886
|
if (!orgName || !filePath) return;
|
package/dist/src/ui/server.mjs
CHANGED
|
@@ -5745,6 +5745,50 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
|
|
|
5745
5745
|
return;
|
|
5746
5746
|
}
|
|
5747
5747
|
|
|
5748
|
+
// ---- POST /api/orgs/:name/chat — user sends a message to a running org ----
|
|
5749
|
+
if (req.method === 'POST' && /^\/api\/orgs\/[a-z0-9][a-z0-9_-]{0,63}\/chat$/i.test(url)) {
|
|
5750
|
+
let _chBody = '';
|
|
5751
|
+
for await (const chunk of req) { _chBody += chunk; if (_chBody.length > 65536) { req.destroy(); break; } }
|
|
5752
|
+
try {
|
|
5753
|
+
const _chOrgName = decodeURIComponent(url.split('/')[3]);
|
|
5754
|
+
if (_chOrgName.length > 64 || !/^[a-z0-9][a-z0-9_-]*$/i.test(_chOrgName)) {
|
|
5755
|
+
res.writeHead(400, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'Invalid org name' })); return;
|
|
5756
|
+
}
|
|
5757
|
+
let _chPayload = {};
|
|
5758
|
+
try { _chPayload = JSON.parse(_chBody); } catch(_) {}
|
|
5759
|
+
const _chText = String(_chPayload.text || '').trim().slice(0, 4096);
|
|
5760
|
+
if (!_chText) { res.writeHead(400, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'text is required' })); return; }
|
|
5761
|
+
const _chRoot = projectDir || process.cwd();
|
|
5762
|
+
const _chMonoDir = _getGitMonomindDir(_chRoot) || path.join(_chRoot, '.monomind');
|
|
5763
|
+
const _chRunId = activeOrgRuns.get(_chOrgName) || _getActiveRunId(_chOrgName, _chRoot);
|
|
5764
|
+
const _chEvent = { type: 'user:message', org: _chOrgName, runId: _chRunId || null, text: _chText, ts: Date.now() };
|
|
5765
|
+
// Write to run JSONL if active run exists
|
|
5766
|
+
if (_chRunId) {
|
|
5767
|
+
const _chRunFile = path.join(_chMonoDir, 'orgs', _chOrgName, 'runs', `${_chRunId}.jsonl`);
|
|
5768
|
+
if (fs.existsSync(_chRunFile)) await appendToFile(_chRunFile, JSON.stringify(_chEvent) + '\n');
|
|
5769
|
+
}
|
|
5770
|
+
// Write to mailbox file so boss agent can pick up on next cycle
|
|
5771
|
+
const _chMailbox = path.join(_chRoot, '.monomind', 'orgs', `${_chOrgName}-threads.json`);
|
|
5772
|
+
try {
|
|
5773
|
+
let _chThreads = { messages: [] };
|
|
5774
|
+
if (fs.existsSync(_chMailbox)) { try { _chThreads = JSON.parse(fs.readFileSync(_chMailbox, 'utf8')); } catch(_) {} }
|
|
5775
|
+
if (!Array.isArray(_chThreads.messages)) _chThreads.messages = [];
|
|
5776
|
+
_chThreads.messages.push({ text: _chText, ts: _chEvent.ts, status: 'pending' });
|
|
5777
|
+
fs.writeFileSync(_chMailbox, JSON.stringify(_chThreads, null, 2));
|
|
5778
|
+
} catch(_) {}
|
|
5779
|
+
// Broadcast to SSE stream clients
|
|
5780
|
+
broadcastMm(_chEvent);
|
|
5781
|
+
const _chFwdClients = runStreamClients.get(_chOrgName);
|
|
5782
|
+
if (_chFwdClients && _chFwdClients.size > 0) {
|
|
5783
|
+
const _chLine = `data: ${JSON.stringify(_chEvent)}\n\n`;
|
|
5784
|
+
for (const _cl of _chFwdClients) { try { _cl.write(_chLine); } catch(_) { _chFwdClients.delete(_cl); } }
|
|
5785
|
+
}
|
|
5786
|
+
res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
|
|
5787
|
+
res.end(JSON.stringify({ ok: true }));
|
|
5788
|
+
} catch (e) { res.writeHead(500, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: e.message })); }
|
|
5789
|
+
return;
|
|
5790
|
+
}
|
|
5791
|
+
|
|
5748
5792
|
// ------------------------------------------------------------------ 404
|
|
5749
5793
|
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
5750
5794
|
res.end('Not found');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAwDD,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACxC,gBAAgB,CA0FlB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,EAC7D,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,gBAAgB,CA+ClB"}
|
|
@@ -35,9 +35,7 @@ function isSafePackageName(p) {
|
|
|
35
35
|
}
|
|
36
36
|
// Known compatibility matrix between monomind packages
|
|
37
37
|
const COMPATIBILITY_MATRIX = {
|
|
38
|
-
'@monomind/cli': {
|
|
39
|
-
'@monomind/security': { minVersion: '3.0.0-alpha.1' },
|
|
40
|
-
},
|
|
38
|
+
'@monomind/cli': {},
|
|
41
39
|
'@monoes/monomindcli': {
|
|
42
40
|
'monofence-ai': { minVersion: '1.0.0' },
|
|
43
41
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yFAAyF;AACzF,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC,CAA4B,EAAiB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI;IAClG,KAAK,EAAE,CAAC,CAAS,EAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpE,EAAE,EAAE,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACjF,CAAC;IACD,EAAE,EAAE,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;QACpC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACjF,CAAC;CACF,CAAC;AAeF,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,6CAA6C;AAC7C,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,sFAAsF;AACtF,6DAA6D;AAC7D,MAAM,SAAS,GAAG,sCAAsC,CAAC;AACzD,wEAAwE;AACxE,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAEnF,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU;IACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,uDAAuD;AACvD,MAAM,oBAAoB,GAAyD;IACjF,eAAe,EAAE
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/update/validator.ts"],"names":[],"mappings":"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"}
|