@snaptrude/plugin-core 0.0.0-dev-20260708130115

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 (241) hide show
  1. package/AGENTS.md +227 -0
  2. package/CHANGELOG.md +119 -0
  3. package/CLAUDE.md +11 -0
  4. package/api-manifest.json +5004 -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 +33 -0
  14. package/dist/api/core/geom/index.d.ts.map +1 -0
  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 +63 -0
  50. package/dist/api/core/index.d.ts.map +1 -0
  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/index.d.ts +18 -0
  54. package/dist/api/core/math/index.d.ts.map +1 -0
  55. package/dist/api/core/math/quat.d.ts +170 -0
  56. package/dist/api/core/math/quat.d.ts.map +1 -0
  57. package/dist/api/core/math/vec3.d.ts +174 -0
  58. package/dist/api/core/math/vec3.d.ts.map +1 -0
  59. package/dist/api/core/project/index.d.ts +399 -0
  60. package/dist/api/core/project/index.d.ts.map +1 -0
  61. package/dist/api/core/tags.d.ts +755 -0
  62. package/dist/api/core/tags.d.ts.map +1 -0
  63. package/dist/api/core/units/index.d.ts +175 -0
  64. package/dist/api/core/units/index.d.ts.map +1 -0
  65. package/dist/api/core/zoom/index.d.ts +45 -0
  66. package/dist/api/core/zoom/index.d.ts.map +1 -0
  67. package/dist/api/design/boolean/index.d.ts +168 -0
  68. package/dist/api/design/boolean/index.d.ts.map +1 -0
  69. package/dist/api/design/create/index.d.ts +828 -0
  70. package/dist/api/design/create/index.d.ts.map +1 -0
  71. package/dist/api/design/delete/index.d.ts +63 -0
  72. package/dist/api/design/delete/index.d.ts.map +1 -0
  73. package/dist/api/design/doors/index.d.ts +268 -0
  74. package/dist/api/design/doors/index.d.ts.map +1 -0
  75. package/dist/api/design/edit/index.d.ts +49 -0
  76. package/dist/api/design/edit/index.d.ts.map +1 -0
  77. package/dist/api/design/erase/index.d.ts +160 -0
  78. package/dist/api/design/erase/index.d.ts.map +1 -0
  79. package/dist/api/design/furniture/index.d.ts +123 -0
  80. package/dist/api/design/furniture/index.d.ts.map +1 -0
  81. package/dist/api/design/index.d.ts +153 -0
  82. package/dist/api/design/index.d.ts.map +1 -0
  83. package/dist/api/design/lock.d.ts +41 -0
  84. package/dist/api/design/lock.d.ts.map +1 -0
  85. package/dist/api/design/materials/index.d.ts +297 -0
  86. package/dist/api/design/materials/index.d.ts.map +1 -0
  87. package/dist/api/design/query/geometry/index.d.ts +140 -0
  88. package/dist/api/design/query/geometry/index.d.ts.map +1 -0
  89. package/dist/api/design/query/index.d.ts +1011 -0
  90. package/dist/api/design/query/index.d.ts.map +1 -0
  91. package/dist/api/design/query/spaces.d.ts +221 -0
  92. package/dist/api/design/query/spaces.d.ts.map +1 -0
  93. package/dist/api/design/selection/index.d.ts +138 -0
  94. package/dist/api/design/selection/index.d.ts.map +1 -0
  95. package/dist/api/design/shared.d.ts +38 -0
  96. package/dist/api/design/shared.d.ts.map +1 -0
  97. package/dist/api/design/transform/index.d.ts +87 -0
  98. package/dist/api/design/transform/index.d.ts.map +1 -0
  99. package/dist/api/design/update/index.d.ts +178 -0
  100. package/dist/api/design/update/index.d.ts.map +1 -0
  101. package/dist/api/design/windows/index.d.ts +189 -0
  102. package/dist/api/design/windows/index.d.ts.map +1 -0
  103. package/dist/api/entity/buildableEnvelope.d.ts +261 -0
  104. package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
  105. package/dist/api/entity/department.d.ts +1 -0
  106. package/dist/api/entity/department.d.ts.map +1 -0
  107. package/dist/api/entity/index.d.ts +28 -0
  108. package/dist/api/entity/index.d.ts.map +1 -0
  109. package/dist/api/entity/referenceLine.d.ts +202 -0
  110. package/dist/api/entity/referenceLine.d.ts.map +1 -0
  111. package/dist/api/entity/space.d.ts +846 -0
  112. package/dist/api/entity/space.d.ts.map +1 -0
  113. package/dist/api/entity/story.d.ts +249 -0
  114. package/dist/api/entity/story.d.ts.map +1 -0
  115. package/dist/api/index.d.ts +35 -0
  116. package/dist/api/index.d.ts.map +1 -0
  117. package/dist/api/presentation/aiInspiration.d.ts +2400 -0
  118. package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
  119. package/dist/api/presentation/diagrams.d.ts +81 -0
  120. package/dist/api/presentation/diagrams.d.ts.map +1 -0
  121. package/dist/api/presentation/import.d.ts +113 -0
  122. package/dist/api/presentation/import.d.ts.map +1 -0
  123. package/dist/api/presentation/index.d.ts +45 -0
  124. package/dist/api/presentation/index.d.ts.map +1 -0
  125. package/dist/api/presentation/sheets.d.ts +176 -0
  126. package/dist/api/presentation/sheets.d.ts.map +1 -0
  127. package/dist/api/presentation/views.d.ts +296 -0
  128. package/dist/api/presentation/views.d.ts.map +1 -0
  129. package/dist/api/program/adjacency.d.ts +155 -0
  130. package/dist/api/program/adjacency.d.ts.map +1 -0
  131. package/dist/api/program/areas.d.ts +360 -0
  132. package/dist/api/program/areas.d.ts.map +1 -0
  133. package/dist/api/program/classification.d.ts +135 -0
  134. package/dist/api/program/classification.d.ts.map +1 -0
  135. package/dist/api/program/cores.d.ts +174 -0
  136. package/dist/api/program/cores.d.ts.map +1 -0
  137. package/dist/api/program/departments.d.ts +431 -0
  138. package/dist/api/program/departments.d.ts.map +1 -0
  139. package/dist/api/program/index.d.ts +69 -0
  140. package/dist/api/program/index.d.ts.map +1 -0
  141. package/dist/api/program/layout.d.ts +63 -0
  142. package/dist/api/program/layout.d.ts.map +1 -0
  143. package/dist/api/program/metrics.d.ts +108 -0
  144. package/dist/api/program/metrics.d.ts.map +1 -0
  145. package/dist/api/program/site.d.ts +367 -0
  146. package/dist/api/program/site.d.ts.map +1 -0
  147. package/dist/api/program/spreadsheet.d.ts +2041 -0
  148. package/dist/api/program/spreadsheet.d.ts.map +1 -0
  149. package/dist/handles.d.ts +138 -0
  150. package/dist/handles.d.ts.map +1 -0
  151. package/dist/host-utils.d.ts +43 -0
  152. package/dist/host-utils.d.ts.map +1 -0
  153. package/dist/index.cjs +4597 -0
  154. package/dist/index.cjs.map +1 -0
  155. package/dist/index.d.ts +5 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +3870 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/types.d.ts +16 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/package.json +39 -0
  162. package/scripts/generate-manifest.mjs +193 -0
  163. package/scripts/generate-manifest.test.mjs +193 -0
  164. package/src/api/core/buildings.ts +485 -0
  165. package/src/api/core/comment/index.ts +258 -0
  166. package/src/api/core/geom/create/index.ts +293 -0
  167. package/src/api/core/geom/delete/index.ts +78 -0
  168. package/src/api/core/geom/index.ts +35 -0
  169. package/src/api/core/geom/query/arc.ts +169 -0
  170. package/src/api/core/geom/query/brep.ts +444 -0
  171. package/src/api/core/geom/query/circle.ts +404 -0
  172. package/src/api/core/geom/query/contour.ts +540 -0
  173. package/src/api/core/geom/query/curve.ts +1078 -0
  174. package/src/api/core/geom/query/edge.ts +130 -0
  175. package/src/api/core/geom/query/face.ts +403 -0
  176. package/src/api/core/geom/query/halfedge.ts +210 -0
  177. package/src/api/core/geom/query/index.ts +63 -0
  178. package/src/api/core/geom/query/profile.ts +473 -0
  179. package/src/api/core/geom/query/vertex.ts +205 -0
  180. package/src/api/core/geom/update/contour.ts +315 -0
  181. package/src/api/core/geom/update/curve.ts +209 -0
  182. package/src/api/core/geom/update/index.ts +29 -0
  183. package/src/api/core/geom/update/profile.ts +377 -0
  184. package/src/api/core/groups.ts +521 -0
  185. package/src/api/core/history/index.ts +84 -0
  186. package/src/api/core/index.ts +65 -0
  187. package/src/api/core/layers.ts +333 -0
  188. package/src/api/core/math/index.ts +20 -0
  189. package/src/api/core/math/quat.ts +172 -0
  190. package/src/api/core/math/vec3.ts +179 -0
  191. package/src/api/core/project/index.ts +418 -0
  192. package/src/api/core/tags.ts +808 -0
  193. package/src/api/core/units/index.ts +164 -0
  194. package/src/api/core/zoom/index.ts +47 -0
  195. package/src/api/design/boolean/index.ts +179 -0
  196. package/src/api/design/create/index.ts +886 -0
  197. package/src/api/design/delete/index.ts +67 -0
  198. package/src/api/design/doors/index.ts +285 -0
  199. package/src/api/design/edit/index.ts +54 -0
  200. package/src/api/design/erase/index.ts +151 -0
  201. package/src/api/design/furniture/index.ts +130 -0
  202. package/src/api/design/index.ts +162 -0
  203. package/src/api/design/lock.ts +42 -0
  204. package/src/api/design/materials/index.ts +301 -0
  205. package/src/api/design/query/geometry/index.ts +166 -0
  206. package/src/api/design/query/index.ts +937 -0
  207. package/src/api/design/query/spaces.ts +132 -0
  208. package/src/api/design/selection/index.ts +144 -0
  209. package/src/api/design/shared.ts +40 -0
  210. package/src/api/design/transform/index.ts +93 -0
  211. package/src/api/design/update/index.ts +117 -0
  212. package/src/api/design/windows/index.ts +207 -0
  213. package/src/api/entity/buildableEnvelope.ts +318 -0
  214. package/src/api/entity/department.ts +0 -0
  215. package/src/api/entity/index.ts +30 -0
  216. package/src/api/entity/referenceLine.ts +227 -0
  217. package/src/api/entity/space.ts +612 -0
  218. package/src/api/entity/story.ts +273 -0
  219. package/src/api/index.ts +37 -0
  220. package/src/api/presentation/aiInspiration.ts +1116 -0
  221. package/src/api/presentation/diagrams.ts +84 -0
  222. package/src/api/presentation/import.ts +112 -0
  223. package/src/api/presentation/index.ts +47 -0
  224. package/src/api/presentation/sheets.ts +198 -0
  225. package/src/api/presentation/views.ts +303 -0
  226. package/src/api/program/adjacency.ts +164 -0
  227. package/src/api/program/areas.ts +335 -0
  228. package/src/api/program/classification.ts +138 -0
  229. package/src/api/program/cores.ts +171 -0
  230. package/src/api/program/departments.ts +465 -0
  231. package/src/api/program/index.ts +71 -0
  232. package/src/api/program/layout.ts +68 -0
  233. package/src/api/program/metrics.ts +120 -0
  234. package/src/api/program/site.ts +326 -0
  235. package/src/api/program/spreadsheet.ts +2075 -0
  236. package/src/handles.ts +148 -0
  237. package/src/host-utils.ts +64 -0
  238. package/src/index.ts +4 -0
  239. package/src/types.ts +16 -0
  240. package/tsconfig.json +17 -0
  241. package/tsup.config.ts +12 -0
