@nexus-cortex/core 4.102.0 → 4.104.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.defaults +24 -1
- package/dist/config/RuntimeConfigRegistry.d.ts.map +1 -1
- package/dist/config/RuntimeConfigRegistry.js +3 -0
- package/dist/config/RuntimeConfigRegistry.js.map +1 -1
- package/dist/config/SettingsLoader.d.ts.map +1 -1
- package/dist/config/SettingsLoader.js +3 -0
- package/dist/config/SettingsLoader.js.map +1 -1
- package/dist/config/SettingsSchema.d.ts +3 -0
- package/dist/config/SettingsSchema.d.ts.map +1 -1
- package/dist/config/SettingsSchema.js +30 -3
- package/dist/config/SettingsSchema.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +14 -0
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/middleware/HelperModelMiddleware.d.ts.map +1 -1
- package/dist/middleware/HelperModelMiddleware.js +19 -13
- package/dist/middleware/HelperModelMiddleware.js.map +1 -1
- package/dist/middleware/helpers/adapters/ChatCompletionsAPIHelperAdapter.d.ts.map +1 -1
- package/dist/middleware/helpers/adapters/ChatCompletionsAPIHelperAdapter.js +24 -12
- package/dist/middleware/helpers/adapters/ChatCompletionsAPIHelperAdapter.js.map +1 -1
- package/dist/middleware/helpers/helperFrame.d.ts +3 -0
- package/dist/middleware/helpers/helperFrame.d.ts.map +1 -1
- package/dist/middleware/helpers/helperFrame.js.map +1 -1
- package/dist/models/registry/ModelAliasResolver.d.ts.map +1 -1
- package/dist/models/registry/ModelAliasResolver.js +6 -4
- package/dist/models/registry/ModelAliasResolver.js.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.d.ts +2 -0
- package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.js +11 -5
- package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
- package/dist/orchestrator/SubAgentManager.js +1 -1
- package/dist/orchestrator/SubAgentManager.js.map +1 -1
- package/dist/training/mentorRole.d.ts +63 -0
- package/dist/training/mentorRole.d.ts.map +1 -0
- package/dist/training/mentorRole.js +70 -0
- package/dist/training/mentorRole.js.map +1 -0
- package/package.json +3 -3
|
@@ -39,6 +39,7 @@ import { resolveToolProfile, resolveToolAnchor, resolveFrameProfile, resolveLift
|
|
|
39
39
|
import { sliceReadFile, decideSliceBlock } from './sliceBlock.js';
|
|
40
40
|
import { TurnEvidence, evaluateEndTurnGates, buildMissingEndTurnReminder } from './endTurnGates.js';
|
|
41
41
|
import { collectWorkspaceDelta, detectCheckCommand, runCheck, resolveJudgeGroundingConfig } from '../training/judgeEvidence.js';
|
|
42
|
+
import { resolveMentorRoleConfig, describeMentorWire } from '../training/mentorRole.js';
|
|
42
43
|
import { resolveOuterToolDeadlineMs } from './outerToolTimeout.js';
|
|
43
44
|
import { resolveTurnDeadlineMs, timeBudgetState, timeBudgetWarnNudge } from './timeBudget.js';
|
|
44
45
|
import { readStagedDoctrine, applyCuratedDoctrine, runOrientForStaging, withTimeout } from './doctrineCuration.js';
|
|
@@ -185,6 +186,10 @@ export class CortexOrchestrator {
|
|
|
185
186
|
loopBlockCounts = new Map();
|
|
186
187
|
loopBlockEscalate = false;
|
|
187
188
|
liftPlanDelivered = false; // LIFT_MENTOR_PLANNER: bounded mentor-planner at the lift, one-shot
|
|
189
|
+
/** MENTOR ROLE: what the wire carried for a mentor surface (banked on every mentor event; see mentorRole.ts). */
|
|
190
|
+
mentorWire(surface, effort, budget) {
|
|
191
|
+
return describeMentorWire(resolveMentorRoleConfig(surface, process.env, { modelId: this.config.reactiveMentorship?.helperModelId, effort, outputBudgetTokens: budget }));
|
|
192
|
+
}
|
|
188
193
|
cachedEnvReport; // ENV_RECON_COMMAND output; cached for the lift planner, REFRESHED for the judges (HB-JUDGE-GROUNDING)
|
|
189
194
|
taskStartMs = 0; // HB-JUDGE-GROUNDING: the user-turn start — the workspace delta is 'files changed since here'
|
|
190
195
|
endTurnResolverRejects = 0; // endTurnResolver: GAP vetoes so far this task (bounded by maxRejects → fallback-accept)
|
|
@@ -439,7 +444,7 @@ export class CortexOrchestrator {
|
|
|
439
444
|
kind: 'lift_plan',
|
|
440
445
|
// OBSERVABILITY (resolver-AB follow-up): bank the plan TEXT + latency, not just counts —
|
|
441
446
|
// so a k=5 run can score plan QUALITY (and read the reasoning behind a RETIRE).
|
|
442
|
-
detail: { fired: true, planChars: plan.length, retire, criteriaStated, latencyMs, planText: plan.slice(0, 4000) },
|
|
447
|
+
detail: { fired: true, planChars: plan.length, retire, criteriaStated, latencyMs, mentor: this.mentorWire('lift-plan', resolveLiftPlanConfig().effort, resolveLiftPlanConfig().outputBudgetTokens), planText: plan.slice(0, 4000) },
|
|
443
448
|
}).catch(() => { });
|
|
444
449
|
if (this.config.debug) {
|
|
445
450
|
console.log(`[LiftPlan] plan delivered at lift (${plan.length} chars, retire=${retire}, criteria=${criteriaStated})`);
|
|
@@ -608,6 +613,7 @@ export class CortexOrchestrator {
|
|
|
608
613
|
planChars: verdict.plan.length, rejects: this.endTurnResolverRejects, parsed: verdict.parsed,
|
|
609
614
|
latencyMs, rawLen: (text ?? '').length,
|
|
610
615
|
deltaChars: workspaceDelta.length, checkRan: !!checkResult, checkPassed: checkResult ? /→ PASSED/.test(checkResult) : null,
|
|
616
|
+
mentor: this.mentorWire('endturn-resolver', cfg.effort, cfg.outputBudgetTokens),
|
|
611
617
|
planText: verdict.plan.slice(0, 4000),
|
|
612
618
|
workProductSample: workProduct.slice(0, 1500),
|
|
613
619
|
attestation: attestation.slice(0, 800),
|
|
@@ -681,7 +687,7 @@ export class CortexOrchestrator {
|
|
|
681
687
|
kind: 'deadline_exit_mentor',
|
|
682
688
|
detail: {
|
|
683
689
|
decision: v.decision, parsed: v.parsed, remainingMs, latencyMs: Date.now() - t0,
|
|
684
|
-
detailText: v.detail.slice(0, 2000), workProductSample: workProduct.slice(0, 1200),
|
|
690
|
+
detailText: v.detail.slice(0, 2000), workProductSample: workProduct.slice(0, 1200), mentor: this.mentorWire('deadline-exit-mentor', cfg.effort, outputBudgetTokens),
|
|
685
691
|
},
|
|
686
692
|
}).catch(() => { });
|
|
687
693
|
switch (v.decision) {
|
|
@@ -3137,7 +3143,7 @@ export class CortexOrchestrator {
|
|
|
3137
3143
|
this.pendingTurnPrediction = {
|
|
3138
3144
|
sessionId: this.currentSessionId,
|
|
3139
3145
|
turnNumber: this.turnNumber,
|
|
3140
|
-
predictorModel: process.env.HELPER_MODEL_ID || 'deepseek-
|
|
3146
|
+
predictorModel: process.env.HELPER_MODEL_ID || 'deepseek-flash',
|
|
3141
3147
|
summary: turnSummaryData.summary || null,
|
|
3142
3148
|
prediction: turnSummaryData.prediction,
|
|
3143
3149
|
predictedAtMs: Date.now(),
|
|
@@ -4882,7 +4888,7 @@ export class CortexOrchestrator {
|
|
|
4882
4888
|
this.pendingTurnPrediction = {
|
|
4883
4889
|
sessionId: this.currentSessionId,
|
|
4884
4890
|
turnNumber: this.turnNumber,
|
|
4885
|
-
predictorModel: process.env.HELPER_MODEL_ID || 'deepseek-
|
|
4891
|
+
predictorModel: process.env.HELPER_MODEL_ID || 'deepseek-flash',
|
|
4886
4892
|
summary: turnSummaryData.summary || null,
|
|
4887
4893
|
prediction: turnSummaryData.prediction,
|
|
4888
4894
|
predictedAtMs: Date.now(),
|
|
@@ -7760,7 +7766,7 @@ export class CortexOrchestrator {
|
|
|
7760
7766
|
? `Tool "${toolUse.name}" is DISABLED: repeated loop interventions have not broken the pattern. A senior engineer reviewed your situation and gave this exit plan:\n\n${plan}\n\nFollow this instead of retrying "${toolUse.name}".`
|
|
7761
7767
|
: `Tool "${toolUse.name}" is DISABLED: repeated loop interventions have not broken this pattern. Stop retrying "${toolUse.name}", re-read the task requirements, and take a fundamentally different approach.`;
|
|
7762
7768
|
if (store)
|
|
7763
|
-
void store.recordEvent({ sessionId: this.currentSessionId ?? 'unknown', kind: 'loop_tool_block', toolName: toolUse.name, detail: { trigger: this.loopBlockTrigger, escalated: true, consulted: !!plan, verdict } }).catch(() => { });
|
|
7769
|
+
void store.recordEvent({ sessionId: this.currentSessionId ?? 'unknown', kind: 'loop_tool_block', toolName: toolUse.name, detail: { trigger: this.loopBlockTrigger, escalated: true, consulted: !!plan, verdict, mentor: this.mentorWire('loop-exit-planner', resolveLoopExitConfig().effort, resolveLoopExitConfig().outputBudgetTokens) } }).catch(() => { });
|
|
7764
7770
|
if (this.config.debug)
|
|
7765
7771
|
console.log(`[LoopBlock] ESCALATED ${toolUse.name} → exit-planner (${plan ? verdict + ' plan delivered' : 'fail-open'})`);
|
|
7766
7772
|
return { tool_use_id: toolUse.id, tool_name: toolUse.name, content, is_error: true, metadata: { loopToolBlock: true, escalated: true, verdict } };
|