@t4h.framework/dev 0.0.0-experimental-20261006120135 → 0.0.0-experimental-20261006133319

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/README.md +29 -0
  3. package/dist/AppProcess.d.ts +11 -2
  4. package/dist/AppProcess.js +16 -4
  5. package/dist/AppProcess.js.map +1 -1
  6. package/dist/HeadlessApp.d.ts +65 -0
  7. package/dist/HeadlessApp.js +163 -0
  8. package/dist/HeadlessApp.js.map +1 -0
  9. package/dist/Server.d.ts +3 -0
  10. package/dist/Server.js +6 -11
  11. package/dist/Server.js.map +1 -1
  12. package/dist/constants/server.d.ts +4 -0
  13. package/dist/constants/server.js +4 -0
  14. package/dist/constants/server.js.map +1 -1
  15. package/dist/index.d.ts +6 -0
  16. package/dist/index.js +5 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/models/RuntimeControlServer.d.ts +32 -0
  19. package/dist/models/RuntimeControlServer.js +75 -0
  20. package/dist/models/RuntimeControlServer.js.map +1 -0
  21. package/dist/models/RuntimeDebugLog.d.ts +10 -0
  22. package/dist/models/RuntimeDebugLog.js +32 -0
  23. package/dist/models/RuntimeDebugLog.js.map +1 -0
  24. package/dist/models/RuntimeEvent.d.ts +95 -0
  25. package/dist/models/RuntimeEvent.js +2 -0
  26. package/dist/models/RuntimeEvent.js.map +1 -0
  27. package/dist/models/WorkflowRunJob.d.ts +4 -0
  28. package/dist/services/RuntimeEvents.service.d.ts +16 -0
  29. package/dist/services/RuntimeEvents.service.js +35 -0
  30. package/dist/services/RuntimeEvents.service.js.map +1 -0
  31. package/dist/services/WorkflowRunScheduler.service.d.ts +11 -1
  32. package/dist/services/WorkflowRunScheduler.service.js +93 -3
  33. package/dist/services/WorkflowRunScheduler.service.js.map +1 -1
  34. package/dist/tools/format-runtime-event.d.ts +3 -0
  35. package/dist/tools/format-runtime-event.js +51 -0
  36. package/dist/tools/format-runtime-event.js.map +1 -0
  37. package/dist/tools/runtime-control-client.d.ts +15 -0
  38. package/dist/tools/runtime-control-client.js +54 -0
  39. package/dist/tools/runtime-control-client.js.map +1 -0
  40. package/dist/tools/runtime-registry.d.ts +26 -0
  41. package/dist/tools/runtime-registry.js +57 -0
  42. package/dist/tools/runtime-registry.js.map +1 -0
  43. package/dist/tools/start-runtime-monitor.d.ts +12 -0
  44. package/dist/tools/start-runtime-monitor.js +69 -0
  45. package/dist/tools/start-runtime-monitor.js.map +1 -0
  46. package/dist/tools/to-runtime-config.d.ts +3 -0
  47. package/dist/tools/to-runtime-config.js +13 -0
  48. package/dist/tools/to-runtime-config.js.map +1 -0
  49. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.d.ts +3 -1
  50. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js +20 -2
  51. package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js.map +1 -1
  52. package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +3 -1
  53. package/dist/use-cases/NextTickWorkflowRun.usecase.js +40 -3
  54. package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -1
  55. package/dist/workers/app-process.js +34 -17
  56. package/dist/workers/app-process.js.map +1 -1
  57. package/dist/workers/workflow-worker.js +4 -0
  58. package/dist/workers/workflow-worker.js.map +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,32 @@
