@mindrian_os/install 1.13.0-beta.11

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 (597) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/.mcp.json +9 -0
  3. package/CHANGELOG.md +3333 -0
  4. package/LICENSE +123 -0
  5. package/README.md +673 -0
  6. package/agents/brain-query.md +80 -0
  7. package/agents/framework-runner.md +237 -0
  8. package/agents/grading.md +188 -0
  9. package/agents/investor.md +128 -0
  10. package/agents/larry-extended.md +135 -0
  11. package/agents/opportunity-scanner.md +91 -0
  12. package/agents/persona-analyst.md +132 -0
  13. package/agents/research.md +89 -0
  14. package/agents/reverse-salient-agent.md +27 -0
  15. package/bin/cli.js +142 -0
  16. package/bin/mindrian-mcp-server.cjs +182 -0
  17. package/bin/mindrian-tools.cjs +765 -0
  18. package/commands/act.md +439 -0
  19. package/commands/admin.md +404 -0
  20. package/commands/analyze-needs.md +42 -0
  21. package/commands/analyze-systems.md +39 -0
  22. package/commands/analyze-timing.md +42 -0
  23. package/commands/auto-explore.md +64 -0
  24. package/commands/beautiful-question.md +40 -0
  25. package/commands/brain-derive.md +78 -0
  26. package/commands/build-knowledge.md +42 -0
  27. package/commands/build-thesis.md +46 -0
  28. package/commands/causal.md +234 -0
  29. package/commands/challenge-assumptions.md +33 -0
  30. package/commands/compare-ventures.md +83 -0
  31. package/commands/dashboard.md +110 -0
  32. package/commands/deep-grade.md +82 -0
  33. package/commands/diagnose.md +58 -0
  34. package/commands/diagnostics.md +151 -0
  35. package/commands/doctor.md +151 -0
  36. package/commands/dominant-designs.md +40 -0
  37. package/commands/explain-decision.md +87 -0
  38. package/commands/explore-domains.md +42 -0
  39. package/commands/explore-futures.md +40 -0
  40. package/commands/explore-trends.md +42 -0
  41. package/commands/export.md +103 -0
  42. package/commands/file-meeting.md +724 -0
  43. package/commands/find-analogies.md +188 -0
  44. package/commands/find-bottlenecks.md +62 -0
  45. package/commands/find-connections.md +76 -0
  46. package/commands/funding.md +81 -0
  47. package/commands/grade.md +203 -0
  48. package/commands/graph.md +128 -0
  49. package/commands/hat-briefing.md +125 -0
  50. package/commands/heal.md +196 -0
  51. package/commands/help.md +399 -0
  52. package/commands/hmi-status.md +172 -0
  53. package/commands/jtbd.md +241 -0
  54. package/commands/leadership.md +73 -0
  55. package/commands/lean-canvas.md +40 -0
  56. package/commands/macro-trends.md +40 -0
  57. package/commands/map-unknowns.md +40 -0
  58. package/commands/memory.md +173 -0
  59. package/commands/models.md +175 -0
  60. package/commands/mos-reason.md +285 -0
  61. package/commands/mullins.md +120 -0
  62. package/commands/new-project.md +481 -0
  63. package/commands/onboard.md +434 -0
  64. package/commands/operator.md +149 -0
  65. package/commands/opportunities.md +144 -0
  66. package/commands/organize.md +497 -0
  67. package/commands/persona.md +198 -0
  68. package/commands/pipeline.md +112 -0
  69. package/commands/present.md +91 -0
  70. package/commands/publish.md +201 -0
  71. package/commands/query.md +124 -0
  72. package/commands/radar.md +72 -0
  73. package/commands/reanalyze.md +91 -0
  74. package/commands/research.md +196 -0
  75. package/commands/room.md +352 -0
  76. package/commands/rooms.md +598 -0
  77. package/commands/root-cause.md +40 -0
  78. package/commands/rs-experts.md +85 -0
  79. package/commands/rs-explain.md +100 -0
  80. package/commands/rs-fetch.md +94 -0
  81. package/commands/rs-thesis.md +85 -0
  82. package/commands/scenario-plan.md +40 -0
  83. package/commands/scheduled-tasks.md +285 -0
  84. package/commands/score-innovation.md +43 -0
  85. package/commands/scout.md +239 -0
  86. package/commands/setup.md +618 -0
  87. package/commands/snapshot.md +147 -0
  88. package/commands/speakers.md +84 -0
  89. package/commands/splash.md +28 -0
  90. package/commands/status.md +75 -0
  91. package/commands/structure-argument.md +42 -0
  92. package/commands/suggest-next.md +80 -0
  93. package/commands/systems-thinking.md +40 -0
  94. package/commands/think-hats.md +42 -0
  95. package/commands/update.md +181 -0
  96. package/commands/user-needs.md +40 -0
  97. package/commands/validate.md +40 -0
  98. package/commands/value-proposition.md +61 -0
  99. package/commands/vault.md +180 -0
  100. package/commands/visualize.md +52 -0
  101. package/commands/whitespace.md +507 -0
  102. package/commands/wiki.md +69 -0
  103. package/hooks/hooks.json +381 -0
  104. package/hooks/run-hook.cmd +64 -0
  105. package/lib/__init__.py +0 -0
  106. package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
  107. package/lib/agents/auto-explore-agent.cjs +1043 -0
  108. package/lib/agents/reverse-salient-agent.cjs +679 -0
  109. package/lib/agents/tension-hook-agent.cjs +544 -0
  110. package/lib/brain/ROOM.md +44 -0
  111. package/lib/brain/chain-recommender.cjs +301 -0
  112. package/lib/chat/chat-context.js +185 -0
  113. package/lib/chat/chat-panel.js +721 -0
  114. package/lib/chat/fabric-chat.cjs +288 -0
  115. package/lib/chat/generative-tools.js +219 -0
  116. package/lib/conversation/ROOM.md +39 -0
  117. package/lib/conversation/classifier-rules.json +38 -0
  118. package/lib/conversation/classifier.cjs +264 -0
  119. package/lib/conversation/operator.cjs +287 -0
  120. package/lib/copy/115-spec-strings.cjs +55 -0
  121. package/lib/core/__init__.py +0 -0
  122. package/lib/core/__nav-stub.cjs +14 -0
  123. package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
  124. package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
  125. package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
  126. package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
  127. package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
  128. package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
  129. package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
  130. package/lib/core/artifact-id.cjs +148 -0
  131. package/lib/core/asset-ops.cjs +151 -0
  132. package/lib/core/auto-commit-throttle.cjs +129 -0
  133. package/lib/core/bearer-token.cjs +199 -0
  134. package/lib/core/brain-client.cjs +865 -0
  135. package/lib/core/brain-derivation-prompts.cjs +326 -0
  136. package/lib/core/brain-derivation-queue.cjs +431 -0
  137. package/lib/core/brain-derivation.cjs +580 -0
  138. package/lib/core/brain-md-schema.cjs +528 -0
  139. package/lib/core/brain-md-staleness.cjs +357 -0
  140. package/lib/core/brain-response-sanitize.cjs +188 -0
  141. package/lib/core/bridge-writer.cjs +477 -0
  142. package/lib/core/chat-context-builder.cjs +253 -0
  143. package/lib/core/cross-room-aggregator.cjs +762 -0
  144. package/lib/core/daily-briefing.cjs +438 -0
  145. package/lib/core/decision-capture.cjs +618 -0
  146. package/lib/core/deep-links.cjs +82 -0
  147. package/lib/core/dispatch-optimizer.cjs +354 -0
  148. package/lib/core/dual-path-detector.cjs +84 -0
  149. package/lib/core/dual-path-detector.test.cjs +334 -0
  150. package/lib/core/exports-log.cjs +79 -0
  151. package/lib/core/feynman-minto-invariants.cjs +605 -0
  152. package/lib/core/folder-memory-async.cjs +338 -0
  153. package/lib/core/folder-memory-shared.cjs +890 -0
  154. package/lib/core/folder-memory.cjs +416 -0
  155. package/lib/core/framework-chain-composer.cjs +411 -0
  156. package/lib/core/frontmatter-schemas.cjs +330 -0
  157. package/lib/core/git-ops.cjs +141 -0
  158. package/lib/core/graph-ops.cjs +258 -0
  159. package/lib/core/hat-persistence.cjs +362 -0
  160. package/lib/core/index.cjs +60 -0
  161. package/lib/core/integration-registry.cjs +232 -0
  162. package/lib/core/intelligence-cascade.cjs +661 -0
  163. package/lib/core/lazygraph-ops.cjs +1057 -0
  164. package/lib/core/lru-cache.cjs +139 -0
  165. package/lib/core/mcp-profiles.cjs +182 -0
  166. package/lib/core/meeting-ops.cjs +54 -0
  167. package/lib/core/memory-ops.cjs +600 -0
  168. package/lib/core/migrations/ROOM.md +33 -0
  169. package/lib/core/migrations/phase-109-nodes-provenance.cjs +339 -0
  170. package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
  171. package/lib/core/model-profiles.cjs +246 -0
  172. package/lib/core/mullins-scaffold.cjs +160 -0
  173. package/lib/core/nav-dial.cjs +316 -0
  174. package/lib/core/navigation/ROOM.md +15 -0
  175. package/lib/core/navigation/explanation.cjs +43 -0
  176. package/lib/core/navigation/focus.cjs +135 -0
  177. package/lib/core/navigation/ingestion.cjs +82 -0
  178. package/lib/core/navigation/insights.cjs +350 -0
  179. package/lib/core/navigation/memory-events.cjs +118 -0
  180. package/lib/core/navigation/neighborhood.cjs +78 -0
  181. package/lib/core/navigation/packet.cjs +182 -0
  182. package/lib/core/navigation/room-home.cjs +127 -0
  183. package/lib/core/navigation/transitions.cjs +82 -0
  184. package/lib/core/navigation-engine-shared.cjs +242 -0
  185. package/lib/core/navigation-engine.cjs +664 -0
  186. package/lib/core/navigation.cjs +60 -0
  187. package/lib/core/nl-graph-queries.cjs +164 -0
  188. package/lib/core/offer-presenter.cjs +406 -0
  189. package/lib/core/opportunity-extractor.cjs +183 -0
  190. package/lib/core/opportunity-ops.cjs +1371 -0
  191. package/lib/core/persona-ops.cjs +537 -0
  192. package/lib/core/persona-taxonomy.cjs +190 -0
  193. package/lib/core/platform-gates.cjs +120 -0
  194. package/lib/core/platform.cjs +257 -0
  195. package/lib/core/proactive-intelligence.cjs +528 -0
  196. package/lib/core/problem-type-router.cjs +315 -0
  197. package/lib/core/reasoning-ops.cjs +639 -0
  198. package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
  199. package/lib/core/room-classifier-strict-mode.cjs +229 -0
  200. package/lib/core/room-db.cjs +127 -0
  201. package/lib/core/room-ops-async.cjs +92 -0
  202. package/lib/core/room-ops-shared.cjs +64 -0
  203. package/lib/core/room-ops-sync.cjs +70 -0
  204. package/lib/core/room-ops.cjs +32 -0
  205. package/lib/core/room-type-detector.cjs +386 -0
  206. package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
  207. package/lib/core/rs-brain-substrate.cjs +570 -0
  208. package/lib/core/rs-breakthrough-scorer.cjs +255 -0
  209. package/lib/core/rs-canon-violations.cjs +82 -0
  210. package/lib/core/rs-chain-feeder.cjs +343 -0
  211. package/lib/core/rs-commercial-assessor.cjs +280 -0
  212. package/lib/core/rs-differential-scorer.cjs +376 -0
  213. package/lib/core/rs-domain-analyzer.cjs +385 -0
  214. package/lib/core/rs-egress-prompts.cjs +113 -0
  215. package/lib/core/rs-egress-telemetry.cjs +225 -0
  216. package/lib/core/rs-egress-violations.cjs +53 -0
  217. package/lib/core/rs-expert-mapper.cjs +467 -0
  218. package/lib/core/rs-fetcher-academic.cjs +697 -0
  219. package/lib/core/rs-fetcher-experts.cjs +314 -0
  220. package/lib/core/rs-fetcher-industry.cjs +731 -0
  221. package/lib/core/rs-fetcher-patents.cjs +564 -0
  222. package/lib/core/rs-innovation-classifier.cjs +194 -0
  223. package/lib/core/rs-mind-map.cjs +656 -0
  224. package/lib/core/rs-neo4j-writer.cjs +388 -0
  225. package/lib/core/rs-nl-to-query.cjs +425 -0
  226. package/lib/core/rs-pinecone-bridge.cjs +303 -0
  227. package/lib/core/rs-preprocessor.cjs +350 -0
  228. package/lib/core/rs-query-matrix.cjs +316 -0
  229. package/lib/core/rs-query-to-text.cjs +438 -0
  230. package/lib/core/rs-sqlite-mirror.cjs +443 -0
  231. package/lib/core/rs-thesis-generator.cjs +188 -0
  232. package/lib/core/rs_cache.py +479 -0
  233. package/lib/core/rs_corpus.py +468 -0
  234. package/lib/core/rs_hybrid.py +586 -0
  235. package/lib/core/rs_math.py +287 -0
  236. package/lib/core/rs_rooms.py +193 -0
  237. package/lib/core/scheduled-scanner.cjs +463 -0
  238. package/lib/core/scratchpad-ops.cjs +201 -0
  239. package/lib/core/section-8-trace-schema.cjs +138 -0
  240. package/lib/core/section-registry.cjs +111 -0
  241. package/lib/core/session-state.cjs +144 -0
  242. package/lib/core/shallow-doc-parser.cjs +174 -0
  243. package/lib/core/shallow-doc-parser.test.cjs +226 -0
  244. package/lib/core/skill-activation-router.cjs +284 -0
  245. package/lib/core/state-ops.cjs +46 -0
  246. package/lib/core/statusline-cache.cjs +266 -0
  247. package/lib/core/token-estimator.cjs +348 -0
  248. package/lib/core/user-archetype.cjs +239 -0
  249. package/lib/core/user-md-ops.cjs +524 -0
  250. package/lib/core/visual-ops.cjs +624 -0
  251. package/lib/core/write-lock.cjs +149 -0
  252. package/lib/graph/canvas-graph.js +467 -0
  253. package/lib/graph/constellation-config.cjs +299 -0
  254. package/lib/graph/graph-detail-panel.js +165 -0
  255. package/lib/hmi/ROOM.md +47 -0
  256. package/lib/hmi/across-session-memory.cjs +604 -0
  257. package/lib/hmi/cross-room-memory.cjs +575 -0
  258. package/lib/hmi/decoy-tier.cjs +395 -0
  259. package/lib/hmi/jtbd-classifier.cjs +219 -0
  260. package/lib/hmi/jtbd-state.cjs +199 -0
  261. package/lib/hmi/jtbd-taxonomy.json +392 -0
  262. package/lib/hmi/selector-dispatcher.cjs +546 -0
  263. package/lib/hmi/selector-telemetry.cjs +263 -0
  264. package/lib/hmi/shape-f0-renderer.cjs +139 -0
  265. package/lib/hmi/shape-f1-fallback.cjs +80 -0
  266. package/lib/hmi/shape-f1-renderer.cjs +138 -0
  267. package/lib/hmi/shape-f2-renderer.cjs +132 -0
  268. package/lib/hmi/shape-f3-renderer.cjs +66 -0
  269. package/lib/hmi/shape-f4-renderer.cjs +72 -0
  270. package/lib/hmi/shape-f5-renderer.cjs +155 -0
  271. package/lib/hmi/shape-f6-plan-review-renderer.cjs +312 -0
  272. package/lib/hmi/shape-f6-renderer.cjs +144 -0
  273. package/lib/hmi/shape-g-renderer.cjs +219 -0
  274. package/lib/hmi/shape-h-renderer.cjs +222 -0
  275. package/lib/hmi/tier-check.cjs +63 -0
  276. package/lib/import/PRECONDITIONS.md +41 -0
  277. package/lib/import/branding.cjs +210 -0
  278. package/lib/import/branding.test.cjs +235 -0
  279. package/lib/import/classifications-sync.cjs +104 -0
  280. package/lib/import/classifications-sync.test.cjs +129 -0
  281. package/lib/import/enricher.cjs +296 -0
  282. package/lib/import/enricher.test.cjs +273 -0
  283. package/lib/import/integration.test.cjs +376 -0
  284. package/lib/import/manifest.cjs +129 -0
  285. package/lib/import/manifest.schema.json +185 -0
  286. package/lib/import/manifest.test.cjs +123 -0
  287. package/lib/import/meeting-detector.cjs +92 -0
  288. package/lib/import/meeting-detector.test.cjs +100 -0
  289. package/lib/import/person-detector.cjs +229 -0
  290. package/lib/import/person-detector.test.cjs +149 -0
  291. package/lib/import/report.cjs +186 -0
  292. package/lib/import/report.test.cjs +186 -0
  293. package/lib/import/room-md-scaffolder.cjs +49 -0
  294. package/lib/import/router.cjs +224 -0
  295. package/lib/import/router.test.cjs +356 -0
  296. package/lib/import/run-all-tests.cjs +36 -0
  297. package/lib/import/smoke-test.cjs +213 -0
  298. package/lib/import/smoke-test.test.cjs +148 -0
  299. package/lib/import/test-fixtures/collision-vault/preexisting-room/STATE.md +8 -0
  300. package/lib/import/test-fixtures/collision-vault/preexisting-room/problem-definition/onboarding/onboarding.md +7 -0
  301. package/lib/import/test-fixtures/collision-vault/source/onboarding.md +5 -0
  302. package/lib/import/test-fixtures/obsidian-vault/.obsidian/workspace.json +1 -0
  303. package/lib/import/test-fixtures/obsidian-vault/notes/with-wikilinks.md +4 -0
  304. package/lib/import/test-fixtures/tiny-vault/notes/2026-01-15-team-sync.md +9 -0
  305. package/lib/import/test-fixtures/tiny-vault/notes/empty.md +3 -0
  306. package/lib/import/test-fixtures/tiny-vault/notes/onboarding.md +5 -0
  307. package/lib/import/test-fixtures/tiny-vault/notes/pricing.md +5 -0
  308. package/lib/import/test-fixtures/tiny-vault/notes/random.md +4 -0
  309. package/lib/import/undo.test.cjs +199 -0
  310. package/lib/import/vault-scanner.cjs +105 -0
  311. package/lib/import/vault-scanner.test.cjs +67 -0
  312. package/lib/mcp/app-html/dashboard.html +316 -0
  313. package/lib/mcp/app-html/graph.html +428 -0
  314. package/lib/mcp/app-html/mindrian-platform.html +1841 -0
  315. package/lib/mcp/app-html/wiki.html +383 -0
  316. package/lib/mcp/app-views.cjs +322 -0
  317. package/lib/mcp/brain-router.cjs +418 -0
  318. package/lib/mcp/capability-registry.cjs +62 -0
  319. package/lib/mcp/larry-context.cjs +46 -0
  320. package/lib/mcp/larry-server-instructions.md +114 -0
  321. package/lib/mcp/pipeline-state.cjs +275 -0
  322. package/lib/mcp/prompts.cjs +302 -0
  323. package/lib/mcp/resources.cjs +227 -0
  324. package/lib/mcp/session-catchup.cjs +327 -0
  325. package/lib/mcp/surface-detect.cjs +75 -0
  326. package/lib/mcp/tool-router.cjs +1034 -0
  327. package/lib/memory/aaak-compress.cjs +403 -0
  328. package/lib/memory/aaak-compress.test.cjs +288 -0
  329. package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
  330. package/lib/memory/bearer-token.test.cjs +315 -0
  331. package/lib/memory/brain-cache-lru.test.cjs +259 -0
  332. package/lib/memory/brain-client-query-shape.test.cjs +160 -0
  333. package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
  334. package/lib/memory/brain-derivation-queue.test.cjs +539 -0
  335. package/lib/memory/brain-derivation.test.cjs +634 -0
  336. package/lib/memory/brain-derive-command.test.cjs +534 -0
  337. package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
  338. package/lib/memory/brain-md-schema.test.cjs +467 -0
  339. package/lib/memory/brain-md-staleness.test.cjs +525 -0
  340. package/lib/memory/brain-server-resolution.test.cjs +314 -0
  341. package/lib/memory/chain-recommender.test.cjs +233 -0
  342. package/lib/memory/chat-context.test.cjs +128 -0
  343. package/lib/memory/command-registry.test.cjs +220 -0
  344. package/lib/memory/cross-room-aggregator.test.cjs +909 -0
  345. package/lib/memory/dashboard-server.test.cjs +256 -0
  346. package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
  347. package/lib/memory/decision-capture.test.cjs +632 -0
  348. package/lib/memory/decision-capture.worker.cjs +70 -0
  349. package/lib/memory/explain-decision-command.test.cjs +521 -0
  350. package/lib/memory/explain-decision-footer.test.cjs +316 -0
  351. package/lib/memory/explored-materials-store.cjs +392 -0
  352. package/lib/memory/feynman-minto-guardian.test.cjs +736 -0
  353. package/lib/memory/feynman-minto-invariants.test.cjs +511 -0
  354. package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
  355. package/lib/memory/feynman-prompts.cjs +151 -0
  356. package/lib/memory/feynman-prompts.test.cjs +96 -0
  357. package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
  358. package/lib/memory/folder-memory.test.cjs +503 -0
  359. package/lib/memory/framework-chain-composer.test.cjs +515 -0
  360. package/lib/memory/frontmatter-schema-validator.test.cjs +290 -0
  361. package/lib/memory/heal-command.test.cjs +604 -0
  362. package/lib/memory/index-artifact-transaction.test.cjs +333 -0
  363. package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
  364. package/lib/memory/mcp-input-validation.test.cjs +240 -0
  365. package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
  366. package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
  367. package/lib/memory/minto-debouncer.test.cjs +407 -0
  368. package/lib/memory/minto-debouncer.worker.cjs +46 -0
  369. package/lib/memory/minto-migration-v88.test.cjs +265 -0
  370. package/lib/memory/minto-schema-v88.test.cjs +390 -0
  371. package/lib/memory/mos-status-renderer.test.cjs +631 -0
  372. package/lib/memory/narrative-schema.cjs +376 -0
  373. package/lib/memory/narrative-schema.test.cjs +209 -0
  374. package/lib/memory/nav-dial.test.cjs +414 -0
  375. package/lib/memory/navigation-engine-core.test.cjs +722 -0
  376. package/lib/memory/navigation-invariants.test.cjs +483 -0
  377. package/lib/memory/offer-presenter.test.cjs +554 -0
  378. package/lib/memory/on-stop-snapshot.test.cjs +404 -0
  379. package/lib/memory/pending-tension-store.cjs +373 -0
  380. package/lib/memory/post-compact-reinjection.test.cjs +854 -0
  381. package/lib/memory/post-write-triple.test.cjs +317 -0
  382. package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
  383. package/lib/memory/problem-type-router.test.cjs +656 -0
  384. package/lib/memory/query-efficiency-telemetry.test.cjs +370 -0
  385. package/lib/memory/recompile-room-references.test.cjs +392 -0
  386. package/lib/memory/recompile-room-references.worker.cjs +42 -0
  387. package/lib/memory/record-decision-dual-write.test.cjs +454 -0
  388. package/lib/memory/room-classifier-strict-mode.test.cjs +417 -0
  389. package/lib/memory/room-minto-hook.test.cjs +398 -0
  390. package/lib/memory/rs-discovery-engine.test.cjs +323 -0
  391. package/lib/memory/run-feynman-tests.cjs +1247 -0
  392. package/lib/memory/security-trifecta.test.cjs +312 -0
  393. package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
  394. package/lib/memory/session-start-triple-injection.test.cjs +514 -0
  395. package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
  396. package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
  397. package/lib/memory/skill-activation-router.test.cjs +419 -0
  398. package/lib/memory/stamp-artifact-write.test.cjs +304 -0
  399. package/lib/memory/statusline-active-room.test.cjs +315 -0
  400. package/lib/memory/statusline-minto-segment.test.cjs +292 -0
  401. package/lib/memory/sync-async-entry-points.test.cjs +204 -0
  402. package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
  403. package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
  404. package/lib/memory/test-rs-brain-substrate.cjs +636 -0
  405. package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
  406. package/lib/memory/test-rs-canon-violations.cjs +218 -0
  407. package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
  408. package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
  409. package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
  410. package/lib/memory/test-rs-differential-scorer.cjs +480 -0
  411. package/lib/memory/test-rs-discovery-engine.cjs +603 -0
  412. package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
  413. package/lib/memory/test-rs-egress-primitives.cjs +420 -0
  414. package/lib/memory/test-rs-expert-mapper.cjs +547 -0
  415. package/lib/memory/test-rs-explain-command.cjs +443 -0
  416. package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
  417. package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
  418. package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
  419. package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
  420. package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
  421. package/lib/memory/test-rs-mind-map.cjs +646 -0
  422. package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
  423. package/lib/memory/test-rs-nl-to-query.cjs +449 -0
  424. package/lib/memory/test-rs-pinecone-bridge.cjs +277 -0
  425. package/lib/memory/test-rs-preprocessor.cjs +433 -0
  426. package/lib/memory/test-rs-query-matrix.cjs +391 -0
  427. package/lib/memory/test-rs-query-to-text.cjs +551 -0
  428. package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
  429. package/lib/memory/test-rs-thesis-generator.cjs +360 -0
  430. package/lib/memory/triple-context-formatter.cjs +473 -0
  431. package/lib/memory/triple-context-formatter.test.cjs +442 -0
  432. package/lib/memory/user-md-persona.test.cjs +565 -0
  433. package/lib/memory/userpromptsubmit-integration.test.cjs +690 -0
  434. package/lib/memory/validators/README.md +157 -0
  435. package/lib/memory/validators/brain-md-invariants.cjs +475 -0
  436. package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
  437. package/lib/memory/validators/external-academic-invariants.cjs +249 -0
  438. package/lib/memory/validators/external-industry-invariants.cjs +271 -0
  439. package/lib/memory/validators/external-patents-invariants.cjs +266 -0
  440. package/lib/memory/validators/minto-invariants.cjs +62 -0
  441. package/lib/memory/validators/navigation-invariants.cjs +340 -0
  442. package/lib/memory/validators/queue-health.cjs +95 -0
  443. package/lib/memory/validators/snapshot-integrity.cjs +129 -0
  444. package/lib/memory/validators/stale-lifecycle.cjs +116 -0
  445. package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
  446. package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
  447. package/lib/memory/write-lock-atomic.test.cjs +137 -0
  448. package/lib/memory/write-lock-atomic.worker.cjs +55 -0
  449. package/lib/parity/check-parity.cjs +83 -0
  450. package/lib/presentation/presentation-server.cjs +101 -0
  451. package/lib/presentation/presentation-watcher.cjs +123 -0
  452. package/lib/quickview/hub-server.cjs +719 -0
  453. package/lib/quickview/server.cjs +533 -0
  454. package/lib/render/JTBD-PALETTES.md +145 -0
  455. package/lib/render/ROOM.md +59 -0
  456. package/lib/render/render-v2.cjs +486 -0
  457. package/lib/render/render-v2.test.cjs +267 -0
  458. package/lib/render/render.cjs +65 -0
  459. package/lib/state/ROOM.md +46 -0
  460. package/lib/state/state-md-parser.cjs +215 -0
  461. package/lib/statusline/ROOM.md +38 -0
  462. package/lib/statusline/banner-suppression.cjs +50 -0
  463. package/lib/statusline/surface-detect.cjs +85 -0
  464. package/lib/update-bootstrap.sh.template +145 -0
  465. package/lib/vault/frontmatter-schema.cjs +297 -0
  466. package/lib/vault/room-scanner.cjs +352 -0
  467. package/lib/vault/wikilink-builder.cjs +231 -0
  468. package/lib/vault/wikilink-builder.test.cjs +182 -0
  469. package/lib/wiki/graph-links.cjs +281 -0
  470. package/lib/wiki/page-renderer.cjs +229 -0
  471. package/lib/wiki/wiki-chat.cjs +81 -0
  472. package/lib/wiki/wiki-layout.cjs +1459 -0
  473. package/lib/wiki/wiki-search.cjs +142 -0
  474. package/lib/wiki/wiki-server.cjs +678 -0
  475. package/lib/wiki/wiki-watcher.cjs +105 -0
  476. package/lib/workflow/ROOM.md +47 -0
  477. package/lib/workflow/command-resolver.cjs +155 -0
  478. package/lib/workflow/command-resolver.test.cjs +235 -0
  479. package/package.json +44 -0
  480. package/pipelines/analogy/01-decompose.md +80 -0
  481. package/pipelines/analogy/02-abstract.md +87 -0
  482. package/pipelines/analogy/03-search.md +135 -0
  483. package/pipelines/analogy/04-transfer.md +101 -0
  484. package/pipelines/analogy/05-validate.md +106 -0
  485. package/pipelines/analogy/CHAIN.md +56 -0
  486. package/pipelines/discovery/01-explore-domains.md +44 -0
  487. package/pipelines/discovery/02-think-hats.md +50 -0
  488. package/pipelines/discovery/03-analyze-needs.md +54 -0
  489. package/pipelines/discovery/CHAIN.md +37 -0
  490. package/pipelines/thesis/01-structure-argument.md +45 -0
  491. package/pipelines/thesis/02-challenge-assumptions.md +48 -0
  492. package/pipelines/thesis/03-build-thesis.md +54 -0
  493. package/pipelines/thesis/CHAIN.md +37 -0
  494. package/references/brain/causal-directives.md +91 -0
  495. package/references/brain/causal-enrichment.cypher +165 -0
  496. package/references/brain/command-triggers-schema.md +226 -0
  497. package/references/brain/graph-architecture.md +317 -0
  498. package/references/brain/query-patterns.md +460 -0
  499. package/references/brain/room-hierarchy-schema.md +218 -0
  500. package/references/brain/schema.md +76 -0
  501. package/references/capability-radar/capabilities-index.md +241 -0
  502. package/references/capability-radar/changelog-cache.md +81 -0
  503. package/references/causal/causal-schema.md +103 -0
  504. package/references/design/email-template-standard.md +155 -0
  505. package/references/design/graph-visualization-standard.md +178 -0
  506. package/references/document-generation.md +179 -0
  507. package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
  508. package/references/import-config.md +141 -0
  509. package/references/integrations/detection-patterns.md +101 -0
  510. package/references/meeting/artifact-template.md +377 -0
  511. package/references/meeting/cross-meeting-intelligence.md +216 -0
  512. package/references/meeting/cross-relationship-patterns.md +202 -0
  513. package/references/meeting/live-join-interface.md +244 -0
  514. package/references/meeting/section-mapping.md +192 -0
  515. package/references/meeting/segment-classification.md +258 -0
  516. package/references/meeting/speaker-profile-template.md +219 -0
  517. package/references/meeting/summary-template.md +348 -0
  518. package/references/meeting/transcript-patterns.md +226 -0
  519. package/references/methodology/analyze-needs.md +135 -0
  520. package/references/methodology/analyze-systems.md +121 -0
  521. package/references/methodology/analyze-timing.md +149 -0
  522. package/references/methodology/beautiful-question.md +109 -0
  523. package/references/methodology/build-knowledge.md +161 -0
  524. package/references/methodology/build-thesis.md +237 -0
  525. package/references/methodology/challenge-assumptions.md +127 -0
  526. package/references/methodology/diagnose.md +169 -0
  527. package/references/methodology/dominant-designs.md +212 -0
  528. package/references/methodology/explore-domains.md +147 -0
  529. package/references/methodology/explore-futures.md +163 -0
  530. package/references/methodology/explore-trends.md +129 -0
  531. package/references/methodology/find-bottlenecks.md +131 -0
  532. package/references/methodology/grade.md +211 -0
  533. package/references/methodology/index.md +97 -0
  534. package/references/methodology/leadership.md +200 -0
  535. package/references/methodology/lean-canvas.md +116 -0
  536. package/references/methodology/macro-trends.md +192 -0
  537. package/references/methodology/map-unknowns.md +137 -0
  538. package/references/methodology/mullins-7-domains.md +104 -0
  539. package/references/methodology/problem-types.md +65 -0
  540. package/references/methodology/root-cause.md +178 -0
  541. package/references/methodology/sapphire-encoding.md +355 -0
  542. package/references/methodology/scenario-plan.md +178 -0
  543. package/references/methodology/score-innovation.md +154 -0
  544. package/references/methodology/structure-argument.md +158 -0
  545. package/references/methodology/systems-thinking.md +159 -0
  546. package/references/methodology/think-hats.md +147 -0
  547. package/references/methodology/triz-matrix.json +751 -0
  548. package/references/methodology/triz-principles.md +501 -0
  549. package/references/methodology/user-needs.md +199 -0
  550. package/references/methodology/validate.md +163 -0
  551. package/references/methodology/value-proposition.md +244 -0
  552. package/references/opportunities/funding-lifecycle.md +103 -0
  553. package/references/opportunities/grant-api-patterns.md +99 -0
  554. package/references/opportunities/opportunity-template.md +84 -0
  555. package/references/personality/assessment-philosophy.md +72 -0
  556. package/references/personality/lexicon.md +100 -0
  557. package/references/personality/persona-chains.md +56 -0
  558. package/references/personality/pws-lexicon-full.md +499 -0
  559. package/references/personality/voice-dna.md +156 -0
  560. package/references/personas/hat-perspectives.md +76 -0
  561. package/references/personas/persona-template.md +63 -0
  562. package/references/pipeline/act-output-contract.md +88 -0
  563. package/references/pipeline/chains-index.md +39 -0
  564. package/references/pws-profile-generation.md +79 -0
  565. package/references/reasoning/reasoning-schema.md +143 -0
  566. package/references/reasoning/reasoning-template.md +68 -0
  567. package/references/reasoning/run-template.md +38 -0
  568. package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
  569. package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
  570. package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
  571. package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
  572. package/references/taxonomy/TAXONOMY.md +192 -0
  573. package/references/templates/MINTO.md +36 -0
  574. package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
  575. package/references/vault-kit/README.md +35 -0
  576. package/references/vault-kit/app.json +12 -0
  577. package/references/vault-kit/appearance.json +12 -0
  578. package/references/vault-kit/graph.json +35 -0
  579. package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
  580. package/references/vault-kit/templates/new-artifact.md +37 -0
  581. package/references/vault-kit/templates/new-meeting-note.md +35 -0
  582. package/references/vault-kit/templates/new-team-profile.md +29 -0
  583. package/references/vault-kit/templates/new-xref.md +35 -0
  584. package/references/visual/symbol-system.md +151 -0
  585. package/skills/MOSDeckEngine/SKILL.md +325 -0
  586. package/skills/brain-connector/SKILL.md +114 -0
  587. package/skills/context-engine/SKILL.md +147 -0
  588. package/skills/conversation-mode/SKILL.md +102 -0
  589. package/skills/larry-personality/SKILL.md +219 -0
  590. package/skills/larry-personality/framework-chains.md +92 -0
  591. package/skills/larry-personality/mode-engine.md +185 -0
  592. package/skills/mullins-scaffold/SKILL.md +61 -0
  593. package/skills/mullins-scaffold/scaffold.json +146 -0
  594. package/skills/pws-methodology/SKILL.md +49 -0
  595. package/skills/room-passive/SKILL.md +165 -0
  596. package/skills/room-proactive/SKILL.md +250 -0
  597. package/skills/ui-system/SKILL.md +277 -0