@@ -0,0 +1,273 @@
1
+ import * as z from "zod"
2
+ import { PluginApiReturn } from "../../types"
3
+
4
+ /**
5
+ * Story (floor/storey) management.
6
+ *
7
+ * A story represents a building floor in the Snaptrude project. Stories
8
+ * are identified by their integer **story value** (e.g. `1` for ground
9
+ * floor, `2` for first floor, `-1` for a basement).
10
+ *
11
+ * All methods are **host API calls** that return Promises and support
12
+ * undo/redo via Snaptrude's command system.
13
+ *
14
+ * Accessed via `snaptrude.entity.story`.
15
+ */
16
+ export abstract class PluginStoryApi {
17
+ constructor() {}
18
+
19
+ /**
20
+ * Get properties of a story by its storey number.
21
+ *
22
+ * Only the properties listed in `properties`
23
+ * are returned — unlisted properties will be `undefined` in the result.
24
+ *
25
+ * @param storyValue - Integer storey number
26
+ * (e.g. `1` for ground floor, `2` for first floor, `-1` for basement)
27
+ * @param properties - Array of property names
28
+ * to retrieve. See {@linkcode PluginStoryGetProperty} for available values.
29
+ * @returns A partial {@linkcode PluginStoryGetResult} containing only the requested properties
30
+ * @throws If the story with the given value does not exist
31
+ *
32
+ * @examplePrompt What is the height of the ground floor?
33
+ * @examplePrompt How many rooms are on the second storey?
34
+ * @examplePrompt Get the total floor area of level 3
35
+ * @examplePrompt Is the first floor hidden in the viewport?
36
+ * @examplePrompt Show me the name and height of story 2
37
+ *
38
+ * # Example
39
+ * ```ts
40
+ * const info = await snaptrude.entity.story.get(1, ["height", "name", "spacesCount"])
41
+ * console.log(info.name, info.height, info.spacesCount)
42
+ * ```
43
+ */
44
+ public abstract get(
45
+ storyValue: number,
46
+ properties: PluginStoryGetProperty[],
47
+ ): PluginApiReturn<PluginStoryGetResult>
48
+
49
+ /**
50
+ * Get all stories in the current project.
51
+ *
52
+ * Returns basic identification data for every storey. Stories are sorted
53
+ * from **top to bottom** (highest story value first).
54
+ *
55
+ * @returns A {@linkcode PluginStoryGetAllResult} with a `stories` array,
56
+ * each entry containing `value`, `id`, and `name`
57
+ *
58
+ * @examplePrompt How many floors does this building have?
59
+ * @examplePrompt List all the storeys in the project
60
+ * @examplePrompt Show me every level with its name
61
+ * @examplePrompt Which stories exist in this model?
62
+ *
63
+ * # Example
64
+ * ```ts
65
+ * const { stories } = await snaptrude.entity.story.getAll()
66
+ * for (const s of stories) {
67
+ * console.log(`Story ${s.value}: ${s.name} (id: ${s.id})`)
68
+ * }
69
+ * ```
70
+ */
71
+ public abstract getAll(): PluginApiReturn<PluginStoryGetAllResult>
72
+
73
+ /**
74
+ * Create a new story (floor) in the project.
75
+ *
76
+ * The new story is inserted at the position specified by
77
+ * `storyValue`. This operation is undoable.
78
+ *
79
+ * @param storyValue - Integer storey number
80
+ * to create (e.g. `3` to add a third floor)
81
+ * @param height - Optional height in Babylon
82
+ * units. If omitted, the project's default storey height is used.
83
+ * @returns A {@linkcode PluginStoryCreateResult} with `storyId` and `storyValue`
84
+ * @throws If a story with the given value already exists or creation fails
85
+ *
86
+ * @examplePrompt Add a third floor to the building
87
+ * @examplePrompt Create a new storey above the second floor
88
+ * @examplePrompt Add a basement level to this project
89
+ * @examplePrompt Insert a new level with a custom floor height
90
+ * @examplePrompt Add another floor on top of the building
91
+ *
92
+ * # Example
93
+ * ```ts
94
+ * // Create a new third floor with custom height
95
+ * const { storyId } = await snaptrude.entity.story.create(3, 4.5)
96
+ * ```
97
+ */
98
+ public abstract create(
99
+ storyValue: number,
100
+ height?: number,
101
+ ): PluginApiReturn<PluginStoryCreateResult>
102
+
103
+ /**
104
+ * Update a story's height.
105
+ *
106
+ * Changes the floor-to-floor height of the specified story. This
107
+ * operation is undoable.
108
+ *
109
+ * @param storyValue - Integer storey number
110
+ * identifying the story to update
111
+ * @param height - New height value in Babylon
112
+ * units
113
+ * @returns A {@linkcode PluginStoryUpdateResult} with the updated `storyValue` and `height`
114
+ * @throws If the story does not exist or the update fails
115
+ *
116
+ * @examplePrompt Change the ground floor height to 3.5 metres
117
+ * @examplePrompt Make the second storey taller
118
+ * @examplePrompt Set the floor-to-floor height of level 1
119
+ * @examplePrompt Increase the height of the third floor
120
+ *
121
+ * # Example
122
+ * ```ts
123
+ * // Set ground floor height to 5 Babylon units
124
+ * const result = await snaptrude.entity.story.update(1, 5)
125
+ * ```
126
+ */
127
+ public abstract update(
128
+ storyValue: number,
129
+ height: number,
130
+ ): PluginApiReturn<PluginStoryUpdateResult>
131
+ }
132
+
133
+ /**
134
+ * Available properties that can be queried on a story.
135
+ *
136
+ * | Value | Type | Description |
137
+ * |---|---|---|
138
+ * | `"value"` | `number` | The integer storey number |
139
+ * | `"id"` | `string` | Unique story identifier |
140
+ * | `"name"` | `string` | Display name of the story |
141
+ * | `"height"` | `number` | Floor-to-floor height in Babylon units |
142
+ * | `"base"` | `number` | Base elevation in Babylon units |
143
+ * | `"hidden"` | `boolean` | Whether the story is hidden in the viewport |
144
+ * | `"spacesCount"` | `number` | Number of spaces on this story |
145
+ * | `"totalArea"` | `number` | Total floor area of this story |
146
+ */
147
+ export const PluginStoryGetProperty = z.enum([
148
+ "value",
149
+ "id",
150
+ "name",
151
+ "height",
152
+ "base",
153
+ "hidden",
154
+ "spacesCount",
155
+ "totalArea",
156
+ ])
157
+
158
+ export type PluginStoryGetProperty = z.infer<typeof PluginStoryGetProperty>
159
+
160
+ /**
161
+ * Arguments for {@linkcode PluginStoryApi.get}.
162
+ *
163
+ * | Property | Type | Description |
164
+ * |---|---|---|
165
+ * | `storyValue` | `number` (int) | The storey number to query |
166
+ * | `properties` | {@linkcode PluginStoryGetProperty}`[]` | Properties to retrieve |
167
+ */
168
+ export const PluginStoryGetArgs = z.object({
169
+ storyValue: z.number().int(),
170
+ properties: z.array(PluginStoryGetProperty),
171
+ })
172
+
173
+ export type PluginStoryGetArgs = z.infer<typeof PluginStoryGetArgs>
174
+
175
+ /**
176
+ * Result of {@linkcode PluginStoryApi.get}.
177
+ *
178
+ * A partial object — only the properties that were requested in
179
+ * {@linkcode PluginStoryGetArgs.properties} will be present.
180
+ */
181
+ export const PluginStoryGetResult = z
182
+ .object({
183
+ value: z.number(),
184
+ id: z.string(),
185
+ name: z.string(),
186
+ height: z.number(),
187
+ base: z.number(),
188
+ hidden: z.boolean(),
189
+ spacesCount: z.number(),
190
+ totalArea: z.number(),
191
+ })
192
+ .partial()
193
+
194
+ export type PluginStoryGetResult = z.infer<typeof PluginStoryGetResult>
195
+
196
+ /**
197
+ * Result of {@linkcode PluginStoryApi.getAll}.
198
+ *
199
+ * | Property | Type | Description |
200
+ * |---|---|---|
201
+ * | `stories` | `Array<{ value, id, name }>` | All stories, sorted top to bottom |
202
+ */
203
+ export const PluginStoryGetAllResult = z.object({
204
+ stories: z.array(
205
+ z.object({
206
+ value: z.number(),
207
+ id: z.string(),
208
+ name: z.string(),
209
+ })
210
+ ),
211
+ })
212
+
213
+ export type PluginStoryGetAllResult = z.infer<typeof PluginStoryGetAllResult>
214
+
215
+ /**
216
+ * Arguments for {@linkcode PluginStoryApi.create}.
217
+ *
218
+ * | Property | Type | Description |
219
+ * |---|---|---|
220
+ * | `storyValue` | `number` (int) | The storey number for the new story |
221
+ * | `height` | `number?` | Optional height in Babylon units |
222
+ */
223
+ export const PluginStoryCreateArgs = z.object({
224
+ storyValue: z.number().int(),
225
+ height: z.number().optional(),
226
+ })
227
+
228
+ export type PluginStoryCreateArgs = z.infer<typeof PluginStoryCreateArgs>
229
+
230
+ /**
231
+ * Result of {@linkcode PluginStoryApi.create}.
232
+ *
233
+ * | Property | Type | Description |
234
+ * |---|---|---|
235
+ * | `storyId` | `string` | Unique ID of the created story |
236
+ * | `storyValue` | `number` | The storey number of the created story |
237
+ */
238
+ export const PluginStoryCreateResult = z.object({
239
+ storyId: z.string(),
240
+ storyValue: z.number(),
241
+ })
242
+
243
+ export type PluginStoryCreateResult = z.infer<typeof PluginStoryCreateResult>
244
+
245
+ /**
246
+ * Arguments for {@linkcode PluginStoryApi.update}.
247
+ *
248
+ * | Property | Type | Description |
249
+ * |---|---|---|
250
+ * | `storyValue` | `number` (int) | Storey number of the story to update |
251
+ * | `height` | `number` | New height in Babylon units |
252
+ */
253
+ export const PluginStoryUpdateArgs = z.object({
254
+ storyValue: z.number().int(),
255
+ height: z.number(),
256
+ })
257
+
258
+ export type PluginStoryUpdateArgs = z.infer<typeof PluginStoryUpdateArgs>
259
+
260
+ /**
261
+ * Result of {@linkcode PluginStoryApi.update}.
262
+ *
263
+ * | Property | Type | Description |
264
+ * |---|---|---|
265
+ * | `storyValue` | `number` | The storey number of the updated story |
266
+ * | `height` | `number` | The new height after the update |
267
+ */
268
+ export const PluginStoryUpdateResult = z.object({
269
+ storyValue: z.number(),
270
+ height: z.number(),
271
+ })
272
+
273
+ export type PluginStoryUpdateResult = z.infer<typeof PluginStoryUpdateResult>
@@ -0,0 +1,37 @@
1
+ import { PluginCoreApi } from "./core"
2
+ import { PluginDesignApi } from "./design"
3
+ import { PluginEntityApi } from "./entity"
4
+ import { PluginProgramApi } from "./program"
5
+ import { PluginPresentationApi } from "./presentation"
6
+
7
+ /**
8
+ * Root API surface for Snaptrude plugins.
9
+ *
10
+ * Access all plugin capabilities through the namespaced properties:
11
+ *
12
+ * - {@linkcode PluginApi.core} — Math, geometry kernel, history, units, zoom, project, comments (infrastructure)
13
+ * - {@linkcode PluginApi.design} — Author, query & edit BIM geometry
14
+ * - {@linkcode PluginApi.entity} — CRUD operations on Snaptrude entities (spaces, stories)
15
+ * - {@linkcode PluginApi.program} — Program-mode planning reads (departments, metrics)
16
+ * - {@linkcode PluginApi.presentation} — Presentation preparation (views, AI Inspiration)
17
+ */
18
+ export abstract class PluginApi {
19
+ /** Core math, geometry, history, and units primitives. See {@linkcode PluginCoreApi}. */
20
+ public abstract core: PluginCoreApi
21
+ /** Author, query & edit BIM geometry. See {@linkcode PluginDesignApi}. */
22
+ public abstract design: PluginDesignApi
23
+ /** CRUD operations on Snaptrude entities. See {@linkcode PluginEntityApi}. */
24
+ public abstract entity: PluginEntityApi
25
+ /** Program-mode planning reads — departments and area metrics. See {@linkcode PluginProgramApi}. */
26
+ public abstract program: PluginProgramApi
27
+ /** Presentation preparation reads — saved views. See {@linkcode PluginPresentationApi}. */
28
+ public abstract presentation: PluginPresentationApi
29
+
30
+ constructor() {}
31
+ }
32
+
33
+ export * from "./core"
34
+ export * from "./design"
35
+ export * from "./entity"
36
+ export * from "./program"
37
+ export * from "./presentation"