1
+ import type { RuntimeEvent } from './RuntimeEvent.js';
2
+ import type { RuntimeEventsService } from '../services/RuntimeEvents.service.js';
3
+ import { type RuntimeInfo, type RuntimeStatus } from '../tools/runtime-registry.js';
4
+ /** First line a client sends; the server answers with NDJSON lines. */
5
+ export interface RuntimeControlRequest {
6
+ method: 'status' | 'watch';
7
+ }
8
+ export type RuntimeControlMessage = ({
9
+ type: 'status';
10
+ } & RuntimeStatus) | {
11
+ type: 'event';
12
+ event: RuntimeEvent;
13
+ } | {
14
+ type: 'error';
15
+ message: string;
16
+ };
17
+ /**
18
+ * Local socket (named pipe on Windows) through which `framework runtime`
19
+ * reads the status of this app process and follows its events.
20
+ */
21
+ export declare class RuntimeControlServer {
22
+ private readonly info;
23
+ private readonly status;
24
+ private readonly events;
25
+ private readonly server;
26
+ constructor(info: RuntimeInfo, status: () => Promise<RuntimeStatus>, events: RuntimeEventsService);
27
+ start(): Promise<void>;
28
+ /** Synchronous so it can run in a process `exit` handler. */
29
+ close(): void;
30
+ private onConnection;
31
+ private handle;
32
+ }
@@ -0,0 +1,75 @@
1
+ import fs from 'node:fs';
2
+ import net from 'node:net';
3
+ import { runtimeRegistryDir, runtimeRegistryFile, } from '../tools/runtime-registry.js';
4
+ const send = (socket, message) => socket.write(`${JSON.stringify(message)}\n`);
5
+ /**
6
+ * Local socket (named pipe on Windows) through which `framework runtime`
7
+ * reads the status of this app process and follows its events.
8
+ */
9
+ export class RuntimeControlServer {
10
+ info;
11
+ status;
12
+ events;
13
+ server;
14
+ constructor(info, status, events) {
15
+ this.info = info;
16
+ this.status = status;
17
+ this.events = events;
18
+ this.server = net.createServer(socket => this.onConnection(socket));
19
+ }
20
+ async start() {
21
+ fs.mkdirSync(runtimeRegistryDir(), { recursive: true, mode: 0o700 });
22
+ if (process.platform !== 'win32')
23
+ fs.rmSync(this.info.socket, { force: true });
24
+ await new Promise((resolve, reject) => {
25
+ this.server.once('error', reject);
26
+ this.server.listen(this.info.socket, () => {
27
+ this.server.off('error', reject);
28
+ resolve();
29
+ });
30
+ });
31
+ fs.writeFileSync(runtimeRegistryFile(this.info.pid), JSON.stringify(this.info, null, 2));
32
+ }
33
+ /** Synchronous so it can run in a process `exit` handler. */
34
+ close() {
35
+ this.server.close();
36
+ fs.rmSync(runtimeRegistryFile(this.info.pid), { force: true });
37
+ if (process.platform !== 'win32')
38
+ fs.rmSync(this.info.socket, { force: true });
39
+ }
40
+ onConnection(socket) {
41
+ let buffer = '';
42
+ socket.setEncoding('utf8');
43
+ socket.on('error', () => socket.destroy());
44
+ const onData = (chunk) => {
45
+ buffer += chunk;
46
+ const end = buffer.indexOf('\n');
47
+ if (end === -1)
48
+ return;
49
+ socket.off('data', onData);
50
+ void this.handle(socket, buffer.slice(0, end));
51
+ };
52
+ socket.on('data', onData);
53
+ }
54
+ async handle(socket, line) {
55
+ let request;
56
+ try {
57
+ request = JSON.parse(line);
58
+ }
59
+ catch {
60
+ send(socket, { type: 'error', message: 'Invalid request' });
61
+ return void socket.end();
62
+ }
63
+ if (request.method !== 'status' && request.method !== 'watch') {
64
+ send(socket, { type: 'error', message: 'Unknown method' });
65
+ return void socket.end();
66
+ }
67
+ send(socket, { type: 'status', ...(await this.status()) });
68
+ if (request.method === 'status')
69
+ return void socket.end();
70
+ const forward = (event) => send(socket, { type: 'event', event });
71
+ this.events.on('event', forward);
72
+ socket.once('close', () => this.events.off('event', forward));
73
+ }
74
+ }
75
+ //# sourceMappingURL=RuntimeControlServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeControlServer.js","sourceRoot":"","sources":["../../src/models/RuntimeControlServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { RuntimeEvent } from './RuntimeEvent.js';
2
+ /** `-` writes readable lines to stderr; a path appends NDJSON to that file. */
3
+ export declare const DEBUG_LOG_STDERR = "-";
4
+ export declare class RuntimeDebugLog {
5
+ private readonly toStderr;
6
+ private fd;
7
+ constructor(target: string);
8
+ readonly write: (event: RuntimeEvent) => void;
9
+ close(): void;
10
+ }
@@ -0,0 +1,32 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { formatRuntimeEvent } from '../tools/format-runtime-event.js';
4
+ /** `-` writes readable lines to stderr; a path appends NDJSON to that file. */
5
+ export const DEBUG_LOG_STDERR = '-';
6
+ export class RuntimeDebugLog {
7
+ toStderr;
8
+ // Written synchronously: the app process may exit right after an event.
9
+ fd = null;
10
+ constructor(target) {
11
+ this.toStderr = target === DEBUG_LOG_STDERR;
12
+ if (this.toStderr)
13
+ return;
14
+ fs.mkdirSync(path.dirname(target), { recursive: true });
15
+ this.fd = fs.openSync(target, 'a');
16
+ }
17
+ write = (event) => {
18
+ if (this.toStderr) {
19
+ process.stderr.write(`[runtime] ${formatRuntimeEvent(event)}\n`);
20
+ return;
21
+ }
22
+ if (this.fd !== null)
23
+ fs.writeSync(this.fd, `${JSON.stringify(event)}\n`);
24
+ };
25
+ close() {
26
+ if (this.fd === null)
27
+ return;
28
+ fs.closeSync(this.fd);
29
+ this.fd = null;
30
+ }
31
+ }
32
+ //# sourceMappingURL=RuntimeDebugLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeDebugLog.js","sourceRoot":"","sources":["../../src/models/RuntimeDebugLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAErE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AAEnC,MAAM,OAAO,eAAe;IACT,QAAQ,CAAS;IAElC,wEAAwE;IAChE,EAAE,GAAkB,IAAI,CAAA;IAEhC,YAAY,MAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,KAAK,gBAAgB,CAAA;QAE3C,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAEvD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;IAEe,KAAK,GAAG,CAAC,KAAmB,EAAQ,EAAE;QACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAEhE,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;YAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3E,CAAC,CAAA;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI;YAAE,OAAM;QAE5B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAErB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAA;IAChB,CAAC;CACF"}
@@ -0,0 +1,95 @@
1
+ import type { WorkflowRunJobKind } from './WorkflowRunJob.js';
2
+ /** A job as runtime events describe it: what it is, never its payload. */
3
+ export interface RuntimeJobSummary {
4
+ kind: WorkflowRunJobKind;
5
+ runId: string | null;
6
+ /** The activity, pending or child run the job is about, when there is one. */
7
+ target: string | null;
8
+ }
9
+ export interface RuntimeLaneStats {
10
+ lane: number;
11
+ inFlight: number;
12
+ pinnedRuns: number;
13
+ }
14
+ export interface RuntimeQueueStats {
15
+ workers: number;
16
+ concurrency: number;
17
+ capacity: number;
18
+ queued: number;
19
+ urgent: number;
20
+ inFlight: number;
21
+ lanes: RuntimeLaneStats[];
22
+ }
23
+ export interface RuntimeRunningJob extends RuntimeJobSummary {
24
+ lane: number;
25
+ startedAt: string;
26
+ }
27
+ export interface RuntimeQueueSnapshot extends RuntimeQueueStats {
28
+ running: RuntimeRunningJob[];
29
+ waiting: RuntimeJobSummary[];
30
+ }
31
+ /** Something the runtime did, published on the coordinator. */
32
+ export type RuntimeEventBody = {
33
+ type: 'job:queued';
34
+ job: RuntimeJobSummary;
35
+ queue: RuntimeQueueStats;
36
+ } | {
37
+ type: 'job:started';
38
+ job: RuntimeJobSummary;
39
+ lane: number;
40
+ queue: RuntimeQueueStats;
41
+ } | {
42
+ type: 'job:finished';
43
+ job: RuntimeJobSummary;
44
+ lane: number;
45
+ durationInMs: number;
46
+ error: string | null;
47
+ queue: RuntimeQueueStats;
48
+ } | {
49
+ type: 'run:created';
50
+ runId: string;
51
+ workflow: string;
52
+ parentRunId: string | null;
53
+ } | {
54
+ type: 'run:settled';
55
+ runId: string;
56
+ workflow: string;
57
+ status: 'fulfilled' | 'rejected';
58
+ } | {
59
+ type: 'activity:started';
60
+ runId: string;
61
+ activityId: string;
62
+ activityType: string;
63
+ kind: 'sync' | 'async';
64
+ } | {
65
+ type: 'activity:waiting';
66
+ runId: string;
67
+ activityId: string;
68
+ activityType: string;
69
+ timeoutAt: string | null;
70
+ } | {
71
+ type: 'activity:settled';
72
+ runId: string;
73
+ activityId: string;
74
+ activityType: string;
75
+ status: 'fulfilled' | 'rejected';
76
+ /** Why a sync activity or a bootstrap threw, when it did. */
77
+ error?: string;
78
+ } | {
79
+ type: 'timeout:scheduled';
80
+ runId: string;
81
+ pendingId: string;
82
+ timeoutAt: string;
83
+ } | {
84
+ type: 'timeout:fired';
85
+ runId: string;
86
+ pendingId: string;
87
+ } | {
88
+ type: 'worker:lost';
89
+ lane: number;
90
+ error: string;
91
+ };
92
+ export type RuntimeEvent = RuntimeEventBody & {
93
+ at: string;
94
+ };
95
+ export type RuntimeEventType = RuntimeEvent['type'];
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RuntimeEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeEvent.js","sourceRoot":"","sources":["../../src/models/RuntimeEvent.ts"],"names":[],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import type { AsyncActivityCallback } from '@t4h.framework/core';
2
+ import type { RuntimeEvent } from './RuntimeEvent.js';
2
3
  /**
3
4
  * Unit of work the scheduler hands to an executor. Jobs carrying a `runId`
4
5
  * are serialized per run and pinned to the executor lane that first ran it,
@@ -75,6 +76,9 @@ export type WorkflowWorkerMessage = {
75
76
  } | {
76
77
  type: 'events:run-updated';
77
78
  runId: string;
79
+ } | {
80
+ type: 'runtime:event';
81
+ event: RuntimeEvent;
78
82
  };
79
83
  /** Messages the coordinator thread sends to a workflow worker. */
