@cloud-cli/on 1.19.0 → 1.21.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"systemd.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/systemd.driver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAM5F,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAa;IAEX,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB;IA6JxC,OAAO,CAAC,IAAI,EAAE,MAAM;CAS3B"}
1
+ {"version":3,"file":"systemd.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/systemd.driver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAM5F,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAa;IAEX,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB;IAgKxC,OAAO,CAAC,IAAI,EAAE,MAAM;CAS3B"}
@@ -0,0 +1,2 @@
1
+ export declare function runMigrations(): Promise<void>;
2
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAmBA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAcnD"}
package/dist/on.js CHANGED
@@ -8138,10 +8138,20 @@ var qo = /* @__PURE__ */ g({
8138
8138
  stringify: () => Ko,
8139
8139
  visit: () => lr,
8140
8140
  visitAsync: () => dr
8141
- });
8141
+ }), Jo = [{
8142
+ version: "001_add_workflow_enabled",
8143
+ async apply() {
8144
+ (await S.all("PRAGMA table_info(workflows)")).some((e) => e.name === "enabled") || await S.run("ALTER TABLE workflows ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1");
8145
+ }
8146
+ }];
8147
+ async function Yo() {
8148
+ await S.exec("\n CREATE TABLE IF NOT EXISTS schema_migrations (\n version TEXT PRIMARY KEY,\n applied_at DATETIME DEFAULT CURRENT_TIMESTAMP\n )\n ");
8149
+ let e = new Set((await S.all("SELECT version FROM schema_migrations")).map((e) => e.version));
8150
+ for (let t of Jo) e.has(t.version) || (await t.apply(), await S.run("INSERT INTO schema_migrations (version) VALUES (?)", [t.version]));
8151
+ }
8142
8152
  //#endregion
8143
8153
  //#region src/parser/matrix-expander.ts
8144
- function Jo(e) {
8154
+ function Xo(e) {
8145
8155
  if (!e.matrix || Object.keys(e.matrix).length === 0) return [e];
8146
8156
  let t = e.matrix;
8147
8157
  return Object.keys(t).reduce((e, n) => {
@@ -8166,24 +8176,31 @@ function Jo(e) {
8166
8176
  }, r;
8167
8177
  });
8168
8178
  }
8169
- //#endregion
8170
- //#region src/workflows.ts
8171
- function Yo(e) {
8179
+ function Zo(e) {
8172
8180
  let t = String(e || "").toLowerCase().replace(/[^a-z0-9]/g, "-").replace(/^-+|-+$/g, "");
8173
8181
  if (!t) throw Error("Workflow requires a name or id");
8174
8182
  return t;
8175
8183
  }
8176
- function Xo(e) {
8184
+ function Qo(e) {
8177
8185
  let t = qo.parse(e);
8178
8186
  if (!t || typeof t != "object" || Array.isArray(t)) throw Error("Workflow must be a YAML object");
8179
8187
  if (t.includes) throw Error("includes is not supported for database workflows");
8180
8188
  if (typeof t.name != "string" || !t.name.trim()) throw Error("Workflow name is required");
8181
8189
  if (!Array.isArray(t.steps) || !t.steps.length) throw Error("Workflow requires at least one step");
8182
8190
  if (!t.on || typeof t.on != "object") throw Error("Workflow requires an on block");
8183
- return Jo(t).map((e) => {
8191
+ return Xo(t).map((e) => {
8184
8192
  let [t, n] = Object.entries(e.on).find(([e]) => e !== "schedule" && e !== "solar") || ["generic", {}];
8193
+ if (e.retries !== void 0 && (!Number.isInteger(e.retries) || e.retries < 0)) throw Error("retries must be a non-negative integer");
8194
+ let r = e.steps.map((e) => {
8195
+ let t = e.timeoutMs ?? 3e4;
8196
+ if (!Number.isInteger(t) || t <= 0) throw Error("step.timeoutMs must be a positive integer");
8197
+ return {
8198
+ ...e,
8199
+ timeoutMs: t
8200
+ };
8201
+ });
8185
8202
  return {
8186
- id: Yo(e.id || e.name),
8203
+ id: Zo(e.id || e.name),
8187
8204
  name: e.name,
8188
8205
  on: {
8189
8206
  ...n,
@@ -8192,18 +8209,19 @@ function Xo(e) {
8192
8209
  schedule: Array.isArray(e.on.schedule) ? e.on.schedule : void 0,
8193
8210
  solar: Array.isArray(e.on.solar) ? e.on.solar : void 0,
8194
8211
  concurrency: e.concurrency,
8195
- steps: e.steps,
8212
+ steps: r,
8213
+ retries: e.retries ?? 0,
8196
8214
  env: e.env,
8197
8215
  tags: Array.isArray(e.tags) ? [...new Set(e.tags.filter((e) => typeof e == "string").map((e) => e.trim()).filter(Boolean))] : void 0
8198
8216
  };
8199
8217
  });
8200
8218
  }
8201
- var Zo = class {
8219
+ var $o = class {
8202
8220
  async init() {
8203
- await S.exec("\n CREATE TABLE IF NOT EXISTS workflows (\n id TEXT PRIMARY KEY, name TEXT NOT NULL, source_yaml TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'draft', active_revision INTEGER, enabled INTEGER NOT NULL DEFAULT 1,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\n );\n CREATE TABLE IF NOT EXISTS workflow_revisions (\n workflow_id TEXT NOT NULL, revision INTEGER NOT NULL, source_yaml TEXT NOT NULL,\n normalized_json TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (workflow_id, revision)\n );\n CREATE TABLE IF NOT EXISTS scheduled_runs (\n workflow_id TEXT NOT NULL, trigger_id TEXT NOT NULL, scheduled_for TEXT NOT NULL,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (workflow_id, trigger_id, scheduled_for)\n );\n "), (await S.all("PRAGMA table_info(workflows)")).some((e) => e.name === "enabled") || await S.run("ALTER TABLE workflows ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1");
8221
+ await S.exec("\n CREATE TABLE IF NOT EXISTS workflows (\n id TEXT PRIMARY KEY, name TEXT NOT NULL, source_yaml TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'draft', active_revision INTEGER, enabled INTEGER NOT NULL DEFAULT 1,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\n );\n CREATE TABLE IF NOT EXISTS workflow_revisions (\n workflow_id TEXT NOT NULL, revision INTEGER NOT NULL, source_yaml TEXT NOT NULL,\n normalized_json TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (workflow_id, revision)\n );\n CREATE TABLE IF NOT EXISTS scheduled_runs (\n workflow_id TEXT NOT NULL, trigger_id TEXT NOT NULL, scheduled_for TEXT NOT NULL,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (workflow_id, trigger_id, scheduled_for)\n );\n "), await Yo();
8204
8222
  }
8205
8223
  validate(e) {
8206
- let t = Xo(e);
8224
+ let t = Qo(e);
8207
8225
  for (let e of t) {
8208
8226
  for (let t of e.schedule || []) if (typeof t.cron != "string" || t.cron.trim().split(/\s+/).length !== 5) throw Error("schedule.cron must have five fields");
8209
8227
  for (let t of e.solar || []) if (!t.event || !Number.isFinite(t.latitude) || !Number.isFinite(t.longitude)) throw Error("solar triggers require event, latitude, and longitude");
@@ -8289,10 +8307,10 @@ var Zo = class {
8289
8307
  n
8290
8308
  ]);
8291
8309
  }
8292
- }, Qo = 50, $o = 500, es = class e {
8310
+ }, es = 50, ts = 500, ns = class e {
8293
8311
  server;
8294
8312
  preprocessors = /* @__PURE__ */ new Map();
8295
- workflows = new Zo();
8313
+ workflows = new $o();
8296
8314
  secretRepository = new qn();
8297
8315
  queue;
8298
8316
  secrets;
@@ -8339,8 +8357,8 @@ var Zo = class {
8339
8357
  }), t.end(Yn("editor", n));
8340
8358
  }
8341
8359
  if (e.method === "GET" && n.pathname === "/api/jobs") {
8342
- let e = n.searchParams.get("afterId"), r = n.searchParams.get("beforeId"), i = n.searchParams.get("limit"), a = e === null ? void 0 : Number(e), o = r === null ? void 0 : Number(r), s = i === null ? Qo : Number(i);
8343
- return a !== void 0 && (!Number.isSafeInteger(a) || a < 0) ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: "afterId must be a non-negative integer" }))) : o !== void 0 && (!Number.isSafeInteger(o) || o < 1) ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: "beforeId must be a positive integer" }))) : !Number.isSafeInteger(s) || s < 1 || s > $o ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: `limit must be an integer from 1 to ${$o}` }))) : this.renderDashboardJobs(t, s, a, o);
8360
+ let e = n.searchParams.get("afterId"), r = n.searchParams.get("beforeId"), i = n.searchParams.get("limit"), a = e === null ? void 0 : Number(e), o = r === null ? void 0 : Number(r), s = i === null ? es : Number(i);
8361
+ return a !== void 0 && (!Number.isSafeInteger(a) || a < 0) ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: "afterId must be a non-negative integer" }))) : o !== void 0 && (!Number.isSafeInteger(o) || o < 1) ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: "beforeId must be a positive integer" }))) : !Number.isSafeInteger(s) || s < 1 || s > ts ? (t.writeHead(400, { "Content-Type": "application/json; charset=utf-8" }), t.end(JSON.stringify({ error: `limit must be an integer from 1 to ${ts}` }))) : this.renderDashboardJobs(t, s, a, o);
8344
8362
  }
