@snaptrude/plugin-core 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/api-manifest.json +206 -704
  3. package/dist/api/core/index.d.ts +5 -0
  4. package/dist/api/core/index.d.ts.map +1 -1
  5. package/dist/api/core/proposals/index.d.ts +475 -0
  6. package/dist/api/core/proposals/index.d.ts.map +1 -0
  7. package/dist/api/design/create/index.d.ts +209 -0
  8. package/dist/api/design/create/index.d.ts.map +1 -1
  9. package/dist/api/design/doors/index.d.ts +159 -0
  10. package/dist/api/design/doors/index.d.ts.map +1 -1
  11. package/dist/api/design/furniture/index.d.ts +34 -5
  12. package/dist/api/design/furniture/index.d.ts.map +1 -1
  13. package/dist/api/design/index.d.ts +83 -0
  14. package/dist/api/design/index.d.ts.map +1 -1
  15. package/dist/api/design/lock.d.ts +26 -0
  16. package/dist/api/design/lock.d.ts.map +1 -1
  17. package/dist/api/design/materials/index.d.ts +159 -2
  18. package/dist/api/design/materials/index.d.ts.map +1 -1
  19. package/dist/api/design/query/index.d.ts +115 -5
  20. package/dist/api/design/query/index.d.ts.map +1 -1
  21. package/dist/api/design/selection/index.d.ts +2 -2
  22. package/dist/api/design/transform/index.d.ts +83 -2
  23. package/dist/api/design/transform/index.d.ts.map +1 -1
  24. package/dist/api/design/update/index.d.ts +168 -0
  25. package/dist/api/design/update/index.d.ts.map +1 -1
  26. package/dist/api/design/windows/index.d.ts +113 -2
  27. package/dist/api/design/windows/index.d.ts.map +1 -1
  28. package/dist/api/entity/story.d.ts +101 -7
  29. package/dist/api/entity/story.d.ts.map +1 -1
  30. package/dist/api/presentation/aiInspiration.d.ts +1967 -7
  31. package/dist/api/presentation/aiInspiration.d.ts.map +1 -1
  32. package/dist/api/presentation/import.d.ts +49 -4
  33. package/dist/api/presentation/import.d.ts.map +1 -1
  34. package/dist/api/presentation/index.d.ts +2 -3
  35. package/dist/api/presentation/index.d.ts.map +1 -1
  36. package/dist/api/presentation/views.d.ts +210 -5
  37. package/dist/api/presentation/views.d.ts.map +1 -1
  38. package/dist/api/program/areas.d.ts +42 -12
  39. package/dist/api/program/areas.d.ts.map +1 -1
  40. package/dist/api/program/index.d.ts +3 -11
  41. package/dist/api/program/index.d.ts.map +1 -1
  42. package/dist/api/program/layout.d.ts +186 -11
  43. package/dist/api/program/layout.d.ts.map +1 -1
  44. package/dist/errors/codes.d.ts +34 -0
  45. package/dist/errors/codes.d.ts.map +1 -0
  46. package/dist/errors/envelope.d.ts +56 -0
  47. package/dist/errors/envelope.d.ts.map +1 -0
  48. package/dist/errors/index.d.ts +6 -0
  49. package/dist/errors/index.d.ts.map +1 -0
  50. package/dist/errors/plugin-error.d.ts +69 -0
  51. package/dist/errors/plugin-error.d.ts.map +1 -0
  52. package/dist/host-utils.d.ts +4 -0
  53. package/dist/host-utils.d.ts.map +1 -1
  54. package/dist/index.cjs +1993 -1033
  55. package/dist/index.cjs.map +1 -1
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1874 -1030
  59. package/dist/index.js.map +1 -1
  60. package/package.json +2 -1
  61. package/scripts/generate-manifest.test.mjs +77 -0
  62. package/src/api/core/index.ts +5 -0
  63. package/src/api/core/proposals/index.ts +509 -0
  64. package/src/api/design/create/index.ts +249 -0
  65. package/src/api/design/doors/index.ts +168 -0
  66. package/src/api/design/furniture/index.ts +36 -5
  67. package/src/api/design/index.ts +87 -0
  68. package/src/api/design/lock.ts +27 -0
  69. package/src/api/design/materials/index.ts +182 -2
  70. package/src/api/design/query/index.ts +81 -0
  71. package/src/api/design/transform/index.ts +74 -2
  72. package/src/api/design/update/index.ts +167 -0
  73. package/src/api/design/windows/index.ts +128 -2
  74. package/src/api/entity/story.ts +105 -7
  75. package/src/api/presentation/aiInspiration.ts +761 -7
  76. package/src/api/presentation/import.ts +45 -4
  77. package/src/api/presentation/index.ts +2 -3
  78. package/src/api/presentation/views.ts +221 -5
  79. package/src/api/program/areas.ts +34 -12
  80. package/src/api/program/index.ts +3 -11
  81. package/src/api/program/layout.ts +195 -11
  82. package/src/errors/codes.ts +136 -0
  83. package/src/errors/envelope.ts +75 -0
  84. package/src/errors/index.ts +21 -0
  85. package/src/errors/plugin-error.ts +134 -0
  86. package/src/host-utils.ts +4 -0
  87. package/src/index.ts +1 -0
  88. package/test/errors.test.mjs +184 -0
  89. package/api-manifest.full.json +0 -5600
package/dist/index.js CHANGED
@@ -1165,6 +1165,67 @@ var PluginCoreIoApi = class {
1165
1165
  }
1166
1166
  };
1167
1167
 
1168
+ // src/api/core/proposals/index.ts
1169
+ import * as z30 from "zod";
1170
+ var PluginCoreProposalsApi = class {
1171
+ constructor() {
1172
+ }
1173
+ };
1174
+ var PluginCoreProposalRef = z30.object({
1175
+ id: z30.string(),
1176
+ name: z30.string(),
1177
+ isActive: z30.boolean(),
1178
+ defaultBucketId: z30.string(),
1179
+ bucketIds: z30.array(z30.string()),
1180
+ createdAt: z30.string(),
1181
+ createdBy: z30.string()
1182
+ });
1183
+ var PluginCoreProposalsListResult = z30.object({
1184
+ proposals: z30.array(PluginCoreProposalRef)
1185
+ });
1186
+ var PluginCoreProposalsGetArgs = z30.object({
1187
+ proposalId: z30.string()
1188
+ });
1189
+ var PluginCoreProposalsGetResult = PluginCoreProposalRef.nullable();
1190
+ var PluginCoreProposalsGetActiveResult = PluginCoreProposalRef.nullable();
1191
+ var PluginCoreProposalsListForComponentArgs = z30.object({
1192
+ component: ComponentHandle
1193
+ });
1194
+ var PluginCoreProposalsListForComponentResult = PluginCoreProposalsListResult;
1195
+ var PluginCoreProposalsIsActiveArgs = PluginCoreProposalsGetArgs;
1196
+ var PluginCoreProposalsCreateArgs = z30.object({
1197
+ name: z30.string()
1198
+ });
1199
+ var PluginCoreProposalsCreateResult = z30.object({
1200
+ id: z30.string()
1201
+ });
1202
+ var PluginCoreProposalsRenameArgs = z30.object({
1203
+ proposalId: z30.string(),
1204
+ name: z30.string()
1205
+ });
1206
+ var PluginCoreProposalsRenameResult = PluginCoreProposalRef;
1207
+ var PluginCoreProposalsSetActiveArgs = z30.object({
1208
+ proposalId: z30.string()
1209
+ });
1210
+ var PluginCoreProposalsSetActiveResult = z30.object({
1211
+ id: z30.string()
1212
+ });
1213
+ var PluginCoreProposalsDeleteArgs = z30.object({
1214
+ proposalId: z30.string(),
1215
+ deleteObjects: z30.boolean().optional(),
1216
+ targetProposalId: z30.string().optional()
1217
+ }).refine((v) => v.deleteObjects === true !== (v.targetProposalId != null), {
1218
+ message: "Provide exactly one disposition: deleteObjects: true (destroy exclusive-bucket geometry) or targetProposalId (transfer buckets, then delete)"
1219
+ }).refine(
1220
+ (v) => v.targetProposalId == null || v.targetProposalId !== v.proposalId,
1221
+ {
1222
+ message: "targetProposalId must be a different proposal than proposalId"
1223
+ }
1224
+ );
1225
+ var PluginCoreProposalsDeleteResult = z30.object({
1226
+ deleted: z30.literal(true)
1227
+ });
1228
+
1168
1229
  // src/api/core/index.ts