80
84
  export type WorkflowCoordinatorMessage = {
@@ -0,0 +1,16 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { RuntimeEvent, RuntimeEventBody } from '../models/RuntimeEvent.js';
3
+ /**
4
+ * Publishes what the runtime does (jobs, runs, activities, timeouts) for the
5
+ * debug log and `framework runtime watch`. Worker threads forward their
6
+ * events to the coordinator, which is the only one with listeners.
7
+ */
8
+ export declare class RuntimeEventsService extends EventEmitter<{
9
+ event: [RuntimeEvent];
10
+ }> {
11
+ private forward;
12
+ forwardTo(forward: (event: RuntimeEvent) => void): void;
13
+ publish(body: RuntimeEventBody): void;
14
+ /** Re-emits an event that already happened elsewhere (a worker). */
15
+ dispatch(event: RuntimeEvent): void;
16
+ }
@@ -0,0 +1,35 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { EventEmitter } from 'node:events';
8
+ import { Injectable } from 'pleroma';
9
+ /**
10
+ * Publishes what the runtime does (jobs, runs, activities, timeouts) for the
11
+ * debug log and `framework runtime watch`. Worker threads forward their
12
+ * events to the coordinator, which is the only one with listeners.
13
+ */
14
+ let RuntimeEventsService = class RuntimeEventsService extends EventEmitter {
15
+ forward = null;
16
+ forwardTo(forward) {
17
+ this.forward = forward;
18
+ }
19
+ publish(body) {
20
+ if (!this.forward && this.listenerCount('event') === 0)
21
+ return;
22
+ this.dispatch({ ...body, at: new Date().toISOString() });
23
+ }
24
+ /** Re-emits an event that already happened elsewhere (a worker). */
25
+ dispatch(event) {
26
+ if (this.forward)
27
+ return this.forward(event);
28
+ this.emit('event', event);
29
+ }
30
+ };
31
+ RuntimeEventsService = __decorate([
32
+ Injectable()
33
+ ], RuntimeEventsService);
34
+ export { RuntimeEventsService };
35
+ //# sourceMappingURL=RuntimeEvents.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeEvents.service.js","sourceRoot":"","sources":["../../src/services/RuntimeEvents.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIpC;;;;GAIG;AAEI,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,YAExC;IACQ,OAAO,GAA2C,IAAI,CAAA;IAEvD,SAAS,CAAC,OAAsC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,OAAO,CAAC,IAAsB;QACnC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAM;QAE9D,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,oEAAoE;IAC7D,QAAQ,CAAC,KAAmB;QACjC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC;CACF,CAAA;AArBY,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CAqBhC"}
@@ -1,4 +1,6 @@
1
+ import { RuntimeEventsService } from './RuntimeEvents.service.js';
1
2
  import { TimeoutSchedulerService } from './TimeoutScheduler.service.js';
3
+ import type { RuntimeJobSummary, RuntimeQueueSnapshot, RuntimeQueueStats } from '../models/RuntimeEvent.js';
2
4
  import type { WorkflowRunJob } from '../models/WorkflowRunJob.js';
3
5
  import { WorkflowRunRepository } from '../repositories/WorkflowRun.repository.js';
4
6
  export interface WorkflowRunJobExecutor {
@@ -15,9 +17,11 @@ export interface WorkflowRunSchedulerForward {
15
17
  scheduleTimeout(runId: string, pendingId: string, timeoutAt: Date): void;
16
18
  cancelTimeout(pendingId: string): void;
17
19
  }
20
+ export declare function toRuntimeJobSummary(job: WorkflowRunJob): RuntimeJobSummary;
18
21
  export declare class WorkflowRunSchedulerService {
19
22
  private readonly timeoutScheduler;
20
23
  private readonly workflowRunRepository;
24
+ private readonly runtimeEvents;
21
25
  private executor;
22
26
  private forward;
23
27
  private readonly urgent;
@@ -27,7 +31,12 @@ export declare class WorkflowRunSchedulerService {
27
31
  private readonly laneByRun;
28
32
  private inFlight;
29
33
  private pinnedByLane;
30
- constructor(timeoutScheduler: TimeoutSchedulerService, workflowRunRepository: WorkflowRunRepository);
34
+ private readonly running;
35
+ constructor(timeoutScheduler: TimeoutSchedulerService, workflowRunRepository: WorkflowRunRepository, runtimeEvents: RuntimeEventsService);
36
+ /** Counts of the queue and of every lane. */
37
+ stats(): RuntimeQueueStats;
38
+ /** `stats()` plus the jobs running and the first ones waiting. */
39
+ snapshot(): RuntimeQueueSnapshot;
31
40
  /** Runs jobs on `executor` instead of the current thread. */
32
41
  use(executor: WorkflowRunJobExecutor): void;
33
42
  /** Hands every job and timeout to the coordinator (worker threads). */
@@ -48,5 +57,6 @@ export declare class WorkflowRunSchedulerService {
48
57
  private dispatch;
49
58
  private unpinIfSettled;
50
59
  private isQueued;
60
+ private publishQueued;
51
61
  private logFailure;
52
62
  }
@@ -9,13 +9,26 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
9
  };
10
10
  import { styleText } from 'node:util';
11
11
  import { Inject, Injectable } from 'pleroma';
12
+ import { RuntimeEventsService } from './RuntimeEvents.service.js';
12
13
  import { TimeoutSchedulerService } from './TimeoutScheduler.service.js';
13
14
  import { LocalWorkflowRunJobExecutor } from '../models/LocalWorkflowRunJobExecutor.js';
14
15
  import { WorkflowRunRepository } from '../repositories/WorkflowRun.repository.js';
15
16
  const jobRunId = (job) => 'runId' in job ? job.runId : undefined;
17
+ const SNAPSHOT_WAITING_LIMIT = 50;
18
+ export function toRuntimeJobSummary(job) {
19
+ const target = 'pendingId' in job
20
+ ? job.pendingId
21
+ : 'activityId' in job
22
+ ? job.activityId
23
+ : 'childRunId' in job
24
+ ? job.childRunId
25
+ : null;
26
+ return { kind: job.kind, runId: jobRunId(job) ?? null, target };
27
+ }
16
28
  let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
17
29
  timeoutScheduler;
18
30
  workflowRunRepository;
31
+ runtimeEvents;
19
32
  executor = null;
20
33
  forward = null;
21
34
  urgent = [];
@@ -25,9 +38,39 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
25
38
  laneByRun = new Map();
26
39
  inFlight = [];
27
40
  pinnedByLane = [];
28
- constructor(timeoutScheduler, workflowRunRepository) {
41
+ running = new Set();
42
+ constructor(timeoutScheduler, workflowRunRepository, runtimeEvents) {
29
43
  this.timeoutScheduler = timeoutScheduler;
30
44
  this.workflowRunRepository = workflowRunRepository;
45
+ this.runtimeEvents = runtimeEvents;
46
+ }
47
+ /** Counts of the queue and of every lane. */
48
+ stats() {
49
+ const { lanes, concurrency } = this.getExecutor();
50
+ const inFlight = this.inFlight.reduce((sum, count) => sum + count, 0);
51
+ return {
52
+ workers: lanes,
53
+ concurrency,
54
+ capacity: lanes * concurrency,
55
+ queued: this.urgent.length + this.normal.length,
56
+ urgent: this.urgent.length,
57
+ inFlight,
58
+ lanes: this.inFlight.map((count, lane) => ({
59
+ lane,
60
+ inFlight: count,
61
+ pinnedRuns: this.pinnedByLane[lane] ?? 0,
62
+ })),
63
+ };
64
+ }
65
+ /** `stats()` plus the jobs running and the first ones waiting. */
66
+ snapshot() {
67
+ return {
68
+ ...this.stats(),
69
+ running: [...this.running].map(job => ({ ...job })),
70
+ waiting: [...this.urgent, ...this.normal]
71
+ .slice(0, SNAPSHOT_WAITING_LIMIT)
72
+ .map(entry => toRuntimeJobSummary(entry.job)),
73
+ };
31
74
  }
32
75
  /** Runs jobs on `executor` instead of the current thread. */
33
76
  use(executor) {
@@ -54,6 +97,7 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
54
97
  resolve: () => { },
55
98
  reject: error => this.logFailure(job, error),
56
99
  });
100
+ this.publishQueued(job);
57
101
  this.drain();
58
102
  }
59
103
  /** Queues a job ahead of background work and resolves with its result. */
@@ -66,6 +110,7 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
66
110
  resolve: value => resolve(value),
67
111
  reject,
68
112
  });
