@oneuptime/cli 14.0.85 → 14.0.87

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 (2) hide show
  1. package/build/dist/Index.js +1051 -153
  2. package/package.json +1 -1
@@ -117379,6 +117379,7 @@ var ObjectType = /* @__PURE__ */ ((ObjectType2) => {
117379
117379
  ObjectType2["NotContains"] = "NotContains";
117380
117380
  ObjectType2["Wildcard"] = "Wildcard";
117381
117381
  ObjectType2["NotWildcard"] = "NotWildcard";
117382
+ ObjectType2["OwnedBy"] = "OwnedBy";
117382
117383
  ObjectType2["DashboardComponent"] = "DashboardComponent";
117383
117384
  ObjectType2["DashboardViewConfig"] = "DashboardViewConfig";
117384
117385
  return ObjectType2;
@@ -127761,6 +127762,140 @@ var NotWildcard = class _NotWildcard extends QueryOperator {
127761
127762
  }
127762
127763
  };
127763
127764
 
127765
+ // ../Common/Types/BaseDatabase/OwnedBy.ts
127766
+ var OwnedByMatch = /* @__PURE__ */ ((OwnedByMatch2) => {
127767
+ OwnedByMatch2["AnyOf"] = "AnyOf";
127768
+ OwnedByMatch2["NoneOf"] = "NoneOf";
127769
+ OwnedByMatch2["AnyOwner"] = "AnyOwner";
127770
+ OwnedByMatch2["NoOwner"] = "NoOwner";
127771
+ return OwnedByMatch2;
127772
+ })(OwnedByMatch || {});
127773
+ var MAX_OWNED_BY_IDS = 1e3;
127774
+ var OWNED_BY_QUERY_KEY = "owners";
127775
+ var EXAMPLE_UUID = "550e8400-e29b-41d4-a716-446655440000";
127776
+ var OwnedBy = class _OwnedBy extends QueryOperator {
127777
+ static {
127778
+ __name(this, "OwnedBy");
127779
+ }
127780
+ constructor(data) {
127781
+ super();
127782
+ const match = data.match || "AnyOf" /* AnyOf */;
127783
+ if (!Object.values(OwnedByMatch).includes(match)) {
127784
+ throw new BadDataException(
127785
+ `Invalid match for "${OWNED_BY_QUERY_KEY}" in the query: ${JSON.stringify(
127786
+ refusedValue(match)
127787
+ )}. It is one of ${Object.values(OwnedByMatch).join(", ")}.`
127788
+ );
127789
+ }
127790
+ const userIds = _OwnedBy.toIds(data.userIds, "userIds");
127791
+ const teamIds = _OwnedBy.toIds(data.teamIds, "teamIds");
127792
+ const namesOwners = match === "AnyOf" /* AnyOf */ || match === "NoneOf" /* NoneOf */;
127793
+ if (namesOwners && userIds.length === 0 && teamIds.length === 0) {
127794
+ throw new BadDataException(
127795
+ `"${OWNED_BY_QUERY_KEY}" with match ${match} names at least one person (userIds) or team (teamIds).`
127796
+ );
127797
+ }
127798
+ if (!namesOwners && (userIds.length > 0 || teamIds.length > 0)) {
127799
+ throw new BadDataException(
127800
+ `"${OWNED_BY_QUERY_KEY}" with match ${match} asks whether a record has owners at all, so it names no people or teams.`
127801
+ );
127802
+ }
127803
+ if (userIds.length + teamIds.length > MAX_OWNED_BY_IDS) {
127804
+ throw new BadDataException(
127805
+ `"${OWNED_BY_QUERY_KEY}" names at most ${MAX_OWNED_BY_IDS} people and teams together.`
127806
+ );
127807
+ }
127808
+ this._userIds = userIds;
127809
+ this._teamIds = teamIds;
127810
+ this._match = match;
127811
+ }
127812
+ // The people named, as ids (each once).
127813
+ get userIds() {
127814
+ return [...this._userIds];
127815
+ }
127816
+ // The teams named, as ids (each once).
127817
+ get teamIds() {
127818
+ return [...this._teamIds];
127819
+ }
127820
+ get match() {
127821
+ return this._match;
127822
+ }
127823
+ toString() {
127824
+ return JSON.stringify(this.toJSON());
127825
+ }
127826
+ toJSON() {
127827
+ return {
127828
+ _type: "OwnedBy" /* OwnedBy */,
127829
+ match: this._match,
127830
+ userIds: [...this._userIds],
127831
+ teamIds: [...this._teamIds]
127832
+ };
127833
+ }
127834
+ static fromJSON(json) {
127835
+ if (json["_type"] !== "OwnedBy" /* OwnedBy */) {
127836
+ throw new BadDataException("Invalid JSON: " + JSON.stringify(json));
127837
+ }
127838
+ return new _OwnedBy({
127839
+ match: json["match"] || void 0,
127840
+ userIds: _OwnedBy.readIds(json["userIds"], "userIds"),
127841
+ teamIds: _OwnedBy.readIds(json["teamIds"], "teamIds")
127842
+ });
127843
+ }
127844
+ /*
127845
+ * The ids a JSON array holds: text, or an ObjectID as it is serialized
127846
+ * ({"_type": "ObjectID", "value": "..."}). Anything but an array is refused.
127847
+ */
127848
+ static readIds(value, field) {
127849
+ if (value === void 0 || value === null) {
127850
+ return void 0;
127851
+ }
127852
+ if (!Array.isArray(value)) {
127853
+ throw new BadDataException(
127854
+ `"${field}" of "${OWNED_BY_QUERY_KEY}" in the query is a list of IDs.`
127855
+ );
127856
+ }
127857
+ return value.map((item) => {
127858
+ if (item && typeof item === "object" && item["_type"] === "ObjectID" /* ObjectID */) {
127859
+ return new ObjectID(item);
127860
+ }
127861
+ return item;
127862
+ });
127863
+ }
127864
+ /*
127865
+ * Every id as text Postgres reads as a uuid, each once, or the filter is
127866
+ * refused with the words every ID filter uses.
127867
+ */
127868
+ static toIds(ids, field) {
127869
+ if (ids === void 0 || ids === null) {
127870
+ return [];
127871
+ }
127872
+ if (!Array.isArray(ids)) {
127873
+ throw new BadDataException(
127874
+ `"${field}" of "${OWNED_BY_QUERY_KEY}" in the query is a list of IDs.`
127875
+ );
127876
+ }
127877
+ const seen = /* @__PURE__ */ new Set();
127878
+ const result = [];
127879
+ for (const id of ids) {
127880
+ const text = id instanceof ObjectID ? id.toString() : typeof id === "string" ? id : null;
127881
+ if (text === null || !ObjectID.isValidUUID(text)) {
127882
+ throw new BadDataException(
127883
+ `Invalid ID for "${OWNED_BY_QUERY_KEY}.${field}" in the query: ${JSON.stringify(
127884
+ refusedValue(text === null ? JSON.stringify(id) : text)
127885
+ )}. An ID is a UUID, such as "${EXAMPLE_UUID}".`
127886
+ );
127887
+ }
127888
+ const key = text.toLowerCase();
127889
+ if (seen.has(key)) {
127890
+ continue;
127891
+ }
127892
+ seen.add(key);
127893
+ result.push(key);
127894
+ }
127895
+ return result;
127896
+ }
127897
+ };
127898
+
127764
127899
  // ../Common/Types/BaseDatabase/IsNull.ts
127765
127900
  var IsNull2 = class _IsNull extends QueryOperator {
127766
127901
  static {
@@ -134919,6 +135054,7 @@ var MonitorStepDatabaseMonitorUtil = class {
134919
135054
  var ExternalStatusPageProviderType = /* @__PURE__ */ ((ExternalStatusPageProviderType2) => {
134920
135055
  ExternalStatusPageProviderType2["AtlassianStatuspage"] = "Atlassian Statuspage";
134921
135056
  ExternalStatusPageProviderType2["IncidentIo"] = "incident.io";
135057
+ ExternalStatusPageProviderType2["OneUptime"] = "OneUptime Status Page";
134922
135058
  ExternalStatusPageProviderType2["RSS"] = "RSS";
134923
135059
  ExternalStatusPageProviderType2["Atom"] = "Atom";
134924
135060
  ExternalStatusPageProviderType2["Auto"] = "Auto";
@@ -137145,6 +137281,9 @@ var SerializableObjectDictionary = {
137145
137281
  get ["NotWildcard" /* NotWildcard */]() {
137146
137282
  return NotWildcard;
137147
137283
  },
137284
+ get ["OwnedBy" /* OwnedBy */]() {
137285
+ return OwnedBy;
137286
+ },
137148
137287
  get ["NotNull" /* NotNull */]() {
137149
137288
  return NotNull;
137150
137289
  },
@@ -148907,6 +149046,7 @@ var Project = class extends TenantModel {
148907
149046
  this.planCutoffNoticeSentAt = void 0;
148908
149047
  this.enableAutomaticIncidentInvestigation = void 0;
148909
149048
  this.enableAutomaticAlertInvestigation = void 0;
149049
+ this.enableAutomaticSecurityCaseTriage = void 0;
148910
149050
  this.enableAutomaticIncidentRemediation = void 0;
148911
149051
  this.enableAutomaticAlertRemediation = void 0;
148912
149052
  this.enableAutomaticPostmortemDraft = void 0;
@@ -150825,6 +150965,35 @@ __decorateClass([
150825
150965
  type: ColumnType_default.Boolean
150826
150966
  })
150827
150967
  ], Project.prototype, "enableAutomaticAlertInvestigation", 2);
150968
+ __decorateClass([
150969
+ ColumnAccessControl_default({
150970
+ create: [Permission_default.User],
150971
+ read: [
150972
+ Permission_default.ProjectOwner,
150973
+ Permission_default.ProjectAdmin,
150974
+ Permission_default.ProjectMember,
150975
+ Permission_default.Viewer,
150976
+ Permission_default.ReadProject,
150977
+ Permission_default.UnAuthorizedSsoUser,
150978
+ Permission_default.ProjectUser
150979
+ ],
150980
+ update: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin]
150981
+ }),
150982
+ TableColumn_default({
150983
+ required: true,
150984
+ isDefaultValueColumn: true,
150985
+ type: TableColumnType_default.Boolean,
150986
+ title: "Enable Automatic Security Case Triage",
150987
+ description: "When enabled, OneUptime AI triages every new security case a detection opens: it posts what happened, how likely it is to be real, the priority it deserves and the playbook that fits to the case's timeline. It changes nothing: a person decides the verdict and priority and runs the playbook. On for new projects created in OneUptime; projects that existed before keep their setting. Requires AI to be enabled and an LLM provider to be configured.",
150988
+ defaultValue: false,
150989
+ example: true
150990
+ }),
150991
+ Column({
150992
+ nullable: false,
150993
+ default: false,
150994
+ type: ColumnType_default.Boolean
150995
+ })
150996
+ ], Project.prototype, "enableAutomaticSecurityCaseTriage", 2);
150828
150997
  __decorateClass([
150829
150998
  ColumnAccessControl_default({
150830
150999
  create: [Permission_default.User],
@@ -152753,6 +152922,7 @@ var Label = class extends AccessControlModel {
152753
152922
  this.projectId = void 0;
152754
152923
  this.name = void 0;
152755
152924
  this.slug = void 0;
152925
+ this.nameSortKey = void 0;
152756
152926
  this.description = void 0;
152757
152927
  this.createdByUser = void 0;
152758
152928
  this.createdByUserId = void 0;
@@ -152911,6 +153081,26 @@ __decorateClass([
152911
153081
  length: ColumnLength_default.Slug
152912
153082
  })
152913
153083
  ], Label.prototype, "slug", 2);
153084
+ __decorateClass([
153085
+ ColumnAccessControl_default({
153086
+ create: [],
153087
+ read: [],
153088
+ update: []
153089
+ }),
153090
+ TableColumn_default({
153091
+ required: false,
153092
+ type: TableColumnType_default.LongText,
153093
+ computed: true,
153094
+ hideColumnInDocumentation: true,
153095
+ description: "The name as OneUptime puts labels in order: numbers by their value, then letters, case and accents aside. Written by OneUptime from the name."
153096
+ }),
153097
+ Column({
153098
+ nullable: true,
153099
+ type: ColumnType_default.LongText,
153100
+ length: ColumnLength_default.LongText,
153101
+ collation: "C"
153102
+ })
153103
+ ], Label.prototype, "nameSortKey", 2);
152914
153104
  __decorateClass([
152915
153105
  ColumnAccessControl_default({
152916
153106
  create: [
@@ -231680,6 +231870,7 @@ var OnCallDutyPolicy = class extends DatabaseBaseModel {
231680
231870
  this.archivedByUserId = void 0;
231681
231871
  this.repeatPolicyIfNoOneAcknowledges = void 0;
231682
231872
  this.repeatPolicyIfNoOneAcknowledgesNoOfTimes = void 0;
231873
+ this.acknowledgementTimeoutInMinutes = void 0;
231683
231874
  this.customFields = void 0;
231684
231875
  this.postUpdatesToWorkspaceChannels = void 0;
231685
231876
  }
@@ -232281,6 +232472,48 @@ __decorateClass([
232281
232472
  type: ColumnType_default.Number
232282
232473
  })
232283
232474
  ], OnCallDutyPolicy.prototype, "repeatPolicyIfNoOneAcknowledgesNoOfTimes", 2);
232475
+ __decorateClass([
232476
+ ColumnAccessControl_default({
232477
+ create: [
232478
+ Permission_default.ProjectOwner,
232479
+ Permission_default.ProjectAdmin,
232480
+ Permission_default.ProjectMember,
232481
+ Permission_default.OnCallAdmin,
232482
+ Permission_default.OnCallMember,
232483
+ Permission_default.CreateProjectOnCallDutyPolicy
232484
+ ],
232485
+ read: [
232486
+ Permission_default.ProjectOwner,
232487
+ Permission_default.ProjectAdmin,
232488
+ Permission_default.ProjectMember,
232489
+ Permission_default.Viewer,
232490
+ Permission_default.OnCallAdmin,
232491
+ Permission_default.OnCallMember,
232492
+ Permission_default.OnCallViewer,
232493
+ Permission_default.ReadProjectOnCallDutyPolicy
232494
+ ],
232495
+ update: [
232496
+ Permission_default.ProjectOwner,
232497
+ Permission_default.ProjectAdmin,
232498
+ Permission_default.ProjectMember,
232499
+ Permission_default.OnCallAdmin,
232500
+ Permission_default.OnCallMember,
232501
+ Permission_default.EditProjectOnCallDutyPolicy
232502
+ ]
232503
+ }),
232504
+ TableColumn_default({
232505
+ required: false,
232506
+ isDefaultValueColumn: false,
232507
+ type: TableColumnType_default.Number,
232508
+ title: "Acknowledgement Timeout In Minutes",
232509
+ description: "Page again when something this policy paged about is acknowledged but not resolved within this many minutes (5 to 1440). Empty: never.",
232510
+ example: 30
232511
+ }),
232512
+ Column({
232513
+ nullable: true,
232514
+ type: ColumnType_default.Number
232515
+ })
232516
+ ], OnCallDutyPolicy.prototype, "acknowledgementTimeoutInMinutes", 2);
232284
232517
  __decorateClass([
232285
232518
  ColumnAccessControl_default({
232286
232519
  create: [
@@ -238794,6 +239027,10 @@ ServiceLevelObjective = __decorateClass([
238794
239027
  })
238795
239028
  ], ServiceLevelObjective);
238796
239029
 
239030
+ // ../Common/Types/CallAndSMS/TwilioConfigUse.ts
239031
+ var DEFAULT_TWILIO_CONFIG_USE = "Calls and SMS" /* CallsAndSms */;
239032
+ var USED_FOR_TITLE = "Used For";
239033
+
238797
239034
  // ../Common/Utils/Project/NotificationChannels.ts
238798
239035
  var PROJECT_NOTIFICATION_CHANNEL_UPDATE_PERMISSIONS = [
238799
239036
  Permission_default.ProjectOwner,
@@ -238816,7 +239053,9 @@ var STATUS_PAGE_SMS_SUBSCRIPTIONS_SMS_OFF_MESSAGE = `Visitors can't subscribe by
238816
239053
  var SERVER_TWILIO_SETTINGS_PAGE = "Admin Dashboard > Settings > Call and SMS";
238817
239054
  var PROJECT_TWILIO_SETTINGS_PAGE = PROJECT_NOTIFICATION_CHANNEL_SETTINGS_PAGE;
238818
239055
  var WHO_MAY_ADD_A_PROJECT_TWILIO_ACCOUNT = "a project owner, a project admin or someone with Create Call and SMS";
239056
+ var WHO_MAY_EDIT_A_PROJECT_TWILIO_ACCOUNT = "a project owner, a project admin or someone with Edit Call and SMS";
238819
239057
  var WHO_CAN_ADD_A_TWILIO_ACCOUNT_SENTENCE = `The OneUptime server's administrator can add one in ${SERVER_TWILIO_SETTINGS_PAGE}, or ${WHO_MAY_ADD_A_PROJECT_TWILIO_ACCOUNT} can add this project's own in ${PROJECT_TWILIO_SETTINGS_PAGE}.`;
239058
+ var WHO_CAN_USE_THE_PROJECT_TWILIO_ACCOUNT_FOR_IT_SENTENCE = `The OneUptime server's administrator can add one in ${SERVER_TWILIO_SETTINGS_PAGE}, or ${WHO_MAY_EDIT_A_PROJECT_TWILIO_ACCOUNT} can use this project's config for calls and SMS in ${PROJECT_TWILIO_SETTINGS_PAGE}.`;
238820
239059
  var INCOMING_CALL_NUMBER_NO_TWILIO_ACCOUNT_MESSAGE = `Numbers for incoming calls are verified by SMS, and no Twilio account is set up to send SMS. ${WHO_CAN_ADD_A_TWILIO_ACCOUNT_SENTENCE}`;
238821
239060
 
238822
239061
  // ../Common/Types/CallAndSMS/TwilioPhoneNumbers.ts
@@ -238835,6 +239074,7 @@ var ProjectCallSMSConfig = class extends DatabaseBaseModel {
238835
239074
  this.createdByUserId = void 0;
238836
239075
  this.deletedByUser = void 0;
238837
239076
  this.deletedByUserId = void 0;
239077
+ this.usedFor = void 0;
238838
239078
  this.twilioAccountSID = void 0;
238839
239079
  this.twilioAuthToken = void 0;
238840
239080
  this.twilioPrimaryPhoneNumber = void 0;
@@ -239179,87 +239419,23 @@ __decorateClass([
239179
239419
  ]
239180
239420
  }),
239181
239421
  TableColumn_default({
239422
+ isDefaultValueColumn: true,
239423
+ required: true,
239182
239424
  type: TableColumnType_default.ShortText,
239183
- title: "Twilio Account SID",
239184
- description: "Account SID for your Twilio Account",
239185
- example: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
239425
+ canReadOnRelationQuery: true,
239426
+ title: USED_FOR_TITLE,
239427
+ description: `What this Twilio config is used for: "Calls and SMS" (the default), "SMS only" or "Calls only". Calls and SMS and Calls only need a Twilio Primary Phone Number; SMS only needs Twilio SMS Phone Numbers. A config used for SMS only makes no calls, and one used for calls only sends no SMS: those go through OneUptime's own Twilio account, as for a project without a config.`,
239428
+ defaultValue: DEFAULT_TWILIO_CONFIG_USE,
239429
+ example: "SMS only" /* SmsOnly */
239186
239430
  }),
239187
239431
  Column({
239188
239432
  type: ColumnType_default.ShortText,
239189
239433
  length: ColumnLength_default.ShortText,
239190
- nullable: true,
239191
- unique: false
239192
- })
239193
- ], ProjectCallSMSConfig.prototype, "twilioAccountSID", 2);
239194
- __decorateClass([
239195
- ColumnAccessControl_default({
239196
- create: [
239197
- Permission_default.ProjectOwner,
239198
- Permission_default.ProjectAdmin,
239199
- Permission_default.CreateProjectCallSMSConfig
239200
- ],
239201
- read: [
239202
- Permission_default.ProjectOwner,
239203
- Permission_default.ProjectAdmin,
239204
- Permission_default.ReadProjectCallSMSConfig
239205
- ],
239206
- update: [
239207
- Permission_default.ProjectOwner,
239208
- Permission_default.ProjectAdmin,
239209
- Permission_default.EditProjectCallSMSConfig
239210
- ]
239211
- }),
239212
- TableColumn_default({
239213
- type: TableColumnType_default.LongText,
239214
- encrypted: true,
239215
- title: "Twilio Auth Token",
239216
- description: "Auth Token for your Twilio Account",
239217
- example: "your-twilio-auth-token"
239218
- }),
239219
- Column({
239220
- type: ColumnType_default.LongText,
239221
- length: ColumnLength_default.LongText,
239222
- nullable: true,
239223
- unique: false
239224
- })
239225
- ], ProjectCallSMSConfig.prototype, "twilioAuthToken", 2);
239226
- __decorateClass([
239227
- ColumnAccessControl_default({
239228
- create: [
239229
- Permission_default.ProjectOwner,
239230
- Permission_default.ProjectAdmin,
239231
- Permission_default.CreateProjectCallSMSConfig
239232
- ],
239233
- read: [
239234
- Permission_default.ProjectOwner,
239235
- Permission_default.ProjectAdmin,
239236
- Permission_default.ProjectMember,
239237
- Permission_default.Viewer,
239238
- Permission_default.SettingsAdmin,
239239
- Permission_default.SettingsMember,
239240
- Permission_default.SettingsViewer,
239241
- Permission_default.ReadProjectCallSMSConfig
239242
- ],
239243
- update: [
239244
- Permission_default.ProjectOwner,
239245
- Permission_default.ProjectAdmin,
239246
- Permission_default.EditProjectCallSMSConfig
239247
- ]
239248
- }),
239249
- TableColumn_default({
239250
- type: TableColumnType_default.Phone,
239251
- title: "Twilio Primary Phone Number",
239252
- description: "Primary Phone Number for your Twilio account",
239253
- example: "+15551234567"
239254
- }),
239255
- Column({
239256
- type: ColumnType_default.Phone,
239257
- length: ColumnLength_default.Phone,
239258
- nullable: true,
239434
+ nullable: false,
239259
239435
  unique: false,
239260
- transformer: Phone.getDatabaseTransformer()
239436
+ default: DEFAULT_TWILIO_CONFIG_USE
239261
239437
  })
239262
- ], ProjectCallSMSConfig.prototype, "twilioPrimaryPhoneNumber", 2);
239438
+ ], ProjectCallSMSConfig.prototype, "usedFor", 2);
239263
239439
  __decorateClass([
239264
239440
  ColumnAccessControl_default({
239265
239441
  create: [
@@ -239284,18 +239460,18 @@ __decorateClass([
239284
239460
  ]
239285
239461
  }),
239286
239462
  TableColumn_default({
239287
- type: TableColumnType_default.LongText,
239288
- title: "Twilio Secondary Phone Numbers",
239289
- description: "Secondary Phone Number for your Twilio account",
239290
- example: "+15551234568,+15551234569"
239463
+ type: TableColumnType_default.ShortText,
239464
+ title: "Twilio Account SID",
239465
+ description: "Account SID for your Twilio Account",
239466
+ example: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
239291
239467
  }),
239292
239468
  Column({
239293
- type: ColumnType_default.LongText,
239294
- length: ColumnLength_default.LongText,
239469
+ type: ColumnType_default.ShortText,
239470
+ length: ColumnLength_default.ShortText,
239295
239471
  nullable: true,
239296
239472
  unique: false
239297
239473
  })
239298
- ], ProjectCallSMSConfig.prototype, "twilioSecondaryPhoneNumbers", 2);
239474
+ ], ProjectCallSMSConfig.prototype, "twilioAccountSID", 2);
239299
239475
  __decorateClass([
239300
239476
  ColumnAccessControl_default({
239301
239477
  create: [
@@ -239306,11 +239482,6 @@ __decorateClass([
239306
239482
  read: [
239307
239483
  Permission_default.ProjectOwner,
239308
239484
  Permission_default.ProjectAdmin,
239309
- Permission_default.ProjectMember,
239310
- Permission_default.Viewer,
239311
- Permission_default.SettingsAdmin,
239312
- Permission_default.SettingsMember,
239313
- Permission_default.SettingsViewer,
239314
239485
  Permission_default.ReadProjectCallSMSConfig
239315
239486
  ],
239316
239487
  update: [
@@ -239321,14 +239492,10 @@ __decorateClass([
239321
239492
  }),
239322
239493
  TableColumn_default({
239323
239494
  type: TableColumnType_default.LongText,
239324
- title: "Twilio SMS Phone Numbers",
239325
- /*
239326
- * As GlobalConfig's says it: no country named, and the example list the
239327
- * forms and the error that refuses a list show - no one country's
239328
- * numbers.
239329
- */
239330
- description: "Comma-separated numbers to send SMS from, for phone numbers that can only make calls. Once set, every SMS goes out from the one in the recipient's country, or else the first. Leave it empty to send SMS from the same numbers as calls.",
239331
- example: PHONE_NUMBER_LIST_EXAMPLE
239495
+ encrypted: true,
239496
+ title: "Twilio Auth Token",
239497
+ description: "Auth Token for your Twilio Account",
239498
+ example: "your-twilio-auth-token"
239332
239499
  }),
239333
239500
  Column({
239334
239501
  type: ColumnType_default.LongText,
@@ -239336,7 +239503,121 @@ __decorateClass([
239336
239503
  nullable: true,
239337
239504
  unique: false
239338
239505
  })
239339
- ], ProjectCallSMSConfig.prototype, "twilioSmsPhoneNumbers", 2);
239506
+ ], ProjectCallSMSConfig.prototype, "twilioAuthToken", 2);
239507
+ __decorateClass([
239508
+ ColumnAccessControl_default({
239509
+ create: [
239510
+ Permission_default.ProjectOwner,
239511
+ Permission_default.ProjectAdmin,
239512
+ Permission_default.CreateProjectCallSMSConfig
239513
+ ],
239514
+ read: [
239515
+ Permission_default.ProjectOwner,
239516
+ Permission_default.ProjectAdmin,
239517
+ Permission_default.ProjectMember,
239518
+ Permission_default.Viewer,
239519
+ Permission_default.SettingsAdmin,
239520
+ Permission_default.SettingsMember,
239521
+ Permission_default.SettingsViewer,
239522
+ Permission_default.ReadProjectCallSMSConfig
239523
+ ],
239524
+ update: [
239525
+ Permission_default.ProjectOwner,
239526
+ Permission_default.ProjectAdmin,
239527
+ Permission_default.EditProjectCallSMSConfig
239528
+ ]
239529
+ }),
239530
+ TableColumn_default({
239531
+ type: TableColumnType_default.Phone,
239532
+ title: "Twilio Primary Phone Number",
239533
+ description: "Primary Phone Number for your Twilio account",
239534
+ example: "+15551234567"
239535
+ }),
239536
+ Column({
239537
+ type: ColumnType_default.Phone,
239538
+ length: ColumnLength_default.Phone,
239539
+ nullable: true,
239540
+ unique: false,
239541
+ transformer: Phone.getDatabaseTransformer()
239542
+ })
239543
+ ], ProjectCallSMSConfig.prototype, "twilioPrimaryPhoneNumber", 2);
239544
+ __decorateClass([
239545
+ ColumnAccessControl_default({
239546
+ create: [
239547
+ Permission_default.ProjectOwner,
239548
+ Permission_default.ProjectAdmin,
239549
+ Permission_default.CreateProjectCallSMSConfig
239550
+ ],
239551
+ read: [
239552
+ Permission_default.ProjectOwner,
239553
+ Permission_default.ProjectAdmin,
239554
+ Permission_default.ProjectMember,
239555
+ Permission_default.Viewer,
239556
+ Permission_default.SettingsAdmin,
239557
+ Permission_default.SettingsMember,
239558
+ Permission_default.SettingsViewer,
239559
+ Permission_default.ReadProjectCallSMSConfig
239560
+ ],
239561
+ update: [
239562
+ Permission_default.ProjectOwner,
239563
+ Permission_default.ProjectAdmin,
239564
+ Permission_default.EditProjectCallSMSConfig
239565
+ ]
239566
+ }),
239567
+ TableColumn_default({
239568
+ type: TableColumnType_default.LongText,
239569
+ title: "Twilio Secondary Phone Numbers",
239570
+ description: "Secondary Phone Number for your Twilio account",
239571
+ example: "+15551234568,+15551234569"
239572
+ }),
239573
+ Column({
239574
+ type: ColumnType_default.LongText,
239575
+ length: ColumnLength_default.LongText,
239576
+ nullable: true,
239577
+ unique: false
239578
+ })
239579
+ ], ProjectCallSMSConfig.prototype, "twilioSecondaryPhoneNumbers", 2);
239580
+ __decorateClass([
239581
+ ColumnAccessControl_default({
239582
+ create: [
239583
+ Permission_default.ProjectOwner,
239584
+ Permission_default.ProjectAdmin,
239585
+ Permission_default.CreateProjectCallSMSConfig
239586
+ ],
239587
+ read: [
239588
+ Permission_default.ProjectOwner,
239589
+ Permission_default.ProjectAdmin,
239590
+ Permission_default.ProjectMember,
239591
+ Permission_default.Viewer,
239592
+ Permission_default.SettingsAdmin,
239593
+ Permission_default.SettingsMember,
239594
+ Permission_default.SettingsViewer,
239595
+ Permission_default.ReadProjectCallSMSConfig
239596
+ ],
239597
+ update: [
239598
+ Permission_default.ProjectOwner,
239599
+ Permission_default.ProjectAdmin,
239600
+ Permission_default.EditProjectCallSMSConfig
239601
+ ]
239602
+ }),
239603
+ TableColumn_default({
239604
+ type: TableColumnType_default.LongText,
239605
+ title: "Twilio SMS Phone Numbers",
239606
+ /*
239607
+ * As GlobalConfig's says it: no country named, and the example list the
239608
+ * forms and the error that refuses a list show - no one country's
239609
+ * numbers.
239610
+ */
239611
+ description: "Comma-separated numbers to send SMS from, for phone numbers that can only make calls. Once set, every SMS goes out from the one in the recipient's country, or else the first. Leave it empty to send SMS from the same numbers as calls.",
239612
+ example: PHONE_NUMBER_LIST_EXAMPLE
239613
+ }),
239614
+ Column({
239615
+ type: ColumnType_default.LongText,
239616
+ length: ColumnLength_default.LongText,
239617
+ nullable: true,
239618
+ unique: false
239619
+ })
239620
+ ], ProjectCallSMSConfig.prototype, "twilioSmsPhoneNumbers", 2);
239340
239621
  __decorateClass([
239341
239622
  ColumnAccessControl_default({
239342
239623
  create: [
@@ -265429,6 +265710,7 @@ var GlobalConfig2 = class extends GlobalConfig {
265429
265710
  this.twilioPrimaryPhoneNumber = void 0;
265430
265711
  this.twilioSecondaryPhoneNumbers = void 0;
265431
265712
  this.twilioSmsPhoneNumbers = void 0;
265713
+ this.twilioUsedFor = void 0;
265432
265714
  this.metaWhatsAppAccessToken = void 0;
265433
265715
  this.metaWhatsAppPhoneNumberId = void 0;
265434
265716
  this.metaWhatsAppBusinessAccountId = void 0;
@@ -265438,6 +265720,7 @@ var GlobalConfig2 = class extends GlobalConfig {
265438
265720
  this.telegramBotToken = void 0;
265439
265721
  this.telegramBotUsername = void 0;
265440
265722
  this.telegramWebhookSecretToken = void 0;
265723
+ this.telegramPollForUpdates = void 0;
265441
265724
  this.emailServerType = void 0;
265442
265725
  this.sendgridApiKey = void 0;
265443
265726
  this.sendgridFromEmail = void 0;
@@ -265906,6 +266189,28 @@ __decorateClass([
265906
266189
  unique: false
265907
266190
  })
265908
266191
  ], GlobalConfig2.prototype, "twilioSmsPhoneNumbers", 2);
266192
+ __decorateClass([
266193
+ ColumnAccessControl_default({
266194
+ create: [],
266195
+ read: [],
266196
+ update: []
266197
+ }),
266198
+ TableColumn_default({
266199
+ isDefaultValueColumn: true,
266200
+ required: true,
266201
+ type: TableColumnType_default.ShortText,
266202
+ title: "Twilio Used For",
266203
+ description: `What the server's Twilio account sends: "Calls and SMS", "SMS only" or "Calls only".`,
266204
+ defaultValue: DEFAULT_TWILIO_CONFIG_USE
266205
+ }),
266206
+ Column({
266207
+ type: ColumnType_default.ShortText,
266208
+ length: ColumnLength_default.ShortText,
266209
+ nullable: false,
266210
+ unique: false,
266211
+ default: DEFAULT_TWILIO_CONFIG_USE
266212
+ })
266213
+ ], GlobalConfig2.prototype, "twilioUsedFor", 2);
265909
266214
  __decorateClass([
265910
266215
  ColumnAccessControl_default({
265911
266216
  create: [],
@@ -266065,6 +266370,24 @@ __decorateClass([
266065
266370
  unique: true
266066
266371
  })
266067
266372
  ], GlobalConfig2.prototype, "telegramWebhookSecretToken", 2);
266373
+ __decorateClass([
266374
+ ColumnAccessControl_default({
266375
+ create: [],
266376
+ read: [],
266377
+ update: []
266378
+ }),
266379
+ TableColumn_default({
266380
+ type: TableColumnType_default.Boolean,
266381
+ title: "Poll Telegram for Messages",
266382
+ description: "When enabled, OneUptime fetches the bot's messages from Telegram over outbound HTTPS instead of waiting for Telegram to call its webhook. For servers Telegram cannot reach, such as one behind a VPN or firewall.",
266383
+ defaultValue: false
266384
+ }),
266385
+ Column({
266386
+ type: ColumnType_default.Boolean,
266387
+ nullable: true,
266388
+ default: false
266389
+ })
266390
+ ], GlobalConfig2.prototype, "telegramPollForUpdates", 2);
266068
266391
  __decorateClass([
266069
266392
  ColumnAccessControl_default({
266070
266393
  create: [],
@@ -280010,15 +280333,15 @@ __decorateClass([
280010
280333
  }),
280011
280334
  TableColumn_default({
280012
280335
  required: true,
280013
- type: TableColumnType_default.Name,
280336
+ type: TableColumnType_default.ShortText,
280014
280337
  canReadOnRelationQuery: true,
280015
280338
  title: "Name",
280016
280339
  description: "Friendly name for this detection rule."
280017
280340
  }),
280018
280341
  Column({
280019
280342
  nullable: false,
280020
- type: ColumnType_default.Name,
280021
- length: ColumnLength_default.Name
280343
+ type: ColumnType_default.ShortText,
280344
+ length: ColumnLength_default.ShortText
280022
280345
  })
280023
280346
  ], DetectionRule.prototype, "name", 2);
280024
280347
  __decorateClass([
@@ -282854,6 +283177,12 @@ var SecurityCase = class extends DatabaseBaseModel {
282854
283177
  this.notifiedPriority = void 0;
282855
283178
  this.incident = void 0;
282856
283179
  this.incidentId = void 0;
283180
+ this.aiVerdict = void 0;
283181
+ this.aiSuggestedPriority = void 0;
283182
+ this.aiSuggestedPlaybookId = void 0;
283183
+ this.aiTriageReport = void 0;
283184
+ this.aiTriagedAt = void 0;
283185
+ this.aiTriagePromptInjectionSuspected = void 0;
282857
283186
  this.labels = void 0;
282858
283187
  this.createdByUser = void 0;
282859
283188
  this.createdByUserId = void 0;
@@ -283403,6 +283732,87 @@ __decorateClass([
283403
283732
  transformer: ObjectID.getDatabaseTransformer()
283404
283733
  })
283405
283734
  ], SecurityCase.prototype, "incidentId", 2);
283735
+ __decorateClass([
283736
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283737
+ TableColumn_default({
283738
+ type: TableColumnType_default.ShortText,
283739
+ computed: true,
283740
+ title: "AI Verdict",
283741
+ description: "What OneUptime AI made of the case when it triaged it: Likely Malicious, Likely Benign, Likely False Positive or Inconclusive. A suggestion; a person sets the case's verdict."
283742
+ }),
283743
+ Column({
283744
+ nullable: true,
283745
+ type: ColumnType_default.ShortText,
283746
+ length: ColumnLength_default.ShortText
283747
+ })
283748
+ ], SecurityCase.prototype, "aiVerdict", 2);
283749
+ __decorateClass([
283750
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283751
+ TableColumn_default({
283752
+ type: TableColumnType_default.ShortText,
283753
+ computed: true,
283754
+ title: "AI Suggested Priority",
283755
+ description: "The priority OneUptime AI suggested when it triaged the case. The case's own priority changes only when a person sets it."
283756
+ }),
283757
+ Column({
283758
+ nullable: true,
283759
+ type: ColumnType_default.ShortText,
283760
+ length: ColumnLength_default.ShortText
283761
+ })
283762
+ ], SecurityCase.prototype, "aiSuggestedPriority", 2);
283763
+ __decorateClass([
283764
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283765
+ TableColumn_default({
283766
+ type: TableColumnType_default.ObjectID,
283767
+ computed: true,
283768
+ title: "AI Suggested Playbook ID",
283769
+ description: "ID of the project's playbook OneUptime AI suggested running when it triaged the case. It runs only when a person runs it."
283770
+ }),
283771
+ Column({
283772
+ type: ColumnType_default.ObjectID,
283773
+ nullable: true,
283774
+ transformer: ObjectID.getDatabaseTransformer()
283775
+ })
283776
+ ], SecurityCase.prototype, "aiSuggestedPlaybookId", 2);
283777
+ __decorateClass([
283778
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283779
+ TableColumn_default({
283780
+ type: TableColumnType_default.Markdown,
283781
+ computed: true,
283782
+ title: "AI Triage Report",
283783
+ description: "The report OneUptime AI wrote when it last triaged the case: what happened, its read and the evidence for it, and the next steps."
283784
+ }),
283785
+ Column({
283786
+ nullable: true,
283787
+ type: ColumnType_default.Markdown
283788
+ })
283789
+ ], SecurityCase.prototype, "aiTriageReport", 2);
283790
+ __decorateClass([
283791
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283792
+ TableColumn_default({
283793
+ type: TableColumnType_default.Date,
283794
+ computed: true,
283795
+ title: "AI Triaged At",
283796
+ description: "When OneUptime AI last finished triaging the case."
283797
+ }),
283798
+ Column({
283799
+ nullable: true,
283800
+ type: ColumnType_default.Date
283801
+ })
283802
+ ], SecurityCase.prototype, "aiTriagedAt", 2);
283803
+ __decorateClass([
283804
+ ColumnAccessControl_default(serverWrittenColumnAccess),
283805
+ TableColumn_default({
283806
+ type: TableColumnType_default.Boolean,
283807
+ computed: true,
283808
+ title: "AI Triage Prompt Injection Suspected",
283809
+ description: "Whether OneUptime AI found text in the case's data written to steer an AI when it triaged the case. It then leaves the call to a person."
283810
+ }),
283811
+ Column({
283812
+ nullable: true,
283813
+ type: ColumnType_default.Boolean
283814
+ })
283815
+ ], SecurityCase.prototype, "aiTriagePromptInjectionSuspected", 2);
283406
283816
  __decorateClass([
283407
283817
  ColumnAccessControl_default({
283408
283818
  create: createPermissions3,
@@ -284701,6 +285111,7 @@ SecurityDetection = __decorateClass([
284701
285111
  var SecurityPlaybookTrigger = /* @__PURE__ */ ((SecurityPlaybookTrigger2) => {
284702
285112
  SecurityPlaybookTrigger2["CaseOpened"] = "Case Opened";
284703
285113
  SecurityPlaybookTrigger2["DetectionAdded"] = "Detection Added";
285114
+ SecurityPlaybookTrigger2["TriagedAsLikelyMalicious"] = "Triaged as Likely Malicious";
284704
285115
  SecurityPlaybookTrigger2["Manual"] = "Manual";
284705
285116
  return SecurityPlaybookTrigger2;
284706
285117
  })(SecurityPlaybookTrigger || {});
@@ -301162,6 +301573,8 @@ var OnCallDutyPolicyExecutionLog = class extends DatabaseBaseModel {
301162
301573
  this.scheduleGapRetryCount = void 0;
301163
301574
  this.pagingStartsAt = void 0;
301164
301575
  this.pagingStartedEarlyReason = void 0;
301576
+ this.acknowledgementTimeoutStartedAt = void 0;
301577
+ this.pageAgainNumber = void 0;
301165
301578
  this.triggeredByUser = void 0;
301166
301579
  this.triggeredByUserId = void 0;
301167
301580
  this.triggeredByWorkflowId = void 0;
@@ -302374,6 +302787,62 @@ __decorateClass([
302374
302787
  nullable: true
302375
302788
  })
302376
302789
  ], OnCallDutyPolicyExecutionLog.prototype, "pagingStartedEarlyReason", 2);
302790
+ __decorateClass([
302791
+ ColumnAccessControl_default({
302792
+ create: [],
302793
+ read: [
302794
+ Permission_default.ProjectOwner,
302795
+ Permission_default.ProjectAdmin,
302796
+ Permission_default.ProjectMember,
302797
+ Permission_default.Viewer,
302798
+ Permission_default.OnCallAdmin,
302799
+ Permission_default.OnCallMember,
302800
+ Permission_default.OnCallViewer,
302801
+ Permission_default.ReadProjectOnCallDutyPolicyExecutionLog
302802
+ ],
302803
+ update: []
302804
+ }),
302805
+ TableColumn_default({
302806
+ type: TableColumnType_default.Date,
302807
+ required: false,
302808
+ title: "Acknowledgement Timeout Started At",
302809
+ description: "When the acknowledgement timeout started counting for this run's record: its last acknowledgement. Empty when it is not counting.",
302810
+ canReadOnRelationQuery: false,
302811
+ example: "2024-01-15T09:00:00.000Z"
302812
+ }),
302813
+ Column({
302814
+ type: ColumnType_default.Date,
302815
+ nullable: true
302816
+ })
302817
+ ], OnCallDutyPolicyExecutionLog.prototype, "acknowledgementTimeoutStartedAt", 2);
302818
+ __decorateClass([
302819
+ ColumnAccessControl_default({
302820
+ create: [],
302821
+ read: [
302822
+ Permission_default.ProjectOwner,
302823
+ Permission_default.ProjectAdmin,
302824
+ Permission_default.ProjectMember,
302825
+ Permission_default.Viewer,
302826
+ Permission_default.OnCallAdmin,
302827
+ Permission_default.OnCallMember,
302828
+ Permission_default.OnCallViewer,
302829
+ Permission_default.ReadProjectOnCallDutyPolicyExecutionLog
302830
+ ],
302831
+ update: []
302832
+ }),
302833
+ TableColumn_default({
302834
+ type: TableColumnType_default.Number,
302835
+ required: false,
302836
+ title: "Page Again Number",
302837
+ description: "For a run that pages again because its record stayed acknowledged without being resolved: which time, from 1. Empty for every other run.",
302838
+ canReadOnRelationQuery: false,
302839
+ example: 1
302840
+ }),
302841
+ Column({
302842
+ type: ColumnType_default.Number,
302843
+ nullable: true
302844
+ })
302845
+ ], OnCallDutyPolicyExecutionLog.prototype, "pageAgainNumber", 2);
302377
302846
  __decorateClass([
302378
302847
  ColumnAccessControl_default({
302379
302848
  create: [
@@ -302550,6 +303019,9 @@ OnCallDutyPolicyExecutionLog = __decorateClass([
302550
303019
  Entity({
302551
303020
  name: "OnCallDutyPolicyExecutionLog"
302552
303021
  }),
303022
+ Index(["acknowledgementTimeoutStartedAt"], {
303023
+ where: '"acknowledgementTimeoutStartedAt" IS NOT NULL AND "deletedAt" IS NULL'
303024
+ }),
302553
303025
  TableMetadata_default({
302554
303026
  tableName: "OnCallDutyPolicyExecutionLog",
302555
303027
  singularName: "On-Call Duty Execution Log",
@@ -321581,6 +322053,8 @@ var CodeRepository = class extends DatabaseBaseModel {
321581
322053
  this.maxOpenFixPullRequests = void 0;
321582
322054
  this.isGitHubCommandsEnabled = void 0;
321583
322055
  this.gitHubTriggerLabel = void 0;
322056
+ this.isProductionReviewEnabled = void 0;
322057
+ this.productionReviewPullRequestContent = void 0;
321584
322058
  this.repositoryUrl = void 0;
321585
322059
  this.gitHubAppInstallationId = void 0;
321586
322060
  this.gitLabProjectId = void 0;
@@ -322284,6 +322758,89 @@ __decorateClass([
322284
322758
  length: ColumnLength_default.ShortText
322285
322759
  })
322286
322760
  ], CodeRepository.prototype, "gitHubTriggerLabel", 2);
322761
+ __decorateClass([
322762
+ ColumnAccessControl_default({
322763
+ create: [
322764
+ Permission_default.ProjectOwner,
322765
+ Permission_default.ProjectAdmin,
322766
+ Permission_default.ProjectMember,
322767
+ Permission_default.SettingsAdmin,
322768
+ Permission_default.SettingsMember,
322769
+ Permission_default.CreateCodeRepository
322770
+ ],
322771
+ read: [
322772
+ Permission_default.ProjectOwner,
322773
+ Permission_default.ProjectAdmin,
322774
+ Permission_default.ProjectMember,
322775
+ Permission_default.Viewer,
322776
+ Permission_default.SettingsAdmin,
322777
+ Permission_default.SettingsMember,
322778
+ Permission_default.SettingsViewer,
322779
+ Permission_default.ReadCodeRepository
322780
+ ],
322781
+ update: [
322782
+ Permission_default.ProjectOwner,
322783
+ Permission_default.ProjectAdmin,
322784
+ Permission_default.ProjectMember,
322785
+ Permission_default.SettingsAdmin,
322786
+ Permission_default.SettingsMember,
322787
+ Permission_default.EditCodeRepository
322788
+ ]
322789
+ }),
322790
+ TableColumn_default({
322791
+ required: false,
322792
+ type: TableColumnType_default.Boolean,
322793
+ title: "Review Pull Requests Against Production",
322794
+ description: "Whether OneUptime comments on this repository's pull requests with what production says about the code they change: the exceptions thrown in it, how busy and slow the operations it runs are, and the incidents and deploys around it. Only pull requests from people who can write to the repository are reviewed on their own.",
322795
+ example: true
322796
+ }),
322797
+ Column({
322798
+ nullable: true,
322799
+ type: ColumnType_default.Boolean
322800
+ })
322801
+ ], CodeRepository.prototype, "isProductionReviewEnabled", 2);
322802
+ __decorateClass([
322803
+ ColumnAccessControl_default({
322804
+ create: [
322805
+ Permission_default.ProjectOwner,
322806
+ Permission_default.ProjectAdmin,
322807
+ Permission_default.ProjectMember,
322808
+ Permission_default.SettingsAdmin,
322809
+ Permission_default.SettingsMember,
322810
+ Permission_default.CreateCodeRepository
322811
+ ],
322812
+ read: [
322813
+ Permission_default.ProjectOwner,
322814
+ Permission_default.ProjectAdmin,
322815
+ Permission_default.ProjectMember,
322816
+ Permission_default.Viewer,
322817
+ Permission_default.SettingsAdmin,
322818
+ Permission_default.SettingsMember,
322819
+ Permission_default.SettingsViewer,
322820
+ Permission_default.ReadCodeRepository
322821
+ ],
322822
+ update: [
322823
+ Permission_default.ProjectOwner,
322824
+ Permission_default.ProjectAdmin,
322825
+ Permission_default.ProjectMember,
322826
+ Permission_default.SettingsAdmin,
322827
+ Permission_default.SettingsMember,
322828
+ Permission_default.EditCodeRepository
322829
+ ]
322830
+ }),
322831
+ TableColumn_default({
322832
+ required: false,
322833
+ type: TableColumnType_default.ShortText,
322834
+ title: "Production Review Comment",
322835
+ description: "What a production review posts on a pull request. Review (the default): the review, or only a link to it in OneUptime on a public repository. Link: only a link, whatever the repository. ReviewEvenIfPublic: the review, even on a public repository.",
322836
+ example: "Review"
322837
+ }),
322838
+ Column({
322839
+ nullable: true,
322840
+ type: ColumnType_default.ShortText,
322841
+ length: ColumnLength_default.ShortText
322842
+ })
322843
+ ], CodeRepository.prototype, "productionReviewPullRequestContent", 2);
322287
322844
  __decorateClass([
322288
322845
  ColumnAccessControl_default({
322289
322846
  create: [
@@ -324712,8 +325269,10 @@ var AIRun = class extends DatabaseBaseModel {
324712
325269
  this.triggeredByAlertId = void 0;
324713
325270
  this.followUpForAlertId = void 0;
324714
325271
  this.ruleWaitMinutes = void 0;
325272
+ this.llmProviderId = void 0;
324715
325273
  this.triggeredByTelemetryExceptionId = void 0;
324716
325274
  this.triggeredByAiInsightId = void 0;
325275
+ this.triggeredBySecurityCaseId = void 0;
324717
325276
  this.triggeredByAutoRemediationSuggestionId = void 0;
324718
325277
  this.monitorId = void 0;
324719
325278
  this.aiAgentId = void 0;
@@ -325149,6 +325708,30 @@ __decorateClass([
325149
325708
  nullable: true
325150
325709
  })
325151
325710
  ], AIRun.prototype, "ruleWaitMinutes", 2);
325711
+ __decorateClass([
325712
+ ColumnAccessControl_default({
325713
+ create: [],
325714
+ read: [
325715
+ Permission_default.ProjectOwner,
325716
+ Permission_default.ProjectAdmin,
325717
+ Permission_default.ProjectMember,
325718
+ Permission_default.Viewer
325719
+ ],
325720
+ update: []
325721
+ }),
325722
+ TableColumn_default({
325723
+ type: TableColumnType_default.ObjectID,
325724
+ required: false,
325725
+ canReadOnRelationQuery: true,
325726
+ title: "LLM Provider ID",
325727
+ description: "The LLM provider the rule that started this run picked for it. Empty when no rule picked one: the project's default provider, else the global one."
325728
+ }),
325729
+ Column({
325730
+ type: ColumnType_default.ObjectID,
325731
+ nullable: true,
325732
+ transformer: ObjectID.getDatabaseTransformer()
325733
+ })
325734
+ ], AIRun.prototype, "llmProviderId", 2);
325152
325735
  __decorateClass([
325153
325736
  ColumnAccessControl_default({
325154
325737
  create: [],
@@ -325199,6 +325782,31 @@ __decorateClass([
325199
325782
  transformer: ObjectID.getDatabaseTransformer()
325200
325783
  })
325201
325784
  ], AIRun.prototype, "triggeredByAiInsightId", 2);
325785
+ __decorateClass([
325786
+ ColumnAccessControl_default({
325787
+ create: [],
325788
+ read: [
325789
+ Permission_default.ProjectOwner,
325790
+ Permission_default.ProjectAdmin,
325791
+ Permission_default.ProjectMember,
325792
+ Permission_default.Viewer
325793
+ ],
325794
+ update: []
325795
+ }),
325796
+ Index(),
325797
+ TableColumn_default({
325798
+ type: TableColumnType_default.ObjectID,
325799
+ required: false,
325800
+ canReadOnRelationQuery: true,
325801
+ title: "Triggered By Security Case ID",
325802
+ description: "The security case this run triaged (for security case triage runs)."
325803
+ }),
325804
+ Column({
325805
+ type: ColumnType_default.ObjectID,
325806
+ nullable: true,
325807
+ transformer: ObjectID.getDatabaseTransformer()
325808
+ })
325809
+ ], AIRun.prototype, "triggeredBySecurityCaseId", 2);
325202
325810
  __decorateClass([
325203
325811
  ColumnAccessControl_default({
325204
325812
  create: [],
@@ -379858,6 +380466,8 @@ var AutoRemediationRule = class extends RuleBaseModel {
379858
380466
  this.runner = void 0;
379859
380467
  this.runnerId = void 0;
379860
380468
  this.codeRepositories = void 0;
380469
+ this.llmProvider = void 0;
380470
+ this.llmProviderId = void 0;
379861
380471
  this.openCodeFixPullRequests = void 0;
379862
380472
  this.openTelemetryPullRequests = void 0;
379863
380473
  this.verificationWindowMinutes = void 0;
@@ -380680,15 +381290,134 @@ __decorateClass([
380680
381290
  ]
380681
381291
  }),
380682
381292
  TableColumn_default({
380683
- manyToOneRelationColumn: "runnerId",
381293
+ manyToOneRelationColumn: "runnerId",
381294
+ type: TableColumnType_default.Entity,
381295
+ modelType: Runner,
381296
+ title: "Runner",
381297
+ description: "The Runner OneUptime AI runs this rule's Bash commands on, inside your network. Empty means none: OneUptime AI runs no commands of its own for the rule. Commands on the affected Kubernetes cluster or host always go through its AI agent."
381298
+ }),
381299
+ ManyToOne(
381300
+ () => {
381301
+ return Runner;
381302
+ },
381303
+ {
381304
+ eager: false,
381305
+ nullable: true,
381306
+ onDelete: "SET NULL",
381307
+ orphanedRowAction: "nullify"
381308
+ }
381309
+ ),
381310
+ JoinColumn({ name: "runnerId" })
381311
+ ], AutoRemediationRule.prototype, "runner", 2);
381312
+ __decorateClass([
381313
+ ColumnAccessControl_default({
381314
+ create: [
381315
+ Permission_default.ProjectOwner,
381316
+ Permission_default.ProjectAdmin,
381317
+ Permission_default.CreateAutoRemediationRule
381318
+ ],
381319
+ read: [
381320
+ Permission_default.ProjectOwner,
381321
+ Permission_default.ProjectAdmin,
381322
+ Permission_default.ProjectMember,
381323
+ Permission_default.Viewer,
381324
+ Permission_default.ReadAutoRemediationRule
381325
+ ],
381326
+ update: [
381327
+ Permission_default.ProjectOwner,
381328
+ Permission_default.ProjectAdmin,
381329
+ Permission_default.EditAutoRemediationRule
381330
+ ]
381331
+ }),
381332
+ Index(),
381333
+ TableColumn_default({
381334
+ type: TableColumnType_default.ObjectID,
381335
+ required: false,
381336
+ canReadOnRelationQuery: true,
381337
+ title: "Runner ID",
381338
+ description: "ID of the Runner OneUptime AI runs this rule's Bash commands on: one of the project's own Runners. Empty means none: OneUptime AI runs no commands of its own for the rule. Commands on the affected Kubernetes cluster or host always go through its AI agent."
381339
+ }),
381340
+ Column({
381341
+ type: ColumnType_default.ObjectID,
381342
+ nullable: true,
381343
+ transformer: ObjectID.getDatabaseTransformer()
381344
+ })
381345
+ ], AutoRemediationRule.prototype, "runnerId", 2);
381346
+ __decorateClass([
381347
+ ColumnAccessControl_default({
381348
+ create: [
381349
+ Permission_default.ProjectOwner,
381350
+ Permission_default.ProjectAdmin,
381351
+ Permission_default.CreateAutoRemediationRule
381352
+ ],
381353
+ read: [
381354
+ Permission_default.ProjectOwner,
381355
+ Permission_default.ProjectAdmin,
381356
+ Permission_default.ProjectMember,
381357
+ Permission_default.Viewer,
381358
+ Permission_default.ReadAutoRemediationRule
381359
+ ],
381360
+ update: [
381361
+ Permission_default.ProjectOwner,
381362
+ Permission_default.ProjectAdmin,
381363
+ Permission_default.EditAutoRemediationRule
381364
+ ]
381365
+ }),
381366
+ TableColumn_default({
381367
+ required: false,
381368
+ type: TableColumnType_default.EntityArray,
381369
+ modelType: CodeRepository,
381370
+ title: "Code Repositories",
381371
+ description: "The code repositories OneUptime AI may read while it fixes what this rule matches, and open the rule's pull requests in. Leave empty to let it use every repository the project has connected."
381372
+ }),
381373
+ ManyToMany(
381374
+ () => {
381375
+ return CodeRepository;
381376
+ },
381377
+ { eager: false }
381378
+ ),
381379
+ JoinTable({
381380
+ name: "AutoRemediationRuleCodeRepository",
381381
+ inverseJoinColumn: {
381382
+ name: "codeRepositoryId",
381383
+ referencedColumnName: "_id"
381384
+ },
381385
+ joinColumn: {
381386
+ name: "autoRemediationRuleId",
381387
+ referencedColumnName: "_id"
381388
+ }
381389
+ })
381390
+ ], AutoRemediationRule.prototype, "codeRepositories", 2);
381391
+ __decorateClass([
381392
+ ColumnAccessControl_default({
381393
+ create: [
381394
+ Permission_default.ProjectOwner,
381395
+ Permission_default.ProjectAdmin,
381396
+ Permission_default.CreateAutoRemediationRule
381397
+ ],
381398
+ read: [
381399
+ Permission_default.ProjectOwner,
381400
+ Permission_default.ProjectAdmin,
381401
+ Permission_default.ProjectMember,
381402
+ Permission_default.Viewer,
381403
+ Permission_default.ReadAutoRemediationRule
381404
+ ],
381405
+ update: [
381406
+ Permission_default.ProjectOwner,
381407
+ Permission_default.ProjectAdmin,
381408
+ Permission_default.EditAutoRemediationRule
381409
+ ]
381410
+ }),
381411
+ TableColumn_default({
381412
+ manyToOneRelationColumn: "llmProviderId",
380684
381413
  type: TableColumnType_default.Entity,
380685
- modelType: Runner,
380686
- title: "Runner",
380687
- description: "The Runner OneUptime AI runs this rule's Bash commands on, inside your network. Empty means none: OneUptime AI runs no commands of its own for the rule. Commands on the affected Kubernetes cluster or host always go through its AI agent."
381414
+ modelType: LlmProvider,
381415
+ title: "LLM Provider",
381416
+ description: "The LLM provider OneUptime AI uses for everything this rule starts: one of the project's providers or a global one. Empty: the project's default provider, else the global one."
380688
381417
  }),
380689
381418
  ManyToOne(
380690
381419
  () => {
380691
- return Runner;
381420
+ return LlmProvider;
380692
381421
  },
380693
381422
  {
380694
381423
  eager: false,
@@ -380697,8 +381426,8 @@ __decorateClass([
380697
381426
  orphanedRowAction: "nullify"
380698
381427
  }
380699
381428
  ),
380700
- JoinColumn({ name: "runnerId" })
380701
- ], AutoRemediationRule.prototype, "runner", 2);
381429
+ JoinColumn({ name: "llmProviderId" })
381430
+ ], AutoRemediationRule.prototype, "llmProvider", 2);
380702
381431
  __decorateClass([
380703
381432
  ColumnAccessControl_default({
380704
381433
  create: [
@@ -380724,60 +381453,15 @@ __decorateClass([
380724
381453
  type: TableColumnType_default.ObjectID,
380725
381454
  required: false,
380726
381455
  canReadOnRelationQuery: true,
380727
- title: "Runner ID",
380728
- description: "ID of the Runner OneUptime AI runs this rule's Bash commands on: one of the project's own Runners. Empty means none: OneUptime AI runs no commands of its own for the rule. Commands on the affected Kubernetes cluster or host always go through its AI agent."
381456
+ title: "LLM Provider ID",
381457
+ description: "ID of the LLM provider OneUptime AI uses for everything this rule starts. Empty: the project's default provider, else the global one."
380729
381458
  }),
380730
381459
  Column({
380731
381460
  type: ColumnType_default.ObjectID,
380732
381461
  nullable: true,
380733
381462
  transformer: ObjectID.getDatabaseTransformer()
380734
381463
  })
380735
- ], AutoRemediationRule.prototype, "runnerId", 2);
380736
- __decorateClass([
380737
- ColumnAccessControl_default({
380738
- create: [
380739
- Permission_default.ProjectOwner,
380740
- Permission_default.ProjectAdmin,
380741
- Permission_default.CreateAutoRemediationRule
380742
- ],
380743
- read: [
380744
- Permission_default.ProjectOwner,
380745
- Permission_default.ProjectAdmin,
380746
- Permission_default.ProjectMember,
380747
- Permission_default.Viewer,
380748
- Permission_default.ReadAutoRemediationRule
380749
- ],
380750
- update: [
380751
- Permission_default.ProjectOwner,
380752
- Permission_default.ProjectAdmin,
380753
- Permission_default.EditAutoRemediationRule
380754
- ]
380755
- }),
380756
- TableColumn_default({
380757
- required: false,
380758
- type: TableColumnType_default.EntityArray,
380759
- modelType: CodeRepository,
380760
- title: "Code Repositories",
380761
- description: "The code repositories OneUptime AI may read while it fixes what this rule matches, and open the rule's pull requests in. Leave empty to let it use every repository the project has connected."
380762
- }),
380763
- ManyToMany(
380764
- () => {
380765
- return CodeRepository;
380766
- },
380767
- { eager: false }
380768
- ),
380769
- JoinTable({
380770
- name: "AutoRemediationRuleCodeRepository",
380771
- inverseJoinColumn: {
380772
- name: "codeRepositoryId",
380773
- referencedColumnName: "_id"
380774
- },
380775
- joinColumn: {
380776
- name: "autoRemediationRuleId",
380777
- referencedColumnName: "_id"
380778
- }
380779
- })
380780
- ], AutoRemediationRule.prototype, "codeRepositories", 2);
381464
+ ], AutoRemediationRule.prototype, "llmProviderId", 2);
380781
381465
  __decorateClass([
380782
381466
  ColumnAccessControl_default({
380783
381467
  create: [
@@ -382325,6 +383009,8 @@ var AIInvestigationRule = class extends RuleBaseModel {
382325
383009
  this.onlyIfOpenAfterMinutes = void 0;
382326
383010
  this.externalMcpServers = void 0;
382327
383011
  this.codeRepositories = void 0;
383012
+ this.llmProvider = void 0;
383013
+ this.llmProviderId = void 0;
382328
383014
  this.createdByUser = void 0;
382329
383015
  this.createdByUserId = void 0;
382330
383016
  this.deletedByUser = void 0;
@@ -382807,6 +383493,62 @@ __decorateClass([
382807
383493
  }
382808
383494
  })
382809
383495
  ], AIInvestigationRule.prototype, "codeRepositories", 2);
383496
+ __decorateClass([
383497
+ ColumnAccessControl_default({
383498
+ create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
383499
+ read: [
383500
+ Permission_default.ProjectOwner,
383501
+ Permission_default.ProjectAdmin,
383502
+ Permission_default.ProjectMember,
383503
+ Permission_default.Viewer
383504
+ ],
383505
+ update: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin]
383506
+ }),
383507
+ TableColumn_default({
383508
+ manyToOneRelationColumn: "llmProviderId",
383509
+ type: TableColumnType_default.Entity,
383510
+ modelType: LlmProvider,
383511
+ title: "LLM Provider",
383512
+ description: "The LLM provider OneUptime AI uses for everything this rule starts: one of the project's providers or a global one. Empty: the project's default provider, else the global one."
383513
+ }),
383514
+ ManyToOne(
383515
+ () => {
383516
+ return LlmProvider;
383517
+ },
383518
+ {
383519
+ eager: false,
383520
+ nullable: true,
383521
+ onDelete: "SET NULL",
383522
+ orphanedRowAction: "nullify"
383523
+ }
383524
+ ),
383525
+ JoinColumn({ name: "llmProviderId" })
383526
+ ], AIInvestigationRule.prototype, "llmProvider", 2);
383527
+ __decorateClass([
383528
+ ColumnAccessControl_default({
383529
+ create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
383530
+ read: [
383531
+ Permission_default.ProjectOwner,
383532
+ Permission_default.ProjectAdmin,
383533
+ Permission_default.ProjectMember,
383534
+ Permission_default.Viewer
383535
+ ],
383536
+ update: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin]
383537
+ }),
383538
+ Index(),
383539
+ TableColumn_default({
383540
+ type: TableColumnType_default.ObjectID,
383541
+ required: false,
383542
+ canReadOnRelationQuery: true,
383543
+ title: "LLM Provider ID",
383544
+ description: "ID of the LLM provider OneUptime AI uses for everything this rule starts. Empty: the project's default provider, else the global one."
383545
+ }),
383546
+ Column({
383547
+ type: ColumnType_default.ObjectID,
383548
+ nullable: true,
383549
+ transformer: ObjectID.getDatabaseTransformer()
383550
+ })
383551
+ ], AIInvestigationRule.prototype, "llmProviderId", 2);
382810
383552
  __decorateClass([
382811
383553
  ColumnAccessControl_default({
382812
383554
  create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
@@ -382948,6 +383690,8 @@ var AIPostmortemRule = class extends RuleBaseModel {
382948
383690
  this.titlePattern = void 0;
382949
383691
  this.descriptionPattern = void 0;
382950
383692
  this.postmortemTemplates = void 0;
383693
+ this.llmProvider = void 0;
383694
+ this.llmProviderId = void 0;
382951
383695
  this.createdByUser = void 0;
382952
383696
  this.createdByUserId = void 0;
382953
383697
  this.deletedByUser = void 0;
@@ -383336,6 +384080,62 @@ __decorateClass([
383336
384080
  }
383337
384081
  })
383338
384082
  ], AIPostmortemRule.prototype, "postmortemTemplates", 2);
384083
+ __decorateClass([
384084
+ ColumnAccessControl_default({
384085
+ create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
384086
+ read: [
384087
+ Permission_default.ProjectOwner,
384088
+ Permission_default.ProjectAdmin,
384089
+ Permission_default.ProjectMember,
384090
+ Permission_default.Viewer
384091
+ ],
384092
+ update: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin]
384093
+ }),
384094
+ TableColumn_default({
384095
+ manyToOneRelationColumn: "llmProviderId",
384096
+ type: TableColumnType_default.Entity,
384097
+ modelType: LlmProvider,
384098
+ title: "LLM Provider",
384099
+ description: "The LLM provider OneUptime AI uses for everything this rule drafts: one of the project's providers or a global one. Empty: the project's default provider, else the global one."
384100
+ }),
384101
+ ManyToOne(
384102
+ () => {
384103
+ return LlmProvider;
384104
+ },
384105
+ {
384106
+ eager: false,
384107
+ nullable: true,
384108
+ onDelete: "SET NULL",
384109
+ orphanedRowAction: "nullify"
384110
+ }
384111
+ ),
384112
+ JoinColumn({ name: "llmProviderId" })
384113
+ ], AIPostmortemRule.prototype, "llmProvider", 2);
384114
+ __decorateClass([
384115
+ ColumnAccessControl_default({
384116
+ create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
384117
+ read: [
384118
+ Permission_default.ProjectOwner,
384119
+ Permission_default.ProjectAdmin,
384120
+ Permission_default.ProjectMember,
384121
+ Permission_default.Viewer
384122
+ ],
384123
+ update: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin]
384124
+ }),
384125
+ Index(),
384126
+ TableColumn_default({
384127
+ type: TableColumnType_default.ObjectID,
384128
+ required: false,
384129
+ canReadOnRelationQuery: true,
384130
+ title: "LLM Provider ID",
384131
+ description: "ID of the LLM provider OneUptime AI uses for everything this rule drafts. Empty: the project's default provider, else the global one."
384132
+ }),
384133
+ Column({
384134
+ type: ColumnType_default.ObjectID,
384135
+ nullable: true,
384136
+ transformer: ObjectID.getDatabaseTransformer()
384137
+ })
384138
+ ], AIPostmortemRule.prototype, "llmProviderId", 2);
383339
384139
  __decorateClass([
383340
384140
  ColumnAccessControl_default({
383341
384141
  create: [Permission_default.ProjectOwner, Permission_default.ProjectAdmin],
@@ -398452,6 +399252,7 @@ var AlertOwnerRule = class extends RuleBaseModel {
398452
399252
  this.monitorDescriptionPattern = void 0;
398453
399253
  this.ownerUsers = void 0;
398454
399254
  this.ownerTeams = void 0;
399255
+ this.creatorTeams = void 0;
398455
399256
  this.inheritOwnersFromMonitors = void 0;
398456
399257
  this.inheritOwnersFromHosts = void 0;
398457
399258
  this.inheritOwnersFromKubernetesClusters = void 0;
@@ -399112,6 +399913,54 @@ __decorateClass([
399112
399913
  }
399113
399914
  })
399114
399915
  ], AlertOwnerRule.prototype, "ownerTeams", 2);
399916
+ __decorateClass([
399917
+ ColumnAccessControl_default({
399918
+ create: [
399919
+ Permission_default.ProjectOwner,
399920
+ Permission_default.ProjectAdmin,
399921
+ Permission_default.CreateAlertOwnerRule
399922
+ ],
399923
+ read: [
399924
+ Permission_default.ProjectOwner,
399925
+ Permission_default.ProjectAdmin,
399926
+ Permission_default.ProjectMember,
399927
+ Permission_default.Viewer,
399928
+ Permission_default.AlertAdmin,
399929
+ Permission_default.AlertMember,
399930
+ Permission_default.AlertViewer,
399931
+ Permission_default.ReadAlertOwnerRule
399932
+ ],
399933
+ update: [
399934
+ Permission_default.ProjectOwner,
399935
+ Permission_default.ProjectAdmin,
399936
+ Permission_default.EditAlertOwnerRule
399937
+ ]
399938
+ }),
399939
+ TableColumn_default({
399940
+ required: false,
399941
+ type: TableColumnType_default.EntityArray,
399942
+ modelType: Team,
399943
+ title: "Creator's Teams",
399944
+ description: "Teams added as owners when the person who creates a matching alert is a member of them. Alerts with no creator get none."
399945
+ }),
399946
+ ManyToMany(
399947
+ () => {
399948
+ return Team;
399949
+ },
399950
+ { eager: false }
399951
+ ),
399952
+ JoinTable({
399953
+ name: "AlertOwnerRuleCreatorTeam",
399954
+ inverseJoinColumn: {
399955
+ name: "teamId",
399956
+ referencedColumnName: "_id"
399957
+ },
399958
+ joinColumn: {
399959
+ name: "alertOwnerRuleId",
399960
+ referencedColumnName: "_id"
399961
+ }
399962
+ })
399963
+ ], AlertOwnerRule.prototype, "creatorTeams", 2);
399115
399964
  __decorateClass([
399116
399965
  ColumnAccessControl_default({
399117
399966
  create: [
@@ -409794,6 +410643,7 @@ var IncidentOwnerRule = class extends RuleBaseModel {
409794
410643
  this.monitorDescriptionPattern = void 0;
409795
410644
  this.ownerUsers = void 0;
409796
410645
  this.ownerTeams = void 0;
410646
+ this.creatorTeams = void 0;
409797
410647
  this.inheritOwnersFromMonitors = void 0;
409798
410648
  this.inheritOwnersFromHosts = void 0;
409799
410649
  this.inheritOwnersFromKubernetesClusters = void 0;
@@ -410454,6 +411304,54 @@ __decorateClass([
410454
411304
  }
410455
411305
  })
410456
411306
  ], IncidentOwnerRule.prototype, "ownerTeams", 2);
411307
+ __decorateClass([
411308
+ ColumnAccessControl_default({
411309
+ create: [
411310
+ Permission_default.ProjectOwner,
411311
+ Permission_default.ProjectAdmin,
411312
+ Permission_default.CreateIncidentOwnerRule
411313
+ ],
411314
+ read: [
411315
+ Permission_default.ProjectOwner,
411316
+ Permission_default.ProjectAdmin,
411317
+ Permission_default.ProjectMember,
411318
+ Permission_default.Viewer,
411319
+ Permission_default.IncidentAdmin,
411320
+ Permission_default.IncidentMember,
411321
+ Permission_default.IncidentViewer,
411322
+ Permission_default.ReadIncidentOwnerRule
411323
+ ],
411324
+ update: [
411325
+ Permission_default.ProjectOwner,
411326
+ Permission_default.ProjectAdmin,
411327
+ Permission_default.EditIncidentOwnerRule
411328
+ ]
411329
+ }),
411330
+ TableColumn_default({
411331
+ required: false,
411332
+ type: TableColumnType_default.EntityArray,
411333
+ modelType: Team,
411334
+ title: "Creator's Teams",
411335
+ description: "Teams added as owners when the person who declares a matching incident is a member of them. Incidents with no creator get none."
411336
+ }),
411337
+ ManyToMany(
411338
+ () => {
411339
+ return Team;
411340
+ },
411341
+ { eager: false }
411342
+ ),
411343
+ JoinTable({
411344
+ name: "IncidentOwnerRuleCreatorTeam",
411345
+ inverseJoinColumn: {
411346
+ name: "teamId",
411347
+ referencedColumnName: "_id"
411348
+ },
411349
+ joinColumn: {
411350
+ name: "incidentOwnerRuleId",
411351
+ referencedColumnName: "_id"
411352
+ }
411353
+ })
411354
+ ], IncidentOwnerRule.prototype, "creatorTeams", 2);
410457
411355
  __decorateClass([
410458
411356
  ColumnAccessControl_default({
410459
411357
  create: [