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

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 +497 -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 +2621 -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 +230 -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 +566 -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 +563 -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 +551 -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 +2115 -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 +224 -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/collect-cold-install-evidence.cjs +411 -0
  1402. package/scripts/compute-bayesian-surprise.py +175 -0
  1403. package/scripts/compute-blindspot-mass.py +209 -0
  1404. package/scripts/compute-disruption-index.py +211 -0
  1405. package/scripts/compute-element-novelty.py +254 -0
  1406. package/scripts/compute-external-whitespace.py +563 -0
  1407. package/scripts/compute-hsi.py +947 -0
  1408. package/scripts/compute-meetings-intelligence +716 -0
  1409. package/scripts/compute-opportunity-state +17 -0
  1410. package/scripts/compute-state +393 -0
  1411. package/scripts/compute-team +1112 -0
  1412. package/scripts/compute-whitespace-embeddings.py +464 -0
  1413. package/scripts/compute-whitespace-gaps.py +562 -0
  1414. package/scripts/compute_topic_forest.py +684 -0
  1415. package/scripts/consolidate-pinecone.py +265 -0
  1416. package/scripts/context-monitor +943 -0
  1417. package/scripts/create-speaker-profile +311 -0
  1418. package/scripts/cross-room-detect.cjs +195 -0
  1419. package/scripts/csv-to-idea-graph.cjs +755 -0
  1420. package/scripts/ctxl-eval.cjs +846 -0
  1421. package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
  1422. package/scripts/curation-132-05-pseudonymize.cjs +189 -0
  1423. package/scripts/derive-verb-reach-affinity.cjs +507 -0
  1424. package/scripts/detect-reverse-salients.py +242 -0
  1425. package/scripts/diagnostics-command.cjs +345 -0
  1426. package/scripts/dial-memory-refresh-command.cjs +147 -0
  1427. package/scripts/discover-analogy-whitespace.py +433 -0
  1428. package/scripts/discover-hsi-whitespace.py +352 -0
  1429. package/scripts/discover-rs-whitespace.py +327 -0
  1430. package/scripts/discovery-cycle.cjs +625 -0
  1431. package/scripts/disposition-render-v2.cjs +229 -0
  1432. package/scripts/doctor-preflight-format.cjs +101 -0
  1433. package/scripts/doctor.cjs +4327 -0
  1434. package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
  1435. package/scripts/dogfood-bridge/path-filter.cjs +86 -0
  1436. package/scripts/dogfood-derive.cjs +158 -0
  1437. package/scripts/dogfood-emit.cjs +126 -0
  1438. package/scripts/empathy-observation-emit.cjs +108 -0
  1439. package/scripts/enrichment-queue-append.cjs +157 -0
  1440. package/scripts/ensure-brain-baseline.cjs +117 -0
  1441. package/scripts/entity-extract.cjs +1135 -0
  1442. package/scripts/eureka-command.cjs +687 -0
  1443. package/scripts/eureka-critic-run.cjs +662 -0
  1444. package/scripts/eureka-portfolio-report.cjs +2038 -0
  1445. package/scripts/eureka-room-report.cjs +419 -0
  1446. package/scripts/explain-decision-command.cjs +499 -0
  1447. package/scripts/export-pinecone-embeddings.cjs +516 -0
  1448. package/scripts/extract-room-intelligence.cjs +714 -0
  1449. package/scripts/fetch-brain-baseline.cjs +190 -0
  1450. package/scripts/fetch-brain-baseline.py +360 -0
  1451. package/scripts/feynman-minto-guardian.cjs +672 -0
  1452. package/scripts/feynman-timeline-refresh-command.cjs +270 -0
  1453. package/scripts/file-asset +253 -0
  1454. package/scripts/fire-sensor-event.cjs +83 -0
  1455. package/scripts/first-install-router.cjs +968 -0
  1456. package/scripts/frontmatter-schema-validator.cjs +339 -0
  1457. package/scripts/fts-index-drain.cjs +221 -0
  1458. package/scripts/generate-chat-embed.cjs +179 -0
  1459. package/scripts/generate-deck.cjs +322 -0
  1460. package/scripts/generate-export.cjs +474 -0
  1461. package/scripts/generate-hub.cjs +2553 -0
  1462. package/scripts/generate-lobby.cjs +718 -0
  1463. package/scripts/generate-presentation.cjs +988 -0
  1464. package/scripts/generate-presentation.test.cjs +405 -0
  1465. package/scripts/generate-section-intelligence.cjs +330 -0
  1466. package/scripts/generate-snapshot.cjs +1410 -0
  1467. package/scripts/generate-standalone +159 -0
  1468. package/scripts/git-ops +211 -0
  1469. package/scripts/graph-heal-pipeline.cjs +321 -0
  1470. package/scripts/gsd-artifact-graph-hook.cjs +219 -0
  1471. package/scripts/gsd-graph-derive-drain.cjs +571 -0
  1472. package/scripts/gsd-graph-derive-sweep.cjs +195 -0
  1473. package/scripts/heal-command.cjs +1365 -0
  1474. package/scripts/hedge-refit-pipeline.cjs +207 -0
  1475. package/scripts/help-renderer.cjs +303 -0
  1476. package/scripts/hmi-compliance-poll.cjs +451 -0
  1477. package/scripts/hmi-status-command.cjs +510 -0
  1478. package/scripts/hooked-rescore-117.cjs +224 -0
  1479. package/scripts/hooks/pre-commit +533 -0
  1480. package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
  1481. package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
  1482. package/scripts/hsi-to-graph.cjs +194 -0
  1483. package/scripts/huji-batch.cjs +821 -0
  1484. package/scripts/huji-eval.cjs +1158 -0
  1485. package/scripts/huji-intake.cjs +563 -0
  1486. package/scripts/huji-pin-smoketest.cjs +454 -0
  1487. package/scripts/huji-run-one-async.cjs +305 -0
  1488. package/scripts/huji-run-one.cjs +671 -0
  1489. package/scripts/install-pre-commit.sh +113 -0
  1490. package/scripts/intent-classifier +106 -0
  1491. package/scripts/intent-classifier.cjs +3620 -0
  1492. package/scripts/interpret-whitespace.cjs +691 -0
  1493. package/scripts/jtbd-command.cjs +810 -0
  1494. package/scripts/jtbd-update.cjs +299 -0
  1495. package/scripts/label-topic-forest.cjs +667 -0
  1496. package/scripts/learn-from-usage +168 -0
  1497. package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
  1498. package/scripts/lib/ensure_ml_deps.py +97 -0
  1499. package/scripts/load-embeddings-into-neo4j.cjs +569 -0
  1500. package/scripts/memory-artifact-graph-hook.cjs +191 -0
  1501. package/scripts/memory-command.cjs +687 -0
  1502. package/scripts/memory-completion-detector.cjs +217 -0
  1503. package/scripts/memory-lifecycle.cjs +620 -0
  1504. package/scripts/memory-resume-nudge.cjs +233 -0
  1505. package/scripts/methodology-ingest-local.sh +36 -0
  1506. package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
  1507. package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
  1508. package/scripts/migrate-hats-to-roomdb.cjs +217 -0
  1509. package/scripts/migrate-lazygraph.cjs +250 -0
  1510. package/scripts/migrate-minto-schema-v88.cjs +296 -0
  1511. package/scripts/migrate-plugin-root-refs.cjs +168 -0
  1512. package/scripts/migrate-room-sections-v275.cjs +556 -0
  1513. package/scripts/migrate-rooms +417 -0
  1514. package/scripts/migrate-skill-frontmatter.cjs +472 -0
  1515. package/scripts/migrate-stale-user-settings.cjs +296 -0
  1516. package/scripts/migrate-telemetry-v1.cjs +384 -0
  1517. package/scripts/migrate-telemetry-v1.test.cjs +356 -0
  1518. package/scripts/minto-debouncer.cjs +428 -0
  1519. package/scripts/mos-status.cjs +622 -0
  1520. package/scripts/mva-detect.cjs +229 -0
  1521. package/scripts/mva-run.cjs +36 -0
  1522. package/scripts/on-agent-complete +163 -0
  1523. package/scripts/on-cwd-changed +149 -0
  1524. package/scripts/on-file-changed +68 -0
  1525. package/scripts/on-stop +617 -0
  1526. package/scripts/on-task-complete +194 -0
  1527. package/scripts/operator-command.cjs +858 -0
  1528. package/scripts/operator-update.cjs +308 -0
  1529. package/scripts/part8-egress-guard-hook.cjs +229 -0
  1530. package/scripts/pipeline-command.cjs +271 -0
  1531. package/scripts/post-compact +383 -0
  1532. package/scripts/post-update-activation.cjs +339 -0
  1533. package/scripts/post-write +283 -0
  1534. package/scripts/power-demo-prompt.md +621 -0
  1535. package/scripts/pre-compact +273 -0
  1536. package/scripts/preflight-auto-explore.cjs +314 -0
  1537. package/scripts/preflight-doctor.cjs +225 -0
  1538. package/scripts/preflight-release-drift.cjs +168 -0
  1539. package/scripts/preflight-tension-surface.cjs +414 -0
  1540. package/scripts/probe-brain-contract.cjs +502 -0
  1541. package/scripts/publish-ops +346 -0
  1542. package/scripts/query-efficiency-telemetry.cjs +364 -0
  1543. package/scripts/query-semantic-scholar.cjs +545 -0
  1544. package/scripts/reapply-modifications +49 -0
  1545. package/scripts/reassign-primary.cjs +125 -0
  1546. package/scripts/recompile-room-references.cjs +601 -0
  1547. package/scripts/release-beta-preflight.sh +69 -0
  1548. package/scripts/render-pdf +588 -0
  1549. package/scripts/render-viz +190 -0
  1550. package/scripts/research-speaker +239 -0
  1551. package/scripts/resolve-room +204 -0
  1552. package/scripts/restore-post-compact-context.cjs +320 -0
  1553. package/scripts/room-auto-create-nudge.cjs +136 -0
  1554. package/scripts/room-naming-selector.cjs +201 -0
  1555. package/scripts/room-registry +767 -0
  1556. package/scripts/rs-discovery-engine.cjs +725 -0
  1557. package/scripts/rs-engine.py +2073 -0
  1558. package/scripts/rs-experts-command.cjs +300 -0
  1559. package/scripts/rs-explain-command.cjs +323 -0
  1560. package/scripts/rs-fetch-command.cjs +170 -0
  1561. package/scripts/rs-thesis-command.cjs +203 -0
  1562. package/scripts/rs-vector-bridge.cjs +410 -0
  1563. package/scripts/run-harness.cjs +890 -0
  1564. package/scripts/scout-cadence-guard.cjs +323 -0
  1565. package/scripts/scout-cadence-runner.cjs +509 -0
  1566. package/scripts/scout-telemetry-aggregator.cjs +268 -0
  1567. package/scripts/sealed-walker.py +96 -0
  1568. package/scripts/seed-brain-commands.cjs +324 -0
  1569. package/scripts/self-update +105 -0
  1570. package/scripts/sentinel-deadline-monitor +241 -0
  1571. package/scripts/sentinel-health-check +198 -0
  1572. package/scripts/sentinel-snapshot +42 -0
  1573. package/scripts/serve-dashboard +103 -0
  1574. package/scripts/serve-dashboard-live +932 -0
  1575. package/scripts/serve-presentation +97 -0
  1576. package/scripts/serve-wiki +90 -0
  1577. package/scripts/session-end-presence.cjs +79 -0
  1578. package/scripts/session-start +1943 -0
  1579. package/scripts/sessionstart-coordinator.cjs +249 -0
  1580. package/scripts/sessionstart-npm-reconcile.cjs +111 -0
  1581. package/scripts/sessionstart-post-update-preflight.cjs +303 -0
  1582. package/scripts/sessionstart-reference-now-seed.cjs +137 -0
  1583. package/scripts/setup-hooks.sh +112 -0
  1584. package/scripts/skillopt-codereview.cjs +830 -0
  1585. package/scripts/skillopt-eval.cjs +519 -0
  1586. package/scripts/skillopt-funnel.cjs +1076 -0
  1587. package/scripts/skillopt-genqueries.cjs +571 -0
  1588. package/scripts/skillopt-inventory.cjs +319 -0
  1589. package/scripts/skillopt-merge.cjs +656 -0
  1590. package/scripts/skillopt-triggerloop.cjs +1126 -0
  1591. package/scripts/soft-alias-runner.cjs +116 -0
  1592. package/scripts/stamp-artifact-write.cjs +276 -0
  1593. package/scripts/stamp-firing-block.cjs +325 -0
  1594. package/scripts/state-write.cjs +97 -0
  1595. package/scripts/statusline-fallback-echo.cjs +297 -0
  1596. package/scripts/statusline-mos +116 -0
  1597. package/scripts/statusline-mos-dispatch +127 -0
  1598. package/scripts/suggest-next-command.cjs +416 -0
  1599. package/scripts/sweep-skill-descriptions.cjs +263 -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 +384 -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 +571 -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,1201 @@
