@snaptrude/plugin-core 0.2.9 → 0.5.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 (269) hide show
  1. package/AGENTS.md +128 -50
  2. package/CHANGELOG.md +52 -6
  3. package/api-manifest.full.json +3999 -0
  4. package/api-manifest.json +3845 -0
  5. package/dist/api/core/buildings.d.ts +427 -0
  6. package/dist/api/core/buildings.d.ts.map +1 -0
  7. package/dist/api/core/comment/index.d.ts +230 -0
  8. package/dist/api/core/comment/index.d.ts.map +1 -0
  9. package/dist/api/core/geom/create/index.d.ts +247 -0
  10. package/dist/api/core/geom/create/index.d.ts.map +1 -0
  11. package/dist/api/core/geom/delete/index.d.ts +72 -0
  12. package/dist/api/core/geom/delete/index.d.ts.map +1 -0
  13. package/dist/api/core/geom/index.d.ts +24 -23
  14. package/dist/api/core/geom/index.d.ts.map +1 -1
  15. package/dist/api/core/geom/query/arc.d.ts +169 -0
  16. package/dist/api/core/geom/query/arc.d.ts.map +1 -0
  17. package/dist/api/core/geom/query/brep.d.ts +402 -0
  18. package/dist/api/core/geom/query/brep.d.ts.map +1 -0
  19. package/dist/api/core/geom/query/circle.d.ts +378 -0
  20. package/dist/api/core/geom/query/circle.d.ts.map +1 -0
  21. package/dist/api/core/geom/query/contour.d.ts +450 -0
  22. package/dist/api/core/geom/query/contour.d.ts.map +1 -0
  23. package/dist/api/core/geom/query/curve.d.ts +918 -0
  24. package/dist/api/core/geom/query/curve.d.ts.map +1 -0
  25. package/dist/api/core/geom/query/edge.d.ts +128 -0
  26. package/dist/api/core/geom/query/edge.d.ts.map +1 -0
  27. package/dist/api/core/geom/query/face.d.ts +363 -0
  28. package/dist/api/core/geom/query/face.d.ts.map +1 -0
  29. package/dist/api/core/geom/query/halfedge.d.ts +206 -0
  30. package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
  31. package/dist/api/core/geom/query/index.d.ts +61 -0
  32. package/dist/api/core/geom/query/index.d.ts.map +1 -0
  33. package/dist/api/core/geom/query/profile.d.ts +410 -0
  34. package/dist/api/core/geom/query/profile.d.ts.map +1 -0
  35. package/dist/api/core/geom/query/vertex.d.ts +187 -0
  36. package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
  37. package/dist/api/core/geom/update/contour.d.ts +272 -0
  38. package/dist/api/core/geom/update/contour.d.ts.map +1 -0
  39. package/dist/api/core/geom/update/curve.d.ts +180 -0
  40. package/dist/api/core/geom/update/curve.d.ts.map +1 -0
  41. package/dist/api/core/geom/update/index.d.ts +27 -0
  42. package/dist/api/core/geom/update/index.d.ts.map +1 -0
  43. package/dist/api/core/geom/update/profile.d.ts +329 -0
  44. package/dist/api/core/geom/update/profile.d.ts.map +1 -0
  45. package/dist/api/core/groups.d.ts +485 -0
  46. package/dist/api/core/groups.d.ts.map +1 -0
  47. package/dist/api/core/history/index.d.ts +78 -0
  48. package/dist/api/core/history/index.d.ts.map +1 -0
  49. package/dist/api/core/index.d.ts +46 -1
  50. package/dist/api/core/index.d.ts.map +1 -1
  51. package/dist/api/core/layers.d.ts +402 -0
  52. package/dist/api/core/layers.d.ts.map +1 -0
  53. package/dist/api/core/math/quat.d.ts +111 -128
  54. package/dist/api/core/math/quat.d.ts.map +1 -1
  55. package/dist/api/core/math/vec3.d.ts +120 -102
  56. package/dist/api/core/math/vec3.d.ts.map +1 -1
  57. package/dist/api/core/project/index.d.ts +399 -0
  58. package/dist/api/core/project/index.d.ts.map +1 -0
  59. package/dist/api/core/tags.d.ts +755 -0
  60. package/dist/api/core/tags.d.ts.map +1 -0
  61. package/dist/api/core/units/index.d.ts +175 -0
  62. package/dist/api/core/units/index.d.ts.map +1 -0
  63. package/dist/api/core/zoom/index.d.ts +45 -0
  64. package/dist/api/core/zoom/index.d.ts.map +1 -0
  65. package/dist/api/design/boolean/index.d.ts +168 -0
  66. package/dist/api/design/boolean/index.d.ts.map +1 -0
  67. package/dist/api/design/create/index.d.ts +828 -0
  68. package/dist/api/design/create/index.d.ts.map +1 -0
  69. package/dist/api/design/delete/index.d.ts +63 -0
  70. package/dist/api/design/delete/index.d.ts.map +1 -0
  71. package/dist/api/design/doors/index.d.ts +268 -0
  72. package/dist/api/design/doors/index.d.ts.map +1 -0
  73. package/dist/api/design/edit/index.d.ts +49 -0
  74. package/dist/api/design/edit/index.d.ts.map +1 -0
  75. package/dist/api/design/erase/index.d.ts +160 -0
  76. package/dist/api/design/erase/index.d.ts.map +1 -0
  77. package/dist/api/design/furniture/index.d.ts +123 -0
  78. package/dist/api/design/furniture/index.d.ts.map +1 -0
  79. package/dist/api/design/index.d.ts +153 -0
  80. package/dist/api/design/index.d.ts.map +1 -0
  81. package/dist/api/design/lock.d.ts +41 -0
  82. package/dist/api/design/lock.d.ts.map +1 -0
  83. package/dist/api/design/materials/index.d.ts +297 -0
  84. package/dist/api/design/materials/index.d.ts.map +1 -0
  85. package/dist/api/design/query/geometry/index.d.ts +140 -0
  86. package/dist/api/design/query/geometry/index.d.ts.map +1 -0
  87. package/dist/api/design/query/index.d.ts +1011 -0
  88. package/dist/api/design/query/index.d.ts.map +1 -0
  89. package/dist/api/design/query/spaces.d.ts +221 -0
  90. package/dist/api/design/query/spaces.d.ts.map +1 -0
  91. package/dist/api/design/selection/index.d.ts +138 -0
  92. package/dist/api/design/selection/index.d.ts.map +1 -0
  93. package/dist/api/design/shared.d.ts +38 -0
  94. package/dist/api/design/shared.d.ts.map +1 -0
  95. package/dist/api/design/transform/index.d.ts +87 -0
  96. package/dist/api/design/transform/index.d.ts.map +1 -0
  97. package/dist/api/design/update/index.d.ts +178 -0
  98. package/dist/api/design/update/index.d.ts.map +1 -0
  99. package/dist/api/design/windows/index.d.ts +189 -0
  100. package/dist/api/design/windows/index.d.ts.map +1 -0
  101. package/dist/api/entity/buildableEnvelope.d.ts +51 -23
  102. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -1
  103. package/dist/api/entity/department.d.ts +0 -98
  104. package/dist/api/entity/department.d.ts.map +1 -1
  105. package/dist/api/entity/index.d.ts +4 -9
  106. package/dist/api/entity/index.d.ts.map +1 -1
  107. package/dist/api/entity/referenceLine.d.ts +49 -106
  108. package/dist/api/entity/referenceLine.d.ts.map +1 -1
  109. package/dist/api/entity/space.d.ts +76 -828
  110. package/dist/api/entity/space.d.ts.map +1 -1
  111. package/dist/api/entity/story.d.ts +47 -37
  112. package/dist/api/entity/story.d.ts.map +1 -1
  113. package/dist/api/index.d.ts +17 -17
  114. package/dist/api/index.d.ts.map +1 -1
  115. package/dist/api/presentation/aiInspiration.d.ts +440 -0
  116. package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
  117. package/dist/api/presentation/diagrams.d.ts +81 -0
  118. package/dist/api/presentation/diagrams.d.ts.map +1 -0
  119. package/dist/api/presentation/import.d.ts +113 -0
  120. package/dist/api/presentation/import.d.ts.map +1 -0
  121. package/dist/api/presentation/index.d.ts +46 -0
  122. package/dist/api/presentation/index.d.ts.map +1 -0
  123. package/dist/api/presentation/sheets.d.ts +176 -0
  124. package/dist/api/presentation/sheets.d.ts.map +1 -0
  125. package/dist/api/presentation/views.d.ts +296 -0
  126. package/dist/api/presentation/views.d.ts.map +1 -0
  127. package/dist/api/program/adjacency.d.ts +155 -0
  128. package/dist/api/program/adjacency.d.ts.map +1 -0
  129. package/dist/api/program/areas.d.ts +360 -0
  130. package/dist/api/program/areas.d.ts.map +1 -0
  131. package/dist/api/program/classification.d.ts +135 -0
  132. package/dist/api/program/classification.d.ts.map +1 -0
  133. package/dist/api/program/cores.d.ts +174 -0
  134. package/dist/api/program/cores.d.ts.map +1 -0
  135. package/dist/api/program/departments.d.ts +431 -0
  136. package/dist/api/program/departments.d.ts.map +1 -0
  137. package/dist/api/program/index.d.ts +69 -0
  138. package/dist/api/program/index.d.ts.map +1 -0
  139. package/dist/api/program/layout.d.ts +63 -0
  140. package/dist/api/program/layout.d.ts.map +1 -0
  141. package/dist/api/program/metrics.d.ts +108 -0
  142. package/dist/api/program/metrics.d.ts.map +1 -0
  143. package/dist/api/program/site.d.ts +367 -0
  144. package/dist/api/program/site.d.ts.map +1 -0
  145. package/dist/api/program/spreadsheet.d.ts +2041 -0
  146. package/dist/api/program/spreadsheet.d.ts.map +1 -0
  147. package/dist/handles.d.ts +138 -0
  148. package/dist/handles.d.ts.map +1 -0
  149. package/dist/host-utils.d.ts +7 -5
  150. package/dist/host-utils.d.ts.map +1 -1
  151. package/dist/index.cjs +3897 -1542
  152. package/dist/index.cjs.map +1 -1
  153. package/dist/index.d.ts +1 -0
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +3326 -1462
  156. package/dist/index.js.map +1 -1
  157. package/package.json +6 -2
  158. package/scripts/generate-manifest.mjs +193 -0
  159. package/scripts/generate-manifest.test.mjs +193 -0
  160. package/src/api/core/buildings.ts +485 -0
  161. package/src/api/core/comment/index.ts +258 -0
  162. package/src/api/core/geom/create/index.ts +293 -0
  163. package/src/api/core/geom/delete/index.ts +78 -0
  164. package/src/api/core/geom/index.ts +24 -23
  165. package/src/api/core/geom/query/arc.ts +169 -0
  166. package/src/api/core/geom/query/brep.ts +444 -0
  167. package/src/api/core/geom/query/circle.ts +404 -0
  168. package/src/api/core/geom/query/contour.ts +540 -0
  169. package/src/api/core/geom/query/curve.ts +1078 -0
  170. package/src/api/core/geom/query/edge.ts +130 -0
  171. package/src/api/core/geom/query/face.ts +403 -0
  172. package/src/api/core/geom/query/halfedge.ts +210 -0
  173. package/src/api/core/geom/query/index.ts +63 -0
  174. package/src/api/core/geom/query/profile.ts +473 -0
  175. package/src/api/core/geom/query/vertex.ts +205 -0
  176. package/src/api/core/geom/update/contour.ts +315 -0
  177. package/src/api/core/geom/update/curve.ts +209 -0
  178. package/src/api/core/geom/update/index.ts +29 -0
  179. package/src/api/core/geom/update/profile.ts +377 -0
  180. package/src/api/core/groups.ts +521 -0
  181. package/src/api/core/history/index.ts +84 -0
  182. package/src/api/core/index.ts +46 -1
  183. package/src/api/core/layers.ts +333 -0
  184. package/src/api/core/math/quat.ts +112 -235
  185. package/src/api/core/math/vec3.ts +124 -159
  186. package/src/api/core/project/index.ts +418 -0
  187. package/src/api/core/tags.ts +808 -0
  188. package/src/api/core/units/index.ts +164 -0
  189. package/src/api/core/zoom/index.ts +47 -0
  190. package/src/api/design/boolean/index.ts +179 -0
  191. package/src/api/design/create/index.ts +886 -0
  192. package/src/api/design/delete/index.ts +67 -0
  193. package/src/api/design/doors/index.ts +285 -0
  194. package/src/api/design/edit/index.ts +54 -0
  195. package/src/api/design/erase/index.ts +151 -0
  196. package/src/api/design/furniture/index.ts +130 -0
  197. package/src/api/design/index.ts +162 -0
  198. package/src/api/design/lock.ts +42 -0
  199. package/src/api/design/materials/index.ts +301 -0
  200. package/src/api/design/query/geometry/index.ts +166 -0
  201. package/src/api/design/query/index.ts +937 -0
  202. package/src/api/design/query/spaces.ts +132 -0
  203. package/src/api/design/selection/index.ts +144 -0
  204. package/src/api/design/shared.ts +40 -0
  205. package/src/api/design/transform/index.ts +93 -0
  206. package/src/api/design/update/index.ts +117 -0
  207. package/src/api/design/windows/index.ts +207 -0
  208. package/src/api/entity/buildableEnvelope.ts +64 -23
  209. package/src/api/entity/department.ts +0 -113
  210. package/src/api/entity/index.ts +4 -9
  211. package/src/api/entity/referenceLine.ts +50 -38
  212. package/src/api/entity/space.ts +84 -440
  213. package/src/api/entity/story.ts +53 -42
  214. package/src/api/index.ts +17 -17
  215. package/src/api/presentation/aiInspiration.ts +362 -0
  216. package/src/api/presentation/diagrams.ts +84 -0
  217. package/src/api/presentation/import.ts +112 -0
  218. package/src/api/presentation/index.ts +48 -0
  219. package/src/api/presentation/sheets.ts +198 -0
  220. package/src/api/presentation/views.ts +303 -0
  221. package/src/api/program/adjacency.ts +164 -0
  222. package/src/api/program/areas.ts +335 -0
  223. package/src/api/program/classification.ts +138 -0
  224. package/src/api/program/cores.ts +171 -0
  225. package/src/api/program/departments.ts +465 -0
  226. package/src/api/program/index.ts +71 -0
  227. package/src/api/program/layout.ts +68 -0
  228. package/src/api/program/metrics.ts +120 -0
  229. package/src/api/program/site.ts +326 -0
  230. package/src/api/program/spreadsheet.ts +2075 -0
  231. package/src/handles.ts +148 -0
  232. package/src/host-utils.ts +10 -6
  233. package/src/index.ts +1 -0
  234. package/dist/api/core/geom/arc.d.ts +0 -81
  235. package/dist/api/core/geom/arc.d.ts.map +0 -1
  236. package/dist/api/core/geom/curve.d.ts +0 -70
  237. package/dist/api/core/geom/curve.d.ts.map +0 -1
  238. package/dist/api/core/geom/line.d.ts +0 -56
  239. package/dist/api/core/geom/line.d.ts.map +0 -1
  240. package/dist/api/core/geom/profile.d.ts +0 -121
  241. package/dist/api/core/geom/profile.d.ts.map +0 -1
  242. package/dist/api/documentation/aiInspiration.d.ts +0 -2155
  243. package/dist/api/documentation/aiInspiration.d.ts.map +0 -1
  244. package/dist/api/documentation/index.d.ts +0 -13
  245. package/dist/api/documentation/index.d.ts.map +0 -1
  246. package/dist/api/tools/copy.d.ts +0 -59
  247. package/dist/api/tools/copy.d.ts.map +0 -1
  248. package/dist/api/tools/index.d.ts +0 -29
  249. package/dist/api/tools/index.d.ts.map +0 -1
  250. package/dist/api/tools/offset.d.ts +0 -43
  251. package/dist/api/tools/offset.d.ts.map +0 -1
  252. package/dist/api/tools/selection.d.ts +0 -48
  253. package/dist/api/tools/selection.d.ts.map +0 -1
  254. package/dist/api/tools/transform.d.ts +0 -114
  255. package/dist/api/tools/transform.d.ts.map +0 -1
  256. package/dist/api/units/index.d.ts +0 -163
  257. package/dist/api/units/index.d.ts.map +0 -1
  258. package/src/api/core/geom/arc.ts +0 -70
  259. package/src/api/core/geom/curve.ts +0 -41
  260. package/src/api/core/geom/line.ts +0 -53
  261. package/src/api/core/geom/profile.ts +0 -94
  262. package/src/api/documentation/aiInspiration.ts +0 -871
  263. package/src/api/documentation/index.ts +0 -15
  264. package/src/api/tools/copy.ts +0 -55
  265. package/src/api/tools/index.ts +0 -35
  266. package/src/api/tools/offset.ts +0 -43
  267. package/src/api/tools/selection.ts +0 -51
  268. package/src/api/tools/transform.ts +0 -117
  269. package/src/api/units/index.ts +0 -163
package/dist/index.js CHANGED
@@ -1,444 +1,14 @@
1
1
  // src/api/core/math/vec3.ts
2
- import * as z from "zod";
3
2
  var PluginVec3Api = class {
4
3
  constructor() {
5
4
  }
6
- /**
7
- * Create a new 3D vector.
8
- *
9
- * @param x - The X component
10
- * @param y - The Y component
11
- * @param z - The Z component
12
- * @returns A new {@linkcode PVec3}
13
- *
14
- * # Example
15
- * ```ts
16
- * const position = snaptrude.core.math.vec3.new(1, 2, 3)
17
- * // { x: 1, y: 2, z: 3 }
18
- * ```
19
- */
20
- new(x, y, z18) {
21
- return { x, y, z: z18 };
22
- }
23
- /**
24
- * Add two vectors component-wise.
25
- *
26
- * @param a - First vector
27
- * @param b - Second vector
28
- * @returns A new {@linkcode PVec3} where each component is `a[i] + b[i]`
29
- */
30
- add(a, b) {
31
- return { x: a.x + b.x, y: a.y + b.y, z: a.z + b.z };
32
- }
33
- /**
34
- * Subtract vector {@linkcode b} from vector {@linkcode a} component-wise.
35
- *
36
- * @param a - Vector to subtract from
37
- * @param b - Vector to subtract
38
- * @returns A new {@linkcode PVec3} where each component is `a[i] - b[i]`
39
- */
40
- subtract(a, b) {
41
- return { x: a.x - b.x, y: a.y - b.y, z: a.z - b.z };
42
- }
43
- /**
44
- * Scale a vector by a scalar value.
45
- *
46
- * @param v - The vector to scale
47
- * @param scalar - The scalar multiplier
48
- * @returns A new {@linkcode PVec3} where each component is `v[i] * scalar`
49
- */
50
- scale(v, scalar) {
51
- return { x: v.x * scalar, y: v.y * scalar, z: v.z * scalar };
52
- }
53
- /**
54
- * Compute the dot product of two vectors.
55
- *
56
- * The dot product equals `|a| * |b| * cos(θ)` where `θ` is the angle
57
- * between the vectors. Useful for checking orthogonality (result = 0)
58
- * or projection.
59
- *
60
- * @param a - First vector
61
- * @param b - Second vector
62
- * @returns The scalar dot product
63
- */
64
- dot(a, b) {
65
- return a.x * b.x + a.y * b.y + a.z * b.z;
66
- }
67
- /**
68
- * Compute the cross product of two vectors.
69
- *
70
- * The result is a vector perpendicular to both inputs, with magnitude
71
- * equal to the area of the parallelogram they span. Useful for computing
72
- * surface normals.
73
- *
74
- * @param a - First vector
75
- * @param b - Second vector
76
- * @returns A new {@linkcode PVec3} perpendicular to both {@linkcode a} and {@linkcode b}
77
- */
78
- cross(a, b) {
79
- return {
80
- x: a.y * b.z - a.z * b.y,
81
- y: a.z * b.x - a.x * b.z,
82
- z: a.x * b.y - a.y * b.x
83
- };
84
- }
85
- /**
86
- * Compute the length (magnitude) of a vector.
87
- *
88
- * @param v - The vector
89
- * @returns The Euclidean length `√(x² + y² + z²)`
90
- */
91
- length(v) {
92
- return Math.sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
93
- }
94
- /**
95
- * Compute the squared length of a vector.
96
- *
97
- * Avoids the `sqrt` call — prefer this over {@linkcode PluginVec3Api.length}
98
- * when comparing relative magnitudes.
99
- *
100
- * @param v - The vector
101
- * @returns The squared length `x² + y² + z²`
102
- */
103
- lengthSquared(v) {
104
- return v.x * v.x + v.y * v.y + v.z * v.z;
105
- }
106
- /**
107
- * Normalize a vector to unit length.
108
- *
109
- * @param v - The vector to normalize
110
- * @returns A new unit-length {@linkcode PVec3} in the same direction,
111
- * or a zero vector `(0, 0, 0)` if the input has zero length
112
- */
113
- normalize(v) {
114
- const len = this.length(v);
115
- if (len === 0) return { x: 0, y: 0, z: 0 };
116
- return { x: v.x / len, y: v.y / len, z: v.z / len };
117
- }
118
- /**
119
- * Compute the Euclidean distance between two points.
120
- *
121
- * @param a - First point
122
- * @param b - Second point
123
- * @returns The distance `|a - b|`
124
- */
125
- distance(a, b) {
126
- return this.length(this.subtract(a, b));
127
- }
128
- /**
129
- * Linearly interpolate between two vectors.
130
- *
131
- * @param a - Start vector (returned when `t = 0`)
132
- * @param b - End vector (returned when `t = 1`)
133
- * @param t - Interpolation factor, typically in `[0, 1]`
134
- * @returns A new {@linkcode PVec3} at `a + (b - a) * t`
135
- */
136
- lerp(a, b, t) {
137
- return {
138
- x: a.x + (b.x - a.x) * t,
139
- y: a.y + (b.y - a.y) * t,
140
- z: a.z + (b.z - a.z) * t
141
- };
142
- }
143
- /**
144
- * Negate a vector (reverse its direction).
145
- *
146
- * @param v - The vector to negate
147
- * @returns A new {@linkcode PVec3} with all components negated
148
- */
149
- negate(v) {
150
- return { x: -v.x, y: -v.y, z: -v.z };
151
- }
152
- /**
153
- * Check if two vectors are exactly equal (strict equality per component).
154
- *
155
- * For floating-point comparisons, prefer {@linkcode PluginVec3Api.equalsApprox}.
156
- *
157
- * @param a - First vector
158
- * @param b - Second vector
159
- * @returns `true` if all components match exactly
160
- */
161
- equals(a, b) {
162
- return a.x === b.x && a.y === b.y && a.z === b.z;
163
- }
164
- /**
165
- * Check if two vectors are approximately equal within a tolerance.
166
- *
167
- * @param a - First vector
168
- * @param b - Second vector
169
- * @param epsilon - Maximum allowed difference per component (default `1e-6`)
170
- * @returns `true` if `|a[i] - b[i]| < epsilon` for all components
171
- */
172
- equalsApprox(a, b, epsilon = 1e-6) {
173
- return Math.abs(a.x - b.x) < epsilon && Math.abs(a.y - b.y) < epsilon && Math.abs(a.z - b.z) < epsilon;
174
- }
175
- };
176
- var PVec3 = z.object({
177
- x: z.number(),
178
- y: z.number(),
179
- z: z.number()
180
- });
5
+ };
181
6
 
182
7
  // src/api/core/math/quat.ts
183
- import * as z2 from "zod";
184
8
  var PluginQuatApi = class {
185
9
  constructor() {
186
10
  }
187
- /**
188
- * Create a new quaternion from raw components.
189
- *
190
- * For most use cases prefer {@linkcode PluginQuatApi.fromAxisAngle}
191
- * or {@linkcode PluginQuatApi.fromEuler} instead.
192
- *
193
- * @param x - The X component
194
- * @param y - The Y component
195
- * @param z - The Z component
196
- * @param w - The W (scalar) component
197
- * @returns A new {@linkcode PQuat}
198
- */
199
- new(x, y, z18, w) {
200
- return { x, y, z: z18, w };
201
- }
202
- /**
203
- * Create an identity quaternion representing no rotation.
204
- *
205
- * @returns `{ x: 0, y: 0, z: 0, w: 1 }`
206
- */
207
- identity() {
208
- return { x: 0, y: 0, z: 0, w: 1 };
209
- }
210
- /**
211
- * Create a quaternion from an axis and an angle.
212
- *
213
- * @param axis - The rotation axis as a {@linkcode PVec3} (will be normalized internally)
214
- * @param angle - The rotation angle in **radians**
215
- * @returns A new unit {@linkcode PQuat}, or identity if {@linkcode axis} has zero length
216
- *
217
- * # Example
218
- * ```ts
219
- * const { vec3, quat } = snaptrude.core.math
220
- * // 90° rotation around the Y axis
221
- * const rot = quat.fromAxisAngle(vec3.new(0, 1, 0), Math.PI / 2)
222
- * ```
223
- */
224
- fromAxisAngle(axis, angle) {
225
- const halfAngle = angle / 2;
226
- const s = Math.sin(halfAngle);
227
- const len = Math.sqrt(axis.x * axis.x + axis.y * axis.y + axis.z * axis.z);
228
- if (len === 0) return { x: 0, y: 0, z: 0, w: 1 };
229
- return {
230
- x: axis.x / len * s,
231
- y: axis.y / len * s,
232
- z: axis.z / len * s,
233
- w: Math.cos(halfAngle)
234
- };
235
- }
236
- /**
237
- * Create a quaternion from Euler angles in **XYZ** rotation order.
238
- *
239
- * @param x - Rotation around X axis in **radians**
240
- * @param y - Rotation around Y axis in **radians**
241
- * @param z - Rotation around Z axis in **radians**
242
- * @returns A new {@linkcode PQuat}
243
- */
244
- fromEuler(x, y, z18) {
245
- const cx = Math.cos(x / 2);
246
- const sx = Math.sin(x / 2);
247
- const cy = Math.cos(y / 2);
248
- const sy = Math.sin(y / 2);
249
- const cz = Math.cos(z18 / 2);
250
- const sz = Math.sin(z18 / 2);
251
- return {
252
- x: sx * cy * cz + cx * sy * sz,
253
- y: cx * sy * cz - sx * cy * sz,
254
- z: cx * cy * sz + sx * sy * cz,
255
- w: cx * cy * cz - sx * sy * sz
256
- };
257
- }
258
- /**
259
- * Multiply two quaternions, combining their rotations.
260
- *
261
- * Quaternion multiplication is **not commutative**: `a * b ≠ b * a`.
262
- * The result applies rotation {@linkcode b} first, then {@linkcode a}.
263
- *
264
- * @param a - First quaternion (applied second)
265
- * @param b - Second quaternion (applied first)
266
- * @returns A new {@linkcode PQuat} representing the combined rotation
267
- */
268
- multiply(a, b) {
269
- return {
270
- x: a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y,
271
- y: a.w * b.y - a.x * b.z + a.y * b.w + a.z * b.x,
272
- z: a.w * b.z + a.x * b.y - a.y * b.x + a.z * b.w,
273
- w: a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z
274
- };
275
- }
276
- /**
277
- * Compute the conjugate of a quaternion.
278
- *
279
- * For unit quaternions the conjugate equals the inverse.
280
- *
281
- * @param q - The quaternion
282
- * @returns A new {@linkcode PQuat} with negated vector part `(-x, -y, -z, w)`
283
- */
284
- conjugate(q) {
285
- return { x: -q.x, y: -q.y, z: -q.z, w: q.w };
286
- }
287
- /**
288
- * Compute the length (magnitude) of a quaternion.
289
- *
290
- * @param q - The quaternion
291
- * @returns The magnitude `√(x² + y² + z² + w²)`
292
- */
293
- length(q) {
294
- return Math.sqrt(q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w);
295
- }
296
- /**
297
- * Normalize a quaternion to unit length.
298
- *
299
- * @param q - The quaternion to normalize
300
- * @returns A new unit-length {@linkcode PQuat}, or identity if the input has zero length
301
- */
302
- normalize(q) {
303
- const len = this.length(q);
304
- if (len === 0) return { x: 0, y: 0, z: 0, w: 1 };
305
- return { x: q.x / len, y: q.y / len, z: q.z / len, w: q.w / len };
306
- }
307
- /**
308
- * Compute the inverse of a quaternion.
309
- *
310
- * The inverse satisfies `q * inverse(q) = identity`.
311
- *
312
- * @param q - The quaternion to invert
313
- * @returns A new {@linkcode PQuat} that is the multiplicative inverse,
314
- * or identity if the input has zero length
315
- */
316
- inverse(q) {
317
- const lenSq = q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w;
318
- if (lenSq === 0) return { x: 0, y: 0, z: 0, w: 1 };
319
- return { x: -q.x / lenSq, y: -q.y / lenSq, z: -q.z / lenSq, w: q.w / lenSq };
320
- }
321
- /**
322
- * Rotate a 3D vector by a quaternion.
323
- *
324
- * Computes `q * v * conjugate(q)` using the Hamilton product.
325
- *
326
- * @param q - The rotation quaternion (should be unit-length)
327
- * @param v - The vector to rotate as a {@linkcode PVec3}
328
- * @returns A new rotated {@linkcode PVec3}
329
- *
330
- * # Example
331
- * ```ts
332
- * const { vec3, quat } = snaptrude.core.math
333
- * const rot = quat.fromAxisAngle(vec3.new(0, 1, 0), Math.PI / 2)
334
- * const rotated = quat.rotateVec3(rot, vec3.new(1, 0, 0))
335
- * // ≈ { x: 0, y: 0, z: -1 }
336
- * ```
337
- */
338
- rotateVec3(q, v) {
339
- const vq = { x: v.x, y: v.y, z: v.z, w: 0 };
340
- const conj = this.conjugate(q);
341
- const result = this.multiply(this.multiply(q, vq), conj);
342
- return { x: result.x, y: result.y, z: result.z };
343
- }
344
- /**
345
- * Convert a quaternion to axis-angle representation.
346
- *
347
- * @param q - The quaternion to convert
348
- * @returns An object with:
349
- * - `axis` — The rotation axis as a unit {@linkcode PVec3}
350
- * (defaults to `(1, 0, 0)` when angle is zero)
351
- * - `angle` — The rotation angle in **radians**
352
- */
353
- toAxisAngle(q) {
354
- const nq = this.normalize(q);
355
- const angle = 2 * Math.acos(Math.min(1, Math.max(-1, nq.w)));
356
- const s = Math.sin(angle / 2);
357
- if (s < 1e-6) {
358
- return { axis: { x: 1, y: 0, z: 0 }, angle: 0 };
359
- }
360
- return {
361
- axis: { x: nq.x / s, y: nq.y / s, z: nq.z / s },
362
- angle
363
- };
364
- }
365
- /**
366
- * Spherical linear interpolation between two quaternions.
367
- *
368
- * Produces smooth constant-speed rotation between {@linkcode a} and {@linkcode b}.
369
- *
370
- * @param a - Start quaternion (returned when `t = 0`)
371
- * @param b - End quaternion (returned when `t = 1`)
372
- * @param t - Interpolation factor, typically in `[0, 1]`
373
- * @returns A new interpolated {@linkcode PQuat}
374
- */
375
- slerp(a, b, t) {
376
- let cosHalf = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
377
- let bx = b.x, by = b.y, bz = b.z, bw = b.w;
378
- if (cosHalf < 0) {
379
- cosHalf = -cosHalf;
380
- bx = -bx;
381
- by = -by;
382
- bz = -bz;
383
- bw = -bw;
384
- }
385
- if (cosHalf >= 1) {
386
- return { x: a.x, y: a.y, z: a.z, w: a.w };
387
- }
388
- const halfAngle = Math.acos(cosHalf);
389
- const sinHalf = Math.sin(halfAngle);
390
- const ratioA = Math.sin((1 - t) * halfAngle) / sinHalf;
391
- const ratioB = Math.sin(t * halfAngle) / sinHalf;
392
- return {
393
- x: a.x * ratioA + bx * ratioB,
394
- y: a.y * ratioA + by * ratioB,
395
- z: a.z * ratioA + bz * ratioB,
396
- w: a.w * ratioA + bw * ratioB
397
- };
398
- }
399
- /**
400
- * Compute the dot product of two quaternions.
401
- *
402
- * A value close to `1` or `-1` indicates similar orientations;
403
- * a value close to `0` indicates maximally different orientations.
404
- *
405
- * @param a - First quaternion
406
- * @param b - Second quaternion
407
- * @returns The scalar dot product
408
- */
409
- dot(a, b) {
410
- return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
411
- }
412
- /**
413
- * Check if two quaternions are exactly equal (strict equality per component).
414
- *
415
- * For floating-point comparisons, prefer {@linkcode PluginQuatApi.equalsApprox}.
416
- *
417
- * @param a - First quaternion
418
- * @param b - Second quaternion
419
- * @returns `true` if all components match exactly
420
- */
421
- equals(a, b) {
422
- return a.x === b.x && a.y === b.y && a.z === b.z && a.w === b.w;
423
- }
424
- /**
425
- * Check if two quaternions are approximately equal within a tolerance.
426
- *
427
- * @param a - First quaternion
428
- * @param b - Second quaternion
429
- * @param epsilon - Maximum allowed difference per component (default `1e-6`)
430
- * @returns `true` if `|a[i] - b[i]| < epsilon` for all components
431
- */
432
- equalsApprox(a, b, epsilon = 1e-6) {
433
- return Math.abs(a.x - b.x) < epsilon && Math.abs(a.y - b.y) < epsilon && Math.abs(a.z - b.z) < epsilon && Math.abs(a.w - b.w) < epsilon;
434
- }
435
- };
436
- var PQuat = z2.object({
437
- x: z2.number(),
438
- y: z2.number(),
439
- z: z2.number(),
440
- w: z2.number()
441
- });
11
+ };
442
12
 
