@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,132 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
3
|
+
*
|
|
4
|
+
* Phase 88.2-01 -- Shape F.2 Path Control renderer (UISEL-88.2-02).
|
|
5
|
+
*
|
|
6
|
+
* Implements the open-vocabulary Shape F.2 (Path Control) selector per
|
|
7
|
+
* skills/ui-system/SKILL.md Section 2 Shape F.2. F.2 is the structural
|
|
8
|
+
* companion to F.1: where F.1 chooses the next move (tactical), F.2
|
|
9
|
+
* chooses the path (strategic). Verb vocabulary is a constrained subset
|
|
10
|
+
* of the canonical 10 verbs per SKILL.md §2 F.2 verb constraints:
|
|
11
|
+
* Run Methodology / Reformulate / Scenario Plan / Defer / Free-Text.
|
|
12
|
+
*
|
|
13
|
+
* Mirrors the structure of lib/hmi/shape-f1-renderer.cjs. Differences:
|
|
14
|
+
* - PATH_CONTROL_VERBS is a 5-verb constrained subset (NOT the 10).
|
|
15
|
+
* - Default verbs == PATH_CONTROL_VERBS.
|
|
16
|
+
* - contract.shape === 'F.2'.
|
|
17
|
+
* - Default header refers to "path control".
|
|
18
|
+
*
|
|
19
|
+
* Free-Text-always-last invariant: hardcoded; deduped; appended outside
|
|
20
|
+
* the user-supplied 5-verb cap.
|
|
21
|
+
*
|
|
22
|
+
* Mode A (tier >= 2): Brain reachable, RECOMMENDED marker (▶) rendered on
|
|
23
|
+
* matching `recommendedVerb` row when it appears in the verb list.
|
|
24
|
+
* Mode B (tier < 2): no RECOMMENDED marker; every row prefixed with ▷.
|
|
25
|
+
*
|
|
26
|
+
* Allowed glyphs in body (Canon Part 3 + skills/ui-system/SKILL.md
|
|
27
|
+
* 12-glyph vocabulary): ▶ ▷ ■ • →. No box characters.
|
|
28
|
+
*
|
|
29
|
+
* Pure CJS, node built-ins only, zero runtime deps (Phase 87 invariant).
|
|
30
|
+
*
|
|
31
|
+
* API:
|
|
32
|
+
* renderShapeF2({ tier, recommendedVerb?, verbs?, header?, personaContext? })
|
|
33
|
+
* -> { zones, contract }
|
|
34
|
+
*
|
|
35
|
+
* personaContext (optional, Phase 88.2-03): when a non-empty string is
|
|
36
|
+
* supplied, the header is suffixed with ' ({personaContext} lens)' and
|
|
37
|
+
* contract.personaContext surfaces the value back to the dispatcher for
|
|
38
|
+
* telemetry. Cold-start (omitted/null/empty) preserves the prior
|
|
39
|
+
* behavior byte-for-byte (no suffix; contract.personaContext === null).
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
'use strict';
|
|
43
|
+
|
|
44
|
+
const PATH_CONTROL_VERBS = [
|
|
45
|
+
'Run Methodology',
|
|
46
|
+
'Reformulate',
|
|
47
|
+
'Scenario Plan',
|
|
48
|
+
'Defer',
|
|
49
|
+
'Free-Text',
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const FREE_TEXT = 'Free-Text';
|
|
53
|
+
const USER_VERB_CAP = 5; // Phase 88.2 invariant: 3-5 options + Free-Text appended.
|
|
54
|
+
const MARKER_RECOMMENDED = '▶';
|
|
55
|
+
const MARKER_ROW = '▷';
|
|
56
|
+
const DEFAULT_HEADER = '-- mindrianOS -- path control -- choose path --';
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Normalize the verb list:
|
|
60
|
+
* - if user-supplied: cap at USER_VERB_CAP, drop all Free-Text instances,
|
|
61
|
+
* then append exactly one trailing Free-Text.
|
|
62
|
+
* - if not: return the PATH_CONTROL_VERBS subset as-is (already ends
|
|
63
|
+
* with Free-Text).
|
|
64
|
+
*
|
|
65
|
+
* Free-Text-always-last is hardcoded; callers cannot omit it.
|
|
66
|
+
*/
|
|
67
|
+
function normalizeVerbs(rawVerbs) {
|
|
68
|
+
if (!Array.isArray(rawVerbs)) {
|
|
69
|
+
return PATH_CONTROL_VERBS.slice();
|
|
70
|
+
}
|
|
71
|
+
const userOnly = rawVerbs
|
|
72
|
+
.filter(v => typeof v === 'string' && v.length > 0 && v !== FREE_TEXT)
|
|
73
|
+
.slice(0, USER_VERB_CAP);
|
|
74
|
+
userOnly.push(FREE_TEXT);
|
|
75
|
+
return userOnly;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function renderShapeF2(input) {
|
|
79
|
+
const opts = (input && typeof input === 'object') ? input : {};
|
|
80
|
+
const tier = typeof opts.tier === 'number' ? opts.tier : 0;
|
|
81
|
+
const recommendedVerb = typeof opts.recommendedVerb === 'string' && opts.recommendedVerb.length > 0
|
|
82
|
+
? opts.recommendedVerb : null;
|
|
83
|
+
const header = typeof opts.header === 'string' && opts.header.length > 0
|
|
84
|
+
? opts.header : null;
|
|
85
|
+
// Phase 88.2-03 D-AMEND-04 / DISCRETION-AMEND-01 option (a): optional
|
|
86
|
+
// personaContext suffix; cold-start (omitted/null/empty) renders without
|
|
87
|
+
// suffix. Renderer stays PURE; caller (dispatcher) supplies the string.
|
|
88
|
+
const personaContext = (typeof opts.personaContext === 'string' && opts.personaContext.length > 0)
|
|
89
|
+
? opts.personaContext
|
|
90
|
+
: null;
|
|
91
|
+
|
|
92
|
+
const verbs = normalizeVerbs(opts.verbs);
|
|
93
|
+
|
|
94
|
+
const mode = tier >= 2 ? 'A' : 'B';
|
|
95
|
+
// RECOMMENDED only when Mode A AND verb is in list AND not Free-Text.
|
|
96
|
+
const recInList = (mode === 'A' && recommendedVerb
|
|
97
|
+
&& verbs.indexOf(recommendedVerb) !== -1
|
|
98
|
+
&& recommendedVerb !== FREE_TEXT)
|
|
99
|
+
? recommendedVerb : null;
|
|
100
|
+
|
|
101
|
+
const lines = verbs.map((verb, i) => {
|
|
102
|
+
const prefix = (verb === recInList) ? MARKER_RECOMMENDED : MARKER_ROW;
|
|
103
|
+
return prefix + ' ' + String(i + 1) + '. ' + verb;
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
let composedHeader = header || DEFAULT_HEADER;
|
|
107
|
+
if (personaContext) {
|
|
108
|
+
composedHeader = composedHeader + ' (' + personaContext + ' lens)';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
zones: {
|
|
113
|
+
header: composedHeader,
|
|
114
|
+
body: lines.join('\n'),
|
|
115
|
+
signals: '',
|
|
116
|
+
footer: null,
|
|
117
|
+
},
|
|
118
|
+
contract: {
|
|
119
|
+
shape: 'F.2',
|
|
120
|
+
keyboard: 'askuserquestion',
|
|
121
|
+
verbs: verbs.slice(),
|
|
122
|
+
mode: mode,
|
|
123
|
+
recommended: recInList,
|
|
124
|
+
personaContext: personaContext,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
module.exports = {
|
|
130
|
+
renderShapeF2: renderShapeF2,
|
|
131
|
+
PATH_CONTROL_VERBS: PATH_CONTROL_VERBS.slice(),
|
|
132
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
3
|
+
*
|
|
4
|
+
* Phase 88.2-02 -- Shape F.3 (Rabbit-Hole Depth) renderer.
|
|
5
|
+
*
|
|
6
|
+
* Closed-vocabulary depth selector. Five fixed options:
|
|
7
|
+
* Shallow / Medium / Deep / Extreme / Back
|
|
8
|
+
*
|
|
9
|
+
* Per docs/MINDRIAN-CANON.md Part 3 + skills/ui-system/SKILL.md Section 2
|
|
10
|
+
* Shape F.3, this is the one Shape F sub-shape whose option set is NOT the
|
|
11
|
+
* canonical 10-verb vocabulary. It is a depth scalar.
|
|
12
|
+
*
|
|
13
|
+
* Closed-vocab discipline:
|
|
14
|
+
* - Free-Text is NOT offered (depth is a closed axis).
|
|
15
|
+
* - RECOMMENDED marker (▶) is NEVER rendered. F.3 is not Brain-routed; the
|
|
16
|
+
* option set is identical in Mode A, Mode B, and Tier 0.
|
|
17
|
+
* - The dispatcher applies any Mode B Zone-1 prefix; the renderer itself
|
|
18
|
+
* does not branch on tier.
|
|
19
|
+
*
|
|
20
|
+
* Allowed glyphs (skills/ui-system/SKILL.md 12-glyph vocabulary):
|
|
21
|
+
* ▷ (row marker). No box characters. No ▶.
|
|
22
|
+
*
|
|
23
|
+
* Pure CJS, node built-ins only, zero deps (Phase 87 invariant).
|
|
24
|
+
*
|
|
25
|
+
* API:
|
|
26
|
+
* renderShapeF3({ header? }) -> { zones, contract }
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
'use strict';
|
|
30
|
+
|
|
31
|
+
const F3_OPTIONS = ['Shallow', 'Medium', 'Deep', 'Extreme', 'Back'];
|
|
32
|
+
const MARKER_ROW = '▷'; // ▷
|
|
33
|
+
const DEFAULT_HEADER = '-- mindrianOS -- depth -- pick depth --';
|
|
34
|
+
|
|
35
|
+
function renderShapeF3(input) {
|
|
36
|
+
const opts = (input && typeof input === 'object') ? input : {};
|
|
37
|
+
const header = (typeof opts.header === 'string' && opts.header.length > 0)
|
|
38
|
+
? opts.header
|
|
39
|
+
: DEFAULT_HEADER;
|
|
40
|
+
|
|
41
|
+
const lines = F3_OPTIONS.map((label, i) => {
|
|
42
|
+
return MARKER_ROW + ' ' + String(i + 1) + '. ' + label;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
zones: {
|
|
47
|
+
header: header,
|
|
48
|
+
body: lines.join('\n'),
|
|
49
|
+
signals: '',
|
|
50
|
+
footer: null,
|
|
51
|
+
},
|
|
52
|
+
contract: {
|
|
53
|
+
shape: 'F.3',
|
|
54
|
+
keyboard: 'f3-fixed',
|
|
55
|
+
verbs: F3_OPTIONS.slice(),
|
|
56
|
+
mode: 'closed',
|
|
57
|
+
recommended: null,
|
|
58
|
+
freeTextOffered: false,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
module.exports = {
|
|
64
|
+
renderShapeF3: renderShapeF3,
|
|
65
|
+
F3_OPTIONS: F3_OPTIONS.slice(),
|
|
66
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
3
|
+
*
|
|
4
|
+
* Phase 88.2-02 -- Shape F.4 (Insight Extraction) renderer.
|
|
5
|
+
*
|
|
6
|
+
* Closed-vocabulary insight-extraction selector. Five fixed options:
|
|
7
|
+
* Key insights / +contradictions / +actions / Create artifact draft / Back
|
|
8
|
+
*
|
|
9
|
+
* Per docs/MINDRIAN-CANON.md Part 3 + skills/ui-system/SKILL.md Section 2
|
|
10
|
+
* Shape F.4, F.4 wraps the canonical verb Synthesize. The five options form
|
|
11
|
+
* a progressive scope ladder for what the synthesis produces.
|
|
12
|
+
*
|
|
13
|
+
* Closed-vocab discipline:
|
|
14
|
+
* - Free-Text is NOT offered (extraction scope is a closed ladder).
|
|
15
|
+
* - RECOMMENDED marker (▶) is NEVER rendered. F.4 is not Brain-routed; the
|
|
16
|
+
* option set is identical in Mode A, Mode B, and Tier 0.
|
|
17
|
+
* - The dispatcher applies any Mode B Zone-1 prefix; the renderer itself
|
|
18
|
+
* does not branch on tier.
|
|
19
|
+
*
|
|
20
|
+
* Allowed glyphs (skills/ui-system/SKILL.md 12-glyph vocabulary):
|
|
21
|
+
* ▷ (row marker). No box characters. No ▶.
|
|
22
|
+
*
|
|
23
|
+
* Pure CJS, node built-ins only, zero deps (Phase 87 invariant).
|
|
24
|
+
*
|
|
25
|
+
* API:
|
|
26
|
+
* renderShapeF4({ header? }) -> { zones, contract }
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
'use strict';
|
|
30
|
+
|
|
31
|
+
const F4_OPTIONS = [
|
|
32
|
+
'Key insights',
|
|
33
|
+
'+contradictions',
|
|
34
|
+
'+actions',
|
|
35
|
+
'Create artifact draft',
|
|
36
|
+
'Back',
|
|
37
|
+
];
|
|
38
|
+
const MARKER_ROW = '▷';
|
|
39
|
+
const DEFAULT_HEADER = '-- mindrianOS -- insights -- pick scope --';
|
|
40
|
+
|
|
41
|
+
function renderShapeF4(input) {
|
|
42
|
+
const opts = (input && typeof input === 'object') ? input : {};
|
|
43
|
+
const header = (typeof opts.header === 'string' && opts.header.length > 0)
|
|
44
|
+
? opts.header
|
|
45
|
+
: DEFAULT_HEADER;
|
|
46
|
+
|
|
47
|
+
const lines = F4_OPTIONS.map((label, i) => {
|
|
48
|
+
return MARKER_ROW + ' ' + String(i + 1) + '. ' + label;
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
zones: {
|
|
53
|
+
header: header,
|
|
54
|
+
body: lines.join('\n'),
|
|
55
|
+
signals: '',
|
|
56
|
+
footer: null,
|
|
57
|
+
},
|
|
58
|
+
contract: {
|
|
59
|
+
shape: 'F.4',
|
|
60
|
+
keyboard: 'f4-fixed',
|
|
61
|
+
verbs: F4_OPTIONS.slice(),
|
|
62
|
+
mode: 'closed',
|
|
63
|
+
recommended: null,
|
|
64
|
+
freeTextOffered: false,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = {
|
|
70
|
+
renderShapeF4: renderShapeF4,
|
|
71
|
+
F4_OPTIONS: F4_OPTIONS.slice(),
|
|
72
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
3
|
+
*
|
|
4
|
+
* Phase 88.2-03 -- Shape F.5 Branch Resolution renderer (UISEL-88.2-05).
|
|
5
|
+
*
|
|
6
|
+
* F.5 is the branch-resolution sub-shape of the AskUserQuestion-backed
|
|
7
|
+
* Shape F selector family. It is invoked when the navigator returns from
|
|
8
|
+
* parallel exploration (Scenario Plan, Compare Ventures, manual fork) and
|
|
9
|
+
* must decide how branches converge.
|
|
10
|
+
*
|
|
11
|
+
* Vocabulary (per skills/ui-system/SKILL.md Section 2 Shape F.5):
|
|
12
|
+
* ALLOWED_BRANCH_VERBS : Continue / Merge / Compare / Park / Drop / Free-Text
|
|
13
|
+
* BRANCH_RESOLUTION_VERBS : default 5-slate (Continue / Merge / Compare / Park / Free-Text)
|
|
14
|
+
*
|
|
15
|
+
* Drop is the terminal Reject-with-reason path -- power-user verb, not in
|
|
16
|
+
* the default slate but admissible when explicitly injected.
|
|
17
|
+
*
|
|
18
|
+
* Open-vocabulary like F.1/F.2, but caller-supplied verbs are validated
|
|
19
|
+
* against ALLOWED_BRANCH_VERBS. Unknown verbs are silently dropped --
|
|
20
|
+
* F.5 is specialized to branch-resolution semantics; navigators cannot
|
|
21
|
+
* invent new branch labels.
|
|
22
|
+
*
|
|
23
|
+
* Mode A (tier >= 2) renders RECOMMENDED `▶` marker on the matching verb.
|
|
24
|
+
* Mode B (tier < 2) suppresses the marker (every row prefixed with `▷`).
|
|
25
|
+
* Free-Text is hardcoded as the last verb (Canon Part 3 + Phase 88.2 invariant).
|
|
26
|
+
*
|
|
27
|
+
* Allowed glyphs (Canon Part 3 + skills/ui-system/SKILL.md 12-glyph
|
|
28
|
+
* vocabulary): ▶ ▷. No box characters.
|
|
29
|
+
*
|
|
30
|
+
* Pure CJS, node built-ins only, zero deps.
|
|
31
|
+
*
|
|
32
|
+
* API:
|
|
33
|
+
* renderShapeF5({ tier, recommendedVerb?, verbs?, header?, personaContext? })
|
|
34
|
+
* -> { zones, contract }
|
|
35
|
+
*
|
|
36
|
+
* personaContext (optional, Phase 88.2-03): when a non-empty string is
|
|
37
|
+
* supplied, the header is suffixed with ' ({personaContext} lens)' and
|
|
38
|
+
* contract.personaContext surfaces the value back to the dispatcher for
|
|
39
|
+
* telemetry. Cold-start (omitted/null/empty) preserves the prior
|
|
40
|
+
* behavior byte-for-byte (no suffix; contract.personaContext === null).
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
'use strict';
|
|
44
|
+
|
|
45
|
+
const ALLOWED_BRANCH_VERBS = [
|
|
46
|
+
'Continue',
|
|
47
|
+
'Merge',
|
|
48
|
+
'Compare',
|
|
49
|
+
'Park',
|
|
50
|
+
'Drop',
|
|
51
|
+
'Free-Text',
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
const BRANCH_RESOLUTION_VERBS = [
|
|
55
|
+
'Continue',
|
|
56
|
+
'Merge',
|
|
57
|
+
'Compare',
|
|
58
|
+
'Park',
|
|
59
|
+
'Free-Text',
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const FREE_TEXT = 'Free-Text';
|
|
63
|
+
const MAX_USER_VERBS = 5;
|
|
64
|
+
const MARKER_RECOMMENDED = '▶'; // ▶
|
|
65
|
+
const MARKER_ROW = '▷'; // ▷
|
|
66
|
+
|
|
67
|
+
const ALLOWED_SET = new Set(ALLOWED_BRANCH_VERBS);
|
|
68
|
+
|
|
69
|
+
function defaultHeader() {
|
|
70
|
+
return '-- mindrianOS -- branch -- resolve --';
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function buildVerbList(callerVerbs) {
|
|
74
|
+
// If caller did not supply verbs, use the default 5-slate (already
|
|
75
|
+
// contains Free-Text last).
|
|
76
|
+
if (!Array.isArray(callerVerbs)) {
|
|
77
|
+
return BRANCH_RESOLUTION_VERBS.slice();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Filter to ALLOWED_BRANCH_VERBS membership (silent drop of unknowns).
|
|
81
|
+
// Strip Free-Text -- we re-append it at the end unconditionally.
|
|
82
|
+
const cleaned = [];
|
|
83
|
+
for (const v of callerVerbs) {
|
|
84
|
+
if (typeof v !== 'string') continue;
|
|
85
|
+
if (!ALLOWED_SET.has(v)) continue;
|
|
86
|
+
if (v === FREE_TEXT) continue;
|
|
87
|
+
if (cleaned.indexOf(v) !== -1) continue; // de-dup
|
|
88
|
+
cleaned.push(v);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Cap user-supplied verbs at MAX_USER_VERBS (5) before Free-Text is
|
|
92
|
+
// appended, so total length never exceeds 6.
|
|
93
|
+
const capped = cleaned.slice(0, MAX_USER_VERBS);
|
|
94
|
+
capped.push(FREE_TEXT);
|
|
95
|
+
return capped;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function renderShapeF5(input) {
|
|
99
|
+
const opts = (input && typeof input === 'object') ? input : {};
|
|
100
|
+
const tier = typeof opts.tier === 'number' ? opts.tier : 0;
|
|
101
|
+
const recommendedVerb = typeof opts.recommendedVerb === 'string' && opts.recommendedVerb.length > 0
|
|
102
|
+
? opts.recommendedVerb : null;
|
|
103
|
+
const header = typeof opts.header === 'string' && opts.header.length > 0
|
|
104
|
+
? opts.header : null;
|
|
105
|
+
// Phase 88.2-03 D-AMEND-04 / DISCRETION-AMEND-01 option (a): optional
|
|
106
|
+
// personaContext suffix; cold-start (omitted/null/empty) renders without
|
|
107
|
+
// suffix. Renderer stays PURE; caller (dispatcher) supplies the string.
|
|
108
|
+
const personaContext = (typeof opts.personaContext === 'string' && opts.personaContext.length > 0)
|
|
109
|
+
? opts.personaContext
|
|
110
|
+
: null;
|
|
111
|
+
|
|
112
|
+
const verbs = buildVerbList(opts.verbs);
|
|
113
|
+
|
|
114
|
+
const mode = tier >= 2 ? 'A' : 'B';
|
|
115
|
+
// Recommendation only renders if (a) Mode A, (b) the verb survived the
|
|
116
|
+
// pipeline (is in the final verbs[]), and (c) it is not Free-Text.
|
|
117
|
+
const recInList = (mode === 'A'
|
|
118
|
+
&& recommendedVerb
|
|
119
|
+
&& recommendedVerb !== FREE_TEXT
|
|
120
|
+
&& verbs.indexOf(recommendedVerb) !== -1)
|
|
121
|
+
? recommendedVerb : null;
|
|
122
|
+
|
|
123
|
+
const lines = verbs.map((verb, i) => {
|
|
124
|
+
const prefix = (verb === recInList) ? MARKER_RECOMMENDED : MARKER_ROW;
|
|
125
|
+
return prefix + ' ' + String(i + 1) + '. ' + verb;
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
let composedHeader = header || defaultHeader();
|
|
129
|
+
if (personaContext) {
|
|
130
|
+
composedHeader = composedHeader + ' (' + personaContext + ' lens)';
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return {
|
|
134
|
+
zones: {
|
|
135
|
+
header: composedHeader,
|
|
136
|
+
body: lines.join('\n'),
|
|
137
|
+
signals: '',
|
|
138
|
+
footer: null,
|
|
139
|
+
},
|
|
140
|
+
contract: {
|
|
141
|
+
shape: 'F.5',
|
|
142
|
+
keyboard: 'askuserquestion',
|
|
143
|
+
verbs: verbs.slice(),
|
|
144
|
+
mode: mode,
|
|
145
|
+
recommended: recInList,
|
|
146
|
+
personaContext: personaContext,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
module.exports = {
|
|
152
|
+
renderShapeF5: renderShapeF5,
|
|
153
|
+
BRANCH_RESOLUTION_VERBS: BRANCH_RESOLUTION_VERBS.slice(),
|
|
154
|
+
ALLOWED_BRANCH_VERBS: ALLOWED_BRANCH_VERBS.slice(),
|
|
155
|
+
};
|