@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.
Files changed (103) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/core/agent-session.d.ts +9 -2
  3. package/dist/core/agent-session.d.ts.map +1 -1
  4. package/dist/core/agent-session.js +57 -3
  5. package/dist/core/agent-session.js.map +1 -1
  6. package/dist/core/auth-storage.d.ts +6 -0
  7. package/dist/core/auth-storage.d.ts.map +1 -1
  8. package/dist/core/auth-storage.js +35 -0
  9. package/dist/core/auth-storage.js.map +1 -1
  10. package/dist/core/autonomy/contracts.d.ts +2 -0
  11. package/dist/core/autonomy/contracts.d.ts.map +1 -1
  12. package/dist/core/autonomy/contracts.js.map +1 -1
  13. package/dist/core/autonomy/lane-tracker.d.ts +5 -0
  14. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
  15. package/dist/core/autonomy/lane-tracker.js +14 -3
  16. package/dist/core/autonomy/lane-tracker.js.map +1 -1
  17. package/dist/core/background-lane-controller.d.ts +22 -1
  18. package/dist/core/background-lane-controller.d.ts.map +1 -1
  19. package/dist/core/background-lane-controller.js +103 -3
  20. package/dist/core/background-lane-controller.js.map +1 -1
  21. package/dist/core/context-gc.d.ts.map +1 -1
  22. package/dist/core/context-gc.js +1 -0
  23. package/dist/core/context-gc.js.map +1 -1
  24. package/dist/core/context-pipeline.d.ts +5 -3
  25. package/dist/core/context-pipeline.d.ts.map +1 -1
  26. package/dist/core/context-pipeline.js +15 -5
  27. package/dist/core/context-pipeline.js.map +1 -1
  28. package/dist/core/delegation/worker-result.d.ts.map +1 -1
  29. package/dist/core/delegation/worker-result.js +3 -0
  30. package/dist/core/delegation/worker-result.js.map +1 -1
  31. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  32. package/dist/core/delegation/worker-runner.js +53 -4
  33. package/dist/core/delegation/worker-runner.js.map +1 -1
  34. package/dist/core/local-runtime-controller.d.ts +16 -0
  35. package/dist/core/local-runtime-controller.d.ts.map +1 -1
  36. package/dist/core/local-runtime-controller.js +107 -28
  37. package/dist/core/local-runtime-controller.js.map +1 -1
  38. package/dist/core/model-registry.d.ts +2 -0
  39. package/dist/core/model-registry.d.ts.map +1 -1
  40. package/dist/core/model-registry.js +4 -0
  41. package/dist/core/model-registry.js.map +1 -1
  42. package/dist/core/models/local-runtime.d.ts +2 -0
  43. package/dist/core/models/local-runtime.d.ts.map +1 -1
  44. package/dist/core/models/local-runtime.js +10 -4
  45. package/dist/core/models/local-runtime.js.map +1 -1
  46. package/dist/core/models/runtime-arbiter.d.ts +11 -0
  47. package/dist/core/models/runtime-arbiter.d.ts.map +1 -1
  48. package/dist/core/models/runtime-arbiter.js +35 -13
  49. package/dist/core/models/runtime-arbiter.js.map +1 -1
  50. package/dist/core/reflection-controller.d.ts +2 -0
  51. package/dist/core/reflection-controller.d.ts.map +1 -1
  52. package/dist/core/reflection-controller.js +3 -0
  53. package/dist/core/reflection-controller.js.map +1 -1
  54. package/dist/core/runtime-builder.d.ts +17 -2
  55. package/dist/core/runtime-builder.d.ts.map +1 -1
  56. package/dist/core/runtime-builder.js +13 -5
  57. package/dist/core/runtime-builder.js.map +1 -1
  58. package/dist/core/sdk.d.ts.map +1 -1
  59. package/dist/core/sdk.js +3 -0
  60. package/dist/core/sdk.js.map +1 -1
  61. package/dist/core/tool-gate-controller.d.ts +3 -0
  62. package/dist/core/tool-gate-controller.d.ts.map +1 -1
  63. package/dist/core/tool-gate-controller.js +20 -15
  64. package/dist/core/tool-gate-controller.js.map +1 -1
  65. package/dist/core/tool-selection/expected-utility.d.ts +51 -0
  66. package/dist/core/tool-selection/expected-utility.d.ts.map +1 -0
  67. package/dist/core/tool-selection/expected-utility.js +85 -0
  68. package/dist/core/tool-selection/expected-utility.js.map +1 -0
  69. package/dist/core/tool-selection/tool-performance-store.d.ts +82 -0
  70. package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -0
  71. package/dist/core/tool-selection/tool-performance-store.js +249 -0
  72. package/dist/core/tool-selection/tool-performance-store.js.map +1 -0
  73. package/dist/core/tool-selection/tool-selection-controller.d.ts +41 -0
  74. package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -0
  75. package/dist/core/tool-selection/tool-selection-controller.js +199 -0
  76. package/dist/core/tool-selection/tool-selection-controller.js.map +1 -0
  77. package/dist/core/tools/delegate-status.d.ts +9 -0
  78. package/dist/core/tools/delegate-status.d.ts.map +1 -0
  79. package/dist/core/tools/delegate-status.js +52 -0
  80. package/dist/core/tools/delegate-status.js.map +1 -0
  81. package/dist/core/tools/delegate.d.ts +10 -0
  82. package/dist/core/tools/delegate.d.ts.map +1 -1
  83. package/dist/core/tools/delegate.js +21 -2
  84. package/dist/core/tools/delegate.js.map +1 -1
  85. package/dist/core/tools/run-toolkit-script.d.ts +3 -0
  86. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
  87. package/dist/core/tools/run-toolkit-script.js +17 -7
  88. package/dist/core/tools/run-toolkit-script.js.map +1 -1
  89. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  90. package/dist/modes/interactive/interactive-mode.js +12 -0
  91. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  92. package/docs/integration-sweep-builder-blueprint-2026-07-09.md +365 -0
  93. package/docs/integration-sweep-resume-2026-07-09.md +407 -0
  94. package/docs/settings.md +2 -0
  95. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  96. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  97. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  98. package/examples/extensions/sandbox/package-lock.json +2 -2
  99. package/examples/extensions/sandbox/package.json +1 -1
  100. package/examples/extensions/with-deps/package-lock.json +2 -2
  101. package/examples/extensions/with-deps/package.json +1 -1
  102. package/npm-shrinkwrap.json +12 -12
  103. 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 grep or find ends up
2022
- * in the resulting active set and artifact_retrieve is registered (i.e. not excluded/
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") || validToolNames.includes("find")) {
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
  }