@shuffll/mcp-server 1.0.0 → 1.2.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/build/design-registry.d.ts +66 -0
- package/build/design-registry.js +200 -0
- package/build/design-registry.js.map +1 -0
- package/build/index.js +10 -1
- package/build/index.js.map +1 -1
- package/build/resources.js +1 -10
- package/build/resources.js.map +1 -1
- package/build/tools/content-tools.js +1 -10
- package/build/tools/content-tools.js.map +1 -1
- package/build/tools/edit-tools.js +27 -10
- package/build/tools/edit-tools.js.map +1 -1
- package/build/tools/project-tools.d.ts +2 -1
- package/build/tools/project-tools.js +227 -12
- package/build/tools/project-tools.js.map +1 -1
- package/build/tools/scene-tools.js +1 -10
- package/build/tools/scene-tools.js.map +1 -1
- package/build/types.d.ts +6 -0
- package/build/utils/format-error.d.ts +1 -0
- package/build/utils/format-error.js +11 -0
- package/build/utils/format-error.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ShufflApiClient } from "./api-client.js";
|
|
2
|
+
interface CachedDesignGroup {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
/** aspectRatio → designId */
|
|
6
|
+
designs: Map<string, string>;
|
|
7
|
+
/** composition types available in this design group */
|
|
8
|
+
compositions: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Discovers and caches available design groups, their aspect-ratio
|
|
12
|
+
* variants, and composition types from platform templates.
|
|
13
|
+
* Refreshes periodically so the MCP server stays up-to-date.
|
|
14
|
+
*/
|
|
15
|
+
export declare class DesignRegistry {
|
|
16
|
+
private apiClient;
|
|
17
|
+
private refreshIntervalMs;
|
|
18
|
+
private groups;
|
|
19
|
+
private refreshTimer;
|
|
20
|
+
private initialized;
|
|
21
|
+
/** Compositions that appear across multiple design groups (generic/clean). */
|
|
22
|
+
private commonCompositions;
|
|
23
|
+
constructor(apiClient: ShufflApiClient, refreshIntervalMs?: number);
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
dispose(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Find a design group that supports the given aspect ratio.
|
|
28
|
+
*
|
|
29
|
+
* When `preferGeneric` is true the candidates are ranked by how many of
|
|
30
|
+
* their compositions are "common" (appear across multiple design groups).
|
|
31
|
+
* This favours cleaner designs with fewer custom overlays – ideal for UGC.
|
|
32
|
+
*/
|
|
33
|
+
findDesignForAspectRatio(ratio: string, options?: {
|
|
34
|
+
preferGeneric?: boolean;
|
|
35
|
+
}): {
|
|
36
|
+
designGroupId: string;
|
|
37
|
+
designId: string;
|
|
38
|
+
} | null;
|
|
39
|
+
/**
|
|
40
|
+
* Score a design group by what fraction of its compositions are "generic"
|
|
41
|
+
* (i.e. appear across multiple design groups). Higher = cleaner/more generic.
|
|
42
|
+
*/
|
|
43
|
+
private genericnessScore;
|
|
44
|
+
/**
|
|
45
|
+
* Returns composition types that are common across multiple design groups.
|
|
46
|
+
* These are "generic" compositions that work universally.
|
|
47
|
+
*/
|
|
48
|
+
getCleanCompositions(): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Suggest a composition type for a scene based on its position in the video.
|
|
51
|
+
* Uses clean/generic compositions suitable for UGC content.
|
|
52
|
+
*/
|
|
53
|
+
suggestComposition(_sceneName: string, sceneIndex: number, totalScenes: number): string;
|
|
54
|
+
/**
|
|
55
|
+
* Returns all discovered design groups (for debugging / logging).
|
|
56
|
+
*/
|
|
57
|
+
getGroups(): ReadonlyArray<CachedDesignGroup>;
|
|
58
|
+
isReady(): boolean;
|
|
59
|
+
private refresh;
|
|
60
|
+
/**
|
|
61
|
+
* Find composition types that appear in at least 2 design groups.
|
|
62
|
+
* These are considered "generic" and safe to use across designs.
|
|
63
|
+
*/
|
|
64
|
+
private computeCommonCompositions;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { log, logError } from "./utils/logger.js";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// DesignRegistry
|
|
4
|
+
// ============================================================
|
|
5
|
+
/**
|
|
6
|
+
* Discovers and caches available design groups, their aspect-ratio
|
|
7
|
+
* variants, and composition types from platform templates.
|
|
8
|
+
* Refreshes periodically so the MCP server stays up-to-date.
|
|
9
|
+
*/
|
|
10
|
+
export class DesignRegistry {
|
|
11
|
+
apiClient;
|
|
12
|
+
refreshIntervalMs;
|
|
13
|
+
groups = [];
|
|
14
|
+
refreshTimer = null;
|
|
15
|
+
initialized = false;
|
|
16
|
+
/** Compositions that appear across multiple design groups (generic/clean). */
|
|
17
|
+
commonCompositions = [];
|
|
18
|
+
constructor(apiClient, refreshIntervalMs = 30 * 60 * 1000) {
|
|
19
|
+
this.apiClient = apiClient;
|
|
20
|
+
this.refreshIntervalMs = refreshIntervalMs;
|
|
21
|
+
}
|
|
22
|
+
// ------------------------------------------------------------------
|
|
23
|
+
// Public API
|
|
24
|
+
// ------------------------------------------------------------------
|
|
25
|
+
async initialize() {
|
|
26
|
+
await this.refresh();
|
|
27
|
+
this.initialized = true;
|
|
28
|
+
// Periodic refresh
|
|
29
|
+
this.refreshTimer = setInterval(() => {
|
|
30
|
+
this.refresh().catch((err) => logError("DesignRegistry periodic refresh failed", err));
|
|
31
|
+
}, this.refreshIntervalMs);
|
|
32
|
+
}
|
|
33
|
+
dispose() {
|
|
34
|
+
if (this.refreshTimer) {
|
|
35
|
+
clearInterval(this.refreshTimer);
|
|
36
|
+
this.refreshTimer = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Find a design group that supports the given aspect ratio.
|
|
41
|
+
*
|
|
42
|
+
* When `preferGeneric` is true the candidates are ranked by how many of
|
|
43
|
+
* their compositions are "common" (appear across multiple design groups).
|
|
44
|
+
* This favours cleaner designs with fewer custom overlays – ideal for UGC.
|
|
45
|
+
*/
|
|
46
|
+
findDesignForAspectRatio(ratio, options) {
|
|
47
|
+
// Collect every group that offers this aspect ratio
|
|
48
|
+
const candidates = [];
|
|
49
|
+
for (const group of this.groups) {
|
|
50
|
+
const designId = group.designs.get(ratio);
|
|
51
|
+
if (designId) {
|
|
52
|
+
candidates.push({ group, designId });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (candidates.length === 0)
|
|
56
|
+
return null;
|
|
57
|
+
if (options?.preferGeneric && candidates.length > 1) {
|
|
58
|
+
// Score each candidate by what fraction of its compositions are generic
|
|
59
|
+
const scored = candidates.map((c) => ({
|
|
60
|
+
...c,
|
|
61
|
+
score: this.genericnessScore(c.group),
|
|
62
|
+
}));
|
|
63
|
+
scored.sort((a, b) => b.score - a.score);
|
|
64
|
+
log(`Design selection (preferGeneric) for ${ratio}: ` +
|
|
65
|
+
scored
|
|
66
|
+
.map((s) => `${s.group.name}=${s.score.toFixed(2)}`)
|
|
67
|
+
.join(", "));
|
|
68
|
+
return {
|
|
69
|
+
designGroupId: scored[0].group.id,
|
|
70
|
+
designId: scored[0].designId,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
designGroupId: candidates[0].group.id,
|
|
75
|
+
designId: candidates[0].designId,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Score a design group by what fraction of its compositions are "generic"
|
|
80
|
+
* (i.e. appear across multiple design groups). Higher = cleaner/more generic.
|
|
81
|
+
*/
|
|
82
|
+
genericnessScore(group) {
|
|
83
|
+
if (group.compositions.length === 0)
|
|
84
|
+
return 0;
|
|
85
|
+
const genericCount = group.compositions.filter((c) => this.commonCompositions.includes(c)).length;
|
|
86
|
+
return genericCount / group.compositions.length;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Returns composition types that are common across multiple design groups.
|
|
90
|
+
* These are "generic" compositions that work universally.
|
|
91
|
+
*/
|
|
92
|
+
getCleanCompositions() {
|
|
93
|
+
return [...this.commonCompositions];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Suggest a composition type for a scene based on its position in the video.
|
|
97
|
+
* Uses clean/generic compositions suitable for UGC content.
|
|
98
|
+
*/
|
|
99
|
+
suggestComposition(_sceneName, sceneIndex, totalScenes) {
|
|
100
|
+
const clean = this.commonCompositions;
|
|
101
|
+
// First scene → headline text (hook)
|
|
102
|
+
if (sceneIndex === 0) {
|
|
103
|
+
if (clean.includes("headline_txt"))
|
|
104
|
+
return "headline_txt";
|
|
105
|
+
if (clean.includes("headline_and_subtitle_txt"))
|
|
106
|
+
return "headline_and_subtitle_txt";
|
|
107
|
+
}
|
|
108
|
+
// Last scene → call to action
|
|
109
|
+
if (sceneIndex === totalScenes - 1) {
|
|
110
|
+
if (clean.includes("cta_txt"))
|
|
111
|
+
return "cta_txt";
|
|
112
|
+
}
|
|
113
|
+
// Middle scenes → clean video
|
|
114
|
+
if (clean.includes("vid_clean"))
|
|
115
|
+
return "vid_clean";
|
|
116
|
+
if (clean.includes("img_single"))
|
|
117
|
+
return "img_single";
|
|
118
|
+
// Fallback to first available clean composition, or vid_clean as last resort
|
|
119
|
+
return clean[0] || "vid_clean";
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns all discovered design groups (for debugging / logging).
|
|
123
|
+
*/
|
|
124
|
+
getGroups() {
|
|
125
|
+
return this.groups;
|
|
126
|
+
}
|
|
127
|
+
isReady() {
|
|
128
|
+
return this.initialized;
|
|
129
|
+
}
|
|
130
|
+
// ------------------------------------------------------------------
|
|
131
|
+
// Internal
|
|
132
|
+
// ------------------------------------------------------------------
|
|
133
|
+
async refresh() {
|
|
134
|
+
try {
|
|
135
|
+
const templates = await this.apiClient.getPlatformTemplates();
|
|
136
|
+
const groupMap = new Map();
|
|
137
|
+
for (const template of templates) {
|
|
138
|
+
const dg = template.designGroup;
|
|
139
|
+
if (!dg || !dg._id)
|
|
140
|
+
continue;
|
|
141
|
+
const dgId = String(dg._id);
|
|
142
|
+
if (groupMap.has(dgId))
|
|
143
|
+
continue; // already processed
|
|
144
|
+
const name = String(dg.name || "Unknown");
|
|
145
|
+
const designs = new Map();
|
|
146
|
+
const compositions = [];
|
|
147
|
+
// Extract aspect-ratio → designId mappings from designsMetadata
|
|
148
|
+
const metadata = dg.designsMetadata;
|
|
149
|
+
if (Array.isArray(metadata)) {
|
|
150
|
+
for (const entry of metadata) {
|
|
151
|
+
if (entry.aspectRatio && entry.designId) {
|
|
152
|
+
designs.set(String(entry.aspectRatio), String(entry.designId));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Extract composition types from chosenDesign.compositions
|
|
157
|
+
const chosenDesign = dg.chosenDesign;
|
|
158
|
+
if (chosenDesign) {
|
|
159
|
+
const comps = chosenDesign.compositions;
|
|
160
|
+
if (Array.isArray(comps)) {
|
|
161
|
+
for (const comp of comps) {
|
|
162
|
+
if (comp.type) {
|
|
163
|
+
compositions.push(String(comp.type));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
groupMap.set(dgId, { id: dgId, name, designs, compositions });
|
|
169
|
+
}
|
|
170
|
+
this.groups = Array.from(groupMap.values());
|
|
171
|
+
this.commonCompositions = this.computeCommonCompositions();
|
|
172
|
+
log(`DesignRegistry refreshed: ${this.groups.length} design groups, ${this.commonCompositions.length} common compositions`);
|
|
173
|
+
for (const g of this.groups) {
|
|
174
|
+
const ratios = Array.from(g.designs.keys()).join(", ");
|
|
175
|
+
log(` - ${g.name} (${g.id}): ratios=[${ratios}], ${g.compositions.length} compositions`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
logError("DesignRegistry refresh failed", err);
|
|
180
|
+
// Keep stale data if we had any
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Find composition types that appear in at least 2 design groups.
|
|
185
|
+
* These are considered "generic" and safe to use across designs.
|
|
186
|
+
*/
|
|
187
|
+
computeCommonCompositions() {
|
|
188
|
+
const counts = new Map();
|
|
189
|
+
for (const group of this.groups) {
|
|
190
|
+
for (const comp of group.compositions) {
|
|
191
|
+
counts.set(comp, (counts.get(comp) || 0) + 1);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return Array.from(counts.entries())
|
|
195
|
+
.filter(([, count]) => count >= 2)
|
|
196
|
+
.map(([comp]) => comp)
|
|
197
|
+
.sort();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=design-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-registry.js","sourceRoot":"","sources":["../src/design-registry.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { loadConfig } from "./config.js";
|
|
5
5
|
import { ShufflApiClient } from "./api-client.js";
|
|
6
|
+
import { DesignRegistry } from "./design-registry.js";
|
|
6
7
|
import { registerProjectTools } from "./tools/project-tools.js";
|
|
7
8
|
import { registerSceneTools } from "./tools/scene-tools.js";
|
|
8
9
|
import { registerEditTools } from "./tools/edit-tools.js";
|
|
@@ -12,12 +13,20 @@ import { log, logError } from "./utils/logger.js";
|
|
|
12
13
|
async function main() {
|
|
13
14
|
const config = loadConfig();
|
|
14
15
|
const apiClient = new ShufflApiClient(config);
|
|
16
|
+
// Initialize design registry (discovers design groups & compositions)
|
|
17
|
+
const designRegistry = new DesignRegistry(apiClient);
|
|
18
|
+
try {
|
|
19
|
+
await designRegistry.initialize();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
logError("DesignRegistry initialization failed — UGC features will use defaults", err);
|
|
23
|
+
}
|
|
15
24
|
const server = new McpServer({
|
|
16
25
|
name: "shuffll-video",
|
|
17
26
|
version: "1.0.0",
|
|
18
27
|
});
|
|
19
28
|
// Register all tools
|
|
20
|
-
registerProjectTools(server, apiClient, config);
|
|
29
|
+
registerProjectTools(server, apiClient, config, designRegistry);
|
|
21
30
|
registerSceneTools(server, apiClient, config);
|
|
22
31
|
registerEditTools(server, apiClient, config);
|
|
23
32
|
registerContentTools(server, apiClient, config);
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,qBAAqB;IACrB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAE9C,sEAAsE;IACtE,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,uEAAuE,EAAE,GAAG,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,qBAAqB;IACrB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAChE,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7C,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEhD,qBAAqB;IACrB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,QAAQ,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/build/resources.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function formatError(error) {
|
|
3
|
-
if (error instanceof ShufflApiError) {
|
|
4
|
-
return `Shuffll API error (${error.statusCode}): ${JSON.stringify(error.responseBody)}`;
|
|
5
|
-
}
|
|
6
|
-
if (error instanceof Error) {
|
|
7
|
-
return `Error: ${error.message}`;
|
|
8
|
-
}
|
|
9
|
-
return `Unknown error: ${String(error)}`;
|
|
10
|
-
}
|
|
1
|
+
import { formatError } from "./utils/format-error.js";
|
|
11
2
|
export function registerResources(server, apiClient, _config) {
|
|
12
3
|
// ----------------------------------------------------------------
|
|
13
4
|
// shuffll://templates
|
package/build/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
function formatError(error) {
|
|
4
|
-
if (error instanceof ShufflApiError) {
|
|
5
|
-
return `Shuffll API error (${error.statusCode}): ${JSON.stringify(error.responseBody)}`;
|
|
6
|
-
}
|
|
7
|
-
if (error instanceof Error) {
|
|
8
|
-
return `Error: ${error.message}`;
|
|
9
|
-
}
|
|
10
|
-
return `Unknown error: ${String(error)}`;
|
|
11
|
-
}
|
|
2
|
+
import { formatError } from "../utils/format-error.js";
|
|
12
3
|
export function registerContentTools(server, apiClient, _config) {
|
|
13
4
|
// ----------------------------------------------------------------
|
|
14
5
|
// rewrite_text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-tools.js","sourceRoot":"","sources":["../../src/tools/content-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"content-tools.js","sourceRoot":"","sources":["../../src/tools/content-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
function formatError(error) {
|
|
4
|
-
if (error instanceof ShufflApiError) {
|
|
5
|
-
return `Shuffll API error (${error.statusCode}): ${JSON.stringify(error.responseBody)}`;
|
|
6
|
-
}
|
|
7
|
-
if (error instanceof Error) {
|
|
8
|
-
return `Error: ${error.message}`;
|
|
9
|
-
}
|
|
10
|
-
return `Unknown error: ${String(error)}`;
|
|
11
|
-
}
|
|
2
|
+
import { formatError } from "../utils/format-error.js";
|
|
12
3
|
export function registerEditTools(server, apiClient, _config) {
|
|
13
4
|
// ----------------------------------------------------------------
|
|
14
5
|
// create_edit
|
|
@@ -286,5 +277,31 @@ export function registerEditTools(server, apiClient, _config) {
|
|
|
286
277
|
};
|
|
287
278
|
}
|
|
288
279
|
});
|
|
280
|
+
// ----------------------------------------------------------------
|
|
281
|
+
// update_subtitles
|
|
282
|
+
// ----------------------------------------------------------------
|
|
283
|
+
server.tool("update_subtitles", "Update subtitle settings for a video edit. Common keys: 'isEnabled' (boolean), 'fontFamily' (string), 'fontSize' (number or string like 'large'), 'fontColor' (hex color e.g. '#FFFFFF'), 'backgroundColor' (hex color), 'backgroundOpacity' (0-1), 'position' (string), 'style' (string), 'animation' (string).", {
|
|
284
|
+
projectId: z.string().describe("The project ID"),
|
|
285
|
+
editId: z.string().describe("The edit ID"),
|
|
286
|
+
key: z
|
|
287
|
+
.string()
|
|
288
|
+
.describe("The subtitle property to update (e.g., 'isEnabled', 'fontColor', 'fontSize', 'backgroundColor', 'backgroundOpacity', 'position', 'style', 'animation')"),
|
|
289
|
+
value: z.any().describe("The new value for the subtitle property"),
|
|
290
|
+
}, async (args) => {
|
|
291
|
+
try {
|
|
292
|
+
const result = await apiClient.updateSubtitleProperty(args.projectId, args.editId, args.key, args.value);
|
|
293
|
+
return {
|
|
294
|
+
content: [
|
|
295
|
+
{ type: "text", text: JSON.stringify(result, null, 2) },
|
|
296
|
+
],
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
return {
|
|
301
|
+
content: [{ type: "text", text: formatError(error) }],
|
|
302
|
+
isError: true,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
});
|
|
289
306
|
}
|
|
290
307
|
//# sourceMappingURL=edit-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit-tools.js","sourceRoot":"","sources":["../../src/tools/edit-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"edit-tools.js","sourceRoot":"","sources":["../../src/tools/edit-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { ShufflApiClient } from "../api-client.js";
|
|
3
3
|
import { ShufflMcpConfig } from "../config.js";
|
|
4
|
-
|
|
4
|
+
import { DesignRegistry } from "../design-registry.js";
|
|
5
|
+
export declare function registerProjectTools(server: McpServer, apiClient: ShufflApiClient, _config: ShufflMcpConfig, designRegistry: DesignRegistry): void;
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
if (error instanceof Error) {
|
|
8
|
-
return `Error: ${error.message}`;
|
|
9
|
-
}
|
|
10
|
-
return `Unknown error: ${String(error)}`;
|
|
11
|
-
}
|
|
12
|
-
export function registerProjectTools(server, apiClient, _config) {
|
|
2
|
+
import { formatError } from "../utils/format-error.js";
|
|
3
|
+
import { pollUntilDone } from "../utils/polling.js";
|
|
4
|
+
import { log, logError } from "../utils/logger.js";
|
|
5
|
+
export function registerProjectTools(server, apiClient, _config, designRegistry) {
|
|
13
6
|
// ----------------------------------------------------------------
|
|
14
7
|
// create_video_project
|
|
15
8
|
// ----------------------------------------------------------------
|
|
@@ -51,6 +44,27 @@ export function registerProjectTools(server, apiClient, _config) {
|
|
|
51
44
|
.default(true)
|
|
52
45
|
.optional()
|
|
53
46
|
.describe("Whether to auto-export the video after enhancement completes"),
|
|
47
|
+
aspectRatio: z
|
|
48
|
+
.enum(["16/9", "1/1", "9/16"])
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Desired aspect ratio. When set, a matching design is selected at creation time and the edit aspect ratio is configured to match — ensuring consistency between the design and the export."),
|
|
51
|
+
videoSources: z
|
|
52
|
+
.array(z.enum([
|
|
53
|
+
"stock_footage",
|
|
54
|
+
"workspace_assets",
|
|
55
|
+
"generate_from_image",
|
|
56
|
+
"generate_from_text",
|
|
57
|
+
]))
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Ordered video asset pipeline. The server tries each source in order (fallback). Defaults to ['stock_footage']. Options: 'stock_footage' (Pexels), 'workspace_assets' (user uploads), 'generate_from_image' (AI video from image), 'generate_from_text' (AI video from text)."),
|
|
60
|
+
imageSources: z
|
|
61
|
+
.array(z.enum([
|
|
62
|
+
"stock_footage",
|
|
63
|
+
"generate_from_text",
|
|
64
|
+
"workspace_assets",
|
|
65
|
+
]))
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("Ordered image asset pipeline. The server tries each source in order (fallback). Defaults to ['stock_footage']. Options: 'stock_footage' (Unsplash), 'generate_from_text' (AI image generation), 'workspace_assets' (user uploads)."),
|
|
54
68
|
}, async (args) => {
|
|
55
69
|
try {
|
|
56
70
|
const body = {
|
|
@@ -61,7 +75,27 @@ export function registerProjectTools(server, apiClient, _config) {
|
|
|
61
75
|
templateId: args.templateId,
|
|
62
76
|
toAutoEnhance: args.autoEnhance,
|
|
63
77
|
toAutoExport: args.autoExport,
|
|
78
|
+
// Default to stock footage when not specified
|
|
79
|
+
videoSourcesPipeline: args.videoSources || [
|
|
80
|
+
"stock_footage",
|
|
81
|
+
],
|
|
82
|
+
imagesSourcePipeline: args.imageSources || [
|
|
83
|
+
"stock_footage",
|
|
84
|
+
],
|
|
64
85
|
};
|
|
86
|
+
const notes = [];
|
|
87
|
+
// When an aspect ratio is requested, pick a design that matches
|
|
88
|
+
if (args.aspectRatio) {
|
|
89
|
+
const designMatch = designRegistry.findDesignForAspectRatio(args.aspectRatio);
|
|
90
|
+
if (designMatch) {
|
|
91
|
+
body.designGroupId = designMatch.designGroupId;
|
|
92
|
+
body.designId = designMatch.designId;
|
|
93
|
+
notes.push(`Design selected for ${args.aspectRatio}: group=${designMatch.designGroupId}, design=${designMatch.designId}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
notes.push(`No design group found for ${args.aspectRatio} — using default. Set the edit aspect ratio via configure_edit once the project is ready.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
65
99
|
const result = await apiClient.createProject(body);
|
|
66
100
|
return {
|
|
67
101
|
content: [
|
|
@@ -69,7 +103,12 @@ export function registerProjectTools(server, apiClient, _config) {
|
|
|
69
103
|
type: "text",
|
|
70
104
|
text: JSON.stringify({
|
|
71
105
|
projectId: result.projectId,
|
|
72
|
-
|
|
106
|
+
aspectRatio: args.aspectRatio || null,
|
|
107
|
+
notes: notes.length ? notes : undefined,
|
|
108
|
+
message: "Project creation started. Use get_project_creation_status to check progress." +
|
|
109
|
+
(args.aspectRatio
|
|
110
|
+
? ` Design selected for ${args.aspectRatio}. Remember to also set the edit aspect ratio to '${args.aspectRatio}' via configure_edit once the project is ready.`
|
|
111
|
+
: ""),
|
|
73
112
|
}, null, 2),
|
|
74
113
|
},
|
|
75
114
|
],
|
|
@@ -175,5 +214,181 @@ export function registerProjectTools(server, apiClient, _config) {
|
|
|
175
214
|
};
|
|
176
215
|
}
|
|
177
216
|
});
|
|
217
|
+
// ----------------------------------------------------------------
|
|
218
|
+
// create_ugc_video_project (9/16 optimized)
|
|
219
|
+
// ----------------------------------------------------------------
|
|
220
|
+
server.tool("create_ugc_video_project", "Create a 9:16 UGC-optimized video project. Automatically selects a vertical design, waits for generation, swaps scenes to clean compositions (hook → content → CTA), and sets the edit to 9/16 aspect ratio. Returns the project ID and optimization status.", {
|
|
221
|
+
prompt: z
|
|
222
|
+
.string()
|
|
223
|
+
.describe("Creative brief describing the video (e.g., 'Short-form UGC ad about our new sneakers')"),
|
|
224
|
+
videoType: z
|
|
225
|
+
.enum(["ai-voice", "avatar", "camera", "mic"])
|
|
226
|
+
.default("ai-voice")
|
|
227
|
+
.describe("Type of video"),
|
|
228
|
+
toneOfVoice: z
|
|
229
|
+
.enum([
|
|
230
|
+
"natural",
|
|
231
|
+
"professional",
|
|
232
|
+
"informative",
|
|
233
|
+
"inspirational",
|
|
234
|
+
"energetic",
|
|
235
|
+
])
|
|
236
|
+
.default("natural")
|
|
237
|
+
.optional()
|
|
238
|
+
.describe("The tone of the generated script"),
|
|
239
|
+
language: z
|
|
240
|
+
.enum(["auto", "en", "iw", "es", "fr", "zh"])
|
|
241
|
+
.default("en")
|
|
242
|
+
.optional()
|
|
243
|
+
.describe("Language code for the video content"),
|
|
244
|
+
templateId: z
|
|
245
|
+
.string()
|
|
246
|
+
.optional()
|
|
247
|
+
.describe("Optional template ID"),
|
|
248
|
+
videoSources: z
|
|
249
|
+
.array(z.enum([
|
|
250
|
+
"stock_footage",
|
|
251
|
+
"workspace_assets",
|
|
252
|
+
"generate_from_image",
|
|
253
|
+
"generate_from_text",
|
|
254
|
+
]))
|
|
255
|
+
.optional()
|
|
256
|
+
.describe("Ordered video asset pipeline (fallback order). Defaults to ['stock_footage']."),
|
|
257
|
+
imageSources: z
|
|
258
|
+
.array(z.enum([
|
|
259
|
+
"stock_footage",
|
|
260
|
+
"generate_from_text",
|
|
261
|
+
"workspace_assets",
|
|
262
|
+
]))
|
|
263
|
+
.optional()
|
|
264
|
+
.describe("Ordered image asset pipeline (fallback order). Defaults to ['stock_footage']."),
|
|
265
|
+
}, async (args) => {
|
|
266
|
+
try {
|
|
267
|
+
const targetRatio = "9/16";
|
|
268
|
+
let ugcOptimized = false;
|
|
269
|
+
const optimizationNotes = [];
|
|
270
|
+
// 1. Resolve 9/16 design group — prefer generic designs (cleaner, fewer overlays)
|
|
271
|
+
const designMatch = designRegistry.findDesignForAspectRatio(targetRatio, { preferGeneric: true });
|
|
272
|
+
const body = {
|
|
273
|
+
prompt: args.prompt,
|
|
274
|
+
recordingType: args.videoType,
|
|
275
|
+
toneOfVoice: args.toneOfVoice,
|
|
276
|
+
language: { code: args.language || "en" },
|
|
277
|
+
templateId: args.templateId,
|
|
278
|
+
// Disable auto-enhance/export — we'll handle composition swaps first
|
|
279
|
+
toAutoEnhance: false,
|
|
280
|
+
toAutoExport: false,
|
|
281
|
+
// Default to stock footage when not specified
|
|
282
|
+
videoSourcesPipeline: args.videoSources || [
|
|
283
|
+
"stock_footage",
|
|
284
|
+
],
|
|
285
|
+
imagesSourcePipeline: args.imageSources || [
|
|
286
|
+
"stock_footage",
|
|
287
|
+
],
|
|
288
|
+
};
|
|
289
|
+
if (designMatch) {
|
|
290
|
+
body.designGroupId = designMatch.designGroupId;
|
|
291
|
+
body.designId = designMatch.designId;
|
|
292
|
+
optimizationNotes.push(`Using 9/16 design: group=${designMatch.designGroupId}, design=${designMatch.designId}`);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
optimizationNotes.push("No 9/16 design group found in registry — using default design");
|
|
296
|
+
}
|
|
297
|
+
// 2. Create the project
|
|
298
|
+
const createResult = await apiClient.createProject(body);
|
|
299
|
+
const projectId = createResult.projectId;
|
|
300
|
+
log(`UGC project created: ${projectId}`);
|
|
301
|
+
// 3. Poll until creation is done (max 3 minutes)
|
|
302
|
+
try {
|
|
303
|
+
await pollUntilDone(() => apiClient.getCreationStatus(projectId), (status) => status.status === "DONE", { intervalMs: 3000, timeoutMs: 180_000 });
|
|
304
|
+
optimizationNotes.push("Creation completed");
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
optimizationNotes.push("Creation polling timed out — project may still be generating");
|
|
308
|
+
return {
|
|
309
|
+
content: [
|
|
310
|
+
{
|
|
311
|
+
type: "text",
|
|
312
|
+
text: JSON.stringify({
|
|
313
|
+
projectId,
|
|
314
|
+
ugcOptimized: false,
|
|
315
|
+
optimizationNotes,
|
|
316
|
+
message: "Project created but generation timed out. Use get_project_creation_status to check progress, then manually optimize scenes.",
|
|
317
|
+
}, null, 2),
|
|
318
|
+
},
|
|
319
|
+
],
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
// 4. Fetch project and optimize compositions
|
|
323
|
+
try {
|
|
324
|
+
const project = await apiClient.getProject(projectId);
|
|
325
|
+
const scenes = project.scenes || [];
|
|
326
|
+
const cleanComps = designRegistry.getCleanCompositions();
|
|
327
|
+
let swapCount = 0;
|
|
328
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
329
|
+
const scene = scenes[i];
|
|
330
|
+
const currentComp = scene.compositionType || scene.copy?.compositionType;
|
|
331
|
+
// Only swap if current composition is NOT already clean
|
|
332
|
+
if (currentComp && !cleanComps.includes(currentComp)) {
|
|
333
|
+
const suggested = designRegistry.suggestComposition(scene.name || "", i, scenes.length);
|
|
334
|
+
try {
|
|
335
|
+
await apiClient.updateSceneComposition(projectId, scene.id, suggested);
|
|
336
|
+
swapCount++;
|
|
337
|
+
log(` Scene ${i} (${scene.id}): ${currentComp} → ${suggested}`);
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
logError(`Failed to swap composition for scene ${scene.id}`, err);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
if (swapCount > 0) {
|
|
345
|
+
optimizationNotes.push(`Swapped ${swapCount}/${scenes.length} scene compositions to clean UGC types`);
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
optimizationNotes.push("All scenes already use clean compositions");
|
|
349
|
+
}
|
|
350
|
+
// 5. Set edit aspect ratio to 9/16
|
|
351
|
+
if (project.edits && project.edits.length > 0) {
|
|
352
|
+
const editId = project.edits[0].id;
|
|
353
|
+
try {
|
|
354
|
+
await apiClient.updateEditProperty(projectId, editId, [
|
|
355
|
+
{ key: "aspectRatio", value: targetRatio },
|
|
356
|
+
]);
|
|
357
|
+
optimizationNotes.push(`Edit aspect ratio set to ${targetRatio}`);
|
|
358
|
+
}
|
|
359
|
+
catch (err) {
|
|
360
|
+
logError("Failed to set edit aspect ratio", err);
|
|
361
|
+
optimizationNotes.push("Failed to set edit aspect ratio");
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
ugcOptimized = true;
|
|
365
|
+
}
|
|
366
|
+
catch (err) {
|
|
367
|
+
logError("UGC scene optimization failed", err);
|
|
368
|
+
optimizationNotes.push("Scene optimization failed — project exists but may need manual composition changes");
|
|
369
|
+
}
|
|
370
|
+
return {
|
|
371
|
+
content: [
|
|
372
|
+
{
|
|
373
|
+
type: "text",
|
|
374
|
+
text: JSON.stringify({
|
|
375
|
+
projectId,
|
|
376
|
+
ugcOptimized,
|
|
377
|
+
optimizationNotes,
|
|
378
|
+
message: ugcOptimized
|
|
379
|
+
? "UGC project created and optimized for 9/16. Use get_project to see full details."
|
|
380
|
+
: "Project created but optimization was partial. Check notes for details.",
|
|
381
|
+
}, null, 2),
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
return {
|
|
388
|
+
content: [{ type: "text", text: formatError(error) }],
|
|
389
|
+
isError: true,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
});
|
|
178
393
|
}
|
|
179
394
|
//# sourceMappingURL=project-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/tools/project-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-tools.js","sourceRoot":"","sources":["../../src/tools/project-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
function formatError(error) {
|
|
4
|
-
if (error instanceof ShufflApiError) {
|
|
5
|
-
return `Shuffll API error (${error.statusCode}): ${JSON.stringify(error.responseBody)}`;
|
|
6
|
-
}
|
|
7
|
-
if (error instanceof Error) {
|
|
8
|
-
return `Error: ${error.message}`;
|
|
9
|
-
}
|
|
10
|
-
return `Unknown error: ${String(error)}`;
|
|
11
|
-
}
|
|
2
|
+
import { formatError } from "../utils/format-error.js";
|
|
12
3
|
export function registerSceneTools(server, apiClient, _config) {
|
|
13
4
|
// ----------------------------------------------------------------
|
|
14
5
|
// add_scene
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-tools.js","sourceRoot":"","sources":["../../src/tools/scene-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"scene-tools.js","sourceRoot":"","sources":["../../src/tools/scene-tools.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export type EnhanceStatus = "none" | "in_progress" | "done";
|
|
|
9
9
|
export type AiVoiceStatus = "not_started" | "on_processing" | "done";
|
|
10
10
|
export type CreativeStatus = "STRUCTURE" | "GENERATING_IMAGES" | "DONE";
|
|
11
11
|
export type RewriteType = "improve" | "conversational" | "shorten" | "expand" | "formal" | "friendly" | "confident" | "persuasive";
|
|
12
|
+
export type VideoSourceType = "stock_footage" | "workspace_assets" | "generate_from_image" | "generate_from_text";
|
|
13
|
+
export type ImageSourceType = "stock_footage" | "generate_from_text" | "workspace_assets";
|
|
12
14
|
export interface CreateProjectRequest {
|
|
13
15
|
prompt: string;
|
|
14
16
|
recordingType: ProjectRecordingType;
|
|
@@ -24,6 +26,10 @@ export interface CreateProjectRequest {
|
|
|
24
26
|
webhook?: string;
|
|
25
27
|
videoLength?: number;
|
|
26
28
|
seedForAiAudioCreation?: number;
|
|
29
|
+
/** Ordered pipeline – the server tries each source in order (fallback). */
|
|
30
|
+
videoSourcesPipeline?: VideoSourceType[];
|
|
31
|
+
/** Ordered pipeline – the server tries each source in order (fallback). */
|
|
32
|
+
imagesSourcePipeline?: ImageSourceType[];
|
|
27
33
|
}
|
|
28
34
|
export interface UpdatePropertyRequest {
|
|
29
35
|
key: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatError(error: unknown): string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ShufflApiError } from "../api-client.js";
|
|
2
|
+
export function formatError(error) {
|
|
3
|
+
if (error instanceof ShufflApiError) {
|
|
4
|
+
return `Shuffll API error (${error.statusCode}): ${JSON.stringify(error.responseBody)}`;
|
|
5
|
+
}
|
|
6
|
+
if (error instanceof Error) {
|
|
7
|
+
return `Error: ${error.message}`;
|
|
8
|
+
}
|
|
9
|
+
return `Unknown error: ${String(error)}`;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=format-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-error.js","sourceRoot":"","sources":["../../src/utils/format-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,sBAAsB,KAAK,CAAC,UAAU,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;IAC1F,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,CAAC"}
|