@x12i/memorix-pipeline-orchestrator 1.0.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.
- package/README.md +99 -0
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +9 -0
- package/dist/browser.js.map +1 -0
- package/dist/catalog.d.ts +11 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +11 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +67 -0
- package/dist/cli.js.map +1 -0
- package/dist/collections.d.ts +25 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +50 -0
- package/dist/collections.js.map +1 -0
- package/dist/examples/fetch-interfaces.d.ts +12 -0
- package/dist/examples/fetch-interfaces.d.ts.map +1 -0
- package/dist/examples/fetch-interfaces.js +206 -0
- package/dist/examples/fetch-interfaces.js.map +1 -0
- package/dist/graph.d.ts +16 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +78 -0
- package/dist/graph.js.map +1 -0
- package/dist/handlers/ops.d.ts +8 -0
- package/dist/handlers/ops.d.ts.map +1 -0
- package/dist/handlers/ops.js +112 -0
- package/dist/handlers/ops.js.map +1 -0
- package/dist/handlers/pipelines.d.ts +9 -0
- package/dist/handlers/pipelines.d.ts.map +1 -0
- package/dist/handlers/pipelines.js +170 -0
- package/dist/handlers/pipelines.js.map +1 -0
- package/dist/handlers/runs.d.ts +13 -0
- package/dist/handlers/runs.d.ts.map +1 -0
- package/dist/handlers/runs.js +157 -0
- package/dist/handlers/runs.js.map +1 -0
- package/dist/handlers/schedules.d.ts +8 -0
- package/dist/handlers/schedules.d.ts.map +1 -0
- package/dist/handlers/schedules.js +123 -0
- package/dist/handlers/schedules.js.map +1 -0
- package/dist/handlers/shared.d.ts +11 -0
- package/dist/handlers/shared.d.ts.map +1 -0
- package/dist/handlers/shared.js +47 -0
- package/dist/handlers/shared.js.map +1 -0
- package/dist/handlers/steps.d.ts +8 -0
- package/dist/handlers/steps.d.ts.map +1 -0
- package/dist/handlers/steps.js +49 -0
- package/dist/handlers/steps.js.map +1 -0
- package/dist/handlers/templates.d.ts +8 -0
- package/dist/handlers/templates.d.ts.map +1 -0
- package/dist/handlers/templates.js +98 -0
- package/dist/handlers/templates.js.map +1 -0
- package/dist/http/server.d.ts +22 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +106 -0
- package/dist/http/server.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline-handlers.d.ts +12 -0
- package/dist/pipeline-handlers.d.ts.map +1 -0
- package/dist/pipeline-handlers.js +238 -0
- package/dist/pipeline-handlers.js.map +1 -0
- package/dist/runtime/build-invoke-envelope.d.ts +31 -0
- package/dist/runtime/build-invoke-envelope.d.ts.map +1 -0
- package/dist/runtime/build-invoke-envelope.js +258 -0
- package/dist/runtime/build-invoke-envelope.js.map +1 -0
- package/dist/runtime/checkpoints.d.ts +49 -0
- package/dist/runtime/checkpoints.d.ts.map +1 -0
- package/dist/runtime/checkpoints.js +45 -0
- package/dist/runtime/checkpoints.js.map +1 -0
- package/dist/runtime/durable-schedule-ticker.d.ts +23 -0
- package/dist/runtime/durable-schedule-ticker.d.ts.map +1 -0
- package/dist/runtime/durable-schedule-ticker.js +107 -0
- package/dist/runtime/durable-schedule-ticker.js.map +1 -0
- package/dist/runtime/execute-run.d.ts +30 -0
- package/dist/runtime/execute-run.d.ts.map +1 -0
- package/dist/runtime/execute-run.js +639 -0
- package/dist/runtime/execute-run.js.map +1 -0
- package/dist/runtime/execute-step.d.ts +22 -0
- package/dist/runtime/execute-step.d.ts.map +1 -0
- package/dist/runtime/execute-step.js +406 -0
- package/dist/runtime/execute-step.js.map +1 -0
- package/dist/runtime/leases.d.ts +45 -0
- package/dist/runtime/leases.d.ts.map +1 -0
- package/dist/runtime/leases.js +84 -0
- package/dist/runtime/leases.js.map +1 -0
- package/dist/runtime/memory-ports.d.ts +21 -0
- package/dist/runtime/memory-ports.d.ts.map +1 -0
- package/dist/runtime/memory-ports.js +99 -0
- package/dist/runtime/memory-ports.js.map +1 -0
- package/dist/runtime/object-content-resolver.d.ts +23 -0
- package/dist/runtime/object-content-resolver.d.ts.map +1 -0
- package/dist/runtime/object-content-resolver.js +117 -0
- package/dist/runtime/object-content-resolver.js.map +1 -0
- package/dist/runtime/pipeline-services-invoker.d.ts +10 -0
- package/dist/runtime/pipeline-services-invoker.d.ts.map +1 -0
- package/dist/runtime/pipeline-services-invoker.js +69 -0
- package/dist/runtime/pipeline-services-invoker.js.map +1 -0
- package/dist/runtime/ports.d.ts +74 -0
- package/dist/runtime/ports.d.ts.map +1 -0
- package/dist/runtime/ports.js +2 -0
- package/dist/runtime/ports.js.map +1 -0
- package/dist/runtime/preflight.d.ts +39 -0
- package/dist/runtime/preflight.d.ts.map +1 -0
- package/dist/runtime/preflight.js +234 -0
- package/dist/runtime/preflight.js.map +1 -0
- package/dist/runtime/run-context.d.ts +10 -0
- package/dist/runtime/run-context.d.ts.map +1 -0
- package/dist/runtime/run-context.js +72 -0
- package/dist/runtime/run-context.js.map +1 -0
- package/dist/runtime/sandbox-ports.d.ts +9 -0
- package/dist/runtime/sandbox-ports.d.ts.map +1 -0
- package/dist/runtime/sandbox-ports.js +216 -0
- package/dist/runtime/sandbox-ports.js.map +1 -0
- package/dist/runtime/schedule-ticker.d.ts +24 -0
- package/dist/runtime/schedule-ticker.d.ts.map +1 -0
- package/dist/runtime/schedule-ticker.js +155 -0
- package/dist/runtime/schedule-ticker.js.map +1 -0
- package/dist/runtime/schedule-utils.d.ts +11 -0
- package/dist/runtime/schedule-utils.d.ts.map +1 -0
- package/dist/runtime/schedule-utils.js +54 -0
- package/dist/runtime/schedule-utils.js.map +1 -0
- package/dist/seeds/cortex-xdr.d.ts +11 -0
- package/dist/seeds/cortex-xdr.d.ts.map +1 -0
- package/dist/seeds/cortex-xdr.js +1759 -0
- package/dist/seeds/cortex-xdr.js.map +1 -0
- package/dist/seeds/firewall-topology.d.ts +11 -0
- package/dist/seeds/firewall-topology.d.ts.map +1 -0
- package/dist/seeds/firewall-topology.js +1310 -0
- package/dist/seeds/firewall-topology.js.map +1 -0
- package/dist/seeds/platform-smoke.d.ts +22 -0
- package/dist/seeds/platform-smoke.d.ts.map +1 -0
- package/dist/seeds/platform-smoke.js +314 -0
- package/dist/seeds/platform-smoke.js.map +1 -0
- package/dist/seeds/tenable-nessus.d.ts +12 -0
- package/dist/seeds/tenable-nessus.d.ts.map +1 -0
- package/dist/seeds/tenable-nessus.js +880 -0
- package/dist/seeds/tenable-nessus.js.map +1 -0
- package/dist/store/catalox.d.ts +15 -0
- package/dist/store/catalox.d.ts.map +1 -0
- package/dist/store/catalox.js +581 -0
- package/dist/store/catalox.js.map +1 -0
- package/dist/store/memory.d.ts +3 -0
- package/dist/store/memory.d.ts.map +1 -0
- package/dist/store/memory.js +352 -0
- package/dist/store/memory.js.map +1 -0
- package/dist/store/stack.d.ts +13 -0
- package/dist/store/stack.d.ts.map +1 -0
- package/dist/store/stack.js +72 -0
- package/dist/store/stack.js.map +1 -0
- package/dist/store/types.d.ts +50 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +45 -0
- package/dist/store/types.js.map +1 -0
- package/dist/types.d.ts +324 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +14 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +263 -0
- package/dist/validate.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { asNonEmptyString, jsonError, jsonOk, mapStoreError, parseJsonBody, } from "./shared.js";
|
|
2
|
+
const VALID_FREQUENCIES = new Set([
|
|
3
|
+
"15m",
|
|
4
|
+
"hourly",
|
|
5
|
+
"daily",
|
|
6
|
+
"weekly",
|
|
7
|
+
"cron",
|
|
8
|
+
]);
|
|
9
|
+
function asFrequency(value) {
|
|
10
|
+
if (typeof value !== "string" || !VALID_FREQUENCIES.has(value)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
export async function handleListSchedules(store, searchParams) {
|
|
16
|
+
const pipelineId = searchParams.get("pipelineId")?.trim() || undefined;
|
|
17
|
+
const schedules = await store.listSchedules({ pipelineId });
|
|
18
|
+
return jsonOk({ schedules });
|
|
19
|
+
}
|
|
20
|
+
export async function handleGetSchedule(store, scheduleId) {
|
|
21
|
+
const schedule = await store.getSchedule(decodeURIComponent(scheduleId));
|
|
22
|
+
if (!schedule) {
|
|
23
|
+
return jsonError(404, `Schedule not found: ${scheduleId}`, { code: "not_found" });
|
|
24
|
+
}
|
|
25
|
+
return jsonOk({ schedule });
|
|
26
|
+
}
|
|
27
|
+
export async function handleCreateSchedule(store, body) {
|
|
28
|
+
const parsed = parseJsonBody(body);
|
|
29
|
+
if (!parsed)
|
|
30
|
+
return jsonError(400, "JSON object body required");
|
|
31
|
+
const pipelineId = asNonEmptyString(parsed.pipelineId);
|
|
32
|
+
const frequency = asFrequency(parsed.frequency);
|
|
33
|
+
if (!pipelineId)
|
|
34
|
+
return jsonError(400, "pipelineId is required");
|
|
35
|
+
if (!frequency) {
|
|
36
|
+
return jsonError(400, "frequency must be one of 15m|hourly|daily|weekly|cron");
|
|
37
|
+
}
|
|
38
|
+
const input = { pipelineId, frequency };
|
|
39
|
+
if (typeof parsed.id === "string" && parsed.id.trim())
|
|
40
|
+
input.id = parsed.id.trim();
|
|
41
|
+
if (typeof parsed.cron === "string")
|
|
42
|
+
input.cron = parsed.cron;
|
|
43
|
+
if (typeof parsed.startsAt === "string")
|
|
44
|
+
input.startsAt = parsed.startsAt;
|
|
45
|
+
if (parsed.context != null &&
|
|
46
|
+
typeof parsed.context === "object" &&
|
|
47
|
+
!Array.isArray(parsed.context)) {
|
|
48
|
+
input.context = parsed.context;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const schedule = await store.createSchedule(input);
|
|
52
|
+
return jsonOk({ schedule }, 201);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
return mapStoreError(err);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export async function handleUpdateSchedule(store, scheduleId, body) {
|
|
59
|
+
const parsed = parseJsonBody(body);
|
|
60
|
+
if (!parsed)
|
|
61
|
+
return jsonError(400, "JSON object body required");
|
|
62
|
+
const patch = {};
|
|
63
|
+
if ("frequency" in parsed) {
|
|
64
|
+
const frequency = asFrequency(parsed.frequency);
|
|
65
|
+
if (!frequency) {
|
|
66
|
+
return jsonError(400, "frequency must be one of 15m|hourly|daily|weekly|cron");
|
|
67
|
+
}
|
|
68
|
+
patch.frequency = frequency;
|
|
69
|
+
}
|
|
70
|
+
if ("cron" in parsed) {
|
|
71
|
+
if (parsed.cron != null && typeof parsed.cron !== "string") {
|
|
72
|
+
return jsonError(400, "cron must be a string when provided");
|
|
73
|
+
}
|
|
74
|
+
patch.cron = typeof parsed.cron === "string" ? parsed.cron : null;
|
|
75
|
+
}
|
|
76
|
+
if ("startsAt" in parsed) {
|
|
77
|
+
if (typeof parsed.startsAt !== "string") {
|
|
78
|
+
return jsonError(400, "startsAt must be a string");
|
|
79
|
+
}
|
|
80
|
+
patch.startsAt = parsed.startsAt;
|
|
81
|
+
}
|
|
82
|
+
if ("context" in parsed) {
|
|
83
|
+
if (parsed.context == null ||
|
|
84
|
+
typeof parsed.context !== "object" ||
|
|
85
|
+
Array.isArray(parsed.context)) {
|
|
86
|
+
return jsonError(400, "context must be an object");
|
|
87
|
+
}
|
|
88
|
+
patch.context = parsed.context;
|
|
89
|
+
}
|
|
90
|
+
if ("status" in parsed) {
|
|
91
|
+
if (parsed.status !== "active" && parsed.status !== "paused") {
|
|
92
|
+
return jsonError(400, "status must be active|paused");
|
|
93
|
+
}
|
|
94
|
+
patch.status = parsed.status;
|
|
95
|
+
}
|
|
96
|
+
if ("nextRunAt" in parsed) {
|
|
97
|
+
if (typeof parsed.nextRunAt !== "string") {
|
|
98
|
+
return jsonError(400, "nextRunAt must be a string");
|
|
99
|
+
}
|
|
100
|
+
patch.nextRunAt = parsed.nextRunAt;
|
|
101
|
+
}
|
|
102
|
+
if ("lastRunAt" in parsed) {
|
|
103
|
+
if (parsed.lastRunAt != null && typeof parsed.lastRunAt !== "string") {
|
|
104
|
+
return jsonError(400, "lastRunAt must be a string or null");
|
|
105
|
+
}
|
|
106
|
+
patch.lastRunAt = typeof parsed.lastRunAt === "string" ? parsed.lastRunAt : null;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const schedule = await store.updateSchedule(decodeURIComponent(scheduleId), patch);
|
|
110
|
+
return jsonOk({ schedule });
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
return mapStoreError(err);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export async function handleDeleteSchedule(store, scheduleId) {
|
|
117
|
+
const deleted = await store.deleteSchedule(decodeURIComponent(scheduleId));
|
|
118
|
+
if (!deleted) {
|
|
119
|
+
return jsonError(404, `Schedule not found: ${scheduleId}`, { code: "not_found" });
|
|
120
|
+
}
|
|
121
|
+
return jsonOk({ deleted: true });
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=schedules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedules.js","sourceRoot":"","sources":["../../src/handlers/schedules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ApiResult = {
|
|
2
|
+
status: number;
|
|
3
|
+
body: unknown;
|
|
4
|
+
};
|
|
5
|
+
export declare function jsonOk(body: unknown, status?: number): ApiResult;
|
|
6
|
+
export declare function jsonError(status: number, error: string, extra?: Record<string, unknown>): ApiResult;
|
|
7
|
+
export declare function parseJsonBody(body: string): Record<string, unknown> | null;
|
|
8
|
+
export declare function asNonEmptyString(value: unknown): string | undefined;
|
|
9
|
+
export declare function asStringArray(value: unknown): string[] | undefined;
|
|
10
|
+
export declare function mapStoreError(err: unknown): ApiResult;
|
|
11
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/handlers/shared.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,SAAS,CAE7D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAEnG;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAW1E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAInE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAIlE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAYrD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function jsonOk(body, status = 200) {
|
|
2
|
+
return { status, body };
|
|
3
|
+
}
|
|
4
|
+
export function jsonError(status, error, extra) {
|
|
5
|
+
return { status, body: { error, ...extra } };
|
|
6
|
+
}
|
|
7
|
+
export function parseJsonBody(body) {
|
|
8
|
+
if (!body?.trim())
|
|
9
|
+
return {};
|
|
10
|
+
try {
|
|
11
|
+
const parsed = JSON.parse(body);
|
|
12
|
+
if (parsed == null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function asNonEmptyString(value) {
|
|
22
|
+
if (typeof value !== "string")
|
|
23
|
+
return undefined;
|
|
24
|
+
const t = value.trim();
|
|
25
|
+
return t || undefined;
|
|
26
|
+
}
|
|
27
|
+
export function asStringArray(value) {
|
|
28
|
+
if (!Array.isArray(value))
|
|
29
|
+
return undefined;
|
|
30
|
+
if (!value.every((v) => typeof v === "string"))
|
|
31
|
+
return undefined;
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
export function mapStoreError(err) {
|
|
35
|
+
const e = err;
|
|
36
|
+
if (e?.code === "validation" || e?.name === "OrchestratorValidationError") {
|
|
37
|
+
return jsonError(400, e.message ?? "validation error", { code: "validation" });
|
|
38
|
+
}
|
|
39
|
+
if (e?.code === "not_found" || e?.name === "OrchestratorNotFoundError") {
|
|
40
|
+
return jsonError(404, e.message ?? "not found", { code: "not_found" });
|
|
41
|
+
}
|
|
42
|
+
if (e?.code === "conflict" || e?.name === "OrchestratorConflictError") {
|
|
43
|
+
return jsonError(409, e.message ?? "conflict", { code: "conflict" });
|
|
44
|
+
}
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/handlers/shared.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IAChD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,KAAa,EAAE,KAA+B;IACtF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAiC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,IAAI,SAAS,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,MAAM,CAAC,GAAG,GAAyD,CAAC;IACpE,IAAI,CAAC,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,EAAE,IAAI,KAAK,6BAA6B,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,kBAAkB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,EAAE,IAAI,KAAK,WAAW,IAAI,CAAC,EAAE,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACvE,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,EAAE,IAAI,KAAK,UAAU,IAAI,CAAC,EAAE,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PipelineOrchestratorStore } from "../store/types.js";
|
|
2
|
+
import { type ApiResult } from "./shared.js";
|
|
3
|
+
export declare function handleListSteps(store: PipelineOrchestratorStore, searchParams: URLSearchParams): Promise<ApiResult>;
|
|
4
|
+
export declare function handleGetStep(store: PipelineOrchestratorStore, stepId: string): Promise<ApiResult>;
|
|
5
|
+
export declare function handleCreateStep(store: PipelineOrchestratorStore, body: string): Promise<ApiResult>;
|
|
6
|
+
export declare function handleUpdateStep(store: PipelineOrchestratorStore, stepId: string, body: string): Promise<ApiResult>;
|
|
7
|
+
export declare function handleDeleteStep(store: PipelineOrchestratorStore, stepId: string): Promise<ApiResult>;
|
|
8
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/handlers/steps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAML,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,wBAAsB,eAAe,CACnC,KAAK,EAAE,yBAAyB,EAChC,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,SAAS,CAAC,CAKpB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CAIpB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CASpB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CAapB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,yBAAyB,EAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CAMpB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { asNonEmptyString, jsonError, jsonOk, mapStoreError, parseJsonBody, } from "./shared.js";
|
|
2
|
+
export async function handleListSteps(store, searchParams) {
|
|
3
|
+
const category = searchParams.get("category")?.trim() || undefined;
|
|
4
|
+
const serviceType = searchParams.get("serviceType")?.trim() || undefined;
|
|
5
|
+
const steps = await store.listSteps({ category, serviceType });
|
|
6
|
+
return jsonOk({ steps });
|
|
7
|
+
}
|
|
8
|
+
export async function handleGetStep(store, stepId) {
|
|
9
|
+
const step = await store.getStep(decodeURIComponent(stepId));
|
|
10
|
+
if (!step)
|
|
11
|
+
return jsonError(404, `Step not found: ${stepId}`, { code: "not_found" });
|
|
12
|
+
return jsonOk({ step });
|
|
13
|
+
}
|
|
14
|
+
export async function handleCreateStep(store, body) {
|
|
15
|
+
const parsed = parseJsonBody(body);
|
|
16
|
+
if (!parsed)
|
|
17
|
+
return jsonError(400, "JSON object body required");
|
|
18
|
+
try {
|
|
19
|
+
const step = await store.createStep(parsed);
|
|
20
|
+
return jsonOk({ step }, 201);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
return mapStoreError(err);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function handleUpdateStep(store, stepId, body) {
|
|
27
|
+
const parsed = parseJsonBody(body);
|
|
28
|
+
if (!parsed)
|
|
29
|
+
return jsonError(400, "JSON object body required");
|
|
30
|
+
const id = asNonEmptyString(parsed.id) ?? decodeURIComponent(stepId);
|
|
31
|
+
try {
|
|
32
|
+
const step = await store.updateStep(decodeURIComponent(stepId), {
|
|
33
|
+
...parsed,
|
|
34
|
+
id,
|
|
35
|
+
});
|
|
36
|
+
return jsonOk({ step });
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
return mapStoreError(err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function handleDeleteStep(store, stepId) {
|
|
43
|
+
const deleted = await store.deleteStep(decodeURIComponent(stepId));
|
|
44
|
+
if (!deleted) {
|
|
45
|
+
return jsonError(404, `Step not found: ${stepId}`, { code: "not_found" });
|
|
46
|
+
}
|
|
47
|
+
return jsonOk({ deleted: true });
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../../src/handlers/steps.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,MAAM,EACN,aAAa,EACb,aAAa,GAEd,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAgC,EAChC,YAA6B;IAE7B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACnE,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IACzE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAgC,EAChC,MAAc;IAEd,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,mBAAmB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAgC,EAChC,IAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,MAAiC,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAgC,EAChC,MAAc,EACd,IAAY;IAEZ,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IAChE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC9D,GAAI,MAAkC;YACtC,EAAE;SACH,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAgC,EAChC,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC,GAAG,EAAE,mBAAmB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PipelineOrchestratorStore } from "../store/types.js";
|
|
2
|
+
import { type ApiResult } from "./shared.js";
|
|
3
|
+
export declare function handleListTemplates(store: PipelineOrchestratorStore): Promise<ApiResult>;
|
|
4
|
+
export declare function handleGetTemplate(store: PipelineOrchestratorStore, templateId: string): Promise<ApiResult>;
|
|
5
|
+
export declare function handleCreateTemplate(store: PipelineOrchestratorStore, body: string): Promise<ApiResult>;
|
|
6
|
+
export declare function handleUpdateTemplate(store: PipelineOrchestratorStore, templateId: string, body: string): Promise<ApiResult>;
|
|
7
|
+
export declare function handleDeleteTemplate(store: PipelineOrchestratorStore, templateId: string): Promise<ApiResult>;
|
|
8
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/handlers/templates.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAML,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAcrB,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,SAAS,CAAC,CAG9F;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,EAChC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CAqBpB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CAkCpB;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,EAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,CAMpB"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { asNonEmptyString, jsonError, jsonOk, mapStoreError, parseJsonBody, } from "./shared.js";
|
|
2
|
+
const VALID_STAGES = new Set(["connector", "integration", "data", "ai"]);
|
|
3
|
+
function asStageShape(value) {
|
|
4
|
+
if (!Array.isArray(value) || value.length === 0)
|
|
5
|
+
return null;
|
|
6
|
+
const out = [];
|
|
7
|
+
for (const item of value) {
|
|
8
|
+
if (typeof item !== "string" || !VALID_STAGES.has(item))
|
|
9
|
+
return null;
|
|
10
|
+
out.push(item);
|
|
11
|
+
}
|
|
12
|
+
return out;
|
|
13
|
+
}
|
|
14
|
+
export async function handleListTemplates(store) {
|
|
15
|
+
const templates = await store.listTemplates();
|
|
16
|
+
return jsonOk({ templates });
|
|
17
|
+
}
|
|
18
|
+
export async function handleGetTemplate(store, templateId) {
|
|
19
|
+
const template = await store.getTemplate(decodeURIComponent(templateId));
|
|
20
|
+
if (!template) {
|
|
21
|
+
return jsonError(404, `Template not found: ${templateId}`, { code: "not_found" });
|
|
22
|
+
}
|
|
23
|
+
return jsonOk({ template });
|
|
24
|
+
}
|
|
25
|
+
export async function handleCreateTemplate(store, body) {
|
|
26
|
+
const parsed = parseJsonBody(body);
|
|
27
|
+
if (!parsed)
|
|
28
|
+
return jsonError(400, "JSON object body required");
|
|
29
|
+
const id = asNonEmptyString(parsed.id);
|
|
30
|
+
const name = asNonEmptyString(parsed.name);
|
|
31
|
+
const description = asNonEmptyString(parsed.description);
|
|
32
|
+
const stageShape = asStageShape(parsed.stageShape);
|
|
33
|
+
if (!id)
|
|
34
|
+
return jsonError(400, "id is required");
|
|
35
|
+
if (!name)
|
|
36
|
+
return jsonError(400, "name is required");
|
|
37
|
+
if (!description)
|
|
38
|
+
return jsonError(400, "description is required");
|
|
39
|
+
if (!stageShape) {
|
|
40
|
+
return jsonError(400, "stageShape must be a non-empty array of connector|data|ai");
|
|
41
|
+
}
|
|
42
|
+
const input = { id, name, description, stageShape };
|
|
43
|
+
if (typeof parsed.icon === "string")
|
|
44
|
+
input.icon = parsed.icon;
|
|
45
|
+
try {
|
|
46
|
+
const template = await store.createTemplate(input);
|
|
47
|
+
return jsonOk({ template }, 201);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
return mapStoreError(err);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function handleUpdateTemplate(store, templateId, body) {
|
|
54
|
+
const parsed = parseJsonBody(body);
|
|
55
|
+
if (!parsed)
|
|
56
|
+
return jsonError(400, "JSON object body required");
|
|
57
|
+
const patch = {};
|
|
58
|
+
if ("name" in parsed) {
|
|
59
|
+
const name = asNonEmptyString(parsed.name);
|
|
60
|
+
if (!name)
|
|
61
|
+
return jsonError(400, "name must be a non-empty string");
|
|
62
|
+
patch.name = name;
|
|
63
|
+
}
|
|
64
|
+
if ("description" in parsed) {
|
|
65
|
+
if (parsed.description != null && typeof parsed.description !== "string") {
|
|
66
|
+
return jsonError(400, "description must be a string when provided");
|
|
67
|
+
}
|
|
68
|
+
patch.description = typeof parsed.description === "string" ? parsed.description : null;
|
|
69
|
+
}
|
|
70
|
+
if ("icon" in parsed) {
|
|
71
|
+
if (parsed.icon != null && typeof parsed.icon !== "string") {
|
|
72
|
+
return jsonError(400, "icon must be a string when provided");
|
|
73
|
+
}
|
|
74
|
+
patch.icon = typeof parsed.icon === "string" ? parsed.icon : null;
|
|
75
|
+
}
|
|
76
|
+
if ("stageShape" in parsed) {
|
|
77
|
+
const stageShape = asStageShape(parsed.stageShape);
|
|
78
|
+
if (!stageShape) {
|
|
79
|
+
return jsonError(400, "stageShape must be a non-empty array of connector|data|ai");
|
|
80
|
+
}
|
|
81
|
+
patch.stageShape = stageShape;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const template = await store.updateTemplate(decodeURIComponent(templateId), patch);
|
|
85
|
+
return jsonOk({ template });
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
return mapStoreError(err);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export async function handleDeleteTemplate(store, templateId) {
|
|
92
|
+
const deleted = await store.deleteTemplate(decodeURIComponent(templateId));
|
|
93
|
+
if (!deleted) {
|
|
94
|
+
return jsonError(404, `Template not found: ${templateId}`, { code: "not_found" });
|
|
95
|
+
}
|
|
96
|
+
return jsonOk({ deleted: true });
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/handlers/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type FastifyInstance } from "fastify";
|
|
2
|
+
export declare const PIPELINE_ORCHESTRATOR_API_PREFIX = "/api/pipeline-orchestrator";
|
|
3
|
+
export type CreateMemorixPipelineOrchestratorAppOptions = {
|
|
4
|
+
logger?: boolean | {
|
|
5
|
+
level?: string;
|
|
6
|
+
};
|
|
7
|
+
/** Disable in-process schedule ticker (tests). Default true when started via HTTP. */
|
|
8
|
+
enableScheduleTicker?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type StartMemorixPipelineOrchestratorHttpOptions = CreateMemorixPipelineOrchestratorAppOptions & {
|
|
11
|
+
port?: number;
|
|
12
|
+
host?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function createMemorixPipelineOrchestratorApp(options?: CreateMemorixPipelineOrchestratorAppOptions): Promise<{
|
|
15
|
+
app: FastifyInstance;
|
|
16
|
+
stopScheduleTicker?: () => void;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function startMemorixPipelineOrchestratorHttp(options?: StartMemorixPipelineOrchestratorHttpOptions): Promise<{
|
|
19
|
+
close: () => Promise<void>;
|
|
20
|
+
url: string;
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAQxD,eAAO,MAAM,gCAAgC,+BAA+B,CAAC;AAE7E,MAAM,MAAM,2CAA2C,GAAG;IACxD,MAAM,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,2CAA2C,GACrD,2CAA2C,GAAG;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA+CJ,wBAAsB,oCAAoC,CACxD,OAAO,GAAE,2CAAgD,GACxD,OAAO,CAAC;IAAE,GAAG,EAAE,eAAe,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA6CpE;AAED,wBAAsB,oCAAoC,CACxD,OAAO,GAAE,2CAAgD,GACxD,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBtD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { timingSafeEqual } from "node:crypto";
|
|
2
|
+
import Fastify, {} from "fastify";
|
|
3
|
+
import { defaultOrchestratorRuntimePorts, handlePipelineOrchestratorApiRequest, } from "../pipeline-handlers.js";
|
|
4
|
+
import { startScheduleTicker } from "../runtime/schedule-ticker.js";
|
|
5
|
+
import { getPipelineOrchestratorStack } from "../store/stack.js";
|
|
6
|
+
export const PIPELINE_ORCHESTRATOR_API_PREFIX = "/api/pipeline-orchestrator";
|
|
7
|
+
function toPathname(url) {
|
|
8
|
+
const pathOnly = url.split("?")[0] ?? "/";
|
|
9
|
+
if (pathOnly === PIPELINE_ORCHESTRATOR_API_PREFIX)
|
|
10
|
+
return "/";
|
|
11
|
+
if (pathOnly.startsWith(`${PIPELINE_ORCHESTRATOR_API_PREFIX}/`)) {
|
|
12
|
+
return pathOnly.slice(PIPELINE_ORCHESTRATOR_API_PREFIX.length) || "/";
|
|
13
|
+
}
|
|
14
|
+
return pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
15
|
+
}
|
|
16
|
+
async function registerRoutes(app) {
|
|
17
|
+
const handler = async (req, reply) => {
|
|
18
|
+
if (req.method === "OPTIONS") {
|
|
19
|
+
return reply.code(204).send();
|
|
20
|
+
}
|
|
21
|
+
const pathname = toPathname(req.url);
|
|
22
|
+
const query = req.url.includes("?") ? req.url.slice(req.url.indexOf("?")) : "";
|
|
23
|
+
const parsed = new URL(`${pathname}${query}`, "http://127.0.0.1");
|
|
24
|
+
const body = typeof req.body === "string"
|
|
25
|
+
? req.body
|
|
26
|
+
: req.body == null
|
|
27
|
+
? ""
|
|
28
|
+
: JSON.stringify(req.body);
|
|
29
|
+
const result = await handlePipelineOrchestratorApiRequest({
|
|
30
|
+
method: req.method,
|
|
31
|
+
pathname: parsed.pathname,
|
|
32
|
+
searchParams: parsed.searchParams,
|
|
33
|
+
body,
|
|
34
|
+
});
|
|
35
|
+
reply.header("Cache-Control", "no-store");
|
|
36
|
+
return reply.code(result.status).send(result.body);
|
|
37
|
+
};
|
|
38
|
+
for (const url of [PIPELINE_ORCHESTRATOR_API_PREFIX, `${PIPELINE_ORCHESTRATOR_API_PREFIX}/*`]) {
|
|
39
|
+
app.route({
|
|
40
|
+
method: ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
|
|
41
|
+
url,
|
|
42
|
+
handler,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function createMemorixPipelineOrchestratorApp(options = {}) {
|
|
47
|
+
const loggerOpt = options.logger;
|
|
48
|
+
const app = Fastify({
|
|
49
|
+
logger: loggerOpt === false ? false : loggerOpt ?? false,
|
|
50
|
+
bodyLimit: 1_048_576,
|
|
51
|
+
});
|
|
52
|
+
app.setErrorHandler((err, _req, reply) => {
|
|
53
|
+
app.log.error(err);
|
|
54
|
+
const e = err;
|
|
55
|
+
const status = e.statusCode ?? 500;
|
|
56
|
+
return reply.code(status).send({
|
|
57
|
+
error: status >= 500 ? "internal server error" : (e.message ?? "error"),
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
const apiToken = process.env.PIPELINE_ORCHESTRATOR_TOKEN?.trim();
|
|
61
|
+
if (apiToken) {
|
|
62
|
+
const expected = Buffer.from(`Bearer ${apiToken}`);
|
|
63
|
+
app.addHook("onRequest", async (req, reply) => {
|
|
64
|
+
const path = req.url.split("?")[0] ?? "/";
|
|
65
|
+
if (req.method === "OPTIONS" || path === "/health")
|
|
66
|
+
return;
|
|
67
|
+
if (!path.startsWith(PIPELINE_ORCHESTRATOR_API_PREFIX))
|
|
68
|
+
return;
|
|
69
|
+
const header = req.headers.authorization;
|
|
70
|
+
const provided = typeof header === "string" ? Buffer.from(header) : Buffer.alloc(0);
|
|
71
|
+
if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {
|
|
72
|
+
return reply.code(401).send({ error: "unauthorized" });
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
await registerRoutes(app);
|
|
77
|
+
app.get("/health", async () => ({ ok: true, service: "memorix-pipeline-orchestrator" }));
|
|
78
|
+
app.setNotFoundHandler(async (_req, reply) => reply.code(404).send({ error: "not found" }));
|
|
79
|
+
let stopScheduleTicker;
|
|
80
|
+
if (options.enableScheduleTicker) {
|
|
81
|
+
const { store } = await getPipelineOrchestratorStack();
|
|
82
|
+
stopScheduleTicker = startScheduleTicker({
|
|
83
|
+
store,
|
|
84
|
+
ports: defaultOrchestratorRuntimePorts(),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return { app, stopScheduleTicker };
|
|
88
|
+
}
|
|
89
|
+
export async function startMemorixPipelineOrchestratorHttp(options = {}) {
|
|
90
|
+
const { app, stopScheduleTicker } = await createMemorixPipelineOrchestratorApp({
|
|
91
|
+
...options,
|
|
92
|
+
enableScheduleTicker: options.enableScheduleTicker ?? true,
|
|
93
|
+
});
|
|
94
|
+
const port = options.port ??
|
|
95
|
+
Number(process.env.PIPELINE_ORCHESTRATOR_PORT ?? process.env.PORT ?? 5187);
|
|
96
|
+
const host = options.host ?? (process.env.HOST?.trim() || "0.0.0.0");
|
|
97
|
+
await app.listen({ port, host });
|
|
98
|
+
return {
|
|
99
|
+
close: async () => {
|
|
100
|
+
stopScheduleTicker?.();
|
|
101
|
+
await app.close();
|
|
102
|
+
},
|
|
103
|
+
url: `http://${host === "0.0.0.0" ? "127.0.0.1" : host}:${port}`,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/http/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,OAAO,EAAE,EAAwB,MAAM,SAAS,CAAC;AACxD,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,CAAC,MAAM,gCAAgC,GAAG,4BAA4B,CAAC;AAc7E,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC1C,IAAI,QAAQ,KAAK,gCAAgC;QAAE,OAAO,GAAG,CAAC;IAC9D,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,gCAAgC,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,QAAQ,CAAC,KAAK,CAAC,gCAAgC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;IACxE,CAAC;IACD,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAoB;IAChD,MAAM,OAAO,GAAuD,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACvF,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAClE,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC1B,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;gBAChB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,oCAAoC,CAAC;YACxD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI;SACL,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,CAAC,gCAAgC,EAAE,GAAG,gCAAgC,IAAI,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,KAAK,CAAC;YACR,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;YACpE,GAAG;YACH,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,UAAuD,EAAE;IAEzD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK;QACxD,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IAEH,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACvC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,GAAgD,CAAC;QAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC7B,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC;SACxE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,EAAE,CAAC;IACjE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO;YAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC;gBAAE,OAAO;YAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;YACzC,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAChF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC;IACzF,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAE5F,IAAI,kBAA4C,CAAC;IACjD,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,4BAA4B,EAAE,CAAC;QACvD,kBAAkB,GAAG,mBAAmB,CAAC;YACvC,KAAK;YACL,KAAK,EAAE,+BAA+B,EAAE;SACzC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACxD,UAAuD,EAAE;IAEzD,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,MAAM,oCAAoC,CAAC;QAC7E,GAAG,OAAO;QACV,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,IAAI,IAAI;KAC3D,CAAC,CAAC;IACH,MAAM,IAAI,GACR,OAAO,CAAC,IAAI;QACZ,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;IACrE,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,kBAAkB,EAAE,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,GAAG,EAAE,UAAU,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;KACjE,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { MEMORIX_PIPELINE_STEPS_CATALOG, MEMORIX_PIPELINE_DEFINITIONS_CATALOG, MEMORIX_PIPELINE_RUNS_CATALOG, MEMORIX_PIPELINE_TEMPLATES_CATALOG, MEMORIX_PIPELINE_SCHEDULES_CATALOG, } from "./catalog.js";
|
|
2
|
+
export { PIPELINE_STEP_LIFECYCLE_STATUSES, type PipelineStepCategory, type PipelineStageName, type PipelineStepLifecycleStatus, type StepInputSource, type StepRequiredInput, type StepApiCall, type StepRawSaveMode, type StepRawOutput, type StepNormalizedOutput, type StepSnapshotFinalization, type StepSnapshotOutput, type StepStatusBehavior, type StepErrorBehavior, type PipelineStepInvoke, type PipelineStepRequestTemplate, type ObjectTarget, type PipelineObjectTypeRef, type PipelineStepObjectTypes, type PipelineStep, type PipelineStepGraph, type PipelineTemplate, type RegisterPipelineTemplateInput, type UpdatePipelineTemplateInput, type PipelineDefinition, type RegisterPipelineDefinitionInput, type UpdatePipelineDefinitionInput, type PipelineRunStatus, type PipelineRunMode, type StepRun, type PipelineRun, type StartPipelineRunInput, type PipelineScheduleFrequency, type PipelineScheduleStatus, type PipelineSchedule, type RegisterPipelineScheduleInput, type UpdatePipelineScheduleInput, type PipelineStepRecord, } from "./types.js";
|
|
3
|
+
export { rawCollection, snapshotsCollection, contentCollection, resolveRawCollection, resolveSnapshotsCollection, } from "./collections.js";
|
|
4
|
+
export { validatePipelineStep, validatePipelineStepGraph, type PipelineStepValidationIssue, type PipelineStepValidationResult, } from "./validate.js";
|
|
5
|
+
export { topologicalOrder, readySteps, dependenciesSatisfied, PipelineStepGraphError, } from "./graph.js";
|
|
6
|
+
export { getContextPath, setContextPath, mergeRunContext, isMissingContextValue, missingRequiredRunInputs, } from "./runtime/run-context.js";
|
|
7
|
+
export { fetchInterfacesStep, normalizeInterfacesStep, authenticateStep, fetchDeviceIdentityStep, fetchScopesStep, exampleFirewallPipelineSteps, } from "./examples/fetch-interfaces.js";
|
|
8
|
+
export { type PipelineOrchestratorStore, OrchestratorConflictError, OrchestratorNotFoundError, OrchestratorValidationError, } from "./store/types.js";
|
|
9
|
+
export { createMemoryPipelineOrchestratorStore } from "./store/memory.js";
|
|
10
|
+
export { createCataloxPipelineOrchestratorStore, type CreateCataloxPipelineOrchestratorStoreOptions, } from "./store/catalox.js";
|
|
11
|
+
export { getPipelineOrchestratorStack, closePipelineOrchestratorStack, setPipelineOrchestratorStoreForTests, type PipelineOrchestratorStack, } from "./store/stack.js";
|
|
12
|
+
export type { RawStore, SnapshotStore, ServiceInvoker, OrchestratorRuntimePorts, OperationalStores, } from "./runtime/ports.js";
|
|
13
|
+
export { createMemoryRuntimePorts, createMemoryRawStore, createMemorySnapshotStore, createStubServiceInvoker, createMemoryOperationalStores, } from "./runtime/memory-ports.js";
|
|
14
|
+
export { createSandboxRuntimePorts, createSandboxServiceInvoker, sandboxStepOutput, } from "./runtime/sandbox-ports.js";
|
|
15
|
+
export { createPipelineServicesInvoker } from "./runtime/pipeline-services-invoker.js";
|
|
16
|
+
export { executeStep, resolveStepInputs } from "./runtime/execute-step.js";
|
|
17
|
+
export { buildInvokeEnvelope, collectInputRefs, type BuildInvokeEnvelopeOptions, } from "./runtime/build-invoke-envelope.js";
|
|
18
|
+
export { startPipelineRun, cancelPipelineRun, retryPipelineRunFromStep, resumePipelineRun, } from "./runtime/execute-run.js";
|
|
19
|
+
export { claimRun, claimStep, getRunClaim, reconcileExpiredClaims, type LeaseHandle, type ClaimRunOptions, type ClaimStepOptions, type ReconcileResult, } from "./runtime/leases.js";
|
|
20
|
+
export { savePendingCursor, commitCheckpoint, preservePendingAcrossResume, tombstoneCheckpoint, listCheckpoints, type CheckpointContext, } from "./runtime/checkpoints.js";
|
|
21
|
+
export { startScheduleTicker, type CatchUpPolicy, type ScheduleTickerOptions, } from "./runtime/schedule-ticker.js";
|
|
22
|
+
export { computeNextRunAt, requiredInputsForMode } from "./runtime/schedule-utils.js";
|
|
23
|
+
export { createMemorixPipelineOrchestratorApp, startMemorixPipelineOrchestratorHttp, PIPELINE_ORCHESTRATOR_API_PREFIX, type CreateMemorixPipelineOrchestratorAppOptions, type StartMemorixPipelineOrchestratorHttpOptions, } from "./http/server.js";
|
|
24
|
+
export { handlePipelineOrchestratorApiRequest, setOrchestratorRuntimePortsForTests, defaultOrchestratorRuntimePorts, type PipelineOrchestratorApiRequest, } from "./pipeline-handlers.js";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { MEMORIX_PIPELINE_STEPS_CATALOG, MEMORIX_PIPELINE_DEFINITIONS_CATALOG, MEMORIX_PIPELINE_RUNS_CATALOG, MEMORIX_PIPELINE_TEMPLATES_CATALOG, MEMORIX_PIPELINE_SCHEDULES_CATALOG, } from "./catalog.js";
|
|
2
|
+
export { PIPELINE_STEP_LIFECYCLE_STATUSES, } from "./types.js";
|
|
3
|
+
export { rawCollection, snapshotsCollection, contentCollection, resolveRawCollection, resolveSnapshotsCollection, } from "./collections.js";
|
|
4
|
+
export { validatePipelineStep, validatePipelineStepGraph, } from "./validate.js";
|
|
5
|
+
export { topologicalOrder, readySteps, dependenciesSatisfied, PipelineStepGraphError, } from "./graph.js";
|
|
6
|
+
export { getContextPath, setContextPath, mergeRunContext, isMissingContextValue, missingRequiredRunInputs, } from "./runtime/run-context.js";
|
|
7
|
+
export { fetchInterfacesStep, normalizeInterfacesStep, authenticateStep, fetchDeviceIdentityStep, fetchScopesStep, exampleFirewallPipelineSteps, } from "./examples/fetch-interfaces.js";
|
|
8
|
+
export { OrchestratorConflictError, OrchestratorNotFoundError, OrchestratorValidationError, } from "./store/types.js";
|
|
9
|
+
export { createMemoryPipelineOrchestratorStore } from "./store/memory.js";
|
|
10
|
+
export { createCataloxPipelineOrchestratorStore, } from "./store/catalox.js";
|
|
11
|
+
export { getPipelineOrchestratorStack, closePipelineOrchestratorStack, setPipelineOrchestratorStoreForTests, } from "./store/stack.js";
|
|
12
|
+
export { createMemoryRuntimePorts, createMemoryRawStore, createMemorySnapshotStore, createStubServiceInvoker, createMemoryOperationalStores, } from "./runtime/memory-ports.js";
|
|
13
|
+
export { createSandboxRuntimePorts, createSandboxServiceInvoker, sandboxStepOutput, } from "./runtime/sandbox-ports.js";
|
|
14
|
+
export { createPipelineServicesInvoker } from "./runtime/pipeline-services-invoker.js";
|
|
15
|
+
export { executeStep, resolveStepInputs } from "./runtime/execute-step.js";
|
|
16
|
+
export { buildInvokeEnvelope, collectInputRefs, } from "./runtime/build-invoke-envelope.js";
|
|
17
|
+
export { startPipelineRun, cancelPipelineRun, retryPipelineRunFromStep, resumePipelineRun, } from "./runtime/execute-run.js";
|
|
18
|
+
export { claimRun, claimStep, getRunClaim, reconcileExpiredClaims, } from "./runtime/leases.js";
|
|
19
|
+
export { savePendingCursor, commitCheckpoint, preservePendingAcrossResume, tombstoneCheckpoint, listCheckpoints, } from "./runtime/checkpoints.js";
|
|
20
|
+
export { startScheduleTicker, } from "./runtime/schedule-ticker.js";
|
|
21
|
+
export { computeNextRunAt, requiredInputsForMode } from "./runtime/schedule-utils.js";
|
|
22
|
+
export { createMemorixPipelineOrchestratorApp, startMemorixPipelineOrchestratorHttp, PIPELINE_ORCHESTRATOR_API_PREFIX, } from "./http/server.js";
|
|
23
|
+
export { handlePipelineOrchestratorApiRequest, setOrchestratorRuntimePortsForTests, defaultOrchestratorRuntimePorts, } from "./pipeline-handlers.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,oCAAoC,EACpC,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,gCAAgC,GAsCjC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAEL,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qCAAqC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EACL,sCAAsC,GAEvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,oCAAoC,GAErC,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,sBAAsB,GAKvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,GAEhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,GAGpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACpC,gCAAgC,GAGjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oCAAoC,EACpC,mCAAmC,EACnC,+BAA+B,GAEhC,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ApiResult } from "./handlers/shared.js";
|
|
2
|
+
import type { OrchestratorRuntimePorts } from "./runtime/ports.js";
|
|
3
|
+
export type PipelineOrchestratorApiRequest = {
|
|
4
|
+
method: string;
|
|
5
|
+
pathname: string;
|
|
6
|
+
searchParams: URLSearchParams;
|
|
7
|
+
body: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function setOrchestratorRuntimePortsForTests(ports: OrchestratorRuntimePorts | null): void;
|
|
10
|
+
export declare function defaultOrchestratorRuntimePorts(): OrchestratorRuntimePorts;
|
|
11
|
+
export declare function handlePipelineOrchestratorApiRequest(req: PipelineOrchestratorApiRequest): Promise<ApiResult>;
|
|
12
|
+
//# sourceMappingURL=pipeline-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-handlers.d.ts","sourceRoot":"","sources":["../src/pipeline-handlers.ts"],"names":[],"mappings":"AAgDA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKnE,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,wBAAwB,GAAG,IAAI,GACrC,IAAI,CAEN;AAED,wBAAgB,+BAA+B,IAAI,wBAAwB,CAK1E;AASD,wBAAsB,oCAAoC,CACxD,GAAG,EAAE,8BAA8B,GAClC,OAAO,CAAC,SAAS,CAAC,CA+LpB"}
|