@oneuptime/cli 14.0.78 → 14.0.79

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 +644 -125
  2. package/package.json +1 -1
@@ -70564,7 +70564,7 @@ var require_commonjs4 = __commonJS({
70564
70564
  var TYPEMASK = 1023;
70565
70565
  var entToType = /* @__PURE__ */ __name((s) => s.isFile() ? IFREG : s.isDirectory() ? IFDIR : s.isSymbolicLink() ? IFLNK : s.isCharacterDevice() ? IFCHR : s.isBlockDevice() ? IFBLK : s.isSocket() ? IFSOCK : s.isFIFO() ? IFIFO : UNKNOWN, "entToType");
70566
70566
  var normalizeCache = /* @__PURE__ */ new Map();
70567
- var normalize = /* @__PURE__ */ __name((s) => {
70567
+ var normalize2 = /* @__PURE__ */ __name((s) => {
70568
70568
  const c = normalizeCache.get(s);
70569
70569
  if (c)
70570
70570
  return c;
@@ -70577,7 +70577,7 @@ var require_commonjs4 = __commonJS({
70577
70577
  const c = normalizeNocaseCache.get(s);
70578
70578
  if (c)
70579
70579
  return c;
70580
- const n = normalize(s.toLowerCase());
70580
+ const n = normalize2(s.toLowerCase());
70581
70581
  normalizeNocaseCache.set(s, n);
70582
70582
  return n;
70583
70583
  }, "normalizeNocase");
@@ -70755,7 +70755,7 @@ var require_commonjs4 = __commonJS({
70755
70755
  */
70756
70756
  constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
70757
70757
  this.name = name;
70758
- this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
70758
+ this.#matchName = nocase ? normalizeNocase(name) : normalize2(name);
70759
70759
  this.#type = type & TYPEMASK;
70760
70760
  this.nocase = nocase;
70761
70761
  this.roots = roots;
@@ -70848,7 +70848,7 @@ var require_commonjs4 = __commonJS({
70848
70848
  return this.parent || this;
70849
70849
  }
70850
70850
  const children = this.children();
70851
- const name = this.nocase ? normalizeNocase(pathPart) : normalize(pathPart);
70851
+ const name = this.nocase ? normalizeNocase(pathPart) : normalize2(pathPart);
70852
70852
  for (const p of children) {
70853
70853
  if (p.#matchName === name) {
70854
70854
  return p;
@@ -71093,7 +71093,7 @@ var require_commonjs4 = __commonJS({
71093
71093
  * directly.
71094
71094
  */
71095
71095
  isNamed(n) {
71096
- return !this.nocase ? this.#matchName === normalize(n) : this.#matchName === normalizeNocase(n);
71096
+ return !this.nocase ? this.#matchName === normalize2(n) : this.#matchName === normalizeNocase(n);
71097
71097
  }
71098
71098
  /**
71099
71099
  * Return the Path object corresponding to the target of a symbolic link.
@@ -71232,7 +71232,7 @@ var require_commonjs4 = __commonJS({
71232
71232
  #readdirMaybePromoteChild(e, c) {
71233
71233
  for (let p = c.provisional; p < c.length; p++) {
71234
71234
  const pchild = c[p];
71235
- const name = this.nocase ? normalizeNocase(e.name) : normalize(e.name);
71235
+ const name = this.nocase ? normalizeNocase(e.name) : normalize2(e.name);
71236
71236
  if (name !== pchild.#matchName) {
71237
71237
  continue;
71238
71238
  }
@@ -103206,7 +103206,7 @@ var PermissionHelper = class _PermissionHelper {
103206
103206
  {
103207
103207
  permission: "RunbookAdmin" /* RunbookAdmin */,
103208
103208
  title: "Runbook Admin",
103209
- description: "Creates, changes, runs and deletes runbooks with their rules and owners, and the Runners they run on, and manages their runs. Runbook credentials, secrets, label rules and owner rules take Project Admin.",
103209
+ description: "Creates, changes, runs and deletes runbooks with their rules and owners, and the Runners they run on, and manages their runs. Reads runbook variables to use them in steps. Runbook credentials, variables, label rules and owner rules take Project Admin to change.",
103210
103210
  isAssignableToTenant: true,
103211
103211
  isAccessControlPermission: false,
103212
103212
  isRolePermission: true,
@@ -105449,8 +105449,8 @@ var PermissionHelper = class _PermissionHelper {
105449
105449
  },
105450
105450
  {
105451
105451
  permission: "CreateRunbookSecret" /* CreateRunbookSecret */,
105452
- title: "Create Runbook Secret",
105453
- description: "This permission can create runbook secret.",
105452
+ title: "Create Runbook Variable",
105453
+ description: "This permission can create runbook variables, secret ones included.",
105454
105454
  isAssignableToTenant: true,
105455
105455
  isAccessControlPermission: false,
105456
105456
  isRolePermission: false,
@@ -105458,8 +105458,8 @@ var PermissionHelper = class _PermissionHelper {
105458
105458
  },
105459
105459
  {
105460
105460
  permission: "DeleteRunbookSecret" /* DeleteRunbookSecret */,
105461
- title: "Delete Runbook Secret",
105462
- description: "This permission can delete runbook secret.",
105461
+ title: "Delete Runbook Variable",
105462
+ description: "This permission can delete runbook variables.",
105463
105463
  isAssignableToTenant: true,
105464
105464
  isAccessControlPermission: false,
105465
105465
  isRolePermission: false,
@@ -105467,8 +105467,8 @@ var PermissionHelper = class _PermissionHelper {
105467
105467
  },
105468
105468
  {
105469
105469
  permission: "EditRunbookSecret" /* EditRunbookSecret */,
105470
- title: "Edit Runbook Secret",
105471
- description: "This permission can edit runbook secret.",
105470
+ title: "Edit Runbook Variable",
105471
+ description: "This permission can edit runbook variables and replace a secret's value.",
105472
105472
  isAssignableToTenant: true,
105473
105473
  isAccessControlPermission: false,
105474
105474
  isRolePermission: false,
@@ -105476,8 +105476,8 @@ var PermissionHelper = class _PermissionHelper {
105476
105476
  },
105477
105477
  {
105478
105478
  permission: "ReadRunbookSecret" /* ReadRunbookSecret */,
105479
- title: "Read Runbook Secret",
105480
- description: "This permission can read runbook secret.",
105479
+ title: "Read Runbook Variable",
105480
+ description: "This permission can read runbook variables. A secret's value is never returned by the API.",
105481
105481
  isAssignableToTenant: true,
105482
105482
  isAccessControlPermission: false,
105483
105483
  isRolePermission: false,
@@ -129200,15 +129200,13 @@ var MonitorTypeHelper = class {
129200
129200
  "Traces" /* Traces */,
129201
129201
  "Exceptions" /* Exceptions */,
129202
129202
  "Security Events" /* SecurityEvents */,
129203
- "AI / LLM" /* Llm */
129203
+ "AI / LLM" /* Llm */,
129204
129204
  /*
129205
- * MonitorType.Profiles is intentionally not offered here: the
129206
- * dashboard has no configuration form for the profile monitor
129207
- * step, so a Profiles monitor created from this picker would have
129208
- * no profileMonitor config and could never evaluate. Existing
129209
- * Profiles monitors keep working — the enum value, its props in
129210
- * getAllMonitorTypeProps, and worker-side evaluation all remain.
129205
+ * Alerts on continuous profiles: profiling stopping (Profile
129206
+ * Count), or a function's share of the time jumping (Function
129207
+ * Share). ProfileMonitorStepForm sets its filters.
129211
129208
  */
129209
+ "Profiles" /* Profiles */
129212
129210
  ]
129213
129211
  },
129214
129212
  {
@@ -129774,14 +129772,17 @@ var MonitorTypeHelper = class {
129774
129772
  {
129775
129773
  monitorType: "Profiles" /* Profiles */,
129776
129774
  title: "Profiles",
129777
- description: "Alert on continuous profiling data from any source.",
129775
+ description: "Alert when a function's share of CPU or memory jumps, or profiles stop arriving.",
129778
129776
  icon: IconProp_default.Fire,
129779
129777
  keywords: [
129780
129778
  "profiling",
129781
129779
  "cpu profile",
129782
129780
  "flamegraph",
129783
129781
  "pprof",
129784
- "continuous profiling"
129782
+ "continuous profiling",
129783
+ "function",
129784
+ "hotspot",
129785
+ "performance regression"
129785
129786
  ]
129786
129787
  },
129787
129788
  {
@@ -133572,8 +133573,56 @@ var MonitorStepExceptionMonitorUtil = class _MonitorStepExceptionMonitorUtil {
133572
133573
  }
133573
133574
  };
133574
133575
 
133576
+ // ../Common/Utils/Profiles/ProfileTypes.ts
133577
+ var ProfileCategory = /* @__PURE__ */ ((ProfileCategory2) => {
133578
+ ProfileCategory2["Cpu"] = "cpu";
133579
+ ProfileCategory2["Wall"] = "wall";
133580
+ ProfileCategory2["Memory"] = "memory";
133581
+ ProfileCategory2["Allocations"] = "allocations";
133582
+ ProfileCategory2["Locks"] = "locks";
133583
+ ProfileCategory2["Goroutines"] = "goroutines";
133584
+ ProfileCategory2["Other"] = "other";
133585
+ return ProfileCategory2;
133586
+ })(ProfileCategory || {});
133587
+ var CATEGORY_QUERY_TYPES = {
133588
+ ["cpu" /* Cpu */]: ["cpu", "process_cpu", "cpu_time", "samples"],
133589
+ ["wall" /* Wall */]: ["wall"],
133590
+ ["memory" /* Memory */]: ["inuse_space", "heap", "space"],
133591
+ ["allocations" /* Allocations */]: ["alloc_space", "alloc_size"],
133592
+ ["locks" /* Locks */]: [
133593
+ "delay",
133594
+ "lock_time",
133595
+ "mutex",
133596
+ "block",
133597
+ "contention"
133598
+ ],
133599
+ ["goroutines" /* Goroutines */]: ["goroutine", "goroutines"],
133600
+ ["other" /* Other */]: []
133601
+ };
133602
+ function normalize(rawType) {
133603
+ return (rawType || "").toLowerCase().trim();
133604
+ }
133605
+ __name(normalize, "normalize");
133606
+ function isProfileCategory(value) {
133607
+ return typeof value === "string" && Object.values(ProfileCategory).includes(value);
133608
+ }
133609
+ __name(isProfileCategory, "isProfileCategory");
133610
+ function getQueryProfileTypes(selection) {
133611
+ const value = normalize(selection);
133612
+ if (!value) {
133613
+ return void 0;
133614
+ }
133615
+ if (isProfileCategory(value)) {
133616
+ const types = CATEGORY_QUERY_TYPES[value];
133617
+ return types.length > 0 ? [...types] : void 0;
133618
+ }
133619
+ return [selection.trim()];
133620
+ }
133621
+ __name(getQueryProfileTypes, "getQueryProfileTypes");
133622
+
133575
133623
  // ../Common/Types/Monitor/MonitorStepProfileMonitor.ts
133576
- var MonitorStepProfileMonitorUtil = class {
133624
+ var PROFILE_MONITOR_FUNCTION_MAX_LENGTH = 500;
133625
+ var MonitorStepProfileMonitorUtil = class _MonitorStepProfileMonitorUtil {
133577
133626
  static {
133578
133627
  __name(this, "MonitorStepProfileMonitorUtil");
133579
133628
  }
@@ -133611,18 +133660,33 @@ var MonitorStepProfileMonitorUtil = class {
133611
133660
  }
133612
133661
  return query;
133613
133662
  }
133663
+ /*
133664
+ * A new Profiles monitor reads CPU time over the last five minutes: long
133665
+ * enough to hold several uploads of every profiler OneUptime knows (they
133666
+ * upload every 5 to 60 seconds), so a share does not swing with one
133667
+ * upload more or less.
133668
+ */
133614
133669
  static getDefault() {
133615
133670
  return {
133616
133671
  attributes: {},
133617
133672
  profileType: "",
133618
- profileTypes: [],
133673
+ profileTypes: [...getQueryProfileTypes("cpu" /* Cpu */) || []],
133619
133674
  telemetryServiceIds: [],
133620
133675
  entityKeys: [],
133621
- lastXSecondsOfProfiles: 60
133676
+ lastXSecondsOfProfiles: 300,
133677
+ functionName: ""
133622
133678
  };
133623
133679
  }
133680
+ /*
133681
+ * The function text, read as the monitor stores it: trimmed, and empty
133682
+ * when it is not text.
133683
+ */
133684
+ static getFunctionName(monitorStepProfileMonitor) {
133685
+ const value = monitorStepProfileMonitor?.functionName;
133686
+ return typeof value === "string" ? value.trim().substring(0, PROFILE_MONITOR_FUNCTION_MAX_LENGTH) : "";
133687
+ }
133624
133688
  static fromJSON(json) {
133625
- return {
133689
+ const monitor = {
133626
133690
  attributes: json["attributes"] || {},
133627
133691
  profileType: json["profileType"],
133628
133692
  profileTypes: json["profileTypes"],
@@ -133632,6 +133696,10 @@ var MonitorStepProfileMonitorUtil = class {
133632
133696
  entityKeys: json["entityKeys"] || [],
133633
133697
  lastXSecondsOfProfiles: json["lastXSecondsOfProfiles"]
133634
133698
  };
133699
+ if (typeof json["functionName"] === "string") {
133700
+ monitor.functionName = json["functionName"];
133701
+ }
133702
+ return monitor;
133635
133703
  }
133636
133704
  static toJSON(monitor) {
133637
133705
  return {
@@ -133640,7 +133708,8 @@ var MonitorStepProfileMonitorUtil = class {
133640
133708
  profileTypes: monitor.profileTypes,
133641
133709
  telemetryServiceIds: ObjectID.toJSONArray(monitor.telemetryServiceIds),
133642
133710
  entityKeys: monitor.entityKeys || [],
133643
- lastXSecondsOfProfiles: monitor.lastXSecondsOfProfiles
133711
+ lastXSecondsOfProfiles: monitor.lastXSecondsOfProfiles,
133712
+ functionName: _MonitorStepProfileMonitorUtil.getFunctionName(monitor)
133644
133713
  };
133645
133714
  }
133646
133715
  };
@@ -152928,7 +152997,6 @@ var Runner = class extends DatabaseBaseModel {
152928
152997
  this.lastAlive = void 0;
152929
152998
  this.connectionStatus = void 0;
152930
152999
  this.canRunRunbooks = void 0;
152931
- this.canRunCodeFixTasks = void 0;
152932
153000
  this.canRunAiCommands = void 0;
152933
153001
  this.isGlobalRunner = void 0;
152934
153002
  this.hostInfo = void 0;
@@ -153303,46 +153371,6 @@ __decorateClass([
153303
153371
  default: true
153304
153372
  })
153305
153373
  ], Runner.prototype, "canRunRunbooks", 2);
153306
- __decorateClass([
153307
- ColumnAccessControl_default({
153308
- create: [
153309
- Permission_default.ProjectOwner,
153310
- Permission_default.ProjectAdmin,
153311
- Permission_default.ProjectMember,
153312
- Permission_default.RunbookAdmin,
153313
- Permission_default.CreateRunner
153314
- ],
153315
- read: [
153316
- Permission_default.ProjectOwner,
153317
- Permission_default.ProjectAdmin,
153318
- Permission_default.ProjectMember,
153319
- Permission_default.Viewer,
153320
- Permission_default.RunbookAdmin,
153321
- Permission_default.RunbookMember,
153322
- Permission_default.RunbookViewer,
153323
- Permission_default.ReadRunner
153324
- ],
153325
- update: [
153326
- Permission_default.ProjectOwner,
153327
- Permission_default.ProjectAdmin,
153328
- Permission_default.RunbookAdmin,
153329
- Permission_default.EditRunner
153330
- ]
153331
- }),
153332
- TableColumn_default({
153333
- required: true,
153334
- type: TableColumnType_default.Boolean,
153335
- title: "Runs AI Code Fixes",
153336
- description: "Whether this Runner works in your code repository to open AI fix pull requests. Off by default; it requires a connected code repository. It cannot be turned on for an in-cluster Runner the Kubernetes agent chart registered, which runs kubectl only.",
153337
- defaultValue: false,
153338
- isDefaultValueColumn: true
153339
- }),
153340
- Column({
153341
- type: ColumnType_default.Boolean,
153342
- nullable: false,
153343
- default: false
153344
- })
153345
- ], Runner.prototype, "canRunCodeFixTasks", 2);
153346
153374
  __decorateClass([
153347
153375
  ColumnAccessControl_default({
153348
153376
  create: [
@@ -153623,7 +153651,7 @@ Runner = __decorateClass([
153623
153651
  singularName: "Runner",
153624
153652
  pluralName: "Runners",
153625
153653
  icon: IconProp_default.Terminal,
153626
- tableDescription: "A self-hosted OneUptime Runner: it executes runbook steps in your own infrastructure and, when the capability is enabled, works in your code repository to open AI fix pull requests. Runbook steps pick the Runner that should execute them."
153654
+ tableDescription: "A self-hosted OneUptime Runner: it executes runbook steps in your own infrastructure, and AI works on it in the code repositories that pick it. Runbook steps and code repositories each pick the Runner that runs them."
153627
153655
  }),
153628
153656
  TableAccessControl_default({
153629
153657
  create: [
@@ -154115,7 +154143,7 @@ __decorateClass([
154115
154143
  type: TableColumnType_default.EntityArray,
154116
154144
  modelType: Runner,
154117
154145
  title: "Runners",
154118
- description: "The Runners allowed to use this credential. A step referencing it must target one of them."
154146
+ description: "The Runners allowed to use this credential. A command that uses it must run on one of them."
154119
154147
  }),
154120
154148
  ManyToMany(
154121
154149
  () => {
@@ -154267,7 +154295,7 @@ RunbookCredential = __decorateClass([
154267
154295
  singularName: "Runbook Credential",
154268
154296
  pluralName: "Runbook Credentials",
154269
154297
  icon: IconProp_default.Key,
154270
- tableDescription: "Access to a system a runbook needs to act on \u2014 an SSH host, or a Kubernetes cluster. Secret material is encrypted at rest and can never be read back through the API; it is decrypted only when handed to an assigned Runner as it claims a step."
154298
+ tableDescription: "What OneUptime AI's commands reach through your Runners: an SSH host, or a Kubernetes cluster's API server. Secret material is encrypted at rest and can never be read back through the API; it is decrypted only when handed to an assigned Runner as it claims a command."
154271
154299
  }),
154272
154300
  Entity({
154273
154301
  name: "RunbookCredential"
@@ -283170,10 +283198,8 @@ var PatternWorkLimitError = class extends Error {
283170
283198
  static {
283171
283199
  __name(this, "PatternWorkLimitError");
283172
283200
  }
283173
- constructor() {
283174
- super(
283175
- "The pattern needed more work to find every match than this text's length allows."
283176
- );
283201
+ constructor(message = "The pattern needed more work to find every match than this text's length allows.") {
283202
+ super(message);
283177
283203
  this.name = "PatternWorkLimitError";
283178
283204
  }
283179
283205
  };
@@ -283239,6 +283265,18 @@ var ASSERT_LINE_END = 3;
283239
283265
  var ASSERT_WORD_BOUNDARY = 4;
283240
283266
  var ASSERT_NOT_WORD_BOUNDARY = 5;
283241
283267
 
283268
+ // ../Common/Utils/LinearRegExp/PatternWork.ts
283269
+ var AUTOMATON_WORK = 512;
283270
+ var AUTOMATON_WORK_PER_STEP = 2;
283271
+ var STATE_WORK = 64;
283272
+ var STATE_WORK_PER_EIGHT_MOVES = 1;
283273
+ var STATE_KEY_WORK_PER_STEP = 8;
283274
+ var stoppedOutsideAllowances = 0;
283275
+ function noteQuestionStoppedOutsideAllowance() {
283276
+ stoppedOutsideAllowances++;
283277
+ }
283278
+ __name(noteQuestionStoppedOutsideAllowance, "noteQuestionStoppedOutsideAllowance");
283279
+
283242
283280
  // ../Common/Utils/LinearRegExp/Matcher.ts
283243
283281
  function isWordCodeUnit(codeUnit) {
283244
283282
  return codeUnit >= 97 && codeUnit <= 122 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 48 && codeUnit <= 57 || codeUnit === 95;
@@ -283266,9 +283304,10 @@ __name(readsCodeUnit, "readsCodeUnit");
283266
283304
  var WORK_PER_CODE_UNIT = 128;
283267
283305
  var WORK_PER_STEP = 64;
283268
283306
  var WorkMeter = class _WorkMeter {
283269
- constructor(limit) {
283307
+ constructor(limit, allowance) {
283270
283308
  this.used = 0;
283271
283309
  this.limit = limit;
283310
+ this.allowance = allowance;
283272
283311
  }
283273
283312
  static {
283274
283313
  __name(this, "WorkMeter");
@@ -283277,18 +283316,38 @@ var WorkMeter = class _WorkMeter {
283277
283316
  * The meter for one question about a text of this length, asked of a
283278
283317
  * pattern of this many steps (CompiledPattern.totalSteps).
283279
283318
  */
283280
- static forText(length, patternSteps) {
283319
+ static forText(length, patternSteps, allowance) {
283281
283320
  return new _WorkMeter(
283282
- WORK_PER_CODE_UNIT * (length + 1) + WORK_PER_STEP * patternSteps
283321
+ WORK_PER_CODE_UNIT * (length + 1) + WORK_PER_STEP * patternSteps,
283322
+ allowance
283283
283323
  );
283284
283324
  }
283285
283325
  spend(visits) {
283286
283326
  this.used += visits;
283287
283327
  if (this.used > this.limit) {
283328
+ if (this.allowance === void 0) {
283329
+ noteQuestionStoppedOutsideAllowance();
283330
+ } else {
283331
+ this.allowance.noteStopped();
283332
+ }
283288
283333
  throw new PatternWorkLimitError();
283289
283334
  }
283335
+ if (this.allowance !== void 0) {
283336
+ this.allowance.spend(visits);
283337
+ }
283338
+ }
283339
+ /*
283340
+ * Code units a reading read, or memory a reading set up (an automaton, a
283341
+ * state): work for the shared allowance only. The question's own limit
283342
+ * counts steps visited, as it always has.
283343
+ */
283344
+ spendShared(work) {
283345
+ if (this.allowance !== void 0 && work > 0) {
283346
+ this.allowance.spend(work);
283347
+ }
283290
283348
  }
283291
283349
  };
283350
+ var READ_COUNT_INTERVAL = 65536;
283292
283351
  var BEHIND_NOTHING = 1;
283293
283352
  var BEHIND_WORD = 2;
283294
283353
  var BEHIND_LINE_TERMINATOR = 4;
@@ -283468,6 +283527,8 @@ var LazyDfa = class {
283468
283527
  this.reachedEnd = false;
283469
283528
  // The meter of the scan under way.
283470
283529
  this.meter = new WorkMeter(Infinity);
283530
+ // Whether building the automaton was counted, by the reading that built it.
283531
+ this.buildCounted = false;
283471
283532
  this.program = program2;
283472
283533
  this.forwards = forwards;
283473
283534
  this.store = store;
@@ -283500,6 +283561,12 @@ var LazyDfa = class {
283500
283561
  */
283501
283562
  scan(text, tables, meter, onMatch) {
283502
283563
  this.meter = meter;
283564
+ if (!this.buildCounted) {
283565
+ meter.spendShared(
283566
+ AUTOMATON_WORK + AUTOMATON_WORK_PER_STEP * this.program.ops.length
283567
+ );
283568
+ this.buildCounted = true;
283569
+ }
283503
283570
  if (this.isFull()) {
283504
283571
  this.forgetStates();
283505
283572
  }
@@ -283507,8 +283574,13 @@ var LazyDfa = class {
283507
283574
  const firstCodeUnits = this.program.firstCodeUnits;
283508
283575
  const idleStates = [];
283509
283576
  let position = forwards ? 0 : text.length;
283577
+ let countedTo = position;
283510
283578
  let state = this.stateFor([], BEHIND_NOTHING);
283511
283579
  for (; ; ) {
283580
+ if (Math.abs(position - countedTo) >= READ_COUNT_INTERVAL) {
283581
+ meter.spendShared(Math.abs(position - countedTo));
283582
+ countedTo = position;
283583
+ }
283512
283584
  const hasAhead = forwards ? position < text.length : position > 0;
283513
283585
  const ahead = hasAhead ? text.charCodeAt(forwards ? position : position - 1) : -1;
283514
283586
  if (hasAhead && state.pcs.length === 0 && firstCodeUnits !== null && !firstCodeUnits.has(ahead)) {
@@ -283524,6 +283596,7 @@ var LazyDfa = class {
283524
283596
  }
283525
283597
  const combination = this.combinationAt(tables, position);
283526
283598
  if (!hasAhead) {
283599
+ meter.spendShared(Math.abs(position - countedTo) + 1);
283527
283600
  if (this.endMatches(state, combination) && onMatch(position)) {
283528
283601
  return true;
283529
283602
  }
@@ -283552,24 +283625,32 @@ var LazyDfa = class {
283552
283625
  next = this.states[move >>> 1];
283553
283626
  }
283554
283627
  if ((move & 1) === 1 && onMatch(position)) {
283628
+ meter.spendShared(Math.abs(position - countedTo) + 1);
283555
283629
  return true;
283556
283630
  }
283557
283631
  state = next;
283558
283632
  position += forwards ? 1 : -1;
283559
283633
  }
283560
283634
  }
283561
- // The next position, in reading order, whose code unit ahead can start a match.
283635
+ /*
283636
+ * The next position, in reading order, whose code unit ahead can start a
283637
+ * match - or, READ_COUNT_INTERVAL code units on, the position reached, so
283638
+ * that a long stretch with no candidate is counted as it is read
283639
+ * (scan carries on from there with the idle state).
283640
+ */
283562
283641
  nextCandidate(firstCodeUnits, text, from) {
283563
283642
  let position = from;
283564
283643
  if (this.forwards) {
283644
+ const last = Math.min(text.length, from + READ_COUNT_INTERVAL);
283565
283645
  do {
283566
283646
  position++;
283567
- } while (position < text.length && !firstCodeUnits.has(text.charCodeAt(position)));
283647
+ } while (position < last && !firstCodeUnits.has(text.charCodeAt(position)));
283568
283648
  return position;
283569
283649
  }
283650
+ const first = Math.max(0, from - READ_COUNT_INTERVAL);
283570
283651
  do {
283571
283652
  position--;
283572
- } while (position > 0 && !firstCodeUnits.has(text.charCodeAt(position - 1)));
283653
+ } while (position > first && !firstCodeUnits.has(text.charCodeAt(position - 1)));
283573
283654
  return position;
283574
283655
  }
283575
283656
  behindAt(text, position) {
@@ -283738,6 +283819,7 @@ var LazyDfa = class {
283738
283819
  }
283739
283820
  const behind = this.behindAfter(ahead);
283740
283821
  this.reachedEnd = reachedEnd;
283822
+ this.meter.spendShared(foundLength + next.length);
283741
283823
  return this.keptStateFor(next, behind);
283742
283824
  }
283743
283825
  // The state of these ways: kept when it can be (see keptStateFor).
@@ -283759,6 +283841,7 @@ var LazyDfa = class {
283759
283841
  ends: null
283760
283842
  };
283761
283843
  }
283844
+ this.meter.spendShared(STATE_KEY_WORK_PER_STEP * pcs.length);
283762
283845
  pcs.sort((left, right) => {
283763
283846
  return left - right;
283764
283847
  });
@@ -283769,6 +283852,9 @@ var LazyDfa = class {
283769
283852
  }
283770
283853
  const moveCount = this.classes.count * this.combinations;
283771
283854
  const bytes = STATE_OVERHEAD_BYTES + 4 * moveCount + this.combinations + 4 * pcs.length + key.length;
283855
+ this.meter.spendShared(
283856
+ STATE_WORK + STATE_WORK_PER_EIGHT_MOVES * (moveCount >>> 3)
283857
+ );
283772
283858
  if (!this.store.reserve(this, bytes)) {
283773
283859
  return {
283774
283860
  pcs: Int32Array.from(pcs),
@@ -316633,6 +316719,8 @@ var CodeRepository = class extends DatabaseBaseModel {
316633
316719
  this.setupCommand = void 0;
316634
316720
  this.buildCommand = void 0;
316635
316721
  this.testCommand = void 0;
316722
+ this.runner = void 0;
316723
+ this.runnerId = void 0;
316636
316724
  this.maxOpenFixPullRequests = void 0;
316637
316725
  this.isGitHubCommandsEnabled = void 0;
316638
316726
  this.gitHubTriggerLabel = void 0;
@@ -317120,6 +317208,98 @@ __decorateClass([
317120
317208
  length: ColumnLength_default.LongText
317121
317209
  })
317122
317210
  ], CodeRepository.prototype, "testCommand", 2);
317211
+ __decorateClass([
317212
+ ColumnAccessControl_default({
317213
+ create: [
317214
+ Permission_default.ProjectOwner,
317215
+ Permission_default.ProjectAdmin,
317216
+ Permission_default.ProjectMember,
317217
+ Permission_default.SettingsAdmin,
317218
+ Permission_default.SettingsMember,
317219
+ Permission_default.CreateCodeRepository
317220
+ ],
317221
+ read: [
317222
+ Permission_default.ProjectOwner,
317223
+ Permission_default.ProjectAdmin,
317224
+ Permission_default.ProjectMember,
317225
+ Permission_default.Viewer,
317226
+ Permission_default.SettingsAdmin,
317227
+ Permission_default.SettingsMember,
317228
+ Permission_default.SettingsViewer,
317229
+ Permission_default.ReadCodeRepository
317230
+ ],
317231
+ update: [
317232
+ Permission_default.ProjectOwner,
317233
+ Permission_default.ProjectAdmin,
317234
+ Permission_default.ProjectMember,
317235
+ Permission_default.SettingsAdmin,
317236
+ Permission_default.SettingsMember,
317237
+ Permission_default.EditCodeRepository
317238
+ ]
317239
+ }),
317240
+ TableColumn_default({
317241
+ manyToOneRelationColumn: "runnerId",
317242
+ type: TableColumnType_default.Entity,
317243
+ modelType: Runner,
317244
+ title: "Runner",
317245
+ description: "The Runner AI works in this repository on. Empty means a global Runner, one OneUptime runs for every project."
317246
+ }),
317247
+ ManyToOne(
317248
+ () => {
317249
+ return Runner;
317250
+ },
317251
+ {
317252
+ eager: false,
317253
+ nullable: true,
317254
+ onDelete: "SET NULL",
317255
+ orphanedRowAction: "nullify"
317256
+ }
317257
+ ),
317258
+ JoinColumn({ name: "runnerId" })
317259
+ ], CodeRepository.prototype, "runner", 2);
317260
+ __decorateClass([
317261
+ ColumnAccessControl_default({
317262
+ create: [
317263
+ Permission_default.ProjectOwner,
317264
+ Permission_default.ProjectAdmin,
317265
+ Permission_default.ProjectMember,
317266
+ Permission_default.SettingsAdmin,
317267
+ Permission_default.SettingsMember,
317268
+ Permission_default.CreateCodeRepository
317269
+ ],
317270
+ read: [
317271
+ Permission_default.ProjectOwner,
317272
+ Permission_default.ProjectAdmin,
317273
+ Permission_default.ProjectMember,
317274
+ Permission_default.Viewer,
317275
+ Permission_default.SettingsAdmin,
317276
+ Permission_default.SettingsMember,
317277
+ Permission_default.SettingsViewer,
317278
+ Permission_default.ReadCodeRepository
317279
+ ],
317280
+ update: [
317281
+ Permission_default.ProjectOwner,
317282
+ Permission_default.ProjectAdmin,
317283
+ Permission_default.ProjectMember,
317284
+ Permission_default.SettingsAdmin,
317285
+ Permission_default.SettingsMember,
317286
+ Permission_default.EditCodeRepository
317287
+ ]
317288
+ }),
317289
+ Index(),
317290
+ TableColumn_default({
317291
+ type: TableColumnType_default.ObjectID,
317292
+ required: false,
317293
+ canReadOnRelationQuery: true,
317294
+ title: "Runner ID",
317295
+ description: "ID of the Runner AI works in this repository on: one of the project's own Runners. Empty means a global Runner, one OneUptime runs for every project."
317296
+ }),
317297
+ Column({
317298
+ type: ColumnType_default.ObjectID,
317299
+ nullable: true,
317300
+ transformer: ObjectID.getDatabaseTransformer()
317301
+ })
317302
+ ], CodeRepository.prototype, "runnerId", 2);
317123
317303
  __decorateClass([
317124
317304
  ColumnAccessControl_default({
317125
317305
  create: [
@@ -317644,6 +317824,14 @@ var AIAgentTaskPullRequest = class extends DatabaseBaseModel {
317644
317824
  this.ciStatusAt = void 0;
317645
317825
  this.runnerVerificationStatus = void 0;
317646
317826
  this.runnerVerificationSummary = void 0;
317827
+ this.mergeCommitSha = void 0;
317828
+ this.mergedAt = void 0;
317829
+ this.productionStatus = void 0;
317830
+ this.productionStatusAt = void 0;
317831
+ this.deployedAt = void 0;
317832
+ this.deployedVersion = void 0;
317833
+ this.deployedCommitSha = void 0;
317834
+ this.productionSummary = void 0;
317647
317835
  this.headRefName = void 0;
317648
317836
  this.baseRefName = void 0;
317649
317837
  this.repoOrganizationName = void 0;
@@ -318200,6 +318388,195 @@ __decorateClass([
318200
318388
  length: ColumnLength_default.LongText
318201
318389
  })
318202
318390
  ], AIAgentTaskPullRequest.prototype, "runnerVerificationSummary", 2);
318391
+ __decorateClass([
318392
+ ColumnAccessControl_default({
318393
+ create: [],
318394
+ read: [
318395
+ Permission_default.ProjectOwner,
318396
+ Permission_default.ProjectAdmin,
318397
+ Permission_default.ProjectMember,
318398
+ Permission_default.Viewer,
318399
+ Permission_default.ReadProjectAIAgentTask
318400
+ ],
318401
+ update: []
318402
+ }),
318403
+ TableColumn_default({
318404
+ required: false,
318405
+ type: TableColumnType_default.ShortText,
318406
+ title: "Merge Commit SHA",
318407
+ description: "The commit GitHub merged the pull request as. The fix is in production once a recorded deploy contains this commit. Written by the server when the pull request merges."
318408
+ }),
318409
+ Column({
318410
+ nullable: true,
318411
+ type: ColumnType_default.ShortText,
318412
+ length: ColumnLength_default.ShortText
318413
+ })
318414
+ ], AIAgentTaskPullRequest.prototype, "mergeCommitSha", 2);
318415
+ __decorateClass([
318416
+ ColumnAccessControl_default({
318417
+ create: [],
318418
+ read: [
318419
+ Permission_default.ProjectOwner,
318420
+ Permission_default.ProjectAdmin,
318421
+ Permission_default.ProjectMember,
318422
+ Permission_default.Viewer,
318423
+ Permission_default.ReadProjectAIAgentTask
318424
+ ],
318425
+ update: []
318426
+ }),
318427
+ TableColumn_default({
318428
+ required: false,
318429
+ type: TableColumnType_default.Date,
318430
+ title: "Merged At",
318431
+ description: "When GitHub merged the pull request. Written by the server."
318432
+ }),
318433
+ Column({
318434
+ nullable: true,
318435
+ type: ColumnType_default.Date
318436
+ })
318437
+ ], AIAgentTaskPullRequest.prototype, "mergedAt", 2);
318438
+ __decorateClass([
318439
+ ColumnAccessControl_default({
318440
+ create: [],
318441
+ read: [
318442
+ Permission_default.ProjectOwner,
318443
+ Permission_default.ProjectAdmin,
318444
+ Permission_default.ProjectMember,
318445
+ Permission_default.Viewer,
318446
+ Permission_default.ReadProjectAIAgentTask
318447
+ ],
318448
+ update: []
318449
+ }),
318450
+ TableColumn_default({
318451
+ required: false,
318452
+ type: TableColumnType_default.ShortText,
318453
+ title: "Production Status",
318454
+ description: "Whether the merged fix fixed its exception in production: AwaitingDeploy, Watching, Verified, Regressed or Unverifiable. Written by the server, which watches the exception once a recorded deploy contains the fix."
318455
+ }),
318456
+ Column({
318457
+ nullable: true,
318458
+ type: ColumnType_default.ShortText,
318459
+ length: ColumnLength_default.ShortText
318460
+ })
318461
+ ], AIAgentTaskPullRequest.prototype, "productionStatus", 2);
318462
+ __decorateClass([
318463
+ ColumnAccessControl_default({
318464
+ create: [],
318465
+ read: [
318466
+ Permission_default.ProjectOwner,
318467
+ Permission_default.ProjectAdmin,
318468
+ Permission_default.ProjectMember,
318469
+ Permission_default.Viewer,
318470
+ Permission_default.ReadProjectAIAgentTask
318471
+ ],
318472
+ update: []
318473
+ }),
318474
+ TableColumn_default({
318475
+ required: false,
318476
+ type: TableColumnType_default.Date,
318477
+ title: "Production Status At",
318478
+ description: "When the production status last changed. Written by the server."
318479
+ }),
318480
+ Column({
318481
+ nullable: true,
318482
+ type: ColumnType_default.Date
318483
+ })
318484
+ ], AIAgentTaskPullRequest.prototype, "productionStatusAt", 2);
318485
+ __decorateClass([
318486
+ ColumnAccessControl_default({
318487
+ create: [],
318488
+ read: [
318489
+ Permission_default.ProjectOwner,
318490
+ Permission_default.ProjectAdmin,
318491
+ Permission_default.ProjectMember,
318492
+ Permission_default.Viewer,
318493
+ Permission_default.ReadProjectAIAgentTask
318494
+ ],
318495
+ update: []
318496
+ }),
318497
+ TableColumn_default({
318498
+ required: false,
318499
+ type: TableColumnType_default.Date,
318500
+ title: "Deployed At",
318501
+ description: "When the first recorded deploy that contains the fix ran. Written by the server."
318502
+ }),
318503
+ Column({
318504
+ nullable: true,
318505
+ type: ColumnType_default.Date
318506
+ })
318507
+ ], AIAgentTaskPullRequest.prototype, "deployedAt", 2);
318508
+ __decorateClass([
318509
+ ColumnAccessControl_default({
318510
+ create: [],
318511
+ read: [
318512
+ Permission_default.ProjectOwner,
318513
+ Permission_default.ProjectAdmin,
318514
+ Permission_default.ProjectMember,
318515
+ Permission_default.Viewer,
318516
+ Permission_default.ReadProjectAIAgentTask
318517
+ ],
318518
+ update: []
318519
+ }),
318520
+ TableColumn_default({
318521
+ required: false,
318522
+ type: TableColumnType_default.ShortText,
318523
+ title: "Deployed Version",
318524
+ description: "The version that deploy reported, when it reported one. Written by the server."
318525
+ }),
318526
+ Column({
318527
+ nullable: true,
318528
+ type: ColumnType_default.ShortText,
318529
+ length: ColumnLength_default.ShortText
318530
+ })
318531
+ ], AIAgentTaskPullRequest.prototype, "deployedVersion", 2);
318532
+ __decorateClass([
318533
+ ColumnAccessControl_default({
318534
+ create: [],
318535
+ read: [
318536
+ Permission_default.ProjectOwner,
318537
+ Permission_default.ProjectAdmin,
318538
+ Permission_default.ProjectMember,
318539
+ Permission_default.Viewer,
318540
+ Permission_default.ReadProjectAIAgentTask
318541
+ ],
318542
+ update: []
318543
+ }),
318544
+ TableColumn_default({
318545
+ required: false,
318546
+ type: TableColumnType_default.ShortText,
318547
+ title: "Deployed Commit SHA",
318548
+ description: "The commit that deploy ran: the fix's merge commit or a later one. Written by the server."
318549
+ }),
318550
+ Column({
318551
+ nullable: true,
318552
+ type: ColumnType_default.ShortText,
318553
+ length: ColumnLength_default.ShortText
318554
+ })
318555
+ ], AIAgentTaskPullRequest.prototype, "deployedCommitSha", 2);
318556
+ __decorateClass([
318557
+ ColumnAccessControl_default({
318558
+ create: [],
318559
+ read: [
318560
+ Permission_default.ProjectOwner,
318561
+ Permission_default.ProjectAdmin,
318562
+ Permission_default.ProjectMember,
318563
+ Permission_default.Viewer,
318564
+ Permission_default.ReadProjectAIAgentTask
318565
+ ],
318566
+ update: []
318567
+ }),
318568
+ TableColumn_default({
318569
+ required: false,
318570
+ type: TableColumnType_default.LongText,
318571
+ title: "Production Summary",
318572
+ description: "What the production check found, in a sentence: the deploy that shipped the fix and how often the exception happened before and since. Written by the server."
318573
+ }),
318574
+ Column({
318575
+ nullable: true,
318576
+ type: ColumnType_default.LongText,
318577
+ length: ColumnLength_default.LongText
318578
+ })
318579
+ ], AIAgentTaskPullRequest.prototype, "productionSummary", 2);
318203
318580
  __decorateClass([
318204
318581
  ColumnAccessControl_default({
318205
318582
  create: [
@@ -371528,14 +371905,18 @@ RunnerOwnerUser = __decorateClass([
371528
371905
  )
371529
371906
  ], RunnerOwnerUser);
371530
371907
 
371531
- // ../Common/Models/DatabaseModels/RunbookSecret.ts
371532
- var RunbookSecret = class extends DatabaseBaseModel {
371908
+ // ../Common/Models/DatabaseModels/RunbookVariable.ts
371909
+ var RunbookVariable = class extends DatabaseBaseModel {
371533
371910
  constructor() {
371534
371911
  super(...arguments);
371535
371912
  this.project = void 0;
371536
371913
  this.projectId = void 0;
371914
+ this.runbook = void 0;
371915
+ this.runbookId = void 0;
371537
371916
  this.name = void 0;
371538
371917
  this.description = void 0;
371918
+ this.isSecret = void 0;
371919
+ this.value = void 0;
371539
371920
  this.secretValue = void 0;
371540
371921
  this.runners = void 0;
371541
371922
  this.isAvailableToGlobalRunners = void 0;
@@ -371545,7 +371926,7 @@ var RunbookSecret = class extends DatabaseBaseModel {
371545
371926
  this.deletedByUserId = void 0;
371546
371927
  }
371547
371928
  };
371548
- __name(RunbookSecret, "RunbookSecret");
371929
+ __name(RunbookVariable, "RunbookVariable");
371549
371930
  __decorateClass([
371550
371931
  ColumnAccessControl_default({
371551
371932
  create: [
@@ -371556,7 +371937,8 @@ __decorateClass([
371556
371937
  read: [
371557
371938
  Permission_default.ProjectOwner,
371558
371939
  Permission_default.ProjectAdmin,
371559
- Permission_default.ReadRunbookSecret
371940
+ Permission_default.ReadRunbookSecret,
371941
+ Permission_default.RunbookAdmin
371560
371942
  ],
371561
371943
  update: []
371562
371944
  }),
@@ -371580,7 +371962,7 @@ __decorateClass([
371580
371962
  }
371581
371963
  ),
371582
371964
  JoinColumn({ name: "projectId" })
371583
- ], RunbookSecret.prototype, "project", 2);
371965
+ ], RunbookVariable.prototype, "project", 2);
371584
371966
  __decorateClass([
371585
371967
  ColumnAccessControl_default({
371586
371968
  create: [
@@ -371591,7 +371973,8 @@ __decorateClass([
371591
371973
  read: [
371592
371974
  Permission_default.ProjectOwner,
371593
371975
  Permission_default.ProjectAdmin,
371594
- Permission_default.ReadRunbookSecret
371976
+ Permission_default.ReadRunbookSecret,
371977
+ Permission_default.RunbookAdmin
371595
371978
  ],
371596
371979
  update: []
371597
371980
  }),
@@ -371609,7 +371992,7 @@ __decorateClass([
371609
371992
  nullable: false,
371610
371993
  transformer: ObjectID.getDatabaseTransformer()
371611
371994
  })
371612
- ], RunbookSecret.prototype, "projectId", 2);
371995
+ ], RunbookVariable.prototype, "projectId", 2);
371613
371996
  __decorateClass([
371614
371997
  ColumnAccessControl_default({
371615
371998
  create: [
@@ -371620,7 +372003,74 @@ __decorateClass([
371620
372003
  read: [
371621
372004
  Permission_default.ProjectOwner,
371622
372005
  Permission_default.ProjectAdmin,
371623
- Permission_default.ReadRunbookSecret
372006
+ Permission_default.ReadRunbookSecret,
372007
+ Permission_default.RunbookAdmin
372008
+ ],
372009
+ update: []
372010
+ }),
372011
+ TableColumn_default({
372012
+ manyToOneRelationColumn: "runbookId",
372013
+ type: TableColumnType_default.Entity,
372014
+ modelType: Runbook,
372015
+ title: "Runbook",
372016
+ description: "The runbook this variable belongs to. Empty for a global variable, which every runbook of the project can use.",
372017
+ example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e"
372018
+ }),
372019
+ ManyToOne(
372020
+ () => {
372021
+ return Runbook;
372022
+ },
372023
+ {
372024
+ eager: false,
372025
+ nullable: true,
372026
+ onDelete: "CASCADE",
372027
+ orphanedRowAction: "nullify"
372028
+ }
372029
+ ),
372030
+ JoinColumn({ name: "runbookId" })
372031
+ ], RunbookVariable.prototype, "runbook", 2);
372032
+ __decorateClass([
372033
+ ColumnAccessControl_default({
372034
+ create: [
372035
+ Permission_default.ProjectOwner,
372036
+ Permission_default.ProjectAdmin,
372037
+ Permission_default.CreateRunbookSecret
372038
+ ],
372039
+ read: [
372040
+ Permission_default.ProjectOwner,
372041
+ Permission_default.ProjectAdmin,
372042
+ Permission_default.ReadRunbookSecret,
372043
+ Permission_default.RunbookAdmin
372044
+ ],
372045
+ update: []
372046
+ }),
372047
+ Index(),
372048
+ TableColumn_default({
372049
+ type: TableColumnType_default.ObjectID,
372050
+ required: false,
372051
+ canReadOnRelationQuery: true,
372052
+ title: "Runbook ID",
372053
+ description: "ID of the runbook this variable belongs to. Empty for a global variable, which every runbook of the project can use.",
372054
+ example: "5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e"
372055
+ }),
372056
+ Column({
372057
+ type: ColumnType_default.ObjectID,
372058
+ nullable: true,
372059
+ transformer: ObjectID.getDatabaseTransformer()
372060
+ })
372061
+ ], RunbookVariable.prototype, "runbookId", 2);
372062
+ __decorateClass([
372063
+ ColumnAccessControl_default({
372064
+ create: [
372065
+ Permission_default.ProjectOwner,
372066
+ Permission_default.ProjectAdmin,
372067
+ Permission_default.CreateRunbookSecret
372068
+ ],
372069
+ read: [
372070
+ Permission_default.ProjectOwner,
372071
+ Permission_default.ProjectAdmin,
372072
+ Permission_default.ReadRunbookSecret,
372073
+ Permission_default.RunbookAdmin
371624
372074
  ],
371625
372075
  update: [
371626
372076
  Permission_default.ProjectOwner,
@@ -371633,16 +372083,16 @@ __decorateClass([
371633
372083
  type: TableColumnType_default.ShortText,
371634
372084
  canReadOnRelationQuery: true,
371635
372085
  title: "Name",
371636
- description: "Any friendly name of this object",
371637
- example: "API_AUTH_TOKEN"
372086
+ description: "Letters, numbers, hyphens and underscores. Steps use the variable by this name: {{global.variables.NAME}} for a global variable, {{local.variables.NAME}} for one of the runbook's own.",
372087
+ example: "PROD_DB_SSH_KEY"
371638
372088
  }),
371639
372089
  Column({
371640
372090
  nullable: false,
371641
372091
  type: ColumnType_default.ShortText,
371642
372092
  length: ColumnLength_default.ShortText
371643
372093
  }),
371644
- UniqueColumnBy_default("projectId")
371645
- ], RunbookSecret.prototype, "name", 2);
372094
+ UniqueColumnBy_default(["runbookId", "projectId"])
372095
+ ], RunbookVariable.prototype, "name", 2);
371646
372096
  __decorateClass([
371647
372097
  ColumnAccessControl_default({
371648
372098
  create: [
@@ -371653,7 +372103,8 @@ __decorateClass([
371653
372103
  read: [
371654
372104
  Permission_default.ProjectOwner,
371655
372105
  Permission_default.ProjectAdmin,
371656
- Permission_default.ReadRunbookSecret
372106
+ Permission_default.ReadRunbookSecret,
372107
+ Permission_default.RunbookAdmin
371657
372108
  ],
371658
372109
  update: [
371659
372110
  Permission_default.ProjectOwner,
@@ -371666,14 +372117,77 @@ __decorateClass([
371666
372117
  type: TableColumnType_default.LongText,
371667
372118
  title: "Description",
371668
372119
  description: "Friendly description that will help you remember",
371669
- example: "API authentication token for third-party service integration"
372120
+ example: "Private key of the deploy user on the database hosts"
371670
372121
  }),
371671
372122
  Column({
371672
372123
  nullable: true,
371673
372124
  type: ColumnType_default.LongText,
371674
372125
  length: ColumnLength_default.LongText
371675
372126
  })
371676
- ], RunbookSecret.prototype, "description", 2);
372127
+ ], RunbookVariable.prototype, "description", 2);
372128
+ __decorateClass([
372129
+ ColumnAccessControl_default({
372130
+ create: [
372131
+ Permission_default.ProjectOwner,
372132
+ Permission_default.ProjectAdmin,
372133
+ Permission_default.CreateRunbookSecret
372134
+ ],
372135
+ read: [
372136
+ Permission_default.ProjectOwner,
372137
+ Permission_default.ProjectAdmin,
372138
+ Permission_default.ReadRunbookSecret,
372139
+ Permission_default.RunbookAdmin
372140
+ ],
372141
+ update: []
372142
+ }),
372143
+ TableColumn_default({
372144
+ isDefaultValueColumn: true,
372145
+ required: true,
372146
+ type: TableColumnType_default.Boolean,
372147
+ canReadOnRelationQuery: true,
372148
+ title: "Secret",
372149
+ description: "A secret is encrypted, can never be read back, and is hidden in step output. It cannot be changed later.",
372150
+ defaultValue: false,
372151
+ example: true
372152
+ }),
372153
+ Column({
372154
+ type: ColumnType_default.Boolean,
372155
+ nullable: false,
372156
+ unique: false,
372157
+ default: false
372158
+ })
372159
+ ], RunbookVariable.prototype, "isSecret", 2);
372160
+ __decorateClass([
372161
+ ColumnAccessControl_default({
372162
+ create: [
372163
+ Permission_default.ProjectOwner,
372164
+ Permission_default.ProjectAdmin,
372165
+ Permission_default.CreateRunbookSecret
372166
+ ],
372167
+ read: [
372168
+ Permission_default.ProjectOwner,
372169
+ Permission_default.ProjectAdmin,
372170
+ Permission_default.ReadRunbookSecret,
372171
+ Permission_default.RunbookAdmin
372172
+ ],
372173
+ update: [
372174
+ Permission_default.ProjectOwner,
372175
+ Permission_default.ProjectAdmin,
372176
+ Permission_default.EditRunbookSecret
372177
+ ]
372178
+ }),
372179
+ TableColumn_default({
372180
+ required: false,
372181
+ type: TableColumnType_default.VeryLongText,
372182
+ title: "Value",
372183
+ description: "The value of a variable that is not a secret. A secret's value is Secret Value.",
372184
+ example: "10.0.4.21"
372185
+ }),
372186
+ Column({
372187
+ nullable: true,
372188
+ type: ColumnType_default.VeryLongText
372189
+ })
372190
+ ], RunbookVariable.prototype, "value", 2);
371677
372191
  __decorateClass([
371678
372192
  ColumnAccessControl_default({
371679
372193
  create: [
@@ -371693,14 +372207,14 @@ __decorateClass([
371693
372207
  type: TableColumnType_default.VeryLongText,
371694
372208
  encrypted: true,
371695
372209
  title: "Secret Value",
371696
- description: "Secret value that you want to store in this object. This value will be encrypted and only accessible by the assigned runbook agent.",
371697
- example: "sk_test_1234567890abcdefghijklmnop"
372210
+ description: "The value of a secret variable. Encrypted at rest and never returned by the API.",
372211
+ example: "-----BEGIN OPENSSH PRIVATE KEY-----"
371698
372212
  }),
371699
372213
  Column({
371700
372214
  nullable: true,
371701
372215
  type: ColumnType_default.VeryLongText
371702
372216
  })
371703
- ], RunbookSecret.prototype, "secretValue", 2);
372217
+ ], RunbookVariable.prototype, "secretValue", 2);
371704
372218
  __decorateClass([
371705
372219
  ColumnAccessControl_default({
371706
372220
  create: [
@@ -371711,7 +372225,8 @@ __decorateClass([
371711
372225
  read: [
371712
372226
  Permission_default.ProjectOwner,
371713
372227
  Permission_default.ProjectAdmin,
371714
- Permission_default.ReadRunbookSecret
372228
+ Permission_default.ReadRunbookSecret,
372229
+ Permission_default.RunbookAdmin
371715
372230
  ],
371716
372231
  update: [
371717
372232
  Permission_default.ProjectOwner,
@@ -371724,7 +372239,7 @@ __decorateClass([
371724
372239
  type: TableColumnType_default.EntityArray,
371725
372240
  modelType: Runner,
371726
372241
  title: "Runners",
371727
- description: "List of runbook agents that can access this secret",
372242
+ description: "The Runners of your own that may use this secret. A step that names it must run on one of them.",
371728
372243
  example: '["5f8b9c0d-e1a2-4b3c-8d5e-6f7a8b9c0d1e"]'
371729
372244
  }),
371730
372245
  ManyToMany(
@@ -371734,17 +372249,17 @@ __decorateClass([
371734
372249
  { eager: false }
371735
372250
  ),
371736
372251
  JoinTable({
371737
- name: "RunbookSecretRunner",
372252
+ name: "RunbookVariableRunner",
371738
372253
  inverseJoinColumn: {
371739
372254
  name: "runnerId",
371740
372255
  referencedColumnName: "_id"
371741
372256
  },
371742
372257
  joinColumn: {
371743
- name: "runbookSecretId",
372258
+ name: "runbookVariableId",
371744
372259
  referencedColumnName: "_id"
371745
372260
  }
371746
372261
  })
371747
- ], RunbookSecret.prototype, "runners", 2);
372262
+ ], RunbookVariable.prototype, "runners", 2);
371748
372263
  __decorateClass([
371749
372264
  ColumnAccessControl_default({
371750
372265
  create: [
@@ -371755,7 +372270,8 @@ __decorateClass([
371755
372270
  read: [
371756
372271
  Permission_default.ProjectOwner,
371757
372272
  Permission_default.ProjectAdmin,
371758
- Permission_default.ReadRunbookSecret
372273
+ Permission_default.ReadRunbookSecret,
372274
+ Permission_default.RunbookAdmin
371759
372275
  ],
371760
372276
  update: [
371761
372277
  Permission_default.ProjectOwner,
@@ -371778,7 +372294,7 @@ __decorateClass([
371778
372294
  unique: false,
371779
372295
  default: false
371780
372296
  })
371781
- ], RunbookSecret.prototype, "isAvailableToGlobalRunners", 2);
372297
+ ], RunbookVariable.prototype, "isAvailableToGlobalRunners", 2);
371782
372298
  __decorateClass([
371783
372299
  ColumnAccessControl_default({
371784
372300
  create: [
@@ -371789,7 +372305,8 @@ __decorateClass([
371789
372305
  read: [
371790
372306
  Permission_default.ProjectOwner,
371791
372307
  Permission_default.ProjectAdmin,
371792
- Permission_default.ReadRunbookSecret
372308
+ Permission_default.ReadRunbookSecret,
372309
+ Permission_default.RunbookAdmin
371793
372310
  ],
371794
372311
  update: []
371795
372312
  }),
@@ -371813,7 +372330,7 @@ __decorateClass([
371813
372330
  }
371814
372331
  ),
371815
372332
  JoinColumn({ name: "createdByUserId" })
371816
- ], RunbookSecret.prototype, "createdByUser", 2);
372333
+ ], RunbookVariable.prototype, "createdByUser", 2);
371817
372334
  __decorateClass([
371818
372335
  ColumnAccessControl_default({
371819
372336
  create: [
@@ -371824,7 +372341,8 @@ __decorateClass([
371824
372341
  read: [
371825
372342
  Permission_default.ProjectOwner,
371826
372343
  Permission_default.ProjectAdmin,
371827
- Permission_default.ReadRunbookSecret
372344
+ Permission_default.ReadRunbookSecret,
372345
+ Permission_default.RunbookAdmin
371828
372346
  ],
371829
372347
  update: []
371830
372348
  }),
@@ -371839,7 +372357,7 @@ __decorateClass([
371839
372357
  nullable: true,
371840
372358
  transformer: ObjectID.getDatabaseTransformer()
371841
372359
  })
371842
- ], RunbookSecret.prototype, "createdByUserId", 2);
372360
+ ], RunbookVariable.prototype, "createdByUserId", 2);
371843
372361
  __decorateClass([
371844
372362
  ColumnAccessControl_default({
371845
372363
  create: [],
@@ -371871,7 +372389,7 @@ __decorateClass([
371871
372389
  }
371872
372390
  ),
371873
372391
  JoinColumn({ name: "deletedByUserId" })
371874
- ], RunbookSecret.prototype, "deletedByUser", 2);
372392
+ ], RunbookVariable.prototype, "deletedByUser", 2);
371875
372393
  __decorateClass([
371876
372394
  ColumnAccessControl_default({
371877
372395
  create: [],
@@ -371893,8 +372411,8 @@ __decorateClass([
371893
372411
  nullable: true,
371894
372412
  transformer: ObjectID.getDatabaseTransformer()
371895
372413
  })
371896
- ], RunbookSecret.prototype, "deletedByUserId", 2);
371897
- RunbookSecret = __decorateClass([
372414
+ ], RunbookVariable.prototype, "deletedByUserId", 2);
372415
+ RunbookVariable = __decorateClass([
371898
372416
  EnableDocumentation_default(),
371899
372417
  TableBillingAccessControl_default({
371900
372418
  create: "Growth" /* Growth */,
@@ -371912,7 +372430,8 @@ RunbookSecret = __decorateClass([
371912
372430
  read: [
371913
372431
  Permission_default.ProjectOwner,
371914
372432
  Permission_default.ProjectAdmin,
371915
- Permission_default.ReadRunbookSecret
372433
+ Permission_default.ReadRunbookSecret,
372434
+ Permission_default.RunbookAdmin
371916
372435
  ],
371917
372436
  delete: [
371918
372437
  Permission_default.ProjectOwner,
@@ -371931,18 +372450,18 @@ RunbookSecret = __decorateClass([
371931
372450
  update: true,
371932
372451
  read: true
371933
372452
  }),
371934
- CrudApiEndpoint_default(new Route("/runbook-secret")),
372453
+ CrudApiEndpoint_default(new Route("/runbook-variable")),
371935
372454
  TableMetadata_default({
371936
- tableName: "RunbookSecret",
371937
- singularName: "Runbook Secret",
371938
- pluralName: "Runbook Secrets",
371939
- icon: IconProp_default.Lock,
371940
- tableDescription: "Runbook Secret is a secret variable that can be used by runbook agents. For example you can store auth tokens, passwords, etc. in Runbook Secret and use them in your runbook steps. Runbook Secret is encrypted and only accessible by the assigned agent."
372455
+ tableName: "RunbookVariable",
372456
+ singularName: "Runbook Variable",
372457
+ pluralName: "Runbook Variables",
372458
+ icon: IconProp_default.Variable,
372459
+ tableDescription: "A value runbook steps use: a host, a namespace or a URL, or a secret such as an SSH key, a password, a kubeconfig or an API token. It belongs to the project, which every runbook can use, or to one runbook. A secret value is encrypted and can never be read back through the API; it reaches only the Runners it lets use it, when they take a step that names it."
371941
372460
  }),
371942
372461
  Entity({
371943
- name: "RunbookSecret"
372462
+ name: "RunbookVariable"
371944
372463
  })
371945
- ], RunbookSecret);
372464
+ ], RunbookVariable);
371946
372465
 
371947
372466
  // ../Common/Models/DatabaseModels/RunbookOwnerTeam.ts
371948
372467
  var RunbookOwnerTeam = class extends DatabaseBaseModel {
@@ -463506,7 +464025,7 @@ var AllModelTypes = [
463506
464025
  RunnerOwnerTeam,
463507
464026
  RunnerOwnerUser,
463508
464027
  RunbookCredential,
463509
- RunbookSecret,
464028
+ RunbookVariable,
463510
464029
  ProjectSSO,
463511
464030
  ProjectOIDC,
463512
464031
  GlobalSSO,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneuptime/cli",
3
- "version": "14.0.78",
3
+ "version": "14.0.79",
4
4
  "description": "OneUptime CLI - Command-line interface for managing OneUptime resources",
5
5
  "repository": {
6
6
  "type": "git",