1169
1230
  var PluginCoreApi = class {
1170
1231
  constructor() {
@@ -1172,39 +1233,39 @@ var PluginCoreApi = class {
1172
1233
  };
1173
1234
 
1174
1235
  // src/api/design/create/index.ts
1175
- import * as z31 from "zod";
1236
+ import * as z32 from "zod";
1176
1237
 
1177
1238
  // src/api/entity/space.ts
1178
- import * as z30 from "zod";
1179
- var PluginSpaceCreateRectangularArgs = z30.object({
1239
+ import * as z31 from "zod";
1240
+ var PluginSpaceCreateRectangularArgs = z31.object({
1180
1241
  position: Vec3Handle,
1181
- dimensions: z30.object({
1182
- width: z30.number(),
1183
- height: z30.number(),
1184
- depth: z30.number()
1242
+ dimensions: z31.object({
1243
+ width: z31.number(),
1244
+ height: z31.number(),
1245
+ depth: z31.number()
1185
1246
  })
1186
1247
  });
1187
- var PluginSpaceCreateRectangularResult = z30.object({
1188
- spaceId: z30.string()
1248
+ var PluginSpaceCreateRectangularResult = z31.object({
1249
+ spaceId: z31.string()
1189
1250
  });
1190
- var PluginSpaceCreateFromProfileArgs = z30.object({
1251
+ var PluginSpaceCreateFromProfileArgs = z31.object({
1191
1252
  profile: ProfileHandle,
1192
- innerProfiles: z30.array(ProfileHandle).optional(),
1193
- extrudeHeight: z30.number(),
1253
+ innerProfiles: z31.array(ProfileHandle).optional(),
1254
+ extrudeHeight: z31.number(),
1194
1255
  position: Vec3Handle
1195
1256
  });
1196
- var PluginSpaceCreateFromProfileResult = z30.object({
1197
- spaceId: z30.string()
1257
+ var PluginSpaceCreateFromProfileResult = z31.object({
1258
+ spaceId: z31.string()
1198
1259
  });
1199
- var PluginSpaceUpdateGeometryFromProfileArgs = z30.object({
1200
- spaceId: z30.string(),
1260
+ var PluginSpaceUpdateGeometryFromProfileArgs = z31.object({
1261
+ spaceId: z31.string(),
1201
1262
  profile: ProfileHandle,
1202
- extrudeHeight: z30.number()
1263
+ extrudeHeight: z31.number()
1203
1264
  });
1204
- var PluginSpaceUpdateGeometryFromProfileResult = z30.object({
1205
- spaceId: z30.string()
1265
+ var PluginSpaceUpdateGeometryFromProfileResult = z31.object({
1266
+ spaceId: z31.string()
1206
1267
  });
1207
- var PluginSpaceGetProperty = z30.enum([
1268
+ var PluginSpaceGetProperty = z31.enum([
1208
1269
  // Basic
1209
1270
  "id",
1210
1271
  "type",
@@ -1235,11 +1296,11 @@ var PluginSpaceGetProperty = z30.enum([
1235
1296
  // Derived from adjacency manager
1236
1297
  "adjacency"
1237
1298
  ]);
1238
- var PluginSpaceGetArgs = z30.object({
1239
- spaceId: z30.string(),
1240
- properties: z30.array(PluginSpaceGetProperty)
1299
+ var PluginSpaceGetArgs = z31.object({
1300
+ spaceId: z31.string(),
1301
+ properties: z31.array(PluginSpaceGetProperty)
1241
1302
  });
1242
- var PluginSpaceType = z30.enum([
1303
+ var PluginSpaceType = z31.enum([
1243
1304
  "Room",
1244
1305
  "Program Block",
1245
1306
  "Balcony",
@@ -1251,51 +1312,51 @@ var PluginSpaceType = z30.enum([
1251
1312
  "Envelope",
1252
1313
  "Parking"
1253
1314
  ]);
1254
- var PluginAreaClass = z30.enum(["NET", "GROSS", "EXCLUDED"]);
1255
- var PluginSpaceGetResult = z30.object({
1315
+ var PluginAreaClass = z31.enum(["NET", "GROSS", "EXCLUDED"]);
1316
+ var PluginSpaceGetResult = z31.object({
1256
1317
  // Basic
1257
- id: z30.string(),
1258
- type: z30.string(),
1259
- room_type: z30.string(),
1260
- name: z30.string(),
1318
+ id: z31.string(),
1319
+ type: z31.string(),
1320
+ room_type: z31.string(),
1321
+ name: z31.string(),
1261
1322
  // Derived from parametric data
1262
- area: z30.number(),
1263
- breadth: z30.number(),
1264
- depth: z30.number(),
1265
- height: z30.number(),
1266
- massType: z30.string().nullable(),
1323
+ area: z31.number(),
1324
+ breadth: z31.number(),
1325
+ depth: z31.number(),
1326
+ height: z31.number(),
1327
+ massType: z31.string().nullable(),
1267
1328
  spaceType: PluginSpaceType.nullable(),
1268
1329
  areaClass: PluginAreaClass,
1269
- storey: z30.number().nullable(),
1270
- departmentId: z30.string().nullable(),
1271
- departmentName: z30.string(),
1272
- departmentColor: z30.string(),
1330
+ storey: z31.number().nullable(),
1331
+ departmentId: z31.string().nullable(),
1332
+ departmentName: z31.string(),
1333
+ departmentColor: z31.string(),
1273
1334
  // Derived from mesh
1274
1335
  position: Vec3Components,
1275
1336
  absolutePosition: Vec3Components,
1276
1337
  rotation: Vec3Components,
1277
1338
  rotationQuaternion: QuatComponents.nullable(),
1278
1339
  // Derived from brep
1279
- planPoints: z30.array(Vec3Components),
1280
- profile: z30.array(CurveHandle),
1281
- innerProfiles: z30.array(z30.array(CurveHandle)),
1282
- innerPlanPoints: z30.array(z30.array(Vec3Components)),
1340
+ planPoints: z31.array(Vec3Components),
1341
+ profile: z31.array(CurveHandle),
1342
+ innerProfiles: z31.array(z31.array(CurveHandle)),
1343
+ innerPlanPoints: z31.array(z31.array(Vec3Components)),
1283
1344
  // Derived from adjacency manager.
1284
1345
  // value: 2 = Direct (required), 1 = Indirect or physical contact, -1 = Restricted;
1285
1346
  // 0 (no relationship) entries are filtered out. Empty array when adjacency has
1286
1347
  // never been computed — run program.adjacency.compute() first for fresh data.
1287
- adjacency: z30.array(z30.object({
1288
- spaceId: z30.string(),
1289
- value: z30.number()
1348
+ adjacency: z31.array(z31.object({
1349
+ spaceId: z31.string(),
1350
+ value: z31.number()
1290
1351
  }))
1291
1352
  }).partial();
1292
- var PluginSpaceGetAllResult = z30.object({
1293
- spacesIds: z30.array(z30.string())
1353
+ var PluginSpaceGetAllResult = z31.object({
1354
+ spacesIds: z31.array(z31.string())
1294
1355
  });
1295
- var PluginSpaceDeleteArgs = z30.object({
1296
- spaceId: z30.string()
1356
+ var PluginSpaceDeleteArgs = z31.object({
1357
+ spaceId: z31.string()
1297
1358
  });
1298
- var PluginMassType = z30.enum([
1359
+ var PluginMassType = z31.enum([
1299
1360
  "Plinth",
1300
1361
  "Void",
1301
1362
  "Pergola",
@@ -1309,89 +1370,89 @@ var PluginMassType = z30.enum([
1309
1370
  "Mass",
1310
1371
  "Site"
1311
1372
  ]);
1312
- var PluginWellKnownDepartmentId = z30.enum([
1373
+ var PluginWellKnownDepartmentId = z31.enum([
1313
1374
  "DEFAULT",
1314
1375
  "SITE",
1315
1376
  "ENVELOPE",
1316
1377
  "CORE"
1317
1378
  ]);
1318
- var PluginDepartmentId = z30.union([
1379
+ var PluginDepartmentId = z31.union([
1319
1380
  PluginWellKnownDepartmentId,
1320
- z30.uuid()
1381
+ z31.uuid()
1321
1382
  ]);
1322
- var PluginSpaceUpdateArgs = z30.object({
1323
- spaceId: z30.string(),
1324
- properties: z30.object({
1325
- room_type: z30.string().optional(),
1383
+ var PluginSpaceUpdateArgs = z31.object({
1384
+ spaceId: z31.string(),
1385
+ properties: z31.object({
1386
+ room_type: z31.string().optional(),
1326
1387
  massType: PluginMassType.optional(),
1327
1388
  spaceType: PluginSpaceType.optional(),
1328
1389
  areaClass: PluginAreaClass.optional(),
1329
1390
  departmentId: PluginDepartmentId.optional()
1330
1391
  })
1331
1392
  });
1332
- var PluginSpaceUpdateResult = z30.object({
1333
- spaceId: z30.string(),
1334
- room_type: z30.string().optional(),
1335
- massType: z30.string().optional(),
1336
- spaceType: z30.string().optional(),
1393
+ var PluginSpaceUpdateResult = z31.object({
1394
+ spaceId: z31.string(),
1395
+ room_type: z31.string().optional(),
1396
+ massType: z31.string().optional(),
1397
+ spaceType: z31.string().optional(),
1337
1398
  areaClass: PluginAreaClass.optional(),
1338
- departmentId: z30.string().nullable().optional()
1399
+ departmentId: z31.string().nullable().optional()
1339
1400
  });
1340
- var PluginSpaceBulkCreateItem = z30.discriminatedUnion("kind", [
1341
- z30.object({
1342
- kind: z30.literal("rectangular"),
1401
+ var PluginSpaceBulkCreateItem = z31.discriminatedUnion("kind", [
1402
+ z31.object({
1403
+ kind: z31.literal("rectangular"),
1343
1404
  position: Vec3Handle,
1344
- dimensions: z30.object({
1345
- width: z30.number(),
1346
- height: z30.number(),
1347
- depth: z30.number()
1405
+ dimensions: z31.object({
1406
+ width: z31.number(),
1407
+ height: z31.number(),
1408
+ depth: z31.number()
1348
1409
  }),
1349
- room_type: z30.string().optional(),
1410
+ room_type: z31.string().optional(),
1350
1411
  spaceType: PluginSpaceType.optional(),
1351
1412
  massType: PluginMassType.optional(),
1352
1413
  departmentId: PluginDepartmentId.optional()
1353
1414
  }),
1354
- z30.object({
1355
- kind: z30.literal("profile"),
1415
+ z31.object({
1416
+ kind: z31.literal("profile"),
1356
1417
  profile: ProfileHandle,
1357
- innerProfiles: z30.array(ProfileHandle).optional(),
1358
- extrudeHeight: z30.number(),
1418
+ innerProfiles: z31.array(ProfileHandle).optional(),
1419
+ extrudeHeight: z31.number(),
1359
1420
  position: Vec3Handle,
1360
- room_type: z30.string().optional(),
1421
+ room_type: z31.string().optional(),
1361
1422
  spaceType: PluginSpaceType.optional(),
1362
1423
  massType: PluginMassType.optional(),
1363
1424
  departmentId: PluginDepartmentId.optional()
1364
1425
  })
1365
1426
  ]);
1366
- var PluginSpaceBulkCreateArgs = z30.object({
1367
- items: z30.array(PluginSpaceBulkCreateItem)
1427
+ var PluginSpaceBulkCreateArgs = z31.object({
1428
+ items: z31.array(PluginSpaceBulkCreateItem)
1368
1429
  });
1369
- var PluginSpaceBulkCreateResult = z30.object({
1370
- spaceIds: z30.array(z30.string())
1430
+ var PluginSpaceBulkCreateResult = z31.object({
1431
+ spaceIds: z31.array(z31.string())
1371
1432
  });
1372
- var PluginSpaceBulkUpdateItem = z30.object({
1373
- spaceId: z30.string(),
1433
+ var PluginSpaceBulkUpdateItem = z31.object({
1434
+ spaceId: z31.string(),
1374
1435
  profile: ProfileHandle.optional(),
1375
- extrudeHeight: z30.number().optional(),
1376
- properties: z30.object({
1377
- room_type: z30.string().optional(),
1436
+ extrudeHeight: z31.number().optional(),
1437
+ properties: z31.object({
1438
+ room_type: z31.string().optional(),
1378
1439
  massType: PluginMassType.optional(),
1379
1440
  spaceType: PluginSpaceType.optional(),
1380
1441
  areaClass: PluginAreaClass.optional(),
1381
1442
  departmentId: PluginDepartmentId.optional()
1382
1443
  }).optional()
1383
1444
  });
1384
- var PluginSpaceBulkUpdateArgs = z30.object({
1385
- items: z30.array(PluginSpaceBulkUpdateItem)
1445
+ var PluginSpaceBulkUpdateArgs = z31.object({
1446
+ items: z31.array(PluginSpaceBulkUpdateItem)
1386
1447
  });
1387
- var PluginSpaceBulkUpdateResult = z30.object({
1388
- spaces: z30.array(PluginSpaceUpdateResult)
1448
+ var PluginSpaceBulkUpdateResult = z31.object({
1449
+ spaces: z31.array(PluginSpaceUpdateResult)
1389
1450
  });
1390
- var PluginSpaceBulkDeleteArgs = z30.object({
1391
- spaceIds: z30.array(z30.string())
1451
+ var PluginSpaceBulkDeleteArgs = z31.object({
1452
+ spaceIds: z31.array(z31.string())
1392
1453
  });
1393
- var PluginSpaceBulkDeleteResult = z30.object({
1394
- deletedSpaceIds: z30.array(z30.string())
1454
+ var PluginSpaceBulkDeleteResult = z31.object({
1455
+ deletedSpaceIds: z31.array(z31.string())
1395
1456
  });
1396
1457
 
1397
1458
  // src/api/design/create/index.ts
@@ -1399,14 +1460,14 @@ var PluginDesignCreateApi = class {
1399
1460
  constructor() {
1400
1461
  }
1401
1462
  };
1402
- var PluginReferenceLineStyle = z31.enum(["SOLID", "DASHED", "DOT_DASH"]);
1403
- var PluginSlabType = z31.enum([
1463
+ var PluginReferenceLineStyle = z32.enum(["SOLID", "DASHED", "DOT_DASH"]);
1464
+ var PluginSlabType = z32.enum([
1404
1465
  "Intermediate Slab",
1405
1466
  "Basement Slab",
1406
1467
  "Plinth",
1407
1468
  "Roof"
1408
1469
  ]);
1409
- var PluginStaircasePreset = z31.enum([
1470
+ var PluginStaircasePreset = z32.enum([
1410
1471
  "straight",
1411
1472
  "straightWoLanding",
1412
1473
  "straightFlightWoMidLanding",
@@ -1424,89 +1485,122 @@ var PluginStaircasePreset = z31.enum([
1424
1485
  "mezzanineFloorLShaped",
1425
1486
  "custom"
1426
1487
  ]);
1427
- var PluginDesignCreateSpaceArgs = z31.object({
1488
+ var PluginDesignCreateSpaceArgs = z32.object({
1428
1489
  contour: ContourHandle,
1429
- height: z31.number(),
1430
- label: z31.string().optional(),
1490
+ height: z32.number(),
1491
+ label: z32.string().optional(),
1431
1492
  position: Vec3Handle.optional(),
1432
1493
  spaceType: PluginSpaceType.optional(),
1433
1494
  massType: PluginMassType.optional(),
1434
1495
  departmentId: PluginDepartmentId.optional()
1435
1496
  });
1436
- var PluginDesignCreateMassArgs = z31.object({
1497
+ var PluginDesignCreateMassArgs = z32.object({
1437
1498
  contour: ContourHandle,
1438
- height: z31.number(),
1439
- label: z31.string().optional(),
1499
+ height: z32.number(),
1500
+ label: z32.string().optional(),
1440
1501
  position: Vec3Handle.optional(),
1441
1502
  massType: PluginMassType.optional()
1442
1503
  });
1443
- var PluginDesignCreateSlabArgs = z31.object({
1504
+ var PluginDesignCreateSlabArgs = z32.object({
1444
1505
  contour: ContourHandle,
1445
- thickness: z31.number(),
1446
- direction: z31.enum(["up", "down"]).optional(),
1506
+ thickness: z32.number(),
1507
+ direction: z32.enum(["up", "down"]).optional(),
1447
1508
  slabType: PluginSlabType.optional()
1448
1509
  });
1449
- var PluginDesignCreateFloorArgs = z31.object({
1510
+ var PluginDesignCreateFloorArgs = z32.object({
1450
1511
  contour: ContourHandle,
1451
- thickness: z31.number(),
1512
+ thickness: z32.number(),
1452
1513
  position: Vec3Handle.optional()
1453
1514
  });
1454
- var PluginDesignCreateRoofArgs = z31.object({
1515
+ var PluginDesignCreateRoofArgs = z32.object({
1455
1516
  contour: ContourHandle,
1456
- thickness: z31.number()
1517
+ thickness: z32.number()
1457
1518
  });
1458
- var PluginDesignCreateCeilingArgs = z31.object({
1519
+ var PluginDesignCreateCeilingArgs = z32.object({
1459
1520
  contour: ContourHandle,
1460
- thickness: z31.number(),
1461
- heightFromFloor: z31.number().optional()
1521
+ thickness: z32.number(),
1522
+ heightFromFloor: z32.number().optional()
1462
1523
  });
1463
- var PluginDesignCreateColumnArgs = z31.object({
1524
+ var PluginDesignCreateColumnArgs = z32.object({
1464
1525
  position: Vec3Handle,
1465
1526
  crossSection: ContourHandle,
1466
- height: z31.number(),
1527
+ height: z32.number(),
1467
1528
  directionUp: Vec3Handle.optional()
1468
1529
  });
1469
- var PluginDesignCreateBeamArgs = z31.object({
1530
+ var PluginDesignCreateBeamArgs = z32.object({
1470
1531
  section: ContourHandle,
1471
- length: z31.number(),
1532
+ length: z32.number(),
1472
1533
  direction: Vec3Handle.optional()
1473
1534
  });
1474
- var PluginDesignCreateWallsArgs = z31.object({
1535
+ var PluginDesignCreateWallsArgs = z32.object({
1475
1536
  profile: ProfileHandle,
1476
- height: z31.number().optional(),
1477
- thickness: z31.number().optional()
1537
+ height: z32.number().optional(),
1538
+ thickness: z32.number().optional()
1478
1539
  });
1479
- var PluginDesignCreateStaircaseArgs = z31.object({
1540
+ var PluginDesignCreateStaircaseArgs = z32.object({
1480
1541
  preset: PluginStaircasePreset,
1481
1542
  position: Vec3Handle,
1482
- label: z31.string().optional(),
1483
- structureId: z31.string().optional(),
1484
- level: z31.string().optional()
1543
+ label: z32.string().optional(),
1544
+ structureId: z32.string().optional(),
1545
+ level: z32.string().optional()
1546
+ });
1547
+ var PluginDesignCreateFurnitureArgs = z32.object({
1548
+ catalogId: z32.string().min(1),
1549
+ position: Vec3Handle,
1550
+ label: z32.string().optional(),
1551
+ createNewSourceMesh: z32.boolean().optional()
1485
1552
  });
1486
- var PluginDesignCreateFurnitureArgs = z31.object({
1487
- catalogId: z31.string().min(1),
1553
+ var PluginDesignCreateDoorArgs = z32.object({
1554
+ catalogId: z32.string().min(1),
1555
+ hostWall: ComponentHandle,
1488
1556
  position: Vec3Handle,
1489
- label: z31.string().optional(),
1490
- createNewSourceMesh: z31.boolean().optional()
1557
+ label: z32.string().optional()
1491
1558
  });
1492
- var PluginDesignCreateReferenceLinesArgs = z31.object({
1559
+ var PluginDesignCreateWindowArgs = z32.object({
1560
+ catalogId: z32.string().min(1),
1561
+ hostWall: ComponentHandle,
1562
+ position: Vec3Handle,
1563
+ label: z32.string().optional()
1564
+ });
1565
+ var PluginSmartLayoutArgs = z32.object({
1566
+ templateGroup: z32.string().min(1).optional(),
1567
+ templateComponents: z32.array(ComponentHandle).optional(),
1568
+ targets: z32.array(ComponentHandle).min(1),
1569
+ hideTargets: z32.boolean().optional()
1570
+ }).refine(
1571
+ (v) => v.templateGroup != null !== (v.templateComponents?.length ?? 0) > 0,
1572
+ {
1573
+ message: "Provide exactly one template source: templateGroup or a non-empty templateComponents"
1574
+ }
1575
+ );
1576
+ var PluginSmartLayoutResult = z32.object({
1577
+ created: z32.object({
1578
+ walls: z32.array(ComponentHandle),
1579
+ furniture: z32.array(ComponentHandle),
1580
+ doors: z32.array(ComponentHandle),
1581
+ windows: z32.array(ComponentHandle),
1582
+ floors: z32.array(ComponentHandle)
1583
+ }),
1584
+ skippedWalls: z32.number()
1585
+ });
1586
+ var PluginDesignCreateReferenceLinesArgs = z32.object({
1493
1587
  profile: ProfileHandle,
1494
- color: z31.string().optional(),
1495
- thickness: z31.number().optional(),
1588
+ color: z32.string().optional(),
1589
+ thickness: z32.number().optional(),
1496
1590
  style: PluginReferenceLineStyle.optional(),
1497
- gridTag: z31.string().optional()
1591
+ gridTag: z32.string().optional()
1498
1592
  });
1499
- var PluginCopyMode = z31.enum(["instance", "unique"]);
1500
- var PluginDesignCreateCopyArgs = z31.object({
1501
- components: z31.array(ComponentHandle).min(1),
1593
+ var PluginCopyMode = z32.enum(["instance", "unique"]);
1594
+ var PluginDesignCreateCopyArgs = z32.object({
1595
+ components: z32.array(ComponentHandle).min(1),
1502
1596
  displacement: Vec3Handle,
1503
- count: z31.number().int().positive().optional(),
1597
+ count: z32.number().int().positive().optional(),
1504
1598
  mode: PluginCopyMode.optional()
1505
1599
  });
1506
- var PluginCreateSpaceItem = z31.object({
1600
+ var PluginCreateSpaceItem = z32.object({
1507
1601
  contour: ContourHandle,
1508
- height: z31.number(),
1509
- label: z31.string().optional(),
1602
+ height: z32.number(),
1603
+ label: z32.string().optional(),
1510
1604
  position: Vec3Handle.optional(),
1511
1605
  spaceType: PluginSpaceType.optional(),
1512
1606
  massType: PluginMassType.optional(),
@@ -1514,44 +1608,44 @@ var PluginCreateSpaceItem = z31.object({
1514
1608
  });
1515
1609
 
1516
1610
  // src/api/design/query/index.ts
1517
- import * as z34 from "zod";
1611
+ import * as z35 from "zod";
1518
1612
 
1519
1613
  // src/api/design/query/geometry/index.ts
1520
- import * as z32 from "zod";
1614
+ import * as z33 from "zod";
1521
1615
  var PluginDesignQueryGeometryApi = class {
1522
1616
  constructor() {
1523
1617
  }
1524
1618
  };
1525
- var PluginDesignQueryGeometryGetBrepArgs = z32.object({
1619
+ var PluginDesignQueryGeometryGetBrepArgs = z33.object({
1526
1620
  component: ComponentHandle
1527
1621
  });
1528
- var PluginDesignQueryGeometryGetBottomContourArgs = z32.object({
1622
+ var PluginDesignQueryGeometryGetBottomContourArgs = z33.object({
1529
1623
  component: ComponentHandle
1530
1624
  });
1531
- var PluginDesignQueryGeometryGetCenterlineArgs = z32.object({
1625
+ var PluginDesignQueryGeometryGetCenterlineArgs = z33.object({
1532
1626
  component: ComponentHandle
1533
1627
  });
1534
1628
 
1535
1629
  // src/api/design/query/spaces.ts
1536
- import * as z33 from "zod";
1630
+ import * as z34 from "zod";
1537
1631
  var PluginDesignQuerySpacesApi = class {
1538
1632
  constructor() {
1539
1633
  }
1540
1634
  };
1541
- var PluginDesignQueryGetFootprintArgs = z33.object({
1635
+ var PluginDesignQueryGetFootprintArgs = z34.object({
1542
1636
  space: ComponentHandle
1543
1637
  });
1544
1638
  var PluginDesignQuerySpacesGetProperty = PluginSpaceGetProperty.exclude(["adjacency"]);
1545
- var PluginDesignQuerySpacesGetArgs = z33.object({
1639
+ var PluginDesignQuerySpacesGetArgs = z34.object({
1546
1640
  space: ComponentHandle,
1547
- properties: z33.array(PluginDesignQuerySpacesGetProperty)
1641
+ properties: z34.array(PluginDesignQuerySpacesGetProperty)
1548
1642
  });
1549
1643
  var PluginDesignQuerySpacesGetResult = PluginSpaceGetResult.omit({
1550
1644
  adjacency: true
1551
1645
  });
1552
1646
 
1553
1647
  // src/api/design/query/index.ts
1554
- var PluginEntityType = z34.enum([
1648
+ var PluginEntityType = z35.enum([
1555
1649
  "wall",
1556
1650
  "space",
1557
1651
  "mass",
@@ -1570,65 +1664,82 @@ var PluginEntityType = z34.enum([
1570
1664
  "mullion",
1571
1665
  "panel"
1572
1666
  ]);
1573
- var PluginEntityFilter = z34.object({
1574
- types: z34.array(PluginEntityType).optional(),
1575
- storeys: z34.array(z34.number()).optional(),
1576
- buildingIds: z34.array(z34.string()).optional(),
1577
- structureIds: z34.array(z34.string()).optional(),
1578
- label: z34.string().optional(),
1579
- massTypes: z34.array(PluginMassType).optional(),
1580
- spaceTypes: z34.array(PluginSpaceType).optional(),
1667
+ var PluginEntityFilter = z35.object({
1668
+ types: z35.array(PluginEntityType).optional(),
1669
+ storeys: z35.array(z35.number()).optional(),
1670
+ buildingIds: z35.array(z35.string()).optional(),
1671
+ structureIds: z35.array(z35.string()).optional(),
1672
+ label: z35.string().optional(),
1673
+ massTypes: z35.array(PluginMassType).optional(),
1674
+ spaceTypes: z35.array(PluginSpaceType).optional(),
1581
1675
  departmentId: PluginDepartmentId.optional(),
1582
- isSelected: z34.boolean().optional(),
1583
- isLocked: z34.boolean().optional(),
1584
- isHidden: z34.boolean().optional(),
1676
+ isSelected: z35.boolean().optional(),
1677
+ isLocked: z35.boolean().optional(),
1678
+ isHidden: z35.boolean().optional(),
1585
1679
  within: BBoxComponents.optional(),
1586
1680
  overlaps: ComponentHandle.optional(),
1587
- ids: z34.array(ComponentHandle).optional()
1681
+ ids: z35.array(ComponentHandle).optional()
1588
1682
  });
1589
1683
  var PluginDesignQueryListByTypeArgs = PluginEntityFilter.extend({
1590
1684
  type: PluginEntityType
1591
1685
  });
1592
- var PluginDesignQueryComponentArgs = z34.object({
1686
+ var PluginDesignQueryComponentArgs = z35.object({
1593
1687
  component: ComponentHandle
1594
1688
  });
1595
- var PluginDesignQueryIdArgs = z34.object({
1689
+ var PluginDesignQueryIdArgs = z35.object({
1596
1690
  id: ComponentHandle
1597
1691
  });
1598
- var PluginDesignQueryComponentsArgs = z34.object({
1599
- components: z34.array(ComponentHandle)
1692
+ var PluginDesignQueryComponentsArgs = z35.object({
1693
+ components: z35.array(ComponentHandle)
1600
1694
  });
1601
- var PluginEntityProperties = z34.object({
1602
- id: z34.string(),
1695
+ var PluginEntityProperties = z35.object({
1696
+ id: z35.string(),
1603
1697
  type: PluginEntityType,
1604
- label: z34.string(),
1605
- storey: z34.number(),
1606
- buildingId: z34.string(),
1607
- structureId: z34.string(),
1608
- massType: z34.string(),
1698
+ label: z35.string(),
1699
+ storey: z35.number(),
1700
+ buildingId: z35.string(),
1701
+ structureId: z35.string(),
1702
+ massType: z35.string(),
1609
1703
  spaceType: PluginSpaceType,
1610
1704
  areaClass: PluginAreaClass,
1611
- departmentId: z34.string(),
1612
- isLocked: z34.boolean(),
1613
- isHidden: z34.boolean(),
1614
- isSelected: z34.boolean(),
1705
+ departmentId: z35.string(),
1706
+ isLocked: z35.boolean(),
1707
+ isHidden: z35.boolean(),
1708
+ isSelected: z35.boolean(),
1615
1709
  boundingBox: BBoxComponents,
1616
- adjacency: z34.array(z34.object({ spaceId: z34.string(), value: z34.number() }))
1710
+ adjacency: z35.array(z35.object({ spaceId: z35.string(), value: z35.number() }))
1617
1711
  }).partial();
1618
- var PluginEntityMeasurements = z34.object({
1619
- area: z34.number().optional(),
1620
- volume: z34.number().optional(),
1621
- length: z34.number().optional(),
1712
+ var PluginEntityMeasurements = z35.object({
1713
+ area: z35.number().optional(),
1714
+ volume: z35.number().optional(),
1715
+ length: z35.number().optional(),
1622
1716
  boundingBox: BBoxComponents
1623
1717
  });
1718
+ var PluginStaircaseParams = z35.object({
1719
+ staircaseType: PluginStaircasePreset,
1720
+ staircasePreset: PluginStaircasePreset,
1721
+ staircaseHeight: z35.number(),
1722
+ steps: z35.number(),
1723
+ riser: z35.number(),
1724
+ tread: z35.number(),
1725
+ width: z35.number(),
1726
+ depth: z35.number(),
1727
+ wellSize: z35.number().optional(),
1728
+ landingWidth: z35.number().optional(),
1729
+ flightStartDistAfterTurn: z35.number().optional(),
1730
+ baseOffset: z35.number(),
1731
+ isStoreyHeightUnlocked: z35.boolean(),
1732
+ isStaircaseHeightUnlocked: z35.boolean(),
1733
+ storey: z35.number()
1734
+ });
1624
1735
  var PluginDesignQueryApi = class {
1625
1736
  constructor() {
1626
1737
  }
1627
1738
  };
1628
1739
 
1629
1740
  // src/api/design/selection/index.ts
1630
- import * as z35 from "zod";
1631
- var PluginSelectionEntityType = z35.enum([
1741
+ import * as z36 from "zod";
1742
+ var PluginSelectionEntityType = z36.enum([
1632
1743
  "wall",
1633
1744
  "slab",
1634
1745
  "floor",
@@ -1654,9 +1765,9 @@ var PluginSelectionEntityType = z35.enum([
1654
1765
  "neighborhoodBuilding",
1655
1766
  "programBlock"
1656
1767
  ]);
1657
- var PluginSelectionFilter = z35.object({
1658
- storeys: z35.array(z35.number()).optional(),
1659
- types: z35.array(PluginSelectionEntityType).optional()
1768
+ var PluginSelectionFilter = z36.object({
1769
+ storeys: z36.array(z36.number()).optional(),
1770
+ types: z36.array(PluginSelectionEntityType).optional()
1660
1771
  }).refine((f) => (f.storeys?.length ?? 0) + (f.types?.length ?? 0) > 0, {
1661
1772
  message: "PluginSelectionFilter requires at least one non-empty field (storeys or types); use design.selection.clear() to deselect everything"
1662
1773
  });
@@ -1664,165 +1775,224 @@ var PluginDesignSelectionApi = class {
1664
1775
  constructor() {
1665
1776
  }
1666
1777
  };
1667
- var PluginDesignSelectionSetArgs = z35.object({
1668
- components: z35.array(ComponentHandle)
1778
+ var PluginDesignSelectionSetArgs = z36.object({
1779
+ components: z36.array(ComponentHandle)
1669
1780
  });
1670
1781
  var PluginDesignSelectionAddArgs = PluginDesignSelectionSetArgs;
1671
1782
  var PluginDesignSelectionRemoveArgs = PluginDesignSelectionSetArgs;
1672
1783
 
1673
1784
  // src/api/design/doors/index.ts
1674
- import * as z36 from "zod";
1785
+ import * as z37 from "zod";
1675
1786
  var PluginDesignDoorsApi = class {
1676
1787
  constructor() {
1677
1788
  }
1678
1789
  };
1679
- var PluginDesignDoorArgs = z36.object({
1790
+ var PluginDesignDoorArgs = z37.object({
1680
1791
  door: ComponentHandle
1681
1792
  });
1682
- var PluginMirrorAxis = z36.enum(["x", "y", "z"]);
1683
- var PluginDesignDoorMirrorArgs = z36.object({
1793
+ var PluginMirrorAxis = z37.enum(["x", "y", "z"]);
1794
+ var PluginDesignDoorMirrorArgs = z37.object({
1684
1795
  door: ComponentHandle,
1685
1796
  axis: PluginMirrorAxis.optional()
1686
1797
  });
1687
- var PluginDesignDoorSetWidthArgs = z36.object({
1688
- doors: z36.array(ComponentHandle),
1689
- width: z36.number()
1798
+ var PluginDesignDoorSetWidthArgs = z37.object({
1799
+ doors: z37.array(ComponentHandle),
1800
+ width: z37.number()
1801
+ });
1802
+ var PluginDesignDoorSetHeightArgs = z37.object({
1803
+ doors: z37.array(ComponentHandle),
1804
+ height: z37.number()
1690
1805
  });
1691
- var PluginDesignDoorSetHeightArgs = z36.object({
1692
- doors: z36.array(ComponentHandle),
1693
- height: z36.number()
1806
+ var PluginObjectCatalogGroup = z37.object({
1807
+ dbType: z37.string(),
1808
+ label: z37.string(),
1809
+ source: z37.enum(["default", "team"])
1694
1810
  });
1811
+ var PluginObjectCatalogItem = z37.object({
1812
+ id: z37.string(),
1813
+ name: z37.string(),
1814
+ source: z37.enum(["team", "general"]),
1815
+ dbType: z37.string(),
1816
+ subType: z37.string().optional(),
1817
+ thumbnailUrl: z37.string().optional(),
1818
+ cost: z37.number().optional(),
1819
+ familyName: z37.string().optional()
1820
+ });
1821
+ var PluginDesignDoorListCatalogArgs = z37.object({
1822
+ group: z37.string().optional()
1823
+ });
1824
+ var PluginDesignDoorGetCatalogItemArgs = z37.object({
1825
+ id: z37.string()
1826
+ });
1827
+ var PluginDesignDoorExistsArgs = PluginDesignDoorGetCatalogItemArgs;
1695
1828
 
1696
1829
  // src/api/design/windows/index.ts
1697
- import * as z37 from "zod";
1830
+ import * as z38 from "zod";
1698
1831
  var PluginDesignWindowsApi = class {
1699
1832
  constructor() {
1700
1833
  }
1701
1834
  };
1702
- var PluginDesignWindowArgs = z37.object({
1835
+ var PluginDesignWindowArgs = z38.object({
1703
1836
  window: ComponentHandle
1704
1837
  });
1705
- var PluginWindowDimensions = z37.object({
1706
- width: z37.number(),
1707
- height: z37.number(),
1708
- thickness: z37.number()
1838
+ var PluginWindowDimensions = z38.object({
1839
+ width: z38.number(),
1840
+ height: z38.number(),
1841
+ thickness: z38.number()
1709
1842
  });
1710
- var PluginDesignWindowSetWidthArgs = z37.object({
1843
+ var PluginDesignWindowSetWidthArgs = z38.object({
1711
1844
  window: ComponentHandle,
1712
- width: z37.number()
1845
+ width: z38.number()
1713
1846
  });
1714
- var PluginDesignWindowSetHeightArgs = z37.object({
1847
+ var PluginDesignWindowSetHeightArgs = z38.object({
1715
1848
  window: ComponentHandle,
1716
- height: z37.number()
1849
+ height: z38.number()
1850
+ });
1851
+ var PluginDesignWindowListCatalogArgs = z38.object({
1852
+ group: z38.string().optional()
1717
1853
  });
1854
+ var PluginDesignWindowGetCatalogItemArgs = z38.object({
1855
+ id: z38.string()
1856
+ });
1857
+ var PluginDesignWindowExistsArgs = PluginDesignWindowGetCatalogItemArgs;
1718
1858
 
1719
1859
  // src/api/design/furniture/index.ts
1720
- import * as z38 from "zod";
1860
+ import * as z39 from "zod";
1721
1861
  var PluginDesignFurnitureApi = class {
1722
1862
  constructor() {
1723
1863
  }
1724
1864
  };
1725
- var PluginFurnitureCatalogItem = z38.object({
1726
- id: z38.string(),
1727
- name: z38.string(),
1728
- source: z38.enum(["team", "general"]),
1729
- subType: z38.string().optional(),
1730
- cost: z38.number().optional(),
1731
- familyName: z38.string().optional()
1865
+ var PluginFurnitureCatalogItem = z39.object({
1866
+ id: z39.string(),
1867
+ name: z39.string(),
1868
+ source: z39.enum(["team", "general"]),
1869
+ subType: z39.string().optional(),
1870
+ category: z39.string().optional(),
1871
+ thumbnailUrl: z39.string().optional(),
1872
+ cost: z39.number().optional(),
1873
+ familyName: z39.string().optional()
1732
1874
  });
1733
- var PluginDesignFurnitureListCatalogArgs = z38.object({
1734
- source: z38.enum(["team", "general"]).optional()
1875
+ var PluginDesignFurnitureListCatalogArgs = z39.object({
1876
+ source: z39.enum(["team", "general"]).optional(),
1877
+ category: z39.string().optional()
1735
1878
  });
1736
- var PluginDesignFurnitureGetCatalogItemArgs = z38.object({
1737
- id: z38.string()
1879
+ var PluginDesignFurnitureGetCatalogItemArgs = z39.object({
1880
+ id: z39.string()
1738
1881
  });
1739
1882
  var PluginDesignFurnitureExistsArgs = PluginDesignFurnitureGetCatalogItemArgs;
1740
1883
 
1741
1884
  // src/api/design/materials/index.ts
1742
- import * as z39 from "zod";
1885
+ import * as z40 from "zod";
1743
1886
  var PluginDesignMaterialsApi = class {
1744
1887
  constructor() {
1745
1888
  }
1746
1889
  };
1747
- var PluginMaterialInfo = z39.object({
1748
- name: z39.string(),
1749
- id: z39.string(),
1750
- colorHex: z39.string(),
1751
- alpha: z39.number(),
1752
- materialType: z39.string().optional(),
1753
- textureUrl: z39.string().optional()
1754
- });
1755
- var PluginMaterialSpec = z39.object({
1756
- name: z39.string().optional(),
1757
- color: z39.string().optional(),
1758
- textureUrl: z39.string().optional(),
1759
- alpha: z39.number().optional(),
1760
- materialType: z39.string().optional()
1761
- });
1762
- var PluginMaterialResult = z39.object({ count: z39.number() });
1763
- var PluginDesignMaterialsListArgs = z39.object({
1764
- scope: z39.enum(["project", "preset"]).optional()
1765
- });
1766
- var PluginDesignMaterialsGetInfoArgs = z39.object({ material: MaterialHandle });
1767
- var PluginDesignMaterialsComponentArgs = z39.object({ component: ComponentHandle });
1768
- var PluginDesignMaterialsApplyArgs = z39.object({
1769
- targets: z39.array(ComponentHandle),
1770
- material: z39.union([MaterialHandle, PluginMaterialSpec]),
1771
- save: z39.boolean().optional()
1772
- });
1773
- var PluginDesignMaterialsResetArgs = z39.object({
1774
- components: z39.array(ComponentHandle),
1775
- save: z39.boolean().optional()
1776
- });
1777
- var PluginDesignMaterialsCreateArgs = z39.object({ spec: PluginMaterialSpec });
1890
+ var PluginMaterialInfo = z40.object({
1891
+ name: z40.string(),
1892
+ id: z40.string(),
1893
+ colorHex: z40.string(),
1894
+ alpha: z40.number(),
1895
+ materialType: z40.string().optional(),
1896
+ textureUrl: z40.string().optional()
1897
+ });
1898
+ var PluginMaterialSpec = z40.object({
1899
+ name: z40.string().optional(),
1900
+ color: z40.string().optional(),
1901
+ textureUrl: z40.string().optional(),
1902
+ alpha: z40.number().optional(),
1903
+ materialType: z40.string().optional()
1904
+ });
1905
+ var PluginMaterialResult = z40.object({ count: z40.number() });
1906
+ var PluginFaceMaterial = z40.object({
1907
+ faceIndex: z40.number().int().nonnegative(),
1908
+ material: MaterialHandle.nullable()
1909
+ });
1910
+ var PluginDesignMaterialsListArgs = z40.object({
1911
+ scope: z40.enum(["project", "preset"]).optional()
1912
+ });
1913
+ var PluginDesignMaterialsGetInfoArgs = z40.object({ material: MaterialHandle });
1914
+ var PluginDesignMaterialsComponentArgs = z40.object({ component: ComponentHandle });
1915
+ var PluginDesignMaterialsApplyArgs = z40.object({
1916
+ targets: z40.array(ComponentHandle),
1917
+ material: z40.union([MaterialHandle, PluginMaterialSpec]),
1918
+ save: z40.boolean().optional()
1919
+ });
1920
+ var PluginDesignMaterialsResetArgs = z40.object({
1921
+ components: z40.array(ComponentHandle),
1922
+ save: z40.boolean().optional()
1923
+ });
1924
+ var PluginDesignMaterialsCreateArgs = z40.object({ spec: PluginMaterialSpec });
1925
+ var PluginDesignMaterialsApplyToFacesArgs = z40.object({
1926
+ component: ComponentHandle,
1927
+ faces: z40.array(z40.number().int().nonnegative()),
1928
+ material: z40.union([MaterialHandle, PluginMaterialSpec]),
1929
+ save: z40.boolean().optional()
1930
+ });
1931
+ var PluginDesignMaterialsResetFacesArgs = z40.object({
1932
+ component: ComponentHandle,
1933
+ faces: z40.array(z40.number().int().nonnegative()),
1934
+ save: z40.boolean().optional()
1935
+ });
1936
+ var PluginDesignMaterialsGetByFaceArgs = z40.object({
1937
+ component: ComponentHandle,
1938
+ face: z40.number().int().nonnegative()
1939
+ });
1940
+ var PluginDesignMaterialsListByFaceArgs = PluginDesignMaterialsComponentArgs;
1778
1941
 
1779
1942
  // src/api/design/lock.ts
1780
- import * as z40 from "zod";
1781
- var PluginDesignChangeResult = z40.object({
1782
- affected: z40.array(ComponentHandle)
1943
+ import * as z41 from "zod";
1944
+ var PluginDesignChangeResult = z41.object({
1945
+ affected: z41.array(ComponentHandle)
1783
1946
  });
1784
- var PluginDesignLockArgs = z40.object({
1785
- components: z40.array(ComponentHandle)
1947
+ var PluginDesignLockArgs = z41.object({
1948
+ components: z41.array(ComponentHandle)
1786
1949
  });
1787
1950
  var PluginDesignUnlockArgs = PluginDesignLockArgs;
1788
- var PluginDesignIsLockedArgs = z40.object({
1951
+ var PluginDesignIsLockedArgs = z41.object({
1789
1952
  component: ComponentHandle,
1790
- includeInherited: z40.boolean().optional()
1953
+ includeInherited: z41.boolean().optional()
1954
+ });
1955
+ var PluginDesignLockAreaArgs = z41.object({
1956
+ spaces: z41.array(ComponentHandle)
1957
+ });
1958
+ var PluginDesignUnlockAreaArgs = PluginDesignLockAreaArgs;
1959
+ var PluginDesignIsAreaLockedArgs = z41.object({
1960
+ space: ComponentHandle
1791
1961
  });
1792
1962
 
1793
1963
  // src/api/design/erase/index.ts
1794
- import * as z41 from "zod";
1795
- var EraseStrategy = z41.enum(["DirectDelete", "DirectUnion", "SplitAndUnion"]);
1964
+ import * as z42 from "zod";
1965
+ var EraseStrategy = z42.enum(["DirectDelete", "DirectUnion", "SplitAndUnion"]);
1796
1966
  var DEFAULT_ERASE_STRATEGIES = ["DirectDelete", "DirectUnion"];
1797
- var ErasableEdgeRef = z41.object({
1967
+ var ErasableEdgeRef = z42.object({
1798
1968
  /** Opaque bottom-graph edge id (engine form `"e-<n>"`). Do not mutate. Pass verbatim to {@linkcode PluginDesignEraseApi.edge}. */
1799
- id: z41.string().min(1),
1969
+ id: z42.string().min(1),
1800
1970
  /** What erasing this edge would do: `DirectDelete` drops a mass; `DirectUnion` merges two adjacent masses. */
1801
1971
  strategy: EraseStrategy,
1802
1972
  /** Bottom-graph edge weight: `1` = external boundary edge, `>=2` = internal edge shared between components. */
1803
- edgeWeight: z41.number(),
1973
+ edgeWeight: z42.number(),
1804
1974
  /** The components this edge is incident to — one for external (DirectDelete); two or more for internal (DirectUnion; 3+ at T-junctions where several masses share the edge). */
1805
- components: z41.array(ComponentHandle),
1975
+ components: z42.array(ComponentHandle),
1806
1976
  /** A representative point on the edge (its head endpoint). Diagnostic only. */
1807
1977
  snapPoint: Vec3Handle
1808
1978
  });
1809
- var PluginDesignListErasableEdgesArgs = z41.object({
1810
- components: z41.array(ComponentHandle).optional(),
1811
- strategies: z41.array(EraseStrategy).optional()
1979
+ var PluginDesignListErasableEdgesArgs = z42.object({
1980
+ components: z42.array(ComponentHandle).optional(),
1981
+ strategies: z42.array(EraseStrategy).optional()
1812
1982
  });
1813
- var PluginDesignEraseEdgeArgs = z41.object({
1983
+ var PluginDesignEraseEdgeArgs = z42.object({
1814
1984
  edge: ErasableEdgeRef
1815
1985
  });
1816
- var PluginDesignEraseEdgeResult = z41.object({ ok: z41.literal(true) });
1986
+ var PluginDesignEraseEdgeResult = z42.object({ ok: z42.literal(true) });
1817
1987
  var PluginDesignEraseApi = class {
1818
1988
  constructor() {
1819
1989
  }
1820
1990
  };
1821
1991
 
1822
1992
  // src/api/design/delete/index.ts
1823
- import * as z42 from "zod";
1824
- var PluginDesignDeleteEntitiesArgs = z42.object({
1825
- components: z42.array(ComponentHandle).min(1)
1993
+ import * as z43 from "zod";
1994
+ var PluginDesignDeleteEntitiesArgs = z43.object({
1995
+ components: z43.array(ComponentHandle).min(1)
1826
1996
  });
1827
1997
  var PluginDesignDeleteApi = class {
1828
1998
  constructor() {
@@ -1830,89 +2000,120 @@ var PluginDesignDeleteApi = class {
1830
2000
  };
1831
2001
 
1832
2002
  // src/api/design/shared.ts
1833
- import * as z43 from "zod";
1834
- var BooleanOutcome = z43.object({
1835
- created: z43.array(ComponentHandle),
1836
- deleted: z43.array(ComponentHandle)
2003
+ import * as z44 from "zod";
2004
+ var BooleanOutcome = z44.object({
2005
+ created: z44.array(ComponentHandle),
2006
+ deleted: z44.array(ComponentHandle)
1837
2007
  });
1838
- var OffsetSplitOutcome = z43.object({
1839
- createdIds: z43.array(ComponentHandle),
1840
- deletedIds: z43.array(ComponentHandle),
1841
- offsetValue: z43.number()
2008
+ var OffsetSplitOutcome = z44.object({
2009
+ createdIds: z44.array(ComponentHandle),
2010
+ deletedIds: z44.array(ComponentHandle),
2011
+ offsetValue: z44.number()
1842
2012
  });
1843
2013
 
1844
2014
  // src/api/design/boolean/index.ts
1845
- import * as z44 from "zod";
2015
+ import * as z45 from "zod";
1846
2016
  var PluginDesignBooleanApi = class {
1847
2017
  constructor() {
1848
2018
  }
1849
2019
  };
1850
- var BooleanOptions = z44.object({
2020
+ var BooleanOptions = z45.object({
1851
2021
  offset: Vec3Handle.optional()
1852
2022
  });
1853
- var PluginDesignBooleanUnionArgs = z44.object({
1854
- components: z44.array(ComponentHandle).min(2),
2023
+ var PluginDesignBooleanUnionArgs = z45.object({
2024
+ components: z45.array(ComponentHandle).min(2),
1855
2025
  options: BooleanOptions.optional()
1856
2026
  });
1857
- var PluginDesignBooleanSubtractArgs = z44.object({
2027
+ var PluginDesignBooleanSubtractArgs = z45.object({
1858
2028
  target: ComponentHandle,
1859
- tools: z44.array(ComponentHandle).min(1),
2029
+ tools: z45.array(ComponentHandle).min(1),
1860
2030
  options: BooleanOptions.optional()
1861
2031
  });
1862
- var PluginDesignBooleanIntersectArgs = z44.object({
1863
- components: z44.array(ComponentHandle).length(2),
2032
+ var PluginDesignBooleanIntersectArgs = z45.object({
2033
+ components: z45.array(ComponentHandle).length(2),
1864
2034
  options: BooleanOptions.optional()
1865
2035
  });
1866
2036
 
1867
2037
  // src/api/design/transform/index.ts
1868
- import * as z45 from "zod";
2038
+ import * as z46 from "zod";
1869
2039
  var PluginDesignTransformApi = class {
1870
2040
  constructor() {
1871
2041
  }
1872
2042
  };
1873
- var PluginDesignMoveArgs = z45.object({
1874
- components: z45.array(ComponentHandle).min(1),
2043
+ var PluginAlignEdge = z46.enum(["left", "right", "center", "top", "bottom", "middle"]);
2044
+ var PluginDesignMoveArgs = z46.object({
2045
+ components: z46.array(ComponentHandle).min(1),
1875
2046
  displacement: Vec3Handle,
1876
- is2D: z45.boolean().optional(),
1877
- trackParentChange: z45.boolean().optional()
2047
+ is2D: z46.boolean().optional(),
2048
+ trackParentChange: z46.boolean().optional()
1878
2049
  });
1879
- var PluginDesignRotateArgs = z45.object({
1880
- components: z45.array(ComponentHandle).min(1),
1881
- angleInDegrees: z45.number(),
2050
+ var PluginDesignRotateArgs = z46.object({
2051
+ components: z46.array(ComponentHandle).min(1),
2052
+ angleInDegrees: z46.number(),
1882
2053
  axis: Vec3Handle.optional(),
1883
- is2D: z45.boolean().optional()
2054
+ is2D: z46.boolean().optional()
2055
+ });
2056
+ var PluginDesignAlignArgs = z46.object({
2057
+ components: z46.array(ComponentHandle).min(1),
2058
+ edge: PluginAlignEdge,
2059
+ reference: ComponentHandle.optional()
1884
2060
  });
1885
2061
 
1886
2062
  // src/api/design/edit/index.ts
1887
- import * as z46 from "zod";
2063
+ import * as z47 from "zod";
1888
2064
  var PluginDesignEditApi = class {
1889
2065
  constructor() {
1890
2066
  }
1891
2067
  };
1892
- var PluginDesignOffsetSplitArgs = z46.object({
2068
+ var PluginDesignOffsetSplitArgs = z47.object({
1893
2069
  component: ComponentHandle,
1894
- offsetDistance: z46.number(),
2070
+ offsetDistance: z47.number(),
1895
2071
  profilePickPoint: Vec3Handle.optional()
1896
2072
  });
1897
2073
 
1898
2074
  // src/api/design/update/index.ts
1899
- import * as z47 from "zod";
1900
- var PluginSpacePropertyUpdates = z47.object({
1901
- room_type: z47.string().optional(),
2075
+ import * as z48 from "zod";
2076
+ var PluginSpacePropertyUpdates = z48.object({
2077
+ room_type: z48.string().optional(),
1902
2078
  massType: PluginMassType.optional(),
1903
2079
  spaceType: PluginSpaceType.optional(),
1904
2080
  areaClass: PluginAreaClass.optional(),
1905
2081
  departmentId: PluginDepartmentId.optional()
1906
2082
  });
1907
- var PluginSpaceGeometryUpdate = z47.object({
2083
+ var PluginSpaceGeometryUpdate = z48.object({
1908
2084
  profile: ProfileHandle,
1909
- extrudeHeight: z47.number()
2085
+ extrudeHeight: z48.number()
1910
2086
  });
1911
- var PluginUpdateSpaceItem = z47.object({
2087
+ var PluginUpdateSpaceItem = z48.object({
1912
2088
  space: ComponentHandle,
1913
2089
  properties: PluginSpacePropertyUpdates.optional(),
1914
2090
  geometry: PluginSpaceGeometryUpdate.optional()
1915
2091
  });
2092
+ var PluginDesignSetLabelArgs = z48.object({
2093
+ component: ComponentHandle,
2094
+ label: z48.string().trim().min(1)
2095
+ });
2096
+ var PluginStaircaseParamUpdates = z48.object({
2097
+ isStoreyHeightUnlocked: z48.boolean().optional(),
2098
+ isStaircaseHeightUnlocked: z48.boolean().optional(),
2099
+ storeyHeight: z48.number().optional(),
2100
+ staircaseHeight: z48.number().optional(),
2101
+ steps: z48.number().int().optional(),
2102
+ riser: z48.number().optional(),
2103
+ tread: z48.number().optional(),
2104
+ width: z48.number().optional(),
2105
+ depth: z48.number().optional(),
2106
+ wellSize: z48.number().optional(),
2107
+ flightStartDistAfterTurn: z48.number().optional(),
2108
+ landingWidth: z48.number().optional(),
2109
+ baseOffset: z48.number().optional()
2110
+ }).refine((p) => Object.keys(p).length > 0, {
2111
+ message: "PluginStaircaseParamUpdates requires at least one field to change"
2112
+ });
2113
+ var PluginDesignUpdateStaircaseArgs = z48.object({
2114
+ staircases: z48.array(ComponentHandle),
2115
+ params: PluginStaircaseParamUpdates
2116
+ });
1916
2117
  var PluginDesignUpdateApi = class {
1917
2118
  constructor() {
1918
2119
  }
@@ -1925,37 +2126,37 @@ var PluginDesignApi = class {
1925
2126
  };
1926
2127
 
1927
2128
  // src/api/entity/buildableEnvelope.ts
1928
- import * as z48 from "zod";
2129
+ import * as z49 from "zod";
1929
2130
  var PluginBuildableEnvelopeApi = class {
1930
2131
  constructor() {
1931
2132
  }
1932
2133
  };
1933
- var PluginBuildableEnvelopePolygonVertex = z48.union([
1934
- z48.object({ x: z48.number().finite(), z: z48.number().finite() }).strict(),
1935
- z48.tuple([z48.number().finite(), z48.number().finite()])
2134
+ var PluginBuildableEnvelopePolygonVertex = z49.union([
2135
+ z49.object({ x: z49.number().finite(), z: z49.number().finite() }).strict(),
2136
+ z49.tuple([z49.number().finite(), z49.number().finite()])
1936
2137
  ]);
1937
- var PluginBuildableEnvelopeVerticalCap = z48.discriminatedUnion("kind", [
1938
- z48.object({
1939
- kind: z48.literal("max_height"),
1940
- maxHeight: z48.number().finite().positive()
2138
+ var PluginBuildableEnvelopeVerticalCap = z49.discriminatedUnion("kind", [
2139
+ z49.object({
2140
+ kind: z49.literal("max_height"),
2141
+ maxHeight: z49.number().finite().positive()
1941
2142
  }).strict(),
1942
- z48.object({
1943
- kind: z48.literal("max_floors"),
1944
- maxFloors: z48.number().finite().int().positive()
2143
+ z49.object({
2144
+ kind: z49.literal("max_floors"),
2145
+ maxFloors: z49.number().finite().int().positive()
1945
2146
  }).strict()
1946
2147
  ]);
1947
- var PluginBuildableEnvelopeSetbackTier = z48.object({
1948
- aboveHeight: z48.number().finite().nonnegative(),
1949
- front: z48.number().finite().nonnegative(),
1950
- side: z48.number().finite().nonnegative(),
1951
- rear: z48.number().finite().nonnegative()
2148
+ var PluginBuildableEnvelopeSetbackTier = z49.object({
2149
+ aboveHeight: z49.number().finite().nonnegative(),
2150
+ front: z49.number().finite().nonnegative(),
2151
+ side: z49.number().finite().nonnegative(),
2152
+ rear: z49.number().finite().nonnegative()
1952
2153
  }).strict();
1953
2154
  function refineSetbackTiers(args, ctx) {
1954
2155
  const tiers = args.setbacks;
1955
2156
  if (tiers.length === 0) return;
1956
2157
  if (tiers[0].aboveHeight !== 0) {
1957
2158
  ctx.addIssue({
1958
- code: z48.ZodIssueCode.custom,
2159
+ code: z49.ZodIssueCode.custom,
1959
2160
  path: ["setbacks", 0, "aboveHeight"],
1960
2161
  message: "Ground tier required: setbacks[0].aboveHeight must be 0."
1961
2162
  });
@@ -1963,75 +2164,75 @@ function refineSetbackTiers(args, ctx) {
1963
2164
  for (let i = 1; i < tiers.length; i++) {
1964
2165
  if (!(tiers[i].aboveHeight > tiers[i - 1].aboveHeight)) {
1965
2166
  ctx.addIssue({
1966
- code: z48.ZodIssueCode.custom,
2167
+ code: z49.ZodIssueCode.custom,
1967
2168
  path: ["setbacks", i, "aboveHeight"],
1968
2169
  message: "Setback tiers must be ordered by strictly increasing aboveHeight."
1969
2170
  });
1970
2171
  }
1971
2172
  }
1972
2173
  }
1973
- var PluginBuildableEnvelopeCreateArgs = z48.object({
1974
- sitePolygon: z48.array(PluginBuildableEnvelopePolygonVertex).min(3),
1975
- lengthUnit: z48.union([z48.literal("ft"), z48.literal("m")]),
1976
- setbacks: z48.array(PluginBuildableEnvelopeSetbackTier).min(1),
2174
+ var PluginBuildableEnvelopeCreateArgs = z49.object({
2175
+ sitePolygon: z49.array(PluginBuildableEnvelopePolygonVertex).min(3),
2176
+ lengthUnit: z49.union([z49.literal("ft"), z49.literal("m")]),
2177
+ setbacks: z49.array(PluginBuildableEnvelopeSetbackTier).min(1),
1977
2178
  verticalCap: PluginBuildableEnvelopeVerticalCap,
1978
- floorToFloor: z48.number().finite().positive(),
1979
- farRatio: z48.number().finite().positive().optional(),
1980
- lotCoverageMaxPct: z48.number().finite().min(0).max(100).optional()
2179
+ floorToFloor: z49.number().finite().positive(),
2180
+ farRatio: z49.number().finite().positive().optional(),
2181
+ lotCoverageMaxPct: z49.number().finite().min(0).max(100).optional()
1981
2182
  }).strict().superRefine(refineSetbackTiers);
1982
- var PluginBuildableEnvelopeCreateResult = z48.object({
1983
- buildableEnvelopeId: z48.string().min(1)
2183
+ var PluginBuildableEnvelopeCreateResult = z49.object({
2184
+ buildableEnvelopeId: z49.string().min(1)
1984
2185
  }).strict();
1985
- var PluginBuildableEnvelopeUpdateArgs = z48.object({
1986
- buildableEnvelopeId: z48.string().min(1),
1987
- sitePolygon: z48.array(PluginBuildableEnvelopePolygonVertex).min(3),
1988
- lengthUnit: z48.union([z48.literal("ft"), z48.literal("m")]),
1989
- setbacks: z48.array(PluginBuildableEnvelopeSetbackTier).min(1),
2186
+ var PluginBuildableEnvelopeUpdateArgs = z49.object({
2187
+ buildableEnvelopeId: z49.string().min(1),
2188
+ sitePolygon: z49.array(PluginBuildableEnvelopePolygonVertex).min(3),
2189
+ lengthUnit: z49.union([z49.literal("ft"), z49.literal("m")]),
2190
+ setbacks: z49.array(PluginBuildableEnvelopeSetbackTier).min(1),
1990
2191
  verticalCap: PluginBuildableEnvelopeVerticalCap,
1991
- floorToFloor: z48.number().finite().positive(),
1992
- farRatio: z48.number().finite().positive().optional(),
1993
- lotCoverageMaxPct: z48.number().finite().min(0).max(100).optional()
2192
+ floorToFloor: z49.number().finite().positive(),
2193
+ farRatio: z49.number().finite().positive().optional(),
2194
+ lotCoverageMaxPct: z49.number().finite().min(0).max(100).optional()
1994
2195
  }).strict().superRefine(refineSetbackTiers);
1995
- var PluginBuildableEnvelopeUpdateResult = z48.object({
1996
- buildableEnvelopeId: z48.string().min(1)
2196
+ var PluginBuildableEnvelopeUpdateResult = z49.object({
2197
+ buildableEnvelopeId: z49.string().min(1)
1997
2198
  }).strict();
1998
2199
 
1999
2200
  // src/api/entity/referenceLine.ts
2000
- import * as z49 from "zod";
2201
+ import * as z50 from "zod";
2001
2202
  var PluginReferenceLineApi = class {
2002
2203
  constructor() {
2003
2204
  }
2004
2205
  };
2005
- var PluginReferenceLineCreateMultiArgs = z49.object({
2206
+ var PluginReferenceLineCreateMultiArgs = z50.object({
2006
2207
  profile: ProfileHandle
2007
2208
  });
2008
- var PluginReferenceLineCreateMultiResult = z49.object({
2009
- referenceLineIds: z49.array(z49.string())
2209
+ var PluginReferenceLineCreateMultiResult = z50.object({
2210
+ referenceLineIds: z50.array(z50.string())
2010
2211
  });
2011
- var PluginReferenceLineGetProperty = z49.enum([
2212
+ var PluginReferenceLineGetProperty = z50.enum([
2012
2213
  "curve"
2013
2214
  ]);
2014
- var PluginReferenceLineGetArgs = z49.object({
2015
- referenceLineId: z49.string(),
2016
- properties: z49.array(PluginReferenceLineGetProperty)
2215
+ var PluginReferenceLineGetArgs = z50.object({
2216
+ referenceLineId: z50.string(),
2217
+ properties: z50.array(PluginReferenceLineGetProperty)
2017
2218
  });
2018
- var PluginReferenceLineGetResult = z49.object({
2219
+ var PluginReferenceLineGetResult = z50.object({
2019
2220
  curve: CurveHandle
2020
2221
  }).partial();
2021
- var PluginReferenceLineGetAllResult = z49.object({
2022
- referenceLineIds: z49.array(z49.string())
2222
+ var PluginReferenceLineGetAllResult = z50.object({
2223
+ referenceLineIds: z50.array(z50.string())
2023
2224
  });
2024
- var PluginReferenceLineDeleteArgs = z49.object({
2025
- referenceLineId: z49.string()
2225
+ var PluginReferenceLineDeleteArgs = z50.object({
2226
+ referenceLineId: z50.string()
2026
2227
  });
2027
2228
 
2028
2229
  // src/api/entity/story.ts
2029
- import * as z50 from "zod";
2230
+ import * as z51 from "zod";
2030
2231
  var PluginStoryApi = class {
2031
2232
  constructor() {
2032
2233
  }
2033
2234
  };
2034
- var PluginStoryGetProperty = z50.enum([
2235
+ var PluginStoryGetProperty = z51.enum([
2035
2236
  "value",
2036
2237
  "id",
2037
2238
  "name",
@@ -2041,44 +2242,56 @@ var PluginStoryGetProperty = z50.enum([
2041
2242
  "spacesCount",
2042
2243
  "totalArea"
2043
2244
  ]);
2044
- var PluginStoryGetArgs = z50.object({
2045
- storyValue: z50.number().int(),
2046
- properties: z50.array(PluginStoryGetProperty)
2047
- });
2048
- var PluginStoryGetResult = z50.object({
2049
- value: z50.number(),
2050
- id: z50.string(),
2051
- name: z50.string(),
2052
- height: z50.number(),
2053
- base: z50.number(),
2054
- hidden: z50.boolean(),
2055
- spacesCount: z50.number(),
2056
- totalArea: z50.number()
2245
+ var PluginStoryGetArgs = z51.object({
2246
+ storyValue: z51.number().int(),
2247
+ properties: z51.array(PluginStoryGetProperty)
2248
+ });
2249
+ var PluginStoryGetResult = z51.object({
2250
+ value: z51.number(),
2251
+ id: z51.string(),
2252
+ name: z51.string(),
2253
+ height: z51.number(),
2254
+ base: z51.number(),
2255
+ hidden: z51.boolean(),
2256
+ spacesCount: z51.number(),
2257
+ totalArea: z51.number()
2057
2258
  }).partial();
2058
- var PluginStoryGetAllResult = z50.object({
2059
- stories: z50.array(
2060
- z50.object({
2061
- value: z50.number(),
2062
- id: z50.string(),
2063
- name: z50.string()
2259
+ var PluginStoryGetAllResult = z51.object({
2260
+ stories: z51.array(
2261
+ z51.object({
2262
+ value: z51.number(),
2263
+ id: z51.string(),
2264
+ name: z51.string()
2064
2265
  })
2065
2266
  )
2066
2267
  });
2067
- var PluginStoryCreateArgs = z50.object({
2068
- storyValue: z50.number().int(),
2069
- height: z50.number().optional()
2268
+ var PluginStoryCreateArgs = z51.object({
2269
+ storyValue: z51.number().int(),
2270
+ height: z51.number().optional()
2271
+ });
2272
+ var PluginStoryCreateResult = z51.object({
2273
+ storyId: z51.string(),
2274
+ storyValue: z51.number()
2070
2275
  });
2071
- var PluginStoryCreateResult = z50.object({
2072
- storyId: z50.string(),
2073
- storyValue: z50.number()
2276
+ var PluginStoryUpdateArgs = z51.object({
2277
+ storyValue: z51.number().int(),
2278
+ height: z51.number()
2074
2279
  });
2075
- var PluginStoryUpdateArgs = z50.object({
2076
- storyValue: z50.number().int(),
2077
- height: z50.number()
2280
+ var PluginStoryUpdateResult = z51.object({
2281
+ storyValue: z51.number(),
2282
+ height: z51.number()
2078
2283
  });
2079
- var PluginStoryUpdateResult = z50.object({
2080
- storyValue: z50.number(),
2081
- height: z50.number()
2284
+ var PluginStoryDuplicateArgs = z51.object({
2285
+ direction: z51.enum(["up", "down"]),
2286
+ components: z51.array(ComponentHandle).optional(),
2287
+ unique: z51.boolean().optional()
2288
+ });
2289
+ var PluginStoryDuplicateResult = z51.object({
2290
+ sourceStory: z51.number(),
2291
+ targetStories: z51.array(z51.number()),
2292
+ created: z51.array(ComponentHandle),
2293
+ createdStoryValues: z51.array(z51.number()),
2294
+ skipped: z51.number()
2082
2295
  });
2083
2296
 
2084
2297
  // src/api/entity/index.ts
@@ -2088,27 +2301,27 @@ var PluginEntityApi = class {
2088
2301
  };
2089
2302
 
2090
2303
  // src/api/program/departments.ts
2091
- import * as z52 from "zod";
2304
+ import * as z53 from "zod";
2092
2305
 
2093
2306
  // src/api/program/metrics.ts
2094
- import * as z51 from "zod";
2307
+ import * as z52 from "zod";
2095
2308
  var PluginProgramMetricsApi = class {
2096
2309
  constructor() {
2097
2310
  }
2098
2311
  };
2099
- var PluginAreaUnit = z51.enum(["ft2", "m2"]);
2100
- var PluginProgramDepartmentMetric = z51.object({
2101
- departmentId: z51.string(),
2102
- name: z51.string(),
2103
- targetArea: z51.number().nullable(),
2104
- allocatedArea: z51.number()
2312
+ var PluginAreaUnit = z52.enum(["ft2", "m2"]);
2313
+ var PluginProgramDepartmentMetric = z52.object({
2314
+ departmentId: z52.string(),
2315
+ name: z52.string(),
2316
+ targetArea: z52.number().nullable(),
2317
+ allocatedArea: z52.number()
2105
2318
  });
2106
- var PluginProgramMetricsSummary = z51.object({
2319
+ var PluginProgramMetricsSummary = z52.object({
2107
2320
  units: PluginAreaUnit,
2108
- totalTargetArea: z51.number(),
2109
- totalAllocatedArea: z51.number(),
2110
- unassignedArea: z51.number(),
2111
- departments: z51.array(PluginProgramDepartmentMetric)
2321
+ totalTargetArea: z52.number(),
2322
+ totalAllocatedArea: z52.number(),
2323
+ unassignedArea: z52.number(),
2324
+ departments: z52.array(PluginProgramDepartmentMetric)
2112
2325
  }).refine(
2113
2326
  (s) => {
2114
2327
  const summed = s.unassignedArea + s.departments.reduce((acc, d) => acc + d.allocatedArea, 0);
@@ -2125,18 +2338,18 @@ var PluginProgramDepartmentsApi = class {
2125
2338
  constructor() {
2126
2339
  }
2127
2340
  };
2128
- var PluginProgramDepartment = z52.object({
2129
- id: z52.string(),
2130
- name: z52.string(),
2131
- color: z52.string(),
2132
- targetArea: z52.number().nullable()
2341
+ var PluginProgramDepartment = z53.object({
2342
+ id: z53.string(),
2343
+ name: z53.string(),
2344
+ color: z53.string(),
2345
+ targetArea: z53.number().nullable()
2133
2346
  });
2134
- var PluginProgramDepartmentsListResult = z52.object({
2347
+ var PluginProgramDepartmentsListResult = z53.object({
2135
2348
  units: PluginAreaUnit,
2136
- departments: z52.array(PluginProgramDepartment)
2349
+ departments: z53.array(PluginProgramDepartment)
2137
2350
  });
2138
- var PluginProgramDepartmentsGetArgs = z52.object({
2139
- departmentId: z52.string()
2351
+ var PluginProgramDepartmentsGetArgs = z53.object({
2352
+ departmentId: z53.string()
2140
2353
  });
2141
2354
  var PluginProgramDepartmentsGetResult = PluginProgramDepartment.extend(
2142
2355
  {
@@ -2146,81 +2359,95 @@ var PluginProgramDepartmentsGetResult = PluginProgramDepartment.extend(
2146
2359
  var PluginProgramDepartmentRecord = PluginProgramDepartment.extend({
2147
2360
  units: PluginAreaUnit
2148
2361
  });
2149
- var PluginProgramDepartmentsCreateArgs = z52.object({
2150
- name: z52.string(),
2151
- color: z52.string()
2362
+ var PluginProgramDepartmentsCreateArgs = z53.object({
2363
+ name: z53.string(),
2364
+ color: z53.string()
2152
2365
  });
2153
- var PluginProgramDepartmentsCreateResult = z52.object({
2154
- departmentId: z52.string()
2366
+ var PluginProgramDepartmentsCreateResult = z53.object({
2367
+ departmentId: z53.string()
2155
2368
  });
2156
- var PluginProgramDepartmentsUpdateArgs = z52.object({
2157
- departmentId: z52.string(),
2158
- name: z52.string().optional(),
2159
- color: z52.string().optional()
2369
+ var PluginProgramDepartmentsUpdateArgs = z53.object({
2370
+ departmentId: z53.string(),
2371
+ name: z53.string().optional(),
2372
+ color: z53.string().optional()
2160
2373
  });
2161
2374
  var PluginProgramDepartmentsUpdateResult = PluginProgramDepartmentRecord;
2162
- var PluginProgramDepartmentsAssignArgs = z52.object({
2163
- departmentId: z52.string(),
2164
- spaceIds: z52.array(ComponentHandle).min(1)
2375
+ var PluginProgramDepartmentsAssignArgs = z53.object({
2376
+ departmentId: z53.string(),
2377
+ spaceIds: z53.array(ComponentHandle).min(1)
2165
2378
  });
2166
- var PluginProgramDepartmentsAssignResult = z52.object({
2167
- departmentId: z52.string(),
2168
- spaceIds: z52.array(ComponentHandle)
2379
+ var PluginProgramDepartmentsAssignResult = z53.object({
2380
+ departmentId: z53.string(),
2381
+ spaceIds: z53.array(ComponentHandle)
2169
2382
  });
2170
- var PluginProgramDepartmentsUnassignArgs = z52.object({
2171
- spaceIds: z52.array(ComponentHandle).min(1)
2383
+ var PluginProgramDepartmentsUnassignArgs = z53.object({
2384
+ spaceIds: z53.array(ComponentHandle).min(1)
2172
2385
  });
2173
- var PluginProgramDepartmentsUnassignResult = z52.object({
2174
- spaceIds: z52.array(ComponentHandle)
2386
+ var PluginProgramDepartmentsUnassignResult = z53.object({
2387
+ spaceIds: z53.array(ComponentHandle)
2175
2388
  });
2176
- var PluginProgramDepartmentsSetTargetAreaArgs = z52.object({
2177
- departmentId: z52.string(),
2178
- targetArea: z52.number(),
2389
+ var PluginProgramDepartmentsSetTargetAreaArgs = z53.object({
2390
+ departmentId: z53.string(),
2391
+ targetArea: z53.number(),
2179
2392
  units: PluginAreaUnit.optional()
2180
2393
  });
2181
2394
  var PluginProgramDepartmentsSetTargetAreaResult = PluginProgramDepartmentRecord;
2182
- var PluginProgramDepartmentsDeleteArgs = z52.object({
2183
- departmentId: z52.string()
2395
+ var PluginProgramDepartmentsDeleteArgs = z53.object({
2396
+ departmentId: z53.string()
2184
2397
  });
2185
- var PluginProgramDepartmentsDeleteResult = z52.object({
2186
- departmentId: z52.string(),
2187
- reassignedSpaceIds: z52.array(ComponentHandle)
2398
+ var PluginProgramDepartmentsDeleteResult = z53.object({
2399
+ departmentId: z53.string(),
2400
+ reassignedSpaceIds: z53.array(ComponentHandle)
2188
2401
  });
2189
2402
 
2190
2403
  // src/api/program/adjacency.ts
2191
- import * as z53 from "zod";
2404
+ import * as z54 from "zod";
2192
2405
  var PluginProgramAdjacencyApi = class {
2193
2406
  constructor() {
2194
2407
  }
2195
2408
  };
2196
- var PluginAdjacencyLevel = z53.enum(["department", "space"]);
2197
- var PluginProgramAdjacencyGetMatrixArgs = z53.object({
2409
+ var PluginAdjacencyLevel = z54.enum(["department", "space"]);
2410
+ var PluginProgramAdjacencyGetMatrixArgs = z54.object({
2198
2411
  level: PluginAdjacencyLevel,
2199
- ids: z53.array(z53.string()).optional()
2412
+ ids: z54.array(z54.string()).optional()
2200
2413
  });
2201
- var PluginProgramAdjacencyGetMatrixResult = z53.object({
2202
- ids: z53.array(z53.string()),
2203
- departmentIds: z53.array(z53.string().nullable()).optional(),
2204
- matrix: z53.array(z53.array(z53.number()))
2414
+ var PluginProgramAdjacencyGetMatrixResult = z54.object({
2415
+ ids: z54.array(z54.string()),
2416
+ departmentIds: z54.array(z54.string().nullable()).optional(),
2417
+ matrix: z54.array(z54.array(z54.number()))
2205
2418
  });
2206
- var PluginProgramAdjacencyComputeResult = z53.object({
2207
- success: z53.boolean(),
2208
- error: z53.string().optional()
2419
+ var PluginProgramAdjacencyComputeResult = z54.object({
2420
+ success: z54.boolean(),
2421
+ error: z54.string().optional()
2209
2422
  });
2210
2423
 
2211
2424
  // src/api/program/layout.ts
2212
- import * as z54 from "zod";
2425
+ import * as z55 from "zod";
2213
2426
  var PluginProgramLayoutApi = class {
2214
2427
  constructor() {
2215
2428
  }
2216
2429
  };
2217
- var PluginProgramLayoutRunResult = z54.object({
2218
- success: z54.boolean(),
2219
- error: z54.string().optional()
2430
+ var PluginProgramLayoutRunArgs = z55.object({
2431
+ spaceIds: z55.array(z55.string()).optional(),
2432
+ departmentIds: z55.array(z55.string()).optional(),
2433
+ envelopeId: z55.string().optional()
2434
+ });
2435
+ var PluginProgramLayoutRunResult = z55.object({
2436
+ success: z55.boolean(),
2437
+ error: z55.string().optional()
2220
2438
  });
2439
+ var PluginProgramLayoutJobStatus = z55.enum([
2440
+ "running",
2441
+ "active",
2442
+ "inactive"
2443
+ ]);
2444
+ var PluginProgramLayoutJobState = z55.object({
2445
+ status: PluginProgramLayoutJobStatus
2446
+ });
2447
+ var PluginProgramLayoutStateResult = PluginProgramLayoutJobState.nullable();
2221
2448
 
2222
2449
  // src/api/program/spreadsheet.ts
2223
- import * as z55 from "zod";
2450
+ import * as z56 from "zod";
2224
2451
  var PluginProgramSpreadsheetApi = class {
2225
2452
  constructor() {
2226
2453
  }
@@ -2233,84 +2460,84 @@ var PluginProgramSpreadsheetBindingsApi = class {
2233
2460
  constructor() {
2234
2461
  }
2235
2462
  };
2236
- var PluginSpreadsheetCell = z55.union([
2237
- z55.string(),
2238
- z55.number(),
2239
- z55.boolean(),
2240
- z55.null()
2463
+ var PluginSpreadsheetCell = z56.union([
2464
+ z56.string(),
2465
+ z56.number(),
2466
+ z56.boolean(),
2467
+ z56.null()
2241
2468
  ]);
2242
- var PluginSpreadsheetAlign = z55.enum(["left", "center", "right"]);
2243
- var PluginSpreadsheetColumn = z55.object({
2244
- key: z55.string(),
2245
- header: z55.string(),
2246
- width: z55.number().optional(),
2247
- format: z55.string().optional(),
2469
+ var PluginSpreadsheetAlign = z56.enum(["left", "center", "right"]);
2470
+ var PluginSpreadsheetColumn = z56.object({
2471
+ key: z56.string(),
2472
+ header: z56.string(),
2473
+ width: z56.number().optional(),
2474
+ format: z56.string().optional(),
2248
2475
  align: PluginSpreadsheetAlign.optional()
2249
2476
  });
2250
- var PluginSpreadsheetTotal = z55.object({
2251
- column: z55.string(),
2252
- fn: z55.enum(["sum", "avg", "count", "min", "max"]),
2253
- label: z55.string().optional()
2254
- });
2255
- var PluginProgramSpreadsheetRenderArgs = z55.object({
2256
- sheetName: z55.string(),
2257
- columns: z55.array(PluginSpreadsheetColumn),
2258
- rows: z55.array(z55.record(z55.string(), PluginSpreadsheetCell)),
2259
- title: z55.string().optional(),
2260
- startCell: z55.string().optional(),
2261
- whenExists: z55.enum(["replace", "error"]).optional(),
2262
- asTable: z55.boolean().optional(),
2263
- freezeHeader: z55.boolean().optional(),
2264
- totals: z55.array(PluginSpreadsheetTotal).optional()
2265
- });
2266
- var PluginProgramSpreadsheetRenderResult = z55.object({
2267
- sheetName: z55.string(),
2268
- range: z55.string(),
2269
- headerRange: z55.string(),
2270
- rowCount: z55.number(),
2271
- colCount: z55.number(),
2272
- tableName: z55.string().nullable(),
2273
- replaced: z55.boolean()
2274
- });
2275
- var PluginProgramSpreadsheetRenderDatasetArgs = z55.object({
2276
- sheetName: z55.string().optional(),
2277
- title: z55.string().optional(),
2278
- filter: z55.string().optional()
2279
- });
2280
- var PluginSpreadsheetExportFormat = z55.enum(["xlsx", "pdf", "csv"]);
2281
- var PluginProgramSpreadsheetExportArgs = z55.object({
2477
+ var PluginSpreadsheetTotal = z56.object({
2478
+ column: z56.string(),
2479
+ fn: z56.enum(["sum", "avg", "count", "min", "max"]),
2480
+ label: z56.string().optional()
2481
+ });
2482
+ var PluginProgramSpreadsheetRenderArgs = z56.object({
2483
+ sheetName: z56.string(),
2484
+ columns: z56.array(PluginSpreadsheetColumn),
2485
+ rows: z56.array(z56.record(z56.string(), PluginSpreadsheetCell)),
2486
+ title: z56.string().optional(),
2487
+ startCell: z56.string().optional(),
2488
+ whenExists: z56.enum(["replace", "error"]).optional(),
2489
+ asTable: z56.boolean().optional(),
2490
+ freezeHeader: z56.boolean().optional(),
2491
+ totals: z56.array(PluginSpreadsheetTotal).optional()
2492
+ });
2493
+ var PluginProgramSpreadsheetRenderResult = z56.object({
2494
+ sheetName: z56.string(),
2495
+ range: z56.string(),
2496
+ headerRange: z56.string(),
2497
+ rowCount: z56.number(),
2498
+ colCount: z56.number(),
2499
+ tableName: z56.string().nullable(),
2500
+ replaced: z56.boolean()
2501
+ });
2502
+ var PluginProgramSpreadsheetRenderDatasetArgs = z56.object({
2503
+ sheetName: z56.string().optional(),
2504
+ title: z56.string().optional(),
2505
+ filter: z56.string().optional()
2506
+ });
2507
+ var PluginSpreadsheetExportFormat = z56.enum(["xlsx", "pdf", "csv"]);
2508
+ var PluginProgramSpreadsheetExportArgs = z56.object({
2282
2509
  format: PluginSpreadsheetExportFormat,
2283
- fileName: z55.string().optional()
2510
+ fileName: z56.string().optional()
2284
2511
  });
2285
- var PluginProgramSpreadsheetExportResult = z55.object({
2512
+ var PluginProgramSpreadsheetExportResult = z56.object({
2286
2513
  format: PluginSpreadsheetExportFormat,
2287
- fileName: z55.string(),
2288
- mimeType: z55.string(),
2289
- dataBase64: z55.string()
2290
- });
2291
- var PluginSpreadsheetSheetInfo = z55.object({
2292
- name: z55.string(),
2293
- index: z55.number(),
2294
- visible: z55.boolean(),
2295
- rowCount: z55.number(),
2296
- colCount: z55.number()
2297
- });
2298
- var PluginProgramSpreadsheetListSheetsResult = z55.object({
2299
- sheets: z55.array(PluginSpreadsheetSheetInfo),
2300
- activeSheet: z55.string().nullable()
2301
- });
2302
- var PluginProgramSpreadsheetGetSheetDataArgs = z55.object({
2303
- sheetName: z55.string(),
2304
- range: z55.string().optional(),
2305
- header: z55.boolean().optional()
2306
- });
2307
- var PluginProgramSpreadsheetGetSheetDataResult = z55.object({
2308
- sheetName: z55.string(),
2309
- range: z55.string(),
2310
- values: z55.array(z55.array(PluginSpreadsheetCell)),
2311
- records: z55.array(z55.record(z55.string(), PluginSpreadsheetCell)).optional()
2312
- });
2313
- var PluginSpreadsheetChartType = z55.enum([
2514
+ fileName: z56.string(),
2515
+ mimeType: z56.string(),
2516
+ dataBase64: z56.string()
2517
+ });
2518
+ var PluginSpreadsheetSheetInfo = z56.object({
2519
+ name: z56.string(),
2520
+ index: z56.number(),
2521
+ visible: z56.boolean(),
2522
+ rowCount: z56.number(),
2523
+ colCount: z56.number()
2524
+ });
2525
+ var PluginProgramSpreadsheetListSheetsResult = z56.object({
2526
+ sheets: z56.array(PluginSpreadsheetSheetInfo),
2527
+ activeSheet: z56.string().nullable()
2528
+ });
2529
+ var PluginProgramSpreadsheetGetSheetDataArgs = z56.object({
2530
+ sheetName: z56.string(),
2531
+ range: z56.string().optional(),
2532
+ header: z56.boolean().optional()
2533
+ });
2534
+ var PluginProgramSpreadsheetGetSheetDataResult = z56.object({
2535
+ sheetName: z56.string(),
2536
+ range: z56.string(),
2537
+ values: z56.array(z56.array(PluginSpreadsheetCell)),
2538
+ records: z56.array(z56.record(z56.string(), PluginSpreadsheetCell)).optional()
2539
+ });
2540
+ var PluginSpreadsheetChartType = z56.enum([
2314
2541
  "column",
2315
2542
  "bar",
2316
2543
  "line",
@@ -2318,249 +2545,249 @@ var PluginSpreadsheetChartType = z55.enum([
2318
2545
  "area",
2319
2546
  "scatter"
2320
2547
  ]);
2321
- var PluginProgramSpreadsheetAddChartArgs = z55.object({
2322
- sheetName: z55.string(),
2548
+ var PluginProgramSpreadsheetAddChartArgs = z56.object({
2549
+ sheetName: z56.string(),
2323
2550
  chartType: PluginSpreadsheetChartType,
2324
- dataRange: z55.string(),
2325
- title: z55.string().optional(),
2326
- position: z55.object({ x: z55.number(), y: z55.number() }).optional(),
2327
- size: z55.object({ width: z55.number(), height: z55.number() }).optional()
2328
- });
2329
- var PluginProgramSpreadsheetAddChartResult = z55.object({
2330
- chartId: z55.string()
2331
- });
2332
- var PluginProgramSpreadsheetHighlightCellsArgs = z55.object({
2333
- sheetName: z55.string(),
2334
- range: z55.string(),
2335
- color: z55.string().optional(),
2336
- bold: z55.boolean().optional()
2337
- });
2338
- var PluginProgramSpreadsheetHighlightCellsResult = z55.object({
2339
- sheetName: z55.string(),
2340
- range: z55.string()
2341
- });
2342
- var PluginSpreadsheetProgramRow = z55.object({
2343
- departmentId: z55.string(),
2344
- name: z55.string(),
2345
- targetArea: z55.number().nullable(),
2346
- allocatedArea: z55.number(),
2347
- variance: z55.number().nullable()
2348
- });
2349
- var PluginProgramSpreadsheetGetProgramResult = z55.object({
2551
+ dataRange: z56.string(),
2552
+ title: z56.string().optional(),
2553
+ position: z56.object({ x: z56.number(), y: z56.number() }).optional(),
2554
+ size: z56.object({ width: z56.number(), height: z56.number() }).optional()
2555
+ });
2556
+ var PluginProgramSpreadsheetAddChartResult = z56.object({
2557
+ chartId: z56.string()
2558
+ });
2559
+ var PluginProgramSpreadsheetHighlightCellsArgs = z56.object({
2560
+ sheetName: z56.string(),
2561
+ range: z56.string(),
2562
+ color: z56.string().optional(),
2563
+ bold: z56.boolean().optional()
2564
+ });
2565
+ var PluginProgramSpreadsheetHighlightCellsResult = z56.object({
2566
+ sheetName: z56.string(),
2567
+ range: z56.string()
2568
+ });
2569
+ var PluginSpreadsheetProgramRow = z56.object({
2570
+ departmentId: z56.string(),
2571
+ name: z56.string(),
2572
+ targetArea: z56.number().nullable(),
2573
+ allocatedArea: z56.number(),
2574
+ variance: z56.number().nullable()
2575
+ });
2576
+ var PluginProgramSpreadsheetGetProgramResult = z56.object({
2350
2577
  units: PluginAreaUnit,
2351
- rows: z55.array(PluginSpreadsheetProgramRow),
2352
- totalTargetArea: z55.number(),
2353
- totalAllocatedArea: z55.number(),
2354
- generatedAt: z55.string()
2355
- });
2356
- var PluginSpreadsheetTakeoffRow = z55.object({
2357
- objectType: z55.string(),
2358
- category: z55.string(),
2359
- family: z55.string(),
2360
- quantity: z55.number(),
2361
- unit: z55.string()
2362
- });
2363
- var PluginProgramSpreadsheetGetTakeoffResult = z55.object({
2364
- rows: z55.array(PluginSpreadsheetTakeoffRow),
2365
- rowCount: z55.number(),
2366
- generatedAt: z55.string()
2367
- });
2368
- var PluginSpreadsheetWhenExists = z55.enum(["reuse", "replace", "error"]);
2369
- var PluginProgramSpreadsheetCreateSheetArgs = z55.object({
2370
- name: z55.string(),
2578
+ rows: z56.array(PluginSpreadsheetProgramRow),
2579
+ totalTargetArea: z56.number(),
2580
+ totalAllocatedArea: z56.number(),
2581
+ generatedAt: z56.string()
2582
+ });
2583
+ var PluginSpreadsheetTakeoffRow = z56.object({
2584
+ objectType: z56.string(),
2585
+ category: z56.string(),
2586
+ family: z56.string(),
2587
+ quantity: z56.number(),
2588
+ unit: z56.string()
2589
+ });
2590
+ var PluginProgramSpreadsheetGetTakeoffResult = z56.object({
2591
+ rows: z56.array(PluginSpreadsheetTakeoffRow),
2592
+ rowCount: z56.number(),
2593
+ generatedAt: z56.string()
2594
+ });
2595
+ var PluginSpreadsheetWhenExists = z56.enum(["reuse", "replace", "error"]);
2596
+ var PluginProgramSpreadsheetCreateSheetArgs = z56.object({
2597
+ name: z56.string(),
2371
2598
  whenExists: PluginSpreadsheetWhenExists.optional()
2372
2599
  });
2373
- var PluginProgramSpreadsheetCreateSheetResult = z55.object({
2374
- sheetName: z55.string(),
2375
- replaced: z55.boolean(),
2376
- sheetIndex: z55.number().nullable()
2377
- });
2378
- var PluginProgramSpreadsheetSetValuesArgs = z55.object({
2379
- sheetName: z55.string(),
2380
- values: z55.array(z55.array(PluginSpreadsheetCell)),
2381
- startCell: z55.string().optional()
2382
- });
2383
- var PluginProgramSpreadsheetSetValuesResult = z55.object({
2384
- sheetName: z55.string(),
2385
- startCell: z55.string(),
2386
- rowCount: z55.number(),
2387
- colCount: z55.number()
2388
- });
2389
- var PluginSpreadsheetFormula = z55.object({
2390
- cell: z55.string(),
2391
- formula: z55.string()
2392
- });
2393
- var PluginProgramSpreadsheetSetFormulasArgs = z55.object({
2394
- sheetName: z55.string(),
2395
- formulas: z55.array(PluginSpreadsheetFormula)
2396
- });
2397
- var PluginProgramSpreadsheetSetFormulasResult = z55.object({
2398
- sheetName: z55.string(),
2399
- count: z55.number()
2400
- });
2401
- var PluginSpreadsheetFontWeight = z55.enum(["normal", "bold"]);
2402
- var PluginSpreadsheetFontStyle = z55.enum(["normal", "italic"]);
2403
- var PluginSpreadsheetHorizontalAlign = z55.enum([
2600
+ var PluginProgramSpreadsheetCreateSheetResult = z56.object({
2601
+ sheetName: z56.string(),
2602
+ replaced: z56.boolean(),
2603
+ sheetIndex: z56.number().nullable()
2604
+ });
2605
+ var PluginProgramSpreadsheetSetValuesArgs = z56.object({
2606
+ sheetName: z56.string(),
2607
+ values: z56.array(z56.array(PluginSpreadsheetCell)),
2608
+ startCell: z56.string().optional()
2609
+ });
2610
+ var PluginProgramSpreadsheetSetValuesResult = z56.object({
2611
+ sheetName: z56.string(),
2612
+ startCell: z56.string(),
2613
+ rowCount: z56.number(),
2614
+ colCount: z56.number()
2615
+ });
2616
+ var PluginSpreadsheetFormula = z56.object({
2617
+ cell: z56.string(),
2618
+ formula: z56.string()
2619
+ });
2620
+ var PluginProgramSpreadsheetSetFormulasArgs = z56.object({
2621
+ sheetName: z56.string(),
2622
+ formulas: z56.array(PluginSpreadsheetFormula)
2623
+ });
2624
+ var PluginProgramSpreadsheetSetFormulasResult = z56.object({
2625
+ sheetName: z56.string(),
2626
+ count: z56.number()
2627
+ });
2628
+ var PluginSpreadsheetFontWeight = z56.enum(["normal", "bold"]);
2629
+ var PluginSpreadsheetFontStyle = z56.enum(["normal", "italic"]);
2630
+ var PluginSpreadsheetHorizontalAlign = z56.enum([
2404
2631
  "left",
2405
2632
  "center",
2406
2633
  "right",
2407
2634
  "general"
2408
2635
  ]);
2409
- var PluginSpreadsheetVerticalAlign = z55.enum([
2636
+ var PluginSpreadsheetVerticalAlign = z56.enum([
2410
2637
  "top",
2411
2638
  "center",
2412
2639
  "bottom"
2413
2640
  ]);
2414
- var PluginSpreadsheetCellStyle = z55.object({
2415
- backColor: z55.string().optional(),
2416
- foreColor: z55.string().optional(),
2417
- font: z55.string().optional(),
2418
- fontFamily: z55.string().optional(),
2419
- fontSize: z55.number().optional(),
2641
+ var PluginSpreadsheetCellStyle = z56.object({
2642
+ backColor: z56.string().optional(),
2643
+ foreColor: z56.string().optional(),
2644
+ font: z56.string().optional(),
2645
+ fontFamily: z56.string().optional(),
2646
+ fontSize: z56.number().optional(),
2420
2647
  fontWeight: PluginSpreadsheetFontWeight.optional(),
2421
2648
  fontStyle: PluginSpreadsheetFontStyle.optional(),
2422
- formatter: z55.string().optional(),
2649
+ formatter: z56.string().optional(),
2423
2650
  horizontalAlign: PluginSpreadsheetHorizontalAlign.optional(),
2424
2651
  verticalAlign: PluginSpreadsheetVerticalAlign.optional()
2425
2652
  });
2426
- var PluginSpreadsheetRangeStyle = z55.object({
2427
- range: z55.string(),
2653
+ var PluginSpreadsheetRangeStyle = z56.object({
2654
+ range: z56.string(),
2428
2655
  style: PluginSpreadsheetCellStyle
2429
2656
  });
2430
- var PluginProgramSpreadsheetSetStylesArgs = z55.object({
2431
- sheetName: z55.string(),
2432
- ranges: z55.array(PluginSpreadsheetRangeStyle)
2657
+ var PluginProgramSpreadsheetSetStylesArgs = z56.object({
2658
+ sheetName: z56.string(),
2659
+ ranges: z56.array(PluginSpreadsheetRangeStyle)
2433
2660
  });
2434
- var PluginProgramSpreadsheetSetStylesResult = z55.object({
2435
- sheetName: z55.string(),
2436
- count: z55.number()
2661
+ var PluginProgramSpreadsheetSetStylesResult = z56.object({
2662
+ sheetName: z56.string(),
2663
+ count: z56.number()
2437
2664
  });
2438
- var PluginProgramSpreadsheetMergeCellsArgs = z55.object({
2439
- sheetName: z55.string(),
2440
- range: z55.string(),
2665
+ var PluginProgramSpreadsheetMergeCellsArgs = z56.object({
2666
+ sheetName: z56.string(),
2667
+ range: z56.string(),
2441
2668
  value: PluginSpreadsheetCell.optional()
2442
2669
  });
2443
- var PluginProgramSpreadsheetMergeCellsResult = z55.object({
2444
- sheetName: z55.string(),
2445
- range: z55.string()
2670
+ var PluginProgramSpreadsheetMergeCellsResult = z56.object({
2671
+ sheetName: z56.string(),
2672
+ range: z56.string()
2446
2673
  });
2447
- var PluginSpreadsheetConditionalRuleType = z55.enum(["dataBar"]);
2448
- var PluginSpreadsheetConditionalRule = z55.object({
2674
+ var PluginSpreadsheetConditionalRuleType = z56.enum(["dataBar"]);
2675
+ var PluginSpreadsheetConditionalRule = z56.object({
2449
2676
  type: PluginSpreadsheetConditionalRuleType,
2450
- color: z55.string().optional()
2677
+ color: z56.string().optional()
2451
2678
  });
2452
- var PluginProgramSpreadsheetAddConditionalFormattingArgs = z55.object({
2453
- sheetName: z55.string(),
2454
- range: z55.string(),
2679
+ var PluginProgramSpreadsheetAddConditionalFormattingArgs = z56.object({
2680
+ sheetName: z56.string(),
2681
+ range: z56.string(),
2455
2682
  rule: PluginSpreadsheetConditionalRule
2456
2683
  });
2457
- var PluginProgramSpreadsheetAddConditionalFormattingResult = z55.object({
2458
- sheetName: z55.string(),
2459
- range: z55.string(),
2460
- created: z55.boolean()
2684
+ var PluginProgramSpreadsheetAddConditionalFormattingResult = z56.object({
2685
+ sheetName: z56.string(),
2686
+ range: z56.string(),
2687
+ created: z56.boolean()
2461
2688
  });
2462
- var PluginProgramSpreadsheetRecalculateArgs = z55.object({
2463
- sheetName: z55.string().optional()
2689
+ var PluginProgramSpreadsheetRecalculateArgs = z56.object({
2690
+ sheetName: z56.string().optional()
2464
2691
  });
2465
- var PluginProgramSpreadsheetRecalculateResult = z55.object({
2466
- scope: z55.enum(["sheet", "workbook"]),
2467
- sheetName: z55.string().nullable()
2692
+ var PluginProgramSpreadsheetRecalculateResult = z56.object({
2693
+ scope: z56.enum(["sheet", "workbook"]),
2694
+ sheetName: z56.string().nullable()
2468
2695
  });
2469
- var PluginSpreadsheetTransactionMethod = z55.enum([
2696
+ var PluginSpreadsheetTransactionMethod = z56.enum([
2470
2697
  "createSheet",
2471
2698
  "setValues",
2472
2699
  "setFormulas",
2473
2700
  "setStyles",
2474
2701
  "mergeCells"
2475
2702
  ]);
2476
- var PluginSpreadsheetTransactionOp = z55.object({
2703
+ var PluginSpreadsheetTransactionOp = z56.object({
2477
2704
  method: PluginSpreadsheetTransactionMethod,
2478
- args: z55.unknown()
2479
- });
2480
- var PluginProgramSpreadsheetTransactionArgs = z55.object({
2481
- operations: z55.array(PluginSpreadsheetTransactionOp),
2482
- label: z55.string().optional()
2483
- });
2484
- var PluginProgramSpreadsheetTransactionResult = z55.object({
2485
- label: z55.string(),
2486
- operationCount: z55.number(),
2487
- results: z55.array(z55.unknown())
2488
- });
2489
- var PluginProgramSpreadsheetRunScriptArgs = z55.object({
2490
- script: z55.string()
2491
- });
2492
- var PluginProgramSpreadsheetRunScriptResult = z55.object({
2493
- result: z55.unknown()
2494
- });
2495
- var PluginSpreadsheetAuditStatus = z55.enum(["success", "error"]);
2496
- var PluginSpreadsheetAuditEntry = z55.object({
2497
- id: z55.string(),
2498
- pluginId: z55.string(),
2499
- method: z55.string(),
2500
- label: z55.string().optional(),
2501
- sheetName: z55.string().optional(),
2502
- timestamp: z55.string(),
2705
+ args: z56.unknown()
2706
+ });
2707
+ var PluginProgramSpreadsheetTransactionArgs = z56.object({
2708
+ operations: z56.array(PluginSpreadsheetTransactionOp),
2709
+ label: z56.string().optional()
2710
+ });
2711
+ var PluginProgramSpreadsheetTransactionResult = z56.object({
2712
+ label: z56.string(),
2713
+ operationCount: z56.number(),
2714
+ results: z56.array(z56.unknown())
2715
+ });
2716
+ var PluginProgramSpreadsheetRunScriptArgs = z56.object({
2717
+ script: z56.string()
2718
+ });
2719
+ var PluginProgramSpreadsheetRunScriptResult = z56.object({
2720
+ result: z56.unknown()
2721
+ });
2722
+ var PluginSpreadsheetAuditStatus = z56.enum(["success", "error"]);
2723
+ var PluginSpreadsheetAuditEntry = z56.object({
2724
+ id: z56.string(),
2725
+ pluginId: z56.string(),
2726
+ method: z56.string(),
2727
+ label: z56.string().optional(),
2728
+ sheetName: z56.string().optional(),
2729
+ timestamp: z56.string(),
2503
2730
  status: PluginSpreadsheetAuditStatus,
2504
- summary: z55.string().optional()
2731
+ summary: z56.string().optional()
2505
2732
  });
2506
- var PluginProgramSpreadsheetGetAuditLogArgs = z55.object({
2507
- limit: z55.number().optional()
2733
+ var PluginProgramSpreadsheetGetAuditLogArgs = z56.object({
2734
+ limit: z56.number().optional()
2508
2735
  });
2509
- var PluginProgramSpreadsheetGetAuditLogResult = z55.object({
2510
- entries: z55.array(PluginSpreadsheetAuditEntry)
2736
+ var PluginProgramSpreadsheetGetAuditLogResult = z56.object({
2737
+ entries: z56.array(PluginSpreadsheetAuditEntry)
2511
2738
  });
2512
- var PluginProgramSpreadsheetPingResult = z55.object({
2513
- pong: z55.boolean()
2739
+ var PluginProgramSpreadsheetPingResult = z56.object({
2740
+ pong: z56.boolean()
2514
2741
  });
2515
- var PluginSpreadsheetTemplateScope = z55.enum(["project", "global"]);
2516
- var PluginProgramSpreadsheetTemplatesCreateArgs = z55.object({
2517
- name: z55.string(),
2518
- sheetName: z55.string(),
2742
+ var PluginSpreadsheetTemplateScope = z56.enum(["project", "global"]);
2743
+ var PluginProgramSpreadsheetTemplatesCreateArgs = z56.object({
2744
+ name: z56.string(),
2745
+ sheetName: z56.string(),
2519
2746
  scope: PluginSpreadsheetTemplateScope.optional()
2520
2747
  });
2521
- var PluginProgramSpreadsheetTemplatesCreateResult = z55.object({
2522
- id: z55.string(),
2523
- name: z55.string(),
2748
+ var PluginProgramSpreadsheetTemplatesCreateResult = z56.object({
2749
+ id: z56.string(),
2750
+ name: z56.string(),
2524
2751
  scope: PluginSpreadsheetTemplateScope,
2525
- sheetName: z55.string()
2752
+ sheetName: z56.string()
2526
2753
  });
2527
- var PluginProgramSpreadsheetTemplatesApplyArgs = z55.object({
2528
- name: z55.string(),
2529
- targetSheetName: z55.string()
2754
+ var PluginProgramSpreadsheetTemplatesApplyArgs = z56.object({
2755
+ name: z56.string(),
2756
+ targetSheetName: z56.string()
2530
2757
  });
2531
- var PluginProgramSpreadsheetTemplatesApplyResult = z55.object({
2532
- name: z55.string(),
2533
- targetSheetName: z55.string()
2758
+ var PluginProgramSpreadsheetTemplatesApplyResult = z56.object({
2759
+ name: z56.string(),
2760
+ targetSheetName: z56.string()
2534
2761
  });
2535
- var PluginSpreadsheetBindingSource = z55.object({
2536
- dataset: z55.enum(["takeoff"])
2762
+ var PluginSpreadsheetBindingSource = z56.object({
2763
+ dataset: z56.enum(["takeoff"])
2537
2764
  });
2538
- var PluginSpreadsheetBindingMode = z55.enum(["replaceRange"]);
2539
- var PluginSpreadsheetBindingTarget = z55.object({
2540
- sheetName: z55.string(),
2541
- startCell: z55.string().optional()
2765
+ var PluginSpreadsheetBindingMode = z56.enum(["replaceRange"]);
2766
+ var PluginSpreadsheetBindingTarget = z56.object({
2767
+ sheetName: z56.string(),
2768
+ startCell: z56.string().optional()
2542
2769
  });
2543
- var PluginSpreadsheetBinding = z55.object({
2544
- id: z55.string(),
2545
- name: z55.string(),
2546
- pluginId: z55.string(),
2770
+ var PluginSpreadsheetBinding = z56.object({
2771
+ id: z56.string(),
2772
+ name: z56.string(),
2773
+ pluginId: z56.string(),
2547
2774
  source: PluginSpreadsheetBindingSource,
2548
- target: z55.object({
2549
- sheetName: z55.string(),
2550
- startCell: z55.string()
2775
+ target: z56.object({
2776
+ sheetName: z56.string(),
2777
+ startCell: z56.string()
2551
2778
  }),
2552
2779
  mode: PluginSpreadsheetBindingMode,
2553
- createdAt: z55.string(),
2554
- updatedAt: z55.string()
2780
+ createdAt: z56.string(),
2781
+ updatedAt: z56.string()
2555
2782
  });
2556
- var PluginSpreadsheetBindingRefresh = z55.object({
2557
- id: z55.string(),
2558
- name: z55.string(),
2559
- sheetName: z55.string(),
2560
- rowCount: z55.number()
2783
+ var PluginSpreadsheetBindingRefresh = z56.object({
2784
+ id: z56.string(),
2785
+ name: z56.string(),
2786
+ sheetName: z56.string(),
2787
+ rowCount: z56.number()
2561
2788
  });
2562
- var PluginProgramSpreadsheetBindingsCreateArgs = z55.object({
2563
- name: z55.string(),
2789
+ var PluginProgramSpreadsheetBindingsCreateArgs = z56.object({
2790
+ name: z56.string(),
2564
2791
  source: PluginSpreadsheetBindingSource,
2565
2792
  target: PluginSpreadsheetBindingTarget,
2566
2793
  mode: PluginSpreadsheetBindingMode.optional()
@@ -2568,185 +2795,186 @@ var PluginProgramSpreadsheetBindingsCreateArgs = z55.object({
2568
2795
  var PluginProgramSpreadsheetBindingsCreateResult = PluginSpreadsheetBinding.extend({
2569
2796
  refresh: PluginSpreadsheetBindingRefresh
2570
2797
  });
2571
- var PluginProgramSpreadsheetBindingsRefreshArgs = z55.object({
2572
- name: z55.string().optional()
2798
+ var PluginProgramSpreadsheetBindingsRefreshArgs = z56.object({
2799
+ name: z56.string().optional()
2573
2800
  });
2574
- var PluginProgramSpreadsheetBindingsRefreshResult = z55.object({
2575
- refreshed: z55.array(PluginSpreadsheetBindingRefresh)
2801
+ var PluginProgramSpreadsheetBindingsRefreshResult = z56.object({
2802
+ refreshed: z56.array(PluginSpreadsheetBindingRefresh)
2576
2803
  });
2577
- var PluginProgramSpreadsheetBindingsListResult = z55.object({
2578
- bindings: z55.array(PluginSpreadsheetBinding)
2804
+ var PluginProgramSpreadsheetBindingsListResult = z56.object({
2805
+ bindings: z56.array(PluginSpreadsheetBinding)
2579
2806
  });
2580
2807
 
2581
2808
  // src/api/program/site.ts
2582
- import * as z56 from "zod";
2809
+ import * as z57 from "zod";
2583
2810
  var PluginProgramSiteApi = class {
2584
2811
  constructor() {
2585
2812
  }
2586
2813
  };
2587
- var PluginSiteFootprintPoint = z56.object({
2588
- x: z56.number(),
2589
- z: z56.number()
2814
+ var PluginSiteFootprintPoint = z57.object({
2815
+ x: z57.number(),
2816
+ z: z57.number()
2590
2817
  });
2591
- var PluginSiteGeoPoint = z56.object({
2592
- lat: z56.number(),
2593
- lng: z56.number(),
2594
- alt: z56.number()
2818
+ var PluginSiteGeoPoint = z57.object({
2819
+ lat: z57.number(),
2820
+ lng: z57.number(),
2821
+ alt: z57.number()
2595
2822
  });
2596
- var PluginSitePolygon = z56.object({
2597
- id: z56.string(),
2598
- area: z56.number(),
2599
- label: z56.string(),
2600
- footprint: z56.array(PluginSiteFootprintPoint)
2823
+ var PluginSitePolygon = z57.object({
2824
+ id: z57.string(),
2825
+ area: z57.number(),
2826
+ label: z57.string(),
2827
+ footprint: z57.array(PluginSiteFootprintPoint)
2601
2828
  });
2602
- var PluginProgramSiteSnapshot = z56.object({
2829
+ var PluginProgramSiteSnapshot = z57.object({
2603
2830
  units: PluginAreaUnit,
2604
- totalArea: z56.number(),
2605
- polygonCount: z56.number(),
2606
- polygons: z56.array(PluginSitePolygon)
2831
+ totalArea: z57.number(),
2832
+ polygonCount: z57.number(),
2833
+ polygons: z57.array(PluginSitePolygon)
2607
2834
  });
2608
- var PluginProgramSiteAreaResult = z56.object({
2835
+ var PluginProgramSiteAreaResult = z57.object({
2609
2836
  units: PluginAreaUnit,
2610
- area: z56.number()
2837
+ area: z57.number()
2611
2838
  });
2612
- var PluginProgramSiteListPolygonsResult = z56.object({
2839
+ var PluginProgramSiteListPolygonsResult = z57.object({
2613
2840
  units: PluginAreaUnit,
2614
- polygons: z56.array(PluginSitePolygon)
2841
+ polygons: z57.array(PluginSitePolygon)
2615
2842
  });
2616
- var PluginProgramSiteListGeoPolygonsResult = z56.object({
2617
- polygons: z56.array(z56.array(PluginSiteGeoPoint))
2843
+ var PluginProgramSiteListGeoPolygonsResult = z57.object({
2844
+ polygons: z57.array(z57.array(PluginSiteGeoPoint))
2618
2845
  });
2619
- var PluginSiteLatLng = z56.object({
2620
- lat: z56.number(),
2621
- lng: z56.number()
2846
+ var PluginSiteLatLng = z57.object({
2847
+ lat: z57.number(),
2848
+ lng: z57.number()
2622
2849
  });
2623
- var PluginSiteBounds = z56.object({
2624
- north: z56.number(),
2625
- south: z56.number(),
2626
- east: z56.number(),
2627
- west: z56.number()
2850
+ var PluginSiteBounds = z57.object({
2851
+ north: z57.number(),
2852
+ south: z57.number(),
2853
+ east: z57.number(),
2854
+ west: z57.number()
2628
2855
  });
2629
- var PluginSiteContextParcel = z56.object({
2630
- footprint: z56.array(PluginSiteLatLng),
2631
- area: z56.number()
2856
+ var PluginSiteContextParcel = z57.object({
2857
+ footprint: z57.array(PluginSiteLatLng),
2858
+ area: z57.number()
2632
2859
  });
2633
- var PluginProgramSiteContext = z56.object({
2860
+ var PluginProgramSiteContext = z57.object({
2634
2861
  center: PluginSiteLatLng,
2635
2862
  bounds: PluginSiteBounds,
2636
- widthInM: z56.number(),
2637
- heightInM: z56.number(),
2638
- zoom: z56.number(),
2639
- parcels: z56.array(PluginSiteContextParcel)
2863
+ widthInM: z57.number(),
2864
+ heightInM: z57.number(),
2865
+ zoom: z57.number(),
2866
+ parcels: z57.array(PluginSiteContextParcel)
2640
2867
  });
2641
2868
  var PluginProgramSiteContextResult = PluginProgramSiteContext.nullable();
2642
- var PluginProgramSiteLocation = z56.object({
2643
- latitude: z56.number(),
2644
- longitude: z56.number()
2869
+ var PluginProgramSiteLocation = z57.object({
2870
+ latitude: z57.number(),
2871
+ longitude: z57.number()
2645
2872
  });
2646
2873
  var PluginProgramSiteLocationResult = PluginProgramSiteLocation.nullable();
2647
- var PluginProgramSiteNorthAngleResult = z56.number().nullable();
2874
+ var PluginProgramSiteNorthAngleResult = z57.number().nullable();
2648
2875
 
2649
2876
  // src/api/program/cores.ts
2650
- import * as z57 from "zod";
2877
+ import * as z58 from "zod";
2651
2878
  var PluginProgramCoresApi = class {
2652
2879
  constructor() {
2653
2880
  }
2654
2881
  };
2655
- var PluginProgramCore = z57.object({
2656
- id: z57.string(),
2657
- groupId: z57.string(),
2658
- storey: z57.number()
2882
+ var PluginProgramCore = z58.object({
2883
+ id: z58.string(),
2884
+ groupId: z58.string(),
2885
+ storey: z58.number()
2659
2886
  });
2660
- var PluginProgramCoresListResult = z57.object({
2661
- cores: z57.array(PluginProgramCore)
2887
+ var PluginProgramCoresListResult = z58.object({
2888
+ cores: z58.array(PluginProgramCore)
2662
2889
  });
2663
- var PluginProgramCoresIsCoreArgs = z57.object({
2664
- id: z57.string()
2890
+ var PluginProgramCoresIsCoreArgs = z58.object({
2891
+ id: z58.string()
2665
2892
  });
2666
- var PluginProgramCoreSpec = z57.object({
2667
- type: z57.string().optional(),
2668
- position: z57.object({ x: z57.number(), y: z57.number(), z: z57.number() }),
2669
- width: z57.number(),
2670
- depth: z57.number(),
2671
- fromStorey: z57.number().optional(),
2672
- toStorey: z57.number().optional()
2893
+ var PluginProgramCoreSpec = z58.object({
2894
+ type: z58.string().optional(),
2895
+ position: z58.object({ x: z58.number(), y: z58.number(), z: z58.number() }),
2896
+ width: z58.number(),
2897
+ depth: z58.number(),
2898
+ fromStorey: z58.number().optional(),
2899
+ toStorey: z58.number().optional()
2673
2900
  });
2674
- var PluginProgramCoresCreateArgs = z57.object({
2675
- cores: z57.array(PluginProgramCoreSpec),
2676
- lengthUnit: z57.enum(["mm", "m", "ft"]).optional()
2901
+ var PluginProgramCoresCreateArgs = z58.object({
2902
+ cores: z58.array(PluginProgramCoreSpec),
2903
+ lengthUnit: z58.enum(["mm", "m", "ft"]).optional()
2677
2904
  });
2678
- var PluginProgramCoresCreateResult = z57.object({
2679
- createdCount: z57.number()
2905
+ var PluginProgramCoresCreateResult = z58.object({
2906
+ createdCount: z58.number()
2680
2907
  });
2681
2908
 
2682
2909
  // src/api/program/classification.ts
2683
- import * as z58 from "zod";
2910
+ import * as z59 from "zod";
2684
2911
  var PluginProgramClassificationApi = class {
2685
2912
  constructor() {
2686
2913
  }
2687
2914
  };
2688
- var PluginClassificationOption = z58.object({
2689
- value: z58.string(),
2690
- label: z58.string()
2915
+ var PluginClassificationOption = z59.object({
2916
+ value: z59.string(),
2917
+ label: z59.string()
2691
2918
  });
2692
- var PluginProgramClassificationTypesResult = z58.object({
2693
- spaceTypes: z58.array(PluginClassificationOption),
2694
- areaClasses: z58.array(PluginClassificationOption),
2695
- massTypes: z58.array(PluginClassificationOption)
2919
+ var PluginProgramClassificationTypesResult = z59.object({
2920
+ spaceTypes: z59.array(PluginClassificationOption),
2921
+ areaClasses: z59.array(PluginClassificationOption),
2922
+ massTypes: z59.array(PluginClassificationOption)
2696
2923
  });
2697
- var PluginProgramClassificationListTagsArgs = z58.object({
2698
- id: z58.string()
2924
+ var PluginProgramClassificationListTagsArgs = z59.object({
2925
+ id: z59.string()
2699
2926
  });
2700
- var PluginSpaceTag = z58.object({
2701
- tagId: z58.string(),
2702
- tagName: z58.string(),
2703
- color: z58.string(),
2704
- categoryId: z58.string()
2927
+ var PluginSpaceTag = z59.object({
2928
+ tagId: z59.string(),
2929
+ tagName: z59.string(),
2930
+ color: z59.string(),
2931
+ categoryId: z59.string()
2705
2932
  });
2706
- var PluginProgramClassificationTagsResult = z58.object({
2707
- tagIds: z58.array(z58.string()),
2708
- tagsByCategory: z58.record(z58.string(), PluginSpaceTag)
2933
+ var PluginProgramClassificationTagsResult = z59.object({
2934
+ tagIds: z59.array(z59.string()),
2935
+ tagsByCategory: z59.record(z59.string(), PluginSpaceTag)
2709
2936
  });
2710
2937
 
2711
2938
  // src/api/program/areas.ts
2712
- import * as z59 from "zod";
2939
+ import * as z60 from "zod";
2713
2940
  var PluginProgramAreasApi = class {
2714
2941
  constructor() {
2715
2942
  }
2716
2943
  };
2717
- var PluginProgramAreaSummary = z59.object({
2718
- count: z59.number().int(),
2719
- hiddenCount: z59.number().int(),
2720
- carpet: z59.number(),
2721
- builtUp: z59.number(),
2722
- excluded: z59.number(),
2723
- farBuiltUp: z59.number(),
2724
- siteArea: z59.number(),
2725
- achievedFar: z59.number().nullable(),
2726
- targetFar: z59.number(),
2727
- deviation: z59.number(),
2944
+ var PluginProgramAreaSummary = z60.object({
2945
+ count: z60.number().int(),
2946
+ hiddenCount: z60.number().int(),
2947
+ carpet: z60.number(),
2948
+ builtUp: z60.number(),
2949
+ excluded: z60.number(),
2950
+ farBuiltUp: z60.number(),
2951
+ siteArea: z60.number(),
2952
+ achievedFar: z60.number().nullable(),
2953
+ targetFar: z60.number(),
2954
+ deviation: z60.number(),
2728
2955
  areaUnit: PluginAreaUnit
2729
2956
  });
2730
- var PluginProgramAreaGroup = z59.object({
2731
- groupId: z59.string(),
2732
- name: z59.string(),
2733
- color: z59.string(),
2734
- carpet: z59.number(),
2735
- builtUp: z59.number(),
2736
- excluded: z59.number(),
2737
- count: z59.number().int(),
2738
- targetArea: z59.number(),
2957
+ var PluginProgramAreaGroup = z60.object({
2958
+ groupId: z60.string(),
2959
+ name: z60.string(),
2960
+ color: z60.string(),
2961
+ carpet: z60.number(),
2962
+ builtUp: z60.number(),
2963
+ excluded: z60.number(),
2964
+ count: z60.number().int(),
2965
+ targetArea: z60.number(),
2739
2966
  targetUnit: PluginAreaUnit
2740
2967
  });
2741
- var PluginProgramAreaMember = z59.object({
2968
+ var PluginProgramAreaMember = z60.object({
2742
2969
  id: ComponentHandle,
2743
- label: z59.string(),
2744
- carpet: z59.number(),
2745
- builtUp: z59.number(),
2746
- excluded: z59.number(),
2747
- isVisible: z59.boolean()
2970
+ label: z60.string(),
2971
+ areaClass: PluginAreaClass,
2972
+ carpet: z60.number(),
2973
+ builtUp: z60.number(),
2974
+ excluded: z60.number(),
2975
+ isVisible: z60.boolean()
2748
2976
  });
2749
- var PluginProgramAreaGroupBy = z59.enum([
2977
+ var PluginProgramAreaGroupBy = z60.enum([
2750
2978
  "labels",
2751
2979
  "storeys",
2752
2980
  "buildings",
@@ -2754,29 +2982,29 @@ var PluginProgramAreaGroupBy = z59.enum([
2754
2982
  "tagCategories"
2755
2983
  ]);
2756
2984
  var PluginProgramAreasGetResult = PluginProgramAreaSummary;
2757
- var PluginProgramAreasListArgs = z59.object({
2985
+ var PluginProgramAreasListArgs = z60.object({
2758
2986
  groupBy: PluginProgramAreaGroupBy,
2759
- categoryId: z59.string().optional()
2987
+ categoryId: z60.string().optional()
2760
2988
  }).refine((v) => v.groupBy !== "tagCategories" || v.categoryId != null, {
2761
2989
  message: 'categoryId is required when groupBy is "tagCategories"'
2762
2990
  });
2763
- var PluginProgramAreasListResult = z59.object({
2764
- groups: z59.array(PluginProgramAreaGroup)
2991
+ var PluginProgramAreasListResult = z60.object({
2992
+ groups: z60.array(PluginProgramAreaGroup)
2765
2993
  });
2766
- var PluginProgramAreasListMembersArgs = z59.object({
2994
+ var PluginProgramAreasListMembersArgs = z60.object({
2767
2995
  groupBy: PluginProgramAreaGroupBy,
2768
- groupId: z59.string(),
2769
- categoryId: z59.string().optional()
2996
+ groupId: z60.string(),
2997
+ categoryId: z60.string().optional()
2770
2998
  }).refine((v) => v.groupBy !== "tagCategories" || v.categoryId != null, {
2771
2999
  message: 'categoryId is required when groupBy is "tagCategories"'
2772
3000
  });
2773
- var PluginProgramAreasListMembersResult = z59.object({
2774
- members: z59.array(PluginProgramAreaMember)
3001
+ var PluginProgramAreasListMembersResult = z60.object({
3002
+ members: z60.array(PluginProgramAreaMember)
2775
3003
  });
2776
- var PluginProgramAreasUpdateArgs = z59.object({
2777
- targetFar: z59.number().min(0).optional(),
2778
- siteArea: z59.number().positive().optional(),
2779
- deviation: z59.number().min(0).max(100).optional()
3004
+ var PluginProgramAreasUpdateArgs = z60.object({
3005
+ targetFar: z60.number().min(0).optional(),
3006
+ siteArea: z60.number().positive().optional(),
3007
+ deviation: z60.number().min(0).max(100).optional()
2780
3008
  });
2781
3009
  var PluginProgramAreasUpdateResult = PluginProgramAreaSummary;
2782
3010
 
@@ -2787,257 +3015,577 @@ var PluginProgramApi = class {
2787
3015
  };
2788
3016
 
2789
3017
  // src/api/presentation/views.ts
2790
- import * as z60 from "zod";
3018
+ import * as z61 from "zod";
2791
3019
  var PluginPresentationViewsApi = class {
2792
3020
  constructor() {
2793
3021
  }
2794
3022
  };
2795
- var PluginPresentationViewType = z60.enum(["2d", "3d"]);
2796
- var PluginPresentationView = z60.object({
2797
- id: z60.string(),
2798
- name: z60.string(),
3023
+ var PluginPresentationViewType = z61.enum(["2d", "3d"]);
3024
+ var PluginPresentationView = z61.object({
3025
+ id: z61.string(),
3026
+ name: z61.string(),
2799
3027
  type: PluginPresentationViewType,
2800
- isActive: z60.boolean()
3028
+ isActive: z61.boolean()
2801
3029
  });
2802
- var PluginPresentationViewsListResult = z60.object({
2803
- views: z60.array(PluginPresentationView)
3030
+ var PluginPresentationViewsListResult = z61.object({
3031
+ views: z61.array(PluginPresentationView)
2804
3032
  });
2805
- var PluginPresentationViewsGetArgs = z60.object({
2806
- id: z60.string()
3033
+ var PluginPresentationViewsGetArgs = z61.object({
3034
+ id: z61.string()
2807
3035
  });
2808
3036
  var PluginPresentationViewsGetResult = PluginPresentationView.nullable();
2809
- var PluginPresentationImageFormat = z60.enum(["png", "jpeg"]);
2810
- var PluginPresentationViewsCaptureArgs = z60.object({
2811
- viewId: z60.string().optional(),
3037
+ var PluginPresentationImageFormat = z61.enum(["png", "jpeg"]);
3038
+ var PluginPresentationViewsCaptureArgs = z61.object({
3039
+ viewId: z61.string().optional(),
2812
3040
  format: PluginPresentationImageFormat.optional(),
2813
- resolution: z60.string().optional()
3041
+ resolution: z61.string().optional()
2814
3042
  });
2815
- var PluginPresentationViewsCaptureResult = z60.object({
2816
- image: z60.string()
3043
+ var PluginPresentationViewsCaptureResult = z61.object({
3044
+ image: z61.string()
2817
3045
  });
2818
- var PluginPresentationViewsSetActiveArgs = z60.object({
2819
- id: z60.string()
3046
+ var PluginPresentationViewsSetActiveArgs = z61.object({
3047
+ id: z61.string()
2820
3048
  });
2821
- var PluginPresentationViewsSetActiveResult = z60.object({
2822
- id: z60.string()
3049
+ var PluginPresentationViewsSetActiveResult = z61.object({
3050
+ id: z61.string()
2823
3051
  });
2824
- var PluginPresentationViewsCreateArgs = z60.object({
2825
- name: z60.string().optional(),
2826
- kind: z60.enum(["view", "sitePlan"]).optional()
3052
+ var PluginPresentationViewsCreateArgs = z61.object({
3053
+ name: z61.string().optional(),
3054
+ kind: z61.enum(["view", "sitePlan"]).optional()
2827
3055
  });
2828
3056
  var PluginPresentationViewsCreateResult = PluginPresentationView;
3057
+ var PluginPresentationViewColorMode = z61.union([
3058
+ z61.enum(["monochrome", "texture", "department"]),
3059
+ z61.templateLiteral(["tag:", z61.string()])
3060
+ ]);
3061
+ var PluginPresentationViewLabel = z61.enum([
3062
+ "objectLabels",
3063
+ "areas",
3064
+ "department"
3065
+ ]);
3066
+ var PluginPresentationViewSettings = z61.object({
3067
+ backgroundColor: z61.string(),
3068
+ colorMode: PluginPresentationViewColorMode,
3069
+ showAxis: z61.boolean(),
3070
+ showEdges: z61.boolean(),
3071
+ showLabels: z61.boolean(),
3072
+ labels: z61.array(PluginPresentationViewLabel)
3073
+ });
3074
+ var PluginPresentationViewsGetSettingsArgs = z61.object({
3075
+ id: z61.string()
3076
+ });
3077
+ var PluginPresentationViewsGetSettingsResult = PluginPresentationViewSettings.nullable();
3078
+ var PluginPresentationViewsUpdateSettingsArgs = z61.object({
3079
+ id: z61.string(),
3080
+ settings: PluginPresentationViewSettings.partial()
3081
+ }).refine(
3082
+ (v) => !(v.settings.showLabels === false && (v.settings.labels?.length ?? 0) > 0),
3083
+ {
3084
+ message: "Contradictory patch: labels cannot be set while showLabels is false"
3085
+ }
3086
+ ).refine(
3087
+ (v) => !(v.settings.showLabels === true && v.settings.labels !== void 0 && v.settings.labels.length === 0),
3088
+ {
3089
+ message: "Contradictory patch: showLabels cannot be true with an explicitly empty labels list \u2014 pass a non-empty list, or omit labels to apply the defaults"
3090
+ }
3091
+ );
3092
+ var PluginPresentationViewsUpdateSettingsResult = z61.object({
3093
+ id: z61.string()
3094
+ });
2829
3095
 
2830
3096
  // src/api/presentation/sheets.ts
2831
- import * as z61 from "zod";
3097
+ import * as z62 from "zod";
2832
3098
  var PluginPresentationSheetsApi = class {
2833
3099
  constructor() {
2834
3100
  }
2835
3101
  };
2836
- var PluginPresentationSheet = z61.object({
2837
- id: z61.string(),
2838
- name: z61.string()
3102
+ var PluginPresentationSheet = z62.object({
3103
+ id: z62.string(),
3104
+ name: z62.string()
2839
3105
  });
2840
- var PluginSheetPosition = z61.object({
2841
- x: z61.number(),
2842
- y: z61.number()
3106
+ var PluginSheetPosition = z62.object({
3107
+ x: z62.number(),
3108
+ y: z62.number()
2843
3109
  });
2844
- var PluginPresentationSheetsListResult = z61.object({
2845
- sheets: z61.array(PluginPresentationSheet)
3110
+ var PluginPresentationSheetsListResult = z62.object({
3111
+ sheets: z62.array(PluginPresentationSheet)
2846
3112
  });
2847
- var PluginPresentationSheetsGetArgs = z61.object({
2848
- id: z61.string()
3113
+ var PluginPresentationSheetsGetArgs = z62.object({
3114
+ id: z62.string()
2849
3115
  });
2850
3116
  var PluginPresentationSheetsGetResult = PluginPresentationSheet.nullable();
2851
- var PluginPresentationSheetsCreateArgs = z61.object({
2852
- name: z61.string().optional()
3117
+ var PluginPresentationSheetsCreateArgs = z62.object({
3118
+ name: z62.string().optional()
2853
3119
  });
2854
- var PluginPresentationSheetsPlaceArgs = z61.object({
2855
- sheetId: z61.string(),
2856
- viewId: z61.string(),
3120
+ var PluginPresentationSheetsPlaceArgs = z62.object({
3121
+ sheetId: z62.string(),
3122
+ viewId: z62.string(),
2857
3123
  position: PluginSheetPosition.optional()
2858
3124
  });
2859
- var PluginPresentationSheetsPlaceResult = z61.object({
2860
- shapeId: z61.string()
3125
+ var PluginPresentationSheetsPlaceResult = z62.object({
3126
+ shapeId: z62.string()
2861
3127
  });
2862
3128
 
2863
3129
  // src/api/presentation/diagrams.ts
2864
- import * as z62 from "zod";
3130
+ import * as z63 from "zod";
2865
3131
  var PluginPresentationDiagramsApi = class {
2866
3132
  constructor() {
2867
3133
  }
2868
3134
  };
2869
- var PluginPresentationDiagramsPlaceArgs = z62.object({
2870
- sheetId: z62.string(),
2871
- urls: z62.array(z62.string()),
2872
- position: z62.object({ x: z62.number(), y: z62.number() }).optional()
3135
+ var PluginPresentationDiagramsPlaceArgs = z63.object({
3136
+ sheetId: z63.string(),
3137
+ urls: z63.array(z63.string()),
3138
+ position: z63.object({ x: z63.number(), y: z63.number() }).optional()
2873
3139
  });
2874
- var PluginPresentationDiagramsPlaceResult = z62.object({
2875
- shapeIds: z62.array(z62.string())
3140
+ var PluginPresentationDiagramsPlaceResult = z63.object({
3141
+ shapeIds: z63.array(z63.string())
2876
3142
  });
2877
3143
 
2878
3144
  // src/api/presentation/import.ts
2879
- import * as z63 from "zod";
3145
+ import * as z64 from "zod";
2880
3146
  var PluginPresentationImportApi = class {
2881
3147
  constructor() {
2882
3148
  }
2883
3149
  };
2884
- var PluginPresentationImportArgs = z63.object({
2885
- url: z63.string().optional(),
2886
- dataUrl: z63.string().optional(),
2887
- position: z63.object({ x: z63.number(), y: z63.number() }).optional()
3150
+ var PluginPresentationImportArgs = z64.object({
3151
+ url: z64.string().optional(),
3152
+ dataUrl: z64.string().optional(),
3153
+ position: z64.object({ x: z64.number(), y: z64.number() }).optional()
2888
3154
  }).refine((a) => Boolean(a.url) || Boolean(a.dataUrl), {
2889
3155
  message: "Provide a url or a dataUrl"
2890
3156
  });
2891
- var PluginPresentationImportResult = z63.object({
2892
- shapeIds: z63.array(z63.string())
3157
+ var PluginPresentationImportResult = z64.object({
3158
+ shapeIds: z64.array(z64.string())
2893
3159
  });
2894
3160
 
2895
3161
  // src/api/presentation/aiInspiration.ts
2896
- import * as z64 from "zod";
2897
- var JsonPrimitive = z64.union([z64.string(), z64.number(), z64.boolean(), z64.null()]);
2898
- var JsonValue = z64.lazy(
2899
- () => z64.union([JsonPrimitive, z64.array(JsonValue), z64.record(z64.string(), JsonValue)])
3162
+ import * as z65 from "zod";
3163
+ var JsonPrimitive = z65.union([z65.string(), z65.number(), z65.boolean(), z65.null()]);
3164
+ var JsonValue = z65.lazy(
3165
+ () => z65.union([JsonPrimitive, z65.array(JsonValue), z65.record(z65.string(), JsonValue)])
2900
3166
  );
2901
- var PluginAIInspirationOutputKind = z64.enum([
3167
+ var PluginAIInspirationRunMode = z65.enum(["blocking", "job"]);
3168
+ var PluginAIInspirationOutputKind = z65.enum([
2902
3169
  "source",
2903
3170
  "image",
2904
3171
  "video"
2905
3172
  ]);
2906
- var PluginAIInspirationModelOutput = z64.enum(["image", "video"]);
2907
- var PluginAIInspirationShapeKind = z64.enum(["image", "view", "video"]);
2908
- var PluginAIInspirationVideoMode = z64.enum([
3173
+ var PluginAIInspirationModelOutput = z65.enum(["image", "video"]);
3174
+ var PluginAIInspirationRuntimeProvider = z65.enum(["gpt", "fal"]);
3175
+ var PluginAIInspirationPromptStrategy = z65.enum([
3176
+ "gpt-image",
3177
+ "fal-image",
3178
+ "fal-video"
3179
+ ]);
3180
+ var PluginAIInspirationShapeKind = z65.enum(["image", "view", "video"]);
3181
+ var PluginAIInspirationVideoMode = z65.enum([
2909
3182
  "animate",
2910
3183
  "references",
2911
3184
  "keyframes"
2912
3185
  ]);
2913
- var PluginAIInspirationVideoMotion = z64.enum([
3186
+ var PluginAIInspirationVideoMotion = z65.enum([
2914
3187
  "auto",
2915
3188
  "slow-dolly",
2916
3189
  "subtle-orbit",
2917
3190
  "reveal"
2918
3191
  ]);
2919
- var PluginAIInspirationVideoDuration = z64.enum(["4s", "6s", "8s"]);
2920
- var PluginAIInspirationRegionHint = z64.object({
2921
- x: z64.number().finite(),
2922
- y: z64.number().finite(),
2923
- w: z64.number().finite().positive(),
2924
- h: z64.number().finite().positive()
2925
- });
2926
- var PluginAIInspirationPoint = z64.object({
2927
- x: z64.number().finite(),
2928
- y: z64.number().finite()
2929
- });
2930
- var PluginAIInspirationTextAnnotation = z64.object({
2931
- text: z64.string().min(1),
2932
- x: z64.number().finite().optional(),
2933
- y: z64.number().finite().optional()
2934
- });
2935
- var PluginAIInspirationSketchGuidance = z64.object({
2936
- visualShapeIds: z64.array(z64.string()).optional(),
2937
- textAnnotations: z64.array(PluginAIInspirationTextAnnotation).optional()
2938
- });
2939
- var PluginAIInspirationSiteOptions = z64.object({
2940
- includeSatellite: z64.boolean().optional(),
2941
- includeStreetView: z64.boolean().optional(),
2942
- includeAerial: z64.boolean().optional(),
2943
- aerialBearing: z64.number().finite().optional(),
2944
- aerialPitch: z64.number().finite().optional(),
2945
- selectedDiagramIds: z64.array(z64.string()).optional(),
2946
- location: z64.object({
2947
- lat: z64.number().finite(),
2948
- lng: z64.number().finite()
3192
+ var PluginAIInspirationVideoDuration = z65.enum(["4s", "6s", "8s"]);
3193
+ var PluginAIInspirationJobStatus = z65.enum([
3194
+ "queued",
3195
+ "running",
3196
+ "completed",
3197
+ "failed",
3198
+ "cancelled"
3199
+ ]);
3200
+ var PluginAIInspirationWorkflowRunState = z65.enum([
3201
+ "current",
3202
+ "stale",
3203
+ "running",
3204
+ "failed",
3205
+ "superseded"
3206
+ ]);
3207
+ var PluginAIInspirationRegionHint = z65.object({
3208
+ x: z65.number().finite(),
3209
+ y: z65.number().finite(),
3210
+ w: z65.number().finite().positive(),
3211
+ h: z65.number().finite().positive()
3212
+ });
3213
+ var PluginAIInspirationPoint = z65.object({
3214
+ x: z65.number().finite(),
3215
+ y: z65.number().finite()
3216
+ });
3217
+ var PluginAIInspirationTextAnnotation = z65.object({
3218
+ text: z65.string().min(1),
3219
+ x: z65.number().finite().optional(),
3220
+ y: z65.number().finite().optional()
3221
+ });
3222
+ var PluginAIInspirationSketchGuidance = z65.object({
3223
+ visualShapeIds: z65.array(z65.string()).optional(),
3224
+ textAnnotations: z65.array(PluginAIInspirationTextAnnotation).optional()
3225
+ });
3226
+ var PluginAIInspirationSiteOptions = z65.object({
3227
+ includeSatellite: z65.boolean().optional(),
3228
+ includeStreetView: z65.boolean().optional(),
3229
+ includeAerial: z65.boolean().optional(),
3230
+ aerialBearing: z65.number().finite().optional(),
3231
+ aerialPitch: z65.number().finite().optional(),
3232
+ selectedDiagramIds: z65.array(z65.string()).optional(),
3233
+ location: z65.object({
3234
+ lat: z65.number().finite(),
3235
+ lng: z65.number().finite()
2949
3236
  }).optional()
2950
3237
  });
2951
- var PluginAIInspirationAppliedPreset = z64.object({
2952
- source: z64.enum(["curated", "user"]),
2953
- presetId: z64.string().min(1),
2954
- name: z64.string().min(1),
2955
- savedPresetKind: z64.enum(["prompt", "style"]).optional(),
2956
- stylePrompt: z64.string().optional(),
2957
- modelId: z64.string().optional(),
2958
- referenceImages: z64.array(
2959
- z64.object({
2960
- url: z64.string().min(1),
2961
- label: z64.string().optional(),
2962
- weight: z64.number().finite().optional()
3238
+ var PluginAIInspirationAppliedPreset = z65.object({
3239
+ source: z65.enum(["curated", "user"]),
3240
+ presetId: z65.string().min(1),
3241
+ name: z65.string().min(1),
3242
+ savedPresetKind: z65.enum(["prompt", "style"]).optional(),
3243
+ stylePrompt: z65.string().optional(),
3244
+ modelId: z65.string().optional(),
3245
+ referenceImages: z65.array(
3246
+ z65.object({
3247
+ url: z65.string().min(1),
3248
+ label: z65.string().optional(),
3249
+ weight: z65.number().finite().optional()
2963
3250
  })
2964
3251
  ).optional(),
2965
- siteDefaults: z64.object({
2966
- includeSatellite: z64.boolean().optional(),
2967
- includeStreetView: z64.boolean().optional(),
2968
- includeAerial: z64.boolean().optional()
3252
+ siteDefaults: z65.object({
3253
+ includeSatellite: z65.boolean().optional(),
3254
+ includeStreetView: z65.boolean().optional(),
3255
+ includeAerial: z65.boolean().optional()
2969
3256
  }).optional()
2970
3257
  });
2971
- var PluginAIInspirationVideoOptions = z64.object({
3258
+ var PluginAIInspirationVideoOptions = z65.object({
2972
3259
  mode: PluginAIInspirationVideoMode.optional(),
2973
- endFrameShapeId: z64.string().optional(),
3260
+ endFrameShapeId: z65.string().optional(),
2974
3261
  motion: PluginAIInspirationVideoMotion.optional(),
2975
3262
  duration: PluginAIInspirationVideoDuration.optional()
2976
3263
  });
2977
- var PluginAIInspirationModel = z64.object({
2978
- id: z64.string(),
2979
- label: z64.string(),
2980
- supportsMultiImage: z64.boolean(),
3264
+ var PluginAIInspirationModel = z65.object({
3265
+ id: z65.string(),
3266
+ label: z65.string(),
3267
+ supportsMultiImage: z65.boolean(),
2981
3268
  output: PluginAIInspirationModelOutput,
2982
- isDefault: z64.boolean().optional()
2983
- });
2984
- var PluginAIInspirationListModelsResult = z64.object({
2985
- defaultModelId: z64.string(),
2986
- models: z64.array(PluginAIInspirationModel)
3269
+ isDefault: z65.boolean().optional()
2987
3270
  });
2988
- var PluginAIInspirationShapeRef = z64.object({
2989
- shapeId: z64.string(),
2990
- assetId: z64.string().optional(),
3271
+ var PluginAIInspirationModelCapability = z65.object({
3272
+ id: z65.string(),
3273
+ output: PluginAIInspirationModelOutput,
3274
+ provider: PluginAIInspirationRuntimeProvider,
3275
+ supportsRegionEdit: z65.boolean(),
3276
+ supportsReferenceImages: z65.boolean(),
3277
+ supportsStylePresets: z65.boolean(),
3278
+ supportsSiteContext: z65.boolean(),
3279
+ supportsSketchGuidance: z65.boolean(),
3280
+ supportsKeyframes: z65.boolean(),
3281
+ maxExtraImages: z65.number().int().nonnegative(),
3282
+ promptStrategy: PluginAIInspirationPromptStrategy
3283
+ });
3284
+ var PluginAIInspirationListModelsResult = z65.object({
3285
+ defaultModelId: z65.string(),
3286
+ models: z65.array(PluginAIInspirationModel)
3287
+ });
3288
+ var PluginAIInspirationGetModelCapabilitiesArgs = z65.object({
3289
+ modelId: z65.string().min(1)
3290
+ });
3291
+ var PluginAIInspirationGetModelCapabilitiesResult = z65.object({
3292
+ capability: PluginAIInspirationModelCapability
3293
+ });
3294
+ var PluginAIInspirationShapeRef = z65.object({
3295
+ shapeId: z65.string(),
3296
+ assetId: z65.string().optional(),
2991
3297
  kind: PluginAIInspirationShapeKind,
2992
- name: z64.string().optional(),
2993
- width: z64.number().finite().optional(),
2994
- height: z64.number().finite().optional(),
3298
+ name: z65.string().optional(),
3299
+ width: z65.number().finite().optional(),
3300
+ height: z65.number().finite().optional(),
2995
3301
  outputType: PluginAIInspirationOutputKind.optional(),
2996
- sourceUrl: z64.string().optional()
2997
- });
2998
- var PluginAIInspirationListSourcesArgs = z64.object({
2999
- includeGenerated: z64.boolean().optional(),
3000
- includeSourceUrl: z64.boolean().optional()
3001
- });
3002
- var PluginAIInspirationListSourcesResult = z64.object({
3003
- sources: z64.array(PluginAIInspirationShapeRef)
3004
- });
3005
- var PluginAIInspirationOutput = z64.object({
3006
- outputType: z64.enum(["image", "video"]),
3007
- shapeId: z64.string(),
3008
- assetId: z64.string(),
3009
- outputUrl: z64.string().optional(),
3302
+ sourceUrl: z65.string().optional()
3303
+ });
3304
+ var PluginAIInspirationListSourcesArgs = z65.object({
3305
+ includeGenerated: z65.boolean().optional(),
3306
+ includeSourceUrl: z65.boolean().optional()
3307
+ });
3308
+ var PluginAIInspirationListSourcesResult = z65.object({
3309
+ sources: z65.array(PluginAIInspirationShapeRef)
3310
+ });
3311
+ var PluginAIInspirationGetSelectionResult = z65.object({
3312
+ selectedShapeIds: z65.array(z65.string()),
3313
+ sources: z65.array(PluginAIInspirationShapeRef)
3314
+ });
3315
+ var PluginAIInspirationPresetReferenceImage = z65.object({
3316
+ url: z65.string(),
3317
+ label: z65.string().optional(),
3318
+ weight: z65.number().finite().optional()
3319
+ });
3320
+ var PluginAIInspirationPreset = z65.object({
3321
+ id: z65.string(),
3322
+ name: z65.string(),
3323
+ source: z65.enum(["curated", "user"]),
3324
+ modelId: z65.string(),
3325
+ categoryId: z65.string().optional(),
3326
+ categoryLabel: z65.string().optional(),
3327
+ description: z65.string().optional(),
3328
+ previewImageUrl: z65.string().optional(),
3329
+ prompt: z65.string().optional(),
3330
+ stylePrompt: z65.string().optional(),
3331
+ tags: z65.array(z65.string()).optional(),
3332
+ referenceImages: z65.array(PluginAIInspirationPresetReferenceImage).optional(),
3333
+ siteDefaults: PluginAIInspirationAppliedPreset.shape.siteDefaults.optional()
3334
+ });
3335
+ var PluginAIInspirationPresetCategory = z65.object({
3336
+ id: z65.string(),
3337
+ label: z65.string(),
3338
+ description: z65.string().optional()
3339
+ });
3340
+ var PluginAIInspirationGetPresetCatalogResult = z65.object({
3341
+ categories: z65.array(PluginAIInspirationPresetCategory),
3342
+ presets: z65.array(PluginAIInspirationPreset)
3343
+ });
3344
+ var PluginAIInspirationOutput = z65.object({
3345
+ outputType: z65.enum(["image", "video"]),
3346
+ shapeId: z65.string(),
3347
+ assetId: z65.string(),
3348
+ outputUrl: z65.string().optional(),
3010
3349
  position: PluginAIInspirationPoint.optional()
3011
3350
  });
3012
- var PluginAIInspirationDebugSummary = z64.record(z64.string(), JsonValue);
3013
- var PluginAIInspirationRunMetadata = z64.object({
3014
- geometryFidelity: z64.string().optional(),
3351
+ var PluginAIInspirationDebugSummary = z65.record(z65.string(), JsonValue);
3352
+ var PluginAIInspirationRunMetadata = z65.object({
3353
+ geometryFidelity: z65.string().optional(),
3015
3354
  debugSummary: PluginAIInspirationDebugSummary.optional(),
3016
- streetViewComposite: z64.object({
3017
- used: z64.boolean(),
3018
- renderMode: z64.enum(["prompt_refs_default", "masked_composite_pilot"]),
3019
- backgroundLabel: z64.string().optional()
3355
+ streetViewComposite: z65.object({
3356
+ used: z65.boolean(),
3357
+ renderMode: z65.enum(["prompt_refs_default", "masked_composite_pilot"]),
3358
+ backgroundLabel: z65.string().optional()
3020
3359
  }).optional()
3021
3360
  });
3022
- var PluginAIInspirationGenerateArgs = z64.object({
3023
- sourceShapeId: z64.string().min(1),
3024
- prompt: z64.string().min(1).max(8e3),
3025
- modelId: z64.string().optional(),
3026
- referenceShapeIds: z64.array(z64.string()).max(12).optional(),
3027
- referenceStrength: z64.enum(["low", "medium", "high"]).optional(),
3361
+ var PluginAIInspirationGenerateArgs = z65.object({
3362
+ sourceShapeId: z65.string().min(1),
3363
+ prompt: z65.string().min(1).max(8e3),
3364
+ modelId: z65.string().optional(),
3365
+ referenceShapeIds: z65.array(z65.string()).max(12).optional(),
3366
+ referenceStrength: z65.enum(["low", "medium", "high"]).optional(),
3028
3367
  appliedPreset: PluginAIInspirationAppliedPreset.optional(),
3029
3368
  site: PluginAIInspirationSiteOptions.optional(),
3030
3369
  regionHint: PluginAIInspirationRegionHint.optional(),
3031
3370
  sketchGuidance: PluginAIInspirationSketchGuidance.optional(),
3032
- video: PluginAIInspirationVideoOptions.optional()
3371
+ video: PluginAIInspirationVideoOptions.optional(),
3372
+ runMode: PluginAIInspirationRunMode.optional()
3033
3373
  });
3034
- var PluginAIInspirationRunResult = z64.object({
3035
- outputs: z64.array(PluginAIInspirationOutput).min(1),
3374
+ var PluginAIInspirationRunResult = z65.object({
3375
+ jobId: z65.string().optional(),
3376
+ output: PluginAIInspirationOutput.optional(),
3377
+ outputs: z65.array(PluginAIInspirationOutput).optional(),
3036
3378
  metadata: PluginAIInspirationRunMetadata.optional()
3037
3379
  });
3038
- var PluginAIInspirationRefineArgs = z64.object({
3039
- sourceShapeId: z64.string().min(1),
3040
- upscaleFactor: z64.union([z64.literal(1.5), z64.literal(2), z64.literal(4)]).optional()
3380
+ var PluginAIInspirationRefineArgs = z65.object({
3381
+ sourceShapeId: z65.string().min(1),
3382
+ upscaleFactor: z65.union([z65.literal(1.5), z65.literal(2), z65.literal(4)]).optional(),
3383
+ runMode: PluginAIInspirationRunMode.optional()
3384
+ });
3385
+ var PluginAIInspirationJobProgress = z65.object({
3386
+ currentStep: z65.number().int().nonnegative().optional(),
3387
+ totalSteps: z65.number().int().nonnegative().optional(),
3388
+ message: z65.string().optional()
3389
+ });
3390
+ var PluginAIInspirationJob = z65.object({
3391
+ jobId: z65.string(),
3392
+ status: PluginAIInspirationJobStatus,
3393
+ createdAt: z65.number(),
3394
+ updatedAt: z65.number(),
3395
+ completedAt: z65.number().optional(),
3396
+ method: z65.string(),
3397
+ progress: PluginAIInspirationJobProgress.optional(),
3398
+ result: PluginAIInspirationRunResult.optional(),
3399
+ error: z65.string().optional()
3400
+ });
3401
+ var PluginAIInspirationJobArgs = z65.object({
3402
+ jobId: z65.string().min(1)
3403
+ });
3404
+ var PluginAIInspirationGetJobResult = z65.object({
3405
+ job: PluginAIInspirationJob
3406
+ });
3407
+ var PluginAIInspirationCancelJobResult = z65.object({
3408
+ job: PluginAIInspirationJob
3409
+ });
3410
+ var PluginAIInspirationListJobsResult = z65.object({
3411
+ jobs: z65.array(PluginAIInspirationJob)
3412
+ });
3413
+ var PluginAIInspirationWorkflowVideoConfig = z65.object({
3414
+ mode: z65.string().optional(),
3415
+ motion: z65.string().optional(),
3416
+ duration: z65.string().optional(),
3417
+ endFrameShapeId: z65.string().optional()
3418
+ });
3419
+ var PluginAIInspirationGenerationInputSnapshot = z65.object({
3420
+ version: z65.literal(1),
3421
+ meta: z65.record(z65.string(), JsonValue),
3422
+ regionHint: PluginAIInspirationRegionHint.optional(),
3423
+ sketchGuidance: z65.record(z65.string(), JsonValue).optional(),
3424
+ sourceCameraHeading: z65.number().finite().optional()
3425
+ });
3426
+ var PluginAIInspirationWorkflowOperation = z65.object({
3427
+ type: z65.enum(["generate-image", "refine", "generate-video"]),
3428
+ label: z65.string(),
3429
+ prompt: z65.string().optional(),
3430
+ modelId: z65.string().optional(),
3431
+ presetId: z65.string().optional(),
3432
+ presetName: z65.string().optional(),
3433
+ refineFactor: z65.number().finite().optional(),
3434
+ sourceRole: z65.enum(["primary", "end-frame"]).optional(),
3435
+ video: PluginAIInspirationWorkflowVideoConfig.optional(),
3436
+ generationInput: PluginAIInspirationGenerationInputSnapshot.optional()
3437
+ });
3438
+ var PluginAIInspirationWorkflowNode = z65.object({
3439
+ id: z65.string(),
3440
+ shapeId: z65.string(),
3441
+ assetId: z65.string().optional(),
3442
+ kind: PluginAIInspirationOutputKind,
3443
+ state: z65.string(),
3444
+ runState: PluginAIInspirationWorkflowRunState.optional(),
3445
+ staleReason: z65.string().optional(),
3446
+ incomingEdgeIds: z65.array(z65.string()),
3447
+ outgoingEdgeIds: z65.array(z65.string()),
3448
+ createdAt: z65.number(),
3449
+ updatedAt: z65.number()
3450
+ });
3451
+ var PluginAIInspirationWorkflowEdge = z65.object({
3452
+ id: z65.string(),
3453
+ sourceNodeId: z65.string(),
3454
+ targetNodeId: z65.string(),
3455
+ arrowShapeId: z65.string().optional(),
3456
+ operation: PluginAIInspirationWorkflowOperation,
3457
+ state: z65.string(),
3458
+ runState: PluginAIInspirationWorkflowRunState.optional(),
3459
+ staleReason: z65.string().optional(),
3460
+ supersededByEdgeId: z65.string().optional(),
3461
+ createdAt: z65.number(),
3462
+ updatedAt: z65.number()
3463
+ });
3464
+ var PluginAIInspirationWorkflow = z65.object({
3465
+ id: z65.string(),
3466
+ rootNodeIds: z65.array(z65.string()),
3467
+ nodeIds: z65.array(z65.string()),
3468
+ edgeIds: z65.array(z65.string()),
3469
+ nodes: z65.record(z65.string(), PluginAIInspirationWorkflowNode),
3470
+ edges: z65.record(z65.string(), PluginAIInspirationWorkflowEdge),
3471
+ createdAt: z65.number(),
3472
+ updatedAt: z65.number()
3473
+ });
3474
+ var PluginAIInspirationGetWorkflowForShapeArgs = z65.object({
3475
+ shapeId: z65.string().min(1)
3476
+ });
3477
+ var PluginAIInspirationGetWorkflowForShapeResult = z65.object({
3478
+ workflow: PluginAIInspirationWorkflow.nullable(),
3479
+ node: PluginAIInspirationWorkflowNode.nullable()
3480
+ });
3481
+ var PluginAIInspirationRerunPlanResult = z65.discriminatedUnion(
3482
+ "status",
3483
+ [
3484
+ z65.object({
3485
+ status: z65.literal("ready"),
3486
+ workflowId: z65.string(),
3487
+ sourceNode: PluginAIInspirationWorkflowNode,
3488
+ edgeIds: z65.array(z65.string()),
3489
+ edges: z65.array(PluginAIInspirationWorkflowEdge),
3490
+ recipe: z65.lazy(() => PluginAIInspirationRecipe),
3491
+ needsEndFrame: z65.boolean(),
3492
+ defaultEndFrameShapeId: z65.string().nullable()
3493
+ }),
3494
+ z65.object({
3495
+ status: z65.literal("unavailable"),
3496
+ reason: z65.enum([
3497
+ "not-in-workflow",
3498
+ "source-only",
3499
+ "running",
3500
+ "missing-input"
3501
+ ])
3502
+ })
3503
+ ]
3504
+ );
3505
+ var PluginAIInspirationRerunSelectedBranchArgs = z65.object({
3506
+ shapeId: z65.string().min(1),
3507
+ endFrameShapeId: z65.string().optional(),
3508
+ runMode: PluginAIInspirationRunMode.optional()
3509
+ });
3510
+ var PluginAIInspirationRecipeSlot = z65.object({
3511
+ id: z65.string(),
3512
+ type: z65.enum(["source-image", "end-frame"]),
3513
+ label: z65.string(),
3514
+ required: z65.boolean()
3515
+ });
3516
+ var PluginAIInspirationRecipeStep = z65.object({
3517
+ id: z65.string(),
3518
+ operation: PluginAIInspirationWorkflowOperation,
3519
+ outputKind: z65.enum(["image", "video"])
3520
+ });
3521
+ var PluginAIInspirationRecipeDraft = z65.object({
3522
+ name: z65.string(),
3523
+ summary: z65.string(),
3524
+ slots: z65.array(PluginAIInspirationRecipeSlot),
3525
+ steps: z65.array(PluginAIInspirationRecipeStep).min(1).max(20),
3526
+ outputKind: z65.enum(["image", "video"]),
3527
+ thumbnailUrl: z65.string().optional()
3528
+ });
3529
+ var PluginAIInspirationRecipe = PluginAIInspirationRecipeDraft.extend({
3530
+ version: z65.literal(1),
3531
+ id: z65.string(),
3532
+ fingerprint: z65.string().optional(),
3533
+ createdAt: z65.number(),
3534
+ updatedAt: z65.number()
3535
+ });
3536
+ var PluginAIInspirationExtractionResult = z65.discriminatedUnion(
3537
+ "status",
3538
+ [
3539
+ z65.object({
3540
+ status: z65.literal("ready"),
3541
+ draft: PluginAIInspirationRecipeDraft
3542
+ }),
3543
+ z65.object({
3544
+ status: z65.literal("unavailable"),
3545
+ reason: z65.enum([
3546
+ "not-in-workflow",
3547
+ "source-only",
3548
+ "missing-workflow",
3549
+ "missing-node",
3550
+ "missing-input",
3551
+ "invalid-workflow"
3552
+ ])
3553
+ })
3554
+ ]
3555
+ );
3556
+ var PluginAIInspirationListRecipesResult = z65.object({
3557
+ recipes: z65.array(PluginAIInspirationRecipe)
3558
+ });
3559
+ var PluginAIInspirationSaveRecipeArgs = z65.object({
3560
+ draft: PluginAIInspirationRecipeDraft,
3561
+ name: z65.string().min(1)
3562
+ });
3563
+ var PluginAIInspirationSaveRecipeResult = z65.discriminatedUnion(
3564
+ "status",
3565
+ [
3566
+ z65.object({ status: z65.literal("saved"), recipe: PluginAIInspirationRecipe }),
3567
+ z65.object({
3568
+ status: z65.literal("duplicate"),
3569
+ recipe: PluginAIInspirationRecipe
3570
+ }),
3571
+ z65.object({ status: z65.literal("invalid-name"), recipe: z65.null() }),
3572
+ z65.object({ status: z65.literal("failed"), recipe: z65.null() })
3573
+ ]
3574
+ );
3575
+ var PluginAIInspirationDeleteRecipeArgs = z65.object({
3576
+ recipeId: z65.string().min(1)
3577
+ });
3578
+ var PluginAIInspirationDeleteRecipeResult = z65.object({
3579
+ deleted: z65.boolean()
3580
+ });
3581
+ var PluginAIInspirationExtractRecipeFromShapeArgs = z65.object({
3582
+ shapeId: z65.string().min(1)
3583
+ });
3584
+ var PluginAIInspirationRunRecipeArgs = z65.object({
3585
+ recipeId: z65.string().optional(),
3586
+ recipe: PluginAIInspirationRecipe.optional(),
3587
+ slotShapeIds: z65.record(z65.string(), z65.string()),
3588
+ runMode: PluginAIInspirationRunMode.optional()
3041
3589
  });
3042
3590
  var PluginPresentationAIInspirationApi = class {
3043
3591
  constructor() {
@@ -3057,38 +3605,38 @@ var PluginAnalysisSunpathApi = class {
3057
3605
  };
3058
3606
 
3059
3607
  // src/api/analysis/shadows.ts
3060
- import * as z65 from "zod";
3608
+ import * as z66 from "zod";
3061
3609
  var PluginAnalysisShadowsApi = class {
3062
3610
  constructor() {
3063
3611
  }
3064
3612
  };
3065
- var PluginAnalysisShadowsEnableOptions = z65.object({
3066
- dateTime: z65.string().optional()
3613
+ var PluginAnalysisShadowsEnableOptions = z66.object({
3614
+ dateTime: z66.string().optional()
3067
3615
  });
3068
- var PluginAnalysisShadowsSetDateTimeArgs = z65.object({
3069
- dateTime: z65.string()
3616
+ var PluginAnalysisShadowsSetDateTimeArgs = z66.object({
3617
+ dateTime: z66.string()
3070
3618
  });
3071
- var PluginAnalysisShadowsDateTimeResult = z65.string();
3619
+ var PluginAnalysisShadowsDateTimeResult = z66.string();
3072
3620
 
3073
3621
  // src/api/analysis/sunlightHours.ts
3074
- import * as z66 from "zod";
3622
+ import * as z67 from "zod";
3075
3623
  var PluginAnalysisSunlightHoursApi = class {
3076
3624
  constructor() {
3077
3625
  }
3078
3626
  };
3079
- var PluginAnalysisComputeResult = z66.object({
3080
- success: z66.boolean(),
3081
- error: z66.string().optional()
3627
+ var PluginAnalysisComputeResult = z67.object({
3628
+ success: z67.boolean(),
3629
+ error: z67.string().optional()
3082
3630
  });
3083
- var PluginAnalysisJobStatus = z66.enum([
3631
+ var PluginAnalysisJobStatus = z67.enum([
3084
3632
  "running",
3085
3633
  "active",
3086
3634
  "inactive"
3087
3635
  ]);
3088
- var PluginAnalysisJobState = z66.object({
3636
+ var PluginAnalysisJobState = z67.object({
3089
3637
  status: PluginAnalysisJobStatus,
3090
- startDate: z66.string(),
3091
- endDate: z66.string()
3638
+ startDate: z67.string(),
3639
+ endDate: z67.string()
3092
3640
  });
3093
3641
  var PluginAnalysisJobStateResult = PluginAnalysisJobState.nullable();
3094
3642
 
@@ -3099,28 +3647,28 @@ var PluginAnalysisIlluminanceApi = class {
3099
3647
  };
3100
3648
 
3101
3649
  // src/api/analysis/heatmaps.ts
3102
- import * as z67 from "zod";
3650
+ import * as z68 from "zod";
3103
3651
  var PluginAnalysisHeatmapsApi = class {
3104
3652
  constructor() {
3105
3653
  }
3106
3654
  };
3107
- var PluginAnalysisHeatmapSpaceEntry = z67.object({
3655
+ var PluginAnalysisHeatmapSpaceEntry = z68.object({
3108
3656
  space: ComponentHandle,
3109
- value: z67.number().finite()
3657
+ value: z68.number().finite()
3110
3658
  });
3111
- var PluginAnalysisHeatmapGridCell = z67.object({
3659
+ var PluginAnalysisHeatmapGridCell = z68.object({
3112
3660
  position: Vec3Components,
3113
- value: z67.number().finite()
3661
+ value: z68.number().finite()
3114
3662
  });
3115
- var PluginAnalysisHeatmapOptions = z67.object({
3116
- title: z67.string().optional(),
3117
- unit: z67.string().optional(),
3118
- min: z67.number().finite().optional(),
3119
- max: z67.number().finite().optional(),
3120
- colors: z67.array(z67.string().regex(/^#?[0-9a-fA-F]{6}$/, 'expected a 6-digit hex colour like "#0000ff"')).min(1).optional()
3663
+ var PluginAnalysisHeatmapOptions = z68.object({
3664
+ title: z68.string().optional(),
3665
+ unit: z68.string().optional(),
3666
+ min: z68.number().finite().optional(),
3667
+ max: z68.number().finite().optional(),
3668
+ colors: z68.array(z68.string().regex(/^#?[0-9a-fA-F]{6}$/, 'expected a 6-digit hex colour like "#0000ff"')).min(1).optional()
3121
3669
  });
3122
- var PluginAnalysisHeatmapsRenderResult = z67.object({
3123
- success: z67.literal(true)
3670
+ var PluginAnalysisHeatmapsRenderResult = z68.object({
3671
+ success: z68.literal(true)
3124
3672
  });
3125
3673
 
3126
3674
  // src/api/analysis/index.ts
@@ -3134,12 +3682,193 @@ var PluginApi = class {
3134
3682
  constructor() {
3135
3683
  }
3136
3684
  };
3685
+
3686
+ // src/errors/codes.ts
3687
+ var PLUGIN_ERROR_CODES = [
3688
+ "VALIDATION",
3689
+ "INVALID_RPC_FORMAT",
3690
+ "METHOD_NOT_FOUND",
3691
+ "METHOD_NOT_PERMITTED",
3692
+ "HANDLE_INVALID",
3693
+ "HANDLE_KIND_MISMATCH",
3694
+ "RESOURCE_QUOTA_EXCEEDED",
3695
+ "RATE_LIMITED",
3696
+ "PRECONDITION_FAILED",
3697
+ "OPERATION_FAILED",
3698
+ "TIMEOUT",
3699
+ "CALL_TIMEOUT",
3700
+ "TRANSPORT_LOST",
3701
+ "PLUGIN_NOT_READY",
3702
+ "PLUGIN_TERMINATED",
3703
+ "RESULT_NOT_SERIALIZABLE",
3704
+ "RESULT_TOO_LARGE",
3705
+ "BATCH_PARTIAL",
3706
+ "STORY_UPDATE_FAILED",
3707
+ "STORY_HEIGHT_REJECTED",
3708
+ "NO_ACTIVE_STRUCTURE",
3709
+ "NO_ELIGIBLE_ELEMENTS",
3710
+ "PROPOSAL_SWITCH_BLOCKED",
3711
+ "INTERNAL",
3712
+ "UNKNOWN"
3713
+ ];
3714
+ var CODE_META = {
3715
+ VALIDATION: {
3716
+ category: "validation",
3717
+ hintTemplate: "Check details.issues for the failing argument."
3718
+ },
3719
+ INVALID_RPC_FORMAT: { category: "validation" },
3720
+ METHOD_NOT_FOUND: {
3721
+ category: "not_found",
3722
+ hintTemplate: "Check details.didYouMean for a close match."
3723
+ },
3724
+ METHOD_NOT_PERMITTED: { category: "permission" },
3725
+ HANDLE_INVALID: {
3726
+ category: "handle",
3727
+ hintTemplate: "Re-query the entity; do not cache handles across undo/reload."
3728
+ },
3729
+ HANDLE_KIND_MISMATCH: { category: "handle" },
3730
+ RESOURCE_QUOTA_EXCEEDED: {
3731
+ category: "quota",
3732
+ hintTemplate: "Release unused handles (core.handles.release) or use scopes."
3733
+ },
3734
+ RATE_LIMITED: {
3735
+ category: "quota",
3736
+ hintTemplate: "Wait details.retryAfterMs before retrying."
3737
+ },
3738
+ PRECONDITION_FAILED: { category: "execution" },
3739
+ OPERATION_FAILED: { category: "execution" },
3740
+ TIMEOUT: { category: "timeout" },
3741
+ CALL_TIMEOUT: { category: "timeout" },
3742
+ TRANSPORT_LOST: { category: "transport" },
3743
+ PLUGIN_NOT_READY: { category: "lifecycle" },
3744
+ PLUGIN_TERMINATED: { category: "lifecycle" },
3745
+ RESULT_NOT_SERIALIZABLE: { category: "execution" },
3746
+ RESULT_TOO_LARGE: { category: "execution" },
3747
+ BATCH_PARTIAL: { category: "execution" },
3748
+ STORY_UPDATE_FAILED: {
3749
+ category: "execution",
3750
+ hintTemplate: "The storey update could not be applied; re-read the storey and retry."
3751
+ },
3752
+ STORY_HEIGHT_REJECTED: {
3753
+ category: "execution",
3754
+ hintTemplate: "The requested height was out of range; pick a value within the storey's limits."
3755
+ },
3756
+ NO_ACTIVE_STRUCTURE: {
3757
+ category: "execution",
3758
+ hintTemplate: "Activate a structure before running this operation."
3759
+ },
3760
+ NO_ELIGIBLE_ELEMENTS: {
3761
+ category: "execution",
3762
+ hintTemplate: "The storey has no elements eligible for this operation."
3763
+ },
3764
+ PROPOSAL_SWITCH_BLOCKED: {
3765
+ category: "execution",
3766
+ hintTemplate: "Wait for the in-canvas agent run to finish, then retry."
3767
+ },
3768
+ INTERNAL: {
3769
+ category: "internal",
3770
+ hintTemplate: "Host-side fault. Report with errorId."
3771
+ },
3772
+ UNKNOWN: { category: "internal" }
3773
+ };
3774
+ function isPluginErrorCode(value) {
3775
+ return PLUGIN_ERROR_CODES.includes(value);
3776
+ }
3777
+
3778
+ // src/errors/envelope.ts
3779
+ var ERROR_ENVELOPE_VERSION = 1;
3780
+ function isErrorEnvelope(value) {
3781
+ if (typeof value !== "object" || value === null) return false;
3782
+ const record5 = value;
3783
+ return record5.envelopeVersion === ERROR_ENVELOPE_VERSION && typeof record5.code === "string" && typeof record5.message === "string" && typeof record5.errorId === "string";
3784
+ }
3785
+ var idCounter = 0;
3786
+ function newErrorId(prefix = "") {
3787
+ const cryptoApi = globalThis.crypto;
3788
+ if (cryptoApi?.randomUUID) return `${prefix}${cryptoApi.randomUUID()}`;
3789
+ idCounter += 1;
3790
+ return `${prefix}${Date.now().toString(36)}-${idCounter}-${Math.random().toString(36).slice(2, 10)}`;
3791
+ }
3792
+
3793
+ // src/errors/plugin-error.ts
3794
+ var BRAND = /* @__PURE__ */ Symbol.for("snaptrude.pluginError");
3795
+ var PluginError = class extends Error {
3796
+ constructor(envelope) {
3797
+ super(envelope.message);
3798
+ this.name = new.target.name;
3799
+ this.code = envelope.code;
3800
+ this.errorId = envelope.errorId;
3801
+ this.details = envelope.details;
3802
+ this.handle = envelope.handle;
3803
+ this.methodPath = envelope.methodPath;
3804
+ this.hint = envelope.hint ?? hintFor(envelope.code);
3805
+ this[BRAND] = true;
3806
+ }
3807
+ /** Canonical check — survives bundled duplicate SDK copies where `instanceof` fails. */
3808
+ static is(value) {
3809
+ return typeof value === "object" && value !== null && value[BRAND] === true;
3810
+ }
3811
+ /** Derived (not wire-carried) family of the code; unknown codes map to "internal". */
3812
+ get category() {
3813
+ return isPluginErrorCode(this.code) ? CODE_META[this.code].category : "internal";
3814
+ }
3815
+ };
3816
+ var PluginValidationError = class extends PluginError {
3817
+ };
3818
+ var PluginNotFoundError = class extends PluginError {
3819
+ };
3820
+ var PluginPermissionError = class extends PluginError {
3821
+ };
3822
+ var PluginHandleError = class extends PluginError {
3823
+ };
3824
+ var PluginQuotaError = class extends PluginError {
3825
+ };
3826
+ var PluginTimeoutError = class extends PluginError {
3827
+ };
3828
+ var PluginTransportError = class extends PluginError {
3829
+ };
3830
+ var PluginLifecycleError = class extends PluginError {
3831
+ };
3832
+ var PluginExecutionError = class extends PluginError {
3833
+ };
3834
+ var PluginInternalError = class extends PluginError {
3835
+ };
3836
+ var CATEGORY_CLASS = {
3837
+ validation: PluginValidationError,
3838
+ not_found: PluginNotFoundError,
3839
+ permission: PluginPermissionError,
3840
+ handle: PluginHandleError,
3841
+ quota: PluginQuotaError,
3842
+ timeout: PluginTimeoutError,
3843
+ transport: PluginTransportError,
3844
+ lifecycle: PluginLifecycleError,
3845
+ execution: PluginExecutionError,
3846
+ internal: PluginInternalError
3847
+ };
3848
+ function hintFor(code) {
3849
+ return isPluginErrorCode(code) ? CODE_META[code].hintTemplate : void 0;
3850
+ }
3851
+ function fromEnvelope(envelope) {
3852
+ if (!isPluginErrorCode(envelope.code)) return new PluginError(envelope);
3853
+ const ErrorClass = CATEGORY_CLASS[CODE_META[envelope.code].category];
3854
+ return new ErrorClass(envelope);
3855
+ }
3856
+ function makeClientEnvelope(code, message, extra) {
3857
+ return {
3858
+ envelopeVersion: ERROR_ENVELOPE_VERSION,
3859
+ code,
3860
+ message,
3861
+ errorId: newErrorId("c-"),
3862
+ ...extra
3863
+ };
3864
+ }
3137
3865
  export {
3138
3866
  ArcHandle,
3139
3867
  BBoxComponents,
3140
3868
  BooleanOptions,
3141
3869
  BooleanOutcome,
3142
3870
  BrepHandle,
3871
+ CODE_META,
3143
3872
  CadJsonInput,
3144
3873
  CircleHandle,
3145
3874
  CommentHandle,
@@ -3147,6 +3876,7 @@ export {
3147
3876
  ContourHandle,
3148
3877
  CurveHandle,
3149
3878
  DEFAULT_ERASE_STRATEGIES,
3879
+ ERROR_ENVELOPE_VERSION,
3150
3880
  EdgeHandle,
3151
3881
  ErasableEdgeRef,
3152
3882
  EraseStrategy,
@@ -3160,22 +3890,58 @@ export {
3160
3890
  MaterialHandle,
3161
3891
  ModelFormat,
3162
3892
  OffsetSplitOutcome,
3893
+ PLUGIN_ERROR_CODES,
3163
3894
  PUnitType,
3164
3895
  PluginAIInspirationAppliedPreset,
3896
+ PluginAIInspirationCancelJobResult,
3165
3897
  PluginAIInspirationDebugSummary,
3898
+ PluginAIInspirationDeleteRecipeArgs,
3899
+ PluginAIInspirationDeleteRecipeResult,
3900
+ PluginAIInspirationExtractRecipeFromShapeArgs,
3901
+ PluginAIInspirationExtractionResult,
3166
3902
  PluginAIInspirationGenerateArgs,
3903
+ PluginAIInspirationGenerationInputSnapshot,
3904
+ PluginAIInspirationGetJobResult,
3905
+ PluginAIInspirationGetModelCapabilitiesArgs,
3906
+ PluginAIInspirationGetModelCapabilitiesResult,
3907
+ PluginAIInspirationGetPresetCatalogResult,
3908
+ PluginAIInspirationGetSelectionResult,
3909
+ PluginAIInspirationGetWorkflowForShapeArgs,
3910
+ PluginAIInspirationGetWorkflowForShapeResult,
3911
+ PluginAIInspirationJob,
3912
+ PluginAIInspirationJobArgs,
3913
+ PluginAIInspirationJobProgress,
3914
+ PluginAIInspirationJobStatus,
3915
+ PluginAIInspirationListJobsResult,
3167
3916
  PluginAIInspirationListModelsResult,
3917
+ PluginAIInspirationListRecipesResult,
3168
3918
  PluginAIInspirationListSourcesArgs,
3169
3919
  PluginAIInspirationListSourcesResult,
3170
3920
  PluginAIInspirationModel,
3921
+ PluginAIInspirationModelCapability,
3171
3922
  PluginAIInspirationModelOutput,
3172
3923
  PluginAIInspirationOutput,
3173
3924
  PluginAIInspirationOutputKind,
3174
3925
  PluginAIInspirationPoint,
3926
+ PluginAIInspirationPreset,
3927
+ PluginAIInspirationPresetCategory,
3928
+ PluginAIInspirationPresetReferenceImage,
3929
+ PluginAIInspirationPromptStrategy,
3930
+ PluginAIInspirationRecipe,
3931
+ PluginAIInspirationRecipeDraft,
3932
+ PluginAIInspirationRecipeSlot,
3933
+ PluginAIInspirationRecipeStep,
3175
3934
  PluginAIInspirationRefineArgs,
3176
3935
  PluginAIInspirationRegionHint,
3936
+ PluginAIInspirationRerunPlanResult,
3937
+ PluginAIInspirationRerunSelectedBranchArgs,
3177
3938
  PluginAIInspirationRunMetadata,
3939
+ PluginAIInspirationRunMode,
3940
+ PluginAIInspirationRunRecipeArgs,
3178
3941
  PluginAIInspirationRunResult,
3942
+ PluginAIInspirationRuntimeProvider,
3943
+ PluginAIInspirationSaveRecipeArgs,
3944
+ PluginAIInspirationSaveRecipeResult,
3179
3945
  PluginAIInspirationShapeKind,
3180
3946
  PluginAIInspirationShapeRef,
3181
3947
  PluginAIInspirationSiteOptions,
@@ -3185,7 +3951,14 @@ export {
3185
3951
  PluginAIInspirationVideoMode,
3186
3952
  PluginAIInspirationVideoMotion,
3187
3953
  PluginAIInspirationVideoOptions,
3954
+ PluginAIInspirationWorkflow,
3955
+ PluginAIInspirationWorkflowEdge,
3956
+ PluginAIInspirationWorkflowNode,
3957
+ PluginAIInspirationWorkflowOperation,
3958
+ PluginAIInspirationWorkflowRunState,
3959
+ PluginAIInspirationWorkflowVideoConfig,
3188
3960
  PluginAdjacencyLevel,
3961
+ PluginAlignEdge,
3189
3962
  PluginAnalysisApi,
3190
3963
  PluginAnalysisComputeResult,
3191
3964
  PluginAnalysisHeatmapGridCell,
@@ -3281,6 +4054,23 @@ export {
3281
4054
  PluginCoreLayersSetActiveResult,
3282
4055
  PluginCoreLayersUpdateArgs,
3283
4056
  PluginCoreLayersUpdateResult,
4057
+ PluginCoreProposalRef,
4058
+ PluginCoreProposalsApi,
4059
+ PluginCoreProposalsCreateArgs,
4060
+ PluginCoreProposalsCreateResult,
4061
+ PluginCoreProposalsDeleteArgs,
4062
+ PluginCoreProposalsDeleteResult,
4063
+ PluginCoreProposalsGetActiveResult,
4064
+ PluginCoreProposalsGetArgs,
4065
+ PluginCoreProposalsGetResult,
4066
+ PluginCoreProposalsIsActiveArgs,
4067
+ PluginCoreProposalsListForComponentArgs,
4068
+ PluginCoreProposalsListForComponentResult,
4069
+ PluginCoreProposalsListResult,
4070
+ PluginCoreProposalsRenameArgs,
4071
+ PluginCoreProposalsRenameResult,
4072
+ PluginCoreProposalsSetActiveArgs,
4073
+ PluginCoreProposalsSetActiveResult,
3284
4074
  PluginCoreTag,
3285
4075
  PluginCoreTagCategory,
3286
4076
  PluginCoreTagsApi,
@@ -3313,6 +4103,7 @@ export {
3313
4103
  PluginCoreTagsUpdateResult,
3314
4104
  PluginCreateSpaceItem,
3315
4105
  PluginDepartmentId,
4106
+ PluginDesignAlignArgs,
3316
4107
  PluginDesignApi,
3317
4108
  PluginDesignBooleanApi,
3318
4109
  PluginDesignBooleanIntersectArgs,
@@ -3324,6 +4115,7 @@ export {
3324
4115
  PluginDesignCreateCeilingArgs,
3325
4116
  PluginDesignCreateColumnArgs,
3326
4117
  PluginDesignCreateCopyArgs,
4118
+ PluginDesignCreateDoorArgs,
3327
4119
  PluginDesignCreateFloorArgs,
3328
4120
  PluginDesignCreateFurnitureArgs,
3329
4121
  PluginDesignCreateMassArgs,
@@ -3333,9 +4125,13 @@ export {
3333
4125
  PluginDesignCreateSpaceArgs,
3334
4126
  PluginDesignCreateStaircaseArgs,
3335
4127
  PluginDesignCreateWallsArgs,
4128
+ PluginDesignCreateWindowArgs,
3336
4129
  PluginDesignDeleteApi,
3337
4130
  PluginDesignDeleteEntitiesArgs,
3338
4131
  PluginDesignDoorArgs,
4132
+ PluginDesignDoorExistsArgs,
4133
+ PluginDesignDoorGetCatalogItemArgs,
4134
+ PluginDesignDoorListCatalogArgs,
3339
4135
  PluginDesignDoorMirrorArgs,
3340
4136
  PluginDesignDoorSetHeightArgs,
3341
4137
  PluginDesignDoorSetWidthArgs,
@@ -3348,16 +4144,22 @@ export {
3348
4144
  PluginDesignFurnitureExistsArgs,
3349
4145
  PluginDesignFurnitureGetCatalogItemArgs,
3350
4146
  PluginDesignFurnitureListCatalogArgs,
4147
+ PluginDesignIsAreaLockedArgs,
3351
4148
  PluginDesignIsLockedArgs,
3352
4149
  PluginDesignListErasableEdgesArgs,
4150
+ PluginDesignLockAreaArgs,
3353
4151
  PluginDesignLockArgs,
3354
4152
  PluginDesignMaterialsApi,
3355
4153
  PluginDesignMaterialsApplyArgs,
4154
+ PluginDesignMaterialsApplyToFacesArgs,
3356
4155
  PluginDesignMaterialsComponentArgs,
3357
4156
  PluginDesignMaterialsCreateArgs,
4157
+ PluginDesignMaterialsGetByFaceArgs,
3358
4158
  PluginDesignMaterialsGetInfoArgs,
3359
4159
  PluginDesignMaterialsListArgs,
4160
+ PluginDesignMaterialsListByFaceArgs,
3360
4161
  PluginDesignMaterialsResetArgs,
4162
+ PluginDesignMaterialsResetFacesArgs,
3361
4163
  PluginDesignMoveArgs,
3362
4164
  PluginDesignOffsetSplitArgs,
3363
4165
  PluginDesignQueryApi,
@@ -3379,10 +4181,16 @@ export {
3379
4181
  PluginDesignSelectionApi,
3380
4182
  PluginDesignSelectionRemoveArgs,
3381
4183
  PluginDesignSelectionSetArgs,
4184
+ PluginDesignSetLabelArgs,
3382
4185
  PluginDesignTransformApi,
4186
+ PluginDesignUnlockAreaArgs,
3383
4187
  PluginDesignUnlockArgs,
3384
4188
  PluginDesignUpdateApi,
4189
+ PluginDesignUpdateStaircaseArgs,
3385
4190
  PluginDesignWindowArgs,
4191
+ PluginDesignWindowExistsArgs,
4192
+ PluginDesignWindowGetCatalogItemArgs,
4193
+ PluginDesignWindowListCatalogArgs,
3386
4194
  PluginDesignWindowSetHeightArgs,
3387
4195
  PluginDesignWindowSetWidthArgs,
3388
4196
  PluginDesignWindowsApi,
@@ -3391,6 +4199,9 @@ export {
3391
4199
  PluginEntityMeasurements,
3392
4200
  PluginEntityProperties,
3393
4201
  PluginEntityType,
4202
+ PluginError,
4203
+ PluginExecutionError,
4204
+ PluginFaceMaterial,
3394
4205
  PluginFurnitureCatalogItem,
3395
4206
  PluginGeomApi,
3396
4207
  PluginGeomCreateApi,
@@ -3568,6 +4379,7 @@ export {
3568
4379
  PluginGeomUpdateProfileSimplifyArgs,
3569
4380
  PluginGridApi,
3570
4381
  PluginGridValueArgs,
4382
+ PluginHandleError,
3571
4383
  PluginHistoryApi,
3572
4384
  PluginHistoryStepArgs,
3573
4385
  PluginHistoryStepResult,
@@ -3578,12 +4390,18 @@ export {
3578
4390
  PluginImportModelArgs,
3579
4391
  PluginImportPdfArgs,
3580
4392
  PluginImportTerrainArgs,
4393
+ PluginInternalError,
4394
+ PluginLifecycleError,
3581
4395
  PluginMassType,
3582
4396
  PluginMaterialInfo,
3583
4397
  PluginMaterialResult,
3584
4398
  PluginMaterialSpec,
3585
4399
  PluginMathApi,
3586
4400
  PluginMirrorAxis,
4401
+ PluginNotFoundError,
4402
+ PluginObjectCatalogGroup,
4403
+ PluginObjectCatalogItem,
4404
+ PluginPermissionError,
3587
4405
  PluginPresentationAIInspirationApi,
3588
4406
  PluginPresentationApi,
3589
4407
  PluginPresentationDiagramsApi,
@@ -3602,6 +4420,9 @@ export {
3602
4420
  PluginPresentationSheetsPlaceArgs,
3603
4421
  PluginPresentationSheetsPlaceResult,
3604
4422
  PluginPresentationView,
4423
+ PluginPresentationViewColorMode,
4424
+ PluginPresentationViewLabel,
4425
+ PluginPresentationViewSettings,
3605
4426
  PluginPresentationViewType,
3606
4427
  PluginPresentationViewsApi,
3607
4428
  PluginPresentationViewsCaptureArgs,
@@ -3610,9 +4431,13 @@ export {
3610
4431
  PluginPresentationViewsCreateResult,
3611
4432
  PluginPresentationViewsGetArgs,
3612
4433
  PluginPresentationViewsGetResult,
4434
+ PluginPresentationViewsGetSettingsArgs,
4435
+ PluginPresentationViewsGetSettingsResult,
3613
4436
  PluginPresentationViewsListResult,
3614
4437
  PluginPresentationViewsSetActiveArgs,
3615
4438
  PluginPresentationViewsSetActiveResult,
4439
+ PluginPresentationViewsUpdateSettingsArgs,
4440
+ PluginPresentationViewsUpdateSettingsResult,
3616
4441
  PluginProgramAdjacencyApi,
3617
4442
  PluginProgramAdjacencyComputeResult,
3618
4443
  PluginProgramAdjacencyGetMatrixArgs,
@@ -3661,7 +4486,11 @@ export {
3661
4486
  PluginProgramDepartmentsUpdateArgs,
3662
4487
  PluginProgramDepartmentsUpdateResult,
3663
4488
  PluginProgramLayoutApi,
4489
+ PluginProgramLayoutJobState,
4490
+ PluginProgramLayoutJobStatus,
4491
+ PluginProgramLayoutRunArgs,
3664
4492
  PluginProgramLayoutRunResult,
4493
+ PluginProgramLayoutStateResult,
3665
4494
  PluginProgramMetricsApi,
3666
4495
  PluginProgramMetricsSummary,
3667
4496
  PluginProgramSiteApi,
@@ -3726,6 +4555,7 @@ export {
3726
4555
  PluginQuatApi,
3727
4556
  PluginQueryCadLayersArgs,
3728
4557
  PluginQueryPdfPageCountArgs,
4558
+ PluginQuotaError,
3729
4559
  PluginReferenceLineApi,
3730
4560
  PluginReferenceLineCreateMultiArgs,
3731
4561
  PluginReferenceLineCreateMultiResult,
@@ -3745,6 +4575,8 @@ export {
3745
4575
  PluginSiteLatLng,
3746
4576
  PluginSitePolygon,
3747
4577
  PluginSlabType,
4578
+ PluginSmartLayoutArgs,
4579
+ PluginSmartLayoutResult,
3748
4580
  PluginSnapValueArgs,
3749
4581
  PluginSnapsApi,
3750
4582
  PluginSpaceBulkCreateArgs,
@@ -3801,10 +4633,14 @@ export {
3801
4633
  PluginSpreadsheetTransactionOp,
3802
4634
  PluginSpreadsheetVerticalAlign,
3803
4635
  PluginSpreadsheetWhenExists,
4636
+ PluginStaircaseParamUpdates,
4637
+ PluginStaircaseParams,
3804
4638
  PluginStaircasePreset,
3805
4639
  PluginStoryApi,
3806
4640
  PluginStoryCreateArgs,
3807
4641
  PluginStoryCreateResult,
4642
+ PluginStoryDuplicateArgs,
4643
+ PluginStoryDuplicateResult,
3808
4644
  PluginStoryGetAllResult,
3809
4645
  PluginStoryGetArgs,
3810
4646
  PluginStoryGetProperty,
@@ -3813,7 +4649,9 @@ export {
3813
4649
  PluginStoryUpdateResult,
3814
4650
  PluginTerrainSetDatumArgs,
3815
4651
  PluginTerrainSetOpacityArgs,
4652
+ PluginTimeoutError,
3816
4653
  PluginToleranceArgs,
4654
+ PluginTransportError,
3817
4655
  PluginUnderlayListArgs,
3818
4656
  PluginUnderlayPlanSize,
3819
4657
  PluginUnderlayRefArgs,
@@ -3824,6 +4662,7 @@ export {
3824
4662
  PluginUnitsConvertArgs,
3825
4663
  PluginUnitsSetTypeArgs,
3826
4664
  PluginUpdateSpaceItem,
4665
+ PluginValidationError,
3827
4666
  PluginVec3Api,
3828
4667
  PluginWellKnownDepartmentId,
3829
4668
  PluginWindowDimensions,
@@ -3837,6 +4676,11 @@ export {
3837
4676
  Vec3Components,
3838
4677
  Vec3Handle,
3839
4678
  VertexHandle,
3840
- handleSchema
4679
+ fromEnvelope,
4680
+ handleSchema,
4681
+ isErrorEnvelope,
4682
+ isPluginErrorCode,
4683
+ makeClientEnvelope,
4684
+ newErrorId
3841
4685
  };
3842
4686
  //# sourceMappingURL=index.js.map