@mindrian_os/cli 2.0.0-beta.3 → 2.0.0-beta.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +21 -0
- package/.mcp.json +14 -0
- package/CHANGELOG.md +497 -0
- package/agents/analogy-query-fetcher.md +119 -0
- package/agents/brain-query.md +91 -0
- package/agents/competitor-watch-fetcher.md +94 -0
- package/agents/framework-runner.md +258 -0
- package/agents/grading.md +216 -0
- package/agents/grant-reviewer.md +191 -0
- package/agents/investor.md +141 -0
- package/agents/larry-extended.md +215 -0
- package/agents/meeting-perspective-extractor.md +94 -0
- package/agents/opportunity-scanner.md +105 -0
- package/agents/persona-analyst.md +201 -0
- package/agents/research.md +103 -0
- package/agents/reverse-salient-agent.md +42 -0
- package/agents/vault-section-reviewer.md +107 -0
- package/assets/banner-showcase.html +537 -0
- package/assets/fonts/BebasNeue-Regular.ttf +0 -0
- package/assets/fonts/Inter-Bold.ttf +0 -0
- package/assets/fonts/Inter-Regular.ttf +0 -0
- package/assets/logo.svg +10 -0
- package/bin/local-chain-recommender.cjs +256 -0
- package/bin/mindrian-brain-mcp-client.cjs +319 -0
- package/bin/mindrian-mcp-server.cjs +445 -0
- package/bin/mindrian-mcp-shim.cjs +100 -0
- package/bin/mindrian-tools.cjs +784 -0
- package/commands/act.md +529 -0
- package/commands/admin.md +439 -0
- package/commands/agentshield.md +49 -0
- package/commands/analyze-needs.md +78 -0
- package/commands/analyze-systems.md +73 -0
- package/commands/analyze-timing.md +98 -0
- package/commands/auto-explore.md +85 -0
- package/commands/beautiful-question.md +76 -0
- package/commands/bono.md +152 -0
- package/commands/brain-derive.md +137 -0
- package/commands/build-knowledge.md +121 -0
- package/commands/build-thesis.md +94 -0
- package/commands/causal.md +269 -0
- package/commands/challenge-assumptions.md +78 -0
- package/commands/compare-ventures.md +117 -0
- package/commands/correct-reference-now.md +88 -0
- package/commands/dashboard.md +144 -0
- package/commands/deck.md +117 -0
- package/commands/deep-grade.md +214 -0
- package/commands/diagnose.md +131 -0
- package/commands/diagnostics.md +195 -0
- package/commands/dial-memory-refresh.md +113 -0
- package/commands/diffusion.md +129 -0
- package/commands/discover.md +221 -0
- package/commands/doctor.md +271 -0
- package/commands/dogfood-flush.md +130 -0
- package/commands/dominant-designs.md +76 -0
- package/commands/eureka.md +315 -0
- package/commands/explain-decision.md +135 -0
- package/commands/explore-domains.md +78 -0
- package/commands/explore-futures.md +67 -0
- package/commands/explore-opportunity.md +172 -0
- package/commands/explore-trends.md +78 -0
- package/commands/export.md +128 -0
- package/commands/feynman-timeline-refresh.md +102 -0
- package/commands/file-meeting.md +1195 -0
- package/commands/find-analogies.md +369 -0
- package/commands/find-bottlenecks.md +108 -0
- package/commands/find-connections.md +111 -0
- package/commands/funding.md +114 -0
- package/commands/futures.md +128 -0
- package/commands/grade-grant.md +297 -0
- package/commands/grade.md +257 -0
- package/commands/graph.md +218 -0
- package/commands/hat-briefing.md +163 -0
- package/commands/heal.md +72 -0
- package/commands/help.md +176 -0
- package/commands/hmi-status.md +75 -0
- package/commands/ignite.md +229 -0
- package/commands/ingest-methodology.md +128 -0
- package/commands/intel-pipeline.md +133 -0
- package/commands/jtbd.md +262 -0
- package/commands/leadership.md +113 -0
- package/commands/lean-canvas.md +74 -0
- package/commands/macro-trends.md +88 -0
- package/commands/map-unknowns.md +76 -0
- package/commands/memory-cortex-reach.md +79 -0
- package/commands/memory.md +213 -0
- package/commands/models.md +200 -0
- package/commands/mos-reason.md +489 -0
- package/commands/mos.md +162 -0
- package/commands/mullins.md +155 -0
- package/commands/mva-brief.md +86 -0
- package/commands/mva-option.md +119 -0
- package/commands/mva-report.md +76 -0
- package/commands/new-project.md +633 -0
- package/commands/new-surface.md +116 -0
- package/commands/onboard.md +489 -0
- package/commands/operator.md +168 -0
- package/commands/opportunities.md +177 -0
- package/commands/organize.md +74 -0
- package/commands/persona.md +276 -0
- package/commands/pipeline.md +167 -0
- package/commands/present.md +125 -0
- package/commands/publish.md +227 -0
- package/commands/pws-brain.md +154 -0
- package/commands/qualify-opportunity.md +113 -0
- package/commands/query.md +70 -0
- package/commands/radar.md +110 -0
- package/commands/reanalyze.md +124 -0
- package/commands/research.md +467 -0
- package/commands/room.md +385 -0
- package/commands/rooms.md +682 -0
- package/commands/root-cause.md +77 -0
- package/commands/rs-experts.md +153 -0
- package/commands/rs-explain.md +134 -0
- package/commands/rs-fetch.md +119 -0
- package/commands/rs-thesis.md +131 -0
- package/commands/scenario-plan.md +80 -0
- package/commands/scheduled-tasks.md +308 -0
- package/commands/score-innovation.md +78 -0
- package/commands/scout.md +379 -0
- package/commands/setup.md +658 -0
- package/commands/show.md +71 -0
- package/commands/skill.md +108 -0
- package/commands/snapshot.md +179 -0
- package/commands/speakers.md +118 -0
- package/commands/splash.md +55 -0
- package/commands/stance.md +91 -0
- package/commands/status.md +109 -0
- package/commands/structure-argument.md +82 -0
- package/commands/suggest-next.md +141 -0
- package/commands/systems-thinking.md +224 -0
- package/commands/think-hats.md +86 -0
- package/commands/trending-to-absurd.md +151 -0
- package/commands/update.md +256 -0
- package/commands/user-needs.md +77 -0
- package/commands/validate.md +77 -0
- package/commands/value-proposition.md +116 -0
- package/commands/vault.md +330 -0
- package/commands/visualize.md +71 -0
- package/commands/whitespace.md +541 -0
- package/commands/wiki.md +96 -0
- package/data/ROOM.md +47 -0
- package/data/brain-census.generated.json +2617 -0
- package/data/brain-orchestration-projection.json +4973 -0
- package/data/brain-packet-schema.json +545 -0
- package/data/brain-surface-contract.json +32 -0
- package/data/capability-ledger.json +391 -0
- package/data/capability-map-registry.json +23 -0
- package/data/command-registry.json +2433 -0
- package/data/connector-coverage-ledger.json +1618 -0
- package/data/connector-out-of-spine-allowlist.json +71 -0
- package/data/connector-registry.json +3637 -0
- package/data/corpus-stats-source.json +11 -0
- package/data/corpus-stats.generated.json +10 -0
- package/data/cross-domain-analogues.json +15 -0
- package/data/deck-aliases.json +6 -0
- package/data/deck-styles.json +85 -0
- package/data/deployment-surfaces.json +69 -0
- package/data/dispatch-framework-map.json +18 -0
- package/data/doctor-modules.json +206 -0
- package/data/dual-graph-health-baseline.json +12 -0
- package/data/eureka-critic-tags.json +32 -0
- package/data/first-reward-surfaces.json +66 -0
- package/data/first-touch-surfaces.json +60 -0
- package/data/flagship-floor-set.json +37 -0
- package/data/framework-names.json +121 -0
- package/data/grant-rubric-fixtures/early-stage-pre-seed.json +18 -0
- package/data/grant-rubric-fixtures/early-stage-round-a.json +18 -0
- package/data/grant-rubric-fixtures/early-stage-seed.json +18 -0
- package/data/grant-rubric-fixtures/hybrid-seed-incentive.json +18 -0
- package/data/grant-rubric-fixtures/rd-fund.json +18 -0
- package/data/grant-rubric-fixtures/regional-innovation-incubators.json +18 -0
- package/data/grant-rubric-fixtures/technology-incubators.json +18 -0
- package/data/grant-rubric-fixtures/tnufa.json +167 -0
- package/data/grant-rubric-schema.json +33 -0
- package/data/harness-fixtures/converged-room/.context/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/.intelligence/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/.snapshots/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/MINTO.md +19 -0
- package/data/harness-fixtures/converged-room/STATE.md +73 -0
- package/data/harness-fixtures/converged-room/USER.md +23 -0
- package/data/harness-fixtures/converged-room/assets/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/business-model/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/business-model/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/competitive-analysis/CONTEXT.md +33 -0
- package/data/harness-fixtures/converged-room/competitive-analysis/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/financial-model/CONTEXT.md +30 -0
- package/data/harness-fixtures/converged-room/financial-model/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/funding/CONTEXT.md +41 -0
- package/data/harness-fixtures/converged-room/funding/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/legal-ip/CONTEXT.md +30 -0
- package/data/harness-fixtures/converged-room/legal-ip/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/market-analysis/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/market-analysis/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/opportunity-bank/CONTEXT.md +39 -0
- package/data/harness-fixtures/converged-room/opportunity-bank/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/problem-definition/CONTEXT.md +32 -0
- package/data/harness-fixtures/converged-room/problem-definition/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/references/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/references/SECTION-SCHEMA.md +213 -0
- package/data/harness-fixtures/converged-room/references/SUB-SCHEMAS.md +91 -0
- package/data/harness-fixtures/converged-room/solution-design/CONTEXT.md +36 -0
- package/data/harness-fixtures/converged-room/solution-design/ROOM.md +36 -0
- package/data/harness-fixtures/converged-room/strategy/CONTEXT.md +35 -0
- package/data/harness-fixtures/converged-room/strategy/ROOM.md +35 -0
- package/data/harness-fixtures/converged-room/team/ROOM.md +13 -0
- package/data/harness-fixtures/converged-room/team-execution/CONTEXT.md +36 -0
- package/data/harness-fixtures/converged-room/team-execution/ROOM.md +35 -0
- package/data/harness-manifest.json +74 -0
- package/data/harness-policies/CONTEXT.md +55 -0
- package/data/harness-policies/_schema.json +42 -0
- package/data/harness-policies/contract-parity-larry.json +63 -0
- package/data/harness-policies/gate-card-fire.json +13 -0
- package/data/harness-policies/gate-graph-derive-health.json +13 -0
- package/data/harness-policies/gate-shape-declaration.json +13 -0
- package/data/harness-policies/gate-tool-honesty.json +13 -0
- package/data/harness-policies/gate-worktree-hygiene.json +13 -0
- package/data/harness-policies/memory-write-policy.json +28 -0
- package/data/harness-policies/registry-drift.json +13 -0
- package/data/harness-policies/release-payload-ceiling.json +13 -0
- package/data/harness-policies/voice-backend-noun-free.json +13 -0
- package/data/harness-policies/voice-fork-as-card.json +13 -0
- package/data/harness-policies/voice-glyph-present.json +13 -0
- package/data/harness-policies/voice-hyphens-only.json +13 -0
- package/data/help-groups.json +236 -0
- package/data/hitl-shape-backfill.json +777 -0
- package/data/hitl-shape-declaration-fixtures/invalid-bad-shape.json +5 -0
- package/data/hitl-shape-declaration-fixtures/invalid-missing-why.json +4 -0
- package/data/hitl-shape-declaration-fixtures/invalid-ranker-contradiction.json +6 -0
- package/data/hitl-shape-declaration-fixtures/invalid-skill-gap.json +3 -0
- package/data/hitl-shape-declaration-fixtures/valid-multi-stage.json +7 -0
- package/data/hitl-shape-declaration-fixtures/valid-single-shape.json +5 -0
- package/data/hitl-shape-declaration-fixtures/valid-skill-exempt.json +5 -0
- package/data/hitl-shape-declaration-schema.json +34 -0
- package/data/hitl-stages-fixtures/bono.json +10 -0
- package/data/hitl-stages-fixtures/pipeline-1.json +9 -0
- package/data/hitl-stages-fixtures/pipeline-2.json +9 -0
- package/data/hitl-stages-fixtures/pipeline-3.json +10 -0
- package/data/hitl-stages-fixtures/research.json +10 -0
- package/data/hitl-stages-fixtures/rs-convergence.json +10 -0
- package/data/hitl-stages-fixtures/rs-family.json +11 -0
- package/data/hitl-stages-fixtures/rs-reverse-salient.json +10 -0
- package/data/hitl-stages-fixtures/trending-to-absurd.json +11 -0
- package/data/hitl-stages-schema.json +26 -0
- package/data/mcp-tool-connectors.json +464 -0
- package/data/mva-agent-prompts.json +31 -0
- package/data/mva-deck-template.html +15 -0
- package/data/mva-heuristic-keywords.json +35 -0
- package/data/orchestration-command-ledger.json +576 -0
- package/data/orchestration-unwired-allowlist.json +6 -0
- package/data/portfolio-ahp-matrix.json +16 -0
- package/data/publish-needs.json +76 -0
- package/data/render-coverage-registry.json +1152 -0
- package/data/research-sources.json +58 -0
- package/data/roadmap-type-chains.json +28 -0
- package/data/room-blueprints.json +156 -0
- package/data/subagent-dispatch-grants.json +150 -0
- package/hooks/hooks.json +493 -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 +1163 -0
- package/lib/agents/mva/brain-classic-traps.cjs +55 -0
- package/lib/agents/mva/brain-cross-domain.cjs +79 -0
- package/lib/agents/mva/brain-similar-ventures.cjs +93 -0
- package/lib/agents/mva/dashboard-graph-neighborhood.cjs +72 -0
- package/lib/agents/mva/index.cjs +42 -0
- package/lib/agents/mva/six-hats-red-black.cjs +137 -0
- package/lib/agents/mva/tavily-funding-scan.cjs +147 -0
- package/lib/agents/mva/test-all-six-agents.cjs +467 -0
- package/lib/agents/reverse-salient-agent.cjs +757 -0
- package/lib/agents/tension-hook-agent.cjs +586 -0
- package/lib/brain/ROOM.md +44 -0
- package/lib/brain/chain-recommender.cjs +784 -0
- package/lib/brain/curation-batch.cjs +519 -0
- package/lib/brain/framework-chain-slice.cjs +252 -0
- package/lib/brain/hypergraph-event-schema.cjs +184 -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-epistemic-cap.test.cjs +156 -0
- package/lib/conversation/operator.cjs +492 -0
- package/lib/conversation/operator.test.cjs +160 -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_corpus_exclude.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/abstraction-gate.cjs +133 -0
- package/lib/core/act-jtbd-blurb.cjs +231 -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/behavioral/observation-schema.cjs +86 -0
- package/lib/core/bono/cell-fanout.cjs +305 -0
- package/lib/core/bono/debate-composition.cjs +495 -0
- package/lib/core/bono/hat-governance.cjs +367 -0
- package/lib/core/bono/persona-research.cjs +288 -0
- package/lib/core/bono/reviewer-governance.cjs +331 -0
- package/lib/core/brain-client.cjs +2621 -0
- package/lib/core/brain-derivation-prompts.cjs +331 -0
- package/lib/core/brain-derivation-queue.cjs +535 -0
- package/lib/core/brain-derivation.cjs +740 -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 +396 -0
- package/lib/core/breakthrough/canary.cjs +134 -0
- package/lib/core/breakthrough/canary.test.cjs +136 -0
- package/lib/core/breakthrough/detectors.cjs +359 -0
- package/lib/core/breakthrough/detectors.test.cjs +333 -0
- package/lib/core/breakthrough/ethics-fence.cjs +129 -0
- package/lib/core/breakthrough/ethics-fence.test.cjs +178 -0
- package/lib/core/breakthrough/resurfacing.cjs +150 -0
- package/lib/core/breakthrough/resurfacing.test.cjs +233 -0
- package/lib/core/breakthrough/review-queue.cjs +168 -0
- package/lib/core/breakthrough/review-queue.test.cjs +160 -0
- package/lib/core/breakthrough/scanner-d17-d18.test.cjs +229 -0
- package/lib/core/breakthrough/scanner.cjs +435 -0
- package/lib/core/breakthrough/scanner.test.cjs +267 -0
- package/lib/core/breakthrough/schema.cjs +180 -0
- package/lib/core/breakthrough/schema.test.cjs +256 -0
- package/lib/core/breakthrough/scoring.cjs +293 -0
- package/lib/core/breakthrough/scoring.test.cjs +423 -0
- package/lib/core/breakthrough/verb-dispatch.cjs +230 -0
- package/lib/core/breakthrough/verb-dispatch.test.cjs +185 -0
- package/lib/core/breakthrough/voice-scaffold.cjs +249 -0
- package/lib/core/breakthrough/voice-scaffold.test.cjs +251 -0
- package/lib/core/bridge-writer.cjs +477 -0
- package/lib/core/cache-prune.cjs +314 -0
- package/lib/core/card-fire-gate.cjs +107 -0
- package/lib/core/card-fire-sidechannel.cjs +518 -0
- package/lib/core/chain-executor.cjs +939 -0
- package/lib/core/chain-retry.cjs +214 -0
- package/lib/core/chain-step-dispatcher.cjs +397 -0
- package/lib/core/chat-context-builder.cjs +253 -0
- package/lib/core/check-plugin-enabled.cjs +145 -0
- package/lib/core/close-loop-writer.cjs +492 -0
- package/lib/core/command-registration-check.cjs +246 -0
- package/lib/core/correlation-label-index.cjs +230 -0
- package/lib/core/correlation.cjs +112 -0
- package/lib/core/coverage-monitor.cjs +183 -0
- package/lib/core/coverage-rollup.cjs +232 -0
- package/lib/core/cross-room-aggregator.cjs +1127 -0
- package/lib/core/cross-room-store.cjs +292 -0
- package/lib/core/cross-room-triggers.cjs +222 -0
- package/lib/core/daily-briefing.cjs +438 -0
- package/lib/core/decision-axes.cjs +178 -0
- package/lib/core/decision-capture.cjs +618 -0
- package/lib/core/deck-design-rules.cjs +211 -0
- package/lib/core/deep-links.cjs +82 -0
- package/lib/core/directive-envelope.cjs +230 -0
- package/lib/core/directive-envelope.test.cjs +225 -0
- package/lib/core/dispatch-optimizer.cjs +354 -0
- package/lib/core/doc-text-extractor.cjs +133 -0
- package/lib/core/doctor/capability-ledger-module.cjs +170 -0
- package/lib/core/doctor/card-fire-health-module.cjs +159 -0
- package/lib/core/doctor/cascade-rooms-active-module.cjs +127 -0
- package/lib/core/doctor/cascade-rooms-module.cjs +184 -0
- package/lib/core/doctor/class-m-brain-smoke.cjs +479 -0
- package/lib/core/doctor/class-m-brain-smoke.test.cjs +448 -0
- package/lib/core/doctor/class-s-eureka-smoke.cjs +380 -0
- package/lib/core/doctor/deployment-surfaces-module.cjs +408 -0
- package/lib/core/doctor/deprecated-usage-module.cjs +155 -0
- package/lib/core/doctor/eureka-fts-health-module.cjs +236 -0
- package/lib/core/doctor/graph-derive-heal-retrofit-module.cjs +148 -0
- package/lib/core/doctor/graph-derive-health-module.cjs +486 -0
- package/lib/core/doctor/install-incomplete-module.cjs +320 -0
- package/lib/core/doctor/install-state-module.cjs +503 -0
- package/lib/core/doctor/mcp-surface-module.cjs +369 -0
- package/lib/core/doctor/mode-select-checkpoint-module.cjs +113 -0
- package/lib/core/doctor/plugin-enabled-state-module.cjs +86 -0
- package/lib/core/doctor/room-graph-density-module.cjs +181 -0
- package/lib/core/doctor/room-md-module.cjs +198 -0
- package/lib/core/doctor/shared.cjs +555 -0
- package/lib/core/doctor/stale-first-touch-copy-module.cjs +83 -0
- package/lib/core/doctor/statusline-visibility-module.cjs +295 -0
- package/lib/core/doctor/ui-compliance-module.cjs +223 -0
- package/lib/core/doctor/umbilical-module.cjs +486 -0
- package/lib/core/doctor/verify-surface-module.cjs +82 -0
- package/lib/core/doctor/voice-style-log-module.cjs +146 -0
- package/lib/core/domain-insight-sweep.cjs +224 -0
- package/lib/core/drift-baseline.cjs +362 -0
- package/lib/core/drift-runtime-reachability.cjs +283 -0
- package/lib/core/dual-path-detector.cjs +84 -0
- package/lib/core/dual-path-detector.test.cjs +334 -0
- package/lib/core/enrichment-queue.cjs +636 -0
- package/lib/core/eureka/ahp-weights.cjs +232 -0
- package/lib/core/eureka/analogy-fitness.cjs +326 -0
- package/lib/core/eureka/compression-meter.cjs +165 -0
- package/lib/core/eureka/embedding-classifier.cjs +226 -0
- package/lib/core/eureka/embedding-spine.cjs +563 -0
- package/lib/core/eureka/entity-classifier.cjs +232 -0
- package/lib/core/eureka/entity-extractor.cjs +356 -0
- package/lib/core/eureka/eureka-enable.cjs +228 -0
- package/lib/core/eureka/eureka-offer.cjs +225 -0
- package/lib/core/eureka/eureka-reach-runner.cjs +430 -0
- package/lib/core/eureka/explore-chain.cjs +834 -0
- package/lib/core/eureka/explored-artifact.cjs +456 -0
- package/lib/core/eureka/fts-index-lifecycle.cjs +265 -0
- package/lib/core/eureka/grade-grant-examine.cjs +544 -0
- package/lib/core/eureka/grade-grant.cjs +596 -0
- package/lib/core/eureka/hybrid-retrieve.cjs +256 -0
- package/lib/core/eureka/lateral-engine-adapter.cjs +118 -0
- package/lib/core/eureka/lexical-overlap.cjs +98 -0
- package/lib/core/eureka/online-pattern-query.cjs +142 -0
- package/lib/core/eureka/opportunity-harvest.cjs +752 -0
- package/lib/core/eureka/opportunity-statement.cjs +519 -0
- package/lib/core/eureka/portfolio-dimensions.cjs +255 -0
- package/lib/core/eureka/qualify-opportunity.cjs +607 -0
- package/lib/core/eureka/reasoning-mode.cjs +481 -0
- package/lib/core/eureka/report-html.cjs +368 -0
- package/lib/core/eureka/research-filing.cjs +547 -0
- package/lib/core/eureka/room-native-substrate.cjs +343 -0
- package/lib/core/eureka/tail-quadrant.cjs +177 -0
- package/lib/core/eureka/tri-modal-index.cjs +564 -0
- package/lib/core/eureka/vector-store.cjs +414 -0
- package/lib/core/eureka-critic.cjs +733 -0
- package/lib/core/eureka-deps-resolver.cjs +179 -0
- package/lib/core/expert-genesis.cjs +437 -0
- package/lib/core/expert-library.cjs +303 -0
- package/lib/core/exports-log.cjs +79 -0
- package/lib/core/feynman/ROOM.md +25 -0
- package/lib/core/feynman/dial-memory-renderer.cjs +279 -0
- package/lib/core/feynman/dial-memory-runner.cjs +173 -0
- package/lib/core/feynman/feynman-seed-writer.cjs +187 -0
- package/lib/core/feynman/timeline-renderer.cjs +197 -0
- package/lib/core/feynman/timeline-runner.cjs +281 -0
- package/lib/core/feynman-minto-invariants.cjs +609 -0
- package/lib/core/findings-wirer.cjs +360 -0
- package/lib/core/first-touch-version-stamper.cjs +113 -0
- package/lib/core/folder-memory-async.cjs +424 -0
- package/lib/core/folder-memory-shared.cjs +890 -0
- package/lib/core/folder-memory.cjs +546 -0
- package/lib/core/framework-chain-composer.cjs +583 -0
- package/lib/core/frontmatter-schemas.cjs +468 -0
- package/lib/core/fusion-router.cjs +540 -0
- package/lib/core/futures/causal-cue.cjs +91 -0
- package/lib/core/futures/orchestrator.cjs +1391 -0
- package/lib/core/futures/subsystem-render.cjs +164 -0
- package/lib/core/gate-relevance.cjs +278 -0
- package/lib/core/git-ops.cjs +141 -0
- package/lib/core/graph-backfill.cjs +562 -0
- package/lib/core/graph-candidate-producer.cjs +235 -0
- package/lib/core/graph-derivation.cjs +546 -0
- package/lib/core/graph-derive-classifier.cjs +352 -0
- package/lib/core/graph-ops.cjs +274 -0
- package/lib/core/graph-refine-loop.cjs +194 -0
- package/lib/core/graph-self-heal.cjs +289 -0
- package/lib/core/greeting-intent-detector.cjs +201 -0
- package/lib/core/grill-engine.cjs +459 -0
- package/lib/core/hat-persistence.cjs +274 -0
- package/lib/core/hsi-engine.cjs +439 -0
- package/lib/core/hsi-lsa.cjs +246 -0
- package/lib/core/hsi-spectral.cjs +554 -0
- package/lib/core/hsi-to-graph.test.cjs +168 -0
- package/lib/core/icm-forest.cjs +703 -0
- package/lib/core/ignite-branch-gate.cjs +66 -0
- package/lib/core/index.cjs +60 -0
- package/lib/core/insight-sensors.cjs +1000 -0
- package/lib/core/install-state.cjs +242 -0
- package/lib/core/integration-registry.cjs +232 -0
- package/lib/core/intel-pipeline.cjs +566 -0
- package/lib/core/intelligence-cascade.cjs +852 -0
- package/lib/core/issue-tree.cjs +269 -0
- package/lib/core/larry-thinness-acknowledgment.cjs +64 -0
- package/lib/core/larry-thinness-acknowledgment.test.cjs +97 -0
- package/lib/core/lazygraph-ops.cjs +1453 -0
- package/lib/core/lens-engine.cjs +434 -0
- package/lib/core/leverage-scan.cjs +218 -0
- package/lib/core/llm-name-suggester.cjs +194 -0
- package/lib/core/llm-name-suggester.test.cjs +132 -0
- package/lib/core/lru-cache.cjs +139 -0
- package/lib/core/mcp-dep-heal.cjs +475 -0
- package/lib/core/mcp-dep-heal.test.cjs +253 -0
- package/lib/core/mcp-profiles.cjs +185 -0
- package/lib/core/meeting-ops.cjs +54 -0
- package/lib/core/memory/governance-candidate-raiser.cjs +205 -0
- package/lib/core/memory/governance-candidate.cjs +95 -0
- package/lib/core/memory/reconcile-memory-runner.cjs +653 -0
- package/lib/core/memory-ops.cjs +641 -0
- package/lib/core/meter/gate-density-reader.cjs +112 -0
- package/lib/core/meter/transfer-reader.cjs +276 -0
- package/lib/core/meter/two-gauge.cjs +245 -0
- package/lib/core/methodology-ingest.cjs +346 -0
- package/lib/core/metrics/larryreach-loop-health.cjs +142 -0
- package/lib/core/migration-snapshot.cjs +287 -0
- package/lib/core/migration-snapshot.test.cjs +174 -0
- package/lib/core/migrations/ROOM.md +33 -0
- package/lib/core/migrations/phase-109-nodes-provenance.cjs +400 -0
- package/lib/core/migrations/phase-109-session-focus.cjs +99 -0
- package/lib/core/migrations/phase-160-nodes-bitemporal.cjs +168 -0
- package/lib/core/migrations/phase-160-nodes-bitemporal.test.cjs +140 -0
- package/lib/core/migrations/phase-162-section-nodes.cjs +156 -0
- package/lib/core/migrations/phase-222-ranker-weights.cjs +62 -0
- package/lib/core/migrations/phase-224-edge-review-status.cjs +87 -0
- package/lib/core/mindrian-brain-shim.test.cjs +221 -0
- package/lib/core/mode-select-sidechannel.cjs +259 -0
- package/lib/core/model-profiles.cjs +246 -0
- package/lib/core/mullins-scaffold.cjs +258 -0
- package/lib/core/mullins-scaffold.test.cjs +128 -0
- package/lib/core/mva-agent-contract.cjs +170 -0
- package/lib/core/mva-agent-contract.test.cjs +169 -0
- package/lib/core/mva-budget.cjs +75 -0
- package/lib/core/mva-budget.test.cjs +68 -0
- package/lib/core/mva-classifier.cjs +392 -0
- package/lib/core/mva-classifier.test.cjs +248 -0
- package/lib/core/mva-deck-builder.cjs +452 -0
- package/lib/core/mva-deck-builder.test.cjs +287 -0
- package/lib/core/mva-detect.smoke.test.cjs +209 -0
- package/lib/core/mva-dispatcher.cjs +110 -0
- package/lib/core/mva-dispatcher.test.cjs +216 -0
- package/lib/core/mva-option-router.cjs +414 -0
- package/lib/core/mva-option-router.test.cjs +483 -0
- package/lib/core/mva-orchestrator.cjs +365 -0
- package/lib/core/mva-orchestrator.test.cjs +916 -0
- package/lib/core/mva-progressive-renderer.cjs +194 -0
- package/lib/core/mva-progressive-renderer.test.cjs +157 -0
- package/lib/core/mva-rule-linter.cjs +458 -0
- package/lib/core/mva-rule-linter.test.cjs +484 -0
- package/lib/core/mva-state.cjs +159 -0
- package/lib/core/mva-telemetry.cjs +58 -0
- package/lib/core/mva-telemetry.test.cjs +196 -0
- package/lib/core/mva-vercel-deploy.cjs +168 -0
- package/lib/core/mva-vercel-deploy.test.cjs +239 -0
- package/lib/core/nav-dial.cjs +440 -0
- package/lib/core/navigation/ROOM.md +15 -0
- package/lib/core/navigation/abstraction-claim.cjs +185 -0
- package/lib/core/navigation/calibration-gate.cjs +284 -0
- package/lib/core/navigation/calibration-log.cjs +141 -0
- package/lib/core/navigation/confirm-node.cjs +73 -0
- package/lib/core/navigation/dashboard-helpers.cjs +145 -0
- package/lib/core/navigation/edges.cjs +1150 -0
- package/lib/core/navigation/evidence-claim.cjs +186 -0
- package/lib/core/navigation/explanation.cjs +48 -0
- package/lib/core/navigation/file-evidence-readback.cjs +242 -0
- package/lib/core/navigation/focus.cjs +155 -0
- package/lib/core/navigation/get-domains-for-trends.cjs +277 -0
- package/lib/core/navigation/governance.cjs +101 -0
- package/lib/core/navigation/grant-rubric.cjs +218 -0
- package/lib/core/navigation/graph-export.cjs +325 -0
- package/lib/core/navigation/ingestion.cjs +109 -0
- package/lib/core/navigation/insights-stale.test.cjs +127 -0
- package/lib/core/navigation/insights.cjs +574 -0
- package/lib/core/navigation/lens-nodes.cjs +315 -0
- package/lib/core/navigation/memory-artifacts.cjs +437 -0
- package/lib/core/navigation/memory-cortex-packet.cjs +274 -0
- package/lib/core/navigation/memory-events.cjs +811 -0
- package/lib/core/navigation/neighborhood.cjs +79 -0
- package/lib/core/navigation/packet.cjs +420 -0
- package/lib/core/navigation/planning-artifacts.cjs +219 -0
- package/lib/core/navigation/projections.cjs +295 -0
- package/lib/core/navigation/ranker-weights.cjs +133 -0
- package/lib/core/navigation/reasoning-write.cjs +211 -0
- package/lib/core/navigation/reconcile-guard.cjs +98 -0
- package/lib/core/navigation/reified-claim.cjs +287 -0
- package/lib/core/navigation/research-preflight.cjs +156 -0
- package/lib/core/navigation/room-birth.cjs +1213 -0
- package/lib/core/navigation/room-context.cjs +380 -0
- package/lib/core/navigation/room-home.cjs +142 -0
- package/lib/core/navigation/spine-events.cjs +548 -0
- package/lib/core/navigation/synthetic-expert.cjs +177 -0
- package/lib/core/navigation/transitions.cjs +253 -0
- package/lib/core/navigation/typed-claim.cjs +208 -0
- package/lib/core/navigation/typed-domain.cjs +249 -0
- package/lib/core/navigation/typed-entity.cjs +236 -0
- package/lib/core/navigation/typed-frame.cjs +257 -0
- package/lib/core/navigation/typed-open-question.cjs +130 -0
- package/lib/core/navigation/typed-opportunity.cjs +418 -0
- package/lib/core/navigation-engine-offer.cjs +776 -0
- package/lib/core/navigation-engine-shared.cjs +256 -0
- package/lib/core/navigation-engine.cjs +1696 -0
- package/lib/core/navigation.cjs +686 -0
- package/lib/core/nl-graph-queries.cjs +164 -0
- package/lib/core/node-insert-epistemic.test.cjs +212 -0
- package/lib/core/node-insert-overrides.test.cjs +273 -0
- package/lib/core/node-insert.cjs +274 -0
- package/lib/core/npm-cli-resolve.cjs +151 -0
- package/lib/core/npm-cli-resolve.test.cjs +153 -0
- package/lib/core/npm-install-lock.cjs +326 -0
- package/lib/core/npm-install-lock.test.cjs +379 -0
- package/lib/core/numeric/sklearn-stopwords-v1.json +325 -0
- package/lib/core/numeric/svd.cjs +377 -0
- package/lib/core/numeric/tfidf.cjs +241 -0
- package/lib/core/offer-presenter.cjs +406 -0
- package/lib/core/opportunity-extractor.cjs +183 -0
- package/lib/core/opportunity-ops.cjs +1423 -0
- package/lib/core/orchestration-candidate-lift.cjs +284 -0
- package/lib/core/part8-egress-guard.cjs +563 -0
- package/lib/core/part8-egress-guard.test.cjs +194 -0
- package/lib/core/part8-egress-ontology.cjs +174 -0
- package/lib/core/part8-egress-ontology.test.cjs +133 -0
- package/lib/core/persona-ops.cjs +692 -0
- package/lib/core/persona-override.cjs +327 -0
- package/lib/core/persona-taxonomy.cjs +328 -0
- package/lib/core/pinecone-inference.cjs +176 -0
- package/lib/core/pitch-feedback-schemas.cjs +303 -0
- package/lib/core/planning/artifact-brain-packet.cjs +212 -0
- package/lib/core/planning/reconcile-runner.cjs +347 -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/publish-needs-default-lane.cjs +110 -0
- package/lib/core/ralph-loop-gate.cjs +48 -0
- package/lib/core/reader/ab-harness.cjs +177 -0
- package/lib/core/reader/decide-projection-reader.cjs +358 -0
- package/lib/core/reasoning-ops.cjs +639 -0
- package/lib/core/recipe-maps.cjs +442 -0
- package/lib/core/recovery/case-file.cjs +358 -0
- package/lib/core/recovery/controller.cjs +1008 -0
- package/lib/core/recovery/dispatcher.cjs +533 -0
- package/lib/core/recovery/result-semantics.cjs +488 -0
- package/lib/core/recovery/stage-envelope.cjs +338 -0
- package/lib/core/refusal-messaging.cjs +569 -0
- package/lib/core/refusal-messaging.test.cjs +220 -0
- package/lib/core/repo-version.cjs +134 -0
- package/lib/core/research-cache.cjs +165 -0
- package/lib/core/research-cache.test.cjs +137 -0
- package/lib/core/research-context-extractor.cjs +283 -0
- package/lib/core/research-corpus.cjs +814 -0
- package/lib/core/research-corpus.test.cjs +280 -0
- package/lib/core/research-filing-selector.cjs +189 -0
- package/lib/core/resolve-active-room.cjs +602 -0
- package/lib/core/resolve-brain-key.cjs +273 -0
- package/lib/core/resolve-umbilical-target.cjs +288 -0
- package/lib/core/resolve-vercel-key.cjs +107 -0
- package/lib/core/resolve-vercel-key.test.cjs +137 -0
- package/lib/core/reverse-salient-persona-suffix.cjs +115 -0
- package/lib/core/room-auto-create.cjs +318 -0
- package/lib/core/room-auto-create.test.cjs +198 -0
- package/lib/core/room-chooser.cjs +244 -0
- package/lib/core/room-classifier-strict-mode.cjs +235 -0
- package/lib/core/room-db.cjs +348 -0
- package/lib/core/room-discard-cascade.cjs +238 -0
- package/lib/core/room-discard-cascade.test.cjs +135 -0
- package/lib/core/room-name-validator.cjs +132 -0
- package/lib/core/room-name-validator.test.cjs +156 -0
- package/lib/core/room-naming-selector.cjs +357 -0
- package/lib/core/room-naming-selector.test.cjs +277 -0
- package/lib/core/room-open.cjs +259 -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-receipt-emit.cjs +63 -0
- package/lib/core/room-root.cjs +93 -0
- package/lib/core/room-skeleton-scaffold.cjs +669 -0
- package/lib/core/room-skeleton-scaffold.test.cjs +296 -0
- package/lib/core/room-type-detector.cjs +386 -0
- package/lib/core/rs-backend-dispatch.cjs +64 -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 +381 -0
- package/lib/core/rs-commercial-assessor.cjs +280 -0
- package/lib/core/rs-corpus-quality-gate.cjs +62 -0
- package/lib/core/rs-differential-scorer.cjs +629 -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-engine.cjs +597 -0
- package/lib/core/rs-expert-brain-projection.cjs +280 -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-math.cjs +458 -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 +435 -0
- package/lib/core/rs-pinecone-bridge.cjs +344 -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 +495 -0
- package/lib/core/rs-thesis-generator.cjs +188 -0
- package/lib/core/rs_cache.py +635 -0
- package/lib/core/rs_corpus.py +562 -0
- package/lib/core/rs_corpus_exclude.py +62 -0
- package/lib/core/rs_hybrid.py +589 -0
- package/lib/core/rs_math.py +287 -0
- package/lib/core/rs_rooms.py +196 -0
- package/lib/core/salient-governance.cjs +315 -0
- package/lib/core/scheduled-scanner.cjs +658 -0
- package/lib/core/scratchpad-ops.cjs +316 -0
- package/lib/core/seam-liveness.cjs +191 -0
- package/lib/core/seam-liveness.test.cjs +177 -0
- package/lib/core/section-8-trace-schema.cjs +138 -0
- package/lib/core/section-registry.cjs +167 -0
- package/lib/core/security/agentshield-adapters.test.cjs +104 -0
- package/lib/core/security/agentshield-run.cjs +343 -0
- package/lib/core/security/agentshield-scanner.cjs +314 -0
- package/lib/core/security/agentshield-scanner.test.cjs +259 -0
- package/lib/core/sensors/hat-scoping-table.cjs +103 -0
- package/lib/core/sensors/sensor-circularity.cjs +278 -0
- package/lib/core/sensors/sensor-content-relevance.cjs +407 -0
- package/lib/core/sensors/sensor-diffusion-adoption.cjs +230 -0
- package/lib/core/sensors/sensor-eureka.cjs +208 -0
- package/lib/core/sensors/sensor-expert-skill.cjs +293 -0
- package/lib/core/sensors/sensor-external-fact.cjs +184 -0
- package/lib/core/sensors/sensor-gate-approach.cjs +104 -0
- package/lib/core/sensors/sensor-jtbd-reweight.cjs +141 -0
- package/lib/core/sensors/sensor-lagging-component.cjs +115 -0
- package/lib/core/sensors/sensor-memory-cortex.cjs +111 -0
- package/lib/core/sensors/sensor-methodology-decision.cjs +131 -0
- package/lib/core/sensors/sensor-opportunity-harvest.cjs +195 -0
- package/lib/core/sensors/sensor-perspective-lock.cjs +174 -0
- package/lib/core/sensors/sensor-priority.cjs +183 -0
- package/lib/core/sensors/sensor-recency.cjs +151 -0
- package/lib/core/sensors/sensor-roadmap-type.cjs +421 -0
- package/lib/core/sensors/sensor-room-pick.cjs +238 -0
- package/lib/core/sensors/sensor-show-share.cjs +215 -0
- package/lib/core/sensors/sensor-temporal-blindness.cjs +123 -0
- package/lib/core/sensors/sensor-types.cjs +294 -0
- package/lib/core/sensors/sensor-url-ingest.cjs +234 -0
- package/lib/core/session-binding.cjs +208 -0
- package/lib/core/session-presence.cjs +404 -0
- package/lib/core/session-register.cjs +138 -0
- package/lib/core/session-state.cjs +144 -0
- package/lib/core/shallow-doc-parser.cjs +353 -0
- package/lib/core/shallow-doc-parser.test.cjs +226 -0
- package/lib/core/skill-activation-router.cjs +284 -0
- package/lib/core/skillopt-schemas.cjs +509 -0
- package/lib/core/stale-copy-scanner.cjs +190 -0
- package/lib/core/stance-state.cjs +153 -0
- package/lib/core/state-aware-router.cjs +78 -0
- package/lib/core/state-ops.cjs +80 -0
- package/lib/core/state-version.cjs +350 -0
- package/lib/core/statusline-cache.cjs +266 -0
- package/lib/core/statusline-liveness-gate.cjs +105 -0
- package/lib/core/surface-fence.cjs +127 -0
- package/lib/core/synthesizers/comparison-matrix.cjs +82 -0
- package/lib/core/synthesizers/convergence-map.cjs +107 -0
- package/lib/core/synthesizers/domain-hierarchy.cjs +138 -0
- package/lib/core/synthesizers/source-comparison.cjs +56 -0
- package/lib/core/synthesizers/tension-map.cjs +119 -0
- package/lib/core/synthetic-expert-behavior-gate.cjs +99 -0
- package/lib/core/synthetic-expert-construction-gate.cjs +170 -0
- package/lib/core/telemetry/schema.cjs +168 -0
- package/lib/core/telemetry/schema.test.cjs +124 -0
- package/lib/core/telemetry/validator.cjs +200 -0
- package/lib/core/telemetry/validator.test.cjs +188 -0
- package/lib/core/telemetry/writer.cjs +141 -0
- package/lib/core/telemetry/writer.test.cjs +331 -0
- package/lib/core/temporal/date-sync-gate.cjs +256 -0
- package/lib/core/temporal/date-sync-gate.test.cjs +191 -0
- package/lib/core/temporal/dual-stamp.cjs +172 -0
- package/lib/core/temporal/dual-stamp.test.cjs +172 -0
- package/lib/core/temporal/point-in-time.cjs +76 -0
- package/lib/core/temporal/point-in-time.test.cjs +169 -0
- package/lib/core/temporal/recency-decay.cjs +119 -0
- package/lib/core/temporal/recency-decay.test.cjs +140 -0
- package/lib/core/temporal/reference-now.cjs +281 -0
- package/lib/core/temporal/reference-now.test.cjs +225 -0
- package/lib/core/temporal/resolve-relative-time.cjs +116 -0
- package/lib/core/temporal/resolve-relative-time.test.cjs +138 -0
- package/lib/core/temporal/supersession.cjs +250 -0
- package/lib/core/temporal/supersession.test.cjs +103 -0
- package/lib/core/terminal-capability.cjs +88 -0
- package/lib/core/token-estimator.cjs +348 -0
- package/lib/core/tone-filter.cjs +147 -0
- package/lib/core/trending-to-absurd/orchestrator.cjs +341 -0
- package/lib/core/trending-to-absurd/stage7-roadmap.cjs +317 -0
- package/lib/core/trending-to-absurd/variance.cjs +169 -0
- package/lib/core/unknowns/bandit.cjs +332 -0
- package/lib/core/unknowns/corpus-adapter.cjs +327 -0
- package/lib/core/unknowns/dsp.cjs +356 -0
- package/lib/core/unknowns/edge-writer.cjs +211 -0
- package/lib/core/unknowns/iface.cjs +212 -0
- package/lib/core/unknowns/orchestrator.cjs +375 -0
- package/lib/core/unknowns/pattern-miner.cjs +214 -0
- package/lib/core/unknowns/rumsfeld-matrix.cjs +155 -0
- package/lib/core/unknowns/verdict.cjs +254 -0
- package/lib/core/update-path.cjs +57 -0
- package/lib/core/url-ingest.cjs +568 -0
- package/lib/core/user-archetype.cjs +284 -0
- package/lib/core/user-md-ops.cjs +578 -0
- package/lib/core/venture-shape-nudge.cjs +178 -0
- package/lib/core/venture-shape-nudge.test.cjs +266 -0
- package/lib/core/verb-reach-affinity.cjs +299 -0
- package/lib/core/visual-ops.cjs +692 -0
- package/lib/core/voice-transition-detector.cjs +125 -0
- package/lib/core/watched-sources.cjs +237 -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 +669 -0
- package/lib/hmi/agentshield-drift-gate.cjs +142 -0
- package/lib/hmi/brain-review-packet.cjs +221 -0
- package/lib/hmi/cortex-reach-adapter.cjs +271 -0
- package/lib/hmi/cross-room-memory.cjs +618 -0
- package/lib/hmi/decoy-tier.cjs +395 -0
- package/lib/hmi/depth-state.cjs +164 -0
- package/lib/hmi/dial-label-composer.cjs +410 -0
- package/lib/hmi/dial-presenter.cjs +508 -0
- package/lib/hmi/dial-reach-orchestrator.cjs +377 -0
- package/lib/hmi/dial-selector.cjs +239 -0
- package/lib/hmi/f1-pick-capture-cli.cjs +131 -0
- package/lib/hmi/f3-depth-capture-cli.cjs +77 -0
- package/lib/hmi/f4-scope-capture-cli.cjs +86 -0
- package/lib/hmi/f8-action-capture-cli.cjs +145 -0
- package/lib/hmi/f8-capture.test.cjs +77 -0
- package/lib/hmi/f9-ordered-capture-cli.cjs +138 -0
- package/lib/hmi/harvest-scope-state.cjs +202 -0
- package/lib/hmi/hats-persona-cache.cjs +142 -0
- package/lib/hmi/jtbd-classifier.cjs +219 -0
- package/lib/hmi/jtbd-state.cjs +263 -0
- package/lib/hmi/jtbd-taxonomy.json +402 -0
- package/lib/hmi/mindrian-ascii-logo.cjs +96 -0
- package/lib/hmi/part8-egress-gate.cjs +149 -0
- package/lib/hmi/reach-component-map.json +47 -0
- package/lib/hmi/reach-relevance-gate.cjs +147 -0
- package/lib/hmi/selector-dispatcher.cjs +1201 -0
- package/lib/hmi/selector-dispatcher.test.cjs +141 -0
- package/lib/hmi/selector-telemetry.cjs +269 -0
- package/lib/hmi/shape-f0-renderer.cjs +145 -0
- package/lib/hmi/shape-f1-fallback.cjs +80 -0
- package/lib/hmi/shape-f1-renderer.cjs +219 -0
- package/lib/hmi/shape-f2-renderer.cjs +132 -0
- package/lib/hmi/shape-f3-parity.test.cjs +64 -0
- package/lib/hmi/shape-f3-renderer.cjs +66 -0
- package/lib/hmi/shape-f4-parity.test.cjs +72 -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 +324 -0
- package/lib/hmi/shape-f6-renderer.cjs +144 -0
- package/lib/hmi/shape-f7-breakthrough-renderer.cjs +234 -0
- package/lib/hmi/shape-f7-breakthrough-renderer.test.cjs +233 -0
- package/lib/hmi/shape-f8-renderer.cjs +150 -0
- package/lib/hmi/shape-f8-renderer.test.cjs +70 -0
- package/lib/hmi/shape-f9-renderer.cjs +187 -0
- package/lib/hmi/shape-f9-renderer.test.cjs +80 -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/hmi/turn-text.cjs +268 -0
- package/lib/hmi/voice-color-mark.cjs +318 -0
- package/lib/hmi/voice-style-log.cjs +276 -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/undo.test.cjs +199 -0
- package/lib/import/vault-scanner.cjs +105 -0
- package/lib/import/vault-scanner.test.cjs +67 -0
- package/lib/lens-engine/correlation-resolver.cjs +174 -0
- package/lib/lens-engine/source-lens-driver.cjs +736 -0
- package/lib/mcp/adapter-client.cjs +103 -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-composition-census.cjs +184 -0
- package/lib/mcp/brain-router.cjs +551 -0
- package/lib/mcp/capability-registry.cjs +62 -0
- package/lib/mcp/contract-version.cjs +59 -0
- package/lib/mcp/daemon-lifecycle.cjs +324 -0
- package/lib/mcp/gate-dedup.cjs +120 -0
- package/lib/mcp/gate-ledger.cjs +145 -0
- package/lib/mcp/gate-render.cjs +483 -0
- package/lib/mcp/hook-adapter-audit.cjs +199 -0
- package/lib/mcp/larry-context.cjs +42 -0
- package/lib/mcp/mcp-first-flag.cjs +147 -0
- package/lib/mcp/no-instructions.test.cjs +270 -0
- package/lib/mcp/pipeline-state.cjs +424 -0
- package/lib/mcp/prompts.cjs +421 -0
- package/lib/mcp/register-core-tools.cjs +78 -0
- package/lib/mcp/resources.cjs +359 -0
- package/lib/mcp/runtime-instructions.cjs +38 -0
- package/lib/mcp/session-catchup.cjs +349 -0
- package/lib/mcp/session-registry.cjs +113 -0
- package/lib/mcp/session-room.cjs +124 -0
- package/lib/mcp/sse-event-bus.cjs +98 -0
- package/lib/mcp/stop-gate-handler.cjs +589 -0
- package/lib/mcp/surface-detect.cjs +186 -0
- package/lib/mcp/tool-router.cjs +2115 -0
- package/lib/mcp/tools/chain.cjs +674 -0
- package/lib/mcp/tools/claim.cjs +180 -0
- package/lib/mcp/tools/context.cjs +92 -0
- package/lib/mcp/tools/dual-path.cjs +79 -0
- package/lib/mcp/tools/gate.cjs +392 -0
- package/lib/mcp/tools/graph-reason.cjs +130 -0
- package/lib/mcp/tools/graph.cjs +321 -0
- package/lib/mcp/tools/identity.cjs +174 -0
- package/lib/mcp/tools/room.cjs +449 -0
- package/lib/mcp/tools/sensors.cjs +450 -0
- package/lib/mcp/tools/status.cjs +183 -0
- package/lib/mcp/tools/stop-gate.cjs +103 -0
- package/lib/mcp/tools/views.cjs +382 -0
- package/lib/mcp/tree-watcher.cjs +199 -0
- package/lib/memory/.mindrian/auto-explore-mat-test-001.json +11 -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/body-shape-coverage.test.cjs +268 -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-cypher-chain-slice.test.cjs +368 -0
- package/lib/memory/brain-derivation-graceful-degradation.test.cjs +1019 -0
- package/lib/memory/brain-derivation-queue.test.cjs +553 -0
- package/lib/memory/brain-derivation.test.cjs +639 -0
- package/lib/memory/brain-derive-command.test.cjs +534 -0
- package/lib/memory/brain-derive-curation.test.cjs +243 -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/brain-suggestion-template.test.cjs +200 -0
- package/lib/memory/chain-recommender-canonical.test.cjs +208 -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/connector-registry.test.cjs +94 -0
- package/lib/memory/correlation-label-index.test.cjs +119 -0
- package/lib/memory/correlation.test.cjs +253 -0
- package/lib/memory/cross-room-aggregator.test.cjs +909 -0
- package/lib/memory/curation-132-03-dedup-held-rename.test.cjs +251 -0
- package/lib/memory/curation-132-05-pseudonymize.test.cjs +205 -0
- package/lib/memory/curation-batch.test.cjs +213 -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/doctor-deprecation-surface.test.cjs +188 -0
- package/lib/memory/dual-graph-health.test.cjs +485 -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/f-selector-ranker.test.cjs +593 -0
- package/lib/memory/feynman-minto-guardian.test.cjs +863 -0
- package/lib/memory/feynman-minto-invariants.test.cjs +554 -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/first-touch-version.test.cjs +198 -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 +549 -0
- package/lib/memory/frontmatter-schema-validator.test.cjs +344 -0
- package/lib/memory/guardian-onstop-reaches-user.test.cjs +396 -0
- package/lib/memory/heal-command.test.cjs +604 -0
- package/lib/memory/help-coverage.test.cjs +108 -0
- package/lib/memory/help-renderer.test.cjs +145 -0
- package/lib/memory/huji-run-one-async-parity.test.cjs +242 -0
- package/lib/memory/hypergraph-event-schema.test.cjs +116 -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/local-chain-recommender.test.cjs +172 -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-debounce-consumer-census.test.cjs +567 -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 +712 -0
- package/lib/memory/navigation-engine-offer.test.cjs +404 -0
- package/lib/memory/navigation-hook-resolver.test.cjs +177 -0
- package/lib/memory/navigation-invariants.test.cjs +483 -0
- package/lib/memory/navigation-projections.test.cjs +241 -0
- package/lib/memory/navigation-write-edge.test.cjs +206 -0
- package/lib/memory/offer-closer.test.cjs +258 -0
- package/lib/memory/offer-presenter.test.cjs +554 -0
- package/lib/memory/on-stop-snapshot.test.cjs +404 -0
- package/lib/memory/orchestration-projection.test.cjs +706 -0
- package/lib/memory/packet-chain-hint.test.cjs +407 -0
- package/lib/memory/packet-schema-validation.test.cjs +317 -0
- package/lib/memory/palette-consistency.test.cjs +127 -0
- package/lib/memory/pending-tension-store.cjs +453 -0
- package/lib/memory/per-command-jtbd-derivation.test.cjs +130 -0
- package/lib/memory/per-command-teaching.test.cjs +110 -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/precommit-real-commit.test.cjs +301 -0
- package/lib/memory/problem-type-router.test.cjs +656 -0
- package/lib/memory/query-efficiency-telemetry.test.cjs +612 -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/render-v2-disposition.test.cjs +199 -0
- package/lib/memory/room-classifier-strict-mode.test.cjs +430 -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 +2101 -0
- package/lib/memory/security-trifecta.test.cjs +329 -0
- package/lib/memory/selector-alias-map.test.cjs +172 -0
- package/lib/memory/selector-decisions.test.cjs +417 -0
- package/lib/memory/selector-miss.test.cjs +290 -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-coordinator.test.cjs +446 -0
- package/lib/memory/sessionstart-minto-banner.test.cjs +373 -0
- package/lib/memory/skill-activation-router.test.cjs +465 -0
- package/lib/memory/skill-vs-code-drift.test.cjs +257 -0
- package/lib/memory/soft-alias.test.cjs +144 -0
- package/lib/memory/spine-events-correlation.test.cjs +198 -0
- package/lib/memory/stale-copy-scanner.test.cjs +294 -0
- package/lib/memory/stamp-artifact-write.test.cjs +304 -0
- package/lib/memory/state-aware-router.test.cjs +90 -0
- package/lib/memory/statusline-active-room-write.test.cjs +245 -0
- package/lib/memory/statusline-active-room.test.cjs +315 -0
- package/lib/memory/statusline-minto-segment.test.cjs +292 -0
- package/lib/memory/statusline-two-row.test.cjs +338 -0
- package/lib/memory/suggest-next-workflow.test.cjs +176 -0
- package/lib/memory/sync-async-entry-points.test.cjs +204 -0
- package/lib/memory/terminal-capability.test.cjs +155 -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 +648 -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 +282 -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 +787 -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/workflow-layer-e2e.test.cjs +262 -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 +111 -0
- package/lib/render/render-v2.cjs +532 -0
- package/lib/render/render-v2.test.cjs +267 -0
- package/lib/render/render.cjs +65 -0
- package/lib/sessionstart/budget-compressor.cjs +130 -0
- package/lib/sessionstart/contributor-interface.cjs +134 -0
- package/lib/sessionstart/contributor-isolator.cjs +128 -0
- package/lib/sessionstart/precedence-ladder.cjs +47 -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/cockpit-renderer.cjs +443 -0
- package/lib/statusline/cockpit-signals.cjs +312 -0
- package/lib/statusline/cockpit-telemetry.cjs +152 -0
- package/lib/statusline/ctx-window.cjs +135 -0
- package/lib/statusline/governing-thought-truncator.cjs +45 -0
- package/lib/statusline/next-move-cache.cjs +235 -0
- package/lib/statusline/ratification-next.cjs +164 -0
- package/lib/statusline/room-health-cache.cjs +200 -0
- package/lib/statusline/surface-detect.cjs +85 -0
- package/lib/statusline/two-row-renderer.cjs +207 -0
- package/lib/statusline/version-resolver.cjs +81 -0
- package/lib/ui/design-system.cjs +19 -0
- package/lib/update-bootstrap.sh.template +145 -0
- package/lib/vault/frontmatter-schema.cjs +297 -0
- package/lib/vault/room-scanner.cjs +365 -0
- package/lib/vault/wikilink-builder.cjs +231 -0
- package/lib/vault/wikilink-builder.test.cjs +182 -0
- package/lib/wiki/briefing.cjs +193 -0
- package/lib/wiki/editor-dist/wiki-editor.css +1 -0
- package/lib/wiki/editor-dist/wiki-editor.js +1327 -0
- package/lib/wiki/graph-links.cjs +281 -0
- package/lib/wiki/page-renderer.cjs +229 -0
- package/lib/wiki/room-home.cjs +353 -0
- package/lib/wiki/wiki-chat.cjs +81 -0
- package/lib/wiki/wiki-export.cjs +364 -0
- package/lib/wiki/wiki-layout.cjs +1143 -0
- package/lib/wiki/wiki-search.cjs +142 -0
- package/lib/wiki/wiki-server.cjs +748 -0
- package/lib/wiki/wiki-watcher.cjs +105 -0
- package/lib/workflow/ROOM.md +47 -0
- package/lib/workflow/chain-source.cjs +179 -0
- package/lib/workflow/command-resolver.cjs +155 -0
- package/lib/workflow/command-resolver.test.cjs +235 -0
- package/lib/workflow/cross-room-umbilical-closer.cjs +364 -0
- package/lib/workflow/dial-close-reach.cjs +405 -0
- package/lib/workflow/f-selector-ranker.cjs +1148 -0
- package/lib/workflow/f1-pick-consumer.cjs +232 -0
- package/lib/workflow/f3-depth-consumer.cjs +98 -0
- package/lib/workflow/f4-scope-consumer.cjs +112 -0
- package/lib/workflow/f8-consumer.test.cjs +82 -0
- package/lib/workflow/f8-fanout-consumer.cjs +208 -0
- package/lib/workflow/f9-consumer.test.cjs +71 -0
- package/lib/workflow/f9-ordered-consumer.cjs +199 -0
- package/lib/workflow/local-chain-recommender.cjs +330 -0
- package/lib/workflow/memory-cascade-f9-adapter.cjs +273 -0
- package/lib/workflow/memory-governance-closer.cjs +384 -0
- package/lib/workflow/offer-closer.cjs +407 -0
- package/lib/workflow/reach-hedge-ranker.cjs +809 -0
- package/lib/workflow/reach-reject-reader.cjs +372 -0
- package/lib/workflow/reconcile-f9-adapter.cjs +299 -0
- package/lib/workflow/selector-decisions.cjs +478 -0
- package/lib/workflow/session-binding-consumer.cjs +249 -0
- package/npm-shrinkwrap.json +1544 -0
- package/output-styles/destijl.md +67 -0
- package/package.json +22 -4
- package/pipelines/PWS_grading/01-deep-grade.md +48 -0
- package/pipelines/PWS_grading/02-mullins.md +50 -0
- package/pipelines/PWS_grading/03-build-thesis.md +60 -0
- package/pipelines/PWS_grading/04-structure-argument.md +77 -0
- package/pipelines/PWS_grading/CHAIN.md +79 -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 +73 -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 +48 -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 +48 -0
- package/references/brain/causal-directives.md +91 -0
- package/references/brain/causal-enrichment.cypher +165 -0
- package/references/brain/command-triggers-schema.md +15 -0
- package/references/brain/graph-architecture.md +317 -0
- package/references/brain/query-patterns.md +504 -0
- package/references/brain/room-hierarchy-schema.md +224 -0
- package/references/brain/schema.md +86 -0
- package/references/capability-radar/capabilities-index.md +269 -0
- package/references/capability-radar/changelog-cache.md +95 -0
- package/references/causal/causal-schema.md +103 -0
- package/references/design/email-template-standard.md +169 -0
- package/references/design/graph-visualization-standard.md +178 -0
- package/references/design/newsletter-email-template.html +307 -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/extraction-perspectives.md +225 -0
- package/references/meeting/filing-protocol.md +222 -0
- package/references/meeting/knowledge-typing.md +242 -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-scored.md +60 -0
- package/references/methodology/build-thesis.md +237 -0
- package/references/methodology/causal-loop-diagrams.md +65 -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/huji-stage-a-intake.md +246 -0
- package/references/methodology/index.md +34 -0
- package/references/methodology/leadership.md +200 -0
- package/references/methodology/lean-canvas.md +116 -0
- package/references/methodology/leverage-scan-signatures.md +83 -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/rubric-huji.md +160 -0
- package/references/methodology/sapphire-encoding.md +355 -0
- package/references/methodology/scenario-plan.md +190 -0
- package/references/methodology/score-innovation.md +154 -0
- package/references/methodology/skillopt-judge-rubric.md +48 -0
- package/references/methodology/skillopt-queries-rubric.md +60 -0
- package/references/methodology/skillopt-refute-rubric.md +59 -0
- package/references/methodology/skillopt-review-rubric.md +72 -0
- package/references/methodology/skillopt-revise-rubric.md +48 -0
- package/references/methodology/structure-argument.md +158 -0
- package/references/methodology/systems-thinking.md +231 -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/opportunities/tnufa-rubric.md +81 -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/security/agentshield-baseline.json +8 -0
- package/references/security/cve-db.json +220 -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/ROOM.md +55 -0
- package/references/visual/palette.json +54 -0
- package/references/visual/symbol-system.md +151 -0
- package/scripts/189-plurai-gate-check.cjs +88 -0
- package/scripts/198-plurai-gate-check.cjs +118 -0
- package/scripts/198-rollback-rehearsal.cjs +233 -0
- package/scripts/83-scope-injection.test.cjs +648 -0
- package/scripts/PYTHON_GATES.md +78 -0
- package/scripts/__pycache__/compute-hsi.cpython-312.pyc +0 -0
- package/scripts/__pycache__/detect-reverse-salients.cpython-312.pyc +0 -0
- package/scripts/__pycache__/rs-engine.cpython-312.pyc +0 -0
- package/scripts/act-command.cjs +518 -0
- package/scripts/admin-brain-write.cjs +442 -0
- package/scripts/admin-command-gate.cjs +178 -0
- package/scripts/agentshield-scan-cli.cjs +226 -0
- package/scripts/agentshield-sessionstart-scan.cjs +282 -0
- package/scripts/analogy-fitness-report.cjs +266 -0
- package/scripts/analyze-room +1079 -0
- package/scripts/apply-teaching-content.cjs +298 -0
- package/scripts/async-artifact-auto-commit.cjs +485 -0
- package/scripts/audit-active-phase-resolver.cjs +160 -0
- package/scripts/audit-body-shape-coverage.cjs +213 -0
- package/scripts/auto-explore-drain.cjs +274 -0
- package/scripts/auto-explore-fingerprint.cjs +354 -0
- package/scripts/auto-explore-fire.cjs +359 -0
- package/scripts/backfill-correlation-id.cjs +425 -0
- package/scripts/backfill-hitl-shape.cjs +276 -0
- package/scripts/backfill-hitl-shape.test.cjs +307 -0
- package/scripts/backup-modifications +68 -0
- package/scripts/banner +182 -0
- package/scripts/brain-derivation-drain.cjs +291 -0
- package/scripts/brain-derive-command.cjs +846 -0
- package/scripts/brain-normalize-books.cypher +505 -0
- package/scripts/brain-normalize-final.cypher +1355 -0
- package/scripts/brain-normalize-problemtype.cypher +475 -0
- package/scripts/brain-normalize-supplement.cypher +449 -0
- package/scripts/brain-normalize-targeted.cypher +344 -0
- package/scripts/brain-normalize-v194.cypher +61 -0
- package/scripts/brain-normalize.cypher +530 -0
- package/scripts/brain-response-sanitize-hook.cjs +165 -0
- package/scripts/build-brain-census.cjs +957 -0
- package/scripts/build-brain-packet-schema.cjs +225 -0
- package/scripts/build-command-registry.cjs +587 -0
- package/scripts/build-connector-registry.cjs +1331 -0
- package/scripts/build-corpus-stats.cjs +408 -0
- package/scripts/build-dist-bundles.cjs +495 -0
- package/scripts/build-ecosystem-graph.cjs +490 -0
- package/scripts/build-graph +1462 -0
- package/scripts/build-graph-from-sqlite.cjs +97 -0
- package/scripts/build-harness-manifest.cjs +1090 -0
- package/scripts/build-jtbd-nudges +205 -0
- package/scripts/build-new-surface.cjs +805 -0
- package/scripts/build-orchestration-projection.cjs +1221 -0
- package/scripts/build-render-coverage.cjs +637 -0
- package/scripts/build-skill-mirrors.cjs +681 -0
- package/scripts/cache-hitrate-report.cjs +216 -0
- package/scripts/causal-to-graph.cjs +163 -0
- package/scripts/check-abstraction-fixture-neutral.cjs +160 -0
- package/scripts/check-admin-identity.cjs +212 -0
- package/scripts/check-brain-tool-liveness.cjs +502 -0
- package/scripts/check-card-fire.cjs +1809 -0
- package/scripts/check-cirs-declaration.cjs +279 -0
- package/scripts/check-deck-design.cjs +104 -0
- package/scripts/check-dual-graph-health.cjs +645 -0
- package/scripts/check-first-touch-drift.cjs +220 -0
- package/scripts/check-flagship-floor.cjs +391 -0
- package/scripts/check-framework-vocabulary-drift.cjs +563 -0
- package/scripts/check-gate-seam.cjs +178 -0
- package/scripts/check-graph-derive-health.cjs +208 -0
- package/scripts/check-graph-export-typemap.cjs +118 -0
- package/scripts/check-help-coverage.cjs +290 -0
- package/scripts/check-hitl-stages.cjs +219 -0
- package/scripts/check-hook-schema-compatibility.cjs +231 -0
- package/scripts/check-hsi-deps +42 -0
- package/scripts/check-kuzu-reintroduction.cjs +251 -0
- package/scripts/check-onboard +43 -0
- package/scripts/check-onboard-statusline.cjs +363 -0
- package/scripts/check-palette-consistency.cjs +106 -0
- package/scripts/check-pending-ambiguous.cjs +244 -0
- package/scripts/check-pending-breakthrough.cjs +189 -0
- package/scripts/check-pending-breakthrough.test.cjs +166 -0
- package/scripts/check-pending-naming-decision.cjs +97 -0
- package/scripts/check-plugin-path-anchoring.cjs +830 -0
- package/scripts/check-publish-needs.cjs +126 -0
- package/scripts/check-registry-drift.cjs +206 -0
- package/scripts/check-release-payload-ceiling.cjs +269 -0
- package/scripts/check-render-coverage.cjs +558 -0
- package/scripts/check-research-isomorphism.cjs +446 -0
- package/scripts/check-reward-before-investment.cjs +261 -0
- package/scripts/check-room-blueprints.cjs +213 -0
- package/scripts/check-schema-aliases.cjs +532 -0
- package/scripts/check-shape-declaration.cjs +958 -0
- package/scripts/check-shape-declaration.test.cjs +185 -0
- package/scripts/check-skill-spec.cjs +312 -0
- package/scripts/check-skill-vs-code-drift.cjs +178 -0
- package/scripts/check-substrate.cjs +513 -0
- package/scripts/check-tool-honesty.cjs +1601 -0
- package/scripts/check-update +60 -0
- package/scripts/check-version-and-sha.cjs +366 -0
- package/scripts/check-voice-style.cjs +184 -0
- package/scripts/check-worktree-hygiene.cjs +530 -0
- package/scripts/classify-insight +59 -0
- package/scripts/coherence-smoke-test.cjs +489 -0
- package/scripts/collect-cold-install-evidence.cjs +411 -0
- package/scripts/compute-bayesian-surprise.py +175 -0
- package/scripts/compute-blindspot-mass.py +209 -0
- package/scripts/compute-disruption-index.py +211 -0
- package/scripts/compute-element-novelty.py +254 -0
- package/scripts/compute-external-whitespace.py +563 -0
- package/scripts/compute-hsi.py +947 -0
- package/scripts/compute-meetings-intelligence +716 -0
- package/scripts/compute-opportunity-state +17 -0
- package/scripts/compute-state +393 -0
- package/scripts/compute-team +1112 -0
- package/scripts/compute-whitespace-embeddings.py +464 -0
- package/scripts/compute-whitespace-gaps.py +562 -0
- package/scripts/compute_topic_forest.py +684 -0
- package/scripts/consolidate-pinecone.py +265 -0
- package/scripts/context-monitor +943 -0
- package/scripts/create-speaker-profile +311 -0
- package/scripts/cross-room-detect.cjs +195 -0
- package/scripts/csv-to-idea-graph.cjs +755 -0
- package/scripts/ctxl-eval.cjs +846 -0
- package/scripts/curation-132-03-dedup-held-rename.cjs +395 -0
- package/scripts/curation-132-05-pseudonymize.cjs +189 -0
- package/scripts/derive-verb-reach-affinity.cjs +507 -0
- package/scripts/detect-reverse-salients.py +242 -0
- package/scripts/diagnostics-command.cjs +345 -0
- package/scripts/dial-memory-refresh-command.cjs +147 -0
- package/scripts/discover-analogy-whitespace.py +433 -0
- package/scripts/discover-hsi-whitespace.py +352 -0
- package/scripts/discover-rs-whitespace.py +327 -0
- package/scripts/discovery-cycle.cjs +625 -0
- package/scripts/disposition-render-v2.cjs +229 -0
- package/scripts/doctor-preflight-format.cjs +101 -0
- package/scripts/doctor.cjs +4327 -0
- package/scripts/dogfood-bridge/append-to-queue.sh +59 -0
- package/scripts/dogfood-bridge/path-filter.cjs +86 -0
- package/scripts/dogfood-derive.cjs +158 -0
- package/scripts/dogfood-emit.cjs +126 -0
- package/scripts/empathy-observation-emit.cjs +108 -0
- package/scripts/enrichment-queue-append.cjs +157 -0
- package/scripts/ensure-brain-baseline.cjs +117 -0
- package/scripts/entity-extract.cjs +1135 -0
- package/scripts/eureka-command.cjs +687 -0
- package/scripts/eureka-critic-run.cjs +662 -0
- package/scripts/eureka-portfolio-report.cjs +2038 -0
- package/scripts/eureka-room-report.cjs +419 -0
- package/scripts/explain-decision-command.cjs +499 -0
- package/scripts/export-pinecone-embeddings.cjs +516 -0
- package/scripts/extract-room-intelligence.cjs +714 -0
- package/scripts/fetch-brain-baseline.cjs +190 -0
- package/scripts/fetch-brain-baseline.py +360 -0
- package/scripts/feynman-minto-guardian.cjs +672 -0
- package/scripts/feynman-timeline-refresh-command.cjs +270 -0
- package/scripts/file-asset +253 -0
- package/scripts/fire-sensor-event.cjs +83 -0
- package/scripts/first-install-router.cjs +968 -0
- package/scripts/frontmatter-schema-validator.cjs +339 -0
- package/scripts/fts-index-drain.cjs +221 -0
- package/scripts/generate-chat-embed.cjs +179 -0
- package/scripts/generate-deck.cjs +322 -0
- package/scripts/generate-export.cjs +474 -0
- package/scripts/generate-hub.cjs +2553 -0
- package/scripts/generate-lobby.cjs +718 -0
- package/scripts/generate-presentation.cjs +988 -0
- package/scripts/generate-presentation.test.cjs +405 -0
- package/scripts/generate-section-intelligence.cjs +330 -0
- package/scripts/generate-snapshot.cjs +1410 -0
- package/scripts/generate-standalone +159 -0
- package/scripts/git-ops +211 -0
- package/scripts/graph-heal-pipeline.cjs +321 -0
- package/scripts/gsd-artifact-graph-hook.cjs +219 -0
- package/scripts/gsd-graph-derive-drain.cjs +571 -0
- package/scripts/gsd-graph-derive-sweep.cjs +195 -0
- package/scripts/heal-command.cjs +1365 -0
- package/scripts/hedge-refit-pipeline.cjs +207 -0
- package/scripts/help-renderer.cjs +303 -0
- package/scripts/hmi-compliance-poll.cjs +451 -0
- package/scripts/hmi-status-command.cjs +510 -0
- package/scripts/hooked-rescore-117.cjs +224 -0
- package/scripts/hooks/pre-commit +533 -0
- package/scripts/hooks/pre-commit-room-minto-guard.cmd +43 -0
- package/scripts/hooks/pre-commit-room-minto-guard.sh +533 -0
- package/scripts/hsi-to-graph.cjs +194 -0
- package/scripts/huji-batch.cjs +821 -0
- package/scripts/huji-eval.cjs +1158 -0
- package/scripts/huji-intake.cjs +563 -0
- package/scripts/huji-pin-smoketest.cjs +454 -0
- package/scripts/huji-run-one-async.cjs +305 -0
- package/scripts/huji-run-one.cjs +671 -0
- package/scripts/install-pre-commit.sh +113 -0
- package/scripts/intent-classifier +106 -0
- package/scripts/intent-classifier.cjs +3620 -0
- package/scripts/interpret-whitespace.cjs +691 -0
- package/scripts/jtbd-command.cjs +810 -0
- package/scripts/jtbd-update.cjs +299 -0
- package/scripts/label-topic-forest.cjs +667 -0
- package/scripts/learn-from-usage +168 -0
- package/scripts/lib/__pycache__/ensure_ml_deps.cpython-312.pyc +0 -0
- package/scripts/lib/ensure_ml_deps.py +97 -0
- package/scripts/load-embeddings-into-neo4j.cjs +569 -0
- package/scripts/memory-artifact-graph-hook.cjs +191 -0
- package/scripts/memory-command.cjs +687 -0
- package/scripts/memory-completion-detector.cjs +217 -0
- package/scripts/memory-lifecycle.cjs +620 -0
- package/scripts/memory-resume-nudge.cjs +233 -0
- package/scripts/methodology-ingest-local.sh +36 -0
- package/scripts/migrate-brain-mcp-from-http-to-stdio.cjs +190 -0
- package/scripts/migrate-brain-mcp-from-http-to-stdio.test.cjs +242 -0
- package/scripts/migrate-hats-to-roomdb.cjs +217 -0
- package/scripts/migrate-lazygraph.cjs +250 -0
- package/scripts/migrate-minto-schema-v88.cjs +296 -0
- package/scripts/migrate-plugin-root-refs.cjs +168 -0
- package/scripts/migrate-room-sections-v275.cjs +556 -0
- package/scripts/migrate-rooms +417 -0
- package/scripts/migrate-skill-frontmatter.cjs +472 -0
- package/scripts/migrate-stale-user-settings.cjs +296 -0
- package/scripts/migrate-telemetry-v1.cjs +384 -0
- package/scripts/migrate-telemetry-v1.test.cjs +356 -0
- package/scripts/minto-debouncer.cjs +428 -0
- package/scripts/mos-status.cjs +622 -0
- package/scripts/mva-detect.cjs +229 -0
- package/scripts/mva-run.cjs +36 -0
- package/scripts/on-agent-complete +163 -0
- package/scripts/on-cwd-changed +149 -0
- package/scripts/on-file-changed +68 -0
- package/scripts/on-stop +617 -0
- package/scripts/on-task-complete +194 -0
- package/scripts/operator-command.cjs +858 -0
- package/scripts/operator-update.cjs +308 -0
- package/scripts/part8-egress-guard-hook.cjs +229 -0
- package/scripts/pipeline-command.cjs +271 -0
- package/scripts/post-compact +383 -0
- package/scripts/post-update-activation.cjs +339 -0
- package/scripts/post-write +283 -0
- package/scripts/power-demo-prompt.md +621 -0
- package/scripts/pre-compact +273 -0
- package/scripts/preflight-auto-explore.cjs +314 -0
- package/scripts/preflight-doctor.cjs +225 -0
- package/scripts/preflight-release-drift.cjs +168 -0
- package/scripts/preflight-tension-surface.cjs +414 -0
- package/scripts/probe-brain-contract.cjs +502 -0
- package/scripts/publish-ops +346 -0
- package/scripts/query-efficiency-telemetry.cjs +364 -0
- package/scripts/query-semantic-scholar.cjs +545 -0
- package/scripts/reapply-modifications +49 -0
- package/scripts/reassign-primary.cjs +125 -0
- package/scripts/recompile-room-references.cjs +601 -0
- package/scripts/release-beta-preflight.sh +69 -0
- package/scripts/render-pdf +588 -0
- package/scripts/render-viz +190 -0
- package/scripts/research-speaker +239 -0
- package/scripts/resolve-room +204 -0
- package/scripts/restore-post-compact-context.cjs +320 -0
- package/scripts/room-auto-create-nudge.cjs +136 -0
- package/scripts/room-naming-selector.cjs +201 -0
- package/scripts/room-registry +767 -0
- package/scripts/rs-discovery-engine.cjs +725 -0
- package/scripts/rs-engine.py +2073 -0
- package/scripts/rs-experts-command.cjs +300 -0
- package/scripts/rs-explain-command.cjs +323 -0
- package/scripts/rs-fetch-command.cjs +170 -0
- package/scripts/rs-thesis-command.cjs +203 -0
- package/scripts/rs-vector-bridge.cjs +410 -0
- package/scripts/run-harness.cjs +890 -0
- package/scripts/scout-cadence-guard.cjs +323 -0
- package/scripts/scout-cadence-runner.cjs +509 -0
- package/scripts/scout-telemetry-aggregator.cjs +268 -0
- package/scripts/sealed-walker.py +96 -0
- package/scripts/seed-brain-commands.cjs +324 -0
- package/scripts/self-update +105 -0
- package/scripts/sentinel-deadline-monitor +241 -0
- package/scripts/sentinel-health-check +198 -0
- package/scripts/sentinel-snapshot +42 -0
- package/scripts/serve-dashboard +103 -0
- package/scripts/serve-dashboard-live +932 -0
- package/scripts/serve-presentation +97 -0
- package/scripts/serve-wiki +90 -0
- package/scripts/session-end-presence.cjs +79 -0
- package/scripts/session-start +1943 -0
- package/scripts/sessionstart-coordinator.cjs +249 -0
- package/scripts/sessionstart-npm-reconcile.cjs +111 -0
- package/scripts/sessionstart-post-update-preflight.cjs +303 -0
- package/scripts/sessionstart-reference-now-seed.cjs +137 -0
- package/scripts/setup-hooks.sh +112 -0
- package/scripts/skillopt-codereview.cjs +830 -0
- package/scripts/skillopt-eval.cjs +519 -0
- package/scripts/skillopt-funnel.cjs +1076 -0
- package/scripts/skillopt-genqueries.cjs +571 -0
- package/scripts/skillopt-inventory.cjs +319 -0
- package/scripts/skillopt-merge.cjs +656 -0
- package/scripts/skillopt-triggerloop.cjs +1126 -0
- package/scripts/soft-alias-runner.cjs +116 -0
- package/scripts/stamp-artifact-write.cjs +276 -0
- package/scripts/stamp-firing-block.cjs +325 -0
- package/scripts/state-write.cjs +97 -0
- package/scripts/statusline-fallback-echo.cjs +297 -0
- package/scripts/statusline-mos +116 -0
- package/scripts/statusline-mos-dispatch +127 -0
- package/scripts/suggest-next-command.cjs +416 -0
- package/scripts/sweep-skill-descriptions.cjs +263 -0
- package/scripts/sync-rooms-graph +264 -0
- package/scripts/telemetry-command-invocation.cjs +120 -0
- package/scripts/test-doctor-recovery.cjs +242 -0
- package/scripts/test-fresh-install.md +140 -0
- package/scripts/track-analytics +156 -0
- package/scripts/transcribe-audio +148 -0
- package/scripts/transcript-ingest.cjs +225 -0
- package/scripts/update-icm-index +153 -0
- package/scripts/v182-brain-optimize.cypher +1191 -0
- package/scripts/validate-model-profiles +93 -0
- package/scripts/vault-content-reformatter.cjs +581 -0
- package/scripts/vault-export-orchestrator.cjs +400 -0
- package/scripts/vault-footer-injector.cjs +315 -0
- package/scripts/vault-import.cjs +839 -0
- package/scripts/vault-integration-test.cjs +318 -0
- package/scripts/vault-regenerate-all.cjs +216 -0
- package/scripts/vault-regenerate-all.test.cjs +138 -0
- package/scripts/vault-rules-generator.cjs +220 -0
- package/scripts/vault-section-minto-generator.cjs +1642 -0
- package/scripts/vault-section-minto-generator.integration.test.cjs +576 -0
- package/scripts/vault-section-minto-generator.test.cjs +291 -0
- package/scripts/vault-section-state-generator.cjs +385 -0
- package/scripts/vault-welcome-generator.cjs +403 -0
- package/scripts/vault-wikilink-injector.cjs +449 -0
- package/scripts/verify-phase-132.cjs +338 -0
- package/scripts/verify-release +744 -0
- package/scripts/whitespace-command.cjs +831 -0
- package/scripts/whitespace-to-brain.cjs +384 -0
- package/scripts/whitespace-to-graph.cjs +220 -0
- package/scripts/wikilink-batch.cjs +102 -0
- package/scripts/wikilink-file.cjs +139 -0
- package/scripts/write-bridge-artifacts.cjs +140 -0
- package/scripts/write-scope-check +12 -0
- package/scripts/write-scope-check.cjs +461 -0
- package/scripts/write-whitespace-sections.cjs +483 -0
- package/settings.json +7 -0
- package/skills/act/SKILL.md +523 -0
- package/skills/admin/SKILL.md +437 -0
- package/skills/agentshield/SKILL.md +50 -0
- package/skills/analyze-needs/SKILL.md +74 -0
- package/skills/analyze-systems/SKILL.md +69 -0
- package/skills/analyze-timing/SKILL.md +94 -0
- package/skills/auto-explore/SKILL.md +84 -0
- package/skills/beautiful-question/SKILL.md +72 -0
- package/skills/bono/SKILL.md +146 -0
- package/skills/brain-connector/SKILL.md +206 -0
- package/skills/brain-derive/SKILL.md +140 -0
- package/skills/build-knowledge/SKILL.md +118 -0
- package/skills/build-thesis/SKILL.md +90 -0
- package/skills/causal/SKILL.md +265 -0
- package/skills/challenge-assumptions/SKILL.md +74 -0
- package/skills/client-discovery-interview/SKILL.md +94 -0
- package/skills/client-discovery-interview/discovery-scaffold.json +41 -0
- package/skills/client-discovery-interview/question-bank.md +149 -0
- package/skills/compare-ventures/SKILL.md +113 -0
- package/skills/context-engine/SKILL.md +169 -0
- package/skills/conversation-mode/SKILL.md +189 -0
- package/skills/correct-reference-now/SKILL.md +86 -0
- package/skills/dashboard/SKILL.md +142 -0
- package/skills/deck/SKILL.md +113 -0
- package/skills/deep-grade/SKILL.md +210 -0
- package/skills/diagnose/SKILL.md +128 -0
- package/skills/diagnostics/SKILL.md +193 -0
- package/skills/dial-memory-refresh/SKILL.md +116 -0
- package/skills/diffusion/SKILL.md +125 -0
- package/skills/discover/SKILL.md +216 -0
- package/skills/doctor/SKILL.md +269 -0
- package/skills/dogfood-flush/SKILL.md +133 -0
- package/skills/dominant-designs/SKILL.md +72 -0
- package/skills/eureka/SKILL.md +313 -0
- package/skills/explain-decision/SKILL.md +138 -0
- package/skills/explore-domains/SKILL.md +74 -0
- package/skills/explore-futures/SKILL.md +64 -0
- package/skills/explore-opportunity/SKILL.md +168 -0
- package/skills/explore-trends/SKILL.md +74 -0
- package/skills/export/SKILL.md +126 -0
- package/skills/feynman-timeline-refresh/SKILL.md +105 -0
- package/skills/file-meeting/SKILL.md +1190 -0
- package/skills/find-analogies/SKILL.md +360 -0
- package/skills/find-bottlenecks/SKILL.md +104 -0
- package/skills/find-connections/SKILL.md +108 -0
- package/skills/funding/SKILL.md +110 -0
- package/skills/futures/SKILL.md +124 -0
- package/skills/grade/SKILL.md +252 -0
- package/skills/grade-grant/SKILL.md +293 -0
- package/skills/graph/SKILL.md +216 -0
- package/skills/hat-briefing/SKILL.md +160 -0
- package/skills/heal/SKILL.md +69 -0
- package/skills/help/SKILL.md +172 -0
- package/skills/hmi-status/SKILL.md +73 -0
- package/skills/ignite/SKILL.md +225 -0
- package/skills/ingest-methodology/SKILL.md +125 -0
- package/skills/intel-pipeline/SKILL.md +128 -0
- package/skills/intelligence-orchestrator/SKILL.md +262 -0
- package/skills/jtbd/SKILL.md +261 -0
- package/skills/larry-personality/SKILL.md +571 -0
- package/skills/larry-personality/framework-chains.md +92 -0
- package/skills/larry-personality/mode-engine.md +185 -0
- package/skills/leadership/SKILL.md +109 -0
- package/skills/lean-canvas/SKILL.md +70 -0
- package/skills/macro-trends/SKILL.md +84 -0
- package/skills/map-unknowns/SKILL.md +72 -0
- package/skills/memory/SKILL.md +212 -0
- package/skills/memory-cortex-reach/SKILL.md +80 -0
- package/skills/models/SKILL.md +197 -0
- package/skills/mos/SKILL.md +160 -0
- package/skills/mos-deck-engine/SKILL.md +329 -0
- package/skills/mos-reason/SKILL.md +484 -0
- package/skills/mullins/SKILL.md +151 -0
- package/skills/mullins-scaffold/SKILL.md +132 -0
- package/skills/mullins-scaffold/scaffold.json +223 -0
- package/skills/mva-brief/SKILL.md +87 -0
- package/skills/mva-option/SKILL.md +120 -0
- package/skills/mva-pipeline/SKILL.md +158 -0
- package/skills/mva-report/SKILL.md +79 -0
- package/skills/new-project/SKILL.md +629 -0
- package/skills/new-surface/SKILL.md +112 -0
- package/skills/onboard/SKILL.md +485 -0
- package/skills/operator/SKILL.md +167 -0
- package/skills/opportunities/SKILL.md +171 -0
- package/skills/organize/SKILL.md +69 -0
- package/skills/persona/SKILL.md +272 -0
- package/skills/pipeline/SKILL.md +164 -0
- package/skills/present/SKILL.md +123 -0
- package/skills/publish/SKILL.md +224 -0
- package/skills/pws-brain/SKILL.md +152 -0
- package/skills/pws-methodology/SKILL.md +92 -0
- package/skills/qualify-opportunity/SKILL.md +111 -0
- package/skills/query/SKILL.md +68 -0
- package/skills/radar/SKILL.md +106 -0
- package/skills/reanalyze/SKILL.md +122 -0
- package/skills/research/SKILL.md +462 -0
- package/skills/room/SKILL.md +381 -0
- package/skills/room-passive/SKILL.md +174 -0
- package/skills/room-proactive/SKILL.md +344 -0
- package/skills/rooms/SKILL.md +678 -0
- package/skills/root-cause/SKILL.md +73 -0
- package/skills/rs-experts/SKILL.md +151 -0
- package/skills/rs-explain/SKILL.md +130 -0
- package/skills/rs-fetch/SKILL.md +115 -0
- package/skills/rs-thesis/SKILL.md +129 -0
- package/skills/scenario-plan/SKILL.md +76 -0
- package/skills/scheduled-tasks/SKILL.md +301 -0
- package/skills/score-innovation/SKILL.md +74 -0
- package/skills/scout/SKILL.md +370 -0
- package/skills/setup/SKILL.md +654 -0
- package/skills/show/SKILL.md +68 -0
- package/skills/skill/SKILL.md +104 -0
- package/skills/snapshot/SKILL.md +178 -0
- package/skills/speakers/SKILL.md +116 -0
- package/skills/splash/SKILL.md +54 -0
- package/skills/stance/SKILL.md +89 -0
- package/skills/status/SKILL.md +107 -0
- package/skills/structure-argument/SKILL.md +78 -0
- package/skills/suggest-next/SKILL.md +137 -0
- package/skills/systems-thinking/SKILL.md +220 -0
- package/skills/think-hats/SKILL.md +82 -0
- package/skills/trending-to-absurd/SKILL.md +100 -0
- package/skills/ui-system/SKILL.md +474 -0
- package/skills/ui-system/design-system/M-OS-DESIGN-SYSTEM.md +273 -0
- package/skills/ui-system/design-system/SPEC.md +72 -0
- package/skills/ui-system/design-system/image-prompt-style.md +29 -0
- package/skills/ui-system/design-system/mos-design-system.css +240 -0
- package/skills/ui-system/rules/design-system.md +60 -0
- package/skills/ui-system/rules/dual-palette.md +156 -0
- package/skills/ui-system/rules/glyph-disambiguation.md +171 -0
- package/skills/ui-system/rules/shape-f-zero-and-six.md +169 -0
- package/skills/update/SKILL.md +254 -0
- package/skills/user-needs/SKILL.md +73 -0
- package/skills/validate/SKILL.md +73 -0
- package/skills/value-proposition/SKILL.md +141 -0
- package/skills/vault/SKILL.md +326 -0
- package/skills/visualize/SKILL.md +69 -0
- package/skills/whitespace/SKILL.md +539 -0
- package/skills/wiki/SKILL.md +94 -0
- package/templates/_base.html +20 -0
- package/templates/chat-panel.html +205 -0
- package/templates/constellation-chat-hooks.js +89 -0
- package/templates/constellation.html +1272 -0
- package/templates/destijl-base.css +268 -0
- package/templates/discovery/discovery-brief-template.md +97 -0
- package/templates/due-diligence.html +49 -0
- package/templates/executive-summary.html +40 -0
- package/templates/icm/CLAUDE.md +31 -0
- package/templates/icm/GROUP-CLAUDE.md +33 -0
- package/templates/icm/INDEX.md +26 -0
- package/templates/import/stage-contracts/01-ingest.md +34 -0
- package/templates/import/stage-contracts/02-classify.md +48 -0
- package/templates/import/stage-contracts/03-route.md +42 -0
- package/templates/import/stage-contracts/04-enrich.md +40 -0
- package/templates/investment-thesis.html +25 -0
- package/templates/meeting-report.html +361 -0
- package/templates/presentation/dashboard.html +1150 -0
- package/templates/presentation/deck.html +540 -0
- package/templates/presentation/diagrams.html +437 -0
- package/templates/presentation/graph.html +391 -0
- package/templates/presentation/insights.html +548 -0
- package/templates/presentation/wiki.html +533 -0
- package/templates/profile.html +136 -0
- package/templates/room-context/last-session.md +56 -0
- package/templates/room-context/methodology-history.md +28 -0
- package/templates/room-context/rejection-log.md +25 -0
- package/templates/room-context/weekly-digest.md +54 -0
- package/templates/room-skeleton/MINTO.md.tmpl +19 -0
- package/templates/room-skeleton/ROOM.md.identity.tmpl +13 -0
- package/templates/room-skeleton/ROOM.md.section.tmpl +33 -0
- package/templates/room-skeleton/STATE.md.tmpl +33 -0
- package/templates/room-skeleton/USER.md.tmpl +23 -0
- package/templates/room-skeleton/references/.gitkeep +0 -0
- package/templates/room-skeleton/references/SECTION-SCHEMA.md +213 -0
- package/templates/room-skeleton/references/SUB-SCHEMAS.md +91 -0
- package/templates/room-skeleton/section-contracts/.gitkeep +0 -0
- package/templates/room-skeleton/section-contracts/business-model.md +32 -0
- package/templates/room-skeleton/section-contracts/competitive-analysis.md +33 -0
- package/templates/room-skeleton/section-contracts/financial-model.md +30 -0
- package/templates/room-skeleton/section-contracts/funding.md +41 -0
- package/templates/room-skeleton/section-contracts/legal-ip.md +30 -0
- package/templates/room-skeleton/section-contracts/market-analysis.md +32 -0
- package/templates/room-skeleton/section-contracts/opportunity-bank.md +39 -0
- package/templates/room-skeleton/section-contracts/problem-definition.md +32 -0
- package/templates/room-skeleton/section-contracts/solution-design.md +36 -0
- package/templates/room-skeleton/section-contracts/strategy.md +35 -0
- package/templates/room-skeleton/section-contracts/team-execution.md +36 -0
- package/templates/shared.css +427 -0
- package/templates/showcase/blueprint.html +432 -0
- package/templates/showcase/library.html +571 -0
- package/templates/showcase/narrative.html +361 -0
- package/templates/showcase/overview.html +468 -0
- package/templates/showcase/synthesis.html +473 -0
- package/templates/signature-footer.html +34 -0
|
@@ -0,0 +1,943 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// MindrianOS Statusline - ships with the plugin
|
|
3
|
+
// Shows: project name │ room section context │ venture stage │ gaps │ context window
|
|
4
|
+
// Reads JSON from stdin (Claude Code statusline API)
|
|
5
|
+
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const visual = require('../lib/core/visual-ops.cjs');
|
|
11
|
+
|
|
12
|
+
// Phase 88.1-04: statusline MINTO segment helpers. LOCAL-only per Canon
|
|
13
|
+
// Part 8. Lazy-required inside the resolver so a missing module (unlikely
|
|
14
|
+
// in a properly-installed plugin) leaves the pre-88 statusline unchanged.
|
|
15
|
+
let statuslineCache = null;
|
|
16
|
+
let folderMemory = null;
|
|
17
|
+
try {
|
|
18
|
+
statuslineCache = require('../lib/core/statusline-cache.cjs');
|
|
19
|
+
} catch (_e) { /* graceful fallback, pre-88 output */ }
|
|
20
|
+
try {
|
|
21
|
+
folderMemory = require('../lib/core/folder-memory.cjs');
|
|
22
|
+
} catch (_e) { /* graceful fallback, pre-88 output */ }
|
|
23
|
+
|
|
24
|
+
// Phase 91-06: Larry dial helper (pure resolver + formatter). LOCAL-only
|
|
25
|
+
// per Canon Part 8. Lazy-required so a missing module on a degraded
|
|
26
|
+
// install leaves the pre-91 statusline byte-identical.
|
|
27
|
+
let navDial = null;
|
|
28
|
+
try {
|
|
29
|
+
navDial = require('../lib/core/nav-dial.cjs');
|
|
30
|
+
} catch (_e) { /* graceful fallback, pre-91 output */ }
|
|
31
|
+
|
|
32
|
+
const os = require('os');
|
|
33
|
+
const crypto = require('crypto');
|
|
34
|
+
|
|
35
|
+
// Map room section name to short exploration-stage label plus thematic
|
|
36
|
+
// emoji. Derived from the most recently modified section so the user
|
|
37
|
+
// sees what area they are actively exploring at a glance. Unknown
|
|
38
|
+
// sections map to uppercased hyphen-stripped name with a generic marker.
|
|
39
|
+
// Emoji inclusion per user directive 2026-04-14 overrides the repo-wide
|
|
40
|
+
// no-emoji rule for the statusline surface specifically. See rule doc
|
|
41
|
+
// in ui-system skill for the carve-out.
|
|
42
|
+
const EXPLORATION_LABELS = {
|
|
43
|
+
'problem-definition': { label: 'PROBLEM', emoji: '\u{1F3AF}' }, // target
|
|
44
|
+
'solution-design': { label: 'SOLUTION', emoji: '\u{1F4A1}' }, // lightbulb
|
|
45
|
+
'business-model': { label: 'BUSINESSCASE', emoji: '\u{1F4B0}' }, // money bag
|
|
46
|
+
'market-analysis': { label: 'MARKET', emoji: '\u{1F4CA}' }, // bar chart
|
|
47
|
+
'competitive-analysis': { label: 'COMPETITION', emoji: '\u{2694}\u{FE0F}' }, // crossed swords
|
|
48
|
+
'financial-model': { label: 'FINANCE', emoji: '\u{1F4B5}' }, // dollar banknote
|
|
49
|
+
'legal-ip': { label: 'LEGAL', emoji: '\u{2696}\u{FE0F}' }, // scales of justice
|
|
50
|
+
'team-execution': { label: 'TEAM', emoji: '\u{1F465}' }, // busts in silhouette
|
|
51
|
+
'team': { label: 'TEAM', emoji: '\u{1F465}' },
|
|
52
|
+
'assets': { label: 'ASSETS', emoji: '\u{1F3A8}' }, // artist palette
|
|
53
|
+
'exports': { label: 'EXPORTS', emoji: '\u{1F4E4}' }, // outbox tray
|
|
54
|
+
'meetings': { label: 'MEETINGS', emoji: '\u{1F5E3}\u{FE0F}' }, // speaking head
|
|
55
|
+
'opportunity-bank': { label: 'OPPORTUNITIES', emoji: '\u{1F381}' }, // wrapped gift
|
|
56
|
+
'funding': { label: 'FUNDING', emoji: '\u{1F48E}' } // gem stone
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Detect whether the Brain MCP is configured for this user. Returns
|
|
61
|
+
* 'connected', 'disconnected', or 'unknown'. The detection is a proxy,
|
|
62
|
+
* not a live health check: we look for the MINDRIAN_BRAIN_KEY env var
|
|
63
|
+
* (which the plugin's brain-connector skill expects) and optionally for
|
|
64
|
+
* a brain health bridge file if it exists. A real liveness check would
|
|
65
|
+
* require an MCP round-trip, which the statusline cannot do synchronously.
|
|
66
|
+
* @returns {'connected'|'disconnected'|'unknown'}
|
|
67
|
+
*/
|
|
68
|
+
function detectBrainStatus() {
|
|
69
|
+
try {
|
|
70
|
+
if (process.env.MINDRIAN_BRAIN_KEY && process.env.MINDRIAN_BRAIN_KEY.length > 0) {
|
|
71
|
+
const health = path.join(os.homedir(), '.mindrian', 'bridge', 'brain-health.json');
|
|
72
|
+
if (fs.existsSync(health)) {
|
|
73
|
+
try {
|
|
74
|
+
const h = JSON.parse(fs.readFileSync(health, 'utf8'));
|
|
75
|
+
if (h && h.status === 'ok') return 'connected';
|
|
76
|
+
if (h && h.status === 'error') return 'disconnected';
|
|
77
|
+
} catch (e) {}
|
|
78
|
+
}
|
|
79
|
+
return 'connected';
|
|
80
|
+
}
|
|
81
|
+
} catch (e) {}
|
|
82
|
+
return 'disconnected';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Read the current MindrianOS plugin version from .claude-plugin/plugin.json.
|
|
87
|
+
* Tries MINDRIAN_OS_ROOT env var first (set by settings.json), then falls
|
|
88
|
+
* back to the script's parent directory. Returns empty string on any failure.
|
|
89
|
+
* @returns {string} Version string like "1.10.4" or empty string
|
|
90
|
+
*/
|
|
91
|
+
function readPluginVersion() {
|
|
92
|
+
// Prefer __dirname-relative path (the plugin.json that ships with
|
|
93
|
+
// whichever copy of the script is actually running). Fall back to
|
|
94
|
+
// MINDRIAN_OS_ROOT env var only if the dirname path does not resolve.
|
|
95
|
+
// This matters in dev: the dev workspace may be ahead of the installed
|
|
96
|
+
// plugin cache that the env var points at.
|
|
97
|
+
const candidates = [
|
|
98
|
+
path.resolve(__dirname, '..'),
|
|
99
|
+
process.env.MINDRIAN_OS_ROOT
|
|
100
|
+
].filter(Boolean);
|
|
101
|
+
for (const root of candidates) {
|
|
102
|
+
try {
|
|
103
|
+
const pluginJson = path.join(root, '.claude-plugin', 'plugin.json');
|
|
104
|
+
if (fs.existsSync(pluginJson)) {
|
|
105
|
+
const data = JSON.parse(fs.readFileSync(pluginJson, 'utf8'));
|
|
106
|
+
if (data && data.version) return data.version;
|
|
107
|
+
}
|
|
108
|
+
} catch (e) {}
|
|
109
|
+
}
|
|
110
|
+
return '';
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Build a high-attention flashing UPDATE banner with per-letter rainbow
|
|
115
|
+
* coloring, bold, ANSI blink, and a dark background highlight. Used when
|
|
116
|
+
* the update-check bridge file reports UPDATE_AVAILABLE. Terminals that
|
|
117
|
+
* ignore blink still render the per-letter bold rainbow on a highlighted
|
|
118
|
+
* background, which is visually distinctive on its own.
|
|
119
|
+
* @returns {string} ANSI-wrapped UPDATE banner
|
|
120
|
+
*/
|
|
121
|
+
function flashingUpdate() {
|
|
122
|
+
const colors = [
|
|
123
|
+
'\x1b[38;2;255;80;80m',
|
|
124
|
+
'\x1b[38;2;255;160;60m',
|
|
125
|
+
'\x1b[38;2;255;230;80m',
|
|
126
|
+
'\x1b[38;2;80;255;120m',
|
|
127
|
+
'\x1b[38;2;80;200;255m',
|
|
128
|
+
'\x1b[38;2;200;120;255m'
|
|
129
|
+
];
|
|
130
|
+
const letters = 'UPDATE'.split('');
|
|
131
|
+
const blink = '\x1b[5m';
|
|
132
|
+
const bold = '\x1b[1m';
|
|
133
|
+
const bg = '\x1b[48;2;20;20;40m';
|
|
134
|
+
const reset = '\x1b[0m';
|
|
135
|
+
let out = `${bg} `;
|
|
136
|
+
for (let i = 0; i < letters.length; i++) {
|
|
137
|
+
out += `${blink}${bold}${bg}${colors[i % colors.length]}${letters[i]}`;
|
|
138
|
+
}
|
|
139
|
+
out += `${bg} ${reset}`;
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Detect the active GSD workflow phase from .planning/ state.
|
|
145
|
+
* Prefers an explicit current-phase marker; falls back to the newest phase
|
|
146
|
+
* directory under .planning/phases/.
|
|
147
|
+
* @param {string} dir - Workspace current directory
|
|
148
|
+
* @returns {string} Phase label like "Phase 81" or empty string
|
|
149
|
+
*/
|
|
150
|
+
function detectActiveWorkflow(dir) {
|
|
151
|
+
try {
|
|
152
|
+
const statePath = path.join(dir, '.planning', 'STATE.md');
|
|
153
|
+
if (fs.existsSync(statePath)) {
|
|
154
|
+
const content = fs.readFileSync(statePath, 'utf8');
|
|
155
|
+
const phaseMatch = content.match(/current[_\s-]*phase[:\s]+(\d+(?:\.\d+)?)/i) ||
|
|
156
|
+
content.match(/active[_\s-]*phase[:\s]+(\d+(?:\.\d+)?)/i);
|
|
157
|
+
if (phaseMatch) return 'Phase ' + phaseMatch[1];
|
|
158
|
+
}
|
|
159
|
+
const phasesDir = path.join(dir, '.planning', 'phases');
|
|
160
|
+
if (fs.existsSync(phasesDir)) {
|
|
161
|
+
// Pick the phase directory with the most recently touched content.
|
|
162
|
+
// "Newest mtime" is a better proxy for "active phase" than "highest
|
|
163
|
+
// number" because scaffolded-but-unexecuted future phases can leapfrog
|
|
164
|
+
// the phase you are actually working on.
|
|
165
|
+
const phases = fs.readdirSync(phasesDir, { withFileTypes: true })
|
|
166
|
+
.filter(d => d.isDirectory() && /^\d+/.test(d.name))
|
|
167
|
+
.map(d => {
|
|
168
|
+
const p = path.join(phasesDir, d.name);
|
|
169
|
+
let newest = 0;
|
|
170
|
+
try {
|
|
171
|
+
const entries = fs.readdirSync(p);
|
|
172
|
+
for (const e of entries) {
|
|
173
|
+
try {
|
|
174
|
+
const st = fs.statSync(path.join(p, e));
|
|
175
|
+
if (st.mtimeMs > newest) newest = st.mtimeMs;
|
|
176
|
+
} catch (_) {}
|
|
177
|
+
}
|
|
178
|
+
if (newest === 0) newest = fs.statSync(p).mtimeMs;
|
|
179
|
+
} catch (_) {
|
|
180
|
+
newest = 0;
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
name: d.name,
|
|
184
|
+
num: parseFloat(d.name.match(/^(\d+(?:\.\d+)?)/)[1]),
|
|
185
|
+
mtime: newest
|
|
186
|
+
};
|
|
187
|
+
})
|
|
188
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
189
|
+
if (phases.length > 0) {
|
|
190
|
+
return 'Phase ' + phases[0].num;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
} catch (e) {}
|
|
194
|
+
return '';
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Phase 88.1-04 -- resolve the active section path inside a room. Tries in
|
|
199
|
+
* order:
|
|
200
|
+
* 1. roomDir/.mindrian/active-section.json (written by Phase 84 smart-
|
|
201
|
+
* notebook when it detects a per-section focus). Must carry a
|
|
202
|
+
* "section" string field resolvable to an existing directory.
|
|
203
|
+
* 2. Most-recently-modified direct subdirectory of roomDir that contains
|
|
204
|
+
* a MINTO.md file. This matches the "currentSection" heuristic the
|
|
205
|
+
* rest of the statusline already uses.
|
|
206
|
+
* 3. null -> caller skips the MINTO segment entirely.
|
|
207
|
+
*
|
|
208
|
+
* The function is defensive: every fs op is try/catch, every return path
|
|
209
|
+
* yields either a valid absolute path or null. Never throws.
|
|
210
|
+
*
|
|
211
|
+
* @param {string} roomDir - Absolute path to the active room
|
|
212
|
+
* @returns {string|null} Absolute path to the active section or null
|
|
213
|
+
*/
|
|
214
|
+
function resolveActiveSectionPath(roomDir) {
|
|
215
|
+
if (!roomDir) return null;
|
|
216
|
+
try {
|
|
217
|
+
const activeJson = path.join(roomDir, '.mindrian', 'active-section.json');
|
|
218
|
+
if (fs.existsSync(activeJson)) {
|
|
219
|
+
try {
|
|
220
|
+
const data = JSON.parse(fs.readFileSync(activeJson, 'utf8'));
|
|
221
|
+
if (data && typeof data.section === 'string' && data.section.length > 0) {
|
|
222
|
+
// Accept absolute or room-relative path.
|
|
223
|
+
const candidate = path.isAbsolute(data.section)
|
|
224
|
+
? data.section
|
|
225
|
+
: path.join(roomDir, data.section);
|
|
226
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
|
|
227
|
+
return candidate;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
} catch (_e) { /* fall through to mtime fallback */ }
|
|
231
|
+
}
|
|
232
|
+
} catch (_e) {}
|
|
233
|
+
|
|
234
|
+
// Fallback: most-recently-modified section containing MINTO.md.
|
|
235
|
+
try {
|
|
236
|
+
const entries = fs.readdirSync(roomDir, { withFileTypes: true })
|
|
237
|
+
.filter(function (d) { return d.isDirectory() && !d.name.startsWith('.'); });
|
|
238
|
+
let best = null;
|
|
239
|
+
let bestMtime = 0;
|
|
240
|
+
for (const d of entries) {
|
|
241
|
+
const sectionPath = path.join(roomDir, d.name);
|
|
242
|
+
const mintoPath = path.join(sectionPath, 'MINTO.md');
|
|
243
|
+
try {
|
|
244
|
+
if (!fs.existsSync(mintoPath)) continue;
|
|
245
|
+
const st = fs.statSync(mintoPath);
|
|
246
|
+
if (st.mtimeMs > bestMtime) {
|
|
247
|
+
bestMtime = st.mtimeMs;
|
|
248
|
+
best = sectionPath;
|
|
249
|
+
}
|
|
250
|
+
} catch (_e) {}
|
|
251
|
+
}
|
|
252
|
+
return best;
|
|
253
|
+
} catch (_e) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Phase 88.1-04 -- build the MINTO segment for the statusline. Wrapped in
|
|
260
|
+
* try/catch at the caller; this helper itself also defends every path so
|
|
261
|
+
* any failure yields empty string and leaves the pre-88 output unchanged.
|
|
262
|
+
*
|
|
263
|
+
* Flow:
|
|
264
|
+
* - Resolve the active section via resolveActiveSectionPath.
|
|
265
|
+
* - Hit the 5s TTL cache (lib/core/statusline-cache.cjs).
|
|
266
|
+
* - On miss, readTriple via lib/core/folder-memory.cjs + setCached.
|
|
267
|
+
* - Extract reasoning.governing_thought + reasoning_health_score + is_stale.
|
|
268
|
+
* - If governing_thought null / empty / stale -> empty string (skip segment).
|
|
269
|
+
* - Else: "<glyph> <truncated-governing-thought>" in Canon Part 2 vocabulary.
|
|
270
|
+
*
|
|
271
|
+
* Canon Part 3: LOCAL-only. No BRAIN read, no SIGNAL read. No external
|
|
272
|
+
* network. No user-content egress.
|
|
273
|
+
*
|
|
274
|
+
* @param {string} roomDir - Absolute path to the active room
|
|
275
|
+
* @returns {string} The rendered MINTO segment or '' (skip)
|
|
276
|
+
*/
|
|
277
|
+
function buildMintoSegment(roomDir) {
|
|
278
|
+
if (!statuslineCache || !folderMemory) return '';
|
|
279
|
+
if (!roomDir) return '';
|
|
280
|
+
|
|
281
|
+
const sectionPath = resolveActiveSectionPath(roomDir);
|
|
282
|
+
if (!sectionPath) return '';
|
|
283
|
+
|
|
284
|
+
let triple = null;
|
|
285
|
+
try {
|
|
286
|
+
const cached = statuslineCache.getCached(roomDir, sectionPath);
|
|
287
|
+
if (cached && cached.fresh && cached.value) {
|
|
288
|
+
triple = cached.value;
|
|
289
|
+
} else {
|
|
290
|
+
// Cold path: live read through Phase 88-01 contract.
|
|
291
|
+
triple = folderMemory.readTriple(sectionPath);
|
|
292
|
+
try { statuslineCache.setCached(roomDir, sectionPath, triple); } catch (_) {}
|
|
293
|
+
}
|
|
294
|
+
} catch (_e) {
|
|
295
|
+
return '';
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
if (!triple || !triple.reasoning) return '';
|
|
299
|
+
const reasoning = triple.reasoning;
|
|
300
|
+
|
|
301
|
+
// Graceful fallback: if the reasoning block is absent, stale, or the
|
|
302
|
+
// governing_thought is null/empty, skip the segment entirely. This
|
|
303
|
+
// preserves the "zero new failure modes" invariant from the PLAN.
|
|
304
|
+
if (!reasoning.exists) return '';
|
|
305
|
+
if (reasoning.is_stale) return '';
|
|
306
|
+
const gt = reasoning.governing_thought;
|
|
307
|
+
if (gt === null || gt === undefined || typeof gt !== 'string' || gt.length === 0) {
|
|
308
|
+
return '';
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const glyph = statuslineCache.classifyHealth(
|
|
312
|
+
typeof reasoning.reasoning_health_score === 'number'
|
|
313
|
+
? reasoning.reasoning_health_score
|
|
314
|
+
: null
|
|
315
|
+
);
|
|
316
|
+
// "--" glyph signals absent/indeterminate score; in that case we still
|
|
317
|
+
// skip because the PLAN's fallback contract says "stale or null -> skip".
|
|
318
|
+
if (glyph === '--') return '';
|
|
319
|
+
|
|
320
|
+
const truncated = statuslineCache.truncateGoverningThought(gt);
|
|
321
|
+
|
|
322
|
+
// Canon Part 2 color vocabulary (matches hook systemMessage + /mos:status):
|
|
323
|
+
// check -> green
|
|
324
|
+
// warn -> yellow
|
|
325
|
+
// low -> red
|
|
326
|
+
let glyphColor = visual.ANSI.muted;
|
|
327
|
+
if (glyph === 'check') glyphColor = visual.ANSI.green;
|
|
328
|
+
else if (glyph === 'warn') glyphColor = visual.ANSI.yellow;
|
|
329
|
+
else if (glyph === 'low') glyphColor = visual.ANSI.red;
|
|
330
|
+
|
|
331
|
+
return glyphColor + glyph + visual.ANSI.reset + ' ' +
|
|
332
|
+
visual.ANSI.dim + truncated + visual.ANSI.reset;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Phase 91-06 -- resolve the active session id for the dial trace read.
|
|
337
|
+
* Resolution chain (first match wins):
|
|
338
|
+
* 1. process.env.CLAUDE_SESSION_ID
|
|
339
|
+
* 2. roomDir/.mindrian/current-session.json {"session_id": "..."}
|
|
340
|
+
* 3. most-recent .mindrian/decision-traces/*.json by mtime
|
|
341
|
+
* 4. null -> caller skips the dial segment entirely
|
|
342
|
+
*
|
|
343
|
+
* Defensive: every fs op is try/catch. Never throws.
|
|
344
|
+
*
|
|
345
|
+
* @param {string} roomDir - Absolute path to the active room
|
|
346
|
+
* @returns {string|null} session id or null
|
|
347
|
+
*/
|
|
348
|
+
function resolveSessionIdForDial(roomDir) {
|
|
349
|
+
try {
|
|
350
|
+
const env = process.env.CLAUDE_SESSION_ID;
|
|
351
|
+
if (typeof env === 'string' && env.length > 0) return env;
|
|
352
|
+
} catch (_e) {}
|
|
353
|
+
try {
|
|
354
|
+
const pointer = path.join(roomDir, '.mindrian', 'current-session.json');
|
|
355
|
+
if (fs.existsSync(pointer)) {
|
|
356
|
+
try {
|
|
357
|
+
const parsed = JSON.parse(fs.readFileSync(pointer, 'utf8'));
|
|
358
|
+
if (parsed && typeof parsed.session_id === 'string'
|
|
359
|
+
&& parsed.session_id.length > 0) {
|
|
360
|
+
return parsed.session_id;
|
|
361
|
+
}
|
|
362
|
+
} catch (_e) { /* fall through to mtime */ }
|
|
363
|
+
}
|
|
364
|
+
} catch (_e) {}
|
|
365
|
+
// Mtime fallback over decision-traces/*.json.
|
|
366
|
+
try {
|
|
367
|
+
const dir = path.join(roomDir, '.mindrian', 'decision-traces');
|
|
368
|
+
if (!fs.existsSync(dir)) return null;
|
|
369
|
+
const entries = fs.readdirSync(dir);
|
|
370
|
+
let best = null;
|
|
371
|
+
let bestMtime = -1;
|
|
372
|
+
for (const e of entries) {
|
|
373
|
+
if (!e.endsWith('.json')) continue;
|
|
374
|
+
const fp = path.join(dir, e);
|
|
375
|
+
try {
|
|
376
|
+
const st = fs.statSync(fp);
|
|
377
|
+
if (st.isFile() && st.mtimeMs > bestMtime) {
|
|
378
|
+
bestMtime = st.mtimeMs;
|
|
379
|
+
best = e.slice(0, -5);
|
|
380
|
+
}
|
|
381
|
+
} catch (_e) {}
|
|
382
|
+
}
|
|
383
|
+
return best;
|
|
384
|
+
} catch (_e) { return null; }
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Phase 91-06 -- build the Larry dial segment for the statusline. Mirrors
|
|
389
|
+
* the buildMintoSegment shape (Plan 88.1-04). Wrapped in try/catch at the
|
|
390
|
+
* caller; this helper itself also defends every path so any failure yields
|
|
391
|
+
* empty string and leaves the pre-91 statusline output unchanged.
|
|
392
|
+
*
|
|
393
|
+
* Flow:
|
|
394
|
+
* - Resolve active session via resolveSessionIdForDial.
|
|
395
|
+
* - Read .mindrian/decision-traces/<session>.json.
|
|
396
|
+
* - Take the last trace entry (traces[traces.length - 1]).
|
|
397
|
+
* - Call nav-dial.resolveDialPosition(trace).
|
|
398
|
+
* - Call nav-dial.formatDialSegment(position).
|
|
399
|
+
* - Return string (or '' on any failure).
|
|
400
|
+
*
|
|
401
|
+
* Canon Part 3: LOCAL-only. No BRAIN read, no SIGNAL read. No external
|
|
402
|
+
* network. No user-content egress. Reads only the same trace file
|
|
403
|
+
* /mos:explain-decision reads.
|
|
404
|
+
*
|
|
405
|
+
* @param {string} roomDir - Absolute path to the active room
|
|
406
|
+
* @returns {string} The rendered dial segment or '' (skip)
|
|
407
|
+
*/
|
|
408
|
+
function buildDialSegment(roomDir) {
|
|
409
|
+
if (!navDial) return '';
|
|
410
|
+
if (!roomDir) return '';
|
|
411
|
+
|
|
412
|
+
const sessionId = resolveSessionIdForDial(roomDir);
|
|
413
|
+
if (!sessionId) return '';
|
|
414
|
+
|
|
415
|
+
let trace = null;
|
|
416
|
+
try {
|
|
417
|
+
const fp = path.join(roomDir, '.mindrian', 'decision-traces',
|
|
418
|
+
sessionId + '.json');
|
|
419
|
+
if (!fs.existsSync(fp)) return '';
|
|
420
|
+
const raw = fs.readFileSync(fp, 'utf8');
|
|
421
|
+
const parsed = JSON.parse(raw);
|
|
422
|
+
if (!parsed || typeof parsed !== 'object' || !Array.isArray(parsed.traces)) {
|
|
423
|
+
return '';
|
|
424
|
+
}
|
|
425
|
+
if (parsed.traces.length === 0) return '';
|
|
426
|
+
trace = parsed.traces[parsed.traces.length - 1];
|
|
427
|
+
} catch (_e) {
|
|
428
|
+
return '';
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
try {
|
|
432
|
+
const position = navDial.resolveDialPosition(trace);
|
|
433
|
+
// Suppress dial when no trace was effectively useful (Investigate / --
|
|
434
|
+
// with no highlight): the caller already shows the pre-engine state by
|
|
435
|
+
// its absence. Keeps the statusline quiet when the engine has not
|
|
436
|
+
// spoken yet.
|
|
437
|
+
if (position && position.glyph === '--' && position.highlight === null) {
|
|
438
|
+
return '';
|
|
439
|
+
}
|
|
440
|
+
return navDial.formatDialSegment(position);
|
|
441
|
+
} catch (_e) {
|
|
442
|
+
return '';
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Get per-room bridge file path at ~/.mindrian/bridge/{room-hash}.json
|
|
448
|
+
* @param {string} [roomDir] - Room directory path for hashing
|
|
449
|
+
* @returns {string} Bridge file path
|
|
450
|
+
*/
|
|
451
|
+
function getBridgeFile(roomDir) {
|
|
452
|
+
const bridgeDir = path.join(os.homedir(), '.mindrian', 'bridge');
|
|
453
|
+
if (!fs.existsSync(bridgeDir)) fs.mkdirSync(bridgeDir, { recursive: true });
|
|
454
|
+
if (!roomDir) return path.join(bridgeDir, 'default.json');
|
|
455
|
+
const hash = crypto.createHash('md5').update(roomDir).digest('hex').slice(0, 8);
|
|
456
|
+
return path.join(bridgeDir, hash + '.json');
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// Phase 121.5-03: two-row renderer wiring. The pure-function renderer at
|
|
460
|
+
// lib/statusline/two-row-renderer.cjs composes the locked D-02/D-03/D-04
|
|
461
|
+
// shape from a state object; this script collects the state from local
|
|
462
|
+
// sources (STATE.md, room/, ~/.mindrian/update-check.json, bridge files)
|
|
463
|
+
// and delegates rendering to the renderer module.
|
|
464
|
+
const twoRowRenderer = require('../lib/statusline/two-row-renderer.cjs');
|
|
465
|
+
const versionResolver = require('../lib/statusline/version-resolver.cjs');
|
|
466
|
+
|
|
467
|
+
// Phase 187 (statusline-navigator-cockpit): the four-tier NAVIGATOR cockpit is
|
|
468
|
+
// the navigator render path. The pure renderer + the LOCAL signal collector +
|
|
469
|
+
// the INV-SL-2 measurement hook are lazy-required so a missing module on a
|
|
470
|
+
// degraded install leaves the pre-187 two-row statusline byte-identical.
|
|
471
|
+
// Canon Part 8 LOCAL-only: all three modules are zero-network, zero-Brain.
|
|
472
|
+
let cockpitRenderer = null;
|
|
473
|
+
let cockpitSignals = null;
|
|
474
|
+
let cockpitTelemetry = null;
|
|
475
|
+
try { cockpitRenderer = require('../lib/statusline/cockpit-renderer.cjs'); } catch (_e) { /* graceful */ }
|
|
476
|
+
try { cockpitSignals = require('../lib/statusline/cockpit-signals.cjs'); } catch (_e) { /* graceful */ }
|
|
477
|
+
try { cockpitTelemetry = require('../lib/statusline/cockpit-telemetry.cjs'); } catch (_e) { /* graceful */ }
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Phase 187 -- build the four-tier navigator cockpit line from collected state.
|
|
481
|
+
* Wrapped defensively: any failure returns '' so the caller keeps the pre-187
|
|
482
|
+
* two-row output unchanged (never blank, never throw the statusline).
|
|
483
|
+
*
|
|
484
|
+
* @param {Object} rowState - the two-row state already collected this render
|
|
485
|
+
* @param {string} roomName - resolved active room name
|
|
486
|
+
* @param {number|null} ctxPct - context-budget percentage (null before first API call)
|
|
487
|
+
* @returns {string} the rendered cockpit line, or '' on any failure
|
|
488
|
+
*/
|
|
489
|
+
/**
|
|
490
|
+
* The Tier-4 visual gauge: 📊 + a 10-block bar + N%, ANSI-colored by band
|
|
491
|
+
* (green <50 / yellow 50-79 / red >=80) as progressive enhancement. Empty when
|
|
492
|
+
* no context data. The chart glyph 📊 is carve-out-reserved to this file +
|
|
493
|
+
* two-row-renderer (the glyph-isolation fence), so the cockpit renderer never
|
|
494
|
+
* holds it -- it only PLACES this pre-built string. The adjacent risk dot
|
|
495
|
+
* (🟢/🟠/🔴) carries the host-independent color; the bar's ANSI is enhancement.
|
|
496
|
+
* @param {number|null} pct
|
|
497
|
+
* @returns {string}
|
|
498
|
+
*/
|
|
499
|
+
function buildCtxBar(pct) {
|
|
500
|
+
if (pct === null || pct === undefined || typeof pct !== 'number' || Number.isNaN(pct)) return '';
|
|
501
|
+
const used = Math.max(0, Math.min(100, Math.round(pct)));
|
|
502
|
+
const filled = Math.max(0, Math.min(10, Math.round(used / 10)));
|
|
503
|
+
const blocks = '█'.repeat(filled) + '░'.repeat(10 - filled);
|
|
504
|
+
const col = used >= 80 ? '\x1b[31m' : (used >= 50 ? '\x1b[33m' : '\x1b[32m');
|
|
505
|
+
return '\u{1F4CA} ' + col + blocks + '\x1b[0m ' + used + '%';
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
function buildCockpitLine(rowState, roomName, ctxPct) {
|
|
509
|
+
if (!cockpitRenderer || !cockpitSignals) return '';
|
|
510
|
+
try {
|
|
511
|
+
const signalOpts = {
|
|
512
|
+
roomName: roomName,
|
|
513
|
+
ctxPct: ctxPct,
|
|
514
|
+
jtbd: rowState && rowState.jtbd,
|
|
515
|
+
governingThought: rowState && rowState.governing_thought,
|
|
516
|
+
brainConnected: rowState && rowState.brain_tier === 'BRAIN',
|
|
517
|
+
who: rowState && rowState.who,
|
|
518
|
+
agentLabel: rowState && rowState.agent_label,
|
|
519
|
+
};
|
|
520
|
+
const cockpitState = cockpitSignals.collectSignals(signalOpts);
|
|
521
|
+
cockpitState.bar = buildCtxBar(ctxPct); // Tier-4 visual gauge (this file owns 📊; renderer just places it)
|
|
522
|
+
const line = cockpitRenderer.renderCockpit(cockpitState);
|
|
523
|
+
// INV-SL-2 measurement hook (best-effort, debounced, LOCAL-only).
|
|
524
|
+
if (cockpitTelemetry) {
|
|
525
|
+
try { cockpitTelemetry.recordExposure(cockpitState); } catch (_e) { /* best-effort */ }
|
|
526
|
+
}
|
|
527
|
+
return line || '';
|
|
528
|
+
} catch (_e) {
|
|
529
|
+
return '';
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
let input = '';
|
|
534
|
+
const timeout = setTimeout(() => process.exit(0), 3000);
|
|
535
|
+
process.stdin.setEncoding('utf8');
|
|
536
|
+
process.stdin.on('data', chunk => input += chunk);
|
|
537
|
+
process.stdin.on('end', () => {
|
|
538
|
+
clearTimeout(timeout);
|
|
539
|
+
try {
|
|
540
|
+
const data = JSON.parse(input);
|
|
541
|
+
const model = data.model?.display_name || 'Claude';
|
|
542
|
+
const dir = data.workspace?.current_dir || process.cwd();
|
|
543
|
+
const remaining = data.context_window?.remaining_percentage;
|
|
544
|
+
const usedPct = data.context_window?.used_percentage;
|
|
545
|
+
|
|
546
|
+
// --- Context window pct (Phase 121.5-03: raw scalar; renderer composes the bar) ---
|
|
547
|
+
// Pre-121.5-03 emitted a colored 10-char bar inline. Per D-03 the two-row
|
|
548
|
+
// renderer (lib/statusline/two-row-renderer.cjs renderBar) now owns the
|
|
549
|
+
// bar composition + the >=80% blink-red wrap. We hand it just the percentage.
|
|
550
|
+
// Quick-task 20260702 bucket-1(d): prefer the NATIVE context percentage the
|
|
551
|
+
// host exposes (context_window.used_percentage / exceeds_200k_tokens), with
|
|
552
|
+
// remaining_percentage as the FALLBACK for older CC / null-after-/compact.
|
|
553
|
+
// The resolver is pure + LOCAL (lib/statusline/ctx-window.cjs); lazy-required so
|
|
554
|
+
// a degraded install falls back to the inline derivation below and never blanks.
|
|
555
|
+
// ctxPct = null when NO data (fresh session before first API call) -> the
|
|
556
|
+
// renderer suppresses the bar (Phase 106-02 Test 7: no data = no bar).
|
|
557
|
+
//
|
|
558
|
+
// RCA statusline-context-pct-stale-post-compact (2026-07-28): the inline
|
|
559
|
+
// fallback below used to apply the AUTO_COMPACT_BUFFER rescale, which answers a
|
|
560
|
+
// different question than used_percentage and inflated the gauge by up to +16.5
|
|
561
|
+
// points (true 78 rendered as 93). The host emits used + remaining === 100
|
|
562
|
+
// exactly (787/787 captured payloads), so the honest derivation is
|
|
563
|
+
// 100 - remaining, matching lib/statusline/ctx-window.cjs branch-for-branch.
|
|
564
|
+
let ctxPct = null;
|
|
565
|
+
try {
|
|
566
|
+
const ctxWindow = require('../lib/statusline/ctx-window.cjs');
|
|
567
|
+
ctxPct = ctxWindow.resolveCtxPct(data.context_window).pct;
|
|
568
|
+
} catch (_ctxErr) {
|
|
569
|
+
// Graceful fallback, same scale as the resolver (never the buffer rescale).
|
|
570
|
+
if (Number.isFinite(usedPct)) {
|
|
571
|
+
ctxPct = Math.max(0, Math.min(100, Math.round(usedPct)));
|
|
572
|
+
} else if (Number.isFinite(remaining)) {
|
|
573
|
+
ctxPct = Math.max(0, Math.min(100, Math.round(100 - remaining)));
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// Write bridge file for hooks/skills (per-room isolation).
|
|
578
|
+
// Uses dir (workspace) as hash source since roomDir isn't resolved yet.
|
|
579
|
+
//
|
|
580
|
+
// RCA 2026-07-28: this used to write `ctx_pct: usedPct || 0`, which coerced the
|
|
581
|
+
// post-/compact NULL used_percentage into a hard, false 0 -- the same null-to-0
|
|
582
|
+
// coercion lib/statusline/two-row-renderer.cjs:86 documents as already fixed
|
|
583
|
+
// there. It now writes the RESOLVED ctxPct (the exact number the gauge renders,
|
|
584
|
+
// one source of truth for both surfaces) and preserves null as null, so a reader
|
|
585
|
+
// can tell "unknown" apart from "empty". ctx_remaining is likewise derived from
|
|
586
|
+
// the same resolved value rather than `remaining || 100`, which turned a genuine
|
|
587
|
+
// 0 into 100.
|
|
588
|
+
try {
|
|
589
|
+
const bridgeFile = getBridgeFile(dir);
|
|
590
|
+
const bridge = JSON.stringify({
|
|
591
|
+
model_id: data.model?.id || 'unknown',
|
|
592
|
+
model_name: model,
|
|
593
|
+
ctx_pct: ctxPct,
|
|
594
|
+
ctx_remaining: ctxPct === null ? null : (100 - ctxPct),
|
|
595
|
+
ctx_size: data.context_window?.context_window_size || 200000,
|
|
596
|
+
timestamp: Math.floor(Date.now() / 1000)
|
|
597
|
+
});
|
|
598
|
+
fs.writeFileSync(bridgeFile + '.tmp', bridge);
|
|
599
|
+
fs.renameSync(bridgeFile + '.tmp', bridgeFile);
|
|
600
|
+
} catch (e) {}
|
|
601
|
+
// LEGACY: pre-121.5-03 colored bar composition retained ONLY for the
|
|
602
|
+
// graceful-fallback path below (Tier 0 / no-room case). Once the two-row
|
|
603
|
+
// renderer is the sole path, this block is dead. For now, keep both
|
|
604
|
+
// representations available so the no-room fallback keeps the bar.
|
|
605
|
+
let ctx = '';
|
|
606
|
+
if (ctxPct != null) {
|
|
607
|
+
const used = ctxPct;
|
|
608
|
+
const filled = Math.floor(used / 10);
|
|
609
|
+
const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(10 - filled);
|
|
610
|
+
|
|
611
|
+
// Phase 106-D02: prepend token-budget chart glyph to every ctx branch.
|
|
612
|
+
// Threshold contract preserved at 50/65/80 (researcher locked); skull
|
|
613
|
+
// glyph at >=80% replaced with literal "compaction-imminent" warning
|
|
614
|
+
// text wrapped in the same blink-red ANSI envelope. Glyphs land as raw
|
|
615
|
+
// UTF-8 codepoints (not \u{...} escapes) so the Phase 106-02 carve-out
|
|
616
|
+
// regression fence (tests/test-statusline-glyph-isolation.cjs) finds
|
|
617
|
+
// them via includes() and the doctor Class F scanner can match them.
|
|
618
|
+
if (used < 50) {
|
|
619
|
+
ctx = ` 📊 ${visual.ANSI.green}${bar} ${used}%${visual.ANSI.reset}`;
|
|
620
|
+
} else if (used < 65) {
|
|
621
|
+
ctx = ` 📊 ${visual.ANSI.yellow}${bar} ${used}%${visual.ANSI.reset}`;
|
|
622
|
+
} else if (used < 80) {
|
|
623
|
+
ctx = ` 📊 ${visual.ANSI.sienna}${bar} ${used}%${visual.ANSI.reset}`;
|
|
624
|
+
} else {
|
|
625
|
+
ctx = ` 📊 \x1b[5;31m⚠ compaction-imminent ${bar} ${used}%\x1b[0m`;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
// --- Room context ---
|
|
630
|
+
let roomInfo = '';
|
|
631
|
+
// Phase 121.5-03: Two-row state object passed to lib/statusline/
|
|
632
|
+
// two-row-renderer.cjs. Filled out as we collect state below; the
|
|
633
|
+
// final emission delegates to renderStatusline(state) when room is set.
|
|
634
|
+
const rowState = {
|
|
635
|
+
current_version: 'unknown',
|
|
636
|
+
brain_tier: 'LOCAL',
|
|
637
|
+
ctx_pct: ctxPct, // null when remaining missing -> renderer suppresses bar
|
|
638
|
+
update_available: false,
|
|
639
|
+
update_available_version: null,
|
|
640
|
+
room: '',
|
|
641
|
+
section: '',
|
|
642
|
+
jtbd: '',
|
|
643
|
+
stage: '',
|
|
644
|
+
governing_thought: '',
|
|
645
|
+
operator: '',
|
|
646
|
+
// Voice Signature (Part 12): WHO is speaking. Default larry -- the
|
|
647
|
+
// conversational surface IS Larry (Part 10). 🤖 shows only when the host
|
|
648
|
+
// runs an explicit non-Larry agent (data.agent.name set + not /larry/i).
|
|
649
|
+
who: (data.agent && typeof data.agent.name === 'string' && !/larry/i.test(data.agent.name)) ? 'claude' : 'larry',
|
|
650
|
+
agent_label: (data.agent && typeof data.agent.name === 'string' && !/larry/i.test(data.agent.name)) ? data.agent.name : '',
|
|
651
|
+
};
|
|
652
|
+
// Resolve room path: try registry first, fall back to room/
|
|
653
|
+
let roomDir = '';
|
|
654
|
+
const registryPath = path.join(dir, '.rooms', 'registry.json');
|
|
655
|
+
if (fs.existsSync(registryPath)) {
|
|
656
|
+
try {
|
|
657
|
+
const reg = JSON.parse(fs.readFileSync(registryPath, 'utf8'));
|
|
658
|
+
if (reg.active && reg.rooms[reg.active]) {
|
|
659
|
+
const resolved = path.resolve(dir, reg.rooms[reg.active].path);
|
|
660
|
+
if (fs.existsSync(resolved)) roomDir = resolved;
|
|
661
|
+
}
|
|
662
|
+
} catch (e) {}
|
|
663
|
+
}
|
|
664
|
+
if (!roomDir) {
|
|
665
|
+
const legacy = path.join(dir, 'room');
|
|
666
|
+
if (fs.existsSync(legacy)) roomDir = legacy;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// Phase 94-01: STATE.md frontmatter current_room is the canonical
|
|
670
|
+
// active-room source. Statusline is a derived read-only view.
|
|
671
|
+
// Lawrence Aronhime (2026-04-28) hit "look at the bottom. It still
|
|
672
|
+
// says core power" 4x in 38 minutes because the prior implementation
|
|
673
|
+
// derived roomName from a stale source. getCurrentRoom() reads
|
|
674
|
+
// STATE.md per invocation -- no caching across calls -- so /mos:rooms
|
|
675
|
+
// switches propagate on the next prompt cycle's natural re-render.
|
|
676
|
+
let roomName = '';
|
|
677
|
+
if (folderMemory && typeof folderMemory.getCurrentRoom === 'function') {
|
|
678
|
+
try {
|
|
679
|
+
const cr = folderMemory.getCurrentRoom(dir);
|
|
680
|
+
if (cr && typeof cr.slug === 'string' && cr.slug.length > 0) {
|
|
681
|
+
roomName = cr.slug;
|
|
682
|
+
}
|
|
683
|
+
} catch (_e) { /* graceful fallback */ }
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
// Fallback chain when STATE.md current_room absent (Tier 0):
|
|
687
|
+
// 1. Registry rooms[active].name (legacy display name)
|
|
688
|
+
// 2. Workspace dir basename
|
|
689
|
+
if (!roomName && fs.existsSync(registryPath)) {
|
|
690
|
+
try {
|
|
691
|
+
const reg = JSON.parse(fs.readFileSync(registryPath, 'utf8'));
|
|
692
|
+
if (reg.active && reg.rooms[reg.active]) {
|
|
693
|
+
roomName = reg.rooms[reg.active].name || reg.active;
|
|
694
|
+
}
|
|
695
|
+
} catch (e) {}
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
if (roomDir) {
|
|
699
|
+
try {
|
|
700
|
+
if (!roomName) roomName = path.basename(dir);
|
|
701
|
+
// Phase 121.5-03: stamp room name into the two-row state.
|
|
702
|
+
rowState.room = roomName;
|
|
703
|
+
|
|
704
|
+
// Walk sections only to find the most recently modified one
|
|
705
|
+
// (the current exploration focus). Everything else about
|
|
706
|
+
// sections (counts, gaps, phase, stage, exploration label)
|
|
707
|
+
// was removed from the statusline per user spec 2026-04-14.
|
|
708
|
+
const sections = fs.readdirSync(roomDir, { withFileTypes: true })
|
|
709
|
+
.filter(d => d.isDirectory() && !d.name.startsWith('.'));
|
|
710
|
+
|
|
711
|
+
let currentSection = '';
|
|
712
|
+
let latestMtime = 0;
|
|
713
|
+
for (const s of sections) {
|
|
714
|
+
const sPath = path.join(roomDir, s.name);
|
|
715
|
+
try {
|
|
716
|
+
const files = fs.readdirSync(sPath).filter(f => f.endsWith('.md'));
|
|
717
|
+
for (const f of files) {
|
|
718
|
+
const stat = fs.statSync(path.join(sPath, f));
|
|
719
|
+
if (stat.mtimeMs > latestMtime) {
|
|
720
|
+
latestMtime = stat.mtimeMs;
|
|
721
|
+
currentSection = s.name;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
} catch (e) {}
|
|
725
|
+
}
|
|
726
|
+
// Phase 121.5-03: stamp current section into the two-row state.
|
|
727
|
+
rowState.section = currentSection;
|
|
728
|
+
// And derive the stage label (D-04 stage segment uses the
|
|
729
|
+
// EXPLORATION_LABELS map -- existing convention preserved).
|
|
730
|
+
if (currentSection) {
|
|
731
|
+
const stageEntry = EXPLORATION_LABELS[currentSection];
|
|
732
|
+
rowState.stage = stageEntry ? stageEntry.label : currentSection.replace(/-/g, ' ').toUpperCase();
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
// Build room status parts (De Stijl visual identity)
|
|
736
|
+
// Per user spec 2026-04-14: the room marker carries the ACTIVE
|
|
737
|
+
// ROOM NAME (not a static LARRY label), followed by the current
|
|
738
|
+
// section as a status breadcrumb. No venture stage, no section
|
|
739
|
+
// count, no gap count, no phase indicator, no exploration label.
|
|
740
|
+
const parts = [];
|
|
741
|
+
|
|
742
|
+
// Room name with house emoji prefix. Gold bold for brand identity.
|
|
743
|
+
const gold = visual.ANSI.gold || visual.ANSI.amber || '\x1b[38;2;245;194;66m';
|
|
744
|
+
let roomCrumb = `\u{1F3E0} ${gold}${visual.ANSI.bold}${roomName}${visual.ANSI.reset}`;
|
|
745
|
+
if (currentSection) {
|
|
746
|
+
// Section breadcrumb with folder emoji. Muted arrow separator.
|
|
747
|
+
roomCrumb += ` ${visual.ANSI.muted}\u25B6${visual.ANSI.reset} \u{1F4C2} ${visual.ANSI.cyan}${currentSection}${visual.ANSI.reset}`;
|
|
748
|
+
}
|
|
749
|
+
parts.push(roomCrumb);
|
|
750
|
+
|
|
751
|
+
// Exploration stage label with thematic emoji per stage
|
|
752
|
+
// (target, lightbulb, money bag, bar chart, etc). Derived from
|
|
753
|
+
// currentSection via EXPLORATION_LABELS map. Unknown sections
|
|
754
|
+
// fall back to a generic magnifying-glass emoji plus uppercase
|
|
755
|
+
// section name.
|
|
756
|
+
if (currentSection) {
|
|
757
|
+
const stageEntry = EXPLORATION_LABELS[currentSection];
|
|
758
|
+
const emoji = stageEntry ? stageEntry.emoji : '\u{1F50D}';
|
|
759
|
+
const label = stageEntry ? stageEntry.label : currentSection.replace(/-/g, ' ').toUpperCase();
|
|
760
|
+
parts.push(`${emoji} ${visual.ANSI.yellow}${label}${visual.ANSI.reset}`);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// Phase 88.1-04 -- MINTO governing_thought segment. Canon Part 3
|
|
764
|
+
// LOCAL-only (no BRAIN, no SIGNAL). 5s TTL cache + 300ms budget +
|
|
765
|
+
// graceful fallback. Entire helper is wrapped in try/catch below so
|
|
766
|
+
// any failure leaves the pre-88 statusline output unchanged.
|
|
767
|
+
try {
|
|
768
|
+
const mintoSeg = buildMintoSegment(roomDir);
|
|
769
|
+
if (mintoSeg) parts.push(mintoSeg);
|
|
770
|
+
// Phase 121.5-03: also pull the raw governing thought into row state
|
|
771
|
+
// for the two-row renderer. We re-resolve via the same chain that
|
|
772
|
+
// buildMintoSegment uses; this is intentionally a fresh read (5s TTL
|
|
773
|
+
// cache already memoizes the disk hit) so we get the same value.
|
|
774
|
+
if (statuslineCache && folderMemory) {
|
|
775
|
+
const sectionPath = resolveActiveSectionPath(roomDir);
|
|
776
|
+
if (sectionPath) {
|
|
777
|
+
const cached = statuslineCache.getCached(roomDir, sectionPath);
|
|
778
|
+
const triple = (cached && cached.fresh && cached.value)
|
|
779
|
+
? cached.value
|
|
780
|
+
: folderMemory.readTriple(sectionPath);
|
|
781
|
+
if (triple && triple.reasoning && triple.reasoning.exists &&
|
|
782
|
+
!triple.reasoning.is_stale &&
|
|
783
|
+
typeof triple.reasoning.governing_thought === 'string' &&
|
|
784
|
+
triple.reasoning.governing_thought.length > 0) {
|
|
785
|
+
rowState.governing_thought = triple.reasoning.governing_thought;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
} catch (_e) { /* graceful fallback */ }
|
|
790
|
+
|
|
791
|
+
// Phase 91-06 -- Larry dial segment (Investigate | Blend | Insight).
|
|
792
|
+
// Canon Part 3: dial position derived from latest engine decision
|
|
793
|
+
// trace (.mindrian/decision-traces/<session>.json -- same source
|
|
794
|
+
// /mos:explain-decision reads). Canon Part 8 LOCAL-only. Inserted
|
|
795
|
+
// between MINTO and plugin brand so the user reads room state ->
|
|
796
|
+
// reasoning -> engine position in left-to-right order.
|
|
797
|
+
try {
|
|
798
|
+
const dialSeg = buildDialSegment(roomDir);
|
|
799
|
+
if (dialSeg) parts.push(dialSeg);
|
|
800
|
+
} catch (_e) { /* graceful fallback */ }
|
|
801
|
+
|
|
802
|
+
// Phase 106-D02: Active operator glyph (skipped on JUST_TALK default)
|
|
803
|
+
// Source: lib/conversation/operator.cjs getCurrent(roomDir) -- pure
|
|
804
|
+
// local read, < 1ms budget, graceful fallback to JUST_TALK on error.
|
|
805
|
+
// We DO NOT broadcast JUST_TALK because every cold-start room defaults
|
|
806
|
+
// to it; surfacing the default would just be noise. Canon Part 8
|
|
807
|
+
// LOCAL-only: never queries Brain.
|
|
808
|
+
try {
|
|
809
|
+
const operator = require('../lib/conversation/operator.cjs');
|
|
810
|
+
const opState = operator.getCurrent(roomDir);
|
|
811
|
+
if (opState && opState.current && opState.current !== 'JUST_TALK') {
|
|
812
|
+
parts.push(`⚙️ ${visual.ANSI.dim}${opState.current}${visual.ANSI.reset}`);
|
|
813
|
+
// Phase 121.5-03: also stamp operator into the two-row state.
|
|
814
|
+
rowState.operator = opState.current;
|
|
815
|
+
}
|
|
816
|
+
} catch (_e) { /* graceful fallback - never blank statusline */ }
|
|
817
|
+
|
|
818
|
+
// Phase 106-D02: Active JTBD glyph (skipped when getCurrent returns null)
|
|
819
|
+
// Source: lib/hmi/jtbd-state.cjs getCurrent(roomDir) -- returns null
|
|
820
|
+
// when state file absent OR current is null OR not an object. The 24h
|
|
821
|
+
// staleness rule lives inside isStale() not getCurrent(); we trust
|
|
822
|
+
// whatever non-null current the engine wrote. Canon Part 8 LOCAL-only.
|
|
823
|
+
try {
|
|
824
|
+
const jtbdState = require('../lib/hmi/jtbd-state.cjs');
|
|
825
|
+
const jtbdCurrent = jtbdState.getCurrent(roomDir);
|
|
826
|
+
if (jtbdCurrent && jtbdCurrent.jtbd) {
|
|
827
|
+
parts.push(`🎯 ${visual.ANSI.dim}${jtbdCurrent.jtbd}${visual.ANSI.reset}`);
|
|
828
|
+
// Phase 121.5-03: also stamp JTBD into the two-row state.
|
|
829
|
+
rowState.jtbd = jtbdCurrent.jtbd;
|
|
830
|
+
}
|
|
831
|
+
} catch (_e) { /* graceful fallback */ }
|
|
832
|
+
|
|
833
|
+
// MindrianOS plugin brand (brain emoji) + current version +
|
|
834
|
+
// persistent /mos:update hint. The green circle plus the
|
|
835
|
+
// literal command is a zero-runtime-cost nudge that works on
|
|
836
|
+
// airgapped machines, independent of any update-detection
|
|
837
|
+
// pipeline. Honest about what it is: a reminder, not a signal.
|
|
838
|
+
const pluginVersion = readPluginVersion();
|
|
839
|
+
const updateHint = `\u{1F504} ${visual.ANSI.dim}/mos:update${visual.ANSI.reset}`;
|
|
840
|
+
let pluginPart = `\u{1F9E0} ${visual.ANSI.cyan}MindrianOS${visual.ANSI.reset}`;
|
|
841
|
+
if (pluginVersion) {
|
|
842
|
+
pluginPart += ` ${visual.ANSI.dim}v${pluginVersion}${visual.ANSI.reset}`;
|
|
843
|
+
}
|
|
844
|
+
pluginPart += ` ${updateHint}`;
|
|
845
|
+
parts.push(pluginPart);
|
|
846
|
+
|
|
847
|
+
// Brain connection status. Green DNA if MINDRIAN_BRAIN_KEY is
|
|
848
|
+
// set (with optional health-bridge confirmation). Red DNA if
|
|
849
|
+
// not configured. This is a proxy, not a live health check -
|
|
850
|
+
// the statusline cannot do an MCP round-trip synchronously.
|
|
851
|
+
const brainStatus = detectBrainStatus();
|
|
852
|
+
if (brainStatus === 'connected') {
|
|
853
|
+
parts.push(`\u{1F9EC} ${visual.ANSI.green}BRAIN${visual.ANSI.reset}`);
|
|
854
|
+
// Phase 121.5-03: stamp brain tier into two-row state.
|
|
855
|
+
rowState.brain_tier = 'BRAIN';
|
|
856
|
+
} else if (brainStatus === 'disconnected') {
|
|
857
|
+
parts.push(`\u{1F9EC} ${visual.ANSI.red}BRAIN${visual.ANSI.reset}`);
|
|
858
|
+
rowState.brain_tier = 'LOCAL';
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
roomInfo = parts.join(` ${visual.ANSI.muted}${visual.SYMBOLS.box.v}${visual.ANSI.reset} `);
|
|
862
|
+
} catch (e) {}
|
|
863
|
+
} else {
|
|
864
|
+
// No room resolved. Still show the plugin version so users outside
|
|
865
|
+
// any room know which MindrianOS is running.
|
|
866
|
+
const pluginVersion = readPluginVersion();
|
|
867
|
+
if (pluginVersion) {
|
|
868
|
+
roomInfo = `${visual.ANSI.cyan}${visual.SYMBOLS.brand} MindrianOS${visual.ANSI.reset} ${visual.ANSI.dim}v${pluginVersion}${visual.ANSI.reset}`;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
// --- Output (Phase 121.5-03: two-row D-02/D-03/D-04) ---
|
|
873
|
+
// The two-row renderer composes the locked statusline shape from the
|
|
874
|
+
// rowState we collected above. Version + update-glyph conditional come
|
|
875
|
+
// from lib/statusline/version-resolver.cjs (SEED-007 anchored).
|
|
876
|
+
//
|
|
877
|
+
// When no room is resolved (Tier 0 / cold start), emit only Row 1 with
|
|
878
|
+
// an empty Row 2 (room defaults to 'MindrianOS' in the renderer). This
|
|
879
|
+
// preserves the SEED-007 contract: the version-of-record is ALWAYS
|
|
880
|
+
// visible, even outside any room.
|
|
881
|
+
try {
|
|
882
|
+
const ver = versionResolver.resolveVersion();
|
|
883
|
+
rowState.current_version = ver.current_version;
|
|
884
|
+
rowState.update_available = ver.update_available;
|
|
885
|
+
rowState.update_available_version = ver.update_available_version;
|
|
886
|
+
} catch (_e) {
|
|
887
|
+
// Graceful: keep rowState.current_version='unknown' from initialization.
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
// Phase 187 -- the four-tier NAVIGATOR COCKPIT line (the navigator render
|
|
891
|
+
// path). Emitted as the hero line ABOVE the preserved two-row identity /
|
|
892
|
+
// situation block: the cockpit gives the navigator orientation + integrity
|
|
893
|
+
// warning + the lowest-friction next action at a glance, while the two rows
|
|
894
|
+
// below keep the SEED-007 version-of-record contract + the D-02 broadcast
|
|
895
|
+
// (📊 / 🎯 / ⚙️ / compaction-imminent) byte-identical. The cockpit line is
|
|
896
|
+
// additive and defensive: on any failure buildCockpitLine returns '' and the
|
|
897
|
+
// statusline degrades to exactly the pre-187 two-row output.
|
|
898
|
+
const cockpitLine = buildCockpitLine(rowState, rowState.room, ctxPct);
|
|
899
|
+
|
|
900
|
+
let twoRow;
|
|
901
|
+
if (rowState.room || roomInfo) {
|
|
902
|
+
// Two-row emission. The renderer handles all width-progressive
|
|
903
|
+
// degradation + the blink-red at >=80% + the conditional update glyph.
|
|
904
|
+
twoRow = twoRowRenderer.renderStatusline(rowState);
|
|
905
|
+
} else {
|
|
906
|
+
// No room AND no roomInfo. Still render Row 1 (version-of-record
|
|
907
|
+
// contract per SEED-007 + D-03). Row 2 will render with the default
|
|
908
|
+
// 'MindrianOS' room placeholder. This is intentionally minimal so the
|
|
909
|
+
// user outside any room still sees who/runway, just not where/what.
|
|
910
|
+
twoRow = twoRowRenderer.renderRow1(rowState);
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
// Navigator-LOCKED 2026-06-29: emit ONE navigator line -- the four-tier cockpit
|
|
914
|
+
// with the MindrianOS version trailing the Tier-4 chip (after the risk chip /
|
|
915
|
+
// "save soon"). The two-row identity/situation block + the 📊 progress bar are
|
|
916
|
+
// RETIRED from the render (hierarchy, not a pile). Claude Code's own native line
|
|
917
|
+
// (accept-edits / shift+tab) is emitted by the host below this and is untouched.
|
|
918
|
+
// twoRow remains ONLY as the degraded-install fallback (cockpit machinery absent)
|
|
919
|
+
// so the bar is never blank.
|
|
920
|
+
const verSuffix = (rowState && rowState.current_version && rowState.current_version !== 'unknown')
|
|
921
|
+
? ' · v' + rowState.current_version
|
|
922
|
+
: '';
|
|
923
|
+
// D-02 broadcast preserved in the single line (navigator decision B, 2026-06-29):
|
|
924
|
+
// the operator (gear) and JTBD (target) facts ride the cockpit line when set, instead
|
|
925
|
+
// of a separate two-row block. JUST_TALK (the default operator) is suppressed (D-02 Test 6).
|
|
926
|
+
const jtbdSeg = (rowState && rowState.jtbd) ? ' · 🎯 ' + rowState.jtbd : '';
|
|
927
|
+
const operatorSeg = (rowState && rowState.operator && rowState.operator !== 'JUST_TALK')
|
|
928
|
+
? ' · ⚙️ ' + rowState.operator : '';
|
|
929
|
+
process.stdout.write(cockpitLine ? cockpitLine + jtbdSeg + operatorSeg + verSuffix : twoRow);
|
|
930
|
+
} catch (e) {
|
|
931
|
+
// Phase 187 -- graceful fallback: NEVER blank the statusline, even on
|
|
932
|
+
// malformed stdin. Emit a minimal safe navigator cockpit line (the renderer
|
|
933
|
+
// itself never throws and degrades to '⬡ MindrianOS' on bad input).
|
|
934
|
+
try {
|
|
935
|
+
if (cockpitRenderer && typeof cockpitRenderer.renderCockpit === 'function') {
|
|
936
|
+
process.stdout.write(cockpitRenderer.renderCockpit({}));
|
|
937
|
+
}
|
|
938
|
+
} catch (_e2) {
|
|
939
|
+
// Absolute last resort: still never blank.
|
|
940
|
+
try { process.stdout.write('⬡ MindrianOS'); } catch (_e3) { /* give up safely */ }
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
});
|