@monoes/monomindcli 2.3.2 → 2.3.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 (79) hide show
  1. package/.claude/commands/mastermind/_repeat.md +9 -9
  2. package/.claude/commands/mastermind/{approve.md → approvev1.md} +14 -11
  3. package/.claude/commands/mastermind/architect.md +3 -3
  4. package/.claude/commands/mastermind/createorg.md +4 -4
  5. package/.claude/commands/mastermind/help.md +18 -0
  6. package/.claude/commands/mastermind/master.md +6 -6
  7. package/.claude/commands/mastermind/repeat.md +5 -5
  8. package/.claude/commands/mastermind/runorg.md +20 -108
  9. package/.claude/commands/mastermind/runorgv1.md +159 -0
  10. package/.claude/commands/mastermind/stoporg.md +1 -1
  11. package/.claude/helpers/control-start.cjs +52 -4
  12. package/.claude/helpers/event-logger.cjs +9 -1
  13. package/.claude/helpers/handlers/capture-handler.cjs +9 -1
  14. package/.claude/helpers/handlers/route-handler.cjs +88 -15
  15. package/.claude/helpers/handlers/session-restore-handler.cjs +25 -18
  16. package/.claude/skills/mastermind-skills/_protocol.md +1 -1
  17. package/.claude/skills/mastermind-skills/_repeat.md +3 -3
  18. package/.claude/skills/mastermind-skills/adapters.md +1 -1
  19. package/.claude/skills/mastermind-skills/agents.md +6 -2
  20. package/.claude/skills/mastermind-skills/{approve.md → approvev1.md} +8 -5
  21. package/.claude/skills/mastermind-skills/architect.md +8 -8
  22. package/.claude/skills/mastermind-skills/backup.md +1 -1
  23. package/.claude/skills/mastermind-skills/bootstrap.md +1 -1
  24. package/.claude/skills/mastermind-skills/costs.md +1 -1
  25. package/.claude/skills/mastermind-skills/env.md +7 -2
  26. package/.claude/skills/mastermind-skills/{heartbeat.md → heartbeatv1.md} +9 -6
  27. package/.claude/skills/mastermind-skills/idea.md +1 -1
  28. package/.claude/skills/mastermind-skills/inbox.md +14 -2
  29. package/.claude/skills/mastermind-skills/instance.md +3 -1
  30. package/.claude/skills/mastermind-skills/monitor.md +2 -2
  31. package/.claude/skills/mastermind-skills/org-settings.md +5 -2
  32. package/.claude/skills/mastermind-skills/orgs.md +14 -13
  33. package/.claude/skills/mastermind-skills/orgstatus.md +19 -8
  34. package/.claude/skills/mastermind-skills/plugins.md +1 -1
  35. package/.claude/skills/mastermind-skills/projects.md +3 -0
  36. package/.claude/skills/mastermind-skills/runorg.md +37 -719
  37. package/.claude/skills/mastermind-skills/runorgv1.md +731 -0
  38. package/.claude/skills/mastermind-skills/stoporg.md +12 -5
  39. package/.claude/skills/mastermind-skills/tasks.md +4 -1
  40. package/README.md +37 -4
  41. package/dist/src/commands/cleanup.d.ts.map +1 -1
  42. package/dist/src/commands/cleanup.js +30 -8
  43. package/dist/src/commands/cleanup.js.map +1 -1
  44. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  45. package/dist/src/commands/doctor-project-checks.js +23 -10
  46. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  47. package/dist/src/commands/org-observe.d.ts.map +1 -1
  48. package/dist/src/commands/org-observe.js +30 -26
  49. package/dist/src/commands/org-observe.js.map +1 -1
  50. package/dist/src/commands/org.d.ts.map +1 -1
  51. package/dist/src/commands/org.js +52 -2
  52. package/dist/src/commands/org.js.map +1 -1
  53. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  54. package/dist/src/knowledge/document-pipeline.js +0 -0
  55. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  56. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  57. package/dist/src/memory/memory-bridge.js +31 -12
  58. package/dist/src/memory/memory-bridge.js.map +1 -1
  59. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  60. package/dist/src/orgrt/daemon.js +45 -9
  61. package/dist/src/orgrt/daemon.js.map +1 -1
  62. package/dist/src/orgrt/mailbox.d.ts +23 -0
  63. package/dist/src/orgrt/mailbox.d.ts.map +1 -1
  64. package/dist/src/orgrt/mailbox.js +33 -1
  65. package/dist/src/orgrt/mailbox.js.map +1 -1
  66. package/dist/src/orgrt/migrate.d.ts +26 -0
  67. package/dist/src/orgrt/migrate.d.ts.map +1 -0
  68. package/dist/src/orgrt/migrate.js +111 -0
  69. package/dist/src/orgrt/migrate.js.map +1 -0
  70. package/dist/src/orgrt/reporting.js +8 -1
  71. package/dist/src/orgrt/reporting.js.map +1 -1
  72. package/dist/src/orgrt/session.d.ts.map +1 -1
  73. package/dist/src/orgrt/session.js +8 -2
  74. package/dist/src/orgrt/session.js.map +1 -1
  75. package/dist/src/ui/dashboard.html +44 -0
  76. package/dist/src/ui/orgs.html +2 -2
  77. package/dist/src/ui/server.mjs +86 -0
  78. package/dist/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +2 -2
