@pascal-app/mcp 1.0.0-beta.5 → 1.0.0

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 (108) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bridge/scene-bridge.d.ts.map +1 -1
  3. package/dist/bridge/scene-bridge.js +2 -2
  4. package/dist/server.d.ts +11 -0
  5. package/dist/server.d.ts.map +1 -1
  6. package/dist/server.js +52 -0
  7. package/dist/tools/annotations.d.ts +28 -0
  8. package/dist/tools/annotations.d.ts.map +1 -0
  9. package/dist/tools/annotations.js +27 -0
  10. package/dist/tools/apply-patch.d.ts +7 -0
  11. package/dist/tools/apply-patch.d.ts.map +1 -1
  12. package/dist/tools/apply-patch.js +6 -2
  13. package/dist/tools/check-collisions.d.ts +59 -0
  14. package/dist/tools/check-collisions.d.ts.map +1 -1
  15. package/dist/tools/check-collisions.js +240 -19
  16. package/dist/tools/construction-tools.d.ts +23 -1
  17. package/dist/tools/construction-tools.d.ts.map +1 -1
  18. package/dist/tools/construction-tools.js +34 -8
  19. package/dist/tools/create-level.d.ts +7 -0
  20. package/dist/tools/create-level.d.ts.map +1 -1
  21. package/dist/tools/create-level.js +6 -3
  22. package/dist/tools/create-wall.d.ts +7 -0
  23. package/dist/tools/create-wall.d.ts.map +1 -1
  24. package/dist/tools/create-wall.js +6 -3
  25. package/dist/tools/cut-opening.d.ts +7 -0
  26. package/dist/tools/cut-opening.d.ts.map +1 -1
  27. package/dist/tools/cut-opening.js +6 -3
  28. package/dist/tools/delete-node.d.ts +7 -0
  29. package/dist/tools/delete-node.d.ts.map +1 -1
  30. package/dist/tools/delete-node.js +6 -3
  31. package/dist/tools/describe-node.d.ts.map +1 -1
  32. package/dist/tools/describe-node.js +2 -0
  33. package/dist/tools/door-clearance.d.ts +18 -2
  34. package/dist/tools/door-clearance.d.ts.map +1 -1
  35. package/dist/tools/door-clearance.js +101 -7
  36. package/dist/tools/duplicate-level.d.ts +7 -0
  37. package/dist/tools/duplicate-level.d.ts.map +1 -1
  38. package/dist/tools/duplicate-level.js +6 -2
  39. package/dist/tools/export-glb.d.ts.map +1 -1
  40. package/dist/tools/export-glb.js +4 -2
  41. package/dist/tools/export-json.d.ts.map +1 -1
  42. package/dist/tools/export-json.js +2 -0
  43. package/dist/tools/find-nodes.d.ts.map +1 -1
  44. package/dist/tools/find-nodes.js +2 -0
  45. package/dist/tools/get-node.d.ts.map +1 -1
  46. package/dist/tools/get-node.js +2 -0
  47. package/dist/tools/get-scene.d.ts.map +1 -1
  48. package/dist/tools/get-scene.js +2 -0
  49. package/dist/tools/layout-clearance.d.ts +2 -0
  50. package/dist/tools/layout-clearance.d.ts.map +1 -1
  51. package/dist/tools/layout-clearance.js +5 -1
  52. package/dist/tools/live-sync.d.ts +33 -3
  53. package/dist/tools/live-sync.d.ts.map +1 -1
  54. package/dist/tools/live-sync.js +36 -4
  55. package/dist/tools/measure.d.ts +1 -0
  56. package/dist/tools/measure.d.ts.map +1 -1
  57. package/dist/tools/measure.js +4 -0
  58. package/dist/tools/photo-to-scene/photo-to-scene.d.ts.map +1 -1
  59. package/dist/tools/photo-to-scene/photo-to-scene.js +2 -0
  60. package/dist/tools/place-item.d.ts +7 -0
  61. package/dist/tools/place-item.d.ts.map +1 -1
  62. package/dist/tools/place-item.js +6 -2
  63. package/dist/tools/redo.d.ts +7 -0
  64. package/dist/tools/redo.d.ts.map +1 -1
  65. package/dist/tools/redo.js +6 -4
  66. package/dist/tools/room-tools.d.ts +28 -0
  67. package/dist/tools/room-tools.d.ts.map +1 -1
  68. package/dist/tools/room-tools.js +20 -5
  69. package/dist/tools/scene-lifecycle/create-project.d.ts.map +1 -1
  70. package/dist/tools/scene-lifecycle/create-project.js +2 -0
  71. package/dist/tools/scene-lifecycle/delete-scene.d.ts.map +1 -1
  72. package/dist/tools/scene-lifecycle/delete-scene.js +2 -0
  73. package/dist/tools/scene-lifecycle/get-project-status.d.ts.map +1 -1
  74. package/dist/tools/scene-lifecycle/get-project-status.js +2 -0
  75. package/dist/tools/scene-lifecycle/list-scenes.d.ts.map +1 -1
  76. package/dist/tools/scene-lifecycle/list-scenes.js +2 -0
  77. package/dist/tools/scene-lifecycle/load-scene.d.ts.map +1 -1
  78. package/dist/tools/scene-lifecycle/load-scene.js +2 -0
  79. package/dist/tools/scene-lifecycle/rename-scene.d.ts.map +1 -1
  80. package/dist/tools/scene-lifecycle/rename-scene.js +2 -0
  81. package/dist/tools/scene-lifecycle/save-scene.d.ts.map +1 -1
  82. package/dist/tools/scene-lifecycle/save-scene.js +2 -0
  83. package/dist/tools/scene-lifecycle/test-utils.d.ts +5 -1
  84. package/dist/tools/scene-lifecycle/test-utils.d.ts.map +1 -1
  85. package/dist/tools/scene-lifecycle/test-utils.js +24 -0
  86. package/dist/tools/scene-query.d.ts.map +1 -1
  87. package/dist/tools/scene-query.js +6 -0
  88. package/dist/tools/set-zone.d.ts +7 -0
  89. package/dist/tools/set-zone.d.ts.map +1 -1
  90. package/dist/tools/set-zone.js +6 -3
  91. package/dist/tools/templates/create-from-template.d.ts.map +1 -1
  92. package/dist/tools/templates/create-from-template.js +2 -0
  93. package/dist/tools/templates/create-house-from-brief.d.ts.map +1 -1
  94. package/dist/tools/templates/create-house-from-brief.js +2 -0
  95. package/dist/tools/templates/list-templates.d.ts.map +1 -1
  96. package/dist/tools/templates/list-templates.js +2 -0
  97. package/dist/tools/undo.d.ts +7 -0
  98. package/dist/tools/undo.d.ts.map +1 -1
  99. package/dist/tools/undo.js +6 -4
  100. package/dist/tools/validate-scene.d.ts.map +1 -1
  101. package/dist/tools/validate-scene.js +2 -0
  102. package/dist/tools/variants/generate-variants.d.ts.map +1 -1
  103. package/dist/tools/variants/generate-variants.js +2 -0
  104. package/dist/tools/vision/analyze-floorplan-image.d.ts.map +1 -1
  105. package/dist/tools/vision/analyze-floorplan-image.js +2 -0
  106. package/dist/tools/vision/analyze-room-photo.d.ts.map +1 -1
  107. package/dist/tools/vision/analyze-room-photo.js +2 -0
  108. package/package.json +5 -5
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { READ_ONLY_TOOL_ANNOTATIONS } from './annotations';
2
3
  export const validateSceneInput = {};
