monomind 2.1.0 → 2.1.4

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.
Files changed (57) hide show
  1. package/README.md +77 -94
  2. package/package.json +3 -3
  3. package/packages/@monomind/cli/.claude/commands/mastermind/createorg.md +8 -9
  4. package/packages/@monomind/cli/.claude/helpers/handlers/capture-handler.cjs +24 -10
  5. package/packages/@monomind/cli/.claude/helpers/handlers/gates-handler.cjs +2 -2
  6. package/packages/@monomind/cli/.claude/helpers/handlers/route-handler.cjs +29 -0
  7. package/packages/@monomind/cli/.claude/helpers/handlers/session-handler.cjs +35 -23
  8. package/packages/@monomind/cli/.claude/helpers/hook-handler.cjs +21 -0
  9. package/packages/@monomind/cli/.claude/helpers/utils/monograph.cjs +73 -2
  10. package/packages/@monomind/cli/.claude/skills/mastermind-skills/createorg.md +91 -701
  11. package/packages/@monomind/cli/.claude/skills/mastermind-skills/org-settings.md +46 -47
  12. package/packages/@monomind/cli/.claude/skills/mastermind-skills/runorg.md +12 -1
  13. package/packages/@monomind/cli/README.md +77 -94
  14. package/packages/@monomind/cli/dist/src/browser/workflow/store.d.ts +2 -2
  15. package/packages/@monomind/cli/dist/src/commands/browse.d.ts +1 -1
  16. package/packages/@monomind/cli/dist/src/commands/doctor-env-checks.js +5 -0
  17. package/packages/@monomind/cli/dist/src/commands/org.js +46 -29
  18. package/packages/@monomind/cli/dist/src/commands/platforms.d.ts +1 -1
  19. package/packages/@monomind/cli/dist/src/init/executor.js +30 -6
  20. package/packages/@monomind/cli/dist/src/mcp-tools/auto-install.d.ts +8 -8
  21. package/packages/@monomind/cli/dist/src/mcp-tools/coherence/types.d.ts +31 -31
  22. package/packages/@monomind/cli/dist/src/mcp-tools/hive-mind-tools.js +5 -1
  23. package/packages/@monomind/cli/dist/src/mcp-tools/monograph-tools.js +28 -3
  24. package/packages/@monomind/cli/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +36 -36
  25. package/packages/@monomind/cli/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +4 -4
  26. package/packages/@monomind/cli/dist/src/memory/ewc-consolidation.d.ts +12 -0
  27. package/packages/@monomind/cli/dist/src/memory/sona-optimizer.d.ts +12 -0
  28. package/packages/@monomind/cli/dist/src/orgrt/broker.d.ts +3 -1
  29. package/packages/@monomind/cli/dist/src/orgrt/broker.js +8 -3
  30. package/packages/@monomind/cli/dist/src/orgrt/bus.d.ts +5 -1
  31. package/packages/@monomind/cli/dist/src/orgrt/bus.js +5 -1
  32. package/packages/@monomind/cli/dist/src/orgrt/daemon.d.ts +35 -1
  33. package/packages/@monomind/cli/dist/src/orgrt/daemon.js +190 -21
  34. package/packages/@monomind/cli/dist/src/orgrt/forwarder.js +47 -10
  35. package/packages/@monomind/cli/dist/src/orgrt/inbox.d.ts +11 -0
  36. package/packages/@monomind/cli/dist/src/orgrt/inbox.js +56 -0
  37. package/packages/@monomind/cli/dist/src/orgrt/policy.d.ts +5 -1
  38. package/packages/@monomind/cli/dist/src/orgrt/policy.js +58 -5
  39. package/packages/@monomind/cli/dist/src/orgrt/server.d.ts +3 -2
  40. package/packages/@monomind/cli/dist/src/orgrt/server.js +31 -40
  41. package/packages/@monomind/cli/dist/src/orgrt/session.d.ts +11 -1
  42. package/packages/@monomind/cli/dist/src/orgrt/session.js +32 -1
  43. package/packages/@monomind/cli/dist/src/orgrt/test-loop.js +8 -8
  44. package/packages/@monomind/cli/dist/src/orgrt/types.d.ts +53 -53
  45. package/packages/@monomind/cli/dist/src/output.d.ts +29 -29
  46. package/packages/@monomind/cli/dist/src/output.js +10 -2
  47. package/packages/@monomind/cli/dist/src/pricing/model-pricing.d.ts +1 -1
  48. package/packages/@monomind/cli/dist/src/types.d.ts +2 -2
  49. package/packages/@monomind/cli/dist/src/ui/collector.mjs +20 -5
  50. package/packages/@monomind/cli/dist/src/ui/dashboard.html +465 -500
  51. package/packages/@monomind/cli/dist/src/ui/orgs-files.js +192 -0
  52. package/packages/@monomind/cli/dist/src/ui/orgs.html +21 -52
  53. package/packages/@monomind/cli/dist/src/ui/server.mjs +174 -164
  54. package/packages/@monomind/cli/package.json +12 -16
  55. package/packages/@monomind/cli/scripts/publish.sh +6 -0
  56. package/scripts/generate-agent-avatars.mjs +3 -3
  57. package/packages/@monomind/cli/dist/src/orgrt/live.html +0 -56
@@ -9,6 +9,25 @@ const { _getRecentEdits } = require('./telemetry.cjs');
9
9
 
10
10
  const CWD = process.env.CLAUDE_PROJECT_DIR || process.cwd();
