@mindrian_os/cli 2.0.0-beta.29 → 2.0.0-beta.31
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 +41 -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 +2365 -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 +217 -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 +545 -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 +536 -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 +530 -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 +2113 -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 +218 -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/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 +1942 -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-brain +438 -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 +383 -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 +570 -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,939 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2026 Mindrian. BSL 1.1.
|
|
5
|
+
*
|
|
6
|
+
* Phase 166-02 -- chain-executor.cjs (EXEC-01 / EXEC-02 / EXEC-03 / EXEC-04 / EXEC-06)
|
|
7
|
+
* ===================================================================================
|
|
8
|
+
* runChain is the ONE shared gated loop in lib/core, called by BOTH the CLI entry and
|
|
9
|
+
* the MCP server through thin command wrappers (Tri-Polar parity, D-166-04). It takes a
|
|
10
|
+
* sequence of reaches/commands and runs it as autopilot-with-gates: invoke a step,
|
|
11
|
+
* capture its structured output, pass that output (carrying the quality enum) into the
|
|
12
|
+
* next step, and loop. Auto-run steps the gate greenlights; HALT at material-decision
|
|
13
|
+
* steps and hand to the Tri-Context Decision Gate (Canon Part 3). No consumer owns a
|
|
14
|
+
* loop -- act / pipeline / ignite all call this one spine.
|
|
15
|
+
*
|
|
16
|
+
* Extracted and generalized from the donor loop in scripts/act-command.cjs (planChainRun
|
|
17
|
+
* + walk at act-command.cjs:131-147; the stop / gate render at act-command.cjs:172-224;
|
|
18
|
+
* the workflow_stage journaling at act-command.cjs:245-295). No new dispatch path.
|
|
19
|
+
*
|
|
20
|
+
* NEXT-STEP AUTHORITY (EXEC-01 + B2 + SPEC Out-of-scope): the loop re-calls decideFn()
|
|
21
|
+
* per iteration to re-derive the next reach, and records its return shape UNCHANGED
|
|
22
|
+
* (B2 -- never reshape decide()'s return). decideFn has NO DEFAULT (Phase 237-03,
|
|
23
|
+
* REACH-01): the loop's own ({step,index},{previousOutput}) call shape matches none
|
|
24
|
+
* of the real navigation-engine.cjs decide()'s documented turn/context fields, so a
|
|
25
|
+
* default that fed it straight to decide() reliably computed and stored an EMPTY
|
|
26
|
+
* decision that nothing downstream reads (a 27-hit grep found zero consumers).
|
|
27
|
+
* decideFn is therefore an OPTIONAL injectable seam ONLY: absent an adapter, no
|
|
28
|
+
* decision is computed and trace[i].decision_trace stays null. The ONE supported
|
|
29
|
+
* caller adapts this call onto the real decide({userText,sectionPath,sessionId},
|
|
30
|
+
* context) contract -- see scripts/act-command.cjs (Phase 172-08 CIRS R4). Whichever
|
|
31
|
+
* decideFn is (or is not) supplied, recipe-maps.rankedNextReach stays a contract-only
|
|
32
|
+
* reader (live nav-engine consumption of the projection deferred with Phase 157); the
|
|
33
|
+
* loop NEVER substitutes the projection's ranked list for decide().
|
|
34
|
+
*
|
|
35
|
+
* NO convergence stop (B3): the SEED-032 / imported-harness "loop until all PASSING"
|
|
36
|
+
* convergence branch is REJECTED. The stop condition is posture / quality / maxSteps
|
|
37
|
+
* ONLY -- the chain halts at the first material step per Canon Part 3.
|
|
38
|
+
*
|
|
39
|
+
* The six-callback contract (the SPEC):
|
|
40
|
+
* runChain(steps, {
|
|
41
|
+
* postureFn, // (command) -> posture authority (default: recipe-maps.postureForCommand)
|
|
42
|
+
* gateFn, // (step, posture, priorOutput) -> 'run' | 'halt' (default: makeGateFn)
|
|
43
|
+
* onStep, // (step, previousOutput) -> { chain_output, quality } (dispatches framework-runner)
|
|
44
|
+
* provenanceFn, // optional (step, result) -> frontmatter (pipeline supplies; act/ignite pass null)
|
|
45
|
+
* maxSteps, // hard cap (budget brake, EXEC-06)
|
|
46
|
+
* onHalt, // (step, contexts) -> the user's verb at the Tri-Context gate
|
|
47
|
+
* decideFn, // OPTIONAL injectable decide() seam; NO DEFAULT (237-03, REACH-01).
|
|
48
|
+
* // Absent, no decision is computed and decision_trace stays null.
|
|
49
|
+
* // The only supported caller ADAPTS runChain's ({step,index},
|
|
50
|
+
* // {previousOutput}) shape onto decide()'s real
|
|
51
|
+
* // ({userText,sectionPath,sessionId}, context) contract --
|
|
52
|
+
* // see scripts/act-command.cjs (Phase 172-08 CIRS R4).
|
|
53
|
+
* }) -> { trace, completed, haltedAt }
|
|
54
|
+
*
|
|
55
|
+
* Canon Part 8 (Graph Boundary): runChain itself opens NO Brain wire. Posture is joined
|
|
56
|
+
* from the LOCAL command-registry via recipe-maps; egress (if any) is the framework-runner's
|
|
57
|
+
* existing chokepoint, reached through onStep. This file makes zero Brain calls and no raw
|
|
58
|
+
* fetch.
|
|
59
|
+
*
|
|
60
|
+
* Canon Part 7 (Reuse Before Build): ~80-85 percent repoint of shipped code (the
|
|
61
|
+
* act-command loop, the recipe-maps posture authority, the navigation-engine decide(),
|
|
62
|
+
* the framework-runner brick). Net-new is the contract + the gate predicate + the trace
|
|
63
|
+
* join.
|
|
64
|
+
*
|
|
65
|
+
* House rule: hyphens only, no em-dashes.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
const path = require('node:path');
|
|
69
|
+
|
|
70
|
+
// EXEC-05 (D-166-01): the bounded retry-with-backoff substrate the resilient
|
|
71
|
+
// onStep dispatch wraps. Lazily required so the legacy synchronous path never
|
|
72
|
+
// pays for it. chain-retry.cjs is a pure timing/error helper (zero Brain wire).
|
|
73
|
+
let _retry = null;
|
|
74
|
+
function _loadRetry() {
|
|
75
|
+
if (_retry !== null) return _retry;
|
|
76
|
+
try {
|
|
77
|
+
_retry = require(path.join(__dirname, 'chain-retry.cjs'));
|
|
78
|
+
} catch (_e) {
|
|
79
|
+
_retry = false;
|
|
80
|
+
}
|
|
81
|
+
return _retry;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// EXEC-05 resume/journal substrate (D-166-02): the SOLE chain-state truth from
|
|
85
|
+
// Wave 1. The resilient path journals each completed step via recordStep and
|
|
86
|
+
// honors the isNext hard gate on resume so a partial re-run re-enters at the
|
|
87
|
+
// failed step WITHOUT re-running upstream. No new orchestration path is built.
|
|
88
|
+
let _pipelineState = null;
|
|
89
|
+
function _loadPipelineState() {
|
|
90
|
+
if (_pipelineState !== null) return _pipelineState;
|
|
91
|
+
try {
|
|
92
|
+
_pipelineState = require(path.join(__dirname, '..', 'mcp', 'pipeline-state.cjs'));
|
|
93
|
+
} catch (_e) {
|
|
94
|
+
_pipelineState = false;
|
|
95
|
+
}
|
|
96
|
+
return _pipelineState;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Lazy seams. The production defaults are required lazily so a test can inject
|
|
101
|
+
// stubs (decideFn / postureFn / gateFn) without loading the real engine, and so
|
|
102
|
+
// a missing dependency degrades gracefully rather than crashing at require time.
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
let _recipeMaps = null;
|
|
105
|
+
function _loadRecipeMaps() {
|
|
106
|
+
if (_recipeMaps !== null) return _recipeMaps;
|
|
107
|
+
try {
|
|
108
|
+
_recipeMaps = require(path.join(__dirname, 'recipe-maps.cjs'));
|
|
109
|
+
} catch (_e) {
|
|
110
|
+
_recipeMaps = false;
|
|
111
|
+
}
|
|
112
|
+
return _recipeMaps;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
// Phase 177 Wave 5 (BCH-09) -- the BEHAVIORAL_CHANNEL_ARMED kill-switch seam.
|
|
117
|
+
// The escape-hatch gate-SUPPRESSION branch (in makeGateFn below) is GATED by
|
|
118
|
+
// this flag. It is read LAZILY from its home (navigation/calibration-gate.cjs,
|
|
119
|
+
// shipped in 177-08) so the gate can never drift from the calibration owner's
|
|
120
|
+
// notion of ARMED, and so a missing dependency degrades to LOCKED (false) rather
|
|
121
|
+
// than crashing the legacy synchronous path at require time. The default is
|
|
122
|
+
// false ALWAYS today -- no real calibration PASS has armed it -- so the
|
|
123
|
+
// suppression branch is provably inert and makeGateFn() is byte-identical to its
|
|
124
|
+
// pre-seam behavior. We do NOT re-type the literal false here; we read the shipped
|
|
125
|
+
// constant so there is ONE source of truth.
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
let _calibrationArmed = null;
|
|
128
|
+
function _loadBehavioralChannelArmed() {
|
|
129
|
+
if (_calibrationArmed !== null) return _calibrationArmed;
|
|
130
|
+
try {
|
|
131
|
+
const mod = require(path.join(__dirname, 'navigation', 'calibration-gate.cjs'));
|
|
132
|
+
_calibrationArmed = (mod && typeof mod.BEHAVIORAL_CHANNEL_ARMED === 'boolean')
|
|
133
|
+
? mod.BEHAVIORAL_CHANNEL_ARMED
|
|
134
|
+
: false;
|
|
135
|
+
} catch (_e) {
|
|
136
|
+
_calibrationArmed = false; // withhold-default: a missing owner stays LOCKED.
|
|
137
|
+
}
|
|
138
|
+
return _calibrationArmed;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Pure helper: does the step carry an ACTIVE escape_hatch observation handle?
|
|
142
|
+
// Reads ONLY the step's escape_hatch scalar (a boolean / truthy enum surfaced by
|
|
143
|
+
// the Wave-1 observation schema -- "just tell me" / "bottom line"), never user
|
|
144
|
+
// prose, never an artifact body (Canon Part 8). The handle may sit directly on
|
|
145
|
+
// the step or on a step.observation sub-object (both Wave-1 surfaces); read both,
|
|
146
|
+
// scalar-only.
|
|
147
|
+
function _escapeHatchActive(step) {
|
|
148
|
+
if (!step || typeof step !== 'object') return false;
|
|
149
|
+
if (step.escape_hatch === true) return true;
|
|
150
|
+
if (step.observation && typeof step.observation === 'object'
|
|
151
|
+
&& step.observation.escape_hatch === true) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// EXEC-06: a sane default budget brake. The caller may lower it; the loop never
|
|
158
|
+
// runs more than this many steps regardless of the chain length.
|
|
159
|
+
const DEFAULT_MAX_STEPS = 25;
|
|
160
|
+
|
|
161
|
+
// The quality enum the framework-runner emits (framework-runner.md Step 6:
|
|
162
|
+
// quality: {high|medium|low}). The gate halts on 'low' even for an autonomous_safe
|
|
163
|
+
// step (EXEC-02 quality carry stops garbage-in-garbage-out down the chain).
|
|
164
|
+
const LOW_QUALITY = 'low';
|
|
165
|
+
|
|
166
|
+
// The kill-switch verb. A [stop] verb at the Tri-Context gate flushes the filed
|
|
167
|
+
// artifacts (the trace built so far) and ends the chain cleanly (EXEC-04). Accepts
|
|
168
|
+
// the bare verb and the bracketed render form so both onHalt idioms work.
|
|
169
|
+
function _isStopVerb(verb) {
|
|
170
|
+
if (typeof verb !== 'string') return false;
|
|
171
|
+
const v = verb.trim().toLowerCase();
|
|
172
|
+
return v === 'stop' || v === '[stop]';
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
// Default posture authority: recipe-maps.postureForCommand (the ONE posture
|
|
177
|
+
// authority, joined from the LOCAL command-registry). Degrades to a
|
|
178
|
+
// withhold-default ('halt') when recipe-maps is unavailable -- never a fabricated
|
|
179
|
+
// autonomous_safe (T-166-02).
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
function _defaultPostureFn(command) {
|
|
182
|
+
const rm = _loadRecipeMaps();
|
|
183
|
+
if (rm && typeof rm.postureForCommand === 'function') {
|
|
184
|
+
return rm.postureForCommand(command);
|
|
185
|
+
}
|
|
186
|
+
return { command: command || null, autonomous_safe: false, posture: 'halt' };
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
// IRREVERSIBLE forced-material classification (EXEC-03 HARD RULE + D-166-05).
|
|
191
|
+
// An irreversible step (sends email / deploys / publishes / external write) is
|
|
192
|
+
// FORCED-MATERIAL: it ALWAYS halts at the gate regardless of an autonomous_safe
|
|
193
|
+
// tag. Two signals: an explicit step.irreversible flag, OR the step's
|
|
194
|
+
// command/connector matching one of the frozen irreversible-action keywords.
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
const IRREVERSIBLE_HINTS = Object.freeze([
|
|
197
|
+
'email',
|
|
198
|
+
'deploy',
|
|
199
|
+
'publish',
|
|
200
|
+
'send',
|
|
201
|
+
'release',
|
|
202
|
+
'external-write',
|
|
203
|
+
'external_write',
|
|
204
|
+
]);
|
|
205
|
+
|
|
206
|
+
function isIrreversibleStep(step) {
|
|
207
|
+
if (!step || typeof step !== 'object') return false;
|
|
208
|
+
if (step.irreversible === true) return true;
|
|
209
|
+
const hay = String(step.command || '').toLowerCase();
|
|
210
|
+
if (hay.length === 0) return false;
|
|
211
|
+
for (const hint of IRREVERSIBLE_HINTS) {
|
|
212
|
+
if (hay.indexOf(hint) !== -1) return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
// fable-mode (HARN-02, D-167-04): POSTURE-SCOPED material-step classification.
|
|
219
|
+
// fable-mode is net-new NAMING over the shipped quality machinery -- it invents
|
|
220
|
+
// NO fable model tier; model-profiles stays opus/sonnet/haiku. The verify +
|
|
221
|
+
// self-critique fires ONLY on MATERIAL / uncertain steps, NOT on every
|
|
222
|
+
// autonomous_safe step (this respects the 166 token analysis: do not burn
|
|
223
|
+
// tokens re-verifying trivially-safe steps). A step is material when:
|
|
224
|
+
// 1. its posture verb is NOT push_forward ('run'), OR
|
|
225
|
+
// 2. the step is irreversible (forced-material, EXEC-03), OR
|
|
226
|
+
// 3. the caller flags step.material === true.
|
|
227
|
+
// A trivially-safe push_forward + reversible step is NOT material -> the
|
|
228
|
+
// critique is SKIPPED on it.
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
function _isMaterialStep(step, posture) {
|
|
231
|
+
if (isIrreversibleStep(step)) return true;
|
|
232
|
+
if (step && step.material === true) return true;
|
|
233
|
+
const verb = (posture && typeof posture === 'object') ? posture.posture : null;
|
|
234
|
+
// A non-push_forward posture (verb !== 'run') is material / uncertain. An
|
|
235
|
+
// absent posture is treated as uncertain -> material (withhold-default).
|
|
236
|
+
if (verb !== 'run') return true;
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// ---------------------------------------------------------------------------
|
|
241
|
+
// fable-mode seam (HARN-02, D-167-04, MEDIUM-3). The ONE shared helper applied
|
|
242
|
+
// at BOTH execution seams (sync runChain + async _runChainResilient) so the two
|
|
243
|
+
// paths cannot drift. It runs AFTER the per-step result.quality is captured and
|
|
244
|
+
// BEFORE chain_output folds into the next previousOutput. When a selfCritiqueFn
|
|
245
|
+
// is supplied AND the step is material, it calls selfCritiqueFn(step, result);
|
|
246
|
+
// if the verdict indicates a FAILED self-critique (verdict.quality === 'low' OR
|
|
247
|
+
// verdict.passed === false), it AUGMENTS the captured quality to LOW_QUALITY so
|
|
248
|
+
// the EXISTING quality_early_stop branch + the next-hop makeGateFn LOW_QUALITY
|
|
249
|
+
// halt fire. It adds NO new halt reason, NO retry, NO loop -- the verdict is a
|
|
250
|
+
// gate INPUT, never a convergence stop condition (166 B3). A selfCritiqueFn
|
|
251
|
+
// fault degrades to NO augmentation (fail open on the critic, T-167-12): a
|
|
252
|
+
// broken critic must not silently halt every step, but a LOW verdict halts.
|
|
253
|
+
// Returns the (possibly augmented) quality string.
|
|
254
|
+
// ---------------------------------------------------------------------------
|
|
255
|
+
function _applySelfCritique(selfCritiqueFn, step, posture, result, quality) {
|
|
256
|
+
if (typeof selfCritiqueFn !== 'function') return quality;
|
|
257
|
+
if (!_isMaterialStep(step, posture)) return quality;
|
|
258
|
+
let verdict = null;
|
|
259
|
+
try {
|
|
260
|
+
verdict = selfCritiqueFn(step, result);
|
|
261
|
+
} catch (_e) {
|
|
262
|
+
// Fail open on the critic itself: a thrown critic does not halt the chain.
|
|
263
|
+
return quality;
|
|
264
|
+
}
|
|
265
|
+
if (verdict && (verdict.quality === LOW_QUALITY || verdict.passed === false)) {
|
|
266
|
+
return LOW_QUALITY;
|
|
267
|
+
}
|
|
268
|
+
return quality;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// ---------------------------------------------------------------------------
|
|
272
|
+
// SEED-033 L1 (Phase 201-02): opt-in bounded Ralph verify+retry on an
|
|
273
|
+
// autonomous_safe step. This is DISTINCT from the material-step _applySelfCritique
|
|
274
|
+
// seam above (which stays material-only, token-economy per D-167-04). It fires ONLY
|
|
275
|
+
// when the caller opts a step in (step.ralph_verify === true) AND a selfCritiqueFn is
|
|
276
|
+
// supplied AND the step is autonomous_safe (NOT material / irreversible -- the caller
|
|
277
|
+
// guarantees this). It re-runs onStep up to min(cap, budgetRemaining) times while the
|
|
278
|
+
// critique fails, returning the FIRST passing result; if the retries are exhausted it
|
|
279
|
+
// returns the last result with quality forced to LOW_QUALITY so the EXISTING
|
|
280
|
+
// quality_early_stop + next-hop gate halt fire (the safe step still halts when it
|
|
281
|
+
// cannot self-correct -- Ralph inside the safe step, the gate still at the material
|
|
282
|
+
// one). Fail-open on a thrown critic (a broken critic must not force a halt).
|
|
283
|
+
// Bounded twice over: the cap AND the EXEC-06 step budget. Never unbounded.
|
|
284
|
+
// ---------------------------------------------------------------------------
|
|
285
|
+
const RALPH_RETRY_CAP_DEFAULT = 2;
|
|
286
|
+
|
|
287
|
+
function _safeCritique(selfCritiqueFn, step, result) {
|
|
288
|
+
try { return selfCritiqueFn(step, result); } catch (_e) { return null; }
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function _critiqueFailed(verdict) {
|
|
292
|
+
return !!(verdict && (verdict.quality === LOW_QUALITY || verdict.passed === false));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
function _ralphSafeRetry(params) {
|
|
296
|
+
const step = params.step;
|
|
297
|
+
const selfCritiqueFn = params.selfCritiqueFn;
|
|
298
|
+
const onStep = params.onStep;
|
|
299
|
+
const previousOutput = params.previousOutput;
|
|
300
|
+
let result = params.initialResult;
|
|
301
|
+
let quality = params.initialQuality;
|
|
302
|
+
const cap = params.cap;
|
|
303
|
+
const budgetRemaining = params.budgetRemaining;
|
|
304
|
+
const maxRetries = Math.max(0, Math.min(cap, budgetRemaining));
|
|
305
|
+
let attempts = 0;
|
|
306
|
+
let verdict = _safeCritique(selfCritiqueFn, step, result);
|
|
307
|
+
while (_critiqueFailed(verdict) && attempts < maxRetries) {
|
|
308
|
+
attempts += 1;
|
|
309
|
+
let retried;
|
|
310
|
+
try { retried = onStep(step, previousOutput); } catch (_e) { break; }
|
|
311
|
+
result = retried || {};
|
|
312
|
+
quality = (typeof result.quality === 'string') ? result.quality : quality;
|
|
313
|
+
verdict = _safeCritique(selfCritiqueFn, step, result);
|
|
314
|
+
}
|
|
315
|
+
// Exhausted = stopped WITHOUT a passing verdict. The step must HALT (never silently
|
|
316
|
+
// proceed): force LOW so it falls through to the existing gate (Ralph inside the safe
|
|
317
|
+
// step, the gate still at the material one). We ALSO name WHY it stopped, so the caller
|
|
318
|
+
// can set a distinct haltedAt.reason (Task 3c): the EXEC-06 budget bound the retries
|
|
319
|
+
// strictly below the cap (budget_brake), or the cap itself was reached (retry_exhausted).
|
|
320
|
+
const exhausted = _critiqueFailed(verdict);
|
|
321
|
+
let haltReason = null;
|
|
322
|
+
if (exhausted) {
|
|
323
|
+
quality = LOW_QUALITY;
|
|
324
|
+
haltReason = (budgetRemaining < cap) ? 'budget_brake' : 'retry_exhausted';
|
|
325
|
+
}
|
|
326
|
+
return { result: result, quality: quality, attempts: attempts, exhausted: exhausted, haltReason: haltReason };
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// ---------------------------------------------------------------------------
|
|
330
|
+
// Default gate predicate (EXEC-03, the single leverage point). Used when no
|
|
331
|
+
// gateFn is injected. Returns 'run' ONLY when ALL three hold:
|
|
332
|
+
// 1. the step's posture maps to push_forward (autonomous_safe), AND
|
|
333
|
+
// 2. the inbound priorOutput.quality is NOT 'low' (EXEC-02 quality carry), AND
|
|
334
|
+
// 3. the step is NOT irreversible (forced-material steps ALWAYS halt).
|
|
335
|
+
// Otherwise 'halt'. The posture is read via postureFn (recipe-maps default).
|
|
336
|
+
// makeGateFn(opts) returns the bound predicate; opts.postureFn overrides the
|
|
337
|
+
// posture authority (test seam / caller-supplied).
|
|
338
|
+
// ---------------------------------------------------------------------------
|
|
339
|
+
function makeGateFn(opts) {
|
|
340
|
+
const o = opts || {};
|
|
341
|
+
const postureFn = (typeof o.postureFn === 'function') ? o.postureFn : _defaultPostureFn;
|
|
342
|
+
// Phase 177 Wave 5 (BCH-09): the ARMED gate for the escape-hatch suppression
|
|
343
|
+
// branch. Overridable via opts.armed (the TEST seam) so the armed-true path can
|
|
344
|
+
// be exercised WITHOUT mutating the shipped BEHAVIORAL_CHANNEL_ARMED constant
|
|
345
|
+
// (the calibration-gate change-control rule forbids flipping it to unblock a
|
|
346
|
+
// wave). When opts.armed is absent it defaults to the LAZY calibration-gate read
|
|
347
|
+
// -- false ALWAYS today.
|
|
348
|
+
const armed = (typeof o.armed === 'boolean') ? o.armed : _loadBehavioralChannelArmed();
|
|
349
|
+
return function gateFn(step, posture, priorOutput) {
|
|
350
|
+
// (1) FORCED-MATERIAL FIRST (HARD RULE, UNCONDITIONAL, BCH-09). An irreversible
|
|
351
|
+
// step (sends email / deploys / publishes / external write, OR step.irreversible)
|
|
352
|
+
// ALWAYS halts -- armed or not, escape-hatch or not. This statement STAYS the
|
|
353
|
+
// very first decision in gateFn; nothing may be added before it. Because the
|
|
354
|
+
// irreversible step returns here, the escape-hatch suppression branch below can
|
|
355
|
+
// NEVER reach a forced-material step -- the guardrail is structurally upstream.
|
|
356
|
+
if (isIrreversibleStep(step)) return 'halt';
|
|
357
|
+
|
|
358
|
+
// (2) Quality carry: a low-quality inbound output halts even an autonomous_safe
|
|
359
|
+
// step (stops garbage-in-garbage-out propagation -- loop R3).
|
|
360
|
+
if (priorOutput && priorOutput.quality === LOW_QUALITY) return 'halt';
|
|
361
|
+
|
|
362
|
+
// Posture authority: resolve the verb ONCE. Prefer an explicitly-passed posture
|
|
363
|
+
// object; otherwise ask the posture authority for the step's command. Shared by
|
|
364
|
+
// both the escape-hatch suppression branch (3) and the normal return (4) so the
|
|
365
|
+
// two cannot read a different posture.
|
|
366
|
+
let verdict = (posture && typeof posture === 'object') ? posture : null;
|
|
367
|
+
if (!verdict) verdict = postureFn(step && step.command);
|
|
368
|
+
const autonomousSafe = !!(verdict && verdict.autonomous_safe === true);
|
|
369
|
+
const verb = verdict && verdict.posture; // 'run' (push_forward) | 'halt'
|
|
370
|
+
|
|
371
|
+
// (3) Escape-hatch gate-SUPPRESSION (Phase 177 Wave 5, BCH-09) -- WIRED-BUT-
|
|
372
|
+
// SHADOWED. When ARMED and the step carries an ACTIVE escape_hatch, the gate may
|
|
373
|
+
// SUPPRESS the Decision Gate (return 'run' instead of halting for human
|
|
374
|
+
// confirmation) -- but ONLY for an already autonomous_safe + reversible step.
|
|
375
|
+
// It NEVER escalates a non-safe step, and it can NEVER reach an irreversible /
|
|
376
|
+
// forced-material step (that returned 'halt' at the UNCONDITIONAL first check
|
|
377
|
+
// above). The branch reads ONLY the ARMED boolean, the escape_hatch scalar
|
|
378
|
+
// handle, and the resolved posture enum -- never user prose, never an artifact
|
|
379
|
+
// body (Canon Part 8 LOCAL -> BRAIN: NO; the gate adds no Brain wire).
|
|
380
|
+
//
|
|
381
|
+
// DORMANT CONTRACT: when unarmed (always today, because no real calibration PASS
|
|
382
|
+
// has armed the flag) this branch's guard is false, so it suppresses NOTHING and
|
|
383
|
+
// falls through to the identical (4) return -- makeGateFn() is byte-identical to
|
|
384
|
+
// its pre-seam behavior, the Decision Gate fires unchanged, and the escape_hatch
|
|
385
|
+
// handle has zero effect on the verb. The LIVE flip (a real gate actually
|
|
386
|
+
// suppressed) happens only when a real calibration PASS arms the flag -- that
|
|
387
|
+
// arming is data-gated (177-08 fit.method:'deferred') AND Canon-Custodian-gated
|
|
388
|
+
// (Canon Part 8 PR gate). This wave does NOT weaken the human-in-the-loop
|
|
389
|
+
// Decision Gate today.
|
|
390
|
+
if (armed && _escapeHatchActive(step) && autonomousSafe && verb === 'run') {
|
|
391
|
+
return 'run';
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// (4) Normal posture/autonomous_safe return (the pre-seam terminal decision).
|
|
395
|
+
if (autonomousSafe && verb === 'run') return 'run';
|
|
396
|
+
return 'halt';
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// ---------------------------------------------------------------------------
|
|
401
|
+
// runChain -- the loop runner (EXEC-01 / 02 / 03 / 04 / 06).
|
|
402
|
+
// ---------------------------------------------------------------------------
|
|
403
|
+
/**
|
|
404
|
+
* runChain(steps, opts) -> { trace, completed, haltedAt }
|
|
405
|
+
*
|
|
406
|
+
* steps: ordered array of step objects. Each step carries at least { step, command }
|
|
407
|
+
* and MAY carry { irreversible:true, reach_id, framework, ... }.
|
|
408
|
+
*
|
|
409
|
+
* opts (the six-callback contract + the decideFn seam):
|
|
410
|
+
* postureFn(command) -> posture authority (default recipe-maps.postureForCommand)
|
|
411
|
+
* gateFn(step, posture, priorOutput) -> 'run'|'halt' (default makeGateFn({postureFn}))
|
|
412
|
+
* onStep(step, previousOutput) -> { chain_output, quality } (REQUIRED; dispatches the brick)
|
|
413
|
+
* provenanceFn(step, result) -> frontmatter (optional; called per run step when supplied)
|
|
414
|
+
* maxSteps hard cap (default DEFAULT_MAX_STEPS) -- EXEC-06 budget brake
|
|
415
|
+
* onHalt(step, contexts) -> verb (the Tri-Context gate; returns one of the 10 verbs)
|
|
416
|
+
* decideFn(turn, context) -> decision (OPTIONAL injectable decide() seam; NO DEFAULT
|
|
417
|
+
* as of 237-03/REACH-01 -- when absent, no decision is computed and
|
|
418
|
+
* trace[i].decision_trace stays null. The only supported caller ADAPTS runChain's
|
|
419
|
+
* own ({step,index},{previousOutput}) shape onto decide()'s real
|
|
420
|
+
* ({userText,sectionPath,sessionId}, context) contract; see scripts/act-command.cjs,
|
|
421
|
+
* the reference adapter (Phase 172-08 CIRS R4).)
|
|
422
|
+
* selfCritiqueFn(step, result) -> verdict (fable-mode, HARN-02 / D-167-04; OPTIONAL,
|
|
423
|
+
* default a no-op pass-through. POSTURE-SCOPED: fires only on material steps. A verdict
|
|
424
|
+
* with quality:'low' or passed:false AUGMENTS result.quality -> the existing LOW_QUALITY
|
|
425
|
+
* halt. Rides BOTH the sync runChain path and the async _runChainResilient path.)
|
|
426
|
+
*
|
|
427
|
+
* Returns:
|
|
428
|
+
* trace ONE ordered array; each entry { step, chain_output, decision_trace }
|
|
429
|
+
* (decision_trace is decide()'s return handle, UNCHANGED -- B2)
|
|
430
|
+
* completed true when every step ran with no halt / no budget brake
|
|
431
|
+
* haltedAt the step where the chain stopped (or a synthetic budget-brake marker),
|
|
432
|
+
* or null when completed
|
|
433
|
+
*
|
|
434
|
+
* Never throws on a callback fault that is recoverable; a missing onStep is the one
|
|
435
|
+
* hard precondition (the loop has nothing to dispatch without it).
|
|
436
|
+
*/
|
|
437
|
+
function runChain(steps, opts) {
|
|
438
|
+
const o = opts || {};
|
|
439
|
+
const list = Array.isArray(steps) ? steps : [];
|
|
440
|
+
|
|
441
|
+
// EXEC-05 dispatch: when ANY reliability opt is present (retries / journal /
|
|
442
|
+
// roomDir / resume / sleep), run the ASYNC resilient path -- onStep wrapped in
|
|
443
|
+
// bounded retry-with-backoff, exhaustion folded into a GRACEFUL PARTIAL, the
|
|
444
|
+
// position journaled via the Wave-1 pipeline-state substrate. The legacy
|
|
445
|
+
// synchronous path below is UNCHANGED for callers that pass none of these
|
|
446
|
+
// (Wave-2 contract preserved byte-for-byte). This is ONE entry point, not a
|
|
447
|
+
// consumer-visible fork: runChain stays the single door (D-166-04).
|
|
448
|
+
if (
|
|
449
|
+
o.retries !== undefined ||
|
|
450
|
+
o.journal === true ||
|
|
451
|
+
o.roomDir !== undefined ||
|
|
452
|
+
o.resume === true ||
|
|
453
|
+
typeof o.sleep === 'function'
|
|
454
|
+
) {
|
|
455
|
+
return _runChainResilient(list, o);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
const onStep = (typeof o.onStep === 'function') ? o.onStep : null;
|
|
459
|
+
if (!onStep) {
|
|
460
|
+
return {
|
|
461
|
+
trace: [],
|
|
462
|
+
completed: false,
|
|
463
|
+
haltedAt: { step: null, reason: 'no_onStep_callback' },
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const postureFn = (typeof o.postureFn === 'function') ? o.postureFn : _defaultPostureFn;
|
|
468
|
+
const gateFn = (typeof o.gateFn === 'function') ? o.gateFn : makeGateFn({ postureFn: postureFn });
|
|
469
|
+
const onHalt = (typeof o.onHalt === 'function') ? o.onHalt : function () { return 'defer'; };
|
|
470
|
+
const provenanceFn = (typeof o.provenanceFn === 'function') ? o.provenanceFn : null;
|
|
471
|
+
// Phase 237-03 (REACH-01): NO default. decideFn is an OPTIONAL injectable seam
|
|
472
|
+
// -- when absent, no decision is computed and every trace entry's
|
|
473
|
+
// decision_trace stays null (see the call site below for why the DEFAULT was
|
|
474
|
+
// removed while the seam itself was kept).
|
|
475
|
+
const decideFn = (typeof o.decideFn === 'function') ? o.decideFn : null;
|
|
476
|
+
// fable-mode (HARN-02 / D-167-04): default a no-op so an absent selfCritiqueFn
|
|
477
|
+
// is byte-identical to the Wave-166 behavior (regression guard).
|
|
478
|
+
const selfCritiqueFn = (typeof o.selfCritiqueFn === 'function') ? o.selfCritiqueFn : null;
|
|
479
|
+
const maxSteps = (typeof o.maxSteps === 'number' && o.maxSteps > 0)
|
|
480
|
+
? Math.floor(o.maxSteps)
|
|
481
|
+
: DEFAULT_MAX_STEPS;
|
|
482
|
+
|
|
483
|
+
const trace = [];
|
|
484
|
+
let completed = true;
|
|
485
|
+
let haltedAt = null;
|
|
486
|
+
let previousOutput = null; // EXEC-02: prior chain_output folds into the next step.
|
|
487
|
+
let stepsRun = 0;
|
|
488
|
+
|
|
489
|
+
for (let i = 0; i < list.length; i += 1) {
|
|
490
|
+
const step = list[i];
|
|
491
|
+
|
|
492
|
+
// EXEC-06 budget brake: a hard cap on steps run. When the next iteration would
|
|
493
|
+
// exceed the budget, halt with a recorded reason (haltedAt names the brake).
|
|
494
|
+
if (stepsRun >= maxSteps) {
|
|
495
|
+
completed = false;
|
|
496
|
+
haltedAt = { step: step, reason: 'budget_brake', maxSteps: maxSteps };
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// EXEC-01 + B2: re-call decide() per loop to re-derive the next reach from the
|
|
501
|
+
// navigated graph neighborhood. Capture its decision_trace handle UNCHANGED into
|
|
502
|
+
// the trace. decide() is the LIVE next-step authority -- NOT rankedNextReach.
|
|
503
|
+
// Wrapped so a decide() fault degrades to a null handle rather than crashing the
|
|
504
|
+
// chain (the loop still runs; the trace records the absence).
|
|
505
|
+
//
|
|
506
|
+
// Phase 237-03 (REACH-01): decideFn has NO default -- when the caller does
|
|
507
|
+
// not inject an ADAPTED decideFn, this block simply does not run and
|
|
508
|
+
// decisionTrace stays null. Why the old default was removed: the call
|
|
509
|
+
// below passes runChain's own ({step,index},{previousOutput}) shape, which
|
|
510
|
+
// matches none of the real decide()'s documented turn/context fields (all
|
|
511
|
+
// read as undefined); decide() never throws (it falls through to
|
|
512
|
+
// emptyDecision()), so the old default reliably computed and stored an
|
|
513
|
+
// EMPTY decision, and a 27-hit grep across lib/ and scripts/ found zero
|
|
514
|
+
// consumers of runChain's stored decision_trace. The seam itself is kept:
|
|
515
|
+
// scripts/act-command.cjs injects an ADAPTED decideFn that reshapes this
|
|
516
|
+
// exact call onto a real decide({userText,sectionPath,sessionId}, context)
|
|
517
|
+
// call (Phase 172-08 CIRS R4) -- that is the ONLY supported caller shape.
|
|
518
|
+
let decisionTrace = null;
|
|
519
|
+
if (typeof decideFn === 'function') {
|
|
520
|
+
try {
|
|
521
|
+
const decision = decideFn({ step: step, index: i }, { previousOutput: previousOutput });
|
|
522
|
+
// Record decide()'s decision_trace UNCHANGED (reference, never a copy / reshape).
|
|
523
|
+
decisionTrace = (decision && decision.decision_trace) ? decision.decision_trace : null;
|
|
524
|
+
} catch (_e) {
|
|
525
|
+
decisionTrace = null;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// EXEC-03: gate the step. posture authority is consulted via postureFn so the
|
|
530
|
+
// gate fires on push_forward + not-low-quality + reversible. The default gateFn
|
|
531
|
+
// resolves posture internally; an injected gateFn may use the passed posture.
|
|
532
|
+
let posture = null;
|
|
533
|
+
try { posture = postureFn(step && step.command); } catch (_e) { posture = null; }
|
|
534
|
+
|
|
535
|
+
let verb = 'halt';
|
|
536
|
+
try {
|
|
537
|
+
verb = gateFn(step, posture, previousOutput);
|
|
538
|
+
} catch (_e) {
|
|
539
|
+
verb = 'halt'; // a gate fault is a withhold-default (fail closed).
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
if (verb !== 'run') {
|
|
543
|
+
// HALT: hand to the Tri-Context Decision Gate (Part 3). onHalt returns the
|
|
544
|
+
// user's verb. A [stop] verb is the kill switch: flush (return the trace built
|
|
545
|
+
// so far) and end cleanly (EXEC-04). Any other verb also ends the loop here
|
|
546
|
+
// (the chain halts at the first material step per Canon Part 3 -- B3: there is
|
|
547
|
+
// NO convergence-driven continue).
|
|
548
|
+
let userVerb = 'defer';
|
|
549
|
+
try {
|
|
550
|
+
userVerb = onHalt(step, { previousOutput: previousOutput, posture: posture, decisionTrace: decisionTrace });
|
|
551
|
+
} catch (_e) {
|
|
552
|
+
userVerb = 'defer';
|
|
553
|
+
}
|
|
554
|
+
completed = false;
|
|
555
|
+
haltedAt = {
|
|
556
|
+
step: step,
|
|
557
|
+
reason: isIrreversibleStep(step) ? 'forced_material' : 'gate_halt',
|
|
558
|
+
verb: userVerb,
|
|
559
|
+
stopped: _isStopVerb(userVerb),
|
|
560
|
+
};
|
|
561
|
+
// Whether the verb is [stop] or another halt verb, the loop ends here and the
|
|
562
|
+
// trace built ABOVE the stop is flushed (already in `trace`), never dropped.
|
|
563
|
+
break;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
// RUN: dispatch the per-step brick (framework-runner via onStep). It returns
|
|
567
|
+
// { chain_output, quality }. Fold chain_output into the next previousOutput
|
|
568
|
+
// (EXEC-02), carrying the quality enum forward via the result object.
|
|
569
|
+
let result = null;
|
|
570
|
+
try {
|
|
571
|
+
result = onStep(step, previousOutput);
|
|
572
|
+
} catch (_e) {
|
|
573
|
+
// An onStep dispatch fault halts the chain (fail closed) rather than silently
|
|
574
|
+
// continuing with a stale previousOutput.
|
|
575
|
+
completed = false;
|
|
576
|
+
haltedAt = { step: step, reason: 'onStep_fault' };
|
|
577
|
+
break;
|
|
578
|
+
}
|
|
579
|
+
result = result || {};
|
|
580
|
+
let quality = (typeof result.quality === 'string') ? result.quality : null;
|
|
581
|
+
|
|
582
|
+
// SEED-033 L1 (201-02): opt-in bounded Ralph verify+retry on an autonomous_safe
|
|
583
|
+
// step. DEFAULT OFF (token economy, D-167-04) -- fires ONLY when step.ralph_verify
|
|
584
|
+
// is true, a selfCritiqueFn is supplied, and the step is autonomous_safe (NOT
|
|
585
|
+
// material / irreversible). It may replace `result` with a passing retry, or force
|
|
586
|
+
// LOW when the retries are exhausted; retry re-runs count against the EXEC-06 budget
|
|
587
|
+
// (stepsRun += ralphAttempts below). Material steps are UNTOUCHED -- they keep the
|
|
588
|
+
// _applySelfCritique-as-halt-input path below (B3 intact).
|
|
589
|
+
let ralphAttempts = 0;
|
|
590
|
+
let ralphHaltReason = null;
|
|
591
|
+
if (step && step.ralph_verify === true && typeof selfCritiqueFn === 'function' &&
|
|
592
|
+
!_isMaterialStep(step, posture)) {
|
|
593
|
+
const budgetRemaining = Math.max(0, maxSteps - stepsRun - 1);
|
|
594
|
+
const cap = (typeof o.ralphRetryCap === 'number' && o.ralphRetryCap >= 0)
|
|
595
|
+
? Math.floor(o.ralphRetryCap) : RALPH_RETRY_CAP_DEFAULT;
|
|
596
|
+
const r = _ralphSafeRetry({
|
|
597
|
+
step: step, selfCritiqueFn: selfCritiqueFn, onStep: onStep,
|
|
598
|
+
previousOutput: previousOutput, initialResult: result, initialQuality: quality,
|
|
599
|
+
cap: cap, budgetRemaining: budgetRemaining,
|
|
600
|
+
});
|
|
601
|
+
result = r.result;
|
|
602
|
+
quality = r.quality;
|
|
603
|
+
ralphAttempts = r.attempts;
|
|
604
|
+
if (r.exhausted) ralphHaltReason = r.haltReason;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
const chainOutput = (result.chain_output !== undefined) ? result.chain_output : null;
|
|
608
|
+
|
|
609
|
+
// fable-mode seam (HARN-02 / D-167-04): posture-scoped self-critique runs
|
|
610
|
+
// AFTER the result.quality capture and BEFORE the previousOutput fold. On a
|
|
611
|
+
// material step a failed verdict augments quality to LOW_QUALITY, feeding the
|
|
612
|
+
// EXISTING quality_early_stop branch + next-hop LOW_QUALITY gate. Shared with
|
|
613
|
+
// the async path via _applySelfCritique so the two seams cannot drift. (Safe-step
|
|
614
|
+
// verify+retry is the L1 opt-in above; this stays material-only.)
|
|
615
|
+
quality = _applySelfCritique(selfCritiqueFn, step, posture, result, quality);
|
|
616
|
+
|
|
617
|
+
// optional provenance side-channel (pipeline supplies it; act/ignite pass null).
|
|
618
|
+
if (provenanceFn) {
|
|
619
|
+
try { provenanceFn(step, result); } catch (_e) { /* best-effort; never load-bearing */ }
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
// EXEC-04 single trace: append ONE entry built from the step + its chain_output
|
|
623
|
+
// + the UNCHANGED decide() decision_trace handle (B2).
|
|
624
|
+
trace.push({
|
|
625
|
+
step: step,
|
|
626
|
+
chain_output: chainOutput,
|
|
627
|
+
quality: quality,
|
|
628
|
+
decision_trace: decisionTrace,
|
|
629
|
+
});
|
|
630
|
+
// EXEC-06: this step plus any L1 verify+retry re-runs count against the budget.
|
|
631
|
+
stepsRun += 1 + ralphAttempts;
|
|
632
|
+
|
|
633
|
+
// SEED-033 L1 (201-02, Task 3): an EXHAUSTED opt-in safe-step retry HALTS with a
|
|
634
|
+
// DISTINCT reason so the halt is observable as a Ralph-loop exhaustion rather than a
|
|
635
|
+
// plain low-quality stop. retry_exhausted = the cap bound; budget_brake = the EXEC-06
|
|
636
|
+
// budget bound below the cap. Either way the step HALTS (falls through to the gate,
|
|
637
|
+
// never silently proceeds) -- this branch precedes the generic quality_early_stop so
|
|
638
|
+
// the specific reason wins. Material steps never reach here (guarded above; B3 intact).
|
|
639
|
+
if (ralphHaltReason) {
|
|
640
|
+
completed = false;
|
|
641
|
+
haltedAt = { step: step, reason: ralphHaltReason, quality: quality, ralphAttempts: ralphAttempts };
|
|
642
|
+
break;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
// EXEC-06 quality early-stop: a step that returns quality:low on a gate-passed
|
|
646
|
+
// path terminates the chain with a recorded reason (the downstream gate would
|
|
647
|
+
// halt on it anyway; stopping now avoids dispatching a doomed next step).
|
|
648
|
+
if (quality === LOW_QUALITY) {
|
|
649
|
+
completed = false;
|
|
650
|
+
haltedAt = { step: step, reason: 'quality_early_stop', quality: quality };
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// EXEC-02: this step's chain_output becomes the next step's previousOutput,
|
|
655
|
+
// carrying the quality forward so the gate can fire on it next hop.
|
|
656
|
+
previousOutput = chainOutput;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
return { trace: trace, completed: completed, haltedAt: haltedAt };
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// ---------------------------------------------------------------------------
|
|
663
|
+
// _runChainResilient -- the EXEC-05 / D-166-01 async path (graceful partial).
|
|
664
|
+
// ---------------------------------------------------------------------------
|
|
665
|
+
/**
|
|
666
|
+
* Same six-callback contract as runChain, PLUS the reliability opts:
|
|
667
|
+
* retries bounded retries on a transient 5xx (default chain-retry default)
|
|
668
|
+
* baseDelayMs / maxDelayMs the exponential-with-cap backoff knobs
|
|
669
|
+
* sleep injectable sleep (tests pass a no-op recorder; default real timer)
|
|
670
|
+
* roomDir the room for the pipeline-state journal (resume/journal substrate)
|
|
671
|
+
* journal when true, recordStep journals each completed step (D-166-02)
|
|
672
|
+
* resume when true, honor the pipeline-state isNext hard gate and SKIP any
|
|
673
|
+
* step already past the journaled position (re-enter at the failed
|
|
674
|
+
* step; do NOT re-run upstream)
|
|
675
|
+
*
|
|
676
|
+
* Returns (async): { trace, completed, haltedAt, partial }
|
|
677
|
+
* - On a clean run: { completed:true, haltedAt:null, partial:false }.
|
|
678
|
+
* - On retry exhaustion (transient) OR a non-transient onStep fault: a GRACEFUL
|
|
679
|
+
* PARTIAL -- the upstream trace is PRESERVED, a { step, failure:{code,reason},
|
|
680
|
+
* partial:true } marker is folded into the ONE trace, the position is
|
|
681
|
+
* journaled, and the return carries { completed:false, partial:true,
|
|
682
|
+
* haltedAt:{ step, reason } }. NEVER null, NEVER a silent drop (SEED-028 /
|
|
683
|
+
* the AION failure mode).
|
|
684
|
+
*
|
|
685
|
+
* The onStep dispatch is wrapped in chain-retry.withBackoff(isTransient): a
|
|
686
|
+
* transient 5xx retries with bounded backoff; a non-transient error fails fast.
|
|
687
|
+
* Reuses the Wave-1 pipeline-state.recordStep / isNext hard gate -- builds NO new
|
|
688
|
+
* orchestration path (Canon Part 7).
|
|
689
|
+
*
|
|
690
|
+
* fable-mode (HARN-02 / D-167-04, MEDIUM-3): the SAME selfCritiqueFn opt rides
|
|
691
|
+
* this async path. The seam is MIRRORED here at the same logical position --
|
|
692
|
+
* AFTER the post-withBackoff result.quality capture (so the dispatchError
|
|
693
|
+
* graceful-partial marker is never double-handled) and BEFORE the previousOutput
|
|
694
|
+
* fold -- via the ONE shared _applySelfCritique helper, so the sync and async
|
|
695
|
+
* seams cannot drift. A material step that fails self-critique gets quality
|
|
696
|
+
* augmented to LOW_QUALITY, feeding the identical quality_early_stop / LOW_QUALITY
|
|
697
|
+
* halt.
|
|
698
|
+
*/
|
|
699
|
+
async function _runChainResilient(list, o) {
|
|
700
|
+
const onStep = (typeof o.onStep === 'function') ? o.onStep : null;
|
|
701
|
+
if (!onStep) {
|
|
702
|
+
return { trace: [], completed: false, haltedAt: { step: null, reason: 'no_onStep_callback' }, partial: false };
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
const postureFn = (typeof o.postureFn === 'function') ? o.postureFn : _defaultPostureFn;
|
|
706
|
+
const gateFn = (typeof o.gateFn === 'function') ? o.gateFn : makeGateFn({ postureFn: postureFn });
|
|
707
|
+
const onHalt = (typeof o.onHalt === 'function') ? o.onHalt : function () { return 'defer'; };
|
|
708
|
+
const provenanceFn = (typeof o.provenanceFn === 'function') ? o.provenanceFn : null;
|
|
709
|
+
// Phase 237-03 (REACH-01): NO default, mirroring the sync path above (both
|
|
710
|
+
// sites must change identically; see the sync site's comment for the full
|
|
711
|
+
// rationale). Absent a caller-injected decideFn, decision_trace stays null.
|
|
712
|
+
const decideFn = (typeof o.decideFn === 'function') ? o.decideFn : null;
|
|
713
|
+
// fable-mode (HARN-02 / D-167-04): the SAME opt as the sync path; default no-op
|
|
714
|
+
// so an absent selfCritiqueFn keeps this path byte-identical to Wave-166.
|
|
715
|
+
const selfCritiqueFn = (typeof o.selfCritiqueFn === 'function') ? o.selfCritiqueFn : null;
|
|
716
|
+
const maxSteps = (typeof o.maxSteps === 'number' && o.maxSteps > 0)
|
|
717
|
+
? Math.floor(o.maxSteps)
|
|
718
|
+
: DEFAULT_MAX_STEPS;
|
|
719
|
+
|
|
720
|
+
// Reliability knobs.
|
|
721
|
+
const retry = _loadRetry();
|
|
722
|
+
const sleep = (typeof o.sleep === 'function') ? o.sleep : undefined;
|
|
723
|
+
const retries = (typeof o.retries === 'number' && o.retries >= 0) ? Math.floor(o.retries) : undefined;
|
|
724
|
+
const baseDelayMs = (typeof o.baseDelayMs === 'number') ? o.baseDelayMs : undefined;
|
|
725
|
+
const maxDelayMs = (typeof o.maxDelayMs === 'number') ? o.maxDelayMs : undefined;
|
|
726
|
+
|
|
727
|
+
// Journal/resume substrate (Wave-1 pipeline-state.cjs, D-166-02).
|
|
728
|
+
const roomDir = (typeof o.roomDir === 'string') ? o.roomDir : null;
|
|
729
|
+
const doJournal = o.journal === true && roomDir;
|
|
730
|
+
const doResume = o.resume === true && roomDir;
|
|
731
|
+
const ps = (doJournal || doResume) ? _loadPipelineState() : false;
|
|
732
|
+
|
|
733
|
+
const trace = [];
|
|
734
|
+
let completed = true;
|
|
735
|
+
let haltedAt = null;
|
|
736
|
+
let partial = false;
|
|
737
|
+
let previousOutput = null;
|
|
738
|
+
let stepsRun = 0;
|
|
739
|
+
|
|
740
|
+
for (let i = 0; i < list.length; i += 1) {
|
|
741
|
+
const step = list[i];
|
|
742
|
+
|
|
743
|
+
// EXEC-06 budget brake (unchanged contract).
|
|
744
|
+
if (stepsRun >= maxSteps) {
|
|
745
|
+
completed = false;
|
|
746
|
+
haltedAt = { step: step, reason: 'budget_brake', maxSteps: maxSteps };
|
|
747
|
+
break;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
// D-166-02 resume: re-enter at the journaled failed step, do NOT re-run
|
|
751
|
+
// upstream. The SOLE chain-state truth (pipeline-state.cjs) advances its
|
|
752
|
+
// chain_position via recordStep only for COMPLETED steps, so any step whose
|
|
753
|
+
// command sits at-or-before that journaled cursor has already run and is
|
|
754
|
+
// SKIPPED. The first un-journaled step is the resume re-entry point.
|
|
755
|
+
if (doResume && ps && typeof ps.read === 'function') {
|
|
756
|
+
let journal = null;
|
|
757
|
+
try { journal = ps.read(roomDir); } catch (_e) { journal = null; }
|
|
758
|
+
if (journal && Array.isArray(journal.chain)) {
|
|
759
|
+
const cursor = (typeof journal.chain_position === 'number') ? journal.chain_position : -1;
|
|
760
|
+
const stepIdxInChain = journal.chain.indexOf(step.command);
|
|
761
|
+
if (stepIdxInChain !== -1 && stepIdxInChain <= cursor) {
|
|
762
|
+
// Already journaled as completed: skip without re-dispatching onStep.
|
|
763
|
+
continue;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
// EXEC-01 + B2: re-call decide() per loop; record decision_trace UNCHANGED.
|
|
769
|
+
// Phase 237-03 (REACH-01): decideFn has NO default -- see the sync path's
|
|
770
|
+
// comment above the identical block for the full rationale (unadapted
|
|
771
|
+
// shape, dead default, preserved seam for scripts/act-command.cjs).
|
|
772
|
+
let decisionTrace = null;
|
|
773
|
+
if (typeof decideFn === 'function') {
|
|
774
|
+
try {
|
|
775
|
+
const decision = decideFn({ step: step, index: i }, { previousOutput: previousOutput });
|
|
776
|
+
decisionTrace = (decision && decision.decision_trace) ? decision.decision_trace : null;
|
|
777
|
+
} catch (_e) {
|
|
778
|
+
decisionTrace = null;
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// EXEC-03 gate (unchanged): fail-closed halt on a gate fault.
|
|
783
|
+
let posture = null;
|
|
784
|
+
try { posture = postureFn(step && step.command); } catch (_e) { posture = null; }
|
|
785
|
+
let verb = 'halt';
|
|
786
|
+
try { verb = gateFn(step, posture, previousOutput); } catch (_e) { verb = 'halt'; }
|
|
787
|
+
|
|
788
|
+
if (verb !== 'run') {
|
|
789
|
+
let userVerb = 'defer';
|
|
790
|
+
try {
|
|
791
|
+
userVerb = onHalt(step, { previousOutput: previousOutput, posture: posture, decisionTrace: decisionTrace });
|
|
792
|
+
} catch (_e) {
|
|
793
|
+
userVerb = 'defer';
|
|
794
|
+
}
|
|
795
|
+
completed = false;
|
|
796
|
+
haltedAt = {
|
|
797
|
+
step: step,
|
|
798
|
+
reason: isIrreversibleStep(step) ? 'forced_material' : 'gate_halt',
|
|
799
|
+
verb: userVerb,
|
|
800
|
+
stopped: _isStopVerb(userVerb),
|
|
801
|
+
};
|
|
802
|
+
break;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
// RUN: dispatch the per-step brick THROUGH bounded retry-with-backoff
|
|
806
|
+
// (EXEC-05). A transient 5xx retries with backoff; a non-transient error
|
|
807
|
+
// fails fast inside withBackoff and surfaces here as a throw.
|
|
808
|
+
let result = null;
|
|
809
|
+
let dispatchError = null;
|
|
810
|
+
try {
|
|
811
|
+
if (retry && typeof retry.withBackoff === 'function') {
|
|
812
|
+
result = await retry.withBackoff(
|
|
813
|
+
function () { return onStep(step, previousOutput); },
|
|
814
|
+
{
|
|
815
|
+
retries: retries,
|
|
816
|
+
baseDelayMs: baseDelayMs,
|
|
817
|
+
maxDelayMs: maxDelayMs,
|
|
818
|
+
sleep: sleep,
|
|
819
|
+
// We want the loop -- not withBackoff -- to author the graceful
|
|
820
|
+
// partial, so ask for the thrown marker on exhaustion and catch it.
|
|
821
|
+
returnMarkerOnExhaust: false,
|
|
822
|
+
}
|
|
823
|
+
);
|
|
824
|
+
} else {
|
|
825
|
+
// Degrade gracefully when chain-retry is unavailable: a single attempt.
|
|
826
|
+
result = await onStep(step, previousOutput);
|
|
827
|
+
}
|
|
828
|
+
} catch (err) {
|
|
829
|
+
dispatchError = err;
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
if (dispatchError) {
|
|
833
|
+
// GRACEFUL PARTIAL (SEED-028 / the AION failure mode). The chain is NEVER
|
|
834
|
+
// silently dropped: fold a failure marker into the ONE trace, journal the
|
|
835
|
+
// position, and return the upstream trace preserved with partial:true.
|
|
836
|
+
const transient = !!(retry && typeof retry.isTransient === 'function' && retry.isTransient(dispatchError));
|
|
837
|
+
const code = (typeof dispatchError.code === 'number')
|
|
838
|
+
? dispatchError.code
|
|
839
|
+
: _codeFromError(dispatchError);
|
|
840
|
+
const reason = dispatchError.exhausted === true
|
|
841
|
+
? 'transient_retry_exhausted'
|
|
842
|
+
: (transient ? 'transient_failure' : 'non_transient_hard_failure');
|
|
843
|
+
|
|
844
|
+
trace.push({
|
|
845
|
+
step: step,
|
|
846
|
+
chain_output: null,
|
|
847
|
+
quality: null,
|
|
848
|
+
decision_trace: decisionTrace,
|
|
849
|
+
failure: {
|
|
850
|
+
code: (typeof code === 'number') ? code : null,
|
|
851
|
+
reason: reason,
|
|
852
|
+
message: (dispatchError && dispatchError.message) ? String(dispatchError.message) : null,
|
|
853
|
+
attempts: (typeof dispatchError.attempts === 'number') ? dispatchError.attempts : 1,
|
|
854
|
+
},
|
|
855
|
+
partial: true,
|
|
856
|
+
});
|
|
857
|
+
|
|
858
|
+
// Journal the failed position so a resume re-enters HERE (D-166-02). The
|
|
859
|
+
// journal cursor stays at the last SUCCEEDED step; the failed step is
|
|
860
|
+
// recorded only in the trace, so checkPosition still names it as next.
|
|
861
|
+
completed = false;
|
|
862
|
+
partial = true;
|
|
863
|
+
haltedAt = {
|
|
864
|
+
step: step,
|
|
865
|
+
reason: reason,
|
|
866
|
+
partial: true,
|
|
867
|
+
code: (typeof code === 'number') ? code : null,
|
|
868
|
+
};
|
|
869
|
+
break;
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
result = result || {};
|
|
873
|
+
const chainOutput = (result.chain_output !== undefined) ? result.chain_output : null;
|
|
874
|
+
let quality = (typeof result.quality === 'string') ? result.quality : null;
|
|
875
|
+
|
|
876
|
+
// fable-mode seam (HARN-02 / D-167-04, MEDIUM-3): MIRROR of the sync seam.
|
|
877
|
+
// Runs AFTER the post-withBackoff dispatchError guard (so a graceful-partial
|
|
878
|
+
// failure marker is never touched by the critique) and BEFORE the
|
|
879
|
+
// previousOutput fold. Shared with the sync path via _applySelfCritique.
|
|
880
|
+
quality = _applySelfCritique(selfCritiqueFn, step, posture, result, quality);
|
|
881
|
+
|
|
882
|
+
if (provenanceFn) {
|
|
883
|
+
try { provenanceFn(step, result); } catch (_e) { /* best-effort */ }
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
trace.push({
|
|
887
|
+
step: step,
|
|
888
|
+
chain_output: chainOutput,
|
|
889
|
+
quality: quality,
|
|
890
|
+
decision_trace: decisionTrace,
|
|
891
|
+
});
|
|
892
|
+
stepsRun += 1;
|
|
893
|
+
|
|
894
|
+
// D-166-02: journal the COMPLETED step via the Wave-1 recordStep so a resume
|
|
895
|
+
// advances the cursor and skips it next time. The artifact path is the
|
|
896
|
+
// step's chain_output handle (a generic reference, never user content -- the
|
|
897
|
+
// body never leaves onStep; Part 8).
|
|
898
|
+
if (doJournal && ps && typeof ps.recordStep === 'function') {
|
|
899
|
+
try {
|
|
900
|
+
ps.recordStep(roomDir, step.command, 'chain-output:' + step.command);
|
|
901
|
+
} catch (_e) { /* journal is best-effort; the trace remains the truth */ }
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
// EXEC-06 quality early-stop (unchanged).
|
|
905
|
+
if (quality === LOW_QUALITY) {
|
|
906
|
+
completed = false;
|
|
907
|
+
haltedAt = { step: step, reason: 'quality_early_stop', quality: quality };
|
|
908
|
+
break;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
previousOutput = chainOutput;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
return { trace: trace, completed: completed, haltedAt: haltedAt, partial: partial };
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
// Pull a numeric status off an error when chain-retry did not already decorate
|
|
918
|
+
// it with .code (e.g. a non-transient error that failed fast). Mirrors
|
|
919
|
+
// chain-retry's _extractCode minimally for the failure-marker code field.
|
|
920
|
+
function _codeFromError(err) {
|
|
921
|
+
if (!err || typeof err !== 'object') return null;
|
|
922
|
+
if (typeof err.status === 'number') return err.status;
|
|
923
|
+
if (typeof err.statusCode === 'number') return err.statusCode;
|
|
924
|
+
return null;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
module.exports = {
|
|
928
|
+
runChain: runChain,
|
|
929
|
+
makeGateFn: makeGateFn,
|
|
930
|
+
isIrreversibleStep: isIrreversibleStep,
|
|
931
|
+
IRREVERSIBLE_HINTS: IRREVERSIBLE_HINTS,
|
|
932
|
+
DEFAULT_MAX_STEPS: DEFAULT_MAX_STEPS,
|
|
933
|
+
// Phase 177 Wave 5 (BCH-09): re-export the LOCKED arming flag (read lazily from
|
|
934
|
+
// its calibration-gate home; false ALWAYS today) so callers/tests can read the
|
|
935
|
+
// shipped default WITHOUT re-typing the literal. This getter never mutates the
|
|
936
|
+
// owner's constant -- arming the live escape hatch is data-gated AND
|
|
937
|
+
// Canon-Custodian-gated, out of scope for this wave.
|
|
938
|
+
get BEHAVIORAL_CHANNEL_ARMED() { return _loadBehavioralChannelArmed(); },
|
|
939
|
+
};
|