443
13
  // src/api/core/math/index.ts
444
14
  var PluginMathApi = class {
@@ -446,124 +16,616 @@ var PluginMathApi = class {
446
16
  }
447
17
  };
448
18
 
449
- // src/api/core/geom/line.ts
19
+ // src/api/core/geom/create/index.ts
20
+ import * as z2 from "zod";
21
+
22
+ // src/handles.ts
23
+ import * as z from "zod";
24
+ var handleSchema = (kind) => z.string().regex(new RegExp(`^${kind}_[A-Za-z0-9_-]+$`), `expected a "${kind}" handle`).transform((s) => s);
25
+ var ProfileHandle = handleSchema("profile");
26
+ var ContourHandle = handleSchema("contour");
27
+ var MassHandle = handleSchema("mass");
28
+ var ComponentHandle = z.string().min(1).transform((s) => s);
29
+ var MaterialHandle = z.string().min(1).transform((s) => s);
30
+ var Vec3Handle = handleSchema("vec3");
31
+ var QuatHandle = handleSchema("quat");
32
+ var LineHandle = handleSchema("line");
33
+ var ArcHandle = handleSchema("arc");
34
+ var CurveHandle = z.union([LineHandle, ArcHandle]);
35
+ var CircleHandle = handleSchema("circle");
36
+ var BrepHandle = handleSchema("brep");
37
+ var FaceHandle = handleSchema("face");
38
+ var EdgeHandle = handleSchema("edge");
39
+ var HalfEdgeHandle = handleSchema("halfedge");
40
+ var VertexHandle = handleSchema("vertex");
41
+ var Vec3Components = z.object({ x: z.number(), y: z.number(), z: z.number() });
42
+ var QuatComponents = z.object({
43
+ x: z.number(),
44
+ y: z.number(),
45
+ z: z.number(),
46
+ w: z.number()
47
+ });
48
+ var BBoxComponents = z.object({ min: Vec3Components, max: Vec3Components });
49
+
50
+ // src/api/core/geom/create/index.ts
51
+ var PluginGeomCreateApi = class {
52
+ constructor() {
53
+ }
54
+ };
55
+ var PluginGeomCreateLineArgs = z2.object({
56
+ startPoint: Vec3Handle,
57
+ endPoint: Vec3Handle
58
+ });
59
+ var PluginGeomCreateArcArgs = z2.object({
60
+ startPoint: Vec3Handle,
61
+ endPoint: Vec3Handle,
62
+ centrePoint: Vec3Handle,
63
+ axis: Vec3Handle
64
+ });
65
+ var PluginGeomCreateCircleArgs = z2.object({
66
+ centrePoint: Vec3Handle,
67
+ axis: Vec3Handle,
68
+ radius: z2.number()
69
+ });
70
+ var PluginGeomCreateProfileFromLinePointsArgs = z2.object({
71
+ points: z2.array(Vec3Handle)
72
+ });
73
+ var PluginGeomCreateProfileFromCurvesArgs = z2.object({
74
+ curves: z2.array(CurveHandle)
75
+ });
76
+ var PluginGeomCreateContourFromProfileArgs = z2.object({
77
+ outer: ProfileHandle
78
+ });
79
+ var PluginGeomCreateContourFromProfilesArgs = z2.object({
80
+ outer: ProfileHandle,
81
+ holes: z2.array(ProfileHandle).optional()
82
+ });
83
+
84
+ // src/api/core/geom/query/curve.ts
450
85
  import * as z3 from "zod";
451
- var PluginLineApi = class {
452
- constructor() {
453
- }
454
- /**
455
- * Create a new line segment between two points.
456
- *
457
- * @param startPoint - The start point as a {@linkcode PVec3}
458
- * @param endPoint - The end point as a {@linkcode PVec3}
459
- * @returns A new {@linkcode PLine}
460
- *
461
- * # Example
462
- * ```ts
463
- * const { vec3 } = snaptrude.core.math
464
- * const { line } = snaptrude.core.geom
465
- *
466
- * const edge = line.new(vec3.new(0, 0, 0), vec3.new(5, 0, 0))
467
- * ```
468
- */
469
- new(startPoint, endPoint) {
470
- return { curveType: "Line", startPoint, endPoint };
471
- }
472
- };
473
- var PLine = z3.object({
474
- curveType: z3.literal("Line"),
475
- startPoint: PVec3,
476
- endPoint: PVec3
477
- });
478
-
479
- // src/api/core/geom/arc.ts
86
+ var PluginGeomQueryCurveApi = class {
87
+ constructor() {
88
+ }
89
+ };
90
+ var PluginGeomQueryCurveGetStartPointArgs = z3.object({
91
+ curve: CurveHandle
92
+ });
93
+ var PluginGeomQueryCurveGetEndPointArgs = z3.object({
94
+ curve: CurveHandle
95
+ });
96
+ var PluginGeomQueryCurveGetMidPointArgs = z3.object({
97
+ curve: CurveHandle
98
+ });
99
+ var PluginGeomQueryCurveGetLengthArgs = z3.object({
100
+ curve: CurveHandle
101
+ });
102
+ var PluginGeomQueryCurveGetChordLengthArgs = z3.object({
103
+ curve: CurveHandle
104
+ });
105
+ var PluginGeomQueryCurveGetTangentArgs = z3.object({
106
+ curve: CurveHandle,
107
+ point: Vec3Handle
108
+ });
109
+ var PluginGeomQueryCurveGetNormalArgs = z3.object({
110
+ curve: CurveHandle,
111
+ point: Vec3Handle
112
+ });
113
+ var PluginGeomQueryCurveGetNearestPointArgs = z3.object({
114
+ curve: CurveHandle,
115
+ point: Vec3Handle
116
+ });
117
+ var PluginGeomQueryCurveGetProjectionArgs = z3.object({
118
+ curve: CurveHandle,
119
+ point: Vec3Handle
120
+ });
121
+ var PluginGeomQueryCurveGetPointAtDistanceArgs = z3.object({
122
+ curve: CurveHandle,
123
+ referencePoint: Vec3Handle,
124
+ distance: z3.number(),
125
+ forward: z3.boolean().optional()
126
+ });
127
+ var PluginGeomQueryCurveGetParameterAtPointArgs = z3.object({
128
+ curve: CurveHandle,
129
+ point: Vec3Handle
130
+ });
131
+ var PluginGeomQueryCurveGetCurvatureArgs = z3.object({
132
+ curve: CurveHandle,
133
+ point: Vec3Handle
134
+ });
135
+ var PluginGeomQueryCurveGetDistanceToPointArgs = z3.object({
136
+ curve: CurveHandle,
137
+ point: Vec3Handle
138
+ });
139
+ var PluginGeomQueryCurveGetDistanceAlongArgs = z3.object({
140
+ curve: CurveHandle,
141
+ pointA: Vec3Handle,
142
+ pointB: Vec3Handle
143
+ });
144
+ var PluginGeomQueryCurveListPointsArgs = z3.object({
145
+ curve: CurveHandle,
146
+ resolution: z3.number().optional()
147
+ });
148
+ var PluginGeomQueryCurveListSubdivisionsArgs = z3.object({
149
+ curve: CurveHandle,
150
+ segments: z3.number()
151
+ });
152
+ var PluginGeomQueryCurveIsLinearArgs = z3.object({
153
+ curve: CurveHandle
154
+ });
155
+ var PluginGeomQueryCurveIsOnCurveArgs = z3.object({
156
+ curve: CurveHandle,
157
+ point: Vec3Handle,
158
+ threshold: z3.number().optional()
159
+ });
160
+ var PluginGeomQueryCurveHasPointArgs = z3.object({
161
+ curve: CurveHandle,
162
+ point: Vec3Handle,
163
+ includeEndPoints: z3.boolean().optional()
164
+ });
165
+ var PluginGeomQueryCurveIsEqualArgs = z3.object({
166
+ curveA: CurveHandle,
167
+ curveB: CurveHandle
168
+ });
169
+ var PluginGeomQueryCurveIsOverlappingArgs = z3.object({
170
+ curveA: CurveHandle,
171
+ curveB: CurveHandle,
172
+ includeEndPoints: z3.boolean().optional()
173
+ });
174
+ var PluginGeomQueryCurveGetCommonPartArgs = z3.object({
175
+ curveA: CurveHandle,
176
+ curveB: CurveHandle
177
+ });
178
+ var PluginGeomQueryCurveListIntersectionsArgs = z3.object({
179
+ curveA: CurveHandle,
180
+ curveB: CurveHandle,
181
+ boundedA: z3.boolean().optional(),
182
+ boundedB: z3.boolean().optional()
183
+ });
184
+ var PluginGeomQueryCurveGetMergedCurveArgs = z3.object({
185
+ curveA: CurveHandle,
186
+ curveB: CurveHandle
187
+ });
188
+ var PluginGeomQueryCurveIsContinuousArgs = z3.object({
189
+ curveA: CurveHandle,
190
+ curveB: CurveHandle
191
+ });
192
+ var PluginGeomQueryCurveIsParallelArgs = z3.object({
193
+ lineA: LineHandle,
194
+ lineB: LineHandle,
195
+ tolerance: z3.number().optional()
196
+ });
197
+ var PluginGeomQueryCurveGetShortestGapArgs = z3.object({
198
+ curveA: CurveHandle,
199
+ curveB: CurveHandle,
200
+ includeEndPoints: z3.boolean().optional()
201
+ });
202
+ var PluginGeomQueryCurveGetDistanceBetweenArgs = z3.object({
203
+ lineA: LineHandle,
204
+ lineB: LineHandle
205
+ });
206
+
207
+ // src/api/core/geom/query/arc.ts
480
208
  import * as z4 from "zod";
