@pinepaper.studio/mcp-server 1.5.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -25
- package/dist/agent/export-manager.d.ts.map +1 -1
- package/dist/agent/export-manager.js +24 -14
- package/dist/agent/export-manager.js.map +1 -1
- package/dist/cli.js +61 -66
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -17
- package/dist/index.js.map +1 -1
- package/dist/metrics/types.d.ts +3 -1
- package/dist/metrics/types.d.ts.map +1 -1
- package/dist/prompts/index.d.ts +3 -12
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +5 -96
- package/dist/prompts/index.js.map +1 -1
- package/dist/tools/compact-descriptions.d.ts +1 -1
- package/dist/tools/compact-descriptions.d.ts.map +1 -1
- package/dist/tools/compact-descriptions.js +44 -13
- package/dist/tools/compact-descriptions.js.map +1 -1
- package/dist/tools/definitions.d.ts +6 -4
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +154 -37
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +390 -5
- package/dist/tools/handlers.js.map +1 -1
- package/dist/tools/index.d.ts +3 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/minimal-descriptions.d.ts +9 -0
- package/dist/tools/minimal-descriptions.d.ts.map +1 -0
- package/dist/tools/minimal-descriptions.js +158 -0
- package/dist/tools/minimal-descriptions.js.map +1 -0
- package/dist/tools/toolkits.d.ts +51 -0
- package/dist/tools/toolkits.d.ts.map +1 -0
- package/dist/tools/toolkits.js +336 -0
- package/dist/tools/toolkits.js.map +1 -0
- package/dist/types/code-generator.d.ts +1 -5
- package/dist/types/code-generator.d.ts.map +1 -1
- package/dist/types/code-generator.js +21 -192
- package/dist/types/code-generator.js.map +1 -1
- package/dist/types/schemas.d.ts +42 -65
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +24 -48
- package/dist/types/schemas.js.map +1 -1
- package/manifest.json +30 -6
- package/package.json +1 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Toolkit Profiles — Workflow-based tool filtering
|
|
3
|
+
*
|
|
4
|
+
* Controls which tools are exposed via tools/list based on the PINEPAPER_TOOLKIT env var.
|
|
5
|
+
* Reduces token usage for smaller-context models (e.g., Haiku) by only showing relevant tools.
|
|
6
|
+
*
|
|
7
|
+
* Profiles are composed from reusable tag groups (categories of tools).
|
|
8
|
+
* Handler dispatch is NOT filtered — hidden tools still execute if called directly.
|
|
9
|
+
*/
|
|
10
|
+
export const TOOLKIT_PROFILES_LIST = ['full', 'agent', 'diagram', 'map', 'font', 'minimal'];
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// TAG GROUPS — each maps a category to its tool names
|
|
13
|
+
// =============================================================================
|
|
14
|
+
export const TOOL_TAGS = {
|
|
15
|
+
// --- Core infrastructure (included in most profiles) ---
|
|
16
|
+
agent: [
|
|
17
|
+
'pinepaper_agent_start_job',
|
|
18
|
+
'pinepaper_agent_end_job',
|
|
19
|
+
'pinepaper_agent_reset',
|
|
20
|
+
'pinepaper_agent_batch_execute',
|
|
21
|
+
'pinepaper_agent_export',
|
|
22
|
+
'pinepaper_agent_analyze',
|
|
23
|
+
],
|
|
24
|
+
browser: [
|
|
25
|
+
'pinepaper_browser_connect',
|
|
26
|
+
'pinepaper_browser_disconnect',
|
|
27
|
+
'pinepaper_browser_screenshot',
|
|
28
|
+
'pinepaper_browser_status',
|
|
29
|
+
],
|
|
30
|
+
canvas: [
|
|
31
|
+
'pinepaper_set_background_color',
|
|
32
|
+
'pinepaper_set_canvas_size',
|
|
33
|
+
'pinepaper_get_canvas_size',
|
|
34
|
+
'pinepaper_clear_canvas',
|
|
35
|
+
'pinepaper_refresh_page',
|
|
36
|
+
'pinepaper_get_canvas_presets',
|
|
37
|
+
],
|
|
38
|
+
// --- Item creation & modification ---
|
|
39
|
+
core: [
|
|
40
|
+
'pinepaper_create_item',
|
|
41
|
+
'pinepaper_modify_item',
|
|
42
|
+
'pinepaper_delete_item',
|
|
43
|
+
'pinepaper_create_glossy_sphere',
|
|
44
|
+
'pinepaper_create_diagonal_stripes',
|
|
45
|
+
'pinepaper_create_grid',
|
|
46
|
+
],
|
|
47
|
+
import: [
|
|
48
|
+
'pinepaper_import_svg',
|
|
49
|
+
'pinepaper_import_image',
|
|
50
|
+
],
|
|
51
|
+
assets: [
|
|
52
|
+
'pinepaper_search_assets',
|
|
53
|
+
'pinepaper_import_asset',
|
|
54
|
+
],
|
|
55
|
+
batch: [
|
|
56
|
+
'pinepaper_batch_create',
|
|
57
|
+
'pinepaper_batch_modify',
|
|
58
|
+
],
|
|
59
|
+
// --- Relations & animation ---
|
|
60
|
+
relations: [
|
|
61
|
+
'pinepaper_add_relation',
|
|
62
|
+
'pinepaper_remove_relation',
|
|
63
|
+
'pinepaper_query_relations',
|
|
64
|
+
'pinepaper_register_custom_relation',
|
|
65
|
+
],
|
|
66
|
+
animation: [
|
|
67
|
+
'pinepaper_animate',
|
|
68
|
+
'pinepaper_keyframe_animate',
|
|
69
|
+
'pinepaper_play_timeline',
|
|
70
|
+
'pinepaper_get_animatable_properties',
|
|
71
|
+
'pinepaper_get_available_easings',
|
|
72
|
+
],
|
|
73
|
+
masks: [
|
|
74
|
+
'pinepaper_apply_animated_mask',
|
|
75
|
+
'pinepaper_apply_custom_mask',
|
|
76
|
+
'pinepaper_remove_mask',
|
|
77
|
+
'pinepaper_get_mask_types',
|
|
78
|
+
'pinepaper_get_mask_animations',
|
|
79
|
+
],
|
|
80
|
+
camera: [
|
|
81
|
+
'pinepaper_camera_animate',
|
|
82
|
+
'pinepaper_camera_zoom',
|
|
83
|
+
'pinepaper_camera_pan',
|
|
84
|
+
'pinepaper_camera_move_to',
|
|
85
|
+
'pinepaper_camera_reset',
|
|
86
|
+
'pinepaper_camera_stop',
|
|
87
|
+
'pinepaper_camera_state',
|
|
88
|
+
],
|
|
89
|
+
// --- Generators & effects ---
|
|
90
|
+
generators: [
|
|
91
|
+
'pinepaper_execute_generator',
|
|
92
|
+
'pinepaper_list_generators',
|
|
93
|
+
],
|
|
94
|
+
effects: [
|
|
95
|
+
'pinepaper_apply_effect',
|
|
96
|
+
],
|
|
97
|
+
filters: [
|
|
98
|
+
'pinepaper_add_filter',
|
|
99
|
+
],
|
|
100
|
+
// --- Compositions ---
|
|
101
|
+
scene: [
|
|
102
|
+
'pinepaper_create_scene',
|
|
103
|
+
],
|
|
104
|
+
template: [
|
|
105
|
+
'pinepaper_apply_template',
|
|
106
|
+
],
|
|
107
|
+
// --- Query & export ---
|
|
108
|
+
query: [
|
|
109
|
+
'pinepaper_get_items',
|
|
110
|
+
'pinepaper_get_relation_stats',
|
|
111
|
+
],
|
|
112
|
+
export: [
|
|
113
|
+
'pinepaper_export_svg',
|
|
114
|
+
'pinepaper_export_training_data',
|
|
115
|
+
'pinepaper_export_scene',
|
|
116
|
+
],
|
|
117
|
+
// --- Domain: Diagrams ---
|
|
118
|
+
diagram: [
|
|
119
|
+
'pinepaper_create_diagram_shape',
|
|
120
|
+
'pinepaper_connect',
|
|
121
|
+
'pinepaper_connect_ports',
|
|
122
|
+
'pinepaper_add_ports',
|
|
123
|
+
'pinepaper_auto_layout',
|
|
124
|
+
'pinepaper_get_diagram_shapes',
|
|
125
|
+
'pinepaper_update_connector',
|
|
126
|
+
'pinepaper_remove_connector',
|
|
127
|
+
'pinepaper_diagram_mode',
|
|
128
|
+
],
|
|
129
|
+
// --- Domain: Maps ---
|
|
130
|
+
map: [
|
|
131
|
+
'pinepaper_load_map',
|
|
132
|
+
'pinepaper_highlight_regions',
|
|
133
|
+
'pinepaper_unhighlight_regions',
|
|
134
|
+
'pinepaper_apply_data_colors',
|
|
135
|
+
'pinepaper_add_marker',
|
|
136
|
+
'pinepaper_add_map_labels',
|
|
137
|
+
'pinepaper_pan_map',
|
|
138
|
+
'pinepaper_zoom_map',
|
|
139
|
+
'pinepaper_export_map',
|
|
140
|
+
'pinepaper_import_custom_map',
|
|
141
|
+
'pinepaper_get_region_at_point',
|
|
142
|
+
'pinepaper_animate_map_regions',
|
|
143
|
+
'pinepaper_animate_map_wave',
|
|
144
|
+
'pinepaper_stop_map_animations',
|
|
145
|
+
'pinepaper_get_animated_map_regions',
|
|
146
|
+
'pinepaper_export_map_region_csv',
|
|
147
|
+
'pinepaper_import_map_region_csv',
|
|
148
|
+
'pinepaper_select_map_regions',
|
|
149
|
+
'pinepaper_deselect_map_regions',
|
|
150
|
+
'pinepaper_get_highlighted_map_regions',
|
|
151
|
+
'pinepaper_export_map_geojson',
|
|
152
|
+
'pinepaper_export_original_map_geojson',
|
|
153
|
+
'pinepaper_get_map_source_info',
|
|
154
|
+
],
|
|
155
|
+
// --- Domain: Fonts ---
|
|
156
|
+
font: [
|
|
157
|
+
'pinepaper_font_show_studio',
|
|
158
|
+
'pinepaper_font_set_name',
|
|
159
|
+
'pinepaper_font_get_required_chars',
|
|
160
|
+
'pinepaper_font_get_status',
|
|
161
|
+
'pinepaper_font_create_glyph',
|
|
162
|
+
'pinepaper_font_create_space',
|
|
163
|
+
'pinepaper_font_remove_glyph',
|
|
164
|
+
'pinepaper_font_set_metrics',
|
|
165
|
+
'pinepaper_font_export',
|
|
166
|
+
'pinepaper_font_load_into_document',
|
|
167
|
+
'pinepaper_font_export_data',
|
|
168
|
+
'pinepaper_font_import_data',
|
|
169
|
+
'pinepaper_font_clear',
|
|
170
|
+
'pinepaper_font_remove_overlap',
|
|
171
|
+
'pinepaper_font_correct_direction',
|
|
172
|
+
'pinepaper_font_cleanup_path',
|
|
173
|
+
],
|
|
174
|
+
// --- Domain: Letter Collage ---
|
|
175
|
+
letter_collage: [
|
|
176
|
+
'pinepaper_create_letter_collage',
|
|
177
|
+
'pinepaper_animate_letter_collage',
|
|
178
|
+
'pinepaper_get_letter_collage_options',
|
|
179
|
+
],
|
|
180
|
+
// --- Domain: Interactive ---
|
|
181
|
+
triggers: [
|
|
182
|
+
'pinepaper_add_trigger',
|
|
183
|
+
'pinepaper_remove_trigger',
|
|
184
|
+
'pinepaper_query_triggers',
|
|
185
|
+
],
|
|
186
|
+
quiz: [
|
|
187
|
+
'pinepaper_create_quiz',
|
|
188
|
+
'pinepaper_get_quiz_state',
|
|
189
|
+
'pinepaper_reset_quiz',
|
|
190
|
+
],
|
|
191
|
+
// --- Advanced ---
|
|
192
|
+
performance: [
|
|
193
|
+
'pinepaper_get_performance_metrics',
|
|
194
|
+
'pinepaper_diagnostic_report',
|
|
195
|
+
],
|
|
196
|
+
custom_code: [
|
|
197
|
+
'pinepaper_execute_custom_code',
|
|
198
|
+
],
|
|
199
|
+
p5: [
|
|
200
|
+
'pinepaper_p5_draw',
|
|
201
|
+
],
|
|
202
|
+
register: [
|
|
203
|
+
'pinepaper_register_item',
|
|
204
|
+
],
|
|
205
|
+
// --- On-demand guide & runtime config (included in ALL profiles) ---
|
|
206
|
+
guide: [
|
|
207
|
+
'pinepaper_tool_guide',
|
|
208
|
+
'pinepaper_set_toolkit',
|
|
209
|
+
],
|
|
210
|
+
};
|
|
211
|
+
// =============================================================================
|
|
212
|
+
// PROFILES — each is a list of tag names to include
|
|
213
|
+
// =============================================================================
|
|
214
|
+
export const TOOLKIT_PROFILES = {
|
|
215
|
+
full: [], // Empty = no filtering, return all tools
|
|
216
|
+
agent: [
|
|
217
|
+
'agent', 'browser', 'canvas',
|
|
218
|
+
'core', 'import', 'assets', 'batch',
|
|
219
|
+
'relations', 'animation', 'masks',
|
|
220
|
+
'generators', 'effects',
|
|
221
|
+
'scene',
|
|
222
|
+
'query', 'export',
|
|
223
|
+
'p5', 'guide',
|
|
224
|
+
],
|
|
225
|
+
diagram: [
|
|
226
|
+
'agent', 'browser', 'canvas',
|
|
227
|
+
'core',
|
|
228
|
+
'diagram',
|
|
229
|
+
'query', 'export',
|
|
230
|
+
'guide',
|
|
231
|
+
],
|
|
232
|
+
map: [
|
|
233
|
+
'agent', 'browser', 'canvas',
|
|
234
|
+
'map',
|
|
235
|
+
'query', 'export',
|
|
236
|
+
'guide',
|
|
237
|
+
],
|
|
238
|
+
font: [
|
|
239
|
+
'agent', 'browser', 'canvas',
|
|
240
|
+
'core',
|
|
241
|
+
'font', 'letter_collage',
|
|
242
|
+
'export',
|
|
243
|
+
'guide',
|
|
244
|
+
],
|
|
245
|
+
minimal: [
|
|
246
|
+
'agent', 'browser', 'canvas',
|
|
247
|
+
'guide',
|
|
248
|
+
],
|
|
249
|
+
};
|
|
250
|
+
/**
|
|
251
|
+
* Filter tools based on a toolkit profile.
|
|
252
|
+
* Returns only the tools whose names appear in the selected profile's tag groups.
|
|
253
|
+
* The 'full' profile returns all tools unchanged (no filtering).
|
|
254
|
+
*/
|
|
255
|
+
export function getToolsForToolkit(tools, profile) {
|
|
256
|
+
if (profile === 'full') {
|
|
257
|
+
return tools;
|
|
258
|
+
}
|
|
259
|
+
const tags = TOOLKIT_PROFILES[profile];
|
|
260
|
+
if (!tags) {
|
|
261
|
+
return tools; // Unknown profile = no filtering
|
|
262
|
+
}
|
|
263
|
+
// Build set of allowed tool names from all tags in this profile
|
|
264
|
+
const allowed = new Set();
|
|
265
|
+
for (const tag of tags) {
|
|
266
|
+
const toolNames = TOOL_TAGS[tag];
|
|
267
|
+
if (toolNames) {
|
|
268
|
+
for (const name of toolNames) {
|
|
269
|
+
allowed.add(name);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return tools.filter(tool => allowed.has(tool.name));
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Detect toolkit profile from PINEPAPER_TOOLKIT environment variable.
|
|
277
|
+
* Returns 'agent' if not set or invalid.
|
|
278
|
+
*/
|
|
279
|
+
export function detectToolkitFromEnvironment() {
|
|
280
|
+
const value = process.env.PINEPAPER_TOOLKIT;
|
|
281
|
+
if (value && TOOLKIT_PROFILES_LIST.includes(value)) {
|
|
282
|
+
return value;
|
|
283
|
+
}
|
|
284
|
+
return 'agent';
|
|
285
|
+
}
|
|
286
|
+
/** Returns true if PINEPAPER_TOOLKIT was explicitly set in the environment. */
|
|
287
|
+
export function isToolkitExplicitlySet() {
|
|
288
|
+
const value = process.env.PINEPAPER_TOOLKIT;
|
|
289
|
+
return !!value && TOOLKIT_PROFILES_LIST.includes(value);
|
|
290
|
+
}
|
|
291
|
+
const VALID_VERBOSITIES = ['verbose', 'compact', 'minimal'];
|
|
292
|
+
/**
|
|
293
|
+
* Detect tool description verbosity from environment.
|
|
294
|
+
* Reads PINEPAPER_VERBOSITY first, falls back to PINEPAPER_TOOL_VERBOSITY for backward compat.
|
|
295
|
+
* Returns 'compact' if not set or invalid.
|
|
296
|
+
*/
|
|
297
|
+
export function detectVerbosityFromEnvironment() {
|
|
298
|
+
const value = process.env.PINEPAPER_VERBOSITY || process.env.PINEPAPER_TOOL_VERBOSITY;
|
|
299
|
+
if (value && VALID_VERBOSITIES.includes(value)) {
|
|
300
|
+
return value;
|
|
301
|
+
}
|
|
302
|
+
return 'compact';
|
|
303
|
+
}
|
|
304
|
+
/** Returns true if PINEPAPER_VERBOSITY or PINEPAPER_TOOL_VERBOSITY was explicitly set. */
|
|
305
|
+
export function isVerbosityExplicitlySet() {
|
|
306
|
+
const value = process.env.PINEPAPER_VERBOSITY || process.env.PINEPAPER_TOOL_VERBOSITY;
|
|
307
|
+
return !!value && VALID_VERBOSITIES.includes(value);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Known client profiles for auto-detection via MCP initialize handshake.
|
|
311
|
+
* Applied only when env vars are NOT explicitly set.
|
|
312
|
+
*/
|
|
313
|
+
const CLIENT_PROFILES = {
|
|
314
|
+
'claude-ai': { toolkit: 'minimal', verbosity: 'compact' },
|
|
315
|
+
'claude-desktop': { toolkit: 'full', verbosity: 'compact' },
|
|
316
|
+
'claude-code': { toolkit: 'agent', verbosity: 'compact' },
|
|
317
|
+
cursor: { toolkit: 'full', verbosity: 'compact' },
|
|
318
|
+
windsurf: { toolkit: 'full', verbosity: 'compact' },
|
|
319
|
+
};
|
|
320
|
+
/**
|
|
321
|
+
* Get client profile by name. Exact match first, then prefix match, case-insensitive.
|
|
322
|
+
* Returns null for unknown clients.
|
|
323
|
+
*/
|
|
324
|
+
export function getClientProfile(clientName) {
|
|
325
|
+
const lower = clientName.toLowerCase();
|
|
326
|
+
// Exact match
|
|
327
|
+
if (CLIENT_PROFILES[lower])
|
|
328
|
+
return CLIENT_PROFILES[lower];
|
|
329
|
+
// Prefix match
|
|
330
|
+
for (const [key, profile] of Object.entries(CLIENT_PROFILES)) {
|
|
331
|
+
if (lower.startsWith(key))
|
|
332
|
+
return profile;
|
|
333
|
+
}
|
|
334
|
+
return null;
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=toolkits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolkits.js","sourceRoot":"","sources":["../../src/tools/toolkits.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Converts MCP tool inputs to executable PinePaper JavaScript code.
|
|
5
5
|
* This code is designed to run in the browser context where window.PinePaper is available.
|
|
6
6
|
*/
|
|
7
|
-
import { ItemType, RelationType, CreateItemInputSchema, ModifyItemInputSchema, AddRelationInputSchema, AnimateItemInputSchema, KeyframeAnimateInputSchema, ExecuteGeneratorInputSchema, ApplyEffectInputSchema, SetBackgroundColorInputSchema, SetCanvasSizeInputSchema, CreateGlossySphereInputSchema, CreateDiagonalStripesInputSchema, BatchCreateInputSchema, BatchModifyInputSchema, CreateGridInputSchema, CreateSceneInput, CreateDiagramShapeInput, ConnectInput, ConnectPortsInput, AddPortsInput, AutoLayoutInput, GetDiagramShapesInput, UpdateConnectorInput, RemoveConnectorInput, DiagramModeInput, AgentStartJobInput, AgentEndJobInput, AgentResetInput, AgentBatchExecuteInput, AgentExportInput, AgentAnalyzeInput, AddTriggerInput, RemoveTriggerInput, QueryTriggersInput, CreateQuizInput, GetQuizStateInput, ResetQuizInput,
|
|
7
|
+
import { ItemType, RelationType, CreateItemInputSchema, ModifyItemInputSchema, AddRelationInputSchema, AnimateItemInputSchema, KeyframeAnimateInputSchema, ExecuteGeneratorInputSchema, ApplyEffectInputSchema, SetBackgroundColorInputSchema, SetCanvasSizeInputSchema, CreateGlossySphereInputSchema, CreateDiagonalStripesInputSchema, BatchCreateInputSchema, BatchModifyInputSchema, CreateGridInputSchema, CreateSceneInput, CreateDiagramShapeInput, ConnectInput, ConnectPortsInput, AddPortsInput, AutoLayoutInput, GetDiagramShapesInput, UpdateConnectorInput, RemoveConnectorInput, DiagramModeInput, AgentStartJobInput, AgentEndJobInput, AgentResetInput, AgentBatchExecuteInput, AgentExportInput, AgentAnalyzeInput, AddTriggerInput, RemoveTriggerInput, QueryTriggersInput, CreateQuizInput, GetQuizStateInput, ResetQuizInput, CreateLetterCollageInput, AnimateLetterCollageInput, LoadMapInput, HighlightRegionsInput, UnhighlightRegionsInput, ApplyDataColorsInput, AddMarkerInput, AddMapLabelsInput, PanMapInput, ZoomMapInput, ImportCustomMapInput, GetRegionAtPointInput, AnimateMapRegionsInput, AnimateMapWaveInput, StopMapAnimationsInput, ExportMapRegionCSVInput, ImportMapRegionCSVInput, SelectMapRegionsInput, DeselectMapRegionsInput, RegisterCustomRelationInput, ExecuteCustomCodeInput, ApplyAnimatedMaskInput, ApplyCustomMaskInput, RemoveMaskInput, ApplyTemplateInput, ImportImageInput } from './schemas.js';
|
|
8
8
|
import { z } from 'zod';
|
|
9
9
|
export declare class PinePaperCodeGenerator {
|
|
10
10
|
/**
|
|
@@ -219,10 +219,6 @@ export declare class PinePaperCodeGenerator {
|
|
|
219
219
|
* Generate code for resetting a quiz
|
|
220
220
|
*/
|
|
221
221
|
generateResetQuiz(input: ResetQuizInput): string;
|
|
222
|
-
/**
|
|
223
|
-
* Generate code for exporting widget
|
|
224
|
-
*/
|
|
225
|
-
generateExportWidget(input: ExportWidgetInput): string;
|
|
226
222
|
/**
|
|
227
223
|
* Generate code to create a letter collage
|
|
228
224
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/types/code-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,QAAQ,EAER,YAAY,EAEZ,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,EAExB,6BAA6B,EAC7B,gCAAgC,EAGhC,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EAIrB,gBAAgB,EAGhB,uBAAuB,EAEvB,YAAY,EAEZ,iBAAiB,EAEjB,aAAa,EAEb,eAAe,EAEf,qBAAqB,EAErB,oBAAoB,EAEpB,oBAAoB,EAEpB,gBAAgB,EAGhB,kBAAkB,EAElB,gBAAgB,EAEhB,eAAe,EAEf,sBAAsB,EAEtB,gBAAgB,EAEhB,iBAAiB,EAGjB,eAAe,EAEf,kBAAkB,EAElB,kBAAkB,EAGlB,eAAe,EAEf,iBAAiB,EAEjB,cAAc,EAGd,
|
|
1
|
+
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/types/code-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,6 @@ AgentStartJobInputSchema, AgentEndJobInputSchema, AgentResetInputSchema, AgentBa
|
|
|
14
14
|
AddTriggerInputSchema, RemoveTriggerInputSchema, QueryTriggersInputSchema,
|
|
15
15
|
// Quiz types
|
|
16
16
|
CreateQuizInputSchema, GetQuizStateInputSchema, ResetQuizInputSchema,
|
|
17
|
-
// Widget export types
|
|
18
|
-
ExportWidgetInputSchema,
|
|
19
17
|
// Letter collage types
|
|
20
18
|
CreateLetterCollageInputSchema, AnimateLetterCollageInputSchema,
|
|
21
19
|
// Map types
|
|
@@ -1874,35 +1872,36 @@ return { success: true, action: 'seek', time: ${op.time || 0} };
|
|
|
1874
1872
|
break;
|
|
1875
1873
|
|
|
1876
1874
|
case 'gif':
|
|
1877
|
-
if (app.exportEngine && app.exportEngine.exportGIF) {
|
|
1878
|
-
const blob = await app.exportEngine.exportGIF({ fps: settings.fps, quality: settings.compression, duration: 5 });
|
|
1879
|
-
const reader = new FileReader();
|
|
1880
|
-
const dataUrl = await new Promise(resolve => {
|
|
1881
|
-
reader.onloadend = () => resolve(reader.result);
|
|
1882
|
-
reader.readAsDataURL(blob);
|
|
1883
|
-
});
|
|
1884
|
-
result = { success: true, platform, format: 'gif', data: dataUrl, mimeType: 'image/gif', size: blob.size };
|
|
1885
|
-
} else {
|
|
1886
|
-
result = { success: false, error: 'GIF export not available' };
|
|
1887
|
-
}
|
|
1888
|
-
break;
|
|
1889
|
-
|
|
1890
1875
|
case 'mp4':
|
|
1891
|
-
case 'webm':
|
|
1892
|
-
const
|
|
1893
|
-
|
|
1894
|
-
if (app.exportEngine && app.exportEngine
|
|
1895
|
-
const
|
|
1876
|
+
case 'webm': {
|
|
1877
|
+
const videoMimeType = { mp4: 'video/mp4', webm: 'video/webm', gif: 'image/gif' }[format];
|
|
1878
|
+
// Use _quickExportVideo (delegates to VideoExporter.export internally)
|
|
1879
|
+
if (app.exportEngine && app.exportEngine._quickExportVideo) {
|
|
1880
|
+
const videoResult = await app.exportEngine._quickExportVideo(format, { fps: settings.fps, duration: 5 }, false);
|
|
1881
|
+
if (videoResult && videoResult.blob) {
|
|
1882
|
+
const reader = new FileReader();
|
|
1883
|
+
const dataUrl = await new Promise(resolve => {
|
|
1884
|
+
reader.onloadend = () => resolve(reader.result);
|
|
1885
|
+
reader.readAsDataURL(videoResult.blob);
|
|
1886
|
+
});
|
|
1887
|
+
result = { success: true, platform, format, data: dataUrl, mimeType: videoMimeType, size: videoResult.blob.size };
|
|
1888
|
+
} else {
|
|
1889
|
+
result = { success: false, error: format.toUpperCase() + ' export returned no data' };
|
|
1890
|
+
}
|
|
1891
|
+
} else if (app.exportEngine && app.exportEngine.videoExporter) {
|
|
1892
|
+
// Fallback: call VideoExporter.export directly
|
|
1893
|
+
const blob = await app.exportEngine.videoExporter.export({ format, fps: settings.fps, duration: 5 });
|
|
1896
1894
|
const reader = new FileReader();
|
|
1897
1895
|
const dataUrl = await new Promise(resolve => {
|
|
1898
1896
|
reader.onloadend = () => resolve(reader.result);
|
|
1899
1897
|
reader.readAsDataURL(blob);
|
|
1900
1898
|
});
|
|
1901
|
-
result = { success: true, platform, format, data: dataUrl, mimeType, size: blob.size };
|
|
1899
|
+
result = { success: true, platform, format, data: dataUrl, mimeType: videoMimeType, size: blob.size };
|
|
1902
1900
|
} else {
|
|
1903
1901
|
result = { success: false, error: format.toUpperCase() + ' export not available' };
|
|
1904
1902
|
}
|
|
1905
1903
|
break;
|
|
1904
|
+
}
|
|
1906
1905
|
|
|
1907
1906
|
case 'pdf':
|
|
1908
1907
|
if (app.exportEngine && app.exportEngine.exportPDF) {
|
|
@@ -1914,7 +1913,7 @@ return { success: true, action: 'seek', time: ${op.time || 0} };
|
|
|
1914
1913
|
});
|
|
1915
1914
|
result = { success: true, platform, format: 'pdf', data: dataUrl, mimeType: 'application/pdf', size: blob.size, dpi: settings.dpi };
|
|
1916
1915
|
} else {
|
|
1917
|
-
result = { success: false, error: 'PDF export
|
|
1916
|
+
result = { success: false, error: 'PDF export failed' };
|
|
1918
1917
|
}
|
|
1919
1918
|
break;
|
|
1920
1919
|
|
|
@@ -2311,176 +2310,6 @@ quiz.state = {
|
|
|
2311
2310
|
app.historyManager.saveState();
|
|
2312
2311
|
|
|
2313
2312
|
({ success: true, quizId: quiz.id, reset: true });
|
|
2314
|
-
`.trim();
|
|
2315
|
-
}
|
|
2316
|
-
// ===========================================================================
|
|
2317
|
-
// WIDGET EXPORT CODE GENERATORS
|
|
2318
|
-
// ===========================================================================
|
|
2319
|
-
/**
|
|
2320
|
-
* Generate code for exporting widget
|
|
2321
|
-
*/
|
|
2322
|
-
generateExportWidget(input) {
|
|
2323
|
-
const validated = ExportWidgetInputSchema.parse(input);
|
|
2324
|
-
const { format, sizing, interactivity, autoplay, loop, lmsEnabled, width, height } = validated;
|
|
2325
|
-
const sizingMode = sizing || 'responsive';
|
|
2326
|
-
const interactivityLevel = interactivity || 'view';
|
|
2327
|
-
const shouldAutoplay = autoplay !== false;
|
|
2328
|
-
const shouldLoop = loop !== false;
|
|
2329
|
-
const hasLms = lmsEnabled || false;
|
|
2330
|
-
return `
|
|
2331
|
-
// Export widget as ${format}
|
|
2332
|
-
(async function() {
|
|
2333
|
-
const format = '${format}';
|
|
2334
|
-
const sizing = '${sizingMode}';
|
|
2335
|
-
const interactivity = '${interactivityLevel}';
|
|
2336
|
-
const autoplay = ${shouldAutoplay};
|
|
2337
|
-
const loop = ${shouldLoop};
|
|
2338
|
-
const lmsEnabled = ${hasLms};
|
|
2339
|
-
const fixedWidth = ${width || 'null'};
|
|
2340
|
-
const fixedHeight = ${height || 'null'};
|
|
2341
|
-
|
|
2342
|
-
// Capture scene data
|
|
2343
|
-
const sceneData = app.exportSceneData ? JSON.stringify(app.exportSceneData()) : '{}';
|
|
2344
|
-
|
|
2345
|
-
// Get canvas dimensions
|
|
2346
|
-
let canvasWidth = fixedWidth || (app.canvasEl ? app.canvasEl.width : 800);
|
|
2347
|
-
let canvasHeight = fixedHeight || (app.canvasEl ? app.canvasEl.height : 600);
|
|
2348
|
-
|
|
2349
|
-
// Check for animations
|
|
2350
|
-
const items = app.itemRegistry ? app.itemRegistry.getAll() : [];
|
|
2351
|
-
const hasAnimations = items.some(e => e.item.data?.animationType);
|
|
2352
|
-
const hasRelations = app.relationRegistry && app.relationRegistry.getAll().length > 0;
|
|
2353
|
-
const hasQuiz = app.quizManager && app.quizManager.quizzes.length > 0;
|
|
2354
|
-
const hasTriggers = items.some(e => e.item.data?.triggers?.length > 0);
|
|
2355
|
-
|
|
2356
|
-
const metadata = {
|
|
2357
|
-
hasInteractivity: hasTriggers || interactivity === 'full',
|
|
2358
|
-
hasAnimations: hasAnimations || hasRelations,
|
|
2359
|
-
hasQuiz,
|
|
2360
|
-
width: canvasWidth,
|
|
2361
|
-
height: canvasHeight,
|
|
2362
|
-
sizing,
|
|
2363
|
-
interactivity
|
|
2364
|
-
};
|
|
2365
|
-
|
|
2366
|
-
let code = '';
|
|
2367
|
-
let embedCode = '';
|
|
2368
|
-
|
|
2369
|
-
switch (format) {
|
|
2370
|
-
case 'web-component':
|
|
2371
|
-
code = \`<script src="https://cdn.pinepaper.io/widget.js"></script>
|
|
2372
|
-
<pinepaper-widget
|
|
2373
|
-
data-scene='\${sceneData}'
|
|
2374
|
-
data-sizing="\${sizing}"
|
|
2375
|
-
data-interactivity="\${interactivity}"
|
|
2376
|
-
data-autoplay="\${autoplay}"
|
|
2377
|
-
data-loop="\${loop}"
|
|
2378
|
-
\${fixedWidth ? 'width="' + canvasWidth + '"' : ''}
|
|
2379
|
-
\${fixedHeight ? 'height="' + canvasHeight + '"' : ''}
|
|
2380
|
-
></pinepaper-widget>\`;
|
|
2381
|
-
embedCode = code;
|
|
2382
|
-
break;
|
|
2383
|
-
|
|
2384
|
-
case 'standalone-html':
|
|
2385
|
-
code = \`<!DOCTYPE html>
|
|
2386
|
-
<html>
|
|
2387
|
-
<head>
|
|
2388
|
-
<meta charset="UTF-8">
|
|
2389
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
2390
|
-
<title>PinePaper Widget</title>
|
|
2391
|
-
<script src="https://cdn.pinepaper.io/runtime.js"></script>
|
|
2392
|
-
<style>
|
|
2393
|
-
body { margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #f5f5f5; }
|
|
2394
|
-
.pinepaper-container { \${sizing === 'responsive' ? 'width: 100%; max-width: ' + canvasWidth + 'px;' : sizing === 'fluid' ? 'width: 100%; height: 100%;' : 'width: ' + canvasWidth + 'px; height: ' + canvasHeight + 'px;'} }
|
|
2395
|
-
</style>
|
|
2396
|
-
</head>
|
|
2397
|
-
<body>
|
|
2398
|
-
<div class="pinepaper-container" id="pinepaper-widget"></div>
|
|
2399
|
-
<script>
|
|
2400
|
-
PinePaper.init('#pinepaper-widget', {
|
|
2401
|
-
scene: \${sceneData},
|
|
2402
|
-
autoplay: \${autoplay},
|
|
2403
|
-
loop: \${loop},
|
|
2404
|
-
interactivity: '\${interactivity}'\${hasLms ? ',\\n lms: true' : ''}
|
|
2405
|
-
});
|
|
2406
|
-
</script>
|
|
2407
|
-
</body>
|
|
2408
|
-
</html>\`;
|
|
2409
|
-
embedCode = \`<iframe src="[URL_TO_HOSTED_FILE]" width="\${canvasWidth}" height="\${canvasHeight}" frameborder="0"></iframe>\`;
|
|
2410
|
-
break;
|
|
2411
|
-
|
|
2412
|
-
case 'iframe-embed':
|
|
2413
|
-
const dataUri = 'data:text/html;base64,' + btoa(\`<!DOCTYPE html><html><head><script src="https://cdn.pinepaper.io/runtime.js"></script></head><body><div id="w"></div><script>PinePaper.init('#w',{scene:\${sceneData},autoplay:\${autoplay},loop:\${loop}});</script></body></html>\`);
|
|
2414
|
-
code = dataUri;
|
|
2415
|
-
embedCode = \`<iframe src="\${dataUri}" width="\${canvasWidth}" height="\${canvasHeight}" frameborder="0" allowfullscreen></iframe>\`;
|
|
2416
|
-
break;
|
|
2417
|
-
|
|
2418
|
-
case 'react-component':
|
|
2419
|
-
code = \`import { useEffect, useRef } from 'react';
|
|
2420
|
-
|
|
2421
|
-
export function PinepaperWidget({ className }) {
|
|
2422
|
-
const containerRef = useRef(null);
|
|
2423
|
-
|
|
2424
|
-
useEffect(() => {
|
|
2425
|
-
if (containerRef.current && window.PinePaper) {
|
|
2426
|
-
window.PinePaper.init(containerRef.current, {
|
|
2427
|
-
scene: \${sceneData},
|
|
2428
|
-
autoplay: \${autoplay},
|
|
2429
|
-
loop: \${loop},
|
|
2430
|
-
interactivity: '\${interactivity}'
|
|
2431
|
-
});
|
|
2432
|
-
}
|
|
2433
|
-
}, []);
|
|
2434
|
-
|
|
2435
|
-
return <div ref={containerRef} className={className} style={{ width: '\${sizing === 'fixed' ? canvasWidth + 'px' : '100%'}', height: '\${sizing === 'fixed' ? canvasHeight + 'px' : 'auto'}' }} />;
|
|
2436
|
-
}
|
|
2437
|
-
|
|
2438
|
-
// Usage: <PinepaperWidget className="my-widget" />\`;
|
|
2439
|
-
embedCode = '<PinepaperWidget />';
|
|
2440
|
-
break;
|
|
2441
|
-
|
|
2442
|
-
case 'vue-component':
|
|
2443
|
-
code = \`<template>
|
|
2444
|
-
<div ref="container" :class="className" :style="containerStyle"></div>
|
|
2445
|
-
</template>
|
|
2446
|
-
|
|
2447
|
-
<script setup>
|
|
2448
|
-
import { ref, onMounted, computed } from 'vue';
|
|
2449
|
-
|
|
2450
|
-
const props = defineProps({ className: String });
|
|
2451
|
-
const container = ref(null);
|
|
2452
|
-
|
|
2453
|
-
const containerStyle = computed(() => ({
|
|
2454
|
-
width: '\${sizing === 'fixed' ? canvasWidth + 'px' : '100%'}',
|
|
2455
|
-
height: '\${sizing === 'fixed' ? canvasHeight + 'px' : 'auto'}'
|
|
2456
|
-
}));
|
|
2457
|
-
|
|
2458
|
-
onMounted(() => {
|
|
2459
|
-
if (container.value && window.PinePaper) {
|
|
2460
|
-
window.PinePaper.init(container.value, {
|
|
2461
|
-
scene: \${sceneData},
|
|
2462
|
-
autoplay: \${autoplay},
|
|
2463
|
-
loop: \${loop},
|
|
2464
|
-
interactivity: '\${interactivity}'
|
|
2465
|
-
});
|
|
2466
|
-
}
|
|
2467
|
-
});
|
|
2468
|
-
</script>
|
|
2469
|
-
|
|
2470
|
-
<!-- Usage: <PinepaperWidget class="my-widget" /> -->\`;
|
|
2471
|
-
embedCode = '<PinepaperWidget />';
|
|
2472
|
-
break;
|
|
2473
|
-
}
|
|
2474
|
-
|
|
2475
|
-
return {
|
|
2476
|
-
success: true,
|
|
2477
|
-
format,
|
|
2478
|
-
code,
|
|
2479
|
-
embedCode,
|
|
2480
|
-
sceneData,
|
|
2481
|
-
metadata
|
|
2482
|
-
};
|
|
2483
|
-
})();
|
|
2484
2313
|
`.trim();
|
|
2485
2314
|
}
|
|
2486
2315
|
// ===========================================================================
|