@@ -0,0 +1,111 @@
1
+ // packages/@monomind/cli/src/orgrt/migrate.ts
2
+ /** v1 → v2 org config conversion. Pure transform + validation, plus the file
3
+ * IO orchestration for the `org migrate` subcommand — kept out of org.ts to
4
+ * stay under the 500-line file cap; org.ts's migrateAction is a thin wrapper
5
+ * that only does the name-validation / isOrgRunning guard and delegates here. */
6
+ import { existsSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
7
+ import { OrgDefSchema } from './types.js';
8
+ import { parseSchedule } from './scheduler.js';
9
+ const V1_TOP_LEVEL_KEYS = [
10
+ 'topology', 'consensus', 'strategy', 'maxAgents', 'communication',
11
+ 'board_id', 'todo_col_id', 'doing_col_id', 'done_col_id', 'loop',
12
+ 'version', 'channels', 'differentiation', 'outputDir', 'runBehavior', 'created',
13
+ ];
14
+ const V1_ROLE_KEYS = ['agent_type', 'delegates_to', 'board_id'];
15
+ /** The structural invariants the runtime assumes but the Zod schema can't
16
+ * express: unique role ids, exactly one root (reports_to: null), every
17
+ * non-root's reports_to resolving to another role (and not itself), and a
18
+ * parseable schedule. Shared by `org validate` (validateAction) and
19
+ * `migrateOrgFile`, which refuses to write a migrated config that still
20
+ * fails these checks. */
21
+ export function checkOrgStructure(def) {
22
+ const errors = [];
23
+ const ids = def.roles.map(r => r.id);
24
+ const dupes = ids.filter((id, i) => ids.indexOf(id) !== i);
25
+ if (dupes.length)
26
+ errors.push(`duplicate role id(s): ${[...new Set(dupes)].join(', ')}`);
27
+ const roots = def.roles.filter(r => r.reports_to === null);
28
+ if (roots.length === 0)
29
+ errors.push('no root role — exactly one role must have reports_to: null');
30
+ if (roots.length > 1)
31
+ errors.push(`multiple root roles (${roots.map(r => r.id).join(', ')}) — exactly one may have reports_to: null`);
32
+ for (const r of def.roles) {
33
+ if (r.reports_to !== null && !ids.includes(r.reports_to))
34
+ errors.push(`role "${r.id}": reports_to "${r.reports_to}" matches no role id`);
35
+ if (r.reports_to === r.id)
36
+ errors.push(`role "${r.id}" reports to itself`);
37
+ }
38
+ if (def.schedule != null && parseSchedule(def.schedule) === null)
39
+ errors.push(`schedule "${def.schedule}" is not parseable — use "<N>s", "<N>m", or "<N>h"`);
40
+ return errors;
41
+ }
42
+ export function migrateOrgConfig(raw) {
43
+ const def = { ...raw };
44
+ const dropped = [];
45
+ const notes = [];
46
+ // v1 loop → v2 schedule ("<N>m"); only when no v2 schedule already set
47
+ const loop = def['loop'];
48
+ if (loop && typeof loop.poll_interval_minutes === 'number' && def['schedule'] == null) {
49
+ def['schedule'] = `${loop.poll_interval_minutes}m`;
50
+ notes.push(`loop.poll_interval_minutes=${loop.poll_interval_minutes} → schedule "${def['schedule']}"`);
51
+ }
52
+ for (const k of V1_TOP_LEVEL_KEYS) {
53
+ if (k in def) {
54
+ delete def[k];
55
+ dropped.push(k);
56
+ }
57
+ }
58
+ if (Array.isArray(def['roles'])) {
59
+ const roleKeysDropped = new Set();
60
+ def['roles'] = def['roles'].map(role => {
61
+ const r = { ...role };
62
+ if (typeof r['agent_type'] === 'string') {
63
+ if (r['type'] == null || r['type'] === 'specialist') {
64
+ r['type'] = r['agent_type'];
65
+ notes.push(`role ${String(r['id'])}: agent_type → type`);
66
+ }
67
+ }
68
+ for (const k of V1_ROLE_KEYS) {
69
+ if (k in r) {
70
+ delete r[k];
71
+ roleKeysDropped.add(`roles[].${k}`);
72
+ }
73
+ }
74
+ return r;
75
+ });
76
+ dropped.push(...roleKeysDropped);
77
+ }
78
+ if (def['schedule'] === undefined)
79
+ def['schedule'] = null;
80
+ if (typeof def['status'] !== 'string')
81
+ def['status'] = 'stopped';
82
+ // Throws ZodError on an unmigratable config — caller surfaces it.
83
+ OrgDefSchema.parse(def);
84
+ return { def, dropped, notes };
85
+ }
86
+ /** Reads `cfgPath`, migrates it, and (unless already v2) backs up the
87
+ * original to `backupPath` and overwrites `cfgPath` with the migrated def.
88
+ * Throws on an unmigratable config (schema failure inside migrateOrgConfig,
89
+ * or a structural violation caught here) — caller decides how to report it.
90
+ * Refuses to write when the migrated def fails checkOrgStructure, so a v1
91
+ * config with e.g. all-null reports_to fails cleanly instead of silently
92
+ * writing a config the runtime can't start. */
93
+ export function migrateOrgFile(cfgPath, backupPath) {
94
+ const raw = JSON.parse(readFileSync(cfgPath, 'utf8'));
95
+ const result = migrateOrgConfig(raw);
96
+ const def = result.def;
97
+ const structuralErrors = checkOrgStructure(def);
98
+ if (structuralErrors.length) {
99
+ throw new Error(`migrated config still fails structural validation: ${structuralErrors.join('; ')}`);
100
+ }
101
+ if (result.dropped.length === 0 && result.notes.length === 0) {
102
+ return { status: 'already-v2', dropped: [], notes: [] };
103
+ }
104
+ if (!existsSync(backupPath))
105
+ writeFileSync(backupPath, JSON.stringify(raw, null, 2));
106
+ const tmpPath = `${cfgPath}.tmp`;
107
+ writeFileSync(tmpPath, JSON.stringify(result.def, null, 2));
108
+ renameSync(tmpPath, cfgPath);
109
+ return { status: 'migrated', dropped: result.dropped, notes: result.notes };
110
+ }
111
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/orgrt/migrate.ts"],"names":[],"mappings":"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"}
@@ -123,5 +123,12 @@ export function formatEvent(e) {
123
123
  default: return `${t} ▪ ${from} ${e.type}: ${trim(e.msg ?? '')}`;
124
124
  }
125
125
  }
