@nexus-cortex/core 4.93.0 → 4.94.0
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/{.env.example → .env.defaults} +93 -25
- package/dist/config/MentorshipConfigService.d.ts +0 -1
- package/dist/config/MentorshipConfigService.d.ts.map +1 -1
- package/dist/config/MentorshipConfigService.js +10 -5
- package/dist/config/MentorshipConfigService.js.map +1 -1
- package/dist/config/SettingsLoader.d.ts +92 -11
- package/dist/config/SettingsLoader.d.ts.map +1 -1
- package/dist/config/SettingsLoader.js +331 -131
- package/dist/config/SettingsLoader.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +1 -1
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +6 -1
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/middleware/HelperModelMiddleware.d.ts +16 -0
- package/dist/middleware/HelperModelMiddleware.d.ts.map +1 -1
- package/dist/middleware/HelperModelMiddleware.js +32 -5
- package/dist/middleware/HelperModelMiddleware.js.map +1 -1
- package/dist/models/cards/deepseek/deepseek-v4-flash.d.ts.map +1 -1
- package/dist/models/cards/deepseek/deepseek-v4-flash.js +4 -2
- package/dist/models/cards/deepseek/deepseek-v4-flash.js.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.d.ts +14 -0
- package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.js +131 -6
- package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
- package/dist/orchestrator/OrchestratorFactory.js +1 -1
- package/dist/orchestrator/OrchestratorFactory.js.map +1 -1
- package/dist/orchestrator/displayHistorySanitizer.d.ts +29 -0
- package/dist/orchestrator/displayHistorySanitizer.d.ts.map +1 -0
- package/dist/orchestrator/displayHistorySanitizer.js +62 -0
- package/dist/orchestrator/displayHistorySanitizer.js.map +1 -0
- package/dist/tools/context-management/InitCortexContext.js +1 -1
- package/dist/tools/context-management/InitCortexContext.js.map +1 -1
- package/dist/training/DecisionStore.d.ts +1 -1
- package/dist/training/DecisionStore.d.ts.map +1 -1
- package/dist/training/DecisionStore.js.map +1 -1
- package/dist/training/deadlineExitMentor.d.ts +67 -0
- package/dist/training/deadlineExitMentor.d.ts.map +1 -0
- package/dist/training/deadlineExitMentor.js +99 -0
- package/dist/training/deadlineExitMentor.js.map +1 -0
- package/dist/training/endTurnResolver.d.ts +14 -3
- package/dist/training/endTurnResolver.d.ts.map +1 -1
- package/dist/training/endTurnResolver.js +27 -10
- package/dist/training/endTurnResolver.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,24 +1,36 @@
|
|
|
1
|
+
# GENERATED — DO NOT EDIT. Read-live, shipped mirror of the MASTER config `.env`.
|
|
2
|
+
# Edit `.env` (the master); regenerate with `npm run sync:env` (runs on build).
|
|
3
|
+
# Read as the lowest-precedence default layer: user ~/.cortex/.env > real env > this.
|
|
4
|
+
|
|
1
5
|
# Nexus Cortex — Complete Environment Configuration Reference
|
|
2
6
|
# ╔══════════════════════════════════════════════════════════════════════════════════╗
|
|
3
7
|
# ║ LEVER LEDGER — this file is the persistent record of where every config lever ║
|
|
4
8
|
# ║ stands. Each lever carries a "# [LEDGER <date> @<version>] STATUS — evidence" ║
|
|
5
9
|
# ║ line (ON | DARK/RETIRED | DARK/PENDING | DARK by design). Update the line when a ║
|
|
6
10
|
# ║ cell moves the verdict and when each iteration ships. Cell ledgers live in ║
|
|
7
|
-
# ║ .cortex/bench/r-*.md. K=5 CONFIG (
|
|
8
|
-
# ║ ON set + CORTEX_ENDTURN_GATE=true + CORTEX_ENDTURN_REQUIREMENTS=
|
|
11
|
+
# ║ .cortex/bench/r-*.md. K=5 CONFIG (verified 2026-09-06 @4.93.0, r-resolver-k5): ║
|
|
12
|
+
# ║ ON set + CORTEX_ENDTURN_GATE=true + CORTEX_ENDTURN_REQUIREMENTS=true + ║
|
|
9
13
|
# ║ ENABLE_WEBTOOLS=false (bench pin) + VISION_HELPER_MODEL on + TOOL_TIMEOUT_MODE=auto; ║
|
|
10
|
-
# ║ MENTOR_AUTO / EFFORT_TAIL / EFFORT_PULSE dark. Pin nexus-cortex@4.
|
|
14
|
+
# ║ MENTOR_AUTO / EFFORT_TAIL / EFFORT_PULSE dark. Pin nexus-cortex@4.93.0 (4.90.0.s ║
|
|
11
15
|
# ║ timeout-promote was inert). Both models. ║
|
|
12
16
|
# ╚══════════════════════════════════════════════════════════════════════════════════╝
|
|
13
|
-
#
|
|
14
|
-
#
|
|
17
|
+
# THIS FILE IS THE MASTER CONFIGURATION DOCUMENT.
|
|
18
|
+
# ─────────────────────────────────────────────────────────────────────────────────
|
|
19
|
+
# Every harness lever lives here, with its value and its [LEDGER] annotation — the one
|
|
20
|
+
# readable place to see and change what the harness does. Edit HERE. On build, this file
|
|
21
|
+
# is mirrored to the committed, shipped `.env.defaults` (the same content), which the
|
|
22
|
+
# harness reads LIVE as its lowest-precedence default layer — so a package upgrade ships
|
|
23
|
+
# these values to every user automatically (nothing to regenerate, no keys to re-enter).
|
|
24
|
+
#
|
|
25
|
+
# PRECEDENCE (highest → lowest): a user's ~/.cortex/.env (their keys + deliberate
|
|
26
|
+
# overrides) → the real shell/injected env → these defaults → the hardcoded floor.
|
|
15
27
|
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
28
|
+
# 🔴 SECRETS STAY BLANK HERE. This file is tracked and its mirror ships — provider API
|
|
29
|
+
# keys must NOT carry values (they live in the environment / Replit Secrets / the user's
|
|
30
|
+
# ~/.cortex/.env). The build FAILS if any secret key has a value here.
|
|
19
31
|
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
32
|
+
# An ACTIVE line is the shipped default (including `LEVER=false` to ship it OFF); a
|
|
33
|
+
# COMMENTED line falls through to the hardcoded floor. Keep the [LEDGER] lines current.
|
|
22
34
|
|
|
23
35
|
# ============================================
|
|
24
36
|
# API KEYS
|
|
@@ -142,7 +154,9 @@ HELPER_MODEL_ID=deepseek-v4-flash
|
|
|
142
154
|
# claude-haiku-4-5 — Anthropic web_search server tool (inline source citations)
|
|
143
155
|
# grok-4-fast-non-reasoning — XAI Responses API web_search (URL citations)
|
|
144
156
|
# grok-4.3 — XAI Responses API web_search (reasoning model, URL citations)
|
|
145
|
-
|
|
157
|
+
# PRODUCTION DEFAULT: unset (auto-pick by the user's available key, else DuckDuckGo).
|
|
158
|
+
# A local Gemini override lives in the LOCAL-ONLY section at the bottom of this file.
|
|
159
|
+
WEB_TOOLS_MODEL=
|
|
146
160
|
|
|
147
161
|
# Web surface mode — auto | true | false (default auto).
|
|
148
162
|
# auto — WebFetch stays ON (works keyless via the helper-summarizer ladder); WebSearch, Browse,
|
|
@@ -237,6 +251,17 @@ CORTEX_EFFORT_PULSE=false
|
|
|
237
251
|
# [LEDGER 2026-09-02 @4.89.0] DARK — 0 at n=2 (c3): co-fired with the gate on 6/7 tasks; the fd protein-assembly flip did NOT replicate (0/2). Retire-candidate; keep false.
|
|
238
252
|
CORTEX_EFFORT_TAIL=false
|
|
239
253
|
#CORTEX_EFFORT_TAIL_TURNS=2
|
|
254
|
+
# ACTION EFFORT — static reasoning effort for the PRIMARY (action) model. Fills the request
|
|
255
|
+
# param when unset, so it overrides the model CARD's default but NOT an explicit request param
|
|
256
|
+
# or the dynamic effort-pulse. Mentor levers (LIFT_PLAN/ENDTURN_RESOLVER/DEADLINE_EXIT *_EFFORT)
|
|
257
|
+
# are SEPARATE and stay at max. Values: low | medium | high | max (provider-dependent). Unset =
|
|
258
|
+
# the card decides (deepseek cards = medium). Enables the pro-track "wide effort delta" A/B:
|
|
259
|
+
# pro@low-action + pro@max-mentors (cheap decisive executor, deliberation quarantined to mentors).
|
|
260
|
+
# [LEDGER 2026-09-06 @4.93.0] DARK/PENDING — lever built; UNTESTED (the 08-30 A/B was max-vs-medium,
|
|
261
|
+
# never medium-vs-low). Floor risk: too low loses in-loop tool micro-reasoning. Arm in the fanout
|
|
262
|
+
# cell (pro@low vs pro@medium vs pro@max action, mentors@max); winner → bake into the pro card's
|
|
263
|
+
# reasoning.effortByRole.action (validate-then-bake).
|
|
264
|
+
#CORTEX_ACTION_EFFORT=
|
|
240
265
|
# Trigger helper-model review on tool errors (only applies when mentorship is enabled)
|
|
241
266
|
MENTORSHIP_TRIGGER_ON_ERROR=false
|
|
242
267
|
# Minimum error severity to trigger. Options: low, medium, high
|
|
@@ -401,11 +426,17 @@ ENABLE_DEFERRED_TOOL_LOADING=true
|
|
|
401
426
|
# when mentorship is active, AskForAdvice. Turn 1 stays a pristine narrow door; the
|
|
402
427
|
# pointer lands only after the model has acted. No-op when deferred loading is off.
|
|
403
428
|
# GLOBAL BASELINE for models WITHOUT a card opinion (harness serves 17 models / 7 providers).
|
|
404
|
-
# The per-model CARD OVERRIDES this (
|
|
405
|
-
#
|
|
406
|
-
#
|
|
407
|
-
#
|
|
408
|
-
|
|
429
|
+
# The per-model CARD OVERRIDES this (precedence: card > this env > default). ALL THREE deepseek
|
|
430
|
+
# cards (flash/pro/vision) ship liftNudge:true — so this baseline NEVER touched the deepseek k=5
|
|
431
|
+
# reson run (card-forced true regardless of env). Where it DOES apply: un-carded providers
|
|
432
|
+
# (grok / gpt / gemini / claude). It exists to compensate deepseek's boot-minimal preset, which
|
|
433
|
+
# drops TOOL_USAGE_GUIDE so the model otherwise never learns discovery tools exist; models that
|
|
434
|
+
# ship the full tool guide need it less. A card can still opt a specific model out.
|
|
435
|
+
# [LEDGER 2026-09-06 @4.93.0] FLIPPED false->true (operator): extend the signpost fleet-wide.
|
|
436
|
+
# TB2.1-NEUTRAL — deepseek is card-dominated so the bench is identical; this only newly enables it
|
|
437
|
+
# for the un-carded non-deepseek providers (low-risk: a one-line SearchTools/AskForAdvice pointer).
|
|
438
|
+
# Cross-model validation of these deepseek-tuned levers on other providers is PENDING (after TB2.1).
|
|
439
|
+
CORTEX_LIFT_NUDGE=true
|
|
409
440
|
# CORTEX_LIFT_PLAN — mentor-as-bounded-planner (LIFT_MENTOR_PLANNER spec). At the same anchor-lift
|
|
410
441
|
# boundary, a bounded max-reasoning mentor plans the task ONCE: adversarial analysis of the prompt
|
|
411
442
|
# + confirm the REAL grader criteria (not the model's own tests) + a criteria-anchored numbered
|
|
@@ -428,7 +459,8 @@ CORTEX_LIFT_NUDGE=false
|
|
|
428
459
|
# feeds it to the planner so it steers installs (uv/bun for MISSING packages, beyond bare boxes) and
|
|
429
460
|
# per-step Bash timeouts from the box's REAL resources; fail-open to observations alone).
|
|
430
461
|
# [LEDGER 2026-09-04 @4.91.1] BUILT DARK / FIRE-CHECKED — v1 shipped gated-off (typecheck clean, planner tests, orchestrator e2e 26/26 no-regression, core build clean). LIVE FIRE-CHECK PASSED (lift_plan event fired:true/planChars>0/criteriaStated:true; negative control clean). ISOLATED EVAL: plan quality EXCELLENT at max+4000 (criteria-anchored, adversarial, anti-self-test) — but caught max+1200=empty (defaults bumped to max/4000/90s). Still UNTESTED for pass-rate lift: needs the treatment bench (grind-retire + criteria-misalign score-lift) BEFORE trusting efficacy. Adapter must add these to its env passthrough or the bench arm runs dark. Keep false.
|
|
431
|
-
|
|
462
|
+
# [LEDGER 2026-09-06 @4.93.0] ON (reson standard baseline). Part of the reson stack (GATE+REQ+LIFT+RESOLVER) that shipped through resolver-k5 (proven net-positive as a stack). NOTE: k5 held LIFT on in BOTH arms (shared baseline, not the A/B variable) — its independent efficacy stands from the 2026-09-04 isolated eval (plan quality excellent at max/4000); k5 ratifies the reson stack as standard, not LIFT in isolation.
|
|
463
|
+
CORTEX_LIFT_PLAN=true
|
|
432
464
|
#CORTEX_LIFT_PLAN_EFFORT=max
|
|
433
465
|
#CORTEX_LIFT_PLAN_BUDGET_TOKENS=4000
|
|
434
466
|
#CORTEX_LIFT_PLAN_TIMEOUT_MS=90000
|
|
@@ -443,17 +475,50 @@ CORTEX_LIFT_PLAN=false
|
|
|
443
475
|
# Tuning: CORTEX_ENDTURN_RESOLVER_EFFORT (max), CORTEX_ENDTURN_RESOLVER_BUDGET_TOKENS (4000),
|
|
444
476
|
# CORTEX_ENDTURN_RESOLVER_MAX_REJECTS (2 GAP vetoes → then fallback-accept, liveness), CORTEX_ENDTURN_RESOLVER_TIMEOUT_MS (90000).
|
|
445
477
|
# [LEDGER 2026-09-04 @4.92.0] BUILT DARK — mentor-as-EndTurn-judge; tsc clean, 8/8 resolver tests, orchestrator e2e 26/26 no-regression, eval-validated (caught a missing-NOT_FOUND self-graded pass + passed a correct finish). UNTESTED for pass-rate: the treatment bench = resolver ON vs OFF (both on relaxed). Keep false.
|
|
446
|
-
|
|
478
|
+
# [LEDGER 2026-09-06 @4.93.0] 🟢 PROVEN NET-POSITIVE + ON (reson = the new STANDARD). resolver-k5 (11-task×5, flash primary + pro@max mentor, resolver ON vs OFF): 5 help / 0 hurt, aggregate 75.5% vs 58.2% (+17pp), cost-neutral-to-cheaper ($0.116/task avg). Judgment quality HIGH (specific correct requirement-gap rejects; reject→retry→pass confirmed in decisions.jsonl); 4 resolver-attributable helps. Open v2 (gating, not verdict text) = coverage(fallback branch) + abstention(over-fires on hopeless). See .cortex/bench/resolver-k5-2026-09-06.md.
|
|
479
|
+
CORTEX_ENDTURN_RESOLVER=true
|
|
447
480
|
#CORTEX_ENDTURN_RESOLVER_EFFORT=max
|
|
448
481
|
#CORTEX_ENDTURN_RESOLVER_BUDGET_TOKENS=4000
|
|
449
482
|
#CORTEX_ENDTURN_RESOLVER_MAX_REJECTS=2
|
|
450
483
|
#CORTEX_ENDTURN_RESOLVER_TIMEOUT_MS=90000
|
|
484
|
+
# CORTEX_ENDTURN_RESOLVER_ABSTAIN — offer the judge a third verdict, RETIRE, for a structurally
|
|
485
|
+
# UNCLOSABLE finish (missing capability, wrong-approach loop, impossible constraint) and HONOR it:
|
|
486
|
+
# accept the finish + STOP the reject cycles instead of burning pro@max re-rejecting a task the
|
|
487
|
+
# junior can't fix. Confidence gate is in the prompt (when in doubt → GAP). Ships DARK.
|
|
488
|
+
# [LEDGER 2026-09-06 @4.93.0] DARK/PENDING — built (resolver v2 abstention axis); addresses the k=5
|
|
489
|
+
# over-rejection finding (filter-js 7 rej/0 pass, pytorch 8 rej/1 pass). NOT yet validated live —
|
|
490
|
+
# arm in the next fanout cell (measure cost-per-PASS + false-RETIRE rate vs resolver-without-abstain).
|
|
491
|
+
#CORTEX_ENDTURN_RESOLVER_ABSTAIN=false
|
|
492
|
+
#
|
|
493
|
+
# CORTEX_DEADLINE_EXIT_MENTOR — the "smart deadline". At the WARN rung (~0.9 of the per-turn
|
|
494
|
+
# wall-clock deadline, where residual still exists), a bounded mentor decides what to do with the
|
|
495
|
+
# time left: CONTINUE (on-track/closing-in — let it run; do NOT truncate a late win), FINISH
|
|
496
|
+
# (already meets criteria → end now), ACTION (one minimal step closes it → inject + finish), or
|
|
497
|
+
# RETIRE (stuck/unclosable → end cleanly). Replaces the dumb "wrap up" nudge; the hard-floor break
|
|
498
|
+
# at the deadline stays as the failsafe. Residual-scaled call budget (never eats the residual it
|
|
499
|
+
# preserves). Tuning: _EFFORT (max), _BUDGET_TOKENS cap (2000), _TIMEOUT_MS cap (45000),
|
|
500
|
+
# _RESIDUAL_FRAC (0.4 of remaining ms).
|
|
501
|
+
# [LEDGER 2026-09-06 @4.93.0] DARK/PENDING — built (abnormal-exit/deadline fix; the properly-scoped
|
|
502
|
+
# deadline adjudication, NOT the mis-premised endturn_gate_fallback). Addresses budget_frac>1.0
|
|
503
|
+
# overrun + last-fifth grind. 🔴 quality-gated (tell "closing in" from "grinding") — arm in the next
|
|
504
|
+
# fanout cell; measure pass-rate + budget_frac on the 0.80-1.0 finishing population.
|
|
505
|
+
#CORTEX_DEADLINE_EXIT_MENTOR=false
|
|
506
|
+
#CORTEX_DEADLINE_EXIT_MENTOR_EFFORT=max
|
|
507
|
+
#CORTEX_DEADLINE_EXIT_MENTOR_BUDGET_TOKENS=2000
|
|
508
|
+
#CORTEX_DEADLINE_EXIT_MENTOR_TIMEOUT_MS=45000
|
|
509
|
+
#CORTEX_DEADLINE_EXIT_MENTOR_RESIDUAL_FRAC=0.4
|
|
451
510
|
# CORTEX_HEADLESS_DROP_ASKUSER — in NON-INTERACTIVE sessions (stateless /v1/messages,
|
|
452
511
|
# headless API, piped oneshot) there is no human to answer AskUserQuestion, so it is a
|
|
453
512
|
# stall trap; drop it at the tool source. Kept in interactive TUIs.
|
|
454
|
-
# GLOBAL BASELINE for un-carded models; the per-model card overrides
|
|
455
|
-
#
|
|
456
|
-
|
|
513
|
+
# GLOBAL BASELINE for un-carded models; the per-model card overrides (precedence: card > env >
|
|
514
|
+
# default). ALL THREE deepseek cards ship headlessDropAskUser:true — so this baseline never touched
|
|
515
|
+
# the deepseek k=5 reson run. Where it applies: un-carded providers (grok/gpt/gemini/claude). Only
|
|
516
|
+
# fires in NON-INTERACTIVE sessions (stateless /v1/messages, headless API, piped oneshot) where no
|
|
517
|
+
# human can answer AskUserQuestion — interactive TUIs always keep the tool.
|
|
518
|
+
# [LEDGER 2026-09-06 @4.93.0] FLIPPED false->true (operator): drop the stall-trap tool fleet-wide in
|
|
519
|
+
# headless. TB2.1-NEUTRAL (deepseek card-dominated); only newly affects un-carded non-deepseek
|
|
520
|
+
# providers in headless. Cross-model validation PENDING (after TB2.1).
|
|
521
|
+
CORTEX_HEADLESS_DROP_ASKUSER=true
|
|
457
522
|
# Programmatic Tool Calling (compose tool calls in a script) — experimental
|
|
458
523
|
# [LEDGER 2026-09-02 @4.89.0] DARK/N/A — Anthropic-only server-side code execution; not on the DeepSeek path.
|
|
459
524
|
ENABLE_PTC=false
|
|
@@ -494,7 +559,8 @@ ROUTER_MIN_SAMPLES=3
|
|
|
494
559
|
# Mandatory EndTurn pre-delivery self-audit + Stage 2/3 verifiers. Default OFF; ON =
|
|
495
560
|
# graded cortex-channel training records (the tool is hidden when off).
|
|
496
561
|
# [LEDGER 2026-09-03 @4.91.0] DARK/PENDING → **RECOMMENDED ON for k=5 (with REQUIREMENTS=strict)** — 4.91.0: gates now run on the STREAMING path too (were sendMessage-only; one shared endTurnGates.ts, live-proven on stream:true) and Stage-2 grounding accepts text the model WROTE this turn (Write/Edit content) — the false 'not grounded' rejections on authored files are gone. COST (v4 pass mining + doctrine-mine): every pass paid 4-8 EndTurn round-trips, the biggest share = Stage-2 CITATION rejects (17/43 doctrine findings; the model never re-ran a command for a fresh verbatim line) → 4.90.2 nudge teaches per-turn grounding + re-run; expect controls' +25-35% turn tax to drop — measure at k=5. — v4 (n=1, @4.90.0): gate engaged heavily under strict (flash gate_req=22/cite=13, pro 17/4), controls bn-fit+sqlite held on BOTH models, pro flips vs p3: dna-insert, pytorch-model-cli, cancel-async (n=1 candidates). Prior 3 cells: 4.71 fp 11→1 · fd +2/5 · c3 (n=2, r-c3-candidate-config) code-from-image FLIP 2/2 (first flash-family pass ever; Stage-4 requirement rejections, no mentor) + dna-insert 1/2; 0 clean regressions outside its LIMIT (accepts a re-attested wrong artifact: pytorch-model-cli r2, dna-insert fd). Cost: attestation turns. Operator decision pending. PRO (r-p3, n=1): controls 3/3 held with NO attestation tax (bn-fit 53→30 turns), 0 regressions, 0 paralysis; 0/13 flips on pro's hard core (budget timeouts while working). → k=5 config for BOTH models: guards + GATE+REQ + ENABLE_WEBTOOLS=false, mentor/tail off.
|
|
497
|
-
|
|
562
|
+
# [LEDGER 2026-09-06 @4.93.0] ON (reson standard baseline). GATE+REQ (with REQUIREMENTS=true, NOT strict) shipped as the shared reson baseline through resolver-k5 — proven net-positive as a stack. k5 held GATE on in both arms; prior cell evidence stands. Part of the standard.
|
|
563
|
+
CORTEX_ENDTURN_GATE=true
|
|
498
564
|
# Stage 4 (4.70.0, requires the gate ON): task-requirements attestation —
|
|
499
565
|
# enumerate each stated requirement with what satisfies it + how it was
|
|
500
566
|
# verified; mutating turns with no checks are challenged. Default OFF.
|
|
@@ -505,7 +571,8 @@ CORTEX_ENDTURN_GATE=false
|
|
|
505
571
|
# (cancel-async-tasks, dna-assembly, dna-insert, pytorch-model-cli) were 85-95% complete with
|
|
506
572
|
# TRUE attestations verified against the model's own tests, not the task's exact constraints.
|
|
507
573
|
# [LEDGER 2026-09-03 @4.91.0] DARK/PENDING → `strict` RECOMMENDED for k=5 with the gate. 4.91.0: verified_how also grounds on a Bash command that RAN this turn (12-char windows) so the recommended `$ cmd → output` form passes; Stage-1 reminder names `requirements`. v4 cell (n=1): strict rejects fired heavily (flash gate_req=22, pro=17), 0 control regressions. 🔴 4.90.0 strict CRASHED on EndTurn({}) (null.filter ×4, flash/dna-insert) and rejected 11 honest condensations as paraphrases (protein-assembly) → 4.90.1: null-guarded; verbatim = 24-char window OR ≥70% content tokens; nudge shows a pasted-output example. Needs GATE.
|
|
508
|
-
#
|
|
574
|
+
# [LEDGER 2026-09-06 @4.93.0] ON=true (reson standard baseline — NOT strict). resolver-k5 ran REQUIREMENTS=true (verified in effective_config), not strict — that is the proven reson baseline; the earlier "strict recommended" is superseded by the actual reson config. Requires GATE=on.
|
|
575
|
+
CORTEX_ENDTURN_REQUIREMENTS=true
|
|
509
576
|
|
|
510
577
|
# ============================================
|
|
511
578
|
# DECISION STORE (prior-recall + recording)
|
|
@@ -809,7 +876,8 @@ CORTEX_SLICE_NUDGE=true
|
|
|
809
876
|
# the one bare-box pass we have (tp torch-tensor, 4.91.0) happened with ONLY orient's factual tooling line, no
|
|
810
877
|
# directive. The factual tooling line is always on; this flag adds the directive.
|
|
811
878
|
# [LEDGER 2026-09-03 @4.91.1] DARK (default 0) — ships dark, A/B-able (def-60a1dfc55a); do NOT bake into the k=5 pin.
|
|
812
|
-
#
|
|
879
|
+
# [LEDGER 2026-09-06 @4.93.0] ON=1 (reson standard, operator directive: match the full bench COMMON). CAVEAT: was a SHARED BASELINE in both k5 arms (on in reson AND resoff), so NOT independently A/B-validated — it's part of the proven reson BUNDLE (+17pp) but its solo contribution is unmeasured. A/B-able (def-60a1dfc55a) if isolated efficacy is ever needed.
|
|
880
|
+
CORTEX_ORIENT_BOOTSTRAP=1
|
|
813
881
|
# [LEDGER 2026-09-02 @4.89.0] code default 30 (4.88.0) — 20 made the break rung (2N=24) unreachable; preserves 40%/80% density semantics.
|
|
814
882
|
#NEARDUP_WINDOW=30
|
|
815
883
|
# [LEDGER 2026-09-02 @4.89.0] code default 12 (4.88.0) — 8 misfired on persistence-wins grinds (rstan-to-pystan regressed both arms).
|
|
@@ -818,4 +886,4 @@ CORTEX_SLICE_NUDGE=true
|
|
|
818
886
|
|
|
819
887
|
# --- OPTIMAL LIFT CONFIG (appended) ---
|
|
820
888
|
# [LEDGER 2026-09-02 @4.90.0] DEAD — no code path reads CORTEX_IDLE_TIMEOUT (grep packages/*/src = 0 hits); it was cargo-culted into the bench adapter env for months and removed there in adapter v21 (p3 timeout audit). Left commented so nobody re-adds it as a "lever".
|
|
821
|
-
#CORTEX_IDLE_TIMEOUT=120
|
|
889
|
+
#CORTEX_IDLE_TIMEOUT=120
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentorshipConfigService.d.ts","sourceRoot":"","sources":["../../src/config/MentorshipConfigService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EAGzB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"MentorshipConfigService.d.ts","sourceRoot":"","sources":["../../src/config/MentorshipConfigService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EAGzB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAK7B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CAC1C;AA4BD;;GAEG;AACH,qBAAa,uBAAwB,YAAW,aAAa,CAAC,gBAAgB,CAAC;IAC7E,OAAO,CAAC,MAAM,CAAiB;gBAEnB,WAAW,GAAE,MAAsB;IAM/C;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAkB7B;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjE;;OAEG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAIvE;;OAEG;IACG,QAAQ,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAInG;;OAEG;IACH,iBAAiB,IAAI,yBAAyB;IA+D9C;;OAEG;IACH,OAAO,CAAC,eAAe;IAmEvB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,oBAAoB;IAoChE;;OAEG;IACH,gBAAgB,IAAI,gBAAgB;IAgBpC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACH,UAAU,IAAI;QACZ,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB;CAuBF"}
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* Provides a menu definition that can be rendered by any CLI UI.
|
|
6
6
|
*/
|
|
7
7
|
import { createStandardActions } from '../ui/menu-types.js';
|
|
8
|
-
import { SettingsLoader } from './SettingsLoader.js';
|
|
9
|
-
import { SettingsWriter } from './SettingsWriter.js';
|
|
8
|
+
import { SettingsLoader, setGlobalSetting } from './SettingsLoader.js';
|
|
10
9
|
import { SETTINGS_METADATA, DEFAULT_SETTINGS } from './SettingsSchema.js';
|
|
11
10
|
/**
|
|
12
11
|
* Map of config keys to environment variable keys
|
|
@@ -37,10 +36,10 @@ const ENV_KEY_MAP = Object.entries(CONFIG_KEY_MAP)
|
|
|
37
36
|
*/
|
|
38
37
|
export class MentorshipConfigService {
|
|
39
38
|
loader;
|
|
40
|
-
writer;
|
|
41
39
|
constructor(projectPath = process.cwd()) {
|
|
40
|
+
// Reads use the given projectPath (effective config); writes go to the GLOBAL
|
|
41
|
+
// ~/.cortex/.env surgically via setGlobalSetting (see setConfig).
|
|
42
42
|
this.loader = new SettingsLoader(projectPath);
|
|
43
|
-
this.writer = new SettingsWriter(projectPath);
|
|
44
43
|
}
|
|
45
44
|
/**
|
|
46
45
|
* Get current mentorship configuration
|
|
@@ -80,7 +79,13 @@ export class MentorshipConfigService {
|
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
}
|
|
83
|
-
|
|
82
|
+
// Harness config is GLOBAL + sparse: write each changed key surgically to
|
|
83
|
+
// ~/.cortex/.env (not a full-file regen at cwd, which would re-freeze every lever
|
|
84
|
+
// and break upgrade propagation).
|
|
85
|
+
for (const [envKey, val] of Object.entries(updates)) {
|
|
86
|
+
setGlobalSetting(envKey, val);
|
|
87
|
+
process.env[envKey] = val;
|
|
88
|
+
}
|
|
84
89
|
this.loader.reload();
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MentorshipConfigService.js","sourceRoot":"","sources":["../../src/config/MentorshipConfigService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"MentorshipConfigService.js","sourceRoot":"","sources":["../../src/config/MentorshipConfigService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAwB,MAAM,qBAAqB,CAAC;AAqBhG;;GAEG;AACH,MAAM,cAAc,GAA2C;IAC7D,OAAO,EAAE,oBAAoB;IAC7B,cAAc,EAAE,6BAA6B;IAC7C,cAAc,EAAE,4BAA4B;IAC5C,eAAe,EAAE,6BAA6B;IAC9C,cAAc,EAAE,4BAA4B;IAC5C,WAAW,EAAE,yBAAyB;IACtC,gBAAgB,EAAE,+BAA+B;IACjD,YAAY,EAAE,0BAA0B;IACxC,mBAAmB,EAAE,iCAAiC;IACtD,gBAAgB,EAAE,8BAA8B;IAChD,gBAAgB,EAAE,8BAA8B;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAA2C,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;KACvF,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE;IACnC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAmC,CAAC;IAClD,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAA4C,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IAC1B,MAAM,CAAiB;IAE/B,YAAY,cAAsB,OAAO,CAAC,GAAG,EAAE;QAC7C,8EAA8E;QAC9E,kEAAkE;QAClE,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAEzC,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,kBAAkB,KAAK,MAAM;YAC1C,cAAc,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;YAC1D,cAAc,EAAE,GAAG,CAAC,0BAAuD;YAC3E,eAAe,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;YAC3D,cAAc,EAAE,GAAG,CAAC,0BAA0B;YAC9C,WAAW,EAAE,GAAG,CAAC,uBAAuB;YACxC,gBAAgB,EAAE,GAAG,CAAC,6BAA6B,KAAK,MAAM;YAC9D,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE;YAC1D,mBAAmB,EAAE,GAAG,CAAC,+BAA+B,KAAK,MAAM;YACnE,gBAAgB,EAAE,GAAG,CAAC,4BAA4B,KAAK,MAAM;YAC7D,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC;SAClE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAAiC;QAC/C,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,cAAc,CAAC,GAA6B,CAAC,CAAC;YAC7D,IAAI,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC7C,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACrC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,kFAAkF;QAClF,kCAAkC;QAClC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,gBAAgB,CAAC,MAAa,EAAE,GAAG,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAmC,GAAM;QAC/C,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAmC,GAAM,EAAE,KAA0B;QACjF,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAA+B,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;QAEtF,4BAA4B;QAC5B,MAAM,QAAQ,GAAkB;YAC9B;gBACE,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,iBAAiB;gBACxB,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC,CAAC,GAAG,KAAK,oBAAoB,IAAI,CAAC,CAAC,GAAG,KAAK,yBAAyB,CACtE,CAAC;aACH;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,qCAAqC;gBAClD,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC,CAAC,GAAG,KAAK,6BAA6B;oBACvC,CAAC,CAAC,GAAG,KAAK,4BAA4B;oBACtC,CAAC,CAAC,GAAG,KAAK,8BAA8B;oBACxC,CAAC,CAAC,GAAG,KAAK,8BAA8B,CACzC,CAAC;aACH;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,iCAAiC;gBAC9C,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC,CAAC,GAAG,KAAK,6BAA6B;oBACvC,CAAC,CAAC,GAAG,KAAK,4BAA4B,CACvC,CAAC;aACH;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,iBAAiB;gBACxB,WAAW,EAAE,iCAAiC;gBAC9C,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC,CAAC,GAAG,KAAK,+BAA+B;oBACzC,CAAC,CAAC,GAAG,KAAK,0BAA0B,CACrC,CAAC;aACH;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxD,CAAC,CAAC,GAAG,KAAK,iCAAiC,CAC5C,CAAC;aACH;SACF,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,+CAA+C;YAC5D,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAClD,OAAO,EAAE,qBAAqB,EAAE;YAChC,MAAM,EAAE,+EAA+E;SACxF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAA2B;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE/D,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,SAAS;oBACZ,OAAO;wBACL,IAAI,EAAE,QAAiB;wBACvB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,YAAY,KAAK,IAAI;wBAC5B,UAAU,EAAE,IAAI;qBACjB,CAAC;gBAEJ,KAAK,QAAQ;oBACX,OAAO;wBACL,IAAI,EAAE,QAAiB;wBACvB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,YAAsB,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE;wBAChD,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACnC,KAAK,EAAE,CAAC;4BACR,KAAK,EAAE,CAAC;yBACT,CAAC,CAAC;wBACH,UAAU,EAAE,IAAI;qBACjB,CAAC;gBAEJ,KAAK,QAAQ;oBACX,OAAO;wBACL,IAAI,EAAE,QAAiB;wBACvB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC;wBACnF,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjD,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;wBACnD,UAAU,EAAE,KAAK;qBAClB,CAAC;gBAEJ,KAAK,QAAQ;oBACX,OAAO;wBACL,IAAI,EAAE,MAAe;wBACrB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,YAAsB,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE;wBAChD,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,UAAU,EAAE,KAAK;qBAClB,CAAC;gBAEJ;oBACE,OAAO;wBACL,IAAI,EAAE,MAAe;wBACrB,GAAG,EAAE,CAAC,CAAC,GAAG;wBACV,KAAK,EAAE,CAAC,CAAC,WAAW;wBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;qBAC/C,CAAC;YACN,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW,EAAE,KAAc;QACvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,kBAAkB;QAClB,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACnF,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACzC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,KAAK,MAAM;YACvD,cAAc,EAAE,gBAAgB,CAAC,2BAA2B,KAAK,MAAM;YACvE,cAAc,EAAE,gBAAgB,CAAC,0BAAuD;YACxF,eAAe,EAAE,gBAAgB,CAAC,2BAA2B,KAAK,MAAM;YACxE,cAAc,EAAE,gBAAgB,CAAC,0BAA0B;YAC3D,WAAW,EAAE,gBAAgB,CAAC,uBAAuB;YACrD,gBAAgB,EAAE,gBAAgB,CAAC,6BAA6B,KAAK,MAAM;YAC3E,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC;YACjE,mBAAmB,EAAE,gBAAgB,CAAC,+BAA+B,KAAK,MAAM;YAChF,gBAAgB,EAAE,gBAAgB,CAAC,4BAA4B,KAAK,MAAM;YAC1E,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,4BAA4B,CAAC;SAC1E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,SAAS,CAAC;YACnB,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,QAAQ;YACxB,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,UAAU;QAKR,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,YAAY,QAAQ,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,gBAAgB,YAAY,CAAC,CAAC;QACjE,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;YAC/C,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC9D,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { OrchestratorConfig } from '../orchestrator/CortexOrchestrator.js';
|
|
8
8
|
import type { EnvironmentVariables } from './SettingsSchema.js';
|
|
9
|
+
import { DEFAULT_SETTINGS } from './SettingsSchema.js';
|
|
9
10
|
/**
|
|
10
11
|
* Result of a write operation
|
|
11
12
|
*/
|
|
@@ -29,20 +30,51 @@ export declare function parseEnvFile(content: string): EnvironmentVariables;
|
|
|
29
30
|
export declare function getGlobalConfigDir(): string;
|
|
30
31
|
/** Absolute path to the global config file (~/.cortex/.env). */
|
|
31
32
|
export declare function getGlobalEnvPath(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the shipped `.env.defaults` — the read-live default config layer.
|
|
35
|
+
*
|
|
36
|
+
* This file is committed + ships in the package and is READ directly (never copied
|
|
37
|
+
* into the user's .env), so a package upgrade ships new defaults automatically. It is
|
|
38
|
+
* loaded as the LOWEST-precedence layer (below the user's ~/.cortex/.env, below the
|
|
39
|
+
* real shell env) and also overlays DEFAULT_SETTINGS as the effective floor.
|
|
40
|
+
*
|
|
41
|
+
* Search order mirrors the (legacy) seed: the caller's packageRoot, then cwd, then
|
|
42
|
+
* CORE's own root — core is a dependency of every entry point and is build-synced
|
|
43
|
+
* with the root canonical, so the file exists for any current/future bin even when
|
|
44
|
+
* the calling package doesn't ship its own copy.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveDefaultsEnvPath(packageRoot?: string): string | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* The keys-only seed for a fresh `~/.cortex/.env`: the secret keys + a short header,
|
|
49
|
+
* NO levers. Harness defaults ship in `.env.defaults` and are read live, so freezing
|
|
50
|
+
* them into the user's file is exactly what blocks upgrades from propagating new
|
|
51
|
+
* defaults. Seeding only the keys keeps the file sparse — an upgrade brings new
|
|
52
|
+
* defaults with nothing to regenerate and no keys to re-enter.
|
|
53
|
+
*/
|
|
54
|
+
export declare function keysOnlyStub(): string;
|
|
55
|
+
/**
|
|
56
|
+
* `DEFAULT_SETTINGS` overlaid with the shipped `.env.defaults` — the EFFECTIVE floor.
|
|
57
|
+
*
|
|
58
|
+
* The read-live default layer reaches most levers through `process.env` (bootstrapEnv
|
|
59
|
+
* loads `.env.defaults` as the lowest base file), but a handful of merge keys don't
|
|
60
|
+
* consult `process.env`. Overlaying `.env.defaults` onto `DEFAULT_SETTINGS` makes the
|
|
61
|
+
* shipped file authoritative for EVERY lever. Secrets are untouched (they are Omitted
|
|
62
|
+
* from `DEFAULT_SETTINGS`, so the loop never visits them). Cached — the shipped file
|
|
63
|
+
* does not change at runtime.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getEffectiveDefaults(): Readonly<typeof DEFAULT_SETTINGS>;
|
|
32
66
|
/**
|
|
33
67
|
* THE canonical .env → process.env bootstrap for every CLI/TUI entry point.
|
|
34
68
|
*
|
|
35
69
|
* One implementation, so a consumer never hand-rolls dotenv loading (and can't
|
|
36
|
-
* forget the global `~/.cortex/.env`).
|
|
37
|
-
* .env files into process.env
|
|
38
|
-
*
|
|
39
|
-
* copies the shipped `.env.example` → `~/.cortex/.env` when that file is missing
|
|
40
|
-
* (the Docker image does the same copy at build time). All bins call this ONCE at
|
|
41
|
-
* startup; a change here takes effect for every launcher.
|
|
70
|
+
* forget the global `~/.cortex/.env`). It seeds a KEYS-ONLY `~/.cortex/.env` on first
|
|
71
|
+
* run (below), then READS + layers the .env files into process.env. All bins call this
|
|
72
|
+
* ONCE at startup; a change here takes effect for every launcher.
|
|
42
73
|
*
|
|
43
|
-
* Precedence (highest → lowest): a `.env.local` beside any of the base files wins
|
|
44
|
-
*
|
|
45
|
-
* `~/.cortex/.env
|
|
74
|
+
* Precedence (highest → lowest): a `.env.local` beside any of the base files wins over
|
|
75
|
+
* everything; then project `./.env` (or `packageRoot/.env`) beats the global
|
|
76
|
+
* `~/.cortex/.env`, which beats the shipped `.env.defaults` (the read-live default
|
|
77
|
+
* layer, appended last). Matches `loadEnvFile()`'s layering.
|
|
46
78
|
*
|
|
47
79
|
* FIRST-WINS over the real environment: a value already present in `process.env`
|
|
48
80
|
* (e.g. a key the hosting container injected) is NEVER overwritten by a base .env
|
|
@@ -74,6 +106,42 @@ export declare function writeEnvSetting(projectPath: string, key: keyof Environm
|
|
|
74
106
|
* Update multiple settings in the .env file
|
|
75
107
|
*/
|
|
76
108
|
export declare function writeEnvSettings(projectPath: string, settings: Partial<EnvironmentVariables>): Record<string, WriteResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Surgically REMOVE a setting's line from the .env file (delete the `KEY=...` line and
|
|
111
|
+
* its value), preserving every other line and all comments. This is the correct "reset
|
|
112
|
+
* to default" in the read-live model: deleting a user's override line makes the lever
|
|
113
|
+
* fall back to the shipped `.env.defaults` — so the user rejoins the default flow and
|
|
114
|
+
* picks up future improvements. (Writing the current default VALUE would re-freeze it.)
|
|
115
|
+
* A key that isn't present is a no-op success.
|
|
116
|
+
*/
|
|
117
|
+
export declare function removeEnvSetting(projectPath: string, key: keyof EnvironmentVariables): WriteResult;
|
|
118
|
+
/** Set a single setting in the GLOBAL ~/.cortex/.env (surgical, sparse). The canonical
|
|
119
|
+
* write target for every /config surface — harness config is global (identical from any
|
|
120
|
+
* directory), so a user's choice lives in one place and survives package updates. */
|
|
121
|
+
export declare function setGlobalSetting(key: keyof EnvironmentVariables, value: string): WriteResult;
|
|
122
|
+
/** Remove a single setting's override line from the GLOBAL ~/.cortex/.env (reset-to-default). */
|
|
123
|
+
export declare function removeGlobalSetting(key: keyof EnvironmentVariables): WriteResult;
|
|
124
|
+
/** The SHIPPED default value for a lever, read from the live `.env.defaults` (covers every
|
|
125
|
+
* lever, including the ones not in DEFAULT_SETTINGS). '' if the file/key is absent. Used
|
|
126
|
+
* to restore a lever to its shipped default after removing a user override. */
|
|
127
|
+
export declare function getShippedDefault(key: keyof EnvironmentVariables): string;
|
|
128
|
+
/**
|
|
129
|
+
* ONE-TIME migration for EXISTING users upgrading to the read-live model. The old install
|
|
130
|
+
* seeded a FULL copy of every lever into `~/.cortex/.env`, which now FREEZES those levers
|
|
131
|
+
* (a user value beats the shipped `.env.defaults`), so an upgrade would never reach them.
|
|
132
|
+
*
|
|
133
|
+
* This collapses that full snapshot back to SPARSE: a lever line is removed when its value
|
|
134
|
+
* equals a DEFAULT — either the new shipped default (`.env.defaults`) OR the hardcoded
|
|
135
|
+
* `DEFAULT_SETTINGS` floor (which still holds the OLD pre-reson defaults). Matching either
|
|
136
|
+
* means the user never deliberately chose it, so removing it lets the lever inherit the
|
|
137
|
+
* current shipped default (and every future one). Genuine divergences and ALL API keys are
|
|
138
|
+
* preserved untouched. Marker-gated (`~/.cortex/.env-migrated`) so it runs exactly once;
|
|
139
|
+
* best-effort (never blocks boot); only acts on a FULL snapshot, never a sparse file.
|
|
140
|
+
*/
|
|
141
|
+
export declare function migrateGlobalConfigToSparse(): {
|
|
142
|
+
migrated: boolean;
|
|
143
|
+
removed: number;
|
|
144
|
+
};
|
|
77
145
|
/**
|
|
78
146
|
* Get Google/Gemini API key with proper fallback
|
|
79
147
|
* Priority: GEMINI_API_KEY (recommended by Google) -> GOOGLE_API_KEY (legacy)
|
|
@@ -138,11 +206,24 @@ export declare class SettingsLoader {
|
|
|
138
206
|
*/
|
|
139
207
|
setMultiple(settings: Partial<EnvironmentVariables>): Record<string, WriteResult>;
|
|
140
208
|
/**
|
|
141
|
-
*
|
|
209
|
+
* Remove a setting's override line (reset-to-default). Deletes the user's override so
|
|
210
|
+
* the lever falls back to the shipped `.env.defaults` — the correct reset in the
|
|
211
|
+
* read-live model (writing the current default value would re-freeze it).
|
|
142
212
|
*/
|
|
213
|
+
remove<K extends keyof EnvironmentVariables>(key: K): WriteResult;
|
|
214
|
+
/** Alias — reset a single setting to the shipped default by removing the override. */
|
|
143
215
|
resetToDefault<K extends keyof EnvironmentVariables>(key: K): WriteResult;
|
|
144
216
|
/**
|
|
145
|
-
*
|
|
217
|
+
* True if this key is set as an override in the user's OWN .env file (vs flowing from
|
|
218
|
+
* the shipped .env.defaults). Powers the "your override / shipped default" display.
|
|
219
|
+
*/
|
|
220
|
+
isUserOverride<K extends keyof EnvironmentVariables>(key: K): boolean;
|
|
221
|
+
/** All keys the user has overridden in their own .env file (one read — for a display
|
|
222
|
+
* that needs to mark many rows without re-reading the file per row). */
|
|
223
|
+
getOverriddenKeys(): string[];
|
|
224
|
+
/**
|
|
225
|
+
* Reset all LEVERS to defaults by removing their override lines (API keys preserved),
|
|
226
|
+
* so every lever falls back to the shipped `.env.defaults`.
|
|
146
227
|
*/
|
|
147
228
|
resetAllToDefaults(): Record<string, WriteResult>;
|
|
148
229
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsLoader.d.ts","sourceRoot":"","sources":["../../src/config/SettingsLoader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingsLoader.d.ts","sourceRoot":"","sources":["../../src/config/SettingsLoader.ts"],"names":[],"mappings":"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"}
|