solfaces 1.0.2 → 2.1.0

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.
Files changed (85) hide show
  1. package/README.md +489 -97
  2. package/SKILL.md +171 -0
  3. package/dist/agent/index.cjs +15 -14
  4. package/dist/agent/index.js +5 -4
  5. package/dist/agent/mcp-server.cjs +2956 -287
  6. package/dist/chunk-6QRDULAO.cjs +191 -0
  7. package/dist/chunk-6QRDULAO.cjs.map +1 -0
  8. package/dist/{chunk-RX6D5FGH.js → chunk-77SPWQU5.js} +69 -28
  9. package/dist/chunk-77SPWQU5.js.map +1 -0
  10. package/dist/chunk-CQWXUU7P.js +239 -0
  11. package/dist/chunk-CQWXUU7P.js.map +1 -0
  12. package/dist/chunk-CXRVPOTI.cjs +244 -0
  13. package/dist/chunk-CXRVPOTI.cjs.map +1 -0
  14. package/dist/chunk-DRUSCLEF.js +177 -0
  15. package/dist/chunk-DRUSCLEF.js.map +1 -0
  16. package/dist/{chunk-VMNATBH3.cjs → chunk-F244Q4KC.cjs} +74 -33
  17. package/dist/chunk-F244Q4KC.cjs.map +1 -0
  18. package/dist/chunk-HVPGR6G5.cjs +647 -0
  19. package/dist/chunk-HVPGR6G5.cjs.map +1 -0
  20. package/dist/{chunk-SNJABBAT.js → chunk-MGP7F65H.js} +3 -3
  21. package/dist/{chunk-SNJABBAT.js.map → chunk-MGP7F65H.js.map} +1 -1
  22. package/dist/chunk-R3MC2AJZ.cjs +2247 -0
  23. package/dist/chunk-R3MC2AJZ.cjs.map +1 -0
  24. package/dist/chunk-SWML743U.js +625 -0
  25. package/dist/chunk-SWML743U.js.map +1 -0
  26. package/dist/chunk-SX3FQDKM.js +2238 -0
  27. package/dist/chunk-SX3FQDKM.js.map +1 -0
  28. package/dist/{chunk-A6N3RPEA.cjs → chunk-WTCXTXTV.cjs} +6 -6
  29. package/dist/{chunk-A6N3RPEA.cjs.map → chunk-WTCXTXTV.cjs.map} +1 -1
  30. package/dist/constants-Bi5uTRp5.d.cts +17 -0
  31. package/dist/constants-Bi5uTRp5.d.ts +17 -0
  32. package/dist/core/index.cjs +69 -29
  33. package/dist/core/index.d.cts +29 -47
  34. package/dist/core/index.d.ts +29 -47
  35. package/dist/core/index.js +3 -3
  36. package/dist/index.cjs +104 -35
  37. package/dist/index.d.cts +4 -2
  38. package/dist/index.d.ts +4 -2
  39. package/dist/index.js +6 -5
  40. package/dist/names/index.cjs +40 -0
  41. package/dist/names/index.cjs.map +1 -0
  42. package/dist/names/index.d.cts +36 -0
  43. package/dist/names/index.d.ts +36 -0
  44. package/dist/names/index.js +3 -0
  45. package/dist/names/index.js.map +1 -0
  46. package/dist/react/index.cjs +454 -397
  47. package/dist/react/index.cjs.map +1 -1
  48. package/dist/react/index.d.cts +17 -3
  49. package/dist/react/index.d.ts +17 -3
  50. package/dist/react/index.js +450 -394
  51. package/dist/react/index.js.map +1 -1
  52. package/dist/solfaces.cdn.global.js +2 -2
  53. package/dist/solfaces.cdn.global.js.map +1 -1
  54. package/dist/themes/index.cjs +29 -17
  55. package/dist/themes/index.d.cts +10 -7
  56. package/dist/themes/index.d.ts +10 -7
  57. package/dist/themes/index.js +1 -1
  58. package/dist/{traits-DAFZnXeS.d.cts → traits-QlWuxZDD.d.cts} +45 -1
  59. package/dist/{traits-DAFZnXeS.d.ts → traits-QlWuxZDD.d.ts} +45 -1
  60. package/dist/vanilla/index.cjs +20 -8
  61. package/dist/vanilla/index.cjs.map +1 -1
  62. package/dist/vanilla/index.d.cts +1 -1
  63. package/dist/vanilla/index.d.ts +1 -1
  64. package/dist/vanilla/index.js +17 -5
  65. package/dist/vanilla/index.js.map +1 -1
  66. package/package.json +22 -5
  67. package/python/solfaces.py +830 -237
  68. package/reference/integrations.md +166 -0
  69. package/reference/react.md +108 -0
  70. package/reference/themes.md +124 -0
  71. package/dist/chunk-2DIKGLXZ.cjs +0 -126
  72. package/dist/chunk-2DIKGLXZ.cjs.map +0 -1
  73. package/dist/chunk-CVFO7YHY.cjs +0 -97
  74. package/dist/chunk-CVFO7YHY.cjs.map +0 -1
  75. package/dist/chunk-H3SK3MNX.cjs +0 -409
  76. package/dist/chunk-H3SK3MNX.cjs.map +0 -1
  77. package/dist/chunk-KSGFMW33.js +0 -401
  78. package/dist/chunk-KSGFMW33.js.map +0 -1
  79. package/dist/chunk-LQWJRHGC.js +0 -86
  80. package/dist/chunk-LQWJRHGC.js.map +0 -1
  81. package/dist/chunk-RX6D5FGH.js.map +0 -1
  82. package/dist/chunk-VMNATBH3.cjs.map +0 -1
  83. package/dist/chunk-WURY4QGH.js +0 -117
  84. package/dist/chunk-WURY4QGH.js.map +0 -1
  85. package/skill.md +0 -463
