@mariozechner/pi-coding-agent 0.51.0 → 0.51.1
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 +13 -0
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +24 -9
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +4 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +4 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +7 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +15 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +0 -7
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +4 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +12 -0
- package/dist/modes/interactive/components/settings-selector.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/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +4 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +4 -0
- package/dist/modes/rpc/rpc-mode.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/custom-provider-qwen-cli/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -884,21 +884,36 @@ export class AgentSession {
|
|
|
884
884
|
}
|
|
885
885
|
return this._cycleAvailableModel(direction);
|
|
886
886
|
}
|
|
887
|
+
async _getScopedModelsWithApiKey() {
|
|
888
|
+
const apiKeysByProvider = new Map();
|
|
889
|
+
const result = [];
|
|
890
|
+
for (const scoped of this._scopedModels) {
|
|
891
|
+
const provider = scoped.model.provider;
|
|
892
|
+
let apiKey;
|
|
893
|
+
if (apiKeysByProvider.has(provider)) {
|
|
894
|
+
apiKey = apiKeysByProvider.get(provider);
|
|
895
|
+
}
|
|
896
|
+
else {
|
|
897
|
+
apiKey = await this._modelRegistry.getApiKeyForProvider(provider);
|
|
898
|
+
apiKeysByProvider.set(provider, apiKey);
|
|
899
|
+
}
|
|
900
|
+
if (apiKey) {
|
|
901
|
+
result.push(scoped);
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
return result;
|
|
905
|
+
}
|
|
887
906
|
async _cycleScopedModel(direction) {
|
|
888
|
-
|
|
907
|
+
const scopedModels = await this._getScopedModelsWithApiKey();
|
|
908
|
+
if (scopedModels.length <= 1)
|
|
889
909
|
return undefined;
|
|
890
910
|
const currentModel = this.model;
|
|
891
|
-
let currentIndex =
|
|
911
|
+
let currentIndex = scopedModels.findIndex((sm) => modelsAreEqual(sm.model, currentModel));
|
|
892
912
|
if (currentIndex === -1)
|
|
893
913
|
currentIndex = 0;
|
|
894
|
-
const len =
|
|
914
|
+
const len = scopedModels.length;
|
|
895
915
|
const nextIndex = direction === "forward" ? (currentIndex + 1) % len : (currentIndex - 1 + len) % len;
|
|
896
|
-
const next =
|
|
897
|
-
// Validate API key
|
|
898
|
-
const apiKey = await this._modelRegistry.getApiKey(next.model);
|
|
899
|
-
if (!apiKey) {
|
|
900
|
-
throw new Error(`No API key for ${next.model.provider}/${next.model.id}`);
|
|
901
|
-
}
|
|
916
|
+
const next = scopedModels[nextIndex];
|
|
902
917
|
// Apply model
|
|
903
918
|
this.agent.setModel(next.model);
|
|
904
919
|
this.sessionManager.appendModelChange(next.model.provider, next.model.id);
|