@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,348 @@
1
+ # Meeting Summary Template -- Meeting Archive Package
2
+
3
+ *Used by `file-meeting` to produce the complete meeting archive package.*
4
+
5
+ ---
6
+
7
+ ## Meeting Archive Package
8
+
9
+ Every filed meeting produces a self-contained archive folder with the following files:
10
+
11
+ | File | Location | Purpose |
12
+ |------|----------|---------|
13
+ | Transcript | `room/meetings/YYYY-MM-DD-{name}/transcript.md` | Original transcript (preserved verbatim) |
14
+ | Summary | `room/meetings/YYYY-MM-DD-{name}/summary.md` | Complete narrative + structured breakdown |
15
+ | Speakers | `room/meetings/YYYY-MM-DD-{name}/speakers.md` | Who attended, roles, segment counts, profile links |
16
+ | Decisions | `room/meetings/YYYY-MM-DD-{name}/decisions.md` | Extracted decisions with owners and impact sections |
17
+ | Action Items | `room/meetings/YYYY-MM-DD-{name}/action-items.md` | Tasks with owners and deadlines (only if stated) |
18
+ | Metadata | `room/meetings/YYYY-MM-DD-{name}/metadata.yaml` | Structured searchable metadata for cross-meeting lookup |
19
+ | Audio | `room/meetings/YYYY-MM-DD-{name}/{filename}` | Audio copy (only if --audio input) |
20
+ | Filed-to index | `room/meetings/YYYY-MM-DD-{name}/filed-to/` | Links to where each artifact was filed |
21
+ | Compact reference | `room/meeting-YYYY-MM-DD-{name}.md` | Quick-access at room root |
22
+
23
+ Each meeting folder is a complete knowledge artifact -- browsable, shareable, and self-contained.
24
+
25
+ ---
26
+
27
+ ## Full Summary Template
28
+
29
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/summary.md`
30
+
31
+ ```markdown
32
+ ---
33
+ methodology: file-meeting
34
+ type: meeting-summary
35
+ meeting_date: {YYYY-MM-DD}
36
+ meeting_name: {human-readable name}
37
+ source: {transcript | velma}
38
+ format_detected: {zoom | teams | otter | meet | raw | velma}
39
+ duration_estimate: {minutes, if available}
40
+ speakers:
41
+ - name: {speaker name}
42
+ role: {speaker role}
43
+ segments: {count}
44
+ - name: {speaker name}
45
+ role: {speaker role}
46
+ segments: {count}
47
+ total_segments: {count}
48
+ filed_segments: {count}
49
+ skipped_segments: {count}
50
+ flagged_noise: {count}
51
+ rejected_segments: {count}
52
+ created: {YYYY-MM-DD}
53
+ ---
54
+
55
+ # Meeting: {meeting_name}
56
+
57
+ {Narrative lead paragraph in Larry's voice. 2-4 sentences summarizing what
58
+ happened, what was decided, and what matters most. Written in third person
59
+ with Larry's characteristic directness. NOT a bland summary -- Larry's
60
+ personality comes through.}
61
+
62
+ ## Key Decisions
63
+
64
+ {Numbered list of decisions made during the meeting. Each links to the
65
+ filed artifact. If no decisions were made, state: "No explicit decisions
66
+ were recorded in this meeting."}
67
+
68
+ 1. **{Decision summary}** -- {speaker} ({role})
69
+ Filed to: [[room/{section}/{artifact-name}.md]]
70
+
71
+ ## Insights Filed
72
+
73
+ {Count} insights filed to {count} sections:
74
+
75
+ - **{section}**: {count} insights
76
+ - {Brief insight summary} -- {speaker} ({role})
77
+ - {Brief insight summary} -- {speaker} ({role})
78
+ - **{section}**: {count} insights
79
+ - {Brief insight summary} -- {speaker} ({role})
80
+
81
+ ## Contradictions Detected
82
+
83
+ {List any contradictions found between segments in this meeting, or between
84
+ meeting segments and existing room artifacts. If none: "No contradictions
85
+ detected."}
86
+
87
+ - **{Claim A}** ({speaker A}) vs **{Claim B}** ({speaker B})
88
+ Affects: [{sections}]
89
+ Status: Flagged for review
90
+
91
+ ## Gaps Identified
92
+
93
+ {Questions raised during the meeting that represent knowledge gaps. These
94
+ are filed as gap entries in their target sections.}
95
+
96
+ - **{Gap description}** -- raised by {speaker} ({role})
97
+ Filed to: [[room/{section}/gaps/{artifact-name}.md]]
98
+
99
+ ## Action Items
100
+
101
+ {Extracted action items with owners. NEVER invent deadlines that were not
102
+ explicitly stated in the transcript.}
103
+
104
+ | Owner | Task | Deadline | Context |
105
+ |-------|------|----------|---------|
106
+ | {name} | {task description} | {date or "not specified"} | {why this matters} |
107
+
108
+ ## Rejections
109
+
110
+ {Segments the user rejected during confirm-then-file, with captured reasons.
111
+ If none: "No segments were rejected."}
112
+
113
+ | Segment | Suggested Section | Rejection Reason |
114
+ |---------|-------------------|------------------|
115
+ | {brief text} | {section} | {user's reason} |
116
+
117
+ ## Speakers
118
+
119
+ {Count} speakers identified:
120
+
121
+ | Speaker | Role | Segments | Key Contributions |
122
+ |---------|------|----------|-------------------|
123
+ | {name} | {role} | {count} | {1-sentence summary of their contributions} |
124
+
125
+ ---
126
+
127
+ *Filed by MindrianOS `file-meeting` on {created date}.*
128
+ *Source: {source type} | Format: {format_detected}*
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Compact Reference Template
134
+
135
+ **Location:** `room/meeting-YYYY-MM-DD-{name}.md`
136
+
137
+ ```markdown
138
+ ---
139
+ type: meeting-reference
140
+ meeting_date: {YYYY-MM-DD}
141
+ meeting_name: {name}
142
+ full_summary: meetings/YYYY-MM-DD-{name}/summary.md
143
+ speakers: {count}
144
+ decisions: {count}
145
+ insights: {count}
146
+ actions: {count}
147
+ ---
148
+
149
+ # {meeting_name} ({YYYY-MM-DD})
150
+
151
+ {One-paragraph summary -- same narrative lead from full summary.}
152
+
153
+ **Decisions:** {count} | **Insights:** {count} | **Actions:** {count} | **Speakers:** {count}
154
+
155
+ Full summary: [[meetings/YYYY-MM-DD-{name}/summary.md]]
156
+ ```
157
+
158
+ This file lives at the root of the room directory for quick scanning. Users can `ls room/meeting-*.md` to see all meetings at a glance.
159
+
160
+ ---
161
+
162
+ ## Transcript Storage Template
163
+
164
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/transcript.md`
165
+
166
+ ```markdown
167
+ ---
168
+ type: meeting-transcript
169
+ meeting_date: {YYYY-MM-DD}
170
+ meeting_name: {name}
171
+ source: {transcript | velma}
172
+ format_detected: {format}
173
+ speakers: [{speaker names}]
174
+ total_lines: {count}
175
+ ---
176
+
177
+ # Transcript: {meeting_name}
178
+
179
+ {Original transcript preserved verbatim. No modifications.
180
+ If Velma source, converted from JSON to readable format with
181
+ timestamps and speaker labels.}
182
+ ```
183
+
184
+ The transcript is stored EXACTLY as provided. No cleanup, no rewriting. The original is the source of truth. Larry's classifications and summaries are interpretations -- the transcript is evidence.
185
+
186
+ ---
187
+
188
+ ## Filed-To Index Pattern
189
+
190
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/filed-to/`
191
+
192
+ Each filed artifact gets a reference entry:
193
+
194
+ ```markdown
195
+ # room/meetings/YYYY-MM-DD-{name}/filed-to/{NNN}-{section}.md
196
+
197
+ Filed: [[room/{section}/{artifact-filename}.md]]
198
+ Speaker: {name} ({role})
199
+ Type: {segment_type}
200
+ Confidence: {confidence}
201
+ ```
202
+
203
+ Where `{NNN}` is a zero-padded sequence number matching the filing order (priority-ordered).
204
+
205
+ This creates a bidirectional link: the artifact in the room section has `source: transcript` + `meeting_name` pointing back to the meeting, and the filed-to index points from the meeting to the artifact.
206
+
207
+ ---
208
+
209
+ ## speakers.md Template
210
+
211
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/speakers.md`
212
+
213
+ ```markdown
214
+ ---
215
+ meeting_id: {YYYY-MM-DD-meeting-slug}
216
+ meeting_date: {YYYY-MM-DD}
217
+ ---
218
+ # Speakers: {meeting_name}
219
+
220
+ | Speaker | Role | Segments | Profile |
221
+ |---------|------|----------|---------|
222
+ | {name} | {role} | {count} | [[team/{role-plural}/{slug}/PROFILE.md]] |
223
+ ```
224
+
225
+ One row per confirmed speaker. Profile links use the canonical slug from create-speaker-profile. Segment counts reflect the number of classified (non-noise) segments attributed to that speaker.
226
+
227
+ ---
228
+
229
+ ## decisions.md Template
230
+
231
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/decisions.md`
232
+
233
+ ```markdown
234
+ ---
235
+ meeting_id: {YYYY-MM-DD-meeting-slug}
236
+ ---
237
+ # Decisions: {meeting_name}
238
+
239
+ 1. **{Decision summary}** -- {speaker} ({role})
240
+ Filed to: [[{section}/{artifact-filename}.md]]
241
+ Impact: {cascade_sections from the decision artifact}
242
+
243
+ 2. **{Decision summary}** -- {speaker} ({role})
244
+ Filed to: [[{section}/{artifact-filename}.md]]
245
+ Impact: {cascade_sections}
246
+ ```
247
+
248
+ Extract from segments classified as `decision` in Step 3. Each entry links to the filed artifact and lists impact sections (cascade). If no decisions were made, write: "No explicit decisions were recorded in this meeting."
249
+
250
+ ---
251
+
252
+ ## action-items.md Template
253
+
254
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/action-items.md`
255
+
256
+ ```markdown
257
+ ---
258
+ meeting_id: {YYYY-MM-DD-meeting-slug}
259
+ ---
260
+ # Action Items: {meeting_name}
261
+
262
+ | Owner | Task | Deadline | Status |
263
+ |-------|------|----------|--------|
264
+ | {name} | {task description} | {date or "not specified"} | open |
265
+ ```
266
+
267
+ Extract from segments classified as `action-item`. 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."
268
+
269
+ ---
270
+
271
+ ## metadata.yaml Template
272
+
273
+ **Location:** `room/meetings/YYYY-MM-DD-{name}/metadata.yaml`
274
+
275
+ ```yaml
276
+ meeting_id: {YYYY-MM-DD-meeting-slug}
277
+ meeting_name: {human-readable meeting name}
278
+ meeting_date: {YYYY-MM-DD}
279
+ source: {transcript | velma}
280
+ speakers:
281
+ - name: {full name}
282
+ role: {role}
283
+ slug: {speaker-slug matching profile directory}
284
+ topics:
285
+ - {dominant topic 1}
286
+ - {dominant topic 2}
287
+ decisions_count: {N}
288
+ insights_count: {N}
289
+ action_items_count: {N}
290
+ sections_touched:
291
+ - {section-name}
292
+ - {section-name}
293
+ has_audio: {true | false}
294
+ ```
295
+
296
+ Created LAST in the archive after all other files are written (counts depend on completed processing). Topics are inferred from dominant themes of filed segments. Speaker slugs MUST match directory names from create-speaker-profile.
297
+
298
+ ### Searchability
299
+
300
+ metadata.yaml is designed for grep-based cross-meeting lookups without indexing:
301
+
302
+ - **Find meetings by speaker:** `grep -rl '{speaker-slug}' room/meetings/*/metadata.yaml`
303
+ - **Find meetings by topic:** `grep -rl '{topic}' room/meetings/*/metadata.yaml`
304
+ - **Find meetings with decisions:** `grep -l 'decisions_count: [1-9]' room/meetings/*/metadata.yaml`
305
+ - **Find meetings by date range:** Scan `meeting_date` fields across metadata.yaml files
306
+
307
+ This enables Larry to answer questions like "What did Lawrence say about pricing?" or "Which meetings had action items?" by scanning metadata.yaml files directly.
308
+
309
+ ---
310
+
311
+ ## Summary Sections -- Required vs Optional
312
+
313
+ | Section | Required | When to Include |
314
+ |---------|----------|-----------------|
315
+ | Key Decisions | YES | Always -- state "none recorded" if empty |
316
+ | Insights Filed | YES | Always -- show counts by section |
317
+ | Contradictions Detected | YES | Always -- state "none detected" if empty |
318
+ | Gaps Identified | YES | Always -- state "none identified" if empty |
319
+ | Action Items | YES | Always -- state "no action items" if empty |
320
+ | Rejections | YES | Always -- state "none rejected" if empty |
321
+ | Speakers | YES | Always -- list all identified speakers |
322
+
323
+ Every section is always present. This makes the summary format consistent and machine-parseable. Empty sections explicitly state their emptiness rather than being omitted.
324
+
325
+ ---
326
+
327
+ ## Meeting Name Convention
328
+
329
+ The `{name}` in paths is derived from the meeting name:
330
+
331
+ 1. Lowercase
332
+ 2. Replace spaces with hyphens
333
+ 3. Remove special characters
334
+ 4. Truncate to 50 characters
335
+
336
+ Examples:
337
+ - "Board Strategy Session Q1" -> `board-strategy-session-q1`
338
+ - "Mentor Check-in with Lawrence" -> `mentor-check-in-with-lawrence`
339
+ - "Investor Due Diligence Call" -> `investor-due-diligence-call`
340
+
341
+ ---
342
+
343
+ ## Cross-Reference
344
+
345
+ - Artifact format: `references/meeting/artifact-template.md`
346
+ - Segment classification: `references/meeting/segment-classification.md`
347
+ - Speaker profiles: `references/meeting/speaker-profile-template.md`
348
+ - Section routing: `references/meeting/section-mapping.md`
@@ -0,0 +1,226 @@
1
+ # Transcript Format Patterns -- Speaker Identification Reference
2
+
3
+ *Used by `file-meeting` to detect transcript format and extract speaker turns.*
4
+
5
+ ---
6
+
7
+ ## Format Detection Order
8
+
9
+ Larry tries each format in order. First match wins. If no format matches, treat as **Raw Paste**.
10
+
11
+ | Priority | Format | Detection Pattern | Confidence |
12
+ |----------|--------|-------------------|------------|
13
+ | 1 | Velma JSON | Valid JSON with `speaker_id` field | HIGH |
14
+ | 2 | Zoom | Lines matching `HH:MM:SS Speaker Name: text` | HIGH |
15
+ | 3 | Teams | Lines matching `[HH:MM:SS] Speaker Name` or `Speaker Name HH:MM:SS` | HIGH |
16
+ | 4 | Otter.ai | Lines matching `Speaker Name HH:MM` (double-space) | MEDIUM |
17
+ | 5 | Google Meet | Lines matching `Speaker Name HH:MM:SS` (no colon after name) | MEDIUM |
18
+ | 6 | Raw Paste | No timestamps, no speaker labels detected | LOW |
19
+
20
+ ---
21
+
22
+ ## Zoom Format
23
+
24
+ **Pattern:** `HH:MM:SS Speaker Name: text`
25
+
26
+ ```
27
+ 00:02:15 Sarah Chen: I think we should focus on the enterprise segment first.
28
+ 00:02:45 David Park: Agreed. The SMB numbers don't support the unit economics yet.
29
+ ```
30
+
31
+ **Regex:**
32
+ ```
33
+ ^(\d{2}:\d{2}:\d{2})\s+([^:]+?):\s+(.+)$
34
+ ```
35
+
36
+ - Group 1: Timestamp (`HH:MM:SS`)
37
+ - Group 2: Speaker name (trimmed)
38
+ - Group 3: Spoken text
39
+
40
+ **Edge cases:**
41
+ - Speaker names may contain spaces ("Sarah Chen")
42
+ - Colons in speech text are captured in Group 3 (greedy after first `:`)
43
+ - Some Zoom exports omit seconds: `00:02 Speaker Name: text` -- use fallback regex `^(\d{2}:\d{2}(?::\d{2})?)\s+([^:]+?):\s+(.+)$`
44
+
45
+ ---
46
+
47
+ ## Microsoft Teams Format
48
+
49
+ **Pattern A:** `[HH:MM:SS] Speaker Name`
50
+ **Pattern B:** `Speaker Name HH:MM:SS`
51
+
52
+ ```
53
+ [00:02:15] Sarah Chen
54
+ I think we should focus on the enterprise segment first.
55
+
56
+ [00:02:45] David Park
57
+ Agreed. The SMB numbers don't support the unit economics yet.
58
+ ```
59
+
60
+ Or:
61
+
62
+ ```
63
+ Sarah Chen 00:02:15
64
+ I think we should focus on the enterprise segment first.
65
+
66
+ David Park 00:02:45
67
+ Agreed. The SMB numbers don't support the unit economics yet.
68
+ ```
69
+
70
+ **Regex (Pattern A):**
71
+ ```
72
+ ^\[(\d{2}:\d{2}:\d{2})\]\s+(.+)$
73
+ ```
74
+
75
+ **Regex (Pattern B):**
76
+ ```
77
+ ^(.+?)\s+(\d{2}:\d{2}:\d{2})$
78
+ ```
79
+
80
+ - Teams format separates the speaker line from the text line
81
+ - Text follows on the next line(s) until the next speaker marker
82
+ - Blank lines often separate speaker turns
83
+
84
+ ---
85
+
86
+ ## Otter.ai Format
87
+
88
+ **Pattern:** `Speaker Name HH:MM` (double-space separator)
89
+
90
+ ```
91
+ Sarah Chen 0:02
92
+ I think we should focus on the enterprise segment first.
93
+
94
+ David Park 0:02
95
+ Agreed. The SMB numbers don't support the unit economics yet.
96
+ ```
97
+
98
+ **Regex:**
99
+ ```
100
+ ^(.+?)\s{2,}(\d+:\d{2})$
101
+ ```
102
+
103
+ - Group 1: Speaker name
104
+ - Group 2: Timestamp (`M:SS` or `MM:SS` -- Otter uses minutes, not hours)
105
+ - Double-space (2+) separates name from timestamp
106
+ - Text follows on subsequent lines until next speaker marker
107
+
108
+ **Edge cases:**
109
+ - Otter sometimes labels unknown speakers as "Speaker 1", "Speaker 2"
110
+ - Timestamps are minutes:seconds, not hours:minutes:seconds
111
+
112
+ ---
113
+
114
+ ## Google Meet Format
115
+
116
+ **Pattern:** `Speaker Name HH:MM:SS`
117
+
118
+ ```
119
+ Sarah Chen 00:02:15
120
+ I think we should focus on the enterprise segment first.
121
+
122
+ David Park 00:02:45
123
+ Agreed. The SMB numbers don't support the unit economics yet.
124
+ ```
125
+
126
+ **Regex:**
127
+ ```
128
+ ^(.+?)\s+(\d{2}:\d{2}:\d{2})$
129
+ ```
130
+
131
+ - Similar to Teams Pattern B but Google Meet always uses `HH:MM:SS`
132
+ - Disambiguation from Teams: check if ALL timestamps have HH:MM:SS format (Meet) vs mixed (Teams)
133
+
134
+ **Disambiguation rule:** If the transcript has `[` brackets around timestamps, it is Teams. If no brackets and timestamps are at end of line, check consistency -- Meet uses `HH:MM:SS` uniformly.
135
+
136
+ ---
137
+
138
+ ## Raw Paste (No Labels)
139
+
140
+ **Detection:** No lines match any of the above patterns in the first 20 lines.
141
+
142
+ ```
143
+ I think we should focus on the enterprise segment first.
144
+ Agreed. The SMB numbers don't support the unit economics yet.
145
+ What about the partnership with Acme Corp?
146
+ That fell through last week. We need a new distribution strategy.
147
+ ```
148
+
149
+ **Handling:**
150
+ 1. Larry CANNOT reliably identify speakers from raw text alone
151
+ 2. **Ask the user:** "I don't see speaker labels in this transcript. Can you tell me who was in the meeting? I'll do my best to attribute statements."
152
+ 3. If user provides speaker list, Larry uses contextual clues (first person references, expertise signals, role language) to attribute -- with LOW confidence on all attributions
153
+ 4. All segments from raw paste get `confidence: 0.3` maximum unless user confirms attribution
154
+
155
+ ---
156
+
157
+ ## Velma Output (JSON)
158
+
159
+ **Detection:** File is valid JSON with `speaker_id` field in entries.
160
+
161
+ ```json
162
+ {
163
+ "meeting_id": "mtg_abc123",
164
+ "duration_seconds": 3600,
165
+ "segments": [
166
+ {
167
+ "speaker_id": "spk_001",
168
+ "speaker_name": "Sarah Chen",
169
+ "text": "I think we should focus on the enterprise segment first.",
170
+ "start_time": 135.2,
171
+ "end_time": 141.8,
172
+ "emotions": ["confident", "analytical"],
173
+ "confidence": 0.94
174
+ },
175
+ {
176
+ "speaker_id": "spk_002",
177
+ "speaker_name": "David Park",
178
+ "text": "Agreed. The SMB numbers don't support the unit economics yet.",
179
+ "start_time": 165.0,
180
+ "end_time": 172.3,
181
+ "emotions": ["agreement", "concern"],
182
+ "confidence": 0.91
183
+ }
184
+ ]
185
+ }
186
+ ```
187
+
188
+ **Schema:**
189
+ - `speaker_id`: Velma's internal speaker identifier (stable across the meeting)
190
+ - `speaker_name`: Resolved name (may be "Unknown Speaker 1" if Velma can't identify)
191
+ - `text`: Transcribed speech
192
+ - `start_time` / `end_time`: Seconds from meeting start (float)
193
+ - `emotions[]`: Velma's emotion detection (20+ categories)
194
+ - `confidence`: Velma's transcription confidence (0.0-1.0)
195
+
196
+ **Advantages over text formats:**
197
+ - Pre-segmented speaker turns (no regex needed)
198
+ - Emotion metadata enriches segment classification
199
+ - High confidence scores from Velma's diarization
200
+ - `source: velma` in artifact frontmatter (vs `source: transcript`)
201
+
202
+ ---
203
+
204
+ ## Ambiguity Resolution
205
+
206
+ When Larry cannot determine the format:
207
+
208
+ 1. **Count pattern matches** across the first 20 lines for each format regex
209
+ 2. **Highest match count wins** -- format with most matching lines
210
+ 3. **Tie-breaking:** Prefer more specific formats (Zoom > Meet > Teams > Otter > Raw)
211
+ 4. **If still ambiguous:** Ask the user: "This looks like it could be [Format A] or [Format B]. Which tool recorded this meeting?"
212
+ 5. **Log the detection** in meeting summary: `format_detected: zoom` (or whichever)
213
+
214
+ ---
215
+
216
+ ## Speaker Name Normalization
217
+
218
+ After extraction, normalize speaker names:
219
+
220
+ 1. **Trim whitespace** from both ends
221
+ 2. **Collapse internal whitespace** to single spaces
222
+ 3. **Title case** if all-caps or all-lowercase input
223
+ 4. **Deduplicate:** "Sarah Chen" and "Sarah" in the same meeting likely refer to the same person -- ask user to confirm
224
+ 5. **Map to existing profiles:** Check `room/team/` for existing speaker profiles by name match
225
+
226
+ Speaker names become folder names in `room/team/{role-plural}/{firstname-lastname}/` -- keep them filesystem-safe (lowercase, hyphens, no special characters).
@@ -0,0 +1,135 @@
1
+ # Jobs To Be Done -- Framework Reference
2
+
3
+ *Loaded on demand by `/mos:analyze-needs`*
4
+
5
+ ## Framework Overview
6
+
7
+ Jobs To Be Done discovers what progress customers are really trying to make. Customers do not buy products -- they hire them. And they fire them when something better shows up. The opportunity lives in the struggling moment: the instant someone realizes the old way is not working anymore. Based on Clayton Christensen's JTBD framework, applied through Larry's customer-need-finder teaching style.
8
+
9
+ The framework applies beyond product markets: a graduate student's "job" is producing original research that advances their field. A career-pivoter's "job" is translating existing expertise into a new professional identity. Frame the analysis around whatever domain the user is exploring.
10
+
11
+ The operating principle: focus on outcomes, not features. Opportunity lives in unmet progress. Most companies obsess over features -- the easy part. The hard part is the struggling moment. That is where innovation begins.
12
+
13
+ ## The Voice (This Methodology)
14
+
15
+ Larry in customer-need-finder mode. Conversational, provocative, concise. Warm but demanding. Your job is to pull the real job out of them -- they will start with features and you must redirect to progress.
16
+
17
+ Signature phrases:
18
+ - "People don't want a quarter-inch drill. They want a quarter-inch hole. But actually -- they want the shelf hung."
19
+ - "Very simply... customers don't buy products. They hire them."
20
+ - "Here's what everyone misses: the future doesn't arrive incrementally."
21
+ - "That's not a problem -- that's a category."
22
+ - "You've given me the product. What's the job it's hired to do?"
23
+ - "That's the functional job. What's the emotional job underneath it?"
24
+ - "The struggling moment is where innovation lives."
25
+
26
+ Anti-patterns to catch:
27
+ - Accepting features as jobs -- "They want a faster dashboard" is not a job. "They need to make a confident decision in under 30 seconds" is a job.
28
+ - Skipping emotional and social dimensions -- if you only have the functional job, you are halfway there
29
+ - Forgetting "do nothing" as a competitor -- the biggest competitor is often inaction
30
+ - Confusing buyer with user -- who decides? Who pays? Who suffers?
31
+ - Staying abstract -- "Describe the last time this happened. What did they do? What did they feel?"
32
+ - Listing all phases upfront -- walk them through, one question at a time
33
+ - Never teach the framework abstractly -- apply it to their actual situation
34
+
35
+ ## Phases
36
+
37
+ ### Phase 1: Customer Identification (turns 1-3)
38
+
39
+ ONE question at a time. Do not rush.
40
+
41
+ 1. "Who is your customer? Not the segment -- a real person. Describe them."
42
+ 2. "What are they trying to accomplish? Not what they want to buy -- what progress are they making?"
43
+ 3. "When did they first realize the old way wasn't working?"
44
+
45
+ ### Phase 2: Job Statement (turns 3-5)
46
+
47
+ 4. Break the job into steps: Define, Locate, Prepare, Execute, Monitor, Modify, Conclude.
48
+ 5. For each step: "What does success look like here? What makes it hard?"
49
+ 6. Craft the job statement: "When {situation}, I want to {motivation}, so I can {outcome}."
50
+
51
+ ### Phase 3: Importance vs. Satisfaction Scoring (turns 5-7)
52
+
53
+ 7. For each job step, rate:
54
+ - How important is getting this right? (1-10)
55
+ - How satisfied are they with current solutions? (1-10)
56
+ 8. **Opportunity = High Importance + Low Satisfaction.** That is the gap.
57
+
58
+ ### Phase 4: Blocked Steps Analysis (turns 7-9)
59
+
60
+ 9. "Which steps have the widest gap between importance and satisfaction?"
61
+ 10. "What's blocking progress? Is it functional, emotional, or social?"
62
+ - **Functional**: The practical task will not complete
63
+ - **Emotional**: They feel frustrated, anxious, incompetent
64
+ - **Social**: They look bad, feel judged, cannot explain the choice
65
+ 11. "That's not a problem -- that's a category. What specific moment makes them give up?"
66
+
67
+ ### Phase 5: Opportunity Mapping (turns 9+)
68
+
69
+ 12. Cluster the blocked steps into opportunity spaces.
70
+ 13. For each: "Who else has this job? How big is this?"
71
+ 14. Identify highest-leverage opportunities where functional, emotional, and social jobs align.
72
+
73
+ ## Artifact Template
74
+
75
+ ```markdown
76
+ ---
77
+ methodology: analyze-needs
78
+ created: {date}
79
+ depth: {quick|deep}
80
+ problem_type: {type}
81
+ venture_stage: {stage}
82
+ room_section: market-analysis
83
+ ---
84
+
85
+ # Jobs To Be Done -- {Topic}
86
+
87
+ ## Customer
88
+ {Specific person description -- not a segment}
89
+
90
+ ## Job Statement
91
+ When {situation}, I want to {motivation}, so I can {outcome}.
92
+
93
+ ## Job Steps
94
+
95
+ | Step | Description | Importance (1-10) | Satisfaction (1-10) | Gap |
96
+ |------|-------------|-------------------|---------------------|-----|
97
+ | Define | {what they do} | {n} | {n} | {importance - satisfaction} |
98
+ | Locate | {what they do} | {n} | {n} | {gap} |
99
+ | Prepare | {what they do} | {n} | {n} | {gap} |
100
+ | Execute | {what they do} | {n} | {n} | {gap} |
101
+ | Monitor | {what they do} | {n} | {n} | {gap} |
102
+ | Modify | {what they do} | {n} | {n} | {gap} |
103
+ | Conclude | {what they do} | {n} | {n} | {gap} |
104
+
105
+ ## Blocked Steps
106
+
107
+ | Step | Blocker Type | Specific Moment | Current Workaround |
108
+ |------|-------------|-----------------|-------------------|
109
+ | {step} | Functional / Emotional / Social | {the moment they give up} | {what they do instead} |
110
+
111
+ ## Opportunity Clusters
112
+
113
+ | Cluster | Blocked Steps | Job Dimensions | Size Estimate |
114
+ |---------|--------------|----------------|---------------|
115
+ | {name} | {steps} | Functional + Emotional + Social | {who else has this job} |
116
+
117
+ ## Homework
118
+ Interview one real customer this week. Don't ask what they want -- ask what they were trying to accomplish the last time they used your product. Record the struggling moment. Bring it back.
119
+ ```
120
+
121
+ ## Default Room
122
+
123
+ market-analysis
124
+
125
+ ## Cross-References
126
+
127
+ - **explore-domains**: If JTBD analysis reveals a new domain territory
128
+ - **validate**: If opportunity clusters need evidence validation
129
+ - **lean-canvas**: If JTBD insights feed into a business model
130
+ - **find-bottlenecks**: If blocked steps point to system-level constraints
131
+
132
+ ## Quick Pass vs Deep Dive
133
+
134
+ - **Quick (10-15 min)**: Customer + job statement + top 3 blocked steps. Good when user already understands their customer and needs to articulate the job.
135
+ - **Deep (30-45 min)**: Full five-phase arc, complete job steps mapping, importance/satisfaction scoring, opportunity clustering. Best for early-stage ventures where the customer need is not yet validated.