monomind 1.15.0 → 1.15.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "monomind",
3
- "version": "1.15.0",
3
+ "version": "1.15.1",
4
4
  "description": "Monomind - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -61,8 +61,7 @@
61
61
  "dependencies": {
62
62
  "semver": "^7.6.0",
63
63
  "@monoes/monograph": "^1.2.1",
64
- "@monoes/monobrowse": "^1.0.0",
65
- "@monoes/monoplaybook": "^1.0.0"
64
+ "@monoes/monobrowse": "^1.0.0"
66
65
  },
67
66
  "overrides": {
68
67
  "hono": ">=4.12.21",
@@ -153,4 +152,4 @@
153
152
  "access": "public",
154
153
  "tag": "latest"
155
154
  }
156
- }
155
+ }
@@ -8164,7 +8164,7 @@ function _odtHandleLiveEvent(ev) {
8164
8164
  }
8165
8165
  } else if (runSess) {
8166
8166
  (runSess.events = runSess.events || []).push(ev);
8167
- if (runSess._runMeta) runSess._runMeta.eventCount = (runSess._runMeta.eventCount || 0) + 1;
8167
+ if (runSess._runMeta) { runSess._runMeta.eventCount = (runSess._runMeta.eventCount || 0) + 1; if (runSess._runMeta.eventCount % 5 === 0) _odtPopulateChatSel(); }
8168
8168
  if (ev.type === 'run:cycle:complete' || ev.type === 'org:checkpoint') { if (runSess._runMeta) runSess._runMeta.cycleCount = (runSess._runMeta.cycleCount || 0) + 1; _odtPopulateChatSel(); }
8169
8169
  // Backfill prompt from first boss directive when run:start had no goal field
8170
8170
  if (!runSess.prompt && ev.type === 'org:comms' && (ev.from === 'boss' || ev.role === 'boss') && ev.msg) {
@@ -5043,6 +5043,22 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
5043
5043
  }
5044
5044
  }
5045
5045
  runs.sort((a, b) => (b.startedAt || 0) - (a.startedAt || 0));
5046
+ // Threads fallback: if no run files found, synthesize a run from the org threads file
5047
+ // so orgs whose boss never emitted runId-tagged events still show in the chat dropdown.
5048
+ if (runs.length === 0) {
5049
+ for (const _rpd of _rProjDirs) {
5050
+ const _tf = path.join(_rpd, '.monomind', 'orgs', `${_rOrgName}-threads.jsonl`);
5051
+ if (!fs.existsSync(_tf)) continue;
5052
+ const _tLines = fs.readFileSync(_tf, 'utf8').split('\n').filter(Boolean);
5053
+ if (!_tLines.length) continue;
5054
+ const _tEvs = _tLines.map(l => { try { return JSON.parse(l); } catch { return null; } }).filter(Boolean);
5055
+ if (!_tEvs.length) continue;
5056
+ const _firstTs = _tEvs[0].ts ? (typeof _tEvs[0].ts === 'number' ? _tEvs[0].ts : new Date(_tEvs[0].ts).getTime()) : Date.now();
5057
+ const _lastTs = _tEvs[_tEvs.length-1].ts ? (typeof _tEvs[_tEvs.length-1].ts === 'number' ? _tEvs[_tEvs.length-1].ts : new Date(_tEvs[_tEvs.length-1].ts).getTime()) : _firstTs;
5058
+ runs.push({ id: `threads-${_rOrgName}`, orgName: _rOrgName, goal: `${_rOrgName} threads`, status: 'complete', startedAt: _firstTs, endedAt: _lastTs, eventCount: _tEvs.length, _threadsFile: _tf });
5059
+ break;
5060
+ }
5061
+ }
5046
5062
  res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache' });
5047
5063
  res.end(JSON.stringify(runs));
5048
5064
  } catch (_) { res.writeHead(500); res.end('[]'); }
@@ -5060,6 +5076,21 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
5060
5076
  _rvRunId.length > 80 || !/^[a-z0-9][a-z0-9_-]*$/i.test(_rvRunId)) { res.writeHead(400); res.end('{"error":"Invalid org or run id"}'); return; }
5061
5077
  const _rvExplicitDir = _rvQs.get('dir');
5062
5078
  const _rvServerRoot = path.resolve(_rvExplicitDir || projectDir || process.cwd());
5079
+ // Threads fallback: threads-${orgName} is a synthetic runId served from threads file
5080
+ if (_rvRunId === `threads-${_rvOrgName}`) {
5081
+ const _rvProjDirsT = new Set([_rvServerRoot]);
5082
+ if (!_rvExplicitDir) { try { JSON.parse(fs.readFileSync(path.join(_rvServerRoot, 'data', 'known-projects.json'), 'utf8')).forEach(p => _rvProjDirsT.add(p)); } catch(_) {} }
5083
+ for (const _rvpd of _rvProjDirsT) {
5084
+ const _tf = path.join(_rvpd, '.monomind', 'orgs', `${_rvOrgName}-threads.jsonl`);
5085
+ if (!fs.existsSync(_tf)) continue;
5086
+ const _tLines = fs.readFileSync(_tf, 'utf8').split('\n').filter(Boolean);
5087
+ const _tEvs = _tLines.map(l => { try { const e = JSON.parse(l); return { type: 'org:comms', from: e.role || e.from || 'agent', to: e.to || 'all', msg: e.message || e.msg || '', ts: e.ts ? (typeof e.ts === 'number' ? e.ts : new Date(e.ts).getTime()) : Date.now(), org: _rvOrgName, runId: _rvRunId }; } catch { return null; } }).filter(Boolean);
5088
+ res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
5089
+ res.end(JSON.stringify(_tEvs));
5090
+ return;
5091
+ }
5092
+ res.writeHead(404); res.end('{"error":"threads file not found"}'); return;
5093
+ }
5063
5094
  // Search across known projects
5064
5095
  const _rvProjDirs = new Set([_rvServerRoot]);
5065
5096
  if (!_rvExplicitDir) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monoes/monomindcli",
3
- "version": "1.15.0",
3
+ "version": "1.15.1",
4
4
  "type": "module",
5
5
  "description": "Monomind CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
6
6
  "main": "dist/src/index.js",
@@ -89,8 +89,7 @@
89
89
  "ws": "^8.21.0",
90
90
  "@noble/ed25519": "^2.1.0",
91
91
  "@monoes/monograph": "^1.2.1",
92
- "@monoes/monobrowse": "^1.0.1",
93
- "@monoes/monoplaybook": "^1.0.1"
92
+ "@monoes/monobrowse": "^1.0.1"
94
93
  },
95
94
  "optionalDependencies": {
96
95
  "sql.js": "^1.14.1",
@@ -107,4 +106,4 @@
107
106
  "access": "public",
108
107
  "tag": "latest"
109
108
  }
110
- }
109
+ }