@mindrian_os/cli 2.0.0-beta.3 → 2.0.0-beta.31

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 (1829) hide show
  1. package/.claude-plugin/plugin.json +21 -0
  2. package/.mcp.json +14 -0
  3. package/CHANGELOG.md +467 -0
  4. package/agents/analogy-query-fetcher.md +119 -0
  5. package/agents/brain-query.md +91 -0
  6. package/agents/competitor-watch-fetcher.md +94 -0
  7. package/agents/framework-runner.md +258 -0
  8. package/agents/grading.md +216 -0
  9. package/agents/grant-reviewer.md +191 -0
  10. package/agents/investor.md +141 -0
  11. package/agents/larry-extended.md +215 -0
  12. package/agents/meeting-perspective-extractor.md +94 -0
  13. package/agents/opportunity-scanner.md +105 -0
  14. package/agents/persona-analyst.md +201 -0
  15. package/agents/research.md +103 -0
  16. package/agents/reverse-salient-agent.md +42 -0
  17. package/agents/vault-section-reviewer.md +107 -0
  18. package/assets/banner-showcase.html +537 -0
  19. package/assets/fonts/BebasNeue-Regular.ttf +0 -0
  20. package/assets/fonts/Inter-Bold.ttf +0 -0
  21. package/assets/fonts/Inter-Regular.ttf +0 -0
  22. package/assets/logo.svg +10 -0
  23. package/bin/local-chain-recommender.cjs +256 -0
  24. package/bin/mindrian-brain-mcp-client.cjs +319 -0
  25. package/bin/mindrian-mcp-server.cjs +445 -0
  26. package/bin/mindrian-mcp-shim.cjs +100 -0
  27. package/bin/mindrian-tools.cjs +784 -0
  28. package/commands/act.md +529 -0
  29. package/commands/admin.md +439 -0
  30. package/commands/agentshield.md +49 -0
  31. package/commands/analyze-needs.md +78 -0
  32. package/commands/analyze-systems.md +73 -0
  33. package/commands/analyze-timing.md +98 -0
  34. package/commands/auto-explore.md +85 -0
  35. package/commands/beautiful-question.md +76 -0
  36. package/commands/bono.md +152 -0
  37. package/commands/brain-derive.md +137 -0
  38. package/commands/build-knowledge.md +121 -0
  39. package/commands/build-thesis.md +94 -0
  40. package/commands/causal.md +269 -0
  41. package/commands/challenge-assumptions.md +78 -0
  42. package/commands/compare-ventures.md +117 -0
  43. package/commands/correct-reference-now.md +88 -0
  44. package/commands/dashboard.md +144 -0
  45. package/commands/deck.md +117 -0
  46. package/commands/deep-grade.md +214 -0
  47. package/commands/diagnose.md +131 -0
  48. package/commands/diagnostics.md +195 -0
  49. package/commands/dial-memory-refresh.md +113 -0
  50. package/commands/diffusion.md +129 -0
  51. package/commands/discover.md +221 -0
  52. package/commands/doctor.md +271 -0
  53. package/commands/dogfood-flush.md +130 -0
  54. package/commands/dominant-designs.md +76 -0
  55. package/commands/eureka.md +315 -0
  56. package/commands/explain-decision.md +135 -0
  57. package/commands/explore-domains.md +78 -0
  58. package/commands/explore-futures.md +67 -0
  59. package/commands/explore-opportunity.md +172 -0
  60. package/commands/explore-trends.md +78 -0
  61. package/commands/export.md +128 -0
  62. package/commands/feynman-timeline-refresh.md +102 -0
  63. package/commands/file-meeting.md +1195 -0
  64. package/commands/find-analogies.md +369 -0
  65. package/commands/find-bottlenecks.md +108 -0
  66. package/commands/find-connections.md +111 -0
  67. package/commands/funding.md +114 -0
  68. package/commands/futures.md +128 -0
  69. package/commands/grade-grant.md +297 -0
  70. package/commands/grade.md +257 -0
  71. package/commands/graph.md +218 -0
  72. package/commands/hat-briefing.md +163 -0
  73. package/commands/heal.md +72 -0
  74. package/commands/help.md +176 -0
  75. package/commands/hmi-status.md +75 -0
  76. package/commands/ignite.md +229 -0
  77. package/commands/ingest-methodology.md +128 -0
  78. package/commands/intel-pipeline.md +133 -0
  79. package/commands/jtbd.md +262 -0
  80. package/commands/leadership.md +113 -0
  81. package/commands/lean-canvas.md +74 -0
  82. package/commands/macro-trends.md +88 -0
  83. package/commands/map-unknowns.md +76 -0
  84. package/commands/memory-cortex-reach.md +79 -0
  85. package/commands/memory.md +213 -0
  86. package/commands/models.md +200 -0
  87. package/commands/mos-reason.md +489 -0
  88. package/commands/mos.md +162 -0
  89. package/commands/mullins.md +155 -0
  90. package/commands/mva-brief.md +86 -0
  91. package/commands/mva-option.md +119 -0
  92. package/commands/mva-report.md +76 -0
  93. package/commands/new-project.md +633 -0
  94. package/commands/new-surface.md +116 -0
  95. package/commands/onboard.md +489 -0
  96. package/commands/operator.md +168 -0
  97. package/commands/opportunities.md +177 -0
  98. package/commands/organize.md +74 -0
  99. package/commands/persona.md +276 -0
  100. package/commands/pipeline.md +167 -0
  101. package/commands/present.md +125 -0
  102. package/commands/publish.md +227 -0
  103. package/commands/pws-brain.md +154 -0
  104. package/commands/qualify-opportunity.md +113 -0
  105. package/commands/query.md +70 -0
  106. package/commands/radar.md +110 -0
  107. package/commands/reanalyze.md +124 -0
  108. package/commands/research.md +467 -0
  109. package/commands/room.md +385 -0
  110. package/commands/rooms.md +682 -0
  111. package/commands/root-cause.md +77 -0
  112. package/commands/rs-experts.md +153 -0
  113. package/commands/rs-explain.md +134 -0
  114. package/commands/rs-fetch.md +119 -0
  115. package/commands/rs-thesis.md +131 -0
  116. package/commands/scenario-plan.md +80 -0
  117. package/commands/scheduled-tasks.md +308 -0
  118. package/commands/score-innovation.md +78 -0
  119. package/commands/scout.md +379 -0
  120. package/commands/setup.md +658 -0
  121. package/commands/show.md +71 -0
  122. package/commands/skill.md +108 -0
  123. package/commands/snapshot.md +179 -0
  124. package/commands/speakers.md +118 -0
  125. package/commands/splash.md +55 -0
  126. package/commands/stance.md +91 -0
  127. package/commands/status.md +109 -0
  128. package/commands/structure-argument.md +82 -0
  129. package/commands/suggest-next.md +141 -0
  130. package/commands/systems-thinking.md +224 -0
  131. package/commands/think-hats.md +86 -0
  132. package/commands/trending-to-absurd.md +151 -0
  133. package/commands/update.md +256 -0
  134. package/commands/user-needs.md +77 -0
  135. package/commands/validate.md +77 -0
  136. package/commands/value-proposition.md +116 -0
  137. package/commands/vault.md +330 -0
  138. package/commands/visualize.md +71 -0
  139. package/commands/whitespace.md +541 -0
  140. package/commands/wiki.md +96 -0
  141. package/data/ROOM.md +47 -0
  142. package/data/brain-census.generated.json +2617 -0
  143. package/data/brain-orchestration-projection.json +4973 -0
  144. package/data/brain-packet-schema.json +545 -0
  145. package/data/brain-surface-contract.json +32 -0
  146. package/data/capability-ledger.json +391 -0
  147. package/data/capability-map-registry.json +23 -0
  148. package/data/command-registry.json +2433 -0
  149. package/data/connector-coverage-ledger.json +1618 -0
  150. package/data/connector-out-of-spine-allowlist.json +71 -0
  151. package/data/connector-registry.json +3637 -0
  152. package/data/corpus-stats-source.json +11 -0
  153. package/data/corpus-stats.generated.json +10 -0
  154. package/data/cross-domain-analogues.json +15 -0
  155. package/data/deck-aliases.json +6 -0
  156. package/data/deck-styles.json +85 -0
  157. package/data/deployment-surfaces.json +69 -0
  158. package/data/dispatch-framework-map.json +18 -0
  159. package/data/doctor-modules.json +206 -0
  160. package/data/dual-graph-health-baseline.json +12 -0
  161. package/data/eureka-critic-tags.json +32 -0
  162. package/data/first-reward-surfaces.json +66 -0
  163. package/data/first-touch-surfaces.json +60 -0
  164. package/data/flagship-floor-set.json +37 -0
  165. package/data/framework-names.json +121 -0
  166. package/data/grant-rubric-fixtures/early-stage-pre-seed.json +18 -0
  167. package/data/grant-rubric-fixtures/early-stage-round-a.json +18 -0
  168. package/data/grant-rubric-fixtures/early-stage-seed.json +18 -0
  169. package/data/grant-rubric-fixtures/hybrid-seed-incentive.json +18 -0
  170. package/data/grant-rubric-fixtures/rd-fund.json +18 -0
  171. package/data/grant-rubric-fixtures/regional-innovation-incubators.json +18 -0
  172. package/data/grant-rubric-fixtures/technology-incubators.json +18 -0
  173. package/data/grant-rubric-fixtures/tnufa.json +167 -0
  174. package/data/grant-rubric-schema.json +33 -0
  175. package/data/harness-fixtures/converged-room/.context/ROOM.md +13 -0
  176. package/data/harness-fixtures/converged-room/.intelligence/ROOM.md +13 -0
  177. package/data/harness-fixtures/converged-room/.snapshots/ROOM.md +13 -0
  178. package/data/harness-fixtures/converged-room/MINTO.md +19 -0
  179. package/data/harness-fixtures/converged-room/STATE.md +73 -0
  180. package/data/harness-fixtures/converged-room/USER.md +23 -0
  181. package/data/harness-fixtures/converged-room/assets/ROOM.md +13 -0
  182. package/data/harness-fixtures/converged-room/business-model/CONTEXT.md +32 -0
  183. package/data/harness-fixtures/converged-room/business-model/ROOM.md +36 -0
  184. package/data/harness-fixtures/converged-room/competitive-analysis/CONTEXT.md +33 -0
  185. package/data/harness-fixtures/converged-room/competitive-analysis/ROOM.md +35 -0
  186. package/data/harness-fixtures/converged-room/financial-model/CONTEXT.md +30 -0
  187. package/data/harness-fixtures/converged-room/financial-model/ROOM.md +35 -0
  188. package/data/harness-fixtures/converged-room/funding/CONTEXT.md +41 -0
  189. package/data/harness-fixtures/converged-room/funding/ROOM.md +35 -0
  190. package/data/harness-fixtures/converged-room/legal-ip/CONTEXT.md +30 -0
  191. package/data/harness-fixtures/converged-room/legal-ip/ROOM.md +35 -0
  192. package/data/harness-fixtures/converged-room/market-analysis/CONTEXT.md +32 -0
  193. package/data/harness-fixtures/converged-room/market-analysis/ROOM.md +35 -0
  194. package/data/harness-fixtures/converged-room/opportunity-bank/CONTEXT.md +39 -0
  195. package/data/harness-fixtures/converged-room/opportunity-bank/ROOM.md +36 -0
  196. package/data/harness-fixtures/converged-room/problem-definition/CONTEXT.md +32 -0
  197. package/data/harness-fixtures/converged-room/problem-definition/ROOM.md +36 -0
  198. package/data/harness-fixtures/converged-room/references/ROOM.md +13 -0
  199. package/data/harness-fixtures/converged-room/references/SECTION-SCHEMA.md +213 -0
  200. package/data/harness-fixtures/converged-room/references/SUB-SCHEMAS.md +91 -0
  201. package/data/harness-fixtures/converged-room/solution-design/CONTEXT.md +36 -0
  202. package/data/harness-fixtures/converged-room/solution-design/ROOM.md +36 -0
  203. package/data/harness-fixtures/converged-room/strategy/CONTEXT.md +35 -0
  204. package/data/harness-fixtures/converged-room/strategy/ROOM.md +35 -0
  205. package/data/harness-fixtures/converged-room/team/ROOM.md +13 -0
  206. package/data/harness-fixtures/converged-room/team-execution/CONTEXT.md +36 -0
  207. package/data/harness-fixtures/converged-room/team-execution/ROOM.md +35 -0
  208. package/data/harness-manifest.json +74 -0
  209. package/data/harness-policies/CONTEXT.md +55 -0
  210. package/data/harness-policies/_schema.json +42 -0
  211. package/data/harness-policies/contract-parity-larry.json +63 -0
  212. package/data/harness-policies/gate-card-fire.json +13 -0
  213. package/data/harness-policies/gate-graph-derive-health.json +13 -0
  214. package/data/harness-policies/gate-shape-declaration.json +13 -0
  215. package/data/harness-policies/gate-tool-honesty.json +13 -0
  216. package/data/harness-policies/gate-worktree-hygiene.json +13 -0
  217. package/data/harness-policies/memory-write-policy.json +28 -0
  218. package/data/harness-policies/registry-drift.json +13 -0
  219. package/data/harness-policies/release-payload-ceiling.json +13 -0
  220. package/data/harness-policies/voice-backend-noun-free.json +13 -0
  221. package/data/harness-policies/voice-fork-as-card.json +13 -0
  222. package/data/harness-policies/voice-glyph-present.json +13 -0
  223. package/data/harness-policies/voice-hyphens-only.json +13 -0
  224. package/data/help-groups.json +236 -0
  225. package/data/hitl-shape-backfill.json +777 -0
  226. package/data/hitl-shape-declaration-fixtures/invalid-bad-shape.json +5 -0
  227. package/data/hitl-shape-declaration-fixtures/invalid-missing-why.json +4 -0
  228. package/data/hitl-shape-declaration-fixtures/invalid-ranker-contradiction.json +6 -0
  229. package/data/hitl-shape-declaration-fixtures/invalid-skill-gap.json +3 -0
  230. package/data/hitl-shape-declaration-fixtures/valid-multi-stage.json +7 -0
  231. package/data/hitl-shape-declaration-fixtures/valid-single-shape.json +5 -0
  232. package/data/hitl-shape-declaration-fixtures/valid-skill-exempt.json +5 -0
  233. package/data/hitl-shape-declaration-schema.json +34 -0
  234. package/data/hitl-stages-fixtures/bono.json +10 -0
  235. package/data/hitl-stages-fixtures/pipeline-1.json +9 -0
  236. package/data/hitl-stages-fixtures/pipeline-2.json +9 -0
  237. package/data/hitl-stages-fixtures/pipeline-3.json +10 -0
  238. package/data/hitl-stages-fixtures/research.json +10 -0
  239. package/data/hitl-stages-fixtures/rs-convergence.json +10 -0
  240. package/data/hitl-stages-fixtures/rs-family.json +11 -0
  241. package/data/hitl-stages-fixtures/rs-reverse-salient.json +10 -0
  242. package/data/hitl-stages-fixtures/trending-to-absurd.json +11 -0
  243. package/data/hitl-stages-schema.json +26 -0
  244. package/data/mcp-tool-connectors.json +464 -0
  245. package/data/mva-agent-prompts.json +31 -0
  246. package/data/mva-deck-template.html +15 -0
  247. package/data/mva-heuristic-keywords.json +35 -0
  248. package/data/orchestration-command-ledger.json +576 -0
  249. package/data/orchestration-unwired-allowlist.json +6 -0
  250. package/data/portfolio-ahp-matrix.json +16 -0
  251. package/data/publish-needs.json +76 -0
  252. package/data/render-coverage-registry.json +1152 -0
  253. package/data/research-sources.json +58 -0
  254. package/data/roadmap-type-chains.json +28 -0
  255. package/data/room-blueprints.json +156 -0
  256. package/data/subagent-dispatch-grants.json +150 -0
  257. package/hooks/hooks.json +493 -0
  258. package/hooks/run-hook.cmd +64 -0
  259. package/lib/__init__.py +0 -0
  260. package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
  261. package/lib/agents/auto-explore-agent.cjs +1163 -0
  262. package/lib/agents/mva/brain-classic-traps.cjs +55 -0
  263. package/lib/agents/mva/brain-cross-domain.cjs +79 -0
  264. package/lib/agents/mva/brain-similar-ventures.cjs +93 -0
  265. package/lib/agents/mva/dashboard-graph-neighborhood.cjs +72 -0
  266. package/lib/agents/mva/index.cjs +42 -0
  267. package/lib/agents/mva/six-hats-red-black.cjs +137 -0
  268. package/lib/agents/mva/tavily-funding-scan.cjs +147 -0
  269. package/lib/agents/mva/test-all-six-agents.cjs +467 -0
  270. package/lib/agents/reverse-salient-agent.cjs +757 -0
  271. package/lib/agents/tension-hook-agent.cjs +586 -0
  272. package/lib/brain/ROOM.md +44 -0
  273. package/lib/brain/chain-recommender.cjs +784 -0
  274. package/lib/brain/curation-batch.cjs +519 -0
  275. package/lib/brain/framework-chain-slice.cjs +252 -0
  276. package/lib/brain/hypergraph-event-schema.cjs +184 -0
  277. package/lib/chat/chat-context.js +185 -0
  278. package/lib/chat/chat-panel.js +721 -0
  279. package/lib/chat/fabric-chat.cjs +288 -0
  280. package/lib/chat/generative-tools.js +219 -0
  281. package/lib/conversation/ROOM.md +39 -0
  282. package/lib/conversation/classifier-rules.json +38 -0
  283. package/lib/conversation/classifier.cjs +264 -0
  284. package/lib/conversation/operator-epistemic-cap.test.cjs +156 -0
  285. package/lib/conversation/operator.cjs +492 -0
  286. package/lib/conversation/operator.test.cjs +160 -0
  287. package/lib/copy/115-spec-strings.cjs +55 -0
  288. package/lib/core/__init__.py +0 -0
  289. package/lib/core/__nav-stub.cjs +14 -0
  290. package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
  291. package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
  292. package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
  293. package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
  294. package/lib/core/__pycache__/rs_corpus_exclude.cpython-312.pyc +0 -0
  295. package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
  296. package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
  297. package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
  298. package/lib/core/abstraction-gate.cjs +133 -0
  299. package/lib/core/act-jtbd-blurb.cjs +231 -0
  300. package/lib/core/artifact-id.cjs +148 -0
  301. package/lib/core/asset-ops.cjs +151 -0
  302. package/lib/core/auto-commit-throttle.cjs +129 -0
  303. package/lib/core/bearer-token.cjs +199 -0
  304. package/lib/core/behavioral/observation-schema.cjs +86 -0
  305. package/lib/core/bono/cell-fanout.cjs +305 -0
  306. package/lib/core/bono/debate-composition.cjs +495 -0
  307. package/lib/core/bono/hat-governance.cjs +367 -0
  308. package/lib/core/bono/persona-research.cjs +288 -0
  309. package/lib/core/bono/reviewer-governance.cjs +331 -0
  310. package/lib/core/brain-client.cjs +2365 -0
  311. package/lib/core/brain-derivation-prompts.cjs +331 -0
  312. package/lib/core/brain-derivation-queue.cjs +535 -0
  313. package/lib/core/brain-derivation.cjs +740 -0
  314. package/lib/core/brain-md-schema.cjs +528 -0
  315. package/lib/core/brain-md-staleness.cjs +357 -0
  316. package/lib/core/brain-response-sanitize.cjs +396 -0
  317. package/lib/core/breakthrough/canary.cjs +134 -0
  318. package/lib/core/breakthrough/canary.test.cjs +136 -0
  319. package/lib/core/breakthrough/detectors.cjs +359 -0
  320. package/lib/core/breakthrough/detectors.test.cjs +333 -0
  321. package/lib/core/breakthrough/ethics-fence.cjs +129 -0
  322. package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
  323. package/lib/core/breakthrough/resurfacing.cjs +150 -0
  324. package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
  325. package/lib/core/breakthrough/review-queue.cjs +168 -0
  326. package/lib/core/breakthrough/review-queue.test.cjs +160 -0
  327. package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
  328. package/lib/core/breakthrough/scanner.cjs +435 -0
  329. package/lib/core/breakthrough/scanner.test.cjs +267 -0
  330. package/lib/core/breakthrough/schema.cjs +180 -0
  331. package/lib/core/breakthrough/schema.test.cjs +256 -0
  332. package/lib/core/breakthrough/scoring.cjs +293 -0
  333. package/lib/core/breakthrough/scoring.test.cjs +423 -0
  334. package/lib/core/breakthrough/verb-dispatch.cjs +230 -0
  335. package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
  336. package/lib/core/breakthrough/voice-scaffold.cjs +249 -0
  337. package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
  338. package/lib/core/bridge-writer.cjs +477 -0
  339. package/lib/core/cache-prune.cjs +314 -0
  340. package/lib/core/card-fire-gate.cjs +107 -0
  341. package/lib/core/card-fire-sidechannel.cjs +518 -0
  342. package/lib/core/chain-executor.cjs +939 -0
  343. package/lib/core/chain-retry.cjs +214 -0
  344. package/lib/core/chain-step-dispatcher.cjs +397 -0
  345. package/lib/core/chat-context-builder.cjs +253 -0
  346. package/lib/core/check-plugin-enabled.cjs +145 -0
  347. package/lib/core/close-loop-writer.cjs +492 -0
  348. package/lib/core/command-registration-check.cjs +246 -0
  349. package/lib/core/correlation-label-index.cjs +230 -0
  350. package/lib/core/correlation.cjs +112 -0
  351. package/lib/core/coverage-monitor.cjs +183 -0
  352. package/lib/core/coverage-rollup.cjs +232 -0
  353. package/lib/core/cross-room-aggregator.cjs +1127 -0
  354. package/lib/core/cross-room-store.cjs +292 -0
  355. package/lib/core/cross-room-triggers.cjs +222 -0
  356. package/lib/core/daily-briefing.cjs +438 -0
  357. package/lib/core/decision-axes.cjs +178 -0
  358. package/lib/core/decision-capture.cjs +618 -0
  359. package/lib/core/deck-design-rules.cjs +211 -0
  360. package/lib/core/deep-links.cjs +82 -0
  361. package/lib/core/directive-envelope.cjs +217 -0
  362. package/lib/core/directive-envelope.test.cjs +225 -0
  363. package/lib/core/dispatch-optimizer.cjs +354 -0
  364. package/lib/core/doc-text-extractor.cjs +133 -0
  365. package/lib/core/doctor/capability-ledger-module.cjs +170 -0
  366. package/lib/core/doctor/card-fire-health-module.cjs +159 -0
  367. package/lib/core/doctor/cascade-rooms-active-module.cjs +127 -0
  368. package/lib/core/doctor/cascade-rooms-module.cjs +184 -0
  369. package/lib/core/doctor/class-m-brain-smoke.cjs +479 -0
  370. package/lib/core/doctor/class-m-brain-smoke.test.cjs +448 -0
  371. package/lib/core/doctor/class-s-eureka-smoke.cjs +380 -0
  372. package/lib/core/doctor/deployment-surfaces-module.cjs +408 -0
  373. package/lib/core/doctor/deprecated-usage-module.cjs +155 -0
  374. package/lib/core/doctor/eureka-fts-health-module.cjs +236 -0
  375. package/lib/core/doctor/graph-derive-heal-retrofit-module.cjs +148 -0
  376. package/lib/core/doctor/graph-derive-health-module.cjs +486 -0
  377. package/lib/core/doctor/install-incomplete-module.cjs +320 -0
  378. package/lib/core/doctor/install-state-module.cjs +503 -0
  379. package/lib/core/doctor/mcp-surface-module.cjs +369 -0
  380. package/lib/core/doctor/mode-select-checkpoint-module.cjs +113 -0
  381. package/lib/core/doctor/plugin-enabled-state-module.cjs +86 -0
  382. package/lib/core/doctor/room-graph-density-module.cjs +181 -0
  383. package/lib/core/doctor/room-md-module.cjs +198 -0
  384. package/lib/core/doctor/shared.cjs +555 -0
  385. package/lib/core/doctor/stale-first-touch-copy-module.cjs +83 -0
  386. package/lib/core/doctor/statusline-visibility-module.cjs +295 -0
  387. package/lib/core/doctor/ui-compliance-module.cjs +223 -0
  388. package/lib/core/doctor/umbilical-module.cjs +486 -0
  389. package/lib/core/doctor/verify-surface-module.cjs +82 -0
  390. package/lib/core/doctor/voice-style-log-module.cjs +146 -0
  391. package/lib/core/domain-insight-sweep.cjs +224 -0
  392. package/lib/core/drift-baseline.cjs +362 -0
  393. package/lib/core/drift-runtime-reachability.cjs +283 -0
  394. package/lib/core/dual-path-detector.cjs +84 -0
  395. package/lib/core/dual-path-detector.test.cjs +334 -0
  396. package/lib/core/enrichment-queue.cjs +636 -0
  397. package/lib/core/eureka/ahp-weights.cjs +232 -0
  398. package/lib/core/eureka/analogy-fitness.cjs +326 -0
  399. package/lib/core/eureka/compression-meter.cjs +165 -0
  400. package/lib/core/eureka/embedding-classifier.cjs +226 -0
  401. package/lib/core/eureka/embedding-spine.cjs +563 -0
  402. package/lib/core/eureka/entity-classifier.cjs +232 -0
  403. package/lib/core/eureka/entity-extractor.cjs +356 -0
  404. package/lib/core/eureka/eureka-enable.cjs +228 -0
  405. package/lib/core/eureka/eureka-offer.cjs +225 -0
  406. package/lib/core/eureka/eureka-reach-runner.cjs +430 -0
  407. package/lib/core/eureka/explore-chain.cjs +834 -0
  408. package/lib/core/eureka/explored-artifact.cjs +456 -0
  409. package/lib/core/eureka/fts-index-lifecycle.cjs +265 -0
  410. package/lib/core/eureka/grade-grant-examine.cjs +544 -0
  411. package/lib/core/eureka/grade-grant.cjs +596 -0
  412. package/lib/core/eureka/hybrid-retrieve.cjs +256 -0
  413. package/lib/core/eureka/lateral-engine-adapter.cjs +118 -0
  414. package/lib/core/eureka/lexical-overlap.cjs +98 -0
  415. package/lib/core/eureka/online-pattern-query.cjs +142 -0
  416. package/lib/core/eureka/opportunity-harvest.cjs +752 -0
  417. package/lib/core/eureka/opportunity-statement.cjs +519 -0
  418. package/lib/core/eureka/portfolio-dimensions.cjs +255 -0
  419. package/lib/core/eureka/qualify-opportunity.cjs +607 -0
  420. package/lib/core/eureka/reasoning-mode.cjs +481 -0
  421. package/lib/core/eureka/report-html.cjs +368 -0
  422. package/lib/core/eureka/research-filing.cjs +547 -0
  423. package/lib/core/eureka/room-native-substrate.cjs +343 -0
  424. package/lib/core/eureka/tail-quadrant.cjs +177 -0
  425. package/lib/core/eureka/tri-modal-index.cjs +564 -0
  426. package/lib/core/eureka/vector-store.cjs +414 -0
  427. package/lib/core/eureka-critic.cjs +733 -0
  428. package/lib/core/eureka-deps-resolver.cjs +179 -0
  429. package/lib/core/expert-genesis.cjs +437 -0
  430. package/lib/core/expert-library.cjs +303 -0
  431. package/lib/core/exports-log.cjs +79 -0
  432. package/lib/core/feynman/ROOM.md +25 -0
  433. package/lib/core/feynman/dial-memory-renderer.cjs +279 -0
  434. package/lib/core/feynman/dial-memory-runner.cjs +173 -0
  435. package/lib/core/feynman/feynman-seed-writer.cjs +187 -0
  436. package/lib/core/feynman/timeline-renderer.cjs +197 -0
  437. package/lib/core/feynman/timeline-runner.cjs +281 -0
  438. package/lib/core/feynman-minto-invariants.cjs +609 -0
  439. package/lib/core/findings-wirer.cjs +360 -0
  440. package/lib/core/first-touch-version-stamper.cjs +113 -0
  441. package/lib/core/folder-memory-async.cjs +424 -0
  442. package/lib/core/folder-memory-shared.cjs +890 -0
  443. package/lib/core/folder-memory.cjs +546 -0
  444. package/lib/core/framework-chain-composer.cjs +583 -0
  445. package/lib/core/frontmatter-schemas.cjs +468 -0
  446. package/lib/core/fusion-router.cjs +540 -0
  447. package/lib/core/futures/causal-cue.cjs +91 -0
  448. package/lib/core/futures/orchestrator.cjs +1391 -0
  449. package/lib/core/futures/subsystem-render.cjs +164 -0
  450. package/lib/core/gate-relevance.cjs +278 -0
  451. package/lib/core/git-ops.cjs +141 -0
  452. package/lib/core/graph-backfill.cjs +562 -0
  453. package/lib/core/graph-candidate-producer.cjs +235 -0
  454. package/lib/core/graph-derivation.cjs +546 -0
  455. package/lib/core/graph-derive-classifier.cjs +352 -0
  456. package/lib/core/graph-ops.cjs +274 -0
  457. package/lib/core/graph-refine-loop.cjs +194 -0
  458. package/lib/core/graph-self-heal.cjs +289 -0
  459. package/lib/core/greeting-intent-detector.cjs +201 -0
  460. package/lib/core/grill-engine.cjs +459 -0
  461. package/lib/core/hat-persistence.cjs +274 -0
  462. package/lib/core/hsi-engine.cjs +439 -0
  463. package/lib/core/hsi-lsa.cjs +246 -0
  464. package/lib/core/hsi-spectral.cjs +554 -0
  465. package/lib/core/hsi-to-graph.test.cjs +168 -0
  466. package/lib/core/icm-forest.cjs +703 -0
  467. package/lib/core/ignite-branch-gate.cjs +66 -0
  468. package/lib/core/index.cjs +60 -0
  469. package/lib/core/insight-sensors.cjs +1000 -0
  470. package/lib/core/install-state.cjs +242 -0
  471. package/lib/core/integration-registry.cjs +232 -0
  472. package/lib/core/intel-pipeline.cjs +545 -0
  473. package/lib/core/intelligence-cascade.cjs +852 -0
  474. package/lib/core/issue-tree.cjs +269 -0
  475. package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
  476. package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
  477. package/lib/core/lazygraph-ops.cjs +1453 -0
  478. package/lib/core/lens-engine.cjs +434 -0
  479. package/lib/core/leverage-scan.cjs +218 -0
  480. package/lib/core/llm-name-suggester.cjs +194 -0
  481. package/lib/core/llm-name-suggester.test.cjs +132 -0
  482. package/lib/core/lru-cache.cjs +139 -0
  483. package/lib/core/mcp-dep-heal.cjs +475 -0
  484. package/lib/core/mcp-dep-heal.test.cjs +253 -0
  485. package/lib/core/mcp-profiles.cjs +185 -0
  486. package/lib/core/meeting-ops.cjs +54 -0
  487. package/lib/core/memory/governance-candidate-raiser.cjs +205 -0
  488. package/lib/core/memory/governance-candidate.cjs +95 -0
  489. package/lib/core/memory/reconcile-memory-runner.cjs +653 -0
  490. package/lib/core/memory-ops.cjs +641 -0
  491. package/lib/core/meter/gate-density-reader.cjs +112 -0
  492. package/lib/core/meter/transfer-reader.cjs +276 -0
  493. package/lib/core/meter/two-gauge.cjs +245 -0
  494. package/lib/core/methodology-ingest.cjs +346 -0
  495. package/lib/core/metrics/larryreach-loop-health.cjs +142 -0
  496. package/lib/core/migration-snapshot.cjs +287 -0
  497. package/lib/core/migration-snapshot.test.cjs +174 -0
  498. package/lib/core/migrations/ROOM.md +33 -0
  499. package/lib/core/migrations/phase-109-nodes-provenance.cjs +400 -0
  500. package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
  501. package/lib/core/migrations/phase-160-nodes-bitemporal.cjs +168 -0
  502. package/lib/core/migrations/phase-160-nodes-bitemporal.test.cjs +140 -0
  503. package/lib/core/migrations/phase-162-section-nodes.cjs +156 -0
  504. package/lib/core/migrations/phase-222-ranker-weights.cjs +62 -0
  505. package/lib/core/migrations/phase-224-edge-review-status.cjs +87 -0
  506. package/lib/core/mindrian-brain-shim.test.cjs +221 -0
  507. package/lib/core/mode-select-sidechannel.cjs +259 -0
  508. package/lib/core/model-profiles.cjs +246 -0
  509. package/lib/core/mullins-scaffold.cjs +258 -0
  510. package/lib/core/mullins-scaffold.test.cjs +128 -0
  511. package/lib/core/mva-agent-contract.cjs +170 -0
  512. package/lib/core/mva-agent-contract.test.cjs +169 -0
  513. package/lib/core/mva-budget.cjs +75 -0
  514. package/lib/core/mva-budget.test.cjs +68 -0
  515. package/lib/core/mva-classifier.cjs +392 -0
  516. package/lib/core/mva-classifier.test.cjs +248 -0
  517. package/lib/core/mva-deck-builder.cjs +452 -0
  518. package/lib/core/mva-deck-builder.test.cjs +287 -0
  519. package/lib/core/mva-detect.smoke.test.cjs +209 -0
  520. package/lib/core/mva-dispatcher.cjs +110 -0
  521. package/lib/core/mva-dispatcher.test.cjs +216 -0
  522. package/lib/core/mva-option-router.cjs +414 -0
  523. package/lib/core/mva-option-router.test.cjs +483 -0
  524. package/lib/core/mva-orchestrator.cjs +365 -0
  525. package/lib/core/mva-orchestrator.test.cjs +916 -0
  526. package/lib/core/mva-progressive-renderer.cjs +194 -0
  527. package/lib/core/mva-progressive-renderer.test.cjs +157 -0
  528. package/lib/core/mva-rule-linter.cjs +458 -0
  529. package/lib/core/mva-rule-linter.test.cjs +484 -0
  530. package/lib/core/mva-state.cjs +159 -0
  531. package/lib/core/mva-telemetry.cjs +58 -0
  532. package/lib/core/mva-telemetry.test.cjs +196 -0
  533. package/lib/core/mva-vercel-deploy.cjs +168 -0
  534. package/lib/core/mva-vercel-deploy.test.cjs +239 -0
  535. package/lib/core/nav-dial.cjs +440 -0
  536. package/lib/core/navigation/ROOM.md +15 -0
  537. package/lib/core/navigation/abstraction-claim.cjs +185 -0
  538. package/lib/core/navigation/calibration-gate.cjs +284 -0
  539. package/lib/core/navigation/calibration-log.cjs +141 -0
  540. package/lib/core/navigation/confirm-node.cjs +73 -0
  541. package/lib/core/navigation/dashboard-helpers.cjs +145 -0
  542. package/lib/core/navigation/edges.cjs +1150 -0
  543. package/lib/core/navigation/evidence-claim.cjs +186 -0
  544. package/lib/core/navigation/explanation.cjs +48 -0
  545. package/lib/core/navigation/file-evidence-readback.cjs +242 -0
  546. package/lib/core/navigation/focus.cjs +155 -0
  547. package/lib/core/navigation/get-domains-for-trends.cjs +277 -0
  548. package/lib/core/navigation/governance.cjs +101 -0
  549. package/lib/core/navigation/grant-rubric.cjs +218 -0
  550. package/lib/core/navigation/graph-export.cjs +325 -0
  551. package/lib/core/navigation/ingestion.cjs +109 -0
  552. package/lib/core/navigation/insights-stale.test.cjs +127 -0
  553. package/lib/core/navigation/insights.cjs +574 -0
  554. package/lib/core/navigation/lens-nodes.cjs +315 -0
  555. package/lib/core/navigation/memory-artifacts.cjs +437 -0
  556. package/lib/core/navigation/memory-cortex-packet.cjs +274 -0
  557. package/lib/core/navigation/memory-events.cjs +811 -0
  558. package/lib/core/navigation/neighborhood.cjs +79 -0
  559. package/lib/core/navigation/packet.cjs +420 -0
  560. package/lib/core/navigation/planning-artifacts.cjs +219 -0
  561. package/lib/core/navigation/projections.cjs +295 -0
  562. package/lib/core/navigation/ranker-weights.cjs +133 -0
  563. package/lib/core/navigation/reasoning-write.cjs +211 -0
  564. package/lib/core/navigation/reconcile-guard.cjs +98 -0
  565. package/lib/core/navigation/reified-claim.cjs +287 -0
  566. package/lib/core/navigation/research-preflight.cjs +156 -0
  567. package/lib/core/navigation/room-birth.cjs +1213 -0
  568. package/lib/core/navigation/room-context.cjs +380 -0
  569. package/lib/core/navigation/room-home.cjs +142 -0
  570. package/lib/core/navigation/spine-events.cjs +548 -0
  571. package/lib/core/navigation/synthetic-expert.cjs +177 -0
  572. package/lib/core/navigation/transitions.cjs +253 -0
  573. package/lib/core/navigation/typed-claim.cjs +208 -0
  574. package/lib/core/navigation/typed-domain.cjs +249 -0
  575. package/lib/core/navigation/typed-entity.cjs +236 -0
  576. package/lib/core/navigation/typed-frame.cjs +257 -0
  577. package/lib/core/navigation/typed-open-question.cjs +130 -0
  578. package/lib/core/navigation/typed-opportunity.cjs +418 -0
  579. package/lib/core/navigation-engine-offer.cjs +776 -0
  580. package/lib/core/navigation-engine-shared.cjs +256 -0
  581. package/lib/core/navigation-engine.cjs +1696 -0
  582. package/lib/core/navigation.cjs +686 -0
  583. package/lib/core/nl-graph-queries.cjs +164 -0
  584. package/lib/core/node-insert-epistemic.test.cjs +212 -0
  585. package/lib/core/node-insert-overrides.test.cjs +273 -0
  586. package/lib/core/node-insert.cjs +274 -0
  587. package/lib/core/npm-cli-resolve.cjs +151 -0
  588. package/lib/core/npm-cli-resolve.test.cjs +153 -0
  589. package/lib/core/npm-install-lock.cjs +326 -0
  590. package/lib/core/npm-install-lock.test.cjs +379 -0
  591. package/lib/core/numeric/sklearn-stopwords-v1.json +325 -0
  592. package/lib/core/numeric/svd.cjs +377 -0
  593. package/lib/core/numeric/tfidf.cjs +241 -0
  594. package/lib/core/offer-presenter.cjs +406 -0
  595. package/lib/core/opportunity-extractor.cjs +183 -0
  596. package/lib/core/opportunity-ops.cjs +1423 -0
  597. package/lib/core/orchestration-candidate-lift.cjs +284 -0
  598. package/lib/core/part8-egress-guard.cjs +536 -0
  599. package/lib/core/part8-egress-guard.test.cjs +194 -0
  600. package/lib/core/part8-egress-ontology.cjs +174 -0
  601. package/lib/core/part8-egress-ontology.test.cjs +133 -0
  602. package/lib/core/persona-ops.cjs +692 -0
  603. package/lib/core/persona-override.cjs +327 -0
  604. package/lib/core/persona-taxonomy.cjs +328 -0
  605. package/lib/core/pinecone-inference.cjs +176 -0
  606. package/lib/core/pitch-feedback-schemas.cjs +303 -0
  607. package/lib/core/planning/artifact-brain-packet.cjs +212 -0
  608. package/lib/core/planning/reconcile-runner.cjs +347 -0
  609. package/lib/core/platform-gates.cjs +120 -0
  610. package/lib/core/platform.cjs +257 -0
  611. package/lib/core/proactive-intelligence.cjs +528 -0
  612. package/lib/core/problem-type-router.cjs +315 -0
  613. package/lib/core/publish-needs-default-lane.cjs +110 -0
  614. package/lib/core/ralph-loop-gate.cjs +48 -0
  615. package/lib/core/reader/ab-harness.cjs +177 -0
  616. package/lib/core/reader/decide-projection-reader.cjs +358 -0
  617. package/lib/core/reasoning-ops.cjs +639 -0
  618. package/lib/core/recipe-maps.cjs +442 -0
  619. package/lib/core/recovery/case-file.cjs +358 -0
  620. package/lib/core/recovery/controller.cjs +1008 -0
  621. package/lib/core/recovery/dispatcher.cjs +533 -0
  622. package/lib/core/recovery/result-semantics.cjs +488 -0
  623. package/lib/core/recovery/stage-envelope.cjs +338 -0
  624. package/lib/core/refusal-messaging.cjs +569 -0
  625. package/lib/core/refusal-messaging.test.cjs +220 -0
  626. package/lib/core/repo-version.cjs +134 -0
  627. package/lib/core/research-cache.cjs +165 -0
  628. package/lib/core/research-cache.test.cjs +137 -0
  629. package/lib/core/research-context-extractor.cjs +283 -0
  630. package/lib/core/research-corpus.cjs +814 -0
  631. package/lib/core/research-corpus.test.cjs +280 -0
  632. package/lib/core/research-filing-selector.cjs +189 -0
  633. package/lib/core/resolve-active-room.cjs +602 -0
  634. package/lib/core/resolve-brain-key.cjs +273 -0
  635. package/lib/core/resolve-umbilical-target.cjs +288 -0
  636. package/lib/core/resolve-vercel-key.cjs +107 -0
  637. package/lib/core/resolve-vercel-key.test.cjs +137 -0
  638. package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
  639. package/lib/core/room-auto-create.cjs +318 -0
  640. package/lib/core/room-auto-create.test.cjs +198 -0
  641. package/lib/core/room-chooser.cjs +244 -0
  642. package/lib/core/room-classifier-strict-mode.cjs +235 -0
  643. package/lib/core/room-db.cjs +348 -0
  644. package/lib/core/room-discard-cascade.cjs +238 -0
  645. package/lib/core/room-discard-cascade.test.cjs +135 -0
  646. package/lib/core/room-name-validator.cjs +132 -0
  647. package/lib/core/room-name-validator.test.cjs +156 -0
  648. package/lib/core/room-naming-selector.cjs +357 -0
  649. package/lib/core/room-naming-selector.test.cjs +277 -0
  650. package/lib/core/room-open.cjs +259 -0
  651. package/lib/core/room-ops-async.cjs +92 -0
  652. package/lib/core/room-ops-shared.cjs +64 -0
  653. package/lib/core/room-ops-sync.cjs +70 -0
  654. package/lib/core/room-ops.cjs +32 -0
  655. package/lib/core/room-receipt-emit.cjs +63 -0
  656. package/lib/core/room-root.cjs +93 -0
  657. package/lib/core/room-skeleton-scaffold.cjs +669 -0
  658. package/lib/core/room-skeleton-scaffold.test.cjs +296 -0
  659. package/lib/core/room-type-detector.cjs +386 -0
  660. package/lib/core/rs-backend-dispatch.cjs +64 -0
  661. package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
  662. package/lib/core/rs-brain-substrate.cjs +570 -0
  663. package/lib/core/rs-breakthrough-scorer.cjs +255 -0
  664. package/lib/core/rs-canon-violations.cjs +82 -0
  665. package/lib/core/rs-chain-feeder.cjs +381 -0
  666. package/lib/core/rs-commercial-assessor.cjs +280 -0
  667. package/lib/core/rs-corpus-quality-gate.cjs +62 -0
  668. package/lib/core/rs-differential-scorer.cjs +629 -0
  669. package/lib/core/rs-domain-analyzer.cjs +385 -0
  670. package/lib/core/rs-egress-prompts.cjs +113 -0
  671. package/lib/core/rs-egress-telemetry.cjs +225 -0
  672. package/lib/core/rs-egress-violations.cjs +53 -0
  673. package/lib/core/rs-engine.cjs +597 -0
  674. package/lib/core/rs-expert-brain-projection.cjs +280 -0
  675. package/lib/core/rs-expert-mapper.cjs +467 -0
  676. package/lib/core/rs-fetcher-academic.cjs +697 -0
  677. package/lib/core/rs-fetcher-experts.cjs +314 -0
  678. package/lib/core/rs-fetcher-industry.cjs +731 -0
  679. package/lib/core/rs-fetcher-patents.cjs +564 -0
  680. package/lib/core/rs-innovation-classifier.cjs +194 -0
  681. package/lib/core/rs-math.cjs +458 -0
  682. package/lib/core/rs-mind-map.cjs +656 -0
  683. package/lib/core/rs-neo4j-writer.cjs +388 -0
  684. package/lib/core/rs-nl-to-query.cjs +435 -0
  685. package/lib/core/rs-pinecone-bridge.cjs +344 -0
  686. package/lib/core/rs-preprocessor.cjs +350 -0
  687. package/lib/core/rs-query-matrix.cjs +316 -0
  688. package/lib/core/rs-query-to-text.cjs +438 -0
  689. package/lib/core/rs-sqlite-mirror.cjs +495 -0
  690. package/lib/core/rs-thesis-generator.cjs +188 -0
  691. package/lib/core/rs_cache.py +635 -0
  692. package/lib/core/rs_corpus.py +562 -0
  693. package/lib/core/rs_corpus_exclude.py +62 -0
  694. package/lib/core/rs_hybrid.py +589 -0
  695. package/lib/core/rs_math.py +287 -0
  696. package/lib/core/rs_rooms.py +196 -0
  697. package/lib/core/salient-governance.cjs +315 -0
  698. package/lib/core/scheduled-scanner.cjs +658 -0
  699. package/lib/core/scratchpad-ops.cjs +316 -0
  700. package/lib/core/seam-liveness.cjs +191 -0
  701. package/lib/core/seam-liveness.test.cjs +177 -0
  702. package/lib/core/section-8-trace-schema.cjs +138 -0
  703. package/lib/core/section-registry.cjs +167 -0
  704. package/lib/core/security/agentshield-adapters.test.cjs +104 -0
  705. package/lib/core/security/agentshield-run.cjs +343 -0
  706. package/lib/core/security/agentshield-scanner.cjs +314 -0
  707. package/lib/core/security/agentshield-scanner.test.cjs +259 -0
  708. package/lib/core/sensors/hat-scoping-table.cjs +103 -0
  709. package/lib/core/sensors/sensor-circularity.cjs +278 -0
  710. package/lib/core/sensors/sensor-content-relevance.cjs +407 -0
  711. package/lib/core/sensors/sensor-diffusion-adoption.cjs +230 -0
  712. package/lib/core/sensors/sensor-eureka.cjs +208 -0
  713. package/lib/core/sensors/sensor-expert-skill.cjs +293 -0
  714. package/lib/core/sensors/sensor-external-fact.cjs +184 -0
  715. package/lib/core/sensors/sensor-gate-approach.cjs +104 -0
  716. package/lib/core/sensors/sensor-jtbd-reweight.cjs +141 -0
  717. package/lib/core/sensors/sensor-lagging-component.cjs +115 -0
  718. package/lib/core/sensors/sensor-memory-cortex.cjs +111 -0
  719. package/lib/core/sensors/sensor-methodology-decision.cjs +131 -0
  720. package/lib/core/sensors/sensor-opportunity-harvest.cjs +195 -0
  721. package/lib/core/sensors/sensor-perspective-lock.cjs +174 -0
  722. package/lib/core/sensors/sensor-priority.cjs +183 -0
  723. package/lib/core/sensors/sensor-recency.cjs +151 -0
  724. package/lib/core/sensors/sensor-roadmap-type.cjs +421 -0
  725. package/lib/core/sensors/sensor-room-pick.cjs +238 -0
  726. package/lib/core/sensors/sensor-show-share.cjs +215 -0
  727. package/lib/core/sensors/sensor-temporal-blindness.cjs +123 -0
  728. package/lib/core/sensors/sensor-types.cjs +294 -0
  729. package/lib/core/sensors/sensor-url-ingest.cjs +234 -0
  730. package/lib/core/session-binding.cjs +208 -0
  731. package/lib/core/session-presence.cjs +404 -0
  732. package/lib/core/session-register.cjs +138 -0
  733. package/lib/core/session-state.cjs +144 -0
  734. package/lib/core/shallow-doc-parser.cjs +353 -0
  735. package/lib/core/shallow-doc-parser.test.cjs +226 -0
  736. package/lib/core/skill-activation-router.cjs +284 -0
  737. package/lib/core/skillopt-schemas.cjs +509 -0
  738. package/lib/core/stale-copy-scanner.cjs +190 -0
  739. package/lib/core/stance-state.cjs +153 -0
  740. package/lib/core/state-aware-router.cjs +78 -0
  741. package/lib/core/state-ops.cjs +80 -0
  742. package/lib/core/state-version.cjs +350 -0
  743. package/lib/core/statusline-cache.cjs +266 -0
  744. package/lib/core/statusline-liveness-gate.cjs +105 -0
  745. package/lib/core/surface-fence.cjs +127 -0
  746. package/lib/core/synthesizers/comparison-matrix.cjs +82 -0
  747. package/lib/core/synthesizers/convergence-map.cjs +107 -0
  748. package/lib/core/synthesizers/domain-hierarchy.cjs +138 -0
  749. package/lib/core/synthesizers/source-comparison.cjs +56 -0
  750. package/lib/core/synthesizers/tension-map.cjs +119 -0
  751. package/lib/core/synthetic-expert-behavior-gate.cjs +99 -0
  752. package/lib/core/synthetic-expert-construction-gate.cjs +170 -0
  753. package/lib/core/telemetry/schema.cjs +168 -0
  754. package/lib/core/telemetry/schema.test.cjs +124 -0
  755. package/lib/core/telemetry/validator.cjs +200 -0
  756. package/lib/core/telemetry/validator.test.cjs +188 -0
  757. package/lib/core/telemetry/writer.cjs +141 -0
  758. package/lib/core/telemetry/writer.test.cjs +331 -0
  759. package/lib/core/temporal/date-sync-gate.cjs +256 -0
  760. package/lib/core/temporal/date-sync-gate.test.cjs +191 -0
  761. package/lib/core/temporal/dual-stamp.cjs +172 -0
  762. package/lib/core/temporal/dual-stamp.test.cjs +172 -0
  763. package/lib/core/temporal/point-in-time.cjs +76 -0
  764. package/lib/core/temporal/point-in-time.test.cjs +169 -0
  765. package/lib/core/temporal/recency-decay.cjs +119 -0
  766. package/lib/core/temporal/recency-decay.test.cjs +140 -0
  767. package/lib/core/temporal/reference-now.cjs +281 -0
  768. package/lib/core/temporal/reference-now.test.cjs +225 -0
  769. package/lib/core/temporal/resolve-relative-time.cjs +116 -0
  770. package/lib/core/temporal/resolve-relative-time.test.cjs +138 -0
  771. package/lib/core/temporal/supersession.cjs +250 -0
  772. package/lib/core/temporal/supersession.test.cjs +103 -0
  773. package/lib/core/terminal-capability.cjs +88 -0
  774. package/lib/core/token-estimator.cjs +348 -0
  775. package/lib/core/tone-filter.cjs +147 -0
  776. package/lib/core/trending-to-absurd/orchestrator.cjs +341 -0
  777. package/lib/core/trending-to-absurd/stage7-roadmap.cjs +317 -0
  778. package/lib/core/trending-to-absurd/variance.cjs +169 -0
  779. package/lib/core/unknowns/bandit.cjs +332 -0
  780. package/lib/core/unknowns/corpus-adapter.cjs +327 -0
  781. package/lib/core/unknowns/dsp.cjs +356 -0
  782. package/lib/core/unknowns/edge-writer.cjs +211 -0
  783. package/lib/core/unknowns/iface.cjs +212 -0
  784. package/lib/core/unknowns/orchestrator.cjs +375 -0
  785. package/lib/core/unknowns/pattern-miner.cjs +214 -0
  786. package/lib/core/unknowns/rumsfeld-matrix.cjs +155 -0
  787. package/lib/core/unknowns/verdict.cjs +254 -0
  788. package/lib/core/update-path.cjs +57 -0
  789. package/lib/core/url-ingest.cjs +568 -0
  790. package/lib/core/user-archetype.cjs +284 -0
  791. package/lib/core/user-md-ops.cjs +578 -0
  792. package/lib/core/venture-shape-nudge.cjs +178 -0
  793. package/lib/core/venture-shape-nudge.test.cjs +266 -0
  794. package/lib/core/verb-reach-affinity.cjs +299 -0
  795. package/lib/core/visual-ops.cjs +692 -0
  796. package/lib/core/voice-transition-detector.cjs +125 -0
  797. package/lib/core/watched-sources.cjs +237 -0
  798. package/lib/core/write-lock.cjs +149 -0
  799. package/lib/graph/canvas-graph.js +467 -0
  800. package/lib/graph/constellation-config.cjs +299 -0
  801. package/lib/graph/graph-detail-panel.js +165 -0
  802. package/lib/hmi/ROOM.md +47 -0
  803. package/lib/hmi/across-session-memory.cjs +669 -0
  804. package/lib/hmi/agentshield-drift-gate.cjs +142 -0
  805. package/lib/hmi/brain-review-packet.cjs +221 -0
  806. package/lib/hmi/cortex-reach-adapter.cjs +271 -0
  807. package/lib/hmi/cross-room-memory.cjs +618 -0
  808. package/lib/hmi/decoy-tier.cjs +395 -0
  809. package/lib/hmi/depth-state.cjs +164 -0
  810. package/lib/hmi/dial-label-composer.cjs +410 -0
  811. package/lib/hmi/dial-presenter.cjs +508 -0
  812. package/lib/hmi/dial-reach-orchestrator.cjs +377 -0
  813. package/lib/hmi/dial-selector.cjs +239 -0
  814. package/lib/hmi/f1-pick-capture-cli.cjs +131 -0
  815. package/lib/hmi/f3-depth-capture-cli.cjs +77 -0
  816. package/lib/hmi/f4-scope-capture-cli.cjs +86 -0
  817. package/lib/hmi/f8-action-capture-cli.cjs +145 -0
  818. package/lib/hmi/f8-capture.test.cjs +77 -0
  819. package/lib/hmi/f9-ordered-capture-cli.cjs +138 -0
  820. package/lib/hmi/harvest-scope-state.cjs +202 -0
  821. package/lib/hmi/hats-persona-cache.cjs +142 -0
  822. package/lib/hmi/jtbd-classifier.cjs +219 -0
  823. package/lib/hmi/jtbd-state.cjs +263 -0
  824. package/lib/hmi/jtbd-taxonomy.json +402 -0
  825. package/lib/hmi/mindrian-ascii-logo.cjs +96 -0
  826. package/lib/hmi/part8-egress-gate.cjs +149 -0
  827. package/lib/hmi/reach-component-map.json +47 -0
  828. package/lib/hmi/reach-relevance-gate.cjs +147 -0
  829. package/lib/hmi/selector-dispatcher.cjs +1201 -0
  830. package/lib/hmi/selector-dispatcher.test.cjs +141 -0
  831. package/lib/hmi/selector-telemetry.cjs +269 -0
  832. package/lib/hmi/shape-f0-renderer.cjs +145 -0
  833. package/lib/hmi/shape-f1-fallback.cjs +80 -0
  834. package/lib/hmi/shape-f1-renderer.cjs +219 -0
  835. package/lib/hmi/shape-f2-renderer.cjs +132 -0
  836. package/lib/hmi/shape-f3-parity.test.cjs +64 -0
  837. package/lib/hmi/shape-f3-renderer.cjs +66 -0
  838. package/lib/hmi/shape-f4-parity.test.cjs +72 -0
  839. package/lib/hmi/shape-f4-renderer.cjs +72 -0
  840. package/lib/hmi/shape-f5-renderer.cjs +155 -0
  841. package/lib/hmi/shape-f6-plan-review-renderer.cjs +324 -0
  842. package/lib/hmi/shape-f6-renderer.cjs +144 -0
  843. package/lib/hmi/shape-f7-breakthrough-renderer.cjs +234 -0
  844. package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
  845. package/lib/hmi/shape-f8-renderer.cjs +150 -0
  846. package/lib/hmi/shape-f8-renderer.test.cjs +70 -0
  847. package/lib/hmi/shape-f9-renderer.cjs +187 -0
  848. package/lib/hmi/shape-f9-renderer.test.cjs +80 -0
  849. package/lib/hmi/shape-g-renderer.cjs +219 -0
  850. package/lib/hmi/shape-h-renderer.cjs +222 -0
  851. package/lib/hmi/tier-check.cjs +63 -0
  852. package/lib/hmi/turn-text.cjs +268 -0
  853. package/lib/hmi/voice-color-mark.cjs +318 -0
  854. package/lib/hmi/voice-style-log.cjs +276 -0
  855. package/lib/import/PRECONDITIONS.md +41 -0
  856. package/lib/import/branding.cjs +210 -0
  857. package/lib/import/branding.test.cjs +235 -0
  858. package/lib/import/classifications-sync.cjs +104 -0
  859. package/lib/import/classifications-sync.test.cjs +129 -0
  860. package/lib/import/enricher.cjs +296 -0
  861. package/lib/import/enricher.test.cjs +273 -0
  862. package/lib/import/integration.test.cjs +376 -0
  863. package/lib/import/manifest.cjs +129 -0
  864. package/lib/import/manifest.schema.json +185 -0
  865. package/lib/import/manifest.test.cjs +123 -0
  866. package/lib/import/meeting-detector.cjs +92 -0
  867. package/lib/import/meeting-detector.test.cjs +100 -0
  868. package/lib/import/person-detector.cjs +229 -0
  869. package/lib/import/person-detector.test.cjs +149 -0
  870. package/lib/import/report.cjs +186 -0
  871. package/lib/import/report.test.cjs +186 -0
  872. package/lib/import/room-md-scaffolder.cjs +49 -0
  873. package/lib/import/router.cjs +224 -0
  874. package/lib/import/router.test.cjs +356 -0
  875. package/lib/import/run-all-tests.cjs +36 -0
  876. package/lib/import/smoke-test.cjs +213 -0
  877. package/lib/import/smoke-test.test.cjs +148 -0
  878. package/lib/import/undo.test.cjs +199 -0
  879. package/lib/import/vault-scanner.cjs +105 -0
  880. package/lib/import/vault-scanner.test.cjs +67 -0
  881. package/lib/lens-engine/correlation-resolver.cjs +174 -0
  882. package/lib/lens-engine/source-lens-driver.cjs +736 -0
  883. package/lib/mcp/adapter-client.cjs +103 -0
  884. package/lib/mcp/app-html/dashboard.html +316 -0
  885. package/lib/mcp/app-html/graph.html +428 -0
  886. package/lib/mcp/app-html/mindrian-platform.html +1841 -0
  887. package/lib/mcp/app-html/wiki.html +383 -0
  888. package/lib/mcp/app-views.cjs +322 -0
  889. package/lib/mcp/brain-composition-census.cjs +184 -0
  890. package/lib/mcp/brain-router.cjs +530 -0
  891. package/lib/mcp/capability-registry.cjs +62 -0
  892. package/lib/mcp/contract-version.cjs +59 -0
  893. package/lib/mcp/daemon-lifecycle.cjs +324 -0
  894. package/lib/mcp/gate-dedup.cjs +120 -0
  895. package/lib/mcp/gate-ledger.cjs +145 -0
  896. package/lib/mcp/gate-render.cjs +483 -0
  897. package/lib/mcp/hook-adapter-audit.cjs +199 -0
  898. package/lib/mcp/larry-context.cjs +42 -0
  899. package/lib/mcp/mcp-first-flag.cjs +147 -0
  900. package/lib/mcp/no-instructions.test.cjs +270 -0
  901. package/lib/mcp/pipeline-state.cjs +424 -0
  902. package/lib/mcp/prompts.cjs +421 -0
  903. package/lib/mcp/register-core-tools.cjs +78 -0
  904. package/lib/mcp/resources.cjs +359 -0
  905. package/lib/mcp/runtime-instructions.cjs +38 -0
  906. package/lib/mcp/session-catchup.cjs +349 -0
  907. package/lib/mcp/session-registry.cjs +113 -0
  908. package/lib/mcp/session-room.cjs +124 -0
  909. package/lib/mcp/sse-event-bus.cjs +98 -0
  910. package/lib/mcp/stop-gate-handler.cjs +589 -0
  911. package/lib/mcp/surface-detect.cjs +186 -0
  912. package/lib/mcp/tool-router.cjs +2113 -0
  913. package/lib/mcp/tools/chain.cjs +674 -0
  914. package/lib/mcp/tools/claim.cjs +180 -0
  915. package/lib/mcp/tools/context.cjs +92 -0
  916. package/lib/mcp/tools/dual-path.cjs +79 -0
  917. package/lib/mcp/tools/gate.cjs +392 -0
  918. package/lib/mcp/tools/graph-reason.cjs +130 -0
  919. package/lib/mcp/tools/graph.cjs +321 -0
  920. package/lib/mcp/tools/identity.cjs +174 -0
  921. package/lib/mcp/tools/room.cjs +449 -0
  922. package/lib/mcp/tools/sensors.cjs +450 -0
  923. package/lib/mcp/tools/status.cjs +183 -0
  924. package/lib/mcp/tools/stop-gate.cjs +103 -0
  925. package/lib/mcp/tools/views.cjs +382 -0
  926. package/lib/mcp/tree-watcher.cjs +199 -0
  927. package/lib/memory/.mindrian/auto-explore-mat-test-001.json +11 -0
  928. package/lib/memory/aaak-compress.cjs +403 -0
  929. package/lib/memory/aaak-compress.test.cjs +288 -0
  930. package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
  931. package/lib/memory/bearer-token.test.cjs +315 -0
  932. package/lib/memory/body-shape-coverage.test.cjs +268 -0
  933. package/lib/memory/brain-cache-lru.test.cjs +259 -0
  934. package/lib/memory/brain-client-query-shape.test.cjs +160 -0
  935. package/lib/memory/brain-cypher-chain-slice.test.cjs +368 -0
  936. package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
  937. package/lib/memory/brain-derivation-queue.test.cjs +553 -0
  938. package/lib/memory/brain-derivation.test.cjs +639 -0
  939. package/lib/memory/brain-derive-command.test.cjs +534 -0
  940. package/lib/memory/brain-derive-curation.test.cjs +243 -0
  941. package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
  942. package/lib/memory/brain-md-schema.test.cjs +467 -0
  943. package/lib/memory/brain-md-staleness.test.cjs +525 -0
  944. package/lib/memory/brain-server-resolution.test.cjs +314 -0
  945. package/lib/memory/brain-suggestion-template.test.cjs +200 -0
  946. package/lib/memory/chain-recommender-canonical.test.cjs +208 -0
  947. package/lib/memory/chain-recommender.test.cjs +233 -0
  948. package/lib/memory/chat-context.test.cjs +128 -0
  949. package/lib/memory/command-registry.test.cjs +220 -0
  950. package/lib/memory/connector-registry.test.cjs +94 -0
  951. package/lib/memory/correlation-label-index.test.cjs +119 -0
  952. package/lib/memory/correlation.test.cjs +253 -0
  953. package/lib/memory/cross-room-aggregator.test.cjs +909 -0
  954. package/lib/memory/curation-132-03-dedup-held-rename.test.cjs +251 -0
  955. package/lib/memory/curation-132-05-pseudonymize.test.cjs +205 -0
  956. package/lib/memory/curation-batch.test.cjs +213 -0
  957. package/lib/memory/dashboard-server.test.cjs +256 -0
  958. package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
  959. package/lib/memory/decision-capture.test.cjs +632 -0
  960. package/lib/memory/decision-capture.worker.cjs +70 -0
  961. package/lib/memory/doctor-deprecation-surface.test.cjs +188 -0
  962. package/lib/memory/dual-graph-health.test.cjs +485 -0
  963. package/lib/memory/explain-decision-command.test.cjs +521 -0
  964. package/lib/memory/explain-decision-footer.test.cjs +316 -0
  965. package/lib/memory/explored-materials-store.cjs +392 -0
  966. package/lib/memory/f-selector-ranker.test.cjs +593 -0
  967. package/lib/memory/feynman-minto-guardian.test.cjs +863 -0
  968. package/lib/memory/feynman-minto-invariants.test.cjs +554 -0
  969. package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
  970. package/lib/memory/feynman-prompts.cjs +151 -0
  971. package/lib/memory/feynman-prompts.test.cjs +96 -0
  972. package/lib/memory/first-touch-version.test.cjs +198 -0
  973. package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
  974. package/lib/memory/folder-memory.test.cjs +503 -0
  975. package/lib/memory/framework-chain-composer.test.cjs +549 -0
  976. package/lib/memory/frontmatter-schema-validator.test.cjs +344 -0
  977. package/lib/memory/guardian-onstop-reaches-user.test.cjs +396 -0
  978. package/lib/memory/heal-command.test.cjs +604 -0
  979. package/lib/memory/help-coverage.test.cjs +108 -0
  980. package/lib/memory/help-renderer.test.cjs +145 -0
  981. package/lib/memory/huji-run-one-async-parity.test.cjs +242 -0
  982. package/lib/memory/hypergraph-event-schema.test.cjs +116 -0
  983. package/lib/memory/index-artifact-transaction.test.cjs +333 -0
  984. package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
  985. package/lib/memory/local-chain-recommender.test.cjs +172 -0
  986. package/lib/memory/mcp-input-validation.test.cjs +240 -0
  987. package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
  988. package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
  989. package/lib/memory/minto-debounce-consumer-census.test.cjs +567 -0
  990. package/lib/memory/minto-debouncer.test.cjs +407 -0
  991. package/lib/memory/minto-debouncer.worker.cjs +46 -0
  992. package/lib/memory/minto-migration-v88.test.cjs +265 -0
  993. package/lib/memory/minto-schema-v88.test.cjs +390 -0
  994. package/lib/memory/mos-status-renderer.test.cjs +631 -0
  995. package/lib/memory/narrative-schema.cjs +376 -0
  996. package/lib/memory/narrative-schema.test.cjs +209 -0
  997. package/lib/memory/nav-dial.test.cjs +414 -0
  998. package/lib/memory/navigation-engine-core.test.cjs +712 -0
  999. package/lib/memory/navigation-engine-offer.test.cjs +404 -0
  1000. package/lib/memory/navigation-hook-resolver.test.cjs +177 -0
  1001. package/lib/memory/navigation-invariants.test.cjs +483 -0
  1002. package/lib/memory/navigation-projections.test.cjs +241 -0
  1003. package/lib/memory/navigation-write-edge.test.cjs +206 -0
  1004. package/lib/memory/offer-closer.test.cjs +258 -0
  1005. package/lib/memory/offer-presenter.test.cjs +554 -0
  1006. package/lib/memory/on-stop-snapshot.test.cjs +404 -0
  1007. package/lib/memory/orchestration-projection.test.cjs +706 -0
  1008. package/lib/memory/packet-chain-hint.test.cjs +407 -0
  1009. package/lib/memory/packet-schema-validation.test.cjs +317 -0
  1010. package/lib/memory/palette-consistency.test.cjs +127 -0
  1011. package/lib/memory/pending-tension-store.cjs +453 -0
  1012. package/lib/memory/per-command-jtbd-derivation.test.cjs +130 -0
  1013. package/lib/memory/per-command-teaching.test.cjs +110 -0
  1014. package/lib/memory/post-compact-reinjection.test.cjs +854 -0
  1015. package/lib/memory/post-write-triple.test.cjs +317 -0
  1016. package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
  1017. package/lib/memory/precommit-real-commit.test.cjs +301 -0
  1018. package/lib/memory/problem-type-router.test.cjs +656 -0
  1019. package/lib/memory/query-efficiency-telemetry.test.cjs +612 -0
  1020. package/lib/memory/recompile-room-references.test.cjs +392 -0
  1021. package/lib/memory/recompile-room-references.worker.cjs +42 -0
  1022. package/lib/memory/record-decision-dual-write.test.cjs +454 -0
  1023. package/lib/memory/render-v2-disposition.test.cjs +199 -0
  1024. package/lib/memory/room-classifier-strict-mode.test.cjs +430 -0
  1025. package/lib/memory/room-minto-hook.test.cjs +398 -0
  1026. package/lib/memory/rs-discovery-engine.test.cjs +323 -0
  1027. package/lib/memory/run-feynman-tests.cjs +2101 -0
  1028. package/lib/memory/security-trifecta.test.cjs +329 -0
  1029. package/lib/memory/selector-alias-map.test.cjs +172 -0
  1030. package/lib/memory/selector-decisions.test.cjs +417 -0
  1031. package/lib/memory/selector-miss.test.cjs +290 -0
  1032. package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
  1033. package/lib/memory/session-start-triple-injection.test.cjs +514 -0
  1034. package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
  1035. package/lib/memory/sessionstart-coordinator.test.cjs +446 -0
  1036. package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
  1037. package/lib/memory/skill-activation-router.test.cjs +465 -0
  1038. package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
  1039. package/lib/memory/soft-alias.test.cjs +144 -0
  1040. package/lib/memory/spine-events-correlation.test.cjs +198 -0
  1041. package/lib/memory/stale-copy-scanner.test.cjs +294 -0
  1042. package/lib/memory/stamp-artifact-write.test.cjs +304 -0
  1043. package/lib/memory/state-aware-router.test.cjs +90 -0
  1044. package/lib/memory/statusline-active-room-write.test.cjs +245 -0
  1045. package/lib/memory/statusline-active-room.test.cjs +315 -0
  1046. package/lib/memory/statusline-minto-segment.test.cjs +292 -0
  1047. package/lib/memory/statusline-two-row.test.cjs +338 -0
  1048. package/lib/memory/suggest-next-workflow.test.cjs +176 -0
  1049. package/lib/memory/sync-async-entry-points.test.cjs +204 -0
  1050. package/lib/memory/terminal-capability.test.cjs +155 -0
  1051. package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
  1052. package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
  1053. package/lib/memory/test-rs-brain-substrate.cjs +636 -0
  1054. package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
  1055. package/lib/memory/test-rs-canon-violations.cjs +218 -0
  1056. package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
  1057. package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
  1058. package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
  1059. package/lib/memory/test-rs-differential-scorer.cjs +480 -0
  1060. package/lib/memory/test-rs-discovery-engine.cjs +648 -0
  1061. package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
  1062. package/lib/memory/test-rs-egress-primitives.cjs +420 -0
  1063. package/lib/memory/test-rs-expert-mapper.cjs +547 -0
  1064. package/lib/memory/test-rs-explain-command.cjs +443 -0
  1065. package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
  1066. package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
  1067. package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
  1068. package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
  1069. package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
  1070. package/lib/memory/test-rs-mind-map.cjs +646 -0
  1071. package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
  1072. package/lib/memory/test-rs-nl-to-query.cjs +449 -0
  1073. package/lib/memory/test-rs-pinecone-bridge.cjs +282 -0
  1074. package/lib/memory/test-rs-preprocessor.cjs +433 -0
  1075. package/lib/memory/test-rs-query-matrix.cjs +391 -0
  1076. package/lib/memory/test-rs-query-to-text.cjs +551 -0
  1077. package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
  1078. package/lib/memory/test-rs-thesis-generator.cjs +360 -0
  1079. package/lib/memory/triple-context-formatter.cjs +473 -0
  1080. package/lib/memory/triple-context-formatter.test.cjs +442 -0
  1081. package/lib/memory/user-md-persona.test.cjs +565 -0
  1082. package/lib/memory/userpromptsubmit-integration.test.cjs +787 -0
  1083. package/lib/memory/validators/README.md +157 -0
  1084. package/lib/memory/validators/brain-md-invariants.cjs +475 -0
  1085. package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
  1086. package/lib/memory/validators/external-academic-invariants.cjs +249 -0
  1087. package/lib/memory/validators/external-industry-invariants.cjs +271 -0
  1088. package/lib/memory/validators/external-patents-invariants.cjs +266 -0
  1089. package/lib/memory/validators/minto-invariants.cjs +62 -0
  1090. package/lib/memory/validators/navigation-invariants.cjs +340 -0
  1091. package/lib/memory/validators/queue-health.cjs +95 -0
  1092. package/lib/memory/validators/snapshot-integrity.cjs +129 -0
  1093. package/lib/memory/validators/stale-lifecycle.cjs +116 -0
  1094. package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
  1095. package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
  1096. package/lib/memory/workflow-layer-e2e.test.cjs +262 -0
  1097. package/lib/memory/write-lock-atomic.test.cjs +137 -0
  1098. package/lib/memory/write-lock-atomic.worker.cjs +55 -0
  1099. package/lib/parity/check-parity.cjs +83 -0
  1100. package/lib/presentation/presentation-server.cjs +101 -0
  1101. package/lib/presentation/presentation-watcher.cjs +123 -0
  1102. package/lib/quickview/hub-server.cjs +719 -0
  1103. package/lib/quickview/server.cjs +533 -0
  1104. package/lib/render/JTBD-PALETTES.md +145 -0
  1105. package/lib/render/ROOM.md +111 -0
  1106. package/lib/render/render-v2.cjs +532 -0
  1107. package/lib/render/render-v2.test.cjs +267 -0
  1108. package/lib/render/render.cjs +65 -0
  1109. package/lib/sessionstart/budget-compressor.cjs +130 -0
  1110. package/lib/sessionstart/contributor-interface.cjs +134 -0
  1111. package/lib/sessionstart/contributor-isolator.cjs +128 -0
  1112. package/lib/sessionstart/precedence-ladder.cjs +47 -0
  1113. package/lib/state/ROOM.md +46 -0
  1114. package/lib/state/state-md-parser.cjs +215 -0
  1115. package/lib/statusline/ROOM.md +38 -0
  1116. package/lib/statusline/banner-suppression.cjs +50 -0
  1117. package/lib/statusline/cockpit-renderer.cjs +443 -0
  1118. package/lib/statusline/cockpit-signals.cjs +312 -0
  1119. package/lib/statusline/cockpit-telemetry.cjs +152 -0
  1120. package/lib/statusline/ctx-window.cjs +135 -0
  1121. package/lib/statusline/governing-thought-truncator.cjs +45 -0
  1122. package/lib/statusline/next-move-cache.cjs +235 -0
  1123. package/lib/statusline/ratification-next.cjs +164 -0
  1124. package/lib/statusline/room-health-cache.cjs +200 -0
  1125. package/lib/statusline/surface-detect.cjs +85 -0
  1126. package/lib/statusline/two-row-renderer.cjs +207 -0
  1127. package/lib/statusline/version-resolver.cjs +81 -0
  1128. package/lib/ui/design-system.cjs +19 -0
  1129. package/lib/update-bootstrap.sh.template +145 -0
  1130. package/lib/vault/frontmatter-schema.cjs +297 -0
  1131. package/lib/vault/room-scanner.cjs +365 -0
  1132. package/lib/vault/wikilink-builder.cjs +231 -0
  1133. package/lib/vault/wikilink-builder.test.cjs +182 -0
  1134. package/lib/wiki/briefing.cjs +193 -0
  1135. package/lib/wiki/editor-dist/wiki-editor.css +1 -0
  1136. package/lib/wiki/editor-dist/wiki-editor.js +1327 -0
  1137. package/lib/wiki/graph-links.cjs +281 -0
  1138. package/lib/wiki/page-renderer.cjs +229 -0
  1139. package/lib/wiki/room-home.cjs +353 -0
  1140. package/lib/wiki/wiki-chat.cjs +81 -0
  1141. package/lib/wiki/wiki-export.cjs +364 -0
  1142. package/lib/wiki/wiki-layout.cjs +1143 -0
  1143. package/lib/wiki/wiki-search.cjs +142 -0
  1144. package/lib/wiki/wiki-server.cjs +748 -0
  1145. package/lib/wiki/wiki-watcher.cjs +105 -0
  1146. package/lib/workflow/ROOM.md +47 -0
  1147. package/lib/workflow/chain-source.cjs +179 -0
  1148. package/lib/workflow/command-resolver.cjs +155 -0
  1149. package/lib/workflow/command-resolver.test.cjs +235 -0
  1150. package/lib/workflow/cross-room-umbilical-closer.cjs +364 -0
  1151. package/lib/workflow/dial-close-reach.cjs +405 -0
  1152. package/lib/workflow/f-selector-ranker.cjs +1148 -0
  1153. package/lib/workflow/f1-pick-consumer.cjs +232 -0
  1154. package/lib/workflow/f3-depth-consumer.cjs +98 -0
  1155. package/lib/workflow/f4-scope-consumer.cjs +112 -0
  1156. package/lib/workflow/f8-consumer.test.cjs +82 -0
  1157. package/lib/workflow/f8-fanout-consumer.cjs +208 -0
  1158. package/lib/workflow/f9-consumer.test.cjs +71 -0
  1159. package/lib/workflow/f9-ordered-consumer.cjs +199 -0
  1160. package/lib/workflow/local-chain-recommender.cjs +330 -0
  1161. package/lib/workflow/memory-cascade-f9-adapter.cjs +273 -0
  1162. package/lib/workflow/memory-governance-closer.cjs +384 -0
  1163. package/lib/workflow/offer-closer.cjs +407 -0
  1164. package/lib/workflow/reach-hedge-ranker.cjs +809 -0
  1165. package/lib/workflow/reach-reject-reader.cjs +372 -0
  1166. package/lib/workflow/reconcile-f9-adapter.cjs +299 -0
  1167. package/lib/workflow/selector-decisions.cjs +478 -0
  1168. package/lib/workflow/session-binding-consumer.cjs +249 -0
  1169. package/npm-shrinkwrap.json +1544 -0
  1170. package/output-styles/destijl.md +67 -0
  1171. package/package.json +22 -4
  1172. package/pipelines/PWS_grading/01-deep-grade.md +48 -0
  1173. package/pipelines/PWS_grading/02-mullins.md +50 -0
  1174. package/pipelines/PWS_grading/03-build-thesis.md +60 -0
  1175. package/pipelines/PWS_grading/04-structure-argument.md +77 -0
  1176. package/pipelines/PWS_grading/CHAIN.md +79 -0
  1177. package/pipelines/analogy/01-decompose.md +80 -0
  1178. package/pipelines/analogy/02-abstract.md +87 -0
  1179. package/pipelines/analogy/03-search.md +135 -0
  1180. package/pipelines/analogy/04-transfer.md +101 -0
  1181. package/pipelines/analogy/05-validate.md +106 -0
  1182. package/pipelines/analogy/CHAIN.md +73 -0
  1183. package/pipelines/discovery/01-explore-domains.md +44 -0
  1184. package/pipelines/discovery/02-think-hats.md +50 -0
  1185. package/pipelines/discovery/03-analyze-needs.md +54 -0
  1186. package/pipelines/discovery/CHAIN.md +48 -0
  1187. package/pipelines/thesis/01-structure-argument.md +45 -0
  1188. package/pipelines/thesis/02-challenge-assumptions.md +48 -0
  1189. package/pipelines/thesis/03-build-thesis.md +54 -0
  1190. package/pipelines/thesis/CHAIN.md +48 -0
  1191. package/references/brain/causal-directives.md +91 -0
  1192. package/references/brain/causal-enrichment.cypher +165 -0
  1193. package/references/brain/command-triggers-schema.md +15 -0
  1194. package/references/brain/graph-architecture.md +317 -0
  1195. package/references/brain/query-patterns.md +504 -0
  1196. package/references/brain/room-hierarchy-schema.md +218 -0
  1197. package/references/brain/schema.md +86 -0
  1198. package/references/capability-radar/capabilities-index.md +269 -0
  1199. package/references/capability-radar/changelog-cache.md +95 -0
  1200. package/references/causal/causal-schema.md +103 -0
  1201. package/references/design/email-template-standard.md +169 -0
  1202. package/references/design/graph-visualization-standard.md +178 -0
  1203. package/references/design/newsletter-email-template.html +307 -0
  1204. package/references/document-generation.md +179 -0
  1205. package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
  1206. package/references/import-config.md +141 -0
  1207. package/references/integrations/detection-patterns.md +101 -0
  1208. package/references/meeting/artifact-template.md +377 -0
  1209. package/references/meeting/cross-meeting-intelligence.md +216 -0
  1210. package/references/meeting/cross-relationship-patterns.md +202 -0
  1211. package/references/meeting/extraction-perspectives.md +225 -0
  1212. package/references/meeting/filing-protocol.md +222 -0
  1213. package/references/meeting/knowledge-typing.md +242 -0
  1214. package/references/meeting/live-join-interface.md +244 -0
  1215. package/references/meeting/section-mapping.md +192 -0
  1216. package/references/meeting/segment-classification.md +258 -0
  1217. package/references/meeting/speaker-profile-template.md +219 -0
  1218. package/references/meeting/summary-template.md +348 -0
  1219. package/references/meeting/transcript-patterns.md +226 -0
  1220. package/references/methodology/analyze-needs.md +135 -0
  1221. package/references/methodology/analyze-systems.md +121 -0
  1222. package/references/methodology/analyze-timing.md +149 -0
  1223. package/references/methodology/beautiful-question.md +109 -0
  1224. package/references/methodology/build-knowledge.md +161 -0
  1225. package/references/methodology/build-thesis-scored.md +60 -0
  1226. package/references/methodology/build-thesis.md +237 -0
  1227. package/references/methodology/causal-loop-diagrams.md +65 -0
  1228. package/references/methodology/challenge-assumptions.md +127 -0
  1229. package/references/methodology/diagnose.md +169 -0
  1230. package/references/methodology/dominant-designs.md +212 -0
  1231. package/references/methodology/explore-domains.md +147 -0
  1232. package/references/methodology/explore-futures.md +163 -0
  1233. package/references/methodology/explore-trends.md +129 -0
  1234. package/references/methodology/find-bottlenecks.md +131 -0
  1235. package/references/methodology/grade.md +211 -0
  1236. package/references/methodology/huji-stage-a-intake.md +246 -0
  1237. package/references/methodology/index.md +34 -0
  1238. package/references/methodology/leadership.md +200 -0
  1239. package/references/methodology/lean-canvas.md +116 -0
  1240. package/references/methodology/leverage-scan-signatures.md +83 -0
  1241. package/references/methodology/macro-trends.md +192 -0
  1242. package/references/methodology/map-unknowns.md +137 -0
  1243. package/references/methodology/mullins-7-domains.md +104 -0
  1244. package/references/methodology/problem-types.md +65 -0
  1245. package/references/methodology/root-cause.md +178 -0
  1246. package/references/methodology/rubric-huji.md +160 -0
  1247. package/references/methodology/sapphire-encoding.md +355 -0
  1248. package/references/methodology/scenario-plan.md +190 -0
  1249. package/references/methodology/score-innovation.md +154 -0
  1250. package/references/methodology/skillopt-judge-rubric.md +48 -0
  1251. package/references/methodology/skillopt-queries-rubric.md +60 -0
  1252. package/references/methodology/skillopt-refute-rubric.md +59 -0
  1253. package/references/methodology/skillopt-review-rubric.md +72 -0
  1254. package/references/methodology/skillopt-revise-rubric.md +48 -0
  1255. package/references/methodology/structure-argument.md +158 -0
  1256. package/references/methodology/systems-thinking.md +231 -0
  1257. package/references/methodology/think-hats.md +147 -0
  1258. package/references/methodology/triz-matrix.json +751 -0
  1259. package/references/methodology/triz-principles.md +501 -0
  1260. package/references/methodology/user-needs.md +199 -0
  1261. package/references/methodology/validate.md +163 -0
  1262. package/references/methodology/value-proposition.md +244 -0
  1263. package/references/opportunities/funding-lifecycle.md +103 -0
  1264. package/references/opportunities/grant-api-patterns.md +99 -0
  1265. package/references/opportunities/opportunity-template.md +84 -0
  1266. package/references/opportunities/tnufa-rubric.md +81 -0
  1267. package/references/personality/assessment-philosophy.md +72 -0
  1268. package/references/personality/lexicon.md +100 -0
  1269. package/references/personality/persona-chains.md +56 -0
  1270. package/references/personality/pws-lexicon-full.md +499 -0
  1271. package/references/personality/voice-dna.md +156 -0
  1272. package/references/personas/hat-perspectives.md +76 -0
  1273. package/references/personas/persona-template.md +63 -0
  1274. package/references/pipeline/act-output-contract.md +88 -0
  1275. package/references/pipeline/chains-index.md +39 -0
  1276. package/references/pws-profile-generation.md +79 -0
  1277. package/references/reasoning/reasoning-schema.md +143 -0
  1278. package/references/reasoning/reasoning-template.md +68 -0
  1279. package/references/reasoning/run-template.md +38 -0
  1280. package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
  1281. package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
  1282. package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
  1283. package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
  1284. package/references/security/agentshield-baseline.json +8 -0
  1285. package/references/security/cve-db.json +220 -0
  1286. package/references/taxonomy/TAXONOMY.md +192 -0
  1287. package/references/templates/MINTO.md +36 -0
  1288. package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
  1289. package/references/vault-kit/README.md +35 -0
  1290. package/references/vault-kit/app.json +12 -0
  1291. package/references/vault-kit/appearance.json +12 -0
  1292. package/references/vault-kit/graph.json +35 -0
  1293. package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
  1294. package/references/vault-kit/templates/new-artifact.md +37 -0
  1295. package/references/vault-kit/templates/new-meeting-note.md +35 -0
  1296. package/references/vault-kit/templates/new-team-profile.md +29 -0
  1297. package/references/vault-kit/templates/new-xref.md +35 -0
  1298. package/references/visual/ROOM.md +55 -0
  1299. package/references/visual/palette.json +54 -0
  1300. package/references/visual/symbol-system.md +151 -0
  1301. package/scripts/189-plurai-gate-check.cjs +88 -0
  1302. package/scripts/198-plurai-gate-check.cjs +118 -0
  1303. package/scripts/198-rollback-rehearsal.cjs +233 -0
  1304. package/scripts/83-scope-injection.test.cjs +648 -0
  1305. package/scripts/PYTHON_GATES.md +78 -0
  1306. package/scripts/__pycache__/compute-hsi.cpython-312.pyc +0 -0
  1307. package/scripts/__pycache__/detect-reverse-salients.cpython-312.pyc +0 -0
  1308. package/scripts/__pycache__/rs-engine.cpython-312.pyc +0 -0
  1309. package/scripts/act-command.cjs +518 -0
  1310. package/scripts/admin-brain-write.cjs +442 -0
  1311. package/scripts/admin-command-gate.cjs +178 -0
  1312. package/scripts/agentshield-scan-cli.cjs +226 -0
  1313. package/scripts/agentshield-sessionstart-scan.cjs +282 -0
  1314. package/scripts/analogy-fitness-report.cjs +266 -0
  1315. package/scripts/analyze-room +1079 -0
  1316. package/scripts/apply-teaching-content.cjs +298 -0
  1317. package/scripts/async-artifact-auto-commit.cjs +485 -0
  1318. package/scripts/audit-active-phase-resolver.cjs +160 -0
  1319. package/scripts/audit-body-shape-coverage.cjs +213 -0
  1320. package/scripts/auto-explore-drain.cjs +274 -0
  1321. package/scripts/auto-explore-fingerprint.cjs +354 -0
  1322. package/scripts/auto-explore-fire.cjs +359 -0
  1323. package/scripts/backfill-correlation-id.cjs +425 -0
  1324. package/scripts/backfill-hitl-shape.cjs +276 -0
  1325. package/scripts/backfill-hitl-shape.test.cjs +307 -0
  1326. package/scripts/backup-modifications +68 -0
  1327. package/scripts/banner +182 -0
  1328. package/scripts/brain-derivation-drain.cjs +291 -0
  1329. package/scripts/brain-derive-command.cjs +846 -0
  1330. package/scripts/brain-normalize-books.cypher +505 -0
  1331. package/scripts/brain-normalize-final.cypher +1355 -0
  1332. package/scripts/brain-normalize-problemtype.cypher +475 -0
  1333. package/scripts/brain-normalize-supplement.cypher +449 -0
  1334. package/scripts/brain-normalize-targeted.cypher +344 -0
  1335. package/scripts/brain-normalize-v194.cypher +61 -0
  1336. package/scripts/brain-normalize.cypher +530 -0
  1337. package/scripts/brain-response-sanitize-hook.cjs +165 -0
  1338. package/scripts/build-brain-census.cjs +957 -0
  1339. package/scripts/build-brain-packet-schema.cjs +225 -0
  1340. package/scripts/build-command-registry.cjs +587 -0
  1341. package/scripts/build-connector-registry.cjs +1331 -0
  1342. package/scripts/build-corpus-stats.cjs +408 -0
  1343. package/scripts/build-dist-bundles.cjs +495 -0
  1344. package/scripts/build-ecosystem-graph.cjs +490 -0
  1345. package/scripts/build-graph +1462 -0
  1346. package/scripts/build-graph-from-sqlite.cjs +97 -0
  1347. package/scripts/build-harness-manifest.cjs +1090 -0
  1348. package/scripts/build-jtbd-nudges +205 -0
  1349. package/scripts/build-new-surface.cjs +805 -0
  1350. package/scripts/build-orchestration-projection.cjs +1221 -0
  1351. package/scripts/build-render-coverage.cjs +637 -0
  1352. package/scripts/build-skill-mirrors.cjs +681 -0
  1353. package/scripts/cache-hitrate-report.cjs +216 -0
  1354. package/scripts/causal-to-graph.cjs +163 -0
  1355. package/scripts/check-abstraction-fixture-neutral.cjs +160 -0
  1356. package/scripts/check-admin-identity.cjs +212 -0
  1357. package/scripts/check-brain-tool-liveness.cjs +502 -0
  1358. package/scripts/check-card-fire.cjs +1809 -0
  1359. package/scripts/check-cirs-declaration.cjs +279 -0
  1360. package/scripts/check-deck-design.cjs +104 -0
  1361. package/scripts/check-dual-graph-health.cjs +645 -0
  1362. package/scripts/check-first-touch-drift.cjs +220 -0
  1363. package/scripts/check-flagship-floor.cjs +391 -0
  1364. package/scripts/check-framework-vocabulary-drift.cjs +563 -0
  1365. package/scripts/check-gate-seam.cjs +178 -0
  1366. package/scripts/check-graph-derive-health.cjs +208 -0
  1367. package/scripts/check-graph-export-typemap.cjs +118 -0
  1368. package/scripts/check-help-coverage.cjs +290 -0
  1369. package/scripts/check-hitl-stages.cjs +219 -0
  1370. package/scripts/check-hook-schema-compatibility.cjs +231 -0
  1371. package/scripts/check-hsi-deps +42 -0
  1372. package/scripts/check-kuzu-reintroduction.cjs +251 -0
  1373. package/scripts/check-onboard +43 -0
  1374. package/scripts/check-onboard-statusline.cjs +363 -0
  1375. package/scripts/check-palette-consistency.cjs +106 -0
  1376. package/scripts/check-pending-ambiguous.cjs +244 -0
  1377. package/scripts/check-pending-breakthrough.cjs +189 -0
  1378. package/scripts/check-pending-breakthrough.test.cjs +166 -0
  1379. package/scripts/check-pending-naming-decision.cjs +97 -0
  1380. package/scripts/check-plugin-path-anchoring.cjs +830 -0
  1381. package/scripts/check-publish-needs.cjs +126 -0
  1382. package/scripts/check-registry-drift.cjs +206 -0
  1383. package/scripts/check-release-payload-ceiling.cjs +269 -0
  1384. package/scripts/check-render-coverage.cjs +558 -0
  1385. package/scripts/check-research-isomorphism.cjs +446 -0
  1386. package/scripts/check-reward-before-investment.cjs +261 -0
  1387. package/scripts/check-room-blueprints.cjs +213 -0
  1388. package/scripts/check-schema-aliases.cjs +532 -0
  1389. package/scripts/check-shape-declaration.cjs +958 -0
  1390. package/scripts/check-shape-declaration.test.cjs +185 -0
  1391. package/scripts/check-skill-spec.cjs +312 -0
  1392. package/scripts/check-skill-vs-code-drift.cjs +178 -0
  1393. package/scripts/check-substrate.cjs +513 -0
  1394. package/scripts/check-tool-honesty.cjs +1601 -0
  1395. package/scripts/check-update +60 -0
  1396. package/scripts/check-version-and-sha.cjs +366 -0
  1397. package/scripts/check-voice-style.cjs +184 -0
  1398. package/scripts/check-worktree-hygiene.cjs +530 -0
  1399. package/scripts/classify-insight +59 -0
  1400. package/scripts/coherence-smoke-test.cjs +489 -0
  1401. package/scripts/compute-bayesian-surprise.py +175 -0
  1402. package/scripts/compute-blindspot-mass.py +209 -0
  1403. package/scripts/compute-disruption-index.py +211 -0
  1404. package/scripts/compute-element-novelty.py +254 -0
  1405. package/scripts/compute-external-whitespace.py +563 -0
  1406. package/scripts/compute-hsi.py +947 -0
  1407. package/scripts/compute-meetings-intelligence +716 -0
  1408. package/scripts/compute-opportunity-state +17 -0
  1409. package/scripts/compute-state +393 -0
  1410. package/scripts/compute-team +1112 -0
  1411. package/scripts/compute-whitespace-embeddings.py +464 -0
  1412. package/scripts/compute-whitespace-gaps.py +562 -0
  1413. package/scripts/compute_topic_forest.py +684 -0
  1414. package/scripts/consolidate-pinecone.py +265 -0
  1415. package/scripts/context-monitor +943 -0
  1416. package/scripts/create-speaker-profile +311 -0
  1417. package/scripts/cross-room-detect.cjs +195 -0
  1418. package/scripts/csv-to-idea-graph.cjs +755 -0
  1419. package/scripts/ctxl-eval.cjs +846 -0
  1420. package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
  1421. package/scripts/curation-132-05-pseudonymize.cjs +189 -0
  1422. package/scripts/derive-verb-reach-affinity.cjs +507 -0
  1423. package/scripts/detect-reverse-salients.py +242 -0
  1424. package/scripts/diagnostics-command.cjs +345 -0
  1425. package/scripts/dial-memory-refresh-command.cjs +147 -0
  1426. package/scripts/discover-analogy-whitespace.py +433 -0
  1427. package/scripts/discover-hsi-whitespace.py +352 -0
  1428. package/scripts/discover-rs-whitespace.py +327 -0
  1429. package/scripts/discovery-cycle.cjs +625 -0
  1430. package/scripts/disposition-render-v2.cjs +229 -0
  1431. package/scripts/doctor-preflight-format.cjs +101 -0
  1432. package/scripts/doctor.cjs +4327 -0
  1433. package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
  1434. package/scripts/dogfood-bridge/path-filter.cjs +86 -0
  1435. package/scripts/dogfood-derive.cjs +158 -0
  1436. package/scripts/dogfood-emit.cjs +126 -0
  1437. package/scripts/empathy-observation-emit.cjs +108 -0
  1438. package/scripts/enrichment-queue-append.cjs +157 -0
  1439. package/scripts/ensure-brain-baseline.cjs +117 -0
  1440. package/scripts/entity-extract.cjs +1135 -0
  1441. package/scripts/eureka-command.cjs +687 -0
  1442. package/scripts/eureka-critic-run.cjs +662 -0
  1443. package/scripts/eureka-portfolio-report.cjs +2038 -0
  1444. package/scripts/eureka-room-report.cjs +419 -0
  1445. package/scripts/explain-decision-command.cjs +499 -0
  1446. package/scripts/export-pinecone-embeddings.cjs +516 -0
  1447. package/scripts/extract-room-intelligence.cjs +714 -0
  1448. package/scripts/fetch-brain-baseline.cjs +190 -0
  1449. package/scripts/fetch-brain-baseline.py +360 -0
  1450. package/scripts/feynman-minto-guardian.cjs +672 -0
  1451. package/scripts/feynman-timeline-refresh-command.cjs +270 -0
  1452. package/scripts/file-asset +253 -0
  1453. package/scripts/fire-sensor-event.cjs +83 -0
  1454. package/scripts/first-install-router.cjs +968 -0
  1455. package/scripts/frontmatter-schema-validator.cjs +339 -0
  1456. package/scripts/fts-index-drain.cjs +221 -0
  1457. package/scripts/generate-chat-embed.cjs +179 -0
  1458. package/scripts/generate-deck.cjs +322 -0
  1459. package/scripts/generate-export.cjs +474 -0
  1460. package/scripts/generate-hub.cjs +2553 -0
  1461. package/scripts/generate-lobby.cjs +718 -0
  1462. package/scripts/generate-presentation.cjs +988 -0
  1463. package/scripts/generate-presentation.test.cjs +405 -0
  1464. package/scripts/generate-section-intelligence.cjs +330 -0
  1465. package/scripts/generate-snapshot.cjs +1410 -0
  1466. package/scripts/generate-standalone +159 -0
  1467. package/scripts/git-ops +211 -0
  1468. package/scripts/graph-heal-pipeline.cjs +321 -0
  1469. package/scripts/gsd-artifact-graph-hook.cjs +219 -0
  1470. package/scripts/gsd-graph-derive-drain.cjs +571 -0
  1471. package/scripts/gsd-graph-derive-sweep.cjs +195 -0
  1472. package/scripts/heal-command.cjs +1365 -0
  1473. package/scripts/hedge-refit-pipeline.cjs +207 -0
  1474. package/scripts/help-renderer.cjs +303 -0
  1475. package/scripts/hmi-compliance-poll.cjs +451 -0
  1476. package/scripts/hmi-status-command.cjs +510 -0
  1477. package/scripts/hooked-rescore-117.cjs +224 -0
  1478. package/scripts/hooks/pre-commit +533 -0
  1479. package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
  1480. package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
  1481. package/scripts/hsi-to-graph.cjs +194 -0
  1482. package/scripts/huji-batch.cjs +821 -0
  1483. package/scripts/huji-eval.cjs +1158 -0
  1484. package/scripts/huji-intake.cjs +563 -0
  1485. package/scripts/huji-pin-smoketest.cjs +454 -0
  1486. package/scripts/huji-run-one-async.cjs +305 -0
  1487. package/scripts/huji-run-one.cjs +671 -0
  1488. package/scripts/install-pre-commit.sh +113 -0
  1489. package/scripts/intent-classifier +106 -0
  1490. package/scripts/intent-classifier.cjs +3620 -0
  1491. package/scripts/interpret-whitespace.cjs +691 -0
  1492. package/scripts/jtbd-command.cjs +810 -0
  1493. package/scripts/jtbd-update.cjs +299 -0
  1494. package/scripts/label-topic-forest.cjs +667 -0
  1495. package/scripts/learn-from-usage +168 -0
  1496. package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
  1497. package/scripts/lib/ensure_ml_deps.py +97 -0
  1498. package/scripts/load-embeddings-into-neo4j.cjs +569 -0
  1499. package/scripts/memory-artifact-graph-hook.cjs +191 -0
  1500. package/scripts/memory-command.cjs +687 -0
  1501. package/scripts/memory-completion-detector.cjs +217 -0
  1502. package/scripts/memory-lifecycle.cjs +620 -0
  1503. package/scripts/memory-resume-nudge.cjs +233 -0
  1504. package/scripts/methodology-ingest-local.sh +36 -0
  1505. package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
  1506. package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
  1507. package/scripts/migrate-hats-to-roomdb.cjs +217 -0
  1508. package/scripts/migrate-lazygraph.cjs +250 -0
  1509. package/scripts/migrate-minto-schema-v88.cjs +296 -0
  1510. package/scripts/migrate-plugin-root-refs.cjs +168 -0
  1511. package/scripts/migrate-room-sections-v275.cjs +556 -0
  1512. package/scripts/migrate-rooms +417 -0
  1513. package/scripts/migrate-skill-frontmatter.cjs +472 -0
  1514. package/scripts/migrate-stale-user-settings.cjs +296 -0
  1515. package/scripts/migrate-telemetry-v1.cjs +384 -0
  1516. package/scripts/migrate-telemetry-v1.test.cjs +356 -0
  1517. package/scripts/minto-debouncer.cjs +428 -0
  1518. package/scripts/mos-status.cjs +622 -0
  1519. package/scripts/mva-detect.cjs +229 -0
  1520. package/scripts/mva-run.cjs +36 -0
  1521. package/scripts/on-agent-complete +163 -0
  1522. package/scripts/on-cwd-changed +149 -0
  1523. package/scripts/on-file-changed +68 -0
  1524. package/scripts/on-stop +617 -0
  1525. package/scripts/on-task-complete +194 -0
  1526. package/scripts/operator-command.cjs +858 -0
  1527. package/scripts/operator-update.cjs +308 -0
  1528. package/scripts/part8-egress-guard-hook.cjs +229 -0
  1529. package/scripts/pipeline-command.cjs +271 -0
  1530. package/scripts/post-compact +383 -0
  1531. package/scripts/post-update-activation.cjs +339 -0
  1532. package/scripts/post-write +283 -0
  1533. package/scripts/power-demo-prompt.md +621 -0
  1534. package/scripts/pre-compact +273 -0
  1535. package/scripts/preflight-auto-explore.cjs +314 -0
  1536. package/scripts/preflight-doctor.cjs +225 -0
  1537. package/scripts/preflight-release-drift.cjs +168 -0
  1538. package/scripts/preflight-tension-surface.cjs +414 -0
  1539. package/scripts/probe-brain-contract.cjs +502 -0
  1540. package/scripts/publish-ops +346 -0
  1541. package/scripts/query-efficiency-telemetry.cjs +364 -0
  1542. package/scripts/query-semantic-scholar.cjs +545 -0
  1543. package/scripts/reapply-modifications +49 -0
  1544. package/scripts/reassign-primary.cjs +125 -0
  1545. package/scripts/recompile-room-references.cjs +601 -0
  1546. package/scripts/release-beta-preflight.sh +69 -0
  1547. package/scripts/render-pdf +588 -0
  1548. package/scripts/render-viz +190 -0
  1549. package/scripts/research-speaker +239 -0
  1550. package/scripts/resolve-room +204 -0
  1551. package/scripts/restore-post-compact-context.cjs +320 -0
  1552. package/scripts/room-auto-create-nudge.cjs +136 -0
  1553. package/scripts/room-naming-selector.cjs +201 -0
  1554. package/scripts/room-registry +767 -0
  1555. package/scripts/rs-discovery-engine.cjs +725 -0
  1556. package/scripts/rs-engine.py +2073 -0
  1557. package/scripts/rs-experts-command.cjs +300 -0
  1558. package/scripts/rs-explain-command.cjs +323 -0
  1559. package/scripts/rs-fetch-command.cjs +170 -0
  1560. package/scripts/rs-thesis-command.cjs +203 -0
  1561. package/scripts/rs-vector-bridge.cjs +410 -0
  1562. package/scripts/run-harness.cjs +890 -0
  1563. package/scripts/scout-cadence-guard.cjs +323 -0
  1564. package/scripts/scout-cadence-runner.cjs +509 -0
  1565. package/scripts/scout-telemetry-aggregator.cjs +268 -0
  1566. package/scripts/sealed-walker.py +96 -0
  1567. package/scripts/seed-brain-commands.cjs +324 -0
  1568. package/scripts/self-update +105 -0
  1569. package/scripts/sentinel-deadline-monitor +241 -0
  1570. package/scripts/sentinel-health-check +198 -0
  1571. package/scripts/sentinel-snapshot +42 -0
  1572. package/scripts/serve-dashboard +103 -0
  1573. package/scripts/serve-dashboard-live +932 -0
  1574. package/scripts/serve-presentation +97 -0
  1575. package/scripts/serve-wiki +90 -0
  1576. package/scripts/session-end-presence.cjs +79 -0
  1577. package/scripts/session-start +1942 -0
  1578. package/scripts/sessionstart-coordinator.cjs +249 -0
  1579. package/scripts/sessionstart-npm-reconcile.cjs +111 -0
  1580. package/scripts/sessionstart-post-update-preflight.cjs +303 -0
  1581. package/scripts/sessionstart-reference-now-seed.cjs +137 -0
  1582. package/scripts/setup-hooks.sh +112 -0
  1583. package/scripts/skillopt-codereview.cjs +830 -0
  1584. package/scripts/skillopt-eval.cjs +519 -0
  1585. package/scripts/skillopt-funnel.cjs +1076 -0
  1586. package/scripts/skillopt-genqueries.cjs +571 -0
  1587. package/scripts/skillopt-inventory.cjs +319 -0
  1588. package/scripts/skillopt-merge.cjs +656 -0
  1589. package/scripts/skillopt-triggerloop.cjs +1126 -0
  1590. package/scripts/soft-alias-runner.cjs +116 -0
  1591. package/scripts/stamp-artifact-write.cjs +276 -0
  1592. package/scripts/stamp-firing-block.cjs +325 -0
  1593. package/scripts/state-write.cjs +97 -0
  1594. package/scripts/statusline-fallback-echo.cjs +297 -0
  1595. package/scripts/statusline-mos +116 -0
  1596. package/scripts/statusline-mos-dispatch +127 -0
  1597. package/scripts/suggest-next-command.cjs +416 -0
  1598. package/scripts/sweep-skill-descriptions.cjs +263 -0
  1599. package/scripts/sync-rooms-brain +438 -0
  1600. package/scripts/sync-rooms-graph +264 -0
  1601. package/scripts/telemetry-command-invocation.cjs +120 -0
  1602. package/scripts/test-doctor-recovery.cjs +242 -0
  1603. package/scripts/test-fresh-install.md +140 -0
  1604. package/scripts/track-analytics +156 -0
  1605. package/scripts/transcribe-audio +148 -0
  1606. package/scripts/transcript-ingest.cjs +225 -0
  1607. package/scripts/update-icm-index +153 -0
  1608. package/scripts/v182-brain-optimize.cypher +1191 -0
  1609. package/scripts/validate-model-profiles +93 -0
  1610. package/scripts/vault-content-reformatter.cjs +581 -0
  1611. package/scripts/vault-export-orchestrator.cjs +400 -0
  1612. package/scripts/vault-footer-injector.cjs +315 -0
  1613. package/scripts/vault-import.cjs +839 -0
  1614. package/scripts/vault-integration-test.cjs +318 -0
  1615. package/scripts/vault-regenerate-all.cjs +216 -0
  1616. package/scripts/vault-regenerate-all.test.cjs +138 -0
  1617. package/scripts/vault-rules-generator.cjs +220 -0
  1618. package/scripts/vault-section-minto-generator.cjs +1642 -0
  1619. package/scripts/vault-section-minto-generator.integration.test.cjs +576 -0
  1620. package/scripts/vault-section-minto-generator.test.cjs +291 -0
  1621. package/scripts/vault-section-state-generator.cjs +385 -0
  1622. package/scripts/vault-welcome-generator.cjs +403 -0
  1623. package/scripts/vault-wikilink-injector.cjs +449 -0
  1624. package/scripts/verify-phase-132.cjs +338 -0
  1625. package/scripts/verify-release +744 -0
  1626. package/scripts/whitespace-command.cjs +831 -0
  1627. package/scripts/whitespace-to-brain.cjs +383 -0
  1628. package/scripts/whitespace-to-graph.cjs +220 -0
  1629. package/scripts/wikilink-batch.cjs +102 -0
  1630. package/scripts/wikilink-file.cjs +139 -0
  1631. package/scripts/write-bridge-artifacts.cjs +140 -0
  1632. package/scripts/write-scope-check +12 -0
  1633. package/scripts/write-scope-check.cjs +461 -0
  1634. package/scripts/write-whitespace-sections.cjs +483 -0
  1635. package/settings.json +7 -0
  1636. package/skills/act/SKILL.md +523 -0
  1637. package/skills/admin/SKILL.md +437 -0
  1638. package/skills/agentshield/SKILL.md +50 -0
  1639. package/skills/analyze-needs/SKILL.md +74 -0
  1640. package/skills/analyze-systems/SKILL.md +69 -0
  1641. package/skills/analyze-timing/SKILL.md +94 -0
  1642. package/skills/auto-explore/SKILL.md +84 -0
  1643. package/skills/beautiful-question/SKILL.md +72 -0
  1644. package/skills/bono/SKILL.md +146 -0
  1645. package/skills/brain-connector/SKILL.md +206 -0
  1646. package/skills/brain-derive/SKILL.md +140 -0
  1647. package/skills/build-knowledge/SKILL.md +118 -0
  1648. package/skills/build-thesis/SKILL.md +90 -0
  1649. package/skills/causal/SKILL.md +265 -0
  1650. package/skills/challenge-assumptions/SKILL.md +74 -0
  1651. package/skills/client-discovery-interview/SKILL.md +94 -0
  1652. package/skills/client-discovery-interview/discovery-scaffold.json +41 -0
  1653. package/skills/client-discovery-interview/question-bank.md +149 -0
  1654. package/skills/compare-ventures/SKILL.md +113 -0
  1655. package/skills/context-engine/SKILL.md +169 -0
  1656. package/skills/conversation-mode/SKILL.md +189 -0
  1657. package/skills/correct-reference-now/SKILL.md +86 -0
  1658. package/skills/dashboard/SKILL.md +142 -0
  1659. package/skills/deck/SKILL.md +113 -0
  1660. package/skills/deep-grade/SKILL.md +210 -0
  1661. package/skills/diagnose/SKILL.md +128 -0
  1662. package/skills/diagnostics/SKILL.md +193 -0
  1663. package/skills/dial-memory-refresh/SKILL.md +116 -0
  1664. package/skills/diffusion/SKILL.md +125 -0
  1665. package/skills/discover/SKILL.md +216 -0
  1666. package/skills/doctor/SKILL.md +269 -0
  1667. package/skills/dogfood-flush/SKILL.md +133 -0
  1668. package/skills/dominant-designs/SKILL.md +72 -0
  1669. package/skills/eureka/SKILL.md +313 -0
  1670. package/skills/explain-decision/SKILL.md +138 -0
  1671. package/skills/explore-domains/SKILL.md +74 -0
  1672. package/skills/explore-futures/SKILL.md +64 -0
  1673. package/skills/explore-opportunity/SKILL.md +168 -0
  1674. package/skills/explore-trends/SKILL.md +74 -0
  1675. package/skills/export/SKILL.md +126 -0
  1676. package/skills/feynman-timeline-refresh/SKILL.md +105 -0
  1677. package/skills/file-meeting/SKILL.md +1190 -0
  1678. package/skills/find-analogies/SKILL.md +360 -0
  1679. package/skills/find-bottlenecks/SKILL.md +104 -0
  1680. package/skills/find-connections/SKILL.md +108 -0
  1681. package/skills/funding/SKILL.md +110 -0
  1682. package/skills/futures/SKILL.md +124 -0
  1683. package/skills/grade/SKILL.md +252 -0
  1684. package/skills/grade-grant/SKILL.md +293 -0
  1685. package/skills/graph/SKILL.md +216 -0
  1686. package/skills/hat-briefing/SKILL.md +160 -0
  1687. package/skills/heal/SKILL.md +69 -0
  1688. package/skills/help/SKILL.md +172 -0
  1689. package/skills/hmi-status/SKILL.md +73 -0
  1690. package/skills/ignite/SKILL.md +225 -0
  1691. package/skills/ingest-methodology/SKILL.md +125 -0
  1692. package/skills/intel-pipeline/SKILL.md +128 -0
  1693. package/skills/intelligence-orchestrator/SKILL.md +262 -0
  1694. package/skills/jtbd/SKILL.md +261 -0
  1695. package/skills/larry-personality/SKILL.md +570 -0
  1696. package/skills/larry-personality/framework-chains.md +92 -0
  1697. package/skills/larry-personality/mode-engine.md +185 -0
  1698. package/skills/leadership/SKILL.md +109 -0
  1699. package/skills/lean-canvas/SKILL.md +70 -0
  1700. package/skills/macro-trends/SKILL.md +84 -0
  1701. package/skills/map-unknowns/SKILL.md +72 -0
  1702. package/skills/memory/SKILL.md +212 -0
  1703. package/skills/memory-cortex-reach/SKILL.md +80 -0
  1704. package/skills/models/SKILL.md +197 -0
  1705. package/skills/mos/SKILL.md +160 -0
  1706. package/skills/mos-deck-engine/SKILL.md +329 -0
  1707. package/skills/mos-reason/SKILL.md +484 -0
  1708. package/skills/mullins/SKILL.md +151 -0
  1709. package/skills/mullins-scaffold/SKILL.md +132 -0
  1710. package/skills/mullins-scaffold/scaffold.json +223 -0
  1711. package/skills/mva-brief/SKILL.md +87 -0
  1712. package/skills/mva-option/SKILL.md +120 -0
  1713. package/skills/mva-pipeline/SKILL.md +158 -0
  1714. package/skills/mva-report/SKILL.md +79 -0
  1715. package/skills/new-project/SKILL.md +629 -0
  1716. package/skills/new-surface/SKILL.md +112 -0
  1717. package/skills/onboard/SKILL.md +485 -0
  1718. package/skills/operator/SKILL.md +167 -0
  1719. package/skills/opportunities/SKILL.md +171 -0
  1720. package/skills/organize/SKILL.md +69 -0
  1721. package/skills/persona/SKILL.md +272 -0
  1722. package/skills/pipeline/SKILL.md +164 -0
  1723. package/skills/present/SKILL.md +123 -0
  1724. package/skills/publish/SKILL.md +224 -0
  1725. package/skills/pws-brain/SKILL.md +152 -0
  1726. package/skills/pws-methodology/SKILL.md +92 -0
  1727. package/skills/qualify-opportunity/SKILL.md +111 -0
  1728. package/skills/query/SKILL.md +68 -0
  1729. package/skills/radar/SKILL.md +106 -0
  1730. package/skills/reanalyze/SKILL.md +122 -0
  1731. package/skills/research/SKILL.md +462 -0
  1732. package/skills/room/SKILL.md +381 -0
  1733. package/skills/room-passive/SKILL.md +174 -0
  1734. package/skills/room-proactive/SKILL.md +344 -0
  1735. package/skills/rooms/SKILL.md +678 -0
  1736. package/skills/root-cause/SKILL.md +73 -0
  1737. package/skills/rs-experts/SKILL.md +151 -0
  1738. package/skills/rs-explain/SKILL.md +130 -0
  1739. package/skills/rs-fetch/SKILL.md +115 -0
  1740. package/skills/rs-thesis/SKILL.md +129 -0
  1741. package/skills/scenario-plan/SKILL.md +76 -0
  1742. package/skills/scheduled-tasks/SKILL.md +301 -0
  1743. package/skills/score-innovation/SKILL.md +74 -0
  1744. package/skills/scout/SKILL.md +370 -0
  1745. package/skills/setup/SKILL.md +654 -0
  1746. package/skills/show/SKILL.md +68 -0
  1747. package/skills/skill/SKILL.md +104 -0
  1748. package/skills/snapshot/SKILL.md +178 -0
  1749. package/skills/speakers/SKILL.md +116 -0
  1750. package/skills/splash/SKILL.md +54 -0
  1751. package/skills/stance/SKILL.md +89 -0
  1752. package/skills/status/SKILL.md +107 -0
  1753. package/skills/structure-argument/SKILL.md +78 -0
  1754. package/skills/suggest-next/SKILL.md +137 -0
  1755. package/skills/systems-thinking/SKILL.md +220 -0
  1756. package/skills/think-hats/SKILL.md +82 -0
  1757. package/skills/trending-to-absurd/SKILL.md +100 -0
  1758. package/skills/ui-system/SKILL.md +474 -0
  1759. package/skills/ui-system/design-system/M-OS-DESIGN-SYSTEM.md +273 -0
  1760. package/skills/ui-system/design-system/SPEC.md +72 -0
  1761. package/skills/ui-system/design-system/image-prompt-style.md +29 -0
  1762. package/skills/ui-system/design-system/mos-design-system.css +240 -0
  1763. package/skills/ui-system/rules/design-system.md +60 -0
  1764. package/skills/ui-system/rules/dual-palette.md +156 -0
  1765. package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
  1766. package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
  1767. package/skills/update/SKILL.md +254 -0
  1768. package/skills/user-needs/SKILL.md +73 -0
  1769. package/skills/validate/SKILL.md +73 -0
  1770. package/skills/value-proposition/SKILL.md +141 -0
  1771. package/skills/vault/SKILL.md +326 -0
  1772. package/skills/visualize/SKILL.md +69 -0
  1773. package/skills/whitespace/SKILL.md +539 -0
  1774. package/skills/wiki/SKILL.md +94 -0
  1775. package/templates/_base.html +20 -0
  1776. package/templates/chat-panel.html +205 -0
  1777. package/templates/constellation-chat-hooks.js +89 -0
  1778. package/templates/constellation.html +1272 -0
  1779. package/templates/destijl-base.css +268 -0
  1780. package/templates/discovery/discovery-brief-template.md +97 -0
  1781. package/templates/due-diligence.html +49 -0
  1782. package/templates/executive-summary.html +40 -0
  1783. package/templates/icm/CLAUDE.md +31 -0
  1784. package/templates/icm/GROUP-CLAUDE.md +33 -0
  1785. package/templates/icm/INDEX.md +26 -0
  1786. package/templates/import/stage-contracts/01-ingest.md +34 -0
  1787. package/templates/import/stage-contracts/02-classify.md +48 -0
  1788. package/templates/import/stage-contracts/03-route.md +42 -0
  1789. package/templates/import/stage-contracts/04-enrich.md +40 -0
  1790. package/templates/investment-thesis.html +25 -0
  1791. package/templates/meeting-report.html +361 -0
  1792. package/templates/presentation/dashboard.html +1150 -0
  1793. package/templates/presentation/deck.html +540 -0
  1794. package/templates/presentation/diagrams.html +437 -0
  1795. package/templates/presentation/graph.html +391 -0
  1796. package/templates/presentation/insights.html +548 -0
  1797. package/templates/presentation/wiki.html +533 -0
  1798. package/templates/profile.html +136 -0
  1799. package/templates/room-context/last-session.md +56 -0
  1800. package/templates/room-context/methodology-history.md +28 -0
  1801. package/templates/room-context/rejection-log.md +25 -0
  1802. package/templates/room-context/weekly-digest.md +54 -0
  1803. package/templates/room-skeleton/MINTO.md.tmpl +19 -0
  1804. package/templates/room-skeleton/ROOM.md.identity.tmpl +13 -0
  1805. package/templates/room-skeleton/ROOM.md.section.tmpl +33 -0
  1806. package/templates/room-skeleton/STATE.md.tmpl +33 -0
  1807. package/templates/room-skeleton/USER.md.tmpl +23 -0
  1808. package/templates/room-skeleton/references/.gitkeep +0 -0
  1809. package/templates/room-skeleton/references/SECTION-SCHEMA.md +213 -0
  1810. package/templates/room-skeleton/references/SUB-SCHEMAS.md +91 -0
  1811. package/templates/room-skeleton/section-contracts/.gitkeep +0 -0
  1812. package/templates/room-skeleton/section-contracts/business-model.md +32 -0
  1813. package/templates/room-skeleton/section-contracts/competitive-analysis.md +33 -0
  1814. package/templates/room-skeleton/section-contracts/financial-model.md +30 -0
  1815. package/templates/room-skeleton/section-contracts/funding.md +41 -0
  1816. package/templates/room-skeleton/section-contracts/legal-ip.md +30 -0
  1817. package/templates/room-skeleton/section-contracts/market-analysis.md +32 -0
  1818. package/templates/room-skeleton/section-contracts/opportunity-bank.md +39 -0
  1819. package/templates/room-skeleton/section-contracts/problem-definition.md +32 -0
  1820. package/templates/room-skeleton/section-contracts/solution-design.md +36 -0
  1821. package/templates/room-skeleton/section-contracts/strategy.md +35 -0
  1822. package/templates/room-skeleton/section-contracts/team-execution.md +36 -0
  1823. package/templates/shared.css +427 -0
  1824. package/templates/showcase/blueprint.html +432 -0
  1825. package/templates/showcase/library.html +571 -0
  1826. package/templates/showcase/narrative.html +361 -0
  1827. package/templates/showcase/overview.html +468 -0
  1828. package/templates/showcase/synthesis.html +473 -0
  1829. package/templates/signature-footer.html +34 -0
