@bluelibs/runner-dev 5.0.1 → 5.3.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/AI.md +107 -1
- package/README.md +66 -6
- package/dist/cli/overview.js +20 -3
- package/dist/cli/overview.js.map +1 -1
- package/dist/generated/resolvers-types.d.ts +213 -6
- package/dist/index.d.ts +4 -0
- package/dist/mcp/projectOverview.js +20 -3
- package/dist/mcp/projectOverview.js.map +1 -1
- package/dist/resources/docs.generator.resource.d.ts +1 -0
- package/dist/resources/durable.workflow.tag.d.ts +2 -0
- package/dist/resources/durable.workflow.tag.js +28 -0
- package/dist/resources/durable.workflow.tag.js.map +1 -0
- package/dist/resources/graphql-accumulator.resource.js +1 -0
- package/dist/resources/graphql-accumulator.resource.js.map +1 -1
- package/dist/resources/graphql.query.task.d.ts +2 -0
- package/dist/resources/introspector.cli.resource.js +27 -1
- package/dist/resources/introspector.cli.resource.js.map +1 -1
- package/dist/resources/introspector.resource.d.ts +1 -0
- package/dist/resources/introspector.resource.js +4 -2
- package/dist/resources/introspector.resource.js.map +1 -1
- package/dist/resources/live.resource.d.ts +3 -0
- package/dist/resources/live.resource.js +26 -0
- package/dist/resources/live.resource.js.map +1 -1
- package/dist/resources/models/Introspector.d.ts +58 -7
- package/dist/resources/models/Introspector.js +190 -15
- package/dist/resources/models/Introspector.js.map +1 -1
- package/dist/resources/models/durable.runtime.d.ts +5 -3
- package/dist/resources/models/durable.runtime.js +52 -10
- package/dist/resources/models/durable.runtime.js.map +1 -1
- package/dist/resources/models/durable.tools.d.ts +4 -0
- package/dist/resources/models/durable.tools.js +34 -0
- package/dist/resources/models/durable.tools.js.map +1 -1
- package/dist/resources/models/initializeFromStore.js +147 -6
- package/dist/resources/models/initializeFromStore.js.map +1 -1
- package/dist/resources/models/initializeFromStore.utils.d.ts +14 -1
- package/dist/resources/models/initializeFromStore.utils.js +59 -1
- package/dist/resources/models/initializeFromStore.utils.js.map +1 -1
- package/dist/resources/models/introspector.tools.d.ts +8 -0
- package/dist/resources/models/introspector.tools.js +63 -0
- package/dist/resources/models/introspector.tools.js.map +1 -1
- package/dist/resources/models/tunnel.tools.d.ts +3 -0
- package/dist/resources/models/tunnel.tools.js +35 -0
- package/dist/resources/models/tunnel.tools.js.map +1 -0
- package/dist/resources/routeHandlers/createLiveStreamHandler.d.ts +16 -0
- package/dist/resources/routeHandlers/createLiveStreamHandler.js +127 -0
- package/dist/resources/routeHandlers/createLiveStreamHandler.js.map +1 -0
- package/dist/resources/routeHandlers/getDocsData.js +20 -0
- package/dist/resources/routeHandlers/getDocsData.js.map +1 -1
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +2 -0
- package/dist/resources/routeHandlers/requestCorrelation.d.ts +11 -0
- package/dist/resources/routeHandlers/requestCorrelation.js +29 -0
- package/dist/resources/routeHandlers/requestCorrelation.js.map +1 -0
- package/dist/resources/server.resource.d.ts +2 -0
- package/dist/resources/server.resource.js +13 -1
- package/dist/resources/server.resource.js.map +1 -1
- package/dist/resources/swap.resource.d.ts +1 -0
- package/dist/resources/ui.static.js +6 -3
- package/dist/resources/ui.static.js.map +1 -1
- package/dist/schema/index.js +4 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +40 -0
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/query.js +23 -0
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/types/AllType.js +8 -0
- package/dist/schema/types/AllType.js.map +1 -1
- package/dist/schema/types/AsyncContextType.js +21 -1
- package/dist/schema/types/AsyncContextType.js.map +1 -1
- package/dist/schema/types/BaseElementCommon.js +10 -0
- package/dist/schema/types/BaseElementCommon.js.map +1 -1
- package/dist/schema/types/InterceptorOwnersType.d.ts +2 -0
- package/dist/schema/types/InterceptorOwnersType.js +63 -0
- package/dist/schema/types/InterceptorOwnersType.js.map +1 -0
- package/dist/schema/types/LiveType.js +14 -76
- package/dist/schema/types/LiveType.js.map +1 -1
- package/dist/schema/types/ResourceType.js +12 -9
- package/dist/schema/types/ResourceType.js.map +1 -1
- package/dist/schema/types/RunOptionsType.d.ts +2 -0
- package/dist/schema/types/RunOptionsType.js +71 -0
- package/dist/schema/types/RunOptionsType.js.map +1 -0
- package/dist/schema/types/TaskType.js +36 -4
- package/dist/schema/types/TaskType.js.map +1 -1
- package/dist/schema/types/index.d.ts +2 -0
- package/dist/schema/types/index.js +5 -1
- package/dist/schema/types/index.js.map +1 -1
- package/dist/ui/.vite/manifest.json +2 -2
- package/dist/ui/assets/docs-BhRuaJ5l.css +1 -0
- package/dist/ui/assets/docs-H4oDZj7p.js +302 -0
- package/dist/ui/assets/docs-H4oDZj7p.js.map +1 -0
- package/dist/ui-test/assets/app.js +1 -1
- package/dist/utils/healthCollectors.d.ts +37 -0
- package/dist/utils/healthCollectors.js +147 -0
- package/dist/utils/healthCollectors.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -4
- package/dist/ui/assets/docs-CLK_iFXw.css +0 -1
- package/dist/ui/assets/docs-DnmhGz-y.js +0 -378
- package/dist/ui/assets/docs-DnmhGz-y.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LEGACY_TUNNEL_TAG_ID = exports.TUNNEL_TAG_ID = void 0;
|
|
4
|
+
exports.hasTunnelTag = hasTunnelTag;
|
|
5
|
+
exports.TUNNEL_TAG_ID = "globals.tags.tunnel";
|
|
6
|
+
exports.LEGACY_TUNNEL_TAG_ID = "runner-dev.tunnel";
|
|
7
|
+
function readTagId(tagLike) {
|
|
8
|
+
if (typeof tagLike === "string")
|
|
9
|
+
return tagLike;
|
|
10
|
+
if (!tagLike || typeof tagLike !== "object")
|
|
11
|
+
return null;
|
|
12
|
+
const tagRecord = tagLike;
|
|
13
|
+
if (typeof tagRecord.id === "string")
|
|
14
|
+
return tagRecord.id;
|
|
15
|
+
if (typeof tagRecord.tag?.id === "string")
|
|
16
|
+
return tagRecord.tag.id;
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
function hasTunnelTag(tags) {
|
|
20
|
+
if (!Array.isArray(tags))
|
|
21
|
+
return false;
|
|
22
|
+
return tags.some((tagLike) => {
|
|
23
|
+
const tagId = readTagId(tagLike);
|
|
24
|
+
if (!tagId)
|
|
25
|
+
return false;
|
|
26
|
+
const lowerTagId = tagId.toLowerCase();
|
|
27
|
+
if (lowerTagId === exports.TUNNEL_TAG_ID)
|
|
28
|
+
return true;
|
|
29
|
+
if (lowerTagId === exports.LEGACY_TUNNEL_TAG_ID)
|
|
30
|
+
return true;
|
|
31
|
+
// Backward-compatible fallback for older custom tags, but avoid known false positives.
|
|
32
|
+
return /\btunnel\b/i.test(tagId) && !/tunnelpolicy/i.test(tagId);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=tunnel.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tunnel.tools.js","sourceRoot":"","sources":["../../../src/resources/models/tunnel.tools.ts"],"names":[],"mappings":";;;AAcA,oCAcC;AA5BY,QAAA,aAAa,GAAG,qBAAqB,CAAC;AACtC,QAAA,oBAAoB,GAAG,mBAAmB,CAAC;AAExD,SAAS,SAAS,CAAC,OAAgB;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzD,MAAM,SAAS,GAAG,OAAmD,CAAC;IACtE,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,EAAE,CAAC;IAC1D,IAAI,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;IAEnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,YAAY,CAAC,IAAkC;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,UAAU,KAAK,qBAAa;YAAE,OAAO,IAAI,CAAC;QAC9C,IAAI,UAAU,KAAK,4BAAoB;YAAE,OAAO,IAAI,CAAC;QAErD,uFAAuF;QACvF,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Request, Response } from "express";
|
|
2
|
+
import type { Live } from "../live.resource";
|
|
3
|
+
export interface LiveStreamDeps {
|
|
4
|
+
live: Live;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates an Express route handler that streams live telemetry data via
|
|
8
|
+
* Server-Sent Events (SSE). The handler:
|
|
9
|
+
*
|
|
10
|
+
* 1. Subscribes to `live.onRecord()` for near-instant push of new entries.
|
|
11
|
+
* 2. Debounces rapid bursts (100 ms) to avoid flooding the connection.
|
|
12
|
+
* 3. Pushes system health snapshots every 2 s on a separate cadence.
|
|
13
|
+
* 4. Sends heartbeat comments every 15 s to keep proxies from closing idle connections.
|
|
14
|
+
* 5. Cleans up all timers and subscriptions on client disconnect.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createLiveStreamHandler({ live }: LiveStreamDeps): (_req: Request, res: Response) => void;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLiveStreamHandler = createLiveStreamHandler;
|
|
4
|
+
const healthCollectors_1 = require("../../utils/healthCollectors");
|
|
5
|
+
/** Debounce interval (ms) for batching rapid record notifications into a single SSE push. */
|
|
6
|
+
const DEBOUNCE_MS = 100;
|
|
7
|
+
/** How often (ms) system health metrics (memory, cpu, eventLoop, gc) are pushed. */
|
|
8
|
+
const HEALTH_INTERVAL_MS = 2_000;
|
|
9
|
+
/** How often (ms) a heartbeat comment is sent to keep the connection alive through proxies. */
|
|
10
|
+
const HEARTBEAT_INTERVAL_MS = 15_000;
|
|
11
|
+
/** Maximum number of entries per category in a single SSE push. */
|
|
12
|
+
const MAX_ENTRIES_PER_PUSH = 1_000;
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Helpers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
function safeStringify(value) {
|
|
17
|
+
if (value == null)
|
|
18
|
+
return null;
|
|
19
|
+
if (typeof value === "string")
|
|
20
|
+
return value;
|
|
21
|
+
try {
|
|
22
|
+
return JSON.stringify(value);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return String(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates an Express route handler that streams live telemetry data via
|
|
30
|
+
* Server-Sent Events (SSE). The handler:
|
|
31
|
+
*
|
|
32
|
+
* 1. Subscribes to `live.onRecord()` for near-instant push of new entries.
|
|
33
|
+
* 2. Debounces rapid bursts (100 ms) to avoid flooding the connection.
|
|
34
|
+
* 3. Pushes system health snapshots every 2 s on a separate cadence.
|
|
35
|
+
* 4. Sends heartbeat comments every 15 s to keep proxies from closing idle connections.
|
|
36
|
+
* 5. Cleans up all timers and subscriptions on client disconnect.
|
|
37
|
+
*/
|
|
38
|
+
function createLiveStreamHandler({ live }) {
|
|
39
|
+
return (_req, res) => {
|
|
40
|
+
// --- SSE headers ---------------------------------------------------------
|
|
41
|
+
res.setHeader("Content-Type", "text/event-stream");
|
|
42
|
+
res.setHeader("Cache-Control", "no-cache");
|
|
43
|
+
res.setHeader("Connection", "keep-alive");
|
|
44
|
+
res.setHeader("X-Accel-Buffering", "no"); // nginx
|
|
45
|
+
res.flushHeaders();
|
|
46
|
+
let cursor = 0; // start from the beginning so the initial push picks up existing entries
|
|
47
|
+
let debounceTimer = null;
|
|
48
|
+
let closed = false;
|
|
49
|
+
// --- Write helpers -------------------------------------------------------
|
|
50
|
+
/** Write a single SSE frame. */
|
|
51
|
+
const sendEvent = (eventName, data) => {
|
|
52
|
+
if (closed)
|
|
53
|
+
return;
|
|
54
|
+
try {
|
|
55
|
+
res.write(`event: ${eventName}\ndata: ${JSON.stringify(data)}\n\n`);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
cleanup();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
/** Read new telemetry entries since `cursor`, serialize, and push. */
|
|
62
|
+
const pushDelta = () => {
|
|
63
|
+
if (closed)
|
|
64
|
+
return;
|
|
65
|
+
const query = { afterTimestamp: cursor, last: MAX_ENTRIES_PER_PUSH };
|
|
66
|
+
const logs = live
|
|
67
|
+
.getLogs(query)
|
|
68
|
+
.map((l) => ({ ...l, data: safeStringify(l.data) }));
|
|
69
|
+
const emissions = live
|
|
70
|
+
.getEmissions(query)
|
|
71
|
+
.map((e) => ({ ...e, payload: safeStringify(e.payload) }));
|
|
72
|
+
const errors = live
|
|
73
|
+
.getErrors(query)
|
|
74
|
+
.map((e) => ({ ...e, data: safeStringify(e.data) }));
|
|
75
|
+
const runs = live.getRuns(query);
|
|
76
|
+
if (logs.length + emissions.length + errors.length + runs.length === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Advance cursor past everything we just delivered
|
|
80
|
+
const latest = (0, healthCollectors_1.latestTimestamp)(logs, emissions, errors, runs);
|
|
81
|
+
if (latest !== undefined)
|
|
82
|
+
cursor = latest;
|
|
83
|
+
sendEvent("telemetry", { logs, emissions, errors, runs });
|
|
84
|
+
};
|
|
85
|
+
/** Debounced notification handler — batches rapid record calls. */
|
|
86
|
+
const onRecordNotification = () => {
|
|
87
|
+
if (closed || debounceTimer)
|
|
88
|
+
return;
|
|
89
|
+
debounceTimer = setTimeout(() => {
|
|
90
|
+
debounceTimer = null;
|
|
91
|
+
pushDelta();
|
|
92
|
+
}, DEBOUNCE_MS);
|
|
93
|
+
};
|
|
94
|
+
// --- Subscriptions & timers ----------------------------------------------
|
|
95
|
+
const unsubscribe = live.onRecord(onRecordNotification);
|
|
96
|
+
const healthTimer = setInterval(() => {
|
|
97
|
+
if (!closed)
|
|
98
|
+
sendEvent("health", (0, healthCollectors_1.getHealthSnapshot)());
|
|
99
|
+
}, HEALTH_INTERVAL_MS);
|
|
100
|
+
const heartbeatTimer = setInterval(() => {
|
|
101
|
+
if (!closed)
|
|
102
|
+
res.write(": heartbeat\n\n");
|
|
103
|
+
}, HEARTBEAT_INTERVAL_MS);
|
|
104
|
+
// --- Initial push --------------------------------------------------------
|
|
105
|
+
sendEvent("health", (0, healthCollectors_1.getHealthSnapshot)());
|
|
106
|
+
pushDelta(); // push any pre-existing entries
|
|
107
|
+
// If nothing existed, advance cursor to now so future pushes are incremental
|
|
108
|
+
if (cursor === 0)
|
|
109
|
+
cursor = Date.now() - 1;
|
|
110
|
+
// --- Cleanup on disconnect -----------------------------------------------
|
|
111
|
+
const cleanup = () => {
|
|
112
|
+
if (closed)
|
|
113
|
+
return;
|
|
114
|
+
closed = true;
|
|
115
|
+
unsubscribe();
|
|
116
|
+
clearInterval(healthTimer);
|
|
117
|
+
clearInterval(heartbeatTimer);
|
|
118
|
+
if (debounceTimer) {
|
|
119
|
+
clearTimeout(debounceTimer);
|
|
120
|
+
debounceTimer = null;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
res.on("close", cleanup);
|
|
124
|
+
res.on("error", cleanup);
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=createLiveStreamHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLiveStreamHandler.js","sourceRoot":"","sources":["../../../src/resources/routeHandlers/createLiveStreamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const initializeFromStore_1 = require("../models/initializeFromStore");
|
|
|
8
8
|
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
10
|
const help_1 = require("../../mcp/help");
|
|
11
|
+
const durable_runtime_1 = require("../models/durable.runtime");
|
|
11
12
|
// Serve JSON data for docs UI to fetch client-side
|
|
12
13
|
function createDocsDataRouteHandler(config) {
|
|
13
14
|
return async (req, res) => {
|
|
@@ -19,6 +20,25 @@ function createDocsDataRouteHandler(config) {
|
|
|
19
20
|
logger.info(`Serving documentation data${message}.`);
|
|
20
21
|
(0, initializeFromStore_1.initializeFromStore)(introspector, config.store);
|
|
21
22
|
const data = introspector.serialize();
|
|
23
|
+
// Enrich tasks with durable metadata for docs UI.
|
|
24
|
+
if (Array.isArray(data.tasks)) {
|
|
25
|
+
for (const task of data.tasks) {
|
|
26
|
+
const taskId = String(task?.id || "");
|
|
27
|
+
if (!taskId)
|
|
28
|
+
continue;
|
|
29
|
+
const isDurable = introspector.isDurableTask(taskId);
|
|
30
|
+
const dependencyIds = Array.isArray(task?.dependsOn)
|
|
31
|
+
? task.dependsOn.map((depId) => String(depId))
|
|
32
|
+
: [];
|
|
33
|
+
task.isDurable = isDurable;
|
|
34
|
+
task.durableResourceId = isDurable
|
|
35
|
+
? (0, durable_runtime_1.findDurableResourceIdFromStore)(config.store, taskId, dependencyIds) ||
|
|
36
|
+
introspector.getDurableResourceForTask(taskId)?.id ||
|
|
37
|
+
null
|
|
38
|
+
: null;
|
|
39
|
+
task.flowShape = null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
22
42
|
// Attach pre-fetched coverage percentages when coverage is available.
|
|
23
43
|
if (config.coverage) {
|
|
24
44
|
const attach = async (arr) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDocsData.js","sourceRoot":"","sources":["../../../src/resources/routeHandlers/getDocsData.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"getDocsData.js","sourceRoot":"","sources":["../../../src/resources/routeHandlers/getDocsData.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export declare const registerHttpRoutes: import("@bluelibs/runner").IHook<{
|
|
|
5
5
|
logger: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Logger>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
6
6
|
introspector: import("@bluelibs/runner").IResource<void, Promise<import("../..").Introspector>, {
|
|
7
7
|
store: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Store>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
8
|
+
runtime: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").RunResult<unknown>>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
8
9
|
}, any, {
|
|
9
10
|
title: string;
|
|
10
11
|
description: string;
|
|
@@ -32,6 +33,7 @@ export declare const registerHttpRoutes: import("@bluelibs/runner").IHook<{
|
|
|
32
33
|
taskRunner: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").TaskRunner>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
33
34
|
introspector: import("@bluelibs/runner").IResource<void, Promise<import("../..").Introspector>, {
|
|
34
35
|
store: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Store>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
36
|
+
runtime: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").RunResult<unknown>>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
35
37
|
}, any, {
|
|
36
38
|
title: string;
|
|
37
39
|
description: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Request, Response, NextFunction } from "express";
|
|
2
|
+
/**
|
|
3
|
+
* Express middleware that wraps each incoming request in an AsyncLocalStorage
|
|
4
|
+
* context carrying a fresh `correlationId`. This ensures all logs, emissions,
|
|
5
|
+
* errors, and runs recorded during the request automatically inherit a traceId
|
|
6
|
+
* — even when the code is not inside a task/hook execution.
|
|
7
|
+
*
|
|
8
|
+
* If a context already exists (e.g. a task triggered the request internally),
|
|
9
|
+
* the existing correlationId is preserved.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createRequestCorrelationMiddleware(): (req: Request, _res: Response, next: NextFunction) => void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRequestCorrelationMiddleware = createRequestCorrelationMiddleware;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const telemetry_chain_1 = require("../telemetry.chain");
|
|
6
|
+
/**
|
|
7
|
+
* Express middleware that wraps each incoming request in an AsyncLocalStorage
|
|
8
|
+
* context carrying a fresh `correlationId`. This ensures all logs, emissions,
|
|
9
|
+
* errors, and runs recorded during the request automatically inherit a traceId
|
|
10
|
+
* — even when the code is not inside a task/hook execution.
|
|
11
|
+
*
|
|
12
|
+
* If a context already exists (e.g. a task triggered the request internally),
|
|
13
|
+
* the existing correlationId is preserved.
|
|
14
|
+
*/
|
|
15
|
+
function createRequestCorrelationMiddleware() {
|
|
16
|
+
return (req, _res, next) => {
|
|
17
|
+
const existing = telemetry_chain_1.runContext.getStore();
|
|
18
|
+
if (existing) {
|
|
19
|
+
// Already inside a run context — don't override
|
|
20
|
+
return next();
|
|
21
|
+
}
|
|
22
|
+
const raw = req.headers["x-correlation-id"];
|
|
23
|
+
const correlationId = (Array.isArray(raw) ? raw[0] : raw) || (0, node_crypto_1.randomUUID)();
|
|
24
|
+
telemetry_chain_1.runContext.run({ chain: [], correlationId }, () => {
|
|
25
|
+
next();
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=requestCorrelation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestCorrelation.js","sourceRoot":"","sources":["../../../src/resources/routeHandlers/requestCorrelation.ts"],"names":[],"mappings":";;AAaA,gFAeC;AA3BD,6CAAyC;AACzC,wDAAgD;AAEhD;;;;;;;;GAQG;AACH,SAAgB,kCAAkC;IAChD,OAAO,CAAC,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QAC1D,MAAM,QAAQ,GAAG,4BAAU,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,gDAAgD;YAChD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAA,wBAAU,GAAE,CAAC;QAE1E,4BAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE;YAChD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -19,6 +19,7 @@ export declare const serverResource: import("@bluelibs/runner").IResource<Server
|
|
|
19
19
|
logger: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Logger>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
20
20
|
introspector: import("@bluelibs/runner").IResource<void, Promise<import("..").Introspector>, {
|
|
21
21
|
store: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Store>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
22
|
+
runtime: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").RunResult<unknown>>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
22
23
|
}, any, {
|
|
23
24
|
title: string;
|
|
24
25
|
description: string;
|
|
@@ -46,6 +47,7 @@ export declare const serverResource: import("@bluelibs/runner").IResource<Server
|
|
|
46
47
|
taskRunner: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").TaskRunner>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
47
48
|
introspector: import("@bluelibs/runner").IResource<void, Promise<import("..").Introspector>, {
|
|
48
49
|
store: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Store>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
50
|
+
runtime: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").RunResult<unknown>>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
49
51
|
}, any, {
|
|
50
52
|
title: string;
|
|
51
53
|
description: string;
|
|
@@ -29,6 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.serverResource = void 0;
|
|
30
30
|
const runner_1 = require("@bluelibs/runner");
|
|
31
31
|
const server_1 = require("@apollo/server");
|
|
32
|
+
const disabled_1 = require("@apollo/server/plugin/disabled");
|
|
32
33
|
const graphql_accumulator_resource_1 = require("./graphql-accumulator.resource");
|
|
33
34
|
const introspector_resource_1 = require("./introspector.resource");
|
|
34
35
|
const live_resource_1 = require("./live.resource");
|
|
@@ -42,6 +43,8 @@ const ui_static_1 = require("./ui.static");
|
|
|
42
43
|
const printSchema_1 = require("graphql/utilities/printSchema");
|
|
43
44
|
const getDocsData_1 = require("./routeHandlers/getDocsData");
|
|
44
45
|
const createDocsServeHandler_1 = require("./routeHandlers/createDocsServeHandler");
|
|
46
|
+
const createLiveStreamHandler_1 = require("./routeHandlers/createLiveStreamHandler");
|
|
47
|
+
const requestCorrelation_1 = require("./routeHandlers/requestCorrelation");
|
|
45
48
|
const voyager_html_1 = __importDefault(require("./templates/voyager.html"));
|
|
46
49
|
exports.serverResource = (0, runner_1.resource)({
|
|
47
50
|
id: "runner-dev.resources.server",
|
|
@@ -63,12 +66,19 @@ exports.serverResource = (0, runner_1.resource)({
|
|
|
63
66
|
logger = logger.with({
|
|
64
67
|
source: exports.serverResource.id,
|
|
65
68
|
});
|
|
66
|
-
const server = new server_1.ApolloServer({
|
|
69
|
+
const server = new server_1.ApolloServer({
|
|
70
|
+
schema: graphql.getSchema(),
|
|
71
|
+
plugins: [(0, disabled_1.ApolloServerPluginLandingPageDisabled)()],
|
|
72
|
+
});
|
|
67
73
|
const port = config.port ?? 1337;
|
|
68
74
|
const host = config.host;
|
|
69
75
|
const _apolloConfig = config.apollo ?? {};
|
|
70
76
|
await server.start();
|
|
71
77
|
const app = (0, express_1.default)();
|
|
78
|
+
// Wrap every incoming request in an AsyncLocalStorage context with a fresh
|
|
79
|
+
// correlationId so that all logs / emissions / errors within the request
|
|
80
|
+
// automatically receive a traceId — even outside task execution.
|
|
81
|
+
app.use((0, requestCorrelation_1.createRequestCorrelationMiddleware)());
|
|
72
82
|
// GraphQL endpoint
|
|
73
83
|
app.use("/graphql", express_1.default.json(), (req, res, next) => {
|
|
74
84
|
// logger.debug("GraphQL request", req.body);
|
|
@@ -85,6 +95,8 @@ exports.serverResource = (0, runner_1.resource)({
|
|
|
85
95
|
};
|
|
86
96
|
},
|
|
87
97
|
}));
|
|
98
|
+
// SSE endpoint for live telemetry streaming
|
|
99
|
+
app.get("/live/stream", (0, createLiveStreamHandler_1.createLiveStreamHandler)({ live }));
|
|
88
100
|
// Voyager UI at /voyager (simple CDN-based standalone page)
|
|
89
101
|
app.get("/voyager", (_req, res) => {
|
|
90
102
|
const html = voyager_html_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.resource.js","sourceRoot":"","sources":["../../src/resources/server.resource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAqD;AACrD,2CAA8C;
|
|
1
|
+
{"version":3,"file":"server.resource.js","sourceRoot":"","sources":["../../src/resources/server.resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,7 @@ export declare const swapManager: import("@bluelibs/runner").IResource<void, Pro
|
|
|
44
44
|
taskRunner: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").TaskRunner>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
45
45
|
introspector: import("@bluelibs/runner").IResource<void, Promise<import("..").Introspector>, {
|
|
46
46
|
store: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").Store>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
47
|
+
runtime: import("@bluelibs/runner").IResource<void, Promise<import("@bluelibs/runner").RunResult<unknown>>, {}, any, any, import("@bluelibs/runner").TagType[], import("@bluelibs/runner").ResourceMiddlewareAttachmentType[]>;
|
|
47
48
|
}, any, {
|
|
48
49
|
title: string;
|
|
49
50
|
description: string;
|
|
@@ -39,7 +39,9 @@ function createUiStaticRouter(uiDir) {
|
|
|
39
39
|
? req.path.slice(1)
|
|
40
40
|
: req.path;
|
|
41
41
|
const filePath = path.join(uiDir, cleanedPath);
|
|
42
|
-
const cacheKey = `${req.path}:${process.env.API_URL ?? ""}
|
|
42
|
+
const cacheKey = `${req.path}:${process.env.API_URL ?? ""}`;
|
|
43
|
+
// [AI-CHAT-DISABLED] OpenAI env injection disabled
|
|
44
|
+
// `:${process.env.OPENAI_API_BASE_URL ?? ""}:${process.env.OPENAI_API_KEY ?? ""}`
|
|
43
45
|
if (jsCache.has(cacheKey)) {
|
|
44
46
|
res.setHeader("Content-Type", "application/javascript");
|
|
45
47
|
res.setHeader("Cache-Control", "no-store");
|
|
@@ -48,8 +50,9 @@ function createUiStaticRouter(uiDir) {
|
|
|
48
50
|
let data = await fs.readFile(filePath, "utf8");
|
|
49
51
|
const replacements = [
|
|
50
52
|
["__API_URL__", process.env.API_URL ?? ""],
|
|
51
|
-
[
|
|
52
|
-
["
|
|
53
|
+
// [AI-CHAT-DISABLED] OpenAI env injection disabled
|
|
54
|
+
// ["__OPENAI_API_BASE_URL__", process.env.OPENAI_API_BASE_URL ?? ""],
|
|
55
|
+
// ["__OPENAI_API_KEY__", process.env.OPENAI_API_KEY ?? ""],
|
|
53
56
|
];
|
|
54
57
|
for (const [token, value] of replacements) {
|
|
55
58
|
data = data.split(token).join(JSON.stringify(value));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.static.js","sourceRoot":"","sources":["../../src/resources/ui.static.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"ui.static.js","sourceRoot":"","sources":["../../src/resources/ui.static.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oDA8CC;AAlDD,sDAA6D;AAC7D,gDAAkC;AAClC,qDAAuC;AAEvC,SAAgB,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAI,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC5D,mDAAmD;YACnD,kFAAkF;YAElF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;gBACxD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAE/C,MAAM,YAAY,GAAuB;gBACvC,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC1C,mDAAmD;gBACnD,sEAAsE;gBACtE,4DAA4D;aAC7D,CAAC;YAEF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC1C,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5B,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;YACxD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAE3D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/schema/index.js
CHANGED
|
@@ -44,6 +44,8 @@ const createSchema = (_swapManager) => {
|
|
|
44
44
|
index_1.TunnelInfoType,
|
|
45
45
|
index_1.TunnelModeEnum,
|
|
46
46
|
index_1.TunnelTransportEnum,
|
|
47
|
+
index_1.RunOptionsType,
|
|
48
|
+
index_1.InterceptorOwnersSnapshotType,
|
|
47
49
|
],
|
|
48
50
|
});
|
|
49
51
|
};
|
|
@@ -72,6 +74,8 @@ exports.schema = new graphql_1.GraphQLSchema({
|
|
|
72
74
|
index_1.TunnelInfoType,
|
|
73
75
|
index_1.TunnelModeEnum,
|
|
74
76
|
index_1.TunnelTransportEnum,
|
|
77
|
+
index_1.RunOptionsType,
|
|
78
|
+
index_1.InterceptorOwnersSnapshotType,
|
|
75
79
|
],
|
|
76
80
|
});
|
|
77
81
|
// Re-export all types for external usage
|
package/dist/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAwC;AACxC,mCAAoC;AACpC,yCAA0C;AAE1C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCAAwC;AACxC,mCAAoC;AACpC,yCAA0C;AAE1C,yCAuBuB;AAEhB,MAAM,YAAY,GAAG,CAAC,YAA2B,EAAE,EAAE;IAC1D,OAAO,IAAI,uBAAa,CAAC;QACvB,KAAK,EAAE,iBAAS;QAChB,QAAQ,EAAE,uBAAY;QACtB,KAAK,EAAE;YACL,eAAO;YACP,4BAAoB;YACpB,iBAAS;YACT,gBAAQ;YACR,4BAAoB;YACpB,sBAAc;YACd,0BAAkB;YAClB,8BAAsB;YACtB,gBAAQ;YACR,oBAAY;YACZ,gBAAQ;YACR,gBAAQ;YACR,sBAAc;YACd,sBAAc;YACd,uBAAe;YACf,iBAAS;YACT,wBAAgB;YAChB,sBAAc;YACd,sBAAc;YACd,2BAAmB;YACnB,sBAAc;YACd,qCAA6B;SAC9B;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AA7BW,QAAA,YAAY,gBA6BvB;AAEF,0DAA0D;AAC7C,QAAA,MAAM,GAAG,IAAI,uBAAa,CAAC;IACtC,KAAK,EAAE,iBAAS;IAChB,KAAK,EAAE;QACL,eAAO;QACP,4BAAoB;QACpB,iBAAS;QACT,gBAAQ;QACR,4BAAoB;QACpB,sBAAc;QACd,0BAAkB;QAClB,8BAAsB;QACtB,gBAAQ;QACR,oBAAY;QACZ,gBAAQ;QACR,gBAAQ;QACR,sBAAc;QACd,sBAAc;QACd,uBAAe;QACf,iBAAS;QACT,wBAAgB;QAChB,sBAAc;QACd,sBAAc;QACd,2BAAmB;QACnB,sBAAc;QACd,qCAA6B;KAC9B;CACF,CAAC,CAAC;AAEH,yCAAyC;AACzC,gDAA8B;AAC9B,0CAAwB;AACxB,iCAAoC;AAA3B,kGAAA,SAAS,OAAA"}
|
package/dist/schema/model.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface BaseElement {
|
|
|
11
11
|
id: string;
|
|
12
12
|
meta?: Meta | null;
|
|
13
13
|
filePath?: string | null;
|
|
14
|
+
isPrivate?: boolean;
|
|
15
|
+
visibilityReason?: string | null;
|
|
14
16
|
registeredBy?: string | null;
|
|
15
17
|
overriddenBy?: string | null;
|
|
16
18
|
tags?: string[] | null;
|
|
@@ -44,6 +46,18 @@ export interface TunnelInfo {
|
|
|
44
46
|
auth?: string;
|
|
45
47
|
eventDeliveryMode?: string;
|
|
46
48
|
}
|
|
49
|
+
export interface DurableFlowNode {
|
|
50
|
+
kind: string;
|
|
51
|
+
stepId?: string | null;
|
|
52
|
+
durationMs?: number | null;
|
|
53
|
+
signalId?: string | null;
|
|
54
|
+
eventId?: string | null;
|
|
55
|
+
selectedBranchId?: string | null;
|
|
56
|
+
message?: string | null;
|
|
57
|
+
}
|
|
58
|
+
export interface DurableFlowShape {
|
|
59
|
+
nodes: DurableFlowNode[];
|
|
60
|
+
}
|
|
47
61
|
export interface Tag extends BaseElement {
|
|
48
62
|
id: string;
|
|
49
63
|
configSchema?: string | null;
|
|
@@ -86,6 +100,13 @@ export interface Task extends BaseElement {
|
|
|
86
100
|
middleware: string[];
|
|
87
101
|
middlewareDetailed?: MiddlewareUsage[];
|
|
88
102
|
inputSchema?: string | null;
|
|
103
|
+
resultSchema?: string | null;
|
|
104
|
+
isDurable?: boolean;
|
|
105
|
+
durableResourceId?: string | null;
|
|
106
|
+
flowShape?: DurableFlowShape | null;
|
|
107
|
+
interceptorCount?: number;
|
|
108
|
+
hasInterceptors?: boolean;
|
|
109
|
+
interceptorOwnerIds?: string[];
|
|
89
110
|
}
|
|
90
111
|
export interface Hook extends BaseElement {
|
|
91
112
|
events: string[];
|
|
@@ -105,6 +126,7 @@ export interface Resource extends BaseElement {
|
|
|
105
126
|
middlewareDetailed?: MiddlewareUsage[];
|
|
106
127
|
overrides: string[];
|
|
107
128
|
registers: string[];
|
|
129
|
+
exports?: string[] | null;
|
|
108
130
|
context?: string | null;
|
|
109
131
|
tunnelInfo?: TunnelInfo | null;
|
|
110
132
|
}
|
|
@@ -122,8 +144,26 @@ export interface AsyncContext extends BaseElement {
|
|
|
122
144
|
serialize?: string | null;
|
|
123
145
|
parse?: string | null;
|
|
124
146
|
usedBy: string[];
|
|
147
|
+
requiredBy: string[];
|
|
125
148
|
providedBy: string[];
|
|
126
149
|
}
|
|
150
|
+
export interface RunOptions {
|
|
151
|
+
mode: string;
|
|
152
|
+
debug: boolean;
|
|
153
|
+
debugMode?: string | null;
|
|
154
|
+
logsEnabled: boolean;
|
|
155
|
+
logsPrintThreshold?: string | null;
|
|
156
|
+
logsPrintStrategy?: string | null;
|
|
157
|
+
logsBuffer: boolean;
|
|
158
|
+
errorBoundary?: boolean | null;
|
|
159
|
+
shutdownHooks?: boolean | null;
|
|
160
|
+
dryRun: boolean;
|
|
161
|
+
lazy: boolean;
|
|
162
|
+
initMode: "sequential" | "parallel";
|
|
163
|
+
runtimeEventCycleDetection?: boolean | null;
|
|
164
|
+
hasOnUnhandledError: boolean;
|
|
165
|
+
rootId: string;
|
|
166
|
+
}
|
|
127
167
|
export interface DiagnosticItem {
|
|
128
168
|
severity: string;
|
|
129
169
|
code: string;
|
package/dist/schema/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/schema/model.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/schema/model.ts"],"names":[],"mappings":";;;AA+Fa,QAAA,iBAAiB,GAAkB,MAAM,CACpD,wBAAwB,CACzB,CAAC"}
|
package/dist/schema/query.js
CHANGED
|
@@ -32,6 +32,29 @@ exports.QueryType = new graphql_1.GraphQLObjectType({
|
|
|
32
32
|
type: index_1.ResourceType,
|
|
33
33
|
resolve: (_root, _args, ctx) => ctx.introspector.getRoot(),
|
|
34
34
|
},
|
|
35
|
+
runOptions: {
|
|
36
|
+
description: "Effective run options used when starting the application via run(). Includes mode, debug flag, and root resource id.",
|
|
37
|
+
type: new graphql_1.GraphQLNonNull(index_1.RunOptionsType),
|
|
38
|
+
resolve: (_root, _args, ctx) => ctx.introspector.getRunOptions(),
|
|
39
|
+
},
|
|
40
|
+
interceptorOwners: {
|
|
41
|
+
description: "Snapshot of interceptor ownership: local task interceptors by task id and middleware interceptor ownership from middleware manager.",
|
|
42
|
+
type: new graphql_1.GraphQLNonNull(index_1.InterceptorOwnersSnapshotType),
|
|
43
|
+
resolve: (_root, _args, ctx) => {
|
|
44
|
+
const snapshot = ctx.introspector.getInterceptorOwnersSnapshot();
|
|
45
|
+
const tasksById = {};
|
|
46
|
+
for (const task of ctx.introspector.getTasks()) {
|
|
47
|
+
const ownerResourceIds = ctx.introspector.getTaskInterceptorOwnerIds(task.id);
|
|
48
|
+
if (ownerResourceIds.length > 0) {
|
|
49
|
+
tasksById[task.id] = ownerResourceIds;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
...snapshot,
|
|
54
|
+
tasksById,
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
},
|
|
35
58
|
all: {
|
|
36
59
|
description: "Unified view of all elements (tasks, hooks, resources, middleware, events). Prefer specific queries for efficiency.",
|
|
37
60
|
type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(index_1.BaseElementInterface))),
|