Commit fac6f66
committed
Add avatar path support for personas
This adds the ability for personas to specify an avatar image file directly in their package instead of needing to implement their own static file handler.
Personas now set `avatar_path` to an absolute path pointing to an image file (SVG, PNG, JPG). The server dynamically looks up and serves these files through `/api/ai/avatars/{url_encoded_id}`.
- Uses persona.id (URL-encoded) for avatar URLs to ensure uniqueness
- File size validation (5MB max)
- Proper content-type headers based on file extension
- Module-level cache for O(1) avatar path lookups (built at init, rebuilt on refresh)
Fixes #61 parent df09c6c commit fac6f66
File tree
5 files changed
+115
-85
lines changed- jupyter_ai_persona_manager
- tests
5 files changed
+115
-85
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
| 37 | + | |
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| |||
171 | 171 | | |
172 | 172 | | |
173 | 173 | | |
174 | | - | |
175 | | - | |
176 | | - | |
| 174 | + | |
177 | 175 | | |
178 | | - | |
179 | | - | |
180 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
181 | 186 | | |
182 | | - | |
183 | | - | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
184 | 190 | | |
185 | 191 | | |
186 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | 34 | | |
36 | 35 | | |
37 | 36 | | |
| |||
130 | 129 | | |
131 | 130 | | |
132 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
133 | 135 | | |
134 | 136 | | |
135 | 137 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
| 4 | + | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
21 | 43 | | |
22 | 44 | | |
23 | 45 | | |
24 | 46 | | |
25 | 47 | | |
26 | 48 | | |
27 | | - | |
28 | | - | |
| 49 | + | |
| 50 | + | |
29 | 51 | | |
30 | 52 | | |
31 | 53 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
36 | 61 | | |
37 | 62 | | |
38 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
39 | 74 | | |
40 | 75 | | |
41 | 76 | | |
| |||
51 | 86 | | |
52 | 87 | | |
53 | 88 | | |
54 | | - | |
| 89 | + | |
55 | 90 | | |
56 | 91 | | |
57 | | - | |
58 | | - | |
| 92 | + | |
59 | 93 | | |
60 | | - | |
| 94 | + | |
61 | 95 | | |
62 | | - | |
| 96 | + | |
| 97 | + | |
63 | 98 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
| 99 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
433 | 434 | | |
434 | 435 | | |
435 | 436 | | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
436 | 447 | | |
437 | 448 | | |
438 | 449 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
| 10 | + | |
35 | 11 | | |
36 | 12 | | |
37 | 13 | | |
38 | 14 | | |
| 15 | + | |
39 | 16 | | |
40 | 17 | | |
41 | 18 | | |
| |||
44 | 21 | | |
45 | 22 | | |
46 | 23 | | |
| 24 | + | |
47 | 25 | | |
48 | 26 | | |
49 | 27 | | |
| |||
56 | 34 | | |
57 | 35 | | |
58 | 36 | | |
59 | | - | |
60 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
61 | 43 | | |
62 | 44 | | |
63 | 45 | | |
| |||
67 | 49 | | |
68 | 50 | | |
69 | 51 | | |
| 52 | + | |
70 | 53 | | |
71 | 54 | | |
72 | 55 | | |
| |||
78 | 61 | | |
79 | 62 | | |
80 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
81 | 67 | | |
82 | 68 | | |
83 | | - | |
| 69 | + | |
84 | 70 | | |
85 | 71 | | |
86 | 72 | | |
87 | 73 | | |
88 | 74 | | |
89 | 75 | | |
90 | 76 | | |
| 77 | + | |
91 | 78 | | |
92 | 79 | | |
93 | 80 | | |
| |||
96 | 83 | | |
97 | 84 | | |
98 | 85 | | |
| 86 | + | |
99 | 87 | | |
100 | 88 | | |
101 | 89 | | |
| |||
108 | 96 | | |
109 | 97 | | |
110 | 98 | | |
111 | | - | |
112 | | - | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
113 | 105 | | |
114 | 106 | | |
115 | 107 | | |
116 | 108 | | |
117 | 109 | | |
| 110 | + | |
| 111 | + | |
0 commit comments