bruce-models 7.1.107 → 7.1.109

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.
@@ -40,6 +40,7 @@ var Api;
40
40
  ECacheKey["Entity"] = "entity";
41
41
  ECacheKey["EntityType"] = "entitytype";
42
42
  ECacheKey["EntityTypeRelation"] = "entitytyperelation";
43
+ ECacheKey["EntityTypeSource"] = "entitytypesource";
43
44
  ECacheKey["Ontology"] = "ontology";
44
45
  ECacheKey["EntityTypeTrigger"] = "entitytypetrigger";
45
46
  ECacheKey["DataFeed"] = "datafeed";
@@ -17237,6 +17238,115 @@ var EntityTypeRelation;
17237
17238
  }
17238
17239
  })(EntityTypeRelation || (EntityTypeRelation = {}));
17239
17240
 
17241
+ /**
17242
+ * Describes the "Entity Type Source" concept within Nextspace.
17243
+ */
17244
+ var EntityTypeSource;
17245
+ (function (EntityTypeSource) {
17246
+ let EKind;
17247
+ (function (EKind) {
17248
+ // Deprecated. Behaves as Entity.
17249
+ EKind["Unset"] = "UNSET";
17250
+ // Creates or updates Entities matching the key in the Data Mapping.
17251
+ EKind["Entity"] = "ENTITY";
17252
+ // Overlays attributes onto Entities that already exist.
17253
+ EKind["Attribute"] = "ATTRIBUTE";
17254
+ // On demand only. The Entity's Outline carries a URL to fetch its rows.
17255
+ EKind["Reference"] = "REFERENCE";
17256
+ })(EKind = EntityTypeSource.EKind || (EntityTypeSource.EKind = {}));
17257
+ /**
17258
+ * Gets a single Entity Type Source record, including its Data Mapping.
17259
+ */
17260
+ function Get(params) {
17261
+ return __awaiter(this, void 0, void 0, function* () {
17262
+ let { api, entityTypeId, entityTypeSourceId, req } = params;
17263
+ if (!entityTypeId) {
17264
+ throw ("Entity Type ID is required.");
17265
+ }
17266
+ if (!entityTypeSourceId) {
17267
+ throw ("Entity Type Source ID is required.");
17268
+ }
17269
+ if (!api) {
17270
+ api = ENVIRONMENT.Api().GetBruceApi();
17271
+ }
17272
+ const key = GetCacheKey(entityTypeId, entityTypeSourceId);
17273
+ const cache = api.GetCacheItem(key, req);
17274
+ if (cache === null || cache === void 0 ? void 0 : cache.found) {
17275
+ return cache.data;
17276
+ }
17277
+ const prom = new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
17278
+ try {
17279
+ const data = yield api.GET(`entityType/${entityTypeId}/source/${entityTypeSourceId}`, Api.PrepReqParams(req));
17280
+ res({
17281
+ source: data
17282
+ });
17283
+ }
17284
+ catch (e) {
17285
+ rej(e);
17286
+ }
17287
+ }));
17288
+ api.SetCacheItem({
17289
+ key,
17290
+ value: prom,
17291
+ req
17292
+ });
17293
+ return prom;
17294
+ });
17295
+ }
17296
+ EntityTypeSource.Get = Get;
17297
+ /**
17298
+ * Gets the Entity Type Source records feeding the specified Entity Type.
17299
+ */
17300
+ function GetList(params) {
17301
+ return __awaiter(this, void 0, void 0, function* () {
17302
+ let { api, entityTypeId, req } = params;
17303
+ if (!entityTypeId) {
17304
+ throw ("Entity Type ID is required.");
17305
+ }
17306
+ if (!api) {
17307
+ api = ENVIRONMENT.Api().GetBruceApi();
17308
+ }
17309
+ const key = GetListCacheKey(entityTypeId);
17310
+ const cache = api.GetCacheItem(key, req);
17311
+ if (cache === null || cache === void 0 ? void 0 : cache.found) {
17312
+ return cache.data;
17313
+ }
17314
+ const prom = new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
17315
+ try {
17316
+ const data = yield api.GET(`entityType/${entityTypeId}/sources`, Api.PrepReqParams(req));
17317
+ res({
17318
+ sources: Array.isArray(data === null || data === void 0 ? void 0 : data.Items) ? data.Items : []
17319
+ });
17320
+ }
17321
+ catch (e) {
17322
+ rej(e);
17323
+ }
17324
+ }));
17325
+ api.SetCacheItem({
17326
+ key,
17327
+ value: prom,
17328
+ req
17329
+ });
17330
+ return prom;
17331
+ });
17332
+ }
17333
+ EntityTypeSource.GetList = GetList;
17334
+ /**
17335
+ * Returns cache identifier for an Entity Type Source record.
17336
+ */
17337
+ function GetCacheKey(entityTypeId, entityTypeSourceId) {
17338
+ return Api.ECacheKey.EntityTypeSource + Api.ECacheKey.Id + entityTypeId + Api.ECacheKey.Id + entityTypeSourceId;
17339
+ }
17340
+ EntityTypeSource.GetCacheKey = GetCacheKey;
17341
+ /**
17342
+ * Returns cache identifier for the list of Entity Type Source records for an Entity Type.
17343
+ */
17344
+ function GetListCacheKey(entityTypeId) {
17345
+ return Api.ECacheKey.EntityTypeSource + Api.ECacheKey.Id + entityTypeId;
17346
+ }
17347
+ EntityTypeSource.GetListCacheKey = GetListCacheKey;
17348
+ })(EntityTypeSource || (EntityTypeSource = {}));
17349
+
17240
17350
  /**
17241
17351
  * Describes the "BruceEntityTypeTrigger" concept within Nextspace.
17242
17352
  * These records define trigger rules that are scoped to an Entity Type.
@@ -18643,6 +18753,17 @@ var Markup;
18643
18753
  EAnchorDivSide["BottomRight"] = "BottomRight";
18644
18754
  EAnchorDivSide["TopRight"] = "TopRight";
18645
18755
  })(EAnchorDivSide = Div.EAnchorDivSide || (Div.EAnchorDivSide = {}));
18756
+ /**
18757
+ * Whether a div's height is authored or taken from what is in it.
18758
+ */
18759
+ let ECellSizing;
18760
+ (function (ECellSizing) {
18761
+ // The stored height is the height. Content that does not fit is clipped.
18762
+ ECellSizing["Fixed"] = "FIXED";
18763
+ // The content decides the height, with the stored height as a floor.
18764
+ // The stored height is kept up to date from what was actually laid out.
18765
+ ECellSizing["Auto"] = "AUTO";
18766
+ })(ECellSizing = Div.ECellSizing || (Div.ECellSizing = {}));
18646
18767
  // Describes expected content of a row cell.
