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.
- package/README.md +489 -97
- package/SKILL.md +171 -0
- package/dist/agent/index.cjs +15 -14
- package/dist/agent/index.js +5 -4
- package/dist/agent/mcp-server.cjs +2956 -287
- package/dist/chunk-6QRDULAO.cjs +191 -0
- package/dist/chunk-6QRDULAO.cjs.map +1 -0
- package/dist/{chunk-RX6D5FGH.js → chunk-77SPWQU5.js} +69 -28
- package/dist/chunk-77SPWQU5.js.map +1 -0
- package/dist/chunk-CQWXUU7P.js +239 -0
- package/dist/chunk-CQWXUU7P.js.map +1 -0
- package/dist/chunk-CXRVPOTI.cjs +244 -0
- package/dist/chunk-CXRVPOTI.cjs.map +1 -0
- package/dist/chunk-DRUSCLEF.js +177 -0
- package/dist/chunk-DRUSCLEF.js.map +1 -0
- package/dist/{chunk-VMNATBH3.cjs → chunk-F244Q4KC.cjs} +74 -33
- package/dist/chunk-F244Q4KC.cjs.map +1 -0
- package/dist/chunk-HVPGR6G5.cjs +647 -0
- package/dist/chunk-HVPGR6G5.cjs.map +1 -0
- package/dist/{chunk-SNJABBAT.js → chunk-MGP7F65H.js} +3 -3
- package/dist/{chunk-SNJABBAT.js.map → chunk-MGP7F65H.js.map} +1 -1
- package/dist/chunk-R3MC2AJZ.cjs +2247 -0
- package/dist/chunk-R3MC2AJZ.cjs.map +1 -0
- package/dist/chunk-SWML743U.js +625 -0
- package/dist/chunk-SWML743U.js.map +1 -0
- package/dist/chunk-SX3FQDKM.js +2238 -0
- package/dist/chunk-SX3FQDKM.js.map +1 -0
- package/dist/{chunk-A6N3RPEA.cjs → chunk-WTCXTXTV.cjs} +6 -6
- package/dist/{chunk-A6N3RPEA.cjs.map → chunk-WTCXTXTV.cjs.map} +1 -1
- package/dist/constants-Bi5uTRp5.d.cts +17 -0
- package/dist/constants-Bi5uTRp5.d.ts +17 -0
- package/dist/core/index.cjs +69 -29
- package/dist/core/index.d.cts +29 -47
- package/dist/core/index.d.ts +29 -47
- package/dist/core/index.js +3 -3
- package/dist/index.cjs +104 -35
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +6 -5
- package/dist/names/index.cjs +40 -0
- package/dist/names/index.cjs.map +1 -0
- package/dist/names/index.d.cts +36 -0
- package/dist/names/index.d.ts +36 -0
- package/dist/names/index.js +3 -0
- package/dist/names/index.js.map +1 -0
- package/dist/react/index.cjs +454 -397
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +17 -3
- package/dist/react/index.d.ts +17 -3
- package/dist/react/index.js +450 -394
- package/dist/react/index.js.map +1 -1
- package/dist/solfaces.cdn.global.js +2 -2
- package/dist/solfaces.cdn.global.js.map +1 -1
- package/dist/themes/index.cjs +29 -17
- package/dist/themes/index.d.cts +10 -7
- package/dist/themes/index.d.ts +10 -7
- package/dist/themes/index.js +1 -1
- package/dist/{traits-DAFZnXeS.d.cts → traits-QlWuxZDD.d.cts} +45 -1
- package/dist/{traits-DAFZnXeS.d.ts → traits-QlWuxZDD.d.ts} +45 -1
- package/dist/vanilla/index.cjs +20 -8
- package/dist/vanilla/index.cjs.map +1 -1
- package/dist/vanilla/index.d.cts +1 -1
- package/dist/vanilla/index.d.ts +1 -1
- package/dist/vanilla/index.js +17 -5
- package/dist/vanilla/index.js.map +1 -1
- package/package.json +22 -5
- package/python/solfaces.py +830 -237
- package/reference/integrations.md +166 -0
- package/reference/react.md +108 -0
- package/reference/themes.md +124 -0
- package/dist/chunk-2DIKGLXZ.cjs +0 -126
- package/dist/chunk-2DIKGLXZ.cjs.map +0 -1
- package/dist/chunk-CVFO7YHY.cjs +0 -97
- package/dist/chunk-CVFO7YHY.cjs.map +0 -1
- package/dist/chunk-H3SK3MNX.cjs +0 -409
- package/dist/chunk-H3SK3MNX.cjs.map +0 -1
- package/dist/chunk-KSGFMW33.js +0 -401
- package/dist/chunk-KSGFMW33.js.map +0 -1
- package/dist/chunk-LQWJRHGC.js +0 -86
- package/dist/chunk-LQWJRHGC.js.map +0 -1
- package/dist/chunk-RX6D5FGH.js.map +0 -1
- package/dist/chunk-VMNATBH3.cjs.map +0 -1
- package/dist/chunk-WURY4QGH.js +0 -117
- package/dist/chunk-WURY4QGH.js.map +0 -1
- 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 {
|
|
2
|
-
import { generateTraits, getTraitLabels, traitHash } from './chunk-
|
|
3
|
-
import { getPresetTheme, PRESET_THEMES } from './chunk-
|
|
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
|
|
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
|
|
23
|
-
enum: ["
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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,
|
|
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-
|
|
211
|
-
//# sourceMappingURL=chunk-
|
|
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":"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","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"]}
|