@@ -0,0 +1,1163 @@
1
+ /*
2
+ * Copyright (c) 2026 Mindrian. BSL 1.1.
3
+ *
4
+ * Phase 117-01 Wave 1 -- AutoExploreAgent skeleton.
5
+ * Phase 117-02 Wave 1 -- composeAutoExploreFinding + Brain Substrate constants.
6
+ * Phase 117-03 Wave 2 -- F.1 surface: surfaceFinding + handleUserResponse +
7
+ * populateHSIAnalysis + composeBQAnchoredLarryVoice + buildExploreApprovedEdge
8
+ * + BQ_TEMPLATE_REGISTRY constant.
9
+ *
10
+ * Mirrors lib/agents/tension-hook-agent.cjs structure verbatim per RESEARCH
11
+ * Section 3 (sibling code-clone). Wave 1 ships:
12
+ * - detectFirstMaterial (117-01)
13
+ * - composeAutoExploreFinding (117-02)
14
+ * - CANONICAL_CHAIN_ORDER + CROSS_DOMAIN_THRESHOLD (117-02)
15
+ * - crossDomainSurprise + crossDomainGate helpers (117-02)
16
+ *
17
+ * Wave 2 (117-03 -- this plan) ships:
18
+ * - populateHSIAnalysis (Brain Section 8.4 HSIAnalysis schema population)
19
+ * - composeBQAnchoredLarryVoice (Brain Section 8.5 BQ-anchored render; not raw)
20
+ * - surfaceFinding (F.1 Decision Gate dispatch via lib/hmi/selector-dispatcher.cjs)
21
+ * - handleUserResponse (post-F.1 routing; INFORMS edge on EXPLORE)
22
+ * - buildExploreApprovedEdge (cascade edge spec for lazygraph-ops.upsertEdge)
23
+ * - BQ_TEMPLATE_REGISTRY (4-key registry; Brain Section 8.5 BQ patterns)
24
+ *
25
+ * Later waves ship:
26
+ * - 5 emit helpers (lands 117-05)
27
+ *
28
+ * Per Brain Section 8.7: detection routing is LOCAL-only. NO [Brain-only Cypher edge type, name elided to keep grep regression at zero]
29
+ * Brain calls. The detection rules below run entirely on file extension +
30
+ * path heuristics + room.db artifact count. AUTOEXPLORE-117-17 is enforced via
31
+ * the 117-04 grep regression that scans this file for [Brain-only Cypher edge type, name elided to keep grep regression at zero].
32
+ *
33
+ * Graph-native HARD RULES (memory feedback_reverse_salient_agent_graph_native.md):
34
+ * 1. NEVER require room-db.cjs directly (Phase 109 D-06 chokepoint).
35
+ * 2. NEVER require any Brain-MCP client module (Canon Part 8 boundary;
36
+ * the literal token name is elided to keep the bare-substring grep
37
+ * regression at zero per the 117-02 plan acceptance criteria).
38
+ * 3. NEVER write to stdout / stderr (telemetry side-channel rule).
39
+ *
40
+ * Pure CJS, node built-ins only, zero new runtime dependencies.
41
+ */
42
+ 'use strict';
43
+
44
+ const fs = require('node:fs');
45
+ const path = require('node:path');
46
+ const crypto = require('node:crypto');
47
+ const store = require('../memory/explored-materials-store.cjs');
48
+
49
+ // Phase 121-02 D-06: vocabulary maps for unified auto_explore_decision emit.
50
+ // Phase 117 source_pipeline {domain, reverse-salients, cross-domain}
51
+ // -> unified finding_type {whitespace, reverse_salient, cross_domain}.
52
+ // Phase 117 F.1 verbs {EXPLORE, LATER, SKIP}
53
+ // -> unified user_response {kept, redid, ignored}.
54
+ // FREE_TEXT is intentionally EXCLUDED -- it is a system fallback when the
55
+ // navigator types prose; it is not a clean engagement signal.
56
+ // auto_explore_skipped (system-driven suppress paths) is also EXCLUDED --
57
+ // those fire from emitSkipped, never from handleUserResponse.
58
+ const D06_FINDING_TYPE_MAP = Object.freeze({
59
+ 'domain': 'whitespace',
60
+ 'reverse-salients': 'reverse_salient',
61
+ 'cross-domain': 'cross_domain',
62
+ });
63
+ const D06_USER_RESPONSE_MAP = Object.freeze({
64
+ EXPLORE: 'kept',
65
+ LATER: 'redid',
66
+ SKIP: 'ignored',
67
+ });
68
+
69
+ // ---------- Constants ----------
70
+
71
+ const MATERIAL_ID_LEN = 32;
72
+
73
+ /**
74
+ * CANONICAL_CHAIN_ORDER -- Brain Section 8.1 canonical sequence from
75
+ * Stage 'Opportunity Discovery' HAS_STEP -> ProcessStep chain:
76
+ * 1. "Define Domain and Sub-Domain" -> tag: 'domain'
77
+ * 2. "Identify Trends to Exploit" -> tag: 'trends'
78
+ * 3. "Identify Reverse Salients" -> tag: 'reverse-salients'
79
+ * 4. (value-add layer, not a Brain ProcessStep) -> tag: 'cross-domain'
80
+ *
81
+ * Composition output preserves this order as the PRIMARY ranking axis;
82
+ * HSI score is the SECONDARY axis. AUTOEXPLORE-117-13 invariant.
83
+ * Reference: Brain Cypher Q2 (RESEARCH Section 8.9) -- verified 2026-05-06.
84
+ *
85
+ * The literal label "domain -> trends -> reverse-salients -> cross-domain"
86
+ * is preserved here verbatim so the AUTOEXPLORE-117-13 source-citation grep
87
+ * regression returns >= 1 hit on this file.
88
+ */
89
+ const CANONICAL_CHAIN_ORDER = Object.freeze(['domain', 'trends', 'reverse-salients', 'cross-domain']);
90
+
91
+ /**
92
+ * CROSS_DOMAIN_THRESHOLD -- Brain Section 8.3 default from
93
+ * node 'cynefin-cross-domain-detector' detection_method:
94
+ * "cosine_similarity > threshold AND different_domains"
95
+ * surprise_score formula:
96
+ * "similarity * domain_distance"
97
+ *
98
+ * Default 0.85 matches Phase 89-07 dedup gate per RESEARCH Section 8.3.
99
+ * AUTOEXPLORE-117-14 invariant.
100
+ */
101
+ const CROSS_DOMAIN_THRESHOLD = 0.85;
102
+
103
+ /**
104
+ * BQ_TEMPLATE_REGISTRY -- Brain Section 8.5 BQ-anchored Larry voice templates.
105
+ *
106
+ * Per Brain Cypher Q6 (BeautifulQuestion-[GUIDED_BY|GENERATES_MATRIX]-)
107
+ * domain analysis links to a portfolio of canonical questions. Phase 117
108
+ * v1 ships a LOCAL registry of 4 templates keyed by source_pipeline tag;
109
+ * future variant may replace via runtime Brain query (deferred to Phase 110
110
+ * Brain Context Packet Contract).
111
+ *
112
+ * Per Brain Section 8.5: F.1 line is BQ-anchored, NOT raw technical match.
113
+ * AUTOEXPLORE-117-16 invariant.
114
+ *
115
+ * W7 fix iteration 1: bq_id keys are LOCAL shorthand. brain_canonical_name field
116
+ * carries the verbatim Brain BQ name from RESEARCH Section 8.5 Cypher result;
117
+ * this is the moat-aligned key per docs/MOAT-MANDATE.md -- preserve verbatim
118
+ * across phases so cross-room comparability holds. 'bq_id' is the local registry
119
+ * lookup key; 'brain_canonical_name' is the Brain handle.
120
+ */
121
+ const BQ_TEMPLATE_REGISTRY = Object.freeze({
122
+ 'cross-domain': {
123
+ template: "What if the deepest pattern here isn't '{category_error}' but '{semantic_surprise}'?",
124
+ bq_id: 'bq-emerging-patterns',
125
+ bq_text: 'What new relationships or surprising patterns are emerging from our diverse evidence and where might they lead?',
126
+ brain_canonical_name: 'Question-Domain-Expert Breakthrough Map', // GENERATES_MATRIX BQ from Brain Cypher Section 8.5
127
+ },
128
+ 'reverse-salients': {
129
+ template: "What lagging element in '{source_section}' is holding back '{target_section}'?",
130
+ bq_id: 'bq-reverse-salient',
131
+ bq_text: 'Which lagging components in this system most constrain its forward motion?',
132
+ brain_canonical_name: 'Domain Reassessment & Transition', // GUIDED_BY BQ from Brain Cypher Section 8.5
133
+ },
134
+ 'domain': {
135
+ template: "What essential elements of '{source_section}' are we missing?",
136
+ bq_id: 'bq-domain-decomposition',
137
+ bq_text: 'What essential elements or patterns can we surface by breaking this context into its smallest actionable parts?',
138
+ brain_canonical_name: 'Domain Sensing & Placement', // GUIDED_BY BQ from Brain Cypher Section 8.5
139
+ },
140
+ 'trends': {
141
+ template: "What trend signals are reshaping '{source_section}' faster than we are adapting?",
142
+ bq_id: 'bq-domain-reassessment',
143
+ bq_text: 'How should we recalibrate our understanding now that new patterns or evidence have shifted domain boundaries?',
144
+ brain_canonical_name: 'Domain Reassessment & Transition', // GUIDED_BY BQ from Brain Cypher Section 8.5
145
+ },
146
+ });
147
+
148
+ // ---------- Cross-domain helpers (Brain Section 8.3) ----------
149
+
150
+ /**
151
+ * crossDomainSurprise -- Brain Section 8.3 canonical formula.
152
+ *
153
+ * surprise = similarity * domain_distance
154
+ *
155
+ * Commutative; deterministic; never throws. Non-finite inputs collapse to 0
156
+ * (the null path is "no candidate produced", not "zero-score").
157
+ *
158
+ * @param {number} similarity cosine similarity in [0,1]
159
+ * @param {number} domainDistance domain-distance scalar in [0,1]
160
+ * @returns {number}
161
+ */
162
+ function crossDomainSurprise(similarity, domainDistance) {
163
+ const s = Number(similarity);
164
+ const d = Number(domainDistance);
165
+ if (!Number.isFinite(s) || !Number.isFinite(d)) return 0;
166
+ return s * d;
167
+ }
168
+
169
+ /**
170
+ * crossDomainGate -- Brain Section 8.3 detection_method gate.
171
+ *
172
+ * cosine_similarity > threshold AND different_domains
173
+ *
174
+ * Defaults threshold to CROSS_DOMAIN_THRESHOLD (0.85) when caller does not
175
+ * pass an explicit threshold. Returns false on any non-finite cosine.
176
+ *
177
+ * @param {number} cosine cosine similarity in [0,1]
178
+ * @param {string} sourceDomain domain label of the source
179
+ * @param {string} targetDomain domain label of the target
180
+ * @param {number} [threshold] override default threshold (must be > 0)
181
+ * @returns {boolean}
182
+ */
183
+ function crossDomainGate(cosine, sourceDomain, targetDomain, threshold) {
184
+ const c = Number(cosine);
185
+ if (!Number.isFinite(c)) return false;
186
+ const t = (Number.isFinite(Number(threshold)) && Number(threshold) > 0)
187
+ ? Number(threshold)
188
+ : CROSS_DOMAIN_THRESHOLD;
189
+ return c > t && String(sourceDomain || '') !== String(targetDomain || '');
190
+ }
191
+
192
+ // ---------- detectFirstMaterial (LOCAL-only routing) ----------
193
+
194
+ /**
195
+ * Brain §8.7 INVARIANT (LOCAL-ONLY DETECTION ROUTING).
196
+ *
197
+ * Per Brain Cypher Q7 (RESEARCH Section 8.9) the canonical
198
+ * Domain & Trend Analysis Technique (id: 'tech-domain-analysis') is NOT
199
+ * bound to any ProblemType node in Brain via [Brain-only Cypher edge
200
+ * type, name elided to keep grep regression at zero], ADDRESSES, or
201
+ * FOR_PROBLEM relationships. The Cypher query returned EMPTY results
202
+ * when verified 2026-05-06.
203
+ *
204
+ * Implication: the auto-fire decision ("is this material domain-analyzable?")
205
+ * CANNOT be delegated to Brain. Detection rules MUST be self-contained in
206
+ * LOCAL code (file extension + path heuristics + room.db artifact count).
207
+ *
208
+ * Phase 117's first-material detection (117-01) does NOT block on Brain
209
+ * enrichment that doesn't exist; the auto-fire decision is LOCAL-only.
210
+ * Brain is consulted later (composeAutoExploreFinding via §8.4 HSIAnalysis
211
+ * schema reference and §8.5 BQ template registry) but NEVER for the
212
+ * detection-vs-skip routing decision.
213
+ *
214
+ * AUTOEXPLORE-117-17 enforced via:
215
+ * - This comment block (visible to maintainers)
216
+ * - Regression grep in tests/test-detection-routing-local-only.cjs
217
+ * (asserts grep on the Brain-only edge-type token returns 0 in agent.cjs)
218
+ *
219
+ * DO NOT add the Brain edge-type call to this module.
220
+ */
221
+
222
+ /**
223
+ * Decide whether the PostToolUse Write|Edit|MultiEdit event represents a
224
+ * "first material" worth exploring. Per Brain §8.7 the routing is
225
+ * entirely LOCAL: no Brain [Brain-only Cypher edge type, name elided to keep grep regression at zero] call, no remote query.
226
+ *
227
+ * Tier 0: artifactCount < 0 means caller could not determine (room.db missing
228
+ * or unreadable). Suppress with 'tier_0'.
229
+ * Tier 1: artifactCount in [0, 4]. First-material candidate; eligible to fire.
230
+ * Tier 2+: artifactCount >= 5. Auto-fire still eligible; daily-cap takes
231
+ * precedence and is enforced by the caller (the fingerprint hook).
232
+ *
233
+ * @param {object} args
234
+ * @param {string} args.roomDir absolute path to room (with .room-root)
235
+ * @param {string} args.relativeFilePath path relative to roomDir
236
+ * @param {number} args.mtimeMs file mtime in ms-epoch
237
+ * @param {number} args.artifactCount rows in nodes table for this room
238
+ * (use -1 to signal db missing -> Tier 0)
239
+ * @returns {{is_first_material: boolean, tier: number, material_id: string|null,
240
+ * suppress_reason: string|null}}
241
+ */
242
+ function detectFirstMaterial(args) {
243
+ const roomDir = (args && typeof args.roomDir === 'string') ? args.roomDir : '';
244
+ const relativeFilePath = (args && typeof args.relativeFilePath === 'string') ? args.relativeFilePath : '';
245
+ const mtimeMs = (args && Number.isFinite(args.mtimeMs)) ? args.mtimeMs : NaN;
246
+ const artifactCount = (args && Number.isFinite(args.artifactCount)) ? args.artifactCount : 0;
247
+
248
+ if (!roomDir || !relativeFilePath || !Number.isFinite(mtimeMs)) {
249
+ return {
250
+ is_first_material: false,
251
+ tier: 0,
252
+ material_id: null,
253
+ suppress_reason: 'invalid_args',
254
+ };
255
+ }
256
+
257
+ const material_id = store.computeMaterialId(roomDir, relativeFilePath, mtimeMs);
258
+
259
+ // Tier 0: artifactCount < 0 means caller could not read room.db.
260
+ if (artifactCount < 0) {
261
+ return {
262
+ is_first_material: false,
263
+ tier: 0,
264
+ material_id: material_id,
265
+ suppress_reason: 'tier_0',
266
+ };
267
+ }
268
+
269
+ // Tier 1 (0..4 artifacts) is the first-material moment per CONTEXT.md.
270
+ // Tier 2+ (5+ artifacts) is also auto-fire eligible -- the daily-cap enforces
271
+ // the per-room rate limit (CONTEXT.md AC4 + RESEARCH Section 4.5).
272
+ const tier = artifactCount < 5 ? 1 : 2;
273
+ return {
274
+ is_first_material: true,
275
+ tier: tier,
276
+ material_id: material_id,
277
+ suppress_reason: null,
278
+ };
279
+ }
280
+
281
+ // ---------- composeAutoExploreFinding (Brain Section 8.1 + 8.3 + 8.4) ----------
282
+
283
+ /**
284
+ * composeAutoExploreFinding({material_id, whitespace, rs, analogy})
285
+ *
286
+ * Per Brain Section 8.1 (Stage 'Opportunity Discovery' HAS_STEP sequence):
287
+ * emits candidates in CANONICAL_CHAIN_ORDER (domain -> trends ->
288
+ * reverse-salients -> cross-domain) as primary axis; HSI score as secondary
289
+ * axis.
290
+ *
291
+ * Per Brain Section 8.3 (Cross-Domain Surprise Detector formula): cross-domain
292
+ * tier applies surprise = similarity * domain_distance with gate cosine >
293
+ * threshold AND different_domains.
294
+ *
295
+ * Per Brain Section 8.4 (HSIAnalysis schema): finding object extends
296
+ * HSIAnalysis shape; population in 117-03 (populateHSIAnalysis fills the
297
+ * null/empty placeholders below).
298
+ *
299
+ * Returns the finding object or null when all pipelines yield zero candidates.
300
+ *
301
+ * Per Brain Section 8.7: this function performs ZERO Brain queries. Routing
302
+ * is LOCAL-only. The literal token [Brain-only Cypher edge type, name elided
303
+ * to keep grep regression at zero] never appears here.
304
+ *
305
+ * @param {object} args
306
+ * @param {string} args.material_id 32-char hex from store.computeMaterialId
307
+ * @param {object} [args.whitespace] { gaps: [...] } from compute-whitespace-gaps.py
308
+ * @param {object} [args.rs] { pairs: [...] } from rs-engine.py --mode hybrid
309
+ * @param {object} [args.analogy] { zones: [...] } from discovery-cycle.cjs analogy_whitespace
310
+ * @returns {object|null}
311
+ */
312
+ function composeAutoExploreFinding(args) {
313
+ const material_id = String((args && args.material_id) || '');
314
+ if (!material_id) return null;
315
+ const whitespace = (args && args.whitespace) || {};
316
+ const rs = (args && args.rs) || {};
317
+ const analogy = (args && args.analogy) || {};
318
+
319
+ // Per Brain Section 8.1: emit candidates tagged by canonical-chain pipeline,
320
+ // preserving the HAS_STEP sequence as primary axis.
321
+ const buckets = {
322
+ 'domain': [],
323
+ 'trends': [],
324
+ 'reverse-salients': [],
325
+ 'cross-domain': [],
326
+ };
327
+
328
+ // Whitespace gaps -> 'domain' bucket (the Define Domain ProcessStep).
329
+ const wsGaps = Array.isArray(whitespace.gaps) ? whitespace.gaps : [];
330
+ for (const gap of wsGaps) {
331
+ if (!gap || typeof gap !== 'object') continue;
332
+ const nearest = (Array.isArray(gap.nearest_room_artifacts) && gap.nearest_room_artifacts[0]) || null;
333
+ buckets['domain'].push({
334
+ source_pipeline: 'domain',
335
+ source_node_id: (nearest && nearest.id) || null,
336
+ target_node_id: null,
337
+ score: 1.0 - (Number(gap.density_score) || 0),
338
+ source_section: (nearest && nearest.section) || '',
339
+ target_section: '',
340
+ framework_chain: Array.isArray(gap.framework_chain) ? gap.framework_chain.slice() : [],
341
+ });
342
+ }
343
+
344
+ // Trends bucket: when whitespace.gaps are tagged with framework_chain
345
+ // including 'Trends' or external-paper signals -- for v1 we LEAVE this
346
+ // bucket empty (Phase 88.6 external-paper integration is the natural
347
+ // future feed); the bucket exists so canonical-order is structurally
348
+ // present (test 4: missing pipeline => empty array, not absent key).
349
+ // No-op block intentional.
350
+
351
+ // RS pairs -> 'reverse-salients' bucket (the Identify Reverse Salients ProcessStep).
352
+ const rsPairs = Array.isArray(rs.pairs) ? rs.pairs : [];
353
+ for (const pair of rsPairs) {
354
+ if (!pair || typeof pair !== 'object') continue;
355
+ buckets['reverse-salients'].push({
356
+ source_pipeline: 'reverse-salients',
357
+ source_node_id: pair.source_artifact_id,
358
+ target_node_id: pair.target_artifact_id,
359
+ score: Math.abs(Number(pair.signed_diff) || 0),
360
+ source_section: String(pair.source_section || ''),
361
+ target_section: String(pair.target_section || ''),
362
+ framework_chain: ['Reverse Salients'],
363
+ direction: pair.direction,
364
+ });
365
+ }
366
+
367
+ // Analogy zones -> 'cross-domain' bucket; apply Brain Section 8.3 gate + formula.
368
+ const analogyZones = Array.isArray(analogy.zones) ? analogy.zones : [];
369
+ for (const zone of analogyZones) {
370
+ if (!zone || typeof zone !== 'object') continue;
371
+ const cosine = Number(zone.relevance) || 0;
372
+ const sourceDomain = String(zone.source_domain || zone.source_section || '');
373
+ const targetDomain = String(zone.target_domain || zone.target_section || '');
374
+ if (!crossDomainGate(cosine, sourceDomain, targetDomain)) continue;
375
+ // Simple binary distance for v1: different_domains => 1.0; the gate already
376
+ // filtered out same-domain pairs. Future iterations may compute true distance
377
+ // from the embedding manifold but the formula stays similarity * domain_distance.
378
+ const domainDistance = (sourceDomain && targetDomain) ? 1.0 : 0;
379
+ const surprise = crossDomainSurprise(cosine, domainDistance);
380
+ buckets['cross-domain'].push({
381
+ source_pipeline: 'cross-domain',
382
+ source_node_id: zone.source_node_id,
383
+ target_node_id: zone.target_node_id,
384
+ score: surprise,
385
+ source_section: sourceDomain,
386
+ target_section: targetDomain,
387
+ framework_chain: ['Cross-Domain Analogy'],
388
+ });
389
+ }
390
+
391
+ // Dedup by (source_node_id, target_node_id) ACROSS BUCKETS -- pick max score.
392
+ // Preserves the canonical-order tag on whichever pipeline produced the higher
393
+ // score for that (src,tgt) tuple.
394
+ const dedup = new Map();
395
+ let totalCandidates = 0;
396
+ for (const tag of CANONICAL_CHAIN_ORDER) {
397
+ const arr = buckets[tag];
398
+ // Sort within bucket by score DESC (secondary axis).
399
+ arr.sort(function (a, b) { return Number(b.score) - Number(a.score); });
400
+ for (const c of arr) {
401
+ totalCandidates += 1;
402
+ const key = String(c.source_node_id) + '|' + String(c.target_node_id);
403
+ const existing = dedup.get(key);
404
+ if (!existing || Number(existing.score) < Number(c.score)) dedup.set(key, c);
405
+ }
406
+ }
407
+
408
+ const ranked = Array.from(dedup.values());
409
+ // Primary axis: pipeline tier (canonical order); secondary: score DESC.
410
+ ranked.sort(function (a, b) {
411
+ const ai = CANONICAL_CHAIN_ORDER.indexOf(a.source_pipeline);
412
+ const bi = CANONICAL_CHAIN_ORDER.indexOf(b.source_pipeline);
413
+ if (ai !== bi) return ai - bi;
414
+ return Number(b.score) - Number(a.score);
415
+ });
416
+
417
+ if (ranked.length === 0) return null;
418
+ const top = ranked[0];
419
+
420
+ // Deterministic finding id per Brain Section 8.4 finding-shape contract.
421
+ const idBasis = String(material_id) + '|' +
422
+ String(top.source_node_id) + '|' +
423
+ String(top.target_node_id) + '|' +
424
+ String(top.source_pipeline);
425
+ const id = crypto.createHash('sha256').update(idBasis).digest('hex').slice(0, 32);
426
+
427
+ // candidates_per_pipeline keys MUST exactly match CANONICAL_CHAIN_ORDER
428
+ // (test AUTOEXPLORE-117-13 #4: missing pipeline fills with empty array).
429
+ const candidates_per_pipeline = {};
430
+ for (const tag of CANONICAL_CHAIN_ORDER) candidates_per_pipeline[tag] = buckets[tag].length;
431
+
432
+ return {
433
+ id: id,
434
+ material_id: material_id,
435
+ source_pipeline: top.source_pipeline,
436
+ source_node_id: top.source_node_id,
437
+ target_node_id: (top.target_node_id === undefined) ? null : top.target_node_id,
438
+ score: top.score,
439
+ candidate_count: totalCandidates,
440
+ candidates_per_pipeline: candidates_per_pipeline,
441
+ // HSIAnalysis schema extension (Brain Section 8.4) -- populated in 117-03:
442
+ top_differential: null,
443
+ semantic_surprise: null,
444
+ category_errors_identified: [],
445
+ top_differential_score: null,
446
+ // Provenance (Canon Part 8: section names ONLY; NEVER user content fields):
447
+ source_section: top.source_section || '',
448
+ target_section: top.target_section || '',
449
+ framework_chain: Array.isArray(top.framework_chain) ? top.framework_chain.slice() : [],
450
+ generated_at: Date.now(),
451
+ };
452
+ }
453
+
454
+ // ---------- populateHSIAnalysis (Brain Section 8.4 schema population) ----------
455
+
456
+ /**
457
+ * populateHSIAnalysis(finding) -- populate Brain Section 8.4 HSIAnalysis schema
458
+ * fields from finding provenance. Wave 2 ships shape contract with nulls; this
459
+ * function fills them at render time so F.1 dispatch can apply the RECOMMENDED
460
+ * gate at top_differential_score >= 0.7 (Phase 88.2 invariant + AUTOEXPLORE-117-15).
461
+ *
462
+ * Per Brain Section 8.4 canonical HSIAnalysis property set:
463
+ * top_differential: string like "x * y: 0.985" (the top match)
464
+ * semantic_surprise: one-line reframe
465
+ * category_errors_identified: what the material was misframed as
466
+ * top_differential_score: 0-1 numeric; F.1 RECOMMENDED gate at >= 0.7
467
+ *
468
+ * Deterministic, idempotent (re-runs collapse to same shape). Never throws.
469
+ *
470
+ * @param {object} finding composeAutoExploreFinding output
471
+ * @returns {object} finding extended with 4 HSIAnalysis fields populated
472
+ */
473
+ function populateHSIAnalysis(finding) {
474
+ if (!finding || typeof finding !== 'object') return finding;
475
+ const score = Number(finding.score) || 0;
476
+ const sourceSec = String(finding.source_section || '');
477
+ const targetSec = String(finding.target_section || '');
478
+ // top_differential: render as "<source_section> * <target_section>: <score>"
479
+ // (no user-content fields per Canon Part 8).
480
+ const top_differential = (sourceSec && targetSec)
481
+ ? sourceSec + ' * ' + targetSec + ': ' + score.toFixed(3)
482
+ : (sourceSec ? sourceSec + ': ' + score.toFixed(3) : '<unspecified>: ' + score.toFixed(3));
483
+ // semantic_surprise: derived from source_pipeline tag (one-line reframe).
484
+ const reframeByPipeline = {
485
+ 'cross-domain': 'A non-obvious analogy across domains worth exploring',
486
+ 'reverse-salients': 'A lagging element constraining forward motion',
487
+ 'domain': 'A whitespace gap in the canonical decomposition',
488
+ 'trends': 'A trend signal reshaping the domain faster than adaptation',
489
+ };
490
+ const semantic_surprise = reframeByPipeline[finding.source_pipeline] || reframeByPipeline['domain'];
491
+ // category_errors_identified: framework_chain provenance (what we WERE framing it as).
492
+ const category_errors_identified = Array.isArray(finding.framework_chain)
493
+ ? finding.framework_chain.slice(0, 5)
494
+ : [];
495
+ // top_differential_score: normalized score [0,1]; clamp.
496
+ const top_differential_score = Math.max(0, Math.min(1, score));
497
+ return Object.assign({}, finding, {
498
+ top_differential: top_differential,
499
+ semantic_surprise: semantic_surprise,
500
+ category_errors_identified: category_errors_identified,
501
+ top_differential_score: top_differential_score,
502
+ });
503
+ }
504
+
505
+ // ---------- composeBQAnchoredLarryVoice (Brain Section 8.5 BQ render) ----------
506
+
507
+ /**
508
+ * composeBQAnchoredLarryVoice(finding, opts) -- Brain Section 8.5 BQ-anchored
509
+ * render. Uses BQ_TEMPLATE_REGISTRY keyed by source_pipeline tag.
510
+ *
511
+ * Per RESEARCH Section 8.5: F.1 line MUST be BQ-anchored, never raw technical
512
+ * match. AUTOEXPLORE-117-16 invariant.
513
+ * Generic (avoid): "Top match: weather_algorithm * synthetic_inertia (0.985)"
514
+ * BQ-anchored: "What if the deepest pattern here isn't 'wind power' but
515
+ * 'embodied algorithms providing computational stability'?"
516
+ *
517
+ * Future variant (deferred to Phase 110 Brain Context Packet Contract) may
518
+ * substitute a runtime Brain query for the local registry; the v1 ships the
519
+ * 4-key local constant.
520
+ *
521
+ * @param {object} finding populateHSIAnalysis output (or composeAutoExploreFinding output)
522
+ * @param {object} [opts] optional persona arg (v1 ignores per AUTOEXPLORE-117-16 test 7)
523
+ * @returns {string}
524
+ */
525
+ function composeBQAnchoredLarryVoice(finding, opts) {
526
+ if (!finding || typeof finding !== 'object') return '';
527
+ // opts reserved for future persona-blend variant (v1: ignored).
528
+ void opts;
529
+ const tag = String(finding.source_pipeline || 'domain');
530
+ const tmpl = BQ_TEMPLATE_REGISTRY[tag] || BQ_TEMPLATE_REGISTRY['domain'];
531
+ const categoryError = (Array.isArray(finding.category_errors_identified)
532
+ && finding.category_errors_identified.length > 0)
533
+ ? String(finding.category_errors_identified[0])
534
+ : 'the surface framing';
535
+ const semanticSurprise = String(finding.semantic_surprise || 'the deeper pattern');
536
+ const sourceSection = String(finding.source_section || 'this material');
537
+ const targetSection = String(finding.target_section || 'the rest of the room');
538
+ let line = tmpl.template;
539
+ line = line.split('{category_error}').join(categoryError);
540
+ line = line.split('{semantic_surprise}').join(semanticSurprise);
541
+ line = line.split('{source_section}').join(sourceSection);
542
+ line = line.split('{target_section}').join(targetSection);
543
+ return line;
544
+ }
545
+
546
+ // ---------- buildExploreApprovedEdge (cascade edge spec) ----------
547
+
548
+ /**
549
+ * buildExploreApprovedEdge -- INFORMS cascade edge spec on F.1 EXPLORE.
550
+ *
551
+ * Mirrors lib/agents/tension-hook-agent.cjs::buildResolvedViaEdge with type-swap
552
+ * RESOLVES_VIA -> INFORMS.
553
+ *
554
+ * properties.source = 'auto-explore' (distinct from rs-engine attribution).
555
+ *
556
+ * Returns null on missing source/target (defensive; caller passes through to
557
+ * lazygraph-ops.upsertEdge which has its own validation).
558
+ *
559
+ * @param {object} args
560
+ * @param {object} args.finding populateHSIAnalysis output
561
+ * @param {string} [args.materialNodeId] the uploaded artifact node id
562
+ * @param {string} [args.parent_decision_id] sha256-32 hex
563
+ * @returns {object|null}
564
+ */
565
+ function buildExploreApprovedEdge(args) {
566
+ const finding = (args && args.finding) || {};
567
+ const materialNodeId = String((args && args.materialNodeId) || '');
568
+ const target = String(finding.target_node_id || '');
569
+ const source = materialNodeId || String(finding.source_node_id || '');
570
+ if (!source || !target) return null;
571
+ return {
572
+ type: 'INFORMS',
573
+ source: source,
574
+ target: target,
575
+ properties: {
576
+ source: 'auto-explore',
577
+ material_id: String(finding.material_id || ''),
578
+ finding_id: String(finding.id || ''),
579
+ parent_decision_id: String((args && args.parent_decision_id) || finding.id || ''),
580
+ canonical_chain_pipeline: String(finding.source_pipeline || ''),
581
+ created_at: Date.now(),
582
+ },
583
+ };
584
+ }
585
+
586
+ // ---------- surfaceFinding (F.1 Decision Gate dispatch) ----------
587
+
588
+ /**
589
+ * surfaceFinding({finding, roomDir, operator, tier}) -- F.1 Decision Gate dispatch.
590
+ *
591
+ * Mirrors lib/agents/tension-hook-agent.cjs::surfaceFinding shape verbatim
592
+ * with verb-swap [Resolve/Later/Skip] -> [Explore/Skip/Later] and edge-type
593
+ * swap RESOLVES_VIA -> INFORMS.
594
+ *
595
+ * Suppression paths per Phase 88.2 + RESEARCH Section 5 scenarios 1, 9:
596
+ * tier===0 -> {surfaced:false, suppress_reason:'tier_0'}
597
+ * operator==='JUST_TALK' -> {surfaced:false, suppress_reason:'just_talk'}
598
+ * dispatcher load fail -> {surfaced:false, suppress_reason:'dispatcher_load_failed'}
599
+ * pickShape throws -> {surfaced:false, suppress_reason:'dispatch_threw:<err>'}
600
+ * pickShape unavailable -> {surfaced:false, suppress_reason:'pickShape_unavailable'}
601
+ *
602
+ * Side-effect: atomic re-persist enriched finding to room/.mindrian/auto-explore-<material_id>.json
603
+ * so post-hoc audit reading the on-disk JSON sees populated HSI fields, not nulls
604
+ * (W6 fix iteration 1).
605
+ *
606
+ * @param {object} args
607
+ * @param {object} args.finding composeAutoExploreFinding output
608
+ * @param {string} args.roomDir absolute path to room (with .room-root)
609
+ * @param {string} [args.operator] 'AUTONOMOUS' | 'JUST_TALK' | undefined
610
+ * @param {number} [args.tier] 0 | 1 | 2
611
+ * @returns {object} {surfaced: bool, contract?, suppress_reason?, finding?, bq_line?, parent_decision_id?}
612
+ */
613
+ function surfaceFinding(args) {
614
+ const finding = (args && args.finding) || null;
615
+ const roomDir = String((args && args.roomDir) || '');
616
+ const operator = String((args && args.operator) || 'AUTONOMOUS');
617
+ const tier = Number((args && args.tier) || 0);
618
+
619
+ if (!finding || !finding.id) {
620
+ return { surfaced: false, suppress_reason: 'invalid_finding' };
621
+ }
622
+ if (tier === 0) {
623
+ return { surfaced: false, suppress_reason: 'tier_0', finding: finding };
624
+ }
625
+ if (operator === 'JUST_TALK') {
626
+ return { surfaced: false, suppress_reason: 'just_talk', finding: finding };
627
+ }
628
+
629
+ // Populate HSIAnalysis schema fields (Brain Section 8.4) before dispatch.
630
+ const populated = populateHSIAnalysis(finding);
631
+
632
+ // W6 fix iteration 1: atomic re-persist enriched finding to
633
+ // room/.mindrian/auto-explore-<material_id>.json so post-hoc audit reading
634
+ // the on-disk JSON sees populated HSI fields, not nulls. populateHSIAnalysis
635
+ // is deterministic -- re-runs are idempotent -- but persisting closes the
636
+ // audit-trail gap. Use the same atomic-write pattern from
637
+ // explored-materials-store.cjs (write-temp + rename).
638
+ if (roomDir && populated.material_id) {
639
+ try {
640
+ const mindrianDir = path.join(roomDir, '.mindrian');
641
+ try { fs.mkdirSync(mindrianDir, { recursive: true }); } catch (_e) { /* graceful */ }
642
+ const findingPath = path.join(mindrianDir, 'auto-explore-' + populated.material_id + '.json');
643
+ const tmpPath = findingPath + '.tmp.' + process.pid;
644
+ fs.writeFileSync(tmpPath, JSON.stringify(populated, null, 2), 'utf8');
645
+ fs.renameSync(tmpPath, findingPath);
646
+ } catch (_e) { /* best-effort persistence; surface still proceeds */ }
647
+ }
648
+
649
+ // F.1 RECOMMENDED gate per Phase 88.2 invariant: only at >= 0.7.
650
+ const recommendedVerb = (Number(populated.top_differential_score) >= 0.7) ? 'Explore' : null;
651
+
652
+ // Compose BQ-anchored Larry-voice line (Brain Section 8.5).
653
+ const bqLine = composeBQAnchoredLarryVoice(populated);
654
+
655
+ // Compose parent_decision_id (deterministic over finding.id; Phase 88.2-05 pattern).
656
+ const parent_decision_id = String(finding.id);
657
+
658
+ let dispatcher;
659
+ try {
660
+ dispatcher = require('../hmi/selector-dispatcher.cjs');
661
+ } catch (_e) {
662
+ return { surfaced: false, suppress_reason: 'dispatcher_load_failed', finding: populated };
663
+ }
664
+ if (!dispatcher || typeof dispatcher.pickShape !== 'function') {
665
+ return { surfaced: false, suppress_reason: 'pickShape_unavailable', finding: populated };
666
+ }
667
+
668
+ // Phase 121.5-10 Sub-plan K (audit Section 5.3): the locked [■ BRAIN]
669
+ // chip replaces the BQ-anchored header. The verbatim Brain BQ name
670
+ // (Phase 117 RESEARCH 8.5 moat) moves into the question-line slot
671
+ // beneath the chip so the two-row format preserves the BQ anchor
672
+ // signal without violating the 12-char chip rule. Verb-label aliases
673
+ // (Explore / Skip / Later) KEPT per LOCKED decision 1; alias_map
674
+ // collapses on selection (Explore -> Run Methodology, Skip -> Free-
675
+ // Text, Later -> Defer). The >= 0.7 recommendedVerb gate (Phase 88.2)
676
+ // determines the leading row's glyph in optionRows[0].
677
+ let aliasMap = {};
678
+ try {
679
+ const tax = require('../hmi/jtbd-taxonomy.json');
680
+ if (tax && tax.alias_map && tax.alias_map.verb_aliases) {
681
+ aliasMap = tax.alias_map.verb_aliases;
682
+ }
683
+ } catch (_e) { /* graceful */ }
684
+ const topScore = Number(populated.top_differential_score) || 0;
685
+ const verbsLocal = ['Explore', 'Skip', 'Later'];
686
+ const optionRows = verbsLocal.map(function (v, i) {
687
+ let meta = '';
688
+ if (v === 'Explore') meta = 'BQ-anchored explore · cascade ENABLES + INFORMS edges';
689
+ else if (v === 'Skip') meta = 'silent dismiss · no edge written';
690
+ else if (v === 'Later') meta = 'queue for next session · surfacing_count preserved';
691
+ const glyph = (v === 'Explore' && topScore >= 0.7) ? '▶' : '▷';
692
+ return {
693
+ glyph: glyph,
694
+ number: i + 1,
695
+ verb: v,
696
+ confPct: (v === 'Explore') ? Math.round(topScore * 100) : 0,
697
+ meta: meta,
698
+ };
699
+ });
700
+
701
+ let result;
702
+ try {
703
+ result = dispatcher.pickShape({
704
+ requestedShape: 'F.1',
705
+ roomDir: roomDir,
706
+ operator: operator,
707
+ tier: tier,
708
+ payload: {
709
+ brain_suggestion_variant: true,
710
+ verbs: verbsLocal,
711
+ header: '[■ BRAIN]',
712
+ questionLine: bqLine,
713
+ alias_map: aliasMap,
714
+ optionRows: optionRows,
715
+ footer: '▶ Brain · top-3 of 3 ranked · cyan = informing',
716
+ recommendedVerb: recommendedVerb,
717
+ emitTelemetry: true,
718
+ parent_decision_id: parent_decision_id,
719
+ },
720
+ });
721
+ } catch (err) {
722
+ const detail = String((err && err.message) || err).slice(0, 60);
723
+ return {
724
+ surfaced: false,
725
+ suppress_reason: 'dispatch_threw:' + detail,
726
+ finding: populated,
727
+ };
728
+ }
729
+
730
+ if (!result || result.shape === 'error') {
731
+ const errCode = (result && result.rendered && result.rendered.error)
732
+ ? String(result.rendered.error)
733
+ : 'pickShape_unavailable';
734
+ return {
735
+ surfaced: false,
736
+ suppress_reason: errCode,
737
+ finding: populated,
738
+ };
739
+ }
740
+
741
+ return {
742
+ surfaced: true,
743
+ contract: (result.rendered && result.rendered.contract) ? result.rendered.contract : (result.rendered || null),
744
+ rendered: result.rendered || null,
745
+ finding: populated,
746
+ bq_line: bqLine,
747
+ parent_decision_id: parent_decision_id,
748
+ };
749
+ }
750
+
751
+ // ---------- handleUserResponse (post-F.1 routing) ----------
752
+
753
+ /**
754
+ * handleUserResponse -- F.1 user-pick router.
755
+ *
756
+ * EXPLORE -> appendMaterial response='EXPLORE' + emit INFORMS cascade edge
757
+ * SKIP -> appendMaterial response='SKIP' (rejection captured per Canon Part 4 D-13)
758
+ * LATER -> appendMaterial response='LATER' (re-queue; surfacing_count NOT decremented)
759
+ * FREE_TEXT -> appendMaterial response='FREE_TEXT'; Larry interprets via Canon Part 3 Verb 10
760
+ *
761
+ * Wrapped in try/catch -- never throws. Returns scalar-only result envelope
762
+ * (no user-content fields) so the caller can mirror to telemetry safely.
763
+ *
764
+ * @param {object} args
765
+ * @param {object} args.finding populated finding object
766
+ * @param {string} args.userResponse 'EXPLORE'|'SKIP'|'LATER'|'FREE_TEXT' (case-insensitive)
767
+ * @param {string} args.roomDir absolute path to room
768
+ * @param {object} [args.db] node:sqlite DatabaseSync handle (for EXPLORE path)
769
+ * @param {string} [args.materialNodeId] explicit material node id (defaults to finding.source_node_id)
770
+ * @param {string} [args.parent_decision_id]
771
+ * @returns {object}
772
+ */
773
+ function handleUserResponse(args) {
774
+ try {
775
+ const finding = (args && args.finding) || {};
776
+ const userResponse = String((args && args.userResponse) || '').toUpperCase();
777
+ const roomDir = String((args && args.roomDir) || '');
778
+ const db = (args && args.db) || null;
779
+ const roomSlug = roomDir ? path.basename(roomDir) : 'default-room';
780
+
781
+ const valid = new Set(['EXPLORE', 'SKIP', 'LATER', 'FREE_TEXT']);
782
+ if (!valid.has(userResponse)) return { ok: false, reason: 'invalid_response' };
783
+
784
+ // Append responded entry to ledger (LWW).
785
+ const respondedEntry = {
786
+ material_id: String(finding.material_id || ''),
787
+ file_path_sha256: String(finding.file_path_sha256 || ''),
788
+ relative_file_path: '',
789
+ mtime_seconds: 0,
790
+ fired_at: Date.now(),
791
+ state: 'completed',
792
+ finding_count: 1,
793
+ surfaced: true,
794
+ user_response: userResponse,
795
+ responded_at: Date.now(),
796
+ suppress_reason: null,
797
+ in_flight_since: null,
798
+ };
799
+ let appendResult = null;
800
+ try {
801
+ appendResult = store.appendMaterial(roomSlug, respondedEntry);
802
+ } catch (_e) { /* graceful */ }
803
+
804
+ let edgeResult = null;
805
+ if (userResponse === 'EXPLORE' && db) {
806
+ // Emit INFORMS cascade edge per Canon Part 4.
807
+ const edgeSpec = buildExploreApprovedEdge({
808
+ finding: finding,
809
+ materialNodeId: (args && args.materialNodeId) || finding.source_node_id,
810
+ parent_decision_id: (args && args.parent_decision_id) || finding.id,
811
+ });
812
+ if (edgeSpec) {
813
+ try {
814
+ const lazygraph = require('../core/lazygraph-ops.cjs');
815
+ if (typeof lazygraph.upsertEdge === 'function') {
816
+ edgeResult = lazygraph.upsertEdge(db, edgeSpec);
817
+ }
818
+ } catch (_e) { /* graceful: edge emission best-effort */ }
819
+ }
820
+ }
821
+
822
+ // Phase 117-05 telemetry: emit auto_explore_user_response per F.1 verb.
823
+ // Single event with response field discriminator (DELTA vs Phase 116-04
824
+ // which used separate emitResolved/Skipped/Decayed events).
825
+ try {
826
+ emitUserResponse(roomDir, {
827
+ finding: finding,
828
+ response: userResponse,
829
+ latency_ms: 0,
830
+ reason_present: false,
831
+ });
832
+ } catch (_e) { /* never throw on telemetry */ }
833
+
834
+ // Phase 121-02 D-06: capture user F.1 decision into the unified
835
+ // ~/.mindrian/telemetry/v1.13/events-YYYY-WNN.jsonl stream (Plan 121-00
836
+ // writer chokepoint). Emit ONLY for the 3 engagement verbs
837
+ // (EXPLORE -> kept, LATER -> redid, SKIP -> ignored). FREE_TEXT is a
838
+ // system fallback and is intentionally excluded. auto_explore_skipped
839
+ // (fingerprint/fire suppress paths) is NEVER routed through this
840
+ // function and therefore cannot emit auto_explore_decision either.
841
+ // Non-blocking: try/catch swallows any writer breach so the handler
842
+ // still returns ok:true to its caller (the F.1 surface).
843
+ try {
844
+ if (D06_USER_RESPONSE_MAP[userResponse]) {
845
+ let writer = null;
846
+ try { writer = require('../core/telemetry/writer.cjs'); } catch (_e) { writer = null; }
847
+ if (writer && typeof writer.emit === 'function') {
848
+ const findingType = D06_FINDING_TYPE_MAP[String(finding.source_pipeline || '')] || 'whitespace';
849
+ const score = (typeof finding.score === 'number' && Number.isFinite(finding.score))
850
+ ? finding.score
851
+ : 0;
852
+ const slugSrc = String(roomSlug || (roomDir ? path.basename(roomDir) : '')).slice(0, 256);
853
+ const slugHash = crypto.createHash('sha256').update(slugSrc).digest('hex');
854
+ writer.emit('auto_explore_decision', {
855
+ finding_type: String(findingType).slice(0, 64),
856
+ user_response: D06_USER_RESPONSE_MAP[userResponse],
857
+ domain_match_score: score,
858
+ room_slug_sha256: slugHash,
859
+ });
860
+ }
861
+ }
862
+ } catch (_e) { /* never throw on telemetry */ }
863
+
864
+ return {
865
+ ok: true,
866
+ response: userResponse,
867
+ jsonl: appendResult,
868
+ edge: edgeResult,
869
+ };
870
+ } catch (e) {
871
+ return {
872
+ ok: false,
873
+ reason: 'handle_response_threw',
874
+ detail: String((e && e.message) || '').slice(0, 80),
875
+ };
876
+ }
877
+ }
878
+
879
+ // ---------- Telemetry emit helpers (Phase 117-05 Wave 3) ----------
880
+ //
881
+ // Per RESEARCH Section 11: scalar-only payloads. Per Canon Part 8: zero
882
+ // user-content strings ever leave LOCAL state in event payloads. Each helper
883
+ // delegates to lib/hmi/selector-telemetry.cjs::recordSelectorMirror which
884
+ // writes BOTH (a) a memory_event row in room.db (graph-side) AND (b) a JSONL
885
+ // line at ~/.mindrian/telemetry/selector.jsonl (Phase 121 corpus).
886
+ //
887
+ // Mirrors lib/agents/tension-hook-agent.cjs lines 416-528 (Phase 116-04
888
+ // pattern) verbatim with field substitutions per RESEARCH Section 3 sibling
889
+ // code-clone. DELTA vs Phase 116-04: 116 ships 5 helpers (Detected / Surfaced
890
+ // / Resolved / Decayed / Skipped); 117 ships 6 (Fired / FindingSurfaced /
891
+ // UserResponse / Skipped / SanitizerHit / BrainCanonDrift). The drift event
892
+ // is NEW per Brain Section 8.6 (FourLenses-vs-FiveLenses asymmetry); the
893
+ // sanitizer-hit event is NEW per 117-04 SEED-003 A3 sanitizer.
894
+
895
+ let _telemetryRef;
896
+ function _getTelemetry() {
897
+ if (_telemetryRef !== undefined) return _telemetryRef;
898
+ try { _telemetryRef = require('../hmi/selector-telemetry.cjs'); }
899
+ catch (_e) { _telemetryRef = null; }
900
+ return _telemetryRef;
901
+ }
902
+
903
+ function _hashShort(str, len) {
904
+ const n = Number.isInteger(len) && len > 0 ? len : 16;
905
+ return crypto.createHash('sha256').update(String(str || '')).digest('hex').slice(0, n);
906
+ }
907
+
908
+ /**
909
+ * emitFired -- auto_explore_fired memory_event.
910
+ *
911
+ * Fired by scripts/auto-explore-fingerprint.cjs immediately before spawning
912
+ * the detached fire child. Records material_id + file_path_sha256 (16-hex)
913
+ * + room_slug_sha256 (16-hex) + tier + brain_baseline_present + suppress_reason.
914
+ */
915
+ function emitFired(roomDir, args) {
916
+ try {
917
+ const telemetry = _getTelemetry();
918
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
919
+ return { ok: false, reason: 'telemetry_module_unavailable' };
920
+ }
921
+ const a = (args && typeof args === 'object') ? args : {};
922
+ const slugSource = a.room_slug || (roomDir ? path.basename(roomDir) : '');
923
+ const payload = {
924
+ material_id: String(a.material_id || ''),
925
+ file_path_sha256: _hashShort(a.relative_file_path || '', 16),
926
+ fired_at: Date.now(),
927
+ room_slug_sha256: _hashShort(slugSource, 16),
928
+ surfacing_count: Number(a.surfacing_count) || 0,
929
+ tier: Number(a.tier) || 0,
930
+ suppress_reason: (a.suppress_reason === null || a.suppress_reason === undefined)
931
+ ? null : String(a.suppress_reason),
932
+ brain_baseline_present: Boolean(a.brain_baseline_present),
933
+ created_at: Date.now(),
934
+ };
935
+ return telemetry.recordSelectorMirror(roomDir, 'auto_explore_fired', payload);
936
+ } catch (_e) {
937
+ return { ok: false, reason: 'fired_telemetry_threw' };
938
+ }
939
+ }
940
+
941
+ /**
942
+ * emitFindingSurfaced -- auto_explore_finding_surfaced memory_event.
943
+ *
944
+ * Fired by scripts/auto-explore-drain.cjs after surfaceFinding returns
945
+ * surfaced=true. Records finding_id + source_pipeline + candidate_count +
946
+ * score + top_differential_score scalar.
947
+ */
948
+ function emitFindingSurfaced(roomDir, args) {
949
+ try {
950
+ const telemetry = _getTelemetry();
951
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
952
+ return { ok: false, reason: 'telemetry_module_unavailable' };
953
+ }
954
+ const a = (args && typeof args === 'object') ? args : {};
955
+ const finding = (a.finding && typeof a.finding === 'object') ? a.finding : {};
956
+ const payload = {
957
+ material_id: String(finding.material_id || ''),
958
+ finding_id: String(finding.id || ''),
959
+ source_pipeline: String(finding.source_pipeline || ''),
960
+ candidate_count: Number(finding.candidate_count) || 0,
961
+ score: Number(finding.score) || 0,
962
+ surfacing_count: Number(a.surfacing_count) || 1,
963
+ tier: Number(a.tier) || 0,
964
+ top_differential_score: Number(finding.top_differential_score) || 0,
965
+ created_at: Date.now(),
966
+ };
967
+ return telemetry.recordSelectorMirror(roomDir, 'auto_explore_finding_surfaced', payload);
968
+ } catch (_e) {
969
+ return { ok: false, reason: 'finding_surfaced_telemetry_threw' };
970
+ }
971
+ }
972
+
973
+ /**
974
+ * emitUserResponse -- auto_explore_user_response memory_event.
975
+ *
976
+ * Fired by handleUserResponse for each F.1 verb pick (EXPLORE / SKIP / LATER
977
+ * / FREE_TEXT). Records response discriminator + latency + reason_present.
978
+ */
979
+ function emitUserResponse(roomDir, args) {
980
+ try {
981
+ const telemetry = _getTelemetry();
982
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
983
+ return { ok: false, reason: 'telemetry_module_unavailable' };
984
+ }
985
+ const a = (args && typeof args === 'object') ? args : {};
986
+ const finding = (a.finding && typeof a.finding === 'object') ? a.finding : {};
987
+ const valid = new Set(['EXPLORE', 'SKIP', 'LATER', 'FREE_TEXT']);
988
+ const respRaw = String(a.response || '').toUpperCase();
989
+ const payload = {
990
+ material_id: String(finding.material_id || ''),
991
+ finding_id: String(finding.id || ''),
992
+ response: valid.has(respRaw) ? respRaw : 'FREE_TEXT',
993
+ latency_ms: Number.isFinite(a.latency_ms) ? Math.max(0, Math.floor(a.latency_ms)) : 0,
994
+ reason_present: Boolean(a.reason_present),
995
+ created_at: Date.now(),
996
+ };
997
+ return telemetry.recordSelectorMirror(roomDir, 'auto_explore_user_response', payload);
998
+ } catch (_e) {
999
+ return { ok: false, reason: 'user_response_telemetry_threw' };
1000
+ }
1001
+ }
1002
+
1003
+ /**
1004
+ * emitSkipped -- auto_explore_skipped memory_event.
1005
+ *
1006
+ * Fired by every suppress path in fingerprint + fire (Tier 0, just_talk,
1007
+ * dispatcher_load_failed, all_pipelines_empty, brain_baseline_unavailable,
1008
+ * rate_limited, daily_cap_exceeded, room_dir_not_writable, ledger_replay_failed,
1009
+ * hybrid_mode_insufficient_corpus, sanitizer_blocked).
1010
+ */
1011
+ function emitSkipped(roomDir, args) {
1012
+ try {
1013
+ const telemetry = _getTelemetry();
1014
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
1015
+ return { ok: false, reason: 'telemetry_module_unavailable' };
1016
+ }
1017
+ const a = (args && typeof args === 'object') ? args : {};
1018
+ const payload = {
1019
+ material_id: String(a.material_id || ''),
1020
+ suppress_reason: String(a.suppress_reason || 'unknown'),
1021
+ tier: Number(a.tier) || 0,
1022
+ surfacing_count: Number(a.surfacing_count) || 0,
1023
+ created_at: Date.now(),
1024
+ };
1025
+ return telemetry.recordSelectorMirror(roomDir, 'auto_explore_skipped', payload);
1026
+ } catch (_e) {
1027
+ return { ok: false, reason: 'skipped_telemetry_threw' };
1028
+ }
1029
+ }
1030
+
1031
+ /**
1032
+ * emitSanitizerHit -- auto_explore_sanitizer_hit memory_event.
1033
+ *
1034
+ * Fired by scripts/brain-response-sanitize-hook.cjs when sanitize() modifies
1035
+ * the input (i.e. at least one PII pattern matched and was redacted). One
1036
+ * emit per pattern that matched (multi-emit per response if multiple
1037
+ * patterns). tool_name is hashed; pattern_name is enum scalar.
1038
+ */
1039
+ function emitSanitizerHit(roomDir, args) {
1040
+ try {
1041
+ const telemetry = _getTelemetry();
1042
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
1043
+ return { ok: false, reason: 'telemetry_module_unavailable' };
1044
+ }
1045
+ const a = (args && typeof args === 'object') ? args : {};
1046
+ const validPatterns = new Set(['ssn', 'email', 'phone', 'money', 'iso_date', 'abs_path']);
1047
+ const patternRaw = String(a.pattern_name || 'unknown');
1048
+ const payload = {
1049
+ tool_name_hash: _hashShort(a.tool_name || '', 16),
1050
+ pattern_name: validPatterns.has(patternRaw) ? patternRaw : 'unknown',
1051
+ redaction_count: Math.max(1, Number(a.redaction_count) || 1),
1052
+ created_at: Date.now(),
1053
+ };
1054
+ return telemetry.recordSelectorMirror(roomDir, 'auto_explore_sanitizer_hit', payload);
1055
+ } catch (_e) {
1056
+ return { ok: false, reason: 'sanitizer_hit_telemetry_threw' };
1057
+ }
1058
+ }
1059
+
1060
+ /**
1061
+ * emitBrainCanonDrift -- brain_canon_drift_observed memory_event (Brain Section 8.6).
1062
+ *
1063
+ * Per AUTOEXPLORE-117-18: Brain stores FourLenses (Gibson Innovation,
1064
+ * framework: 'Torqox_Innovation_Lenses'); Canon Part 2 Engine 1 v1.3
1065
+ * canonizes FiveLenses (Disciplinary, Stakeholder, System, Temporal, Scale).
1066
+ * The drift is detectable signal -- recording it locally surfaces it to
1067
+ * Phase 121 audit corpus. NO Brain write-back attempted (Canon Part 8
1068
+ * LOCAL -> BRAIN forbidden). Idempotent within session via in-memory cache.
1069
+ */
1070
+ let _driftEmittedThisSession = false;
1071
+
1072
+ function emitBrainCanonDrift(roomDir) {
1073
+ try {
1074
+ if (_driftEmittedThisSession) {
1075
+ return { ok: true, skipped: 'already_emitted_this_session' };
1076
+ }
1077
+ _driftEmittedThisSession = true;
1078
+ const telemetry = _getTelemetry();
1079
+ if (!telemetry || typeof telemetry.recordSelectorMirror !== 'function') {
1080
+ return { ok: false, reason: 'telemetry_module_unavailable' };
1081
+ }
1082
+ const payload = {
1083
+ axis: 'lens_count',
1084
+ brain_count: 4,
1085
+ canon_count: 5,
1086
+ phase: '117',
1087
+ detected_at: Date.now(),
1088
+ created_at: Date.now(),
1089
+ };
1090
+ return telemetry.recordSelectorMirror(roomDir, 'brain_canon_drift_observed', payload);
1091
+ } catch (_e) {
1092
+ return { ok: false, reason: 'drift_telemetry_threw' };
1093
+ }
1094
+ }
1095
+
1096
+ /**
1097
+ * _resetDriftCacheForTests -- test-only helper to clear the in-session
1098
+ * idempotency cache. NOT exported in production module surface; consumed
1099
+ * via require-cache reload pattern in test files.
1100
+ */
1101
+ function _resetDriftCacheForTests() {
1102
+ _driftEmittedThisSession = false;
1103
+ }
1104
+
1105
+ /**
1106
+ * Phase 119-00 helper: read $ROOMS_HOME/.rooms/registry.json and return true
1107
+ * iff there is no active room (registry missing OR registry.active is empty
1108
+ * string).
1109
+ *
1110
+ * Used by scripts/auto-explore-fingerprint.cjs to decide whether to call
1111
+ * lib/core/room-auto-create.cjs::autoCreatePlaceholderRoom as a sibling action.
1112
+ *
1113
+ * Per CONTEXT.md D-01: only the "first material lands AND no active room"
1114
+ * configuration triggers auto-create. An active room means the user already
1115
+ * chose a room; never overwrite.
1116
+ *
1117
+ * Pure file-read; no network, no Brain MCP. Canon Part 8 boundary preserved.
1118
+ *
1119
+ * @param {string} roomsHome absolute path to $ROOMS_HOME (or $MINDRIAN_ROOMS_HOME)
1120
+ * @returns {boolean}
1121
+ */
1122
+ function detectNoActiveRoom(roomsHome) {
1123
+ if (!roomsHome || typeof roomsHome !== 'string') return true;
1124
+ const registryPath = path.join(roomsHome, '.rooms', 'registry.json');
1125
+ try {
1126
+ if (!fs.existsSync(registryPath)) return true;
1127
+ const raw = fs.readFileSync(registryPath, 'utf8');
1128
+ const reg = JSON.parse(raw);
1129
+ return !(reg && typeof reg.active === 'string' && reg.active.length > 0);
1130
+ } catch (_e) {
1131
+ return true; // unreadable registry -> treat as no-active-room (fail-open to auto-create)
1132
+ }
1133
+ }
1134
+
1135
+ // ---------- Module exports ----------
1136
+
1137
+ module.exports = {
1138
+ detectFirstMaterial,
1139
+ composeAutoExploreFinding,
1140
+ surfaceFinding,
1141
+ handleUserResponse,
1142
+ populateHSIAnalysis,
1143
+ composeBQAnchoredLarryVoice,
1144
+ buildExploreApprovedEdge,
1145
+ crossDomainSurprise,
1146
+ crossDomainGate,
1147
+ // Phase 117-05 Wave 3 telemetry emit helpers (6 total):
1148
+ emitFired,
1149
+ emitFindingSurfaced,
1150
+ emitUserResponse,
1151
+ emitSkipped,
1152
+ emitSanitizerHit,
1153
+ emitBrainCanonDrift,
1154
+ // Phase 119-00 sibling helper (D-01 invariant check for the auto-create hook):
1155
+ detectNoActiveRoom,
1156
+ // Constants:
1157
+ BQ_TEMPLATE_REGISTRY,
1158
+ CANONICAL_CHAIN_ORDER,
1159
+ CROSS_DOMAIN_THRESHOLD,
1160
+ MATERIAL_ID_LEN,
1161
+ // Test-only helpers (underscore prefix; not part of public contract):
1162
+ _resetDriftCacheForTests,
1163
+ };