mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
Preserve provider in batch persona imports
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user