113
+ this.publishQueued(job);
69
114
  this.drain();
70
115
  });
71
116
  }
@@ -76,7 +121,16 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
76
121
  scheduleTimeout(runId, pendingId, timeoutAt) {
77
122
  if (this.forward)
78
123
  return this.forward.scheduleTimeout(runId, pendingId, timeoutAt);
79
- this.timeoutScheduler.schedule(pendingId, timeoutAt, () => this.enqueue({ kind: 'pending.execute', runId, pendingId }));
124
+ this.timeoutScheduler.schedule(pendingId, timeoutAt, () => {
125
+ this.runtimeEvents.publish({ type: 'timeout:fired', runId, pendingId });
126
+ this.enqueue({ kind: 'pending.execute', runId, pendingId });
127
+ });
128
+ this.runtimeEvents.publish({
129
+ type: 'timeout:scheduled',
130
+ runId,
131
+ pendingId,
132
+ timeoutAt: timeoutAt.toISOString(),
133
+ });
80
134
  }
81
135
  cancelTimeout(pendingId) {
82
136
  if (this.forward)
@@ -147,11 +201,39 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
147
201
  }
148
202
  }
149
203
  this.inFlight[lane] += 1;
204
+ const summary = toRuntimeJobSummary(job);
205
+ const startedAt = Date.now();
206
+ const running = {
207
+ ...summary,
208
+ lane,
209
+ startedAt: new Date(startedAt).toISOString(),
210
+ };
211
+ this.running.add(running);
212
+ this.runtimeEvents.publish({
213
+ type: 'job:started',
214
+ job: summary,
215
+ lane,
216
+ queue: this.stats(),
217
+ });
218
+ let failure = null;
150
219
  this.getExecutor()
