solfaces 2.1.2 → 2.3.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 +61 -35
- package/SKILL.md +4 -5
- package/dist/agent/index.cjs +14 -15
- package/dist/agent/index.js +4 -5
- package/dist/agent/mcp-server.cjs +333 -339
- package/dist/{chunk-5DT27HMT.js → chunk-2KW35VRI.js} +3 -3
- package/dist/{chunk-5DT27HMT.js.map → chunk-2KW35VRI.js.map} +1 -1
- package/dist/{chunk-4YFZ4W2Y.cjs → chunk-BI3GHRKQ.cjs} +22 -23
- package/dist/chunk-BI3GHRKQ.cjs.map +1 -0
- package/dist/{chunk-DRUSCLEF.js → chunk-MYUSB4LA.js} +28 -8
- package/dist/chunk-MYUSB4LA.js.map +1 -0
- package/dist/{chunk-3CE7Q44S.js → chunk-N5GDLCCL.js} +324 -110
- package/dist/chunk-N5GDLCCL.js.map +1 -0
- package/dist/{chunk-66PSL4YO.js → chunk-O2IIBSQH.js} +9 -10
- package/dist/chunk-O2IIBSQH.js.map +1 -0
- package/dist/{chunk-6QRDULAO.cjs → chunk-PCSRDAWQ.cjs} +28 -7
- package/dist/chunk-PCSRDAWQ.cjs.map +1 -0
- package/dist/{chunk-WIXGHS77.cjs → chunk-T7HEUW2O.cjs} +6 -6
- package/dist/{chunk-WIXGHS77.cjs.map → chunk-T7HEUW2O.cjs.map} +1 -1
- package/dist/{chunk-N5DDJ3WQ.js → chunk-UTT764K6.js} +10 -9
- package/dist/{chunk-N5DDJ3WQ.js.map → chunk-UTT764K6.js.map} +1 -1
- package/dist/{chunk-F54WHRCE.cjs → chunk-W2U6ITMR.cjs} +328 -110
- package/dist/chunk-W2U6ITMR.cjs.map +1 -0
- package/dist/{chunk-XXJJH56O.cjs → chunk-YGD7EQEX.cjs} +10 -9
- package/dist/{chunk-XXJJH56O.cjs.map → chunk-YGD7EQEX.cjs.map} +1 -1
- package/dist/core/index.cjs +43 -44
- package/dist/core/index.d.cts +39 -5
- package/dist/core/index.d.ts +39 -5
- package/dist/core/index.js +2 -3
- package/dist/index.cjs +61 -58
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +5 -6
- package/dist/names/index.cjs +9 -9
- package/dist/names/index.d.cts +4 -2
- package/dist/names/index.d.ts +4 -2
- package/dist/names/index.js +1 -1
- package/dist/react/index.cjs +112 -125
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +23 -1
- package/dist/react/index.d.ts +23 -1
- package/dist/react/index.js +96 -109
- 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 +18 -14
- package/dist/themes/index.d.cts +30 -4
- package/dist/themes/index.d.ts +30 -4
- package/dist/themes/index.js +1 -1
- package/dist/traits-D4tbtZIr.d.cts +259 -0
- package/dist/traits-D4tbtZIr.d.ts +259 -0
- package/dist/vanilla/index.cjs +6 -7
- 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 +2 -3
- package/dist/vanilla/index.js.map +1 -1
- package/package.json +4 -1
- package/python/solfaces.py +108 -122
- package/reference/integrations.md +1 -1
- package/dist/chunk-3CE7Q44S.js.map +0 -1
- package/dist/chunk-4YFZ4W2Y.cjs.map +0 -1
- package/dist/chunk-66PSL4YO.js.map +0 -1
- package/dist/chunk-6QRDULAO.cjs.map +0 -1
- package/dist/chunk-CKHLRORB.js +0 -239
- package/dist/chunk-CKHLRORB.js.map +0 -1
- package/dist/chunk-DRUSCLEF.js.map +0 -1
- package/dist/chunk-F54WHRCE.cjs.map +0 -1
- package/dist/chunk-TYTBYDQU.cjs +0 -244
- package/dist/chunk-TYTBYDQU.cjs.map +0 -1
- package/dist/traits-sfe7rM9C.d.cts +0 -106
- package/dist/traits-sfe7rM9C.d.ts +0 -106
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { renderSolFaceSVG } from './chunk-
|
|
1
|
+
import { renderSolFaceSVG } from './chunk-N5GDLCCL.js';
|
|
2
2
|
|
|
3
3
|
// src/core/rasterize.ts
|
|
4
4
|
async function renderSolFacePNG(walletAddress, options) {
|
|
@@ -103,5 +103,5 @@ async function renderSolFacePNGDataURL(walletAddress, options) {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
export { renderSolFacePNG, renderSolFacePNGBrowser, renderSolFacePNGDataURL };
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
107
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-2KW35VRI.js.map
|
|
107
|
+
//# sourceMappingURL=chunk-2KW35VRI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/rasterize.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/rasterize.ts"],"names":[],"mappings":"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","file":"chunk-2KW35VRI.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════\n// SOLFACES — PNG Rasterizer\n// Converts SolFace SVGs to PNG buffers for use in bots, APIs,\n// Discord embeds, Telegram, emails, and non-SVG contexts.\n//\n// Works in:\n// - Node.js (via sharp or canvas fallback)\n// - Browser (via OffscreenCanvas or <canvas>)\n// - Edge functions (via resvg-wasm)\n// ═══════════════════════════════════════════════════════════════\n\nimport { renderSolFaceSVG, type RenderOptions } from \"./renderer\";\n\nexport interface PNGOptions extends RenderOptions {\n /** Output pixel size (both width and height). Default: 256 */\n pngSize?: number;\n /** PNG quality (0-1, only affects some renderers). Default: 1 */\n quality?: number;\n}\n\n// ─── Node.js Rasterization ───────────────────────────────────\n\n/**\n * Render a SolFace as a PNG Buffer using `sharp`.\n * Requires: `npm install sharp`\n *\n * @returns PNG buffer\n *\n * @example\n * ```ts\n * import { renderSolFacePNG } from \"solfaces/core/rasterize\";\n *\n * const png = await renderSolFacePNG(\"7xKXq...\", { pngSize: 256 });\n * fs.writeFileSync(\"avatar.png\", png);\n * ```\n */\nexport async function renderSolFacePNG(\n walletAddress: string,\n options?: PNGOptions\n): Promise<Buffer> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n // Generate SVG at the target resolution\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n const svgBuffer = Buffer.from(svg);\n\n // Try sharp first (best quality, most common in Node)\n try {\n const sharp = await import(\"sharp\");\n return await sharp\n .default(svgBuffer)\n .resize(pngSize, pngSize)\n .png()\n .toBuffer();\n } catch {\n // sharp not installed — fall through\n }\n\n // Try @resvg/resvg-js (good for edge/serverless)\n try {\n const { Resvg } = await import(\"@resvg/resvg-js\");\n const resvg = new Resvg(svg, {\n fitTo: { mode: \"width\", value: pngSize },\n });\n const pngData = resvg.render();\n return Buffer.from(pngData.asPng());\n } catch {\n // resvg not installed\n }\n\n throw new Error(\n \"[SolFaces] PNG rasterization requires either `sharp` or `@resvg/resvg-js`. \" +\n \"Install one: npm install sharp OR npm install @resvg/resvg-js\"\n );\n}\n\n// ─── Browser Rasterization ───────────────────────────────────\n\n/**\n * Render a SolFace as a PNG Blob in the browser.\n * Uses Canvas API — works in all modern browsers.\n *\n * @returns PNG Blob\n *\n * @example\n * ```ts\n * const blob = await renderSolFacePNGBrowser(\"7xKXq...\", { pngSize: 256 });\n * const url = URL.createObjectURL(blob);\n * img.src = url;\n * ```\n */\nexport async function renderSolFacePNGBrowser(\n walletAddress: string,\n options?: PNGOptions\n): Promise<Blob> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n\n // Create image from SVG data URI\n const svgBlob = new Blob([svg], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(svgBlob);\n\n return new Promise<Blob>((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n // Use OffscreenCanvas if available (better perf)\n let canvas: HTMLCanvasElement | OffscreenCanvas;\n let ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null;\n\n if (typeof OffscreenCanvas !== \"undefined\") {\n canvas = new OffscreenCanvas(pngSize, pngSize);\n ctx = canvas.getContext(\"2d\");\n } else {\n canvas = document.createElement(\"canvas\");\n canvas.width = pngSize;\n canvas.height = pngSize;\n ctx = canvas.getContext(\"2d\");\n }\n\n if (!ctx) {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] Could not get canvas context\"));\n return;\n }\n\n ctx.drawImage(img, 0, 0, pngSize, pngSize);\n URL.revokeObjectURL(url);\n\n if (canvas instanceof OffscreenCanvas) {\n canvas.convertToBlob({ type: \"image/png\" }).then(resolve).catch(reject);\n } else {\n canvas.toBlob((blob) => {\n if (blob) resolve(blob);\n else reject(new Error(\"[SolFaces] Canvas toBlob failed\"));\n }, \"image/png\");\n }\n };\n\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] Failed to load SVG into image\"));\n };\n\n img.src = url;\n });\n}\n\n/**\n * Render a SolFace as a PNG data URL in the browser.\n * Convenient for directly setting img.src without blob URLs.\n */\nexport async function renderSolFacePNGDataURL(\n walletAddress: string,\n options?: PNGOptions\n): Promise<string> {\n const { pngSize = 256, ...renderOpts } = options ?? {};\n\n const svg = renderSolFaceSVG(walletAddress, {\n ...renderOpts,\n size: pngSize,\n });\n\n const svgBlob = new Blob([svg], { type: \"image/svg+xml;charset=utf-8\" });\n const url = URL.createObjectURL(svgBlob);\n\n return new Promise<string>((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = pngSize;\n canvas.height = pngSize;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n reject(new Error(\"[SolFaces] No canvas context\"));\n return;\n }\n ctx.drawImage(img, 0, 0, pngSize, pngSize);\n URL.revokeObjectURL(url);\n resolve(canvas.toDataURL(\"image/png\"));\n };\n img.onerror = () => {\n URL.revokeObjectURL(url);\n reject(new Error(\"[SolFaces] SVG load failed\"));\n };\n img.src = url;\n });\n}\n"]}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var chunkXXJJH56O_cjs = require('./chunk-XXJJH56O.cjs');
|
|
3
|
+
var chunkW2U6ITMR_cjs = require('./chunk-W2U6ITMR.cjs');
|
|
4
|
+
var chunkPCSRDAWQ_cjs = require('./chunk-PCSRDAWQ.cjs');
|
|
5
|
+
var chunkYGD7EQEX_cjs = require('./chunk-YGD7EQEX.cjs');
|
|
7
6
|
|
|
8
7
|
// src/agent/tools.ts
|
|
9
8
|
var generateSolfaceSvg = {
|
|
10
9
|
name: "generate_solface_svg",
|
|
11
|
-
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
|
+
description: "Generate a deterministic SVG avatar for a Solana wallet address. Returns an SVG string with gradient-rich rendering, skin-luminance-driven colors, and 12 accessory types. The same wallet always produces the same face. ~53 million unique combinations.",
|
|
12
11
|
parameters: {
|
|
13
12
|
type: "object",
|
|
14
13
|
properties: {
|
|
@@ -43,13 +42,13 @@ var generateSolfaceSvg = {
|
|
|
43
42
|
const enableBlink = params.enableBlink ?? false;
|
|
44
43
|
const detail = params.detail ?? "auto";
|
|
45
44
|
const themeName = params.theme;
|
|
46
|
-
const theme = themeName ?
|
|
47
|
-
return
|
|
45
|
+
const theme = themeName ? chunkPCSRDAWQ_cjs.getPresetTheme(themeName) : void 0;
|
|
46
|
+
return chunkW2U6ITMR_cjs.renderSolFaceSVG(wallet, { size, theme, enableBlink, detail });
|
|
48
47
|
}
|
|
49
48
|
};
|
|
50
49
|
var describeSolface = {
|
|
51
50
|
name: "describe_solface",
|
|
52
|
-
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,
|
|
51
|
+
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, eyebrows, nose, accessories, and expression.",
|
|
53
52
|
parameters: {
|
|
54
53
|
type: "object",
|
|
55
54
|
properties: {
|
|
@@ -76,8 +75,8 @@ var describeSolface = {
|
|
|
76
75
|
},
|
|
77
76
|
handler(params) {
|
|
78
77
|
const wallet = params.wallet;
|
|
79
|
-
const name = params.name ??
|
|
80
|
-
return
|
|
78
|
+
const name = params.name ?? chunkYGD7EQEX_cjs.deriveName(wallet, "display");
|
|
79
|
+
return chunkW2U6ITMR_cjs.describeAppearance(wallet, {
|
|
81
80
|
format: params.format ?? "paragraph",
|
|
82
81
|
perspective: params.perspective ?? "third",
|
|
83
82
|
name
|
|
@@ -99,10 +98,10 @@ var getSolfaceTraits = {
|
|
|
99
98
|
},
|
|
100
99
|
handler(params) {
|
|
101
100
|
const wallet = params.wallet;
|
|
102
|
-
const traits =
|
|
103
|
-
const labels =
|
|
104
|
-
const hash =
|
|
105
|
-
const name =
|
|
101
|
+
const traits = chunkW2U6ITMR_cjs.generateTraits(wallet);
|
|
102
|
+
const labels = chunkW2U6ITMR_cjs.getTraitLabels(traits);
|
|
103
|
+
const hash = chunkW2U6ITMR_cjs.traitHash(wallet);
|
|
104
|
+
const name = chunkYGD7EQEX_cjs.deriveName(wallet, "display");
|
|
106
105
|
return { traits, labels, hash, name };
|
|
107
106
|
}
|
|
108
107
|
};
|
|
@@ -125,8 +124,8 @@ var getAgentIdentity = {
|
|
|
125
124
|
},
|
|
126
125
|
handler(params) {
|
|
127
126
|
const wallet = params.wallet;
|
|
128
|
-
const agentName = params.agentName ??
|
|
129
|
-
return
|
|
127
|
+
const agentName = params.agentName ?? chunkYGD7EQEX_cjs.deriveName(wallet, "display");
|
|
128
|
+
return chunkW2U6ITMR_cjs.agentAppearancePrompt(wallet, agentName);
|
|
130
129
|
}
|
|
131
130
|
};
|
|
132
131
|
var THEME_DESCRIPTIONS = {
|
|
@@ -150,7 +149,7 @@ var listSolfaceThemes = {
|
|
|
150
149
|
properties: {}
|
|
151
150
|
},
|
|
152
151
|
handler() {
|
|
153
|
-
return Object.keys(
|
|
152
|
+
return Object.keys(chunkPCSRDAWQ_cjs.PRESET_THEMES).map((name) => ({
|
|
154
153
|
name,
|
|
155
154
|
description: THEME_DESCRIPTIONS[name] ?? "",
|
|
156
155
|
reactOnly: name.startsWith("glass") || name.startsWith("pixel")
|
|
@@ -159,7 +158,7 @@ var listSolfaceThemes = {
|
|
|
159
158
|
};
|
|
160
159
|
var deriveSolname = {
|
|
161
160
|
name: "derive_solname",
|
|
162
|
-
description: "Derive a deterministic name from a Solana wallet address using SHA-256 hashing. Returns human-friendly names like '
|
|
161
|
+
description: "Derive a deterministic name from a Solana wallet address using SHA-256 hashing. Returns human-friendly names like 'Sunny Icon'. Same wallet always produces the same name. ~1M display name combinations, ~65.5B unique tag combinations.",
|
|
163
162
|
parameters: {
|
|
164
163
|
type: "object",
|
|
165
164
|
properties: {
|
|
@@ -169,7 +168,7 @@ var deriveSolname = {
|
|
|
169
168
|
},
|
|
170
169
|
format: {
|
|
171
170
|
type: "string",
|
|
172
|
-
description: "Name format: 'short' (adjective only), 'display' (adj
|
|
171
|
+
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.",
|
|
173
172
|
enum: ["short", "display", "tag", "full"]
|
|
174
173
|
}
|
|
175
174
|
},
|
|
@@ -179,9 +178,9 @@ var deriveSolname = {
|
|
|
179
178
|
const wallet = params.wallet;
|
|
180
179
|
const format = params.format;
|
|
181
180
|
if (format) {
|
|
182
|
-
return
|
|
181
|
+
return chunkYGD7EQEX_cjs.deriveName(wallet, format);
|
|
183
182
|
}
|
|
184
|
-
return
|
|
183
|
+
return chunkYGD7EQEX_cjs.deriveIdentity(wallet);
|
|
185
184
|
}
|
|
186
185
|
};
|
|
187
186
|
var SOLFACE_TOOLS = [
|
|
@@ -259,5 +258,5 @@ exports.toAnthropic = toAnthropic;
|
|
|
259
258
|
exports.toMCP = toMCP;
|
|
260
259
|
exports.toOpenAI = toOpenAI;
|
|
261
260
|
exports.toVercelAI = toVercelAI;
|
|
262
|
-
//# sourceMappingURL=chunk-
|
|
263
|
-
//# sourceMappingURL=chunk-
|
|
261
|
+
//# sourceMappingURL=chunk-BI3GHRKQ.cjs.map
|
|
262
|
+
//# sourceMappingURL=chunk-BI3GHRKQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent/tools.ts","../src/agent/index.ts"],"names":["getPresetTheme","renderSolFaceSVG","deriveName","describeAppearance","generateTraits","getTraitLabels","traitHash","agentAppearancePrompt","PRESET_THEMES","deriveIdentity"],"mappings":"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","file":"chunk-BI3GHRKQ.cjs","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 12 accessory types. The same wallet always produces the same face. ~53 million 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 as import(\"../themes/presets\").PresetThemeName)\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, eyebrows, nose, 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 'Sunny Icon'. 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"]}
|
|
@@ -11,7 +11,9 @@ var darkTheme = {
|
|
|
11
11
|
"#18122a",
|
|
12
12
|
"#1a2020",
|
|
13
13
|
"#221822",
|
|
14
|
-
"#1e1020"
|
|
14
|
+
"#1e1020",
|
|
15
|
+
"#1c1228",
|
|
16
|
+
"#0e201a"
|
|
15
17
|
],
|
|
16
18
|
eyeWhiteColor: "#d8d0c8",
|
|
17
19
|
bgOpacity: 1,
|
|
@@ -29,7 +31,9 @@ var lightTheme = {
|
|
|
29
31
|
"#e0e4f0",
|
|
30
32
|
"#e0d8f0",
|
|
31
33
|
"#f0e0ee",
|
|
32
|
-
"#f0d8e4"
|
|
34
|
+
"#f0d8e4",
|
|
35
|
+
"#e8d8f0",
|
|
36
|
+
"#d8f0e8"
|
|
33
37
|
],
|
|
34
38
|
bgOpacity: 1,
|
|
35
39
|
bgRadius: 8
|
|
@@ -70,7 +74,9 @@ var monoTheme = {
|
|
|
70
74
|
"#d4d4e0",
|
|
71
75
|
"#d4d0e0",
|
|
72
76
|
"#e0d8e0",
|
|
73
|
-
"#e0d0d8"
|
|
77
|
+
"#e0d0d8",
|
|
78
|
+
"#d8d0e0",
|
|
79
|
+
"#d0e0d8"
|
|
74
80
|
],
|
|
75
81
|
mouthColor: "#666",
|
|
76
82
|
eyebrowColor: "#555",
|
|
@@ -102,7 +108,9 @@ var glassTheme = {
|
|
|
102
108
|
_specularEnd: 50,
|
|
103
109
|
_lightAngle: 135,
|
|
104
110
|
_rimIntensity: 0.08,
|
|
105
|
-
|
|
111
|
+
_shadowY: 8,
|
|
112
|
+
_shadowBlur: 32,
|
|
113
|
+
_shadowOpacity: 0.12
|
|
106
114
|
};
|
|
107
115
|
var glassDarkTheme = {
|
|
108
116
|
bgOpacity: 0.2,
|
|
@@ -120,7 +128,9 @@ var glassDarkTheme = {
|
|
|
120
128
|
_specularEnd: 40,
|
|
121
129
|
_lightAngle: 135,
|
|
122
130
|
_rimIntensity: 0.05,
|
|
123
|
-
|
|
131
|
+
_shadowY: 8,
|
|
132
|
+
_shadowBlur: 32,
|
|
133
|
+
_shadowOpacity: 0.25
|
|
124
134
|
};
|
|
125
135
|
var pixelTheme = {
|
|
126
136
|
flat: true,
|
|
@@ -171,7 +181,17 @@ function getPresetTheme(name, overrides) {
|
|
|
171
181
|
if (!base) return overrides ?? {};
|
|
172
182
|
return overrides ? { ...base, ...overrides } : base;
|
|
173
183
|
}
|
|
184
|
+
function createTheme(options = {}) {
|
|
185
|
+
const { mode, ...rest } = options;
|
|
186
|
+
let base = {};
|
|
187
|
+
if (mode === "dark") base = { ...darkTheme };
|
|
188
|
+
else if (mode === "light") base = { ...lightTheme };
|
|
189
|
+
else if (mode === "transparent") base = { ...transparentTheme };
|
|
190
|
+
else if (mode === "mono") base = { ...monoTheme };
|
|
191
|
+
else if (mode === "flat") base = { ...flatTheme };
|
|
192
|
+
return { ...base, ...rest };
|
|
193
|
+
}
|
|
174
194
|
|
|
175
|
-
export { PRESET_THEMES, darkTheme, defaultTheme, flatTheme, getPresetTheme, glassDarkTheme, glassTheme, lightTheme, monoTheme, pixelCleanTheme, pixelRetroTheme, pixelTheme, transparentTheme };
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
177
|
-
//# sourceMappingURL=chunk-
|
|
195
|
+
export { PRESET_THEMES, createTheme, darkTheme, defaultTheme, flatTheme, getPresetTheme, glassDarkTheme, glassTheme, lightTheme, monoTheme, pixelCleanTheme, pixelRetroTheme, pixelTheme, transparentTheme };
|
|
196
|
+
//# sourceMappingURL=chunk-MYUSB4LA.js.map
|
|
197
|
+
//# sourceMappingURL=chunk-MYUSB4LA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/themes/presets.ts"],"names":[],"mappings":"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","file":"chunk-MYUSB4LA.js","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 \"#1c1228\", \"#0e201a\"],\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 \"#e8d8f0\", \"#d8f0e8\"],\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 \"#d8d0e0\", \"#d0e0d8\"],\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 _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 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 _shadowY: 8,\n _shadowBlur: 32,\n _shadowOpacity: 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\n/** Names of all built-in preset themes. */\nexport type PresetThemeName = \"default\" | \"dark\" | \"light\" | \"mono\" | \"flat\" | \"transparent\" | \"glass\" | \"glassDark\" | \"pixel\" | \"pixelRetro\" | \"pixelClean\";\n\n/** Map of all built-in preset themes, keyed by name. */\nexport const PRESET_THEMES: Record<PresetThemeName, 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\n/**\n * Look up a built-in preset theme by name, optionally merging overrides.\n *\n * @param name Preset theme name (e.g. \"glass\", \"dark\", \"pixelRetro\").\n * @param overrides Optional partial theme to merge on top of the preset.\n * @returns The resolved theme object.\n */\nexport function getPresetTheme(\n name: PresetThemeName,\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\n/**\n * Build a custom theme by starting from a preset mode and merging your overrides.\n * All SolFaceTheme properties are available for IntelliSense-driven customization.\n *\n * @param options Theme options. Use `mode` to start from a preset base, then override any property.\n * @returns A fully resolved SolFaceTheme object.\n *\n * @example\n * ```ts\n * const myTheme = createTheme({ mode: \"dark\", bgRadius: 12, flat: true });\n * ```\n */\nexport function createTheme(\n options: Partial<SolFaceTheme> & {\n /** Start from a preset mode. Default: none (default gradient theme). */\n mode?: \"light\" | \"dark\" | \"transparent\" | \"mono\" | \"flat\";\n } = {},\n): SolFaceTheme {\n const { mode, ...rest } = options;\n let base: SolFaceTheme = {};\n\n if (mode === \"dark\") base = { ...darkTheme };\n else if (mode === \"light\") base = { ...lightTheme };\n else if (mode === \"transparent\") base = { ...transparentTheme };\n else if (mode === \"mono\") base = { ...monoTheme };\n else if (mode === \"flat\") base = { ...flatTheme };\n\n return { ...base, ...rest };\n}\n"]}
|