@mindrian_os/install 1.13.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +21 -0
- package/.mcp.json +9 -0
- package/CHANGELOG.md +3333 -0
- package/LICENSE +123 -0
- package/README.md +673 -0
- package/agents/brain-query.md +80 -0
- package/agents/framework-runner.md +237 -0
- package/agents/grading.md +188 -0
- package/agents/investor.md +128 -0
- package/agents/larry-extended.md +135 -0
- package/agents/opportunity-scanner.md +91 -0
- package/agents/persona-analyst.md +132 -0
- package/agents/research.md +89 -0
- package/agents/reverse-salient-agent.md +27 -0
- package/bin/cli.js +142 -0
- package/bin/mindrian-mcp-server.cjs +182 -0
- package/bin/mindrian-tools.cjs +765 -0
- package/commands/act.md +439 -0
- package/commands/admin.md +404 -0
- package/commands/analyze-needs.md +42 -0
- package/commands/analyze-systems.md +39 -0
- package/commands/analyze-timing.md +42 -0
- package/commands/auto-explore.md +64 -0
- package/commands/beautiful-question.md +40 -0
- package/commands/brain-derive.md +78 -0
- package/commands/build-knowledge.md +42 -0
- package/commands/build-thesis.md +46 -0
- package/commands/causal.md +234 -0
- package/commands/challenge-assumptions.md +33 -0
- package/commands/compare-ventures.md +83 -0
- package/commands/dashboard.md +110 -0
- package/commands/deep-grade.md +82 -0
- package/commands/diagnose.md +58 -0
- package/commands/diagnostics.md +151 -0
- package/commands/doctor.md +151 -0
- package/commands/dominant-designs.md +40 -0
- package/commands/explain-decision.md +87 -0
- package/commands/explore-domains.md +42 -0
- package/commands/explore-futures.md +40 -0
- package/commands/explore-trends.md +42 -0
- package/commands/export.md +103 -0
- package/commands/file-meeting.md +724 -0
- package/commands/find-analogies.md +188 -0
- package/commands/find-bottlenecks.md +62 -0
- package/commands/find-connections.md +76 -0
- package/commands/funding.md +81 -0
- package/commands/grade.md +203 -0
- package/commands/graph.md +128 -0
- package/commands/hat-briefing.md +125 -0
- package/commands/heal.md +196 -0
- package/commands/help.md +399 -0
- package/commands/hmi-status.md +172 -0
- package/commands/jtbd.md +241 -0
- package/commands/leadership.md +73 -0
- package/commands/lean-canvas.md +40 -0
- package/commands/macro-trends.md +40 -0
- package/commands/map-unknowns.md +40 -0
- package/commands/memory.md +173 -0
- package/commands/models.md +175 -0
- package/commands/mos-reason.md +285 -0
- package/commands/mullins.md +120 -0
- package/commands/new-project.md +481 -0
- package/commands/onboard.md +434 -0
- package/commands/operator.md +149 -0
- package/commands/opportunities.md +144 -0
- package/commands/organize.md +497 -0
- package/commands/persona.md +198 -0
- package/commands/pipeline.md +112 -0
- package/commands/present.md +91 -0
- package/commands/publish.md +201 -0
- package/commands/query.md +124 -0
- package/commands/radar.md +72 -0
- package/commands/reanalyze.md +91 -0
- package/commands/research.md +196 -0
- package/commands/room.md +352 -0
- package/commands/rooms.md +598 -0
- package/commands/root-cause.md +40 -0
- package/commands/rs-experts.md +85 -0
- package/commands/rs-explain.md +100 -0
- package/commands/rs-fetch.md +94 -0
- package/commands/rs-thesis.md +85 -0
- package/commands/scenario-plan.md +40 -0
- package/commands/scheduled-tasks.md +285 -0
- package/commands/score-innovation.md +43 -0
- package/commands/scout.md +239 -0
- package/commands/setup.md +618 -0
- package/commands/snapshot.md +147 -0
- package/commands/speakers.md +84 -0
- package/commands/splash.md +28 -0
- package/commands/status.md +75 -0
- package/commands/structure-argument.md +42 -0
- package/commands/suggest-next.md +80 -0
- package/commands/systems-thinking.md +40 -0
- package/commands/think-hats.md +42 -0
- package/commands/update.md +181 -0
- package/commands/user-needs.md +40 -0
- package/commands/validate.md +40 -0
- package/commands/value-proposition.md +61 -0
- package/commands/vault.md +180 -0
- package/commands/visualize.md +52 -0
- package/commands/whitespace.md +507 -0
- package/commands/wiki.md +69 -0
- package/hooks/hooks.json +381 -0
- package/hooks/run-hook.cmd +64 -0
- package/lib/__init__.py +0 -0
- package/lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/agents/auto-explore-agent.cjs +1043 -0
- package/lib/agents/reverse-salient-agent.cjs +679 -0
- package/lib/agents/tension-hook-agent.cjs +544 -0
- package/lib/brain/ROOM.md +44 -0
- package/lib/brain/chain-recommender.cjs +301 -0
- package/lib/chat/chat-context.js +185 -0
- package/lib/chat/chat-panel.js +721 -0
- package/lib/chat/fabric-chat.cjs +288 -0
- package/lib/chat/generative-tools.js +219 -0
- package/lib/conversation/ROOM.md +39 -0
- package/lib/conversation/classifier-rules.json +38 -0
- package/lib/conversation/classifier.cjs +264 -0
- package/lib/conversation/operator.cjs +287 -0
- package/lib/copy/115-spec-strings.cjs +55 -0
- package/lib/core/__init__.py +0 -0
- package/lib/core/__nav-stub.cjs +14 -0
- package/lib/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs-math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_cache.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_corpus.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_hybrid.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_math.cpython-312.pyc +0 -0
- package/lib/core/__pycache__/rs_rooms.cpython-312.pyc +0 -0
- package/lib/core/artifact-id.cjs +148 -0
- package/lib/core/asset-ops.cjs +151 -0
- package/lib/core/auto-commit-throttle.cjs +129 -0
- package/lib/core/bearer-token.cjs +199 -0
- package/lib/core/brain-client.cjs +865 -0
- package/lib/core/brain-derivation-prompts.cjs +326 -0
- package/lib/core/brain-derivation-queue.cjs +431 -0
- package/lib/core/brain-derivation.cjs +580 -0
- package/lib/core/brain-md-schema.cjs +528 -0
- package/lib/core/brain-md-staleness.cjs +357 -0
- package/lib/core/brain-response-sanitize.cjs +188 -0
- package/lib/core/bridge-writer.cjs +477 -0
- package/lib/core/chat-context-builder.cjs +253 -0
- package/lib/core/cross-room-aggregator.cjs +762 -0
- package/lib/core/daily-briefing.cjs +438 -0
- package/lib/core/decision-capture.cjs +618 -0
- package/lib/core/deep-links.cjs +82 -0
- package/lib/core/dispatch-optimizer.cjs +354 -0
- package/lib/core/dual-path-detector.cjs +84 -0
- package/lib/core/dual-path-detector.test.cjs +334 -0
- package/lib/core/exports-log.cjs +79 -0
- package/lib/core/feynman-minto-invariants.cjs +605 -0
- package/lib/core/folder-memory-async.cjs +338 -0
- package/lib/core/folder-memory-shared.cjs +890 -0
- package/lib/core/folder-memory.cjs +416 -0
- package/lib/core/framework-chain-composer.cjs +411 -0
- package/lib/core/frontmatter-schemas.cjs +330 -0
- package/lib/core/git-ops.cjs +141 -0
- package/lib/core/graph-ops.cjs +258 -0
- package/lib/core/hat-persistence.cjs +362 -0
- package/lib/core/index.cjs +60 -0
- package/lib/core/integration-registry.cjs +232 -0
- package/lib/core/intelligence-cascade.cjs +661 -0
- package/lib/core/lazygraph-ops.cjs +1057 -0
- package/lib/core/lru-cache.cjs +139 -0
- package/lib/core/mcp-profiles.cjs +182 -0
- package/lib/core/meeting-ops.cjs +54 -0
- package/lib/core/memory-ops.cjs +600 -0
- package/lib/core/migrations/ROOM.md +33 -0
- package/lib/core/migrations/phase-109-nodes-provenance.cjs +339 -0
- package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
- package/lib/core/model-profiles.cjs +246 -0
- package/lib/core/mullins-scaffold.cjs +160 -0
- package/lib/core/nav-dial.cjs +316 -0
- package/lib/core/navigation/ROOM.md +15 -0
- package/lib/core/navigation/explanation.cjs +43 -0
- package/lib/core/navigation/focus.cjs +135 -0
- package/lib/core/navigation/ingestion.cjs +82 -0
- package/lib/core/navigation/insights.cjs +350 -0
- package/lib/core/navigation/memory-events.cjs +118 -0
- package/lib/core/navigation/neighborhood.cjs +78 -0
- package/lib/core/navigation/packet.cjs +182 -0
- package/lib/core/navigation/room-home.cjs +127 -0
- package/lib/core/navigation/transitions.cjs +82 -0
- package/lib/core/navigation-engine-shared.cjs +242 -0
- package/lib/core/navigation-engine.cjs +664 -0
- package/lib/core/navigation.cjs +60 -0
- package/lib/core/nl-graph-queries.cjs +164 -0
- package/lib/core/offer-presenter.cjs +406 -0
- package/lib/core/opportunity-extractor.cjs +183 -0
- package/lib/core/opportunity-ops.cjs +1371 -0
- package/lib/core/persona-ops.cjs +537 -0
- package/lib/core/persona-taxonomy.cjs +190 -0
- package/lib/core/platform-gates.cjs +120 -0
- package/lib/core/platform.cjs +257 -0
- package/lib/core/proactive-intelligence.cjs +528 -0
- package/lib/core/problem-type-router.cjs +315 -0
- package/lib/core/reasoning-ops.cjs +639 -0
- package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
- package/lib/core/room-classifier-strict-mode.cjs +229 -0
- package/lib/core/room-db.cjs +127 -0
- package/lib/core/room-ops-async.cjs +92 -0
- package/lib/core/room-ops-shared.cjs +64 -0
- package/lib/core/room-ops-sync.cjs +70 -0
- package/lib/core/room-ops.cjs +32 -0
- package/lib/core/room-type-detector.cjs +386 -0
- package/lib/core/rs-brain-substrate-prompts.cjs +129 -0
- package/lib/core/rs-brain-substrate.cjs +570 -0
- package/lib/core/rs-breakthrough-scorer.cjs +255 -0
- package/lib/core/rs-canon-violations.cjs +82 -0
- package/lib/core/rs-chain-feeder.cjs +343 -0
- package/lib/core/rs-commercial-assessor.cjs +280 -0
- package/lib/core/rs-differential-scorer.cjs +376 -0
- package/lib/core/rs-domain-analyzer.cjs +385 -0
- package/lib/core/rs-egress-prompts.cjs +113 -0
- package/lib/core/rs-egress-telemetry.cjs +225 -0
- package/lib/core/rs-egress-violations.cjs +53 -0
- package/lib/core/rs-expert-mapper.cjs +467 -0
- package/lib/core/rs-fetcher-academic.cjs +697 -0
- package/lib/core/rs-fetcher-experts.cjs +314 -0
- package/lib/core/rs-fetcher-industry.cjs +731 -0
- package/lib/core/rs-fetcher-patents.cjs +564 -0
- package/lib/core/rs-innovation-classifier.cjs +194 -0
- package/lib/core/rs-mind-map.cjs +656 -0
- package/lib/core/rs-neo4j-writer.cjs +388 -0
- package/lib/core/rs-nl-to-query.cjs +425 -0
- package/lib/core/rs-pinecone-bridge.cjs +303 -0
- package/lib/core/rs-preprocessor.cjs +350 -0
- package/lib/core/rs-query-matrix.cjs +316 -0
- package/lib/core/rs-query-to-text.cjs +438 -0
- package/lib/core/rs-sqlite-mirror.cjs +443 -0
- package/lib/core/rs-thesis-generator.cjs +188 -0
- package/lib/core/rs_cache.py +479 -0
- package/lib/core/rs_corpus.py +468 -0
- package/lib/core/rs_hybrid.py +586 -0
- package/lib/core/rs_math.py +287 -0
- package/lib/core/rs_rooms.py +193 -0
- package/lib/core/scheduled-scanner.cjs +463 -0
- package/lib/core/scratchpad-ops.cjs +201 -0
- package/lib/core/section-8-trace-schema.cjs +138 -0
- package/lib/core/section-registry.cjs +111 -0
- package/lib/core/session-state.cjs +144 -0
- package/lib/core/shallow-doc-parser.cjs +174 -0
- package/lib/core/shallow-doc-parser.test.cjs +226 -0
- package/lib/core/skill-activation-router.cjs +284 -0
- package/lib/core/state-ops.cjs +46 -0
- package/lib/core/statusline-cache.cjs +266 -0
- package/lib/core/token-estimator.cjs +348 -0
- package/lib/core/user-archetype.cjs +239 -0
- package/lib/core/user-md-ops.cjs +524 -0
- package/lib/core/visual-ops.cjs +624 -0
- package/lib/core/write-lock.cjs +149 -0
- package/lib/graph/canvas-graph.js +467 -0
- package/lib/graph/constellation-config.cjs +299 -0
- package/lib/graph/graph-detail-panel.js +165 -0
- package/lib/hmi/ROOM.md +47 -0
- package/lib/hmi/across-session-memory.cjs +604 -0
- package/lib/hmi/cross-room-memory.cjs +575 -0
- package/lib/hmi/decoy-tier.cjs +395 -0
- package/lib/hmi/jtbd-classifier.cjs +219 -0
- package/lib/hmi/jtbd-state.cjs +199 -0
- package/lib/hmi/jtbd-taxonomy.json +392 -0
- package/lib/hmi/selector-dispatcher.cjs +546 -0
- package/lib/hmi/selector-telemetry.cjs +263 -0
- package/lib/hmi/shape-f0-renderer.cjs +139 -0
- package/lib/hmi/shape-f1-fallback.cjs +80 -0
- package/lib/hmi/shape-f1-renderer.cjs +138 -0
- package/lib/hmi/shape-f2-renderer.cjs +132 -0
- package/lib/hmi/shape-f3-renderer.cjs +66 -0
- package/lib/hmi/shape-f4-renderer.cjs +72 -0
- package/lib/hmi/shape-f5-renderer.cjs +155 -0
- package/lib/hmi/shape-f6-plan-review-renderer.cjs +312 -0
- package/lib/hmi/shape-f6-renderer.cjs +144 -0
- package/lib/hmi/shape-g-renderer.cjs +219 -0
- package/lib/hmi/shape-h-renderer.cjs +222 -0
- package/lib/hmi/tier-check.cjs +63 -0
- package/lib/import/PRECONDITIONS.md +41 -0
- package/lib/import/branding.cjs +210 -0
- package/lib/import/branding.test.cjs +235 -0
- package/lib/import/classifications-sync.cjs +104 -0
- package/lib/import/classifications-sync.test.cjs +129 -0
- package/lib/import/enricher.cjs +296 -0
- package/lib/import/enricher.test.cjs +273 -0
- package/lib/import/integration.test.cjs +376 -0
- package/lib/import/manifest.cjs +129 -0
- package/lib/import/manifest.schema.json +185 -0
- package/lib/import/manifest.test.cjs +123 -0
- package/lib/import/meeting-detector.cjs +92 -0
- package/lib/import/meeting-detector.test.cjs +100 -0
- package/lib/import/person-detector.cjs +229 -0
- package/lib/import/person-detector.test.cjs +149 -0
- package/lib/import/report.cjs +186 -0
- package/lib/import/report.test.cjs +186 -0
- package/lib/import/room-md-scaffolder.cjs +49 -0
- package/lib/import/router.cjs +224 -0
- package/lib/import/router.test.cjs +356 -0
- package/lib/import/run-all-tests.cjs +36 -0
- package/lib/import/smoke-test.cjs +213 -0
- package/lib/import/smoke-test.test.cjs +148 -0
- package/lib/import/test-fixtures/collision-vault/preexisting-room/STATE.md +8 -0
- package/lib/import/test-fixtures/collision-vault/preexisting-room/problem-definition/onboarding/onboarding.md +7 -0
- package/lib/import/test-fixtures/collision-vault/source/onboarding.md +5 -0
- package/lib/import/test-fixtures/obsidian-vault/.obsidian/workspace.json +1 -0
- package/lib/import/test-fixtures/obsidian-vault/notes/with-wikilinks.md +4 -0
- package/lib/import/test-fixtures/tiny-vault/notes/2026-01-15-team-sync.md +9 -0
- package/lib/import/test-fixtures/tiny-vault/notes/empty.md +3 -0
- package/lib/import/test-fixtures/tiny-vault/notes/onboarding.md +5 -0
- package/lib/import/test-fixtures/tiny-vault/notes/pricing.md +5 -0
- package/lib/import/test-fixtures/tiny-vault/notes/random.md +4 -0
- package/lib/import/undo.test.cjs +199 -0
- package/lib/import/vault-scanner.cjs +105 -0
- package/lib/import/vault-scanner.test.cjs +67 -0
- package/lib/mcp/app-html/dashboard.html +316 -0
- package/lib/mcp/app-html/graph.html +428 -0
- package/lib/mcp/app-html/mindrian-platform.html +1841 -0
- package/lib/mcp/app-html/wiki.html +383 -0
- package/lib/mcp/app-views.cjs +322 -0
- package/lib/mcp/brain-router.cjs +418 -0
- package/lib/mcp/capability-registry.cjs +62 -0
- package/lib/mcp/larry-context.cjs +46 -0
- package/lib/mcp/larry-server-instructions.md +114 -0
- package/lib/mcp/pipeline-state.cjs +275 -0
- package/lib/mcp/prompts.cjs +302 -0
- package/lib/mcp/resources.cjs +227 -0
- package/lib/mcp/session-catchup.cjs +327 -0
- package/lib/mcp/surface-detect.cjs +75 -0
- package/lib/mcp/tool-router.cjs +1034 -0
- package/lib/memory/aaak-compress.cjs +403 -0
- package/lib/memory/aaak-compress.test.cjs +288 -0
- package/lib/memory/async-artifact-auto-commit.test.cjs +223 -0
- package/lib/memory/bearer-token.test.cjs +315 -0
- package/lib/memory/brain-cache-lru.test.cjs +259 -0
- package/lib/memory/brain-client-query-shape.test.cjs +160 -0
- package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
- package/lib/memory/brain-derivation-queue.test.cjs +539 -0
- package/lib/memory/brain-derivation.test.cjs +634 -0
- package/lib/memory/brain-derive-command.test.cjs +534 -0
- package/lib/memory/brain-md-invariants-validator.test.cjs +704 -0
- package/lib/memory/brain-md-schema.test.cjs +467 -0
- package/lib/memory/brain-md-staleness.test.cjs +525 -0
- package/lib/memory/brain-server-resolution.test.cjs +314 -0
- package/lib/memory/chain-recommender.test.cjs +233 -0
- package/lib/memory/chat-context.test.cjs +128 -0
- package/lib/memory/command-registry.test.cjs +220 -0
- package/lib/memory/cross-room-aggregator.test.cjs +909 -0
- package/lib/memory/dashboard-server.test.cjs +256 -0
- package/lib/memory/debouncer-drain-at-prompt.test.cjs +389 -0
- package/lib/memory/decision-capture.test.cjs +632 -0
- package/lib/memory/decision-capture.worker.cjs +70 -0
- package/lib/memory/explain-decision-command.test.cjs +521 -0
- package/lib/memory/explain-decision-footer.test.cjs +316 -0
- package/lib/memory/explored-materials-store.cjs +392 -0
- package/lib/memory/feynman-minto-guardian.test.cjs +736 -0
- package/lib/memory/feynman-minto-invariants.test.cjs +511 -0
- package/lib/memory/feynman-prompts-drift.test.cjs +144 -0
- package/lib/memory/feynman-prompts.cjs +151 -0
- package/lib/memory/feynman-prompts.test.cjs +96 -0
- package/lib/memory/folder-memory-quadruple.test.cjs +548 -0
- package/lib/memory/folder-memory.test.cjs +503 -0
- package/lib/memory/framework-chain-composer.test.cjs +515 -0
- package/lib/memory/frontmatter-schema-validator.test.cjs +290 -0
- package/lib/memory/heal-command.test.cjs +604 -0
- package/lib/memory/index-artifact-transaction.test.cjs +333 -0
- package/lib/memory/lazygraph-rs-discoveries-view.test.cjs +122 -0
- package/lib/memory/mcp-input-validation.test.cjs +240 -0
- package/lib/memory/mcp-server-brain-deps.test.cjs +270 -0
- package/lib/memory/mcp-stack-fallback.test.cjs +433 -0
- package/lib/memory/minto-debouncer.test.cjs +407 -0
- package/lib/memory/minto-debouncer.worker.cjs +46 -0
- package/lib/memory/minto-migration-v88.test.cjs +265 -0
- package/lib/memory/minto-schema-v88.test.cjs +390 -0
- package/lib/memory/mos-status-renderer.test.cjs +631 -0
- package/lib/memory/narrative-schema.cjs +376 -0
- package/lib/memory/narrative-schema.test.cjs +209 -0
- package/lib/memory/nav-dial.test.cjs +414 -0
- package/lib/memory/navigation-engine-core.test.cjs +722 -0
- package/lib/memory/navigation-invariants.test.cjs +483 -0
- package/lib/memory/offer-presenter.test.cjs +554 -0
- package/lib/memory/on-stop-snapshot.test.cjs +404 -0
- package/lib/memory/pending-tension-store.cjs +373 -0
- package/lib/memory/post-compact-reinjection.test.cjs +854 -0
- package/lib/memory/post-write-triple.test.cjs +317 -0
- package/lib/memory/pre-compact-snapshot.test.cjs +495 -0
- package/lib/memory/problem-type-router.test.cjs +656 -0
- package/lib/memory/query-efficiency-telemetry.test.cjs +370 -0
- package/lib/memory/recompile-room-references.test.cjs +392 -0
- package/lib/memory/recompile-room-references.worker.cjs +42 -0
- package/lib/memory/record-decision-dual-write.test.cjs +454 -0
- package/lib/memory/room-classifier-strict-mode.test.cjs +417 -0
- package/lib/memory/room-minto-hook.test.cjs +398 -0
- package/lib/memory/rs-discovery-engine.test.cjs +323 -0
- package/lib/memory/run-feynman-tests.cjs +1247 -0
- package/lib/memory/security-trifecta.test.cjs +312 -0
- package/lib/memory/session-start-brain-staleness.test.cjs +363 -0
- package/lib/memory/session-start-triple-injection.test.cjs +514 -0
- package/lib/memory/sessionstart-banner-formatter.cjs +318 -0
- package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
- package/lib/memory/skill-activation-router.test.cjs +419 -0
- package/lib/memory/stamp-artifact-write.test.cjs +304 -0
- package/lib/memory/statusline-active-room.test.cjs +315 -0
- package/lib/memory/statusline-minto-segment.test.cjs +292 -0
- package/lib/memory/sync-async-entry-points.test.cjs +204 -0
- package/lib/memory/test-bridge-writer-enhanced.cjs +452 -0
- package/lib/memory/test-rs-brain-substrate-shape.cjs +529 -0
- package/lib/memory/test-rs-brain-substrate.cjs +636 -0
- package/lib/memory/test-rs-breakthrough-scorer.cjs +375 -0
- package/lib/memory/test-rs-canon-violations.cjs +218 -0
- package/lib/memory/test-rs-chain-feeder-core.cjs +344 -0
- package/lib/memory/test-rs-chain-feeder-skill-spawn.cjs +297 -0
- package/lib/memory/test-rs-commercial-assessor.cjs +385 -0
- package/lib/memory/test-rs-differential-scorer.cjs +480 -0
- package/lib/memory/test-rs-discovery-engine.cjs +603 -0
- package/lib/memory/test-rs-domain-analyzer.cjs +492 -0
- package/lib/memory/test-rs-egress-primitives.cjs +420 -0
- package/lib/memory/test-rs-expert-mapper.cjs +547 -0
- package/lib/memory/test-rs-explain-command.cjs +443 -0
- package/lib/memory/test-rs-fetcher-academic.cjs +848 -0
- package/lib/memory/test-rs-fetcher-experts.cjs +496 -0
- package/lib/memory/test-rs-fetcher-industry.cjs +702 -0
- package/lib/memory/test-rs-fetcher-patents.cjs +674 -0
- package/lib/memory/test-rs-innovation-classifier.cjs +301 -0
- package/lib/memory/test-rs-mind-map.cjs +646 -0
- package/lib/memory/test-rs-neo4j-writer.cjs +518 -0
- package/lib/memory/test-rs-nl-to-query.cjs +449 -0
- package/lib/memory/test-rs-pinecone-bridge.cjs +277 -0
- package/lib/memory/test-rs-preprocessor.cjs +433 -0
- package/lib/memory/test-rs-query-matrix.cjs +391 -0
- package/lib/memory/test-rs-query-to-text.cjs +551 -0
- package/lib/memory/test-rs-sqlite-mirror.cjs +649 -0
- package/lib/memory/test-rs-thesis-generator.cjs +360 -0
- package/lib/memory/triple-context-formatter.cjs +473 -0
- package/lib/memory/triple-context-formatter.test.cjs +442 -0
- package/lib/memory/user-md-persona.test.cjs +565 -0
- package/lib/memory/userpromptsubmit-integration.test.cjs +690 -0
- package/lib/memory/validators/README.md +157 -0
- package/lib/memory/validators/brain-md-invariants.cjs +475 -0
- package/lib/memory/validators/brain-substrate-invariants.cjs +285 -0
- package/lib/memory/validators/external-academic-invariants.cjs +249 -0
- package/lib/memory/validators/external-industry-invariants.cjs +271 -0
- package/lib/memory/validators/external-patents-invariants.cjs +266 -0
- package/lib/memory/validators/minto-invariants.cjs +62 -0
- package/lib/memory/validators/navigation-invariants.cjs +340 -0
- package/lib/memory/validators/queue-health.cjs +95 -0
- package/lib/memory/validators/snapshot-integrity.cjs +129 -0
- package/lib/memory/validators/stale-lifecycle.cjs +116 -0
- package/lib/memory/vault-section-minto-generator-atomic.test.cjs +556 -0
- package/lib/memory/vault-section-minto-generator-atomic.worker.cjs +73 -0
- package/lib/memory/write-lock-atomic.test.cjs +137 -0
- package/lib/memory/write-lock-atomic.worker.cjs +55 -0
- package/lib/parity/check-parity.cjs +83 -0
- package/lib/presentation/presentation-server.cjs +101 -0
- package/lib/presentation/presentation-watcher.cjs +123 -0
- package/lib/quickview/hub-server.cjs +719 -0
- package/lib/quickview/server.cjs +533 -0
- package/lib/render/JTBD-PALETTES.md +145 -0
- package/lib/render/ROOM.md +59 -0
- package/lib/render/render-v2.cjs +486 -0
- package/lib/render/render-v2.test.cjs +267 -0
- package/lib/render/render.cjs +65 -0
- package/lib/state/ROOM.md +46 -0
- package/lib/state/state-md-parser.cjs +215 -0
- package/lib/statusline/ROOM.md +38 -0
- package/lib/statusline/banner-suppression.cjs +50 -0
- package/lib/statusline/surface-detect.cjs +85 -0
- package/lib/update-bootstrap.sh.template +145 -0
- package/lib/vault/frontmatter-schema.cjs +297 -0
- package/lib/vault/room-scanner.cjs +352 -0
- package/lib/vault/wikilink-builder.cjs +231 -0
- package/lib/vault/wikilink-builder.test.cjs +182 -0
- package/lib/wiki/graph-links.cjs +281 -0
- package/lib/wiki/page-renderer.cjs +229 -0
- package/lib/wiki/wiki-chat.cjs +81 -0
- package/lib/wiki/wiki-layout.cjs +1459 -0
- package/lib/wiki/wiki-search.cjs +142 -0
- package/lib/wiki/wiki-server.cjs +678 -0
- package/lib/wiki/wiki-watcher.cjs +105 -0
- package/lib/workflow/ROOM.md +47 -0
- package/lib/workflow/command-resolver.cjs +155 -0
- package/lib/workflow/command-resolver.test.cjs +235 -0
- package/package.json +44 -0
- package/pipelines/analogy/01-decompose.md +80 -0
- package/pipelines/analogy/02-abstract.md +87 -0
- package/pipelines/analogy/03-search.md +135 -0
- package/pipelines/analogy/04-transfer.md +101 -0
- package/pipelines/analogy/05-validate.md +106 -0
- package/pipelines/analogy/CHAIN.md +56 -0
- package/pipelines/discovery/01-explore-domains.md +44 -0
- package/pipelines/discovery/02-think-hats.md +50 -0
- package/pipelines/discovery/03-analyze-needs.md +54 -0
- package/pipelines/discovery/CHAIN.md +37 -0
- package/pipelines/thesis/01-structure-argument.md +45 -0
- package/pipelines/thesis/02-challenge-assumptions.md +48 -0
- package/pipelines/thesis/03-build-thesis.md +54 -0
- package/pipelines/thesis/CHAIN.md +37 -0
- package/references/brain/causal-directives.md +91 -0
- package/references/brain/causal-enrichment.cypher +165 -0
- package/references/brain/command-triggers-schema.md +226 -0
- package/references/brain/graph-architecture.md +317 -0
- package/references/brain/query-patterns.md +460 -0
- package/references/brain/room-hierarchy-schema.md +218 -0
- package/references/brain/schema.md +76 -0
- package/references/capability-radar/capabilities-index.md +241 -0
- package/references/capability-radar/changelog-cache.md +81 -0
- package/references/causal/causal-schema.md +103 -0
- package/references/design/email-template-standard.md +155 -0
- package/references/design/graph-visualization-standard.md +178 -0
- package/references/document-generation.md +179 -0
- package/references/hsi/HSI-TOOLS-REFERENCE.md +222 -0
- package/references/import-config.md +141 -0
- package/references/integrations/detection-patterns.md +101 -0
- package/references/meeting/artifact-template.md +377 -0
- package/references/meeting/cross-meeting-intelligence.md +216 -0
- package/references/meeting/cross-relationship-patterns.md +202 -0
- package/references/meeting/live-join-interface.md +244 -0
- package/references/meeting/section-mapping.md +192 -0
- package/references/meeting/segment-classification.md +258 -0
- package/references/meeting/speaker-profile-template.md +219 -0
- package/references/meeting/summary-template.md +348 -0
- package/references/meeting/transcript-patterns.md +226 -0
- package/references/methodology/analyze-needs.md +135 -0
- package/references/methodology/analyze-systems.md +121 -0
- package/references/methodology/analyze-timing.md +149 -0
- package/references/methodology/beautiful-question.md +109 -0
- package/references/methodology/build-knowledge.md +161 -0
- package/references/methodology/build-thesis.md +237 -0
- package/references/methodology/challenge-assumptions.md +127 -0
- package/references/methodology/diagnose.md +169 -0
- package/references/methodology/dominant-designs.md +212 -0
- package/references/methodology/explore-domains.md +147 -0
- package/references/methodology/explore-futures.md +163 -0
- package/references/methodology/explore-trends.md +129 -0
- package/references/methodology/find-bottlenecks.md +131 -0
- package/references/methodology/grade.md +211 -0
- package/references/methodology/index.md +97 -0
- package/references/methodology/leadership.md +200 -0
- package/references/methodology/lean-canvas.md +116 -0
- package/references/methodology/macro-trends.md +192 -0
- package/references/methodology/map-unknowns.md +137 -0
- package/references/methodology/mullins-7-domains.md +104 -0
- package/references/methodology/problem-types.md +65 -0
- package/references/methodology/root-cause.md +178 -0
- package/references/methodology/sapphire-encoding.md +355 -0
- package/references/methodology/scenario-plan.md +178 -0
- package/references/methodology/score-innovation.md +154 -0
- package/references/methodology/structure-argument.md +158 -0
- package/references/methodology/systems-thinking.md +159 -0
- package/references/methodology/think-hats.md +147 -0
- package/references/methodology/triz-matrix.json +751 -0
- package/references/methodology/triz-principles.md +501 -0
- package/references/methodology/user-needs.md +199 -0
- package/references/methodology/validate.md +163 -0
- package/references/methodology/value-proposition.md +244 -0
- package/references/opportunities/funding-lifecycle.md +103 -0
- package/references/opportunities/grant-api-patterns.md +99 -0
- package/references/opportunities/opportunity-template.md +84 -0
- package/references/personality/assessment-philosophy.md +72 -0
- package/references/personality/lexicon.md +100 -0
- package/references/personality/persona-chains.md +56 -0
- package/references/personality/pws-lexicon-full.md +499 -0
- package/references/personality/voice-dna.md +156 -0
- package/references/personas/hat-perspectives.md +76 -0
- package/references/personas/persona-template.md +63 -0
- package/references/pipeline/act-output-contract.md +88 -0
- package/references/pipeline/chains-index.md +39 -0
- package/references/pws-profile-generation.md +79 -0
- package/references/reasoning/reasoning-schema.md +143 -0
- package/references/reasoning/reasoning-template.md +68 -0
- package/references/reasoning/run-template.md +38 -0
- package/references/research/RESEARCH_14_CLAUDE_CODE_SOURCE_ARCHITECTURE.md +209 -0
- package/references/research/RESEARCH_15_V1.8_OPTIMIZATION_JTBD.md +375 -0
- package/references/research/RESEARCH_16_NATIVE_FIRST_PLUGIN_ARCHITECTURE.md +575 -0
- package/references/research/RESEARCH_17_MCP_UI_FRAMEWORKS.md +272 -0
- package/references/taxonomy/TAXONOMY.md +192 -0
- package/references/templates/MINTO.md +36 -0
- package/references/user-research/2026-04-05-leah-lawrence-session.md +202 -0
- package/references/vault-kit/README.md +35 -0
- package/references/vault-kit/app.json +12 -0
- package/references/vault-kit/appearance.json +12 -0
- package/references/vault-kit/graph.json +35 -0
- package/references/vault-kit/snippets/mindrian-destijl.css +297 -0
- package/references/vault-kit/templates/new-artifact.md +37 -0
- package/references/vault-kit/templates/new-meeting-note.md +35 -0
- package/references/vault-kit/templates/new-team-profile.md +29 -0
- package/references/vault-kit/templates/new-xref.md +35 -0
- package/references/visual/symbol-system.md +151 -0
- package/skills/MOSDeckEngine/SKILL.md +325 -0
- package/skills/brain-connector/SKILL.md +114 -0
- package/skills/context-engine/SKILL.md +147 -0
- package/skills/conversation-mode/SKILL.md +102 -0
- package/skills/larry-personality/SKILL.md +219 -0
- package/skills/larry-personality/framework-chains.md +92 -0
- package/skills/larry-personality/mode-engine.md +185 -0
- package/skills/mullins-scaffold/SKILL.md +61 -0
- package/skills/mullins-scaffold/scaffold.json +146 -0
- package/skills/pws-methodology/SKILL.md +49 -0
- package/skills/room-passive/SKILL.md +165 -0
- package/skills/room-proactive/SKILL.md +250 -0
- package/skills/ui-system/SKILL.md +277 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
5
|
+
*
|
|
6
|
+
* Phase 90-01 Task 1 -- Brain derivation prompt builders
|
|
7
|
+
* ======================================================
|
|
8
|
+
* 9 frozen prompt-builder functions. Each maps a Canon-Part-8-safe query
|
|
9
|
+
* context (allow-list scalars only) into a Cypher string (or null for
|
|
10
|
+
* the stub builder). Every builder validates its ctx at function entry
|
|
11
|
+
* against the frozen allow-list schema: an unexpected field or an
|
|
12
|
+
* out-of-range enum triggers a TypeError. Throwing is the safest
|
|
13
|
+
* posture: any forbidden field in ctx is already a Canon Part 8
|
|
14
|
+
* boundary violation upstream.
|
|
15
|
+
*
|
|
16
|
+
* The Canon Part 8 boundary (docs/MINDRIAN-CANON.md Part 8) is enforced
|
|
17
|
+
* at two layers in this file:
|
|
18
|
+
*
|
|
19
|
+
* 1. Schema gate at function entry (allow-list whitelist + enum check).
|
|
20
|
+
* 2. Interpolation hygiene via brain-client.sanitizeCypherInput on the
|
|
21
|
+
* few enum-like strings that still reach the Cypher template.
|
|
22
|
+
* Numeric scalars are coerced with Number(...) + isFinite guards
|
|
23
|
+
* before interpolation. No ctx field is ever concatenated raw.
|
|
24
|
+
*
|
|
25
|
+
* The five Canon Part 8 forbidden triple fields (enumerated in the Plan
|
|
26
|
+
* 90-01 <interfaces> block) DO NOT appear in this module as code or as
|
|
27
|
+
* string literals. A grep audit in the plan verification asserts zero
|
|
28
|
+
* matches against the forbidden-name regex.
|
|
29
|
+
*
|
|
30
|
+
* PROMPT_VERSION bumps force a brain_graph_version mismatch in Plan
|
|
31
|
+
* 90-05 so stale derivations regenerate automatically.
|
|
32
|
+
*
|
|
33
|
+
* Pure CJS, node built-ins only, zero npm deps. Three-surface safe.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
const { _test } = require('./brain-client.cjs');
|
|
37
|
+
const sanitizeCypherInput = _test.sanitizeCypherInput;
|
|
38
|
+
|
|
39
|
+
// ---------- Frozen version + allow-list schema ----------
|
|
40
|
+
|
|
41
|
+
const PROMPT_VERSION = Object.freeze({ value: 1 });
|
|
42
|
+
|
|
43
|
+
// Canon Part 8 allow-list schema. Every buildXxxQuery(ctx) must receive
|
|
44
|
+
// a ctx that is a subset of these keys only. No other keys are permitted.
|
|
45
|
+
const ALLOWED_CTX_KEYS = Object.freeze([
|
|
46
|
+
'section_slug',
|
|
47
|
+
'problem_type',
|
|
48
|
+
'complexity',
|
|
49
|
+
'phase_indicator',
|
|
50
|
+
'reasoning_health_score',
|
|
51
|
+
'arguments_count',
|
|
52
|
+
'mece_status',
|
|
53
|
+
'evidence_density',
|
|
54
|
+
'governing_thought_hash',
|
|
55
|
+
'brain_graph_version',
|
|
56
|
+
'reverse_salient_present',
|
|
57
|
+
]);
|
|
58
|
+
|
|
59
|
+
const PROBLEM_TYPES = Object.freeze(['UDP', 'IDP', 'WDP']);
|
|
60
|
+
const COMPLEXITIES = Object.freeze(['Simple', 'Complex', 'Wicked']);
|
|
61
|
+
const MECE_STATES = Object.freeze(['pass', 'warn', 'fail']);
|
|
62
|
+
const PHASE_INDICATORS = Object.freeze([
|
|
63
|
+
'discovery',
|
|
64
|
+
'formulation',
|
|
65
|
+
'validation',
|
|
66
|
+
'scaling',
|
|
67
|
+
'unknown',
|
|
68
|
+
]);
|
|
69
|
+
|
|
70
|
+
// ---------- Ctx validator (Canon Part 8 chokepoint) ----------
|
|
71
|
+
//
|
|
72
|
+
// Every builder calls validateCtx(ctx) as its first action. A non-object
|
|
73
|
+
// ctx throws. A ctx with a key outside ALLOWED_CTX_KEYS throws. Enum
|
|
74
|
+
// fields out of range throw. Numeric-range fields outside [0,1] for
|
|
75
|
+
// scalars or negative for counts throw.
|
|
76
|
+
|
|
77
|
+
function validateCtx(ctx) {
|
|
78
|
+
if (ctx === null || typeof ctx !== 'object' || Array.isArray(ctx)) {
|
|
79
|
+
throw new TypeError('ctx must be a non-null plain object');
|
|
80
|
+
}
|
|
81
|
+
const allowed = new Set(ALLOWED_CTX_KEYS);
|
|
82
|
+
for (const k of Object.keys(ctx)) {
|
|
83
|
+
if (!allowed.has(k)) {
|
|
84
|
+
throw new TypeError(
|
|
85
|
+
'ctx contains forbidden or unknown key "' + k +
|
|
86
|
+
'" (Canon Part 8 allow-list violation)'
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if ('problem_type' in ctx && ctx.problem_type !== undefined && ctx.problem_type !== null) {
|
|
91
|
+
if (PROBLEM_TYPES.indexOf(ctx.problem_type) === -1) {
|
|
92
|
+
throw new TypeError(
|
|
93
|
+
'ctx.problem_type "' + ctx.problem_type + '" not in [UDP, IDP, WDP]'
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if ('complexity' in ctx && ctx.complexity !== undefined && ctx.complexity !== null) {
|
|
98
|
+
if (COMPLEXITIES.indexOf(ctx.complexity) === -1) {
|
|
99
|
+
throw new TypeError(
|
|
100
|
+
'ctx.complexity "' + ctx.complexity + '" not in [Simple, Complex, Wicked]'
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if ('mece_status' in ctx && ctx.mece_status !== undefined && ctx.mece_status !== null) {
|
|
105
|
+
if (MECE_STATES.indexOf(ctx.mece_status) === -1) {
|
|
106
|
+
throw new TypeError(
|
|
107
|
+
'ctx.mece_status "' + ctx.mece_status + '" not in [pass, warn, fail]'
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if ('phase_indicator' in ctx && ctx.phase_indicator !== undefined && ctx.phase_indicator !== null) {
|
|
112
|
+
if (PHASE_INDICATORS.indexOf(ctx.phase_indicator) === -1) {
|
|
113
|
+
throw new TypeError(
|
|
114
|
+
'ctx.phase_indicator "' + ctx.phase_indicator + '" not in allowed enum'
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if ('reasoning_health_score' in ctx && ctx.reasoning_health_score !== null && ctx.reasoning_health_score !== undefined) {
|
|
119
|
+
const n = Number(ctx.reasoning_health_score);
|
|
120
|
+
if (!Number.isFinite(n) || n < 0 || n > 1) {
|
|
121
|
+
throw new TypeError('ctx.reasoning_health_score must be finite in [0,1]');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if ('evidence_density' in ctx && ctx.evidence_density !== null && ctx.evidence_density !== undefined) {
|
|
125
|
+
const n = Number(ctx.evidence_density);
|
|
126
|
+
if (!Number.isFinite(n) || n < 0 || n > 1) {
|
|
127
|
+
throw new TypeError('ctx.evidence_density must be finite in [0,1]');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if ('arguments_count' in ctx && ctx.arguments_count !== null && ctx.arguments_count !== undefined) {
|
|
131
|
+
const n = Number(ctx.arguments_count);
|
|
132
|
+
if (!Number.isFinite(n) || n < 0 || !Number.isInteger(n)) {
|
|
133
|
+
throw new TypeError('ctx.arguments_count must be a non-negative integer');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if ('governing_thought_hash' in ctx && ctx.governing_thought_hash !== null && ctx.governing_thought_hash !== undefined) {
|
|
137
|
+
if (typeof ctx.governing_thought_hash !== 'string' ||
|
|
138
|
+
!/^sha256:[a-f0-9]{64}$/.test(ctx.governing_thought_hash)) {
|
|
139
|
+
throw new TypeError(
|
|
140
|
+
'ctx.governing_thought_hash must match /^sha256:[a-f0-9]{64}$/'
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if ('section_slug' in ctx && ctx.section_slug !== null && ctx.section_slug !== undefined) {
|
|
145
|
+
if (typeof ctx.section_slug !== 'string' ||
|
|
146
|
+
!/^[a-z0-9][a-z0-9_-]{0,63}$/.test(ctx.section_slug)) {
|
|
147
|
+
throw new TypeError(
|
|
148
|
+
'ctx.section_slug must be a structural folder slug (lowercase, hyphen/underscore)'
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// ---------- Safe interpolation helpers ----------
|
|
155
|
+
//
|
|
156
|
+
// Every string reaching the Cypher template goes through
|
|
157
|
+
// sanitizeCypherInput. Every numeric reaches via Number() + clamp.
|
|
158
|
+
|
|
159
|
+
function safeEnum(value, fallback) {
|
|
160
|
+
return sanitizeCypherInput(String(value == null ? fallback : value));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function safeScalar01(value, fallback) {
|
|
164
|
+
const n = Number(value);
|
|
165
|
+
if (!Number.isFinite(n)) return Number(fallback) || 0;
|
|
166
|
+
if (n < 0) return 0;
|
|
167
|
+
if (n > 1) return 1;
|
|
168
|
+
return n;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function safeInt(value, fallback) {
|
|
172
|
+
const n = Number(value);
|
|
173
|
+
if (!Number.isFinite(n)) return Number(fallback) | 0;
|
|
174
|
+
if (n < 0) return 0;
|
|
175
|
+
return Math.floor(n);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ---------- 9 prompt builders ----------
|
|
179
|
+
//
|
|
180
|
+
// Each builder returns a Cypher string (or pinecone-style search string).
|
|
181
|
+
// Parameterized Cypher style is not native to the Brain MCP callTool
|
|
182
|
+
// interface (which takes raw cypher); interpolation is unavoidable.
|
|
183
|
+
// Safety is achieved by the two-layer validation above.
|
|
184
|
+
|
|
185
|
+
function buildPatternMatchesQuery(ctx) {
|
|
186
|
+
validateCtx(ctx);
|
|
187
|
+
const section = safeEnum(ctx.section_slug, 'unknown');
|
|
188
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
189
|
+
const phase = safeEnum(ctx.phase_indicator, 'unknown');
|
|
190
|
+
return (
|
|
191
|
+
'MATCH (f:Framework)-[:ADDRESSES_PROBLEM_TYPE]->(pt:ProblemType) ' +
|
|
192
|
+
'WHERE pt.name CONTAINS "' + problemType + '" ' +
|
|
193
|
+
'OPTIONAL MATCH (f)-[:APPLIES_AT_PHASE]->(p:Phase {name: "' + phase + '"}) ' +
|
|
194
|
+
'RETURN f.name AS framework, f.description AS description, ' +
|
|
195
|
+
'"' + section + '" AS section_slug ' +
|
|
196
|
+
'LIMIT 10'
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function buildCrossDomainAnalogiesQuery(ctx) {
|
|
201
|
+
validateCtx(ctx);
|
|
202
|
+
// Pinecone semantic search. Returns a string that brain-client.search()
|
|
203
|
+
// will pass in as queryText. Methodology handles only.
|
|
204
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
205
|
+
const complexity = safeEnum(ctx.complexity, 'Simple');
|
|
206
|
+
const phase = safeEnum(ctx.phase_indicator, 'unknown');
|
|
207
|
+
return (
|
|
208
|
+
'cross-domain analogies for problem_type:' + problemType +
|
|
209
|
+
' complexity:' + complexity +
|
|
210
|
+
' phase:' + phase
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function buildWickedIndicatorsQuery(ctx) {
|
|
215
|
+
validateCtx(ctx);
|
|
216
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
217
|
+
const complexity = safeEnum(ctx.complexity, 'Simple');
|
|
218
|
+
// Only emit a meaningful query when the triple shape suggests wickedness.
|
|
219
|
+
if (problemType !== 'IDP' && !(problemType === 'WDP' && complexity === 'Wicked')) {
|
|
220
|
+
return (
|
|
221
|
+
'MATCH (wi:WickedIndicator) WHERE false ' +
|
|
222
|
+
'RETURN wi.name AS indicator LIMIT 1'
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
return (
|
|
226
|
+
'MATCH (wi:WickedIndicator)-[:FLAGS_PROBLEM_TYPE]->(pt:ProblemType) ' +
|
|
227
|
+
'WHERE pt.name CONTAINS "' + problemType + '" ' +
|
|
228
|
+
'RETURN wi.name AS indicator, wi.description AS description LIMIT 10'
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function buildUnfilledOpportunityMatchesQuery(ctx) {
|
|
233
|
+
validateCtx(ctx);
|
|
234
|
+
const section = safeEnum(ctx.section_slug, 'unknown');
|
|
235
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
236
|
+
return (
|
|
237
|
+
'MATCH (o:Opportunity)-[:MATCHES_SECTION]->(s:Section {slug: "' + section + '"}) ' +
|
|
238
|
+
'WHERE NOT (o)-[:FILLED_BY]->() ' +
|
|
239
|
+
'OPTIONAL MATCH (o)-[:ADDRESSES_PROBLEM_TYPE]->(pt:ProblemType {name: "' + problemType + '"}) ' +
|
|
240
|
+
'RETURN o.name AS opportunity, o.description AS description LIMIT 10'
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function buildFrameworkChainPredictionsQuery(ctx) {
|
|
245
|
+
validateCtx(ctx);
|
|
246
|
+
const phase = safeEnum(ctx.phase_indicator, 'unknown');
|
|
247
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
248
|
+
return (
|
|
249
|
+
'MATCH (f1:Framework)-[:APPLIES_AT_PHASE]->(p:Phase {name: "' + phase + '"}) ' +
|
|
250
|
+
'MATCH (f1)-[:FEEDS_INTO]->(f2:Framework) ' +
|
|
251
|
+
'OPTIONAL MATCH (f1)-[:ADDRESSES_PROBLEM_TYPE]->(pt:ProblemType {name: "' + problemType + '"}) ' +
|
|
252
|
+
'RETURN f1.name AS from_framework, f2.name AS to_framework LIMIT 10'
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function buildAssessmentThinkingChainPositionQuery(ctx) {
|
|
257
|
+
validateCtx(ctx);
|
|
258
|
+
const rhs = safeScalar01(ctx.reasoning_health_score, 0);
|
|
259
|
+
const ed = safeScalar01(ctx.evidence_density, 0);
|
|
260
|
+
return (
|
|
261
|
+
'MATCH (rl:RigorLevel) ' +
|
|
262
|
+
'WHERE rl.min_health <= ' + rhs + ' AND rl.max_health >= ' + rhs + ' ' +
|
|
263
|
+
'AND rl.min_evidence <= ' + ed + ' AND rl.max_evidence >= ' + ed + ' ' +
|
|
264
|
+
'RETURN rl.name AS level, rl.advance_hint AS hint LIMIT 5'
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function buildProblemTypeClassificationQuery(ctx) {
|
|
269
|
+
validateCtx(ctx);
|
|
270
|
+
const meceStatus = safeEnum(ctx.mece_status, 'warn');
|
|
271
|
+
const argsCount = safeInt(ctx.arguments_count, 0);
|
|
272
|
+
return (
|
|
273
|
+
'MATCH (pt:ProblemType) ' +
|
|
274
|
+
'WHERE pt.mece_status = "' + meceStatus + '" ' +
|
|
275
|
+
'AND pt.min_arguments <= ' + argsCount + ' ' +
|
|
276
|
+
'AND pt.max_arguments >= ' + argsCount + ' ' +
|
|
277
|
+
'RETURN pt.name AS problem_type, pt.confidence AS confidence LIMIT 5'
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Stub for Plan 90-06 cross-room aggregation. Returns null by contract:
|
|
282
|
+
// Plan 90-01 does not implement cross-room edge aggregation. Plan 90-06
|
|
283
|
+
// will fill this with a real Cypher query once cross-room edges exist.
|
|
284
|
+
function buildFlaggedContradictionsXroomQuery(ctx) {
|
|
285
|
+
validateCtx(ctx);
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
function buildHsiSignalsQuery(ctx) {
|
|
290
|
+
validateCtx(ctx);
|
|
291
|
+
if (!ctx.reverse_salient_present) return null;
|
|
292
|
+
const section = safeEnum(ctx.section_slug, 'unknown');
|
|
293
|
+
const problemType = safeEnum(ctx.problem_type, 'UDP');
|
|
294
|
+
return (
|
|
295
|
+
'MATCH (hsi:HsiRecommendation)-[:FOR_SECTION]->(s:Section {slug: "' + section + '"}) ' +
|
|
296
|
+
'OPTIONAL MATCH (hsi)-[:ADDRESSES_PROBLEM_TYPE]->(pt:ProblemType {name: "' + problemType + '"}) ' +
|
|
297
|
+
'RETURN hsi.name AS name, hsi.description AS description, hsi.score AS score LIMIT 5'
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// ---------- Exports (frozen) ----------
|
|
302
|
+
|
|
303
|
+
module.exports = Object.freeze({
|
|
304
|
+
PROMPT_VERSION: PROMPT_VERSION,
|
|
305
|
+
ALLOWED_CTX_KEYS: ALLOWED_CTX_KEYS,
|
|
306
|
+
PROBLEM_TYPES: PROBLEM_TYPES,
|
|
307
|
+
COMPLEXITIES: COMPLEXITIES,
|
|
308
|
+
MECE_STATES: MECE_STATES,
|
|
309
|
+
PHASE_INDICATORS: PHASE_INDICATORS,
|
|
310
|
+
buildPatternMatchesQuery: buildPatternMatchesQuery,
|
|
311
|
+
buildCrossDomainAnalogiesQuery: buildCrossDomainAnalogiesQuery,
|
|
312
|
+
buildWickedIndicatorsQuery: buildWickedIndicatorsQuery,
|
|
313
|
+
buildUnfilledOpportunityMatchesQuery: buildUnfilledOpportunityMatchesQuery,
|
|
314
|
+
buildFrameworkChainPredictionsQuery: buildFrameworkChainPredictionsQuery,
|
|
315
|
+
buildAssessmentThinkingChainPositionQuery: buildAssessmentThinkingChainPositionQuery,
|
|
316
|
+
buildProblemTypeClassificationQuery: buildProblemTypeClassificationQuery,
|
|
317
|
+
buildFlaggedContradictionsXroomQuery: buildFlaggedContradictionsXroomQuery,
|
|
318
|
+
buildHsiSignalsQuery: buildHsiSignalsQuery,
|
|
319
|
+
// Test surface only: not part of the public API.
|
|
320
|
+
_test: Object.freeze({
|
|
321
|
+
validateCtx: validateCtx,
|
|
322
|
+
safeEnum: safeEnum,
|
|
323
|
+
safeScalar01: safeScalar01,
|
|
324
|
+
safeInt: safeInt,
|
|
325
|
+
}),
|
|
326
|
+
});
|