@pinepaper.studio/mcp-server 1.6.22 → 1.6.24

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 (110) 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 +115 -5
  8. package/README.pt-BR.md +1 -1
  9. package/README.zh-CN.md +1 -1
  10. package/SECURITY.md +46 -0
  11. package/dist/agent/types.d.ts +114 -106
  12. package/dist/agent/types.d.ts.map +1 -1
  13. package/dist/agent/types.js +1 -1
  14. package/dist/agent/types.js.map +1 -1
  15. package/dist/browser/puppeteer-controller.js +2 -2
  16. package/dist/browser/puppeteer-controller.js.map +1 -1
  17. package/dist/build-info.json +2 -2
  18. package/dist/design/design-systems.d.ts +50 -0
  19. package/dist/design/design-systems.d.ts.map +1 -1
  20. package/dist/design/design-systems.js +220 -35
  21. package/dist/design/design-systems.js.map +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +13 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/ontology/hints.d.ts.map +1 -1
  26. package/dist/ontology/hints.js +5 -1
  27. package/dist/ontology/hints.js.map +1 -1
  28. package/dist/ontology/upstream-vocabulary.d.ts +1 -1
  29. package/dist/ontology/upstream-vocabulary.js +1 -1
  30. package/dist/ontology/vocabulary.d.ts.map +1 -1
  31. package/dist/ontology/vocabulary.js +1 -0
  32. package/dist/ontology/vocabulary.js.map +1 -1
  33. package/dist/tools/batch-macros.d.ts +27 -0
  34. package/dist/tools/batch-macros.d.ts.map +1 -0
  35. package/dist/tools/batch-macros.js +157 -0
  36. package/dist/tools/batch-macros.js.map +1 -0
  37. package/dist/tools/choreograph.d.ts +4 -0
  38. package/dist/tools/choreograph.d.ts.map +1 -1
  39. package/dist/tools/choreograph.js +12 -2
  40. package/dist/tools/choreograph.js.map +1 -1
  41. package/dist/tools/compact-descriptions.js +3 -3
  42. package/dist/tools/compact-descriptions.js.map +1 -1
  43. package/dist/tools/definitions.d.ts.map +1 -1
  44. package/dist/tools/definitions.js +122 -15
  45. package/dist/tools/definitions.js.map +1 -1
  46. package/dist/tools/engine-lists.d.ts +2 -2
  47. package/dist/tools/engine-lists.js +2 -2
  48. package/dist/tools/engine-methods.d.ts.map +1 -1
  49. package/dist/tools/engine-methods.js +3 -0
  50. package/dist/tools/engine-methods.js.map +1 -1
  51. package/dist/tools/engine-surface.d.ts +1 -1
  52. package/dist/tools/engine-surface.d.ts.map +1 -1
  53. package/dist/tools/engine-surface.js +52 -6
  54. package/dist/tools/engine-surface.js.map +1 -1
  55. package/dist/tools/export-file-check.d.ts +31 -0
  56. package/dist/tools/export-file-check.d.ts.map +1 -0
  57. package/dist/tools/export-file-check.js +103 -0
  58. package/dist/tools/export-file-check.js.map +1 -0
  59. package/dist/tools/export-file-receipt.d.ts +56 -0
  60. package/dist/tools/export-file-receipt.d.ts.map +1 -0
  61. package/dist/tools/export-file-receipt.js +151 -0
  62. package/dist/tools/export-file-receipt.js.map +1 -0
  63. package/dist/tools/handlers/beats.d.ts +7 -44
  64. package/dist/tools/handlers/beats.d.ts.map +1 -1
  65. package/dist/tools/handlers/export.d.ts.map +1 -1
  66. package/dist/tools/handlers/export.js +31 -6
  67. package/dist/tools/handlers/export.js.map +1 -1
  68. package/dist/tools/handlers/generate.d.ts +41 -270
  69. package/dist/tools/handlers/generate.d.ts.map +1 -1
  70. package/dist/tools/handlers.d.ts +84 -1
  71. package/dist/tools/handlers.d.ts.map +1 -1
  72. package/dist/tools/handlers.js +389 -82
  73. package/dist/tools/handlers.js.map +1 -1
  74. package/dist/tools/lane.d.ts +34 -0
  75. package/dist/tools/lane.d.ts.map +1 -0
  76. package/dist/tools/lane.js +210 -0
  77. package/dist/tools/lane.js.map +1 -0
  78. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  79. package/dist/tools/minimal-descriptions.js +3 -2
  80. package/dist/tools/minimal-descriptions.js.map +1 -1
  81. package/dist/tools/nested-ignored.d.ts +16 -0
  82. package/dist/tools/nested-ignored.d.ts.map +1 -0
  83. package/dist/tools/nested-ignored.js +83 -0
  84. package/dist/tools/nested-ignored.js.map +1 -0
  85. package/dist/tools/shape-params.d.ts +2 -2
  86. package/dist/tools/shape-params.d.ts.map +1 -1
  87. package/dist/tools/shape-params.js +9 -2
  88. package/dist/tools/shape-params.js.map +1 -1
  89. package/dist/tools/stick-vocabulary.d.ts +4 -4
  90. package/dist/tools/stick-vocabulary.d.ts.map +1 -1
  91. package/dist/tools/stick-vocabulary.js +8 -4
  92. package/dist/tools/stick-vocabulary.js.map +1 -1
  93. package/dist/tools/timeline.d.ts +136 -0
  94. package/dist/tools/timeline.d.ts.map +1 -0
  95. package/dist/tools/timeline.js +1036 -0
  96. package/dist/tools/timeline.js.map +1 -0
  97. package/dist/tools/toolkits.d.ts +1 -1
  98. package/dist/tools/toolkits.d.ts.map +1 -1
  99. package/dist/tools/toolkits.js +12 -2
  100. package/dist/tools/toolkits.js.map +1 -1
  101. package/dist/types/code-generator.d.ts +66 -3
  102. package/dist/types/code-generator.d.ts.map +1 -1
  103. package/dist/types/code-generator.js +629 -96
  104. package/dist/types/code-generator.js.map +1 -1
  105. package/dist/types/schemas.d.ts +5278 -24999
  106. package/dist/types/schemas.d.ts.map +1 -1
  107. package/dist/types/schemas.js +93 -40
  108. package/dist/types/schemas.js.map +1 -1
  109. package/manifest.json +5 -1
  110. package/package.json +8 -7