8345
8363
  if (e.method === "GET" && n.pathname === "/api/events") return this.events.subscribe(e, t);
8346
8364
  if (n.pathname === "/api/workflows/validate" && e.method === "POST") return this.handleWorkflowValidation(e, t);
@@ -8598,7 +8616,7 @@ var Zo = class {
8598
8616
  this.events.publish("jobs.changed", r ? { jobId: r } : {}), t.writeHead(202).end();
8599
8617
  }
8600
8618
  async renderDashboard(e) {
8601
- let t = await this.queue.listJobs(51), n = fe(t.slice(0, Qo)), r = await this.redactText(pe(n, t.length > Qo));
8619
+ let t = await this.queue.listJobs(51), n = fe(t.slice(0, es)), r = await this.redactText(pe(n, t.length > es));
8602
8620
  e.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }), e.end(r);
8603
8621
  }
8604
8622
  async renderDashboardJobs(e, t, n, r) {
@@ -8658,8 +8676,8 @@ var Zo = class {
8658
8676
  async redactText(e) {
8659
8677
  return this.redact(e, await this.currentSecrets());
8660
8678
  }
8661
- listen(e) {
8662
- return new Promise((t) => {
8679
+ async listen(e) {
8680
+ return await this.workflowsLoaded, new Promise((t) => {
8663
8681
  this.server.listen(e, process.env.RUNNER_HOST || "0.0.0.0", () => {
8664
8682
  console.log(`🌐 Webhook Ingress Server running on port ${e}`), t(this);
8665
8683
  });
@@ -8672,7 +8690,7 @@ var Zo = class {
8672
8690
  });
8673
8691
  });
8674
8692
  }
8675
- }, ts = class extends m {
8693
+ }, rs = class extends m {
8676
8694
  fd;
8677
8695
  pending = "";
8678
8696
  constructor(e) {
@@ -8695,7 +8713,7 @@ var Zo = class {
8695
8713
  }
8696
8714
  e.write(this.fd, t, 0, "utf8", (e) => n(e));
8697
8715
  }
8698
- }, ns = s(d), rs = class {
8716
+ }, is = s(d), as = class {
8699
8717
  name = "systemd";
8700
8718
  async isSupported() {
8701
8719
  try {
@@ -8707,7 +8725,7 @@ var Zo = class {
8707
8725
  execute(t) {
8708
8726
  let n = null, r = null, a = Date.now(), o = i.join(t.logsDir, `step-${t.step.id}.log`);
8709
8727
  try {
8710
- e.mkdirSync(t.logsDir, { recursive: !0 }), e.mkdirSync(t.workingDir, { recursive: !0 }), e.chmodSync(t.workingDir, 511), n = e.openSync(o, "a"), r = new ts(n);
8728
+ e.mkdirSync(t.logsDir, { recursive: !0 }), e.mkdirSync(t.workingDir, { recursive: !0 }), e.chmodSync(t.workingDir, 511), n = e.openSync(o, "a"), r = new rs(n);
8711
8729
  } catch (e) {
8712
8730
  return {
8713
8731
  done: Promise.resolve({
@@ -8719,7 +8737,7 @@ var Zo = class {
8719
8737
  logFilePath: ""
8720
8738
  };
8721
8739
  }
8722
- let s = `workflow-${t.jobId}-${t.step.id}`.replace(/[^a-zA-Z0-9_-]/g, "_"), c = [
8740
+ let s = `workflow-${t.jobId}-${t.step.id}-attempt-${t.attempt || 1}-${Date.now()}`.replace(/[^a-zA-Z0-9_-]/g, "_"), c = [
8723
8741
  `--unit=${s}`,
8724
8742
  "--wait",
8725
8743
  "--pipe",
@@ -8817,7 +8835,7 @@ var Zo = class {
8817
8835
  cancel: async () => {
8818
8836
  p = !0;
8819
8837
  try {
8820
- t.image && await ns(`docker stop -t 2 ${s}`).catch(() => {}), await ns(`systemctl stop ${s}.service`).catch(() => {});
8838
+ t.image && await is(`docker stop -t 2 ${s}`).catch(() => {}), await is(`systemctl stop ${s}.service`).catch(() => {});
8821
8839
  } catch {}
8822
8840
  },
8823
8841
  logFilePath: o
@@ -8827,7 +8845,7 @@ var Zo = class {
8827
8845
  let t = await p(e, "utf-8"), n = t.includes("Running as unit: ") ? t.indexOf("\n") + 1 : 0, r = t.includes("Finished with result: ") ? t.lastIndexOf("Finished with result: ") : t.length;
8828
8846
  return t.slice(n, r);
8829
8847
  }
8830
- }, is = class {
8848
+ }, os = class {
8831
8849
  name = "standard-process";
8832
8850
  async isSupported() {
8833
8851
  return !0;
@@ -8835,7 +8853,7 @@ var Zo = class {
8835
8853
  execute(t) {
8836
8854
  let n = null, r = null, a = Date.now(), o = i.join(t.logsDir, `step-${t.step.id}.log`);
8837
8855
  try {
8838
- e.mkdirSync(t.logsDir, { recursive: !0 }), e.mkdirSync(t.workingDir, { recursive: !0 }), e.chmodSync(t.workingDir, 511), n = e.openSync(o, "a"), r = new ts(n);
8856
+ e.mkdirSync(t.logsDir, { recursive: !0 }), e.mkdirSync(t.workingDir, { recursive: !0 }), e.chmodSync(t.workingDir, 511), n = e.openSync(o, "a"), r = new rs(n);
8839
8857
  } catch (e) {
8840
8858
  return {
8841
8859
  done: Promise.resolve({
@@ -8941,19 +8959,19 @@ var Zo = class {
8941
8959
  };
8942
8960
  //#endregion
8943
8961
  //#region src/drivers/index.ts
8944
- async function as() {
8945
- let e = new rs();
8946
- return await e.isSupported() ? (console.log("⚡ Selected Execution Driver: Systemd (cgroups enabled)"), e) : (console.log("📦 Selected Execution Driver: Standard Process (Fallback)"), new is());
8962
+ async function ss() {
8963
+ let e = new as();
8964
+ return await e.isSupported() ? (console.log("⚡ Selected Execution Driver: Systemd (cgroups enabled)"), e) : (console.log("📦 Selected Execution Driver: Standard Process (Fallback)"), new os());
8947
8965
  }
8948
8966
  //#endregion
8949
8967
  //#region src/signals.ts
8950
- async function os(e) {
8968
+ async function cs(e) {
8951
8969
  let t = !1;
8952
8970
  async function n(n) {
8953
8971
  if (!t) {
8954
8972
  t = !0, console.log(`\n🛑 Received ${n}. Initiating graceful shutdown...`);
8955
8973
  try {
8956
- fs(), e.length > 0 && (console.log("⚙️ Waiting for active worker jobs to drain..."), await Promise.allSettled(e)), console.log("✨ Engine stopped cleanly. Goodbye!"), process.exit(0);
8974
+ ms(), e.length > 0 && (console.log("⚙️ Waiting for active worker jobs to drain..."), await Promise.allSettled(e)), console.log("✨ Engine stopped cleanly. Goodbye!"), process.exit(0);
8957
8975
  } catch (e) {
8958
8976
  console.error("❌ Error during graceful shutdown:", e.message), process.exit(1);
8959
8977
  }
@@ -8963,7 +8981,7 @@ async function os(e) {
8963
8981
  }
8964
8982
  //#endregion
8965
8983
  //#region src/plugins/manager.ts
8966
- var ss = class {
8984
+ var ls = class {
8967
8985
  plugins;
8968
8986
  constructor(e = []) {
8969
8987
  this.plugins = e;
@@ -8985,38 +9003,38 @@ var ss = class {
8985
9003
  console.error(`[Plugin Error] ${n.name}.onWorkflowFinish:`, e);
8986
9004
  }
8987
9005
  }
8988
- }, cs = { isStopping: !1 }, ls = /* @__PURE__ */ new Set(), us = null, ds = null;
8989
- function fs() {
8990
- cs.isStopping = !0, us?.abort(), ds?.();
9006
+ }, us = { isStopping: !1 }, ds = /* @__PURE__ */ new Set(), fs = null, ps = null;
9007
+ function ms() {
9008
+ us.isStopping = !0, fs?.abort(), ps?.();
8991
9009
  }
8992
- function ps(e, t, n, r) {
8993
- cs.isStopping = !1;
8994
- let i = [ms(e, t, n, r)];
8995
- return os(i), i;
9010
+ function hs(e, t, n, r) {
9011
+ us.isStopping = !1;
9012
+ let i = [gs(e, t, n, r)];
9013
+ return cs(i), i;
8996
9014
  }
8997
- async function ms(e, t, n, r) {
8998
- let i = await as(), a = new Zo(), o = /* @__PURE__ */ new Set(), s = 0, c = null, l = () => {
9015
+ async function gs(e, t, n, r) {
9016
+ let i = await ss(), a = new $o(), o = /* @__PURE__ */ new Set(), s = 0, c = null, l = () => {
8999
9017
  s++, c?.();
9000
9018
  };
9001
- ds = l, us = new AbortController();
9002
- let u = hs(r, us.signal, l);
9003
- for (console.log(`🚀 Worker scheduler started. Driver: ${i.name}. Concurrency: ${e}. Tags: ${r.tags.join(", ") || "(none)"}`); !cs.isStopping;) {
9019
+ ps = l, fs = new AbortController();
9020
+ let u = _s(r, fs.signal, l);
9021
+ for (console.log(`🚀 Worker scheduler started. Driver: ${i.name}. Concurrency: ${e}. Tags: ${r.tags.join(", ") || "(none)"}`); !us.isStopping;) {
9004
9022
  let n = s;
9005
9023
  try {
9006
- for (; o.size < e && !cs.isStopping;) {
9024
+ for (; o.size < e && !us.isStopping;) {
9007
9025
  let e = await t.claimNextJob(r.tags);
9008
9026
  if (!e) break;
9009
- if (cs.isStopping) {
9027
+ if (us.isStopping) {
9010
9028
  await t.releaseJob(e.id);
9011
9029
  break;
9012
9030
  }
9013
9031
  let n = process.env.WORKER_NAME || "cli", s;
9014
9032
  s = (async () => {
9015
- vs(r, e.id);
9033
+ bs(r, e.id);
9016
9034
  let o = await a.getRevision(e.workflow_id, e.workflow_revision);
9017
9035
  if (!o) throw await t.finishJob(e.id, "failed"), Error(`Workflow ${e.workflow_id} revision ${e.workflow_revision} was not found`);
9018
9036
  let s = new le();
9019
- s.replace(await ys(r, n, e.id)), await bs({
9037
+ s.replace(await xs(r, n, e.id)), await Ss({
9020
9038
  workerId: n,
9021
9039
  job: e,
9022
9040
  queue: t,
@@ -9026,17 +9044,17 @@ async function ms(e, t, n, r) {
9026
9044
  workflow: o
9027
9045
  });
9028
9046
  })().catch((e) => console.error(`[${n}] ⚠️ Worker execution error:`, e)).finally(() => {
9029
- o.delete(s), vs(r, e.id), l();
9047
+ o.delete(s), bs(r, e.id), l();
9030
9048
  }), o.add(s);
9031
9049
  }
9032
9050
  } catch (e) {
9033
9051
  console.error("⚠️ Worker scheduler claim error:", e), setTimeout(l, 5e3).unref();
9034
9052
  }
9035
- !cs.isStopping && s === n && (await gs(n, () => s, (e) => c = e), c = null);
9053
+ !us.isStopping && s === n && (await vs(n, () => s, (e) => c = e), c = null);
9036
9054
  }
9037
- us.abort(), await Promise.allSettled(o), await u, ds = null, console.log("🛑 Worker scheduler stopped cleanly.");
9055
+ fs.abort(), await Promise.allSettled(o), await u, ps = null, console.log("🛑 Worker scheduler stopped cleanly.");
9038
9056
  }
9039
- async function hs(e, t, n) {
9057
+ async function _s(e, t, n) {
9040
9058
  let r = 1e3;
9041
9059
  for (; !t.aborted;) {
9042
9060
  try {
@@ -9047,10 +9065,10 @@ async function hs(e, t, n) {
9047
9065
  if (t.aborted || e?.name === "AbortError") break;
9048
9066
  console.error(`⚠️ Worker event stream disconnected: ${e.message}`);
9049
9067
  }
9050
- await _s(r, t), r = Math.min(r * 2, 3e4);
9068
+ await ys(r, t), r = Math.min(r * 2, 3e4);
9051
9069
  }
9052
9070
  }
9053
- function gs(e, t, n) {
9071
+ function vs(e, t, n) {
9054
9072
  return new Promise((r) => {
9055
9073
  if (t() !== e) return r();
9056
9074
  let i = setTimeout(r, 6e4);
@@ -9059,7 +9077,7 @@ function gs(e, t, n) {
9059
9077
  });
9060
9078
  });
9061
9079
  }
9062
- function _s(e, t) {
9080
+ function ys(e, t) {
9063
9081
  return new Promise((n) => {
9064
9082
  if (t.aborted) return n();
9065
9083
  let r = () => {
@@ -9070,7 +9088,7 @@ function _s(e, t) {
9070
9088
  t.addEventListener("abort", r, { once: !0 });
9071
9089
  });
9072
9090
  }
9073
- async function vs(e, t) {
9091
+ async function bs(e, t) {
9074
9092
  if (e.workerToken) try {
9075
9093
  let n = await fetch(new URL("/api/events", e.serverUrl), {
9076
9094
  method: "POST",
@@ -9086,7 +9104,7 @@ async function vs(e, t) {
9086
9104
  Hn("Failed to publish job status event:", e);
9087
9105
  }
9088
9106
  }
9089
- async function ys(e, t, n) {
9107
+ async function xs(e, t, n) {
9090
9108
  if (!e.workerToken) return {};
9091
9109
  try {
9092
9110
  let r = await fetch(new URL(`/api/jobs/${n}/secrets`, e.serverUrl), {
@@ -9102,7 +9120,7 @@ async function ys(e, t, n) {
9102
9120
  throw console.error(`Unable to retrieve secrets for job ${n}:`, e), e;
9103
9121
  }
9104
9122
  }
9105
- async function bs(e) {
9123
+ async function Ss(e) {
9106
9124
  let { workerId: t, job: n, config: r, secrets: a, queue: o } = e;
9107
9125
  console.log(`\n[${t}] 📦 Claimed Job #${n.id} (Workflow: ${n.workflow_id})`);
9108
9126
  let s = typeof n.payload == "string" ? JSON.parse(n.payload) : n.payload;
@@ -9122,73 +9140,80 @@ async function bs(e) {
9122
9140
  durationMs: 0,
9123
9141
  outputs: {},
9124
9142
  logContent: ""
9125
- })), g = Ds(n, "running", u, l, m.env, h, s);
9126
- await o.saveReport(n.id, g), vs(r, n.id);
9127
- let _ = new ss(r.plugins), v = {
9143
+ })), g = ks(n, "running", u, l, m.env, h, s);
9144
+ await o.saveReport(n.id, g), bs(r, n.id);
9145
+ let _ = new ls(r.plugins), v = {
9128
9146
  jobId: String(n.id),
9129
9147
  workflowName: n.workflow_id,
9130
9148
  inputs: l,
9131
9149
  runUrl: new URL(`/runs/${n.id}`, r.serverUrl).toString()
9132
9150
  };
9133
9151
  await _.triggerWorkflowStart(v);
9134
- let { cancelled: y, failed: ee } = await xs({
9152
+ let { cancelled: y, failed: ee } = await Cs({
9135
9153
  payload: s,
9136
9154
  steps: c,
9137
9155
  executionContext: m,
9138
9156
  ...e
9139
9157
  }, g), b = y ? "cancelled" : ee ? "failed" : "success";
9140
- g.status = b, g.durationMs = Date.now() - u, g.finishedAt = (/* @__PURE__ */ new Date()).toISOString(), await o.completeJob(n.id, b, g), vs(r, n.id), console.log(`[${t}] ✅ Job #${n.id} completed as: ${b}`), await _.triggerWorkflowFinish(v, b);
9158
+ g.status = b, g.durationMs = Date.now() - u, g.finishedAt = (/* @__PURE__ */ new Date()).toISOString(), await o.completeJob(n.id, b, g), bs(r, n.id), console.log(`[${t}] ✅ Job #${n.id} completed as: ${b}`), await _.triggerWorkflowFinish(v, b);
9141
9159
  }
9142
- async function xs(e, t) {
9160
+ async function Cs(e, t) {
9143
9161
  let { driver: n, workerId: r, queue: i, config: a, job: o, payload: s, steps: c, executionContext: l } = e, u = t.steps, d = !1, f = !1, p = 0;
9144
9162
  try {
9145
- e.workflow?.env && Object.assign(l.env, await ws(e.workflow.env, l));
9146
- for (let e = 0; e < c.length; e++) {
9147
- let s = c[e], m = (/* @__PURE__ */ new Date()).toISOString();
9148
- u[e] = {
9149
- ...u[e],
9163
+ e.workflow?.env && Object.assign(l.env, await Es(e.workflow.env, l));
9164
+ for (let s = 0; s < c.length; s++) {
9165
+ let m = c[s], h = (/* @__PURE__ */ new Date()).toISOString();
9166
+ u[s] = {
9167
+ ...u[s],
9150
9168
  status: "running",
9151
9169
  durationMs: 0,
9152
9170
  exitCode: void 0,
9153
9171
  error: void 0,
9154
9172
  outputs: {},
9155
9173
  logContent: "",
9156
- startedAt: m,
9174
+ startedAt: h,
9157
9175
  finishedAt: void 0
9158
- }, t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), vs(a, o.id);
9159
- let h = await Ss({
9176
+ }, t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), bs(a, o.id);
9177
+ let g = {
9178
+ failed: !0,
9179
+ skipped: !1,
9180
+ cancelled: !1,
9181
+ report: null
9182
+ }, _ = e.workflow?.retries ?? 0;
9183
+ for (let e = 1; e <= _ + 1 && (g = await ws({
9160
9184
  workerId: r,
9161
9185
  jobId: o.id,
9162
- step: s,
9163
- stepIndex: e,
9186
+ step: m,
9187
+ stepIndex: s,
9188
+ attempt: e,
9164
9189
  executionContext: l,
9165
9190
  driver: n,
9166
9191
  queue: i,
9167
9192
  config: a
9168
- });
9169
- if (h.report ? u[e] = {
9170
- ...h.report,
9171
- startedAt: m,
9193
+ }), !(!g.failed || g.cancelled || e > _)); e++) console.log(`[${r}] 🔁 Retrying step [${m.id}] (${e}/${_ + 1})`);
9194
+ if (g.report ? u[s] = {
9195
+ ...g.report,
9196
+ startedAt: h,
9172
9197
  finishedAt: (/* @__PURE__ */ new Date()).toISOString()
9173
- } : h.skipped ? u[e] = {
9174
- ...u[e],
9198
+ } : g.skipped ? u[s] = {
9199
+ ...u[s],
9175
9200
  status: "skipped",
9176
9201
  durationMs: 0,
9177
9202
  exitCode: 0,
9178
9203
  finishedAt: (/* @__PURE__ */ new Date()).toISOString()
9179
- } : u[e] = {
9180
- ...u[e],
9204
+ } : u[s] = {
9205
+ ...u[s],
9181
9206
  status: "failed",
9182
9207
  durationMs: 0,
9183
9208
  exitCode: 1,
9184
9209
  error: "Step failed before execution started",
9185
9210
  finishedAt: (/* @__PURE__ */ new Date()).toISOString()
9186
- }, p = e + 1, t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), vs(a, o.id), h.skipped) break;
9187
- if (h.cancelled) {
9211
+ }, p = s + 1, t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), bs(a, o.id), g.skipped) break;
9212
+ if (g.cancelled) {
9188
9213
  f = !0, d = !0;
9189
9214
  break;
9190
9215
  }
9191
- if (h.failed) {
9216
+ if (g.failed) {
9192
9217
  d = !0;
9193
9218
  break;
9194
9219
  }
@@ -9196,13 +9221,13 @@ async function xs(e, t) {
9196
9221
  } catch (e) {
9197
9222
  console.log("🛑 Step failed", e), d = !0;
9198
9223
  }
9199
- return p < c.length && (Es(c, p, u), t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), vs(a, o.id)), {
9224
+ return p < c.length && (Os(c, p, u), t.durationMs = Date.now() - Date.parse(t.startedAt), await i.saveReport(o.id, t), bs(a, o.id)), {
9200
9225
  failed: d,
9201
9226
  cancelled: f,
9202
9227
  stepReports: u
9203
9228
  };
9204
9229
  }
9205
- async function Ss(e) {
9230
+ async function ws(e) {
9206
9231
  let { step: t, stepIndex: n, executionContext: r } = e;
9207
9232
  if (t.id ||= `step-${n}`, t.name ||= t.id, t.if && !await Gn.evaluateConditions(t.if, r)) return Hn(`⏩ Skipped step ${t.id} based on condition: ${t.if}`, r), {
9208
9233
  failed: !1,
@@ -9211,11 +9236,12 @@ async function Ss(e) {
9211
9236
  report: null
9212
9237
  };
9213
9238
  try {
9214
- let n = await ws(t.env, r), i = {
9239
+ let n = await Es(t.env, r), i = {
9215
9240
  jobId: String(e.jobId),
9216
9241
  step: t,
9217
9242
  command: t.run,
9218
- timeoutMs: t.timeoutMs,
9243
+ timeoutMs: t.timeoutMs ?? 3e4,
9244
+ attempt: e.attempt,
9219
9245
  image: t.image,
9220
9246
  workingDir: r.workingDir,
9221
9247
  logsDir: r.logsDir,
@@ -9225,10 +9251,10 @@ async function Ss(e) {
9225
9251
  WORKING_DIR: r.workingDir
9226
9252
  }
9227
9253
  };
9228
- return t.eval ? Cs({
9254
+ return t.eval ? Ts({
9229
9255
  ...e,
9230
9256
  stepContext: i
9231
- }) : Ts({
9257
+ }) : Ds({
9232
9258
  ...e,
9233
9259
  stepContext: i
9234
9260
  });
@@ -9241,17 +9267,19 @@ async function Ss(e) {
9241
9267
  };
9242
9268
  }
9243
9269
  }
9244
- async function Cs(e) {
9245
- let { queue: t, stepContext: n, executionContext: r } = e, { jobId: i, step: a } = n, o = Date.now(), s = a.id, c = a.name;
9270
+ async function Ts(e) {
9271
+ let { queue: t, stepContext: n, executionContext: r } = e, { jobId: i, step: a } = n, o = Date.now(), s = a.id, c = a.name, l;
9246
9272
  try {
9247
- let e = await Gn.evaluateExpression(a.eval, r);
9273
+ let e = new Promise((e, t) => {
9274
+ l = setTimeout(() => t(/* @__PURE__ */ Error(`Step timed out after ${n.timeoutMs}ms`)), n.timeoutMs), l.unref();
9275
+ }), u = await Promise.race([Gn.evaluateExpression(a.eval, r), e]);
9248
9276
  r.steps[s] = {
9249
9277
  status: "success",
9250
9278
  exitCode: 0,
9251
- outputs: e ?? {}
9279
+ outputs: u ?? {}
9252
9280
  };
9253
- let n = typeof e == "object" ? JSON.stringify(e, null, 2) : String(e ?? "OK");
9254
- return await t.saveStepLog(i, s, `[JS EVAL OUTPUT]:\n${n}`), console.log(`[${s}] ✅ JS Eval step complete.`), {
9281
+ let d = typeof u == "object" ? JSON.stringify(u, null, 2) : String(u ?? "OK");
9282
+ return await t.saveStepLog(i, s, `[JS EVAL OUTPUT]:\n${d}`), console.log(`[${s}] ✅ JS Eval step complete.`), {
9255
9283
  failed: !1,
9256
9284
  cancelled: !1,
9257
9285
  skipped: !1,
@@ -9285,14 +9313,16 @@ async function Cs(e) {
9285
9313
  logContent: ""
9286
9314
  }
9287
9315
  };
9316
+ } finally {
9317
+ l && clearTimeout(l);
9288
9318
  }
9289
9319
  }
9290
- async function ws(e, t) {
9320
+ async function Es(e, t) {
9291
9321
  let n = {};
9292
9322
  if (e) for (let [r, i] of Object.entries(e)) n[r] = String(await Gn.evaluateValue(i, t));
9293
9323
  return n;
9294
9324
  }
9295
- async function Ts(t) {
9325
+ async function Ds(t) {
9296
9326
  let { workerId: n, jobId: r, stepContext: i, executionContext: a, driver: o, queue: s } = t, { step: c } = i, l = c.id, u = c.name, d;
9297
9327
  try {
9298
9328
  d = o.execute(i);
@@ -9307,11 +9337,11 @@ async function Ts(t) {
9307
9337
  logFilePath: ""
9308
9338
  };
9309
9339
  }
9310
- ls.add(d);
9340
+ ds.add(d);
9311
9341
  let f = !1, p = setInterval(async () => {
9312
9342
  await s.isCancelled(r) && (console.log(`[${n}] 🛑 Job #${r} was cancelled! Halting execution.`), f = !0, clearInterval(p), await d.cancel());
9313
9343
  }, 3e3), m = await d.done;
9314
- if (clearInterval(p), ls.delete(d), d.logFilePath && e.existsSync(d.logFilePath)) try {
9344
+ if (clearInterval(p), ds.delete(d), d.logFilePath && e.existsSync(d.logFilePath)) try {
9315
9345
  let e = await o.readLog(d.logFilePath);
9316
9346
  await s.saveStepLog(r, l, e);
9317
9347
  } catch (e) {
@@ -9338,7 +9368,7 @@ async function Ts(t) {
9338
9368
  }
9339
9369
  };
9340
9370
  }
9341
- function Es(e, t, n) {
9371
+ function Os(e, t, n) {
9342
9372
  for (let r = t; r < e.length; r++) {
9343
9373
  let t = e[r], i = t.id || `step-${r}`;
9344
9374
  n[r] = {
@@ -9352,7 +9382,7 @@ function Es(e, t, n) {
9352
9382
  };
9353
9383
  }
9354
9384
  }
9355
- function Ds(e, t, n, r, i, a, o) {
9385
+ function ks(e, t, n, r, i, a, o) {
9356
9386
  return {
9357
9387
  jobId: String(e.id),
9358
9388
  parentId: String(e.parentId || ""),
@@ -9373,7 +9403,7 @@ function Ds(e, t, n, r, i, a, o) {
9373
9403
  }
9374
9404
  //#endregion
9375
9405
  //#region src/scheduler.ts
9376
- function Os(e, t, n, r) {
9406
+ function As(e, t, n, r) {
9377
9407
  return e.split(",").some((e) => {
9378
9408
  let [i, a] = e.split("/"), o = a ? Number(a) : 1;
9379
9409
  if (!Number.isInteger(o) || o < 1) return !1;
@@ -9381,7 +9411,7 @@ function Os(e, t, n, r) {
9381
9411
  return Number.isInteger(l) && Number.isInteger(u) && t >= l && t <= u && (t - l) % o === 0;
9382
9412
  });
9383
9413
  }
9384
- function ks(e, t, n = "UTC") {
9414
+ function js(e, t, n = "UTC") {
9385
9415
  let r = e.trim().split(/\s+/);
9386
9416
  if (r.length !== 5) return !1;
9387
9417
  let i = new Intl.DateTimeFormat("en-US", {
@@ -9403,16 +9433,16 @@ function ks(e, t, n = "UTC") {
9403
9433
  "Thu",
9404
9434
  "Fri",
9405
9435
  "Sat"
9406
- ].indexOf(i.weekday), o = Os(r[2], Number(i.day), 1, 31), s = Os(r[4].replace(/7/g, "0"), a, 0, 6);
9407
- return Os(r[0], Number(i.minute), 0, 59) && Os(r[1], Number(i.hour), 0, 23) && Os(r[3], Number(i.month), 1, 12) && (r[2] === "*" || r[4] === "*" ? o && s : o || s);
9436
+ ].indexOf(i.weekday), o = As(r[2], Number(i.day), 1, 31), s = As(r[4].replace(/7/g, "0"), a, 0, 6);
9437
+ return As(r[0], Number(i.minute), 0, 59) && As(r[1], Number(i.hour), 0, 23) && As(r[3], Number(i.month), 1, 12) && (r[2] === "*" || r[4] === "*" ? o && s : o || s);
9408
9438
  }
9409
- function As(e) {
9439
+ function Ms(e) {
9410
9440
  if (!e) return 0;
9411
9441
  let t = e.match(/^([+-]?)(\d+)(m|h)$/);
9412
9442
  if (!t) throw Error(`Invalid solar offset: ${e}`);
9413
9443
  return (t[1] === "-" ? -1 : 1) * Number(t[2]) * (t[3] === "h" ? 36e5 : 6e4);
9414
9444
  }
9415
- function js(e, t) {
9445
+ function Ns(e, t) {
9416
9446
  let n = t.latitude, r = t.longitude, i = Date.UTC(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()), a = Math.floor((i - Date.UTC(e.getUTCFullYear(), 0, 0)) / 864e5), o = r / 15, s = a + ((t.event === "sunrise" ? 6 : 18) - o) / 24, c = .9856 * s - 3.289, l = c + 1.916 * Math.sin(c * Math.PI / 180) + .02 * Math.sin(2 * c * Math.PI / 180) + 282.634;
9417
9447
  l = (l + 360) % 360;
9418
9448
  let u = Math.atan(.91764 * Math.tan(l * Math.PI / 180)) * 180 / Math.PI;
@@ -9420,9 +9450,9 @@ function js(e, t) {
9420
9450
  let d = .39782 * Math.sin(l * Math.PI / 180), f = Math.cos(Math.asin(d)), p = (Math.cos(90.833 * Math.PI / 180) - d * Math.sin(n * Math.PI / 180)) / (f * Math.cos(n * Math.PI / 180));
9421
9451
  if (p > 1 || p < -1) return null;
9422
9452
  let m = (t.event === "sunrise" ? 360 - Math.acos(p) * 180 / Math.PI : Math.acos(p) * 180 / Math.PI) / 15;
9423
- return m = (m + u - .06571 * s - 6.622 - o + 24) % 24, new Date(i + m * 36e5 + As(t.offset));
9453
+ return m = (m + u - .06571 * s - 6.622 - o + 24) % 24, new Date(i + m * 36e5 + Ms(t.offset));
9424
9454
  }
9425
- var Ms = class {
9455
+ var Ps = class {
9426
9456
  queue;
9427
9457
  workflows;
9428
9458
  config;
@@ -9439,9 +9469,9 @@ var Ms = class {
9439
9469
  async tick(e = /* @__PURE__ */ new Date()) {
9440
9470
  let t = /* @__PURE__ */ new Date(Math.floor(e.getTime() / 6e4) * 6e4);
9441
9471
  for (let { definition: e, revision: n } of await this.workflows.published()) {
9442
- for (let [r, i] of (e.schedule || []).entries()) ks(i.cron, t, i.timezone || "UTC") && await this.enqueue(e, n, i, `cron-${r}`, t);
9472
+ for (let [r, i] of (e.schedule || []).entries()) js(i.cron, t, i.timezone || "UTC") && await this.enqueue(e, n, i, `cron-${r}`, t);
9443
9473
  for (let [r, i] of (e.solar || []).entries()) {
9444
- let a = js(t, i);
9474
+ let a = Ns(t, i);
9445
9475
  a && Math.floor(a.getTime() / 6e4) === t.getTime() / 6e4 && await this.enqueue(e, n, i, `solar-${r}`, t);
9446
9476
  }
9447
9477
  }
@@ -9457,7 +9487,7 @@ var Ms = class {
9457
9487
  } } };
9458
9488
  await this.queue.enqueue(e.id, t, o, e.tags), console.log(`Scheduled ${e.id} via ${a}`);
9459
9489
  }
9460
- }, Ns = class {
9490
+ }, Fs = class {
9461
9491
  name = "github-commit-status";
9462
9492
  token;
9463
9493
  apiUrl;
@@ -9499,13 +9529,13 @@ var Ms = class {
9499
9529
  };
9500
9530
  //#endregion
9501
9531
  //#region src/index.ts
9502
- async function Ps() {
9532
+ async function Is() {
9503
9533
  let { config: e, command: t } = await se();
9504
9534
  e || process.exit(1);
9505
9535
  let n = new le(), r = new ce(process.env.WORKER_NAME || "cli");
9506
9536
  switch (t) {
9507
9537
  case "start-server":
9508
- console.log("🌐 Starting Ingress Gateway..."), await r.init(), await es.withPort({
9538
+ console.log("🌐 Starting Ingress Gateway..."), await r.init(), await ns.withPort({
9509
9539
  config: e,
9510
9540
  queue: r,
9511
9541
  secrets: n,
@@ -9514,13 +9544,13 @@ async function Ps() {
9514
9544
  });
9515
9545
  break;
9516
9546
  case "start-workers":
9517
- console.log(`⚙️ Starting worker scheduler with ${e.workers} concurrent slot(s)...`), await r.init(), ps(e.workers, r, n, e);
9547
+ console.log(`⚙️ Starting worker scheduler with ${e.workers} concurrent slot(s)...`), await r.init(), hs(e.workers, r, n, e);
9518
9548
  break;
9519
9549
  case "start-scheduler": {
9520
9550
  console.log("Starting workflow scheduler..."), await r.init();
9521
- let t = new Zo();
9551
+ let t = new $o();
9522
9552
  await t.init();
9523
- let n = new Ms(r, t, e);
9553
+ let n = new Ps(r, t, e);
9524
9554
  n.start();
9525
9555
  let i = () => {
9526
9556
  n.stop(), process.exit(0);
@@ -9531,6 +9561,6 @@ async function Ps() {
9531
9561
  default: console.error(`❌ Unknown command: '${t}'`), oe(), process.exit(1);
9532
9562
  }
9533
9563
  }
9534
- Ps().catch(console.error);
9564
+ Is().catch(console.error);
9535
9565
  //#endregion
9536
- export { Ns as GitHubStatusPlugin };
9566
+ export { Fs as GitHubStatusPlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAc,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOxF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAgB;WAE1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;gBAK1D,OAAO,EAAE,oBAAoB;IAYzC,oBAAoB,CAAC,YAAY,EAAE,mBAAmB;YAIxC,aAAa;IA8H3B;;OAEG;YACW,aAAa;YA0Bb,WAAW;YAwBX,UAAU;YAyBV,cAAc;IAuC5B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,YAAY;YAUN,QAAQ;YAYR,wBAAwB;YAcxB,kBAAkB;YAOlB,iBAAiB;YAWjB,kBAAkB;YAoBlB,oBAAoB;YASpB,qBAAqB;YAWrB,gBAAgB;YAMhB,gBAAgB;YAiBhB,kBAAkB;YASlB,gBAAgB;IAc9B;;OAEG;YACW,kBAAkB;YAclB,iBAAiB;IAuB/B;;OAEG;YACW,eAAe;YAQf,mBAAmB;IAWjC;;OAEG;YACW,gBAAgB;YAuBhB,gBAAgB;YAehB,eAAe;YAkBf,cAAc;IAS5B,OAAO,CAAC,MAAM;YAMA,UAAU;IAIxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAStC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAc,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOxF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,eAAe,CAAgB;WAE1B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;gBAK1D,OAAO,EAAE,oBAAoB;IAYzC,oBAAoB,CAAC,YAAY,EAAE,mBAAmB;YAIxC,aAAa;IA8H3B;;OAEG;YACW,aAAa;YA0Bb,WAAW;YAwBX,UAAU;YAyBV,cAAc;IAuC5B,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,YAAY;YAUN,QAAQ;YAYR,wBAAwB;YAcxB,kBAAkB;YAOlB,iBAAiB;YAWjB,kBAAkB;YAoBlB,oBAAoB;YASpB,qBAAqB;YAWrB,gBAAgB;YAMhB,gBAAgB;YAiBhB,kBAAkB;YASlB,gBAAgB;IAc9B;;OAEG;YACW,kBAAkB;YAclB,iBAAiB;IAuB/B;;OAEG;YACW,eAAe;YAQf,mBAAmB;IAWjC;;OAEG;YACW,gBAAgB;YAuBhB,gBAAgB;YAehB,eAAe;YAkBf,cAAc;IAS5B,OAAO,CAAC,MAAM;YAMA,UAAU;IAIlB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAU5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
package/dist/types.d.ts CHANGED
@@ -32,6 +32,7 @@ export interface StepContext {
32
32
  env?: Record<string, string>;
33
33
  image?: string;
34
34
  timeoutMs?: number;
35
+ attempt?: number;
35
36
  }
36
37
  export interface StepResult {
37
38
  exitCode: number;
@@ -105,6 +106,8 @@ export interface WorkflowDefinition {
105
106
  group: string;
106
107
  cancelInProgress?: boolean;
107
108
  };
109
+ /** Number of additional attempts for a failed step. */
110
+ retries?: number;
108
111
  steps: WorkflowStep[];
109
112
  env?: Record<string, string>;
110
113
  /** Worker capabilities required to execute this workflow */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { WorkflowDefinition, WorkflowRevision } from './types.js';
2
+ export declare const DEFAULT_STEP_TIMEOUT_MS = 30000;
2
3
  export interface StoredWorkflow {
3
4
  id: string;
4
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAuBtE;AAED,qBAAa,kBAAkB;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAa5C,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAWlF,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IASnD,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKjC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpC,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAMxC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKrF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAKvG"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAiCtE;AAED,qBAAa,kBAAkB;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAa5C,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAWlF,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IASnD,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKjC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpC,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAMxC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKrF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAKvG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-cli/on",
3
- "version": "1.19.0",
3
+ "version": "1.21.0",
4
4
  "description": "CLI entry point for the on plugin ecosystem.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.30.3",