@pinepaper.studio/mcp-server 1.6.15 → 1.6.17
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.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.hi.md +1 -1
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +110 -4
- package/README.pt-BR.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/build-info.json +2 -2
- package/dist/ontology/upstream-vocabulary.d.ts +2 -2
- package/dist/ontology/upstream-vocabulary.js +2 -2
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +164 -19
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/engine-methods.d.ts.map +1 -1
- package/dist/tools/engine-methods.js +4 -0
- package/dist/tools/engine-methods.js.map +1 -1
- package/dist/tools/engine-surface.d.ts +1 -1
- package/dist/tools/engine-surface.d.ts.map +1 -1
- package/dist/tools/engine-surface.js +30 -9
- package/dist/tools/engine-surface.js.map +1 -1
- package/dist/tools/handlers/beats.d.ts +64 -0
- package/dist/tools/handlers/beats.d.ts.map +1 -0
- package/dist/tools/handlers/beats.js +83 -0
- package/dist/tools/handlers/beats.js.map +1 -0
- package/dist/tools/handlers/camera.d.ts.map +1 -1
- package/dist/tools/handlers/camera.js +11 -0
- package/dist/tools/handlers/camera.js.map +1 -1
- package/dist/tools/handlers/generate.d.ts +324 -0
- package/dist/tools/handlers/generate.d.ts.map +1 -0
- package/dist/tools/handlers/generate.js +264 -0
- package/dist/tools/handlers/generate.js.map +1 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +79 -9
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts.map +1 -1
- package/dist/tools/minimal-descriptions.js +5 -0
- package/dist/tools/minimal-descriptions.js.map +1 -1
- package/dist/tools/shape-params.d.ts +2 -2
- package/dist/tools/shape-params.js +2 -2
- package/dist/tools/stick-vocabulary.d.ts +1 -1
- package/dist/tools/stick-vocabulary.js +1 -1
- package/dist/tools/toolkits.d.ts.map +1 -1
- package/dist/tools/toolkits.js +5 -0
- package/dist/tools/toolkits.js.map +1 -1
- package/dist/types/code-generator.d.ts +38 -0
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +552 -44
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +614 -82
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +53 -21
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/a11y.d.ts +2 -0
- package/dist/utils/a11y.d.ts.map +1 -1
- package/dist/utils/a11y.js +1 -1
- package/dist/utils/a11y.js.map +1 -1
- package/dist/utils/beats.d.ts +58 -0
- package/dist/utils/beats.d.ts.map +1 -0
- package/dist/utils/beats.js +110 -0
- package/dist/utils/beats.js.map +1 -0
- package/dist/utils/svg-size.d.ts +22 -0
- package/dist/utils/svg-size.d.ts.map +1 -0
- package/dist/utils/svg-size.js +43 -0
- package/dist/utils/svg-size.js.map +1 -0
- package/dist/vendor/design/design-style.js +1 -1
- package/manifest.json +21 -1
- package/package.json +1 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pinepaper_beat_cuts (plan B2): music → audio_beats analysis → a beat grid →
|
|
3
|
+
* cut points on beats or bars, and optionally a clip split at each one.
|
|
4
|
+
*
|
|
5
|
+
* Orchestrated here through the real tools (audio_beats analyze, media
|
|
6
|
+
* split), so their checks apply: large sources are staged, ids resolve,
|
|
7
|
+
* a refused split is named.
|
|
8
|
+
*/
|
|
9
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { type HandlerOptions } from '../handlers.js';
|
|
12
|
+
export declare const BeatCutsArgsSchema: z.ZodEffects<z.ZodObject<{
|
|
13
|
+
source: z.ZodOptional<z.ZodString>;
|
|
14
|
+
beats: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
|
|
15
|
+
bpm: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
bpmHint: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
17
|
+
every: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["beat", "bar"]>, z.ZodNumber]>>;
|
|
18
|
+
beatsPerBar: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
range: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
|
|
20
|
+
clipId: z.ZodOptional<z.ZodString>;
|
|
21
|
+
includeOnsets: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
|
23
|
+
every?: number | "bar" | "beat" | undefined;
|
|
24
|
+
source?: string | undefined;
|
|
25
|
+
beats?: number[] | undefined;
|
|
26
|
+
range?: [number, number] | undefined;
|
|
27
|
+
bpm?: number | undefined;
|
|
28
|
+
bpmHint?: [number, number] | undefined;
|
|
29
|
+
includeOnsets?: boolean | undefined;
|
|
30
|
+
beatsPerBar?: number | undefined;
|
|
31
|
+
clipId?: string | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
every?: number | "bar" | "beat" | undefined;
|
|
34
|
+
source?: string | undefined;
|
|
35
|
+
beats?: number[] | undefined;
|
|
36
|
+
range?: [number, number] | undefined;
|
|
37
|
+
bpm?: number | undefined;
|
|
38
|
+
bpmHint?: [number, number] | undefined;
|
|
39
|
+
includeOnsets?: boolean | undefined;
|
|
40
|
+
beatsPerBar?: number | undefined;
|
|
41
|
+
clipId?: string | undefined;
|
|
42
|
+
}>, {
|
|
43
|
+
every?: number | "bar" | "beat" | undefined;
|
|
44
|
+
source?: string | undefined;
|
|
45
|
+
beats?: number[] | undefined;
|
|
46
|
+
range?: [number, number] | undefined;
|
|
47
|
+
bpm?: number | undefined;
|
|
48
|
+
bpmHint?: [number, number] | undefined;
|
|
49
|
+
includeOnsets?: boolean | undefined;
|
|
50
|
+
beatsPerBar?: number | undefined;
|
|
51
|
+
clipId?: string | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
every?: number | "bar" | "beat" | undefined;
|
|
54
|
+
source?: string | undefined;
|
|
55
|
+
beats?: number[] | undefined;
|
|
56
|
+
range?: [number, number] | undefined;
|
|
57
|
+
bpm?: number | undefined;
|
|
58
|
+
bpmHint?: [number, number] | undefined;
|
|
59
|
+
includeOnsets?: boolean | undefined;
|
|
60
|
+
beatsPerBar?: number | undefined;
|
|
61
|
+
clipId?: string | undefined;
|
|
62
|
+
}>;
|
|
63
|
+
export declare const beatHandlers: Record<string, (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>>;
|
|
64
|
+
//# sourceMappingURL=beats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beats.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/beats.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiD,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIpG,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU2F,CAAC;AAO3H,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CA2D5H,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { errorResult, getExecutionMode, handleToolCall } from '../handlers.js';
|
|
3
|
+
import { ErrorCodes } from '../../types/schemas.js';
|
|
4
|
+
import { beatGrid, cutPoints, tempoCandidates } from '../../utils/beats.js';
|
|
5
|
+
export const BeatCutsArgsSchema = z.object({
|
|
6
|
+
source: z.string().min(1).optional(),
|
|
7
|
+
beats: z.array(z.number().min(0)).optional(),
|
|
8
|
+
bpm: z.number().positive().max(400).optional(),
|
|
9
|
+
bpmHint: z.tuple([z.number().positive(), z.number().positive()]).optional(),
|
|
10
|
+
every: z.union([z.enum(['beat', 'bar']), z.number().int().min(1).max(64)]).optional(),
|
|
11
|
+
beatsPerBar: z.number().int().min(1).max(16).optional(),
|
|
12
|
+
range: z.tuple([z.number().min(0), z.number().min(0)]).optional(),
|
|
13
|
+
clipId: z.string().min(1).optional(),
|
|
14
|
+
includeOnsets: z.boolean().optional(),
|
|
15
|
+
}).refine((v) => !!(v.source || v.beats), { message: 'give source (music to analyse) or beats (times you already have)' });
|
|
16
|
+
const firstJson = (r) => {
|
|
17
|
+
const c = r.content?.[0];
|
|
18
|
+
try {
|
|
19
|
+
return c && 'text' in c ? JSON.parse(c.text) : null;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export const beatHandlers = {
|
|
26
|
+
'pinepaper_beat_cuts': async (args, options) => {
|
|
27
|
+
const a = BeatCutsArgsSchema.parse(args);
|
|
28
|
+
let beats = a.beats ? [...a.beats].sort((x, y) => x - y) : null;
|
|
29
|
+
let bpm = a.bpm ?? null;
|
|
30
|
+
let grid = null;
|
|
31
|
+
if (!beats) {
|
|
32
|
+
if ((options.executionMode ?? getExecutionMode()) === 'code' || !options.executeInBrowser) {
|
|
33
|
+
return errorResult(ErrorCodes.VALIDATION_ERROR, 'beat_cuts analyses the music in the studio, so it needs a live studio — or pass beats (times in seconds) you already have.');
|
|
34
|
+
}
|
|
35
|
+
const analysed = await handleToolCall('pinepaper_audio_beats', { action: 'analyze', source: a.source }, options);
|
|
36
|
+
const body = firstJson(analysed);
|
|
37
|
+
const r = body?.result ?? body;
|
|
38
|
+
if (analysed.isError || !r || r.success === false || !Array.isArray(r.onsets) || !(r.bpm > 0)) {
|
|
39
|
+
return errorResult(ErrorCodes.EXECUTION_ERROR, `the music could not be analysed: ${(r && r.error) || JSON.stringify(body).slice(0, 300)}`);
|
|
40
|
+
}
|
|
41
|
+
const duration = Number(r.duration) || Math.max(...r.onsets, 0);
|
|
42
|
+
// The studio's tempo can lock onto a related one (a 120 track read as
|
|
43
|
+
// 162 = 4:3). Its usual confusions are scored against the onsets and
|
|
44
|
+
// the best is used — or the caller's bpm, or the best inside bpmHint.
|
|
45
|
+
const candidates = tempoCandidates(r.onsets, r.bpm, duration, a.bpmHint);
|
|
46
|
+
const chosen = a.bpm ?? candidates[0]?.bpm ?? r.bpm;
|
|
47
|
+
const g = beatGrid(r.onsets, chosen, duration);
|
|
48
|
+
beats = g.beats;
|
|
49
|
+
bpm = g.bpm;
|
|
50
|
+
const conf = candidates.find((c) => c.bpm === Math.round(chosen * 10) / 10)?.confidence ?? null;
|
|
51
|
+
grid = { bpm: g.bpm, phase: g.phase, period: Math.round(g.period * 1000) / 1000, confidence: conf, detected: { bpm: r.bpm, confidence: r.confidence }, duration: r.duration,
|
|
52
|
+
candidates: candidates.slice(0, 4), ...(a.includeOnsets ? { onsets: r.onsets } : {}), ...(a.bpm ? { bpmFrom: 'caller' } : a.bpmHint ? { bpmFrom: 'bpmHint' } : { bpmFrom: 'best candidate' }) };
|
|
53
|
+
if (!a.bpm && (conf === null || conf < 0.4)) {
|
|
54
|
+
grid.lowConfidence = true;
|
|
55
|
+
grid.warning = `the tempo is uncertain (confidence ${conf ?? 'unknown'} at ${g.bpm} bpm; the studio detected ${r.bpm} at ${r.confidence}). If you know it, pass bpm (or bpmHint: [min, max]); the candidates above are the likely alternatives.`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const cuts = cutPoints(beats, a.every ?? 'beat', a.beatsPerBar ?? 4, a.range);
|
|
59
|
+
const out = { success: true, every: a.every ?? 'beat', ...(bpm ? { bpm } : {}), ...(grid ? { grid } : {}), cuts, count: cuts.length };
|
|
60
|
+
// Split a clip at each cut, in order: each split leaves the rest of the clip
|
|
61
|
+
// on the right-hand piece, which is where the next cut falls.
|
|
62
|
+
if (a.clipId && cuts.length) {
|
|
63
|
+
const pieces = [a.clipId];
|
|
64
|
+
let current = a.clipId;
|
|
65
|
+
const refused = [];
|
|
66
|
+
for (const at of cuts) {
|
|
67
|
+
const r = await handleToolCall('pinepaper_media', { action: 'split', id: current, at }, options);
|
|
68
|
+
const body = firstJson(r);
|
|
69
|
+
const res = body?.result ?? body;
|
|
70
|
+
if (r.isError || !res || res.success === false) {
|
|
71
|
+
const e = res?.error;
|
|
72
|
+
refused.push({ at, reason: typeof e === 'string' ? e : (e?.message ?? JSON.stringify(e ?? 'refused')) });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
current = res.rightId ?? current;
|
|
76
|
+
pieces.push(current);
|
|
77
|
+
}
|
|
78
|
+
out.split = { clipId: a.clipId, pieces, made: pieces.length - 1, ...(refused.length ? { skipped: refused, note: 'cuts outside the clip (before its start or after its end) are skipped.' } : {}) };
|
|
79
|
+
}
|
|
80
|
+
return { content: [{ type: 'text', text: JSON.stringify(out, null, 2) }] };
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=beats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beats.js","sourceRoot":"","sources":["../../../src/tools/handlers/beats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/camera.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrF,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAoF7B,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/camera.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrF,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAoF7B,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAuDxD,CAAC"}
|
|
@@ -85,6 +85,17 @@ async function dispatchCameraAction(args, options) {
|
|
|
85
85
|
export const cameraHandlers = {
|
|
86
86
|
pinepaper_camera_animate: async (args, options) => {
|
|
87
87
|
const keyframes = args.keyframes;
|
|
88
|
+
// The handler takes its args unparsed, so a missing keyframes array
|
|
89
|
+
// reached JSON.parse(JSON.stringify(undefined)) and came back as a raw
|
|
90
|
+
// SyntaxError (external review, 1.6.15). Checked here and named.
|
|
91
|
+
if (!Array.isArray(keyframes) || keyframes.length === 0) {
|
|
92
|
+
return errorResult(ErrorCodes.INVALID_INPUT, 'keyframes is required: a non-empty array of { time (seconds), zoom?, center?: [x, y], pitch?, yaw?, easing? }. '
|
|
93
|
+
+ 'For a single move without keyframes use pinepaper_camera (zoom / pan / move_to), or pinepaper_camera_director for a shot list.');
|
|
94
|
+
}
|
|
95
|
+
const badKey = keyframes.findIndex((k) => !k || typeof k !== 'object' || typeof k.time !== 'number' || !Number.isFinite(k.time) || k.time < 0);
|
|
96
|
+
if (badKey >= 0) {
|
|
97
|
+
return errorResult(ErrorCodes.INVALID_INPUT, `keyframes[${badKey}] needs a numeric time (seconds, >= 0); got ${JSON.stringify(keyframes[badKey])}.`);
|
|
98
|
+
}
|
|
88
99
|
// Optional (retest): omitted, the camera runs to its last keyframe. The
|
|
89
100
|
// last key's time is passed rather than nothing, so every studio does the
|
|
90
101
|
// same — a newer engine infers it, an older one clamped at 2 s.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/tools/handlers/camera.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"camera.js","sourceRoot":"","sources":["../../../src/tools/handlers/camera.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAuB,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOpD,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,UAAU;IACjB,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,SAAS;CACP,CAAC;AAEX,KAAK,UAAU,oBAAoB,CAAC,IAA6B,EAAE,OAAuB;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;IACrC,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAmB,IAAI,GAAG,CAAC;IAElD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAyB,CAAC;YACjD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBAC9C,OAAO,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,8CAA8C,CAAC,CAAC;YAC/F,CAAC;YACD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,MAAM,IAAI,GAAG,4BAA4B,MAAM,iBAAiB,MAAM,IAAI,KAAK,KAAK,QAAQ,WAAW,CAAC;YACxG,OAAO,iBAAiB,CAAC,IAAI,EAAE,eAAe,SAAS,OAAO,KAAK,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACvG,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,SAAyD,CAAC;YACjF,MAAM,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAI,GAAG,CAAC;YAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAuB,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAuB,CAAC;YAEvC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,qDAAqD,CAAC,KAAK,CAAC,KAAK,QAAQ,WAAW,CAAC;gBAClG,OAAO,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC5F,CAAC;YACD,IAAI,SAAS,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,4BAA4B,MAAM,iBAAiB,MAAM,IAAI,MAAM,KAAK,QAAQ,WAAW,CAAC;gBACzG,OAAO,iBAAiB,CAAC,IAAI,EAAE,cAAc,SAAS,OAAO,MAAM,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACxG,CAAC;YACD,OAAO,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,iFAAiF,CAAC,CAAC;QAClI,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,IAAI,CAAC,CAAW,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAW,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;YACjC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/E,OAAO,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,sCAAsC,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,IAAI,GAAG,uDAAuD,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,QAAQ,WAAW,CAAC;YAC7G,OAAO,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC9G,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,qDAAqD,QAAQ,WAAW,CAAC;YACtF,OAAO,iBAAiB,CAAC,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC/F,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,2DAA2D,CAAC;YACzE,OAAO,iBAAiB,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACvF,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,kHAAkH,CAAC;YAChI,OAAO,iBAAiB,CAAC,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC1F,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,sEAAsE;YACtE,8DAA8D;YAC9D,MAAM,IAAI,GAAG,qCAAqC,CAAC;YACnD,OAAO,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACrF,CAAC;QAED;YACE,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,0BAA0B,MAAM,qHAAqH,CACtJ,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAOrB,CAAC;QACH,oEAAoE;QACpE,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,iHAAiH;kBAC/G,gIAAgI,CACnI,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC/I,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,WAAW,CAChB,UAAU,CAAC,aAAa,EACxB,aAAa,MAAM,+CAA+C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CACvG,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1H,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChI,MAAM,IAAI,GAAI,IAAI,CAAC,IAAgB,IAAI,KAAK,CAAC;QAC7C,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc,IAAI,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,SAAS,GAA4B,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/G,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/C,0EAA0E;QAC1E,mDAAmD;QACnD,0EAA0E;QAC1E,sEAAsE;QACtE,kEAAkE;QAClE,MAAM,MAAM,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3I,MAAM,IAAI,GAAG;;oEAEmD,YAAY,KAAK,QAAQ,KAAK,IAAI,KAAK,KAAK,YAAY,GAAG,gEAAgE,YAAY;4DAC/I,SAAS,CAAC,MAAM;MACtE,MAAM;MACN,CAAC;QACH,OAAO,iBAAiB,CAAC,IAAI,EAAE,wBAAwB,SAAS,CAAC,MAAM,mBAAmB,QAAQ,GAAG,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC;IAC9I,CAAC;IAED,gBAAgB,EAAE,oBAAoB;CACvC,CAAC"}
|
|
@@ -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"}
|