@@ -9,56 +9,19 @@
9
9
  import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
10
10
  import { z } from 'zod';
11
11
  import { type HandlerOptions } from '../handlers.js';
12
- export declare const BeatCutsArgsSchema: z.ZodEffects<z.ZodObject<{
12
+ export declare const BeatCutsArgsSchema: z.ZodObject<{
13
13
  source: z.ZodOptional<z.ZodString>;
14
- beats: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
14
+ beats: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
15
15
  bpm: z.ZodOptional<z.ZodNumber>;
16
16
  bpmHint: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
17
- every: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["beat", "bar"]>, z.ZodNumber]>>;
17
+ every: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
18
+ bar: "bar";
19
+ beat: "beat";
20
+ }>, z.ZodNumber]>>;
18
21
  beatsPerBar: z.ZodOptional<z.ZodNumber>;
19
22
  range: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
20
23
  clipId: z.ZodOptional<z.ZodString>;
21
24
  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
- }>;
25
+ }, z.core.$strip>;
63
26
  export declare const beatHandlers: Record<string, (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>>;
64
27
  //# sourceMappingURL=beats.d.ts.map
@@ -1 +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"}
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;;;;;;;;;;;;;iBAU2F,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAA4E,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAS/H,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqFxD,CAAC"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAKzE,OAAO,EAA4E,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAU/H,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAwGxD,CAAC"}
@@ -6,12 +6,15 @@
6
6
  * part of this module (agent-export still in the main switch).
7
7
  */
8
8
  import { readFile, writeFile, mkdir, stat } from 'node:fs/promises';
9
- import { join, resolve } from 'node:path';
9
+ import { join } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { confineAssetPath } from '../../utils/asset-paths.js';
10
12
  import { executeOrGenerate, getLocalizedSuccessMessage, getExportDir, errorResult } from '../handlers.js';
11
13
  import { codeGenerator } from '../../types/code-generator.js';
12
14
  import { ExportTrainingDataInputSchema, ExportSceneInputSchema, ImportSceneInputSchema, ErrorCodes } from '../../types/schemas.js';
13
15
  import { getBrowserController } from '../../browser/puppeteer-controller.js';
14
16
  import { getExecutionMode } from '../handlers.js';
17
+ import { ExportStepError, errorText, verifySavedFile, writeStep } from '../export-file-check.js';
15
18
  /** A project document over this size is refused on import rather than staged. */
