Skip to content

Commit 0807f6e

Browse files
tellahonpub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w
andauthored
refactor(desktop): drop dead goose-set avatar refs (#1228)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com> Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
1 parent 67eb982 commit 0807f6e

4 files changed

Lines changed: 19 additions & 60 deletions

File tree

desktop/src-tauri/src/commands/personas.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ mod tests {
375375
let md = br#"---
376376
name: fizz
377377
display_name: Fizz
378-
avatar: app-avatar:pollies-12
378+
avatar: app-avatar:persona-12
379379
runtime: goose
380380
---
381381
You are Fizz.
@@ -388,7 +388,7 @@ You are Fizz.
388388
assert_eq!(result.personas[0].display_name, "Fizz");
389389
assert_eq!(
390390
result.personas[0].avatar_ref.as_deref(),
391-
Some("app-avatar:pollies-12")
391+
Some("app-avatar:persona-12")
392392
);
393393
assert_eq!(result.personas[0].source_file, "fizz.md");
394394
}

desktop/src-tauri/src/managed_agents/persona_card_tests.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ fn parse_md_persona_preserves_app_avatar_ref() {
409409
name: goosey
410410
display_name: Goosey
411411
description: Goose internal agent.
412-
avatar: app-avatar:gloopies-19
412+
avatar: app-avatar:persona-19
413413
model: anthropic:claude-sonnet-4
414414
runtime: goose
415415
---
@@ -418,7 +418,7 @@ You are Goosey.
418418
let result = parse_md_persona(md).unwrap();
419419
assert_eq!(result.display_name, "Goosey");
420420
assert_eq!(result.avatar_data_url, None);
421-
assert_eq!(result.avatar_ref.as_deref(), Some("app-avatar:gloopies-19"));
421+
assert_eq!(result.avatar_ref.as_deref(), Some("app-avatar:persona-19"));
422422
assert_eq!(result.model.as_deref(), Some("claude-sonnet-4"));
423423
assert_eq!(result.provider.as_deref(), Some("anthropic"));
424424
assert_eq!(result.runtime.as_deref(), Some("goose"));
@@ -446,15 +446,15 @@ fn parse_md_persona_accepts_goose_internal_frontmatter() {
446446
let md = br#"---
447447
name: block.md
448448
description: Opinionated guide to Block's intelligence operating model.
449-
avatar: app-avatar:gloopies-19
449+
avatar: app-avatar:persona-19
450450
metadata:
451451
gooseInternalBundled: true
452452
---
453453
You are block.md.
454454
"#;
455455
let result = parse_md_persona(md).unwrap();
456456
assert_eq!(result.display_name, "block.md");
457-
assert_eq!(result.avatar_ref.as_deref(), Some("app-avatar:gloopies-19"));
457+
assert_eq!(result.avatar_ref.as_deref(), Some("app-avatar:persona-19"));
458458
assert_eq!(result.system_prompt, "You are block.md.\n");
459459
}
460460

@@ -495,7 +495,7 @@ fn parse_zip_with_plain_md_persona_preserves_avatar_ref() {
495495
name: fizz
496496
display_name: Fizz
497497
description: Engineering agent.
498-
avatar: app-avatar:pollies-12
498+
avatar: app-avatar:persona-12
499499
runtime: goose
500500
model: anthropic:claude-sonnet-4
501501
---
@@ -508,7 +508,7 @@ You are Fizz.
508508
assert_eq!(result.personas[0].display_name, "Fizz");
509509
assert_eq!(
510510
result.personas[0].avatar_ref.as_deref(),
511-
Some("app-avatar:pollies-12")
511+
Some("app-avatar:persona-12")
512512
);
513513
assert_eq!(result.personas[0].source_file, "fizz.md");
514514
}

desktop/src/shared/avatars/gooseAppAvatarRefs.test.mjs

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,22 @@ import {
88

99
test("toGooseAppAvatarRef canonicalizes app-avatar refs", () => {
1010
assert.equal(
11-
toGooseAppAvatarRef("app-avatar:gloopies-19"),
12-
"app-avatar:gloopies-19",
11+
toGooseAppAvatarRef("app-avatar:persona-19"),
12+
"app-avatar:persona-19",
1313
);
1414
});
1515

16-
test("toGooseAppAvatarRef ignores Goose-looking paths by default", () => {
17-
assert.equal(toGooseAppAvatarRef("./avatars/pollies_2.png"), null);
18-
});
19-
20-
test("toGooseAppAvatarRef detects Goose avatar ids in paths during import", () => {
21-
assert.equal(
22-
toGooseAppAvatarRef("./avatars/pollies_2.png", {
23-
allowFilenameFallback: true,
24-
}),
25-
"app-avatar:pollies-2",
26-
);
16+
test("toGooseAppAvatarRef ignores filesystem-looking paths", () => {
17+
assert.equal(toGooseAppAvatarRef("./avatars/persona_2.png"), null);
2718
});
2819

2920
test("resolveImportedPersonaAvatarUrl prefers app-avatar refs over data URLs", () => {
3021
assert.equal(
3122
resolveImportedPersonaAvatarUrl({
3223
avatarDataUrl: "https://example.com/avatar.png",
33-
avatarRef: "app-avatar:fuzzies-1",
24+
avatarRef: "app-avatar:persona-1",
3425
}),
35-
"app-avatar:fuzzies-1",
26+
"app-avatar:persona-1",
3627
);
3728
});
3829

@@ -46,13 +37,13 @@ test("resolveImportedPersonaAvatarUrl preserves ordinary image URLs", () => {
4637
);
4738
});
4839

49-
test("resolveImportedPersonaAvatarUrl does not rewrite Goose-looking remote URLs", () => {
40+
test("resolveImportedPersonaAvatarUrl does not rewrite remote image URLs", () => {
5041
assert.equal(
5142
resolveImportedPersonaAvatarUrl({
52-
avatarDataUrl: "https://cdn.example.com/avatars/pollies_2.png",
43+
avatarDataUrl: "https://cdn.example.com/avatars/persona_2.png",
5344
avatarRef: null,
5445
}),
55-
"https://cdn.example.com/avatars/pollies_2.png",
46+
"https://cdn.example.com/avatars/persona_2.png",
5647
);
5748
});
5849

@@ -65,13 +56,3 @@ test("resolveImportedPersonaAvatarUrl preserves URL avatar refs", () => {
6556
"https://example.com/persona-avatar.png",
6657
);
6758
});
68-
69-
test("resolveImportedPersonaAvatarUrl preserves Goose-looking URL avatar refs", () => {
70-
assert.equal(
71-
resolveImportedPersonaAvatarUrl({
72-
avatarDataUrl: null,
73-
avatarRef: " https://cdn.example.com/avatars/pollies_2.png ",
74-
}),
75-
"https://cdn.example.com/avatars/pollies_2.png",
76-
);
77-
});

desktop/src/shared/avatars/gooseAppAvatarRefs.ts

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
export const GOOSE_APP_AVATAR_REF_PREFIX = "app-avatar:" as const;
22

33
const APP_AVATAR_ID_PATTERN = /^[a-z0-9][a-z0-9_-]{0,63}$/;
4-
const GOOSE_COLLECTION_ID_PATTERN = /^(fuzzies|gloopies|pollies)[-_](\d+)$/;
5-
6-
type ParseGooseAppAvatarOptions = {
7-
allowFilenameFallback?: boolean;
8-
};
94

105
function cleanAvatarCandidate(value: string): string {
116
const basename = value
@@ -19,7 +14,6 @@ function cleanAvatarCandidate(value: string): string {
1914

2015
export function parseGooseAppAvatarId(
2116
value: string | null | undefined,
22-
options: ParseGooseAppAvatarOptions = {},
2317
): string | null {
2418
const trimmed = value?.trim();
2519
if (!trimmed) {
@@ -33,22 +27,13 @@ export function parseGooseAppAvatarId(
3327
return APP_AVATAR_ID_PATTERN.test(id) ? id : null;
3428
}
3529

36-
if (options.allowFilenameFallback) {
37-
const candidate = cleanAvatarCandidate(trimmed);
38-
const collectionMatch = GOOSE_COLLECTION_ID_PATTERN.exec(candidate);
39-
if (collectionMatch) {
40-
return `${collectionMatch[1]}-${collectionMatch[2]}`;
41-
}
42-
}
43-
4430
return null;
4531
}
4632

4733
export function toGooseAppAvatarRef(
4834
value: string | null | undefined,
49-
options: ParseGooseAppAvatarOptions = {},
5035
): string | null {
51-
const id = parseGooseAppAvatarId(value, options);
36+
const id = parseGooseAppAvatarId(value);
5237
return id ? `${GOOSE_APP_AVATAR_REF_PREFIX}${id}` : null;
5338
}
5439

@@ -67,15 +52,8 @@ export function resolveImportedPersonaAvatarUrl({
6752
avatarDataUrl?: string | null;
6853
avatarRef?: string | null;
6954
}): string | null {
70-
const trimmedAvatarRef = avatarRef?.trim();
71-
const avatarRefFileFallback =
72-
trimmedAvatarRef && !isPersistableAvatarUrl(trimmedAvatarRef)
73-
? toGooseAppAvatarRef(trimmedAvatarRef, { allowFilenameFallback: true })
74-
: null;
7555
const gooseRef =
76-
toGooseAppAvatarRef(avatarRef) ??
77-
avatarRefFileFallback ??
78-
toGooseAppAvatarRef(avatarDataUrl);
56+
toGooseAppAvatarRef(avatarRef) ?? toGooseAppAvatarRef(avatarDataUrl);
7957
if (gooseRef) {
8058
return gooseRef;
8159
}

0 commit comments

Comments
 (0)