@t4h.framework/dev 0.0.0-experimental-20261006133319 → 0.0.0-experimental-20261007204009
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/CHANGELOG.md +4 -41
- package/README.md +12 -67
- package/dist/AppProcess.d.ts +2 -14
- package/dist/AppProcess.js +4 -22
- package/dist/AppProcess.js.map +1 -1
- package/dist/Server.d.ts +0 -4
- package/dist/Server.js +0 -10
- package/dist/Server.js.map +1 -1
- package/dist/constants/server.d.ts +1 -9
- package/dist/constants/server.js +1 -9
- package/dist/constants/server.js.map +1 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/models/FrameworkConfig.d.ts +0 -11
- package/dist/models/FrameworkConfig.js +0 -1
- package/dist/models/FrameworkConfig.js.map +1 -1
- package/dist/models/claims/DevCacheClaim.d.ts +1 -2
- package/dist/models/claims/DevCacheClaim.js +6 -17
- package/dist/models/claims/DevCacheClaim.js.map +1 -1
- package/dist/models/claims/DevORMClaim.js +1 -6
- package/dist/models/claims/DevORMClaim.js.map +1 -1
- package/dist/services/CallbackToken.service.d.ts +1 -4
- package/dist/services/CallbackToken.service.js +3 -10
- package/dist/services/CallbackToken.service.js.map +1 -1
- package/dist/services/Database.service.d.ts +0 -8
- package/dist/services/Database.service.js +3 -18
- package/dist/services/Database.service.js.map +1 -1
- package/dist/services/WorkflowRunAsyncActivityFacade.service.d.ts +0 -2
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js +0 -6
- package/dist/services/WorkflowRunAsyncActivityFacade.service.js.map +1 -1
- package/dist/services/WorkflowRunEvents.service.d.ts +0 -9
- package/dist/services/WorkflowRunEvents.service.js +2 -13
- package/dist/services/WorkflowRunEvents.service.js.map +1 -1
- package/dist/services/WorkflowRunFacade.service.d.ts +0 -1
- package/dist/services/WorkflowRunFacade.service.js +0 -3
- package/dist/services/WorkflowRunFacade.service.js.map +1 -1
- package/dist/transport/AppProcessJsonRpc.js +4 -17
- package/dist/transport/AppProcessJsonRpc.js.map +1 -1
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.d.ts +5 -3
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js +10 -6
- package/dist/use-cases/CreateWorkflowRunAsyncActivity.usecase.js.map +1 -1
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.d.ts +9 -3
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js +39 -7
- package/dist/use-cases/EnqueueWorkflowRunNextTick.usecase.js.map +1 -1
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.d.ts +5 -5
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js +15 -29
- package/dist/use-cases/ExecuteWorkflowRunAsyncActivity.usecase.js.map +1 -1
- package/dist/use-cases/NextTickWorkflowRun.usecase.d.ts +1 -6
- package/dist/use-cases/NextTickWorkflowRun.usecase.js +3 -54
- package/dist/use-cases/NextTickWorkflowRun.usecase.js.map +1 -1
- package/dist/use-cases/ReceiveWorkflowEvent.usecase.d.ts +2 -10
- package/dist/use-cases/ReceiveWorkflowEvent.usecase.js +5 -35
- package/dist/use-cases/ReceiveWorkflowEvent.usecase.js.map +1 -1
- package/dist/workers/app-process.d.ts +0 -8
- package/dist/workers/app-process.js +14 -114
- package/dist/workers/app-process.js.map +1 -1
- package/package.json +2 -2
- package/dist/HeadlessApp.d.ts +0 -65
- package/dist/HeadlessApp.js +0 -163
- package/dist/HeadlessApp.js.map +0 -1
- package/dist/models/LocalWorkflowRunJobExecutor.d.ts +0 -10
- package/dist/models/LocalWorkflowRunJobExecutor.js +0 -23
- package/dist/models/LocalWorkflowRunJobExecutor.js.map +0 -1
- package/dist/models/RuntimeControlServer.d.ts +0 -32
- package/dist/models/RuntimeControlServer.js +0 -75
- package/dist/models/RuntimeControlServer.js.map +0 -1
- package/dist/models/RuntimeDebugLog.d.ts +0 -10
- package/dist/models/RuntimeDebugLog.js +0 -32
- package/dist/models/RuntimeDebugLog.js.map +0 -1
- package/dist/models/RuntimeEvent.d.ts +0 -95
- package/dist/models/RuntimeEvent.js +0 -2
- package/dist/models/RuntimeEvent.js.map +0 -1
- package/dist/models/WorkflowRunJob.d.ts +0 -95
- package/dist/models/WorkflowRunJob.js +0 -2
- package/dist/models/WorkflowRunJob.js.map +0 -1
- package/dist/models/WorkflowWorkerPool.d.ts +0 -39
- package/dist/models/WorkflowWorkerPool.js +0 -154
- package/dist/models/WorkflowWorkerPool.js.map +0 -1
- package/dist/services/RuntimeEvents.service.d.ts +0 -16
- package/dist/services/RuntimeEvents.service.js +0 -35
- package/dist/services/RuntimeEvents.service.js.map +0 -1
- package/dist/services/WorkflowRunScheduler.service.d.ts +0 -62
- package/dist/services/WorkflowRunScheduler.service.js +0 -278
- package/dist/services/WorkflowRunScheduler.service.js.map +0 -1
- package/dist/tools/format-runtime-event.d.ts +0 -3
- package/dist/tools/format-runtime-event.js +0 -51
- package/dist/tools/format-runtime-event.js.map +0 -1
- package/dist/tools/run-workflow-run-job.d.ts +0 -3
- package/dist/tools/run-workflow-run-job.js +0 -25
- package/dist/tools/run-workflow-run-job.js.map +0 -1
- package/dist/tools/runtime-control-client.d.ts +0 -15
- package/dist/tools/runtime-control-client.js +0 -54
- package/dist/tools/runtime-control-client.js.map +0 -1
- package/dist/tools/runtime-registry.d.ts +0 -26
- package/dist/tools/runtime-registry.js +0 -57
- package/dist/tools/runtime-registry.js.map +0 -1
- package/dist/tools/start-runtime-monitor.d.ts +0 -12
- package/dist/tools/start-runtime-monitor.js +0 -69
- package/dist/tools/start-runtime-monitor.js.map +0 -1
- package/dist/tools/to-runtime-config.d.ts +0 -3
- package/dist/tools/to-runtime-config.js +0 -13
- package/dist/tools/to-runtime-config.js.map +0 -1
- package/dist/use-cases/RejectAbandonedWorkflowRuns.usecase.d.ts +0 -14
- package/dist/use-cases/RejectAbandonedWorkflowRuns.usecase.js +0 -55
- package/dist/use-cases/RejectAbandonedWorkflowRuns.usecase.js.map +0 -1
- package/dist/workers/workflow-worker.d.ts +0 -1
- package/dist/workers/workflow-worker.js +0 -58
- package/dist/workers/workflow-worker.js.map +0 -1
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Validates `runtime` from `framework.config.*`. */
|
|
2
|
-
export function toRuntimeConfig(runtime) {
|
|
3
|
-
if (!runtime)
|
|
4
|
-
return undefined;
|
|
5
|
-
const { workers, concurrency } = runtime;
|
|
6
|
-
if (workers !== undefined && !(Number.isInteger(workers) && workers >= 0))
|
|
7
|
-
throw new Error(`framework.config runtime.workers must be an integer >= 0, got ${workers}`);
|
|
8
|
-
if (concurrency !== undefined &&
|
|
9
|
-
!(Number.isInteger(concurrency) && concurrency >= 1))
|
|
10
|
-
throw new Error(`framework.config runtime.concurrency must be an integer >= 1, got ${concurrency}`);
|
|
11
|
-
return { workers, concurrency };
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=to-runtime-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-runtime-config.js","sourceRoot":"","sources":["../../src/tools/to-runtime-config.ts"],"names":[],"mappings":"AAEA,qDAAqD;AACrD,MAAM,UAAU,eAAe,CAC7B,OAA2C;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAExC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CACb,iEAAiE,OAAO,EAAE,CAC3E,CAAA;IAEH,IACE,WAAW,KAAK,SAAS;QACzB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC;QAEpD,MAAM,IAAI,KAAK,CACb,qEAAqE,WAAW,EAAE,CACnF,CAAA;IAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { WorkflowRunRepository } from '../repositories/WorkflowRun.repository.js';
|
|
2
|
-
import { WorkflowRunEventsService } from '../services/WorkflowRunEvents.service.js';
|
|
3
|
-
import { WorkflowRunFacade } from '../services/WorkflowRunFacade.service.js';
|
|
4
|
-
/**
|
|
5
|
-
* Rejects runs pinned to a workflow worker that died: the activity classes
|
|
6
|
-
* they pushed lived only in that thread, so they cannot be resumed.
|
|
7
|
-
*/
|
|
8
|
-
export declare class RejectAbandonedWorkflowRuns {
|
|
9
|
-
private readonly workflowRunRepository;
|
|
10
|
-
private readonly workflowRun;
|
|
11
|
-
private readonly events;
|
|
12
|
-
constructor(workflowRunRepository: WorkflowRunRepository, workflowRun: WorkflowRunFacade, events: WorkflowRunEventsService);
|
|
13
|
-
reject(runIds: readonly string[], cause: Error): Promise<void>;
|
|
14
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
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
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
-
};
|
|
10
|
-
import { styleText } from 'node:util';
|
|
11
|
-
import { Inject, Injectable } from 'pleroma';
|
|
12
|
-
import { WorkflowRunRepository } from '../repositories/WorkflowRun.repository.js';
|
|
13
|
-
import { WorkflowRunEventsService } from '../services/WorkflowRunEvents.service.js';
|
|
14
|
-
import { WorkflowRunFacade } from '../services/WorkflowRunFacade.service.js';
|
|
15
|
-
import { toRejectedReason } from '../tools/to-rejected-reason.js';
|
|
16
|
-
/**
|
|
17
|
-
* Rejects runs pinned to a workflow worker that died: the activity classes
|
|
18
|
-
* they pushed lived only in that thread, so they cannot be resumed.
|
|
19
|
-
*/
|
|
20
|
-
let RejectAbandonedWorkflowRuns = class RejectAbandonedWorkflowRuns {
|
|
21
|
-
workflowRunRepository;
|
|
22
|
-
workflowRun;
|
|
23
|
-
events;
|
|
24
|
-
constructor(workflowRunRepository, workflowRun, events) {
|
|
25
|
-
this.workflowRunRepository = workflowRunRepository;
|
|
26
|
-
this.workflowRun = workflowRun;
|
|
27
|
-
this.events = events;
|
|
28
|
-
}
|
|
29
|
-
async reject(runIds, cause) {
|
|
30
|
-
const reason = toRejectedReason(new Error('The workflow worker running this run stopped', { cause }));
|
|
31
|
-
for (const runId of runIds) {
|
|
32
|
-
try {
|
|
33
|
-
const run = await this.workflowRunRepository.findById(runId);
|
|
34
|
-
if (run?.status !== 'running')
|
|
35
|
-
continue;
|
|
36
|
-
await this.workflowRunRepository.reject(runId, reason);
|
|
37
|
-
this.events.runUpdated(runId);
|
|
38
|
-
await this.workflowRun.onWorkflowRunFinished(runId);
|
|
39
|
-
}
|
|
40
|
-
catch (error) {
|
|
41
|
-
console.error(styleText('red', `[Runtime] could not reject run ${runId}:`, {
|
|
42
|
-
stream: process.stderr,
|
|
43
|
-
}), error);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
RejectAbandonedWorkflowRuns = __decorate([
|
|
49
|
-
Injectable(),
|
|
50
|
-
__param(0, Inject(() => WorkflowRunRepository)),
|
|
51
|
-
__param(1, Inject(() => WorkflowRunFacade)),
|
|
52
|
-
__param(2, Inject(() => WorkflowRunEventsService))
|
|
53
|
-
], RejectAbandonedWorkflowRuns);
|
|
54
|
-
export { RejectAbandonedWorkflowRuns };
|
|
55
|
-
//# sourceMappingURL=RejectAbandonedWorkflowRuns.usecase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RejectAbandonedWorkflowRuns.usecase.js","sourceRoot":"","sources":["../../src/use-cases/RejectAbandonedWorkflowRuns.usecase.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEjE;;;GAGG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGnB;IAGA;IAGA;IARnB,YAEmB,qBAA4C,EAG5C,WAA8B,EAG9B,MAAgC;QANhC,0BAAqB,GAArB,qBAAqB,CAAuB;QAG5C,gBAAW,GAAX,WAAW,CAAmB;QAG9B,WAAM,GAAN,MAAM,CAA0B;IAChD,CAAC;IAEG,KAAK,CAAC,MAAM,CAAC,MAAyB,EAAE,KAAY;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAC7B,IAAI,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,CAAC,CACrE,CAAA;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAE5D,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;oBAAE,SAAQ;gBAEvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAEtD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBAE7B,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,SAAS,CAAC,KAAK,EAAE,kCAAkC,KAAK,GAAG,EAAE;oBAC3D,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC,EACF,KAAK,CACN,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AAtCY,2BAA2B;IADvC,UAAU,EAAE;IAGR,WAAA,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,CAAA;IAGnC,WAAA,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAA;IAG/B,WAAA,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAA;GAR9B,2BAA2B,CAsCvC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { parentPort, workerData } from 'node:worker_threads';
|
|
2
|
-
import { Env } from '@t4h.framework/core';
|
|
3
|
-
import { container } from 'pleroma';
|
|
4
|
-
import { env, loadApp } from './app-process.js';
|
|
5
|
-
import { getClaims } from '../claims.js';
|
|
6
|
-
import { toSerializedJobError } from '../models/WorkflowWorkerPool.js';
|
|
7
|
-
import { CallbackTokenService } from '../services/CallbackToken.service.js';
|
|
8
|
-
import { configureDatabase } from '../services/Database.service.js';
|
|
9
|
-
import { RuntimeEventsService } from '../services/RuntimeEvents.service.js';
|
|
10
|
-
import { WorkflowRunEventsService } from '../services/WorkflowRunEvents.service.js';
|
|
11
|
-
import { WorkflowRunSchedulerService } from '../services/WorkflowRunScheduler.service.js';
|
|
12
|
-
import { getJsonCodec } from '../tools/json-codec.js';
|
|
13
|
-
import { runWorkflowRunJob } from '../tools/run-workflow-run-job.js';
|
|
14
|
-
if (!parentPort)
|
|
15
|
-
throw new Error('workflow-worker must run as a worker thread');
|
|
16
|
-
const port = parentPort;
|
|
17
|
-
const post = (message) => port.postMessage(message);
|
|
18
|
-
const data = workerData;
|
|
19
|
-
try {
|
|
20
|
-
configureDatabase({ location: data.databaseLocation, createSchema: false });
|
|
21
|
-
container.resolve(CallbackTokenService).useSecret(data.callbackSecret);
|
|
22
|
-
container.resolve(WorkflowRunSchedulerService).forwardTo({
|
|
23
|
-
enqueue: job => post({ type: 'queue:enqueue', job }),
|
|
24
|
-
scheduleTimeout: (runId, pendingId, timeoutAt) => post({
|
|
25
|
-
type: 'timeout:schedule',
|
|
26
|
-
runId,
|
|
27
|
-
pendingId,
|
|
28
|
-
timeoutAt: timeoutAt.getTime(),
|
|
29
|
-
}),
|
|
30
|
-
cancelTimeout: pendingId => post({ type: 'timeout:cancel', pendingId }),
|
|
31
|
-
});
|
|
32
|
-
container
|
|
33
|
-
.resolve(RuntimeEventsService)
|
|
34
|
-
.forwardTo(event => post({ type: 'runtime:event', event }));
|
|
35
|
-
container.resolve(WorkflowRunEventsService).forwardTo({
|
|
36
|
-
runCreated: payload => post({ type: 'events:run-created', payload }),
|
|
37
|
-
runUpdated: runId => post({ type: 'events:run-updated', runId }),
|
|
38
|
-
});
|
|
39
|
-
await loadApp(data.entrypoint, data);
|
|
40
|
-
// Load lazily built integrations now, not on the first job.
|
|
41
|
-
await Promise.all([getClaims(), getJsonCodec()]);
|
|
42
|
-
port.on('message', ({ id, job }) => {
|
|
43
|
-
const reject = (error) => post({ type: 'job:rejected', id, error: toSerializedJobError(error) });
|
|
44
|
-
Env.run(env, () => runWorkflowRunJob(job)).then(value => {
|
|
45
|
-
try {
|
|
46
|
-
post({ type: 'job:fulfilled', id, value });
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
reject(error);
|
|
50
|
-
}
|
|
51
|
-
}, reject);
|
|
52
|
-
});
|
|
53
|
-
post({ type: 'ready' });
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
post({ type: 'boot-failed', error: toSerializedJobError(error) });
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=workflow-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-worker.js","sourceRoot":"","sources":["../../src/workers/workflow-worker.ts"],"names":[],"mappings":"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"}
|