1
+ /*
2
+ * Copyright (c) 2026 Mindrian. BSL 1.1.
3
+ *
4
+ * Phase 101-04 + 101-05 + 88.2-04 -- single integration point for Shape F/G/H rendering.
5
+ *
6
+ * Phase 101-05 (Mode A/B/Tier 0 graceful degradation per Canon Part 3):
7
+ *
8
+ * Tier helper:
9
+ * - Resolved at: lib/hmi/tier-check.cjs (v1 stub; Phase 90 follow-on
10
+ * will replace with full Brain-ping + cache + BRAIN.md presence audit).
11
+ * - Expected return from getTier(): integer in {0, 1, 2, 3}.
12
+ * - Mode mapping (Canon Part 3 "Option generation tier-awareness"):
13
+ * tier >= 2 -> Mode A (Full Loop): Brain reachable, RECOMMENDED >= 0.7 marker rendered.
14
+ * tier 1 -> Mode B (Local Only): Navigation Engine; no RECOMMENDED marker; Zone 1 carries
15
+ * "Brain unreachable; running on local graph only." prefix line.
16
+ * tier 0 -> degraded; dispatcher refuses expensive shapes per Canon Part 3 Rule 2,
17
+ * returns { shape: 'error', rendered: { error: 'tier-0-refused', ... } }.
18
+ *
19
+ * Defense-in-depth: dispatcher computes mode from tier and propagates `mode` to every renderer.
20
+ * Renderers (F.6 + G + H) ALSO suppress RECOMMENDED markers internally when mode === 'B' so a
21
+ * buggy caller who forgets to pass mode still cannot leak a `▶` marker in Mode B.
22
+ *
23
+ * Phase 88.2-04 (Operator-aware F.1..F.5 sub-shape dispatch + telemetry + AskUserQuestion trailer):
24
+ *
25
+ * F.1..F.5 sub-shape dispatch:
26
+ * requestedShape ∈ {'F.1','F.2','F.3','F.4','F.5'} routes directly to the matching
27
+ * Phase 88.2 wave-1 renderer (lib/hmi/shape-fN-renderer.cjs). The umbrella 'F'
28
+ * branch is preserved byte-stable -- it still routes via JTBD state to F.6 (or
29
+ * F.1 fallback). Existing 9-test selector-dispatcher contract is preserved.
30
+ *
31
+ * JUST_TALK refuse (Canon Part 3 + render-v2 compaction gate):
32
+ * When `operator === 'JUST_TALK'` and ANY Shape F.* (umbrella or sub-shape) is
33
+ * requested, the dispatcher returns:
34
+ * { shape: 'error', rendered: { error: 'render_v2_compaction_violation', ... } }
35
+ * mirroring lib/render/render-v2.cjs#244 ("JUST_TALK suppresses ALL output").
36
+ * A Shape F selector cannot be presented while the conversation is in JUST_TALK
37
+ * prose-only mode without violating the compaction contract.
38
+ *
39
+ * Telemetry emission (Canon Part 8 LOCAL ONLY):
40
+ * Every successful Shape F.* presentation calls
41
+ * selector-telemetry.recordPresentation(roomDir, {sub_shape, mode, options_count,
42
+ * recommended_present, operator}). Wrapped in try/catch -- telemetry NEVER fails
43
+ * Larry's turn. The companion recordResponse() is exposed as a re-export for
44
+ * consumers that wire the AskUserQuestion answer back to the ledger.
45
+ *
46
+ * AskUserQuestion structural-marker trailer:
47
+ * Every successful Shape F.* return carries an
48
+ * `rendered.askuserquestion_marker = '[AskUserQuestion contract: shape=F.X verbs=N]'`
49
+ * scalar AND the marker is appended (preceded by a blank line) to
50
+ * `rendered.zones.footer`. Consumers that compose zones see the trailer
51
+ * in the rendered surface; consumers that introspect the contract can
52
+ * read the scalar directly.
53
+ *
54
+ * API:
55
+ * pickShape({ requestedShape, roomDir, operator, tier, payload })
56
+ * -> { shape, rendered } | { shape, passthrough: true }
57
+ *
58
+ * - requestedShape: 'F' | 'F.1' | 'F.2' | 'F.3' | 'F.4' | 'F.5' | 'G' | 'H' | 'A' | 'B' | 'C' | 'D' | 'E'
59
+ * - roomDir: absolute path; used to read JTBD state for F-shape dispatch.
60
+ * - operator: one of OPERATORS or null. JUST_TALK refuses Shape F.*.
61
+ * - tier: optional override; if omitted, dispatcher calls getTier().
62
+ * - payload: shape-specific input forwarded to the corresponding renderer.
63
+ *
64
+ * recordSelectorResponse(roomDir, record)
65
+ * Re-export of selector-telemetry.recordResponse for consumers wiring
66
+ * AskUserQuestion answers back to the local ledger.
67
+ *
68
+ * Pure CJS, node built-ins only, zero deps (Phase 87 invariant).
69
+ */
70
+
71
+ 'use strict';
72
+
73
+ // Phase 121-02 D-04: unified-stream selector_pick emit chokepoint.
74
+ // require()-loaded lazily inside emitSelectorPickUnified() so a missing writer
75
+ // module (or a stripped-down install) cannot crash the dispatcher at load.
76
+ const crypto = require('node:crypto');
77
+ function _sha256(s) {
78
+ return crypto.createHash('sha256').update(String(s || '')).digest('hex');
79
+ }
80
+
81
+ const FREE_TEXT = 'Free-Text';
82
+ const MODE_B_ZONE1_PREFIX = '⚠ Brain unreachable; running on local graph only.';
83
+
84
+ // Phase 148-03 (IRW-04, D-03): the reach -> toggleable-component-archetype map.
85
+ // Registry-is-the-table -- the dispatcher reads lib/hmi/reach-component-map.json
86
+ // and NEVER a hardcoded switch (mirrors the connector-registry / ORCH-01
87
+ // pattern). A new reach joins by adding a row to the JSON, not by editing this
88
+ // file. resolveArchetype() folds the three key namespaces (reaches /
89
+ // sub_modes / standing_options) into a single flat lookup; the default on a
90
+ // miss is 'select' (the Shape F.1 single-pick path). The archetype then drives
91
+ // which AskUserQuestion mode the dispatcher constructs (multiSelect / confirm /
92
+ // ordered follow-up / auto / select) -- the construction stays INSIDE this file
93
+ // per SEED-020 (no bespoke AskUserQuestion payload built anywhere else).
94
+ const ARCHETYPE_DEFAULT = 'select';
95
+ const VALID_ARCHETYPES = ['select', 'multiSelect', 'ordered', 'group', 'confirm', 'auto', 'text'];
96
+
97
+ let _reachComponentMapCache = null;
98
+ function _loadReachComponentMap() {
99
+ if (_reachComponentMapCache !== null) return _reachComponentMapCache;
100
+ let flat = {};
101
+ try {
102
+ const raw = require('./reach-component-map.json');
103
+ const namespaces = ['reaches', 'sub_modes', 'standing_options'];
104
+ for (const ns of namespaces) {
105
+ const group = raw && raw[ns];
106
+ if (group && typeof group === 'object') {
107
+ for (const key of Object.keys(group)) {
108
+ const entry = group[key];
109
+ const arch = entry && typeof entry.archetype === 'string' ? entry.archetype : null;
110
+ if (arch && VALID_ARCHETYPES.indexOf(arch) !== -1) {
111
+ flat[key] = arch;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ } catch (_e) {
117
+ // Missing / malformed map (degraded install): every reach falls back to the
118
+ // default 'select' archetype -- the renderer still works, no crash.
119
+ flat = {};
120
+ }
121
+ _reachComponentMapCache = flat;
122
+ return _reachComponentMapCache;
123
+ }
124
+
125
+ // Phase 150-06 (MEM-06, D-02): the archetype-escalation rank. The static
126
+ // reach-component-map is the FLOOR; the projected cortex can only ESCALATE a
127
+ // reach UP this rank, never lower it. A higher index is a higher-friction gate
128
+ // (a contradiction in the cortex warrants a confirm before a bare select acts).
129
+ // 'confirm' is the escalation ceiling for the contradiction signal; multiSelect /
130
+ // ordered / group / auto / text are orthogonal interaction modes and are never
131
+ // down-ranked by the escalation (escalate only lifts select -> confirm).
132
+ const _ESCALATION_RANK = { select: 0, confirm: 1 };
133
+
134
+ // Read the contradiction-presence signal off a cortexState WITHOUT importing the
135
+ // adapter at module load (lazy require so a degraded install that lacks the
136
+ // adapter still resolves the static floor). cortexState may carry either a
137
+ // pre-computed boolean (cortexState.hasContradiction) or the raw cortexNodes the
138
+ // adapter inspects. Presence-only; never reads prose (Canon Part 8).
139
+ function _cortexEscalatesToConfirm(cortexState) {
140
+ if (!cortexState || typeof cortexState !== 'object') return false;
141
+ if (cortexState.hasContradiction === true) return true;
142
+ const nodes = cortexState.cortexNodes;
143
+ if (!Array.isArray(nodes) || nodes.length === 0) return false;
144
+ try {
145
+ const adapter = require('./cortex-reach-adapter.cjs');
146
+ if (adapter && typeof adapter.hasContradiction === 'function') {
147
+ return adapter.hasContradiction(nodes) === true;
148
+ }
149
+ } catch (_e) {
150
+ // Degraded install: no adapter -> no escalation, the static floor stands.
151
+ }
152
+ return false;
153
+ }
154
+
155
+ /**
156
+ * Phase 148-03 (IRW-04, D-03) + Phase 150-06 (MEM-06, D-02): resolve a reach_id /
157
+ * sub_mode / standing-option key to its toggleable-component archetype. Reads
158
+ * lib/hmi/reach-component-map.json (registry-is-the-table). Returns the default
159
+ * 'select' on any miss.
160
+ *
161
+ * The OPTIONAL second arg cortexState (Phase 150-06): when omitted (every
162
+ * existing caller) the static-map archetype is returned BYTE-STABLE -- the floor
163
+ * is unchanged. When provided and carrying projected node-type presence that
164
+ * warrants escalation (a contradiction decision node present), a 'select' reach
165
+ * ESCALATES to 'confirm'. The static map is the floor and is NEVER lowered
166
+ * (T-150-06-04): escalation only lifts.
167
+ */
168
+ function resolveArchetype(reachIdOrSubMode, cortexState) {
169
+ if (typeof reachIdOrSubMode !== 'string' || reachIdOrSubMode.length === 0) {
170
+ return ARCHETYPE_DEFAULT;
171
+ }
172
+ const map = _loadReachComponentMap();
173
+ const hit = map[reachIdOrSubMode];
174
+ const staticArchetype = (typeof hit === 'string' && hit.length > 0) ? hit : ARCHETYPE_DEFAULT;
175
+
176
+ // No cortexState (every existing caller) -> byte-stable static floor.
177
+ if (cortexState === undefined || cortexState === null) {
178
+ return staticArchetype;
179
+ }
180
+
181
+ // Cortex escalation: only lift select -> confirm; never lower the floor.
182
+ if (_cortexEscalatesToConfirm(cortexState)) {
183
+ const staticRank = (typeof _ESCALATION_RANK[staticArchetype] === 'number')
184
+ ? _ESCALATION_RANK[staticArchetype] : null;
185
+ const confirmRank = _ESCALATION_RANK.confirm;
186
+ // Only escalate when the static archetype is on the select->confirm ladder
187
+ // AND below confirm. Orthogonal archetypes (multiSelect/ordered/group/auto/
188
+ // text) are left untouched -- the escalation never down-ranks them.
189
+ if (staticRank !== null && staticRank < confirmRank) {
190
+ return 'confirm';
191
+ }
192
+ }
193
+
194
+ return staticArchetype;
195
+ }
196
+
197
+ /**
198
+ * Phase 148-03: translate a resolved archetype into the AskUserQuestion-shape
199
+ * hints the dispatcher attaches to a Shape F.* rendered contract. This is the
200
+ * ONLY place the archetype becomes an interactivity mode (SEED-020 single
201
+ * door). The hints are scalars consumed by the render host when it composes
202
+ * the AskUserQuestion call -- no bespoke payload is built here or elsewhere.
203
+ *
204
+ * multiSelect -> { multiSelect: true }
205
+ * confirm -> { confirm: true } (a confirm follow-up gate)
206
+ * ordered -> { ordered: true } (an ordering follow-up prompt, D-02;
207
+ * NOT a live ordered widget)
208
+ * auto -> { auto: true } (no pick -- the host runs it, D-04)
209
+ * select -> { multiSelect: false } (the default single-pick path)
210
+ */
211
+ function archetypeToContractHints(archetype) {
212
+ const arch = (typeof archetype === 'string' && VALID_ARCHETYPES.indexOf(archetype) !== -1)
213
+ ? archetype : ARCHETYPE_DEFAULT;
214
+ const hints = { archetype: arch, multiSelect: false };
215
+ if (arch === 'multiSelect' || arch === 'group') {
216
+ hints.multiSelect = true;
217
+ } else if (arch === 'confirm') {
218
+ hints.confirm = true;
219
+ } else if (arch === 'ordered') {
220
+ hints.ordered = true;
221
+ } else if (arch === 'auto') {
222
+ hints.auto = true;
223
+ } else if (arch === 'text') {
224
+ hints.freeText = true;
225
+ }
226
+ return hints;
227
+ }
228
+
229
+ /**
230
+ * Phase 148-03: apply the archetype-driven AskUserQuestion-mode hints onto a
231
+ * rendered Shape F.* contract. The dispatcher resolves the archetype from the
232
+ * caller-supplied reachKey (reach_id / sub_mode / standing-option key) and folds
233
+ * the hints onto rendered.contract so the render host constructs the right
234
+ * AskUserQuestion mode. Construction stays inside the dispatcher (SEED-020).
235
+ */
236
+ function applyArchetypeRouting(rendered, reachKey) {
237
+ if (!rendered || typeof rendered !== 'object') return rendered;
238
+ if (!rendered.contract || typeof rendered.contract !== 'object') return rendered;
239
+ const archetype = resolveArchetype(reachKey);
240
+ const hints = archetypeToContractHints(archetype);
241
+ rendered.contract.archetype = hints.archetype;
242
+ rendered.contract.multiSelect = hints.multiSelect;
243
+ if (hints.confirm) rendered.contract.confirm = true;
244
+ if (hints.ordered) rendered.contract.ordered = true;
245
+ if (hints.auto) rendered.contract.auto = true;
246
+ if (hints.freeText) rendered.contract.freeText = true;
247
+ return rendered;
248
+ }
249
+
250
+ // Phase 121.5-10 Sub-plan K (LOCKED decisions 1 + Bundle A):
251
+ // Brain-suggestion content template constants. The locked chip / glyphs /
252
+ // footer values are non-negotiable per audit Section 5.2 -- consumers passing
253
+ // brain_suggestion_variant:true receive these literal values composed into
254
+ // rendered.zones.body and rendered.zones.footer. Alias map loaded once at
255
+ // module init from lib/hmi/jtbd-taxonomy.json alias_map.verb_aliases.
256
+ const BRAIN_CHIP = '[■ BRAIN]';
257
+ const BRAIN_GLYPH_RECOMMENDED = '▶';
258
+ const BRAIN_GLYPH_ALTERNATIVE = '▷';
259
+
260
+ // Load alias_map once. Safe-require: if jtbd-taxonomy.json is missing or
261
+ // malformed (degraded install), fall back to empty map -- consumers without
262
+ // alias_map get pass-through behavior (verb renders verbatim, no collapse).
263
+ let _aliasMapCache = null;
264
+ function _loadAliasMap() {
265
+ if (_aliasMapCache !== null) return _aliasMapCache;
266
+ try {
267
+ const tax = require('./jtbd-taxonomy.json');
268
+ if (tax && tax.alias_map && tax.alias_map.verb_aliases
269
+ && typeof tax.alias_map.verb_aliases === 'object') {
270
+ _aliasMapCache = tax.alias_map.verb_aliases;
271
+ return _aliasMapCache;
272
+ }
273
+ } catch (_e) { /* graceful */ }
274
+ _aliasMapCache = {};
275
+ return _aliasMapCache;
276
+ }
277
+
278
+ /**
279
+ * Phase 121.5-10 Sub-plan K (LOCKED decision 1): collapse a user-facing verb
280
+ * alias to its canonical form for graph-edge persistence. Aliases live in
281
+ * lib/hmi/jtbd-taxonomy.json alias_map.verb_aliases; unknown verbs pass
282
+ * through unchanged (no-op for already-canonical verbs).
283
+ *
284
+ * Optional explicit aliasMap arg overrides the module-level cache (test seam
285
+ * + per-call override for surfaces with surface-specific aliases).
286
+ */
287
+ function aliasToCanonical(verb, aliasMap) {
288
+ if (typeof verb !== 'string' || verb.length === 0) return verb;
289
+ const map = (aliasMap && typeof aliasMap === 'object') ? aliasMap : _loadAliasMap();
290
+ if (Object.prototype.hasOwnProperty.call(map, verb)) {
291
+ const canonical = map[verb];
292
+ if (typeof canonical === 'string' && canonical.length > 0) return canonical;
293
+ }
294
+ return verb;
295
+ }
296
+
297
+ /**
298
+ * Phase 121.5-10 Sub-plan K: compose the locked Brain-suggestion option-row
299
+ * block from a normalized optionRows array. Each row is two lines:
300
+ * Row 1: `<glyph> <N>. <verb>` left-padded, `<conf>%` right-aligned to 80c
301
+ * Row 2: 5-space indent, `<meta>`
302
+ * Per audit Section 5.2.1. Returns the composed string (one block).
303
+ */
304
+ function composeBrainOptionRows(optionRows) {
305
+ if (!Array.isArray(optionRows) || optionRows.length === 0) return '';
306
+ const COL_WIDTH = 80;
307
+ const blocks = [];
308
+ for (let i = 0; i < optionRows.length; i += 1) {
309
+ const r = optionRows[i] || {};
310
+ const glyph = (r.glyph === BRAIN_GLYPH_RECOMMENDED || r.glyph === BRAIN_GLYPH_ALTERNATIVE)
311
+ ? r.glyph : BRAIN_GLYPH_ALTERNATIVE;
312
+ const num = Number.isInteger(r.number) ? r.number : (i + 1);
313
+ const verb = (typeof r.verb === 'string' && r.verb.length > 0) ? r.verb : '';
314
+ const confPct = (Number.isInteger(r.confPct)) ? r.confPct : 0;
315
+ const meta = (typeof r.meta === 'string') ? r.meta : '';
316
+ const left = glyph + ' ' + String(num) + '. ' + verb;
317
+ const right = String(confPct) + '%';
318
+ const padCount = Math.max(1, COL_WIDTH - left.length - right.length);
319
+ const row1 = left + ' '.repeat(padCount) + right;
320
+ const row2 = ' ' + meta;
321
+ blocks.push(row1 + '\n' + row2);
322
+ }
323
+ return blocks.join('\n\n');
324
+ }
325
+
326
+ // Phase 88.2-04: F.* sub-shape registry and JUST_TALK refuse vocabulary.
327
+ // Phase 88.2-05: 'F.0' Mini Decision Gate prepended (closed-vocab; freeTextOffered:false carve-out).
328
+ // Phase 88.2-06: 'F.6' Plan Review Round appended (closed-vocab; routes to the
329
+ // collision-safe lib/hmi/shape-f6-plan-review-renderer.cjs path; the umbrella 'F'
330
+ // branch continues to route to Phase 101-01's lib/hmi/shape-f6-renderer.cjs via
331
+ // JTBD logic preserved byte-stable per R1 invariant).
332
+ // Phase 120-01: 'F.7' was the Breakthrough Surface (CONTEXT.md D-07..D-10 + D-20).
333
+ // SUPERSEDED by Phase 188-01 (SFS-06): bare 'F.7' is the CANONICAL DIAL now
334
+ // (renderDialShape, mirroring 'F.7-dial'); Breakthrough is no longer a shape (D-10
335
+ // canonical ten) but re-homes to an F.1 next-move. The shape-f7-breakthrough-renderer.cjs
336
+ // module stays live as the home of the frozen 5-verb set + the D-20 provenance HARD FLOOR;
337
+ // it is simply no longer reachable via the bare-F.7 single door.
338
+ // Phase 177-02: 'F.7-dial' appended -- the four-arrow register HUD branch
339
+ // (BCH-10/BCH-16). Routes to lib/hmi/dial-selector.cjs via the explicit
340
+ // requestedShape:'F.7-dial' branch in dispatchShapeFSubShape, mirroring the
341
+ // F.7 opt-in dispatch. The umbrella 'F' branch does NOT resolve to it.
342
+ // Phase 188-06 (SFS-01): 'F.8' appended -- the multiSelect Action Set. It joins by
343
+ // an F_SUBSHAPES row + a `requestedShape === 'F.8'` branch mirroring F.5 (SEED-020
344
+ // single door). The multiSelect hint is folded by archetypeToContractHints; render
345
+ // is a thin safeRequire of shape-f8-renderer.cjs. The umbrella 'F' branch does NOT
346
+ // resolve to it (opt-in dispatch only).
347
+ const F_SUBSHAPES = ['F.0', 'F.1', 'F.2', 'F.3', 'F.4', 'F.5', 'F.6', 'F.7', 'F.7-dial', 'F.8', 'F.9'];
348
+ const F_UMBRELLA = 'F';
349
+ const JUST_TALK = 'JUST_TALK';
350
+ const COMPACTION_VIOLATION_CODE = 'render_v2_compaction_violation';
351
+
352
+ function safeRequire(modPath) {
353
+ try {
354
+ return require(modPath);
355
+ } catch (e) {
356
+ if (e && e.code === 'MODULE_NOT_FOUND') return null;
357
+ throw e;
358
+ }
359
+ }
360
+
361
+ function resolveTier(explicitTier) {
362
+ if (typeof explicitTier === 'number' && Number.isFinite(explicitTier)) {
363
+ return explicitTier;
364
+ }
365
+ try {
366
+ const helper = require('./tier-check.cjs');
367
+ const t = helper.getTier();
368
+ return (typeof t === 'number' && Number.isFinite(t)) ? t : 1;
369
+ } catch (e) {
370
+ // tier-check absent or broken -> assume Local Only (Mode B), the safer default.
371
+ return 1;
372
+ }
373
+ }
374
+
375
+ function modeFromTier(tier) {
376
+ if (tier >= 2) return 'A';
377
+ if (tier === 1) return 'B';
378
+ return '0';
379
+ }
380
+
381
+ /**
382
+ * Defense-in-depth: ensure Free-Text is the last verb in any F-shape contract.
383
+ * Per Canon Part 3 Layer 2 + D-10. Mutates the rendered structure in place.
384
+ *
385
+ * Phase 88.2-04 carve-out: closed-vocabulary sub-shapes (F.3 Rabbit-Hole Depth,
386
+ * F.4 Insight Extraction) DO NOT offer Free-Text per skills/ui-system/SKILL.md
387
+ * Section 2 (depth/extraction are closed axes). Renderers signal this by
388
+ * setting `contract.freeTextOffered === false`. Respecting that flag preserves
389
+ * the closed-vocab invariant; injecting Free-Text would silently break the
390
+ * Wave-1 contract and the renderer's own 7-assertion test suite.
391
+ */
392
+ function ensureFreeTextLast(rendered) {
393
+ if (!rendered || !rendered.contract || !Array.isArray(rendered.contract.verbs)) return rendered;
394
+ // Closed-vocab carve-out: F.3, F.4 explicitly opt out of Free-Text.
395
+ if (rendered.contract.freeTextOffered === false) return rendered;
396
+ const verbs = rendered.contract.verbs;
397
+ if (verbs.length === 0 || verbs[verbs.length - 1] !== FREE_TEXT) {
398
+ const filtered = verbs.filter(v => v !== FREE_TEXT);
399
+ filtered.push(FREE_TEXT);
400
+ rendered.contract.verbs = filtered;
401
+ }
402
+ return rendered;
403
+ }
404
+
405
+ /**
406
+ * Prepend the Mode B Zone 1 prefix to a renderer's zones.header. The prefix is
407
+ * a separate line BEFORE the renderer's own header (Task 2.3 contract).
408
+ */
409
+ function applyModeBPrefix(rendered) {
410
+ if (!rendered || !rendered.zones) return rendered;
411
+ const existing = typeof rendered.zones.header === 'string' ? rendered.zones.header : '';
412
+ rendered.zones.header = MODE_B_ZONE1_PREFIX + '\n' + existing;
413
+ return rendered;
414
+ }
415
+
416
+ function tier0Refuse() {
417
+ return {
418
+ shape: 'error',
419
+ rendered: {
420
+ error: 'tier-0-refused',
421
+ detail: '/mos:setup brain or graph required for selectors',
422
+ },
423
+ };
424
+ }
425
+
426
+ /**
427
+ * Phase 88.2-04: refuse Shape F.* presentation while the conversation operator
428
+ * is JUST_TALK. JUST_TALK is the prose-only operator (Canon Part 3 + render-v2
429
+ * step 6); a selector block would violate the compaction contract.
430
+ */
431
+ function justTalkRefuse(requestedShape) {
432
+ return {
433
+ shape: 'error',
434
+ rendered: {
435
+ error: COMPACTION_VIOLATION_CODE,
436
+ detail: 'Shape F selector refused: operator JUST_TALK suppresses all selector output (render-v2 step 6 / Canon Part 3).',
437
+ operator: JUST_TALK,
438
+ requested: requestedShape,
439
+ },
440
+ };
441
+ }
442
+
443
+ /**
444
+ * Phase 121-02 D-04: emit selector_pick event into the unified
445
+ * ~/.mindrian/telemetry/v1.13/events-YYYY-WNN.jsonl stream (Plan 121-00
446
+ * writer chokepoint). Wrapped in try/catch -- telemetry NEVER fails Larry's
447
+ * turn. Canon Part 8: room slug is sha256-hashed; payload fields are scalar
448
+ * enums / numbers / booleans only. The emit is gated by validateEventPayload
449
+ * inside writer.emit() so adversarial fixtures (Cypher in verb_chosen, etc.)
450
+ * cannot leak. Non-blocking: any thrown error is swallowed so the pickShape
451
+ * dispatch resolution still returns to the caller.
452
+ */
453
+ function emitSelectorPickUnified(roomDir, subShape, rendered, payloadIn) {
454
+ try {
455
+ let writer;
456
+ try {
457
+ writer = require('../core/telemetry/writer.cjs');
458
+ } catch (_e) {
459
+ return; // missing writer module -- soft skip, do not crash dispatch
460
+ }
461
+ if (!writer || typeof writer.emit !== 'function') return;
462
+ const contract = (rendered && rendered.contract) ? rendered.contract : {};
463
+ const verbs = Array.isArray(contract.verbs) ? contract.verbs : [];
464
+ const mode = (typeof contract.mode === 'string') ? contract.mode : 'A';
465
+ const recommended = contract.recommended;
466
+ const payload = (payloadIn && typeof payloadIn === 'object') ? payloadIn : {};
467
+ const rankerConfidence = (typeof payload.rankerConfidence === 'number')
468
+ ? payload.rankerConfidence
469
+ : 0;
470
+ const recommendedRendered = (recommended !== null && recommended !== undefined)
471
+ ? true
472
+ : Boolean(payload.recommendedRendered);
473
+ const verbChosen = (typeof payload.verb_chosen === 'string' && payload.verb_chosen.length > 0)
474
+ ? payload.verb_chosen
475
+ : (typeof contract.recommended === 'string' ? contract.recommended : '');
476
+ const slugSource = (typeof roomDir === 'string' && roomDir.length > 0)
477
+ ? String(roomDir).split('/').filter(Boolean).pop() || roomDir
478
+ : (String(process.cwd()).split('/').filter(Boolean).pop() || 'default-room');
479
+ writer.emit('selector_pick', {
480
+ sub_shape: String(subShape || '').slice(0, 64),
481
+ mode: String(mode || 'A').slice(0, 64),
482
+ ranker_confidence: rankerConfidence,
483
+ recommended_rendered: Boolean(recommendedRendered),
484
+ options_count: Number.isInteger(verbs.length) ? verbs.length : 0,
485
+ room_slug_sha256: _sha256(slugSource),
486
+ verb_chosen: String(verbChosen || '').slice(0, 64),
487
+ });
488
+ } catch (_e) {
489
+ // Canon Part 8 validation failure or any other emit failure: swallow.
490
+ // The dispatch resolution must still return cleanly per non-blocking
491
+ // contract (selector-pick-capture test 3 verifies this).
492
+ }
493
+ }
494
+
495
+ /**
496
+ * Phase 88.2-04: emit selector presentation telemetry. Wrapped in try/catch --
497
+ * telemetry NEVER fails Larry's turn. Canon Part 8: LOCAL ledger only, room
498
+ * slug sha256-hashed, never crosses any network boundary.
499
+ */
500
+ function emitPresentationTelemetry(roomDir, subShape, rendered, operator) {
501
+ try {
502
+ const tel = safeRequire('./selector-telemetry.cjs');
503
+ if (!tel || typeof tel.recordPresentation !== 'function') return;
504
+ const contract = (rendered && rendered.contract) ? rendered.contract : {};
505
+ const verbs = Array.isArray(contract.verbs) ? contract.verbs : [];
506
+ const mode = (typeof contract.mode === 'string') ? contract.mode : null;
507
+ const recommendedPresent = (contract.recommended !== null && contract.recommended !== undefined);
508
+ const record = {
509
+ sub_shape: subShape,
510
+ mode: mode,
511
+ options_count: verbs.length,
512
+ recommended_present: recommendedPresent,
513
+ };
514
+ if (typeof operator === 'string' && operator.length > 0) {
515
+ record.operator = operator;
516
+ }
517
+ tel.recordPresentation(roomDir, record);
518
+ } catch (_e) {
519
+ // Graceful: never fail Larry's turn on a telemetry I/O hiccup.
520
+ }
521
+ }
522
+
523
+ /**
524
+ * Phase 88.2-04 / Phase 209 Wave-1 E1: append the AskUserQuestion trailer to a
525
+ * Shape F.* rendered envelope. The trailer is now SELF-DECODING -- it carries a
526
+ * binding imperative that TELLS the model to fire AskUserQuestion now, instead
527
+ * of shipping a bare structural marker the model may render as an ASCII box.
528
+ *
529
+ * Root cause it kills (research 2026-07-02, RC-2 / verdicts 2, 5, 21): the old
530
+ * trailer was "a scalar string for introspection" with zero imperative language,
531
+ * so a gate that reached Larry carried a trigger but no instruction to act on it.
532
+ * Fix pattern reused verbatim from scripts/room-naming-selector.cjs:158-160
533
+ * ("INSTRUCTION FOR LARRY ... dispatch ... via AskUserQuestion"), Canon Part 7.
534
+ *
535
+ * Three surfaces:
536
+ * 1. rendered.askuserquestion_marker -- the BYTE-FROZEN scalar marker
537
+ * `[AskUserQuestion contract: shape=F.X verbs=N]`. Introspection contract;
538
+ * unchanged (tests: trailer_format, post-filing-selector, 150.5 shape fence,
539
+ * 148 frozen-contracts). The engine-arm concatenation reads this scalar
540
+ * positionally; its self-decoding upgrade (E2) is Phase 209 Wave 2.
541
+ * 2. rendered.askuserquestion_binding -- the scalar FIRE-IF-FORK imperative
542
+ * line (Phase 210-05 softened the unconditional BINDING wording to
543
+ * fire-if-genuine-fork; the field NAME is kept, consumers read it).
544
+ * 3. rendered.zones.footer -- marker line + binding line, appended (preceded by
545
+ * a blank line if the footer is non-empty). Every composeZones() consumer
546
+ * (the pickShape door + renderRoomChooserCard -- the incident's actual
547
+ * conversational room-pick fork) now sees a self-decoding imperative, not a
548
+ * bare marker.
549
+ *
550
+ * Marker (frozen): [AskUserQuestion contract: shape=F.X verbs=N]
551
+ * Imperative (E1 + 210-E): [FIRE-IF-FORK: ... call the AskUserQuestion tool ... (SEED-021)]
552
+ */
553
+ function appendAskUserQuestionTrailer(rendered, subShape) {
554
+ if (!rendered) return rendered;
555
+ const contract = rendered.contract || {};
556
+ const verbs = Array.isArray(contract.verbs) ? contract.verbs : [];
557
+ const shapeStr = (typeof contract.shape === 'string' && contract.shape.length > 0)
558
+ ? contract.shape : subShape;
559
+ const marker = '[AskUserQuestion contract: shape=' + shapeStr + ' verbs=' + verbs.length + ']';
560
+
561
+ // Surface 1: byte-frozen scalar marker (introspection; do NOT alter shape).
562
+ rendered.askuserquestion_marker = marker;
563
+
564
+ // Surface 2: the imperative -- makes the trigger self-decoding. Phase 210-05
565
+ // (item 210-E-2) softened the unconditional BINDING wording to a conditional
566
+ // fire-if-genuine-fork directive with the stable machine-greppable prefix
567
+ // [FIRE-IF-FORK: (same bracket-prefix shape as the literal it replaced). It
568
+ // still instructs firing the AskUserQuestion tool on a genuine unanswered
569
+ // fork, explicitly licenses NOT firing when the navigator already answered
570
+ // in plain text or the gate is unrelated to the current conversation, and
571
+ // keeps the SEED-021 no-reproduce render-hygiene clause verbatim (render
572
+ // hygiene is not over-reach). The field NAME stays askuserquestion_binding
573
+ // (consumers read it); only its contents changed.
574
+ const binding = '[FIRE-IF-FORK: if this fork is genuinely unanswered and relevant to the '
575
+ + 'current conversation, call the AskUserQuestion tool in THIS response with the '
576
+ + verbs.length + ' options above; if the navigator already answered in plain text or '
577
+ + 'the gate is unrelated to the current conversation, do NOT fire it - acknowledge '
578
+ + 'and proceed instead; do not reproduce this block as text (SEED-021)]';
579
+ rendered.askuserquestion_binding = binding;
580
+
581
+ // Surface 3: the rendered footer carries BOTH lines, so a card-capable
582
+ // consumer that renders zones reads the imperative next to the marker.
583
+ const trailer = marker + '\n' + binding;
584
+ if (!rendered.zones || typeof rendered.zones !== 'object') return rendered;
585
+ const existing = rendered.zones.footer;
586
+ if (existing === null || existing === undefined || existing === '') {
587
+ rendered.zones.footer = trailer;
588
+ } else {
589
+ rendered.zones.footer = String(existing) + '\n\n' + trailer;
590
+ }
591
+ return rendered;
592
+ }
593
+
594
+ /**
595
+ * Phase 121.5-10 Sub-plan K: overlay the locked Brain-suggestion content
596
+ * template onto a rendered F.* envelope per audit Section 5.2. Mutates the
597
+ * rendered object in place. Locked slot values per LOCKED Bundle A decisions:
598
+ *
599
+ * - Header chip: [■ BRAIN] (payload.header overrides)
600
+ * - Question line: "Choose next move:" (payload.questionLine overrides;
601
+ * rendered as the first line of zones.body BEFORE the
602
+ * two-line option rows)
603
+ * - Option rows: Two-line dense per Section 5.2.1; composed from
604
+ * payload.optionRows via composeBrainOptionRows().
605
+ * - Footer: Stat-strip line `▶ Brain · top-K of N ranked · cyan
606
+ * = informing` (payload.footer overrides). Prepended
607
+ * to existing footer with a blank-line separator.
608
+ *
609
+ * alias_map: when payload.alias_map is set, contract.alias_map surfaces it
610
+ * for downstream consumers (the selection-time canonical-verb collapse runs
611
+ * in the consumer via aliasToCanonical(verb_chosen, contract.alias_map) per
612
+ * LOCKED decision 1).
613
+ */
614
+ function applyBrainSuggestionVariant(rendered, payloadObj) {
615
+ if (!rendered || typeof rendered !== 'object') return rendered;
616
+ if (!rendered.zones || typeof rendered.zones !== 'object') return rendered;
617
+
618
+ // Header: enforce the locked chip (allow caller override).
619
+ const header = (typeof payloadObj.header === 'string' && payloadObj.header.length > 0)
620
+ ? payloadObj.header : BRAIN_CHIP;
621
+ rendered.zones.header = header;
622
+
623
+ // Body: compose two-line dense option rows + optional question line on top.
624
+ // If optionRows missing, keep the renderer's body (graceful: a Mode B / no-
625
+ // packet caller may legitimately have no rows to render).
626
+ const questionLine = (typeof payloadObj.questionLine === 'string' && payloadObj.questionLine.length > 0)
627
+ ? payloadObj.questionLine : 'Choose next move:';
628
+ if (Array.isArray(payloadObj.optionRows) && payloadObj.optionRows.length > 0) {
629
+ const rowsBlock = composeBrainOptionRows(payloadObj.optionRows);
630
+ rendered.zones.body = questionLine + '\n\n' + rowsBlock;
631
+ }
632
+
633
+ // Footer: prepend the stat-strip caption ahead of any existing footer (the
634
+ // AskUserQuestion trailer is appended AFTER this overlay; see pickShape).
635
+ const footer = (typeof payloadObj.footer === 'string' && payloadObj.footer.length > 0)
636
+ ? payloadObj.footer : null;
637
+ if (footer !== null) {
638
+ const existing = rendered.zones.footer;
639
+ if (existing === null || existing === undefined || existing === '') {
640
+ rendered.zones.footer = footer;
641
+ } else {
642
+ rendered.zones.footer = footer + '\n\n' + String(existing);
643
+ }
644
+ }
645
+
646
+ // alias_map: surface on contract so downstream selection handlers can
647
+ // call aliasToCanonical(verb_chosen, contract.alias_map) per LOCKED
648
+ // decision 1 (aliases render to user, canonical persists to graph).
649
+ if (payloadObj.alias_map && typeof payloadObj.alias_map === 'object') {
650
+ if (!rendered.contract || typeof rendered.contract !== 'object') {
651
+ rendered.contract = {};
652
+ }
653
+ rendered.contract.alias_map = payloadObj.alias_map;
654
+ }
655
+
656
+ // Surface the locked chip as a scalar for introspection without zone parsing.
657
+ rendered.brain_suggestion_chip = BRAIN_CHIP;
658
+
659
+ return rendered;
660
+ }
661
+
662
+ function dispatchShapeF(args) {
663
+ const { roomDir, tier, mode, payload } = args;
664
+ const payloadObj = (payload && typeof payload === 'object') ? payload : {};
665
+ const recommendedVerb = (mode === 'A' && typeof payloadObj.recommendedVerb === 'string')
666
+ ? payloadObj.recommendedVerb : null;
667
+
668
+ // Read JTBD state -- F.6 path requires non-null jtbd.
669
+ const jtbdState = safeRequire('./jtbd-state.cjs');
670
+ let jtbdId = null;
671
+ if (jtbdState && typeof jtbdState.getCurrent === 'function' && typeof roomDir === 'string') {
672
+ try {
673
+ const current = jtbdState.getCurrent(roomDir);
674
+ jtbdId = (current && typeof current.jtbd === 'string') ? current.jtbd : null;
675
+ } catch (e) {
676
+ jtbdId = null;
677
+ }
678
+ }
679
+
680
+ if (jtbdId !== null) {
681
+ const f6 = safeRequire('./shape-f6-renderer.cjs');
682
+ if (f6 && typeof f6.renderShapeF6 === 'function') {
683
+ const result = f6.renderShapeF6({ jtbd: jtbdId, tier, recommendedVerb });
684
+ if (result && !result.error && !result.fallthrough) {
685
+ return { shape: 'F.6', rendered: ensureFreeTextLast(result) };
686
+ }
687
+ // fall through to F.1 path on degenerate / unknown JTBD
688
+ }
689
+ }
690
+
691
+ // F.1 path -- prefer Phase 88.2 module if shipped, else fall back to Phase 101's inline canonical-10.
692
+ const f1 = safeRequire('./shape-f1-renderer.cjs') || safeRequire('./shape-f1-fallback.cjs');
693
+ if (f1 && typeof f1.renderShapeF1 === 'function') {
694
+ const result = f1.renderShapeF1({ tier, recommendedVerb });
695
+ return { shape: 'F.1', rendered: ensureFreeTextLast(result) };
696
+ }
697
+
698
+ // Neither F.1 nor F.6 module available -- return error.
699
+ return {
700
+ shape: 'error',
701
+ rendered: { error: 'no-f-renderer', detail: 'shape-f1 and shape-f6 modules both missing' },
702
+ };
703
+ }
704
+
705
+ // Phase 188-04: resolve the per-room roomDir the caller threads on the payload
706
+ // (either payload.roomDir or payload.roomState.roomDir). Read-only; returns null
707
+ // when absent so the state read degrades to null (Part 3 graceful fallback).
708
+ function _resolveRoomDirFromPayload(payloadObj) {
709
+ if (!payloadObj || typeof payloadObj !== 'object') return null;
710
+ if (typeof payloadObj.roomDir === 'string' && payloadObj.roomDir.length > 0) return payloadObj.roomDir;
711
+ const rs = payloadObj.roomState;
712
+ if (rs && typeof rs === 'object' && typeof rs.roomDir === 'string' && rs.roomDir.length > 0) return rs.roomDir;
713
+ return null;
714
+ }
715
+
716
+ // Phase 188-04 (SFS-08): read-only current DEPTH state for the F.3 branch. Never
717
+ // writes; a cold / absent / unavailable state yields null (degrade-never-block).
718
+ function readCurrentDepthState(payloadObj) {
719
+ const roomDir = _resolveRoomDirFromPayload(payloadObj);
720
+ if (roomDir === null) return null;
721
+ const depthState = safeRequire('./depth-state.cjs');
722
+ if (!depthState || typeof depthState.getCurrent !== 'function') return null;
723
+ try {
724
+ const cur = depthState.getCurrent(roomDir);
725
+ return (cur && typeof cur.depth === 'string') ? cur.depth : null;
726
+ } catch (_e) {
727
+ return null;
728
+ }
729
+ }
730
+
731
+ // Phase 188-04 (SFS-09): read-only current accumulated SCOPE state for the F.4
732
+ // branch. Never writes; a cold / absent / unavailable state yields [] (graceful).
733
+ function readCurrentScopeState(payloadObj) {
734
+ const roomDir = _resolveRoomDirFromPayload(payloadObj);
735
+ if (roomDir === null) return [];
736
+ const scopeState = safeRequire('./harvest-scope-state.cjs');
737
+ if (!scopeState || typeof scopeState.getScope !== 'function') return [];
738
+ try {
739
+ const scope = scopeState.getScope(roomDir);
740
+ return Array.isArray(scope) ? scope : [];
741
+ } catch (_e) {
742
+ return [];
743
+ }
744
+ }
745
+
746
+ /**
747
+ * Phase 88.2-04: direct sub-shape dispatch for F.1..F.5. Each renderer is the
748
+ * Wave-1 module shipped in 88.2-01..03 (open-vocab F.1/F.2/F.5 + closed-vocab
749
+ * F.3/F.4). Mode B Zone-1 prefix and AskUserQuestion trailer are applied at
750
+ * the dispatcher entry point (pickShape) so this helper returns a canonical
751
+ * { shape, rendered } envelope without those concerns.
752
+ */
753
+ function dispatchShapeFSubShape(requestedShape, args) {
754
+ const { tier, mode, payload } = args;
755
+ const payloadObj = (payload && typeof payload === 'object') ? payload : {};
756
+ const recommendedVerb = (mode === 'A' && typeof payloadObj.recommendedVerb === 'string')
757
+ ? payloadObj.recommendedVerb : null;
758
+ const callerVerbs = Array.isArray(payloadObj.verbs) ? payloadObj.verbs : undefined;
759
+ const callerHeader = (typeof payloadObj.header === 'string' && payloadObj.header.length > 0)
760
+ ? payloadObj.header : undefined;
761
+
762
+ let mod = null;
763
+ let fnName = null;
764
+ let inputArgs = null;
765
+ if (requestedShape === 'F.0') {
766
+ // Phase 88.2-05: F.0 Mini Decision Gate. Closed-vocab (freeTextOffered:false);
767
+ // dispatcher passes only header + body + parent_decision_id pass-through. The
768
+ // renderer ignores any caller-supplied verbs[] or recommendedVerb (closed-vocab
769
+ // is non-negotiable per CONTEXT.md spec body 2026-04-29).
770
+ mod = safeRequire('./shape-f0-renderer.cjs');
771
+ fnName = 'renderShapeF0';
772
+ inputArgs = {
773
+ tier: tier,
774
+ header: callerHeader,
775
+ body: (typeof payloadObj.body === 'string' && payloadObj.body.length > 0) ? payloadObj.body : undefined,
776
+ parent_decision_id: (typeof payloadObj.parent_decision_id === 'string' && payloadObj.parent_decision_id.length > 0)
777
+ ? payloadObj.parent_decision_id : undefined,
778
+ };
779
+ } else if (requestedShape === 'F.1') {
780
+ mod = safeRequire('./shape-f1-renderer.cjs') || safeRequire('./shape-f1-fallback.cjs');
781
+ fnName = 'renderShapeF1';
782
+ inputArgs = { tier: tier, recommendedVerb: recommendedVerb, verbs: callerVerbs, header: callerHeader };
783
+ } else if (requestedShape === 'F.2') {
784
+ mod = safeRequire('./shape-f2-renderer.cjs');
785
+ fnName = 'renderShapeF2';
786
+ inputArgs = { tier: tier, recommendedVerb: recommendedVerb, verbs: callerVerbs, header: callerHeader };
787
+ } else if (requestedShape === 'F.3') {
788
+ // Phase 188-04 (SFS-08): thread the current per-room DEPTH state into the F.3
789
+ // branch so the render can reflect it. The state is read-only here (the write
790
+ // half is the f3-depth-consumer over the caller-owned room). The renderer stays
791
+ // CLOSED-VOCAB: it ignores currentDepth for its option set (no marker, no
792
+ // Free-Text); currentDepth rides alongside {header} as informational context only.
793
+ mod = safeRequire('./shape-f3-renderer.cjs');
794
+ fnName = 'renderShapeF3';
795
+ inputArgs = { header: callerHeader, currentDepth: readCurrentDepthState(payloadObj) };
796
+ } else if (requestedShape === 'F.4') {
797
+ // Phase 188-04 (SFS-09): thread the current per-room accumulated SCOPE state into
798
+ // the F.4 branch (read-only; the write half is the f4-scope-consumer). Closed-vocab
799
+ // is preserved: the renderer ignores currentScope for its ladder (no marker, no
800
+ // Free-Text); currentScope rides alongside {header} as informational context only.
801
+ mod = safeRequire('./shape-f4-renderer.cjs');
802
+ fnName = 'renderShapeF4';
803
+ inputArgs = { header: callerHeader, currentScope: readCurrentScopeState(payloadObj) };
804
+ } else if (requestedShape === 'F.5') {
805
+ mod = safeRequire('./shape-f5-renderer.cjs');
806
+ fnName = 'renderShapeF5';
807
+ inputArgs = { tier: tier, recommendedVerb: recommendedVerb, verbs: callerVerbs, header: callerHeader };
808
+ } else if (requestedShape === 'F.6') {
809
+ // Phase 88.2-06: F.6 Plan Review Round. Closed-vocab parent shape (3 verbs
810
+ // Confirm / Reject / Discuss, freeTextOffered:false; reject reason is captured
811
+ // via a downstream prompt and lands as a property on the REVIEWED edge).
812
+ // Routes to the collision-safe path lib/hmi/shape-f6-plan-review-renderer.cjs;
813
+ // the umbrella 'F' branch above continues to route to Phase 101-01's
814
+ // lib/hmi/shape-f6-renderer.cjs via JTBD logic (R1 invariant preserved).
815
+ mod = safeRequire('./shape-f6-plan-review-renderer.cjs');
816
+ fnName = 'renderShapeF6PlanReview';
817
+ inputArgs = {
818
+ tier: tier,
819
+ header: callerHeader,
820
+ position: (Number.isInteger(payloadObj.position) ? payloadObj.position : undefined),
821
+ totalQuestions: (Number.isInteger(payloadObj.totalQuestions) ? payloadObj.totalQuestions : undefined),
822
+ claim: (typeof payloadObj.claim === 'string' && payloadObj.claim.length > 0)
823
+ ? payloadObj.claim : undefined,
824
+ counts: (payloadObj.counts && typeof payloadObj.counts === 'object') ? payloadObj.counts : undefined,
825
+ round_id: (typeof payloadObj.round_id === 'string' && payloadObj.round_id.length > 0)
826
+ ? payloadObj.round_id : undefined,
827
+ personaContext: (typeof payloadObj.personaContext === 'string' && payloadObj.personaContext.length > 0)
828
+ ? payloadObj.personaContext : undefined,
829
+ };
830
+ } else if (requestedShape === 'F.7') {
831
+ // Phase 188-01 (SFS-06): the "Breakthrough Surface" collapse. Bare F.7 is the
832
+ // CANONICAL DIAL now, NOT the breakthrough renderer. Per canon D-10 the canon
833
+ // knows EXACTLY ten shapes; "Breakthrough" is no longer one of them -- it
834
+ // re-homes to an F.1 next-move (a MOVE, not a shape). The retired
835
+ // shape-f7-breakthrough-renderer.cjs module stays LIVE as the definitional
836
+ // home of the 5-verb set + the D-20 provenance HARD FLOOR, but it is no
837
+ // longer reachable through the bare-F.7 single door (SEED-020). This branch
838
+ // mirrors the F.7-dial branch below: same safeRequire of dial-selector.cjs,
839
+ // same renderDialShape envelope. (Historic route, retired here:
840
+ // shape-f7-breakthrough-renderer.cjs via requestedShape:'F.7'.)
841
+ mod = safeRequire('./dial-selector.cjs');
842
+ fnName = 'renderDialShape';
843
+ inputArgs = {
844
+ investment_level: (typeof payloadObj.investment_level === 'number') ? payloadObj.investment_level : 0.5,
845
+ posture: (typeof payloadObj.posture === 'string') ? payloadObj.posture : 'hold',
846
+ tty: payloadObj.tty === true,
847
+ };
848
+ } else if (requestedShape === 'F.7-dial') {
849
+ // Phase 177-02 (BCH-10 / BCH-16): the four-arrow register HUD branch.
850
+ // Mirrors the F.7 branch above (safeRequire of a renderer module, the
851
+ // inputArgs envelope, the { shape, rendered } return). The dial renderer
852
+ // is lib/hmi/dial-selector.cjs::renderDialHud -- a PURE module (no I/O, no
853
+ // Brain wire, Part 8 LOCAL). The HUD MOVES the two existing axes
854
+ // (investment_level up/down, posture left/right over the frozen 3); it
855
+ // mints NO reach and adds NO shape vocabulary outside this pickShape
856
+ // branch (Part 3 render contract frozen elsewhere). On a missing module
857
+ // this falls through to the no-subshape-renderer error envelope below.
858
+ mod = safeRequire('./dial-selector.cjs');
859
+ fnName = 'renderDialShape';
860
+ inputArgs = {
861
+ investment_level: (typeof payloadObj.investment_level === 'number') ? payloadObj.investment_level : 0.5,
862
+ posture: (typeof payloadObj.posture === 'string') ? payloadObj.posture : 'hold',
863
+ tty: payloadObj.tty === true,
864
+ };
865
+ } else if (requestedShape === 'F.8') {
866
+ // Phase 188-06 (SFS-01): the multiSelect Action Set. Mirrors the F.5 branch --
867
+ // a safeRequire of the renderer + the inputArgs envelope. The renderer emits a
868
+ // toggle basket (MAX_TOGGLE_N paged, NO single recommended marker; a candidate
869
+ // at Brain confidence >=0.70 renders PRE-CHECKED but never auto-applies). The
870
+ // candidate set arrives on payloadObj.options (falling back to payloadObj.verbs);
871
+ // each option is a string OR { label, confidence } so the >=0.70 pre-check map
872
+ // threads through. This is the ONLY dispatcher edit in this plan.
873
+ mod = safeRequire('./shape-f8-renderer.cjs');
874
+ fnName = 'renderShapeF8';
875
+ inputArgs = {
876
+ tier: tier,
877
+ options: Array.isArray(payloadObj.options)
878
+ ? payloadObj.options
879
+ : (Array.isArray(payloadObj.verbs) ? payloadObj.verbs : []),
880
+ header: callerHeader,
881
+ personaContext: (typeof payloadObj.personaContext === 'string' && payloadObj.personaContext.length > 0)
882
+ ? payloadObj.personaContext : undefined,
883
+ };
884
+ } else if (requestedShape === 'F.9') {
885
+ // Phase 188-07 (SFS-04): the ordered Cascade / Reconcile Gate. Mirrors the F.5
886
+ // branch -- a safeRequire of the renderer + the inputArgs envelope. The renderer
887
+ // emits ONE question per cascade item in ARRAY ORDER (order IS meaning), each
888
+ // carrying the closed ordered-outcome set APPROVE/REJECT/DEFER (no marker, no
889
+ // Free-Text; paged past the ceiling, never a live widget -- the TTY wall). The
890
+ // ordered cascade arrives on payloadObj.items; the header rides callerHeader.
891
+ // This is the F.9 registration branch (F.8 landed in 188-06, untouched).
892
+ mod = safeRequire('./shape-f9-renderer.cjs');
893
+ fnName = 'renderShapeF9';
894
+ inputArgs = {
895
+ tier: tier,
896
+ items: Array.isArray(payloadObj.items) ? payloadObj.items : [],
897
+ header: callerHeader,
898
+ personaContext: (typeof payloadObj.personaContext === 'string' && payloadObj.personaContext.length > 0)
899
+ ? payloadObj.personaContext : undefined,
900
+ };
901
+ }
902
+
903
+ if (!mod || typeof mod[fnName] !== 'function') {
904
+ return {
905
+ shape: 'error',
906
+ rendered: {
907
+ error: 'no-subshape-renderer',
908
+ detail: requestedShape + ' renderer module missing',
909
+ },
910
+ };
911
+ }
912
+
913
+ let result;
914
+ try {
915
+ result = mod[fnName](inputArgs);
916
+ } catch (e) {
917
+ return {
918
+ shape: 'error',
919
+ rendered: {
920
+ error: 'subshape-render-failed',
921
+ detail: requestedShape + ': ' + (e && e.message ? String(e.message).slice(0, 80) : 'unknown'),
922
+ },
923
+ };
924
+ }
925
+
926
+ if (!result || result.error) {
927
+ return {
928
+ shape: 'error',
929
+ rendered: result || { error: 'subshape-empty', detail: requestedShape },
930
+ };
931
+ }
932
+
933
+ return { shape: requestedShape, rendered: ensureFreeTextLast(result) };
934
+ }
935
+
936
+ function dispatchShapeG(args) {
937
+ const { tier, mode, payload } = args;
938
+ const g = safeRequire('./shape-g-renderer.cjs');
939
+ if (!g || typeof g.renderShapeG !== 'function') {
940
+ return { shape: 'error', rendered: { error: 'no-g-renderer' } };
941
+ }
942
+ const inputPayload = Object.assign({}, (payload && typeof payload === 'object') ? payload : {}, {
943
+ tier: tier,
944
+ mode: mode,
945
+ });
946
+ const result = g.renderShapeG(inputPayload);
947
+ if (result && result.fallthrough === true) {
948
+ return { shape: 'E', passthrough: true, fallthroughFrom: 'G', rendered: result };
949
+ }
950
+ return { shape: 'G', rendered: result };
951
+ }
952
+
953
+ function dispatchShapeH(args) {
954
+ const { tier, mode, payload } = args;
955
+ const h = safeRequire('./shape-h-renderer.cjs');
956
+ if (!h || typeof h.renderShapeH !== 'function') {
957
+ return { shape: 'error', rendered: { error: 'no-h-renderer' } };
958
+ }
959
+ const inputPayload = Object.assign({}, (payload && typeof payload === 'object') ? payload : {}, {
960
+ tier: tier,
961
+ mode: mode,
962
+ });
963
+ const result = h.renderShapeH(inputPayload);
964
+ if (result && result.error) {
965
+ return { shape: 'error', rendered: result };
966
+ }
967
+ return { shape: 'H', rendered: result };
968
+ }
969
+
970
+ /**
971
+ * Single entry point.
972
+ */
973
+ function pickShape(args) {
974
+ try {
975
+ const opts = (args && typeof args === 'object') ? args : {};
976
+ const requestedShape = typeof opts.requestedShape === 'string' ? opts.requestedShape : '';
977
+ const operator = (typeof opts.operator === 'string' && opts.operator.length > 0) ? opts.operator : null;
978
+ const tier = resolveTier(opts.tier);
979
+ const mode = modeFromTier(tier);
980
+
981
+ // Tier 0 refuse path (Canon Part 3 Rule 2). Applies BEFORE operator gates
982
+ // because tier 0 cannot host any selector regardless of operator.
983
+ if (tier === 0) {
984
+ return tier0Refuse();
985
+ }
986
+
987
+ // Phase 88.2-04: JUST_TALK operator refuses ALL Shape F.* surfaces. This
988
+ // mirrors render-v2 step 6 (lib/render/render-v2.cjs#244) which suppresses
989
+ // entire output when operator === JUST_TALK. The dispatcher refuses earlier
990
+ // (before invoking renderers) to avoid wasted CPU on a payload that will be
991
+ // dropped downstream.
992
+ const isShapeF = (requestedShape === F_UMBRELLA || F_SUBSHAPES.indexOf(requestedShape) !== -1);
993
+ if (isShapeF && operator === JUST_TALK) {
994
+ return justTalkRefuse(requestedShape);
995
+ }
996
+
997
+ let result;
998
+ if (requestedShape === F_UMBRELLA) {
999
+ result = dispatchShapeF({ roomDir: opts.roomDir, tier, mode, payload: opts.payload });
1000
+ } else if (F_SUBSHAPES.indexOf(requestedShape) !== -1) {
1001
+ result = dispatchShapeFSubShape(requestedShape, { tier, mode, payload: opts.payload });
1002
+ } else if (requestedShape === 'G') {
1003
+ result = dispatchShapeG({ tier, mode, payload: opts.payload });
1004
+ } else if (requestedShape === 'H') {
1005
+ result = dispatchShapeH({ tier, mode, payload: opts.payload });
1006
+ } else if (
1007
+ requestedShape === 'A' || requestedShape === 'B' ||
1008
+ requestedShape === 'C' || requestedShape === 'D' ||
1009
+ requestedShape === 'E'
1010
+ ) {
1011
+ return { shape: requestedShape, passthrough: true };
1012
+ } else {
1013
+ return {
1014
+ shape: 'error',
1015
+ rendered: { error: 'unknown-shape', detail: 'requestedShape: ' + JSON.stringify(requestedShape) },
1016
+ };
1017
+ }
1018
+
1019
+ // Mode B Zone 1 prefix (defense-in-depth at dispatcher).
1020
+ if (mode === 'B' && result && result.rendered && result.shape !== 'error') {
1021
+ applyModeBPrefix(result.rendered);
1022
+ }
1023
+
1024
+ // Phase 121.5-10 Sub-plan K: Brain-suggestion variant overlay. Applied
1025
+ // BEFORE the AskUserQuestion trailer so the trailer lands AFTER the
1026
+ // stat-strip footer per audit Section 5.2. Only fires when payload
1027
+ // carries brain_suggestion_variant === true; otherwise no-op (every
1028
+ // existing F.* consumer is preserved byte-for-byte).
1029
+ if (result && result.shape !== 'error' && !result.passthrough) {
1030
+ const payloadObj = (opts.payload && typeof opts.payload === 'object') ? opts.payload : {};
1031
+ if (payloadObj.brain_suggestion_variant === true && result.rendered) {
1032
+ applyBrainSuggestionVariant(result.rendered, payloadObj);
1033
+ }
1034
+ // Phase 148-03 (IRW-04, D-03): archetype routing. When the caller names the
1035
+ // reach (reach_id / sub_mode / standing-option key) via payload.reachKey,
1036
+ // resolve its toggleable-component archetype from reach-component-map.json
1037
+ // and fold the AskUserQuestion-mode hints onto the contract. The default
1038
+ // 'select' is applied even when reachKey is omitted so every F.* contract
1039
+ // carries an explicit archetype. SEED-020: this is the only construction site.
1040
+ if (result.rendered) {
1041
+ const reachKey = (typeof payloadObj.reachKey === 'string' && payloadObj.reachKey.length > 0)
1042
+ ? payloadObj.reachKey : null;
1043
+ applyArchetypeRouting(result.rendered, reachKey);
1044
+ }
1045
+ }
1046
+
1047
+ // Phase 88.2-04: AskUserQuestion structural-marker trailer + telemetry.
1048
+ // Both apply ONLY to successful Shape F.* presentations (umbrella resolves
1049
+ // to F.1/F.6; sub-shapes resolve to themselves). Error paths and G/H/A-E
1050
+ // are NOT touched -- they preserve the existing 9-test contract byte-for-byte.
1051
+ //
1052
+ // Telemetry is opt-in via `payload.emitTelemetry === true`. This protects
1053
+ // Canon Part 8 fs_scope (lib/render/render-v2.cjs invokes the dispatcher
1054
+ // for Zone 4 enrichment -- that call is NOT a presentation event and must
1055
+ // produce zero FS side-effects). The actual presentation surface (where a
1056
+ // human navigator answers an AskUserQuestion prompt) sets the flag to true.
1057
+ // The trailer is unconditionally attached: it is part of the rendered
1058
+ // surface, not a side-effect.
1059
+ if (result && result.shape !== 'error' && !result.passthrough) {
1060
+ const isFShape = (typeof result.shape === 'string' && result.shape.indexOf('F') === 0);
1061
+ if (isFShape) {
1062
+ appendAskUserQuestionTrailer(result.rendered, result.shape);
1063
+ const payloadObj = (opts.payload && typeof opts.payload === 'object') ? opts.payload : {};
1064
+ if (payloadObj.emitTelemetry === true) {
1065
+ emitPresentationTelemetry(opts.roomDir, result.shape, result.rendered, operator);
1066
+ // Phase 121-02 D-04: capture selector pick (88.2/125 ranker) into
1067
+ // the unified ~/.mindrian/telemetry/v1.13/events-YYYY-WNN.jsonl
1068
+ // stream (Plan 121-00 writer chokepoint). Non-blocking; never
1069
+ // throws back to caller.
1070
+ emitSelectorPickUnified(opts.roomDir, result.shape, result.rendered, payloadObj);
1071
+ // Phase 209-06 (H3): the PRIMARY side-channel producer. No
1072
+ // session_id reaches this seam (this call site never had one),
1073
+ // so the record files under NO_SESSION_KEY; the consumer unions
1074
+ // that bucket into every session-scoped read (documented in
1075
+ // lib/core/card-fire-sidechannel.cjs). Gated on the SAME
1076
+ // emitTelemetry flag as the two calls above (Canon Part 8
1077
+ // fs_scope: lib/render/render-v2.cjs's Zone-4 dispatcher call
1078
+ // must stay zero-FS). Lazy-required inside try/catch; a writer
1079
+ // fault never affects the presentation result.
1080
+ // Hoisted above the try below so the Phase 227-04 additive sibling
1081
+ // block can read the SAME computed value instead of recomputing
1082
+ // the header+body join a second time (D-03 site 1).
1083
+ let gateSubjectText = '';
1084
+ try {
1085
+ const sidechannel = require('../core/card-fire-sidechannel.cjs');
1086
+ // 2026-07-05 relevance-gate fix: capture the gate's OWN rendered
1087
+ // content (pre-trailer header+body, independent of what the
1088
+ // model later says) as the subject text signal.
1089
+ gateSubjectText = [
1090
+ result.rendered && result.rendered.zones && result.rendered.zones.header,
1091
+ result.rendered && result.rendered.zones && result.rendered.zones.body,
1092
+ ].filter(function (s) { return typeof s === 'string' && s.length > 0; }).join(' ');
1093
+ sidechannel.recordReachedGate({
1094
+ surface: 'lib/hmi/selector-dispatcher.cjs',
1095
+ shape: result.shape,
1096
+ subjectText: gateSubjectText,
1097
+ });
1098
+ } catch (_e) {
1099
+ /* never let a side-channel fault affect the presentation result */
1100
+ }
1101
+ // Phase 227-04 (D-03 site 1, T-227-10/T-227-11): additive sibling to
1102
+ // the card-fire-sidechannel call above. This records specifically
1103
+ // the F.1 mode-select lane-picker card fire (skills/conversation-
1104
+ // mode/SKILL.md's "Are we just chatting, brainstorming, or building
1105
+ // something?" card), NOT every F.1 gate in the app -- F.1 is also
1106
+ // used by other Decision Gates (for example trending-to-absurd's
1107
+ // own trend-selection stage also renders as F.1). The subject-text
1108
+ // scoping check below (both "brainstorming" and "building
1109
+ // something" present, case-insensitive) is what narrows the
1110
+ // recording to the mode-select card specifically. Only 'lane:
1111
+ // card-fired' is knowable here (the trailer fires at render time,
1112
+ // before the navigator answers); sessionId is not in scope at this
1113
+ // call site either, matching the existing card-fire-sidechannel
1114
+ // producer's own NO_SESSION_KEY gap at this exact location --
1115
+ // mode-select-sidechannel.cjs's union-read already accounts for
1116
+ // this. Wrapped in its own try/catch (isolated from the block
1117
+ // above) so a fault here never affects the existing block or the
1118
+ // presentation result.
1119
+ try {
1120
+ if (result.shape === 'F.1') {
1121
+ const subjectLower = gateSubjectText.toLowerCase();
1122
+ if (
1123
+ subjectLower.indexOf('brainstorming') !== -1 &&
1124
+ subjectLower.indexOf('building something') !== -1
1125
+ ) {
1126
+ require('../core/mode-select-sidechannel.cjs').recordLanePick({
1127
+ lane: 'card-fired',
1128
+ });
1129
+ }
1130
+ }
1131
+ } catch (_e) {
1132
+ /* never let a side-channel fault affect the presentation result */
1133
+ }
1134
+ }
1135
+ }
1136
+ }
1137
+
1138
+ return result;
1139
+ } catch (e) {
1140
+ return {
1141
+ shape: 'error',
1142
+ rendered: {
1143
+ error: 'dispatch-failed',
1144
+ detail: (e && e.message ? String(e.message).slice(0, 80) : 'unknown'),
1145
+ },
1146
+ };
1147
+ }
1148
+ }
1149
+
1150
+ /**
1151
+ * Phase 88.2-04: re-export of selector-telemetry.recordResponse so consumers
1152
+ * wiring AskUserQuestion answers back to the local ledger have a single
1153
+ * dispatcher-level entry point. Wrapped in try/catch -- never fails Larry's turn.
1154
+ */
1155
+ function recordSelectorResponse(roomDir, record) {
1156
+ try {
1157
+ const tel = safeRequire('./selector-telemetry.cjs');
1158
+ if (!tel || typeof tel.recordResponse !== 'function') return;
1159
+ tel.recordResponse(roomDir, record);
1160
+ } catch (_e) {
1161
+ // Graceful.
1162
+ }
1163
+ }
1164
+
1165
+ module.exports = {
1166
+ pickShape: pickShape,
1167
+ recordSelectorResponse: recordSelectorResponse,
1168
+ // Phase 150.5-02 (DIAL-ATOM-01): the SEED-020 single construction door,
1169
+ // exported top-level so the engine render caller (intent-classifier.cjs
1170
+ // renderEngineDecisionWithDial) threads the dial contract through the
1171
+ // dispatcher instead of composing the trailer anywhere else.
1172
+ appendAskUserQuestionTrailer: appendAskUserQuestionTrailer,
1173
+ // Phase 121.5-10 Sub-plan K: alias-to-canonical helper for graph-edge
1174
+ // persistence per LOCKED decision 1 (aliases render to user; canonical
1175
+ // verbs persist via navigation.cjs).
1176
+ aliasToCanonical: aliasToCanonical,
1177
+ // Phase 148-03 (IRW-04, D-03): the reach -> toggleable-component-archetype
1178
+ // resolver. Reads lib/hmi/reach-component-map.json (registry-is-the-table).
1179
+ resolveArchetype: resolveArchetype,
1180
+ _internal: {
1181
+ resolveArchetype: resolveArchetype,
1182
+ archetypeToContractHints: archetypeToContractHints,
1183
+ applyArchetypeRouting: applyArchetypeRouting,
1184
+ resolveTier: resolveTier,
1185
+ modeFromTier: modeFromTier,
1186
+ ensureFreeTextLast: ensureFreeTextLast,
1187
+ applyModeBPrefix: applyModeBPrefix,
1188
+ appendAskUserQuestionTrailer: appendAskUserQuestionTrailer,
1189
+ emitPresentationTelemetry: emitPresentationTelemetry,
1190
+ justTalkRefuse: justTalkRefuse,
1191
+ applyBrainSuggestionVariant: applyBrainSuggestionVariant,
1192
+ composeBrainOptionRows: composeBrainOptionRows,
1193
+ MODE_B_ZONE1_PREFIX: MODE_B_ZONE1_PREFIX,
1194
+ F_SUBSHAPES: F_SUBSHAPES.slice(),
1195
+ JUST_TALK: JUST_TALK,
1196
+ COMPACTION_VIOLATION_CODE: COMPACTION_VIOLATION_CODE,
1197
+ BRAIN_CHIP: BRAIN_CHIP,
1198
+ BRAIN_GLYPH_RECOMMENDED: BRAIN_GLYPH_RECOMMENDED,
1199
+ BRAIN_GLYPH_ALTERNATIVE: BRAIN_GLYPH_ALTERNATIVE,
1200
+ },
1201
+ };