@pinepaper.studio/mcp-server 1.5.3 → 1.5.4

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 (71) hide show
  1. package/README.md +6 -4
  2. package/dist/agent/types.d.ts +16 -16
  3. package/dist/browser/url-target.d.ts +26 -0
  4. package/dist/browser/url-target.d.ts.map +1 -0
  5. package/dist/browser/url-target.js +50 -0
  6. package/dist/browser/url-target.js.map +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +47 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/ontology/hints.d.ts +71 -0
  11. package/dist/ontology/hints.d.ts.map +1 -0
  12. package/dist/ontology/hints.js +189 -0
  13. package/dist/ontology/hints.js.map +1 -0
  14. package/dist/ontology/vocabulary.d.ts.map +1 -1
  15. package/dist/ontology/vocabulary.js +34 -0
  16. package/dist/ontology/vocabulary.js.map +1 -1
  17. package/dist/prompts/index.d.ts.map +1 -1
  18. package/dist/prompts/index.js +146 -0
  19. package/dist/prompts/index.js.map +1 -1
  20. package/dist/tools/compact-descriptions.d.ts +3 -0
  21. package/dist/tools/compact-descriptions.d.ts.map +1 -1
  22. package/dist/tools/compact-descriptions.js +17 -8
  23. package/dist/tools/compact-descriptions.js.map +1 -1
  24. package/dist/tools/definitions.d.ts +1 -1
  25. package/dist/tools/definitions.d.ts.map +1 -1
  26. package/dist/tools/definitions.js +1090 -1639
  27. package/dist/tools/definitions.js.map +1 -1
  28. package/dist/tools/handlers/camera.d.ts +19 -0
  29. package/dist/tools/handlers/camera.d.ts.map +1 -0
  30. package/dist/tools/handlers/camera.js +94 -0
  31. package/dist/tools/handlers/camera.js.map +1 -0
  32. package/dist/tools/handlers/export.d.ts +12 -0
  33. package/dist/tools/handlers/export.d.ts.map +1 -0
  34. package/dist/tools/handlers/export.js +30 -0
  35. package/dist/tools/handlers/export.js.map +1 -0
  36. package/dist/tools/handlers/font.d.ts +12 -0
  37. package/dist/tools/handlers/font.d.ts.map +1 -0
  38. package/dist/tools/handlers/font.js +135 -0
  39. package/dist/tools/handlers/font.js.map +1 -0
  40. package/dist/tools/handlers/maps.d.ts +19 -0
  41. package/dist/tools/handlers/maps.d.ts.map +1 -0
  42. package/dist/tools/handlers/maps.js +184 -0
  43. package/dist/tools/handlers/maps.js.map +1 -0
  44. package/dist/tools/handlers/ontology.d.ts +20 -0
  45. package/dist/tools/handlers/ontology.d.ts.map +1 -0
  46. package/dist/tools/handlers/ontology.js +185 -0
  47. package/dist/tools/handlers/ontology.js.map +1 -0
  48. package/dist/tools/handlers/tool-guide.d.ts +14 -0
  49. package/dist/tools/handlers/tool-guide.d.ts.map +1 -0
  50. package/dist/tools/handlers/tool-guide.js +52 -0
  51. package/dist/tools/handlers/tool-guide.js.map +1 -0
  52. package/dist/tools/handlers.d.ts +18 -0
  53. package/dist/tools/handlers.d.ts.map +1 -1
  54. package/dist/tools/handlers.js +205 -603
  55. package/dist/tools/handlers.js.map +1 -1
  56. package/dist/tools/minimal-descriptions.d.ts +4 -0
  57. package/dist/tools/minimal-descriptions.d.ts.map +1 -1
  58. package/dist/tools/minimal-descriptions.js +45 -54
  59. package/dist/tools/minimal-descriptions.js.map +1 -1
  60. package/dist/tools/toolkits.d.ts.map +1 -1
  61. package/dist/tools/toolkits.js +36 -45
  62. package/dist/tools/toolkits.js.map +1 -1
  63. package/dist/types/code-generator.d.ts +36 -1
  64. package/dist/types/code-generator.d.ts.map +1 -1
  65. package/dist/types/code-generator.js +823 -35
  66. package/dist/types/code-generator.js.map +1 -1
  67. package/dist/types/schemas.d.ts +1116 -444
  68. package/dist/types/schemas.d.ts.map +1 -1
  69. package/dist/types/schemas.js +290 -18
  70. package/dist/types/schemas.js.map +1 -1
  71. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/tools/handlers/export.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAuB,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAOvE,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5F,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAC/E,CAAC;IAED,8BAA8B,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,0BAA0B,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE;YACvE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,MAAM;SAC9C,CAAC,CAAC;QACH,OAAO,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC;IACzF,CAAC;IAED,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC;QACjD,OAAO,iBAAiB,CAAC,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,wBAAwB,CAAC,CAAC;IACpG,CAAC;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Font Studio handler — single action-dispatched tool replacing 16 thin