@@ -0,0 +1,191 @@
1
+ 'use strict';
2
+
3
+ // src/themes/presets.ts
4
+ var defaultTheme = {};
5
+ var darkTheme = {
6
+ bgColors: [
7
+ "#1a1b23",
8
+ "#1e1428",
9
+ "#0a1e38",
10
+ "#1b2838",
11
+ "#201028",
12
+ "#141a28",
13
+ "#18122a",
14
+ "#1a2020",
15
+ "#221822",
16
+ "#1e1020"
17
+ ],
18
+ eyeWhiteColor: "#d8d0c8",
19
+ bgOpacity: 1,
20
+ bgRadius: 4,
21
+ border: { color: "#333340", width: 0.5 }
22
+ };
23
+ var lightTheme = {
24
+ bgColors: [
25
+ "#f5e8ea",
26
+ "#f0f0d8",
27
+ "#e4f0e6",
28
+ "#d8f0e8",
29
+ "#e0ece8",
30
+ "#dce8f0",
31
+ "#e0e4f0",
32
+ "#e0d8f0",
33
+ "#f0e0ee",
34
+ "#f0d8e4"
35
+ ],
36
+ bgOpacity: 1,
37
+ bgRadius: 8
38
+ };
39
+ var monoTheme = {
40
+ skinColors: [
41
+ "#e8e8e8",
42
+ "#d4d4d4",
43
+ "#c0c0c0",
44
+ "#a8a8a8",
45
+ "#909090",
46
+ "#787878",
47
+ "#606060",
48
+ "#505050",
49
+ "#404040",
50
+ "#303030"
51
+ ],
52
+ eyeColors: ["#333", "#555", "#777", "#999", "#bbb"],
53
+ hairColors: [
54
+ "#1a1a1a",
55
+ "#2a2a2a",
56
+ "#404040",
57
+ "#555",
58
+ "#707070",
59
+ "#888",
60
+ "#a0a0a0",
61
+ "#b8b8b8",
62
+ "#d0d0d0",
63
+ "#e0e0e0"
64
+ ],
65
+ bgColors: [
66
+ "#e8e0e0",
67
+ "#e0e0d0",
68
+ "#d8e0d8",
69
+ "#d0e0d8",
70
+ "#d8e0e0",
71
+ "#d0d8e0",
72
+ "#d4d4e0",
73
+ "#d4d0e0",
74
+ "#e0d8e0",
75
+ "#e0d0d8"
76
+ ],
77
+ mouthColor: "#666",
78
+ eyebrowColor: "#555",
79
+ accessoryColor: "#777",
80
+ eyeWhiteColor: "#f0f0f0",
81
+ bgOpacity: 0.5,
82
+ bgRadius: 4
83
+ };
84
+ var flatTheme = {
85
+ flat: true
86
+ };
87
+ var transparentTheme = {
88
+ flat: true,
89
+ bgOpacity: 0
90
+ };
91
+ var glassTheme = {
92
+ bgOpacity: 0.15,
93
+ bgRadius: 16,
94
+ _glass: true,
95
+ _blurRadius: 12,
96
+ _saturate: 1.8,
97
+ _tintOpacity: 0.12,
98
+ _tintColor: "rgba(255,255,255,1)",
99
+ _borderOpacity: 0.25,
100
+ _borderWidth: 1,
101
+ _borderColor: "rgba(255,255,255,0.25)",
102
+ _specularOpacity: 0.25,
103
+ _specularColor: "rgba(255,255,255,1)",
104
+ _specularEnd: 50,
105
+ _lightAngle: 135,
106
+ _rimIntensity: 0.08,
107
+ _shadow: "0 8px 32px rgba(0,0,0,0.12)"
108
+ };
109
+ var glassDarkTheme = {
110
+ bgOpacity: 0.2,
111
+ bgRadius: 16,
112
+ _glass: true,
113
+ _blurRadius: 16,
114
+ _saturate: 2,
115
+ _tintOpacity: 0.08,
116
+ _tintColor: "rgba(0,0,0,1)",
117
+ _borderOpacity: 0.15,
118
+ _borderWidth: 1,
119
+ _borderColor: "rgba(255,255,255,0.15)",
120
+ _specularOpacity: 0.15,
121
+ _specularColor: "rgba(255,255,255,1)",
122
+ _specularEnd: 40,
123
+ _lightAngle: 135,
124
+ _rimIntensity: 0.05,
125
+ _shadow: "0 8px 32px rgba(0,0,0,0.25)"
126
+ };
127
+ var pixelTheme = {
128
+ flat: true,
129
+ _pixel: true,
130
+ _pixelDensity: 16,
131
+ _pixelRounded: true,
132
+ _pixelOutline: true,
133
+ _pixelOutlineColor: "#222",
134
+ _pixelOutlineWidth: 2
135
+ };
136
+ var pixelRetroTheme = {
137
+ flat: true,
138
+ _pixel: true,
139
+ _pixelDensity: 12,
140
+ _pixelRounded: false,
141
+ _pixelOutline: true,
142
+ _pixelOutlineColor: "#000",
143
+ _pixelOutlineWidth: 2,
144
+ _pixelScanlines: true,
145
+ _pixelScanlineOpacity: 0.1,
146
+ _pixelScanlineSpacing: 2,
147
+ _pixelShadow: true,
148
+ _pixelShadowColor: "rgba(0,0,0,0.4)",
149
+ _pixelShadowOffset: 3
150
+ };
151
+ var pixelCleanTheme = {
152
+ flat: true,
153
+ _pixel: true,
154
+ _pixelDensity: 24,
155
+ _pixelRounded: true,
156
+ _pixelOutline: false
157
+ };
158
+ var PRESET_THEMES = {
159
+ default: defaultTheme,
160
+ dark: darkTheme,
161
+ light: lightTheme,
162
+ mono: monoTheme,
163
+ flat: flatTheme,
164
+ transparent: transparentTheme,
165
+ glass: glassTheme,
166
+ glassDark: glassDarkTheme,
167
+ pixel: pixelTheme,
168
+ pixelRetro: pixelRetroTheme,
169
+ pixelClean: pixelCleanTheme
170
+ };
171
+ function getPresetTheme(name, overrides) {
172
+ const base = PRESET_THEMES[name];
173
+ if (!base) return overrides ?? {};
174
+ return overrides ? { ...base, ...overrides } : base;
175
+ }
176
+
177
+ exports.PRESET_THEMES = PRESET_THEMES;
178
+ exports.darkTheme = darkTheme;
179
+ exports.defaultTheme = defaultTheme;
180
+ exports.flatTheme = flatTheme;
181
+ exports.getPresetTheme = getPresetTheme;
182
+ exports.glassDarkTheme = glassDarkTheme;
183
+ exports.glassTheme = glassTheme;
184
+ exports.lightTheme = lightTheme;
185
+ exports.monoTheme = monoTheme;
186
+ exports.pixelCleanTheme = pixelCleanTheme;
187
+ exports.pixelRetroTheme = pixelRetroTheme;
188
+ exports.pixelTheme = pixelTheme;
189
+ exports.transparentTheme = transparentTheme;
190
+ //# sourceMappingURL=chunk-6QRDULAO.cjs.map
191
+ //# sourceMappingURL=chunk-6QRDULAO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/themes/presets.ts"],"names":[],"mappings":"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","file":"chunk-6QRDULAO.cjs","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES v2 — Preset Themes\n// ═══════════════════════════════════════════════════════════════\n\nimport type { SolFaceTheme } from \"../core/traits\";\n\n// ─── Default (base look — gradients, no overrides) ─\n\nexport const defaultTheme: SolFaceTheme = {};\n\n// ─── Base Themes ────────────────────────────────\n\nexport const darkTheme: SolFaceTheme = {\n bgColors: [\"#1a1b23\", \"#1e1428\", \"#0a1e38\", \"#1b2838\", \"#201028\",\n \"#141a28\", \"#18122a\", \"#1a2020\", \"#221822\", \"#1e1020\"],\n eyeWhiteColor: \"#d8d0c8\",\n bgOpacity: 1,\n bgRadius: 4,\n border: { color: \"#333340\", width: 0.5 },\n};\n\nexport const lightTheme: SolFaceTheme = {\n bgColors: [\"#f5e8ea\", \"#f0f0d8\", \"#e4f0e6\", \"#d8f0e8\", \"#e0ece8\",\n \"#dce8f0\", \"#e0e4f0\", \"#e0d8f0\", \"#f0e0ee\", \"#f0d8e4\"],\n bgOpacity: 1,\n bgRadius: 8,\n};\n\nexport const monoTheme: SolFaceTheme = {\n skinColors: [\"#e8e8e8\", \"#d4d4d4\", \"#c0c0c0\", \"#a8a8a8\", \"#909090\",\n \"#787878\", \"#606060\", \"#505050\", \"#404040\", \"#303030\"],\n eyeColors: [\"#333\", \"#555\", \"#777\", \"#999\", \"#bbb\"],\n hairColors: [\"#1a1a1a\", \"#2a2a2a\", \"#404040\", \"#555\", \"#707070\",\n \"#888\", \"#a0a0a0\", \"#b8b8b8\", \"#d0d0d0\", \"#e0e0e0\"],\n bgColors: [\"#e8e0e0\", \"#e0e0d0\", \"#d8e0d8\", \"#d0e0d8\", \"#d8e0e0\",\n \"#d0d8e0\", \"#d4d4e0\", \"#d4d0e0\", \"#e0d8e0\", \"#e0d0d8\"],\n mouthColor: \"#666\",\n eyebrowColor: \"#555\",\n accessoryColor: \"#777\",\n eyeWhiteColor: \"#f0f0f0\",\n bgOpacity: 0.5,\n bgRadius: 4,\n};\n\nexport const flatTheme: SolFaceTheme = {\n flat: true,\n};\n\nexport const transparentTheme: SolFaceTheme = {\n flat: true,\n bgOpacity: 0,\n};\n\n// ─── React-Only: Liquid Glass ───────────────────\n\nexport const glassTheme: SolFaceTheme = {\n bgOpacity: 0.15,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 12,\n _saturate: 1.8,\n _tintOpacity: 0.12,\n _tintColor: \"rgba(255,255,255,1)\",\n _borderOpacity: 0.25,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.25)\",\n _specularOpacity: 0.25,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 50,\n _lightAngle: 135,\n _rimIntensity: 0.08,\n _shadow: \"0 8px 32px rgba(0,0,0,0.12)\",\n};\n\nexport const glassDarkTheme: SolFaceTheme = {\n bgOpacity: 0.2,\n bgRadius: 16,\n _glass: true,\n _blurRadius: 16,\n _saturate: 2.0,\n _tintOpacity: 0.08,\n _tintColor: \"rgba(0,0,0,1)\",\n _borderOpacity: 0.15,\n _borderWidth: 1,\n _borderColor: \"rgba(255,255,255,0.15)\",\n _specularOpacity: 0.15,\n _specularColor: \"rgba(255,255,255,1)\",\n _specularEnd: 40,\n _lightAngle: 135,\n _rimIntensity: 0.05,\n _shadow: \"0 8px 32px rgba(0,0,0,0.25)\",\n};\n\n// ─── React-Only: Pixel Art ──────────────────────\n\nexport const pixelTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 16,\n _pixelRounded: true,\n _pixelOutline: true,\n _pixelOutlineColor: \"#222\",\n _pixelOutlineWidth: 2,\n};\n\nexport const pixelRetroTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 12,\n _pixelRounded: false,\n _pixelOutline: true,\n _pixelOutlineColor: \"#000\",\n _pixelOutlineWidth: 2,\n _pixelScanlines: true,\n _pixelScanlineOpacity: 0.1,\n _pixelScanlineSpacing: 2,\n _pixelShadow: true,\n _pixelShadowColor: \"rgba(0,0,0,0.4)\",\n _pixelShadowOffset: 3,\n};\n\nexport const pixelCleanTheme: SolFaceTheme = {\n flat: true,\n _pixel: true,\n _pixelDensity: 24,\n _pixelRounded: true,\n _pixelOutline: false,\n};\n\n// ─── Theme Map ──────────────────────────────────\n\nexport const PRESET_THEMES: Record<string, SolFaceTheme> = {\n default: defaultTheme,\n dark: darkTheme,\n light: lightTheme,\n mono: monoTheme,\n flat: flatTheme,\n transparent: transparentTheme,\n glass: glassTheme,\n glassDark: glassDarkTheme,\n pixel: pixelTheme,\n pixelRetro: pixelRetroTheme,\n pixelClean: pixelCleanTheme,\n};\n\nexport function getPresetTheme(\n name: string,\n overrides?: Partial<SolFaceTheme>,\n): SolFaceTheme {\n const base = PRESET_THEMES[name];\n if (!base) return (overrides as SolFaceTheme) ?? {};\n return overrides ? { ...base, ...overrides } : base;\n}\n"]}
@@ -1,11 +1,12 @@
1
- import { renderSolFaceSVG, describeAppearance, agentAppearancePrompt } from './chunk-KSGFMW33.js';
2
- import { generateTraits, getTraitLabels, traitHash } from './chunk-WURY4QGH.js';
3
- import { getPresetTheme, PRESET_THEMES } from './chunk-LQWJRHGC.js';
1
+ import { describeAppearance, agentAppearancePrompt } from './chunk-CQWXUU7P.js';
2
+ import { renderSolFaceSVG, generateTraits, getTraitLabels, traitHash } from './chunk-SWML743U.js';
3
+ import { getPresetTheme, PRESET_THEMES } from './chunk-DRUSCLEF.js';
4
+ import { deriveName, deriveIdentity } from './chunk-SX3FQDKM.js';
4
5
 