16
19
  const MAX_PROJECT_BYTES = 200 * 1024 * 1024;
17
20
  export const exportHandlers = {
@@ -54,13 +57,21 @@ export const exportHandlers = {
54
57
  }
55
58
  const run = await controller.executeCode(code, false, { governorTimeoutMs: 120_000 });
56
59
  const v = (run.result ?? {});
57
- if (!run.success || v.success === false || typeof v.json !== 'string') {
58
- return errorResult(ErrorCodes.EXECUTION_ERROR, run.error || v.error || 'the project document could not be captured', { code }, { toolName: 'pinepaper_export_scene' });
60
+ if (!run.success || v.success === false || typeof v.json !== 'string' || v.json.length === 0) {
61
+ const why = run.error || v.error || (typeof v.json === 'string' ? 'the studio returned an empty project document' : 'the project document could not be captured');
62
+ return errorResult(ErrorCodes.EXECUTION_ERROR, `export failed at the export step: ${why}`, { code, step: 'export', path: null, reason: why }, { toolName: 'pinepaper_export_scene' });
59
63
  }
60
64
  const dir = getExportDir();
61
- await mkdir(dir, { recursive: true });
62
65
  const filePath = join(dir, `pinepaper_project_${Date.now()}.json`);
63
- await writeFile(filePath, v.json, 'utf-8');
66
+ // No "Project saved" without a file that exists and holds the document.
67
+ try {
68
+ await writeStep(filePath, async () => { await mkdir(dir, { recursive: true }); await writeFile(filePath, v.json, 'utf-8'); });
69
+ await verifySavedFile(filePath, Buffer.byteLength(v.json));
70
+ }
71
+ catch (e) {
72
+ const err = e instanceof ExportStepError ? e : new ExportStepError('write', filePath, errorText(e, 'the file could not be written'));
73
+ return errorResult(ErrorCodes.EXECUTION_ERROR, err.message, err.toData(), { toolName: 'pinepaper_export_scene' });
74
+ }
64
75
  const lost = Array.isArray(v.unserialized) ? v.unserialized : [];
65
76
  const result = {
66
77
  success: true, filePath, bytes: Buffer.byteLength(v.json), counts: v.counts, restore: `pinepaper_import_scene { path: "${filePath}" }`,
@@ -73,7 +84,21 @@ export const exportHandlers = {
73
84
  },
74
85
  pinepaper_import_scene: async (args, options) => {
75
86
  const input = ImportSceneInputSchema.parse(args);
76
- const path = resolve(input.path.replace(/^file:\/\//, ''));
87
+ // Confined like image and media imports (CWE-22): this read had no bound,
88
+ // and although it never returns the file, its size and not-found errors
89
+ // said whether any path existed and how big it was. The export folder is
90
+ // allowed, so the restore hint export_scene returns keeps working.
91
+ let asked;
92
+ try {
93
+ asked = /^file:\/\//i.test(input.path) ? fileURLToPath(input.path) : input.path;
94
+ }
95
+ catch {
96
+ return errorResult(ErrorCodes.INVALID_PARAMS, `"${input.path}" is not a valid file:// URL.`, {}, { toolName: 'pinepaper_import_scene' });
97
+ }
98
+ const confined = await confineAssetPath(asked);
99
+ if ('error' in confined)
100
+ return errorResult(ErrorCodes.INVALID_PARAMS, confined.error, {}, { toolName: 'pinepaper_import_scene' });
101
+ const path = confined.path;
77
102
  let text;
78
103
  try {
79
104
  const st = await stat(path);
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/tools/handlers/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/tools/handlers/export.ts"],"names":[],"mappings":"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"}
@@ -14,306 +14,77 @@
14
14
  import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
15
15
  import { z } from 'zod';
16
16
  import { type HandlerOptions } from '../handlers.js';
17
- export declare const GenerateEstimateArgsSchema: z.ZodEffects<z.ZodObject<{
17
+ export declare const GenerateEstimateArgsSchema: z.ZodObject<{
18
18
  model: z.ZodOptional<z.ZodString>;
19
19
  useCase: z.ZodOptional<z.ZodString>;
20
20
  input: z.ZodOptional<z.ZodObject<{
21
21
  prompt: z.ZodString;
22
- aspect: z.ZodOptional<z.ZodEnum<["16:9", "9:16", "1:1", "4:5"]>>;
22
+ aspect: z.ZodOptional<z.ZodEnum<{
23
+ "1:1": "1:1";
24
+ "16:9": "16:9";
25
+ "9:16": "9:16";
26
+ "4:5": "4:5";
27
+ }>>;
23
28
  n: z.ZodOptional<z.ZodNumber>;
24
29
  seed: z.ZodOptional<z.ZodNumber>;
25
30
  negativePrompt: z.ZodOptional<z.ZodString>;
26
- imageUrls: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
31
+ imageUrls: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
32
  seconds: z.ZodOptional<z.ZodNumber>;
28
33
  text: z.ZodOptional<z.ZodArray<z.ZodObject<{
29
34
  content: z.ZodString;
30
- role: z.ZodOptional<z.ZodEnum<["headline", "subhead", "caption", "cta", "label"]>>;
35
+ role: z.ZodOptional<z.ZodEnum<{
36
+ label: "label";
37
+ headline: "headline";
38
+ cta: "cta";
39
+ subhead: "subhead";
40
+ caption: "caption";
41
+ }>>;
31
42
  font: z.ZodOptional<z.ZodString>;
32
- }, "strip", z.ZodTypeAny, {
33
- content: string;
34
- font?: string | undefined;
35
- role?: "label" | "headline" | "cta" | "subhead" | "caption" | undefined;
36
- }, {
37
- content: string;
38
- font?: string | undefined;
39
- role?: "label" | "headline" | "cta" | "subhead" | "caption" | undefined;
40
- }>, "many">>;
43
+ }, z.core.$strip>>>;
41
44
  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" | "cta" | "subhead" | "caption" | undefined;
48
- }[] | undefined;
49
- seed?: number | undefined;
50
- seconds?: number | undefined;
51
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
52
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
62
- }[] | undefined;
63
- seed?: number | undefined;
64
- seconds?: number | undefined;
65
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
66
- n?: number | undefined;
67
- negativePrompt?: string | undefined;
68
- imageUrls?: string[] | undefined;
69
- allowText?: boolean | undefined;
70
- }>>;
45
+ }, z.core.$strip>>;
71
46
  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" | "cta" | "subhead" | "caption" | undefined;
79
- }[] | undefined;
80
- seed?: number | undefined;
81
- seconds?: number | undefined;
82
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
83
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
98
- }[] | undefined;
99
- seed?: number | undefined;
100
- seconds?: number | undefined;
101
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
102
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
117
- }[] | undefined;
118
- seed?: number | undefined;
119
- seconds?: number | undefined;
120
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
121
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
136
- }[] | undefined;
137
- seed?: number | undefined;
138
- seconds?: number | undefined;
139
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
140
- n?: number | 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<{
47
+ }, z.core.$strip>;
48
+ export declare const GenerateArgsSchema: z.ZodObject<{
150
49
  model: z.ZodOptional<z.ZodString>;
151
50
  useCase: z.ZodOptional<z.ZodString>;
152
51
  input: z.ZodObject<{
153
52
  prompt: z.ZodString;
154
- aspect: z.ZodOptional<z.ZodEnum<["16:9", "9:16", "1:1", "4:5"]>>;
53
+ aspect: z.ZodOptional<z.ZodEnum<{
54
+ "1:1": "1:1";
55
+ "16:9": "16:9";
56
+ "9:16": "9:16";
57
+ "4:5": "4:5";
58
+ }>>;
155
59
  n: z.ZodOptional<z.ZodNumber>;
156
60
  seed: z.ZodOptional<z.ZodNumber>;
157
61
  negativePrompt: z.ZodOptional<z.ZodString>;
158
- imageUrls: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
62
+ imageUrls: z.ZodOptional<z.ZodArray<z.ZodString>>;
159
63
  seconds: z.ZodOptional<z.ZodNumber>;
160
64
  text: z.ZodOptional<z.ZodArray<z.ZodObject<{
161
65
  content: z.ZodString;
162
- role: z.ZodOptional<z.ZodEnum<["headline", "subhead", "caption", "cta", "label"]>>;
66
+ role: z.ZodOptional<z.ZodEnum<{
67
+ label: "label";
68
+ headline: "headline";
69
+ cta: "cta";
70
+ subhead: "subhead";
71
+ caption: "caption";
72
+ }>>;
163
73
  font: z.ZodOptional<z.ZodString>;
164
- }, "strip", z.ZodTypeAny, {
165
- content: string;
166
- font?: string | undefined;
167
- role?: "label" | "headline" | "cta" | "subhead" | "caption" | undefined;
168
- }, {
169
- content: string;
170
- font?: string | undefined;
171
- role?: "label" | "headline" | "cta" | "subhead" | "caption" | undefined;
172
- }>, "many">>;
74
+ }, z.core.$strip>>>;
173
75
  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" | "cta" | "subhead" | "caption" | undefined;
180
- }[] | undefined;
181
- seed?: number | undefined;
182
- seconds?: number | undefined;
183
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
184
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
194
- }[] | undefined;
195
- seed?: number | undefined;
196
- seconds?: number | undefined;
197
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
198
- n?: number | undefined;
199
- negativePrompt?: string | undefined;
200
- imageUrls?: string[] | undefined;
201
- allowText?: boolean | undefined;
202
- }>;
76
+ }, z.core.$strip>;
203
77
  brief: z.ZodOptional<z.ZodString>;
