@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,830 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* check-plugin-path-anchoring.cjs
|
|
6
|
+
*
|
|
7
|
+
* Phase 271-01 - the measuring instrument for the bare-plugin-path defect class.
|
|
8
|
+
*
|
|
9
|
+
* WHY THIS EXISTS. commands/file-meeting.md shipped 25 citations of the form
|
|
10
|
+
* "Read `references/meeting/knowledge-typing.md`". A slash command's body is
|
|
11
|
+
* executed with the USER'S cwd (their Data Room), not the plugin install dir, so
|
|
12
|
+
* every one of those reads resolved against the wrong base and silently failed.
|
|
13
|
+
* The RCA (.planning/debug/resolved/file-meeting-missing-reference-files.md) fixed
|
|
14
|
+
* that ONE file and named the structural guard as missing work. Without the guard,
|
|
15
|
+
* the next command authored next month reintroduces the same defect and nobody
|
|
16
|
+
* notices until a real user's session fails. This gate is that guard.
|
|
17
|
+
*
|
|
18
|
+
* THE PINNED PREDICATE (deterministic, lexical, no inference, no network).
|
|
19
|
+
* A citation is a VIOLATION when ALL THREE hold:
|
|
20
|
+
*
|
|
21
|
+
* (a) the line contains a backtick-delimited token matching `references/<path>`,
|
|
22
|
+
* OR a bare token references/<path> immediately following one of the words
|
|
23
|
+
* Read, read, load, loaded, see, See, per, from, or a leading list-number
|
|
24
|
+
* ("1. ", "2. ", optionally followed by markdown bold); AND
|
|
25
|
+
* (b) the token is NOT already prefixed by ${CLAUDE_PLUGIN_ROOT}/ or by the
|
|
26
|
+
* fail-closed ${MINDRIAN_OS_ROOT:-${CLAUDE_PLUGIN_ROOT:?...}}/ form; AND
|
|
27
|
+
* (c) the file:pattern pair is not present in ALLOWLIST.
|
|
28
|
+
*
|
|
29
|
+
* A bare mention that is neither backticked nor introduced by a citation verb is
|
|
30
|
+
* NOT a site. That is deliberate: "it executes the chosen methodology from local
|
|
31
|
+
* references/methodology/*.md" (agents/framework-runner.md:26) is prose about repo
|
|
32
|
+
* layout inside an HTML comment, not an instruction the model resolves. The
|
|
33
|
+
* predicate is intentionally narrower than a blanket grep for the string
|
|
34
|
+
* "references/", because a gate that flags prose gets silenced.
|
|
35
|
+
*
|
|
36
|
+
* TARGET RESOLUTION. Every hit resolves its cited path against the repo root and
|
|
37
|
+
* carries a target tag, so a dangling citation is never silently anchored:
|
|
38
|
+
* OK - the path resolves to a real file under the repo root
|
|
39
|
+
* DIR - the path resolves to a real directory (a family citation)
|
|
40
|
+
* TEMPLATE-TARGET- the path carries a placeholder ({framework}) or a glob (*),
|
|
41
|
+
* so it cannot be existence-checked; reported, never counted
|
|
42
|
+
* as missing
|
|
43
|
+
* MISSING-TARGET - the path is concrete and does NOT exist on disk
|
|
44
|
+
*
|
|
45
|
+
* SURFACES SCANNED, each reported as its own group:
|
|
46
|
+
* commands - commands/*.md
|
|
47
|
+
* skills - skills/<name>/SKILL.md, EXCLUDING generated mirrors
|
|
48
|
+
* agents - agents/*.md
|
|
49
|
+
* pipelines - pipelines/**\/*.md (recursive: every pipeline stage file lives one
|
|
50
|
+
* level down, under pipelines/<chain>/, so a flat pipelines/*.md
|
|
51
|
+
* glob matches ZERO files and would make this surface a permanent
|
|
52
|
+
* false negative)
|
|
53
|
+
*
|
|
54
|
+
* WHY MIRROR SKILLS ARE EXCLUDED. scripts/build-skill-mirrors.cjs generates
|
|
55
|
+
* skills/<name>/SKILL.md byte-for-byte from commands/<name>.md for every command
|
|
56
|
+
* except its SKIP_LIST. Counting a mirror would double-count its command's
|
|
57
|
+
* citations, and fixing a mirror by hand would be reverted by the next generator
|
|
58
|
+
* run. Mirrors are fixed by fixing the command and regenerating (plan 271-03);
|
|
59
|
+
* the hand-authored skills that have NO command behind them are a genuinely
|
|
60
|
+
* separate surface (plan 271-04). A skills/<name>/SKILL.md counts as
|
|
61
|
+
* hand-authored when commands/<name>.md does not exist, or when <name> is in the
|
|
62
|
+
* generator's SKIP_LIST.
|
|
63
|
+
*
|
|
64
|
+
* SCRIPT TIER (--include-scripts for --report/--json, --check-scripts for a
|
|
65
|
+
* gateable exit code). Phase 274's widening of the adjacent class of bare
|
|
66
|
+
* `bash|sh|node|npx|python|python3 scripts/<name>` invocations: scoped by
|
|
67
|
+
* RESOLUTION MECHANISM (every unanchored plugin-relative scripts/ invocation,
|
|
68
|
+
* whatever verb precedes it), not by the string `bash|node`, so a
|
|
69
|
+
* `python3 scripts/render-pdf` site is measured, not invisible (274-RESEARCH.md
|
|
70
|
+
* Pitfall 2, the "pass-five trap" -- three prior anchoring passes each scoped
|
|
71
|
+
* by grep pattern and each left a sibling pattern standing). Every site now
|
|
72
|
+
* carries the same anchored/allowlisted/target classification the citation
|
|
73
|
+
* tier already has (Phase 271-01's own predicate never had this weakness;
|
|
74
|
+
* before 274-01 the script tier was a raw match counter where deleting a line
|
|
75
|
+
* and anchoring a line looked identical in the report). A Read citation and a
|
|
76
|
+
* Bash invocation still fail differently and need different verification, so
|
|
77
|
+
* the two tiers stay independently gateable (--check for citations, --check-
|
|
78
|
+
* scripts for scripts) rather than folding into one verdict. Lines whose
|
|
79
|
+
* match sits inside an allowed-tools permission pattern such as
|
|
80
|
+
* Bash(node scripts/mos-status.cjs:*) are excluded, because a permission
|
|
81
|
+
* matcher declares a pattern and never resolves a path; the exclusion count
|
|
82
|
+
* is printed so it stays visible.
|
|
83
|
+
*
|
|
84
|
+
* MODES:
|
|
85
|
+
* --report (default) - every group, file:line, matched token, target tag,
|
|
86
|
+
* per-surface and total counts. ALWAYS exits 0.
|
|
87
|
+
* --check - violations plus totals; exits 1 when the non-allowlisted
|
|
88
|
+
* references/ violation total is greater than 0.
|
|
89
|
+
* --check-scripts - the script-tier sibling of --check; exits 1 when the
|
|
90
|
+
* non-allowlisted scripts/ invocation violation total
|
|
91
|
+
* is greater than 0. NEVER touches the citation tier's
|
|
92
|
+
* own totals.violations -- the two tiers stay
|
|
93
|
+
* independently gateable, per the phase's own
|
|
94
|
+
* two-tiers-two-verdicts design.
|
|
95
|
+
* --json - machine-readable dump of the same scan.
|
|
96
|
+
* --include-scripts - adds the script tier to --report and --json (report
|
|
97
|
+
* only, does not affect --check's exit code).
|
|
98
|
+
*
|
|
99
|
+
* This is a dev-time check script, not one of Canon Part 11's four invocable
|
|
100
|
+
* surface classes (command, agent, pipeline, Decision-Gate skill), so R16's
|
|
101
|
+
* connector descriptor and hitl_shape declaration do not reach it.
|
|
102
|
+
*
|
|
103
|
+
* House rule: hyphens only, no em-dashes, no emoji.
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
const fs = require('node:fs');
|
|
107
|
+
const path = require('node:path');
|
|
108
|
+
|
|
109
|
+
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
110
|
+
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
// ALLOWLIST - the declared exception list.
|
|
113
|
+
//
|
|
114
|
+
// Each entry is { file, pattern, reason }:
|
|
115
|
+
// file - repo-relative path of the file the exception applies to
|
|
116
|
+
// pattern - a substring of the matched token; every violating token in `file`
|
|
117
|
+
// that contains this substring is suppressed
|
|
118
|
+
// reason - REQUIRED, non-empty. A gate that can be silenced anonymously is
|
|
119
|
+
// not a gate. validateAllowlist() throws at module load on any entry
|
|
120
|
+
// with a missing or empty reason (T-271-02), so an unreasoned
|
|
121
|
+
// suppression cannot even be imported, let alone shipped.
|
|
122
|
+
//
|
|
123
|
+
// Optional non-validated fields carried for traceability:
|
|
124
|
+
// ruling - the option id the human selected, so code and record cannot drift
|
|
125
|
+
// followup - the id of the registered follow-up that owns any residual risk
|
|
126
|
+
// this exception knowingly leaves in place
|
|
127
|
+
//
|
|
128
|
+
// SHIPPED EMPTY by plan 271-01. Populated by plan 271-02 with the /mos:radar
|
|
129
|
+
// disposition after the human ruling recorded in 271-AUDIT.md section 4.
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
const ALLOWLIST = [
|
|
132
|
+
{
|
|
133
|
+
// /mos:radar, ruled 2026-08-27. This is the ONE site in the 139-site sweep
|
|
134
|
+
// whose anchoring would change runtime WRITE behavior, which is why plan
|
|
135
|
+
// 271-02 exists at all. All 5 violating sites (commands/radar.md lines 51,
|
|
136
|
+
// 52, 77, 95, 99) cite references/capability-radar/, so one pattern covers
|
|
137
|
+
// the file. The reason below is quoted character-for-character in
|
|
138
|
+
// 271-AUDIT.md section 4; if you change it here, change it there too.
|
|
139
|
+
//
|
|
140
|
+
// KNOWN RESIDUAL RISK, owned not dropped: lines 51, 52, 95 and 99 are pure
|
|
141
|
+
// READS that a plain `/mos:radar` (no flags) or `/mos:radar --domain` from a
|
|
142
|
+
// user's Data Room still resolves against their cwd, so those two steps keep
|
|
143
|
+
// the file-meeting failure mode. That is deferred deliberately, not
|
|
144
|
+
// overlooked, and it is owned by FOLLOWUP-271-R1 (see below). Do NOT "fix"
|
|
145
|
+
// it by anchoring only the read sites: that splits one file's citations of
|
|
146
|
+
// the SAME file across two resolution bases, so after a --fetch the summary
|
|
147
|
+
// the user reads would never be the summary just written. Uniform exclusion
|
|
148
|
+
// now, a real read/write split later.
|
|
149
|
+
file: 'commands/radar.md',
|
|
150
|
+
pattern: 'references/capability-radar/',
|
|
151
|
+
reason:
|
|
152
|
+
'/mos:radar is a dev-repo-cwd operator command: line 77 WRITES this file and lines 64/73/74 ' +
|
|
153
|
+
'read and write the git-tracked data/capability-ledger.json it renders, so anchoring would ' +
|
|
154
|
+
'redirect writes into references/capability-radar/changelog-cache.md and ' +
|
|
155
|
+
'data/capability-ledger.json through ${CLAUDE_PLUGIN_ROOT}, which points at the plugin ' +
|
|
156
|
+
'install cache that gets wiped on every update - these are genuine writes to a git-tracked ' +
|
|
157
|
+
'source of record, not read-only citations, so this is a real exception, not a defect.',
|
|
158
|
+
ruling: 'option-d',
|
|
159
|
+
followup: 'FOLLOWUP-271-R1',
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
// REGISTERED_FOLLOWUPS - residual risk an ALLOWLIST entry knowingly leaves in
|
|
165
|
+
// place, with a named owner. An exception that defers a real defect and names
|
|
166
|
+
// nobody is how the defect gets lost; every `followup` id on an ALLOWLIST entry
|
|
167
|
+
// resolves here.
|
|
168
|
+
//
|
|
169
|
+
// This is a declaration, not a gate. It never affects the exit code, because a
|
|
170
|
+
// registered follow-up is a scheduling fact and not a code violation.
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
const REGISTERED_FOLLOWUPS = [
|
|
173
|
+
{
|
|
174
|
+
id: 'FOLLOWUP-271-R1',
|
|
175
|
+
title: 'Split /mos:radar into a dev-only --fetch write path and a user-safe anchored read path',
|
|
176
|
+
raisedBy: 'plan 271-02 (the option-d ruling, 2026-08-27)',
|
|
177
|
+
owner: 'repo navigator (the human who ruled option-d); registered into the ROADMAP by plan 271-05',
|
|
178
|
+
residualRisk:
|
|
179
|
+
'commands/radar.md lines 51, 52, 95 and 99 are pure reads reached by plain /mos:radar (Step 2) ' +
|
|
180
|
+
'and /mos:radar --domain (Step 4). A user invoking those from their own Data Room resolves them ' +
|
|
181
|
+
'against their cwd and hits exactly the file-meeting failure this phase exists to fix.',
|
|
182
|
+
whyDeferred:
|
|
183
|
+
'Anchoring only the read sites splits one file\'s citations of the SAME file across two ' +
|
|
184
|
+
'resolution bases, so after a --fetch the rendered summary a user reads would never be the ' +
|
|
185
|
+
'summary just written. That is a worse failure than either uniform choice, so the fix needs a ' +
|
|
186
|
+
'real read/write path split rather than a sed over four lines.',
|
|
187
|
+
recordedIn:
|
|
188
|
+
'.planning/phases/271-bare-reference-path-resolution-audit-45-of-113-commands-cite/271-AUDIT.md section 4',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: 'FOLLOWUP-274-R1',
|
|
192
|
+
title:
|
|
193
|
+
'Confirm whether an anchored (${...}-bearing) allowed-tools permission matcher pattern ' +
|
|
194
|
+
'matches correctly in Claude Code\'s matcher engine, then either anchor ' +
|
|
195
|
+
'commands/status.md:15\'s matcher to match its already-anchored body at line 67, or drop ' +
|
|
196
|
+
'the specific matcher for a bare Bash grant.',
|
|
197
|
+
raisedBy: 'plan 274-04 (Pitfall 5, the pre-existing matcher/body drift measured live this phase)',
|
|
198
|
+
owner: 'repo navigator',
|
|
199
|
+
residualRisk:
|
|
200
|
+
'A user with a strict tool-approval policy sees an unnecessary permission prompt on ' +
|
|
201
|
+
'/mos:status (degraded UX, not a functional failure -- commands/status.md:67 already ' +
|
|
202
|
+
'executes the anchored form correctly).',
|
|
203
|
+
whyDeferred:
|
|
204
|
+
'Matcher-engine ${...} pattern semantics are unconfirmed and this phase\'s own scope ' +
|
|
205
|
+
'explicitly forbids guessing at them; verified zero-blast-radius for the rest of this ' +
|
|
206
|
+
'phase\'s sweep (only status.md and its mirror carry a Bash(...scripts/...) matcher in the ' +
|
|
207
|
+
'whole tree).',
|
|
208
|
+
recordedIn:
|
|
209
|
+
'.planning/phases/274-bare-scripts-invocation-anchoring-the-adjacent-class-phase-2/274-04-SUMMARY.md',
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
id: 'FOLLOWUP-274-R2',
|
|
213
|
+
title:
|
|
214
|
+
'Decide whether the ${MINDRIAN_OS_ROOT:-${CLAUDE_PLUGIN_ROOT:?...}} fail-closed form ' +
|
|
215
|
+
'supersedes the older cwd-relative ./scripts/... prose-fallback convention in ' +
|
|
216
|
+
'commands/help.md and commands/eureka.md, repo-wide.',
|
|
217
|
+
raisedBy: 'plan 274-04 (Open Question 1)',
|
|
218
|
+
owner: 'repo navigator',
|
|
219
|
+
residualRisk:
|
|
220
|
+
'If CLAUDE_PLUGIN_ROOT is genuinely unset on a real surface, help/eureka fall back to a ' +
|
|
221
|
+
'cwd-relative path that only resolves by coincidence, the same class of failure this whole ' +
|
|
222
|
+
'phase exists to close, just deliberately scoped out of the sweep for these 2 files pending ' +
|
|
223
|
+
'this ruling.',
|
|
224
|
+
whyDeferred:
|
|
225
|
+
'Changing documented fallback behavior is a design decision, not a mechanical anchoring ' +
|
|
226
|
+
'fix, and is out of scope for a phase whose job is anchoring, not redesigning fallback ' +
|
|
227
|
+
'semantics.',
|
|
228
|
+
recordedIn:
|
|
229
|
+
'.planning/phases/274-bare-scripts-invocation-anchoring-the-adjacent-class-phase-2/274-04-SUMMARY.md',
|
|
230
|
+
},
|
|
231
|
+
];
|
|
232
|
+
|
|
233
|
+
function validateAllowlist(list) {
|
|
234
|
+
if (!Array.isArray(list)) {
|
|
235
|
+
throw new Error('check-plugin-path-anchoring: ALLOWLIST must be an array');
|
|
236
|
+
}
|
|
237
|
+
list.forEach((entry, i) => {
|
|
238
|
+
if (!entry || typeof entry !== 'object') {
|
|
239
|
+
throw new Error(`check-plugin-path-anchoring: ALLOWLIST[${i}] is not an object`);
|
|
240
|
+
}
|
|
241
|
+
if (typeof entry.file !== 'string' || entry.file.trim() === '') {
|
|
242
|
+
throw new Error(`check-plugin-path-anchoring: ALLOWLIST[${i}] has no file`);
|
|
243
|
+
}
|
|
244
|
+
if (typeof entry.pattern !== 'string' || entry.pattern.trim() === '') {
|
|
245
|
+
throw new Error(`check-plugin-path-anchoring: ALLOWLIST[${i}] has no pattern`);
|
|
246
|
+
}
|
|
247
|
+
if (typeof entry.reason !== 'string' || entry.reason.trim() === '') {
|
|
248
|
+
throw new Error(
|
|
249
|
+
`check-plugin-path-anchoring: ALLOWLIST[${i}] (${entry.file}) has no written reason. ` +
|
|
250
|
+
'Every exception must carry a non-empty reason so the gate cannot be silenced anonymously.'
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
// An optional followup id must RESOLVE. A dangling id is worse than none:
|
|
254
|
+
// it reads as owned while owning nothing.
|
|
255
|
+
if (typeof entry.followup === 'string' && entry.followup.trim() !== '') {
|
|
256
|
+
if (!REGISTERED_FOLLOWUPS.some((f) => f.id === entry.followup)) {
|
|
257
|
+
throw new Error(
|
|
258
|
+
`check-plugin-path-anchoring: ALLOWLIST[${i}] (${entry.file}) names followup ` +
|
|
259
|
+
`"${entry.followup}", which is not in REGISTERED_FOLLOWUPS. Register it with an owner ` +
|
|
260
|
+
'or remove the reference.'
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
return list;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
validateAllowlist(ALLOWLIST);
|
|
269
|
+
|
|
270
|
+
// ---------------------------------------------------------------------------
|
|
271
|
+
// SCRIPT_ALLOWLIST - the script tier's own exception list, same shape and
|
|
272
|
+
// same validator as ALLOWLIST above (Canon Part 7: reuse validateAllowlist(),
|
|
273
|
+
// never write a second one). SHIPPED EMPTY by plan 274-01, exactly as
|
|
274
|
+
// ALLOWLIST shipped empty from plan 271-01 and was populated by a later plan.
|
|
275
|
+
//
|
|
276
|
+
// Plan 274-04 populates this array with the deliberate `./scripts/` fallback
|
|
277
|
+
// exceptions in commands/help.md and commands/eureka.md (274-RESEARCH.md
|
|
278
|
+
// Pitfall 3): those lines document behavior for the CLAUDE_PLUGIN_ROOT-unset
|
|
279
|
+
// case, so anchoring them would be nonsense (an anchored fallback for an
|
|
280
|
+
// unset anchor). Do not add speculative entries here ahead of that plan.
|
|
281
|
+
// ---------------------------------------------------------------------------
|
|
282
|
+
const SCRIPT_ALLOWLIST = [
|
|
283
|
+
{
|
|
284
|
+
// commands/help.md lines 77 and 87 (and their generated mirror, structurally
|
|
285
|
+
// excluded from this scanner's surface enumeration -- see the mirror-skip
|
|
286
|
+
// comment above). These are the DOCUMENTED fallback behavior for the
|
|
287
|
+
// CLAUDE_PLUGIN_ROOT-unset case ("Fall back to `node ./scripts/help-
|
|
288
|
+
// renderer.cjs ...` if CLAUDE_PLUGIN_ROOT is unset"), not an authoring
|
|
289
|
+
// mistake. Anchoring a fallback for an unset anchor is nonsensical: the
|
|
290
|
+
// whole point of the fallback line is to still work when
|
|
291
|
+
// ${CLAUDE_PLUGIN_ROOT} has nothing to expand to. The newer fail-closed
|
|
292
|
+
// `:?` form may supersede this convention entirely -- that is a design
|
|
293
|
+
// question this plan defers rather than guesses at (FOLLOWUP-274-R2).
|
|
294
|
+
file: 'commands/help.md',
|
|
295
|
+
pattern: 'scripts/help-renderer.cjs',
|
|
296
|
+
reason:
|
|
297
|
+
'This is the DOCUMENTED fallback behavior for the CLAUDE_PLUGIN_ROOT-unset case ' +
|
|
298
|
+
'("Fall back to `node ./scripts/help-renderer.cjs ...` if CLAUDE_PLUGIN_ROOT is unset"), not ' +
|
|
299
|
+
'an authoring mistake. Anchoring a fallback for an unset anchor is nonsensical -- the whole ' +
|
|
300
|
+
'point of the fallback is to still work when ${CLAUDE_PLUGIN_ROOT} has nothing to expand to. ' +
|
|
301
|
+
'The newer fail-closed `:?` form may supersede this prose-fallback convention entirely, which ' +
|
|
302
|
+
'is a design question this plan defers rather than guesses at.',
|
|
303
|
+
ruling: 'allowlisted (274-04)',
|
|
304
|
+
followup: 'FOLLOWUP-274-R2',
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
// commands/eureka.md line 76 (and its generated mirror, structurally
|
|
308
|
+
// excluded). Same reasoning as the help.md entry above: "When
|
|
309
|
+
// CLAUDE_PLUGIN_ROOT is unset, fall back to `./scripts/resolve-room`."
|
|
310
|
+
file: 'commands/eureka.md',
|
|
311
|
+
pattern: 'scripts/resolve-room',
|
|
312
|
+
reason:
|
|
313
|
+
'This is the DOCUMENTED fallback behavior for the CLAUDE_PLUGIN_ROOT-unset case ("When ' +
|
|
314
|
+
'CLAUDE_PLUGIN_ROOT is unset, fall back to `./scripts/resolve-room`"), not an authoring ' +
|
|
315
|
+
'mistake. Anchoring a fallback for an unset anchor is nonsensical -- the whole point of the ' +
|
|
316
|
+
'fallback is to still work when ${CLAUDE_PLUGIN_ROOT} has nothing to expand to. The newer ' +
|
|
317
|
+
'fail-closed `:?` form may supersede this prose-fallback convention entirely, which is a ' +
|
|
318
|
+
'design question this plan defers rather than guesses at.',
|
|
319
|
+
ruling: 'allowlisted (274-04)',
|
|
320
|
+
followup: 'FOLLOWUP-274-R2',
|
|
321
|
+
},
|
|
322
|
+
];
|
|
323
|
+
|
|
324
|
+
validateAllowlist(SCRIPT_ALLOWLIST);
|
|
325
|
+
|
|
326
|
+
// ---------------------------------------------------------------------------
|
|
327
|
+
// Lexical predicate pieces.
|
|
328
|
+
//
|
|
329
|
+
// T-271-01: every quantifier below is BOUNDED and no quantifier is nested inside
|
|
330
|
+
// another quantifier, so no crafted markdown line can force catastrophic
|
|
331
|
+
// backtracking. The whole scan is a single left-to-right indexOf walk per line.
|
|
332
|
+
// ---------------------------------------------------------------------------
|
|
333
|
+
|
|
334
|
+
const NEEDLE = 'references/';
|
|
335
|
+
|
|
336
|
+
// The two accepted anchor prefixes, matched against the text ENDING at the token.
|
|
337
|
+
const ANCHOR_SHORT_RE = /\$\{CLAUDE_PLUGIN_ROOT\}\/$/;
|
|
338
|
+
const ANCHOR_LONG_RE = /\$\{MINDRIAN_OS_ROOT:-\$\{CLAUDE_PLUGIN_ROOT:[^}\n]{0,120}\}\}\/$/;
|
|
339
|
+
|
|
340
|
+
// The cited path itself, anchored at the needle. Bounded, single character class.
|
|
341
|
+
const PATH_TAIL_RE = /^references\/[A-Za-z0-9._@*{}/-]{1,200}/;
|
|
342
|
+
|
|
343
|
+
// A citation verb (optionally wrapped in markdown bold) ending the text before
|
|
344
|
+
// the token. "**Optionally read** `references/...`" and "Read `references/...`"
|
|
345
|
+
// both qualify.
|
|
346
|
+
const TRIGGER_WORD_RE = /(?:^|[\s(*_"'>-])(?:Read|read|load|loaded|see|See|per|from)\**[:,]?\s+$/;
|
|
347
|
+
|
|
348
|
+
// A leading markdown list number ending the text before the token: "1. ", "12. **".
|
|
349
|
+
const LIST_NUMBER_RE = /^\s{0,8}\d{1,3}\.\s{0,4}\**$/;
|
|
350
|
+
|
|
351
|
+
// A character that means the needle is the TAIL of a longer path (docs/references/...).
|
|
352
|
+
const PATH_CHAR_RE = /[A-Za-z0-9._-]$/;
|
|
353
|
+
|
|
354
|
+
// Script tier: a scripts/ invocation, widened per ANCHOR-01 from the two-verb
|
|
355
|
+
// `bash|node` form to the full verb set actually present in the tree
|
|
356
|
+
// (274-RESEARCH.md Pitfall 2: a predicate scoped to `bash|node` is invisible
|
|
357
|
+
// to `python3 scripts/render-pdf`). Group 1 = verb, group 2 = optional
|
|
358
|
+
// opening quote, group 3 = an optional anchor prefix (the long fail-closed
|
|
359
|
+
// form, the short form, or a bare `./`) captured so scanScriptInvocations can
|
|
360
|
+
// classify WHICH case fired, group 4 = the script name. Every quantifier is
|
|
361
|
+
// bounded or a single unnested class (T-271-01's no-catastrophic-backtracking
|
|
362
|
+
// constraint, reused verbatim: the `{0,120}` bound inside the long-anchor
|
|
363
|
+
// alternative is the same magnitude the citation tier already uses).
|
|
364
|
+
const SCRIPT_ANCHOR_LONG_TXT = '\\$\\{MINDRIAN_OS_ROOT:-\\$\\{CLAUDE_PLUGIN_ROOT:[^}\\n]{0,120}\\}\\}/';
|
|
365
|
+
const SCRIPT_ANCHOR_SHORT_TXT = '\\$\\{CLAUDE_PLUGIN_ROOT\\}/';
|
|
366
|
+
const SCRIPT_INVOKE_RE = new RegExp(
|
|
367
|
+
`\\b(bash|sh|node|npx|python3|python)\\s+(["']?)(${SCRIPT_ANCHOR_LONG_TXT}|${SCRIPT_ANCHOR_SHORT_TXT}|\\./)?` +
|
|
368
|
+
'scripts/([A-Za-z0-9._-]{1,120})',
|
|
369
|
+
'g'
|
|
370
|
+
);
|
|
371
|
+
// The two accepted script-tier anchor prefixes, siblings of the citation
|
|
372
|
+
// tier's ANCHOR_SHORT_RE/ANCHOR_LONG_RE, anchored at scripts/ instead of
|
|
373
|
+
// references/. Tested against SCRIPT_INVOKE_RE's own group 3 capture.
|
|
374
|
+
const SCRIPT_ANCHOR_SHORT_RE = /^\$\{CLAUDE_PLUGIN_ROOT\}\/$/;
|
|
375
|
+
const SCRIPT_ANCHOR_LONG_RE = /^\$\{MINDRIAN_OS_ROOT:-\$\{CLAUDE_PLUGIN_ROOT:[^}\n]{0,120}\}\}\/$/;
|
|
376
|
+
// An allowed-tools permission matcher opening, ending at the match.
|
|
377
|
+
// NOTE (FOLLOWUP-274-R1): commands/status.md:15 declares a bare, unanchored
|
|
378
|
+
// matcher `Bash(node scripts/mos-status.cjs:*)` while the body at line 67
|
|
379
|
+
// already executes the anchored form. This is a pre-existing matcher/body
|
|
380
|
+
// drift, NOT fixed in this phase because anchored ${...}-bearing matcher
|
|
381
|
+
// semantics in Claude Code's own matcher engine are unconfirmed -- see
|
|
382
|
+
// REGISTERED_FOLLOWUPS['FOLLOWUP-274-R1'] for the full evidence and owner.
|
|
383
|
+
const PERMISSION_MATCHER_RE = /(?:Bash|Read|Write|Edit)\([^)\n]{0,120}$/;
|
|
384
|
+
|
|
385
|
+
// ---------------------------------------------------------------------------
|
|
386
|
+
// Helpers.
|
|
387
|
+
// ---------------------------------------------------------------------------
|
|
388
|
+
|
|
389
|
+
function stripTrailingPunctuation(token) {
|
|
390
|
+
let out = token;
|
|
391
|
+
while (out.length > 1 && '.,;:)`\'"'.includes(out[out.length - 1])) {
|
|
392
|
+
// A real citation ends in an extension, so a trailing dot is punctuation only
|
|
393
|
+
// when it is not part of ".md" / ".json" etc. Peel one char at a time and stop
|
|
394
|
+
// as soon as the tail looks like an extension.
|
|
395
|
+
if (/\.[A-Za-z0-9]{1,6}$/.test(out) && out[out.length - 1] !== '.') break;
|
|
396
|
+
out = out.slice(0, -1);
|
|
397
|
+
}
|
|
398
|
+
return out;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
function classifyTarget(token, root) {
|
|
402
|
+
if (token.includes('{') || token.includes('*')) return 'TEMPLATE-TARGET';
|
|
403
|
+
const abs = path.join(root || REPO_ROOT, token);
|
|
404
|
+
if (!fs.existsSync(abs)) return 'MISSING-TARGET';
|
|
405
|
+
return fs.statSync(abs).isDirectory() ? 'DIR' : 'OK';
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
function isAllowlisted(relFile, token, list) {
|
|
409
|
+
return list.some((e) => e.file === relFile && token.includes(e.pattern));
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* Scan a single line for reference citation sites.
|
|
414
|
+
* Returns an array of { token, anchored, why, target }.
|
|
415
|
+
*/
|
|
416
|
+
function scanLine(line, root) {
|
|
417
|
+
const hits = [];
|
|
418
|
+
let from = 0;
|
|
419
|
+
for (;;) {
|
|
420
|
+
const idx = line.indexOf(NEEDLE, from);
|
|
421
|
+
if (idx === -1) break;
|
|
422
|
+
from = idx + NEEDLE.length;
|
|
423
|
+
|
|
424
|
+
const head = line.slice(0, idx);
|
|
425
|
+
|
|
426
|
+
// Is this needle already anchored?
|
|
427
|
+
let anchored = false;
|
|
428
|
+
let tokenStart = idx;
|
|
429
|
+
const shortM = head.match(ANCHOR_SHORT_RE);
|
|
430
|
+
const longM = head.match(ANCHOR_LONG_RE);
|
|
431
|
+
if (longM) {
|
|
432
|
+
anchored = true;
|
|
433
|
+
tokenStart = idx - longM[0].length;
|
|
434
|
+
} else if (shortM) {
|
|
435
|
+
anchored = true;
|
|
436
|
+
tokenStart = idx - shortM[0].length;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Not anchored and preceded by a path character means this needle is the tail
|
|
440
|
+
// of some OTHER path (docs/references/..., .planning/references/...), not a
|
|
441
|
+
// plugin-root citation.
|
|
442
|
+
if (!anchored && PATH_CHAR_RE.test(head)) continue;
|
|
443
|
+
if (!anchored && head.endsWith('/')) continue;
|
|
444
|
+
|
|
445
|
+
const tailM = PATH_TAIL_RE.exec(line.slice(idx));
|
|
446
|
+
if (!tailM) continue;
|
|
447
|
+
const token = stripTrailingPunctuation(tailM[0]);
|
|
448
|
+
const tokenEnd = idx + tailM[0].length;
|
|
449
|
+
|
|
450
|
+
// Citation context (predicate a).
|
|
451
|
+
const before = line.slice(0, tokenStart);
|
|
452
|
+
const backticked = tokenStart > 0 && line[tokenStart - 1] === '`' && line.indexOf('`', tokenEnd - 1) !== -1;
|
|
453
|
+
const triggered = TRIGGER_WORD_RE.test(before);
|
|
454
|
+
const listNumbered = LIST_NUMBER_RE.test(before);
|
|
455
|
+
|
|
456
|
+
if (!backticked && !triggered && !listNumbered) continue;
|
|
457
|
+
|
|
458
|
+
hits.push({
|
|
459
|
+
token,
|
|
460
|
+
anchored,
|
|
461
|
+
why: backticked ? 'backtick' : triggered ? 'citation-verb' : 'list-number',
|
|
462
|
+
target: classifyTarget(token, root),
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
return hits;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Scan one surface (a named list of repo-relative files).
|
|
470
|
+
* Returns { name, files: [...], sites, violations, anchored, byFile }.
|
|
471
|
+
*/
|
|
472
|
+
function scanSurface(name, relFiles, opts) {
|
|
473
|
+
const options = opts || {};
|
|
474
|
+
const list = options.allowlist || ALLOWLIST;
|
|
475
|
+
const sites = [];
|
|
476
|
+
for (const rel of relFiles) {
|
|
477
|
+
const abs = path.isAbsolute(rel) ? rel : path.join(options.root || REPO_ROOT, rel);
|
|
478
|
+
let text;
|
|
479
|
+
try {
|
|
480
|
+
text = fs.readFileSync(abs, 'utf8');
|
|
481
|
+
} catch {
|
|
482
|
+
continue;
|
|
483
|
+
}
|
|
484
|
+
const lines = text.split('\n');
|
|
485
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
486
|
+
for (const hit of scanLine(lines[i], options.root || REPO_ROOT)) {
|
|
487
|
+
sites.push({
|
|
488
|
+
surface: name,
|
|
489
|
+
file: rel,
|
|
490
|
+
line: i + 1,
|
|
491
|
+
token: hit.token,
|
|
492
|
+
anchored: hit.anchored,
|
|
493
|
+
why: hit.why,
|
|
494
|
+
target: hit.target,
|
|
495
|
+
allowlisted: !hit.anchored && isAllowlisted(rel, hit.token, list),
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
const violations = sites.filter((s) => !s.anchored && !s.allowlisted);
|
|
501
|
+
return {
|
|
502
|
+
name,
|
|
503
|
+
files: relFiles,
|
|
504
|
+
sites,
|
|
505
|
+
violations,
|
|
506
|
+
anchored: sites.filter((s) => s.anchored),
|
|
507
|
+
allowlisted: sites.filter((s) => s.allowlisted),
|
|
508
|
+
filesWithViolations: [...new Set(violations.map((v) => v.file))],
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Scan the script tier over the same files (ANCHOR-01). Each site now
|
|
514
|
+
* carries `anchored` / `allowlisted` / `target`, the same classification
|
|
515
|
+
* shape the citation tier's scanSurface() already has, so the report carries
|
|
516
|
+
* an honest denominator instead of a raw match count (274-RESEARCH.md
|
|
517
|
+
* Pattern 3: "deleting a line and anchoring a line look identical" was the
|
|
518
|
+
* pre-274 weakness this closes).
|
|
519
|
+
*/
|
|
520
|
+
function scanScriptInvocations(name, relFiles, root) {
|
|
521
|
+
const base = root || REPO_ROOT;
|
|
522
|
+
const sites = [];
|
|
523
|
+
let excluded = 0;
|
|
524
|
+
for (const rel of relFiles) {
|
|
525
|
+
const abs = path.isAbsolute(rel) ? rel : path.join(base, rel);
|
|
526
|
+
let text;
|
|
527
|
+
try {
|
|
528
|
+
text = fs.readFileSync(abs, 'utf8');
|
|
529
|
+
} catch {
|
|
530
|
+
continue;
|
|
531
|
+
}
|
|
532
|
+
const lines = text.split('\n');
|
|
533
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
534
|
+
const line = lines[i];
|
|
535
|
+
SCRIPT_INVOKE_RE.lastIndex = 0;
|
|
536
|
+
let m;
|
|
537
|
+
while ((m = SCRIPT_INVOKE_RE.exec(line)) !== null) {
|
|
538
|
+
const head = line.slice(0, m.index);
|
|
539
|
+
if (PERMISSION_MATCHER_RE.test(head)) {
|
|
540
|
+
excluded += 1;
|
|
541
|
+
continue;
|
|
542
|
+
}
|
|
543
|
+
const prefix = m[3] || '';
|
|
544
|
+
const anchored = SCRIPT_ANCHOR_SHORT_RE.test(prefix) || SCRIPT_ANCHOR_LONG_RE.test(prefix);
|
|
545
|
+
const token = `scripts/${m[4]}`;
|
|
546
|
+
sites.push({
|
|
547
|
+
surface: name,
|
|
548
|
+
file: rel,
|
|
549
|
+
line: i + 1,
|
|
550
|
+
token,
|
|
551
|
+
anchored,
|
|
552
|
+
allowlisted: !anchored && isAllowlisted(rel, token, SCRIPT_ALLOWLIST),
|
|
553
|
+
target: classifyTarget(token, base),
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
const violations = sites.filter((s) => !s.anchored && !s.allowlisted);
|
|
559
|
+
return {
|
|
560
|
+
name,
|
|
561
|
+
sites,
|
|
562
|
+
excluded,
|
|
563
|
+
violations,
|
|
564
|
+
anchored: sites.filter((s) => s.anchored),
|
|
565
|
+
allowlisted: sites.filter((s) => s.allowlisted),
|
|
566
|
+
};
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// ---------------------------------------------------------------------------
|
|
570
|
+
// Surface enumeration.
|
|
571
|
+
// ---------------------------------------------------------------------------
|
|
572
|
+
|
|
573
|
+
function listMd(dirRel, root) {
|
|
574
|
+
const dir = path.join(root || REPO_ROOT, dirRel);
|
|
575
|
+
if (!fs.existsSync(dir)) return [];
|
|
576
|
+
return fs
|
|
577
|
+
.readdirSync(dir)
|
|
578
|
+
.filter((f) => f.endsWith('.md'))
|
|
579
|
+
.sort()
|
|
580
|
+
.map((f) => path.posix.join(dirRel, f));
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
function listMdRecursive(dirRel, root) {
|
|
584
|
+
const base = root || REPO_ROOT;
|
|
585
|
+
const dir = path.join(base, dirRel);
|
|
586
|
+
if (!fs.existsSync(dir)) return [];
|
|
587
|
+
const out = [];
|
|
588
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
589
|
+
const rel = path.posix.join(dirRel, entry.name);
|
|
590
|
+
if (entry.isDirectory()) out.push(...listMdRecursive(rel, base));
|
|
591
|
+
else if (entry.name.endsWith('.md')) out.push(rel);
|
|
592
|
+
}
|
|
593
|
+
return out;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
// Mirror-generator parity: scripts/build-skill-mirrors.cjs mirrors every
|
|
597
|
+
// commands/<name>.md except its SKIP_LIST. Kept as a literal here rather than
|
|
598
|
+
// required from the generator so this gate stays a pure lexical scanner with no
|
|
599
|
+
// cross-script import; tests/test-271-plugin-path-anchoring.cjs does not depend
|
|
600
|
+
// on it, and any drift shows up as a skills-group count change in --report.
|
|
601
|
+
const MIRROR_SKIP_LIST = ['trending-to-absurd'];
|
|
602
|
+
|
|
603
|
+
function handAuthoredSkills(root) {
|
|
604
|
+
const base = root || REPO_ROOT;
|
|
605
|
+
const skillsDir = path.join(base, 'skills');
|
|
606
|
+
const commandsDir = path.join(base, 'commands');
|
|
607
|
+
if (!fs.existsSync(skillsDir)) return [];
|
|
608
|
+
return fs
|
|
609
|
+
.readdirSync(skillsDir, { withFileTypes: true })
|
|
610
|
+
.filter((d) => d.isDirectory())
|
|
611
|
+
.map((d) => d.name)
|
|
612
|
+
.sort()
|
|
613
|
+
.filter((name) => {
|
|
614
|
+
const skillFile = path.join(skillsDir, name, 'SKILL.md');
|
|
615
|
+
if (!fs.existsSync(skillFile)) return false;
|
|
616
|
+
const isMirrored = fs.existsSync(path.join(commandsDir, `${name}.md`)) && !MIRROR_SKIP_LIST.includes(name);
|
|
617
|
+
return !isMirrored;
|
|
618
|
+
})
|
|
619
|
+
.map((name) => path.posix.join('skills', name, 'SKILL.md'));
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
function enumerateSurfaces(root) {
|
|
623
|
+
return [
|
|
624
|
+
{ name: 'commands', files: listMd('commands', root) },
|
|
625
|
+
{ name: 'skills (hand-authored, mirrors excluded)', files: handAuthoredSkills(root) },
|
|
626
|
+
{ name: 'agents', files: listMd('agents', root) },
|
|
627
|
+
{ name: 'pipelines', files: listMdRecursive('pipelines', root) },
|
|
628
|
+
];
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
function runScan(opts) {
|
|
632
|
+
const options = opts || {};
|
|
633
|
+
const root = options.root || REPO_ROOT;
|
|
634
|
+
const groups = enumerateSurfaces(root).map((s) =>
|
|
635
|
+
scanSurface(s.name, s.files, { root, allowlist: options.allowlist || ALLOWLIST })
|
|
636
|
+
);
|
|
637
|
+
const result = {
|
|
638
|
+
root,
|
|
639
|
+
groups,
|
|
640
|
+
totals: {
|
|
641
|
+
files: groups.reduce((n, g) => n + g.files.length, 0),
|
|
642
|
+
sites: groups.reduce((n, g) => n + g.sites.length, 0),
|
|
643
|
+
violations: groups.reduce((n, g) => n + g.violations.length, 0),
|
|
644
|
+
anchored: groups.reduce((n, g) => n + g.anchored.length, 0),
|
|
645
|
+
allowlisted: groups.reduce((n, g) => n + g.allowlisted.length, 0),
|
|
646
|
+
missingTarget: groups.reduce((n, g) => n + g.violations.filter((v) => v.target === 'MISSING-TARGET').length, 0),
|
|
647
|
+
templateTarget: groups.reduce((n, g) => n + g.violations.filter((v) => v.target === 'TEMPLATE-TARGET').length, 0),
|
|
648
|
+
},
|
|
649
|
+
};
|
|
650
|
+
if (options.includeScripts) {
|
|
651
|
+
result.advisory = enumerateSurfaces(root).map((s) => scanScriptInvocations(s.name, s.files, root));
|
|
652
|
+
result.advisoryTotals = {
|
|
653
|
+
sites: result.advisory.reduce((n, g) => n + g.sites.length, 0),
|
|
654
|
+
excluded: result.advisory.reduce((n, g) => n + g.excluded, 0),
|
|
655
|
+
violations: result.advisory.reduce((n, g) => n + g.violations.length, 0),
|
|
656
|
+
anchored: result.advisory.reduce((n, g) => n + g.anchored.length, 0),
|
|
657
|
+
allowlisted: result.advisory.reduce((n, g) => n + g.allowlisted.length, 0),
|
|
658
|
+
missingTarget: result.advisory.reduce(
|
|
659
|
+
(n, g) => n + g.violations.filter((v) => v.target === 'MISSING-TARGET').length,
|
|
660
|
+
0
|
|
661
|
+
),
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
return result;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
// ---------------------------------------------------------------------------
|
|
668
|
+
// Reporting.
|
|
669
|
+
// ---------------------------------------------------------------------------
|
|
670
|
+
|
|
671
|
+
const RECOVERY =
|
|
672
|
+
'Recovery: anchor each citation with ${CLAUDE_PLUGIN_ROOT}/ (commands, agents) or the ' +
|
|
673
|
+
'fail-closed ${MINDRIAN_OS_ROOT:-${CLAUDE_PLUGIN_ROOT:?...}}/ form (hand-authored skills), ' +
|
|
674
|
+
'or add a reasoned ALLOWLIST entry.';
|
|
675
|
+
|
|
676
|
+
const SCRIPT_RECOVERY =
|
|
677
|
+
'Recovery: prefix each scripts/ invocation with ${CLAUDE_PLUGIN_ROOT}/ (commands, agents, ' +
|
|
678
|
+
'pipelines) or the fail-closed ${MINDRIAN_OS_ROOT:-${CLAUDE_PLUGIN_ROOT:?...}}/ form ' +
|
|
679
|
+
'(hand-authored skills), then regenerate mirrors with build-skill-mirrors.cjs, or add a ' +
|
|
680
|
+
'reasoned SCRIPT_ALLOWLIST entry.';
|
|
681
|
+
|
|
682
|
+
function printReport(scan, opts) {
|
|
683
|
+
const violationsOnly = (opts || {}).violationsOnly === true;
|
|
684
|
+
for (const g of scan.groups) {
|
|
685
|
+
const rows = violationsOnly ? g.violations : g.sites;
|
|
686
|
+
console.log(`\n=== ${g.name} === (${g.files.length} files scanned)`);
|
|
687
|
+
if (rows.length === 0) {
|
|
688
|
+
console.log(' (none)');
|
|
689
|
+
}
|
|
690
|
+
for (const s of rows) {
|
|
691
|
+
const tags = [s.target];
|
|
692
|
+
if (s.anchored) tags.push('ANCHORED');
|
|
693
|
+
if (s.allowlisted) tags.push('ALLOWLISTED');
|
|
694
|
+
console.log(` ${s.file}:${s.line} ${s.token} [${tags.join(' ')}] (${s.why})`);
|
|
695
|
+
}
|
|
696
|
+
console.log(
|
|
697
|
+
` -- ${g.name}: sites=${g.sites.length} violations=${g.violations.length} ` +
|
|
698
|
+
`anchored=${g.anchored.length} allowlisted=${g.allowlisted.length} ` +
|
|
699
|
+
`filesWithViolations=${g.filesWithViolations.length}`
|
|
700
|
+
);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
if (scan.advisory) {
|
|
704
|
+
console.log('\n=== SCRIPT TIER: scripts/ invocations (informational under --report, gated under --check-scripts) ===');
|
|
705
|
+
for (const g of scan.advisory) {
|
|
706
|
+
const rows = violationsOnly ? g.violations : g.sites;
|
|
707
|
+
for (const s of rows) {
|
|
708
|
+
const tags = [s.target];
|
|
709
|
+
if (s.anchored) tags.push('ANCHORED');
|
|
710
|
+
if (s.allowlisted) tags.push('ALLOWLISTED');
|
|
711
|
+
console.log(` ${s.file}:${s.line} ${s.token} [${tags.join(' ')}]`);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
console.log(
|
|
715
|
+
` -- script tier: sites=${scan.advisoryTotals.sites} anchored=${scan.advisoryTotals.anchored} ` +
|
|
716
|
+
`allowlisted=${scan.advisoryTotals.allowlisted} violations=${scan.advisoryTotals.violations} ` +
|
|
717
|
+
`permission-matcher exclusions=${scan.advisoryTotals.excluded}`
|
|
718
|
+
);
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
console.log('\n=== TOTALS ===');
|
|
722
|
+
console.log(` files scanned : ${scan.totals.files}`);
|
|
723
|
+
console.log(` citation sites : ${scan.totals.sites}`);
|
|
724
|
+
console.log(` already anchored : ${scan.totals.anchored}`);
|
|
725
|
+
console.log(` allowlisted : ${scan.totals.allowlisted}`);
|
|
726
|
+
console.log(` VIOLATIONS : ${scan.totals.violations}`);
|
|
727
|
+
// Lowercase on purpose: the UPPERCASE token MISSING-TARGET must appear in the
|
|
728
|
+
// output ONLY as a per-site tag, so `--report | grep -c 'MISSING-TARGET'` is an
|
|
729
|
+
// honest count of dangling citations and not inflated by this summary label.
|
|
730
|
+
console.log(` of which missing-target: ${scan.totals.missingTarget}`);
|
|
731
|
+
console.log(` of which template-target: ${scan.totals.templateTarget}`);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
function main(argv) {
|
|
735
|
+
const args = argv.slice(2);
|
|
736
|
+
const includeScripts = args.includes('--include-scripts') || args.includes('--check-scripts');
|
|
737
|
+
const scan = runScan({ includeScripts });
|
|
738
|
+
|
|
739
|
+
let mode = 'report';
|
|
740
|
+
for (const a of args) {
|
|
741
|
+
switch (a) {
|
|
742
|
+
case '--check':
|
|
743
|
+
mode = 'check';
|
|
744
|
+
break;
|
|
745
|
+
case '--check-scripts':
|
|
746
|
+
mode = 'check-scripts';
|
|
747
|
+
break;
|
|
748
|
+
case '--json':
|
|
749
|
+
mode = 'json';
|
|
750
|
+
break;
|
|
751
|
+
case '--report':
|
|
752
|
+
mode = 'report';
|
|
753
|
+
break;
|
|
754
|
+
case '--include-scripts':
|
|
755
|
+
break;
|
|
756
|
+
case '--help':
|
|
757
|
+
case '-h':
|
|
758
|
+
mode = 'help';
|
|
759
|
+
break;
|
|
760
|
+
default:
|
|
761
|
+
if (a.startsWith('--')) {
|
|
762
|
+
console.error(`unknown flag: ${a}`);
|
|
763
|
+
return 2;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
if (mode === 'help') {
|
|
769
|
+
console.log(
|
|
770
|
+
'usage: check-plugin-path-anchoring.cjs [--report|--check|--check-scripts|--json] [--include-scripts]'
|
|
771
|
+
);
|
|
772
|
+
return 0;
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
if (mode === 'json') {
|
|
776
|
+
console.log(JSON.stringify(scan, null, 2));
|
|
777
|
+
return 0;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
if (mode === 'check') {
|
|
781
|
+
printReport(scan, { violationsOnly: true });
|
|
782
|
+
if (scan.totals.violations > 0) {
|
|
783
|
+
console.error(`\nFAIL: ${scan.totals.violations} unanchored plugin-relative references/ citation(s).`);
|
|
784
|
+
console.error(RECOVERY);
|
|
785
|
+
return 1;
|
|
786
|
+
}
|
|
787
|
+
console.log('\nOK: every plugin-relative references/ citation is anchored or allowlisted.');
|
|
788
|
+
return 0;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
if (mode === 'check-scripts') {
|
|
792
|
+
// The script tier's own gate (ANCHOR-01). This NEVER touches
|
|
793
|
+
// scan.totals.violations (the citation tier) -- the two tiers stay
|
|
794
|
+
// independently gateable, per the phase's own two-tiers-two-verdicts
|
|
795
|
+
// design (a Read citation and a Bash invocation fail differently and
|
|
796
|
+
// need different recovery text).
|
|
797
|
+
printReport(scan, { violationsOnly: true });
|
|
798
|
+
if (scan.advisoryTotals.violations > 0) {
|
|
799
|
+
console.error(`\nFAIL: ${scan.advisoryTotals.violations} unanchored plugin-relative scripts/ invocation(s).`);
|
|
800
|
+
console.error(SCRIPT_RECOVERY);
|
|
801
|
+
return 1;
|
|
802
|
+
}
|
|
803
|
+
console.log('\nOK: every plugin-relative scripts/ invocation is anchored or allowlisted.');
|
|
804
|
+
return 0;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
printReport(scan, { violationsOnly: false });
|
|
808
|
+
return 0;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
module.exports = {
|
|
812
|
+
ALLOWLIST,
|
|
813
|
+
SCRIPT_ALLOWLIST,
|
|
814
|
+
REGISTERED_FOLLOWUPS,
|
|
815
|
+
validateAllowlist,
|
|
816
|
+
scanLine,
|
|
817
|
+
scanSurface,
|
|
818
|
+
scanScriptInvocations,
|
|
819
|
+
handAuthoredSkills,
|
|
820
|
+
enumerateSurfaces,
|
|
821
|
+
runScan,
|
|
822
|
+
main,
|
|
823
|
+
REPO_ROOT,
|
|
824
|
+
RECOVERY,
|
|
825
|
+
SCRIPT_RECOVERY,
|
|
826
|
+
};
|
|
827
|
+
|
|
828
|
+
if (require.main === module) {
|
|
829
|
+
process.exit(main(process.argv));
|
|
830
|
+
}
|