Preserve provider in batch persona imports

This commit is contained in:
klopez4212
2026-06-22 15:44:48 +01:00
parent 37c1012132
commit 1f406efcde
3 changed files with 67 additions and 8 deletions
@@ -19,6 +19,7 @@ import {
DialogHeader,
DialogTitle,
} from "@/shared/ui/dialog";
import { buildBatchImportPersonaInput } from "./batchImportPersonaInput";
type BatchImportDialogProps = {
fileName: string;
@@ -92,14 +93,7 @@ export function BatchImportDialog({
});
try {
const avatarUrl = resolveImportedPersonaAvatarUrl(persona);
await createPersona({
displayName: persona.displayName,
avatarUrl: avatarUrl ?? undefined,
systemPrompt: persona.systemPrompt,
runtime: persona.runtime ?? undefined,
model: persona.model ?? undefined,
});
await createPersona(buildBatchImportPersonaInput(persona));
completed += 1;
setImportedCount(completed);
setItemStatuses((prev) => {
@@ -0,0 +1,46 @@
import assert from "node:assert/strict";
import test from "node:test";
import { buildBatchImportPersonaInput } from "./batchImportPersonaInput.ts";
function persona(overrides = {}) {
return {
displayName: "Imported Agent",
avatarDataUrl: null,
avatarRef: null,
systemPrompt: "Use the imported provider.",
runtime: "goose",
model: "claude-sonnet-4",
provider: "anthropic",
namePool: [],
sourceFile: "agent.persona.md",
...overrides,
};
}
test("buildBatchImportPersonaInput preserves provider from parsed personas", () => {
assert.deepEqual(buildBatchImportPersonaInput(persona()), {
displayName: "Imported Agent",
avatarUrl: undefined,
systemPrompt: "Use the imported provider.",
runtime: "goose",
model: "claude-sonnet-4",
provider: "anthropic",
namePool: undefined,
});
});
test("buildBatchImportPersonaInput carries imported name pools", () => {
assert.deepEqual(
buildBatchImportPersonaInput(persona({ namePool: ["fizz", "buzz"] })),
{
displayName: "Imported Agent",
avatarUrl: undefined,
systemPrompt: "Use the imported provider.",
runtime: "goose",
model: "claude-sonnet-4",
provider: "anthropic",
namePool: ["fizz", "buzz"],
},
);
});
@@ -0,0 +1,19 @@
import type { ParsedPersonaPreview } from "@/shared/api/tauriPersonas";
import type { CreatePersonaInput } from "@/shared/api/types";
import { resolveImportedPersonaAvatarUrl } from "@/shared/avatars/gooseAppAvatarRefs";
export function buildBatchImportPersonaInput(
persona: ParsedPersonaPreview,
): CreatePersonaInput {
const avatarUrl = resolveImportedPersonaAvatarUrl(persona);
return {
displayName: persona.displayName,
avatarUrl: avatarUrl ?? undefined,
systemPrompt: persona.systemPrompt,
runtime: persona.runtime ?? undefined,
model: persona.model ?? undefined,
provider: persona.provider ?? undefined,
namePool: persona.namePool.length > 0 ? persona.namePool : undefined,
};
}