151
220
  .execute(lane, job)
221
+ .catch(error => {
222
+ failure = error instanceof Error ? error.message : String(error);
223
+ throw error;
224
+ })
152
225
  .then(resolve, reject)
153
226
  .finally(() => {
154
227
  this.inFlight[lane] -= 1;
228
+ this.running.delete(running);
229
+ this.runtimeEvents.publish({
230
+ type: 'job:finished',
231
+ job: summary,
232
+ lane,
233
+ durationInMs: Date.now() - startedAt,
234
+ error: failure,
235
+ queue: this.stats(),
236
+ });
155
237
  if (runId) {
156
238
  this.busyRuns.delete(runId);
157
239
  void this.unpinIfSettled(runId);
@@ -174,6 +256,13 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
174
256
  isQueued(runId) {
175
257
  return [...this.urgent, ...this.normal].some(entry => jobRunId(entry.job) === runId);
176
258
  }
259
+ publishQueued(job) {
260
+ this.runtimeEvents.publish({
261
+ type: 'job:queued',
262
+ job: toRuntimeJobSummary(job),
263
+ queue: this.stats(),
264
+ });
265
+ }
177
266
  logFailure(job, error) {
178
267
  const target = jobRunId(job);
179
268
  console.error(styleText('red', `[Runtime] ${job.kind} failed${target ? ` for run ${target}` : ''}:`, { stream: process.stderr }), error);
@@ -182,7 +271,8 @@ let WorkflowRunSchedulerService = class WorkflowRunSchedulerService {
182
271
  WorkflowRunSchedulerService = __decorate([
183
272
  Injectable(),
184
273
  __param(0, Inject(() => TimeoutSchedulerService)),
185
- __param(1, Inject(() => WorkflowRunRepository))
274
+ __param(1, Inject(() => WorkflowRunRepository)),
275
+ __param(2, Inject(() => RuntimeEventsService))
186
276
  ], WorkflowRunSchedulerService);
187
277
  export { WorkflowRunSchedulerService };
188
278
  //# sourceMappingURL=WorkflowRunScheduler.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowRunScheduler.service.js","sourceRoot":"","sources":["../../src/services/WorkflowRunScheduler.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowRunScheduler.service.js","sourceRoot":"","sources":["../../src/services/WorkflowRunScheduler.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RuntimeEvent } from '../models/RuntimeEvent.js';
2
+ /** One human-readable line per event, for the terminal. */
3
+ export declare function formatRuntimeEvent(event: RuntimeEvent): string;
@@ -0,0 +1,51 @@
1
+ const time = (at) => at.slice(11, 23);
2
+ const job = ({ kind, runId, target }) => [
3
+ kind,
4
+ ...(runId ? [`run=${runId}`] : []),
5
+ ...(target ? [`target=${target}`] : []),
6
+ ].join(' ');
7
+ const queue = ({ queued, inFlight, capacity }) => `queue=${queued} running=${inFlight}/${capacity}`;
8
+ function describe(event) {
9
+ switch (event.type) {
10
+ case 'job:queued':
11
+ return `${job(event.job)} | ${queue(event.queue)}`;
12
+ case 'job:started':
13
+ return `${job(event.job)} lane=${event.lane} | ${queue(event.queue)}`;
14
+ case 'job:finished':
15
+ return [
16
+ `${job(event.job)} lane=${event.lane} ${event.durationInMs}ms`,
17
+ event.error ? `failed: ${event.error}` : 'ok',
18
+ `| ${queue(event.queue)}`,
19
+ ].join(' ');
20
+ case 'run:created':
21
+ return [
22
+ `${event.workflow} run=${event.runId}`,
23
+ ...(event.parentRunId ? [`parent=${event.parentRunId}`] : []),
24
+ ].join(' ');
25
+ case 'run:settled':
26
+ return `${event.workflow} run=${event.runId} ${event.status}`;
27
+ case 'activity:started':
28
+ return `${event.activityType} (${event.kind}) run=${event.runId} activity=${event.activityId}`;
29
+ case 'activity:waiting':
30
+ return [
31
+ `${event.activityType} run=${event.runId} activity=${event.activityId}`,
32
+ ...(event.timeoutAt ? [`timeout=${event.timeoutAt}`] : []),
33
+ ].join(' ');
34
+ case 'activity:settled':
35
+ return [
36
+ `${event.activityType} ${event.status} run=${event.runId} activity=${event.activityId}`,
37
+ ...(event.error ? [`error: ${event.error}`] : []),
38
+ ].join(' ');
39
+ case 'timeout:scheduled':
40
+ return `run=${event.runId} pending=${event.pendingId} at=${event.timeoutAt}`;
41
+ case 'timeout:fired':
42
+ return `run=${event.runId} pending=${event.pendingId}`;
43
+ case 'worker:lost':
44
+ return `lane=${event.lane} ${event.error}`;
45
+ }
46
+ }
47
+ /** One human-readable line per event, for the terminal. */
48
+ export function formatRuntimeEvent(event) {
49
+ return `${time(event.at)} ${event.type.padEnd(17)} ${describe(event)}`;
50
+ }
51
+ //# sourceMappingURL=format-runtime-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-runtime-event.js","sourceRoot":"","sources":["../../src/tools/format-runtime-event.ts"],"names":[],"mappings":"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"}