@earendil-works/pi-coding-agent 0.82.0 → 0.82.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 +27 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -7
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/extensions/types.d.ts +2 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +13 -3
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +19 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +3 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +6 -0
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +3 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +10 -2
- 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 +22 -13
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +28 -16
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/docs/extensions.md +2 -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/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/message-renderer.ts +2 -2
- 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
|
@@ -17,7 +17,7 @@ import { FooterDataProvider } from "../../core/footer-data-provider.js";
|
|
|
17
17
|
import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
|
|
18
18
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
19
19
|
import { createCompactionSummaryMessage } from "../../core/messages.js";
|
|
20
|
-
import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScope } from "../../core/model-resolver.js";
|
|
20
|
+
import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScope, resolveModelScopeWithDiagnostics, } from "../../core/model-resolver.js";
|
|
21
21
|
import { DefaultPackageManager } from "../../core/package-manager.js";
|
|
22
22
|
import { formatMissingSessionCwdPrompt, MissingSessionCwdError } from "../../core/session-cwd.js";
|
|
23
23
|
import { SessionManager, sessionEntryToContextMessages } from "../../core/session-manager.js";
|
|
@@ -2622,7 +2622,7 @@ export class InteractiveMode {
|
|
|
2622
2622
|
case "custom": {
|
|
2623
2623
|
if (message.display) {
|
|
2624
2624
|
const renderer = this.session.extensionRunner.getMessageRenderer(message.customType);
|
|
2625
|
-
const component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings());
|
|
2625
|
+
const component = new CustomMessageComponent(message, renderer, this.getMarkdownThemeWithSettings(), this.outputPad);
|
|
2626
2626
|
component.setExpanded(this.toolOutputExpanded);
|
|
2627
2627
|
this.chatContainer.addChild(component);
|
|
2628
2628
|
}
|
|
@@ -3525,7 +3525,9 @@ export class InteractiveMode {
|
|
|
3525
3525
|
this.outputPad = padding;
|
|
3526
3526
|
if (this.streamingComponent || this.session.isStreaming) {
|
|
3527
3527
|
for (const child of this.chatContainer.children) {
|
|
3528
|
-
if (child instanceof AssistantMessageComponent ||
|
|
3528
|
+
if (child instanceof AssistantMessageComponent ||
|
|
3529
|
+
child instanceof CustomMessageComponent ||
|
|
3530
|
+
child instanceof UserMessageComponent) {
|
|
3529
3531
|
child.setOutputPad(padding);
|
|
3530
3532
|
}
|
|
3531
3533
|
}
|
|
@@ -3710,12 +3712,17 @@ export class InteractiveMode {
|
|
|
3710
3712
|
// Get all available models
|
|
3711
3713
|
await this.session.modelRuntime.refresh();
|
|
3712
3714
|
const allModels = [...(await this.session.modelRuntime.getAvailable())];
|
|
3713
|
-
|
|
3715
|
+
const allModelIds = new Set(allModels.map((model) => `${model.provider}/${model.id}`));
|
|
3716
|
+
const configuredPatterns = this.settingsManager.getEnabledModels();
|
|
3717
|
+
const sessionScopedModels = this.session.scopedModels;
|
|
3718
|
+
if (allModels.length === 0 && !configuredPatterns?.length && sessionScopedModels.length === 0) {
|
|
3714
3719
|
this.showStatus("No models available");
|
|
3715
3720
|
return;
|
|
3716
3721
|
}
|
|
3722
|
+
const configuredScope = configuredPatterns?.length
|
|
3723
|
+
? await resolveModelScopeWithDiagnostics(configuredPatterns, this.session.modelRuntime)
|
|
3724
|
+
: undefined;
|
|
3717
3725
|
// Check if session has scoped models (from previous session-only changes or CLI --models)
|
|
3718
|
-
const sessionScopedModels = this.session.scopedModels;
|
|
3719
3726
|
const hasSessionScope = sessionScopedModels.length > 0;
|
|
3720
3727
|
// Build enabled model IDs from session state or settings
|
|
3721
3728
|
let currentEnabledIds = null;
|
|
@@ -3723,18 +3730,22 @@ export class InteractiveMode {
|
|
|
3723
3730
|
// Use current session's scoped models
|
|
3724
3731
|
currentEnabledIds = sessionScopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
|
|
3725
3732
|
}
|
|
3726
|
-
else {
|
|
3727
|
-
|
|
3728
|
-
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3733
|
+
else if (configuredScope) {
|
|
3734
|
+
currentEnabledIds = configuredScope.scopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`);
|
|
3735
|
+
}
|
|
3736
|
+
for (const diagnostic of configuredScope?.diagnostics ?? []) {
|
|
3737
|
+
if (diagnostic.code !== "no-match")
|
|
3738
|
+
continue;
|
|
3739
|
+
currentEnabledIds ??= [];
|
|
3740
|
+
if (!currentEnabledIds.includes(diagnostic.pattern))
|
|
3741
|
+
currentEnabledIds.push(diagnostic.pattern);
|
|
3733
3742
|
}
|
|
3734
3743
|
// Helper to update session's scoped models (session-only, no persist)
|
|
3735
3744
|
const updateSessionModels = async (enabledIds) => {
|
|
3736
3745
|
currentEnabledIds = enabledIds === null ? null : [...enabledIds];
|
|
3737
|
-
|
|
3746
|
+
const hasEnabledAvailableModel = enabledIds?.some((id) => allModelIds.has(id)) ?? false;
|
|
3747
|
+
const allAvailableModelsEnabled = enabledIds !== null && [...allModelIds].every((id) => enabledIds.includes(id));
|
|
3748
|
+
if (enabledIds && hasEnabledAvailableModel && !allAvailableModelsEnabled) {
|
|
3738
3749
|
const newScopedModels = await resolveModelScope(enabledIds, this.session.modelRuntime);
|
|
3739
3750
|
this.session.setScopedModels(newScopedModels.map((sm) => ({
|
|
3740
3751
|
model: sm.model,
|
|
@@ -3758,9 +3769,10 @@ export class InteractiveMode {
|
|
|
3758
3769
|
},
|
|
3759
3770
|
onPersist: (enabledIds) => {
|
|
3760
3771
|
// Persist to settings
|
|
3761
|
-
const
|
|
3762
|
-
|
|
3763
|
-
|
|
3772
|
+
const allEnabled = enabledIds !== null &&
|
|
3773
|
+
enabledIds.length === allModels.length &&
|
|
3774
|
+
enabledIds.every((id) => allModelIds.has(id));
|
|
3775
|
+
const newPatterns = enabledIds === null || allEnabled ? undefined : enabledIds;
|
|
3764
3776
|
this.settingsManager.setEnabledModels(newPatterns ? [...newPatterns] : undefined);
|
|
3765
3777
|
this.showStatus("Model selection saved to settings");
|
|
3766
3778
|
},
|