@caupulican/pi-adaptative 0.81.27 → 0.81.29
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 +14 -0
- package/dist/core/agent-session.d.ts +9 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +57 -3
- 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/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-tracker.d.ts +5 -0
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +14 -3
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +22 -1
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +103 -3
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +1 -0
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +5 -3
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +15 -5
- package/dist/core/context-pipeline.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 +53 -4
- package/dist/core/delegation/worker-runner.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 +107 -28
- package/dist/core/local-runtime-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 +10 -4
- 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 +2 -0
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +3 -0
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +17 -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/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-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 +52 -0
- package/dist/core/tools/delegate-status.js.map +1 -0
- package/dist/core/tools/delegate.d.ts +10 -0
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +21 -2
- 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/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +12 -0
- package/dist/modes/interactive/interactive-mode.js.map +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/settings.md +2 -0
- 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;
|
|
@@ -402,6 +406,7 @@ export class AgentSession {
|
|
|
402
406
|
getSessionManager: () => this.sessionManager,
|
|
403
407
|
getSettingsManager: () => this.settingsManager,
|
|
404
408
|
getModelRegistry: () => this._modelRegistry,
|
|
409
|
+
getModel: () => this.model,
|
|
405
410
|
getAgentDir: () => this._agentDir,
|
|
406
411
|
getCwd: () => this._cwd,
|
|
407
412
|
getActiveToolNames: () => this.getActiveToolNames(),
|
|
@@ -465,6 +470,7 @@ export class AgentSession {
|
|
|
465
470
|
getReflectionSignal: () => this._reflectionAbort.signal,
|
|
466
471
|
archivePromotedSkill: (name) => this.archivePromotedSkill(name),
|
|
467
472
|
emitAutonomyTelemetry: (event) => this._emitAutonomyTelemetry(event),
|
|
473
|
+
ensureModelReady: (model) => this._localRuntimeController.ensureIsolatedModelReady(model),
|
|
468
474
|
addSpawnedUsage: (usage, opts) => this.addSpawnedUsage(usage, opts),
|
|
469
475
|
saveLearningDecisionSnapshot: (decision) => this.saveLearningDecisionSnapshot(decision),
|
|
470
476
|
});
|
|
@@ -544,6 +550,9 @@ export class AgentSession {
|
|
|
544
550
|
getGoalStateSnapshot: () => this.getGoalStateSnapshot(),
|
|
545
551
|
saveGoalStateSnapshot: (state) => this.saveGoalStateSnapshot(state),
|
|
546
552
|
getContextGcReport: (messages) => this.getContextGcReport(messages),
|
|
553
|
+
startWorkerDelegation: (request) => this._backgroundLanes.startWorkerDelegation(request),
|
|
554
|
+
getWorkerLaneRecords: () => this._backgroundLanes.getLaneRecords(),
|
|
555
|
+
getWorkerResultSnapshots: () => this.getWorkerResultSnapshots(),
|
|
547
556
|
runWorkerDelegationOnce: (request) => this.runWorkerDelegationOnce(request),
|
|
548
557
|
runModelFitness: (args) => this.runModelFitness(args),
|
|
549
558
|
resolveCurationModelIfFit: () => this._resolveCurationModelIfFit(),
|
|
@@ -570,6 +579,9 @@ export class AgentSession {
|
|
|
570
579
|
const previousToolArgumentValidation = this.agent.onToolArgumentValidation;
|
|
571
580
|
this.agent.onToolArgumentValidation = (event) => {
|
|
572
581
|
const taggedEvent = this._tagModelAdaptationRuleTeaching(event);
|
|
582
|
+
if (taggedEvent.outcome === "repaired" || taggedEvent.outcome === "bounced") {
|
|
583
|
+
this._toolSelection.recordValidation(taggedEvent.tool, taggedEvent.outcome);
|
|
584
|
+
}
|
|
573
585
|
previousToolArgumentValidation?.(taggedEvent);
|
|
574
586
|
const logRecord = this._toolRecoveryLogger.recordToolArgumentValidation(taggedEvent);
|
|
575
587
|
if (!logRecord)
|
|
@@ -629,12 +641,41 @@ export class AgentSession {
|
|
|
629
641
|
isExplicitThinking: () => this._isExplicitThinking,
|
|
630
642
|
setThinkingLevel: (level) => this.setThinkingLevel(level, { persistSettings: false }),
|
|
631
643
|
});
|
|
644
|
+
this._toolSelection = new ToolSelectionController({
|
|
645
|
+
store: ToolPerformanceStore.forAgentDir(this._agentDir),
|
|
646
|
+
getModelRef: () => {
|
|
647
|
+
const model = this.model;
|
|
648
|
+
return model ? formatModelRouterModel(model) : "unknown";
|
|
649
|
+
},
|
|
650
|
+
getActiveTools: () => {
|
|
651
|
+
const activeNames = new Set(this.getActiveToolNames());
|
|
652
|
+
return this.getAllTools()
|
|
653
|
+
.filter((tool) => activeNames.has(tool.name))
|
|
654
|
+
.map((tool) => ({
|
|
655
|
+
name: tool.name,
|
|
656
|
+
description: tool.description,
|
|
657
|
+
parameters: tool.parameters,
|
|
658
|
+
}));
|
|
659
|
+
},
|
|
660
|
+
isCandidateAllowed: (toolName) => {
|
|
661
|
+
const envelope = this.capabilityEnvelope;
|
|
662
|
+
if (!envelope)
|
|
663
|
+
return true;
|
|
664
|
+
return (evaluateToolGate({
|
|
665
|
+
toolName,
|
|
666
|
+
args: {},
|
|
667
|
+
cwd: this._cwd,
|
|
668
|
+
envelope,
|
|
669
|
+
}).outcome === "allow");
|
|
670
|
+
},
|
|
671
|
+
});
|
|
632
672
|
this._toolGate = new ToolGateController({
|
|
633
673
|
maybeEscalateToolCall: (toolName, args) => this._modelRouter.maybeEscalateToolCall(toolName, args),
|
|
634
674
|
getCwd: () => this._cwd,
|
|
635
675
|
getCapabilityEnvelope: () => this.capabilityEnvelope,
|
|
636
676
|
recordGateOutcome: (outcome) => this._recordGateOutcome(outcome),
|
|
637
677
|
getExtensionRunner: () => this._extensionRunner,
|
|
678
|
+
getToolSelectionController: () => this._toolSelection,
|
|
638
679
|
});
|
|
639
680
|
// Always subscribe to agent events for internal handling
|
|
640
681
|
// (session persistence, extensions, auto-compaction, retry logic)
|
|
@@ -1752,6 +1793,7 @@ export class AgentSession {
|
|
|
1752
1793
|
await this._extensionRunner.emit({ type: "agent_end", messages: event.messages });
|
|
1753
1794
|
}
|
|
1754
1795
|
else if (event.type === "turn_start") {
|
|
1796
|
+
this._toolSelection.startTurn();
|
|
1755
1797
|
this._refreshForegroundEnvelope();
|
|
1756
1798
|
const extensionEvent = {
|
|
1757
1799
|
type: "turn_start",
|
|
@@ -2018,8 +2060,9 @@ export class AgentSession {
|
|
|
2018
2060
|
* Also rebuilds the system prompt to reflect the new tool set.
|
|
2019
2061
|
* Changes take effect on the next agent turn.
|
|
2020
2062
|
*
|
|
2021
|
-
* artifact_retrieve is auto-activated as a companion whenever
|
|
2022
|
-
* in the resulting active set and artifact_retrieve
|
|
2063
|
+
* artifact_retrieve is auto-activated as a companion whenever an artifact-producing tool
|
|
2064
|
+
* (grep, find, or run_toolkit_script) ends up in the resulting active set and artifact_retrieve
|
|
2065
|
+
* is registered (i.e. not excluded/
|
|
2023
2066
|
* blocked/outside an allowlist -- the registry itself is built with that same filter,
|
|
2024
2067
|
* so registry presence already tracks "allowed"). This is enforced here, not just in
|
|
2025
2068
|
* the settings/profile refresh flow, because this method is a public, extension-
|
|
@@ -2050,9 +2093,14 @@ export class AgentSession {
|
|
|
2050
2093
|
for (const name of capabilityFiltered) {
|
|
2051
2094
|
addIfRegistered(name);
|
|
2052
2095
|
}
|
|
2053
|
-
if (validToolNames.includes("grep") ||
|
|
2096
|
+
if (validToolNames.includes("grep") ||
|
|
2097
|
+
validToolNames.includes("find") ||
|
|
2098
|
+
validToolNames.includes("run_toolkit_script")) {
|
|
2054
2099
|
addIfRegistered("artifact_retrieve");
|
|
2055
2100
|
}
|
|
2101
|
+
if (validToolNames.includes("delegate")) {
|
|
2102
|
+
addIfRegistered("delegate_status");
|
|
2103
|
+
}
|
|
2056
2104
|
this.agent.state.tools = tools;
|
|
2057
2105
|
// Rebuild base system prompt with new tool set
|
|
2058
2106
|
this._baseSystemPrompt = this._rebuildSystemPrompt(validToolNames);
|
|
@@ -2344,6 +2392,11 @@ export class AgentSession {
|
|
|
2344
2392
|
if (!requestModel) {
|
|
2345
2393
|
throw new Error(formatNoModelSelectedMessage());
|
|
2346
2394
|
}
|
|
2395
|
+
// A manual/default local model has no RouteDecision, so the router readiness gate above is
|
|
2396
|
+
// intentionally a no-op. It still needs the same managed-runtime boot/residency guarantee.
|
|
2397
|
+
if (!resolvedRouteInfo) {
|
|
2398
|
+
await this._localRuntimeController.ensureForegroundModelReady(requestModel);
|
|
2399
|
+
}
|
|
2347
2400
|
if (!this._modelRegistry.hasConfiguredAuth(requestModel)) {
|
|
2348
2401
|
const isOAuth = this._modelRegistry.isUsingOAuth(requestModel);
|
|
2349
2402
|
if (isOAuth) {
|
|
@@ -2454,6 +2507,7 @@ export class AgentSession {
|
|
|
2454
2507
|
this._memory.recordRecallOutcome(injectedRecall, recallQuery, responseText);
|
|
2455
2508
|
}
|
|
2456
2509
|
}
|
|
2510
|
+
this._backgroundLanes.drainQueuedWorkerDelegations();
|
|
2457
2511
|
this._backgroundLanes.scheduleGoalAutoContinueFromIdle(options);
|
|
2458
2512
|
this._backgroundLanes.scheduleResearchLaneFromIdle();
|
|
2459
2513
|
}
|