5
6
  // src/agent/tools.ts
6
7
  var generateSolfaceSvg = {
7
8
  name: "generate_solface_svg",
8
- description: "Generate a deterministic SVG avatar for a Solana wallet address. Returns an SVG string that can be embedded in HTML, saved as a file, or converted to a data URI. The same wallet always produces the same face.",
9
+ description: "Generate a deterministic SVG avatar for a Solana wallet address. Returns an SVG string with gradient-rich rendering, skin-luminance-driven colors, and 10 accessory types. The same wallet always produces the same face. ~2.56 billion unique combinations.",
9
10
  parameters: {
10
11
  type: "object",
11
12
  properties: {
@@ -15,16 +16,21 @@ var generateSolfaceSvg = {
15
16
  },
16
17
  size: {
17
18
  type: "number",
18
- description: "SVG width/height in pixels. Default: 64"
19
+ description: "SVG width/height in pixels. Default: 64. Sizes >= 48 use full detail (gradients, specular highlights, cheek blush)."
19
20
  },
20
21
  theme: {
21
22
  type: "string",
22
- description: "Preset theme name: solana, dark, light, mono, neon, jupiter, phantom, circle",
23
- enum: ["solana", "dark", "light", "mono", "neon", "jupiter", "phantom", "circle"]
23
+ description: "Preset theme name. 'flat' and 'transparent' work everywhere. 'glass', 'glassDark', 'pixel', 'pixelRetro', 'pixelClean' are React-only.",
24
+ enum: ["default", "dark", "light", "mono", "flat", "transparent", "glass", "glassDark", "pixel", "pixelRetro", "pixelClean"]
24
25
  },
25
26
  enableBlink: {
26
27
  type: "boolean",
27
28
  description: "Enable CSS blink animation on the eyes. Default: false"
29
+ },
30
+ detail: {
31
+ type: "string",
32
+ description: "Detail level: 'full' (gradients, cheeks, specular), 'simplified' (flat shapes), 'auto' (full if size >= 48). Default: auto",
33
+ enum: ["full", "simplified", "auto"]
28
34
  }
29
35
  },
30
36
  required: ["wallet"]
@@ -33,14 +39,15 @@ var generateSolfaceSvg = {
33
39
  const wallet = params.wallet;
34
40
  const size = params.size ?? 64;
35
41
  const enableBlink = params.enableBlink ?? false;
42
+ const detail = params.detail ?? "auto";
36
43
  const themeName = params.theme;
37
44
  const theme = themeName ? getPresetTheme(themeName) : void 0;
38
- return renderSolFaceSVG(wallet, { size, theme, enableBlink });
45
+ return renderSolFaceSVG(wallet, { size, theme, enableBlink, detail });
39
46
  }
40
47
  };
41
48
  var describeSolface = {
42
49
  name: "describe_solface",
43
- description: "Generate a natural language description of a wallet's SolFace avatar. Useful for alt text, profile bios, system prompts, and accessibility.",
50
+ description: "Generate a natural language description of a wallet's SolFace avatar. Useful for alt text, profile bios, system prompts, and accessibility. Describes squircle face, skin tone, eye style/color, hair, accessories, and expression.",
44
51
  parameters: {
45
52
  type: "object",
46
53
  properties: {
@@ -66,10 +73,12 @@ var describeSolface = {
66
73
  required: ["wallet"]
67
74
  },
68
75
  handler(params) {
69
- return describeAppearance(params.wallet, {
76
+ const wallet = params.wallet;
77
+ const name = params.name ?? deriveName(wallet, "display");
78
+ return describeAppearance(wallet, {
70
79
  format: params.format ?? "paragraph",
71
80
  perspective: params.perspective ?? "third",
72
- name: params.name
81
+ name
73
82
  });
74
83
  }
75
84
  };
@@ -91,7 +100,8 @@ var getSolfaceTraits = {
91
100
  const traits = generateTraits(wallet);
92
101
  const labels = getTraitLabels(traits);
93
102
  const hash = traitHash(wallet);
94
- return { traits, labels, hash };
103
+ const name = deriveName(wallet, "display");
104
+ return { traits, labels, hash, name };
95
105
  }
96
106
  };
97
107
  var getAgentIdentity = {
@@ -112,25 +122,27 @@ var getAgentIdentity = {
112
122
  required: ["wallet"]
113
123
  },
114
124
  handler(params) {
115
- return agentAppearancePrompt(
116
- params.wallet,
117
- params.agentName
118
- );
125
+ const wallet = params.wallet;
126
+ const agentName = params.agentName ?? deriveName(wallet, "display");
127
+ return agentAppearancePrompt(wallet, agentName);
119
128
  }
120
129
  };
121
130
  var THEME_DESCRIPTIONS = {
122
- solana: "Vibrant Solana brand colors (#14F195, #9945FF)",
123
- dark: "Dark backgrounds with muted tones",
124
- light: "Soft pastel backgrounds",
131
+ default: "Base look with gradient-rich rendering \u2014 no overrides",
132
+ dark: "Dark backgrounds with muted tones and subtle border",
133
+ light: "Soft pastel backgrounds with rounded corners",
125
134
  mono: "Full grayscale \u2014 all colors replaced with grays",
126
- neon: "Cyberpunk high-contrast with neon accents and green border",
127
- jupiter: "Jupiter aggregator dark blue palette with subtle border",
128
- phantom: "Phantom wallet purple tones with subtle border",
129
- circle: "Full circular border-radius (999px) for round avatars"
135
+ flat: "Disables all gradients \u2014 uses flat fill colors only",
136
+ transparent: "Transparent background with flat rendering",
137
+ glass: "Liquid glass effect with backdrop blur and specular highlights (React-only)",
138
+ glassDark: "Dark variant of liquid glass with deeper blur (React-only)",
139
+ pixel: "Pixel art mode at 16px density with rounded corners (React-only)",
140
+ pixelRetro: "Retro pixel art with scanlines and drop shadow (React-only)",
141
+ pixelClean: "Clean pixel art at 24px density (React-only)"
130
142
  };
131
143
  var listSolfaceThemes = {
132
144
  name: "list_solface_themes",
133
- description: "List all available SolFace preset themes with descriptions. Themes control colors, borders, backgrounds, and border-radius of generated avatars.",
145
+ description: "List all available SolFace preset themes with descriptions. Themes control colors, gradients, borders, and rendering modes. Some themes (glass, pixel) are React-only.",
134
146
  parameters: {
135
147
  type: "object",
136
148
  properties: {}
@@ -138,16 +150,45 @@ var listSolfaceThemes = {
138
150
  handler() {
139
151
  return Object.keys(PRESET_THEMES).map((name) => ({
140
152
  name,
141
- description: THEME_DESCRIPTIONS[name] ?? ""
153
+ description: THEME_DESCRIPTIONS[name] ?? "",
154
+ reactOnly: name.startsWith("glass") || name.startsWith("pixel")
142
155
  }));
143
156
  }
144
157
  };
158
+ var deriveSolname = {
159
+ name: "derive_solname",
160
+ description: "Derive a deterministic name from a Solana wallet address using SHA-256 hashing. Returns human-friendly names like 'SunnyIcon'. Same wallet always produces the same name. ~1M display name combinations, ~65.5B unique tag combinations.",
161
+ parameters: {
162
+ type: "object",
163
+ properties: {
164
+ wallet: {
165
+ type: "string",
166
+ description: "Solana wallet address (base58 public key)"
167
+ },
168
+ format: {
169
+ type: "string",
170
+ description: "Name format: 'short' (adjective only), 'display' (adj+noun, default), 'tag' (adj+noun+#hex, unique), 'full' (adj+noun-adj+noun). Omit for full identity bundle.",
171
+ enum: ["short", "display", "tag", "full"]
172
+ }
173
+ },
174
+ required: ["wallet"]
175
+ },
176
+ handler(params) {
177
+ const wallet = params.wallet;
178
+ const format = params.format;
179
+ if (format) {
180
+ return deriveName(wallet, format);
181
+ }
182
+ return deriveIdentity(wallet);
183
+ }
184
+ };
145
185
  var SOLFACE_TOOLS = [
146
186
  generateSolfaceSvg,
147
187
  describeSolface,
148
188
  getSolfaceTraits,
149
189
  getAgentIdentity,
150
- listSolfaceThemes
190
+ listSolfaceThemes,
191
+ deriveSolname
151
192
  ];
152
193
 
153
194
  // src/agent/index.ts
@@ -207,5 +248,5 @@ function allToolsVercelAI() {
207
248
  }
208
249
 
209
250
  export { SOLFACE_TOOLS, allToolsAnthropic, allToolsMCP, allToolsOpenAI, allToolsVercelAI, handleToolCall, toAnthropic, toMCP, toOpenAI, toVercelAI };
210
- //# sourceMappingURL=chunk-RX6D5FGH.js.map
211
- //# sourceMappingURL=chunk-RX6D5FGH.js.map
251
+ //# sourceMappingURL=chunk-77SPWQU5.js.map
252
+ //# sourceMappingURL=chunk-77SPWQU5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/tools.ts","../src/agent/index.ts"],"names":[],"mappings":";;;;;;AAsCA,IAAM,kBAAA,GAAkC;AAAA,EACtC,IAAA,EAAM,sBAAA;AAAA,EACN,WAAA,EACE,8PAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,wIAAA;AAAA,QACF,IAAA,EAAM,CAAC,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,aAAA,EAAe,OAAA,EAAS,WAAA,EAAa,OAAA,EAAS,YAAA,EAAc,YAAY;AAAA,OAC7H;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,SAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa,4HAAA;AAAA,QACb,IAAA,EAAM,CAAC,MAAA,EAAQ,YAAA,EAAc,MAAM;AAAA;AACrC,KACF;AAAA,IACA,QAAA,EAAU,CAAC,QAAQ;AAAA,GACrB;AAAA,EACA,QAAQ,MAAA,EAAQ;AACd,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,MAAM,IAAA,GAAQ,OAAO,IAAA,IAAmB,EAAA;AACxC,IAAA,MAAM,WAAA,GAAe,OAAO,WAAA,IAA2B,KAAA;AACvD,IAAA,MAAM,MAAA,GAAU,OAAO,MAAA,IAA6C,MAAA;AACpE,IAAA,MAAM,YAAY,MAAA,CAAO,KAAA;AACzB,IAAA,MAAM,KAAA,GAAkC,SAAA,GACpC,cAAA,CAAe,SAAS,CAAA,GACxB,MAAA;AAEJ,IAAA,OAAO,iBAAiB,MAAA,EAAQ,EAAE,MAAM,KAAA,EAAO,WAAA,EAAa,QAAQ,CAAA;AAAA,EACtE;AACF,CAAA;AAIA,IAAM,eAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,kBAAA;AAAA,EACN,WAAA,EACE,qOAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,0HAAA;AAAA,QACF,IAAA,EAAM,CAAC,WAAA,EAAa,YAAA,EAAc,SAAS;AAAA,OAC7C;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,iIAAA;AAAA,QACF,IAAA,EAAM,CAAC,OAAA,EAAS,OAAO;AAAA,OACzB;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,QAAA,EAAU,CAAC,QAAQ;AAAA,GACrB;AAAA,EACA,QAAQ,MAAA,EAAQ;AACd,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,MAAM,IAAA,GAAQ,MAAA,CAAO,IAAA,IAA+B,UAAA,CAAW,QAAQ,SAAS,CAAA;AAChF,IAAA,OAAO,mBAAmB,MAAA,EAAQ;AAAA,MAChC,MAAA,EAAS,OAAO,MAAA,IAAqD,WAAA;AAAA,MACrE,WAAA,EAAc,OAAO,WAAA,IAAqC,OAAA;AAAA,MAC1D;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAA;AAIA,IAAM,gBAAA,GAAgC;AAAA,EACpC,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EACE,4LAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,QAAA,EAAU,CAAC,QAAQ;AAAA,GACrB;AAAA,EACA,QAAQ,MAAA,EAAQ;AACd,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,IAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,IAAA,MAAM,IAAA,GAAO,UAAU,MAAM,CAAA;AAC7B,IAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,EAAQ,SAAS,CAAA;AACzC,IAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAK;AAAA,EACtC;AACF,CAAA;AAIA,IAAM,gBAAA,GAAgC;AAAA,EACpC,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EACE,8NAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,QAAA,EAAU,CAAC,QAAQ;AAAA,GACrB;AAAA,EACA,QAAQ,MAAA,EAAQ;AACd,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,MAAM,SAAA,GAAa,MAAA,CAAO,SAAA,IAAoC,UAAA,CAAW,QAAQ,SAAS,CAAA;AAC1F,IAAA,OAAO,qBAAA,CAAsB,QAAQ,SAAS,CAAA;AAAA,EAChD;AACF,CAAA;AAIA,IAAM,kBAAA,GAA6C;AAAA,EACjD,OAAA,EAAS,4DAAA;AAAA,EACT,IAAA,EAAM,qDAAA;AAAA,EACN,KAAA,EAAO,8CAAA;AAAA,EACP,IAAA,EAAM,sDAAA;AAAA,EACN,IAAA,EAAM,0DAAA;AAAA,EACN,WAAA,EAAa,4CAAA;AAAA,EACb,KAAA,EAAO,6EAAA;AAAA,EACP,SAAA,EAAW,4DAAA;AAAA,EACX,KAAA,EAAO,kEAAA;AAAA,EACP,UAAA,EAAY,6DAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEA,IAAM,iBAAA,GAAiC;AAAA,EACrC,IAAA,EAAM,qBAAA;AAAA,EACN,WAAA,EACE,wKAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,YAAY;AAAC,GACf;AAAA,EACA,OAAA,GAAU;AACR,IAAA,OAAO,OAAO,IAAA,CAAK,aAAa,CAAA,CAAE,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MAC/C,IAAA;AAAA,MACA,WAAA,EAAa,kBAAA,CAAmB,IAAI,CAAA,IAAK,EAAA;AAAA,MACzC,WAAW,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,IAAK,IAAA,CAAK,WAAW,OAAO;AAAA,KAChE,CAAE,CAAA;AAAA,EACJ;AACF,CAAA;AAIA,IAAM,aAAA,GAA6B;AAAA,EACjC,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EACE,0OAAA;AAAA,EACF,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,iKAAA;AAAA,QACF,IAAA,EAAM,CAAC,OAAA,EAAS,SAAA,EAAW,OAAO,MAAM;AAAA;AAC1C,KACF;AAAA,IACA,QAAA,EAAU,CAAC,QAAQ;AAAA,GACrB;AAAA,EACA,QAAQ,MAAA,EAAQ;AACd,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,OAAO,UAAA,CAAW,QAAQ,MAAM,CAAA;AAAA,IAClC;AACA,IAAA,OAAO,eAAe,MAAM,CAAA;AAAA,EAC9B;AACF,CAAA;AAIO,IAAM,aAAA,GAA+B;AAAA,EAC1C,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF;;;ACxOA,eAAsB,cAAA,CACpB,MACA,MAAA,EACkB;AAClB,EAAA,MAAM,OAAO,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,IAAI,CAAA;AACtD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,IAAI,iBAAiB,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAAA,EAC9G;AACA,EAAA,OAAO,IAAA,CAAK,QAAQ,MAAM,CAAA;AAC5B;AAWO,SAAS,MAAM,IAAA,EAA4B;AAChD,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,aAAa,IAAA,CAAK;AAAA,GACpB;AACF;AAEO,SAAS,WAAA,GAAyB;AACvC,EAAA,OAAO,aAAA,CAAc,IAAI,KAAK,CAAA;AAChC;AAcO,SAAS,SAAS,IAAA,EAA+B;AACtD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,UAAA;AAAA,IACN,QAAA,EAAU;AAAA,MACR,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,aAAa,IAAA,CAAK,WAAA;AAAA,MAClB,YAAY,IAAA,CAAK;AAAA;AACnB,GACF;AACF;AAEO,SAAS,cAAA,GAA+B;AAC7C,EAAA,OAAO,aAAA,CAAc,IAAI,QAAQ,CAAA;AACnC;AAWO,SAAS,YAAY,IAAA,EAAkC;AAC5D,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,cAAc,IAAA,CAAK;AAAA,GACrB;AACF;AAEO,SAAS,iBAAA,GAAqC;AACnD,EAAA,OAAO,aAAA,CAAc,IAAI,WAAW,CAAA;AACtC;AAWO,SAAS,WAAW,IAAA,EAAiC;AAC1D,EAAA,OAAO;AAAA,IACL,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,YAAY,IAAA,CAAK,UAAA;AAAA,IACjB,OAAA,EAAS,OAAO,MAAA,KAAW,IAAA,CAAK,QAAQ,MAAM;AAAA,GAChD;AACF;AAEO,SAAS,gBAAA,GAAiD;AAC/D,EAAA,MAAM,SAAuC,EAAC;AAC9C,EAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,IAAA,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,GAAI,UAAA,CAAW,IAAI,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,MAAA;AACT","file":"chunk-77SPWQU5.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES v2 — AI Agent Tool Definitions\n// Canonical, framework-agnostic tool schemas with handlers.\n// ═══════════════════════════════════════════════════════════════\n\nimport { renderSolFaceSVG } from \"../core/renderer\";\nimport { describeAppearance, agentAppearancePrompt } from \"../core/describe\";\nimport {\n generateTraits,\n getTraitLabels,\n traitHash,\n} from \"../core/traits\";\nimport { deriveName, deriveIdentity } from \"../names\";\nimport type { NameFormat } from \"../names\";\nimport { PRESET_THEMES, getPresetTheme } from \"../themes/presets\";\nimport type { SolFaceTheme } from \"../core/traits\";\n\n// ─── Types ───────────────────────────────────────\n\nexport interface JSONSchema {\n type: string;\n properties?: Record<string, JSONSchema & { description?: string; enum?: string[] }>;\n required?: string[];\n items?: JSONSchema;\n description?: string;\n enum?: string[];\n default?: unknown;\n}\n\nexport interface SolFaceTool {\n name: string;\n description: string;\n parameters: JSONSchema;\n handler: (params: Record<string, unknown>) => unknown;\n}\n\n// ─── Tool: generate_solface_svg ──────────────────\n\nconst generateSolfaceSvg: SolFaceTool = {\n name: \"generate_solface_svg\",\n description:\n \"Generate a deterministic SVG avatar for a Solana wallet address. Returns an SVG string with gradient-rich rendering, skin-luminance-driven colors, and 10 accessory types. The same wallet always produces the same face. ~2.56 billion unique combinations.\",\n parameters: {\n type: \"object\",\n properties: {\n wallet: {\n type: \"string\",\n description: \"Solana wallet address (base58 public key)\",\n },\n size: {\n type: \"number\",\n description: \"SVG width/height in pixels. Default: 64. Sizes >= 48 use full detail (gradients, specular highlights, cheek blush).\",\n },\n theme: {\n type: \"string\",\n description:\n \"Preset theme name. 'flat' and 'transparent' work everywhere. 'glass', 'glassDark', 'pixel', 'pixelRetro', 'pixelClean' are React-only.\",\n enum: [\"default\", \"dark\", \"light\", \"mono\", \"flat\", \"transparent\", \"glass\", \"glassDark\", \"pixel\", \"pixelRetro\", \"pixelClean\"],\n },\n enableBlink: {\n type: \"boolean\",\n description: \"Enable CSS blink animation on the eyes. Default: false\",\n },\n detail: {\n type: \"string\",\n description: \"Detail level: 'full' (gradients, cheeks, specular), 'simplified' (flat shapes), 'auto' (full if size >= 48). Default: auto\",\n enum: [\"full\", \"simplified\", \"auto\"],\n },\n },\n required: [\"wallet\"],\n },\n handler(params) {\n const wallet = params.wallet as string;\n const size = (params.size as number) ?? 64;\n const enableBlink = (params.enableBlink as boolean) ?? false;\n const detail = (params.detail as \"full\" | \"simplified\" | \"auto\") ?? \"auto\";\n const themeName = params.theme as string | undefined;\n const theme: SolFaceTheme | undefined = themeName\n ? getPresetTheme(themeName)\n : undefined;\n\n return renderSolFaceSVG(wallet, { size, theme, enableBlink, detail });\n },\n};\n\n// ─── Tool: describe_solface ──────────────────────\n\nconst describeSolface: SolFaceTool = {\n name: \"describe_solface\",\n description:\n \"Generate a natural language description of a wallet's SolFace avatar. Useful for alt text, profile bios, system prompts, and accessibility. Describes squircle face, skin tone, eye style/color, hair, accessories, and expression.\",\n parameters: {\n type: \"object\",\n properties: {\n wallet: {\n type: \"string\",\n description: \"Solana wallet address (base58 public key)\",\n },\n format: {\n type: \"string\",\n description:\n \"Output format: paragraph (flowing text), structured (labeled lines), compact (short comma-separated). Default: paragraph\",\n enum: [\"paragraph\", \"structured\", \"compact\"],\n },\n perspective: {\n type: \"string\",\n description:\n 'Narrative perspective: \"first\" for self-description (\"I have...\"), \"third\" for external (\"This SolFace has...\"). Default: third',\n enum: [\"first\", \"third\"],\n },\n name: {\n type: \"string\",\n description:\n 'Optional name to use instead of \"This SolFace\" or \"I\". E.g. \"Atlas\"',\n },\n },\n required: [\"wallet\"],\n },\n handler(params) {\n const wallet = params.wallet as string;\n const name = (params.name as string | undefined) ?? deriveName(wallet, \"display\");\n return describeAppearance(wallet, {\n format: (params.format as \"paragraph\" | \"structured\" | \"compact\") ?? \"paragraph\",\n perspective: (params.perspective as \"first\" | \"third\") ?? \"third\",\n name,\n });\n },\n};\n\n// ─── Tool: get_solface_traits ────────────────────\n\nconst getSolfaceTraits: SolFaceTool = {\n name: \"get_solface_traits\",\n description:\n \"Get the raw numeric trait values, human-readable labels, and deterministic hash for a wallet's SolFace avatar. Returns structured data useful for programmatic decisions about appearance.\",\n parameters: {\n type: \"object\",\n properties: {\n wallet: {\n type: \"string\",\n description: \"Solana wallet address (base58 public key)\",\n },\n },\n required: [\"wallet\"],\n },\n handler(params) {\n const wallet = params.wallet as string;\n const traits = generateTraits(wallet);\n const labels = getTraitLabels(traits);\n const hash = traitHash(wallet);\n const name = deriveName(wallet, \"display\");\n return { traits, labels, hash, name };\n },\n};\n\n// ─── Tool: get_agent_identity ────────────────────\n\nconst getAgentIdentity: SolFaceTool = {\n name: \"get_agent_identity\",\n description:\n \"Generate a system prompt snippet that gives an AI agent a visual identity based on its Solana wallet. The snippet describes the agent's appearance in first person and explains the deterministic nature of SolFace avatars.\",\n parameters: {\n type: \"object\",\n properties: {\n wallet: {\n type: \"string\",\n description: \"The agent's Solana wallet address (base58 public key)\",\n },\n agentName: {\n type: \"string\",\n description: 'Optional agent name to personalize the description. E.g. \"Atlas\"',\n },\n },\n required: [\"wallet\"],\n },\n handler(params) {\n const wallet = params.wallet as string;\n const agentName = (params.agentName as string | undefined) ?? deriveName(wallet, \"display\");\n return agentAppearancePrompt(wallet, agentName);\n },\n};\n\n// ─── Tool: list_solface_themes ───────────────────\n\nconst THEME_DESCRIPTIONS: Record<string, string> = {\n default: \"Base look with gradient-rich rendering — no overrides\",\n dark: \"Dark backgrounds with muted tones and subtle border\",\n light: \"Soft pastel backgrounds with rounded corners\",\n mono: \"Full grayscale — all colors replaced with grays\",\n flat: \"Disables all gradients — uses flat fill colors only\",\n transparent: \"Transparent background with flat rendering\",\n glass: \"Liquid glass effect with backdrop blur and specular highlights (React-only)\",\n glassDark: \"Dark variant of liquid glass with deeper blur (React-only)\",\n pixel: \"Pixel art mode at 16px density with rounded corners (React-only)\",\n pixelRetro: \"Retro pixel art with scanlines and drop shadow (React-only)\",\n pixelClean: \"Clean pixel art at 24px density (React-only)\",\n};\n\nconst listSolfaceThemes: SolFaceTool = {\n name: \"list_solface_themes\",\n description:\n \"List all available SolFace preset themes with descriptions. Themes control colors, gradients, borders, and rendering modes. Some themes (glass, pixel) are React-only.\",\n parameters: {\n type: \"object\",\n properties: {},\n },\n handler() {\n return Object.keys(PRESET_THEMES).map((name) => ({\n name,\n description: THEME_DESCRIPTIONS[name] ?? \"\",\n reactOnly: name.startsWith(\"glass\") || name.startsWith(\"pixel\"),\n }));\n },\n};\n\n// ─── Tool: derive_solname ────────────────────────\n\nconst deriveSolname: SolFaceTool = {\n name: \"derive_solname\",\n description:\n \"Derive a deterministic name from a Solana wallet address using SHA-256 hashing. Returns human-friendly names like 'SunnyIcon'. Same wallet always produces the same name. ~1M display name combinations, ~65.5B unique tag combinations.\",\n parameters: {\n type: \"object\",\n properties: {\n wallet: {\n type: \"string\",\n description: \"Solana wallet address (base58 public key)\",\n },\n format: {\n type: \"string\",\n description:\n \"Name format: 'short' (adjective only), 'display' (adj+noun, default), 'tag' (adj+noun+#hex, unique), 'full' (adj+noun-adj+noun). Omit for full identity bundle.\",\n enum: [\"short\", \"display\", \"tag\", \"full\"],\n },\n },\n required: [\"wallet\"],\n },\n handler(params) {\n const wallet = params.wallet as string;\n const format = params.format as NameFormat | undefined;\n if (format) {\n return deriveName(wallet, format);\n }\n return deriveIdentity(wallet);\n },\n};\n\n// ─── Export All Tools ────────────────────────────\n\nexport const SOLFACE_TOOLS: SolFaceTool[] = [\n generateSolfaceSvg,\n describeSolface,\n getSolfaceTraits,\n getAgentIdentity,\n listSolfaceThemes,\n deriveSolname,\n];\n","// ═══════════════════════════════════════════════════════════════\n// SOLFACES — Agent Integration Barrel + Format Adapters\n// Convert SolFace tools to any AI agent framework format.\n// ═══════════════════════════════════════════════════════════════\n\nexport { SOLFACE_TOOLS } from \"./tools\";\nexport type { SolFaceTool, JSONSchema } from \"./tools\";\n\nimport { SOLFACE_TOOLS } from \"./tools\";\nimport type { SolFaceTool, JSONSchema } from \"./tools\";\n\n// ─── Unified Dispatcher ─────────────────────────\n\n/**\n * Handle a tool call by name. Works as a universal dispatcher for\n * any framework — just pass the tool name and parameters.\n *\n * @example\n * ```ts\n * const svg = await handleToolCall(\"generate_solface_svg\", {\n * wallet: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"\n * });\n * ```\n */\nexport async function handleToolCall(\n name: string,\n params: Record<string, unknown>,\n): Promise<unknown> {\n const tool = SOLFACE_TOOLS.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Unknown SolFace tool: \"${name}\". Available: ${SOLFACE_TOOLS.map((t) => t.name).join(\", \")}`);\n }\n return tool.handler(params);\n}\n\n// ─── MCP Format ─────────────────────────────────\n// Model Context Protocol (Claude Code, Cursor, Windsurf)\n\nexport interface MCPTool {\n name: string;\n description: string;\n inputSchema: JSONSchema;\n}\n\nexport function toMCP(tool: SolFaceTool): MCPTool {\n return {\n name: tool.name,\n description: tool.description,\n inputSchema: tool.parameters,\n };\n}\n\nexport function allToolsMCP(): MCPTool[] {\n return SOLFACE_TOOLS.map(toMCP);\n}\n\n// ─── OpenAI Format ──────────────────────────────\n// OpenAI function calling / GPT Actions\n\nexport interface OpenAITool {\n type: \"function\";\n function: {\n name: string;\n description: string;\n parameters: JSONSchema;\n };\n}\n\nexport function toOpenAI(tool: SolFaceTool): OpenAITool {\n return {\n type: \"function\",\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n };\n}\n\nexport function allToolsOpenAI(): OpenAITool[] {\n return SOLFACE_TOOLS.map(toOpenAI);\n}\n\n// ─── Anthropic Format ───────────────────────────\n// Anthropic tool use (Claude API)\n\nexport interface AnthropicTool {\n name: string;\n description: string;\n input_schema: JSONSchema;\n}\n\nexport function toAnthropic(tool: SolFaceTool): AnthropicTool {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n };\n}\n\nexport function allToolsAnthropic(): AnthropicTool[] {\n return SOLFACE_TOOLS.map(toAnthropic);\n}\n\n// ─── Vercel AI SDK Format ───────────────────────\n// For use with Vercel AI SDK's `tool()` helper\n\nexport interface VercelAITool {\n description: string;\n parameters: JSONSchema;\n execute: (params: Record<string, unknown>) => Promise<unknown>;\n}\n\nexport function toVercelAI(tool: SolFaceTool): VercelAITool {\n return {\n description: tool.description,\n parameters: tool.parameters,\n execute: async (params) => tool.handler(params),\n };\n}\n\nexport function allToolsVercelAI(): Record<string, VercelAITool> {\n const result: Record<string, VercelAITool> = {};\n for (const tool of SOLFACE_TOOLS) {\n result[tool.name] = toVercelAI(tool);\n }\n return result;\n}\n"]}