3
4
  export const validateSceneOutput = {
4
5
  valid: z.boolean(),
@@ -14,6 +15,7 @@ export function registerValidateScene(server, bridge) {
14
15
  description: 'Run Zod validation against every node in the scene. Returns `{ valid, errors }` where each error has `{ nodeId, path, message }`.',
15
16
  inputSchema: validateSceneInput,
16
17
  outputSchema: validateSceneOutput,
18
+ annotations: READ_ONLY_TOOL_ANNOTATIONS,
17
19
  }, async () => {
18
20
  const result = bridge.validateScene();
19
21
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-variants.d.ts","sourceRoot":"","sources":["../../../src/tools/variants/generate-variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGxE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAcvD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;CAYjC,CAAA;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;CAWlC,CAAA;AAcD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA0FzF"}
1
+ {"version":3,"file":"generate-variants.d.ts","sourceRoot":"","sources":["../../../src/tools/variants/generate-variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGxE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAevD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;CAYjC,CAAA;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;CAWlC,CAAA;AAcD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA2FzF"}
@@ -1,6 +1,7 @@
1
1
  import { forkSceneGraph } from '@pascal-app/core/clone-scene-graph';
2
2
  import { AnyNode as AnyNodeSchema } from '@pascal-app/core/schema';
3
3
  import { z } from 'zod';
4
+ import { ADDITIVE_TOOL_ANNOTATIONS } from '../annotations';
4
5
  import { ErrorCode, throwMcpError } from '../errors';
5
6
  import { applyMutation, describeVariant, mulberry32 } from './mutations';
6
7
  const MUTATION_KINDS = [
@@ -53,6 +54,7 @@ export function registerGenerateVariants(server, bridge) {
53
54
  description: 'Generate N variations of a base scene by forking and applying seeded mutations. Example: "give me 5 variations of this kitchen". If `save=true`, each variant is persisted via scene operations and returned with an id + URL; otherwise the graph is returned inline.',
54
55
  inputSchema: generateVariantsInput,
55
56
  outputSchema: generateVariantsOutput,
57
+ annotations: ADDITIVE_TOOL_ANNOTATIONS,
56
58
  }, async ({ baseSceneId, count, vary, seed, save }) => {
57
59
  // 1. Obtain the base SceneGraph.
58
60
  let base;
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-floorplan-image.d.ts","sourceRoot":"","sources":["../../../src/tools/vision/analyze-floorplan-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;CAMtC,CAAA;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;CAoBvC,CAAA;AAgFD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAiE/F"}
1
+ {"version":3,"file":"analyze-floorplan-image.d.ts","sourceRoot":"","sources":["../../../src/tools/vision/analyze-floorplan-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B;;;CAMtC,CAAA;AAED,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;CAoBvC,CAAA;AAgFD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAkE/F"}
@@ -1,5 +1,6 @@
1
1
  import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
2
2
  import { z } from 'zod';
3
+ import { READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS } from '../annotations';
3
4
  /**
4
5
  * Input shape for `analyze_floorplan_image`.
5
6
  *
@@ -94,6 +95,7 @@ export function registerAnalyzeFloorplanImage(server, _bridge) {
94
95
  description: 'Defer to the MCP host (via sampling) to extract walls, rooms, and approximate dimensions from a floor-plan image. Requires host support for sampling.',
95
96
  inputSchema: analyzeFloorplanImageInput,
96
97
  outputSchema: analyzeFloorplanImageOutput,
98
+ annotations: READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS,
97
99
  }, async ({ image, scaleHint }) => {
98
100
  const caps = server.server.getClientCapabilities();
99
101
  if (!caps?.sampling) {
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-room-photo.d.ts","sourceRoot":"","sources":["../../../src/tools/vision/analyze-room-photo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;CAEjC,CAAA;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAmBlC,CAAA;AAoED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAoE1F"}
1
+ {"version":3,"file":"analyze-room-photo.d.ts","sourceRoot":"","sources":["../../../src/tools/vision/analyze-room-photo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGvD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;CAEjC,CAAA;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;CAmBlC,CAAA;AAoED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAqE1F"}
@@ -1,5 +1,6 @@
1
1
  import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
2
2
  import { z } from 'zod';
3
+ import { READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS } from '../annotations';
3
4
  /**
4
5
  * Input shape for `analyze_room_photo`.
5
6
  *
@@ -75,6 +76,7 @@ export function registerAnalyzeRoomPhoto(server, _bridge) {
75
76
  description: 'Defer to the MCP host (via sampling) to extract approximate dimensions, fixtures, and windows from a single-room photograph. Requires host support for sampling.',
76
77
  inputSchema: analyzeRoomPhotoInput,
77
78
  outputSchema: analyzeRoomPhotoOutput,
79
+ annotations: READ_ONLY_OPEN_WORLD_TOOL_ANNOTATIONS,
78
80
  }, async ({ image }) => {
79
81
  const caps = server.server.getClientCapabilities();
80
82
  if (!caps?.sampling) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pascal-app/mcp",
3
- "version": "1.0.0-beta.5",
3
+ "version": "1.0.0",
4
4
  "description": "Model Context Protocol server for Pascal 3D editor",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -55,15 +55,15 @@
55
55
  "prepublishOnly": "bun run build && bun test"
56
56
  },
57
57
  "peerDependencies": {
58
- "@pascal-app/core": "^1.0.0-beta.4"
58
+ "@pascal-app/core": "^1.0.0"
59
59
  },
60
60
  "dependencies": {
61
- "@modelcontextprotocol/sdk": "^1.29.0",
61
+ "@modelcontextprotocol/sdk": "^1.30.0",
62
62
  "@pascal-app/lingo": "^0.2.0",
63
- "zod": "^4.3.5"
63
+ "zod": ">=4.5.4 <4.6"
64
64
  },
65
65
  "devDependencies": {
66
- "@pascal-app/core": "^1.0.0-beta.4",
66
+ "@pascal-app/core": "^1.0.0",
67
67
  "@pascal/typescript-config": "*",
68
68
  "@types/node": "^22.19.20",
69
69
  "typescript": "6.0.3"