204
78
  designRef: z.ZodOptional<z.ZodObject<{
205
79
  kind: z.ZodString;
206
80
  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"]>]>>;
81
+ }, z.core.$strip>>;
82
+ place: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodEnum<{
83
+ contain: "contain";
84
+ cover: "cover";
85
+ }>]>>;
215
86
  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" | "cta" | "subhead" | "caption" | undefined;
223
- }[] | undefined;
224
- seed?: number | undefined;
225
- seconds?: number | undefined;
226
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
227
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
248
- }[] | undefined;
249
- seed?: number | undefined;
250
- seconds?: number | undefined;
251
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
252
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
273
- }[] | undefined;
274
- seed?: number | undefined;
275
- seconds?: number | undefined;
276
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
277
- n?: number | 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" | "cta" | "subhead" | "caption" | undefined;
298
- }[] | undefined;
299
- seed?: number | undefined;
300
- seconds?: number | undefined;
301
- aspect?: "1:1" | "16:9" | "9:16" | "4:5" | undefined;
302
- n?: number | 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
- }>;
87
+ }, z.core.$strip>;
317
88
  /** Injectable for tests: the network and the clock. */
318
89
  export declare const generateDeps: {
319
90
  fetch: (url: string, init?: RequestInit) => Promise<Response>;
@@ -1 +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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKyI,CAAC;AAEjL,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQkG,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"}
@@ -71,6 +71,8 @@ export interface HandlerOptions {
71
71
  executionMode?: ExecutionMode;
72
72
  /** agent_export: write the result to a file at any size (render_batch needs a file per row). */
73
73
  saveToFile?: boolean;
74
+ /** Internal: an atomic batch removes the items it created when it fails (see customCodeRollback). */
75
+ rollbackCreatedOnFailure?: boolean;
74
76
  /**
75
77
  * The HOST runs the generated code later (the hosted service records each
76
78
  * call and replays it when the scene renders). The agent is then told the
@@ -94,6 +96,48 @@ export declare const CODE_META_KEY = "pinepaper.studio/code";
94
96
  export declare const TIMING_META_KEY = "pinepaper.studio/timing";
95
97
  export declare const EFFECT_META_KEY = "pinepaper.studio/effect";
96
98
  export declare function withTiming(out: CallToolResult, t: Record<string, number>): CallToolResult;
99
+ export declare const RECEIPTS_META_KEY = "pinepaper.studio/receipts";
100
+ /** The engine run's receipts (report.receipts: { calls, byDoor, notes }), when any call has something to say. */
101
+ export declare function engineReceipts(report: Record<string, unknown> | undefined | null): {
102
+ calls: number;
103
+ byDoor: Record<string, number>;
104
+ notes: unknown[];
105
+ } | null;
106
+ /**
107
+ * agent_export answered from the export's own result and never read the run's report (AR-1 R2): an export's engine
108
+ * warnings and receipts are now on the reply like every other tool's — a text line an agent reads, and _meta.
109
+ */
110
+ export declare function withEngineReport(result: CallToolResult, report: Record<string, unknown> | undefined | null): CallToolResult;
111
+ /**
112
+ * The studio's scene-lint warnings on an export (FxTool lintScene), one line each, so a centred title that runs
113
+ * out of the frame ("IGNAL" for "SIGNAL") is read on the success path rather than left in the JSON. Empty when none.
114
+ */
115
+ export declare function lintLines(exportResult: unknown): string;
116
+ /**
117
+ * The file as ffprobe read it, when it disagrees with what the studio encoded: one line per field. A summary
118
+ * line when they agree; nothing when there is no summary.
119
+ */
120
+ export declare function probeLines(receipt: {
121
+ probe?: {
122
+ container: string;
123
+ codec: string;
124
+ width: number;
125
+ height: number;
126
+ fps: number | null;
127
+ durationS: number;
128
+ frames: number;
129
+ };
130
+ probeCheck?: {
131
+ tool: string | null;
132
+ ok?: boolean;
133
+ mismatches?: Array<{
134
+ field: string;
135
+ studio: unknown;
136
+ file: unknown;
137
+ }>;
138
+ reason?: string;
139
+ };
140
+ }): string;
97
141
  export declare function errorResult(code: string, message: string, rawDetails?: unknown, context?: ErrorContext): CallToolResult;
98
142
  type RollbackController = {
99
143
  executeCode: (code: string, screenshot?: boolean, opts?: {
@@ -160,9 +204,48 @@ stage?: Record<string, string>): Promise<CallToolResult>;
160
204
  * string with no `success: true` beside it is a failure too — it is what the
161
205
  * emitters' catch blocks return.
162
206
  */
207
+ /**
208
+ * Move an emitter's out-of-band scene lint (`__ppLint`) off its result, and unwrap execute_custom_code's own value
209
+ * (`__ppValue`). The lint is also put on `run.report.lintWarnings`, where executedResult reads it. Returns the lint.
210
+ */
211
+ export declare function unwrapLint(run: {
212
+ result?: unknown;
213
+ report?: Record<string, unknown>;
214
+ }): unknown[];
215
+ /**
216
+ * Every failed step of a call as `{ step, itemId, reason }`, never a bare message: a batch's own `failures`, a
217
+ * result that names its step, or the call itself with the item it named.
218
+ */
219
+ export declare function stepFailures(toolName: string, value: unknown, message: string): Array<{
220
+ step: string;
221
+ itemId: string | null;
222
+ reason: string;
223
+ }>;
163
224
  export declare function innerFailure(value: unknown): string | null;
164
225
  export declare function getLocalizedSuccessMessage(i18n: I18nManager | undefined, key: string, params: Record<string, string | number>): string;
165
- export declare function ignoredArgumentsNote(toolName: string, args: Record<string, unknown>): string | null;
226
+ /**
227
+ * Keys a handler accepts that its published schema does not list. Shrink-only:
228
+ * publishing one (or dropping it from the handler) means deleting it here.
229
+ */
230
+ export declare const HIDDEN_ARGUMENTS: Readonly<Record<string, readonly string[]>>;
231
+ /**
232
+ * Nested keys (paths with [] for any array index) a handler accepts that its published schema closes over without
233
+ * listing. Shrink-only, held exact by nested-ignored-coverage.test.ts; publishing one means deleting it here.
234
+ */
235
+ export declare const NESTED_HIDDEN: Readonly<Record<string, readonly string[]>>;
236
+ /** Tools whose schema passes every key through: nothing is dropped. */
237
+ export declare const PASSTHROUGH_ARGUMENT_TOOLS: ReadonlySet<string>;
238
+ /** Each tool's published top-level keys; null when its schema allows any key. */
239
+ export declare function publishedArguments(toolName: string): Promise<Set<string> | null | undefined>;
240
+ /** The top-level keys of `args` the tool does not read. */
241
+ export declare function ignoredArgumentKeys(toolName: string, args: Record<string, unknown>, published?: Set<string> | null): string[];
242
+ export declare function ignoredArgumentsNote(toolName: string, args: Record<string, unknown>, published?: Set<string> | null): string | null;
243
+ /** The same check, against the tool's published schema, and below the top level (AR-1 R2: nested-ignored.ts). */
244
+ export declare function ignoredArgumentsNoteFor(toolName: string, args: Record<string, unknown>): Promise<{
245
+ note: string;
246
+ ignored: string[];
247
+ } | null>;
248
+ export declare const IGNORED_ARGUMENTS_META_KEY = "pinepaper.studio/ignoredArguments";
166
249
  export declare function handleToolCall(toolName: string, args: Record<string, unknown>, options?: HandlerOptions): Promise<CallToolResult>;
167
250
  export {};
168
251
  //# sourceMappingURL=handlers.d.ts.map