11
11
 
12
+ // @monoes/monograph is "type":"module" with an exports map that has no
13
+ // "require" condition — a bare `require('@monoes/monograph')` (or
14
+ // require() of its package directory) always throws "No exports main
15
+ // defined", regardless of whether the package is actually installed.
16
+ // require()-ing the package's *resolved entry file* directly bypasses the
17
+ // exports-map restriction and works via Node's require(esm) support (this
18
+ // codebase targets Node 20+, which has it). Reads the entry path from the
19
+ // package's own package.json instead of hardcoding "dist/src/index.js" so
20
+ // this survives a future monograph dist-layout change.
21
+ function _resolvePkgEntryFile(pkgDir) {
22
+ try {
23
+ var pkg = JSON.parse(fs.readFileSync(path.join(pkgDir, 'package.json'), 'utf-8'));
24
+ var entry = (pkg.exports && pkg.exports['.'] && (pkg.exports['.'].import || pkg.exports['.'].default)) || pkg.main;
25
+ if (!entry) return null;
26
+ var full = path.join(pkgDir, entry);
27
+ return fs.existsSync(full) ? full : null;
28
+ } catch (e) { return null; }
29
+ }
30
+
12
31
  function _requireMonograph() {
13
32
  var candidates = [
14
33
  path.join(CWD, 'node_modules/.pnpm/node_modules/@monoes/monograph'),
@@ -16,9 +35,21 @@ function _requireMonograph() {
16
35
  path.join(CWD, 'node_modules/@monoes/monograph'),
17
36
  ];
18
37
  for (var i = 0; i < candidates.length; i++) {
19
- try { if (fs.existsSync(candidates[i])) return require(candidates[i]); } catch(e) {}
38
+ var entry = fs.existsSync(candidates[i]) ? _resolvePkgEntryFile(candidates[i]) : null;
39
+ if (entry) { try { return require(entry); } catch (e) {} }
40
+ }
41
+ // Ancestor-directory search — the equivalent of bare `require('@monoes/
42
+ // monograph')`'s own node_modules walk, needed since that call form can
43
+ // never succeed against this package's exports map.
44
+ var dir = CWD;
45
+ for (;;) {
46
+ var pkgDir = path.join(dir, 'node_modules', '@monoes', 'monograph');
47
+ var entry = fs.existsSync(pkgDir) ? _resolvePkgEntryFile(pkgDir) : null;
48
+ if (entry) { try { return require(entry); } catch (e) {} break; }
49
+ var parent = path.dirname(dir);
50
+ if (parent === dir) break;
51
+ dir = parent;
20
52
  }
21
- try { return require('@monoes/monograph'); } catch(e) {}
22
53
  return null;
23
54
  }
24
55
 
@@ -257,6 +288,44 @@ function _recordGraphTelemetry(event) {
257
288
  } catch (e) { /* non-fatal */ }
258
289
  }
259
290
 
291
+ // ─── Graph gate ─────────────────────────────────────────────────────────────
292
+ // The pre-search/pre-bash heuristic assist above silently resolves Grep/Bash
293
+ // patterns against the graph and counts that as a "graph win" even when the
294
+ // agent never actually called monograph_query — so the graph-usage % can look
295
+ // healthy while zero real monograph_call events ever fire. This gate forces
296
+ // at least one real monograph_query/monograph_suggest call per session before
297
+ // Grep/Glob/bash grep|find are allowed, by hard-blocking (exitCode 2) the
298
+ // first such call each session. Capped at ONE block per session (never a
299
+ // second) so a subagent with no monograph MCP tool access can't deadlock.
300
+ function _graphGateStateFile() {
301
+ return path.join(CWD, '.monomind', 'graph-gate-state.json');
302
+ }
303
+
304
+ function _graphGateMarkQueried(sessionId) {
305
+ if (!sessionId) return;
306
+ try {
307
+ fs.mkdirSync(path.join(CWD, '.monomind'), { recursive: true });
308
+ fs.writeFileSync(_graphGateStateFile(), JSON.stringify({ sessionId: sessionId, queried: true }));
309
+ } catch (e) { /* non-fatal */ }
310
+ }
311
+
312
+ function _graphGateShouldBlock(sessionId) {
313
+ if (!sessionId || !_isGraphFresh()) return false;
314
+ var f = _graphGateStateFile();
315
+ var d = {};
316
+ try { d = JSON.parse(fs.readFileSync(f, 'utf-8')); } catch (e) {}
317
+ if (typeof d !== 'object' || d === null || d.sessionId !== sessionId) {
318
+ d = { sessionId: sessionId, queried: false, blockedOnce: false };
319
+ }
320
+ if (d.queried || d.blockedOnce) return false;
321
+ d.blockedOnce = true;
322
+ try {
323
+ fs.mkdirSync(path.join(CWD, '.monomind'), { recursive: true });
324
+ fs.writeFileSync(f, JSON.stringify(d));
325
+ } catch (e) { return false; }
326
+ return true;
327
+ }
328
+
260
329
  function _injectCompactGraphMap() {
261
330
  try {
262
331
  var db = _openMonographDb();
@@ -476,5 +545,7 @@ module.exports = {
476
545
  _injectCompactGraphMap,
477
546
  _findAffectedTests,
478
547
  _maybeRebuildMonograph,
548
+ _graphGateShouldBlock,
549
+ _graphGateMarkQueried,
479
550
  injectGodNodesContext,
480
551
  };