@pinepaper.studio/mcp-server 1.6.15 → 1.6.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.de.md +1 -1
  2. package/README.es.md +1 -1
  3. package/README.fr.md +1 -1
  4. package/README.hi.md +1 -1
  5. package/README.ja.md +1 -1
  6. package/README.ko.md +1 -1
  7. package/README.md +64 -4
  8. package/README.pt-BR.md +1 -1
  9. package/README.zh-CN.md +1 -1
  10. package/dist/build-info.json +2 -2
  11. package/dist/ontology/upstream-vocabulary.d.ts +2 -2
  12. package/dist/ontology/upstream-vocabulary.js +2 -2
  13. package/dist/tools/definitions.d.ts.map +1 -1
  14. package/dist/tools/definitions.js +105 -8
  15. package/dist/tools/definitions.js.map +1 -1
  16. package/dist/tools/engine-surface.d.ts +1 -1
  17. package/dist/tools/engine-surface.d.ts.map +1 -1
  18. package/dist/tools/engine-surface.js +30 -9
  19. package/dist/tools/engine-surface.js.map +1 -1
  20. package/dist/tools/handlers/camera.d.ts.map +1 -1
  21. package/dist/tools/handlers/camera.js +11 -0
  22. package/dist/tools/handlers/camera.js.map +1 -1
  23. package/dist/tools/handlers/generate.d.ts +324 -0
  24. package/dist/tools/handlers/generate.d.ts.map +1 -0
  25. package/dist/tools/handlers/generate.js +264 -0
  26. package/dist/tools/handlers/generate.js.map +1 -0
  27. package/dist/tools/handlers.d.ts.map +1 -1
  28. package/dist/tools/handlers.js +39 -4
  29. package/dist/tools/handlers.js.map +1 -1
  30. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  31. package/dist/tools/minimal-descriptions.js +3 -0
  32. package/dist/tools/minimal-descriptions.js.map +1 -1
  33. package/dist/tools/shape-params.d.ts +2 -2
  34. package/dist/tools/shape-params.js +2 -2
  35. package/dist/tools/stick-vocabulary.d.ts +1 -1
  36. package/dist/tools/stick-vocabulary.js +1 -1
  37. package/dist/tools/toolkits.d.ts.map +1 -1
  38. package/dist/tools/toolkits.js +3 -0
  39. package/dist/tools/toolkits.js.map +1 -1
  40. package/dist/types/code-generator.d.ts +15 -0
  41. package/dist/types/code-generator.d.ts.map +1 -1
  42. package/dist/types/code-generator.js +279 -21
  43. package/dist/types/code-generator.js.map +1 -1
  44. package/dist/types/schemas.d.ts +527 -82
  45. package/dist/types/schemas.d.ts.map +1 -1
  46. package/dist/types/schemas.js +19 -7
  47. package/dist/types/schemas.js.map +1 -1
  48. package/dist/vendor/design/design-style.js +1 -1
  49. package/manifest.json +13 -1
  50. package/package.json +1 -1
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Generated media through the PinePaper cloud (fal models behind one door):
3
+ * pinepaper_generate_estimate (free) and pinepaper_generate (charged).
4
+ *
5
+ * This is the one place the local server calls the hosted API. It needs a
6
+ * service-account key (PINEPAPER_API_KEY, `pp_sa_…`) with the render:create
7
+ * scope, and the org must have the ai-media feature — an internal beta, so a
8
+ * 403 is the ordinary answer for most keys and is said as such.
9
+ *
10
+ * The job shape is the cloud's (/v1/generate → 202 {job}, poll
11
+ * /v1/generate/{id}), shared by stills now and video next; video only needs a
12
+ * longer poll, so the timeout is a parameter, not a per-model constant.
13
+ */
14
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
15
+ import { z } from 'zod';
16
+ import { type HandlerOptions } from '../handlers.js';
17
+ export declare const GenerateEstimateArgsSchema: z.ZodEffects<z.ZodObject<{
18
+ model: z.ZodOptional<z.ZodString>;
19
+ useCase: z.ZodOptional<z.ZodString>;
20
+ input: z.ZodOptional<z.ZodObject<{
21
+ prompt: z.ZodString;
22
+ aspect: z.ZodOptional<z.ZodEnum<["16:9", "9:16", "1:1", "4:5"]>>;
23
+ n: z.ZodOptional<z.ZodNumber>;
24
+ seed: z.ZodOptional<z.ZodNumber>;
25
+ negativePrompt: z.ZodOptional<z.ZodString>;
26
+ imageUrls: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
27
+ seconds: z.ZodOptional<z.ZodNumber>;
28
+ text: z.ZodOptional<z.ZodArray<z.ZodObject<{
29
+ content: z.ZodString;
30
+ role: z.ZodOptional<z.ZodEnum<["headline", "subhead", "caption", "cta", "label"]>>;
31
+ font: z.ZodOptional<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ content: string;
34
+ font?: string | undefined;
35
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
36
+ }, {
37
+ content: string;
38
+ font?: string | undefined;
39
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
40
+ }>, "many">>;
41
+ allowText: z.ZodOptional<z.ZodBoolean>;
42
+ }, "strip", z.ZodTypeAny, {
43
+ prompt: string;
44
+ text?: {
45
+ content: string;
46
+ font?: string | undefined;
47
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
48
+ }[] | undefined;
49
+ seconds?: number | undefined;
50
+ seed?: number | undefined;
51
+ n?: number | undefined;
52
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
53
+ negativePrompt?: string | undefined;
54
+ imageUrls?: string[] | undefined;
55
+ allowText?: boolean | undefined;
56
+ }, {
57
+ prompt: string;
58
+ text?: {
59
+ content: string;
60
+ font?: string | undefined;
61
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
62
+ }[] | undefined;
63
+ seconds?: number | undefined;
64
+ seed?: number | undefined;
65
+ n?: number | undefined;
66
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
67
+ negativePrompt?: string | undefined;
68
+ imageUrls?: string[] | undefined;
69
+ allowText?: boolean | undefined;
70
+ }>>;
71
+ listModels: z.ZodOptional<z.ZodBoolean>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ input?: {
74
+ prompt: string;
75
+ text?: {
76
+ content: string;
77
+ font?: string | undefined;
78
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
79
+ }[] | undefined;
80
+ seconds?: number | undefined;
81
+ seed?: number | undefined;
82
+ n?: number | undefined;
83
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
84
+ negativePrompt?: string | undefined;
85
+ imageUrls?: string[] | undefined;
86
+ allowText?: boolean | undefined;
87
+ } | undefined;
88
+ model?: string | undefined;
89
+ useCase?: string | undefined;
90
+ listModels?: boolean | undefined;
91
+ }, {
92
+ input?: {
93
+ prompt: string;
94
+ text?: {
95
+ content: string;
96
+ font?: string | undefined;
97
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
98
+ }[] | undefined;
99
+ seconds?: number | undefined;
100
+ seed?: number | undefined;
101
+ n?: number | undefined;
102
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
103
+ negativePrompt?: string | undefined;
104
+ imageUrls?: string[] | undefined;
105
+ allowText?: boolean | undefined;
106
+ } | undefined;
107
+ model?: string | undefined;
108
+ useCase?: string | undefined;
109
+ listModels?: boolean | undefined;
110
+ }>, {
111
+ input?: {
112
+ prompt: string;
113
+ text?: {
114
+ content: string;
115
+ font?: string | undefined;
116
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
117
+ }[] | undefined;
118
+ seconds?: number | undefined;
119
+ seed?: number | undefined;
120
+ n?: number | undefined;
121
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
122
+ negativePrompt?: string | undefined;
123
+ imageUrls?: string[] | undefined;
124
+ allowText?: boolean | undefined;
125
+ } | undefined;
126
+ model?: string | undefined;
127
+ useCase?: string | undefined;
128
+ listModels?: boolean | undefined;
129
+ }, {
130
+ input?: {
131
+ prompt: string;
132
+ text?: {
133
+ content: string;
134
+ font?: string | undefined;
135
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
136
+ }[] | undefined;
137
+ seconds?: number | undefined;
138
+ seed?: number | undefined;
139
+ n?: number | undefined;
140
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
141
+ negativePrompt?: string | undefined;
142
+ imageUrls?: string[] | undefined;
143
+ allowText?: boolean | undefined;
144
+ } | undefined;
145
+ model?: string | undefined;
146
+ useCase?: string | undefined;
147
+ listModels?: boolean | undefined;
148
+ }>;
149
+ export declare const GenerateArgsSchema: z.ZodEffects<z.ZodObject<{
150
+ model: z.ZodOptional<z.ZodString>;
151
+ useCase: z.ZodOptional<z.ZodString>;
152
+ input: z.ZodObject<{
153
+ prompt: z.ZodString;
154
+ aspect: z.ZodOptional<z.ZodEnum<["16:9", "9:16", "1:1", "4:5"]>>;
155
+ n: z.ZodOptional<z.ZodNumber>;
156
+ seed: z.ZodOptional<z.ZodNumber>;
157
+ negativePrompt: z.ZodOptional<z.ZodString>;
158
+ imageUrls: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
159
+ seconds: z.ZodOptional<z.ZodNumber>;
160
+ text: z.ZodOptional<z.ZodArray<z.ZodObject<{
161
+ content: z.ZodString;
162
+ role: z.ZodOptional<z.ZodEnum<["headline", "subhead", "caption", "cta", "label"]>>;
163
+ font: z.ZodOptional<z.ZodString>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ content: string;
166
+ font?: string | undefined;
167
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
168
+ }, {
169
+ content: string;
170
+ font?: string | undefined;
171
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
172
+ }>, "many">>;
173
+ allowText: z.ZodOptional<z.ZodBoolean>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ prompt: string;
176
+ text?: {
177
+ content: string;
178
+ font?: string | undefined;
179
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
180
+ }[] | undefined;
181
+ seconds?: number | undefined;
182
+ seed?: number | undefined;
183
+ n?: number | undefined;
184
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
185
+ negativePrompt?: string | undefined;
186
+ imageUrls?: string[] | undefined;
187
+ allowText?: boolean | undefined;
188
+ }, {
189
+ prompt: string;
190
+ text?: {
191
+ content: string;
192
+ font?: string | undefined;
193
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
194
+ }[] | undefined;
195
+ seconds?: number | undefined;
196
+ seed?: number | undefined;
197
+ n?: number | undefined;
198
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
199
+ negativePrompt?: string | undefined;
200
+ imageUrls?: string[] | undefined;
201
+ allowText?: boolean | undefined;
202
+ }>;
203
+ brief: z.ZodOptional<z.ZodString>;
204
+ designRef: z.ZodOptional<z.ZodObject<{
205
+ kind: z.ZodString;
206
+ id: z.ZodString;
207
+ }, "strip", z.ZodTypeAny, {
208
+ id: string;
209
+ kind: string;
210
+ }, {
211
+ id: string;
212
+ kind: string;
213
+ }>>;
214
+ place: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["cover", "contain"]>]>>;
215
+ timeoutSec: z.ZodOptional<z.ZodNumber>;
216
+ }, "strip", z.ZodTypeAny, {
217
+ input: {
218
+ prompt: string;
219
+ text?: {
220
+ content: string;
221
+ font?: string | undefined;
222
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
223
+ }[] | undefined;
224
+ seconds?: number | undefined;
225
+ seed?: number | undefined;
226
+ n?: number | undefined;
227
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
228
+ negativePrompt?: string | undefined;
229
+ imageUrls?: string[] | undefined;
230
+ allowText?: boolean | undefined;
231
+ };
232
+ place?: boolean | "contain" | "cover" | undefined;
233
+ model?: string | undefined;
234
+ useCase?: string | undefined;
235
+ brief?: string | undefined;
236
+ designRef?: {
237
+ id: string;
238
+ kind: string;
239
+ } | undefined;
240
+ timeoutSec?: number | undefined;
241
+ }, {
242
+ input: {
243
+ prompt: string;
244
+ text?: {
245
+ content: string;
246
+ font?: string | undefined;
247
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
248
+ }[] | undefined;
249
+ seconds?: number | undefined;
250
+ seed?: number | undefined;
251
+ n?: number | undefined;
252
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
253
+ negativePrompt?: string | undefined;
254
+ imageUrls?: string[] | undefined;
255
+ allowText?: boolean | undefined;
256
+ };
257
+ place?: boolean | "contain" | "cover" | undefined;
258
+ model?: string | undefined;
259
+ useCase?: string | undefined;
260
+ brief?: string | undefined;
261
+ designRef?: {
262
+ id: string;
263
+ kind: string;
264
+ } | undefined;
265
+ timeoutSec?: number | undefined;
266
+ }>, {
267
+ input: {
268
+ prompt: string;
269
+ text?: {
270
+ content: string;
271
+ font?: string | undefined;
272
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
273
+ }[] | undefined;
274
+ seconds?: number | undefined;
275
+ seed?: number | undefined;
276
+ n?: number | undefined;
277
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
278
+ negativePrompt?: string | undefined;
279
+ imageUrls?: string[] | undefined;
280
+ allowText?: boolean | undefined;
281
+ };
282
+ place?: boolean | "contain" | "cover" | undefined;
283
+ model?: string | undefined;
284
+ useCase?: string | undefined;
285
+ brief?: string | undefined;
286
+ designRef?: {
287
+ id: string;
288
+ kind: string;
289
+ } | undefined;
290
+ timeoutSec?: number | undefined;
291
+ }, {
292
+ input: {
293
+ prompt: string;
294
+ text?: {
295
+ content: string;
296
+ font?: string | undefined;
297
+ role?: "label" | "headline" | "subhead" | "caption" | "cta" | undefined;
298
+ }[] | undefined;
299
+ seconds?: number | undefined;
300
+ seed?: number | undefined;
301
+ n?: number | undefined;
302
+ aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
303
+ negativePrompt?: string | undefined;
304
+ imageUrls?: string[] | undefined;
305
+ allowText?: boolean | undefined;
306
+ };
307
+ place?: boolean | "contain" | "cover" | undefined;
308
+ model?: string | undefined;
309
+ useCase?: string | undefined;
310
+ brief?: string | undefined;
311
+ designRef?: {
312
+ id: string;
313
+ kind: string;
314
+ } | undefined;
315
+ timeoutSec?: number | undefined;
316
+ }>;
317
+ /** Injectable for tests: the network and the clock. */
318
+ export declare const generateDeps: {
319
+ fetch: (url: string, init?: RequestInit) => Promise<Response>;
320
+ sleep: (ms: number) => Promise<void>;
321
+ now: () => number;
322
+ };
323
+ export declare const generateHandlers: Record<string, (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>>;
324
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA6BlF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKyI,CAAC;AAEjL,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQkG,CAAC;AAElI,uDAAuD;AACvD,eAAO,MAAM,YAAY;iBACV,MAAM,SAAS,WAAW;gBAC3B,MAAM;;CAEnB,CAAC;AAoGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAqGhI,CAAC"}
@@ -0,0 +1,264 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, handleToolCall } from '../handlers.js';
3
+ import { ErrorCodes } from '../../types/schemas.js';
4
+ import { emitTextLayersPlacement } from '../../types/code-generator.js';
5
+ const GenerateInputSchema = z.object({
6
+ prompt: z.string().min(1),
7
+ aspect: z.enum(['16:9', '9:16', '1:1', '4:5']).optional(),
8
+ n: z.number().int().min(1).max(4).optional(),
9
+ seed: z.number().int().optional(),
10
+ negativePrompt: z.string().optional(),
11
+ // The cloud's own rule: https, or one of the org's own images as
12
+ // /scene-assets/<32 hex> — how a generated still becomes a video's start
13
+ // frame or a character reference without leaving the cloud.
14
+ imageUrls: z.array(z.string().refine((u) => /^https:\/\//.test(u) || /^\/scene-assets\/[0-9a-f]{32}$/.test(u), {
15
+ message: 'an https URL, or your own image as /scene-assets/<id> (the ref a generation returns)',
16
+ })).max(14).optional(),
17
+ // Video: clip length in seconds; each model allows its own set.
18
+ seconds: z.number().positive().max(60).optional(),
19
+ // WORDS ARE VECTOR: the plate comes back text-free and these come back as
20
+ // textLayers, to be added as real text. allowText (words drawn BY the model)
21
+ // is refused except on eval-tier models.
22
+ text: z.array(z.object({
23
+ content: z.string().min(1).max(500),
24
+ role: z.enum(['headline', 'subhead', 'caption', 'cta', 'label']).optional(),
25
+ font: z.string().max(80).optional(),
26
+ })).max(12).optional(),
27
+ allowText: z.boolean().optional(),
28
+ });
29
+ export const GenerateEstimateArgsSchema = z.object({
30
+ model: z.string().min(1).optional(),
31
+ useCase: z.string().min(1).optional(),
32
+ input: GenerateInputSchema.optional(),
33
+ listModels: z.boolean().optional(),
34
+ }).refine((v) => v.listModels || (v.input && (v.model || v.useCase)), { message: 'give input and a model or useCase — or listModels: true to see the models and their prices' });
35
+ export const GenerateArgsSchema = z.object({
36
+ model: z.string().min(1).optional(),
37
+ useCase: z.string().min(1).optional(),
38
+ input: GenerateInputSchema,
39
+ brief: z.string().max(2000).optional(),
40
+ designRef: z.object({ kind: z.string().min(1), id: z.string().min(1) }).optional(),
41
+ place: z.union([z.boolean(), z.enum(['cover', 'contain'])]).optional(),
42
+ timeoutSec: z.number().int().min(10).max(1800).optional(),
43
+ }).refine((v) => !!(v.model || v.useCase), { message: 'give a model (see pinepaper_generate_estimate listModels) or a useCase' });
44
+ /** Injectable for tests: the network and the clock. */
45
+ export const generateDeps = {
46
+ fetch: (url, init) => fetch(url, init),
47
+ sleep: (ms) => new Promise((r) => setTimeout(r, ms)),
48
+ now: () => Date.now(),
49
+ };
50
+ function cloudConfig() {
51
+ const key = (process.env.PINEPAPER_API_KEY || '').trim();
52
+ const base = (process.env.PINEPAPER_CLOUD_URL || 'https://cloud.pinepaper.studio').replace(/\/+$/, '');
53
+ if (!key) {
54
+ return { error: 'generation runs in the PinePaper cloud and needs a service-account key: set PINEPAPER_API_KEY (pp_sa_…, with the render:create scope) in this server\'s environment. Generation is an internal beta, enabled per organisation (the ai-media feature).' };
55
+ }
56
+ return { base, key };
57
+ }
58
+ /** What a refusal means, in the caller's terms. Every one says whether anything was charged. */
59
+ function explain(status, body) {
60
+ const said = String(body?.error || body?.detail || body?.title || '').trim();
61
+ const code = String(body?.code || body?.type || '').toUpperCase();
62
+ if (status === 401)
63
+ return 'the cloud did not accept PINEPAPER_API_KEY (invalid or revoked). Nothing was charged.';
64
+ if (status === 403 && /INSUFFICIENT_SCOPE/.test(code))
65
+ return `this key lacks the render:create scope that generation needs. ${said} Nothing was charged.`;
66
+ if (status === 403)
67
+ return 'generation (ai-media) is not enabled for your organisation — it is an internal beta, granted per organisation. Ask the PinePaper team for access. Nothing was charged.';
68
+ if (status === 402)
69
+ return `${said || 'not enough credits, or a spend cap was reached'}. Nothing was charged.`;
70
+ if (status === 422)
71
+ return `the request was refused as invalid: ${said || 'check model, aspect, n and imageUrls'}.`;
72
+ if (status === 503)
73
+ return said || 'generation is unavailable on this deployment right now. Nothing was charged.';
74
+ return `${said || 'the cloud refused the request'} (HTTP ${status}).`;
75
+ }
76
+ async function call(cfg, method, path, body) {
77
+ let res;
78
+ try {
79
+ res = await generateDeps.fetch(cfg.base + path, {
80
+ method,
81
+ headers: { Authorization: `Bearer ${cfg.key}`, ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}), 'User-Agent': 'PinePaper-MCP' },
82
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
83
+ });
84
+ }
85
+ catch (e) {
86
+ return { ok: false, message: `could not reach ${cfg.base}: ${e instanceof Error ? e.message : String(e)}. Nothing was charged.` };
87
+ }
88
+ let json = {};
89
+ try {
90
+ json = await res.json();
91
+ }
92
+ catch { /* a non-JSON body is described by its status */ }
93
+ if (!res.ok)
94
+ return { ok: false, status: res.status, code: json?.code, message: explain(res.status, json) };
95
+ return { ok: true, status: res.status, body: json };
96
+ }
97
+ const text = (v) => ({ content: [{ type: 'text', text: JSON.stringify(v, null, 2) }] });
98
+ const fail = (r) => errorResult(r.status === 422 ? ErrorCodes.INVALID_PARAMS : ErrorCodes.EXECUTION_ERROR, r.message, { ...(r.status ? { status: r.status } : {}), ...(r.code ? { code: r.code } : {}) });
99
+ const jobBody = (a) => ({
100
+ ...(a.model ? { model: a.model } : {}), ...(a.useCase ? { useCase: a.useCase } : {}), input: a.input,
101
+ });
102
+ /**
103
+ * Bring the first asset into the studio, fitted to the canvas: an image as an
104
+ * image item, a video (it has a duration) as a video layer. The fit is
105
+ * computed in the page from the placed item's own bounds, never from the
106
+ * requested aspect: models deliver their own sizes (2752x1536 is 1.79, not
107
+ * 16:9), and those are what fill the frame.
108
+ */
109
+ async function placeAsset(cfg, asset, mode, options) {
110
+ let res;
111
+ try {
112
+ res = await generateDeps.fetch(`${cfg.base}/v1/assets/${encodeURIComponent(asset.assetId)}`, { headers: { Authorization: `Bearer ${cfg.key}` } });
113
+ }
114
+ catch (e) {
115
+ return { placed: false, error: `could not download the asset: ${e instanceof Error ? e.message : String(e)}` };
116
+ }
117
+ if (!res.ok)
118
+ return { placed: false, error: `the cloud refused the asset download (HTTP ${res.status})` };
119
+ const type = (res.headers.get('content-type') || '').split(';')[0].trim();
120
+ const isVideo = typeof asset.durationSeconds === 'number' || type.startsWith('video/');
121
+ const dataUrl = `data:${type || (isVideo ? 'video/mp4' : 'image/png')};base64,${Buffer.from(await res.arrayBuffer()).toString('base64')}`;
122
+ const placedRes = isVideo
123
+ ? await handleToolCall('pinepaper_media', { action: 'upload_video', url: dataUrl }, options)
124
+ : await handleToolCall('pinepaper_import_image', { url: dataUrl }, options);
125
+ const placedText = (placedRes.content ?? []).map((c) => ('text' in c ? c.text : '')).join('\n');
126
+ const ref = isVideo
127
+ ? (/"registryId":\s*"([^"]+)"/.exec(placedText)?.[1] ?? /"id":\s*"([^"]+)"/.exec(placedText)?.[1])
128
+ : /"itemId":\s*"([^"]+)"/.exec(placedText)?.[1];
129
+ if (placedRes.isError || !ref)
130
+ return { placed: false, kind: isVideo ? 'video' : 'image', error: `generated, but could not be placed: ${placedText.slice(0, 300)}` };
131
+ // Cover fills the canvas (the overflow is outside the frame); contain fits
132
+ // inside it. Centred either way. A video's media id resolves to its item.
133
+ const fit = await handleToolCall('pinepaper_execute_custom_code', {
134
+ code: `let it = app.getItemById(${JSON.stringify(ref)});
135
+ if (!it && window.PinePaperAgent && typeof window.PinePaperAgent.listMedia === 'function') {
136
+ const m = window.PinePaperAgent.listMedia().find(function(x) { return x.id === ${JSON.stringify(ref)} || x.registryId === ${JSON.stringify(ref)}; });
137
+ if (m) it = app.getItemById(m.registryId);
138
+ }
139
+ const cs = app.getCanvasSize(); const b = it && it.bounds;
140
+ if (!it || !b || !(b.width > 0)) return { fitted: false };
141
+ const s = ${mode === 'cover' ? 'Math.max' : 'Math.min'}(cs.width / b.width, cs.height / b.height);
142
+ it.scale(s); it.position = new paper.Point(cs.width / 2, cs.height / 2);
143
+ return { fitted: true, width: Math.round(it.bounds.width), height: Math.round(it.bounds.height) };`,
144
+ }, options);
145
+ return {
146
+ placed: true, kind: isVideo ? 'video' : 'image', itemId: ref, fit: mode,
147
+ ...(isVideo ? { durationSeconds: asset.durationSeconds, ...(asset.fps ? { fps: asset.fps } : {}) } : {}),
148
+ ...(fit.isError ? { fitNote: 'placed at its own size; fitting it to the canvas failed' } : {}),
149
+ };
150
+ }
151
+ export const generateHandlers = {
152
+ 'pinepaper_generate_estimate': async (args) => {
153
+ const a = GenerateEstimateArgsSchema.parse(args);
154
+ const cfg = cloudConfig();
155
+ if ('error' in cfg)
156
+ return errorResult(ErrorCodes.INVALID_PARAMS, cfg.error);
157
+ const out = {};
158
+ if (a.listModels) {
159
+ const m = await call(cfg, 'GET', '/v1/generate/models');
160
+ if (!m.ok)
161
+ return fail(m);
162
+ out.models = m.body.models;
163
+ out.defaults = m.body.defaults;
164
+ out.available = m.body.available;
165
+ }
166
+ if (a.input) {
167
+ const e = await call(cfg, 'POST', '/v1/generate:estimate', jobBody(a));
168
+ if (!e.ok)
169
+ return fail(e);
170
+ out.estimate = e.body.estimate;
171
+ }
172
+ return text({ success: true, free: true, ...out });
173
+ },
174
+ 'pinepaper_generate': async (args, options) => {
175
+ const a = GenerateArgsSchema.parse(args);
176
+ const cfg = cloudConfig();
177
+ if ('error' in cfg)
178
+ return errorResult(ErrorCodes.INVALID_PARAMS, cfg.error);
179
+ // brief and designRef always travel: the cloud records each generation as
180
+ // a node in the design graph, and they are what tie it to the design.
181
+ const submitted = await call(cfg, 'POST', '/v1/generate', { ...jobBody(a), ...(a.brief ? { brief: a.brief } : {}), ...(a.designRef ? { designRef: a.designRef } : {}) });
182
+ if (!submitted.ok)
183
+ return fail(submitted);
184
+ const jobId = submitted.body?.job?.id;
185
+ const est = submitted.body?.estimate;
186
+ if (!jobId)
187
+ return errorResult(ErrorCodes.EXECUTION_ERROR, 'the cloud accepted the job but returned no id to poll', { response: submitted.body });
188
+ // Poll to a terminal state. Stills take seconds; video will take minutes,
189
+ // so the budget is the caller's (timeoutSec), backing off 2 s → 10 s.
190
+ const deadline = generateDeps.now() + (a.timeoutSec ?? 180) * 1000;
191
+ let wait = 2000;
192
+ let job = submitted.body.job;
193
+ while (!['done', 'failed', 'refused'].includes(job.status)) {
194
+ if (generateDeps.now() >= deadline) {
195
+ return text({ success: false, pending: true, jobId, status: job.status, estimate: est,
196
+ note: `still ${job.status} after ${a.timeoutSec ?? 180} s. It keeps running in the cloud and is charged only if it delivers; call pinepaper_generate_status {jobId: "${jobId}"} to collect it (or retry with a larger timeoutSec — video can take minutes).` });
197
+ }
198
+ await generateDeps.sleep(wait);
199
+ wait = Math.min(10_000, Math.round(wait * 1.5));
200
+ // Polling is a GET, safe to repeat: one retry on a 5xx or an unreachable
201
+ // cloud before it is reported (a transient 500 mid-job failed a run
202
+ // that the rerun passed).
203
+ let polled = await call(cfg, 'GET', `/v1/generate/${encodeURIComponent(jobId)}`);
204
+ if (!polled.ok && (polled.status === undefined || polled.status >= 500)) {
205
+ await generateDeps.sleep(3000);
206
+ polled = await call(cfg, 'GET', `/v1/generate/${encodeURIComponent(jobId)}`);
207
+ }
208
+ if (!polled.ok)
209
+ return fail({ ...polled, message: `${polled.message} The job ${jobId} may still finish: collect it with pinepaper_generate_status.` });
210
+ job = polled.body.job ?? job;
211
+ }
212
+ if (job.status !== 'done') {
213
+ return errorResult(job.status === 'refused' ? ErrorCodes.INVALID_PARAMS : ErrorCodes.EXECUTION_ERROR, String(job.error || (job.status === 'refused' ? "the model's safety filter refused this. Nothing was charged." : 'the generation failed. Nothing was charged.')), { jobId, status: job.status });
214
+ }
215
+ const assets = (job.assets ?? []);
216
+ const result = {
217
+ success: true, jobId, model: job.model, assets, chargedUsd: job.chargedUsd,
218
+ ...(job.filtered ? { filtered: job.filtered, filteredNote: `${job.filtered} output(s) were removed by the safety filter and not charged.` } : {}),
219
+ // A model may choose its own size for an aspect (nano-banana-pro: 928x1152
220
+ // for 4:5); the sizes above are the files', not the request's.
221
+ ...(est?.notes ? { notes: est.notes } : {}),
222
+ ...(Array.isArray(job.textLayers) && job.textLayers.length ? { textLayers: job.textLayers, hint: job.hint } : {}),
223
+ };
224
+ if (a.place && assets.length) {
225
+ const placement = await placeAsset(cfg, assets[0], a.place === 'contain' ? 'contain' : 'cover', options);
226
+ // The words, as real text over the plate (role layout, title-safe,
227
+ // contrast-checked against the plate). Their ids come back to restyle.
228
+ if (placement.placed && Array.isArray(job.textLayers) && job.textLayers.length) {
229
+ const laid = await handleToolCall('pinepaper_execute_custom_code', { code: emitTextLayersPlacement(job.textLayers, String(placement.itemId)) }, options);
230
+ // The first text block is the executed result as JSON: {success, result}.
231
+ const first = laid.content?.[0];
232
+ let body = null;
233
+ try {
234
+ body = first && 'text' in first ? JSON.parse(first.text) : null;
235
+ }
236
+ catch {
237
+ body = null;
238
+ }
239
+ const items = body?.result?.textItems;
240
+ placement.text = laid.isError || !Array.isArray(items)
241
+ ? { placed: false, error: (first && 'text' in first ? first.text : '').slice(0, 300) }
242
+ : { placed: true, items, ...(body?.result?.fonts?.length ? { fonts: body.result.fonts } : {}) };
243
+ }
244
+ result.placement = placement;
245
+ }
246
+ return text(result);
247
+ },
248
+ 'pinepaper_generate_status': async (args, options) => {
249
+ const a = z.object({ jobId: z.string().min(1), place: z.union([z.boolean(), z.enum(['cover', 'contain'])]).optional() }).parse(args);
250
+ const cfg = cloudConfig();
251
+ if ('error' in cfg)
252
+ return errorResult(ErrorCodes.INVALID_PARAMS, cfg.error);
253
+ const polled = await call(cfg, 'GET', `/v1/generate/${encodeURIComponent(a.jobId)}`);
254
+ if (!polled.ok)
255
+ return fail(polled);
256
+ const job = polled.body.job ?? {};
257
+ const out = { success: job.status === 'done', jobId: a.jobId, status: job.status, ...(job.assets ? { assets: job.assets } : {}),
258
+ ...(job.chargedUsd != null ? { chargedUsd: job.chargedUsd } : {}), ...(job.error ? { error: job.error } : {}) };
259
+ if (job.status === 'done' && a.place && job.assets?.length)
260
+ out.placement = await placeAsset(cfg, job.assets[0], a.place === 'contain' ? 'contain' : 'cover', options);
261
+ return text(out);
262
+ },
263
+ };
264
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/tools/handlers/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}