@caupulican/pi-adaptative 0.81.27 → 0.81.30
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/CHANGELOG.md +32 -0
- package/dist/bundled-resources/skills/harness-self-adaptation/SKILL.md +327 -0
- package/dist/bundled-resources/skills/harness-self-adaptation/references/adaptation-layers.md +89 -0
- package/dist/core/agent-session.d.ts +20 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +73 -17
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +6 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +35 -0
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/autonomy/approval-gate.d.ts +1 -1
- package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
- package/dist/core/autonomy/approval-gate.js +5 -1
- package/dist/core/autonomy/approval-gate.js.map +1 -1
- package/dist/core/autonomy/contracts.d.ts +2 -0
- package/dist/core/autonomy/contracts.d.ts.map +1 -1
- package/dist/core/autonomy/contracts.js.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.d.ts +4 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +31 -4
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/lane-tracker.d.ts +6 -0
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +25 -3
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
- package/dist/core/autonomy/risk-assessment.js +1 -1
- package/dist/core/autonomy/risk-assessment.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +34 -1
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +204 -9
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/context/context-artifacts.d.ts.map +1 -1
- package/dist/core/context/context-artifacts.js +7 -6
- package/dist/core/context/context-artifacts.js.map +1 -1
- package/dist/core/context/context-store-retention.d.ts +12 -0
- package/dist/core/context/context-store-retention.d.ts.map +1 -0
- package/dist/core/context/context-store-retention.js +161 -0
- package/dist/core/context/context-store-retention.js.map +1 -0
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +20 -4
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +18 -15
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +143 -38
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/cost/cost-summary.d.ts +7 -1
- package/dist/core/cost/cost-summary.d.ts.map +1 -1
- package/dist/core/cost/cost-summary.js +28 -17
- package/dist/core/cost/cost-summary.js.map +1 -1
- package/dist/core/cost/daily-usage.d.ts +7 -3
- package/dist/core/cost/daily-usage.d.ts.map +1 -1
- package/dist/core/cost/daily-usage.js +10 -5
- package/dist/core/cost/daily-usage.js.map +1 -1
- package/dist/core/delegation/worker-result.d.ts.map +1 -1
- package/dist/core/delegation/worker-result.js +3 -0
- package/dist/core/delegation/worker-result.js.map +1 -1
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +70 -5
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/export-html/template.js +2 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +52 -2
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +21 -19
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +5 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/failure-corpus.d.ts.map +1 -1
- package/dist/core/failure-corpus.js +36 -13
- package/dist/core/failure-corpus.js.map +1 -1
- package/dist/core/local-runtime-controller.d.ts +16 -0
- package/dist/core/local-runtime-controller.d.ts.map +1 -1
- package/dist/core/local-runtime-controller.js +127 -30
- package/dist/core/local-runtime-controller.js.map +1 -1
- package/dist/core/memory-controller.d.ts +2 -0
- package/dist/core/memory-controller.d.ts.map +1 -1
- package/dist/core/memory-controller.js +18 -0
- package/dist/core/memory-controller.js.map +1 -1
- package/dist/core/model-registry.d.ts +2 -0
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +4 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/models/local-runtime.d.ts +2 -0
- package/dist/core/models/local-runtime.d.ts.map +1 -1
- package/dist/core/models/local-runtime.js +25 -14
- package/dist/core/models/local-runtime.js.map +1 -1
- package/dist/core/models/runtime-arbiter.d.ts +11 -0
- package/dist/core/models/runtime-arbiter.d.ts.map +1 -1
- package/dist/core/models/runtime-arbiter.js +35 -13
- package/dist/core/models/runtime-arbiter.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +5 -1
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +9 -3
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +19 -2
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +13 -5
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +3 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-analytics.d.ts +13 -7
- package/dist/core/session-analytics.d.ts.map +1 -1
- package/dist/core/session-analytics.js +155 -112
- package/dist/core/session-analytics.js.map +1 -1
- package/dist/core/tool-gate-controller.d.ts +3 -0
- package/dist/core/tool-gate-controller.d.ts.map +1 -1
- package/dist/core/tool-gate-controller.js +20 -15
- package/dist/core/tool-gate-controller.js.map +1 -1
- package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
- package/dist/core/tool-recovery-log-records.js +54 -9
- package/dist/core/tool-recovery-log-records.js.map +1 -1
- package/dist/core/tool-recovery-logger.d.ts +2 -0
- package/dist/core/tool-recovery-logger.d.ts.map +1 -1
- package/dist/core/tool-recovery-logger.js +32 -13
- package/dist/core/tool-recovery-logger.js.map +1 -1
- package/dist/core/tool-recovery-stats.d.ts +15 -0
- package/dist/core/tool-recovery-stats.d.ts.map +1 -0
- package/dist/core/tool-recovery-stats.js +206 -0
- package/dist/core/tool-recovery-stats.js.map +1 -0
- package/dist/core/tool-selection/expected-utility.d.ts +51 -0
- package/dist/core/tool-selection/expected-utility.d.ts.map +1 -0
- package/dist/core/tool-selection/expected-utility.js +85 -0
- package/dist/core/tool-selection/expected-utility.js.map +1 -0
- package/dist/core/tool-selection/tool-performance-store.d.ts +82 -0
- package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -0
- package/dist/core/tool-selection/tool-performance-store.js +249 -0
- package/dist/core/tool-selection/tool-performance-store.js.map +1 -0
- package/dist/core/tool-selection/tool-selection-controller.d.ts +41 -0
- package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -0
- package/dist/core/tool-selection/tool-selection-controller.js +199 -0
- package/dist/core/tool-selection/tool-selection-controller.js.map +1 -0
- package/dist/core/tools/delegate-status.d.ts +9 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -0
- package/dist/core/tools/delegate-status.js +61 -0
- package/dist/core/tools/delegate-status.js.map +1 -0
- package/dist/core/tools/delegate.d.ts +13 -0
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +28 -4
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/run-toolkit-script.d.ts +3 -0
- package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
- package/dist/core/tools/run-toolkit-script.js +17 -7
- package/dist/core/tools/run-toolkit-script.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +2 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +12 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +19 -9
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +12 -2
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tool-panel-registry.d.ts +1 -0
- package/dist/modes/interactive/components/tool-panel-registry.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-panel-registry.js +18 -2
- package/dist/modes/interactive/components/tool-panel-registry.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +18 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +9 -28
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/utils/streaming-lines.d.ts +20 -0
- package/dist/utils/streaming-lines.d.ts.map +1 -0
- package/dist/utils/streaming-lines.js +79 -0
- package/dist/utils/streaming-lines.js.map +1 -0
- package/docs/extensions.md +2 -0
- package/docs/index.md +1 -1
- package/docs/integration-sweep-builder-blueprint-2026-07-09.md +365 -0
- package/docs/integration-sweep-resume-2026-07-09.md +407 -0
- package/docs/self-adaptation.md +7 -0
- package/docs/settings.md +7 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -9,6 +9,7 @@ import { getAgentDir } from "../config.js";
|
|
|
9
9
|
import { stripFrontmatter } from "../utils/frontmatter.js";
|
|
10
10
|
import { formatNoApiKeyFoundMessage, formatNoModelSelectedMessage } from "./auth-guidance.js";
|
|
11
11
|
import { buildForegroundEnvelope, formatForegroundEnvelopeObservation } from "./autonomy/foreground-envelope.js";
|
|
12
|
+
import { evaluateToolGate } from "./autonomy/gates.js";
|
|
12
13
|
import { AutonomyTelemetry } from "./autonomy-telemetry.js";
|
|
13
14
|
import { BackgroundLaneController } from "./background-lane-controller.js";
|
|
14
15
|
import { BashExecutionController } from "./bash-execution-controller.js";
|
|
@@ -49,6 +50,8 @@ import { TOOL_RECOVERY_EVENT_LOG_FILE } from "./tool-recovery-log-records.js";
|
|
|
49
50
|
import { ToolRecoveryLogger } from "./tool-recovery-logger.js";
|
|
50
51
|
import { formatToolRepairHealthReport } from "./tool-repair-health.js";
|
|
51
52
|
import { resolveCurrentToolRepairSettings } from "./tool-repair-settings.js";
|
|
53
|
+
import { ToolPerformanceStore } from "./tool-selection/tool-performance-store.js";
|
|
54
|
+
import { ToolSelectionController } from "./tool-selection/tool-selection-controller.js";
|
|
52
55
|
// ============================================================================
|
|
53
56
|
// Stream-idle watchdog wiring
|
|
54
57
|
// ============================================================================
|
|
@@ -154,6 +157,7 @@ export class AgentSession {
|
|
|
154
157
|
_bash;
|
|
155
158
|
_profileFilter;
|
|
156
159
|
_toolGate;
|
|
160
|
+
_toolSelection;
|
|
157
161
|
_extensionRunner;
|
|
158
162
|
_turnIndex = 0;
|
|
159
163
|
_currentForegroundEnvelope;
|
|
@@ -368,6 +372,7 @@ export class AgentSession {
|
|
|
368
372
|
getEvidenceBundleSnapshot: () => this.getEvidenceBundleSnapshot(),
|
|
369
373
|
saveEvidenceBundleSnapshot: (bundle) => this.saveEvidenceBundleSnapshot(bundle),
|
|
370
374
|
saveWorkerResultSnapshot: (result, request) => this.saveWorkerResultSnapshot(result, request),
|
|
375
|
+
readMemoryForLane: (query) => this._memory.readMemoryForLane(query),
|
|
371
376
|
addSpawnedUsage: (usage, opts) => this.addSpawnedUsage(usage, opts),
|
|
372
377
|
runIsolatedCompletion: (opts) => this.runIsolatedCompletion(opts),
|
|
373
378
|
continueGoalLoop: (options) => this.continueGoalLoop(options),
|
|
@@ -402,6 +407,7 @@ export class AgentSession {
|
|
|
402
407
|
getSessionManager: () => this.sessionManager,
|
|
403
408
|
getSettingsManager: () => this.settingsManager,
|
|
404
409
|
getModelRegistry: () => this._modelRegistry,
|
|
410
|
+
getModel: () => this.model,
|
|
405
411
|
getAgentDir: () => this._agentDir,
|
|
406
412
|
getCwd: () => this._cwd,
|
|
407
413
|
getActiveToolNames: () => this.getActiveToolNames(),
|
|
@@ -463,8 +469,10 @@ export class AgentSession {
|
|
|
463
469
|
isChildSession: () => this._isChildSession,
|
|
464
470
|
isDisposed: () => this._disposed,
|
|
465
471
|
getReflectionSignal: () => this._reflectionAbort.signal,
|
|
472
|
+
resolveTextToolCallProtocol: (model) => this._textProtocolFlag(model),
|
|
466
473
|
archivePromotedSkill: (name) => this.archivePromotedSkill(name),
|
|
467
474
|
emitAutonomyTelemetry: (event) => this._emitAutonomyTelemetry(event),
|
|
475
|
+
ensureModelReady: (model) => this._localRuntimeController.ensureIsolatedModelReady(model),
|
|
468
476
|
addSpawnedUsage: (usage, opts) => this.addSpawnedUsage(usage, opts),
|
|
469
477
|
saveLearningDecisionSnapshot: (decision) => this.saveLearningDecisionSnapshot(decision),
|
|
470
478
|
});
|
|
@@ -544,6 +552,9 @@ export class AgentSession {
|
|
|
544
552
|
getGoalStateSnapshot: () => this.getGoalStateSnapshot(),
|
|
545
553
|
saveGoalStateSnapshot: (state) => this.saveGoalStateSnapshot(state),
|
|
546
554
|
getContextGcReport: (messages) => this.getContextGcReport(messages),
|
|
555
|
+
startWorkerDelegation: (request) => this._backgroundLanes.startWorkerDelegation(request),
|
|
556
|
+
getWorkerLaneRecords: () => this._backgroundLanes.getLaneRecords(),
|
|
557
|
+
getWorkerResultSnapshots: () => this.getWorkerResultSnapshots(),
|
|
547
558
|
runWorkerDelegationOnce: (request) => this.runWorkerDelegationOnce(request),
|
|
548
559
|
runModelFitness: (args) => this.runModelFitness(args),
|
|
549
560
|
resolveCurationModelIfFit: () => this._resolveCurationModelIfFit(),
|
|
@@ -570,6 +581,9 @@ export class AgentSession {
|
|
|
570
581
|
const previousToolArgumentValidation = this.agent.onToolArgumentValidation;
|
|
571
582
|
this.agent.onToolArgumentValidation = (event) => {
|
|
572
583
|
const taggedEvent = this._tagModelAdaptationRuleTeaching(event);
|
|
584
|
+
if (taggedEvent.outcome === "repaired" || taggedEvent.outcome === "bounced") {
|
|
585
|
+
this._toolSelection.recordValidation(taggedEvent.tool, taggedEvent.outcome);
|
|
586
|
+
}
|
|
573
587
|
previousToolArgumentValidation?.(taggedEvent);
|
|
574
588
|
const logRecord = this._toolRecoveryLogger.recordToolArgumentValidation(taggedEvent);
|
|
575
589
|
if (!logRecord)
|
|
@@ -629,12 +643,41 @@ export class AgentSession {
|
|
|
629
643
|
isExplicitThinking: () => this._isExplicitThinking,
|
|
630
644
|
setThinkingLevel: (level) => this.setThinkingLevel(level, { persistSettings: false }),
|
|
631
645
|
});
|
|
646
|
+
this._toolSelection = new ToolSelectionController({
|
|
647
|
+
store: ToolPerformanceStore.forAgentDir(this._agentDir),
|
|
648
|
+
getModelRef: () => {
|
|
649
|
+
const model = this.model;
|
|
650
|
+
return model ? formatModelRouterModel(model) : "unknown";
|
|
651
|
+
},
|
|
652
|
+
getActiveTools: () => {
|
|
653
|
+
const activeNames = new Set(this.getActiveToolNames());
|
|
654
|
+
return this.getAllTools()
|
|
655
|
+
.filter((tool) => activeNames.has(tool.name))
|
|
656
|
+
.map((tool) => ({
|
|
657
|
+
name: tool.name,
|
|
658
|
+
description: tool.description,
|
|
659
|
+
parameters: tool.parameters,
|
|
660
|
+
}));
|
|
661
|
+
},
|
|
662
|
+
isCandidateAllowed: (toolName) => {
|
|
663
|
+
const envelope = this.capabilityEnvelope;
|
|
664
|
+
if (!envelope)
|
|
665
|
+
return true;
|
|
666
|
+
return (evaluateToolGate({
|
|
667
|
+
toolName,
|
|
668
|
+
args: {},
|
|
669
|
+
cwd: this._cwd,
|
|
670
|
+
envelope,
|
|
671
|
+
}).outcome === "allow");
|
|
672
|
+
},
|
|
673
|
+
});
|
|
632
674
|
this._toolGate = new ToolGateController({
|
|
633
675
|
maybeEscalateToolCall: (toolName, args) => this._modelRouter.maybeEscalateToolCall(toolName, args),
|
|
634
676
|
getCwd: () => this._cwd,
|
|
635
677
|
getCapabilityEnvelope: () => this.capabilityEnvelope,
|
|
636
678
|
recordGateOutcome: (outcome) => this._recordGateOutcome(outcome),
|
|
637
679
|
getExtensionRunner: () => this._extensionRunner,
|
|
680
|
+
getToolSelectionController: () => this._toolSelection,
|
|
638
681
|
});
|
|
639
682
|
// Always subscribe to agent events for internal handling
|
|
640
683
|
// (session persistence, extensions, auto-compaction, retry logic)
|
|
@@ -695,17 +738,7 @@ export class AgentSession {
|
|
|
695
738
|
if (controller.signal.aborted)
|
|
696
739
|
return;
|
|
697
740
|
if (model.provider === OLLAMA_PROVIDER || model.provider === HF_TRANSFORMERS_PROVIDER) {
|
|
698
|
-
await this._localRuntimeController.
|
|
699
|
-
decision: {
|
|
700
|
-
tier: "cheap",
|
|
701
|
-
risk: "read-only",
|
|
702
|
-
confidence: 1,
|
|
703
|
-
reasonCode: "prefix_warmer",
|
|
704
|
-
reasons: ["prefix warmer residency"],
|
|
705
|
-
model: `${model.provider}/${model.id}`,
|
|
706
|
-
},
|
|
707
|
-
model,
|
|
708
|
-
});
|
|
741
|
+
await this._localRuntimeController.ensureIsolatedModelReady(model);
|
|
709
742
|
}
|
|
710
743
|
if (controller.signal.aborted)
|
|
711
744
|
return;
|
|
@@ -1436,6 +1469,16 @@ export class AgentSession {
|
|
|
1436
1469
|
_buildCompactionPreDigest() {
|
|
1437
1470
|
return this._pipeline.buildCompactionPreDigest();
|
|
1438
1471
|
}
|
|
1472
|
+
/** Drop provider-owned request/continuation caches whose prefix was invalidated by compaction. */
|
|
1473
|
+
_refreshAfterCompaction() {
|
|
1474
|
+
this.agent.state.messages = this.sessionManager.buildSessionContext().messages;
|
|
1475
|
+
try {
|
|
1476
|
+
cleanupSessionResources(this.sessionId);
|
|
1477
|
+
}
|
|
1478
|
+
catch {
|
|
1479
|
+
// Provider cache cleanup is best-effort and must not turn an applied compaction into a failure.
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1439
1482
|
/**
|
|
1440
1483
|
* Context composition dashboard data: decomposes the per-request payload (system prompt, tool
|
|
1441
1484
|
* schemas, extension contributions, message classes incl. GC/policy stubs and recall pages)
|
|
@@ -1752,6 +1795,7 @@ export class AgentSession {
|
|
|
1752
1795
|
await this._extensionRunner.emit({ type: "agent_end", messages: event.messages });
|
|
1753
1796
|
}
|
|
1754
1797
|
else if (event.type === "turn_start") {
|
|
1798
|
+
this._toolSelection.startTurn();
|
|
1755
1799
|
this._refreshForegroundEnvelope();
|
|
1756
1800
|
const extensionEvent = {
|
|
1757
1801
|
type: "turn_start",
|
|
@@ -2018,8 +2062,9 @@ export class AgentSession {
|
|
|
2018
2062
|
* Also rebuilds the system prompt to reflect the new tool set.
|
|
2019
2063
|
* Changes take effect on the next agent turn.
|
|
2020
2064
|
*
|
|
2021
|
-
* artifact_retrieve is auto-activated as a companion whenever
|
|
2022
|
-
* in the resulting active set and artifact_retrieve
|
|
2065
|
+
* artifact_retrieve is auto-activated as a companion whenever an artifact-producing tool
|
|
2066
|
+
* (grep, find, or run_toolkit_script) ends up in the resulting active set and artifact_retrieve
|
|
2067
|
+
* is registered (i.e. not excluded/
|
|
2023
2068
|
* blocked/outside an allowlist -- the registry itself is built with that same filter,
|
|
2024
2069
|
* so registry presence already tracks "allowed"). This is enforced here, not just in
|
|
2025
2070
|
* the settings/profile refresh flow, because this method is a public, extension-
|
|
@@ -2050,9 +2095,14 @@ export class AgentSession {
|
|
|
2050
2095
|
for (const name of capabilityFiltered) {
|
|
2051
2096
|
addIfRegistered(name);
|
|
2052
2097
|
}
|
|
2053
|
-
if (validToolNames.includes("grep") ||
|
|
2098
|
+
if (validToolNames.includes("grep") ||
|
|
2099
|
+
validToolNames.includes("find") ||
|
|
2100
|
+
validToolNames.includes("run_toolkit_script")) {
|
|
2054
2101
|
addIfRegistered("artifact_retrieve");
|
|
2055
2102
|
}
|
|
2103
|
+
if (validToolNames.includes("delegate")) {
|
|
2104
|
+
addIfRegistered("delegate_status");
|
|
2105
|
+
}
|
|
2056
2106
|
this.agent.state.tools = tools;
|
|
2057
2107
|
// Rebuild base system prompt with new tool set
|
|
2058
2108
|
this._baseSystemPrompt = this._rebuildSystemPrompt(validToolNames);
|
|
@@ -2344,6 +2394,11 @@ export class AgentSession {
|
|
|
2344
2394
|
if (!requestModel) {
|
|
2345
2395
|
throw new Error(formatNoModelSelectedMessage());
|
|
2346
2396
|
}
|
|
2397
|
+
// A manual/default local model has no RouteDecision, so the router readiness gate above is
|
|
2398
|
+
// intentionally a no-op. It still needs the same managed-runtime boot/residency guarantee.
|
|
2399
|
+
if (!resolvedRouteInfo) {
|
|
2400
|
+
await this._localRuntimeController.ensureForegroundModelReady(requestModel);
|
|
2401
|
+
}
|
|
2347
2402
|
if (!this._modelRegistry.hasConfiguredAuth(requestModel)) {
|
|
2348
2403
|
const isOAuth = this._modelRegistry.isUsingOAuth(requestModel);
|
|
2349
2404
|
if (isOAuth) {
|
|
@@ -2454,6 +2509,7 @@ export class AgentSession {
|
|
|
2454
2509
|
this._memory.recordRecallOutcome(injectedRecall, recallQuery, responseText);
|
|
2455
2510
|
}
|
|
2456
2511
|
}
|
|
2512
|
+
this._backgroundLanes.drainQueuedWorkerDelegations();
|
|
2457
2513
|
this._backgroundLanes.scheduleGoalAutoContinueFromIdle(options);
|
|
2458
2514
|
this._backgroundLanes.scheduleResearchLaneFromIdle();
|
|
2459
2515
|
}
|
|
@@ -2850,7 +2906,7 @@ export class AgentSession {
|
|
|
2850
2906
|
}
|
|
2851
2907
|
if (extensionCompaction) {
|
|
2852
2908
|
this.sessionManager.appendCompaction(extensionCompaction.summary, extensionCompaction.firstKeptEntryId, extensionCompaction.tokensBefore, extensionCompaction.details, true);
|
|
2853
|
-
this.
|
|
2909
|
+
this._refreshAfterCompaction();
|
|
2854
2910
|
const savedCompactionEntry = this.sessionManager
|
|
2855
2911
|
.getEntries()
|
|
2856
2912
|
.find((entry) => entry.type === "compaction" && entry.summary === extensionCompaction.summary);
|
|
@@ -2901,7 +2957,7 @@ export class AgentSession {
|
|
|
2901
2957
|
if (signal.aborted)
|
|
2902
2958
|
throw new Error("Compaction cancelled");
|
|
2903
2959
|
this.sessionManager.appendCompaction(result.summary, result.firstKeptEntryId, result.tokensBefore, result.details, fromExtension);
|
|
2904
|
-
this.
|
|
2960
|
+
this._refreshAfterCompaction();
|
|
2905
2961
|
const savedCompactionEntry = this.sessionManager
|
|
2906
2962
|
.getEntries()
|
|
2907
2963
|
.find((entry) => entry.type === "compaction" && entry.summary === result.summary);
|
|
@@ -3185,7 +3241,7 @@ export class AgentSession {
|
|
|
3185
3241
|
apply: async (result) => {
|
|
3186
3242
|
lastCompaction = result;
|
|
3187
3243
|
this.sessionManager.appendCompaction(result.summary, result.firstKeptEntryId, result.tokensBefore, result.details, fromExtension);
|
|
3188
|
-
this.
|
|
3244
|
+
this._refreshAfterCompaction();
|
|
3189
3245
|
const newEntries = this.sessionManager.getEntries();
|
|
3190
3246
|
const savedCompactionEntry = newEntries.find((entry) => entry.type === "compaction" && entry.summary === result.summary);
|
|
3191
3247
|
if (this._extensionRunner && savedCompactionEntry) {
|