3
+ * wrappers (per the v1.5.4 critical-review consolidation). Every action
4
+ * is a one-liner against app.fontStudio.<method>(...) — bundling them
5
+ * into one tool slot trims ~15 entries from the tool listing without
6
+ * losing capability.
7
+ */
8
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
9
+ import { type HandlerOptions } from '../handlers.js';
10
+ export type FontHandler = (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>;
11
+ export declare const fontHandlers: Record<string, FontHandler>;
12
+ //# sourceMappingURL=font.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/font.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrF,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AA2H7B,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAEpD,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Font Studio handler — single action-dispatched tool replacing 16 thin
3
+ * wrappers (per the v1.5.4 critical-review consolidation). Every action
4
+ * is a one-liner against app.fontStudio.<method>(...) — bundling them
5
+ * into one tool slot trims ~15 entries from the tool listing without
6
+ * losing capability.
7
+ */
8
+ import { errorResult, executeOrGenerate } from '../handlers.js';
9
+ import { ErrorCodes } from '../../types/schemas.js';
10
+ async function dispatchFontAction(args, options) {
11
+ const action = args.action;
12
+ switch (action) {
13
+ case 'show_studio': {
14
+ const code = `app.fontStudio && app.fontStudio.show ? app.fontStudio.show() : null;`;
15
+ return executeOrGenerate(code, 'Opens Font Studio UI', options, 'pinepaper_font');
16
+ }
17
+ case 'set_name': {
18
+ const { name } = args;
19
+ if (typeof name !== 'string')
20
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font set_name requires { name: string }');
21
+ const code = `app.fontStudio.setName(${JSON.stringify(name)});`;
22
+ return executeOrGenerate(code, `Set font name to "${name}"`, options, 'pinepaper_font');
23
+ }
24
+ case 'get_required_chars': {
25
+ const { set } = args;
26
+ const setArg = set ? JSON.stringify(set) : '"minimum"';
27
+ const code = `app.fontStudio.getRequiredChars(${setArg});`;
28
+ return executeOrGenerate(code, `Get required characters (${set || 'minimum'} set)`, options, 'pinepaper_font');
29
+ }
30
+ case 'get_status': {
31
+ const code = `app.fontStudio.getStatus();`;
32
+ return executeOrGenerate(code, 'Get font completion status', options, 'pinepaper_font');
33
+ }
34
+ case 'create_glyph': {
35
+ const { character, pathId } = args;
36
+ if (typeof character !== 'string' || typeof pathId !== 'string') {
37
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font create_glyph requires { character, pathId }');
38
+ }
39
+ const code = `app.fontStudio.createGlyph(${JSON.stringify(character)}, ${JSON.stringify(pathId)});`;
40
+ return executeOrGenerate(code, `Create glyph for "${character}" from path ${pathId}`, options, 'pinepaper_font');
41
+ }
42
+ case 'create_space': {
43
+ const { width } = args;
44
+ const code = width !== undefined
45
+ ? `app.fontStudio.createSpace(${width});`
46
+ : `app.fontStudio.createSpace();`;
47
+ return executeOrGenerate(code, `Create space glyph${width ? ` (width: ${width})` : ''}`, options, 'pinepaper_font');
48
+ }
49
+ case 'remove_glyph': {
50
+ const { character } = args;
51
+ if (typeof character !== 'string')
52
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font remove_glyph requires { character }');
53
+ const code = `app.fontStudio.removeGlyph(${JSON.stringify(character)});`;
54
+ return executeOrGenerate(code, `Remove glyph for "${character}"`, options, 'pinepaper_font');
55
+ }
56
+ case 'set_metrics': {
57
+ const metrics = (args.metrics ?? args);
58
+ const cleanMetrics = {};
59
+ for (const k of ['unitsPerEm', 'ascender', 'descender', 'xHeight', 'capHeight']) {
60
+ if (metrics[k] !== undefined)
61
+ cleanMetrics[k] = metrics[k];
62
+ }
63
+ const code = `app.fontStudio.setMetrics(${JSON.stringify(cleanMetrics)});`;
64
+ return executeOrGenerate(code, 'Set font metrics', options, 'pinepaper_font');
65
+ }
66
+ case 'export': {
67
+ const { download } = args;
68
+ const code = download === false
69
+ ? `app.fontStudio.export({ download: false });`
70
+ : `app.fontStudio.export();`;
71
+ return executeOrGenerate(code, 'Export font as OTF', options, 'pinepaper_font');
72
+ }
73
+ case 'load_into_document': {
74
+ const code = `app.fontStudio.loadIntoDocument();`;
75
+ return executeOrGenerate(code, 'Load font into document', options, 'pinepaper_font');
76
+ }
77
+ case 'export_data': {
78
+ const { download } = args;
79
+ const code = download === false
80
+ ? `app.fontStudio.exportData({ download: false });`
81
+ : `app.fontStudio.exportData();`;
82
+ return executeOrGenerate(code, 'Export font data as JSON', options, 'pinepaper_font');
83
+ }
84
+ case 'import_data': {
85
+ const { data } = args;
86
+ if (!data || typeof data !== 'object')
87
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font import_data requires { data: object }');
88
+ const code = `app.fontStudio.importData(${JSON.stringify(data)});`;
89
+ return executeOrGenerate(code, 'Import font data from JSON', options, 'pinepaper_font');
90
+ }
91
+ case 'clear': {
92
+ const code = `app.fontStudio.clear();`;
93
+ return executeOrGenerate(code, 'Clear all glyphs and reset font', options, 'pinepaper_font');
94
+ }
95
+ case 'remove_overlap': {
96
+ const { pathId } = args;
97
+ if (typeof pathId !== 'string')
98
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font remove_overlap requires { pathId }');
99
+ const code = `app.fontStudio.removeOverlap(${JSON.stringify(pathId)});`;
100
+ return executeOrGenerate(code, `Remove overlaps from path ${pathId}`, options, 'pinepaper_font');
101
+ }
102
+ case 'correct_direction': {
103
+ const { pathId } = args;
104
+ if (typeof pathId !== 'string')
105
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font correct_direction requires { pathId }');
106
+ const code = `app.fontStudio.correctDirection(${JSON.stringify(pathId)});`;
107
+ return executeOrGenerate(code, `Correct path direction for ${pathId}`, options, 'pinepaper_font');
108
+ }
109
+ case 'cleanup_path': {
110
+ const { pathId, removeOverlap, correctDirection, smooth, smoothTolerance } = args;
111
+ if (typeof pathId !== 'string')
112
+ return errorResult(ErrorCodes.INVALID_INPUT, 'font cleanup_path requires { pathId }');
113
+ const optsObj = {};
114
+ if (removeOverlap !== undefined)
115
+ optsObj.removeOverlap = removeOverlap;
116
+ if (correctDirection !== undefined)
117
+ optsObj.correctDirection = correctDirection;
118
+ if (smooth !== undefined)
119
+ optsObj.smooth = smooth;
120
+ if (smoothTolerance !== undefined)
121
+ optsObj.smoothTolerance = smoothTolerance;
122
+ const hasOpts = Object.keys(optsObj).length > 0;
123
+ const code = hasOpts
124
+ ? `app.fontStudio.cleanupPath(${JSON.stringify(pathId)}, ${JSON.stringify(optsObj)});`
125
+ : `app.fontStudio.cleanupPath(${JSON.stringify(pathId)});`;
126
+ return executeOrGenerate(code, `Cleanup path ${pathId}`, options, 'pinepaper_font');
127
+ }
128
+ default:
129
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown font action "${action}". Valid: show_studio, set_name, get_required_chars, get_status, create_glyph, create_space, remove_glyph, set_metrics, export, load_into_document, export_data, import_data, clear, remove_overlap, correct_direction, cleanup_path.`);
130
+ }
131
+ }
132
+ export const fontHandlers = {
133
+ pinepaper_font: dispatchFontAction,
134
+ };
135
+ //# sourceMappingURL=font.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.js","sourceRoot":"","sources":["../../../src/tools/handlers/font.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Map tool handlers — four action-dispatched tools (was 23 thin wrappers,
3
+ * per the v1.5.4 critical-review consolidation).
4
+ *
5
+ * pinepaper_map — load + viewport control
6
+ * pinepaper_map_regions — highlight / select / color / label / marker
7
+ * pinepaper_map_animation — animate regions / wave / stop
8
+ * pinepaper_map_data — CSV + GeoJSON import/export, source info
9
+ *
10
+ * Splitting along these seams (instead of collapsing all 23 into one
11
+ * tool) keeps each action-enum small enough that the LLM can pick
12
+ * confidently, while still trimming 19 entries from the tool listing.
13
+ * Each handler parses its Zod schema, dispatches to codeGenerator.
14
+ */
15
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
16
+ import { type HandlerOptions } from '../handlers.js';
17
+ export type MapHandler = (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>;
18
+ export declare const mapHandlers: Record<string, MapHandler>;
19
+ //# sourceMappingURL=maps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/maps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAuBrF,MAAM,MAAM,UAAU,GAAG,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAsL7B,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAKlD,CAAC"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Map tool handlers — four action-dispatched tools (was 23 thin wrappers,
3
+ * per the v1.5.4 critical-review consolidation).
4
+ *
5
+ * pinepaper_map — load + viewport control
6
+ * pinepaper_map_regions — highlight / select / color / label / marker
7
+ * pinepaper_map_animation — animate regions / wave / stop
8
+ * pinepaper_map_data — CSV + GeoJSON import/export, source info
9
+ *
10
+ * Splitting along these seams (instead of collapsing all 23 into one
11
+ * tool) keeps each action-enum small enough that the LLM can pick
12
+ * confidently, while still trimming 19 entries from the tool listing.
13
+ * Each handler parses its Zod schema, dispatches to codeGenerator.
14
+ */
15
+ import { errorResult, executeOrGenerate } from '../handlers.js';
16
+ import { codeGenerator } from '../../types/code-generator.js';
17
+ import { LoadMapInputSchema, HighlightRegionsInputSchema, UnhighlightRegionsInputSchema, ApplyDataColorsInputSchema, AddMarkerInputSchema, AddMapLabelsInputSchema, PanMapInputSchema, ZoomMapInputSchema, ImportCustomMapInputSchema, GetRegionAtPointInputSchema, AnimateMapRegionsInputSchema, AnimateMapWaveInputSchema, StopMapAnimationsInputSchema, ExportMapRegionCSVInputSchema, ImportMapRegionCSVInputSchema, SelectMapRegionsInputSchema, DeselectMapRegionsInputSchema, ErrorCodes, } from '../../types/schemas.js';
18
+ // ---------------------------------------------------------------------------
19
+ // pinepaper_map — load + viewport control
20
+ // ---------------------------------------------------------------------------
21
+ async function dispatchMap(args, options) {
22
+ const action = args.action;
23
+ switch (action) {
24
+ case 'load': {
25
+ const input = LoadMapInputSchema.parse(args);
26
+ const code = codeGenerator.generateLoadMap(input);
27
+ return executeOrGenerate(code, `Loads ${input.mapId} map with ${input.projection || 'default'} projection`, options, 'pinepaper_map');
28
+ }
29
+ case 'pan': {
30
+ const input = PanMapInputSchema.parse(args);
31
+ const code = codeGenerator.generatePanMap(input);
32
+ return executeOrGenerate(code, `Pans map to [${input.lat}, ${input.lon}]`, options, 'pinepaper_map');
33
+ }
34
+ case 'zoom': {
35
+ const input = ZoomMapInputSchema.parse(args);
36
+ const code = codeGenerator.generateZoomMap(input);
37
+ return executeOrGenerate(code, `Sets map zoom level to ${input.level}`, options, 'pinepaper_map');
38
+ }
39
+ case 'export_config': {
40
+ const code = codeGenerator.generateExportMap();
41
+ return executeOrGenerate(code, 'Exports map configuration', options, 'pinepaper_map');
42
+ }
43
+ case 'import_custom': {
44
+ const input = ImportCustomMapInputSchema.parse(args);
45
+ const code = codeGenerator.generateImportCustomMap(input);
46
+ return executeOrGenerate(code, input.url ? 'Imports custom map from URL' : 'Imports custom GeoJSON map', options, 'pinepaper_map');
47
+ }
48
+ default:
49
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown pinepaper_map action "${action}". Valid: load, pan, zoom, export_config, import_custom.`);
50
+ }
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // pinepaper_map_regions — region styling + selection
54
+ // ---------------------------------------------------------------------------
55
+ async function dispatchMapRegions(args, options) {
56
+ const action = args.action;
57
+ switch (action) {
58
+ case 'highlight': {
59
+ const input = HighlightRegionsInputSchema.parse(args);
60
+ const code = codeGenerator.generateHighlightRegions(input);
61
+ return executeOrGenerate(code, `Highlights ${input.regionIds.length} region(s) on the map`, options, 'pinepaper_map_regions');
62
+ }
63
+ case 'unhighlight': {
64
+ const input = UnhighlightRegionsInputSchema.parse(args);
65
+ const code = codeGenerator.generateUnhighlightRegions(input);
66
+ return executeOrGenerate(code, 'Removes region highlights', options, 'pinepaper_map_regions');
67
+ }
68
+ case 'apply_colors': {
69
+ const input = ApplyDataColorsInputSchema.parse(args);
70
+ const code = codeGenerator.generateApplyDataColors(input);
71
+ const regionCount = Object.keys(input.data).length;
72
+ return executeOrGenerate(code, `Applies choropleth coloring to ${regionCount} region(s)`, options, 'pinepaper_map_regions');
73
+ }
74
+ case 'add_marker': {
75
+ const input = AddMarkerInputSchema.parse(args);
76
+ const code = codeGenerator.generateAddMarker(input);
77
+ return executeOrGenerate(code, `Adds marker at [${input.lat}, ${input.lon}]${input.label ? `: ${input.label}` : ''}`, options, 'pinepaper_map_regions');
78
+ }
79
+ case 'add_labels': {
80
+ const input = AddMapLabelsInputSchema.parse(args);
81
+ const code = codeGenerator.generateAddMapLabels(input);
82
+ return executeOrGenerate(code, 'Adds labels to map regions', options, 'pinepaper_map_regions');
83
+ }
84
+ case 'get_at_point': {
85
+ const input = GetRegionAtPointInputSchema.parse(args);
86
+ const code = codeGenerator.generateGetRegionAtPoint(input);
87
+ return executeOrGenerate(code, `Gets region at point [${input.x}, ${input.y}]`, options, 'pinepaper_map_regions');
88
+ }
89
+ case 'select': {
90
+ const input = SelectMapRegionsInputSchema.parse(args);
91
+ const code = codeGenerator.generateSelectMapRegions(input);
92
+ return executeOrGenerate(code, `Selects ${input.regionIds.length} map region(s)`, options, 'pinepaper_map_regions');
93
+ }
94
+ case 'deselect': {
95
+ const input = DeselectMapRegionsInputSchema.parse(args);
96
+ const code = codeGenerator.generateDeselectMapRegions(input);
97
+ return executeOrGenerate(code, 'Deselects map regions', options, 'pinepaper_map_regions');
98
+ }
99
+ case 'get_highlighted': {
100
+ const code = codeGenerator.generateGetHighlightedMapRegions();
101
+ return executeOrGenerate(code, 'Gets list of highlighted map regions', options, 'pinepaper_map_regions');
102
+ }
103
+ default:
104
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown pinepaper_map_regions action "${action}". Valid: highlight, unhighlight, apply_colors, add_marker, add_labels, get_at_point, select, deselect, get_highlighted.`);
105
+ }
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // pinepaper_map_animation — region animations
109
+ // ---------------------------------------------------------------------------
110
+ async function dispatchMapAnimation(args, options) {
111
+ const action = args.action;
112
+ switch (action) {
113
+ case 'animate_regions': {
114
+ const input = AnimateMapRegionsInputSchema.parse(args);
115
+ const code = codeGenerator.generateAnimateMapRegions(input);
116
+ const regionCount = Object.keys(input.regions).length;
117
+ return executeOrGenerate(code, `Animates ${regionCount} map region(s) over ${input.duration || 5}s`, options, 'pinepaper_map_animation');
118
+ }
119
+ case 'animate_wave': {
120
+ const input = AnimateMapWaveInputSchema.parse(args);
121
+ const code = codeGenerator.generateAnimateMapWave(input);
122
+ return executeOrGenerate(code, `Creates ${input.waveDirection || 'horizontal'} wave animation`, options, 'pinepaper_map_animation');
123
+ }
124
+ case 'stop': {
125
+ const input = StopMapAnimationsInputSchema.parse(args);
126
+ const code = codeGenerator.generateStopMapAnimations(input);
127
+ return executeOrGenerate(code, 'Stops map region animations', options, 'pinepaper_map_animation');
128
+ }
129
+ case 'get_animated': {
130
+ const code = codeGenerator.generateGetAnimatedMapRegions();
131
+ return executeOrGenerate(code, 'Gets list of animated map regions', options, 'pinepaper_map_animation');
132
+ }
133
+ default:
134
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown pinepaper_map_animation action "${action}". Valid: animate_regions, animate_wave, stop, get_animated.`);
135
+ }
136
+ }
137
+ // ---------------------------------------------------------------------------
138
+ // pinepaper_map_data — CSV / GeoJSON import-export + source info
139
+ // ---------------------------------------------------------------------------
140
+ async function dispatchMapData(args, options) {
141
+ const action = args.action;
142
+ switch (action) {
143
+ case 'export_csv': {
144
+ const input = ExportMapRegionCSVInputSchema.parse(args);
145
+ const code = codeGenerator.generateExportMapRegionCSV(input);
146
+ return executeOrGenerate(code, 'Exports map region data as CSV', options, 'pinepaper_map_data');
147
+ }
148
+ case 'import_csv': {
149
+ const input = ImportMapRegionCSVInputSchema.parse(args);
150
+ const code = codeGenerator.generateImportMapRegionCSV(input);
151
+ return executeOrGenerate(code, 'Imports CSV data to update map regions', options, 'pinepaper_map_data');
152
+ }
153
+ case 'export_geojson': {
154
+ const code = codeGenerator.generateExportMapGeoJson({
155
+ includeStyles: args.includeStyles,
156
+ includeMetadata: args.includeMetadata,
157
+ selectedOnly: args.selectedOnly,
158
+ download: args.download,
159
+ filename: args.filename,
160
+ });
161
+ return executeOrGenerate(code, 'Exports map as GeoJSON', options, 'pinepaper_map_data');
162
+ }
163
+ case 'export_original_geojson': {
164
+ const code = codeGenerator.generateExportOriginalMapGeoJson({
165
+ download: args.download,
166
+ filename: args.filename,
167
+ });
168
+ return executeOrGenerate(code, 'Exports original map GeoJSON', options, 'pinepaper_map_data');
169
+ }
170
+ case 'source_info': {
171
+ const code = codeGenerator.generateGetMapSourceInfo();
172
+ return executeOrGenerate(code, 'Gets map source information', options, 'pinepaper_map_data');
173
+ }
174
+ default:
175
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown pinepaper_map_data action "${action}". Valid: export_csv, import_csv, export_geojson, export_original_geojson, source_info.`);
176
+ }
177
+ }
178
+ export const mapHandlers = {
179
+ pinepaper_map: dispatchMap,
180
+ pinepaper_map_regions: dispatchMapRegions,
181
+ pinepaper_map_animation: dispatchMapAnimation,
182
+ pinepaper_map_data: dispatchMapData,
183
+ };
184
+ //# sourceMappingURL=maps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maps.js","sourceRoot":"","sources":["../../../src/tools/handlers/maps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Ontology tool handlers — extracted from src/tools/handlers.ts.
3
+ *
4
+ * Three tools form the public ontology surface:
5
+ * pinepaper_analyze_design — extract a graph from a template definition
6
+ * + emit JSON-LD
7
+ * pinepaper_validate_design — schema validation + 5-dim quality scoring
8
+ * pinepaper_query_ontology — 14 read-only queries over the vocabulary
9
+ * (list_types/edges/generators/effects/patterns/
10
+ * math_functions, type hierarchy, subtype check,
11
+ * edge/node lookup, etc.)
12
+ *
13
+ * All ontology code is loaded via dynamic imports — same behavior as the
14
+ * pre-extraction switch — so the cost only hits when a query lands.
15
+ */
16
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
17
+ import { type HandlerOptions } from '../handlers.js';
18
+ export type OntologyHandler = (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>;
19
+ export declare const ontologyHandlers: Record<string, OntologyHandler>;
20
+ //# sourceMappingURL=ontology.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/ontology.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAkC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUrF,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7B,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoK5D,CAAC"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Ontology tool handlers — extracted from src/tools/handlers.ts.
3
+ *
4
+ * Three tools form the public ontology surface:
5
+ * pinepaper_analyze_design — extract a graph from a template definition
6
+ * + emit JSON-LD
7
+ * pinepaper_validate_design — schema validation + 5-dim quality scoring
8
+ * pinepaper_query_ontology — 14 read-only queries over the vocabulary
9
+ * (list_types/edges/generators/effects/patterns/
10
+ * math_functions, type hierarchy, subtype check,
11
+ * edge/node lookup, etc.)
12
+ *
13
+ * All ontology code is loaded via dynamic imports — same behavior as the
14
+ * pre-extraction switch — so the cost only hits when a query lands.
15
+ */
16
+ import { errorResult, executeOrGenerate } from '../handlers.js';
17
+ import { codeGenerator } from '../../types/code-generator.js';
18
+ import { AnalyzeDesignInputSchema, ValidateDesignInputSchema, QueryOntologyInputSchema, GetCanvasOntologyInputSchema, ErrorCodes, } from '../../types/schemas.js';
19
+ export const ontologyHandlers = {
20
+ pinepaper_get_canvas_ontology: async (args, options) => {
21
+ const input = GetCanvasOntologyInputSchema.parse(args);
22
+ const code = codeGenerator.generateGetCanvasOntology({
23
+ maxItems: input.maxItems,
24
+ maxChildren: input.maxChildren,
25
+ includeViewport: input.includeViewport,
26
+ });
27
+ return executeOrGenerate(code, 'Captures canvas as pp: ontology', options, 'pinepaper_get_canvas_ontology');
28
+ },
29
+ pinepaper_analyze_design: async (args, _options) => {
30
+ const input = AnalyzeDesignInputSchema.parse(args);
31
+ const { DesignGraph } = await import('../../ontology/index.js');
32
+ const dg = new DesignGraph();
33
+ const graph = dg.extractFromDefinition(input.definition);
34
+ const jsonLd = dg.toJsonLd(graph);
35
+ return {
36
+ content: [{
37
+ type: 'text',
38
+ text: JSON.stringify({
39
+ templateId: graph.templateId,
40
+ templateName: graph.templateName,
41
+ category: graph.category,
42
+ dimensions: graph.dimensions,
43
+ duration: graph.duration,
44
+ nodeCount: graph.nodes.length,
45
+ edgeCount: graph.edges.length,
46
+ nodeTypes: Object.fromEntries(Object.entries(graph.fingerprint?.nodeTypeCounts || {}).sort((a, b) => b[1] - a[1])),
47
+ edgeTypes: Object.fromEntries(Object.entries(graph.fingerprint?.edgeTypeCounts || {}).sort((a, b) => b[1] - a[1])),
48
+ patterns: graph.patterns,
49
+ mathFunctions: graph.mathFunctions,
50
+ generator: graph.generator,
51
+ semantics: graph.semantics,
52
+ fingerprint: graph.fingerprint,
53
+ jsonLd,
54
+ }, null, 2),
55
+ }],
56
+ };
57
+ },
58
+ pinepaper_validate_design: async (args, _options) => {
59
+ const input = ValidateDesignInputSchema.parse(args);
60
+ const { DesignGraph, KnowledgeGraphValidator } = await import('../../ontology/index.js');
61
+ const dg = new DesignGraph();
62
+ const validator = new KnowledgeGraphValidator();
63
+ const definition = input.definition;
64
+ const validation = validator.validateTemplate(definition);
65
+ let quality = null;
66
+ if (validation.valid) {
67
+ const graph = dg.extractFromDefinition(definition);
68
+ quality = validator.scoreQuality(definition, graph);
69
+ }
70
+ return {
71
+ content: [{
72
+ type: 'text',
73
+ text: JSON.stringify({ validation, quality }, null, 2),
74
+ }],
75
+ };
76
+ },
77
+ pinepaper_query_ontology: async (args, _options) => {
78
+ const input = QueryOntologyInputSchema.parse(args);
79
+ const { PP_VOCABULARY, RELATION_TYPE_MAP } = await import('../../ontology/vocabulary.js');
80
+ const { DesignGraph } = await import('../../ontology/design-graph.js');
81
+ const dg = new DesignGraph();
82
+ let result;
83
+ switch (input.query) {
84
+ case 'list_types': {
85
+ const entries = Object.entries(PP_VOCABULARY.types);
86
+ const filtered = entries.filter(([_key, def]) => {
87
+ if (input.category && def.category !== input.category)
88
+ return false;
89
+ if (!input.includeAbstract && def.abstract)
90
+ return false;
91
+ return true;
92
+ });
93
+ result = Object.fromEntries(filtered);
94
+ break;
95
+ }
96
+ case 'list_edges': {
97
+ const entries = Object.entries(PP_VOCABULARY.edges);
98
+ const filtered = input.category
99
+ ? entries.filter(([, def]) => def.category === input.category)
100
+ : entries;
101
+ result = Object.fromEntries(filtered);
102
+ break;
103
+ }
104
+ case 'list_generators': {
105
+ const entries = Object.entries(PP_VOCABULARY.generators);
106
+ const filtered = input.category
107
+ ? entries.filter(([, def]) => def.category === input.category)
108
+ : entries;
109
+ result = Object.fromEntries(filtered);
110
+ break;
111
+ }
112
+ case 'list_effects': {
113
+ result = ['sparkle', 'blast', 'smoke', 'fire', 'rain', 'snow', 'confetti', 'ripple', 'glow', 'electric'];
114
+ break;
115
+ }
116
+ case 'list_patterns': {
117
+ result = PP_VOCABULARY.patterns;
118
+ break;
119
+ }
120
+ case 'list_math_functions': {
121
+ result = PP_VOCABULARY.mathFunctions;
122
+ break;
123
+ }
124
+ case 'type_hierarchy': {
125
+ if (!input.ppType)
126
+ return errorResult(ErrorCodes.INVALID_INPUT, 'ppType is required for type_hierarchy');
127
+ result = dg.getTypeHierarchy(input.ppType);
128
+ break;
129
+ }
130
+ case 'type_children': {
131
+ if (!input.ppType)
132
+ return errorResult(ErrorCodes.INVALID_INPUT, 'ppType is required for type_children');
133
+ result = dg.getTypeChildren(input.ppType);
134
+ break;
135
+ }
136
+ case 'type_properties': {
137
+ if (!input.ppType)
138
+ return errorResult(ErrorCodes.INVALID_INPUT, 'ppType is required for type_properties');
139
+ result = dg.getPropertiesFor(input.ppType);
140
+ break;
141
+ }
142
+ case 'animatable_properties': {
143
+ if (!input.ppType)
144
+ return errorResult(ErrorCodes.INVALID_INPUT, 'ppType is required for animatable_properties');
145
+ result = dg.getAnimatableProperties(input.ppType);
146
+ break;
147
+ }
148
+ case 'is_subtype': {
149
+ if (!input.typeA || !input.typeB)
150
+ return errorResult(ErrorCodes.INVALID_INPUT, 'typeA and typeB are required for is_subtype');
151
+ result = { isSubtype: dg.isSubtypeOf(input.typeA, input.typeB) };
152
+ break;
153
+ }
154
+ case 'edge_info': {
155
+ const edgeName = input.relationName || input.ppType;
156
+ if (!edgeName)
157
+ return errorResult(ErrorCodes.INVALID_INPUT, 'relationName or ppType is required for edge_info');
158
+ const ppEdge = PP_VOCABULARY.edges[edgeName] || PP_VOCABULARY.edges[RELATION_TYPE_MAP[edgeName] || ''];
159
+ result = ppEdge || { error: `Unknown edge: ${edgeName}` };
160
+ break;
161
+ }
162
+ case 'node_type': {
163
+ if (!input.itemType)
164
+ return errorResult(ErrorCodes.INVALID_INPUT, 'itemType is required for node_type');
165
+ result = { ppType: dg.getNodeType(input.itemType) };
166
+ break;
167
+ }
168
+ case 'edge_type': {
169
+ if (!input.relationName)
170
+ return errorResult(ErrorCodes.INVALID_INPUT, 'relationName is required for edge_type');
171
+ result = { ppEdge: dg.getEdgeType(input.relationName) };
172
+ break;
173
+ }
174
+ default:
175
+ return errorResult(ErrorCodes.INVALID_INPUT, `Unknown query: ${input.query}`);
176
+ }
177
+ return {
178
+ content: [{
179
+ type: 'text',
180
+ text: JSON.stringify(result, null, 2),
181
+ }],
182
+ };
183
+ },
184
+ };
185
+ //# sourceMappingURL=ontology.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ontology.js","sourceRoot":"","sources":["../../../src/tools/handlers/ontology.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tool guide handler — extracted from src/tools/handlers.ts.
3
+ *
4
+ * Returns the full AI Agent Guide when called with no args, the verbose
5
+ * description for a specific tool when given a tool name, or every tool in
6
+ * a category when given a category. Uses dynamic imports for the tool list
7
+ * + tag map so the module load cost only hits when the guide is actually
8
+ * requested.
9
+ */
10
+ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
11
+ import { type HandlerOptions } from '../handlers.js';
12
+ export type ToolGuideHandler = (args: Record<string, unknown>, options: HandlerOptions) => Promise<CallToolResult>;
13
+ export declare const toolGuideHandlers: Record<string, ToolGuideHandler>;
14
+ //# sourceMappingURL=tool-guide.d.ts.map