@caupulican/pi-adaptative 0.80.99 → 0.80.102
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 +203 -0
- package/dist/core/agent-session.d.ts +72 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +437 -46
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autonomy/envelope-enforcement.d.ts +5 -0
- package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
- package/dist/core/autonomy/envelope-enforcement.js +28 -4
- package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
- package/dist/core/autonomy/path-scope.d.ts.map +1 -1
- package/dist/core/autonomy/path-scope.js +33 -2
- package/dist/core/autonomy/path-scope.js.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +15 -7
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/context/brain-curator.d.ts +10 -0
- package/dist/core/context/brain-curator.d.ts.map +1 -1
- package/dist/core/context/brain-curator.js +19 -2
- package/dist/core/context/brain-curator.js.map +1 -1
- package/dist/core/context-gc.d.ts +8 -3
- package/dist/core/context-gc.d.ts.map +1 -1
- package/dist/core/context-gc.js +5 -0
- package/dist/core/context-gc.js.map +1 -1
- package/dist/core/delegation/worker-actions.d.ts +0 -10
- package/dist/core/delegation/worker-actions.d.ts.map +1 -1
- package/dist/core/delegation/worker-actions.js +5 -7
- package/dist/core/delegation/worker-actions.js.map +1 -1
- package/dist/core/delegation/worker-result.d.ts +6 -0
- package/dist/core/delegation/worker-result.d.ts.map +1 -1
- package/dist/core/delegation/worker-result.js +10 -4
- package/dist/core/delegation/worker-result.js.map +1 -1
- package/dist/core/delegation/worker-runner.d.ts +3 -0
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +6 -1
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/doctor.d.ts +66 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +144 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/learning/learning-audit.d.ts +13 -1
- package/dist/core/learning/learning-audit.d.ts.map +1 -1
- package/dist/core/learning/learning-audit.js +22 -1
- package/dist/core/learning/learning-audit.js.map +1 -1
- package/dist/core/learning/learning-gate.d.ts +3 -0
- package/dist/core/learning/learning-gate.d.ts.map +1 -1
- package/dist/core/learning/learning-gate.js +13 -4
- package/dist/core/learning/learning-gate.js.map +1 -1
- package/dist/core/models/default-model-suggestions.d.ts +34 -0
- package/dist/core/models/default-model-suggestions.d.ts.map +1 -0
- package/dist/core/models/default-model-suggestions.js +58 -0
- package/dist/core/models/default-model-suggestions.js.map +1 -0
- package/dist/core/models/local-registration.d.ts +2 -0
- package/dist/core/models/local-registration.d.ts.map +1 -1
- package/dist/core/models/local-registration.js +2 -1
- package/dist/core/models/local-registration.js.map +1 -1
- package/dist/core/models/local-runtime.d.ts +76 -2
- package/dist/core/models/local-runtime.d.ts.map +1 -1
- package/dist/core/models/local-runtime.js +233 -21
- package/dist/core/models/local-runtime.js.map +1 -1
- package/dist/core/profile-resource-selection.d.ts +15 -3
- package/dist/core/profile-resource-selection.d.ts.map +1 -1
- package/dist/core/profile-resource-selection.js +19 -9
- package/dist/core/profile-resource-selection.js.map +1 -1
- package/dist/core/resource-loader.d.ts +20 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +42 -16
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/settings-manager.d.ts +30 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +65 -3
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +14 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +8 -0
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/fff-search-backend.d.ts +34 -1
- package/dist/core/tools/fff-search-backend.d.ts.map +1 -1
- package/dist/core/tools/fff-search-backend.js +43 -4
- package/dist/core/tools/fff-search-backend.js.map +1 -1
- package/dist/core/tools/find.d.ts +16 -0
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +17 -3
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +20 -0
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +15 -3
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.d.ts +6 -2
- package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.js +55 -45
- package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
- package/dist/modes/interactive/components/model-suggestion-selector.d.ts +13 -0
- package/dist/modes/interactive/components/model-suggestion-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-suggestion-selector.js +40 -0
- package/dist/modes/interactive/components/model-suggestion-selector.js.map +1 -0
- package/dist/modes/interactive/components/profile-resource-editor.d.ts +3 -0
- package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/profile-resource-editor.js +16 -2
- package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +98 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +8 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +57 -10
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/safe-write-stream.d.ts +8 -0
- package/dist/utils/safe-write-stream.d.ts.map +1 -1
- package/dist/utils/safe-write-stream.js +32 -0
- package/dist/utils/safe-write-stream.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +92 -2
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +172 -32
- package/dist/utils/tools-manager.js.map +1 -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 -36
- package/package.json +4 -4
|
@@ -22,9 +22,9 @@ import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/htt
|
|
|
22
22
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
23
23
|
import { createCompactionSummaryMessage } from "../../core/messages.js";
|
|
24
24
|
import { cliProviderAliases, defaultModelPerProvider, findExactModelReferenceMatch, resolveCliModel, resolveModelScope, } from "../../core/model-resolver.js";
|
|
25
|
+
import { DEFAULT_MODEL_SUGGESTIONS } from "../../core/models/default-model-suggestions.js";
|
|
25
26
|
import { FitnessStore } from "../../core/models/fitness-store.js";
|
|
26
27
|
import { registerLocalModel, unregisterLocalModel } from "../../core/models/local-registration.js";
|
|
27
|
-
import { OllamaRuntime } from "../../core/models/local-runtime.js";
|
|
28
28
|
import { normalizeModelSource } from "../../core/models/model-ref.js";
|
|
29
29
|
import { DefaultPackageManager } from "../../core/package-manager.js";
|
|
30
30
|
import { BUILT_IN_PROVIDER_DISPLAY_NAMES } from "../../core/provider-display-names.js";
|
|
@@ -68,6 +68,7 @@ import { FooterComponent } from "./components/footer.js";
|
|
|
68
68
|
import { formatKeyText, keyDisplayText, keyHint, keyText, rawKeyHint } from "./components/keybinding-hints.js";
|
|
69
69
|
import { LoginDialogComponent } from "./components/login-dialog.js";
|
|
70
70
|
import { ModelSelectorComponent } from "./components/model-selector.js";
|
|
71
|
+
import { ModelSuggestionSelectorComponent } from "./components/model-suggestion-selector.js";
|
|
71
72
|
import { OAuthSelectorComponent } from "./components/oauth-selector.js";
|
|
72
73
|
import { ProfileResourceEditorComponent, resolveResourceEditPath, } from "./components/profile-resource-editor.js";
|
|
73
74
|
import { ProfileSelectorComponent } from "./components/profile-selector.js";
|
|
@@ -2690,6 +2691,25 @@ export class InteractiveMode {
|
|
|
2690
2691
|
}
|
|
2691
2692
|
this.footer.invalidate();
|
|
2692
2693
|
switch (event.type) {
|
|
2694
|
+
// Part B: general "the system is processing" feedback for the routing/prep gap before a
|
|
2695
|
+
// turn starts streaming (the judge is a real bounded LLM call, not instant) — independent
|
|
2696
|
+
// of thinking level, since this isn't model-thinking. Reuses the same working loader
|
|
2697
|
+
// agent_start below uses, so the hand-off into real streaming is the same
|
|
2698
|
+
// stop-then-recreate it already does — no distinct spinner, no double-render.
|
|
2699
|
+
case "routing_start":
|
|
2700
|
+
if (!this.session.isStreaming && !this.loadingAnimation && this.workingVisible) {
|
|
2701
|
+
this.loadingAnimation = this.createWorkingLoader();
|
|
2702
|
+
this.statusContainer.addChild(this.loadingAnimation);
|
|
2703
|
+
this.ui.requestRender();
|
|
2704
|
+
}
|
|
2705
|
+
break;
|
|
2706
|
+
case "routing_end":
|
|
2707
|
+
// Unconditional: covers both a clean hand-off into agent_start (which immediately
|
|
2708
|
+
// stops-and-recreates its own loader anyway) and a turn that failed before ever
|
|
2709
|
+
// starting, which must not leave the indicator spinning forever.
|
|
2710
|
+
this.stopWorkingLoader();
|
|
2711
|
+
this.ui.requestRender();
|
|
2712
|
+
break;
|
|
2693
2713
|
case "agent_start":
|
|
2694
2714
|
this.clearActiveToolCalls();
|
|
2695
2715
|
if (this.settingsManager.getShowTerminalProgress()) {
|
|
@@ -5138,10 +5158,14 @@ export class InteractiveMode {
|
|
|
5138
5158
|
this.settingsManager.setAutoLearnSettings(preset, scope);
|
|
5139
5159
|
this.updateAutoLearnFooter();
|
|
5140
5160
|
}
|
|
5141
|
-
|
|
5161
|
+
/**
|
|
5162
|
+
* Delegates to the session rather than keeping its own instance (#27): the model router boots a
|
|
5163
|
+
* local server through AgentSession.getLocalRuntime() before a routed turn, and `/models`
|
|
5164
|
+
* commands need to see and be able to stop that SAME pi-managed process, not an unrelated one
|
|
5165
|
+
* tracked separately here.
|
|
5166
|
+
*/
|
|
5142
5167
|
get localRuntime() {
|
|
5143
|
-
this.
|
|
5144
|
-
return this._localRuntime;
|
|
5168
|
+
return this.session.getLocalRuntime();
|
|
5145
5169
|
}
|
|
5146
5170
|
/**
|
|
5147
5171
|
* /models — USER-invoked local model lifecycle (never a model-invokable tool):
|
|
@@ -5151,6 +5175,10 @@ export class InteractiveMode {
|
|
|
5151
5175
|
async handleModelsCommand(argsText) {
|
|
5152
5176
|
const [action = "list", ...rest] = argsText.split(/\s+/).filter(Boolean);
|
|
5153
5177
|
try {
|
|
5178
|
+
if (action === "suggest" || action === "suggestions") {
|
|
5179
|
+
this.showModelSuggestionSelector();
|
|
5180
|
+
return;
|
|
5181
|
+
}
|
|
5154
5182
|
if (action === "stop") {
|
|
5155
5183
|
const stopped = this.localRuntime.stop();
|
|
5156
5184
|
this.showStatus(stopped.stopped
|
|
@@ -5162,6 +5190,7 @@ export class InteractiveMode {
|
|
|
5162
5190
|
const rawRef = rest.join(" ");
|
|
5163
5191
|
if (!rawRef) {
|
|
5164
5192
|
this.showStatus("Usage: /models add <ollama-tag | hf.co/org/repo[:quant] | huggingface URL | pasted install command>");
|
|
5193
|
+
this.showStatus("Or start from a validated suggestion: /models suggest");
|
|
5165
5194
|
return;
|
|
5166
5195
|
}
|
|
5167
5196
|
const source = normalizeModelSource(rawRef);
|
|
@@ -5224,7 +5253,9 @@ export class InteractiveMode {
|
|
|
5224
5253
|
const fitness = FitnessStore.forAgentDir(getAgentDir()).getForHost();
|
|
5225
5254
|
const lines = [
|
|
5226
5255
|
`Local models (${status.managedByPi ? `pi-managed server, storage: ${status.ownedModelsDir}` : "system server — storage owned by the system daemon"}):`,
|
|
5227
|
-
...(models.length === 0
|
|
5256
|
+
...(models.length === 0
|
|
5257
|
+
? [" (none installed — /models add <ref>, or /models suggest for a validated roster)"]
|
|
5258
|
+
: []),
|
|
5228
5259
|
...models.map((model) => {
|
|
5229
5260
|
const report = fitness.find((entry) => entry.model === `ollama/${model.name}`);
|
|
5230
5261
|
const gb = (model.sizeBytes / 1e9).toFixed(2);
|
|
@@ -5238,7 +5269,7 @@ export class InteractiveMode {
|
|
|
5238
5269
|
for (const line of lines)
|
|
5239
5270
|
this.showStatus(line);
|
|
5240
5271
|
}
|
|
5241
|
-
async addLocalModel(pullRef) {
|
|
5272
|
+
async addLocalModel(pullRef, preselectRole) {
|
|
5242
5273
|
if (!(await this.ensureLocalServer()))
|
|
5243
5274
|
return;
|
|
5244
5275
|
this.showStatus(`Pulling ${pullRef}… (weights land in the server's model storage)`);
|
|
@@ -5268,7 +5299,7 @@ export class InteractiveMode {
|
|
|
5268
5299
|
}
|
|
5269
5300
|
this.session.modelRegistry.refresh();
|
|
5270
5301
|
this.showStatus(`${pullRef} installed and registered as ollama/${pullRef}. Probing fitness…`);
|
|
5271
|
-
await this.runFitnessAndAssign(`ollama/${pullRef}
|
|
5302
|
+
await this.runFitnessAndAssign(`ollama/${pullRef}`, preselectRole);
|
|
5272
5303
|
}
|
|
5273
5304
|
async removeLocalModel(ref, confirmed) {
|
|
5274
5305
|
const status = await this.localRuntime.detect();
|
|
@@ -5305,6 +5336,21 @@ export class InteractiveMode {
|
|
|
5305
5336
|
this.showStatus(`${ref} removed: weights deleted, registration and fitness report dropped.`);
|
|
5306
5337
|
}
|
|
5307
5338
|
/** /fitness with no args: pick a model from the configured registry, probe it, assign a role. */
|
|
5339
|
+
/** Pick a validated suggestion → install it → probe on this host → land its shaped role. */
|
|
5340
|
+
showModelSuggestionSelector() {
|
|
5341
|
+
this.showSelector((done) => {
|
|
5342
|
+
const selector = new ModelSuggestionSelectorComponent(DEFAULT_MODEL_SUGGESTIONS, async (suggestion) => {
|
|
5343
|
+
done();
|
|
5344
|
+
// The shaped role rides along so the post-probe selector lands on it pre-selected;
|
|
5345
|
+
// non-tool-callers carry curator/judge/none, never executor, so this can't footgun.
|
|
5346
|
+
await this.addLocalModel(suggestion.pullRef, suggestion.assignRole);
|
|
5347
|
+
}, () => {
|
|
5348
|
+
done();
|
|
5349
|
+
this.ui.requestRender();
|
|
5350
|
+
});
|
|
5351
|
+
return { component: selector, focus: selector };
|
|
5352
|
+
});
|
|
5353
|
+
}
|
|
5308
5354
|
showFitnessModelSelector() {
|
|
5309
5355
|
this.showSelector((done) => {
|
|
5310
5356
|
const selector = new ModelSelectorComponent(this.ui, this.session.model, this.settingsManager, this.session.modelRegistry, this.session.scopedModels, async (model) => {
|
|
@@ -5317,8 +5363,9 @@ export class InteractiveMode {
|
|
|
5317
5363
|
return { component: selector, focus: selector };
|
|
5318
5364
|
});
|
|
5319
5365
|
}
|
|
5320
|
-
/** Probe a model's fitness, show the report, then offer one-step role assignment.
|
|
5321
|
-
|
|
5366
|
+
/** Probe a model's fitness, show the report, then offer one-step role assignment. When the model
|
|
5367
|
+
* came from a validated suggestion, `preselectRole` lands its shaped role already highlighted. */
|
|
5368
|
+
async runFitnessAndAssign(modelRef, preselectRole) {
|
|
5322
5369
|
this.showStatus(`Model fitness probe running on ${modelRef}… (6 surfaces; local models may take a few minutes)`);
|
|
5323
5370
|
try {
|
|
5324
5371
|
const outcome = await this.session.runModelFitness({ model: modelRef });
|
|
@@ -5336,7 +5383,7 @@ export class InteractiveMode {
|
|
|
5336
5383
|
}, () => {
|
|
5337
5384
|
done();
|
|
5338
5385
|
this.ui.requestRender();
|
|
5339
|
-
});
|
|
5386
|
+
}, preselectRole);
|
|
5340
5387
|
return { component: selector, focus: selector };
|
|
5341
5388
|
});
|
|
5342
5389
|
}
|