@@ -0,0 +1,724 @@
1
+ ---
2
+ name: file-meeting
3
+ description: File a meeting transcript into the Data Room
4
+ argument-hint: [--latest|--paste|<file>]
5
+ serves_jtbd: ["file-meeting"]
6
+ allowed-tools:
7
+ - Read
8
+ - Write
9
+ - Bash
10
+ - Glob
11
+ ---
12
+
13
+ # /mos:file-meeting
14
+
15
+ You are Larry. This command turns meeting conversations into Data Room intelligence through a 6-step conversational pipeline.
16
+
17
+ ---
18
+
19
+ ## Setup
20
+
21
+ Load all reference files and context before starting:
22
+
23
+ 1. Read `references/personality/voice-dna.md` for Larry's voice
24
+ 2. Read `references/meeting/transcript-patterns.md` for speaker ID regex patterns
25
+ 3. Read `references/meeting/segment-classification.md` for the 6-type taxonomy
26
+ 4. Read `references/meeting/section-mapping.md` for the 12-role x 6-type x 8-section routing matrix
27
+ 5. Read `references/meeting/artifact-template.md` for wicked-problem-aware YAML frontmatter
28
+ 6. Read `references/meeting/summary-template.md` for narrative + structured dual storage format
29
+ 7. Read `references/meeting/speaker-profile-template.md` for ICM nested folder profiles
30
+ 8. Read `references/meeting/cross-relationship-patterns.md` (if file exists -- skip gracefully if not)
31
+ 9. Read `references/meeting/cross-meeting-intelligence.md` for cross-meeting convergence/contradiction detection and action item triage protocols
32
+ 10. Read `room/STATE.md` for venture context (if exists)
33
+ 11. Scan `room/team/` for known speaker profiles: glob `room/team/*/*/PROFILE.md`
34
+
35
+ Track any newly created speaker profiles in a list called `new_profiles` for the post-pipeline research step.
36
+
37
+ ---
38
+
39
+ ## Step 0: Action Item Triage (Pre-Filing)
40
+
41
+ Before starting the filing pipeline, check for open action items from prior meetings.
42
+
43
+ ### Load Open Items
44
+
45
+ Read `room/action-items.md` if it exists. If the file does not exist or has zero open items, skip Step 0 entirely and proceed to Step 1.
46
+
47
+ ### Present Quick Triage
48
+
49
+ Show open items as a pre-flight check (not an interrogation):
50
+
51
+ > "3 open items from your last meeting. Quick check -- any done?"
52
+ >
53
+ > | # | Owner | Task | From Meeting |
54
+ > |---|-------|------|--------------|
55
+ > | 1 | Lawrence | Review TAM analysis | 2026-03-15-mentoring |
56
+ > | 2 | Sarah | Send competitor deck | 2026-03-15-mentoring |
57
+ > | 3 | Tyler | Schedule user interviews | 2026-03-10-research |
58
+ >
59
+ > [mark done: 1,3 / skip / review all]
60
+
61
+ ### Handle Responses
62
+
63
+ - **mark done (e.g., "1,3")**: Update each item's status from `open` to `done` in the SOURCE meeting's action-items.md file (not the aggregated file). Find the source by the meeting_id in the aggregated table.
64
+ - **skip**: Move on to Step 1. No changes.
65
+ - **review all**: Show each item individually for yes/no.
66
+
67
+ Track items marked done for inclusion in this meeting's summary ("Cleared 2 action items from prior meetings").
68
+
69
+ ---
70
+
71
+ ## Step 1: Get Transcript Input
72
+
73
+ Determine the input mode based on flags:
74
+
75
+ ### No flags (default) -- Paste Mode
76
+
77
+ Ask the user to paste their transcript text:
78
+
79
+ > "Paste your meeting transcript below. I'll handle any format -- Zoom, Teams, Otter, Google Meet, or raw text."
80
+
81
+ Accept multi-line paste. After receiving text, detect the transcript format using the regex patterns from `references/meeting/transcript-patterns.md`. Report the detected format:
82
+
83
+ > "Got it. Looks like a {format} transcript."
84
+
85
+ ### `--file <path>` -- File Mode
86
+
87
+ Read the file at the provided path. Support `.txt` and `.md` extensions. Detect format from content using transcript-patterns.md patterns. If the file does not exist, report the error and suggest alternatives:
88
+
89
+ > "Can't find that file. Try the full path, or just paste the transcript here."
90
+
91
+ ### `--audio <path>` -- Audio Mode
92
+
93
+ Check if Velma is configured:
94
+ 1. Check `VELMA_API_KEY` environment variable
95
+ 2. Check `.mcp.json` for `mcpServers.velma.env.VELMA_API_KEY`
96
+
97
+ **If not configured:**
98
+ > "Audio needs Velma configured. Set it up now? (30 seconds)"
99
+ > - If yes: Walk through the Velma setup flow (same as `/mos:setup transcription`)
100
+ > - If no: "No problem. Paste the transcript text instead, or point me to a text file with `--file`."
101
+
102
+ **If configured:**
103
+ Run `bash scripts/transcribe-audio <path>` and use the output as the transcript. Note the source as `velma` (affects artifact frontmatter).
104
+
105
+ Also capture the full JSON response (written to temp file via stderr) for emotion data parsing downstream.
106
+
107
+ ### `--latest` -- Auto-Fetch Mode
108
+
109
+ Automatically fetch the most recent meeting transcript from a configured meeting source (Read AI, Vexa, or Recall.ai).
110
+
111
+ #### 1. Check for Configured Meeting Source
112
+
113
+ Read `.mcp.json` in the workspace root and look for meeting source keys under `mcpServers`:
114
+
115
+ - `read-ai` -- Read AI MCP
116
+ - `vexa` -- Vexa MCP
117
+ - `recall-ai` -- Recall.ai MCP
118
+
119
+ **If no meeting source configured:**
120
+ > "No meeting source configured. Run `/mos:setup meetings` first, or paste your transcript here."
121
+
122
+ Then fall back to default paste mode (continue to the paste prompt above).
123
+
124
+ #### 2. Fetch Recent Meetings
125
+
126
+ If a meeting source is found, detect which provider by the key name in `mcpServers` and call its list tool:
127
+
128
+ | Provider | MCP Tool Call | Returns |
129
+ |----------|--------------|---------|
130
+ | Read AI | `mcp__read-ai__list-meetings` | Recent meetings with titles, dates, durations |
131
+ | Vexa | `mcp__vexa__list-sessions` | Recent sessions with metadata |
132
+ | Recall.ai | `mcp__recall-ai__list-meetings` | Recent meetings with participant info |
133
+
134
+ Present the 5 most recent meetings in a table:
135
+
136
+ ```
137
+ | # | Date | Title | Duration | Participants |
138
+ |---|------------|--------------------------------|----------|--------------|
139
+ | 1 | 2026-03-23 | Weekly Team Sync | 45min | 4 |
140
+ | 2 | 2026-03-22 | Investor Update Call | 30min | 3 |
141
+ | 3 | 2026-03-21 | Product Review | 1h 15min | 6 |
142
+ | 4 | 2026-03-20 | Mentor Session with Lawrence | 50min | 2 |
143
+ | 5 | 2026-03-19 | Customer Discovery Interview | 35min | 3 |
144
+ ```
145
+
146
+ > "Grabbing your latest meeting. Or pick a different one: [1-5]"
147
+
148
+ Default to #1 (most recent) if user confirms or presses enter. If user selects a number, use that meeting.
149
+
150
+ #### 3. Fetch Transcript
151
+
152
+ Call the source's transcript retrieval tool with the selected session/meeting ID:
153
+
154
+ | Provider | MCP Tool Call |
155
+ |----------|--------------|
156
+ | Read AI | `mcp__read-ai__get-transcript` with the session ID |
157
+ | Vexa | `mcp__vexa__get-transcript` with the session ID |
158
+ | Recall.ai | `mcp__recall-ai__get-meeting-transcript` with the meeting ID |
159
+
160
+ Use the returned transcript text as input to Step 1 format detection (proceed to "Infer Meeting Metadata" below).
161
+
162
+ Set source metadata to the meeting provider name (e.g., `read-ai`, `vexa`, or `recall-ai`) for artifact provenance tracking.
163
+
164
+ #### 4. Handle MCP Errors
165
+
166
+ **Auth errors (401/403):**
167
+ > "Authentication expired. Re-run `/mos:setup meetings` to reconnect."
168
+
169
+ Then fall back to paste mode. Never block the pipeline.
170
+
171
+ **Network / other errors:**
172
+ > "Could not reach {source}. Check your connection. Meanwhile, paste the transcript or use `--file`."
173
+
174
+ Then fall back to paste mode. Never block the pipeline.
175
+
176
+ **Empty response (no meetings found):**
177
+ > "No recent meetings found in {source}. Your meeting tool might not have recorded anything recently. Paste the transcript here instead."
178
+
179
+ Then fall back to paste mode.
180
+
181
+ ### `--join <url>` -- Future Mode
182
+
183
+ Print:
184
+ > "Not yet available. Coming in a future update. Use `--latest`, paste, `--file`, or `--audio` for now."
185
+
186
+ This flag is designed in `references/meeting/live-join-interface.md` but not implemented until v3.0.
187
+
188
+ ### Infer Meeting Metadata
189
+
190
+ After getting the transcript content, infer metadata from content and Data Room context:
191
+
192
+ - **Meeting date**: Extract from timestamps in transcript, file modification date, or ask user. When `--latest` is used, the meeting date comes directly from the MCP response metadata -- no need to infer from transcript content.
193
+ - **Meeting purpose**: Infer from content themes and dominant topics
194
+ - **Participant count**: Count unique speaker labels. When `--latest` is used, the participant count comes from the MCP response metadata and can be cross-checked against speaker labels in the transcript.
195
+
196
+ Present inferences for confirmation:
197
+ > "This looks like a {type} meeting from {date} with {N} participants. Correct?"
198
+
199
+ If the user corrects any inference, use their version. Store confirmed metadata for artifact provenance.
200
+
201
+ ---
202
+
203
+ ## Step 2: Speaker Identification + Profile Creation
204
+
205
+ ### Parse Speaker Labels
206
+
207
+ Use the regex patterns from `references/meeting/transcript-patterns.md` to extract speaker labels from the transcript.
208
+
209
+ **If speaker labels are found:** Extract all unique speakers and proceed to matching.
210
+
211
+ **If no speaker labels found:** Ask the user:
212
+ > "I don't see speaker labels in this transcript. Who was in this meeting? Give me names and I'll match the voices to the content."
213
+
214
+ Use their response combined with content analysis to attribute segments to speakers.
215
+
216
+ ### Cross-Reference Against Team Directory
217
+
218
+ For each identified speaker, check `room/team/` profiles:
219
+
220
+ - **Known match** (exact name match in existing profile): Mark as `AUTO-MATCHED`
221
+ - Example: "Lawrence matches team/mentors/lawrence-aronhime/ (mentor)"
222
+ - **Partial match** (similar name in existing profile): Present for confirmation
223
+ - Example: "This sounds like Lawrence -- mentor from team directory. Confirm?"
224
+ - **Unknown** (no match in team directory): Infer role from content
225
+ - Example: "Speaker 2 discussed financials and seems senior -- could this be your advisor?"
226
+
227
+ ### Present Smart Hybrid Table
228
+
229
+ Show all speakers in a single table:
230
+
231
+ ```
232
+ | Speaker | Match | Role | Status |
233
+ |---------|-------|------|--------|
234
+ | Lawrence | team/mentors/lawrence-aronhime/ | mentor | AUTO-MATCHED |
235
+ | Tyler | (no match) | researcher? | NEEDS CONFIRMATION |
236
+ | Sarah | team/founders/sarah-chen/ | founder | AUTO-MATCHED |
237
+ ```
238
+
239
+ User confirms matches and fills unknowns. Roles must be from the 12-type taxonomy:
240
+ mentor, researcher, team-member, investor, advisor, customer, founder, partner, domain-expert, government, competitor, unknown
241
+
242
+ ### Create Profiles for New Speakers
243
+
244
+ For each CONFIRMED unknown speaker (user has confirmed their identity and role):
245
+
246
+ Run `bash scripts/create-speaker-profile <room_dir> <speaker-slug> <speaker-role> <display-name>`
247
+
248
+ Add the speaker to the `new_profiles` list for post-pipeline research.
249
+
250
+ ### Emotion Signals (Audio Input Only)
251
+
252
+ If the input was `--audio` and Velma data includes emotion scores, surface ONLY strong emotions (score > 0.7):
253
+
254
+ > "Tyler was notably skeptical when discussing market size."
255
+ > "Sarah showed high enthusiasm about the enterprise pivot."
256
+
257
+ Do not surface routine or weak emotions. Only notable emotional signals that provide insight.
258
+
259
+ ---
260
+
261
+ ## Step 3: Segment Classification (Priority-First)
262
+
263
+ ### Classify Each Segment
264
+
265
+ Process each non-greeting, non-trivial segment from the transcript:
266
+
267
+ 1. **Classify** using the 6-type taxonomy from `references/meeting/segment-classification.md`:
268
+ - decision, action-item, insight, advice, question, noise
269
+
270
+ 2. **Apply role-aware heuristics** from `references/meeting/section-mapping.md`:
271
+ - Investor question about financials = HIGH priority
272
+ - Mentor advice on problem framing = HIGH priority
273
+ - Team-member status update = MEDIUM priority
274
+ - Use the routing matrix to determine the target room section
275
+
276
+ 3. **Sort by priority**: decisions (HIGHEST) > action-items (HIGH) > insights (MEDIUM) > advice (MEDIUM) > questions (LOW)
277
+
278
+ 4. **Flag potential noise** that contains proper nouns, competitor names, or numbers:
279
+ > "This looks like small talk but Lawrence mentioned a competitor name. File or skip?"
280
+
281
+ ### Show Classification Reasoning
282
+
283
+ For EVERY classified segment, show Larry's reasoning:
284
+
285
+ > "This is an insight about market size -> market-analysis. Confidence: 0.85"
286
+ > "This is a decision about product focus -> solution-design. Confidence: 0.92"
287
+ > "This is advice on hiring strategy -> team-execution. Confidence: 0.78"
288
+
289
+ Transparency is mandatory -- even when it makes the flow longer. The user needs to trust Larry's classifications.
290
+
291
+ ---
292
+
293
+ ## Step 4: Section Mapping + Confirm-Then-File
294
+
295
+ ### Present Segments Batched by Type (Priority Order)
296
+
297
+ Group classified segments by type. Within each type, sort by confidence. Present the highest-priority types first:
298
+
299
+ ```
300
+ **DECISIONS (2 segments):**
301
+ 1. Lawrence (mentor): "Focus on B2B first, consumer can wait."
302
+ -> team-execution | decision | HIGH confidence
303
+ Reasoning: Direct strategic direction from mentor
304
+
305
+ 2. Sarah (founder): "We're pausing the mobile app."
306
+ -> solution-design | decision | HIGH confidence
307
+ Reasoning: Product roadmap change from founder
308
+
309
+ File both decisions? [all / review individually / skip]
310
+ ```
311
+
312
+ ### Filing Options Per Batch
313
+
314
+ - **all**: File every segment in this batch
315
+ - **review individually**: Present each one for yes/no/redirect
316
+ - **skip**: Skip the entire batch (captures structured rejection)
317
+
318
+ ### Handle Rejections
319
+
320
+ When the user rejects a filing, offer structured rejection reasons:
321
+
322
+ > "Why skip? [not relevant] [already known] [wrong section] [other]"
323
+
324
+ Capture the rejection reason. This becomes graph data per the wicked problem architecture (rejection IS data).
325
+
326
+ ### Cross-Reference Against Open Action Items
327
+
328
+ During filing, if any open action items remain (not cleared in Step 0), compare each segment being filed against them. If a segment appears to address or complete an open action item:
329
+
330
+ > "This looks like progress on Lawrence's 'Review TAM analysis'. Mark as done?"
331
+
332
+ Use Larry's judgment -- not exact text matching. Only surface when confidence is high. If user confirms, update the source meeting's action-items.md.
333
+
334
+ ### Create Filed Artifacts
335
+
336
+ For each filed segment, create a markdown file in the target room section using the frontmatter from `references/meeting/artifact-template.md`:
337
+
338
+ **File path pattern:** `room/{section}/YYYY-MM-DD-{slug}.md`
339
+
340
+ Include ALL provenance fields:
341
+ - methodology: file-meeting
342
+ - created: {today}
343
+ - source: transcript (or velma)
344
+ - attribution:
345
+ - speaker: {name}
346
+ - role: {role}
347
+ - profile_path: team/{role-plural}/{speaker-slug}
348
+ - meeting_date: {meeting date}
349
+ - meeting_id: {YYYY-MM-DD-meeting-slug}
350
+ - segment_type: {type}
351
+ - confidence: {confidence score}
352
+ - meeting_date: {meeting date}
353
+ - meeting_name: {meeting identifier}
354
+ - room_section: {target section}
355
+ - assumptions: {extracted assumptions with status and impacts}
356
+ - perspective: {speaker_role}
357
+ - cascade_sections: {sections this may affect beyond target}
358
+
359
+ When writing the artifact content, auto-insert [[concept-name]] links for key concepts that connect this segment to other parts of the Data Room. Use [[section-name]] for cross-section references (existing pattern) and [[concept-name]] for domain concepts, frameworks, or recurring themes. Examples: [[wicked-problems]], [[assumption-tracking]], [[market-sizing]], [[competitive-moat]]. These wikilinks feed the knowledge graph -- build-graph parses them into concept nodes and REFERENCES edges. Users can also manually add [[wikilinks]] to any room artifact at any time.
360
+
361
+ **Native wikilink injection (NATIVE-01/02):** Immediately after writing each filed artifact, run:
362
+ ```bash
363
+ node scripts/wikilink-file.cjs "$ROOM_DIR" "$ARTIFACT_PATH"
364
+ ```
365
+ This uses `lib/vault/wikilink-builder.cjs` to inject team-name wikilinks at write time so the artifact arrives pre-linked. Errors are logged but non-fatal -- filing never aborts because of a wikilink pass.
366
+
367
+ Speaker contributions are tracked via computed backlinks in PROFILE.md (run by compute-team), not by filing copies to speaker subfolders.
368
+
369
+ Track: total segments filed, total rejected, sections touched.
370
+
371
+ ---
372
+
373
+ ## Step 5: Create Meeting Summary + Archive
374
+
375
+ ### Infer Meeting Name + Confirm
376
+
377
+ Before creating the archive, confirm the meeting name with the user:
378
+
379
+ 1. **Larry proposes** a meeting name from the dominant topic/purpose of classified segments:
380
+ > "This looks like a mentoring session focused on market validation. I'd call it 'Market Validation Mentoring'. Sound right?"
381
+
382
+ 2. **User confirms or changes** the name. Use their version if they provide one.
383
+
384
+ 3. The confirmed meeting name becomes the **meeting_id** used in all attribution blocks and archive paths:
385
+ - meeting_id: `YYYY-MM-DD-{confirmed-slug}` (e.g., `2026-03-15-market-validation-mentoring`)
386
+ - Slugify: lowercase, hyphens, no special characters, max 50 characters
387
+
388
+ ### Meeting Archive Package
389
+
390
+ The complete meeting archive directory structure:
391
+
392
+ ```
393
+ room/meetings/YYYY-MM-DD-{meeting-name}/
394
+ transcript.md
395
+ summary.md
396
+ speakers.md
397
+ decisions.md
398
+ action-items.md
399
+ metadata.yaml
400
+ {audio-filename} # only if --audio input
401
+ filed-to/
402
+ ```
403
+
404
+ Each meeting is a self-contained knowledge artifact. The entire folder can be browsed, shared, or referenced as a unit.
405
+
406
+ ### Create Meeting Archive Directory
407
+
408
+ ```bash
409
+ mkdir -p room/meetings/YYYY-MM-DD-{meeting-name}/filed-to/
410
+ ```
411
+
412
+ ### Store Processed Transcript
413
+
414
+ Write the processed transcript (with speaker labels and format metadata) to:
415
+ `room/meetings/YYYY-MM-DD-{meeting-name}/transcript.md`
416
+
417
+ ### Create Speakers Roster
418
+
419
+ Create `room/meetings/YYYY-MM-DD-{meeting-name}/speakers.md`:
420
+
421
+ ```markdown
422
+ ---
423
+ meeting_id: {YYYY-MM-DD-meeting-slug}
424
+ meeting_date: {YYYY-MM-DD}
425
+ ---
426
+ # Speakers: {meeting_name}
427
+
428
+ | Speaker | Role | Segments | Profile |
429
+ |---------|------|----------|---------|
430
+ | {name} | {role} | {count} | [[team/{role-plural}/{slug}/PROFILE.md]] |
431
+ ```
432
+
433
+ One row per confirmed speaker from Step 2. Profile links use the slug from create-speaker-profile (canonical slug source).
434
+
435
+ ### Create Full Summary
436
+
437
+ Following `references/meeting/summary-template.md`, create the full meeting summary at:
438
+ `room/meetings/YYYY-MM-DD-{meeting-name}/summary.md`
439
+
440
+ Structure:
441
+
442
+ 1. **Narrative lead paragraph** in Larry's voice:
443
+ > "Lawrence pushed hard on market validation today. Three things you can't ignore..."
444
+
445
+ 2. **## Key Decisions** -- with who decided and the reasoning
446
+
447
+ 3. **## Insights Filed** -- {count} insights filed to {sections list}
448
+
449
+ 4. **## Contradictions Detected** -- if any contradictions found between this meeting's content and existing room content. Skip section entirely if none.
450
+
451
+ 5. **## Gaps Identified** -- room sections that SHOULD have received input from this meeting but didn't. Based on the speaker roles present and what they discussed.
452
+
453
+ 6. **## Action Items** -- with owners assigned from speaker context. Deadlines ONLY when explicitly mentioned in transcript. Never invent deadlines.
454
+
455
+ 7. **## Rejections** -- segments rejected with structured reasons. This IS data -- do not hide or minimize rejections.
456
+
457
+ 8. **## Speakers** -- {count} speakers with roles and contribution summary
458
+
459
+ 9. **## Convergence Signals** -- topics appearing in 3+ meetings across the meeting history. Only include if convergence was detected. Skip section entirely if none.
460
+
461
+ 10. **## Cross-Meeting Contradictions** -- contradictions detected against prior meetings (beyond within-meeting contradictions in section 4). Only include if cross-meeting contradictions were found.
462
+
463
+ ### Create Decisions Log
464
+
465
+ Create `room/meetings/YYYY-MM-DD-{meeting-name}/decisions.md`:
466
+
467
+ ```markdown
468
+ ---
469
+ meeting_id: {YYYY-MM-DD-meeting-slug}
470
+ ---
471
+ # Decisions: {meeting_name}
472
+
473
+ 1. **{Decision summary}** -- {speaker} ({role})
474
+ Filed to: [[{section}/{artifact-filename}.md]]
475
+ Impact: {cascade_sections from the decision artifact}
476
+ ```
477
+
478
+ Extract from the segments classified as `decision` in Step 3. If no decisions were made, write: "No explicit decisions were recorded in this meeting."
479
+
480
+ ### Create Action Items Log
481
+
482
+ Create `room/meetings/YYYY-MM-DD-{meeting-name}/action-items.md`:
483
+
484
+ ```markdown
485
+ ---
486
+ meeting_id: {YYYY-MM-DD-meeting-slug}
487
+ ---
488
+ # Action Items: {meeting_name}
489
+
490
+ | Owner | Task | Deadline | Status |
491
+ |-------|------|----------|--------|
492
+ | {name} | {task} | {date or "not specified"} | open |
493
+ ```
494
+
495
+ Extract from segments classified as `action-item` in Step 3. Deadlines ONLY if explicitly stated in transcript -- never invent deadlines. All items start as `status: open`. If no action items, write: "No action items were identified in this meeting."
496
+
497
+ ### Create Structured Metadata
498
+
499
+ Create `room/meetings/YYYY-MM-DD-{meeting-name}/metadata.yaml` as the LAST file in the archive (after all other data is known):
500
+
501
+ ```yaml
502
+ meeting_id: {YYYY-MM-DD-meeting-slug}
503
+ meeting_name: {human-readable meeting name}
504
+ meeting_date: {YYYY-MM-DD}
505
+ source: {transcript | velma}
506
+ speakers:
507
+ - name: {full name}
508
+ role: {role}
509
+ slug: {speaker-slug matching profile directory}
510
+ - name: {full name}
511
+ role: {role}
512
+ slug: {speaker-slug}
513
+ topics:
514
+ - {dominant topic 1}
515
+ - {dominant topic 2}
516
+ decisions_count: {N}
517
+ insights_count: {N}
518
+ action_items_count: {N}
519
+ sections_touched:
520
+ - {section-name}
521
+ - {section-name}
522
+ has_audio: {true | false}
523
+ ```
524
+
525
+ Topics are inferred from the dominant themes of filed segments. Speaker slugs MUST match the directory names created by create-speaker-profile (canonical slug source).
526
+
527
+ ### Copy Audio File (if --audio)
528
+
529
+ If input was `--audio <path>`, copy the audio file into the meeting archive:
530
+
531
+ ```bash
532
+ cp {audio-path} room/meetings/{YYYY-MM-DD-meeting-slug}/{original-filename}
533
+ ```
534
+
535
+ Set `has_audio: true` in metadata.yaml. If no audio input, set `has_audio: false`.
536
+
537
+ Register the audio file in the room's ASSET_MANIFEST.md for dashboard/wiki discovery:
538
+
539
+ ```bash
540
+ # Register audio in ASSET_MANIFEST.md
541
+ bash scripts/file-asset "$room_path" "$audio_path" "meetings" --meeting "$meeting_id"
542
+ ```
543
+
544
+ This creates a markdown wrapper alongside the audio file in the meeting archive with a link to the transcript:
545
+ ```yaml
546
+ ---
547
+ type: audio
548
+ asset_path: meetings/{meeting_id}/{audio_filename}
549
+ meeting_id: {meeting_id}
550
+ transcript: meetings/{meeting_id}/transcript.md
551
+ ---
552
+ ```
553
+
554
+ The wrapper content includes: `Transcript: [[meetings/{meeting_id}/transcript.md]]`
555
+
556
+ ### Create Filed-To Reference Directory
557
+
558
+ In `room/meetings/YYYY-MM-DD-{meeting-name}/filed-to/`, create a small markdown file for each filed artifact pointing to its location:
559
+
560
+ ```markdown
561
+ # {artifact-slug}
562
+ Filed to: room/{section}/YYYY-MM-DD-{slug}.md
563
+ Speaker: {name} ({role})
564
+ Type: {segment_type}
565
+ ```
566
+
567
+ **Native wikilink injection (NATIVE-01/02):** After writing each filed-to stub AND the meeting summary.md, run the wikilink wrapper to inject team links and filed-to footer lines at write time:
568
+ ```bash
569
+ # For each filed-to stub
570
+ node scripts/wikilink-file.cjs "$ROOM_DIR" "$STUB_PATH" \
571
+ --filed-to-target="{section}/YYYY-MM-DD-{slug}.md" \
572
+ --meeting-slug="YYYY-MM-DD-{meeting-name}"
573
+
574
+ # For the meeting summary
575
+ node scripts/wikilink-file.cjs "$ROOM_DIR" "$SUMMARY_PATH" \
576
+ --meeting-slug="YYYY-MM-DD-{meeting-name}"
577
+ ```
578
+ See `lib/vault/wikilink-builder.cjs` for the canonical builders. The wrapper fails soft -- if the room has zero team profiles or scan errors, filing still completes cleanly.
579
+
580
+ ### Create Compact Root Reference
581
+
582
+ Create a compact one-paragraph reference at the room root:
583
+ `room/meeting-YYYY-MM-DD-{meeting-name}.md`
584
+
585
+ ```markdown
586
+ ---
587
+ type: meeting-reference
588
+ meeting_date: YYYY-MM-DD
589
+ meeting_name: {name}
590
+ speakers: {count}
591
+ artifacts_filed: {count}
592
+ sections_touched: [{sections}]
593
+ ---
594
+
595
+ {One paragraph summary of the meeting and its impact on the Data Room.}
596
+
597
+ Full summary: [[meetings/YYYY-MM-DD-{meeting-name}/summary.md]]
598
+ Transcript: [[meetings/YYYY-MM-DD-{meeting-name}/transcript.md]]
599
+ Filed {N} artifacts across {M} sections.
600
+ ```
601
+
602
+ ### Past Meeting Lookup
603
+
604
+ When Larry needs to reference past meetings (e.g., "Lawrence mentioned this 3 meetings ago"), grep metadata.yaml files across `room/meetings/`:
605
+
606
+ - **By speaker:** `grep -rl '{speaker-slug}' room/meetings/*/metadata.yaml`
607
+ - **By topic:** `grep -rl '{topic}' room/meetings/*/metadata.yaml`
608
+ - **By date range:** Scan `meeting_date` fields in metadata.yaml files
609
+ - **By decision count:** `grep -l 'decisions_count: [1-9]' room/meetings/*/metadata.yaml`
610
+
611
+ This provides fast targeted lookups without indexing. metadata.yaml is designed as a grep-friendly structured search surface.
612
+
613
+ ---
614
+
615
+ ## Step 6: Cross-Relationship Batch Scan
616
+
617
+ After ALL filing is complete, scan filed artifacts against existing Data Room content.
618
+
619
+ ### Load Detection Heuristics
620
+
621
+ Use `references/meeting/cross-relationship-patterns.md` (already loaded in Setup if available) for the 5 edge types:
622
+
623
+ - **INFORMS**: new artifact references or provides evidence for another section
624
+ - **CONTRADICTS**: new artifact conflicts with existing claim
625
+ - **CONVERGES**: theme from this meeting appears in 3+ sections
626
+ - **INVALIDATES**: new artifact makes an existing assumption stale
627
+ - **ENABLES**: new artifact unblocks something in another section
628
+
629
+ ### Scan Protocol
630
+
631
+ 1. For each filed artifact, read its content and assumptions
632
+ 2. Glob existing room content in related sections (especially cascade_sections)
633
+ 3. Apply Tier 0 keyword matching heuristics from cross-relationship-patterns.md
634
+ 4. Detect significant cross-relationships only -- not every minor keyword overlap
635
+
636
+ **Tier 0 implementation:** Larry's conversational reasoning against room content. No LSA/MiniLM in Phase 6 -- computational similarity comes in Phase 8.
637
+
638
+ ### Present Findings
639
+
640
+ **If significant cross-relationships found:**
641
+
642
+ Present in priority order (INVALIDATES > CONTRADICTS > CONVERGES > ENABLES > INFORMS):
643
+
644
+ > "This meeting changed something in your Data Room:"
645
+ >
646
+ > **CONTRADICTS:** Tyler's market size estimate ($50M) conflicts with the $190M TAM in your financial-model/revenue-projection.md. Which is current?
647
+ >
648
+ > **CONVERGES:** Enterprise focus was mentioned by 3 speakers and now appears in problem-definition, market-analysis, and solution-design. This is becoming a clear strategic direction.
649
+ >
650
+ > **INFORMS:** Sarah's competitive analysis point adds evidence to your competitive-analysis section.
651
+
652
+ **If no significant cross-relationships found:**
653
+
654
+ > "No significant cross-relationships detected from this meeting's content against your existing Data Room. As your room grows, cross-meeting intelligence will get richer."
655
+
656
+ ### Cross-Meeting Intelligence Scan
657
+
658
+ After the within-meeting cross-relationship scan, perform cross-meeting pattern detection using the protocols from `references/meeting/cross-meeting-intelligence.md`:
659
+
660
+ #### Convergence Detection
661
+ 1. Extract key topics from the current meeting's metadata (topics inferred from filed segments)
662
+ 2. Grep `topics:` across all `room/meetings/*/metadata.yaml` files
663
+ 3. Any topic in 3+ meetings (including this one) = convergence signal
664
+ 4. Surface each: "Market validation has been raised in 4 of your last 6 meetings. This is becoming a central theme."
665
+
666
+ #### Contradiction Detection
667
+ 1. Pre-filter prior meetings that share topics/speakers with current meeting (via metadata.yaml grep)
668
+ 2. Load summaries from up to 10 matching prior meetings
669
+ 3. Use Larry's reasoning to detect position changes or disagreements across meetings
670
+ 4. HIGH-impact contradictions (financials, strategy, key decisions): surface immediately with specific references
671
+ 5. LOW-impact contradictions (opinions, preferences): note in meeting summary
672
+
673
+ #### Record Findings
674
+ - Add convergence signals and cross-meeting contradictions to the meeting summary (new sections in Step 5)
675
+ - Present the combined cross-relationship + cross-meeting findings to the user in priority order
676
+
677
+ ---
678
+
679
+ ## Post-Pipeline: Proactive Speaker Research
680
+
681
+ After the entire 6-step pipeline is complete, check if any new speaker profiles were created in Step 2.
682
+
683
+ **If `new_profiles` is empty:** Skip this section.
684
+
685
+ **If `new_profiles` has entries:**
686
+
687
+ > "I created profiles for {names}. Let me research them online to fill in context..."
688
+
689
+ For each new speaker profile:
690
+
691
+ 1. Extract venture context from `room/STATE.md` (venture name, domain, stage) or use confirmed meeting context
692
+ 2. Run: `bash scripts/research-speaker <room_dir> <speaker-slug> <display-name> "<project-context>"`
693
+ 3. Present the research findings to the user:
694
+ > "Here's what I found about {name}. Want me to update their profile?"
695
+ 4. **User confirms** before any research content is written to PROFILE.md
696
+ 5. If confirmed, run: `bash scripts/research-speaker <room_dir> <speaker-slug> <display-name> "<project-context>" --apply`
697
+ 6. If declined: Leave profile with `research_status: pending` -- user can research later
698
+
699
+ **Important:** Research runs AFTER the filing pipeline. Never block filing on external API calls. This follows Pitfall 7 from research: proactive research is valuable but must not interrupt the core workflow.
700
+
701
+ ---
702
+
703
+ ## Closing
704
+
705
+ After all steps complete (including optional research):
706
+
707
+ > "Meeting filed. {N} artifacts across {M} sections. {P} speakers identified. {R} new profiles created. Anything else from this conversation?"
708
+
709
+ If cross-relationships were found, add:
710
+ > "I flagged {X} cross-relationships worth reviewing."
711
+
712
+ If cross-meeting intelligence was detected, add:
713
+ > "{Y} convergence signals and {Z} cross-meeting contradictions detected."
714
+
715
+ ---
716
+
717
+ ## Voice Rules
718
+
719
+ - Larry's conversational voice throughout. Short sentences. Direct.
720
+ - Frame gaps as opportunities: "Your competitive-analysis is light -- this meeting could change that."
721
+ - Show reasoning for every classification. Transparency builds trust.
722
+ - Never file silently. Always confirm-then-file.
723
+ - Rejection reasons are valuable -- treat them with respect, not as failures.
724
+ - Challenge gently when a user skips something important: "That decision from Lawrence seems significant. Sure you want to skip it?"