18647
18768
  let EItemType;
18648
18769
  (function (EItemType) {
@@ -19191,6 +19312,8 @@ class NavigatorMcpWebSocketClient {
19191
19312
  constructor(toolHandler, options = {}) {
19192
19313
  this.ws = null;
19193
19314
  this.isConnecting = false;
19315
+ this.responseGeneration = 0;
19316
+ this.pendingResponses = [];
19194
19317
  this.toolHandler = toolHandler;
19195
19318
  this.options = options;
19196
19319
  this.currentAuth = options.auth;
@@ -19201,7 +19324,7 @@ class NavigatorMcpWebSocketClient {
19201
19324
  connect(auth) {
19202
19325
  var _a, _b, _c, _d, _e, _f, _g;
19203
19326
  if (auth) {
19204
- this.currentAuth = auth;
19327
+ this.setAuth(auth);
19205
19328
  }
19206
19329
  if (this.isConnecting || ((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN) {
19207
19330
  (_c = (_b = this.logger()).debug) === null || _c === void 0 ? void 0 : _c.call(_b, "[NavigatorMcpWS] Connection already active or in-flight; skipping connect.");
@@ -19212,24 +19335,34 @@ class NavigatorMcpWebSocketClient {
19212
19335
  const url = this.buildUrl();
19213
19336
  (_e = (_d = this.logger()).log) === null || _e === void 0 ? void 0 : _e.call(_d, "[NavigatorMcpWS] Connecting to", url);
19214
19337
  this.ws = new WebSocket(url);
19338
+ const socket = this.ws;
19215
19339
  this.ws.onopen = (event) => {
19216
19340
  var _a, _b, _c, _d;
19341
+ if (this.ws !== socket)
19342
+ return;
19217
19343
  (_b = (_a = this.logger()).log) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Connected");
19218
19344
  this.isConnecting = false;
19219
19345
  this.send({ method: "server_ready" });
19346
+ this.flushResponses();
19220
19347
  (_d = (_c = this.options).onOpen) === null || _d === void 0 ? void 0 : _d.call(_c, event);
19221
19348
  };
19222
19349
  this.ws.onmessage = (event) => {
19350
+ if (this.ws !== socket)
19351
+ return;
19223
19352
  this.handleMessage(event.data);
19224
19353
  };
19225
19354
  this.ws.onerror = (event) => {
19226
19355
  var _a, _b, _c, _d;
19356
+ if (this.ws !== socket)
19357
+ return;
19227
19358
  (_b = (_a = this.logger()).error) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Error", event);
19228
19359
  (_d = (_c = this.options).onError) === null || _d === void 0 ? void 0 : _d.call(_c, event);
19229
19360
  this.isConnecting = false;
19230
19361
  };
19231
19362
  this.ws.onclose = (event) => {
19232
19363
  var _a, _b, _c, _d;
19364
+ if (this.ws !== socket)
19365
+ return;
19233
19366
  (_b = (_a = this.logger()).log) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Disconnected");
19234
19367
  this.ws = null;
19235
19368
  this.isConnecting = false;
@@ -19243,6 +19376,9 @@ class NavigatorMcpWebSocketClient {
19243
19376
  }
19244
19377
  disconnect() {
19245
19378
  var _a, _b;
19379
+ // An explicit disconnect ends the logical session; never replay its results.
19380
+ this.responseGeneration++;
19381
+ this.pendingResponses = [];
19246
19382
  if (this.ws) {
19247
19383
  (_b = (_a = this.logger()).debug) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Closing connection");
19248
19384
  this.ws.close();
@@ -19259,6 +19395,16 @@ class NavigatorMcpWebSocketClient {
19259
19395
  * Call connect() afterwards to establish a connection with the new auth.
19260
19396
  */
19261
19397
  setAuth(auth) {
19398
+ const key = (value) => JSON.stringify([
19399
+ value === null || value === void 0 ? void 0 : value.accountId,
19400
+ value === null || value === void 0 ? void 0 : value.sessionId,
19401
+ value === null || value === void 0 ? void 0 : value.fingerprint,
19402
+ value === null || value === void 0 ? void 0 : value.apiBaseUrl
19403
+ ]);
19404
+ if (key(auth) !== key(this.currentAuth)) {
19405
+ this.responseGeneration++;
19406
+ this.pendingResponses = [];
19407
+ }
19262
19408
  this.currentAuth = auth;
19263
19409
  }
19264
19410
  sendChatEvent(event) {
@@ -19303,7 +19449,7 @@ class NavigatorMcpWebSocketClient {
19303
19449
  return urlInstance.toString();
19304
19450
  }
19305
19451
  handleMessage(raw) {
19306
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
19452
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
19307
19453
  return __awaiter(this, void 0, void 0, function* () {
19308
19454
  try {
19309
19455
  const message = typeof raw === "string" ? JSON.parse(raw) : raw;
@@ -19325,6 +19471,7 @@ class NavigatorMcpWebSocketClient {
19325
19471
  return;
19326
19472
  }
19327
19473
  let result;
19474
+ const generation = this.responseGeneration;
19328
19475
  try {
19329
19476
  result = yield this.toolHandler({
19330
19477
  name: toolName,
@@ -19336,23 +19483,62 @@ class NavigatorMcpWebSocketClient {
19336
19483
  (_l = (_k = this.logger()).error) === null || _l === void 0 ? void 0 : _l.call(_k, "[NavigatorMcpWS] Tool handler threw", error);
19337
19484
  result = `Error: ${error instanceof Error ? error.message : String(error)}`;
19338
19485
  }
19339
- this.send({
19486
+ if (generation !== this.responseGeneration) {
19487
+ (_o = (_m = this.logger()).warn) === null || _o === void 0 ? void 0 : _o.call(_m, "[NavigatorMcpWS] Discarding result from a previous session", messageId);
19488
+ return;
19489
+ }
19490
+ this.sendResponse({
19340
19491
  method: "tool_response",
19341
19492
  id: messageId,
19342
19493
  result
19343
19494
  });
19344
19495
  }
19345
19496
  catch (error) {
19346
- (_o = (_m = this.logger()).error) === null || _o === void 0 ? void 0 : _o.call(_m, "[NavigatorMcpWS] Invalid message", error);
19497
+ (_q = (_p = this.logger()).error) === null || _q === void 0 ? void 0 : _q.call(_p, "[NavigatorMcpWS] Invalid message", error);
19347
19498
  }
19348
19499
  });
19349
19500
  }
19501
+ sendResponse(message) {
19502
+ var _a, _b, _c, _d, _e;
19503
+ if (this.send(message))
19504
+ return;
19505
+ this.pendingResponses = this.pendingResponses.filter((entry) => entry.expiresAt > Date.now());
19506
+ if (this.pendingResponses.length >= NavigatorMcpWebSocketClient.MAX_PENDING_RESPONSES) {
19507
+ const dropped = this.pendingResponses.shift();
19508
+ (_b = (_a = this.logger()).warn) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Response queue full; dropping oldest result", (_c = dropped === null || dropped === void 0 ? void 0 : dropped.message) === null || _c === void 0 ? void 0 : _c.id);
19509
+ }
19510
+ this.pendingResponses.push({ message, expiresAt: Date.now() + NavigatorMcpWebSocketClient.RESPONSE_TTL_MS });
19511
+ (_e = (_d = this.logger()).warn) === null || _e === void 0 ? void 0 : _e.call(_d, "[NavigatorMcpWS] Tool result queued until reconnect", message.id);
19512
+ }
19513
+ flushResponses() {
19514
+ var _a, _b;
19515
+ const pending = this.pendingResponses;
19516
+ this.pendingResponses = [];
19517
+ for (const entry of pending) {
19518
+ if (entry.expiresAt <= Date.now()) {
19519
+ (_b = (_a = this.logger()).warn) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Tool result expired before reconnect", entry.message.id);
19520
+ }
19521
+ else if (!this.send(entry.message)) {
19522
+ this.pendingResponses.push(entry);
19523
+ }
19524
+ }
19525
+ }
19350
19526
  send(message) {
19351
- if (this.ws && this.ws.readyState === WebSocket.OPEN) {
19527
+ var _a, _b;
19528
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN)
19529
+ return false;
19530
+ try {
19352
19531
  this.ws.send(JSON.stringify(message));
19532
+ return true;
19533
+ }
19534
+ catch (error) {
19535
+ (_b = (_a = this.logger()).error) === null || _b === void 0 ? void 0 : _b.call(_a, "[NavigatorMcpWS] Send failed", error);
19536
+ return false;
19353
19537
  }
19354
19538
  }
19355
19539
  }
19540
+ NavigatorMcpWebSocketClient.RESPONSE_TTL_MS = 60000;
19541
+ NavigatorMcpWebSocketClient.MAX_PENDING_RESPONSES = 32;
19356
19542
 
19357
19543
  var Plugin;
19358
19544
  (function (Plugin) {
@@ -24325,14 +24511,15 @@ var WorkflowSchedule;
24325
24511
  if (!api) {
24326
24512
  api = ENVIRONMENT.Api().GetBruceApi();
24327
24513
  }
24328
- const key = GetListCacheKey();
24514
+ const url = BuildListUrl(params);
24515
+ const key = GetListCacheKey(params);
24329
24516
  const cache = api.GetCacheItem(key, req);
24330
24517
  if (cache === null || cache === void 0 ? void 0 : cache.found) {
24331
24518
  return cache.data;
24332
24519
  }
24333
24520
  const request = new Promise((res, rej) => __awaiter(this, void 0, void 0, function* () {
24334
24521
  try {
24335
- const data = yield api.GET("workflow/schedules", Api.PrepReqParams(req));
24522
+ const data = yield api.GET(url, Api.PrepReqParams(req));
24336
24523
  res({ workflowSchedules: ParseListResponse(data) });
24337
24524
  }
24338
24525
  catch (e) {
@@ -24356,7 +24543,7 @@ var WorkflowSchedule;
24356
24543
  const id = workflowSchedule.ID && workflowSchedule.ID > 0 ? workflowSchedule.ID : 0;
24357
24544
  const data = yield api.POST(`workflow/schedule/${id}`, workflowSchedule, Api.PrepReqParams(req));
24358
24545
  const parsed = ParseResponse(data);
24359
- api.Cache.Remove(GetListCacheKey());
24546
+ api.Cache.RemoveByStartsWith(Api.ECacheKey.WorkflowSchedule);
24360
24547
  if (id > 0) {
24361
24548
  api.Cache.Remove(GetCacheKey(id));
24362
24549
  }
@@ -24378,12 +24565,20 @@ var WorkflowSchedule;
24378
24565
  api = ENVIRONMENT.Api().GetBruceApi();
24379
24566
  }
24380
24567
  yield api.DELETE(`workflow/schedule/${workflowScheduleId}`, Api.PrepReqParams(req));
24381
- api.Cache.Remove(GetCacheKey(workflowScheduleId));
24382
- api.Cache.Remove(GetListCacheKey());
24568
+ api.Cache.RemoveByStartsWith(Api.ECacheKey.WorkflowSchedule);
24383
24569
  api.Cache.RemoveByStartsWith(Api.ECacheKey.WorkflowItem);
24384
24570
  });
24385
24571
  }
24386
24572
  WorkflowSchedule.Delete = Delete;
24573
+ function BuildListUrl(params) {
24574
+ var _a, _b, _c, _d;
24575
+ const q = new URLSearchParams();
24576
+ appendParam$1(q, "Entity.InternalID", (_b = (_a = params === null || params === void 0 ? void 0 : params.entityInternalId) !== null && _a !== void 0 ? _a : params === null || params === void 0 ? void 0 : params["Entity.InternalID"]) !== null && _b !== void 0 ? _b : params === null || params === void 0 ? void 0 : params.EntityInternalID);
24577
+ appendParam$1(q, "Entity.ID", (_d = (_c = params === null || params === void 0 ? void 0 : params.entityId) !== null && _c !== void 0 ? _c : params === null || params === void 0 ? void 0 : params["Entity.ID"]) !== null && _d !== void 0 ? _d : params === null || params === void 0 ? void 0 : params.EntityID);
24578
+ const qs = q.toString();
24579
+ return qs ? `workflow/schedules?${qs}` : "workflow/schedules";
24580
+ }
24581
+ WorkflowSchedule.BuildListUrl = BuildListUrl;
24387
24582
  function ParseResponse(response) {
24388
24583
  var _a, _b, _c, _d;
24389
24584
  const parsed = parseObject$6(response);
@@ -24412,11 +24607,26 @@ var WorkflowSchedule;
24412
24607
  return `${Api.ECacheKey.WorkflowSchedule}${Api.ECacheKey.Id}${id}`;
24413
24608
  }
24414
24609
  WorkflowSchedule.GetCacheKey = GetCacheKey;
24415
- function GetListCacheKey() {
24416
- return Api.ECacheKey.WorkflowSchedule;
24610
+ function GetListCacheKey(params) {
24611
+ const url = BuildListUrl(params);
24612
+ return url === "workflow/schedules"
24613
+ ? Api.ECacheKey.WorkflowSchedule
24614
+ : `${Api.ECacheKey.WorkflowSchedule}${Api.ECacheKey.ListId}${url}`;
24417
24615
  }
24418
24616
  WorkflowSchedule.GetListCacheKey = GetListCacheKey;
24419
24617
  })(WorkflowSchedule || (WorkflowSchedule = {}));
24618
+ function appendParam$1(q, key, value) {
24619
+ if (value == null || value === "") {
24620
+ return;
24621
+ }
24622
+ if (Array.isArray(value)) {
24623
+ if (value.length) {
24624
+ q.append(key, value.join(","));
24625
+ }
24626
+ return;
24627
+ }
24628
+ q.append(key, String(value));
24629
+ }
24420
24630
  function parseObject$6(data) {
24421
24631
  if (data == null || data == undefined) {
24422
24632
  return null;
@@ -24746,7 +24956,7 @@ function getFirstWrappedArray(data, wrapperKeys) {
24746
24956
  }
24747
24957
 
24748
24958
  // This is updated with the package.json version on build.
24749
- const VERSION = "7.1.107";
24959
+ const VERSION = "7.1.109";
24750
24960
 
24751
- export { VERSION, Account, AccountAudit, AccountConcept, AccountFeatures, AccountInvite, AccountLimits, AccountTemplate, AccountType, AnnDocument, AbstractApi, Api, ApiGetters, BruceApi, GlobalApi, GuardianApi, Assembly, Calculator, ChangeSet, ClientFile, ClientFileValueMap, Bounds, BruceEvent, BruceVariable, CacheControl, Camera, Cartes, Carto, Color, DelayQueue, RequestLane, GeoJson, Geometry, LRUCache, UTC, CustomForm, DashboardView, DataFeed, DataLab, DataLabGroup, DataSource, DataTransform, Comment, Entity, EntityAttachment, EntityAttachmentType, EntityAttribute, EntityComment, EntityCoords, EntityHistoricData, EntityLink, EntityLod, EntityLodCategory, EntityRelation, EntityRelationType, EntitySource, EntityTableView, EntityTag, EntityType, EntityTypeRelation, EntityTypeTrigger, Ontology, OntologyDocument, ENVIRONMENT, ExportBrz, ExportCsv, ExportNsx, ExportUsd, Hexbin, ImportAssembly, ImportCad, ImportCsv, ImportGeoJson, ImportJson, ImportKml, ImportLcc, ImportTif, ImportedFile, Uploader, Markup, UIMarkup, NAVIGATOR_CHAT_EVENT_ENTITY_HIGHLIGHT_APPLIED, NAVIGATOR_CHAT_EVENT_SCENE_CONTEXT_PREFETCHED, NavigatorChatClient, NavigatorMcpWebSocketClient, Plugin, PluginAiTool, ProgramKey, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewBookmarkGroup, ProjectViewLegacy, ProjectViewLegacyBookmark, ProjectViewLegacyTile, ProjectViewTile, ZoomControl, Scenario, HostingLocation, MessageBroker, PendingAction, RecordChangeFeed, Style, Tileset, Tracking, Permission, Session, User, UserGroup, UserMfaMethod, EncryptUtils, MathUtils, ObjectUtils, PathUtils, UrlUtils, WorkflowItem, WorkflowSchedule, WorkflowType, WorkflowItemType };
24961
+ export { VERSION, Account, AccountAudit, AccountConcept, AccountFeatures, AccountInvite, AccountLimits, AccountTemplate, AccountType, AnnDocument, AbstractApi, Api, ApiGetters, BruceApi, GlobalApi, GuardianApi, Assembly, Calculator, ChangeSet, ClientFile, ClientFileValueMap, Bounds, BruceEvent, BruceVariable, CacheControl, Camera, Cartes, Carto, Color, DelayQueue, RequestLane, GeoJson, Geometry, LRUCache, UTC, CustomForm, DashboardView, DataFeed, DataLab, DataLabGroup, DataSource, DataTransform, Comment, Entity, EntityAttachment, EntityAttachmentType, EntityAttribute, EntityComment, EntityCoords, EntityHistoricData, EntityLink, EntityLod, EntityLodCategory, EntityRelation, EntityRelationType, EntitySource, EntityTableView, EntityTag, EntityType, EntityTypeRelation, EntityTypeSource, EntityTypeTrigger, Ontology, OntologyDocument, ENVIRONMENT, ExportBrz, ExportCsv, ExportNsx, ExportUsd, Hexbin, ImportAssembly, ImportCad, ImportCsv, ImportGeoJson, ImportJson, ImportKml, ImportLcc, ImportTif, ImportedFile, Uploader, Markup, UIMarkup, NAVIGATOR_CHAT_EVENT_ENTITY_HIGHLIGHT_APPLIED, NAVIGATOR_CHAT_EVENT_SCENE_CONTEXT_PREFETCHED, NavigatorChatClient, NavigatorMcpWebSocketClient, Plugin, PluginAiTool, ProgramKey, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewBookmarkGroup, ProjectViewLegacy, ProjectViewLegacyBookmark, ProjectViewLegacyTile, ProjectViewTile, ZoomControl, Scenario, HostingLocation, MessageBroker, PendingAction, RecordChangeFeed, Style, Tileset, Tracking, Permission, Session, User, UserGroup, UserMfaMethod, EncryptUtils, MathUtils, ObjectUtils, PathUtils, UrlUtils, WorkflowItem, WorkflowSchedule, WorkflowType, WorkflowItemType };
24752
24962
  //# sourceMappingURL=bruce-models.es5.js.map