481
- var PluginArcApi = class {
482
- constructor() {
483
- }
484
- /**
485
- * Create a new arc from start, end, centre, and axis.
486
- *
487
- * The arc sweeps from {@linkcode startPoint} to {@linkcode endPoint}
488
- * along the circle centred at {@linkcode centrePoint}, in the
489
- * direction determined by the right-hand rule around {@linkcode axis}.
490
- *
491
- * @param startPoint - The start point as a {@linkcode PVec3}
492
- * @param endPoint - The end point as a {@linkcode PVec3}
493
- * @param centrePoint - The centre of the arc's circle as a {@linkcode PVec3}
494
- * @param axis - The arc's rotation axis as a {@linkcode PVec3}
495
- * (perpendicular to the arc's plane)
496
- * @returns A new {@linkcode PArc}
497
- *
498
- * # Example
499
- * ```ts
500
- * const { vec3 } = snaptrude.core.math
501
- * const { arc } = snaptrude.core.geom
502
- *
503
- * // Quarter-circle arc on the XZ plane
504
- * const a = arc.new(
505
- * vec3.new(1, 0, 0), // start
506
- * vec3.new(0, 0, 1), // end
507
- * vec3.new(0, 0, 0), // centre
508
- * vec3.new(0, 1, 0), // Y-up axis
509
- * )
510
- * ```
511
- */
512
- new(startPoint, endPoint, centrePoint, axis) {
513
- return { curveType: "Arc", startPoint, endPoint, centrePoint, axis };
514
- }
515
- };
516
- var PArc = z4.object({
517
- curveType: z4.literal("Arc"),
518
- startPoint: PVec3,
519
- endPoint: PVec3,
520
- centrePoint: PVec3,
521
- axis: PVec3
522
- });
523
-
524
- // src/api/core/geom/curve.ts
525
- import * as z5 from "zod";
526
- var PluginCurveApi = class {
209
+ var PluginGeomQueryArcApi = class {
527
210
  constructor() {
528
211
  }
529
- /**
530
- * Wrap a {@linkcode PLine} or {@linkcode PArc} as a {@linkcode PCurve}.
531
- *
532
- * This is an identity operation — it simply returns the input unchanged.
533
- * It exists for type-level clarity when building mixed curve lists.
534
- *
535
- * @param curve - A {@linkcode PLine} or {@linkcode PArc} to wrap
536
- * @returns The same value typed as {@linkcode PCurve}
537
- */
538
- new(curve) {
539
- return curve;
212
+ };
213
+ var PluginGeomQueryArcGetRadiusArgs = z4.object({ arc: ArcHandle });
214
+ var PluginGeomQueryArcGetCentreArgs = z4.object({ arc: ArcHandle });
215
+ var PluginGeomQueryArcGetAxisArgs = z4.object({ arc: ArcHandle });
216
+ var PluginGeomQueryArcGetSweepAngleArgs = z4.object({ arc: ArcHandle });
217
+ var PluginGeomQueryArcIsValidArgs = z4.object({ arc: ArcHandle });
218
+
219
+ // src/api/core/geom/query/circle.ts
220
+ import * as z5 from "zod";
221
+ var PluginGeomQueryCircleApi = class {
222
+ constructor() {
540
223
  }
541
224
  };
542
- var PCurve = z5.discriminatedUnion("curveType", [PLine, PArc]);
225
+ var PluginGeomQueryCircleGetRadiusArgs = z5.object({ circle: CircleHandle });
226
+ var PluginGeomQueryCircleGetCentreArgs = z5.object({ circle: CircleHandle });
227
+ var PluginGeomQueryCircleGetAxisArgs = z5.object({ circle: CircleHandle });
228
+ var PluginGeomQueryCircleGetLengthArgs = z5.object({ circle: CircleHandle });
229
+ var PluginGeomQueryCircleIsValidArgs = z5.object({ circle: CircleHandle });
230
+ var PluginGeomQueryCircleGetNearestPointArgs = z5.object({
231
+ circle: CircleHandle,
232
+ point: Vec3Handle
233
+ });
234
+ var PluginGeomQueryCircleHasPointArgs = z5.object({
235
+ circle: CircleHandle,
236
+ point: Vec3Handle
237
+ });
238
+ var PluginGeomQueryCircleGetTangentArgs = z5.object({
239
+ circle: CircleHandle,
240
+ point: Vec3Handle
241
+ });
242
+ var PluginGeomQueryCircleGetNormalArgs = z5.object({
243
+ circle: CircleHandle,
244
+ point: Vec3Handle
245
+ });
246
+ var PluginGeomQueryCircleGetPointAtDistanceArgs = z5.object({
247
+ circle: CircleHandle,
248
+ referencePoint: Vec3Handle,
249
+ distance: z5.number(),
250
+ forward: z5.boolean().optional()
251
+ });
252
+ var PluginGeomQueryCircleIsEqualArgs = z5.object({
253
+ circleA: CircleHandle,
254
+ circleB: CircleHandle
255
+ });
256
+ var PluginGeomQueryCircleListPointsArgs = z5.object({
257
+ circle: CircleHandle,
258
+ resolution: z5.number().optional()
259
+ });
543
260
 
544
- // src/api/core/geom/profile.ts
261
+ // src/api/core/geom/query/profile.ts
545
262
  import * as z6 from "zod";
546
- var PluginProfileApi = class {
263
+ var PluginGeomQueryProfileApi = class {
264
+ constructor() {
265
+ }
266
+ };
267
+ var PluginGeomQueryProfileListPointsArgs = z6.object({
268
+ profile: ProfileHandle
269
+ });
270
+ var PluginGeomQueryProfileListCurvesArgs = z6.object({
271
+ profile: ProfileHandle
272
+ });
273
+ var PluginGeomQueryProfileGetAreaArgs = z6.object({
274
+ profile: ProfileHandle
275
+ });
276
+ var PluginGeomQueryProfileGetPerimeterArgs = z6.object({
277
+ profile: ProfileHandle
278
+ });
279
+ var PluginGeomQueryProfileGetBoundingBoxArgs = z6.object({
280
+ profile: ProfileHandle
281
+ });
282
+ var PluginGeomQueryProfileGetNormalArgs = z6.object({
283
+ profile: ProfileHandle
284
+ });
285
+ var PluginGeomQueryProfileGetNearestPointArgs = z6.object({
286
+ profile: ProfileHandle,
287
+ point: Vec3Handle
288
+ });
289
+ var PluginGeomQueryProfileHasPointArgs = z6.object({
290
+ profile: ProfileHandle,
291
+ point: Vec3Handle
292
+ });
293
+ var PluginGeomQueryProfileIsOnBoundaryArgs = z6.object({
294
+ profile: ProfileHandle,
295
+ point: Vec3Handle
296
+ });
297
+ var PluginGeomQueryProfileIsClosedArgs = z6.object({
298
+ profile: ProfileHandle
299
+ });
300
+ var PluginGeomQueryProfileIsPlanarArgs = z6.object({
301
+ profile: ProfileHandle
302
+ });
303
+ var PluginGeomQueryProfileIsClockwiseArgs = z6.object({
304
+ profile: ProfileHandle
305
+ });
306
+ var PluginGeomQueryProfileIsSelfIntersectingArgs = z6.object({
307
+ profile: ProfileHandle
308
+ });
309
+ var PluginGeomQueryProfileIsEmptyArgs = z6.object({
310
+ profile: ProfileHandle
311
+ });
312
+ var PluginGeomQueryProfileIsEqualArgs = z6.object({
313
+ profileA: ProfileHandle,
314
+ profileB: ProfileHandle
315
+ });
316
+
317
+ // src/api/core/geom/query/contour.ts
318
+ import * as z7 from "zod";
319
+ var PluginGeomQueryContourApi = class {
320
+ constructor() {
321
+ }
322
+ };
323
+ var PluginGeomQueryContourGetOuterProfileArgs = z7.object({
324
+ contour: ContourHandle
325
+ });
326
+ var PluginGeomQueryContourListHolesArgs = z7.object({
327
+ contour: ContourHandle
328
+ });
329
+ var PluginGeomQueryContourGetHoleCountArgs = z7.object({
330
+ contour: ContourHandle
331
+ });
332
+ var PluginGeomQueryContourGetAreaArgs = z7.object({
333
+ contour: ContourHandle
334
+ });
335
+ var PluginGeomQueryContourGetPerimeterArgs = z7.object({
336
+ contour: ContourHandle
337
+ });
338
+ var PluginGeomQueryContourGetBoundingBoxArgs = z7.object({
339
+ contour: ContourHandle
340
+ });
341
+ var PluginGeomQueryContourGetNormalArgs = z7.object({
342
+ contour: ContourHandle
343
+ });
344
+ var PluginGeomQueryContourGetNearestPointArgs = z7.object({
345
+ contour: ContourHandle,
346
+ point: Vec3Handle
347
+ });
348
+ var PluginGeomQueryContourHasPointArgs = z7.object({
349
+ contour: ContourHandle,
350
+ point: Vec3Handle
351
+ });
352
+ var PluginGeomQueryContourIsOnBoundaryArgs = z7.object({
353
+ contour: ContourHandle,
354
+ point: Vec3Handle
355
+ });
356
+ var PluginGeomQueryContourIsClockwiseArgs = z7.object({
357
+ contour: ContourHandle
358
+ });
359
+ var PluginGeomQueryContourIsPlanarArgs = z7.object({
360
+ contour: ContourHandle
361
+ });
362
+ var PluginGeomQueryContourIsEmptyArgs = z7.object({
363
+ contour: ContourHandle
364
+ });
365
+ var PluginGeomQueryContourIsSelfIntersectingArgs = z7.object({
366
+ contour: ContourHandle
367
+ });
368
+ var PluginGeomQueryContourIsOrientationValidArgs = z7.object({
369
+ contour: ContourHandle
370
+ });
371
+ var PluginGeomQueryContourIsEqualArgs = z7.object({
372
+ contourA: ContourHandle,
373
+ contourB: ContourHandle
374
+ });
375
+
376
+ // src/api/core/geom/query/brep.ts
377
+ import * as z8 from "zod";
378
+ var PluginGeomQueryBrepApi = class {
379
+ constructor() {
380
+ }
381
+ };
382
+ var brepArg = z8.object({ brep: BrepHandle });
383
+ var brepEdgeArg = z8.object({
384
+ brep: BrepHandle,
385
+ vertexIndexA: z8.number(),
386
+ vertexIndexB: z8.number()
387
+ });
388
+ var PluginGeomQueryBrepListFacesArgs = brepArg;
389
+ var PluginGeomQueryBrepListEdgesArgs = brepArg;
390
+ var PluginGeomQueryBrepListVerticesArgs = brepArg;
391
+ var PluginGeomQueryBrepListHalfEdgesArgs = brepArg;
392
+ var PluginGeomQueryBrepGetEdgeArgs = brepEdgeArg;
393
+ var PluginGeomQueryBrepHasEdgeArgs = brepEdgeArg;
394
+ var PluginGeomQueryBrepListEdgesBetweenArgs = brepEdgeArg;
395
+ var PluginGeomQueryBrepGetVertexPositionArgs = z8.object({
396
+ brep: BrepHandle,
397
+ vertex: VertexHandle
398
+ });
399
+ var PluginGeomQueryBrepListVertexPositionsArgs = brepArg;
400
+ var PluginGeomQueryBrepGetCentroidArgs = brepArg;
401
+ var PluginGeomQueryBrepGetFaceCountArgs = brepArg;
402
+ var PluginGeomQueryBrepGetEdgeCountArgs = brepArg;
403
+ var PluginGeomQueryBrepGetVertexCountArgs = brepArg;
404
+ var PluginGeomQueryBrepGetHalfEdgeCountArgs = brepArg;
405
+ var PluginGeomQueryBrepGetBoundingBoxArgs = brepArg;
406
+ var PluginGeomQueryBrepIsEqualArgs = z8.object({
407
+ brepA: BrepHandle,
408
+ brepB: BrepHandle
409
+ });
410
+
411
+ // src/api/core/geom/query/face.ts
412
+ import * as z9 from "zod";
413
+ var PluginGeomQueryFaceApi = class {
414
+ constructor() {
415
+ }
416
+ };
417
+ var faceArg = z9.object({ face: FaceHandle });
418
+ var PluginGeomQueryFaceGetIndexArgs = faceArg;
419
+ var PluginGeomQueryFaceGetMaterialIndexArgs = faceArg;
420
+ var PluginGeomQueryFaceGetHalfEdgeArgs = faceArg;
421
+ var PluginGeomQueryFaceListEdgesArgs = faceArg;
422
+ var PluginGeomQueryFaceListHalfEdgesArgs = faceArg;
423
+ var PluginGeomQueryFaceListVerticesArgs = faceArg;
424
+ var PluginGeomQueryFaceListHolesArgs = faceArg;
425
+ var PluginGeomQueryFaceGetHoleCountArgs = faceArg;
426
+ var PluginGeomQueryFaceListHoleHalfEdgesArgs = z9.object({
427
+ face: FaceHandle,
428
+ holeIndex: z9.number()
429
+ });
430
+ var PluginGeomQueryFaceHasHolesArgs = faceArg;
431
+ var PluginGeomQueryFaceGetHoleContainingHalfEdgeArgs = z9.object({
432
+ face: FaceHandle,
433
+ halfEdge: HalfEdgeHandle
434
+ });
435
+ var PluginGeomQueryFaceListVertexPositionsArgs = z9.object({
436
+ face: FaceHandle,
437
+ brep: BrepHandle
438
+ });
439
+ var PluginGeomQueryFaceListVertexPositionsWithCurvesArgs = faceArg;
440
+ var PluginGeomQueryFaceListAdjacentFacesArgs = faceArg;
441
+
442
+ // src/api/core/geom/query/edge.ts
443
+ import * as z10 from "zod";
444
+ var PluginGeomQueryEdgeApi = class {
445
+ constructor() {
446
+ }
447
+ };
448
+ var edgeArg = z10.object({ edge: EdgeHandle });
449
+ var PluginGeomQueryEdgeGetIndexArgs = edgeArg;
450
+ var PluginGeomQueryEdgeGetHalfEdgeArgs = edgeArg;
451
+ var PluginGeomQueryEdgeListVerticesArgs = edgeArg;
452
+ var PluginGeomQueryEdgeGetCurveArgs = edgeArg;
453
+ var PluginGeomQueryEdgeListFacesArgs = edgeArg;
454
+
455
+ // src/api/core/geom/query/halfedge.ts
456
+ import * as z11 from "zod";
457
+ var PluginGeomQueryHalfEdgeApi = class {
458
+ constructor() {
459
+ }
460
+ };
461
+ var heArg = z11.object({ halfEdge: HalfEdgeHandle });
462
+ var PluginGeomQueryHalfEdgeGetNextArgs = heArg;
463
+ var PluginGeomQueryHalfEdgeGetPrevArgs = heArg;
464
+ var PluginGeomQueryHalfEdgeGetFlipArgs = heArg;
465
+ var PluginGeomQueryHalfEdgeGetVertexArgs = heArg;
466
+ var PluginGeomQueryHalfEdgeGetEdgeArgs = heArg;
467
+ var PluginGeomQueryHalfEdgeGetFaceArgs = heArg;
468
+ var PluginGeomQueryHalfEdgeIsOnBoundaryArgs = heArg;
469
+ var PluginGeomQueryHalfEdgeIsForwardArgs = heArg;
470
+
471
+ // src/api/core/geom/query/vertex.ts
472
+ import * as z12 from "zod";
473
+ var PluginGeomQueryVertexApi = class {
474
+ constructor() {
475
+ }
476
+ };
477
+ var vertexArg = z12.object({ vertex: VertexHandle });
478
+ var PluginGeomQueryVertexGetIndexArgs = vertexArg;
479
+ var PluginGeomQueryVertexGetHalfEdgeArgs = vertexArg;
480
+ var PluginGeomQueryVertexGetPositionArgs = z12.object({
481
+ brep: BrepHandle,
482
+ vertex: VertexHandle
483
+ });
484
+ var PluginGeomQueryVertexListHalfEdgesArgs = vertexArg;
485
+ var PluginGeomQueryVertexListEdgesArgs = vertexArg;
486
+ var PluginGeomQueryVertexListFacesArgs = vertexArg;
487
+ var PluginGeomQueryVertexListNeighborsArgs = vertexArg;
488
+
489
+ // src/api/core/geom/query/index.ts
490
+ var PluginGeomQueryApi = class {
491
+ constructor() {
492
+ }
493
+ };
494
+
495
+ // src/api/core/geom/update/curve.ts
496
+ import * as z13 from "zod";
497
+ var PluginGeomUpdateCurveApi = class {
498
+ constructor() {
499
+ }
500
+ };
501
+ var PluginGeomUpdateCurveExtendArgs = z13.object({
502
+ curve: CurveHandle,
503
+ distance: z13.number(),
504
+ fromStart: z13.boolean()
505
+ });
506
+ var PluginGeomUpdateCurveSplitArgs = z13.object({
507
+ curve: CurveHandle,
508
+ point: Vec3Handle
509
+ });
510
+ var PluginGeomUpdateCurveTrimArgs = z13.object({
511
+ curve: CurveHandle,
512
+ startParam: z13.number(),
513
+ endParam: z13.number()
514
+ });
515
+ var PluginGeomUpdateCurveOffsetArgs = z13.object({
516
+ curve: CurveHandle,
517
+ vector: Vec3Handle
518
+ });
519
+ var PluginGeomUpdateCurveReverseArgs = z13.object({
520
+ curve: CurveHandle
521
+ });
522
+
523
+ // src/api/core/geom/update/profile.ts
524
+ import * as z14 from "zod";
525
+ var PluginGeomUpdateProfileApi = class {
526
+ constructor() {
527
+ }
528
+ };
529
+ var PluginGeomUpdateProfileOffsetArgs = z14.object({
530
+ profile: ProfileHandle,
531
+ distance: z14.number()
532
+ });
533
+ var PluginGeomUpdateProfileMoveArgs = z14.object({
534
+ profile: ProfileHandle,
535
+ translation: Vec3Handle
536
+ });
537
+ var PluginGeomUpdateProfileRotateArgs = z14.object({
538
+ profile: ProfileHandle,
539
+ axis: Vec3Handle,
540
+ angle: z14.number(),
541
+ pivot: Vec3Handle.optional()
542
+ });
543
+ var PluginGeomUpdateProfileScaleArgs = z14.object({
544
+ profile: ProfileHandle,
545
+ factor: z14.union([z14.number(), Vec3Components]),
546
+ pivot: Vec3Handle.optional()
547
+ });
548
+ var PluginGeomUpdateProfileMirrorArgs = z14.object({
549
+ profile: ProfileHandle,
550
+ plane: z14.object({
551
+ point: Vec3Handle,
552
+ normal: Vec3Handle
553
+ })
554
+ });
555
+ var PluginGeomUpdateProfileAddArgs = z14.object({
556
+ profile: ProfileHandle,
557
+ curve: CurveHandle,
558
+ position: z14.enum(["start", "end"]).optional()
559
+ });
560
+ var PluginGeomUpdateProfileRemoveArgs = z14.object({
561
+ profile: ProfileHandle,
562
+ position: z14.enum(["start", "end"]).optional()
563
+ });
564
+ var PluginGeomUpdateProfileReverseArgs = z14.object({
565
+ profile: ProfileHandle
566
+ });
567
+ var PluginGeomUpdateProfileSimplifyArgs = z14.object({
568
+ profile: ProfileHandle
569
+ });
570
+
571
+ // src/api/core/geom/update/contour.ts
572
+ import * as z15 from "zod";
573
+ var PluginGeomUpdateContourApi = class {
574
+ constructor() {
575
+ }
576
+ };
577
+ var PluginGeomUpdateContourOffsetArgs = z15.object({
578
+ contour: ContourHandle,
579
+ distance: z15.number()
580
+ });
581
+ var PluginGeomUpdateContourMoveArgs = z15.object({
582
+ contour: ContourHandle,
583
+ translation: Vec3Handle
584
+ });
585
+ var PluginGeomUpdateContourRotateArgs = z15.object({
586
+ contour: ContourHandle,
587
+ axis: Vec3Handle,
588
+ angle: z15.number(),
589
+ pivot: Vec3Handle.optional()
590
+ });
591
+ var PluginGeomUpdateContourScaleArgs = z15.object({
592
+ contour: ContourHandle,
593
+ factor: z15.union([z15.number(), Vec3Components]),
594
+ pivot: Vec3Handle.optional()
595
+ });
596
+ var PluginGeomUpdateContourMirrorArgs = z15.object({
597
+ contour: ContourHandle,
598
+ plane: z15.object({
599
+ point: Vec3Handle,
600
+ normal: Vec3Handle
601
+ })
602
+ });
603
+ var PluginGeomUpdateContourAddHoleArgs = z15.object({
604
+ contour: ContourHandle,
605
+ hole: ProfileHandle
606
+ });
607
+ var PluginGeomUpdateContourRemoveHoleArgs = z15.object({
608
+ contour: ContourHandle,
609
+ index: z15.number()
610
+ });
611
+
612
+ // src/api/core/geom/update/index.ts
613
+ var PluginGeomUpdateApi = class {
547
614
  constructor() {
548
615
  }
549
- /**
550
- * Create a profile from an ordered list of curves.
551
- *
552
- * The curves should form a closed loop — the end point of each curve
553
- * should coincide with the start point of the next.
554
- *
555
- * @param curves - An ordered array of {@linkcode PCurve}s forming a closed loop
556
- * @returns A new {@linkcode PProfile}
557
- */
558
- new(curves) {
559
- return { curves };
616
+ };
617
+
618
+ // src/api/core/geom/delete/index.ts
619
+ import * as z16 from "zod";
620
+ var PluginGeomDeleteApi = class {
621
+ constructor() {
560
622
  }
561
623
  };
562
- var PluginProfileFromLinePointsArgs = z6.object({
563
- points: z6.array(PVec3)
624
+ var PluginGeomDeleteProfileArgs = z16.object({
625
+ profile: ProfileHandle
564
626
  });
565
- var PProfile = z6.object({
566
- curves: z6.array(PCurve)
627
+ var PluginGeomDeleteContourArgs = z16.object({
628
+ contour: ContourHandle
567
629
  });
568
630
 
569
631
  // src/api/core/geom/index.ts
@@ -572,947 +634,2258 @@ var PluginGeomApi = class {
572
634
  }
573
635
  };
574
636
 
575
- // src/api/core/index.ts
576
- var PluginCoreApi = class {
637
+ // src/api/core/history/index.ts
638
+ import * as z17 from "zod";
639
+ var PluginHistoryApi = class {
577
640
  constructor() {
578
641
  }
579
642
  };
643
+ var PluginHistoryStepArgs = z17.object({
644
+ steps: z17.number().int().positive().optional()
645
+ });
646
+ var PluginHistoryStepResult = z17.object({
647
+ stepsApplied: z17.number().int().nonnegative()
648
+ });
580
649
 
581
- // src/api/documentation/aiInspiration.ts
582
- import * as z7 from "zod";
583
- var JsonPrimitive = z7.union([z7.string(), z7.number(), z7.boolean(), z7.null()]);
584
- var JsonValue = z7.lazy(
585
- () => z7.union([JsonPrimitive, z7.array(JsonValue), z7.record(z7.string(), JsonValue)])
586
- );
587
- var PluginAIInspirationRunMode = z7.enum(["blocking", "job"]);
588
- var PluginAIInspirationOutputKind = z7.enum([
589
- "source",
590
- "image",
591
- "video"
592
- ]);
593
- var PluginAIInspirationModelOutput = z7.enum(["image", "video"]);
594
- var PluginAIInspirationRuntimeProvider = z7.enum(["gpt", "fal"]);
595
- var PluginAIInspirationPromptStrategy = z7.enum([
596
- "gpt-image",
597
- "fal-image",
598
- "fal-video"
599
- ]);
600
- var PluginAIInspirationShapeKind = z7.enum(["image", "view", "video"]);
601
- var PluginAIInspirationVideoMode = z7.enum([
602
- "animate",
603
- "references",
604
- "keyframes"
605
- ]);
606
- var PluginAIInspirationVideoMotion = z7.enum([
607
- "auto",
608
- "slow-dolly",
609
- "subtle-orbit",
610
- "reveal"
611
- ]);
612
- var PluginAIInspirationVideoDuration = z7.enum(["4s", "6s", "8s"]);
613
- var PluginAIInspirationJobStatus = z7.enum([
614
- "queued",
615
- "running",
616
- "completed",
617
- "failed",
618
- "cancelled"
619
- ]);
620
- var PluginAIInspirationWorkflowRunState = z7.enum([
621
- "current",
622
- "stale",
623
- "running",
624
- "failed",
625
- "superseded"
650
+ // src/api/core/units/index.ts
651
+ import * as z18 from "zod";
652
+ var PluginUnitsApi = class {
653
+ constructor() {
654
+ }
655
+ };
656
+ var PUnitType = z18.enum([
657
+ "meters",
658
+ "feet-inches",
659
+ "inches",
660
+ "centimeters",
661
+ "millimeters",
662
+ "kilometers",
663
+ "miles",
664
+ "babylon"
626
665
  ]);
627
- var PluginAIInspirationRegionHint = z7.object({
628
- x: z7.number().finite(),
629
- y: z7.number().finite(),
630
- w: z7.number().finite().positive(),
631
- h: z7.number().finite().positive()
632
- });
633
- var PluginAIInspirationPoint = z7.object({
634
- x: z7.number().finite(),
635
- y: z7.number().finite()
636
- });
637
- var PluginAIInspirationTextAnnotation = z7.object({
638
- text: z7.string().min(1),
639
- x: z7.number().finite().optional(),
640
- y: z7.number().finite().optional()
641
- });
642
- var PluginAIInspirationSketchGuidance = z7.object({
643
- visualShapeIds: z7.array(z7.string()).optional(),
644
- textAnnotations: z7.array(PluginAIInspirationTextAnnotation).optional()
645
- });
646
- var PluginAIInspirationSiteOptions = z7.object({
647
- includeSatellite: z7.boolean().optional(),
648
- includeStreetView: z7.boolean().optional(),
649
- includeAerial: z7.boolean().optional(),
650
- aerialBearing: z7.number().finite().optional(),
651
- aerialPitch: z7.number().finite().optional(),
652
- selectedDiagramIds: z7.array(z7.string()).optional(),
653
- location: z7.object({
654
- lat: z7.number().finite(),
655
- lng: z7.number().finite()
656
- }).optional()
666
+ var PluginUnitsSetTypeArgs = z18.object({
667
+ type: PUnitType
657
668
  });
658
- var PluginAIInspirationAppliedPreset = z7.object({
659
- source: z7.enum(["curated", "user"]),
660
- presetId: z7.string().min(1),
661
- name: z7.string().min(1),
662
- savedPresetKind: z7.enum(["prompt", "style"]).optional(),
663
- stylePrompt: z7.string().optional(),
664
- modelId: z7.string().optional(),
665
- referenceImages: z7.array(
666
- z7.object({
667
- url: z7.string().min(1),
668
- label: z7.string().optional(),
669
- weight: z7.number().finite().optional()
670
- })
671
- ).optional(),
672
- siteDefaults: z7.object({
673
- includeSatellite: z7.boolean().optional(),
674
- includeStreetView: z7.boolean().optional(),
675
- includeAerial: z7.boolean().optional()
676
- }).optional()
669
+ var PluginUnitsConvertArgs = z18.object({
670
+ value: z18.number(),
671
+ from: PUnitType,
672
+ to: PUnitType,
673
+ degree: z18.number().int().min(1).max(3).optional()
677
674
  });
678
- var PluginAIInspirationVideoOptions = z7.object({
679
- mode: PluginAIInspirationVideoMode.optional(),
680
- endFrameShapeId: z7.string().optional(),
681
- motion: PluginAIInspirationVideoMotion.optional(),
682
- duration: PluginAIInspirationVideoDuration.optional()
675
+
676
+ // src/api/core/zoom/index.ts
677
+ var PluginZoomApi = class {
678
+ constructor() {
679
+ }
680
+ };
681
+
682
+ // src/api/core/project/index.ts
683
+ import * as z19 from "zod";
684
+ var PluginProjectApi = class {
685
+ constructor() {
686
+ }
687
+ };
688
+ var PluginProjectSettingsApi = class {
689
+ constructor() {
690
+ }
691
+ };
692
+ var PluginSnapsApi = class {
693
+ constructor() {
694
+ }
695
+ };
696
+ var PluginGridApi = class {
697
+ constructor() {
698
+ }
699
+ };
700
+ var PluginSnapValueArgs = z19.object({
701
+ value: z19.number()
683
702
  });
684
- var PluginAIInspirationModel = z7.object({
685
- id: z7.string(),
686
- label: z7.string(),
687
- supportsMultiImage: z7.boolean(),
688
- output: PluginAIInspirationModelOutput,
689
- isDefault: z7.boolean().optional()
703
+ var PluginGridValueArgs = z19.object({
704
+ value: z19.number()
690
705
  });
691
- var PluginAIInspirationModelCapability = z7.object({
692
- id: z7.string(),
693
- output: PluginAIInspirationModelOutput,
694
- provider: PluginAIInspirationRuntimeProvider,
695
- supportsRegionEdit: z7.boolean(),
696
- supportsReferenceImages: z7.boolean(),
697
- supportsStylePresets: z7.boolean(),
698
- supportsSiteContext: z7.boolean(),
699
- supportsSketchGuidance: z7.boolean(),
700
- supportsKeyframes: z7.boolean(),
701
- maxExtraImages: z7.number().int().nonnegative(),
702
- promptStrategy: PluginAIInspirationPromptStrategy
703
- });
704
- var PluginAIInspirationListModelsResult = z7.object({
705
- defaultModelId: z7.string(),
706
- models: z7.array(PluginAIInspirationModel)
707
- });
708
- var PluginAIInspirationGetModelCapabilitiesArgs = z7.object({
709
- modelId: z7.string().min(1)
710
- });
711
- var PluginAIInspirationGetModelCapabilitiesResult = z7.object({
712
- capability: PluginAIInspirationModelCapability
713
- });
714
- var PluginAIInspirationShapeRef = z7.object({
715
- shapeId: z7.string(),
716
- assetId: z7.string().optional(),
717
- kind: PluginAIInspirationShapeKind,
718
- name: z7.string().optional(),
719
- width: z7.number().finite().optional(),
720
- height: z7.number().finite().optional(),
721
- outputType: PluginAIInspirationOutputKind.optional(),
722
- sourceUrl: z7.string().optional()
723
- });
724
- var PluginAIInspirationListSourcesArgs = z7.object({
725
- includeGenerated: z7.boolean().optional(),
726
- includeSourceUrl: z7.boolean().optional()
727
- });
728
- var PluginAIInspirationListSourcesResult = z7.object({
729
- sources: z7.array(PluginAIInspirationShapeRef)
730
- });
731
- var PluginAIInspirationGetSelectionResult = z7.object({
732
- selectedShapeIds: z7.array(z7.string()),
733
- sources: z7.array(PluginAIInspirationShapeRef)
734
- });
735
- var PluginAIInspirationPresetReferenceImage = z7.object({
736
- url: z7.string(),
737
- label: z7.string().optional(),
738
- weight: z7.number().finite().optional()
739
- });
740
- var PluginAIInspirationPreset = z7.object({
741
- id: z7.string(),
742
- name: z7.string(),
743
- source: z7.enum(["curated", "user"]),
744
- modelId: z7.string(),
745
- categoryId: z7.string().optional(),
746
- categoryLabel: z7.string().optional(),
747
- description: z7.string().optional(),
748
- previewImageUrl: z7.string().optional(),
749
- prompt: z7.string().optional(),
750
- stylePrompt: z7.string().optional(),
751
- tags: z7.array(z7.string()).optional(),
752
- referenceImages: z7.array(PluginAIInspirationPresetReferenceImage).optional(),
753
- siteDefaults: PluginAIInspirationAppliedPreset.shape.siteDefaults.optional()
754
- });
755
- var PluginAIInspirationPresetCategory = z7.object({
756
- id: z7.string(),
757
- label: z7.string(),
758
- description: z7.string().optional()
759
- });
760
- var PluginAIInspirationGetPresetCatalogResult = z7.object({
761
- categories: z7.array(PluginAIInspirationPresetCategory),
762
- presets: z7.array(PluginAIInspirationPreset)
763
- });
764
- var PluginAIInspirationOutput = z7.object({
765
- outputType: z7.enum(["image", "video"]),
766
- shapeId: z7.string(),
767
- assetId: z7.string(),
768
- outputUrl: z7.string().optional(),
769
- position: PluginAIInspirationPoint.optional()
706
+ var PluginToleranceArgs = z19.object({
707
+ value: z19.number()
770
708
  });
771
- var PluginAIInspirationDebugSummary = z7.record(z7.string(), JsonValue);
772
- var PluginAIInspirationRunMetadata = z7.object({
773
- geometryFidelity: z7.string().optional(),
774
- debugSummary: PluginAIInspirationDebugSummary.optional(),
775
- streetViewComposite: z7.object({
776
- used: z7.boolean(),
777
- renderMode: z7.enum(["prompt_refs_default", "masked_composite_pilot"]),
778
- backgroundLabel: z7.string().optional()
779
- }).optional()
709
+
710
+ // src/api/core/comment/index.ts
711
+ import * as z20 from "zod";
712
+ var PluginCommentApi = class {
713
+ constructor() {
714
+ }
715
+ };
716
+ var CommentHandle = z20.string().min(1).transform((s) => s);
717
+ var PluginCommentCreateArgs = z20.object({
718
+ component: ComponentHandle.optional(),
719
+ position: Vec3Handle.optional(),
720
+ message: z20.string(),
721
+ mentions: z20.array(z20.string()).optional()
780
722
  });
781
- var PluginAIInspirationGenerateArgs = z7.object({
782
- sourceShapeId: z7.string().min(1),
783
- prompt: z7.string().min(1).max(8e3),
784
- modelId: z7.string().optional(),
785
- referenceShapeIds: z7.array(z7.string()).max(12).optional(),
786
- referenceStrength: z7.enum(["low", "medium", "high"]).optional(),
787
- appliedPreset: PluginAIInspirationAppliedPreset.optional(),
788
- site: PluginAIInspirationSiteOptions.optional(),
789
- regionHint: PluginAIInspirationRegionHint.optional(),
790
- sketchGuidance: PluginAIInspirationSketchGuidance.optional(),
791
- video: PluginAIInspirationVideoOptions.optional(),
792
- runMode: PluginAIInspirationRunMode.optional()
723
+ var PluginCommentUpdateArgs = z20.object({
724
+ comment: CommentHandle,
725
+ message: z20.string(),
726
+ mentions: z20.array(z20.string()).optional()
793
727
  });
794
- var PluginAIInspirationRunResult = z7.object({
795
- jobId: z7.string().optional(),
796
- output: PluginAIInspirationOutput.optional(),
797
- outputs: z7.array(PluginAIInspirationOutput).optional(),
798
- metadata: PluginAIInspirationRunMetadata.optional()
728
+ var PluginCommentRefArgs = z20.object({
729
+ comment: CommentHandle
799
730
  });
800
- var PluginAIInspirationRefineArgs = z7.object({
801
- sourceShapeId: z7.string().min(1),
802
- upscaleFactor: z7.union([z7.literal(1.5), z7.literal(2), z7.literal(4)]).optional(),
803
- runMode: PluginAIInspirationRunMode.optional()
804
- });
805
- var PluginAIInspirationJobProgress = z7.object({
806
- currentStep: z7.number().int().nonnegative().optional(),
807
- totalSteps: z7.number().int().nonnegative().optional(),
808
- message: z7.string().optional()
809
- });
810
- var PluginAIInspirationJob = z7.object({
811
- jobId: z7.string(),
812
- status: PluginAIInspirationJobStatus,
813
- createdAt: z7.number(),
814
- updatedAt: z7.number(),
815
- completedAt: z7.number().optional(),
816
- method: z7.string(),
817
- progress: PluginAIInspirationJobProgress.optional(),
818
- result: PluginAIInspirationRunResult.optional(),
819
- error: z7.string().optional()
820
- });
821
- var PluginAIInspirationJobArgs = z7.object({
822
- jobId: z7.string().min(1)
823
- });
824
- var PluginAIInspirationGetJobResult = z7.object({
825
- job: PluginAIInspirationJob
826
- });
827
- var PluginAIInspirationCancelJobResult = z7.object({
828
- job: PluginAIInspirationJob
829
- });
830
- var PluginAIInspirationListJobsResult = z7.object({
831
- jobs: z7.array(PluginAIInspirationJob)
832
- });
833
- var PluginAIInspirationWorkflowVideoConfig = z7.object({
834
- mode: z7.string().optional(),
835
- motion: z7.string().optional(),
836
- duration: z7.string().optional(),
837
- endFrameShapeId: z7.string().optional()
838
- });
839
- var PluginAIInspirationGenerationInputSnapshot = z7.object({
840
- version: z7.literal(1),
841
- meta: z7.record(z7.string(), JsonValue),
842
- regionHint: PluginAIInspirationRegionHint.optional(),
843
- sketchGuidance: z7.record(z7.string(), JsonValue).optional(),
844
- sourceCameraHeading: z7.number().finite().optional()
845
- });
846
- var PluginAIInspirationWorkflowOperation = z7.object({
847
- type: z7.enum(["generate-image", "refine", "generate-video"]),
848
- label: z7.string(),
849
- prompt: z7.string().optional(),
850
- modelId: z7.string().optional(),
851
- presetId: z7.string().optional(),
852
- presetName: z7.string().optional(),
853
- refineFactor: z7.number().finite().optional(),
854
- sourceRole: z7.enum(["primary", "end-frame"]).optional(),
855
- video: PluginAIInspirationWorkflowVideoConfig.optional(),
856
- generationInput: PluginAIInspirationGenerationInputSnapshot.optional()
857
- });
858
- var PluginAIInspirationWorkflowNode = z7.object({
859
- id: z7.string(),
860
- shapeId: z7.string(),
861
- assetId: z7.string().optional(),
862
- kind: PluginAIInspirationOutputKind,
863
- state: z7.string(),
864
- runState: PluginAIInspirationWorkflowRunState.optional(),
865
- staleReason: z7.string().optional(),
866
- incomingEdgeIds: z7.array(z7.string()),
867
- outgoingEdgeIds: z7.array(z7.string()),
868
- createdAt: z7.number(),
869
- updatedAt: z7.number()
870
- });
871
- var PluginAIInspirationWorkflowEdge = z7.object({
872
- id: z7.string(),
873
- sourceNodeId: z7.string(),
874
- targetNodeId: z7.string(),
875
- arrowShapeId: z7.string().optional(),
876
- operation: PluginAIInspirationWorkflowOperation,
877
- state: z7.string(),
878
- runState: PluginAIInspirationWorkflowRunState.optional(),
879
- staleReason: z7.string().optional(),
880
- supersededByEdgeId: z7.string().optional(),
881
- createdAt: z7.number(),
882
- updatedAt: z7.number()
883
- });
884
- var PluginAIInspirationWorkflow = z7.object({
885
- id: z7.string(),
886
- rootNodeIds: z7.array(z7.string()),
887
- nodeIds: z7.array(z7.string()),
888
- edgeIds: z7.array(z7.string()),
889
- nodes: z7.record(z7.string(), PluginAIInspirationWorkflowNode),
890
- edges: z7.record(z7.string(), PluginAIInspirationWorkflowEdge),
891
- createdAt: z7.number(),
892
- updatedAt: z7.number()
893
- });
894
- var PluginAIInspirationGetWorkflowForShapeArgs = z7.object({
895
- shapeId: z7.string().min(1)
896
- });
897
- var PluginAIInspirationGetWorkflowForShapeResult = z7.object({
898
- workflow: PluginAIInspirationWorkflow.nullable(),
899
- node: PluginAIInspirationWorkflowNode.nullable()
900
- });
901
- var PluginAIInspirationRerunPlanResult = z7.discriminatedUnion(
902
- "status",
903
- [
904
- z7.object({
905
- status: z7.literal("ready"),
906
- workflowId: z7.string(),
907
- sourceNode: PluginAIInspirationWorkflowNode,
908
- edgeIds: z7.array(z7.string()),
909
- edges: z7.array(PluginAIInspirationWorkflowEdge),
910
- recipe: z7.lazy(() => PluginAIInspirationRecipe),
911
- needsEndFrame: z7.boolean(),
912
- defaultEndFrameShapeId: z7.string().nullable()
913
- }),
914
- z7.object({
915
- status: z7.literal("unavailable"),
916
- reason: z7.enum([
917
- "not-in-workflow",
918
- "source-only",
919
- "running",
920
- "missing-input"
921
- ])
922
- })
923
- ]
924
- );
925
- var PluginAIInspirationRerunSelectedBranchArgs = z7.object({
926
- shapeId: z7.string().min(1),
927
- endFrameShapeId: z7.string().optional(),
928
- runMode: PluginAIInspirationRunMode.optional()
929
- });
930
- var PluginAIInspirationRecipeSlot = z7.object({
931
- id: z7.string(),
932
- type: z7.enum(["source-image", "end-frame"]),
933
- label: z7.string(),
934
- required: z7.boolean()
935
- });
936
- var PluginAIInspirationRecipeStep = z7.object({
937
- id: z7.string(),
938
- operation: PluginAIInspirationWorkflowOperation,
939
- outputKind: z7.enum(["image", "video"])
940
- });
941
- var PluginAIInspirationRecipeDraft = z7.object({
942
- name: z7.string(),
943
- summary: z7.string(),
944
- slots: z7.array(PluginAIInspirationRecipeSlot),
945
- steps: z7.array(PluginAIInspirationRecipeStep).min(1).max(20),
946
- outputKind: z7.enum(["image", "video"]),
947
- thumbnailUrl: z7.string().optional()
948
- });
949
- var PluginAIInspirationRecipe = PluginAIInspirationRecipeDraft.extend({
950
- version: z7.literal(1),
951
- id: z7.string(),
952
- fingerprint: z7.string().optional(),
953
- createdAt: z7.number(),
954
- updatedAt: z7.number()
955
- });
956
- var PluginAIInspirationExtractionResult = z7.discriminatedUnion(
957
- "status",
958
- [
959
- z7.object({
960
- status: z7.literal("ready"),
961
- draft: PluginAIInspirationRecipeDraft
962
- }),
963
- z7.object({
964
- status: z7.literal("unavailable"),
965
- reason: z7.enum([
966
- "not-in-workflow",
967
- "source-only",
968
- "missing-workflow",
969
- "missing-node",
970
- "missing-input",
971
- "invalid-workflow"
972
- ])
973
- })
974
- ]
975
- );
976
- var PluginAIInspirationListRecipesResult = z7.object({
977
- recipes: z7.array(PluginAIInspirationRecipe)
978
- });
979
- var PluginAIInspirationSaveRecipeArgs = z7.object({
980
- draft: PluginAIInspirationRecipeDraft,
981
- name: z7.string().min(1)
982
- });
983
- var PluginAIInspirationSaveRecipeResult = z7.discriminatedUnion(
984
- "status",
985
- [
986
- z7.object({ status: z7.literal("saved"), recipe: PluginAIInspirationRecipe }),
987
- z7.object({
988
- status: z7.literal("duplicate"),
989
- recipe: PluginAIInspirationRecipe
990
- }),
991
- z7.object({ status: z7.literal("invalid-name"), recipe: z7.null() }),
992
- z7.object({ status: z7.literal("failed"), recipe: z7.null() })
993
- ]
994
- );
995
- var PluginAIInspirationDeleteRecipeArgs = z7.object({
996
- recipeId: z7.string().min(1)
731
+ var PluginCommentTagArgs = z20.object({
732
+ comment: CommentHandle,
733
+ email: z20.string()
734
+ });
735
+
736
+ // src/api/core/groups.ts
737
+ import * as z21 from "zod";
738
+ var PluginCoreGroupsApi = class {
739
+ constructor() {
740
+ }
741
+ };
742
+ var PluginCoreGroupRef = z21.object({
743
+ id: z21.string(),
744
+ name: z21.string(),
745
+ memberCount: z21.number().int(),
746
+ isLocked: z21.boolean(),
747
+ parentId: z21.string().optional()
748
+ });
749
+ var PluginCoreGroupMember = z21.object({
750
+ id: z21.string(),
751
+ type: z21.enum(["component", "group"])
752
+ });
753
+ var PluginCoreGroupsListResult = z21.object({
754
+ groups: z21.array(PluginCoreGroupRef)
755
+ });
756
+ var PluginCoreGroupsGetArgs = z21.object({
757
+ groupId: z21.string()
758
+ });
759
+ var PluginCoreGroupsGetResult = PluginCoreGroupRef.nullable();
760
+ var PluginCoreGroupsGetForComponentArgs = z21.object({
761
+ componentId: ComponentHandle
762
+ });
763
+ var PluginCoreGroupsGetForComponentResult = PluginCoreGroupRef.nullable();
764
+ var PluginCoreGroupsListMembersArgs = z21.object({
765
+ groupId: z21.string()
766
+ });
767
+ var PluginCoreGroupsListMembersResult = z21.object({
768
+ members: z21.array(PluginCoreGroupMember)
769
+ });
770
+ var PluginCoreGroupsIsLockedArgs = z21.object({
771
+ groupId: z21.string()
772
+ });
773
+ var PluginCoreGroupsIsLockedResult = z21.boolean();
774
+ var PluginCoreGroupsGetBoundsArgs = z21.object({
775
+ groupId: z21.string()
776
+ });
777
+ var PluginCoreGroupsGetBoundsResult = z21.object({
778
+ min: Vec3Components,
779
+ max: Vec3Components,
780
+ center: Vec3Components
781
+ }).nullable();
782
+ var PluginCoreGroupsCreateArgs = z21.object({
783
+ componentIds: z21.array(ComponentHandle).min(1),
784
+ name: z21.string().optional()
785
+ });
786
+ var PluginCoreGroupsCreateResult = z21.object({
787
+ groupId: z21.string()
788
+ });
789
+ var PluginCoreGroupsUpdateArgs = z21.object({
790
+ groupId: z21.string(),
791
+ name: z21.string().optional(),
792
+ addComponentIds: z21.array(ComponentHandle).optional(),
793
+ removeComponentIds: z21.array(ComponentHandle).optional()
794
+ });
795
+ var PluginCoreGroupsUpdateResult = PluginCoreGroupRef;
796
+ var PluginCoreGroupsDeleteArgs = z21.object({
797
+ groupId: z21.string()
798
+ });
799
+ var PluginCoreGroupsDeleteResult = z21.object({
800
+ deleted: z21.literal(true)
801
+ });
802
+
803
+ // src/api/core/buildings.ts
804
+ import * as z22 from "zod";
805
+ var PluginCoreBuildingsApi = class {
806
+ constructor() {
807
+ }
808
+ };
809
+ var PluginCoreBuildingRef = z22.object({
810
+ id: z22.string(),
811
+ name: z22.string(),
812
+ baseElevation: z22.number()
813
+ });
814
+ var PluginCoreBuildingsListResult = z22.object({
815
+ buildings: z22.array(PluginCoreBuildingRef)
816
+ });
817
+ var PluginCoreBuildingsGetArgs = z22.object({
818
+ buildingId: z22.string()
819
+ });
820
+ var PluginCoreBuildingsGetResult = PluginCoreBuildingRef.nullable();
821
+ var PluginCoreBuildingsListStoreysArgs = z22.object({
822
+ buildingId: z22.string()
997
823
  });
998
- var PluginAIInspirationDeleteRecipeResult = z7.object({
999
- deleted: z7.boolean()
824
+ var PluginCoreBuildingsListStoreysResult = z22.object({
825
+ storeyIds: z22.array(z22.string())
826
+ });
827
+ var PluginCoreBuildingsGetActiveResult = z22.object({
828
+ buildingId: z22.string()
829
+ }).nullable();
830
+ var PluginCoreBuildingsSetActiveArgs = z22.object({
831
+ buildingId: z22.string()
832
+ });
833
+ var PluginCoreBuildingsSetActiveResult = z22.object({
834
+ buildingId: z22.string()
835
+ });
836
+ var PluginCoreBuildingsCreateArgs = z22.object({
837
+ name: z22.string(),
838
+ baseElevation: z22.number().optional()
839
+ });
840
+ var PluginCoreBuildingsCreateResult = z22.object({
841
+ buildingId: z22.string()
842
+ });
843
+ var PluginCoreBuildingsUpdateArgs = z22.object({
844
+ buildingId: z22.string(),
845
+ name: z22.string().optional(),
846
+ baseElevation: z22.number().optional()
847
+ });
848
+ var PluginCoreBuildingsUpdateResult = PluginCoreBuildingRef;
849
+ var PluginCoreBuildingsCopyArgs = z22.object({
850
+ buildingId: z22.string(),
851
+ name: z22.string().optional(),
852
+ baseElevation: z22.number().optional(),
853
+ asInstances: z22.boolean().optional()
854
+ });
855
+ var PluginCoreBuildingsCopyResult = z22.object({
856
+ buildingId: z22.string()
857
+ });
858
+ var PluginCoreBuildingsDeleteArgs = z22.object({
859
+ buildingId: z22.string()
860
+ });
861
+ var PluginCoreBuildingsDeleteResult = z22.object({
862
+ deleted: z22.literal(true)
863
+ });
864
+
865
+ // src/api/core/layers.ts
866
+ import * as z23 from "zod";
867
+ var PluginCoreLayersApi = class {
868
+ constructor() {
869
+ }
870
+ };
871
+ var PluginCoreLayerType = z23.enum([
872
+ "floor",
873
+ "wall",
874
+ "ceiling",
875
+ "rough",
876
+ "default",
877
+ "image",
878
+ "cad",
879
+ "pdf",
880
+ "terrain",
881
+ "buildings"
882
+ ]);
883
+ var PluginCoreLayer = z23.object({
884
+ id: z23.string(),
885
+ name: z23.string(),
886
+ layerType: PluginCoreLayerType,
887
+ storeyId: z23.string(),
888
+ buildingId: z23.string(),
889
+ hidden: z23.boolean(),
890
+ locked: z23.boolean(),
891
+ contentSummary: z23.object({
892
+ hasFloorplan: z23.boolean(),
893
+ pdfCount: z23.number().int(),
894
+ hasTerrain: z23.boolean()
895
+ })
896
+ });
897
+ var PluginCoreLayersListArgs = z23.object({
898
+ storeyId: z23.string(),
899
+ layerType: PluginCoreLayerType.optional()
900
+ });
901
+ var PluginCoreLayersListResult = z23.object({
902
+ layers: z23.array(PluginCoreLayer)
903
+ });
904
+ var PluginCoreLayersGetArgs = z23.object({
905
+ layerId: z23.string()
906
+ });
907
+ var PluginCoreLayersGetResult = PluginCoreLayer.nullable();
908
+ var PluginCoreLayersGetActiveArgs = z23.object({
909
+ storeyId: z23.string()
910
+ });
911
+ var PluginCoreLayersGetActiveResult = PluginCoreLayer.nullable();
912
+ var PluginCoreLayersSetActiveArgs = z23.object({
913
+ layerId: z23.string()
914
+ });
915
+ var PluginCoreLayersSetActiveResult = z23.object({
916
+ layerId: z23.string()
917
+ });
918
+ var PluginCoreLayersUpdateArgs = z23.object({
919
+ layerId: z23.string(),
920
+ hidden: z23.boolean().optional()
921
+ });
922
+ var PluginCoreLayersUpdateResult = PluginCoreLayer;
923
+
924
+ // src/api/core/tags.ts
925
+ import * as z24 from "zod";
926
+ var PluginCoreTagsApi = class {
927
+ constructor() {
928
+ }
929
+ };
930
+ var PluginCoreTagCategory = z24.object({
931
+ id: z24.string(),
932
+ name: z24.string(),
933
+ tagIds: z24.array(z24.string())
934
+ });
935
+ var PluginCoreTag = z24.object({
936
+ id: z24.string(),
937
+ categoryId: z24.string(),
938
+ name: z24.string(),
939
+ color: z24.string()
940
+ });
941
+ var PluginCoreComponentTag = z24.object({
942
+ categoryId: z24.string(),
943
+ categoryName: z24.string(),
944
+ tagId: z24.string(),
945
+ tagName: z24.string(),
946
+ color: z24.string()
947
+ });
948
+ var PluginCoreAssignOutcome = z24.object({
949
+ assigned: z24.array(z24.string()),
950
+ skipped: z24.array(
951
+ z24.object({
952
+ id: z24.string(),
953
+ reason: z24.enum(["locked", "not-taggable", "not-found"])
954
+ })
955
+ )
956
+ });
957
+ var PluginCoreTagsListCategoriesResult = z24.object({
958
+ categories: z24.array(PluginCoreTagCategory)
959
+ });
960
+ var PluginCoreTagsGetCategoryArgs = z24.object({
961
+ categoryId: z24.string()
962
+ });
963
+ var PluginCoreTagsGetCategoryResult = PluginCoreTagCategory.nullable();
964
+ var PluginCoreTagsListArgs = z24.object({
965
+ categoryId: z24.string().optional()
966
+ });
967
+ var PluginCoreTagsListResult = z24.object({
968
+ tags: z24.array(PluginCoreTag)
969
+ });
970
+ var PluginCoreTagsGetArgs = z24.object({
971
+ tagId: z24.string()
972
+ });
973
+ var PluginCoreTagsGetResult = PluginCoreTag.nullable();
974
+ var PluginCoreTagsGetTagsForComponentArgs = z24.object({
975
+ componentId: ComponentHandle
976
+ });
977
+ var PluginCoreTagsGetTagsForComponentResult = z24.object({
978
+ tags: z24.array(PluginCoreComponentTag)
979
+ });
980
+ var PluginCoreTagsListComponentsArgs = z24.object({
981
+ tagId: z24.string().optional(),
982
+ categoryId: z24.string().optional(),
983
+ untagged: z24.boolean().optional()
984
+ }).refine((v) => v.tagId == null !== (v.categoryId == null), {
985
+ message: "Provide exactly one of tagId or categoryId"
986
+ }).refine((v) => v.untagged == null || v.categoryId != null, {
987
+ message: "untagged is valid only together with categoryId"
988
+ });
989
+ var PluginCoreTagsListComponentsResult = z24.object({
990
+ componentIds: z24.array(ComponentHandle)
991
+ });
992
+ var PluginCoreTagsCreateCategoryArgs = z24.object({
993
+ name: z24.string()
994
+ });
995
+ var PluginCoreTagsCreateCategoryResult = PluginCoreTagCategory;
996
+ var PluginCoreTagsUpdateCategoryArgs = z24.object({
997
+ categoryId: z24.string(),
998
+ name: z24.string()
999
+ });
1000
+ var PluginCoreTagsUpdateCategoryResult = PluginCoreTagCategory;
1001
+ var PluginCoreTagsDeleteCategoryArgs = z24.object({
1002
+ categoryId: z24.string()
1003
+ });
1004
+ var PluginCoreTagsDeleteCategoryResult = z24.object({
1005
+ deletedTagCount: z24.number().int(),
1006
+ resetComponentCount: z24.number().int()
1007
+ });
1008
+ var PluginCoreTagsCreateArgs = z24.object({
1009
+ categoryId: z24.string(),
1010
+ name: z24.string(),
1011
+ color: z24.string().optional()
1012
+ });
1013
+ var PluginCoreTagsCreateResult = PluginCoreTag;
1014
+ var PluginCoreTagsUpdateArgs = z24.object({
1015
+ tagId: z24.string(),
1016
+ name: z24.string().optional(),
1017
+ color: z24.string().optional()
1018
+ });
1019
+ var PluginCoreTagsUpdateResult = PluginCoreTag;
1020
+ var PluginCoreTagsDeleteArgs = z24.object({
1021
+ tagId: z24.string()
1022
+ });
1023
+ var PluginCoreTagsDeleteResult = z24.object({
1024
+ resetComponentCount: z24.number().int()
1025
+ });
1026
+ var PluginCoreTagsAssignArgs = z24.object({
1027
+ componentIds: z24.array(ComponentHandle).min(1),
1028
+ categoryName: z24.string(),
1029
+ tagName: z24.string()
1030
+ });
1031
+ var PluginCoreTagsAssignResult = PluginCoreAssignOutcome.extend({
1032
+ categoryId: z24.string(),
1033
+ tagId: z24.string(),
1034
+ categoryCreated: z24.boolean(),
1035
+ tagCreated: z24.boolean()
1036
+ });
1037
+ var PluginCoreTagsUnassignArgs = z24.object({
1038
+ categoryId: z24.string(),
1039
+ componentIds: z24.array(ComponentHandle).min(1)
1040
+ });
1041
+ var PluginCoreTagsUnassignResult = PluginCoreAssignOutcome;
1042
+
1043
+ // src/api/core/index.ts
1044
+ var PluginCoreApi = class {
1045
+ constructor() {
1046
+ }
1047
+ };
1048
+
1049
+ // src/api/design/create/index.ts
1050
+ import * as z26 from "zod";
1051
+
1052
+ // src/api/entity/space.ts
1053
+ import * as z25 from "zod";
1054
+ var PluginSpaceCreateRectangularArgs = z25.object({
1055
+ position: Vec3Handle,
1056
+ dimensions: z25.object({
1057
+ width: z25.number(),
1058
+ height: z25.number(),
1059
+ depth: z25.number()
1060
+ })
1061
+ });
1062
+ var PluginSpaceCreateRectangularResult = z25.object({
1063
+ spaceId: z25.string()
1064
+ });
1065
+ var PluginSpaceCreateFromProfileArgs = z25.object({
1066
+ profile: ProfileHandle,
1067
+ innerProfiles: z25.array(ProfileHandle).optional(),
1068
+ extrudeHeight: z25.number(),
1069
+ position: Vec3Handle
1070
+ });
1071
+ var PluginSpaceCreateFromProfileResult = z25.object({
1072
+ spaceId: z25.string()
1073
+ });
1074
+ var PluginSpaceUpdateGeometryFromProfileArgs = z25.object({
1075
+ spaceId: z25.string(),
1076
+ profile: ProfileHandle,
1077
+ extrudeHeight: z25.number()
1078
+ });
1079
+ var PluginSpaceUpdateGeometryFromProfileResult = z25.object({
1080
+ spaceId: z25.string()
1081
+ });
1082
+ var PluginSpaceGetProperty = z25.enum([
1083
+ // Basic
1084
+ "id",
1085
+ "type",
1086
+ "room_type",
1087
+ "name",
1088
+ // Derived from parametric data
1089
+ "area",
1090
+ "breadth",
1091
+ "depth",
1092
+ "height",
1093
+ "massType",
1094
+ "spaceType",
1095
+ "areaClass",
1096
+ "storey",
1097
+ "departmentId",
1098
+ "departmentName",
1099
+ "departmentColor",
1100
+ // Derived from mesh
1101
+ "position",
1102
+ "absolutePosition",
1103
+ "rotation",
1104
+ "rotationQuaternion",
1105
+ // Derived from brep
1106
+ "planPoints",
1107
+ "profile",
1108
+ "innerProfiles",
1109
+ "innerPlanPoints",
1110
+ // Derived from adjacency manager
1111
+ "adjacency"
1112
+ ]);
1113
+ var PluginSpaceGetArgs = z25.object({
1114
+ spaceId: z25.string(),
1115
+ properties: z25.array(PluginSpaceGetProperty)
1116
+ });
1117
+ var PluginSpaceType = z25.enum([
1118
+ "Room",
1119
+ "Program Block",
1120
+ "Balcony",
1121
+ "Road",
1122
+ "Garden",
1123
+ "Deck",
1124
+ "Pool",
1125
+ "Walkway",
1126
+ "Envelope",
1127
+ "Parking"
1128
+ ]);
1129
+ var PluginAreaClass = z25.enum(["NET", "GROSS", "EXCLUDED"]);
1130
+ var PluginSpaceGetResult = z25.object({
1131
+ // Basic
1132
+ id: z25.string(),
1133
+ type: z25.string(),
1134
+ room_type: z25.string(),
1135
+ name: z25.string(),
1136
+ // Derived from parametric data
1137
+ area: z25.number(),
1138
+ breadth: z25.number(),
1139
+ depth: z25.number(),
1140
+ height: z25.number(),
1141
+ massType: z25.string().nullable(),
1142
+ spaceType: PluginSpaceType.nullable(),
1143
+ areaClass: PluginAreaClass,
1144
+ storey: z25.number().nullable(),
1145
+ departmentId: z25.string().nullable(),
1146
+ departmentName: z25.string(),
1147
+ departmentColor: z25.string(),
1148
+ // Derived from mesh
1149
+ position: Vec3Components,
1150
+ absolutePosition: Vec3Components,
1151
+ rotation: Vec3Components,
1152
+ rotationQuaternion: QuatComponents.nullable(),
1153
+ // Derived from brep
1154
+ planPoints: z25.array(Vec3Components),
1155
+ profile: z25.array(CurveHandle),
1156
+ innerProfiles: z25.array(z25.array(CurveHandle)),
1157
+ innerPlanPoints: z25.array(z25.array(Vec3Components)),
1158
+ // Derived from adjacency manager.
1159
+ // value: 2 = Direct (required), 1 = Indirect or physical contact, -1 = Restricted;
1160
+ // 0 (no relationship) entries are filtered out. Empty array when adjacency has
1161
+ // never been computed — run program.adjacency.compute() first for fresh data.
1162
+ adjacency: z25.array(z25.object({
1163
+ spaceId: z25.string(),
1164
+ value: z25.number()
1165
+ }))
1166
+ }).partial();
1167
+ var PluginSpaceGetAllResult = z25.object({
1168
+ spacesIds: z25.array(z25.string())
1169
+ });
1170
+ var PluginSpaceDeleteArgs = z25.object({
1171
+ spaceId: z25.string()
1172
+ });
1173
+ var PluginMassType = z25.enum([
1174
+ "Plinth",
1175
+ "Void",
1176
+ "Pergola",
1177
+ "Furniture",
1178
+ "Facade element",
1179
+ "Generic mass",
1180
+ "Room",
1181
+ "Department",
1182
+ "Building",
1183
+ "Revit Import",
1184
+ "Mass",
1185
+ "Site"
1186
+ ]);
1187
+ var PluginWellKnownDepartmentId = z25.enum([
1188
+ "DEFAULT",
1189
+ "SITE",
1190
+ "ENVELOPE",
1191
+ "CORE"
1192
+ ]);
1193
+ var PluginDepartmentId = z25.union([
1194
+ PluginWellKnownDepartmentId,
1195
+ z25.uuid()
1196
+ ]);
1197
+ var PluginSpaceUpdateArgs = z25.object({
1198
+ spaceId: z25.string(),
1199
+ properties: z25.object({
1200
+ room_type: z25.string().optional(),
1201
+ massType: PluginMassType.optional(),
1202
+ spaceType: PluginSpaceType.optional(),
1203
+ areaClass: PluginAreaClass.optional(),
1204
+ departmentId: PluginDepartmentId.optional()
1205
+ })
1206
+ });
1207
+ var PluginSpaceUpdateResult = z25.object({
1208
+ spaceId: z25.string(),
1209
+ room_type: z25.string().optional(),
1210
+ massType: z25.string().optional(),
1211
+ spaceType: z25.string().optional(),
1212
+ areaClass: PluginAreaClass.optional(),
1213
+ departmentId: z25.string().nullable().optional()
1214
+ });
1215
+ var PluginSpaceBulkCreateItem = z25.discriminatedUnion("kind", [
1216
+ z25.object({
1217
+ kind: z25.literal("rectangular"),
1218
+ position: Vec3Handle,
1219
+ dimensions: z25.object({
1220
+ width: z25.number(),
1221
+ height: z25.number(),
1222
+ depth: z25.number()
1223
+ }),
1224
+ room_type: z25.string().optional(),
1225
+ spaceType: PluginSpaceType.optional(),
1226
+ massType: PluginMassType.optional(),
1227
+ departmentId: PluginDepartmentId.optional()
1228
+ }),
1229
+ z25.object({
1230
+ kind: z25.literal("profile"),
1231
+ profile: ProfileHandle,
1232
+ innerProfiles: z25.array(ProfileHandle).optional(),
1233
+ extrudeHeight: z25.number(),
1234
+ position: Vec3Handle,
1235
+ room_type: z25.string().optional(),
1236
+ spaceType: PluginSpaceType.optional(),
1237
+ massType: PluginMassType.optional(),
1238
+ departmentId: PluginDepartmentId.optional()
1239
+ })
1240
+ ]);
1241
+ var PluginSpaceBulkCreateArgs = z25.object({
1242
+ items: z25.array(PluginSpaceBulkCreateItem)
1243
+ });
1244
+ var PluginSpaceBulkCreateResult = z25.object({
1245
+ spaceIds: z25.array(z25.string())
1246
+ });
1247
+ var PluginSpaceBulkUpdateItem = z25.object({
1248
+ spaceId: z25.string(),
1249
+ profile: ProfileHandle.optional(),
1250
+ extrudeHeight: z25.number().optional(),
1251
+ properties: z25.object({
1252
+ room_type: z25.string().optional(),
1253
+ massType: PluginMassType.optional(),
1254
+ spaceType: PluginSpaceType.optional(),
1255
+ areaClass: PluginAreaClass.optional(),
1256
+ departmentId: PluginDepartmentId.optional()
1257
+ }).optional()
1258
+ });
1259
+ var PluginSpaceBulkUpdateArgs = z25.object({
1260
+ items: z25.array(PluginSpaceBulkUpdateItem)
1261
+ });
1262
+ var PluginSpaceBulkUpdateResult = z25.object({
1263
+ spaces: z25.array(PluginSpaceUpdateResult)
1264
+ });
1265
+ var PluginSpaceBulkDeleteArgs = z25.object({
1266
+ spaceIds: z25.array(z25.string())
1267
+ });
1268
+ var PluginSpaceBulkDeleteResult = z25.object({
1269
+ deletedSpaceIds: z25.array(z25.string())
1270
+ });
1271
+
1272
+ // src/api/design/create/index.ts
1273
+ var PluginDesignCreateApi = class {
1274
+ constructor() {
1275
+ }
1276
+ };
1277
+ var PluginReferenceLineStyle = z26.enum(["SOLID", "DASHED", "DOT_DASH"]);
1278
+ var PluginSlabType = z26.enum([
1279
+ "Intermediate Slab",
1280
+ "Basement Slab",
1281
+ "Plinth",
1282
+ "Roof"
1283
+ ]);
1284
+ var PluginStaircasePreset = z26.enum([
1285
+ "straight",
1286
+ "straightWoLanding",
1287
+ "straightFlightWoMidLanding",
1288
+ "dogLegged",
1289
+ "openWell",
1290
+ "lShaped",
1291
+ "3StepLShaped",
1292
+ "square",
1293
+ "singleStep",
1294
+ "plinthLevel",
1295
+ "amphitheatre",
1296
+ "connectingStepsToAmphitheatre",
1297
+ "mezzanineFloorStraight",
1298
+ "mezzanineFloorDogLegged",
1299
+ "mezzanineFloorLShaped",
1300
+ "custom"
1301
+ ]);
1302
+ var PluginDesignCreateSpaceArgs = z26.object({
1303
+ contour: ContourHandle,
1304
+ height: z26.number(),
1305
+ label: z26.string().optional(),
1306
+ position: Vec3Handle.optional(),
1307
+ spaceType: PluginSpaceType.optional(),
1308
+ massType: PluginMassType.optional(),
1309
+ departmentId: PluginDepartmentId.optional()
1310
+ });
1311
+ var PluginDesignCreateMassArgs = z26.object({
1312
+ contour: ContourHandle,
1313
+ height: z26.number(),
1314
+ label: z26.string().optional(),
1315
+ position: Vec3Handle.optional(),
1316
+ massType: PluginMassType.optional()
1317
+ });
1318
+ var PluginDesignCreateSlabArgs = z26.object({
1319
+ contour: ContourHandle,
1320
+ thickness: z26.number(),
1321
+ direction: z26.enum(["up", "down"]).optional(),
1322
+ slabType: PluginSlabType.optional()
1323
+ });
1324
+ var PluginDesignCreateFloorArgs = z26.object({
1325
+ contour: ContourHandle,
1326
+ thickness: z26.number(),
1327
+ position: Vec3Handle.optional()
1328
+ });
1329
+ var PluginDesignCreateRoofArgs = z26.object({
1330
+ contour: ContourHandle,
1331
+ thickness: z26.number()
1332
+ });
1333
+ var PluginDesignCreateCeilingArgs = z26.object({
1334
+ contour: ContourHandle,
1335
+ thickness: z26.number(),
1336
+ heightFromFloor: z26.number().optional()
1337
+ });
1338
+ var PluginDesignCreateColumnArgs = z26.object({
1339
+ position: Vec3Handle,
1340
+ crossSection: ContourHandle,
1341
+ height: z26.number(),
1342
+ directionUp: Vec3Handle.optional()
1343
+ });
1344
+ var PluginDesignCreateBeamArgs = z26.object({
1345
+ section: ContourHandle,
1346
+ length: z26.number(),
1347
+ direction: Vec3Handle.optional()
1348
+ });
1349
+ var PluginDesignCreateWallsArgs = z26.object({
1350
+ profile: ProfileHandle,
1351
+ height: z26.number().optional(),
1352
+ thickness: z26.number().optional()
1353
+ });
1354
+ var PluginDesignCreateStaircaseArgs = z26.object({
1355
+ preset: PluginStaircasePreset,
1356
+ position: Vec3Handle,
1357
+ label: z26.string().optional(),
1358
+ structureId: z26.string().optional(),
1359
+ level: z26.string().optional()
1360
+ });
1361
+ var PluginDesignCreateFurnitureArgs = z26.object({
1362
+ catalogId: z26.string().min(1),
1363
+ position: Vec3Handle,
1364
+ label: z26.string().optional(),
1365
+ createNewSourceMesh: z26.boolean().optional()
1366
+ });
1367
+ var PluginDesignCreateReferenceLinesArgs = z26.object({
1368
+ profile: ProfileHandle,
1369
+ color: z26.string().optional(),
1370
+ thickness: z26.number().optional(),
1371
+ style: PluginReferenceLineStyle.optional(),
1372
+ gridTag: z26.string().optional()
1373
+ });
1374
+ var PluginCopyMode = z26.enum(["instance", "unique"]);
1375
+ var PluginDesignCreateCopyArgs = z26.object({
1376
+ components: z26.array(ComponentHandle).min(1),
1377
+ displacement: Vec3Handle,
1378
+ count: z26.number().int().positive().optional(),
1379
+ mode: PluginCopyMode.optional()
1380
+ });
1381
+ var PluginCreateSpaceItem = z26.object({
1382
+ contour: ContourHandle,
1383
+ height: z26.number(),
1384
+ label: z26.string().optional(),
1385
+ position: Vec3Handle.optional(),
1386
+ spaceType: PluginSpaceType.optional(),
1387
+ massType: PluginMassType.optional(),
1388
+ departmentId: PluginDepartmentId.optional()
1389
+ });
1390
+
1391
+ // src/api/design/query/index.ts
1392
+ import * as z29 from "zod";
1393
+
1394
+ // src/api/design/query/geometry/index.ts
1395
+ import * as z27 from "zod";
1396
+ var PluginDesignQueryGeometryApi = class {
1397
+ constructor() {
1398
+ }
1399
+ };
1400
+ var PluginDesignQueryGeometryGetBrepArgs = z27.object({
1401
+ component: ComponentHandle
1402
+ });
1403
+ var PluginDesignQueryGeometryGetBottomContourArgs = z27.object({
1404
+ component: ComponentHandle
1405
+ });
1406
+ var PluginDesignQueryGeometryGetCenterlineArgs = z27.object({
1407
+ component: ComponentHandle
1408
+ });
1409
+
1410
+ // src/api/design/query/spaces.ts
1411
+ import * as z28 from "zod";
1412
+ var PluginDesignQuerySpacesApi = class {
1413
+ constructor() {
1414
+ }
1415
+ };
1416
+ var PluginDesignQueryGetFootprintArgs = z28.object({
1417
+ space: ComponentHandle
1418
+ });
1419
+ var PluginDesignQuerySpacesGetProperty = PluginSpaceGetProperty.exclude(["adjacency"]);
1420
+ var PluginDesignQuerySpacesGetArgs = z28.object({
1421
+ space: ComponentHandle,
1422
+ properties: z28.array(PluginDesignQuerySpacesGetProperty)
1423
+ });
1424
+ var PluginDesignQuerySpacesGetResult = PluginSpaceGetResult.omit({
1425
+ adjacency: true
1426
+ });
1427
+
1428
+ // src/api/design/query/index.ts
1429
+ var PluginEntityType = z29.enum([
1430
+ "wall",
1431
+ "space",
1432
+ "mass",
1433
+ "door",
1434
+ "window",
1435
+ "floor",
1436
+ "slab",
1437
+ "roof",
1438
+ "column",
1439
+ "beam",
1440
+ "ceiling",
1441
+ "staircase",
1442
+ "furniture",
1443
+ "referenceLine",
1444
+ "curtainWall",
1445
+ "mullion",
1446
+ "panel"
1447
+ ]);
1448
+ var PluginEntityFilter = z29.object({
1449
+ types: z29.array(PluginEntityType).optional(),
1450
+ storeys: z29.array(z29.number()).optional(),
1451
+ buildingIds: z29.array(z29.string()).optional(),
1452
+ structureIds: z29.array(z29.string()).optional(),
1453
+ label: z29.string().optional(),
1454
+ massTypes: z29.array(PluginMassType).optional(),
1455
+ spaceTypes: z29.array(PluginSpaceType).optional(),
1456
+ departmentId: PluginDepartmentId.optional(),
1457
+ isSelected: z29.boolean().optional(),
1458
+ isLocked: z29.boolean().optional(),
1459
+ isHidden: z29.boolean().optional(),
1460
+ within: BBoxComponents.optional(),
1461
+ overlaps: ComponentHandle.optional(),
1462
+ ids: z29.array(ComponentHandle).optional()
1463
+ });
1464
+ var PluginDesignQueryListByTypeArgs = PluginEntityFilter.extend({
1465
+ type: PluginEntityType
1466
+ });
1467
+ var PluginDesignQueryComponentArgs = z29.object({
1468
+ component: ComponentHandle
1469
+ });
1470
+ var PluginDesignQueryIdArgs = z29.object({
1471
+ id: ComponentHandle
1472
+ });
1473
+ var PluginDesignQueryComponentsArgs = z29.object({
1474
+ components: z29.array(ComponentHandle)
1475
+ });
1476
+ var PluginEntityProperties = z29.object({
1477
+ id: z29.string(),
1478
+ type: PluginEntityType,
1479
+ label: z29.string(),
1480
+ storey: z29.number(),
1481
+ buildingId: z29.string(),
1482
+ structureId: z29.string(),
1483
+ massType: z29.string(),
1484
+ spaceType: PluginSpaceType,
1485
+ areaClass: PluginAreaClass,
1486
+ departmentId: z29.string(),
1487
+ isLocked: z29.boolean(),
1488
+ isHidden: z29.boolean(),
1489
+ isSelected: z29.boolean(),
1490
+ boundingBox: BBoxComponents,
1491
+ adjacency: z29.array(z29.object({ spaceId: z29.string(), value: z29.number() }))
1492
+ }).partial();
1493
+ var PluginEntityMeasurements = z29.object({
1494
+ area: z29.number().optional(),
1495
+ volume: z29.number().optional(),
1496
+ length: z29.number().optional(),
1497
+ boundingBox: BBoxComponents
1498
+ });
1499
+ var PluginDesignQueryApi = class {
1500
+ constructor() {
1501
+ }
1502
+ };
1503
+
1504
+ // src/api/design/selection/index.ts
1505
+ import * as z30 from "zod";
1506
+ var PluginDesignSelectionApi = class {
1507
+ constructor() {
1508
+ }
1509
+ };
1510
+ var PluginDesignSelectionSetArgs = z30.object({
1511
+ components: z30.array(ComponentHandle)
1512
+ });
1513
+ var PluginDesignSelectionAddArgs = PluginDesignSelectionSetArgs;
1514
+ var PluginDesignSelectionRemoveArgs = PluginDesignSelectionSetArgs;
1515
+
1516
+ // src/api/design/doors/index.ts
1517
+ import * as z31 from "zod";
1518
+ var PluginDesignDoorsApi = class {
1519
+ constructor() {
1520
+ }
1521
+ };
1522
+ var PluginDesignDoorArgs = z31.object({
1523
+ door: ComponentHandle
1524
+ });
1525
+ var PluginMirrorAxis = z31.enum(["x", "y", "z"]);
1526
+ var PluginDesignDoorMirrorArgs = z31.object({
1527
+ door: ComponentHandle,
1528
+ axis: PluginMirrorAxis.optional()
1529
+ });
1530
+ var PluginDesignDoorSetWidthArgs = z31.object({
1531
+ doors: z31.array(ComponentHandle),
1532
+ width: z31.number()
1533
+ });
1534
+ var PluginDesignDoorSetHeightArgs = z31.object({
1535
+ doors: z31.array(ComponentHandle),
1536
+ height: z31.number()
1537
+ });
1538
+
1539
+ // src/api/design/windows/index.ts
1540
+ import * as z32 from "zod";
1541
+ var PluginDesignWindowsApi = class {
1542
+ constructor() {
1543
+ }
1544
+ };
1545
+ var PluginDesignWindowArgs = z32.object({
1546
+ window: ComponentHandle
1547
+ });
1548
+ var PluginWindowDimensions = z32.object({
1549
+ width: z32.number(),
1550
+ height: z32.number(),
1551
+ thickness: z32.number()
1552
+ });
1553
+ var PluginDesignWindowSetWidthArgs = z32.object({
1554
+ window: ComponentHandle,
1555
+ width: z32.number()
1556
+ });
1557
+ var PluginDesignWindowSetHeightArgs = z32.object({
1558
+ window: ComponentHandle,
1559
+ height: z32.number()
1560
+ });
1561
+
1562
+ // src/api/design/furniture/index.ts
1563
+ import * as z33 from "zod";
1564
+ var PluginDesignFurnitureApi = class {
1565
+ constructor() {
1566
+ }
1567
+ };
1568
+ var PluginFurnitureCatalogItem = z33.object({
1569
+ id: z33.string(),
1570
+ name: z33.string(),
1571
+ source: z33.enum(["team", "general"]),
1572
+ subType: z33.string().optional(),
1573
+ cost: z33.number().optional(),
1574
+ familyName: z33.string().optional()
1575
+ });
1576
+ var PluginDesignFurnitureListCatalogArgs = z33.object({
1577
+ source: z33.enum(["team", "general"]).optional()
1578
+ });
1579
+ var PluginDesignFurnitureGetCatalogItemArgs = z33.object({
1580
+ id: z33.string()
1581
+ });
1582
+ var PluginDesignFurnitureExistsArgs = PluginDesignFurnitureGetCatalogItemArgs;
1583
+
1584
+ // src/api/design/materials/index.ts
1585
+ import * as z34 from "zod";
1586
+ var PluginDesignMaterialsApi = class {
1587
+ constructor() {
1588
+ }
1589
+ };
1590
+ var PluginMaterialInfo = z34.object({
1591
+ name: z34.string(),
1592
+ id: z34.string(),
1593
+ colorHex: z34.string(),
1594
+ alpha: z34.number(),
1595
+ materialType: z34.string().optional(),
1596
+ textureUrl: z34.string().optional()
1597
+ });
1598
+ var PluginMaterialSpec = z34.object({
1599
+ name: z34.string().optional(),
1600
+ color: z34.string().optional(),
1601
+ textureUrl: z34.string().optional(),
1602
+ alpha: z34.number().optional(),
1603
+ materialType: z34.string().optional()
1604
+ });
1605
+ var PluginMaterialResult = z34.object({ count: z34.number() });
1606
+ var PluginDesignMaterialsListArgs = z34.object({
1607
+ scope: z34.enum(["project", "preset"]).optional()
1608
+ });
1609
+ var PluginDesignMaterialsGetInfoArgs = z34.object({ material: MaterialHandle });
1610
+ var PluginDesignMaterialsComponentArgs = z34.object({ component: ComponentHandle });
1611
+ var PluginDesignMaterialsApplyArgs = z34.object({
1612
+ targets: z34.array(ComponentHandle),
1613
+ material: z34.union([MaterialHandle, PluginMaterialSpec]),
1614
+ save: z34.boolean().optional()
1615
+ });
1616
+ var PluginDesignMaterialsResetArgs = z34.object({
1617
+ components: z34.array(ComponentHandle),
1618
+ save: z34.boolean().optional()
1619
+ });
1620
+ var PluginDesignMaterialsCreateArgs = z34.object({ spec: PluginMaterialSpec });
1621
+
1622
+ // src/api/design/lock.ts
1623
+ import * as z35 from "zod";
1624
+ var PluginDesignChangeResult = z35.object({
1625
+ affected: z35.array(ComponentHandle)
1626
+ });
1627
+ var PluginDesignLockArgs = z35.object({
1628
+ components: z35.array(ComponentHandle)
1629
+ });
1630
+ var PluginDesignUnlockArgs = PluginDesignLockArgs;
1631
+ var PluginDesignIsLockedArgs = z35.object({
1632
+ component: ComponentHandle,
1633
+ includeInherited: z35.boolean().optional()
1634
+ });
1635
+
1636
+ // src/api/design/erase/index.ts
1637
+ import * as z36 from "zod";
1638
+ var EraseStrategy = z36.enum(["DirectDelete", "DirectUnion", "SplitAndUnion"]);
1639
+ var DEFAULT_ERASE_STRATEGIES = ["DirectDelete", "DirectUnion"];
1640
+ var ErasableEdgeRef = z36.object({
1641
+ /** Opaque bottom-graph edge id (engine form `"e-<n>"`). Do not mutate. Pass verbatim to {@linkcode PluginDesignEraseApi.edge}. */
1642
+ id: z36.string().min(1),
1643
+ /** What erasing this edge would do: `DirectDelete` drops a mass; `DirectUnion` merges two adjacent masses. */
1644
+ strategy: EraseStrategy,
1645
+ /** Bottom-graph edge weight: `1` = external boundary edge, `>=2` = internal edge shared between components. */
1646
+ edgeWeight: z36.number(),
1647
+ /** The components this edge is incident to — one for external (DirectDelete), two for internal (DirectUnion). */
1648
+ components: z36.array(ComponentHandle),
1649
+ /** A representative point on the edge (its head endpoint). Diagnostic only. */
1650
+ snapPoint: Vec3Handle
1651
+ });
1652
+ var PluginDesignListErasableEdgesArgs = z36.object({
1653
+ components: z36.array(ComponentHandle).optional(),
1654
+ strategies: z36.array(EraseStrategy).optional()
1655
+ });
1656
+ var PluginDesignEraseEdgeArgs = z36.object({
1657
+ edge: ErasableEdgeRef
1658
+ });
1659
+ var PluginDesignEraseEdgeResult = z36.object({ ok: z36.literal(true) });
1660
+ var PluginDesignEraseApi = class {
1661
+ constructor() {
1662
+ }
1663
+ };
1664
+
1665
+ // src/api/design/delete/index.ts
1666
+ import * as z37 from "zod";
1667
+ var PluginDesignDeleteEntitiesArgs = z37.object({
1668
+ components: z37.array(ComponentHandle).min(1)
1669
+ });
1670
+ var PluginDesignDeleteApi = class {
1671
+ constructor() {
1672
+ }
1673
+ };
1674
+
1675
+ // src/api/design/shared.ts
1676
+ import * as z38 from "zod";
1677
+ var BooleanOutcome = z38.object({
1678
+ created: z38.array(ComponentHandle),
1679
+ deleted: z38.array(ComponentHandle)
1680
+ });
1681
+ var OffsetSplitOutcome = z38.object({
1682
+ createdIds: z38.array(ComponentHandle),
1683
+ deletedIds: z38.array(ComponentHandle),
1684
+ offsetValue: z38.number()
1685
+ });
1686
+
1687
+ // src/api/design/boolean/index.ts
1688
+ import * as z39 from "zod";
1689
+ var PluginDesignBooleanApi = class {
1690
+ constructor() {
1691
+ }
1692
+ };
1693
+ var BooleanOptions = z39.object({
1694
+ offset: Vec3Handle.optional()
1695
+ });
1696
+ var PluginDesignBooleanUnionArgs = z39.object({
1697
+ components: z39.array(ComponentHandle).min(2),
1698
+ options: BooleanOptions.optional()
1699
+ });
1700
+ var PluginDesignBooleanSubtractArgs = z39.object({
1701
+ target: ComponentHandle,
1702
+ tools: z39.array(ComponentHandle).min(1),
1703
+ options: BooleanOptions.optional()
1704
+ });
1705
+ var PluginDesignBooleanIntersectArgs = z39.object({
1706
+ components: z39.array(ComponentHandle).length(2),
1707
+ options: BooleanOptions.optional()
1708
+ });
1709
+
1710
+ // src/api/design/transform/index.ts
1711
+ import * as z40 from "zod";
1712
+ var PluginDesignTransformApi = class {
1713
+ constructor() {
1714
+ }
1715
+ };
1716
+ var PluginDesignMoveArgs = z40.object({
1717
+ components: z40.array(ComponentHandle).min(1),
1718
+ displacement: Vec3Handle,
1719
+ is2D: z40.boolean().optional(),
1720
+ trackParentChange: z40.boolean().optional()
1721
+ });
1722
+ var PluginDesignRotateArgs = z40.object({
1723
+ components: z40.array(ComponentHandle).min(1),
1724
+ angleInDegrees: z40.number(),
1725
+ axis: Vec3Handle.optional(),
1726
+ is2D: z40.boolean().optional()
1727
+ });
1728
+
1729
+ // src/api/design/edit/index.ts
1730
+ import * as z41 from "zod";
1731
+ var PluginDesignEditApi = class {
1732
+ constructor() {
1733
+ }
1734
+ };
1735
+ var PluginDesignOffsetSplitArgs = z41.object({
1736
+ component: ComponentHandle,
1737
+ offsetDistance: z41.number(),
1738
+ profilePickPoint: Vec3Handle.optional()
1739
+ });
1740
+
1741
+ // src/api/design/update/index.ts
1742
+ import * as z42 from "zod";
1743
+ var PluginSpacePropertyUpdates = z42.object({
1744
+ room_type: z42.string().optional(),
1745
+ massType: PluginMassType.optional(),
1746
+ spaceType: PluginSpaceType.optional(),
1747
+ areaClass: PluginAreaClass.optional(),
1748
+ departmentId: PluginDepartmentId.optional()
1749
+ });
1750
+ var PluginSpaceGeometryUpdate = z42.object({
1751
+ profile: ProfileHandle,
1752
+ extrudeHeight: z42.number()
1753
+ });
1754
+ var PluginUpdateSpaceItem = z42.object({
1755
+ space: ComponentHandle,
1756
+ properties: PluginSpacePropertyUpdates.optional(),
1757
+ geometry: PluginSpaceGeometryUpdate.optional()
1758
+ });
1759
+ var PluginDesignUpdateApi = class {
1760
+ constructor() {
1761
+ }
1762
+ };
1763
+
1764
+ // src/api/design/index.ts
1765
+ var PluginDesignApi = class {
1766
+ constructor() {
1767
+ }
1768
+ };
1769
+
1770
+ // src/api/entity/buildableEnvelope.ts
1771
+ import * as z43 from "zod";
1772
+ var PluginBuildableEnvelopeApi = class {
1773
+ constructor() {
1774
+ }
1775
+ };
1776
+ var PluginBuildableEnvelopePolygonVertex = z43.union([
1777
+ z43.object({ x: z43.number().finite(), z: z43.number().finite() }).strict(),
1778
+ z43.tuple([z43.number().finite(), z43.number().finite()])
1779
+ ]);
1780
+ var PluginBuildableEnvelopeVerticalCap = z43.discriminatedUnion("kind", [
1781
+ z43.object({
1782
+ kind: z43.literal("max_height"),
1783
+ maxHeight: z43.number().finite().positive()
1784
+ }).strict(),
1785
+ z43.object({
1786
+ kind: z43.literal("max_floors"),
1787
+ maxFloors: z43.number().finite().int().positive()
1788
+ }).strict()
1789
+ ]);
1790
+ var PluginBuildableEnvelopeSetbackTier = z43.object({
1791
+ aboveHeight: z43.number().finite().nonnegative(),
1792
+ front: z43.number().finite().nonnegative(),
1793
+ side: z43.number().finite().nonnegative(),
1794
+ rear: z43.number().finite().nonnegative()
1795
+ }).strict();
1796
+ function refineSetbackTiers(args, ctx) {
1797
+ const tiers = args.setbacks;
1798
+ if (tiers.length === 0) return;
1799
+ if (tiers[0].aboveHeight !== 0) {
1800
+ ctx.addIssue({
1801
+ code: z43.ZodIssueCode.custom,
1802
+ path: ["setbacks", 0, "aboveHeight"],
1803
+ message: "Ground tier required: setbacks[0].aboveHeight must be 0."
1804
+ });
1805
+ }
1806
+ for (let i = 1; i < tiers.length; i++) {
1807
+ if (!(tiers[i].aboveHeight > tiers[i - 1].aboveHeight)) {
1808
+ ctx.addIssue({
1809
+ code: z43.ZodIssueCode.custom,
1810
+ path: ["setbacks", i, "aboveHeight"],
1811
+ message: "Setback tiers must be ordered by strictly increasing aboveHeight."
1812
+ });
1813
+ }
1814
+ }
1815
+ }
1816
+ var PluginBuildableEnvelopeCreateArgs = z43.object({
1817
+ sitePolygon: z43.array(PluginBuildableEnvelopePolygonVertex).min(3),
1818
+ lengthUnit: z43.union([z43.literal("ft"), z43.literal("m")]),
1819
+ setbacks: z43.array(PluginBuildableEnvelopeSetbackTier).min(1),
1820
+ verticalCap: PluginBuildableEnvelopeVerticalCap,
1821
+ floorToFloor: z43.number().finite().positive(),
1822
+ farRatio: z43.number().finite().positive().optional(),
1823
+ lotCoverageMaxPct: z43.number().finite().min(0).max(100).optional()
1824
+ }).strict().superRefine(refineSetbackTiers);
1825
+ var PluginBuildableEnvelopeCreateResult = z43.object({
1826
+ buildableEnvelopeId: z43.string().min(1)
1827
+ }).strict();
1828
+ var PluginBuildableEnvelopeUpdateArgs = z43.object({
1829
+ buildableEnvelopeId: z43.string().min(1),
1830
+ sitePolygon: z43.array(PluginBuildableEnvelopePolygonVertex).min(3),
1831
+ lengthUnit: z43.union([z43.literal("ft"), z43.literal("m")]),
1832
+ setbacks: z43.array(PluginBuildableEnvelopeSetbackTier).min(1),
1833
+ verticalCap: PluginBuildableEnvelopeVerticalCap,
1834
+ floorToFloor: z43.number().finite().positive(),
1835
+ farRatio: z43.number().finite().positive().optional(),
1836
+ lotCoverageMaxPct: z43.number().finite().min(0).max(100).optional()
1837
+ }).strict().superRefine(refineSetbackTiers);
1838
+ var PluginBuildableEnvelopeUpdateResult = z43.object({
1839
+ buildableEnvelopeId: z43.string().min(1)
1840
+ }).strict();
1841
+
1842
+ // src/api/entity/referenceLine.ts
1843
+ import * as z44 from "zod";
1844
+ var PluginReferenceLineApi = class {
1845
+ constructor() {
1846
+ }
1847
+ };
1848
+ var PluginReferenceLineCreateMultiArgs = z44.object({
1849
+ profile: ProfileHandle
1850
+ });
1851
+ var PluginReferenceLineCreateMultiResult = z44.object({
1852
+ referenceLineIds: z44.array(z44.string())
1853
+ });
1854
+ var PluginReferenceLineGetProperty = z44.enum([
1855
+ "curve"
1856
+ ]);
1857
+ var PluginReferenceLineGetArgs = z44.object({
1858
+ referenceLineId: z44.string(),
1859
+ properties: z44.array(PluginReferenceLineGetProperty)
1860
+ });
1861
+ var PluginReferenceLineGetResult = z44.object({
1862
+ curve: CurveHandle
1863
+ }).partial();
1864
+ var PluginReferenceLineGetAllResult = z44.object({
1865
+ referenceLineIds: z44.array(z44.string())
1866
+ });
1867
+ var PluginReferenceLineDeleteArgs = z44.object({
1868
+ referenceLineId: z44.string()
1869
+ });
1870
+
1871
+ // src/api/entity/story.ts
1872
+ import * as z45 from "zod";
1873
+ var PluginStoryApi = class {
1874
+ constructor() {
1875
+ }
1876
+ };
1877
+ var PluginStoryGetProperty = z45.enum([
1878
+ "value",
1879
+ "id",
1880
+ "name",
1881
+ "height",
1882
+ "base",
1883
+ "hidden",
1884
+ "spacesCount",
1885
+ "totalArea"
1886
+ ]);
1887
+ var PluginStoryGetArgs = z45.object({
1888
+ storyValue: z45.number().int(),
1889
+ properties: z45.array(PluginStoryGetProperty)
1890
+ });
1891
+ var PluginStoryGetResult = z45.object({
1892
+ value: z45.number(),
1893
+ id: z45.string(),
1894
+ name: z45.string(),
1895
+ height: z45.number(),
1896
+ base: z45.number(),
1897
+ hidden: z45.boolean(),
1898
+ spacesCount: z45.number(),
1899
+ totalArea: z45.number()
1900
+ }).partial();
1901
+ var PluginStoryGetAllResult = z45.object({
1902
+ stories: z45.array(
1903
+ z45.object({
1904
+ value: z45.number(),
1905
+ id: z45.string(),
1906
+ name: z45.string()
1907
+ })
1908
+ )
1909
+ });
1910
+ var PluginStoryCreateArgs = z45.object({
1911
+ storyValue: z45.number().int(),
1912
+ height: z45.number().optional()
1913
+ });
1914
+ var PluginStoryCreateResult = z45.object({
1915
+ storyId: z45.string(),
1916
+ storyValue: z45.number()
1917
+ });
1918
+ var PluginStoryUpdateArgs = z45.object({
1919
+ storyValue: z45.number().int(),
1920
+ height: z45.number()
1921
+ });
1922
+ var PluginStoryUpdateResult = z45.object({
1923
+ storyValue: z45.number(),
1924
+ height: z45.number()
1925
+ });
1926
+
1927
+ // src/api/entity/index.ts
1928
+ var PluginEntityApi = class {
1929
+ constructor() {
1930
+ }
1931
+ };
1932
+
1933
+ // src/api/program/departments.ts
1934
+ import * as z47 from "zod";
1935
+
1936
+ // src/api/program/metrics.ts
1937
+ import * as z46 from "zod";
1938
+ var PluginProgramMetricsApi = class {
1939
+ constructor() {
1940
+ }
1941
+ };
1942
+ var PluginAreaUnit = z46.enum(["ft2", "m2"]);
1943
+ var PluginProgramDepartmentMetric = z46.object({
1944
+ departmentId: z46.string(),
1945
+ name: z46.string(),
1946
+ targetArea: z46.number().nullable(),
1947
+ allocatedArea: z46.number()
1948
+ });
1949
+ var PluginProgramMetricsSummary = z46.object({
1950
+ units: PluginAreaUnit,
1951
+ totalTargetArea: z46.number(),
1952
+ totalAllocatedArea: z46.number(),
1953
+ unassignedArea: z46.number(),
1954
+ departments: z46.array(PluginProgramDepartmentMetric)
1955
+ }).refine(
1956
+ (s) => {
1957
+ const summed = s.unassignedArea + s.departments.reduce((acc, d) => acc + d.allocatedArea, 0);
1958
+ const tolerance = Math.max(0.01, Math.abs(s.totalAllocatedArea) * 1e-4);
1959
+ return Math.abs(s.totalAllocatedArea - summed) <= tolerance;
1960
+ },
1961
+ {
1962
+ message: "totalAllocatedArea must equal unassignedArea + the sum of departments[].allocatedArea"
1963
+ }
1964
+ );
1965
+
1966
+ // src/api/program/departments.ts
1967
+ var PluginProgramDepartmentsApi = class {
1968
+ constructor() {
1969
+ }
1970
+ };
1971
+ var PluginProgramDepartment = z47.object({
1972
+ id: z47.string(),
1973
+ name: z47.string(),
1974
+ color: z47.string(),
1975
+ targetArea: z47.number().nullable()
1976
+ });
1977
+ var PluginProgramDepartmentsListResult = z47.object({
1978
+ units: PluginAreaUnit,
1979
+ departments: z47.array(PluginProgramDepartment)
1980
+ });
1981
+ var PluginProgramDepartmentsGetArgs = z47.object({
1982
+ departmentId: z47.string()
1983
+ });
1984
+ var PluginProgramDepartmentsGetResult = PluginProgramDepartment.extend(
1985
+ {
1986
+ units: PluginAreaUnit
1987
+ }
1988
+ ).nullable();
1989
+ var PluginProgramDepartmentRecord = PluginProgramDepartment.extend({
1990
+ units: PluginAreaUnit
1991
+ });
1992
+ var PluginProgramDepartmentsCreateArgs = z47.object({
1993
+ name: z47.string(),
1994
+ color: z47.string()
1995
+ });
1996
+ var PluginProgramDepartmentsCreateResult = z47.object({
1997
+ departmentId: z47.string()
1998
+ });
1999
+ var PluginProgramDepartmentsUpdateArgs = z47.object({
2000
+ departmentId: z47.string(),
2001
+ name: z47.string().optional(),
2002
+ color: z47.string().optional()
2003
+ });
2004
+ var PluginProgramDepartmentsUpdateResult = PluginProgramDepartmentRecord;
2005
+ var PluginProgramDepartmentsAssignArgs = z47.object({
2006
+ departmentId: z47.string(),
2007
+ spaceIds: z47.array(ComponentHandle).min(1)
2008
+ });
2009
+ var PluginProgramDepartmentsAssignResult = z47.object({
2010
+ departmentId: z47.string(),
2011
+ spaceIds: z47.array(ComponentHandle)
2012
+ });
2013
+ var PluginProgramDepartmentsUnassignArgs = z47.object({
2014
+ spaceIds: z47.array(ComponentHandle).min(1)
2015
+ });
2016
+ var PluginProgramDepartmentsUnassignResult = z47.object({
2017
+ spaceIds: z47.array(ComponentHandle)
2018
+ });
2019
+ var PluginProgramDepartmentsSetTargetAreaArgs = z47.object({
2020
+ departmentId: z47.string(),
2021
+ targetArea: z47.number(),
2022
+ units: PluginAreaUnit.optional()
2023
+ });
2024
+ var PluginProgramDepartmentsSetTargetAreaResult = PluginProgramDepartmentRecord;
2025
+ var PluginProgramDepartmentsDeleteArgs = z47.object({
2026
+ departmentId: z47.string()
2027
+ });
2028
+ var PluginProgramDepartmentsDeleteResult = z47.object({
2029
+ departmentId: z47.string(),
2030
+ reassignedSpaceIds: z47.array(ComponentHandle)
2031
+ });
2032
+
2033
+ // src/api/program/adjacency.ts
2034
+ import * as z48 from "zod";
2035
+ var PluginProgramAdjacencyApi = class {
2036
+ constructor() {
2037
+ }
2038
+ };
2039
+ var PluginAdjacencyLevel = z48.enum(["department", "space"]);
2040
+ var PluginProgramAdjacencyGetMatrixArgs = z48.object({
2041
+ level: PluginAdjacencyLevel,
2042
+ ids: z48.array(z48.string()).optional()
1000
2043
  });
1001
- var PluginAIInspirationExtractRecipeFromShapeArgs = z7.object({
1002
- shapeId: z7.string().min(1)
2044
+ var PluginProgramAdjacencyGetMatrixResult = z48.object({
2045
+ ids: z48.array(z48.string()),
2046
+ departmentIds: z48.array(z48.string().nullable()).optional(),
2047
+ matrix: z48.array(z48.array(z48.number()))
1003
2048
  });
1004
- var PluginAIInspirationRunRecipeArgs = z7.object({
1005
- recipeId: z7.string().optional(),
1006
- recipe: PluginAIInspirationRecipe.optional(),
1007
- slotShapeIds: z7.record(z7.string(), z7.string()),
1008
- runMode: PluginAIInspirationRunMode.optional()
2049
+ var PluginProgramAdjacencyComputeResult = z48.object({
2050
+ success: z48.boolean(),
2051
+ error: z48.string().optional()
1009
2052
  });
1010
- var PluginDocumentationAIInspirationApi = class {
2053
+
2054
+ // src/api/program/layout.ts
2055
+ import * as z49 from "zod";
2056
+ var PluginProgramLayoutApi = class {
1011
2057
  constructor() {
1012
2058
  }
1013
2059
  };
2060
+ var PluginProgramLayoutRunResult = z49.object({
2061
+ success: z49.boolean(),
2062
+ error: z49.string().optional()
2063
+ });
1014
2064
 
1015
- // src/api/documentation/index.ts
1016
- var PluginDocumentationApi = class {
2065
+ // src/api/program/spreadsheet.ts
2066
+ import * as z50 from "zod";
2067
+ var PluginProgramSpreadsheetApi = class {
1017
2068
  constructor() {
1018
2069
  }
1019
2070
  };
1020
-
1021
- // src/api/entity/buildableEnvelope.ts
1022
- import * as z8 from "zod";
1023
- var PluginBuildableEnvelopeApi = class {
2071
+ var PluginProgramSpreadsheetTemplatesApi = class {
1024
2072
  constructor() {
1025
2073
  }
1026
2074
  };
1027
- var PluginBuildableEnvelopePolygonVertex = z8.union([
1028
- z8.object({ x: z8.number().finite(), z: z8.number().finite() }).strict(),
1029
- z8.tuple([z8.number().finite(), z8.number().finite()])
1030
- ]);
1031
- var PluginBuildableEnvelopeVerticalCap = z8.discriminatedUnion("kind", [
1032
- z8.object({
1033
- kind: z8.literal("max_height"),
1034
- maxHeight: z8.number().finite().positive()
1035
- }).strict(),
1036
- z8.object({
1037
- kind: z8.literal("max_floors"),
1038
- maxFloors: z8.number().finite().int().positive()
1039
- }).strict()
1040
- ]);
1041
- var PluginBuildableEnvelopeSetbackTier = z8.object({
1042
- aboveHeight: z8.number().finite().nonnegative(),
1043
- front: z8.number().finite().nonnegative(),
1044
- side: z8.number().finite().nonnegative(),
1045
- rear: z8.number().finite().nonnegative()
1046
- }).strict();
1047
- function refineSetbackTiers(args, ctx) {
1048
- const tiers = args.setbacks;
1049
- if (tiers.length === 0) return;
1050
- if (tiers[0].aboveHeight !== 0) {
1051
- ctx.addIssue({
1052
- code: z8.ZodIssueCode.custom,
1053
- path: ["setbacks", 0, "aboveHeight"],
1054
- message: "Ground tier required: setbacks[0].aboveHeight must be 0."
1055
- });
1056
- }
1057
- for (let i = 1; i < tiers.length; i++) {
1058
- if (!(tiers[i].aboveHeight > tiers[i - 1].aboveHeight)) {
1059
- ctx.addIssue({
1060
- code: z8.ZodIssueCode.custom,
1061
- path: ["setbacks", i, "aboveHeight"],
1062
- message: "Setback tiers must be ordered by strictly increasing aboveHeight."
1063
- });
1064
- }
1065
- }
1066
- }
1067
- var PluginBuildableEnvelopeCreateArgs = z8.object({
1068
- sitePolygon: z8.array(PluginBuildableEnvelopePolygonVertex).min(3),
1069
- lengthUnit: z8.union([z8.literal("ft"), z8.literal("m")]),
1070
- setbacks: z8.array(PluginBuildableEnvelopeSetbackTier).min(1),
1071
- verticalCap: PluginBuildableEnvelopeVerticalCap,
1072
- floorToFloor: z8.number().finite().positive(),
1073
- farRatio: z8.number().finite().positive().optional(),
1074
- lotCoverageMaxPct: z8.number().finite().min(0).max(100).optional()
1075
- }).strict().superRefine(refineSetbackTiers);
1076
- var PluginBuildableEnvelopeCreateResult = z8.object({
1077
- buildableEnvelopeId: z8.string().min(1)
1078
- }).strict();
1079
- var PluginBuildableEnvelopeUpdateArgs = z8.object({
1080
- buildableEnvelopeId: z8.string().min(1),
1081
- sitePolygon: z8.array(PluginBuildableEnvelopePolygonVertex).min(3),
1082
- lengthUnit: z8.union([z8.literal("ft"), z8.literal("m")]),
1083
- setbacks: z8.array(PluginBuildableEnvelopeSetbackTier).min(1),
1084
- verticalCap: PluginBuildableEnvelopeVerticalCap,
1085
- floorToFloor: z8.number().finite().positive(),
1086
- farRatio: z8.number().finite().positive().optional(),
1087
- lotCoverageMaxPct: z8.number().finite().min(0).max(100).optional()
1088
- }).strict().superRefine(refineSetbackTiers);
1089
- var PluginBuildableEnvelopeUpdateResult = z8.object({
1090
- buildableEnvelopeId: z8.string().min(1)
1091
- }).strict();
1092
-
1093
- // src/api/entity/department.ts
1094
- import * as z9 from "zod";
1095
- var PluginDepartmentApi = class {
2075
+ var PluginProgramSpreadsheetBindingsApi = class {
1096
2076
  constructor() {
1097
2077
  }
1098
2078
  };
1099
- var PluginDepartmentCreateArgs = z9.object({
1100
- name: z9.string(),
1101
- color: z9.string()
2079
+ var PluginSpreadsheetCell = z50.union([
2080
+ z50.string(),
2081
+ z50.number(),
2082
+ z50.boolean(),
2083
+ z50.null()
2084
+ ]);
2085
+ var PluginSpreadsheetAlign = z50.enum(["left", "center", "right"]);
2086
+ var PluginSpreadsheetColumn = z50.object({
2087
+ key: z50.string(),
2088
+ header: z50.string(),
2089
+ width: z50.number().optional(),
2090
+ format: z50.string().optional(),
2091
+ align: PluginSpreadsheetAlign.optional()
2092
+ });
2093
+ var PluginSpreadsheetTotal = z50.object({
2094
+ column: z50.string(),
2095
+ fn: z50.enum(["sum", "avg", "count", "min", "max"]),
2096
+ label: z50.string().optional()
2097
+ });
2098
+ var PluginProgramSpreadsheetRenderArgs = z50.object({
2099
+ sheetName: z50.string(),
2100
+ columns: z50.array(PluginSpreadsheetColumn),
2101
+ rows: z50.array(z50.record(z50.string(), PluginSpreadsheetCell)),
2102
+ title: z50.string().optional(),
2103
+ startCell: z50.string().optional(),
2104
+ whenExists: z50.enum(["replace", "error"]).optional(),
2105
+ asTable: z50.boolean().optional(),
2106
+ freezeHeader: z50.boolean().optional(),
2107
+ totals: z50.array(PluginSpreadsheetTotal).optional()
2108
+ });
2109
+ var PluginProgramSpreadsheetRenderResult = z50.object({
2110
+ sheetName: z50.string(),
2111
+ range: z50.string(),
2112
+ headerRange: z50.string(),
2113
+ rowCount: z50.number(),
2114
+ colCount: z50.number(),
2115
+ tableName: z50.string().nullable(),
2116
+ replaced: z50.boolean()
2117
+ });
2118
+ var PluginProgramSpreadsheetRenderDatasetArgs = z50.object({
2119
+ sheetName: z50.string().optional(),
2120
+ title: z50.string().optional(),
2121
+ filter: z50.string().optional()
2122
+ });
2123
+ var PluginSpreadsheetExportFormat = z50.enum(["xlsx", "pdf", "csv"]);
2124
+ var PluginProgramSpreadsheetExportArgs = z50.object({
2125
+ format: PluginSpreadsheetExportFormat,
2126
+ fileName: z50.string().optional()
2127
+ });
2128
+ var PluginProgramSpreadsheetExportResult = z50.object({
2129
+ format: PluginSpreadsheetExportFormat,
2130
+ fileName: z50.string(),
2131
+ mimeType: z50.string(),
2132
+ dataBase64: z50.string()
2133
+ });
2134
+ var PluginSpreadsheetSheetInfo = z50.object({
2135
+ name: z50.string(),
2136
+ index: z50.number(),
2137
+ visible: z50.boolean(),
2138
+ rowCount: z50.number(),
2139
+ colCount: z50.number()
2140
+ });
2141
+ var PluginProgramSpreadsheetListSheetsResult = z50.object({
2142
+ sheets: z50.array(PluginSpreadsheetSheetInfo),
2143
+ activeSheet: z50.string().nullable()
2144
+ });
2145
+ var PluginProgramSpreadsheetGetSheetDataArgs = z50.object({
2146
+ sheetName: z50.string(),
2147
+ range: z50.string().optional(),
2148
+ header: z50.boolean().optional()
2149
+ });
2150
+ var PluginProgramSpreadsheetGetSheetDataResult = z50.object({
2151
+ sheetName: z50.string(),
2152
+ range: z50.string(),
2153
+ values: z50.array(z50.array(PluginSpreadsheetCell)),
2154
+ records: z50.array(z50.record(z50.string(), PluginSpreadsheetCell)).optional()
2155
+ });
2156
+ var PluginSpreadsheetChartType = z50.enum([
2157
+ "column",
2158
+ "bar",
2159
+ "line",
2160
+ "pie",
2161
+ "area",
2162
+ "scatter"
2163
+ ]);
2164
+ var PluginProgramSpreadsheetAddChartArgs = z50.object({
2165
+ sheetName: z50.string(),
2166
+ chartType: PluginSpreadsheetChartType,
2167
+ dataRange: z50.string(),
2168
+ title: z50.string().optional(),
2169
+ position: z50.object({ x: z50.number(), y: z50.number() }).optional(),
2170
+ size: z50.object({ width: z50.number(), height: z50.number() }).optional()
2171
+ });
2172
+ var PluginProgramSpreadsheetAddChartResult = z50.object({
2173
+ chartId: z50.string()
2174
+ });
2175
+ var PluginProgramSpreadsheetHighlightCellsArgs = z50.object({
2176
+ sheetName: z50.string(),
2177
+ range: z50.string(),
2178
+ color: z50.string().optional(),
2179
+ bold: z50.boolean().optional()
2180
+ });
2181
+ var PluginProgramSpreadsheetHighlightCellsResult = z50.object({
2182
+ sheetName: z50.string(),
2183
+ range: z50.string()
2184
+ });
2185
+ var PluginSpreadsheetProgramRow = z50.object({
2186
+ departmentId: z50.string(),
2187
+ name: z50.string(),
2188
+ targetArea: z50.number().nullable(),
2189
+ allocatedArea: z50.number(),
2190
+ variance: z50.number().nullable()
2191
+ });
2192
+ var PluginProgramSpreadsheetGetProgramResult = z50.object({
2193
+ units: PluginAreaUnit,
2194
+ rows: z50.array(PluginSpreadsheetProgramRow),
2195
+ totalTargetArea: z50.number(),
2196
+ totalAllocatedArea: z50.number(),
2197
+ generatedAt: z50.string()
2198
+ });
2199
+ var PluginSpreadsheetTakeoffRow = z50.object({
2200
+ objectType: z50.string(),
2201
+ category: z50.string(),
2202
+ family: z50.string(),
2203
+ quantity: z50.number(),
2204
+ unit: z50.string()
2205
+ });
2206
+ var PluginProgramSpreadsheetGetTakeoffResult = z50.object({
2207
+ rows: z50.array(PluginSpreadsheetTakeoffRow),
2208
+ rowCount: z50.number(),
2209
+ generatedAt: z50.string()
2210
+ });
2211
+ var PluginSpreadsheetWhenExists = z50.enum(["reuse", "replace", "error"]);
2212
+ var PluginProgramSpreadsheetCreateSheetArgs = z50.object({
2213
+ name: z50.string(),
2214
+ whenExists: PluginSpreadsheetWhenExists.optional()
2215
+ });
2216
+ var PluginProgramSpreadsheetCreateSheetResult = z50.object({
2217
+ sheetName: z50.string(),
2218
+ replaced: z50.boolean(),
2219
+ sheetIndex: z50.number().nullable()
2220
+ });
2221
+ var PluginProgramSpreadsheetSetValuesArgs = z50.object({
2222
+ sheetName: z50.string(),
2223
+ values: z50.array(z50.array(PluginSpreadsheetCell)),
2224
+ startCell: z50.string().optional()
2225
+ });
2226
+ var PluginProgramSpreadsheetSetValuesResult = z50.object({
2227
+ sheetName: z50.string(),
2228
+ startCell: z50.string(),
2229
+ rowCount: z50.number(),
2230
+ colCount: z50.number()
2231
+ });
2232
+ var PluginSpreadsheetFormula = z50.object({
2233
+ cell: z50.string(),
2234
+ formula: z50.string()
2235
+ });
2236
+ var PluginProgramSpreadsheetSetFormulasArgs = z50.object({
2237
+ sheetName: z50.string(),
2238
+ formulas: z50.array(PluginSpreadsheetFormula)
2239
+ });
2240
+ var PluginProgramSpreadsheetSetFormulasResult = z50.object({
2241
+ sheetName: z50.string(),
2242
+ count: z50.number()
2243
+ });
2244
+ var PluginSpreadsheetFontWeight = z50.enum(["normal", "bold"]);
2245
+ var PluginSpreadsheetFontStyle = z50.enum(["normal", "italic"]);
2246
+ var PluginSpreadsheetHorizontalAlign = z50.enum([
2247
+ "left",
2248
+ "center",
2249
+ "right",
2250
+ "general"
2251
+ ]);
2252
+ var PluginSpreadsheetVerticalAlign = z50.enum([
2253
+ "top",
2254
+ "center",
2255
+ "bottom"
2256
+ ]);
2257
+ var PluginSpreadsheetCellStyle = z50.object({
2258
+ backColor: z50.string().optional(),
2259
+ foreColor: z50.string().optional(),
2260
+ font: z50.string().optional(),
2261
+ fontFamily: z50.string().optional(),
2262
+ fontSize: z50.number().optional(),
2263
+ fontWeight: PluginSpreadsheetFontWeight.optional(),
2264
+ fontStyle: PluginSpreadsheetFontStyle.optional(),
2265
+ formatter: z50.string().optional(),
2266
+ horizontalAlign: PluginSpreadsheetHorizontalAlign.optional(),
2267
+ verticalAlign: PluginSpreadsheetVerticalAlign.optional()
2268
+ });
2269
+ var PluginSpreadsheetRangeStyle = z50.object({
2270
+ range: z50.string(),
2271
+ style: PluginSpreadsheetCellStyle
2272
+ });
2273
+ var PluginProgramSpreadsheetSetStylesArgs = z50.object({
2274
+ sheetName: z50.string(),
2275
+ ranges: z50.array(PluginSpreadsheetRangeStyle)
2276
+ });
2277
+ var PluginProgramSpreadsheetSetStylesResult = z50.object({
2278
+ sheetName: z50.string(),
2279
+ count: z50.number()
2280
+ });
2281
+ var PluginProgramSpreadsheetMergeCellsArgs = z50.object({
2282
+ sheetName: z50.string(),
2283
+ range: z50.string(),
2284
+ value: PluginSpreadsheetCell.optional()
2285
+ });
2286
+ var PluginProgramSpreadsheetMergeCellsResult = z50.object({
2287
+ sheetName: z50.string(),
2288
+ range: z50.string()
2289
+ });
2290
+ var PluginSpreadsheetConditionalRuleType = z50.enum(["dataBar"]);
2291
+ var PluginSpreadsheetConditionalRule = z50.object({
2292
+ type: PluginSpreadsheetConditionalRuleType,
2293
+ color: z50.string().optional()
2294
+ });
2295
+ var PluginProgramSpreadsheetAddConditionalFormattingArgs = z50.object({
2296
+ sheetName: z50.string(),
2297
+ range: z50.string(),
2298
+ rule: PluginSpreadsheetConditionalRule
2299
+ });
2300
+ var PluginProgramSpreadsheetAddConditionalFormattingResult = z50.object({
2301
+ sheetName: z50.string(),
2302
+ range: z50.string(),
2303
+ created: z50.boolean()
2304
+ });
2305
+ var PluginProgramSpreadsheetRecalculateArgs = z50.object({
2306
+ sheetName: z50.string().optional()
2307
+ });
2308
+ var PluginProgramSpreadsheetRecalculateResult = z50.object({
2309
+ scope: z50.enum(["sheet", "workbook"]),
2310
+ sheetName: z50.string().nullable()
2311
+ });
2312
+ var PluginSpreadsheetTransactionMethod = z50.enum([
2313
+ "createSheet",
2314
+ "setValues",
2315
+ "setFormulas",
2316
+ "setStyles",
2317
+ "mergeCells"
2318
+ ]);
2319
+ var PluginSpreadsheetTransactionOp = z50.object({
2320
+ method: PluginSpreadsheetTransactionMethod,
2321
+ args: z50.unknown()
2322
+ });
2323
+ var PluginProgramSpreadsheetTransactionArgs = z50.object({
2324
+ operations: z50.array(PluginSpreadsheetTransactionOp),
2325
+ label: z50.string().optional()
2326
+ });
2327
+ var PluginProgramSpreadsheetTransactionResult = z50.object({
2328
+ label: z50.string(),
2329
+ operationCount: z50.number(),
2330
+ results: z50.array(z50.unknown())
2331
+ });
2332
+ var PluginProgramSpreadsheetRunScriptArgs = z50.object({
2333
+ script: z50.string()
2334
+ });
2335
+ var PluginProgramSpreadsheetRunScriptResult = z50.object({
2336
+ result: z50.unknown()
2337
+ });
2338
+ var PluginSpreadsheetAuditStatus = z50.enum(["success", "error"]);
2339
+ var PluginSpreadsheetAuditEntry = z50.object({
2340
+ id: z50.string(),
2341
+ pluginId: z50.string(),
2342
+ method: z50.string(),
2343
+ label: z50.string().optional(),
2344
+ sheetName: z50.string().optional(),
2345
+ timestamp: z50.string(),
2346
+ status: PluginSpreadsheetAuditStatus,
2347
+ summary: z50.string().optional()
2348
+ });
2349
+ var PluginProgramSpreadsheetGetAuditLogArgs = z50.object({
2350
+ limit: z50.number().optional()
2351
+ });
2352
+ var PluginProgramSpreadsheetGetAuditLogResult = z50.object({
2353
+ entries: z50.array(PluginSpreadsheetAuditEntry)
2354
+ });
2355
+ var PluginProgramSpreadsheetPingResult = z50.object({
2356
+ pong: z50.boolean()
2357
+ });
2358
+ var PluginSpreadsheetTemplateScope = z50.enum(["project", "global"]);
2359
+ var PluginProgramSpreadsheetTemplatesCreateArgs = z50.object({
2360
+ name: z50.string(),
2361
+ sheetName: z50.string(),
2362
+ scope: PluginSpreadsheetTemplateScope.optional()
2363
+ });
2364
+ var PluginProgramSpreadsheetTemplatesCreateResult = z50.object({
2365
+ id: z50.string(),
2366
+ name: z50.string(),
2367
+ scope: PluginSpreadsheetTemplateScope,
2368
+ sheetName: z50.string()
2369
+ });
2370
+ var PluginProgramSpreadsheetTemplatesApplyArgs = z50.object({
2371
+ name: z50.string(),
2372
+ targetSheetName: z50.string()
2373
+ });
2374
+ var PluginProgramSpreadsheetTemplatesApplyResult = z50.object({
2375
+ name: z50.string(),
2376
+ targetSheetName: z50.string()
2377
+ });
2378
+ var PluginSpreadsheetBindingSource = z50.object({
2379
+ dataset: z50.enum(["takeoff"])
2380
+ });
2381
+ var PluginSpreadsheetBindingMode = z50.enum(["replaceRange"]);
2382
+ var PluginSpreadsheetBindingTarget = z50.object({
2383
+ sheetName: z50.string(),
2384
+ startCell: z50.string().optional()
2385
+ });
2386
+ var PluginSpreadsheetBinding = z50.object({
2387
+ id: z50.string(),
2388
+ name: z50.string(),
2389
+ pluginId: z50.string(),
2390
+ source: PluginSpreadsheetBindingSource,
2391
+ target: z50.object({
2392
+ sheetName: z50.string(),
2393
+ startCell: z50.string()
2394
+ }),
2395
+ mode: PluginSpreadsheetBindingMode,
2396
+ createdAt: z50.string(),
2397
+ updatedAt: z50.string()
2398
+ });
2399
+ var PluginSpreadsheetBindingRefresh = z50.object({
2400
+ id: z50.string(),
2401
+ name: z50.string(),
2402
+ sheetName: z50.string(),
2403
+ rowCount: z50.number()
2404
+ });
2405
+ var PluginProgramSpreadsheetBindingsCreateArgs = z50.object({
2406
+ name: z50.string(),
2407
+ source: PluginSpreadsheetBindingSource,
2408
+ target: PluginSpreadsheetBindingTarget,
2409
+ mode: PluginSpreadsheetBindingMode.optional()
1102
2410
  });
1103
- var PluginDepartmentCreateResult = z9.object({
1104
- departmentId: z9.string()
2411
+ var PluginProgramSpreadsheetBindingsCreateResult = PluginSpreadsheetBinding.extend({
2412
+ refresh: PluginSpreadsheetBindingRefresh
1105
2413
  });
1106
- var PluginDepartmentEntry = z9.object({
1107
- id: z9.string(),
1108
- name: z9.string(),
1109
- color: z9.string()
2414
+ var PluginProgramSpreadsheetBindingsRefreshArgs = z50.object({
2415
+ name: z50.string().optional()
1110
2416
  });
1111
- var PluginDepartmentGetAllResult = z9.object({
1112
- departments: z9.array(PluginDepartmentEntry)
2417
+ var PluginProgramSpreadsheetBindingsRefreshResult = z50.object({
2418
+ refreshed: z50.array(PluginSpreadsheetBindingRefresh)
2419
+ });
2420
+ var PluginProgramSpreadsheetBindingsListResult = z50.object({
2421
+ bindings: z50.array(PluginSpreadsheetBinding)
1113
2422
  });
1114
2423
 
1115
- // src/api/entity/referenceLine.ts
1116
- import * as z10 from "zod";
1117
- var PluginReferenceLineApi = class {
2424
+ // src/api/program/site.ts
2425
+ import * as z51 from "zod";
2426
+ var PluginProgramSiteApi = class {
2427
+ constructor() {
2428
+ }
2429
+ };
2430
+ var PluginSiteFootprintPoint = z51.object({
2431
+ x: z51.number(),
2432
+ z: z51.number()
2433
+ });
2434
+ var PluginSiteGeoPoint = z51.object({
2435
+ lat: z51.number(),
2436
+ lng: z51.number(),
2437
+ alt: z51.number()
2438
+ });
2439
+ var PluginSitePolygon = z51.object({
2440
+ id: z51.string(),
2441
+ area: z51.number(),
2442
+ label: z51.string(),
2443
+ footprint: z51.array(PluginSiteFootprintPoint)
2444
+ });
2445
+ var PluginProgramSiteSnapshot = z51.object({
2446
+ units: PluginAreaUnit,
2447
+ totalArea: z51.number(),
2448
+ polygonCount: z51.number(),
2449
+ polygons: z51.array(PluginSitePolygon)
2450
+ });
2451
+ var PluginProgramSiteAreaResult = z51.object({
2452
+ units: PluginAreaUnit,
2453
+ area: z51.number()
2454
+ });
2455
+ var PluginProgramSiteListPolygonsResult = z51.object({
2456
+ units: PluginAreaUnit,
2457
+ polygons: z51.array(PluginSitePolygon)
2458
+ });
2459
+ var PluginProgramSiteListGeoPolygonsResult = z51.object({
2460
+ polygons: z51.array(z51.array(PluginSiteGeoPoint))
2461
+ });
2462
+ var PluginSiteLatLng = z51.object({
2463
+ lat: z51.number(),
2464
+ lng: z51.number()
2465
+ });
2466
+ var PluginSiteBounds = z51.object({
2467
+ north: z51.number(),
2468
+ south: z51.number(),
2469
+ east: z51.number(),
2470
+ west: z51.number()
2471
+ });
2472
+ var PluginSiteContextParcel = z51.object({
2473
+ footprint: z51.array(PluginSiteLatLng),
2474
+ area: z51.number()
2475
+ });
2476
+ var PluginProgramSiteContext = z51.object({
2477
+ center: PluginSiteLatLng,
2478
+ bounds: PluginSiteBounds,
2479
+ widthInM: z51.number(),
2480
+ heightInM: z51.number(),
2481
+ zoom: z51.number(),
2482
+ parcels: z51.array(PluginSiteContextParcel)
2483
+ });
2484
+ var PluginProgramSiteContextResult = PluginProgramSiteContext.nullable();
2485
+
2486
+ // src/api/program/cores.ts
2487
+ import * as z52 from "zod";
2488
+ var PluginProgramCoresApi = class {
1118
2489
  constructor() {
1119
2490
  }
1120
2491
  };
1121
- var PluginReferenceLineCreateMultiArgs = z10.object({
1122
- profile: PProfile
2492
+ var PluginProgramCore = z52.object({
2493
+ id: z52.string(),
2494
+ groupId: z52.string(),
2495
+ storey: z52.number()
1123
2496
  });
1124
- var PluginReferenceLineCreateMultiResult = z10.object({
1125
- referenceLineIds: z10.array(z10.string())
2497
+ var PluginProgramCoresListResult = z52.object({
2498
+ cores: z52.array(PluginProgramCore)
1126
2499
  });
1127
- var PluginReferenceLineGetProperty = z10.enum([
1128
- "curve"
1129
- ]);
1130
- var PluginReferenceLineGetArgs = z10.object({
1131
- referenceLineId: z10.string(),
1132
- properties: z10.array(PluginReferenceLineGetProperty)
2500
+ var PluginProgramCoresIsCoreArgs = z52.object({
2501
+ id: z52.string()
1133
2502
  });
1134
- var PluginReferenceLineGetResult = z10.object({
1135
- curve: PCurve
1136
- }).partial();
1137
- var PluginReferenceLineGetAllResult = z10.object({
1138
- referenceLineIds: z10.array(z10.string())
2503
+ var PluginProgramCoreSpec = z52.object({
2504
+ type: z52.string().optional(),
2505
+ position: z52.object({ x: z52.number(), y: z52.number(), z: z52.number() }),
2506
+ width: z52.number(),
2507
+ depth: z52.number(),
2508
+ fromStorey: z52.number().optional(),
2509
+ toStorey: z52.number().optional()
2510
+ });
2511
+ var PluginProgramCoresCreateArgs = z52.object({
2512
+ cores: z52.array(PluginProgramCoreSpec),
2513
+ lengthUnit: z52.enum(["mm", "m", "ft"]).optional()
1139
2514
  });
1140
- var PluginReferenceLineDeleteArgs = z10.object({
1141
- referenceLineId: z10.string()
2515
+ var PluginProgramCoresCreateResult = z52.object({
2516
+ createdCount: z52.number()
1142
2517
  });
1143
2518
 
1144
- // src/api/entity/space.ts
1145
- import * as z11 from "zod";
1146
- var PluginSpaceApi = class {
2519
+ // src/api/program/classification.ts
2520
+ import * as z53 from "zod";
2521
+ var PluginProgramClassificationApi = class {
1147
2522
  constructor() {
1148
2523
  }
1149
2524
  };
1150
- var PluginSpaceCreateRectangularArgs = z11.object({
1151
- position: PVec3,
1152
- dimensions: z11.object({
1153
- width: z11.number(),
1154
- height: z11.number(),
1155
- depth: z11.number()
1156
- })
1157
- });
1158
- var PluginSpaceCreateRectangularResult = z11.object({
1159
- spaceId: z11.string()
2525
+ var PluginClassificationOption = z53.object({
2526
+ value: z53.string(),
2527
+ label: z53.string()
1160
2528
  });
1161
- var PluginSpaceCreateFromProfileArgs = z11.object({
1162
- profile: PProfile,
1163
- innerProfiles: z11.array(PProfile).optional(),
1164
- extrudeHeight: z11.number(),
1165
- position: PVec3
2529
+ var PluginProgramClassificationTypesResult = z53.object({
2530
+ spaceTypes: z53.array(PluginClassificationOption),
2531
+ areaClasses: z53.array(PluginClassificationOption),
2532
+ massTypes: z53.array(PluginClassificationOption)
1166
2533
  });
1167
- var PluginSpaceCreateFromProfileResult = z11.object({
1168
- spaceId: z11.string()
2534
+ var PluginProgramClassificationListTagsArgs = z53.object({
2535
+ id: z53.string()
1169
2536
  });
1170
- var PluginSpaceUpdateGeometryFromProfileArgs = z11.object({
1171
- spaceId: z11.string(),
1172
- profile: PProfile,
1173
- extrudeHeight: z11.number()
2537
+ var PluginSpaceTag = z53.object({
2538
+ tagId: z53.string(),
2539
+ tagName: z53.string(),
2540
+ color: z53.string(),
2541
+ categoryId: z53.string()
1174
2542
  });
1175
- var PluginSpaceUpdateGeometryFromProfileResult = z11.object({
1176
- spaceId: z11.string()
2543
+ var PluginProgramClassificationTagsResult = z53.object({
2544
+ tagIds: z53.array(z53.string()),
2545
+ tagsByCategory: z53.record(z53.string(), PluginSpaceTag)
1177
2546
  });
1178
- var PluginSpaceGetProperty = z11.enum([
1179
- // Basic
1180
- "id",
1181
- "type",
1182
- "room_type",
1183
- "name",
1184
- // Derived from parametric data
1185
- "area",
1186
- "breadth",
1187
- "depth",
1188
- "height",
1189
- "massType",
1190
- "spaceType",
1191
- "areaClass",
1192
- "storey",
1193
- "departmentId",
1194
- "departmentName",
1195
- "departmentColor",
1196
- // Derived from mesh
1197
- "position",
1198
- "absolutePosition",
1199
- "rotation",
1200
- "rotationQuaternion",
1201
- // Derived from brep
1202
- "planPoints",
1203
- "profile",
1204
- "innerProfiles",
1205
- "innerPlanPoints",
1206
- // Derived from adjacency manager
1207
- "adjacency"
1208
- ]);
1209
- var PluginSpaceGetArgs = z11.object({
1210
- spaceId: z11.string(),
1211
- properties: z11.array(PluginSpaceGetProperty)
1212
- });
1213
- var PluginSpaceType = z11.enum([
1214
- "Room",
1215
- "Program Block",
1216
- "Balcony",
1217
- "Road",
1218
- "Garden",
1219
- "Deck",
1220
- "Pool",
1221
- "Walkway",
1222
- "Envelope",
1223
- "Parking"
2547
+
2548
+ // src/api/program/areas.ts
2549
+ import * as z54 from "zod";
2550
+ var PluginProgramAreasApi = class {
2551
+ constructor() {
2552
+ }
2553
+ };
2554
+ var PluginProgramAreaSummary = z54.object({
2555
+ count: z54.number().int(),
2556
+ hiddenCount: z54.number().int(),
2557
+ carpet: z54.number(),
2558
+ builtUp: z54.number(),
2559
+ excluded: z54.number(),
2560
+ farBuiltUp: z54.number(),
2561
+ siteArea: z54.number(),
2562
+ achievedFar: z54.number().nullable(),
2563
+ targetFar: z54.number(),
2564
+ deviation: z54.number(),
2565
+ areaUnit: PluginAreaUnit
2566
+ });
2567
+ var PluginProgramAreaGroup = z54.object({
2568
+ groupId: z54.string(),
2569
+ name: z54.string(),
2570
+ color: z54.string(),
2571
+ carpet: z54.number(),
2572
+ builtUp: z54.number(),
2573
+ excluded: z54.number(),
2574
+ count: z54.number().int(),
2575
+ targetArea: z54.number(),
2576
+ targetUnit: PluginAreaUnit
2577
+ });
2578
+ var PluginProgramAreaMember = z54.object({
2579
+ id: ComponentHandle,
2580
+ label: z54.string(),
2581
+ carpet: z54.number(),
2582
+ builtUp: z54.number(),
2583
+ excluded: z54.number(),
2584
+ isVisible: z54.boolean()
2585
+ });
2586
+ var PluginProgramAreaGroupBy = z54.enum([
2587
+ "labels",
2588
+ "storeys",
2589
+ "buildings",
2590
+ "departments",
2591
+ "tagCategories"
1224
2592
  ]);
1225
- var PluginAreaClass = z11.enum(["NET", "GROSS", "EXCLUDED"]);
1226
- var PluginSpaceGetResult = z11.object({
1227
- // Basic
1228
- id: z11.string(),
1229
- type: z11.string(),
1230
- room_type: z11.string(),
1231
- name: z11.string(),
1232
- // Derived from parametric data
1233
- area: z11.number(),
1234
- breadth: z11.number(),
1235
- depth: z11.number(),
1236
- height: z11.number(),
1237
- massType: z11.string().nullable(),
1238
- spaceType: PluginSpaceType.nullable(),
1239
- areaClass: PluginAreaClass,
1240
- storey: z11.number().nullable(),
1241
- departmentId: z11.string().nullable(),
1242
- departmentName: z11.string(),
1243
- departmentColor: z11.string(),
1244
- // Derived from mesh
1245
- position: PVec3,
1246
- absolutePosition: PVec3,
1247
- rotation: PVec3,
1248
- rotationQuaternion: PQuat.nullable(),
1249
- // Derived from brep
1250
- planPoints: z11.array(PVec3),
1251
- profile: PProfile,
1252
- innerProfiles: z11.array(PProfile),
1253
- innerPlanPoints: z11.array(z11.array(PVec3)),
1254
- // Derived from adjacency manager
1255
- adjacency: z11.array(z11.object({
1256
- spaceId: z11.string(),
1257
- value: z11.number()
1258
- }))
1259
- }).partial();
1260
- var PluginSpaceGetAllResult = z11.object({
1261
- spacesIds: z11.array(z11.string())
2593
+ var PluginProgramAreasGetResult = PluginProgramAreaSummary;
2594
+ var PluginProgramAreasListArgs = z54.object({
2595
+ groupBy: PluginProgramAreaGroupBy,
2596
+ categoryId: z54.string().optional()
2597
+ }).refine((v) => v.groupBy !== "tagCategories" || v.categoryId != null, {
2598
+ message: 'categoryId is required when groupBy is "tagCategories"'
2599
+ });
2600
+ var PluginProgramAreasListResult = z54.object({
2601
+ groups: z54.array(PluginProgramAreaGroup)
2602
+ });
2603
+ var PluginProgramAreasListMembersArgs = z54.object({
2604
+ groupBy: PluginProgramAreaGroupBy,
2605
+ groupId: z54.string(),
2606
+ categoryId: z54.string().optional()
2607
+ }).refine((v) => v.groupBy !== "tagCategories" || v.categoryId != null, {
2608
+ message: 'categoryId is required when groupBy is "tagCategories"'
2609
+ });
2610
+ var PluginProgramAreasListMembersResult = z54.object({
2611
+ members: z54.array(PluginProgramAreaMember)
2612
+ });
2613
+ var PluginProgramAreasUpdateArgs = z54.object({
2614
+ targetFar: z54.number().min(0).optional(),
2615
+ siteArea: z54.number().positive().optional(),
2616
+ deviation: z54.number().min(0).max(100).optional()
2617
+ });
2618
+ var PluginProgramAreasUpdateResult = PluginProgramAreaSummary;
2619
+
2620
+ // src/api/program/index.ts
2621
+ var PluginProgramApi = class {
2622
+ constructor() {
2623
+ }
2624
+ };
2625
+
2626
+ // src/api/presentation/views.ts
2627
+ import * as z55 from "zod";
2628
+ var PluginPresentationViewsApi = class {
2629
+ constructor() {
2630
+ }
2631
+ };
2632
+ var PluginPresentationViewType = z55.enum(["2d", "3d"]);
2633
+ var PluginPresentationView = z55.object({
2634
+ id: z55.string(),
2635
+ name: z55.string(),
2636
+ type: PluginPresentationViewType,
2637
+ isActive: z55.boolean()
1262
2638
  });
1263
- var PluginSpaceDeleteArgs = z11.object({
1264
- spaceId: z11.string()
2639
+ var PluginPresentationViewsListResult = z55.object({
2640
+ views: z55.array(PluginPresentationView)
1265
2641
  });
1266
- var PluginMassType = z11.enum([
1267
- "Plinth",
1268
- "Void",
1269
- "Pergola",
1270
- "Furniture",
1271
- "Facade element",
1272
- "Generic mass",
1273
- "Room",
1274
- "Department",
1275
- "Building",
1276
- "Revit Import",
1277
- "Mass",
1278
- "Site"
1279
- ]);
1280
- var PluginWellKnownDepartmentId = z11.enum([
1281
- "DEFAULT",
1282
- "SITE",
1283
- "ENVELOPE",
1284
- "CORE"
1285
- ]);
1286
- var PluginDepartmentId = z11.union([
1287
- PluginWellKnownDepartmentId,
1288
- z11.uuid()
1289
- ]);
1290
- var PluginSpaceUpdateArgs = z11.object({
1291
- spaceId: z11.string(),
1292
- properties: z11.object({
1293
- room_type: z11.string().optional(),
1294
- massType: PluginMassType.optional(),
1295
- spaceType: PluginSpaceType.optional(),
1296
- areaClass: PluginAreaClass.optional(),
1297
- departmentId: PluginDepartmentId.optional()
1298
- })
2642
+ var PluginPresentationViewsGetArgs = z55.object({
2643
+ id: z55.string()
1299
2644
  });
1300
- var PluginSpaceUpdateResult = z11.object({
1301
- spaceId: z11.string(),
1302
- room_type: z11.string().optional(),
1303
- massType: z11.string().optional(),
1304
- spaceType: z11.string().optional(),
1305
- areaClass: PluginAreaClass.optional(),
1306
- departmentId: z11.string().nullable().optional()
1307
- });
1308
- var PluginSpaceBulkCreateItem = z11.discriminatedUnion("kind", [
1309
- z11.object({
1310
- kind: z11.literal("rectangular"),
1311
- position: PVec3,
1312
- dimensions: z11.object({
1313
- width: z11.number(),
1314
- height: z11.number(),
1315
- depth: z11.number()
1316
- }),
1317
- room_type: z11.string().optional(),
1318
- spaceType: PluginSpaceType.optional(),
1319
- massType: PluginMassType.optional(),
1320
- departmentId: PluginDepartmentId.optional()
1321
- }),
1322
- z11.object({
1323
- kind: z11.literal("profile"),
1324
- profile: PProfile,
1325
- innerProfiles: z11.array(PProfile).optional(),
1326
- extrudeHeight: z11.number(),
1327
- position: PVec3,
1328
- room_type: z11.string().optional(),
1329
- spaceType: PluginSpaceType.optional(),
1330
- massType: PluginMassType.optional(),
1331
- departmentId: PluginDepartmentId.optional()
1332
- })
1333
- ]);
1334
- var PluginSpaceBulkCreateArgs = z11.object({
1335
- items: z11.array(PluginSpaceBulkCreateItem)
1336
- });
1337
- var PluginSpaceBulkCreateResult = z11.object({
1338
- spaceIds: z11.array(z11.string())
1339
- });
1340
- var PluginSpaceBulkUpdateItem = z11.object({
1341
- spaceId: z11.string(),
1342
- profile: PProfile.optional(),
1343
- extrudeHeight: z11.number().optional(),
1344
- properties: z11.object({
1345
- room_type: z11.string().optional(),
1346
- massType: PluginMassType.optional(),
1347
- spaceType: PluginSpaceType.optional(),
1348
- areaClass: PluginAreaClass.optional(),
1349
- departmentId: PluginDepartmentId.optional()
1350
- }).optional()
2645
+ var PluginPresentationViewsGetResult = PluginPresentationView.nullable();
2646
+ var PluginPresentationImageFormat = z55.enum(["png", "jpeg"]);
2647
+ var PluginPresentationViewsCaptureArgs = z55.object({
2648
+ viewId: z55.string().optional(),
2649
+ format: PluginPresentationImageFormat.optional(),
2650
+ resolution: z55.string().optional()
1351
2651
  });
1352
- var PluginSpaceBulkUpdateArgs = z11.object({
1353
- items: z11.array(PluginSpaceBulkUpdateItem)
2652
+ var PluginPresentationViewsCaptureResult = z55.object({
2653
+ image: z55.string()
1354
2654
  });
1355
- var PluginSpaceBulkUpdateResult = z11.object({
1356
- spaces: z11.array(PluginSpaceUpdateResult)
2655
+ var PluginPresentationViewsSetActiveArgs = z55.object({
2656
+ id: z55.string()
1357
2657
  });
1358
- var PluginSpaceBulkDeleteArgs = z11.object({
1359
- spaceIds: z11.array(z11.string())
2658
+ var PluginPresentationViewsSetActiveResult = z55.object({
2659
+ id: z55.string()
1360
2660
  });
1361
- var PluginSpaceBulkDeleteResult = z11.object({
1362
- deletedSpaceIds: z11.array(z11.string())
2661
+ var PluginPresentationViewsCreateArgs = z55.object({
2662
+ name: z55.string().optional(),
2663
+ kind: z55.enum(["view", "sitePlan"]).optional()
1363
2664
  });
2665
+ var PluginPresentationViewsCreateResult = PluginPresentationView;
1364
2666
 
1365
- // src/api/entity/story.ts
1366
- import * as z12 from "zod";
1367
- var PluginStoryApi = class {
2667
+ // src/api/presentation/sheets.ts
2668
+ import * as z56 from "zod";
2669
+ var PluginPresentationSheetsApi = class {
1368
2670
  constructor() {
1369
2671
  }
1370
2672
  };
1371
- var PluginStoryGetProperty = z12.enum([
1372
- "value",
1373
- "id",
1374
- "name",
1375
- "height",
1376
- "base",
1377
- "hidden",
1378
- "spacesCount",
1379
- "totalArea"
1380
- ]);
1381
- var PluginStoryGetArgs = z12.object({
1382
- storyValue: z12.number().int(),
1383
- properties: z12.array(PluginStoryGetProperty)
1384
- });
1385
- var PluginStoryGetResult = z12.object({
1386
- value: z12.number(),
1387
- id: z12.string(),
1388
- name: z12.string(),
1389
- height: z12.number(),
1390
- base: z12.number(),
1391
- hidden: z12.boolean(),
1392
- spacesCount: z12.number(),
1393
- totalArea: z12.number()
1394
- }).partial();
1395
- var PluginStoryGetAllResult = z12.object({
1396
- stories: z12.array(
1397
- z12.object({
1398
- value: z12.number(),
1399
- id: z12.string(),
1400
- name: z12.string()
1401
- })
1402
- )
1403
- });
1404
- var PluginStoryCreateArgs = z12.object({
1405
- storyValue: z12.number().int(),
1406
- height: z12.number().optional()
1407
- });
1408
- var PluginStoryCreateResult = z12.object({
1409
- storyId: z12.string(),
1410
- storyValue: z12.number()
2673
+ var PluginPresentationSheet = z56.object({
2674
+ id: z56.string(),
2675
+ name: z56.string()
1411
2676
  });
1412
- var PluginStoryUpdateArgs = z12.object({
1413
- storyValue: z12.number().int(),
1414
- height: z12.number()
2677
+ var PluginSheetPosition = z56.object({
2678
+ x: z56.number(),
2679
+ y: z56.number()
1415
2680
  });
1416
- var PluginStoryUpdateResult = z12.object({
1417
- storyValue: z12.number(),
1418
- height: z12.number()
2681
+ var PluginPresentationSheetsListResult = z56.object({
2682
+ sheets: z56.array(PluginPresentationSheet)
1419
2683
  });
1420
-
1421
- // src/api/entity/index.ts
1422
- var PluginEntityApi = class {
1423
- constructor() {
1424
- }
1425
- };
1426
-
1427
- // src/api/tools/copy.ts
1428
- import * as z13 from "zod";
1429
- var PluginCopyMode = z13.enum(["instance", "unique"]);
1430
- var PluginCopyArgs = z13.object({
1431
- componentIds: z13.array(z13.string()).min(1),
1432
- displacement: PVec3,
1433
- count: z13.number().int().positive().optional(),
1434
- copyMode: PluginCopyMode.optional()
2684
+ var PluginPresentationSheetsGetArgs = z56.object({
2685
+ id: z56.string()
1435
2686
  });
1436
- var PluginCopyResult = z13.object({
1437
- copiedIds: z13.array(z13.string())
2687
+ var PluginPresentationSheetsGetResult = PluginPresentationSheet.nullable();
2688
+ var PluginPresentationSheetsCreateArgs = z56.object({
2689
+ name: z56.string().optional()
1438
2690
  });
1439
-
1440
- // src/api/tools/offset.ts
1441
- import * as z14 from "zod";
1442
- var PluginOffsetArgs = z14.object({
1443
- componentId: z14.string().min(1),
1444
- distance: z14.number(),
1445
- profilePickPoint: PVec3.optional()
2691
+ var PluginPresentationSheetsPlaceArgs = z56.object({
2692
+ sheetId: z56.string(),
2693
+ viewId: z56.string(),
2694
+ position: PluginSheetPosition.optional()
1446
2695
  });
1447
- var PluginOffsetResult = z14.object({
1448
- createdIds: z14.array(z14.string()),
1449
- deletedIds: z14.array(z14.string())
2696
+ var PluginPresentationSheetsPlaceResult = z56.object({
2697
+ shapeId: z56.string()
1450
2698
  });
1451
2699
 
1452
- // src/api/tools/selection.ts
1453
- import * as z15 from "zod";
1454
- var PluginSelectionApi = class {
2700
+ // src/api/presentation/diagrams.ts
2701
+ import * as z57 from "zod";
2702
+ var PluginPresentationDiagramsApi = class {
1455
2703
  constructor() {
1456
2704
  }
1457
2705
  };
1458
- var PluginSelectionGetResult = z15.object({
1459
- selected: z15.array(z15.string())
2706
+ var PluginPresentationDiagramsPlaceArgs = z57.object({
2707
+ sheetId: z57.string(),
2708
+ urls: z57.array(z57.string()),
2709
+ position: z57.object({ x: z57.number(), y: z57.number() }).optional()
2710
+ });
2711
+ var PluginPresentationDiagramsPlaceResult = z57.object({
2712
+ shapeIds: z57.array(z57.string())
1460
2713
  });
1461
2714
 
1462
- // src/api/tools/transform.ts
1463
- import * as z16 from "zod";
1464
- var PluginTransformApi = class {
2715
+ // src/api/presentation/import.ts
2716
+ import * as z58 from "zod";
2717
+ var PluginPresentationImportApi = class {
1465
2718
  constructor() {
1466
2719
  }
1467
2720
  };
1468
- var PluginMoveArgs = z16.object({
1469
- componentIds: z16.array(z16.string()),
1470
- displacement: PVec3
2721
+ var PluginPresentationImportArgs = z58.object({
2722
+ url: z58.string().optional(),
2723
+ dataUrl: z58.string().optional(),
2724
+ position: z58.object({ x: z58.number(), y: z58.number() }).optional()
2725
+ }).refine((a) => Boolean(a.url) || Boolean(a.dataUrl), {
2726
+ message: "Provide a url or a dataUrl"
1471
2727
  });
1472
- var PluginRotateArgs = z16.object({
1473
- componentIds: z16.array(z16.string()),
1474
- angle: z16.number(),
1475
- axis: PVec3,
1476
- pivot: PVec3
2728
+ var PluginPresentationImportResult = z58.object({
2729
+ shapeIds: z58.array(z58.string())
1477
2730
  });
1478
2731
 
1479
- // src/api/tools/index.ts
1480
- var PluginToolsApi = class {
2732
+ // src/api/presentation/aiInspiration.ts
2733
+ import * as z59 from "zod";
2734
+ var JsonPrimitive = z59.union([z59.string(), z59.number(), z59.boolean(), z59.null()]);
2735
+ var JsonValue = z59.lazy(
2736
+ () => z59.union([JsonPrimitive, z59.array(JsonValue), z59.record(z59.string(), JsonValue)])
2737
+ );
2738
+ var PluginAIInspirationOutputKind = z59.enum([
2739
+ "source",
2740
+ "image",
2741
+ "video"
2742
+ ]);
2743
+ var PluginAIInspirationModelOutput = z59.enum(["image", "video"]);
2744
+ var PluginAIInspirationShapeKind = z59.enum(["image", "view", "video"]);
2745
+ var PluginAIInspirationVideoMode = z59.enum([
2746
+ "animate",
2747
+ "references",
2748
+ "keyframes"
2749
+ ]);
2750
+ var PluginAIInspirationVideoMotion = z59.enum([
2751
+ "auto",
2752
+ "slow-dolly",
2753
+ "subtle-orbit",
2754
+ "reveal"
2755
+ ]);
2756
+ var PluginAIInspirationVideoDuration = z59.enum(["4s", "6s", "8s"]);
2757
+ var PluginAIInspirationRegionHint = z59.object({
2758
+ x: z59.number().finite(),
2759
+ y: z59.number().finite(),
2760
+ w: z59.number().finite().positive(),
2761
+ h: z59.number().finite().positive()
2762
+ });
2763
+ var PluginAIInspirationPoint = z59.object({
2764
+ x: z59.number().finite(),
2765
+ y: z59.number().finite()
2766
+ });
2767
+ var PluginAIInspirationTextAnnotation = z59.object({
2768
+ text: z59.string().min(1),
2769
+ x: z59.number().finite().optional(),
2770
+ y: z59.number().finite().optional()
2771
+ });
2772
+ var PluginAIInspirationSketchGuidance = z59.object({
2773
+ visualShapeIds: z59.array(z59.string()).optional(),
2774
+ textAnnotations: z59.array(PluginAIInspirationTextAnnotation).optional()
2775
+ });
2776
+ var PluginAIInspirationSiteOptions = z59.object({
2777
+ includeSatellite: z59.boolean().optional(),
2778
+ includeStreetView: z59.boolean().optional(),
2779
+ includeAerial: z59.boolean().optional(),
2780
+ aerialBearing: z59.number().finite().optional(),
2781
+ aerialPitch: z59.number().finite().optional(),
2782
+ selectedDiagramIds: z59.array(z59.string()).optional(),
2783
+ location: z59.object({
2784
+ lat: z59.number().finite(),
2785
+ lng: z59.number().finite()
2786
+ }).optional()
2787
+ });
2788
+ var PluginAIInspirationAppliedPreset = z59.object({
2789
+ source: z59.enum(["curated", "user"]),
2790
+ presetId: z59.string().min(1),
2791
+ name: z59.string().min(1),
2792
+ savedPresetKind: z59.enum(["prompt", "style"]).optional(),
2793
+ stylePrompt: z59.string().optional(),
2794
+ modelId: z59.string().optional(),
2795
+ referenceImages: z59.array(
2796
+ z59.object({
2797
+ url: z59.string().min(1),
2798
+ label: z59.string().optional(),
2799
+ weight: z59.number().finite().optional()
2800
+ })
2801
+ ).optional(),
2802
+ siteDefaults: z59.object({
2803
+ includeSatellite: z59.boolean().optional(),
2804
+ includeStreetView: z59.boolean().optional(),
2805
+ includeAerial: z59.boolean().optional()
2806
+ }).optional()
2807
+ });
2808
+ var PluginAIInspirationVideoOptions = z59.object({
2809
+ mode: PluginAIInspirationVideoMode.optional(),
2810
+ endFrameShapeId: z59.string().optional(),
2811
+ motion: PluginAIInspirationVideoMotion.optional(),
2812
+ duration: PluginAIInspirationVideoDuration.optional()
2813
+ });
2814
+ var PluginAIInspirationModel = z59.object({
2815
+ id: z59.string(),
2816
+ label: z59.string(),
2817
+ supportsMultiImage: z59.boolean(),
2818
+ output: PluginAIInspirationModelOutput,
2819
+ isDefault: z59.boolean().optional()
2820
+ });
2821
+ var PluginAIInspirationListModelsResult = z59.object({
2822
+ defaultModelId: z59.string(),
2823
+ models: z59.array(PluginAIInspirationModel)
2824
+ });
2825
+ var PluginAIInspirationShapeRef = z59.object({
2826
+ shapeId: z59.string(),
2827
+ assetId: z59.string().optional(),
2828
+ kind: PluginAIInspirationShapeKind,
2829
+ name: z59.string().optional(),
2830
+ width: z59.number().finite().optional(),
2831
+ height: z59.number().finite().optional(),
2832
+ outputType: PluginAIInspirationOutputKind.optional(),
2833
+ sourceUrl: z59.string().optional()
2834
+ });
2835
+ var PluginAIInspirationListSourcesArgs = z59.object({
2836
+ includeGenerated: z59.boolean().optional(),
2837
+ includeSourceUrl: z59.boolean().optional()
2838
+ });
2839
+ var PluginAIInspirationListSourcesResult = z59.object({
2840
+ sources: z59.array(PluginAIInspirationShapeRef)
2841
+ });
2842
+ var PluginAIInspirationOutput = z59.object({
2843
+ outputType: z59.enum(["image", "video"]),
2844
+ shapeId: z59.string(),
2845
+ assetId: z59.string(),
2846
+ outputUrl: z59.string().optional(),
2847
+ position: PluginAIInspirationPoint.optional()
2848
+ });
2849
+ var PluginAIInspirationDebugSummary = z59.record(z59.string(), JsonValue);
2850
+ var PluginAIInspirationRunMetadata = z59.object({
2851
+ geometryFidelity: z59.string().optional(),
2852
+ debugSummary: PluginAIInspirationDebugSummary.optional(),
2853
+ streetViewComposite: z59.object({
2854
+ used: z59.boolean(),
2855
+ renderMode: z59.enum(["prompt_refs_default", "masked_composite_pilot"]),
2856
+ backgroundLabel: z59.string().optional()
2857
+ }).optional()
2858
+ });
2859
+ var PluginAIInspirationGenerateArgs = z59.object({
2860
+ sourceShapeId: z59.string().min(1),
2861
+ prompt: z59.string().min(1).max(8e3),
2862
+ modelId: z59.string().optional(),
2863
+ referenceShapeIds: z59.array(z59.string()).max(12).optional(),
2864
+ referenceStrength: z59.enum(["low", "medium", "high"]).optional(),
2865
+ appliedPreset: PluginAIInspirationAppliedPreset.optional(),
2866
+ site: PluginAIInspirationSiteOptions.optional(),
2867
+ regionHint: PluginAIInspirationRegionHint.optional(),
2868
+ sketchGuidance: PluginAIInspirationSketchGuidance.optional(),
2869
+ video: PluginAIInspirationVideoOptions.optional()
2870
+ });
2871
+ var PluginAIInspirationRunResult = z59.object({
2872
+ outputs: z59.array(PluginAIInspirationOutput).min(1),
2873
+ metadata: PluginAIInspirationRunMetadata.optional()
2874
+ });
2875
+ var PluginAIInspirationRefineArgs = z59.object({
2876
+ sourceShapeId: z59.string().min(1),
2877
+ upscaleFactor: z59.union([z59.literal(1.5), z59.literal(2), z59.literal(4)]).optional()
2878
+ });
2879
+ var PluginPresentationAIInspirationApi = class {
1481
2880
  constructor() {
1482
2881
  }
1483
2882
  };
1484
2883
 
1485
- // src/api/units/index.ts
1486
- import * as z17 from "zod";
1487
- var PluginUnitsApi = class {
2884
+ // src/api/presentation/index.ts
2885
+ var PluginPresentationApi = class {
1488
2886
  constructor() {
1489
2887
  }
1490
2888
  };
1491
- var PUnitType = z17.enum([
1492
- "meters",
1493
- "feet-inches",
1494
- "inches",
1495
- "centimeters",
1496
- "millimeters",
1497
- "kilometers",
1498
- "miles"
1499
- ]);
1500
- var PluginUnitsConvertFromArgs = z17.object({
1501
- unit: PUnitType,
1502
- value: z17.number(),
1503
- degree: z17.number().int().min(1).max(3).optional()
1504
- });
1505
- var PluginUnitsConvertFromResult = z17.object({
1506
- value: z17.number()
1507
- });
1508
- var PluginUnitsConvertToArgs = z17.object({
1509
- unit: PUnitType,
1510
- value: z17.number(),
1511
- degree: z17.number().int().min(1).max(3).optional()
1512
- });
1513
- var PluginUnitsConvertToResult = z17.object({
1514
- value: z17.number()
1515
- });
1516
2889
 
1517
2890
  // src/api/index.ts
1518
2891
  var PluginApi = class {
@@ -1520,63 +2893,42 @@ var PluginApi = class {
1520
2893
  }
1521
2894
  };
1522
2895
  export {
1523
- PArc,
1524
- PCurve,
1525
- PLine,
1526
- PProfile,
1527
- PQuat,
2896
+ ArcHandle,
2897
+ BBoxComponents,
2898
+ BooleanOptions,
2899
+ BooleanOutcome,
2900
+ BrepHandle,
2901
+ CircleHandle,
2902
+ CommentHandle,
2903
+ ComponentHandle,
2904
+ ContourHandle,
2905
+ CurveHandle,
2906
+ DEFAULT_ERASE_STRATEGIES,
2907
+ EdgeHandle,
2908
+ ErasableEdgeRef,
2909
+ EraseStrategy,
2910
+ FaceHandle,
2911
+ HalfEdgeHandle,
2912
+ LineHandle,
2913
+ MassHandle,
2914
+ MaterialHandle,
2915
+ OffsetSplitOutcome,
1528
2916
  PUnitType,
1529
- PVec3,
1530
2917
  PluginAIInspirationAppliedPreset,
1531
- PluginAIInspirationCancelJobResult,
1532
2918
  PluginAIInspirationDebugSummary,
1533
- PluginAIInspirationDeleteRecipeArgs,
1534
- PluginAIInspirationDeleteRecipeResult,
1535
- PluginAIInspirationExtractRecipeFromShapeArgs,
1536
- PluginAIInspirationExtractionResult,
1537
2919
  PluginAIInspirationGenerateArgs,
1538
- PluginAIInspirationGenerationInputSnapshot,
1539
- PluginAIInspirationGetJobResult,
1540
- PluginAIInspirationGetModelCapabilitiesArgs,
1541
- PluginAIInspirationGetModelCapabilitiesResult,
1542
- PluginAIInspirationGetPresetCatalogResult,
1543
- PluginAIInspirationGetSelectionResult,
1544
- PluginAIInspirationGetWorkflowForShapeArgs,
1545
- PluginAIInspirationGetWorkflowForShapeResult,
1546
- PluginAIInspirationJob,
1547
- PluginAIInspirationJobArgs,
1548
- PluginAIInspirationJobProgress,
1549
- PluginAIInspirationJobStatus,
1550
- PluginAIInspirationListJobsResult,
1551
2920
  PluginAIInspirationListModelsResult,
1552
- PluginAIInspirationListRecipesResult,
1553
2921
  PluginAIInspirationListSourcesArgs,
1554
2922
  PluginAIInspirationListSourcesResult,
1555
2923
  PluginAIInspirationModel,
1556
- PluginAIInspirationModelCapability,
1557
2924
  PluginAIInspirationModelOutput,
1558
2925
  PluginAIInspirationOutput,
1559
2926
  PluginAIInspirationOutputKind,
1560
2927
  PluginAIInspirationPoint,
1561
- PluginAIInspirationPreset,
1562
- PluginAIInspirationPresetCategory,
1563
- PluginAIInspirationPresetReferenceImage,
1564
- PluginAIInspirationPromptStrategy,
1565
- PluginAIInspirationRecipe,
1566
- PluginAIInspirationRecipeDraft,
1567
- PluginAIInspirationRecipeSlot,
1568
- PluginAIInspirationRecipeStep,
1569
2928
  PluginAIInspirationRefineArgs,
1570
2929
  PluginAIInspirationRegionHint,
1571
- PluginAIInspirationRerunPlanResult,
1572
- PluginAIInspirationRerunSelectedBranchArgs,
1573
2930
  PluginAIInspirationRunMetadata,
1574
- PluginAIInspirationRunMode,
1575
- PluginAIInspirationRunRecipeArgs,
1576
2931
  PluginAIInspirationRunResult,
1577
- PluginAIInspirationRuntimeProvider,
1578
- PluginAIInspirationSaveRecipeArgs,
1579
- PluginAIInspirationSaveRecipeResult,
1580
2932
  PluginAIInspirationShapeKind,
1581
2933
  PluginAIInspirationShapeRef,
1582
2934
  PluginAIInspirationSiteOptions,
@@ -1586,15 +2938,10 @@ export {
1586
2938
  PluginAIInspirationVideoMode,
1587
2939
  PluginAIInspirationVideoMotion,
1588
2940
  PluginAIInspirationVideoOptions,
1589
- PluginAIInspirationWorkflow,
1590
- PluginAIInspirationWorkflowEdge,
1591
- PluginAIInspirationWorkflowNode,
1592
- PluginAIInspirationWorkflowOperation,
1593
- PluginAIInspirationWorkflowRunState,
1594
- PluginAIInspirationWorkflowVideoConfig,
2941
+ PluginAdjacencyLevel,
1595
2942
  PluginApi,
1596
- PluginArcApi,
1597
2943
  PluginAreaClass,
2944
+ PluginAreaUnit,
1598
2945
  PluginBuildableEnvelopeApi,
1599
2946
  PluginBuildableEnvelopeCreateArgs,
1600
2947
  PluginBuildableEnvelopeCreateResult,
@@ -1603,29 +2950,499 @@ export {
1603
2950
  PluginBuildableEnvelopeUpdateArgs,
1604
2951
  PluginBuildableEnvelopeUpdateResult,
1605
2952
  PluginBuildableEnvelopeVerticalCap,
1606
- PluginCopyArgs,
2953
+ PluginClassificationOption,
2954
+ PluginCommentApi,
2955
+ PluginCommentCreateArgs,
2956
+ PluginCommentRefArgs,
2957
+ PluginCommentTagArgs,
2958
+ PluginCommentUpdateArgs,
1607
2959
  PluginCopyMode,
1608
- PluginCopyResult,
1609
2960
  PluginCoreApi,
1610
- PluginCurveApi,
1611
- PluginDepartmentApi,
1612
- PluginDepartmentCreateArgs,
1613
- PluginDepartmentCreateResult,
1614
- PluginDepartmentEntry,
1615
- PluginDepartmentGetAllResult,
2961
+ PluginCoreAssignOutcome,
2962
+ PluginCoreBuildingRef,
2963
+ PluginCoreBuildingsApi,
2964
+ PluginCoreBuildingsCopyArgs,
2965
+ PluginCoreBuildingsCopyResult,
2966
+ PluginCoreBuildingsCreateArgs,
2967
+ PluginCoreBuildingsCreateResult,
2968
+ PluginCoreBuildingsDeleteArgs,
2969
+ PluginCoreBuildingsDeleteResult,
2970
+ PluginCoreBuildingsGetActiveResult,
2971
+ PluginCoreBuildingsGetArgs,
2972
+ PluginCoreBuildingsGetResult,
2973
+ PluginCoreBuildingsListResult,
2974
+ PluginCoreBuildingsListStoreysArgs,
2975
+ PluginCoreBuildingsListStoreysResult,
2976
+ PluginCoreBuildingsSetActiveArgs,
2977
+ PluginCoreBuildingsSetActiveResult,
2978
+ PluginCoreBuildingsUpdateArgs,
2979
+ PluginCoreBuildingsUpdateResult,
2980
+ PluginCoreComponentTag,
2981
+ PluginCoreGroupMember,
2982
+ PluginCoreGroupRef,
2983
+ PluginCoreGroupsApi,
2984
+ PluginCoreGroupsCreateArgs,
2985
+ PluginCoreGroupsCreateResult,
2986
+ PluginCoreGroupsDeleteArgs,
2987
+ PluginCoreGroupsDeleteResult,
2988
+ PluginCoreGroupsGetArgs,
2989
+ PluginCoreGroupsGetBoundsArgs,
2990
+ PluginCoreGroupsGetBoundsResult,
2991
+ PluginCoreGroupsGetForComponentArgs,
2992
+ PluginCoreGroupsGetForComponentResult,
2993
+ PluginCoreGroupsGetResult,
2994
+ PluginCoreGroupsIsLockedArgs,
2995
+ PluginCoreGroupsIsLockedResult,
2996
+ PluginCoreGroupsListMembersArgs,
2997
+ PluginCoreGroupsListMembersResult,
2998
+ PluginCoreGroupsListResult,
2999
+ PluginCoreGroupsUpdateArgs,
3000
+ PluginCoreGroupsUpdateResult,
3001
+ PluginCoreLayer,
3002
+ PluginCoreLayerType,
3003
+ PluginCoreLayersApi,
3004
+ PluginCoreLayersGetActiveArgs,
3005
+ PluginCoreLayersGetActiveResult,
3006
+ PluginCoreLayersGetArgs,
3007
+ PluginCoreLayersGetResult,
3008
+ PluginCoreLayersListArgs,
3009
+ PluginCoreLayersListResult,
3010
+ PluginCoreLayersSetActiveArgs,
3011
+ PluginCoreLayersSetActiveResult,
3012
+ PluginCoreLayersUpdateArgs,
3013
+ PluginCoreLayersUpdateResult,
3014
+ PluginCoreTag,
3015
+ PluginCoreTagCategory,
3016
+ PluginCoreTagsApi,
3017
+ PluginCoreTagsAssignArgs,
3018
+ PluginCoreTagsAssignResult,
3019
+ PluginCoreTagsCreateArgs,
3020
+ PluginCoreTagsCreateCategoryArgs,
3021
+ PluginCoreTagsCreateCategoryResult,
3022
+ PluginCoreTagsCreateResult,
3023
+ PluginCoreTagsDeleteArgs,
3024
+ PluginCoreTagsDeleteCategoryArgs,
3025
+ PluginCoreTagsDeleteCategoryResult,
3026
+ PluginCoreTagsDeleteResult,
3027
+ PluginCoreTagsGetArgs,
3028
+ PluginCoreTagsGetCategoryArgs,
3029
+ PluginCoreTagsGetCategoryResult,
3030
+ PluginCoreTagsGetResult,
3031
+ PluginCoreTagsGetTagsForComponentArgs,
3032
+ PluginCoreTagsGetTagsForComponentResult,
3033
+ PluginCoreTagsListArgs,
3034
+ PluginCoreTagsListCategoriesResult,
3035
+ PluginCoreTagsListComponentsArgs,
3036
+ PluginCoreTagsListComponentsResult,
3037
+ PluginCoreTagsListResult,
3038
+ PluginCoreTagsUnassignArgs,
3039
+ PluginCoreTagsUnassignResult,
3040
+ PluginCoreTagsUpdateArgs,
3041
+ PluginCoreTagsUpdateCategoryArgs,
3042
+ PluginCoreTagsUpdateCategoryResult,
3043
+ PluginCoreTagsUpdateResult,
3044
+ PluginCreateSpaceItem,
1616
3045
  PluginDepartmentId,
1617
- PluginDocumentationAIInspirationApi,
1618
- PluginDocumentationApi,
3046
+ PluginDesignApi,
3047
+ PluginDesignBooleanApi,
3048
+ PluginDesignBooleanIntersectArgs,
3049
+ PluginDesignBooleanSubtractArgs,
3050
+ PluginDesignBooleanUnionArgs,
3051
+ PluginDesignChangeResult,
3052
+ PluginDesignCreateApi,
3053
+ PluginDesignCreateBeamArgs,
3054
+ PluginDesignCreateCeilingArgs,
3055
+ PluginDesignCreateColumnArgs,
3056
+ PluginDesignCreateCopyArgs,
3057
+ PluginDesignCreateFloorArgs,
3058
+ PluginDesignCreateFurnitureArgs,
3059
+ PluginDesignCreateMassArgs,
3060
+ PluginDesignCreateReferenceLinesArgs,
3061
+ PluginDesignCreateRoofArgs,
3062
+ PluginDesignCreateSlabArgs,
3063
+ PluginDesignCreateSpaceArgs,
3064
+ PluginDesignCreateStaircaseArgs,
3065
+ PluginDesignCreateWallsArgs,
3066
+ PluginDesignDeleteApi,
3067
+ PluginDesignDeleteEntitiesArgs,
3068
+ PluginDesignDoorArgs,
3069
+ PluginDesignDoorMirrorArgs,
3070
+ PluginDesignDoorSetHeightArgs,
3071
+ PluginDesignDoorSetWidthArgs,
3072
+ PluginDesignDoorsApi,
3073
+ PluginDesignEditApi,
3074
+ PluginDesignEraseApi,
3075
+ PluginDesignEraseEdgeArgs,
3076
+ PluginDesignEraseEdgeResult,
3077
+ PluginDesignFurnitureApi,
3078
+ PluginDesignFurnitureExistsArgs,
3079
+ PluginDesignFurnitureGetCatalogItemArgs,
3080
+ PluginDesignFurnitureListCatalogArgs,
3081
+ PluginDesignIsLockedArgs,
3082
+ PluginDesignListErasableEdgesArgs,
3083
+ PluginDesignLockArgs,
3084
+ PluginDesignMaterialsApi,
3085
+ PluginDesignMaterialsApplyArgs,
3086
+ PluginDesignMaterialsComponentArgs,
3087
+ PluginDesignMaterialsCreateArgs,
3088
+ PluginDesignMaterialsGetInfoArgs,
3089
+ PluginDesignMaterialsListArgs,
3090
+ PluginDesignMaterialsResetArgs,
3091
+ PluginDesignMoveArgs,
3092
+ PluginDesignOffsetSplitArgs,
3093
+ PluginDesignQueryApi,
3094
+ PluginDesignQueryComponentArgs,
3095
+ PluginDesignQueryComponentsArgs,
3096
+ PluginDesignQueryGeometryApi,
3097
+ PluginDesignQueryGeometryGetBottomContourArgs,
3098
+ PluginDesignQueryGeometryGetBrepArgs,
3099
+ PluginDesignQueryGeometryGetCenterlineArgs,
3100
+ PluginDesignQueryGetFootprintArgs,
3101
+ PluginDesignQueryIdArgs,
3102
+ PluginDesignQueryListByTypeArgs,
3103
+ PluginDesignQuerySpacesApi,
3104
+ PluginDesignQuerySpacesGetArgs,
3105
+ PluginDesignQuerySpacesGetProperty,
3106
+ PluginDesignQuerySpacesGetResult,
3107
+ PluginDesignRotateArgs,
3108
+ PluginDesignSelectionAddArgs,
3109
+ PluginDesignSelectionApi,
3110
+ PluginDesignSelectionRemoveArgs,
3111
+ PluginDesignSelectionSetArgs,
3112
+ PluginDesignTransformApi,
3113
+ PluginDesignUnlockArgs,
3114
+ PluginDesignUpdateApi,
3115
+ PluginDesignWindowArgs,
3116
+ PluginDesignWindowSetHeightArgs,
3117
+ PluginDesignWindowSetWidthArgs,
3118
+ PluginDesignWindowsApi,
1619
3119
  PluginEntityApi,
3120
+ PluginEntityFilter,
3121
+ PluginEntityMeasurements,
3122
+ PluginEntityProperties,
3123
+ PluginEntityType,
3124
+ PluginFurnitureCatalogItem,
1620
3125
  PluginGeomApi,
1621
- PluginLineApi,
3126
+ PluginGeomCreateApi,
3127
+ PluginGeomCreateArcArgs,
3128
+ PluginGeomCreateCircleArgs,
3129
+ PluginGeomCreateContourFromProfileArgs,
3130
+ PluginGeomCreateContourFromProfilesArgs,
3131
+ PluginGeomCreateLineArgs,
3132
+ PluginGeomCreateProfileFromCurvesArgs,
3133
+ PluginGeomCreateProfileFromLinePointsArgs,
3134
+ PluginGeomDeleteApi,
3135
+ PluginGeomDeleteContourArgs,
3136
+ PluginGeomDeleteProfileArgs,
3137
+ PluginGeomQueryApi,
3138
+ PluginGeomQueryArcApi,
3139
+ PluginGeomQueryArcGetAxisArgs,
3140
+ PluginGeomQueryArcGetCentreArgs,
3141
+ PluginGeomQueryArcGetRadiusArgs,
3142
+ PluginGeomQueryArcGetSweepAngleArgs,
3143
+ PluginGeomQueryArcIsValidArgs,
3144
+ PluginGeomQueryBrepApi,
3145
+ PluginGeomQueryBrepGetBoundingBoxArgs,
3146
+ PluginGeomQueryBrepGetCentroidArgs,
3147
+ PluginGeomQueryBrepGetEdgeArgs,
3148
+ PluginGeomQueryBrepGetEdgeCountArgs,
3149
+ PluginGeomQueryBrepGetFaceCountArgs,
3150
+ PluginGeomQueryBrepGetHalfEdgeCountArgs,
3151
+ PluginGeomQueryBrepGetVertexCountArgs,
3152
+ PluginGeomQueryBrepGetVertexPositionArgs,
3153
+ PluginGeomQueryBrepHasEdgeArgs,
3154
+ PluginGeomQueryBrepIsEqualArgs,
3155
+ PluginGeomQueryBrepListEdgesArgs,
3156
+ PluginGeomQueryBrepListEdgesBetweenArgs,
3157
+ PluginGeomQueryBrepListFacesArgs,
3158
+ PluginGeomQueryBrepListHalfEdgesArgs,
3159
+ PluginGeomQueryBrepListVertexPositionsArgs,
3160
+ PluginGeomQueryBrepListVerticesArgs,
3161
+ PluginGeomQueryCircleApi,
3162
+ PluginGeomQueryCircleGetAxisArgs,
3163
+ PluginGeomQueryCircleGetCentreArgs,
3164
+ PluginGeomQueryCircleGetLengthArgs,
3165
+ PluginGeomQueryCircleGetNearestPointArgs,
3166
+ PluginGeomQueryCircleGetNormalArgs,
3167
+ PluginGeomQueryCircleGetPointAtDistanceArgs,
3168
+ PluginGeomQueryCircleGetRadiusArgs,
3169
+ PluginGeomQueryCircleGetTangentArgs,
3170
+ PluginGeomQueryCircleHasPointArgs,
3171
+ PluginGeomQueryCircleIsEqualArgs,
3172
+ PluginGeomQueryCircleIsValidArgs,
3173
+ PluginGeomQueryCircleListPointsArgs,
3174
+ PluginGeomQueryContourApi,
3175
+ PluginGeomQueryContourGetAreaArgs,
3176
+ PluginGeomQueryContourGetBoundingBoxArgs,
3177
+ PluginGeomQueryContourGetHoleCountArgs,
3178
+ PluginGeomQueryContourGetNearestPointArgs,
3179
+ PluginGeomQueryContourGetNormalArgs,
3180
+ PluginGeomQueryContourGetOuterProfileArgs,
3181
+ PluginGeomQueryContourGetPerimeterArgs,
3182
+ PluginGeomQueryContourHasPointArgs,
3183
+ PluginGeomQueryContourIsClockwiseArgs,
3184
+ PluginGeomQueryContourIsEmptyArgs,
3185
+ PluginGeomQueryContourIsEqualArgs,
3186
+ PluginGeomQueryContourIsOnBoundaryArgs,
3187
+ PluginGeomQueryContourIsOrientationValidArgs,
3188
+ PluginGeomQueryContourIsPlanarArgs,
3189
+ PluginGeomQueryContourIsSelfIntersectingArgs,
3190
+ PluginGeomQueryContourListHolesArgs,
3191
+ PluginGeomQueryCurveApi,
3192
+ PluginGeomQueryCurveGetChordLengthArgs,
3193
+ PluginGeomQueryCurveGetCommonPartArgs,
3194
+ PluginGeomQueryCurveGetCurvatureArgs,
3195
+ PluginGeomQueryCurveGetDistanceAlongArgs,
3196
+ PluginGeomQueryCurveGetDistanceBetweenArgs,
3197
+ PluginGeomQueryCurveGetDistanceToPointArgs,
3198
+ PluginGeomQueryCurveGetEndPointArgs,
3199
+ PluginGeomQueryCurveGetLengthArgs,
3200
+ PluginGeomQueryCurveGetMergedCurveArgs,
3201
+ PluginGeomQueryCurveGetMidPointArgs,
3202
+ PluginGeomQueryCurveGetNearestPointArgs,
3203
+ PluginGeomQueryCurveGetNormalArgs,
3204
+ PluginGeomQueryCurveGetParameterAtPointArgs,
3205
+ PluginGeomQueryCurveGetPointAtDistanceArgs,
3206
+ PluginGeomQueryCurveGetProjectionArgs,
3207
+ PluginGeomQueryCurveGetShortestGapArgs,
3208
+ PluginGeomQueryCurveGetStartPointArgs,
3209
+ PluginGeomQueryCurveGetTangentArgs,
3210
+ PluginGeomQueryCurveHasPointArgs,
3211
+ PluginGeomQueryCurveIsContinuousArgs,
3212
+ PluginGeomQueryCurveIsEqualArgs,
3213
+ PluginGeomQueryCurveIsLinearArgs,
3214
+ PluginGeomQueryCurveIsOnCurveArgs,
3215
+ PluginGeomQueryCurveIsOverlappingArgs,
3216
+ PluginGeomQueryCurveIsParallelArgs,
3217
+ PluginGeomQueryCurveListIntersectionsArgs,
3218
+ PluginGeomQueryCurveListPointsArgs,
3219
+ PluginGeomQueryCurveListSubdivisionsArgs,
3220
+ PluginGeomQueryEdgeApi,
3221
+ PluginGeomQueryEdgeGetCurveArgs,
3222
+ PluginGeomQueryEdgeGetHalfEdgeArgs,
3223
+ PluginGeomQueryEdgeGetIndexArgs,
3224
+ PluginGeomQueryEdgeListFacesArgs,
3225
+ PluginGeomQueryEdgeListVerticesArgs,
3226
+ PluginGeomQueryFaceApi,
3227
+ PluginGeomQueryFaceGetHalfEdgeArgs,
3228
+ PluginGeomQueryFaceGetHoleContainingHalfEdgeArgs,
3229
+ PluginGeomQueryFaceGetHoleCountArgs,
3230
+ PluginGeomQueryFaceGetIndexArgs,
3231
+ PluginGeomQueryFaceGetMaterialIndexArgs,
3232
+ PluginGeomQueryFaceHasHolesArgs,
3233
+ PluginGeomQueryFaceListAdjacentFacesArgs,
3234
+ PluginGeomQueryFaceListEdgesArgs,
3235
+ PluginGeomQueryFaceListHalfEdgesArgs,
3236
+ PluginGeomQueryFaceListHoleHalfEdgesArgs,
3237
+ PluginGeomQueryFaceListHolesArgs,
3238
+ PluginGeomQueryFaceListVertexPositionsArgs,
3239
+ PluginGeomQueryFaceListVertexPositionsWithCurvesArgs,
3240
+ PluginGeomQueryFaceListVerticesArgs,
3241
+ PluginGeomQueryHalfEdgeApi,
3242
+ PluginGeomQueryHalfEdgeGetEdgeArgs,
3243
+ PluginGeomQueryHalfEdgeGetFaceArgs,
3244
+ PluginGeomQueryHalfEdgeGetFlipArgs,
3245
+ PluginGeomQueryHalfEdgeGetNextArgs,
3246
+ PluginGeomQueryHalfEdgeGetPrevArgs,
3247
+ PluginGeomQueryHalfEdgeGetVertexArgs,
3248
+ PluginGeomQueryHalfEdgeIsForwardArgs,
3249
+ PluginGeomQueryHalfEdgeIsOnBoundaryArgs,
3250
+ PluginGeomQueryProfileApi,
3251
+ PluginGeomQueryProfileGetAreaArgs,
3252
+ PluginGeomQueryProfileGetBoundingBoxArgs,
3253
+ PluginGeomQueryProfileGetNearestPointArgs,
3254
+ PluginGeomQueryProfileGetNormalArgs,
3255
+ PluginGeomQueryProfileGetPerimeterArgs,
3256
+ PluginGeomQueryProfileHasPointArgs,
3257
+ PluginGeomQueryProfileIsClockwiseArgs,
3258
+ PluginGeomQueryProfileIsClosedArgs,
3259
+ PluginGeomQueryProfileIsEmptyArgs,
3260
+ PluginGeomQueryProfileIsEqualArgs,
3261
+ PluginGeomQueryProfileIsOnBoundaryArgs,
3262
+ PluginGeomQueryProfileIsPlanarArgs,
3263
+ PluginGeomQueryProfileIsSelfIntersectingArgs,
3264
+ PluginGeomQueryProfileListCurvesArgs,
3265
+ PluginGeomQueryProfileListPointsArgs,
3266
+ PluginGeomQueryVertexApi,
3267
+ PluginGeomQueryVertexGetHalfEdgeArgs,
3268
+ PluginGeomQueryVertexGetIndexArgs,
3269
+ PluginGeomQueryVertexGetPositionArgs,
3270
+ PluginGeomQueryVertexListEdgesArgs,
3271
+ PluginGeomQueryVertexListFacesArgs,
3272
+ PluginGeomQueryVertexListHalfEdgesArgs,
3273
+ PluginGeomQueryVertexListNeighborsArgs,
3274
+ PluginGeomUpdateApi,
3275
+ PluginGeomUpdateContourAddHoleArgs,
3276
+ PluginGeomUpdateContourApi,
3277
+ PluginGeomUpdateContourMirrorArgs,
3278
+ PluginGeomUpdateContourMoveArgs,
3279
+ PluginGeomUpdateContourOffsetArgs,
3280
+ PluginGeomUpdateContourRemoveHoleArgs,
3281
+ PluginGeomUpdateContourRotateArgs,
3282
+ PluginGeomUpdateContourScaleArgs,
3283
+ PluginGeomUpdateCurveApi,
3284
+ PluginGeomUpdateCurveExtendArgs,
3285
+ PluginGeomUpdateCurveOffsetArgs,
3286
+ PluginGeomUpdateCurveReverseArgs,
3287
+ PluginGeomUpdateCurveSplitArgs,
3288
+ PluginGeomUpdateCurveTrimArgs,
3289
+ PluginGeomUpdateProfileAddArgs,
3290
+ PluginGeomUpdateProfileApi,
3291
+ PluginGeomUpdateProfileMirrorArgs,
3292
+ PluginGeomUpdateProfileMoveArgs,
3293
+ PluginGeomUpdateProfileOffsetArgs,
3294
+ PluginGeomUpdateProfileRemoveArgs,
3295
+ PluginGeomUpdateProfileReverseArgs,
3296
+ PluginGeomUpdateProfileRotateArgs,
3297
+ PluginGeomUpdateProfileScaleArgs,
3298
+ PluginGeomUpdateProfileSimplifyArgs,
3299
+ PluginGridApi,
3300
+ PluginGridValueArgs,
3301
+ PluginHistoryApi,
3302
+ PluginHistoryStepArgs,
3303
+ PluginHistoryStepResult,
1622
3304
  PluginMassType,
3305
+ PluginMaterialInfo,
3306
+ PluginMaterialResult,
3307
+ PluginMaterialSpec,
1623
3308
  PluginMathApi,
1624
- PluginMoveArgs,
1625
- PluginOffsetArgs,
1626
- PluginOffsetResult,
1627
- PluginProfileApi,
1628
- PluginProfileFromLinePointsArgs,
3309
+ PluginMirrorAxis,
3310
+ PluginPresentationAIInspirationApi,
3311
+ PluginPresentationApi,
3312
+ PluginPresentationDiagramsApi,
3313
+ PluginPresentationDiagramsPlaceArgs,
3314
+ PluginPresentationDiagramsPlaceResult,
3315
+ PluginPresentationImageFormat,
3316
+ PluginPresentationImportApi,
3317
+ PluginPresentationImportArgs,
3318
+ PluginPresentationImportResult,
3319
+ PluginPresentationSheet,
3320
+ PluginPresentationSheetsApi,
3321
+ PluginPresentationSheetsCreateArgs,
3322
+ PluginPresentationSheetsGetArgs,
3323
+ PluginPresentationSheetsGetResult,
3324
+ PluginPresentationSheetsListResult,
3325
+ PluginPresentationSheetsPlaceArgs,
3326
+ PluginPresentationSheetsPlaceResult,
3327
+ PluginPresentationView,
3328
+ PluginPresentationViewType,
3329
+ PluginPresentationViewsApi,
3330
+ PluginPresentationViewsCaptureArgs,
3331
+ PluginPresentationViewsCaptureResult,
3332
+ PluginPresentationViewsCreateArgs,
3333
+ PluginPresentationViewsCreateResult,
3334
+ PluginPresentationViewsGetArgs,
3335
+ PluginPresentationViewsGetResult,
3336
+ PluginPresentationViewsListResult,
3337
+ PluginPresentationViewsSetActiveArgs,
3338
+ PluginPresentationViewsSetActiveResult,
3339
+ PluginProgramAdjacencyApi,
3340
+ PluginProgramAdjacencyComputeResult,
3341
+ PluginProgramAdjacencyGetMatrixArgs,
3342
+ PluginProgramAdjacencyGetMatrixResult,
3343
+ PluginProgramApi,
3344
+ PluginProgramAreaGroup,
3345
+ PluginProgramAreaGroupBy,
3346
+ PluginProgramAreaMember,
3347
+ PluginProgramAreaSummary,
3348
+ PluginProgramAreasApi,
3349
+ PluginProgramAreasGetResult,
3350
+ PluginProgramAreasListArgs,
3351
+ PluginProgramAreasListMembersArgs,
3352
+ PluginProgramAreasListMembersResult,
3353
+ PluginProgramAreasListResult,
3354
+ PluginProgramAreasUpdateArgs,
3355
+ PluginProgramAreasUpdateResult,
3356
+ PluginProgramClassificationApi,
3357
+ PluginProgramClassificationListTagsArgs,
3358
+ PluginProgramClassificationTagsResult,
3359
+ PluginProgramClassificationTypesResult,
3360
+ PluginProgramCore,
3361
+ PluginProgramCoreSpec,
3362
+ PluginProgramCoresApi,
3363
+ PluginProgramCoresCreateArgs,
3364
+ PluginProgramCoresCreateResult,
3365
+ PluginProgramCoresIsCoreArgs,
3366
+ PluginProgramCoresListResult,
3367
+ PluginProgramDepartment,
3368
+ PluginProgramDepartmentMetric,
3369
+ PluginProgramDepartmentRecord,
3370
+ PluginProgramDepartmentsApi,
3371
+ PluginProgramDepartmentsAssignArgs,
3372
+ PluginProgramDepartmentsAssignResult,
3373
+ PluginProgramDepartmentsCreateArgs,
3374
+ PluginProgramDepartmentsCreateResult,
3375
+ PluginProgramDepartmentsDeleteArgs,
3376
+ PluginProgramDepartmentsDeleteResult,
3377
+ PluginProgramDepartmentsGetArgs,
3378
+ PluginProgramDepartmentsGetResult,
3379
+ PluginProgramDepartmentsListResult,
3380
+ PluginProgramDepartmentsSetTargetAreaArgs,
3381
+ PluginProgramDepartmentsSetTargetAreaResult,
3382
+ PluginProgramDepartmentsUnassignArgs,
3383
+ PluginProgramDepartmentsUnassignResult,
3384
+ PluginProgramDepartmentsUpdateArgs,
3385
+ PluginProgramDepartmentsUpdateResult,
3386
+ PluginProgramLayoutApi,
3387
+ PluginProgramLayoutRunResult,
3388
+ PluginProgramMetricsApi,
3389
+ PluginProgramMetricsSummary,
3390
+ PluginProgramSiteApi,
3391
+ PluginProgramSiteAreaResult,
3392
+ PluginProgramSiteContext,
3393
+ PluginProgramSiteContextResult,
3394
+ PluginProgramSiteListGeoPolygonsResult,
3395
+ PluginProgramSiteListPolygonsResult,
3396
+ PluginProgramSiteSnapshot,
3397
+ PluginProgramSpreadsheetAddChartArgs,
3398
+ PluginProgramSpreadsheetAddChartResult,
3399
+ PluginProgramSpreadsheetAddConditionalFormattingArgs,
3400
+ PluginProgramSpreadsheetAddConditionalFormattingResult,
3401
+ PluginProgramSpreadsheetApi,
3402
+ PluginProgramSpreadsheetBindingsApi,
3403
+ PluginProgramSpreadsheetBindingsCreateArgs,
3404
+ PluginProgramSpreadsheetBindingsCreateResult,
3405
+ PluginProgramSpreadsheetBindingsListResult,
3406
+ PluginProgramSpreadsheetBindingsRefreshArgs,
3407
+ PluginProgramSpreadsheetBindingsRefreshResult,
3408
+ PluginProgramSpreadsheetCreateSheetArgs,
3409
+ PluginProgramSpreadsheetCreateSheetResult,
3410
+ PluginProgramSpreadsheetExportArgs,
3411
+ PluginProgramSpreadsheetExportResult,
3412
+ PluginProgramSpreadsheetGetAuditLogArgs,
3413
+ PluginProgramSpreadsheetGetAuditLogResult,
3414
+ PluginProgramSpreadsheetGetProgramResult,
3415
+ PluginProgramSpreadsheetGetSheetDataArgs,
3416
+ PluginProgramSpreadsheetGetSheetDataResult,
3417
+ PluginProgramSpreadsheetGetTakeoffResult,
3418
+ PluginProgramSpreadsheetHighlightCellsArgs,
3419
+ PluginProgramSpreadsheetHighlightCellsResult,
3420
+ PluginProgramSpreadsheetListSheetsResult,
3421
+ PluginProgramSpreadsheetMergeCellsArgs,
3422
+ PluginProgramSpreadsheetMergeCellsResult,
3423
+ PluginProgramSpreadsheetPingResult,
3424
+ PluginProgramSpreadsheetRecalculateArgs,
3425
+ PluginProgramSpreadsheetRecalculateResult,
3426
+ PluginProgramSpreadsheetRenderArgs,
3427
+ PluginProgramSpreadsheetRenderDatasetArgs,
3428
+ PluginProgramSpreadsheetRenderResult,
3429
+ PluginProgramSpreadsheetRunScriptArgs,
3430
+ PluginProgramSpreadsheetRunScriptResult,
3431
+ PluginProgramSpreadsheetSetFormulasArgs,
3432
+ PluginProgramSpreadsheetSetFormulasResult,
3433
+ PluginProgramSpreadsheetSetStylesArgs,
3434
+ PluginProgramSpreadsheetSetStylesResult,
3435
+ PluginProgramSpreadsheetSetValuesArgs,
3436
+ PluginProgramSpreadsheetSetValuesResult,
3437
+ PluginProgramSpreadsheetTemplatesApi,
3438
+ PluginProgramSpreadsheetTemplatesApplyArgs,
3439
+ PluginProgramSpreadsheetTemplatesApplyResult,
3440
+ PluginProgramSpreadsheetTemplatesCreateArgs,
3441
+ PluginProgramSpreadsheetTemplatesCreateResult,
3442
+ PluginProgramSpreadsheetTransactionArgs,
3443
+ PluginProgramSpreadsheetTransactionResult,
3444
+ PluginProjectApi,
3445
+ PluginProjectSettingsApi,
1629
3446
  PluginQuatApi,
1630
3447
  PluginReferenceLineApi,
1631
3448
  PluginReferenceLineCreateMultiArgs,
@@ -1635,10 +3452,17 @@ export {
1635
3452
  PluginReferenceLineGetArgs,
1636
3453
  PluginReferenceLineGetProperty,
1637
3454
  PluginReferenceLineGetResult,
1638
- PluginRotateArgs,
1639
- PluginSelectionApi,
1640
- PluginSelectionGetResult,
1641
- PluginSpaceApi,
3455
+ PluginReferenceLineStyle,
3456
+ PluginSheetPosition,
3457
+ PluginSiteBounds,
3458
+ PluginSiteContextParcel,
3459
+ PluginSiteFootprintPoint,
3460
+ PluginSiteGeoPoint,
3461
+ PluginSiteLatLng,
3462
+ PluginSitePolygon,
3463
+ PluginSlabType,
3464
+ PluginSnapValueArgs,
3465
+ PluginSnapsApi,
1642
3466
  PluginSpaceBulkCreateArgs,
1643
3467
  PluginSpaceBulkCreateItem,
1644
3468
  PluginSpaceBulkCreateResult,
@@ -1652,15 +3476,48 @@ export {
1652
3476
  PluginSpaceCreateRectangularArgs,
1653
3477
  PluginSpaceCreateRectangularResult,
1654
3478
  PluginSpaceDeleteArgs,
3479
+ PluginSpaceGeometryUpdate,
1655
3480
  PluginSpaceGetAllResult,
1656
3481
  PluginSpaceGetArgs,
1657
3482
  PluginSpaceGetProperty,
1658
3483
  PluginSpaceGetResult,
3484
+ PluginSpacePropertyUpdates,
3485
+ PluginSpaceTag,
1659
3486
  PluginSpaceType,
1660
3487
  PluginSpaceUpdateArgs,
1661
3488
  PluginSpaceUpdateGeometryFromProfileArgs,
1662
3489
  PluginSpaceUpdateGeometryFromProfileResult,
1663
3490
  PluginSpaceUpdateResult,
3491
+ PluginSpreadsheetAlign,
3492
+ PluginSpreadsheetAuditEntry,
3493
+ PluginSpreadsheetAuditStatus,
3494
+ PluginSpreadsheetBinding,
3495
+ PluginSpreadsheetBindingMode,
3496
+ PluginSpreadsheetBindingRefresh,
3497
+ PluginSpreadsheetBindingSource,
3498
+ PluginSpreadsheetBindingTarget,
3499
+ PluginSpreadsheetCell,
3500
+ PluginSpreadsheetCellStyle,
3501
+ PluginSpreadsheetChartType,
3502
+ PluginSpreadsheetColumn,
3503
+ PluginSpreadsheetConditionalRule,
3504
+ PluginSpreadsheetConditionalRuleType,
3505
+ PluginSpreadsheetExportFormat,
3506
+ PluginSpreadsheetFontStyle,
3507
+ PluginSpreadsheetFontWeight,
3508
+ PluginSpreadsheetFormula,
3509
+ PluginSpreadsheetHorizontalAlign,
3510
+ PluginSpreadsheetProgramRow,
3511
+ PluginSpreadsheetRangeStyle,
3512
+ PluginSpreadsheetSheetInfo,
3513
+ PluginSpreadsheetTakeoffRow,
3514
+ PluginSpreadsheetTemplateScope,
3515
+ PluginSpreadsheetTotal,
3516
+ PluginSpreadsheetTransactionMethod,
3517
+ PluginSpreadsheetTransactionOp,
3518
+ PluginSpreadsheetVerticalAlign,
3519
+ PluginSpreadsheetWhenExists,
3520
+ PluginStaircasePreset,
1664
3521
  PluginStoryApi,
1665
3522
  PluginStoryCreateArgs,
1666
3523
  PluginStoryCreateResult,
@@ -1670,14 +3527,21 @@ export {
1670
3527
  PluginStoryGetResult,
1671
3528
  PluginStoryUpdateArgs,
1672
3529
  PluginStoryUpdateResult,
1673
- PluginToolsApi,
1674
- PluginTransformApi,
3530
+ PluginToleranceArgs,
1675
3531
  PluginUnitsApi,
1676
- PluginUnitsConvertFromArgs,
1677
- PluginUnitsConvertFromResult,
1678
- PluginUnitsConvertToArgs,
1679
- PluginUnitsConvertToResult,
3532
+ PluginUnitsConvertArgs,
3533
+ PluginUnitsSetTypeArgs,
3534
+ PluginUpdateSpaceItem,
1680
3535
  PluginVec3Api,
1681
- PluginWellKnownDepartmentId
3536
+ PluginWellKnownDepartmentId,
3537
+ PluginWindowDimensions,
3538
+ PluginZoomApi,
3539
+ ProfileHandle,
3540
+ QuatComponents,
3541
+ QuatHandle,
3542
+ Vec3Components,
3543
+ Vec3Handle,
3544
+ VertexHandle,
3545
+ handleSchema
1682
3546
  };
1683
3547
  //# sourceMappingURL=index.js.map