@cloud-cli/on 1.5.6 ā 1.5.7
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.
- package/dist/drivers/standard-process.driver.d.ts +1 -1
- package/dist/drivers/standard-process.driver.d.ts.map +1 -1
- package/dist/drivers/systemd.driver.d.ts +1 -1
- package/dist/drivers/systemd.driver.d.ts.map +1 -1
- package/dist/on.js +135 -97
- package/dist/server.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { ExecutionDriver, StepContext, StepExecutionHandle } from '../types.js';
|
|
|
2
2
|
export declare class StandardProcessDriver implements ExecutionDriver {
|
|
3
3
|
name: string;
|
|
4
4
|
isSupported(): Promise<boolean>;
|
|
5
|
-
execute(ctx: StepContext):
|
|
5
|
+
execute(ctx: StepContext): StepExecutionHandle;
|
|
6
6
|
/**
|
|
7
7
|
* Kills the entire process group tree (-PID) with unref escalation
|
|
8
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-process.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/standard-process.driver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAE5F,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,IAAI,SAAsB;IAEpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"standard-process.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/standard-process.driver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAc,MAAM,aAAa,CAAC;AAE5F,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,IAAI,SAAsB;IAEpB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB;IAoI9C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBlB,OAAO,CAAC,IAAI,EAAE,MAAM;CAG3B"}
|
|
@@ -2,7 +2,7 @@ import { ExecutionDriver, StepContext, StepExecutionHandle } from '../types.js';
|
|
|
2
2
|
export declare class SystemdDriver implements ExecutionDriver {
|
|
3
3
|
name: string;
|
|
4
4
|
isSupported(): Promise<boolean>;
|
|
5
|
-
execute(ctx: StepContext):
|
|
5
|
+
execute(ctx: StepContext): StepExecutionHandle;
|
|
6
6
|
readLog(file: string): Promise<string>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=systemd.driver.d.ts.map
|
|
@@ -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;AAI5F,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAa;IAEX,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;
|
|
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;AAI5F,qBAAa,aAAc,YAAW,eAAe;IACnD,IAAI,SAAa;IAEX,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQrC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,mBAAmB;IAsJxC,OAAO,CAAC,IAAI,EAAE,MAAM;CAS3B"}
|
package/dist/on.js
CHANGED
|
@@ -3811,7 +3811,7 @@ var bn, xn, Sn, Cn = class {
|
|
|
3811
3811
|
e.writeFileSync(r, n, "utf-8"), console.log(`š HTML Execution Report generated: ${r}`);
|
|
3812
3812
|
}
|
|
3813
3813
|
generateHtml(e) {
|
|
3814
|
-
let t = e.status === "success" ? "bg-emerald-500/10 text-emerald-400 border-emerald-500/20" : e.status === "failed" ? "bg-rose-500/10 text-rose-400 border-rose-500/20" : "bg-amber-500/10 text-amber-400 border-amber-500/20", n = e.steps.map((e, t) => {
|
|
3814
|
+
let t = e.status === "success" ? "bg-emerald-500/10 text-emerald-400 border-emerald-500/20" : e.status === "failed" ? "bg-rose-500/10 text-rose-400 border-rose-500/20" : "bg-amber-500/10 text-amber-400 border-amber-500/20", n = (e.steps ?? []).map((e, t) => {
|
|
3815
3815
|
let n = e.logContent, r = n ? this.ansiUp.ansi_to_html(n) : "<span class=\"text-gray-500\">(No terminal log output recorded for this step)</span>", i = e.status === "success" ? "text-emerald-400 bg-emerald-500/10" : e.status === "failed" ? "text-rose-400 bg-rose-500/10" : "text-gray-400 bg-gray-500/10";
|
|
3816
3816
|
return `<details class="border border-b-0 border-gray-800 bg-gray-900/50 text-sm">
|
|
3817
3817
|
<summary class="flex items-center justify-between p-2 bg-gray-800/40 border-b border-gray-800 cursor-pointer">
|
|
@@ -8349,14 +8349,19 @@ var To = class e {
|
|
|
8349
8349
|
this.secrets.reload(), console.log("š SecretStore reloaded successfully without downtime!"), t.writeHead(200, { "Content-Type": "application/json" }), t.end(JSON.stringify({ message: "Secrets reloaded successfully" }));
|
|
8350
8350
|
}
|
|
8351
8351
|
async renderDashboard(e) {
|
|
8352
|
-
let t =
|
|
8353
|
-
|
|
8352
|
+
let t = await this.queue.listJobs(500), n = {
|
|
8353
|
+
success: "bg-emerald-500/10 text-emerald-400",
|
|
8354
|
+
failed: "bg-rose-500/10 text-rose-400",
|
|
8355
|
+
running: "bg-indigo-500/10 text-indigo-400 animate-pulse",
|
|
8356
|
+
_: "bg-gray-500/10 text-gray-400"
|
|
8357
|
+
}, r = t.map((e) => {
|
|
8358
|
+
let t = n[e.status] || n._;
|
|
8354
8359
|
return `
|
|
8355
8360
|
<tr class="border-b border-gray-800 hover:bg-gray-900/50 transition">
|
|
8356
8361
|
<td class="py-3 px-4 font-mono text-indigo-400"><a href="/runs/${e.id}" class="hover:underline">#${e.id}</a></td>
|
|
8357
8362
|
<td class="py-3 px-4 font-medium text-white">${e.workflow_id}</td>
|
|
8358
8363
|
<td class="py-3 px-4">
|
|
8359
|
-
<span class="px-2.5 py-0.5 rounded-full text-xs font-semibold ${t}">${e.status
|
|
8364
|
+
<span class="px-2.5 py-0.5 rounded-full text-xs font-semibold ${t}">${e.status?.toUpperCase() ?? "?"}</span>
|
|
8360
8365
|
</td>
|
|
8361
8366
|
<td class="py-3 px-4 text-xs font-mono text-gray-400">${e.worker_id || "-"}</td>
|
|
8362
8367
|
<td class="py-3 px-4 text-xs text-gray-400">${e.created_at}</td>
|
|
@@ -8365,7 +8370,7 @@ var To = class e {
|
|
|
8365
8370
|
</td>
|
|
8366
8371
|
</tr>
|
|
8367
8372
|
`;
|
|
8368
|
-
}).join(""),
|
|
8373
|
+
}).join(""), i = `<!DOCTYPE html>
|
|
8369
8374
|
<html lang="en" class="dark">
|
|
8370
8375
|
<head>
|
|
8371
8376
|
<meta charset="UTF-8">
|
|
@@ -8397,13 +8402,13 @@ var To = class e {
|
|
|
8397
8402
|
<th class="py-3 px-4 text-right">Action</th>
|
|
8398
8403
|
</tr>
|
|
8399
8404
|
</thead>
|
|
8400
|
-
<tbody>${
|
|
8405
|
+
<tbody>${r.length ? r : "<tr><td colspan=\"6\" class=\"p-6 text-center text-gray-500\">No jobs recorded yet.</td></tr>"}</tbody>
|
|
8401
8406
|
</table>
|
|
8402
8407
|
</div>
|
|
8403
8408
|
</div>
|
|
8404
8409
|
</body>
|
|
8405
|
-
</html>`,
|
|
8406
|
-
e.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }), e.end(
|
|
8410
|
+
</html>`, a = this.secrets.redactText(i);
|
|
8411
|
+
e.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }), e.end(a);
|
|
8407
8412
|
}
|
|
8408
8413
|
async renderRunDetails(e, t) {
|
|
8409
8414
|
let n = await this.queue.getJob(e);
|
|
@@ -8551,7 +8556,7 @@ var Io = class {
|
|
|
8551
8556
|
return !1;
|
|
8552
8557
|
}
|
|
8553
8558
|
}
|
|
8554
|
-
|
|
8559
|
+
execute(t) {
|
|
8555
8560
|
let n = null, r = Date.now(), i = d.join(t.workspacePath, ".logs"), a = d.join(i, `step-${t.stepId}.log`), o = d.join(t.workspacePath, "wd");
|
|
8556
8561
|
try {
|
|
8557
8562
|
e.mkdirSync(i, { recursive: !0 }), e.mkdirSync(o, { recursive: !0 }), e.chmodSync(o, 511), n = e.openSync(a, "a");
|
|
@@ -8674,7 +8679,7 @@ var Io = class {
|
|
|
8674
8679
|
async isSupported() {
|
|
8675
8680
|
return !0;
|
|
8676
8681
|
}
|
|
8677
|
-
|
|
8682
|
+
execute(t) {
|
|
8678
8683
|
let n = null, r = Date.now(), i = d.join(t.workspacePath, ".logs"), a = d.join(i, `step-${t.stepId}.log`), o = d.join(t.workspacePath, "wd");
|
|
8679
8684
|
try {
|
|
8680
8685
|
e.mkdirSync(i, { recursive: !0 }), e.mkdirSync(o, { recursive: !0 }), e.chmodSync(o, 511), n = e.openSync(a, "a");
|
|
@@ -8824,63 +8829,81 @@ async function Go(e, t, n, r) {
|
|
|
8824
8829
|
await new Promise((e) => setTimeout(e, 2e3));
|
|
8825
8830
|
continue;
|
|
8826
8831
|
}
|
|
8827
|
-
await Ko(
|
|
8832
|
+
await Ko({
|
|
8833
|
+
workerId: e,
|
|
8834
|
+
job: a,
|
|
8835
|
+
queue: t,
|
|
8836
|
+
secrets: n,
|
|
8837
|
+
config: r,
|
|
8838
|
+
driver: i
|
|
8839
|
+
});
|
|
8828
8840
|
} catch (t) {
|
|
8829
8841
|
console.error(`[${e}] ā ļø Worker execution loop error:`, t), await new Promise((e) => setTimeout(e, 5e3));
|
|
8830
8842
|
}
|
|
8831
8843
|
console.log(`[${e}] š Worker loop stopped cleanly.`);
|
|
8832
8844
|
}
|
|
8833
|
-
async function Ko(e
|
|
8834
|
-
|
|
8835
|
-
|
|
8836
|
-
|
|
8837
|
-
|
|
8838
|
-
|
|
8845
|
+
async function Ko(e) {
|
|
8846
|
+
let { workerId: t, job: n, config: r, secrets: i, queue: a, driver: o } = e;
|
|
8847
|
+
console.log(`\n[${t}] š¦ Claimed Job #${n.id} (Workflow: ${n.workflow_id})`);
|
|
8848
|
+
let s = typeof n.payload == "string" ? JSON.parse(n.payload) : n.payload, c = s.steps || [], l = s.inputs || {}, u = Date.now(), d = {
|
|
8849
|
+
inputs: l,
|
|
8850
|
+
env: { ...r.env },
|
|
8851
|
+
secrets: i.getAll(),
|
|
8839
8852
|
steps: {}
|
|
8840
|
-
};
|
|
8841
|
-
|
|
8842
|
-
let
|
|
8843
|
-
|
|
8844
|
-
|
|
8845
|
-
|
|
8846
|
-
|
|
8847
|
-
|
|
8848
|
-
|
|
8849
|
-
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
|
|
8860
|
-
|
|
8861
|
-
|
|
8853
|
+
}, { isCancelled: f, jobFailed: p, stepReports: m } = await qo(s, c, d, e), h = f ? "cancelled" : p ? "failed" : "success";
|
|
8854
|
+
await a.finishJob(n.id, h), console.log(`[${t}] ā
Job #${n.id} completed as: ${h}`);
|
|
8855
|
+
let g = $o(n, h, u, l, d.env, m, s);
|
|
8856
|
+
await a.saveReport(n.id, g), await es(t, r.reporters, g);
|
|
8857
|
+
}
|
|
8858
|
+
async function qo(e, t, n, r) {
|
|
8859
|
+
let { driver: i, workerId: a, queue: o, config: s, job: c } = r, l = [], u = !1, d = !1, f = null;
|
|
8860
|
+
try {
|
|
8861
|
+
e.env && Object.assign(n.env, await Xo(e.env, n));
|
|
8862
|
+
for (let e = 0; e < t.length; e++) {
|
|
8863
|
+
let r = t[e], f = await Jo({
|
|
8864
|
+
workerId: a,
|
|
8865
|
+
jobId: c.id,
|
|
8866
|
+
step: r,
|
|
8867
|
+
stepIndex: e,
|
|
8868
|
+
totalSteps: t.length,
|
|
8869
|
+
executionContext: n,
|
|
8870
|
+
driver: i,
|
|
8871
|
+
queue: o,
|
|
8872
|
+
config: s
|
|
8873
|
+
});
|
|
8874
|
+
if (l.push(f.report), f.isCancelled) {
|
|
8875
|
+
d = !0, u = !0;
|
|
8876
|
+
break;
|
|
8877
|
+
}
|
|
8878
|
+
if (f.failed) {
|
|
8879
|
+
u = !0;
|
|
8880
|
+
break;
|
|
8881
|
+
}
|
|
8862
8882
|
}
|
|
8883
|
+
} catch (e) {
|
|
8884
|
+
f = e, u = !0;
|
|
8863
8885
|
}
|
|
8864
|
-
|
|
8865
|
-
|
|
8866
|
-
|
|
8867
|
-
|
|
8868
|
-
|
|
8886
|
+
return u && l.length < t.length && Qo(t, l.length, l), {
|
|
8887
|
+
jobFailed: u,
|
|
8888
|
+
isCancelled: d,
|
|
8889
|
+
error: f,
|
|
8890
|
+
stepReports: l
|
|
8891
|
+
};
|
|
8869
8892
|
}
|
|
8870
|
-
async function
|
|
8893
|
+
async function Jo(e) {
|
|
8871
8894
|
let { workerId: t, step: n, stepIndex: r, totalSteps: i } = e, a = n.id || `step-${r}`, o = n.name || a;
|
|
8872
|
-
return console.log(`[${t}] ā¶ļø Running step ${r + 1}/${i}: ${o}`), n.eval ?
|
|
8895
|
+
return console.log(`[${t}] ā¶ļø Running step ${r + 1}/${i}: ${o}`), n.eval ? Yo({
|
|
8873
8896
|
...e,
|
|
8874
8897
|
stepId: a,
|
|
8875
8898
|
stepName: o,
|
|
8876
8899
|
evalExpr: n.eval
|
|
8877
|
-
}) :
|
|
8900
|
+
}) : Zo({
|
|
8878
8901
|
...e,
|
|
8879
8902
|
stepId: a,
|
|
8880
8903
|
stepName: o
|
|
8881
8904
|
});
|
|
8882
8905
|
}
|
|
8883
|
-
async function
|
|
8906
|
+
async function Yo(e) {
|
|
8884
8907
|
let { queue: t, jobId: n, stepId: r, stepName: i, evalExpr: a, executionContext: o } = e, s = Date.now();
|
|
8885
8908
|
try {
|
|
8886
8909
|
let e = await mn.evaluateExpression(a, o);
|
|
@@ -8924,53 +8947,68 @@ async function Jo(e) {
|
|
|
8924
8947
|
};
|
|
8925
8948
|
}
|
|
8926
8949
|
}
|
|
8927
|
-
async function
|
|
8950
|
+
async function Xo(e, t) {
|
|
8928
8951
|
let n = {};
|
|
8929
8952
|
if (e) for (let [r, i] of Object.entries(e)) n[r] = String(await mn.evaluateValue(i, t));
|
|
8930
8953
|
return n;
|
|
8931
8954
|
}
|
|
8932
|
-
async function
|
|
8933
|
-
let { workerId: n, jobId: r, step: i, stepId: a, stepName: o, executionContext: s, driver: c, queue: l, config: u } = t, d
|
|
8934
|
-
|
|
8935
|
-
|
|
8936
|
-
|
|
8937
|
-
|
|
8938
|
-
|
|
8939
|
-
|
|
8940
|
-
|
|
8941
|
-
|
|
8942
|
-
|
|
8943
|
-
|
|
8944
|
-
|
|
8945
|
-
|
|
8946
|
-
|
|
8947
|
-
|
|
8948
|
-
|
|
8955
|
+
async function Zo(t) {
|
|
8956
|
+
let { workerId: n, jobId: r, step: i, stepId: a, stepName: o, executionContext: s, driver: c, queue: l, config: u } = t, d, f;
|
|
8957
|
+
try {
|
|
8958
|
+
let e = await Xo(i.env, s);
|
|
8959
|
+
d = {
|
|
8960
|
+
jobId: r.toString(),
|
|
8961
|
+
stepId: a,
|
|
8962
|
+
workspacePath: `${u.storagePath}/job-${r}`,
|
|
8963
|
+
command: i.run,
|
|
8964
|
+
image: i.image,
|
|
8965
|
+
env: {
|
|
8966
|
+
...s.env,
|
|
8967
|
+
...e
|
|
8968
|
+
},
|
|
8969
|
+
timeoutMs: i.timeoutMs
|
|
8970
|
+
}, f = c.execute(d);
|
|
8971
|
+
} catch (e) {
|
|
8972
|
+
f = {
|
|
8973
|
+
done: Promise.resolve({
|
|
8974
|
+
exitCode: 1,
|
|
8975
|
+
durationMs: 0,
|
|
8976
|
+
error: Error(String(e))
|
|
8977
|
+
}),
|
|
8978
|
+
cancel: async () => {},
|
|
8979
|
+
logFilePath: ""
|
|
8980
|
+
};
|
|
8981
|
+
}
|
|
8982
|
+
let p = !1, m = setInterval(async () => {
|
|
8983
|
+
await l.isCancelled(r) && (console.log(`[${n}] š Job #${r} was cancelled! Halting execution.`), p = !0, clearInterval(m), await f.cancel());
|
|
8984
|
+
}, 3e3), h = await f.done;
|
|
8985
|
+
if (clearInterval(m), f.logFilePath && e.existsSync(f.logFilePath)) try {
|
|
8986
|
+
let e = await c.readLog(f.logFilePath);
|
|
8949
8987
|
await l.saveStepLog(r, a, e);
|
|
8950
8988
|
} catch (e) {
|
|
8951
8989
|
console.error(`[${n}] ā ļø Failed to read step log file:`, e.message);
|
|
8952
8990
|
}
|
|
8953
|
-
let
|
|
8991
|
+
let g = h.exitCode !== 0 || p, _ = h.exitCode === 0 ? "success" : p ? "cancelled" : "failed";
|
|
8954
8992
|
return s.steps[a] = {
|
|
8955
|
-
status:
|
|
8956
|
-
exitCode:
|
|
8993
|
+
status: _,
|
|
8994
|
+
exitCode: h.exitCode,
|
|
8957
8995
|
outputs: {}
|
|
8958
|
-
},
|
|
8959
|
-
failed:
|
|
8960
|
-
isCancelled:
|
|
8996
|
+
}, g && console.error(`[${n}] ā Step [${a}] finished with status: ${_}`), {
|
|
8997
|
+
failed: g,
|
|
8998
|
+
isCancelled: p,
|
|
8961
8999
|
report: {
|
|
8962
9000
|
id: a,
|
|
8963
9001
|
name: o,
|
|
8964
|
-
status:
|
|
8965
|
-
durationMs:
|
|
8966
|
-
exitCode:
|
|
8967
|
-
error:
|
|
9002
|
+
status: _,
|
|
9003
|
+
durationMs: h.durationMs,
|
|
9004
|
+
exitCode: h.exitCode,
|
|
9005
|
+
error: h.error?.message,
|
|
8968
9006
|
outputs: {},
|
|
8969
9007
|
logContent: ""
|
|
8970
9008
|
}
|
|
8971
9009
|
};
|
|
8972
9010
|
}
|
|
8973
|
-
function
|
|
9011
|
+
function Qo(e, t, n) {
|
|
8974
9012
|
for (let r = t; r < e.length; r++) {
|
|
8975
9013
|
let t = e[r], i = t.id || `step-${r}`;
|
|
8976
9014
|
n.push({
|
|
@@ -8984,7 +9022,7 @@ function Zo(e, t, n) {
|
|
|
8984
9022
|
});
|
|
8985
9023
|
}
|
|
8986
9024
|
}
|
|
8987
|
-
function
|
|
9025
|
+
function $o(e, t, n, r, i, a, o) {
|
|
8988
9026
|
return {
|
|
8989
9027
|
jobId: e.id.toString(),
|
|
8990
9028
|
workflowName: e.workflow_id,
|
|
@@ -9002,7 +9040,7 @@ function Qo(e, t, n, r, i, a, o) {
|
|
|
9002
9040
|
})
|
|
9003
9041
|
};
|
|
9004
9042
|
}
|
|
9005
|
-
async function
|
|
9043
|
+
async function es(e, t = [], n) {
|
|
9006
9044
|
!Array.isArray(t) || t.length === 0 || (console.log(`[${e}] š¢ Dispatching execution report to ${t.length} reporter(s)...`), await Promise.allSettled(t.map(async (t) => {
|
|
9007
9045
|
try {
|
|
9008
9046
|
await t.report(n);
|
|
@@ -9013,7 +9051,7 @@ async function $o(e, t = [], n) {
|
|
|
9013
9051
|
}
|
|
9014
9052
|
//#endregion
|
|
9015
9053
|
//#region src/config.ts
|
|
9016
|
-
async function
|
|
9054
|
+
async function ts(e) {
|
|
9017
9055
|
let n = {
|
|
9018
9056
|
port: Number(e.port),
|
|
9019
9057
|
database: e.database,
|
|
@@ -9021,10 +9059,10 @@ async function es(e) {
|
|
|
9021
9059
|
workers: e.workers ? Number(e.workers) : void 0
|
|
9022
9060
|
}, r = {}, a = m(e.config);
|
|
9023
9061
|
t(a) && i(a).isFile() && (r = (await import(a)).default || {});
|
|
9024
|
-
let o =
|
|
9062
|
+
let o = ns(r, n);
|
|
9025
9063
|
return t(o.workflows) ? (Fo(o.database), o) : (console.warn(`ā ļø Warning: Workflows directory '${o.workflows}' not found.`), null);
|
|
9026
9064
|
}
|
|
9027
|
-
function
|
|
9065
|
+
function ns(e, t) {
|
|
9028
9066
|
let n = process.env;
|
|
9029
9067
|
return {
|
|
9030
9068
|
port: Number(e.port || t.port || n.PORT || 11235),
|
|
@@ -9039,7 +9077,7 @@ function ts(e, t) {
|
|
|
9039
9077
|
}
|
|
9040
9078
|
//#endregion
|
|
9041
9079
|
//#region src/reporters/json-file.reporter.ts
|
|
9042
|
-
var
|
|
9080
|
+
var rs = class {
|
|
9043
9081
|
name = "json-file";
|
|
9044
9082
|
outputDir;
|
|
9045
9083
|
constructor(e) {
|
|
@@ -9050,7 +9088,7 @@ var ns = class {
|
|
|
9050
9088
|
let n = d.join(this.outputDir, `run-${t.jobId}.json`);
|
|
9051
9089
|
e.writeFileSync(n, JSON.stringify(t, null, 2), "utf-8"), console.log(`š Execution report saved to: ${n}`);
|
|
9052
9090
|
}
|
|
9053
|
-
},
|
|
9091
|
+
}, is = class {
|
|
9054
9092
|
name = "slack";
|
|
9055
9093
|
webhookUrl = "";
|
|
9056
9094
|
token = "";
|
|
@@ -9074,7 +9112,7 @@ var ns = class {
|
|
|
9074
9112
|
})
|
|
9075
9113
|
});
|
|
9076
9114
|
}
|
|
9077
|
-
}, { values:
|
|
9115
|
+
}, { values: as, positionals: os } = a({
|
|
9078
9116
|
allowPositionals: !0,
|
|
9079
9117
|
options: {
|
|
9080
9118
|
config: {
|
|
@@ -9104,11 +9142,11 @@ var ns = class {
|
|
|
9104
9142
|
}
|
|
9105
9143
|
}
|
|
9106
9144
|
});
|
|
9107
|
-
function
|
|
9145
|
+
function ss() {
|
|
9108
9146
|
console.log("\nš Runner CLI š\n\nUsage:\n npx -y @cloud-cli/on <command> [options]\n pnpm dlx -y @cloud-cli/on <command> [options]\n\nCommands:\n start Runs both Webhook Ingress Server and Workers (Default)\n start-server Runs Webhook Ingress Server only (API Gateway mode)\n start-workers Runs Worker Polling loops only (Scalable Worker mode)\n validate Parses and validates workflow YAML files without running\n\nOptions:\n -c, --config Path to runner.config.mjs (default: ./runner.config.mjs, env: RUNNER_CONFIG_PATH)\n -d, --database SQLite Database URL (env: RUNNER_DATABASE_URL)\n -w, --workflows Path to where your workflows are defined (default: on/, env: RUNNER_WORKFLOWS_PATH)\n -p, --port Port for Webhook Ingress Server (default: 11235, env: PORT)\n -k, --workers Number of worker thread loops to spawn (default: 5, env: RUNNER_WORKERS)\n -h, --help Show this help message\n ");
|
|
9109
9147
|
}
|
|
9110
|
-
|
|
9111
|
-
function
|
|
9148
|
+
as.help && (ss(), process.exit(0));
|
|
9149
|
+
function cs(e) {
|
|
9112
9150
|
console.log("š Validating Workflows in:", e.workflows);
|
|
9113
9151
|
let t = new Co(e.workflows), n = r(e.workflows).filter((e) => e.endsWith(".yml") || e.endsWith(".yaml"));
|
|
9114
9152
|
for (let e of n) {
|
|
@@ -9116,22 +9154,22 @@ function ss(e) {
|
|
|
9116
9154
|
console.log(` ā
${e} -> Valid! (${n.length} job matrix variant(s) generated)`);
|
|
9117
9155
|
}
|
|
9118
9156
|
}
|
|
9119
|
-
async function
|
|
9157
|
+
async function ls() {
|
|
9120
9158
|
let e = new Lo("./.env"), t = new Io(process.env.WORKER_NAME || "cli");
|
|
9121
9159
|
return await t.init(), {
|
|
9122
9160
|
secrets: e,
|
|
9123
9161
|
queue: t
|
|
9124
9162
|
};
|
|
9125
9163
|
}
|
|
9126
|
-
async function
|
|
9127
|
-
let e =
|
|
9164
|
+
async function us() {
|
|
9165
|
+
let e = os[0] || "start", t = await ts(as);
|
|
9128
9166
|
switch (t || process.exit(1), e) {
|
|
9129
9167
|
case "validate":
|
|
9130
|
-
|
|
9168
|
+
cs(t);
|
|
9131
9169
|
break;
|
|
9132
9170
|
case "start-server": {
|
|
9133
9171
|
console.log("š Starting Ingress Gateway...");
|
|
9134
|
-
let { queue: e, secrets: n } = await
|
|
9172
|
+
let { queue: e, secrets: n } = await ls();
|
|
9135
9173
|
await Eo.withPort({
|
|
9136
9174
|
config: t,
|
|
9137
9175
|
queue: e,
|
|
@@ -9143,13 +9181,13 @@ async function ls() {
|
|
|
9143
9181
|
}
|
|
9144
9182
|
case "start-workers": {
|
|
9145
9183
|
console.log(`āļø Starting ${t.workers} Worker Loop(s)...`);
|
|
9146
|
-
let { queue: e, secrets: n } = await
|
|
9184
|
+
let { queue: e, secrets: n } = await ls();
|
|
9147
9185
|
Wo(t.workers, e, n, t);
|
|
9148
9186
|
break;
|
|
9149
9187
|
}
|
|
9150
|
-
default: console.error(`ā Unknown command: '${e}'`),
|
|
9188
|
+
default: console.error(`ā Unknown command: '${e}'`), ss(), process.exit(1);
|
|
9151
9189
|
}
|
|
9152
9190
|
}
|
|
9153
|
-
|
|
9191
|
+
us().catch(console.error);
|
|
9154
9192
|
//#endregion
|
|
9155
|
-
export { Cn as HtmlReporter,
|
|
9193
|
+
export { Cn as HtmlReporter, rs as JsonFileReporter, is as SlackReporter };
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAGpB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;WAEd,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;gBAK1D,OAAO,EAAE,oBAAoB;IAczC,oBAAoB,CAAC,YAAY,EAAE,mBAAmB;YAIxC,aAAa;IA6B3B;;OAEG;YACW,aAAa;YAyBb,WAAW;IAwBzB,OAAO,CAAC,UAAU;YAiBJ,cAAc;IAmC5B;;OAEG;YACW,kBAAkB;IAehC;;OAEG;YACW,eAAe;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAGpB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAS;WAEd,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;gBAK1D,OAAO,EAAE,oBAAoB;IAczC,oBAAoB,CAAC,YAAY,EAAE,mBAAmB;YAIxC,aAAa;IA6B3B;;OAEG;YACW,aAAa;YAyBb,WAAW;IAwBzB,OAAO,CAAC,UAAU;YAiBJ,cAAc;IAmC5B;;OAEG;YACW,kBAAkB;IAehC;;OAEG;YACW,eAAe;IA0E7B;;OAEG;YAGW,gBAAgB;IA2B9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAStC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ5B"}
|
package/dist/types.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface ExecutionDriver {
|
|
|
37
37
|
/**
|
|
38
38
|
* Executes a step context
|
|
39
39
|
*/
|
|
40
|
-
execute(ctx: StepContext):
|
|
40
|
+
execute(ctx: StepContext): StepExecutionHandle;
|
|
41
41
|
readLog(file: string): Promise<string>;
|
|
42
42
|
}
|
|
43
43
|
export interface PreprocessedWebhook {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE1B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAIL,YAAY,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAIL,YAAY,EAOb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAKF;;GAEG;AACH,wBAAsB,qBAAqB,kBAM1C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,mBAO1G;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,YAAY,iBAsBrB"}
|