@caupulican/pi-adaptative 0.80.80 → 0.80.82
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 +55 -0
- package/dist/core/agent-session.d.ts +15 -14
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +202 -9
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/cost/daily-usage.d.ts +23 -0
- package/dist/core/cost/daily-usage.d.ts.map +1 -0
- package/dist/core/cost/daily-usage.js +135 -0
- package/dist/core/cost/daily-usage.js.map +1 -0
- package/dist/core/model-router/config-diagnostics.d.ts +4 -0
- package/dist/core/model-router/config-diagnostics.d.ts.map +1 -0
- package/dist/core/model-router/config-diagnostics.js +26 -0
- package/dist/core/model-router/config-diagnostics.js.map +1 -0
- package/dist/core/model-router/intent-classifier.d.ts +3 -0
- package/dist/core/model-router/intent-classifier.d.ts.map +1 -0
- package/dist/core/model-router/intent-classifier.js +12 -0
- package/dist/core/model-router/intent-classifier.js.map +1 -0
- package/dist/core/model-router/session-buffer.d.ts +21 -0
- package/dist/core/model-router/session-buffer.d.ts.map +1 -0
- package/dist/core/model-router/session-buffer.js +20 -0
- package/dist/core/model-router/session-buffer.js.map +1 -0
- package/dist/core/model-router/status.d.ts +18 -0
- package/dist/core/model-router/status.d.ts.map +1 -0
- package/dist/core/model-router/status.js +67 -0
- package/dist/core/model-router/status.js.map +1 -0
- package/dist/core/model-router/tool-escalation.d.ts +9 -0
- package/dist/core/model-router/tool-escalation.d.ts.map +1 -0
- package/dist/core/model-router/tool-escalation.js +97 -0
- package/dist/core/model-router/tool-escalation.js.map +1 -0
- package/dist/core/profile-registry.d.ts +2 -1
- package/dist/core/profile-registry.d.ts.map +1 -1
- package/dist/core/profile-registry.js +15 -0
- package/dist/core/profile-registry.js.map +1 -1
- package/dist/core/resource-profile-equality.d.ts +5 -0
- package/dist/core/resource-profile-equality.d.ts.map +1 -0
- package/dist/core/resource-profile-equality.js +18 -0
- package/dist/core/resource-profile-equality.js.map +1 -0
- package/dist/core/settings-manager.d.ts +16 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +74 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +2 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +5 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +3 -3
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +6 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +102 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +96 -15
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/resources.md +7 -1
- package/docs/settings.md +24 -2
- 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
|
@@ -172,6 +172,23 @@ function normalizeProfileResources(value) {
|
|
|
172
172
|
}
|
|
173
173
|
return result;
|
|
174
174
|
}
|
|
175
|
+
function normalizeModelRouterSettings(value) {
|
|
176
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
177
|
+
return undefined;
|
|
178
|
+
const input = value;
|
|
179
|
+
const settings = {};
|
|
180
|
+
if (typeof input.enabled === "boolean")
|
|
181
|
+
settings.enabled = input.enabled;
|
|
182
|
+
for (const key of ["cheapModel", "expensiveModel", "learningModel"]) {
|
|
183
|
+
const candidate = input[key];
|
|
184
|
+
if (typeof candidate !== "string")
|
|
185
|
+
continue;
|
|
186
|
+
const trimmed = candidate.trim();
|
|
187
|
+
if (trimmed)
|
|
188
|
+
settings[key] = trimmed;
|
|
189
|
+
}
|
|
190
|
+
return Object.keys(settings).length > 0 ? settings : undefined;
|
|
191
|
+
}
|
|
175
192
|
function parseProfileFileDefinition(content) {
|
|
176
193
|
const parsed = JSON.parse(content);
|
|
177
194
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
@@ -187,6 +204,7 @@ function parseProfileFileDefinition(content) {
|
|
|
187
204
|
description: typeof parsed.description === "string" ? parsed.description.trim() || undefined : undefined,
|
|
188
205
|
model: typeof parsed.model === "string" ? parsed.model.trim() || undefined : undefined,
|
|
189
206
|
thinking: isThinkingLevel(parsed.thinking) ? parsed.thinking : undefined,
|
|
207
|
+
modelRouter: normalizeModelRouterSettings(parsed.modelRouter),
|
|
190
208
|
soul: typeof parsed.soul === "string" ? parsed.soul.trim() || undefined : undefined,
|
|
191
209
|
resources: normalizeProfileResources(resourceSection),
|
|
192
210
|
};
|
|
@@ -808,6 +826,7 @@ export class SettingsManager {
|
|
|
808
826
|
description: definition.description ?? existing.description,
|
|
809
827
|
model: definition.model ?? existing.model,
|
|
810
828
|
thinking: definition.thinking ?? existing.thinking,
|
|
829
|
+
modelRouter: definition.modelRouter ?? existing.modelRouter,
|
|
811
830
|
};
|
|
812
831
|
mkdirSync(dirname(path), { recursive: true });
|
|
813
832
|
writeFileSync(path, JSON.stringify(payload, null, 2), "utf-8");
|
|
@@ -1290,6 +1309,60 @@ export class SettingsManager {
|
|
|
1290
1309
|
action: this.settings.costGuard?.action ?? "warn",
|
|
1291
1310
|
};
|
|
1292
1311
|
}
|
|
1312
|
+
getProfileModelRouterSettings() {
|
|
1313
|
+
const activeProfileNames = this.getActiveResourceProfileNames();
|
|
1314
|
+
if (activeProfileNames.length === 0)
|
|
1315
|
+
return undefined;
|
|
1316
|
+
const merged = {};
|
|
1317
|
+
for (let index = activeProfileNames.length - 1; index >= 0; index--) {
|
|
1318
|
+
const profile = this.profileRegistry.getProfile(activeProfileNames[index]);
|
|
1319
|
+
const router = profile?.modelRouter;
|
|
1320
|
+
if (!router)
|
|
1321
|
+
continue;
|
|
1322
|
+
if (router.enabled !== undefined)
|
|
1323
|
+
merged.enabled = router.enabled;
|
|
1324
|
+
if (router.cheapModel !== undefined)
|
|
1325
|
+
merged.cheapModel = router.cheapModel;
|
|
1326
|
+
if (router.expensiveModel !== undefined)
|
|
1327
|
+
merged.expensiveModel = router.expensiveModel;
|
|
1328
|
+
if (router.learningModel !== undefined)
|
|
1329
|
+
merged.learningModel = router.learningModel;
|
|
1330
|
+
}
|
|
1331
|
+
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
1332
|
+
}
|
|
1333
|
+
getModelRouterSettings() {
|
|
1334
|
+
const profileSettings = this.getProfileModelRouterSettings();
|
|
1335
|
+
const settings = {
|
|
1336
|
+
enabled: this.settings.modelRouter?.enabled ?? false,
|
|
1337
|
+
cheapModel: this.settings.modelRouter?.cheapModel?.trim() || undefined,
|
|
1338
|
+
expensiveModel: this.settings.modelRouter?.expensiveModel?.trim() || undefined,
|
|
1339
|
+
learningModel: this.settings.modelRouter?.learningModel?.trim() || undefined,
|
|
1340
|
+
};
|
|
1341
|
+
return {
|
|
1342
|
+
enabled: profileSettings?.enabled ?? settings.enabled,
|
|
1343
|
+
cheapModel: profileSettings?.cheapModel?.trim() || settings.cheapModel,
|
|
1344
|
+
expensiveModel: profileSettings?.expensiveModel?.trim() || settings.expensiveModel,
|
|
1345
|
+
learningModel: profileSettings?.learningModel?.trim() || settings.learningModel,
|
|
1346
|
+
};
|
|
1347
|
+
}
|
|
1348
|
+
setModelRouterSettings(settings, scope = "global") {
|
|
1349
|
+
const normalized = {
|
|
1350
|
+
enabled: settings.enabled ?? false,
|
|
1351
|
+
cheapModel: settings.cheapModel?.trim() || undefined,
|
|
1352
|
+
expensiveModel: settings.expensiveModel?.trim() || undefined,
|
|
1353
|
+
learningModel: settings.learningModel?.trim() || undefined,
|
|
1354
|
+
};
|
|
1355
|
+
if (scope === "project") {
|
|
1356
|
+
const projectSettings = structuredClone(this.projectSettings);
|
|
1357
|
+
projectSettings.modelRouter = normalized;
|
|
1358
|
+
this.markProjectModified("modelRouter");
|
|
1359
|
+
this.saveProjectSettings(projectSettings);
|
|
1360
|
+
return;
|
|
1361
|
+
}
|
|
1362
|
+
this.globalSettings.modelRouter = normalized;
|
|
1363
|
+
this.markModified("modelRouter");
|
|
1364
|
+
this.save();
|
|
1365
|
+
}
|
|
1293
1366
|
/** Configured auxiliary summarizer model id, or "auto" (default) to pick the cheapest authed model. */
|
|
1294
1367
|
getCompactionModel() {
|
|
1295
1368
|
return this.settings.compaction?.model ?? "auto";
|
|
@@ -1712,6 +1785,7 @@ export class SettingsManager {
|
|
|
1712
1785
|
const settings = this.settings.autoLearn ?? {};
|
|
1713
1786
|
return {
|
|
1714
1787
|
...settings,
|
|
1788
|
+
model: settings.model ?? this.getModelRouterSettings().learningModel,
|
|
1715
1789
|
thinkingLevel: settings.thinkingLevel ?? "low",
|
|
1716
1790
|
complexTaskToolCalls: settings.complexTaskToolCalls ?? 12,
|
|
1717
1791
|
};
|