gsd-pi 2.34.0-dev.bbb5216 → 2.34.0-dev.ed0bfbf
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/dist/resources/extensions/mcp-client/index.js +2 -1
- package/package.json +1 -1
- package/packages/native/dist/native.d.ts +0 -2
- package/packages/native/dist/native.js +0 -2
- package/packages/native/src/native.ts +0 -3
- package/packages/pi-agent-core/dist/proxy.d.ts +1 -25
- package/packages/pi-agent-core/dist/proxy.d.ts.map +1 -1
- package/packages/pi-agent-core/dist/proxy.js +1 -1
- package/packages/pi-agent-core/dist/proxy.js.map +1 -1
- package/packages/pi-agent-core/src/proxy.ts +1 -1
- package/packages/pi-ai/dist/api-registry.d.ts +0 -2
- package/packages/pi-ai/dist/api-registry.d.ts.map +1 -1
- package/packages/pi-ai/dist/api-registry.js +0 -10
- package/packages/pi-ai/dist/api-registry.js.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.d.ts +0 -8
- package/packages/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js +1 -1
- package/packages/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts +0 -1
- package/packages/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/github-copilot-headers.js +1 -1
- package/packages/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
- package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts +1 -43
- package/packages/pi-ai/dist/providers/google-gemini-cli.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/google-gemini-cli.js +2 -2
- package/packages/pi-ai/dist/providers/google-gemini-cli.js.map +1 -1
- package/packages/pi-ai/dist/providers/google-shared.d.ts +0 -4
- package/packages/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/google-shared.js +1 -1
- package/packages/pi-ai/dist/providers/google-shared.js.map +1 -1
- package/packages/pi-ai/dist/providers/register-builtins.d.ts +0 -1
- package/packages/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
- package/packages/pi-ai/dist/providers/register-builtins.js +1 -1
- package/packages/pi-ai/dist/providers/register-builtins.js.map +1 -1
- package/packages/pi-ai/dist/utils/event-stream.d.ts +0 -2
- package/packages/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/event-stream.js +0 -4
- package/packages/pi-ai/dist/utils/event-stream.js.map +1 -1
- package/packages/pi-ai/dist/utils/overflow.d.ts +0 -4
- package/packages/pi-ai/dist/utils/overflow.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/overflow.js +0 -6
- package/packages/pi-ai/dist/utils/overflow.js.map +1 -1
- package/packages/pi-ai/dist/utils/validation.d.ts +0 -8
- package/packages/pi-ai/dist/utils/validation.d.ts.map +1 -1
- package/packages/pi-ai/dist/utils/validation.js +0 -14
- package/packages/pi-ai/dist/utils/validation.js.map +1 -1
- package/packages/pi-ai/src/api-registry.ts +0 -12
- package/packages/pi-ai/src/providers/anthropic.ts +1 -1
- package/packages/pi-ai/src/providers/github-copilot-headers.ts +1 -1
- package/packages/pi-ai/src/providers/google-gemini-cli.ts +2 -2
- package/packages/pi-ai/src/providers/google-shared.ts +1 -1
- package/packages/pi-ai/src/providers/register-builtins.ts +1 -1
- package/packages/pi-ai/src/utils/event-stream.ts +0 -5
- package/packages/pi-ai/src/utils/overflow.ts +1 -8
- package/packages/pi-ai/src/utils/validation.ts +0 -15
- package/packages/pi-coding-agent/dist/config.d.ts +0 -9
- package/packages/pi-coding-agent/dist/config.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/config.js +4 -8
- package/packages/pi-coding-agent/dist/config.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts +0 -4
- package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js +1 -1
- package/packages/pi-coding-agent/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts +0 -5
- package/packages/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/extensions/runner.js +0 -13
- package/packages/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/keybindings.d.ts +0 -8
- package/packages/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/keybindings.js +2 -2
- package/packages/pi-coding-agent/dist/core/keybindings.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/client.d.ts +0 -17
- package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -62
- package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/config.d.ts +0 -2
- package/packages/pi-coding-agent/dist/core/lsp/config.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/config.js +0 -7
- package/packages/pi-coding-agent/dist/core/lsp/config.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts +0 -5
- package/packages/pi-coding-agent/dist/core/lsp/edits.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/edits.js +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/edits.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts +0 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.js +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/lspmux.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts +1 -6
- package/packages/pi-coding-agent/dist/core/lsp/utils.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/lsp/utils.js +1 -28
- package/packages/pi-coding-agent/dist/core/lsp/utils.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/messages.d.ts +0 -8
- package/packages/pi-coding-agent/dist/core/messages.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/messages.js +5 -5
- package/packages/pi-coding-agent/dist/core/messages.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts +0 -3
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js +1 -3
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts +1 -26
- package/packages/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-resolver.js +3 -59
- package/packages/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts +0 -17
- package/packages/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/prompt-templates.js +2 -2
- package/packages/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts +0 -4
- package/packages/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/session-manager.js +2 -4
- package/packages/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts +0 -12
- package/packages/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/settings-manager.js +2 -2
- package/packages/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/packages/pi-coding-agent/dist/migrations.d.ts +0 -16
- package/packages/pi-coding-agent/dist/migrations.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/migrations.js +2 -2
- package/packages/pi-coding-agent/dist/migrations.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +0 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js +2 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +1 -24
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js +50 -512
- package/packages/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts +71 -0
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.d.ts.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js +514 -0
- package/packages/pi-coding-agent/dist/modes/interactive/slash-command-handlers.js.map +1 -0
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +0 -4
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js +0 -7
- package/packages/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
- package/packages/pi-coding-agent/dist/utils/changelog.d.ts +0 -4
- package/packages/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/utils/changelog.js +1 -1
- package/packages/pi-coding-agent/dist/utils/changelog.js.map +1 -1
- package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts +0 -1
- package/packages/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/utils/clipboard-image.js +1 -1
- package/packages/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
- package/packages/pi-coding-agent/dist/utils/photon.d.ts +0 -19
- package/packages/pi-coding-agent/dist/utils/photon.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/utils/photon.js +1 -120
- package/packages/pi-coding-agent/dist/utils/photon.js.map +1 -1
- package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts +0 -1
- package/packages/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/utils/tools-manager.js +1 -1
- package/packages/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
- package/packages/pi-coding-agent/src/config.ts +5 -10
- package/packages/pi-coding-agent/src/core/export-html/ansi-to-html.ts +1 -1
- package/packages/pi-coding-agent/src/core/extensions/runner.ts +0 -13
- package/packages/pi-coding-agent/src/core/keybindings.ts +2 -2
- package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -73
- package/packages/pi-coding-agent/src/core/lsp/config.ts +0 -11
- package/packages/pi-coding-agent/src/core/lsp/edits.ts +1 -1
- package/packages/pi-coding-agent/src/core/lsp/lspmux.ts +1 -1
- package/packages/pi-coding-agent/src/core/lsp/utils.ts +1 -33
- package/packages/pi-coding-agent/src/core/messages.ts +5 -5
- package/packages/pi-coding-agent/src/core/model-registry.ts +0 -2
- package/packages/pi-coding-agent/src/core/model-resolver.ts +3 -77
- package/packages/pi-coding-agent/src/core/prompt-templates.ts +2 -2
- package/packages/pi-coding-agent/src/core/session-manager.ts +2 -4
- package/packages/pi-coding-agent/src/core/settings-manager.ts +2 -2
- package/packages/pi-coding-agent/src/migrations.ts +2 -2
- package/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts +2 -2
- package/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +50 -561
- package/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +653 -0
- package/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +0 -8
- package/packages/pi-coding-agent/src/utils/changelog.ts +1 -1
- package/packages/pi-coding-agent/src/utils/clipboard-image.ts +1 -1
- package/packages/pi-coding-agent/src/utils/photon.ts +0 -137
- package/packages/pi-coding-agent/src/utils/tools-manager.ts +1 -1
- package/packages/pi-tui/dist/components/editor.d.ts +0 -10
- package/packages/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/packages/pi-tui/dist/components/editor.js +1 -1
- package/packages/pi-tui/dist/components/editor.js.map +1 -1
- package/packages/pi-tui/dist/overlay-layout.d.ts +55 -0
- package/packages/pi-tui/dist/overlay-layout.d.ts.map +1 -0
- package/packages/pi-tui/dist/overlay-layout.js +288 -0
- package/packages/pi-tui/dist/overlay-layout.js.map +1 -0
- package/packages/pi-tui/dist/tui.d.ts +0 -22
- package/packages/pi-tui/dist/tui.d.ts.map +1 -1
- package/packages/pi-tui/dist/tui.js +6 -272
- package/packages/pi-tui/dist/tui.js.map +1 -1
- package/packages/pi-tui/dist/utils.d.ts +0 -7
- package/packages/pi-tui/dist/utils.d.ts.map +1 -1
- package/packages/pi-tui/dist/utils.js +0 -44
- package/packages/pi-tui/dist/utils.js.map +1 -1
- package/packages/pi-tui/src/components/editor.ts +1 -1
- package/packages/pi-tui/src/overlay-layout.ts +372 -0
- package/packages/pi-tui/src/tui.ts +11 -312
- package/packages/pi-tui/src/utils.ts +0 -43
- package/pkg/dist/core/export-html/ansi-to-html.d.ts +0 -4
- package/pkg/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.js +1 -1
- package/pkg/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/pkg/dist/modes/interactive/theme/theme.d.ts +0 -4
- package/pkg/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/pkg/dist/modes/interactive/theme/theme.js +0 -7
- package/pkg/dist/modes/interactive/theme/theme.js.map +1 -1
- package/src/resources/extensions/mcp-client/index.ts +2 -1
|
@@ -192,7 +192,7 @@ const SEVERITY_NAMES: Record<DiagnosticSeverity, string> = {
|
|
|
192
192
|
4: "hint",
|
|
193
193
|
};
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
function severityToString(severity?: DiagnosticSeverity): string {
|
|
196
196
|
return SEVERITY_NAMES[severity ?? 1] ?? "unknown";
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -211,21 +211,6 @@ export function sortDiagnostics(diagnostics: Diagnostic[]): Diagnostic[] {
|
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
export function severityToIcon(severity?: DiagnosticSeverity): string {
|
|
215
|
-
switch (severity ?? 1) {
|
|
216
|
-
case 1:
|
|
217
|
-
return "[E]";
|
|
218
|
-
case 2:
|
|
219
|
-
return "[W]";
|
|
220
|
-
case 3:
|
|
221
|
-
return "[I]";
|
|
222
|
-
case 4:
|
|
223
|
-
return "[H]";
|
|
224
|
-
default:
|
|
225
|
-
return "[E]";
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
214
|
function stripDiagnosticNoise(message: string): string {
|
|
230
215
|
return message
|
|
231
216
|
.split("\n")
|
|
@@ -353,10 +338,6 @@ export function formatLocation(location: Location, cwd: string): string {
|
|
|
353
338
|
return `${file}:${line}:${col}`;
|
|
354
339
|
}
|
|
355
340
|
|
|
356
|
-
export function formatPosition(line: number, col: number): string {
|
|
357
|
-
return `${line}:${col}`;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
341
|
// =============================================================================
|
|
361
342
|
// WorkspaceEdit Formatting
|
|
362
343
|
// =============================================================================
|
|
@@ -397,15 +378,6 @@ export function formatWorkspaceEdit(edit: WorkspaceEdit, cwd: string): string[]
|
|
|
397
378
|
return results;
|
|
398
379
|
}
|
|
399
380
|
|
|
400
|
-
export function formatTextEdit(edit: TextEdit, maxLength = 50): string {
|
|
401
|
-
const range = `${edit.range.start.line + 1}:${edit.range.start.character + 1}`;
|
|
402
|
-
const preview =
|
|
403
|
-
edit.newText.length > maxLength
|
|
404
|
-
? `${edit.newText.slice(0, maxLength).replace(/\n/g, "\\n")}…`
|
|
405
|
-
: edit.newText.replace(/\n/g, "\\n");
|
|
406
|
-
return `line ${range} -> "${preview}"`;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
381
|
// =============================================================================
|
|
410
382
|
// Symbol Formatting
|
|
411
383
|
// =============================================================================
|
|
@@ -443,10 +415,6 @@ export function symbolKindToIcon(kind: SymbolKind): string {
|
|
|
443
415
|
return `[${SYMBOL_KIND_LABELS[kind] ?? "?"}]`;
|
|
444
416
|
}
|
|
445
417
|
|
|
446
|
-
export function symbolKindToName(kind: SymbolKind): string {
|
|
447
|
-
return SYMBOL_KIND_LABELS[kind] ?? "Unknown";
|
|
448
|
-
}
|
|
449
|
-
|
|
450
418
|
export function formatDocumentSymbol(symbol: DocumentSymbol, indent = 0): string[] {
|
|
451
419
|
const prefix = " ".repeat(indent);
|
|
452
420
|
const icon = symbolKindToIcon(symbol.kind);
|
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
import type { AgentMessage } from "@gsd/pi-agent-core";
|
|
9
9
|
import type { ImageContent, Message, TextContent } from "@gsd/pi-ai";
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
|
|
12
12
|
|
|
13
13
|
<summary>
|
|
14
14
|
`;
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
const COMPACTION_SUMMARY_SUFFIX = `
|
|
17
17
|
</summary>`;
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:
|
|
20
20
|
|
|
21
21
|
<summary>
|
|
22
22
|
`;
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
const BRANCH_SUMMARY_SUFFIX = `</summary>`;
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Message type for bash executions via the ! command.
|
|
@@ -79,7 +79,7 @@ declare module "@gsd/pi-agent-core" {
|
|
|
79
79
|
/**
|
|
80
80
|
* Convert a BashExecutionMessage to user message text for LLM context.
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
function bashExecutionToText(msg: BashExecutionMessage): string {
|
|
83
83
|
let text = `Ran \`${msg.command}\`\n`;
|
|
84
84
|
if (msg.output) {
|
|
85
85
|
text += `\`\`\`\n${msg.output}\n\`\`\``;
|
|
@@ -216,8 +216,6 @@ function applyModelOverride(model: Model<Api>, override: ModelOverride): Model<A
|
|
|
216
216
|
return result;
|
|
217
217
|
}
|
|
218
218
|
|
|
219
|
-
/** Clear the config value command cache. Exported for testing. */
|
|
220
|
-
export const clearApiKeyCache = clearConfigValueCache;
|
|
221
219
|
|
|
222
220
|
/**
|
|
223
221
|
* Model registry - loads and manages models, resolves API keys via AuthStorage.
|
|
@@ -11,7 +11,7 @@ import { DEFAULT_THINKING_LEVEL } from "./defaults.js";
|
|
|
11
11
|
import type { ModelRegistry } from "./model-registry.js";
|
|
12
12
|
|
|
13
13
|
/** Default model IDs for each known provider */
|
|
14
|
-
|
|
14
|
+
const defaultModelPerProvider: Record<KnownProvider, string> = {
|
|
15
15
|
"amazon-bedrock": "us.anthropic.claude-opus-4-6-v1",
|
|
16
16
|
anthropic: "claude-opus-4-6[1m]",
|
|
17
17
|
openai: "gpt-5.4",
|
|
@@ -143,9 +143,9 @@ function buildFallbackModel(provider: string, modelId: string, availableModels:
|
|
|
143
143
|
* - If suffix is valid thinking level, use it and recurse on prefix
|
|
144
144
|
* - If suffix is invalid, warn and recurse on prefix with "off"
|
|
145
145
|
*
|
|
146
|
-
* @internal
|
|
146
|
+
* @internal
|
|
147
147
|
*/
|
|
148
|
-
|
|
148
|
+
function parseModelPattern(
|
|
149
149
|
pattern: string,
|
|
150
150
|
availableModels: Model<Api>[],
|
|
151
151
|
options?: { allowInvalidThinkingLevelFallback?: boolean },
|
|
@@ -546,77 +546,3 @@ export async function findInitialModel(options: {
|
|
|
546
546
|
// 5. No model found
|
|
547
547
|
return { model: undefined, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };
|
|
548
548
|
}
|
|
549
|
-
|
|
550
|
-
/**
|
|
551
|
-
* Restore model from session, with fallback to available models
|
|
552
|
-
*/
|
|
553
|
-
export async function restoreModelFromSession(
|
|
554
|
-
savedProvider: string,
|
|
555
|
-
savedModelId: string,
|
|
556
|
-
currentModel: Model<Api> | undefined,
|
|
557
|
-
shouldPrintMessages: boolean,
|
|
558
|
-
modelRegistry: ModelRegistry,
|
|
559
|
-
): Promise<{ model: Model<Api> | undefined; fallbackMessage: string | undefined }> {
|
|
560
|
-
const restoredModel = modelRegistry.find(savedProvider, savedModelId);
|
|
561
|
-
|
|
562
|
-
// Check if restored model exists and has a valid API key
|
|
563
|
-
const hasApiKey = restoredModel ? !!(await modelRegistry.getApiKey(restoredModel)) : false;
|
|
564
|
-
|
|
565
|
-
if (restoredModel && hasApiKey) {
|
|
566
|
-
if (shouldPrintMessages) {
|
|
567
|
-
console.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));
|
|
568
|
-
}
|
|
569
|
-
return { model: restoredModel, fallbackMessage: undefined };
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
// Model not found or no API key - fall back
|
|
573
|
-
const reason = !restoredModel ? "model no longer exists" : "no API key available";
|
|
574
|
-
|
|
575
|
-
if (shouldPrintMessages) {
|
|
576
|
-
console.error(chalk.yellow(`Warning: Could not restore model ${savedProvider}/${savedModelId} (${reason}).`));
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
// If we already have a model, use it as fallback
|
|
580
|
-
if (currentModel) {
|
|
581
|
-
if (shouldPrintMessages) {
|
|
582
|
-
console.log(chalk.dim(`Falling back to: ${currentModel.provider}/${currentModel.id}`));
|
|
583
|
-
}
|
|
584
|
-
return {
|
|
585
|
-
model: currentModel,
|
|
586
|
-
fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,
|
|
587
|
-
};
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
// Try to find any available model
|
|
591
|
-
const availableModels = await modelRegistry.getAvailable();
|
|
592
|
-
|
|
593
|
-
if (availableModels.length > 0) {
|
|
594
|
-
// Try to find a default model from known providers
|
|
595
|
-
let fallbackModel: Model<Api> | undefined;
|
|
596
|
-
for (const provider of Object.keys(defaultModelPerProvider) as KnownProvider[]) {
|
|
597
|
-
const defaultId = defaultModelPerProvider[provider];
|
|
598
|
-
const match = availableModels.find((m) => m.provider === provider && m.id === defaultId);
|
|
599
|
-
if (match) {
|
|
600
|
-
fallbackModel = match;
|
|
601
|
-
break;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
// If no default found, use first available
|
|
606
|
-
if (!fallbackModel) {
|
|
607
|
-
fallbackModel = availableModels[0];
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
if (shouldPrintMessages) {
|
|
611
|
-
console.log(chalk.dim(`Falling back to: ${fallbackModel.provider}/${fallbackModel.id}`));
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
return {
|
|
615
|
-
model: fallbackModel,
|
|
616
|
-
fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${fallbackModel.provider}/${fallbackModel.id}.`,
|
|
617
|
-
};
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
// No models available
|
|
621
|
-
return { model: undefined, fallbackMessage: undefined };
|
|
622
|
-
}
|
|
@@ -19,7 +19,7 @@ export interface PromptTemplate {
|
|
|
19
19
|
* Parse command arguments respecting quoted strings (bash-style)
|
|
20
20
|
* Returns array of arguments
|
|
21
21
|
*/
|
|
22
|
-
|
|
22
|
+
function parseCommandArgs(argsString: string): string[] {
|
|
23
23
|
const args: string[] = [];
|
|
24
24
|
let current = "";
|
|
25
25
|
let inQuote: string | null = null;
|
|
@@ -63,7 +63,7 @@ export function parseCommandArgs(argsString: string): string[] {
|
|
|
63
63
|
* Note: Replacement happens on the template string only. Argument values
|
|
64
64
|
* containing patterns like $1, $@, or $ARGUMENTS are NOT recursively substituted.
|
|
65
65
|
*/
|
|
66
|
-
|
|
66
|
+
function substituteArgs(content: string, args: string[]): string {
|
|
67
67
|
let result = content;
|
|
68
68
|
|
|
69
69
|
// Replace $1, $2, etc. with positional args FIRST (before wildcards)
|
|
@@ -577,8 +577,7 @@ function resolveBlobRefsInEntries(entries: FileEntry[], blobStore: BlobStore): v
|
|
|
577
577
|
}
|
|
578
578
|
}
|
|
579
579
|
|
|
580
|
-
|
|
581
|
-
export function loadEntriesFromFile(filePath: string): FileEntry[] {
|
|
580
|
+
function loadEntriesFromFile(filePath: string): FileEntry[] {
|
|
582
581
|
if (!existsSync(filePath)) return [];
|
|
583
582
|
|
|
584
583
|
const content = readFileSync(filePath, "utf8");
|
|
@@ -620,8 +619,7 @@ function isValidSessionFile(filePath: string): boolean {
|
|
|
620
619
|
}
|
|
621
620
|
}
|
|
622
621
|
|
|
623
|
-
|
|
624
|
-
export function findMostRecentSession(sessionDir: string): string | null {
|
|
622
|
+
function findMostRecentSession(sessionDir: string): string | null {
|
|
625
623
|
try {
|
|
626
624
|
const files = readdirSync(sessionDir)
|
|
627
625
|
.filter((f) => f.endsWith(".jsonl"))
|
|
@@ -195,7 +195,7 @@ export interface SettingsError {
|
|
|
195
195
|
error: Error;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
class FileSettingsStorage implements SettingsStorage {
|
|
199
199
|
private globalSettingsPath: string;
|
|
200
200
|
private projectSettingsPath: string;
|
|
201
201
|
|
|
@@ -262,7 +262,7 @@ export class FileSettingsStorage implements SettingsStorage {
|
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
class InMemorySettingsStorage implements SettingsStorage {
|
|
266
266
|
private global: string | undefined;
|
|
267
267
|
private project: string | undefined;
|
|
268
268
|
|
|
@@ -16,7 +16,7 @@ const EXTENSIONS_DOC_URL = "https://github.com/badlogic/pi-mono/blob/main/packag
|
|
|
16
16
|
*
|
|
17
17
|
* @returns Array of provider names that were migrated
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
function migrateAuthToAuthJson(): string[] {
|
|
20
20
|
const agentDir = getAgentDir();
|
|
21
21
|
const authPath = join(agentDir, "auth.json");
|
|
22
22
|
const oauthPath = join(agentDir, "oauth.json");
|
|
@@ -79,7 +79,7 @@ export function migrateAuthToAuthJson(): string[] {
|
|
|
79
79
|
*
|
|
80
80
|
* See: https://github.com/badlogic/pi-mono/issues/320
|
|
81
81
|
*/
|
|
82
|
-
|
|
82
|
+
function migrateSessionsFromAgentRoot(): void {
|
|
83
83
|
const agentDir = getAgentDir();
|
|
84
84
|
|
|
85
85
|
// Find all .jsonl files directly in agentDir (not in subdirectories)
|
package/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts
CHANGED
|
@@ -36,7 +36,7 @@ function matchesNameFilter(session: SessionInfo, filter: NameFilter): boolean {
|
|
|
36
36
|
return hasSessionName(session);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
function parseSearchQuery(query: string): ParsedSearchQuery {
|
|
40
40
|
const trimmed = query.trim();
|
|
41
41
|
if (!trimmed) {
|
|
42
42
|
return { mode: "tokens", tokens: [], regex: null };
|
|
@@ -113,7 +113,7 @@ export function parseSearchQuery(query: string): ParsedSearchQuery {
|
|
|
113
113
|
return { mode: "tokens", tokens, regex: null };
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
function matchSession(session: SessionInfo, parsed: ParsedSearchQuery): MatchResult {
|
|
117
117
|
const text = getSessionSearchText(session);
|
|
118
118
|
|
|
119
119
|
if (parsed.mode === "regex") {
|