126
- const trim = (s, n = 120) => !s ? '' : s.length > n ? `${s.slice(0, n - 1)}…` : s.replace(/\n/g, ' ');
126
+ // Newlines stripped BEFORE truncation the truncated branch previously kept
127
+ // them, so long multi-line messages broke the one-line-per-event log format.
128
+ const trim = (s, n = 120) => {
129
+ if (!s)
130
+ return '';
131
+ const oneLine = s.replace(/\s*\n\s*/g, ' ');
132
+ return oneLine.length > n ? `${oneLine.slice(0, n - 1)}…` : oneLine;
133
+ };
127
134
  //# sourceMappingURL=reporting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../../src/orgrt/reporting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporting.js","sourceRoot":"","sources":["../../../src/orgrt/reporting.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAA4B,MAAM,gCAAgC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAErG,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,uFAAuF;IACvF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjG,wEAAwE;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAiB3G;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtE"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAA4B,MAAM,gCAAgC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAErG,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,uFAAuF;IACvF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjG,wEAAwE;IACxE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAiB3G;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAetE"}
@@ -39,6 +39,10 @@ export async function runAgentSession(opts) {
39
39
  // would skip that drain entirely.
40
40
  while (true) {
41
41
  await runOneSession(opts);
42
+ // The dead session's generator may still hold the waker — drop it so a
43
+ // push() before the next stream() starts only queues instead of being
44
+ // consumed by the abandoned generator (silent message loss).
45
+ mailbox.detach();
42
46
  if (mailbox.isClosed)
43
47
  return;
44
48
  opts.bus.emit({ type: 'status', from: opts.role.id, msg: 'session restarting (turn limit reached, mailbox still open)' });
@@ -48,7 +52,6 @@ export async function runAgentSession(opts) {
48
52
  async function runOneSession(opts) {
49
53
  const { org, role, bus, policy, mailbox, cwd, deliver } = opts;
50
54
  const queryFn = opts.queryFn ?? query;
51
- const isCoordinator = role.reports_to == null;
52
55
  const orgServer = createSdkMcpServer({
53
56
  name: 'org',
54
57
  version: '1.0.0',
@@ -57,7 +60,10 @@ async function runOneSession(opts) {
57
60
  const text = await opts.recall(role.id, args.query);
58
61
  return { content: [{ type: 'text', text }] };
59
62
  })] : []),
60
- ...(isCoordinator && opts.onComplete ? [tool('org_complete', 'Record the outcome of this run. Call exactly once, when the goal is achieved or clearly cannot be. The outcome and summary are persisted to the org run history and briefed to the next run.', { outcome: z.enum(['achieved', 'partial', 'failed']), summary: z.string() }, async (args) => {
63
+ // Gate purely on onComplete: the daemon passes it only to the role its
64
+ // boss-selection rule picked, so tool availability always matches the
65
+ // kickoff instruction (reports_to may be non-null for a fallback boss).
66
+ ...(opts.onComplete ? [tool('org_complete', 'Record the outcome of this run. Call exactly once, when the goal is achieved or clearly cannot be. The outcome and summary are persisted to the org run history and briefed to the next run.', { outcome: z.enum(['achieved', 'partial', 'failed']), summary: z.string() }, async (args) => {
61
67
  opts.onComplete(role.id, args.outcome, args.summary);
62
68
  return { content: [{ type: 'text', text: `outcome "${args.outcome}" recorded` }] };
63
69
  })] : []),
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/orgrt/session.ts"],"names":[],"mappings":"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"}
@@ -1914,6 +1914,12 @@ select.pb-cfg-inp { padding: 4px 7px; cursor: pointer; }
1914
1914
  <button class="btn chunk-build-btn" id="btn-build-docs" onclick="buildKnowledgeDocs()" title="Index .md/.mdx/.txt/.rst files">⊕ Build Docs</button>
1915
1915
  <span class="chunk-build-status" id="chunk-build-status"></span>
1916
1916
  </div>
1917
+ <div class="filter-bar" style="margin-bottom:6px">
1918
+ <input class="filter-input" id="sb-search-input" type="text" placeholder="Ask your Second Brain — semantic search by meaning…"
1919
+ onkeydown="if(event.key==='Enter')secondBrainSearch()">
1920
+ <button class="btn" onclick="secondBrainSearch()" title="Semantic search (warm local model)">⌕ Search</button>
1921
+ </div>
1922
+ <div id="sb-search-results" style="display:none;margin-bottom:12px"></div>
1917
1923
  <div class="filter-bar">
1918
1924
  <input class="filter-input" type="text" placeholder="Filter chunks…" oninput="filterChunks(this.value)">
1919
1925
  <button class="btn" onclick="_chunksLoaded=false;loadChunksTab()" title="Refresh">↺</button>
@@ -13592,6 +13598,44 @@ async function cleanSwarmData() {
13592
13598
  // ── chunks memory tab ──────────────────────────────────────
13593
13599
  let _chunks = [], _chunksLoaded = false, _editChunkId = null;
13594
13600
 
13601
+ // Second Brain semantic search — hits the warm /api/knowledge/search endpoint
13602
+ // (the server holds the local embedding model hot; ~60ms per query).
13603
+ async function secondBrainSearch() {
13604
+ const input = document.getElementById('sb-search-input');
13605
+ const box = document.getElementById('sb-search-results');
13606
+ if (!input || !box) return;
13607
+ const q = input.value.trim();
13608
+ if (!q) { box.style.display = 'none'; return; }
13609
+ box.style.display = 'block';
13610
+ box.innerHTML = '<div class="loading-txt">Searching…</div>';
13611
+ try {
13612
+ const r = await fetch('/api/knowledge/search', {
13613
+ method: 'POST',
13614
+ headers: { 'Content-Type': 'application/json' },
13615
+ body: JSON.stringify({ query: q, limit: 5 }),
13616
+ });
13617
+ if (!r.ok) throw new Error('HTTP ' + r.status);
13618
+ const data = await r.json();
13619
+ const results = data.results || [];
13620
+ if (!results.length) {
13621
+ box.innerHTML = '<div class="empty" style="padding:10px">No matches (' + esc(data.method || '?') + '). Ingest documents with: <code>monomind doc ingest ./path</code></div>';
13622
+ return;
13623
+ }
13624
+ box.innerHTML =
13625
+ '<div style="font-size:10px;letter-spacing:0.07em;text-transform:uppercase;color:var(--text-xs);margin-bottom:6px">' +
13626
+ results.length + ' result(s) · ' + esc(data.method || '') + '</div>' +
13627
+ results.map(function (res) {
13628
+ return '<div style="border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin-bottom:6px">' +
13629
+ '<div style="font-size:10px;color:var(--text-lo);margin-bottom:3px">' + esc(res.key || '') +
13630
+ ' <span style="color:var(--accent)">' + (typeof res.score === 'number' ? res.score.toFixed(2) : '') + '</span></div>' +
13631
+ '<div style="font-size:12px;white-space:pre-wrap;max-height:120px;overflow:hidden">' + esc(String(res.content || '').slice(0, 600)) + '</div>' +
13632
+ '</div>';
13633
+ }).join('');
13634
+ } catch (e) {
13635
+ box.innerHTML = '<div class="empty" style="padding:10px">Search failed: ' + esc(e.message) + '</div>';
13636
+ }
13637
+ }
13638
+
13595
13639
  async function loadChunksTab() {
13596
13640
  if (_chunksLoaded) return;
13597
13641
  const grid = document.getElementById('chunks-grid');
@@ -1782,12 +1782,12 @@ async function loadRunHistory() {
1782
1782
  ${runs.slice(0, 10).map(h => `
1783
1783
  <div style="font-size:9px;padding:5px 0;border-bottom:1px solid oklch(50% 0 0 / 0.1);display:flex;gap:10px;align-items:baseline">
1784
1784
  <span style="color:var(--dim);white-space:nowrap">${esc(h.run || '?')}</span>
1785
- <span style="color:var(--muted);white-space:nowrap">${h.durationMs != null ? Math.round(h.durationMs / 1000) + 's' : '—'} · ${h.totalTokens || 0} tok</span>
1785
+ <span style="color:var(--muted);white-space:nowrap">${Number.isFinite(Number(h.durationMs)) && h.durationMs != null ? Math.round(Number(h.durationMs) / 1000) + 's' : '—'} · ${Number(h.totalTokens) || 0} tok</span>
1786
1786
  ${h.outcome
1787
1787
  ? `<span style="color:${outcomeColor(h.outcome.status)}">${esc(h.outcome.status.toUpperCase())}</span>
1788
1788
  <span style="color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap">${esc(h.outcome.summary || '')}</span>`
1789
1789
  : `<span style="color:var(--dim)">NO OUTCOME</span>`}
1790
- ${h.crashes && h.crashes.length ? `<span style="color:var(--red)">✗ ${h.crashes.length} crash</span>` : ''}
1790
+ ${Array.isArray(h.crashes) && h.crashes.length ? `<span style="color:var(--red)">✗ ${Number(h.crashes.length)} crash</span>` : ''}
1791
1791
  </div>`).join('')}
1792
1792
  </div>`;
1793
1793
  } catch (_) { el.innerHTML = ''; }
@@ -1013,6 +1013,31 @@ export async function startServer({ port = 4242, projectDir, openBrowser = true
1013
1013
  // (not per-request inside the request handler below) since both only
1014
1014
  // close over per-server-start state (dashboardAuthValue) plus their
1015
1015
  // explicit req/res/corsOrigin params. ──────────────────────────────────
1016
+ // ── Second Brain warm bridge: lazy singleton import of the compiled memory
1017
+ // bridge (loads the local embedding model once for the server's lifetime).
1018
+ // Boot-warmed below only when this project actually has a knowledge base.
1019
+ let _knowledgeBridgePromise = null;
1020
+ const _getKnowledgeBridge = () => {
1021
+ if (!_knowledgeBridgePromise) {
1022
+ _knowledgeBridgePromise = import('../memory/memory-bridge.js').catch((err) => {
1023
+ _knowledgeBridgePromise = null; // allow retry on next request
1024
+ if (process.env.MONOMIND_DEBUG) console.error('[knowledge] bridge import failed:', err.message);
1025
+ return null;
1026
+ });
1027
+ }
1028
+ return _knowledgeBridgePromise;
1029
+ };
1030
+ try {
1031
+ if (fs.existsSync(path.join(projectDir || process.cwd(), '.monomind', 'knowledge', 'chunks.jsonl'))) {
1032
+ // Warm off the startup path: first hook request should hit a hot model.
1033
+ const _warmTimer = setTimeout(() => {
1034
+ _getKnowledgeBridge().then(b => b?.bridgeSearchEntries?.({ query: 'warmup', namespace: 'knowledge:shared', limit: 1 }))
1035
+ .catch(() => { /* warm-up is best-effort */ });
1036
+ }, 3000);
1037
+ if (_warmTimer.unref) _warmTimer.unref();
1038
+ }
1039
+ } catch (_) { /* non-fatal */ }
1040
+
1016
1041
  const _checkAuth = (req) => {
1017
1042
  let _suppliedAuth = req.headers['x-monomind-token'] || '';
1018
1043
  if (!_suppliedAuth) {
@@ -5888,6 +5913,57 @@ new Sigma(g,document.getElementById('g'),{renderEdgeLabels:false,labelColor:{col
5888
5913
  return;
5889
5914
  }
5890
5915
 
5916
+ // POST /api/knowledge/search — warm semantic knowledge search for hooks.
5917
+ // The dashboard server is the one long-lived process on the machine, so it
5918
+ // holds the local embedding model warm; per-prompt hook subprocesses (which
5919
+ // cannot afford a model load) POST here and fall back to keyword scoring
5920
+ // when this endpoint is cold/absent. Fully local — model + store on disk.
5921
+ if (req.method === 'POST' && url === '/api/knowledge/search') {
5922
+ let body = '';
5923
+ let overLimit = false;
5924
+ req.on('data', c => {
5925
+ if (overLimit) return;
5926
+ body += c;
5927
+ if (body.length > 64 * 1024) { // queries are prompts, not documents
5928
+ overLimit = true;
5929
+ res.writeHead(413, { 'Content-Type': 'application/json' });
5930
+ res.end('{"error":"request body too large"}');
5931
+ req.destroy();
5932
+ }
5933
+ });
5934
+ req.on('end', async () => {
5935
+ if (overLimit) return;
5936
+ try {
5937
+ const payload = JSON.parse(body || '{}');
5938
+ const query = String(payload.query || '').slice(0, 2000);
5939
+ const limit = Math.min(Math.max(parseInt(payload.limit, 10) || 3, 1), 10);
5940
+ const namespace = typeof payload.namespace === 'string' && /^[A-Za-z0-9:_-]{1,128}$/.test(payload.namespace)
5941
+ ? payload.namespace : 'knowledge:shared';
5942
+ if (!query) {
5943
+ res.writeHead(400, { 'Content-Type': 'application/json' });
5944
+ res.end('{"error":"query required"}');
5945
+ return;
5946
+ }
5947
+ const bridge = await _getKnowledgeBridge();
5948
+ if (!bridge) {
5949
+ res.writeHead(503, { 'Content-Type': 'application/json' });
5950
+ res.end('{"error":"knowledge bridge unavailable"}');
5951
+ return;
5952
+ }
5953
+ const out = await bridge.bridgeSearchEntries({ query, namespace, limit });
5954
+ res.writeHead(200, { 'Content-Type': 'application/json', ...(corsOrigin ? { 'Access-Control-Allow-Origin': corsOrigin } : {}) });
5955
+ res.end(JSON.stringify({
5956
+ method: out?.searchMethod || 'none',
5957
+ results: (out?.results || []).map(r => ({ key: r.key, content: String(r.content || '').slice(0, 2000), score: r.score })),
5958
+ }));
5959
+ } catch (err) {
5960
+ res.writeHead(500, { 'Content-Type': 'application/json' });
5961
+ res.end(JSON.stringify({ error: err.message }));
5962
+ }
5963
+ });
5964
+ return;
5965
+ }
5966
+
5891
5967
  // GET /api/mastermind/metrics — aggregate system metrics from token-summary and swarm-activity
5892
5968
  if (req.method === 'GET' && url === '/api/mastermind/metrics') {
5893
5969
  try {
@@ -6260,6 +6336,16 @@ new Sigma(g,document.getElementById('g'),{renderEdgeLabels:false,labelColor:{col
6260
6336
  const boundPort = await bindServer(server, port);
6261
6337
  const url = `http://localhost:${boundPort}`;
6262
6338
 
6339
+ // Self-report the ACTUAL bound port for the spawner (control-start.cjs).
6340
+ // An HTTP probe cannot distinguish this server from another project's server
6341
+ // already answering on the requested port — this file is identity-proof.
6342
+ if (process.env.MONOMIND_BOUND_REPORT) {
6343
+ try {
6344
+ fs.mkdirSync(path.dirname(process.env.MONOMIND_BOUND_REPORT), { recursive: true });
6345
+ fs.writeFileSync(process.env.MONOMIND_BOUND_REPORT, JSON.stringify({ pid: process.pid, port: boundPort, ts: Date.now() }));
6346
+ } catch (_) { /* non-fatal — spawner falls back to pid-matched HTTP probe */ }
6347
+ }
6348
+
6263
6349
  // ── One-time migration: mastermind-sessions.json → per-session JSONL ─────
6264
6350
  // Runs once on startup. Existing sessions in the old monolithic format are
6265
6351
  // split into individual JSONL files + _index.json for O(1) event writes.