@caupulican/pi-adaptative 0.81.2 → 0.81.4
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/core/agent-session.d.ts +2 -23
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +139 -147
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +2 -0
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +3 -0
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/billing-failover-controller.d.ts +38 -0
- package/dist/core/billing-failover-controller.d.ts.map +1 -0
- package/dist/core/billing-failover-controller.js +78 -0
- package/dist/core/billing-failover-controller.js.map +1 -0
- package/dist/core/billing-failover.d.ts +25 -0
- package/dist/core/billing-failover.d.ts.map +1 -0
- package/dist/core/billing-failover.js +21 -0
- package/dist/core/billing-failover.js.map +1 -0
- package/dist/core/compaction-support.d.ts +10 -1
- package/dist/core/compaction-support.d.ts.map +1 -1
- package/dist/core/compaction-support.js +68 -9
- package/dist/core/compaction-support.js.map +1 -1
- package/dist/core/context-pipeline.d.ts +1 -0
- package/dist/core/context-pipeline.d.ts.map +1 -1
- package/dist/core/context-pipeline.js +51 -14
- package/dist/core/context-pipeline.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +9 -9
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/failure-corpus.d.ts +49 -0
- package/dist/core/failure-corpus.d.ts.map +1 -0
- package/dist/core/failure-corpus.js +61 -0
- package/dist/core/failure-corpus.js.map +1 -0
- package/dist/core/model-router/config-diagnostics.d.ts +1 -1
- package/dist/core/model-router/config-diagnostics.d.ts.map +1 -1
- package/dist/core/model-router/config-diagnostics.js +29 -1
- package/dist/core/model-router/config-diagnostics.js.map +1 -1
- package/dist/core/model-router/fitness-gate.d.ts +25 -0
- package/dist/core/model-router/fitness-gate.d.ts.map +1 -0
- package/dist/core/model-router/fitness-gate.js +34 -0
- package/dist/core/model-router/fitness-gate.js.map +1 -0
- package/dist/core/model-router/status.d.ts +29 -1
- package/dist/core/model-router/status.d.ts.map +1 -1
- package/dist/core/model-router/status.js +31 -4
- package/dist/core/model-router/status.js.map +1 -1
- package/dist/core/model-router-controller.d.ts +10 -1
- package/dist/core/model-router-controller.d.ts.map +1 -1
- package/dist/core/model-router-controller.js +110 -27
- package/dist/core/model-router-controller.js.map +1 -1
- package/dist/core/models/default-model-suggestions.d.ts.map +1 -1
- package/dist/core/models/default-model-suggestions.js +18 -0
- package/dist/core/models/default-model-suggestions.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +16 -0
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +88 -1
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/scout-controller.d.ts +44 -0
- package/dist/core/scout-controller.d.ts.map +1 -0
- package/dist/core/scout-controller.js +165 -0
- package/dist/core/scout-controller.js.map +1 -0
- package/dist/core/settings-manager.d.ts +17 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +47 -3
- 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 +4 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +6 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/context-scout.d.ts +19 -0
- package/dist/core/tools/context-scout.d.ts.map +1 -0
- package/dist/core/tools/context-scout.js +47 -0
- package/dist/core/tools/context-scout.js.map +1 -0
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/index.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/fitness-role-selector.d.ts +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/fitness-role-selector.js +5 -0
- package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +77 -7
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +13 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/local-model-commands.d.ts +5 -2
- package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
- package/dist/modes/interactive/local-model-commands.js +129 -1
- package/dist/modes/interactive/local-model-commands.js.map +1 -1
- package/dist/modes/interactive/session-flow-commands.d.ts +16 -0
- package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
- package/dist/modes/interactive/session-flow-commands.js +32 -0
- package/dist/modes/interactive/session-flow-commands.js.map +1 -1
- package/docs/bug-ledger.md +113 -0
- package/docs/index.md +1 -0
- package/docs/models.md +9 -0
- package/docs/providers.md +14 -0
- package/docs/scout.md +73 -0
- package/docs/settings.md +16 -3
- 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/examples/sdk/12-full-control.ts +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -61,6 +61,9 @@ function optionalStringValue(value, fallback = "(not set)") {
|
|
|
61
61
|
const trimmed = value?.trim();
|
|
62
62
|
return trimmed && trimmed.length > 0 ? trimmed : fallback;
|
|
63
63
|
}
|
|
64
|
+
function routerTierValue(model, thinking, fallback = "(not set)") {
|
|
65
|
+
return `${optionalStringValue(model, fallback)} · thinking ${thinking ?? MODEL_ROUTER_INHERIT_THINKING_LABEL}`;
|
|
66
|
+
}
|
|
64
67
|
function normalizeOptionalString(value) {
|
|
65
68
|
const trimmed = value.trim();
|
|
66
69
|
return trimmed.length > 0 ? trimmed : undefined;
|
|
@@ -150,7 +153,8 @@ function contextMemoryRetrievalSummary(settings) {
|
|
|
150
153
|
}
|
|
151
154
|
function modelRouterSummary(settings) {
|
|
152
155
|
const state = settings.enabled ? "enabled" : "disabled";
|
|
153
|
-
|
|
156
|
+
const gate = settings.fitnessGate ? "gate on" : "gate off";
|
|
157
|
+
return `${state} · ${gate} · cheap: ${optionalStringValue(settings.cheapModel)} · medium: ${optionalStringValue(settings.mediumModel)} · expensive: ${optionalStringValue(settings.expensiveModel)} · learn: ${optionalStringValue(settings.learningModel, "active")}`;
|
|
154
158
|
}
|
|
155
159
|
function buildAutoLearnModelOptions(settings, configuredModelOptions, currentModelPattern) {
|
|
156
160
|
const currentValue = autoLearnModelValue(settings);
|
|
@@ -1165,6 +1169,20 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1165
1169
|
includeActive: false,
|
|
1166
1170
|
unsetDescription: "Clear expensive routing model; modify turns fall back to the active session model",
|
|
1167
1171
|
});
|
|
1172
|
+
const judgeModelOptions = buildModelRouterRoleModelOptions({
|
|
1173
|
+
currentValue: this.state.judgeModel,
|
|
1174
|
+
configuredModelOptions: modelOptions,
|
|
1175
|
+
currentModelPattern,
|
|
1176
|
+
includeActive: false,
|
|
1177
|
+
unsetDescription: "Clear judge model; routing judge falls back to the medium model",
|
|
1178
|
+
});
|
|
1179
|
+
const executorModelOptions = buildModelRouterRoleModelOptions({
|
|
1180
|
+
currentValue: this.state.executorModel,
|
|
1181
|
+
configuredModelOptions: modelOptions,
|
|
1182
|
+
currentModelPattern,
|
|
1183
|
+
includeActive: false,
|
|
1184
|
+
unsetDescription: "Clear executor lane model; direct toolkit execution stays disabled",
|
|
1185
|
+
});
|
|
1168
1186
|
const learningModelOptions = buildModelRouterRoleModelOptions({
|
|
1169
1187
|
currentValue: this.state.learningModel,
|
|
1170
1188
|
configuredModelOptions: modelOptions,
|
|
@@ -1194,14 +1212,14 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1194
1212
|
id: "model-router-cheap",
|
|
1195
1213
|
label: "Cheap model",
|
|
1196
1214
|
description: "Pick the model for read-only, research, explanation, and question turns",
|
|
1197
|
-
currentValue:
|
|
1215
|
+
currentValue: routerTierValue(this.state.cheapModel, this.state.cheapThinking),
|
|
1198
1216
|
submenu: (_currentValue, done) => new ModelSelectionSubmenu(cheapModelOptions, this.state.cheapModel ?? MODEL_ROUTER_UNSET_MODEL_VALUE, (value) => {
|
|
1199
1217
|
this.state = {
|
|
1200
1218
|
...this.state,
|
|
1201
1219
|
cheapModel: value === MODEL_ROUTER_UNSET_MODEL_VALUE ? undefined : value,
|
|
1202
1220
|
};
|
|
1203
1221
|
onChange({ ...this.state }, this.scope);
|
|
1204
|
-
done(
|
|
1222
|
+
done(routerTierValue(this.state.cheapModel, this.state.cheapThinking));
|
|
1205
1223
|
}, () => done(), {
|
|
1206
1224
|
title: "Cheap / Research Model",
|
|
1207
1225
|
description: "Choose from models available through configured subscription/API accounts. Type to filter; manual is fallback.",
|
|
@@ -1215,14 +1233,14 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1215
1233
|
id: "model-router-medium",
|
|
1216
1234
|
label: "Medium model",
|
|
1217
1235
|
description: "Pick the model for normal scoped implementation, edits, tests, and mechanical refactors",
|
|
1218
|
-
currentValue:
|
|
1236
|
+
currentValue: routerTierValue(this.state.mediumModel, this.state.mediumThinking),
|
|
1219
1237
|
submenu: (_currentValue, done) => new ModelSelectionSubmenu(mediumModelOptions, this.state.mediumModel ?? MODEL_ROUTER_UNSET_MODEL_VALUE, (value) => {
|
|
1220
1238
|
this.state = {
|
|
1221
1239
|
...this.state,
|
|
1222
1240
|
mediumModel: value === MODEL_ROUTER_UNSET_MODEL_VALUE ? undefined : value,
|
|
1223
1241
|
};
|
|
1224
1242
|
onChange({ ...this.state }, this.scope);
|
|
1225
|
-
done(
|
|
1243
|
+
done(routerTierValue(this.state.mediumModel, this.state.mediumThinking));
|
|
1226
1244
|
}, () => done(), {
|
|
1227
1245
|
title: "Medium / Implementation Model",
|
|
1228
1246
|
description: "Choose from models available through configured subscription/API accounts. Type to filter; manual is fallback.",
|
|
@@ -1236,14 +1254,14 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1236
1254
|
id: "model-router-expensive",
|
|
1237
1255
|
label: "Expensive model",
|
|
1238
1256
|
description: "Pick the model for modify, implementation, and escalated tool-heavy turns",
|
|
1239
|
-
currentValue:
|
|
1257
|
+
currentValue: routerTierValue(this.state.expensiveModel, this.state.expensiveThinking),
|
|
1240
1258
|
submenu: (_currentValue, done) => new ModelSelectionSubmenu(expensiveModelOptions, this.state.expensiveModel ?? MODEL_ROUTER_UNSET_MODEL_VALUE, (value) => {
|
|
1241
1259
|
this.state = {
|
|
1242
1260
|
...this.state,
|
|
1243
1261
|
expensiveModel: value === MODEL_ROUTER_UNSET_MODEL_VALUE ? undefined : value,
|
|
1244
1262
|
};
|
|
1245
1263
|
onChange({ ...this.state }, this.scope);
|
|
1246
|
-
done(
|
|
1264
|
+
done(routerTierValue(this.state.expensiveModel, this.state.expensiveThinking));
|
|
1247
1265
|
}, () => done(), {
|
|
1248
1266
|
title: "Expensive / Modify Model",
|
|
1249
1267
|
description: "Choose from models available through configured subscription/API accounts. Type to filter; manual is fallback.",
|
|
@@ -1253,6 +1271,48 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1253
1271
|
customEmptyValue: MODEL_ROUTER_UNSET_MODEL_VALUE,
|
|
1254
1272
|
}),
|
|
1255
1273
|
},
|
|
1274
|
+
{
|
|
1275
|
+
id: "model-router-judge",
|
|
1276
|
+
label: "Judge model",
|
|
1277
|
+
description: "Pick the routing-judge model; unset falls back to the medium model",
|
|
1278
|
+
currentValue: routerTierValue(this.state.judgeModel, this.state.judgeThinking, "medium fallback"),
|
|
1279
|
+
submenu: (_currentValue, done) => new ModelSelectionSubmenu(judgeModelOptions, this.state.judgeModel ?? MODEL_ROUTER_UNSET_MODEL_VALUE, (value) => {
|
|
1280
|
+
this.state = {
|
|
1281
|
+
...this.state,
|
|
1282
|
+
judgeModel: value === MODEL_ROUTER_UNSET_MODEL_VALUE ? undefined : value,
|
|
1283
|
+
};
|
|
1284
|
+
onChange({ ...this.state }, this.scope);
|
|
1285
|
+
done(routerTierValue(this.state.judgeModel, this.state.judgeThinking, "medium fallback"));
|
|
1286
|
+
}, () => done(), {
|
|
1287
|
+
title: "Routing Judge Model",
|
|
1288
|
+
description: "Choose from configured models. Type to filter; manual is fallback.",
|
|
1289
|
+
customTitle: "Custom Routing Judge Model",
|
|
1290
|
+
customDescription: "Enter a provider/model pattern from pi --list-models.",
|
|
1291
|
+
customEmptyHint: "empty clears the setting",
|
|
1292
|
+
customEmptyValue: MODEL_ROUTER_UNSET_MODEL_VALUE,
|
|
1293
|
+
}),
|
|
1294
|
+
},
|
|
1295
|
+
{
|
|
1296
|
+
id: "model-router-executor",
|
|
1297
|
+
label: "Executor model",
|
|
1298
|
+
description: "Pick the local executor lane model; unset disables direct toolkit execution",
|
|
1299
|
+
currentValue: routerTierValue(this.state.executorModel, this.state.executorThinking),
|
|
1300
|
+
submenu: (_currentValue, done) => new ModelSelectionSubmenu(executorModelOptions, this.state.executorModel ?? MODEL_ROUTER_UNSET_MODEL_VALUE, (value) => {
|
|
1301
|
+
this.state = {
|
|
1302
|
+
...this.state,
|
|
1303
|
+
executorModel: value === MODEL_ROUTER_UNSET_MODEL_VALUE ? undefined : value,
|
|
1304
|
+
};
|
|
1305
|
+
onChange({ ...this.state }, this.scope);
|
|
1306
|
+
done(routerTierValue(this.state.executorModel, this.state.executorThinking));
|
|
1307
|
+
}, () => done(), {
|
|
1308
|
+
title: "Executor Lane Model",
|
|
1309
|
+
description: "Choose from configured models. Type to filter; manual is fallback.",
|
|
1310
|
+
customTitle: "Custom Executor Lane Model",
|
|
1311
|
+
customDescription: "Enter a provider/model pattern from pi --list-models.",
|
|
1312
|
+
customEmptyHint: "empty clears the setting",
|
|
1313
|
+
customEmptyValue: MODEL_ROUTER_UNSET_MODEL_VALUE,
|
|
1314
|
+
}),
|
|
1315
|
+
},
|
|
1256
1316
|
{
|
|
1257
1317
|
id: "model-router-learning",
|
|
1258
1318
|
label: "Learning/reflection model",
|
|
@@ -1341,6 +1401,13 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1341
1401
|
done(this.state.judgeThinking ?? MODEL_ROUTER_INHERIT_THINKING_LABEL);
|
|
1342
1402
|
}, () => done()),
|
|
1343
1403
|
},
|
|
1404
|
+
{
|
|
1405
|
+
id: "model-router-fitness-gate",
|
|
1406
|
+
label: "Fitness gate",
|
|
1407
|
+
description: "Opt-in subtractive gate: blocks tier models only when their probed router lane failed",
|
|
1408
|
+
currentValue: booleanSettingValue(this.state.fitnessGate),
|
|
1409
|
+
values: ["false", "true"],
|
|
1410
|
+
},
|
|
1344
1411
|
];
|
|
1345
1412
|
this.settingsList = new SettingsList(items, Math.min(items.length, 10), getSettingsListTheme(), (id, newValue) => {
|
|
1346
1413
|
switch (id) {
|
|
@@ -1350,6 +1417,9 @@ class ModelRouterSettingsSubmenu extends Container {
|
|
|
1350
1417
|
case "model-router-enabled":
|
|
1351
1418
|
this.state = { ...this.state, enabled: newValue === "true" };
|
|
1352
1419
|
break;
|
|
1420
|
+
case "model-router-fitness-gate":
|
|
1421
|
+
this.state = { ...this.state, fitnessGate: newValue === "true" };
|
|
1422
|
+
break;
|
|
1353
1423
|
default:
|
|
1354
1424
|
return;
|
|
1355
1425
|
}
|