@forestadmin/workflow-executor 1.33.1 → 1.34.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/dist/adapters/agent-client-agent-port.js +6 -8
- package/dist/adapters/agent-client-segment-reader.d.ts +24 -0
- package/dist/adapters/agent-client-segment-reader.js +182 -0
- package/dist/adapters/agent-errors.d.ts +11 -0
- package/dist/adapters/agent-errors.js +81 -0
- package/dist/adapters/forest-server-automation-port.d.ts +22 -0
- package/dist/adapters/forest-server-automation-port.js +174 -0
- package/dist/adapters/forest-server-workflow-port.d.ts +3 -1
- package/dist/adapters/forest-server-workflow-port.js +47 -21
- package/dist/adapters/forestadmin-client-activity-log-port.js +3 -3
- package/dist/adapters/project-timezone.d.ts +2 -0
- package/dist/adapters/project-timezone.js +11 -0
- package/dist/adapters/run-to-available-step-mapper.js +7 -16
- package/dist/adapters/server-types.d.ts +119 -1
- package/dist/adapters/server-types.js +104 -2
- package/dist/adapters/step-user.d.ts +23 -0
- package/dist/adapters/step-user.js +33 -0
- package/dist/automation/automation-poller.d.ts +45 -0
- package/dist/automation/automation-poller.js +201 -0
- package/dist/automation/inbox-poll.d.ts +47 -0
- package/dist/automation/inbox-poll.js +357 -0
- package/dist/automation/lease-keeper.d.ts +12 -0
- package/dist/automation/lease-keeper.js +30 -0
- package/dist/automation/read-failure.d.ts +5 -0
- package/dist/automation/read-failure.js +40 -0
- package/dist/automation/reconciliation.d.ts +13 -0
- package/dist/automation/reconciliation.js +88 -0
- package/dist/build-workflow-executor.d.ts +2 -0
- package/dist/build-workflow-executor.js +62 -4
- package/dist/cli-core.js +7 -1
- package/dist/defaults.d.ts +2 -0
- package/dist/defaults.js +10 -2
- package/dist/errors.d.ts +30 -2
- package/dist/errors.js +56 -26
- package/dist/http/pending-data-validators.js +3 -3
- package/dist/http/step-serializer.js +5 -5
- package/dist/ports/automation-port.d.ts +19 -0
- package/dist/ports/automation-port.js +3 -0
- package/dist/ports/segment-reader-port.d.ts +43 -0
- package/dist/ports/segment-reader-port.js +3 -0
- package/dist/ports/workflow-port.d.ts +3 -1
- package/dist/{adapters/record-id-serializer.d.ts → record-id.d.ts} +2 -2
- package/dist/record-id.js +20 -0
- package/dist/runner.d.ts +3 -0
- package/dist/runner.js +59 -12
- package/dist/types/automation.d.ts +64 -0
- package/dist/types/automation.js +3 -0
- package/dist/types/validated/execution.d.ts +2 -1
- package/dist/types/validated/execution.js +2 -1
- package/package.json +6 -4
- package/dist/adapters/record-id-serializer.js +0 -20
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = serializeStepForWire;
|
|
4
|
-
const
|
|
4
|
+
const record_id_1 = require("../record-id");
|
|
5
5
|
function serializeRecordRef(ref) {
|
|
6
|
-
return { ...ref, recordId: (0,
|
|
6
|
+
return { ...ref, recordId: (0, record_id_1.serializeRecordId)(ref.recordId) };
|
|
7
7
|
}
|
|
8
8
|
function serializeStepForWire(step) {
|
|
9
9
|
switch (step.type) {
|
|
@@ -25,12 +25,12 @@ function serializeStepForWire(step) {
|
|
|
25
25
|
...step.pendingData,
|
|
26
26
|
availableRecordIds: availableRecordIds.map(c => ({
|
|
27
27
|
...c,
|
|
28
|
-
recordId: (0,
|
|
28
|
+
recordId: (0, record_id_1.serializeRecordId)(c.recordId),
|
|
29
29
|
})),
|
|
30
30
|
...(suggestedRecord && {
|
|
31
31
|
suggestedRecord: {
|
|
32
32
|
...suggestedRecord,
|
|
33
|
-
recordId: (0,
|
|
33
|
+
recordId: (0, record_id_1.serializeRecordId)(suggestedRecord.recordId),
|
|
34
34
|
},
|
|
35
35
|
}),
|
|
36
36
|
};
|
|
@@ -47,4 +47,4 @@ function serializeStepForWire(step) {
|
|
|
47
47
|
return step;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3RlcC1zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsdUNBK0NDO0FBckRELDRDQUFpRDtBQUVqRCxTQUFTLGtCQUFrQixDQUFDLEdBQWM7SUFDeEMsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFBLDZCQUFpQixFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUF3QixvQkFBb0IsQ0FBQyxJQUF1QjtJQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGVBQWUsQ0FBQztRQUNyQixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUVwRixLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUMzQixxRUFBcUU7WUFDckUsTUFBTSxNQUFNLEdBQTRCO2dCQUN0QyxHQUFHLElBQUk7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSTtvQkFDNUIsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2lCQUM5RCxDQUFDO2FBQ0gsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFFakUsTUFBTSxDQUFDLFdBQVcsR0FBRztvQkFDbkIsR0FBRyxJQUFJLENBQUMsV0FBVztvQkFDbkIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsR0FBRyxDQUFDO3dCQUNKLFFBQVEsRUFBRSxJQUFBLDZCQUFpQixFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsZUFBZSxJQUFJO3dCQUNyQixlQUFlLEVBQUU7NEJBQ2YsR0FBRyxlQUFlOzRCQUNsQixRQUFRLEVBQUUsSUFBQSw2QkFBaUIsRUFBQyxlQUFlLENBQUMsUUFBUSxDQUFDO3lCQUN0RDtxQkFDRixDQUFDO2lCQUNILENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sQ0FBQyxlQUFlLEdBQUc7b0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQ7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AutomatedInbox, InboxAssignment, InboxSyncReport, InboxSyncResult } from '../types/automation';
|
|
2
|
+
/**
|
|
3
|
+
* The orchestrator's automated-inbox endpoints, kept apart from `WorkflowPort`, which is scoped to
|
|
4
|
+
* a single run. Every method is authenticated by the environment secret, never a user session.
|
|
5
|
+
*/
|
|
6
|
+
export interface AutomationPort {
|
|
7
|
+
/**
|
|
8
|
+
* `instanceId` opts this process into the single-poller election: only the lease holder is served
|
|
9
|
+
* the environment's inboxes, everyone else gets an empty list.
|
|
10
|
+
*/
|
|
11
|
+
listAutomatedInboxes(instanceId: string): Promise<AutomatedInbox[]>;
|
|
12
|
+
/** Resolves true on an orchestrator without the lease route: the listing still elects there. */
|
|
13
|
+
holdLease(instanceId: string): Promise<boolean>;
|
|
14
|
+
/** Throws AutomatedInboxGoneError when the orchestrator no longer serves this inbox. */
|
|
15
|
+
listAssignments(inboxId: string): Promise<InboxAssignment[]>;
|
|
16
|
+
/** Throws AutomatedInboxGoneError when the orchestrator no longer serves this inbox. */
|
|
17
|
+
sync(inboxId: string, report: InboxSyncReport): Promise<InboxSyncResult[]>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=automation-port.d.ts.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b21hdGlvbi1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BvcnRzL2F1dG9tYXRpb24tcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { PlainSortClause, SegmentDescriptor } from '../types/automation';
|
|
2
|
+
import type { StepUser } from '../types/execution-context';
|
|
3
|
+
export interface ListSegmentRecordIdsQuery {
|
|
4
|
+
/** Agent-side collection name, as used in `/forest/:collectionName`. */
|
|
5
|
+
collectionName: string;
|
|
6
|
+
segment: SegmentDescriptor;
|
|
7
|
+
/** Field names of the collection's primary key, in the order the packed record id uses. */
|
|
8
|
+
primaryKeys: string[];
|
|
9
|
+
user: StepUser;
|
|
10
|
+
/** IANA zone the agent evaluates relative-date conditions in. */
|
|
11
|
+
timezone: string;
|
|
12
|
+
/** Restricts the read to these packed record ids, on top of the segment. */
|
|
13
|
+
recordIds?: string[];
|
|
14
|
+
/**
|
|
15
|
+
* Excludes these packed record ids from the read, on top of the segment. Honoured for a
|
|
16
|
+
* single-column primary key only: `not_in` takes a flat list of values.
|
|
17
|
+
*/
|
|
18
|
+
excludedRecordIds?: string[];
|
|
19
|
+
pageSize?: number;
|
|
20
|
+
pageNumber?: number;
|
|
21
|
+
sort?: PlainSortClause[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads record ids out of a segment, on the client's agent. Separate from `AgentPort`, which only
|
|
25
|
+
* ever reads one record or one relation at a time and carries no list operation.
|
|
26
|
+
*/
|
|
27
|
+
export interface SegmentReaderPort {
|
|
28
|
+
/** Packed record ids (`a|b` for a composite key), in the agent's own order. */
|
|
29
|
+
listRecordIds(query: ListSegmentRecordIdsQuery): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Why `excludedRecordIds` cannot be used for these known records, or undefined when it can. Reads
|
|
32
|
+
* the agent's capabilities only when there is something to exclude; throws when that read fails.
|
|
33
|
+
*/
|
|
34
|
+
exclusionUnavailableReason(query: ExclusionQuery): Promise<ExclusionUnavailableReason | undefined>;
|
|
35
|
+
sortsOnSeveralFields(liana: string | null | undefined, lianaVersion: string | null | undefined): boolean;
|
|
36
|
+
}
|
|
37
|
+
export type ExclusionUnavailableReason = 'composite-key' | 'too-many-known-records' | 'unknown-liana' | 'field-without-not-in';
|
|
38
|
+
export type ExclusionQuery = Pick<ListSegmentRecordIdsQuery, 'collectionName' | 'primaryKeys' | 'user' | 'timezone'> & {
|
|
39
|
+
/** Which agent answers the read, as the orchestrator names it; null when it does not say. */
|
|
40
|
+
liana: string | null | undefined;
|
|
41
|
+
knownRecordCount: number;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=segment-reader-port.d.ts.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1yZWFkZXItcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wb3J0cy9zZWdtZW50LXJlYWRlci1wb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -14,13 +14,14 @@ export interface AvailableRunDispatch {
|
|
|
14
14
|
auth: {
|
|
15
15
|
forestServerToken: string;
|
|
16
16
|
};
|
|
17
|
+
lockedAt: string | null;
|
|
17
18
|
}
|
|
18
19
|
export interface AvailableRunsBatch {
|
|
19
20
|
pending: AvailableRunDispatch[];
|
|
20
21
|
malformed: MalformedRunInfo[];
|
|
21
22
|
}
|
|
22
23
|
export interface WorkflowPort {
|
|
23
|
-
getAvailableRuns(): Promise<AvailableRunsBatch>;
|
|
24
|
+
getAvailableRuns(count: number): Promise<AvailableRunsBatch>;
|
|
24
25
|
getAvailableRun(runId: string): Promise<AvailableRunDispatch | null>;
|
|
25
26
|
updateStepExecution(runId: string, stepOutcome: StepOutcome): Promise<AvailableRunDispatch | null>;
|
|
26
27
|
getCollectionSchema(collectionName: string, runId: string): Promise<CollectionSchema>;
|
|
@@ -31,5 +32,6 @@ export interface WorkflowPort {
|
|
|
31
32
|
hasRunAccess(runId: string, user: {
|
|
32
33
|
id: number;
|
|
33
34
|
}): Promise<boolean>;
|
|
35
|
+
releaseRun(runId: string, lockedAt: string | null): Promise<void>;
|
|
34
36
|
}
|
|
35
37
|
//# sourceMappingURL=workflow-port.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RecordId } from '
|
|
1
|
+
import type { RecordId } from './types/validated/collection';
|
|
2
2
|
export declare function serializeRecordId(recordId: RecordId): string;
|
|
3
3
|
export declare function deserializeRecordId(value: string): string[];
|
|
4
|
-
//# sourceMappingURL=record-id
|
|
4
|
+
//# sourceMappingURL=record-id.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.serializeRecordId = serializeRecordId;
|
|
4
|
+
exports.deserializeRecordId = deserializeRecordId;
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
function serializeRecordId(recordId) {
|
|
7
|
+
return recordId
|
|
8
|
+
.map(part => {
|
|
9
|
+
const serialized = String(part);
|
|
10
|
+
if (serialized.includes('|')) {
|
|
11
|
+
throw new errors_1.RecordIdSerializationError(serialized);
|
|
12
|
+
}
|
|
13
|
+
return serialized;
|
|
14
|
+
})
|
|
15
|
+
.join('|');
|
|
16
|
+
}
|
|
17
|
+
function deserializeRecordId(value) {
|
|
18
|
+
return value.split('|');
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlY29yZC1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLDhDQVlDO0FBRUQsa0RBRUM7QUFsQkQscUNBQXNEO0FBRXRELFNBQWdCLGlCQUFpQixDQUFDLFFBQWtCO0lBQ2xELE9BQU8sUUFBUTtTQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNWLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksbUNBQTBCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixDQUFDIn0=
|
package/dist/runner.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export interface RunnerConfig {
|
|
|
28
28
|
export default class Runner {
|
|
29
29
|
private readonly config;
|
|
30
30
|
private pollingTimer;
|
|
31
|
+
private pollCycle;
|
|
31
32
|
private readonly inFlightRuns;
|
|
32
33
|
private readonly logger;
|
|
33
34
|
private readonly remoteToolFetcher;
|
|
@@ -41,12 +42,14 @@ export default class Runner {
|
|
|
41
42
|
pendingData?: unknown;
|
|
42
43
|
bearerUserId?: number;
|
|
43
44
|
}): Promise<void>;
|
|
45
|
+
private dispatchDetached;
|
|
44
46
|
private assertRunNotInFlight;
|
|
45
47
|
private schedulePoll;
|
|
46
48
|
private runPollCycle;
|
|
47
49
|
private reportMalformedRun;
|
|
48
50
|
private executeStep;
|
|
49
51
|
private doExecuteStep;
|
|
52
|
+
private handBack;
|
|
50
53
|
private get contextConfig();
|
|
51
54
|
private static getPollingLogLevel;
|
|
52
55
|
private pushMetadataToOrchestrator;
|
package/dist/runner.js
CHANGED
|
@@ -16,6 +16,7 @@ const { version: EXECUTOR_VERSION } = require('../package.json');
|
|
|
16
16
|
class Runner {
|
|
17
17
|
constructor(config) {
|
|
18
18
|
this.pollingTimer = null;
|
|
19
|
+
this.pollCycle = null;
|
|
19
20
|
this.inFlightRuns = new in_flight_run_registry_1.default();
|
|
20
21
|
this._state = 'idle';
|
|
21
22
|
this.config = config;
|
|
@@ -50,8 +51,9 @@ class Runner {
|
|
|
50
51
|
this.pollingTimer = null;
|
|
51
52
|
}
|
|
52
53
|
try {
|
|
53
|
-
// Drain in-flight runs (each entry may cover a whole auto-chain)
|
|
54
|
-
|
|
54
|
+
// Drain in-flight runs (each entry may cover a whole auto-chain), and the poll in progress,
|
|
55
|
+
// which hands back whatever it claims now that nothing will run it.
|
|
56
|
+
if (this.inFlightRuns.size > 0 || this.pollCycle) {
|
|
55
57
|
this.logger('Info', 'Draining in-flight runs', {
|
|
56
58
|
count: this.inFlightRuns.size,
|
|
57
59
|
runs: [...this.inFlightRuns.keys()],
|
|
@@ -59,7 +61,7 @@ class Runner {
|
|
|
59
61
|
const timeoutS = this.config.stopTimeoutS ?? defaults_1.DEFAULT_STOP_TIMEOUT_S;
|
|
60
62
|
let drainTimer;
|
|
61
63
|
const drainResult = await Promise.race([
|
|
62
|
-
this.inFlightRuns.drain().then(() => {
|
|
64
|
+
Promise.all([this.pollCycle, this.inFlightRuns.drain()]).then(() => {
|
|
63
65
|
if (drainTimer)
|
|
64
66
|
clearTimeout(drainTimer);
|
|
65
67
|
return 'drained';
|
|
@@ -71,6 +73,7 @@ class Runner {
|
|
|
71
73
|
if (drainResult === 'timeout') {
|
|
72
74
|
this.logger('Error', 'Drain timeout — runs still in flight', {
|
|
73
75
|
remainingRuns: [...this.inFlightRuns.keys()],
|
|
76
|
+
pollInProgress: this.pollCycle !== null,
|
|
74
77
|
timeoutS,
|
|
75
78
|
});
|
|
76
79
|
}
|
|
@@ -125,9 +128,12 @@ class Runner {
|
|
|
125
128
|
}
|
|
126
129
|
// Not awaited: the chain's outcome travels through updateStepExecution, never through this
|
|
127
130
|
// response.
|
|
128
|
-
|
|
131
|
+
this.dispatchDetached(step, auth.forestServerToken, options?.pendingData);
|
|
132
|
+
}
|
|
133
|
+
dispatchDetached(step, forestServerToken, incomingPendingData) {
|
|
134
|
+
void this.executeStep(step, forestServerToken, incomingPendingData).catch(error => {
|
|
129
135
|
const context = {
|
|
130
|
-
runId,
|
|
136
|
+
runId: step.runId,
|
|
131
137
|
stepId: step.stepId,
|
|
132
138
|
stepIndex: step.stepIndex,
|
|
133
139
|
error: (0, errors_1.extractErrorMessage)(error),
|
|
@@ -153,25 +159,57 @@ class Runner {
|
|
|
153
159
|
schedulePoll() {
|
|
154
160
|
if (this._state !== 'running')
|
|
155
161
|
return;
|
|
156
|
-
this.pollingTimer = setTimeout(() =>
|
|
162
|
+
this.pollingTimer = setTimeout(() => {
|
|
163
|
+
this.pollCycle = this.runPollCycle().finally(() => {
|
|
164
|
+
this.pollCycle = null;
|
|
165
|
+
});
|
|
166
|
+
}, this.config.pollingIntervalS * 1000);
|
|
157
167
|
}
|
|
158
168
|
async runPollCycle() {
|
|
159
169
|
try {
|
|
160
|
-
const
|
|
170
|
+
const freeSlots = defaults_1.MAX_CONCURRENT_RUNS - this.inFlightRuns.size;
|
|
171
|
+
if (freeSlots <= 0) {
|
|
172
|
+
this.logger('Debug', 'Poll cycle skipped, every run slot is busy', {
|
|
173
|
+
inFlight: this.inFlightRuns.size,
|
|
174
|
+
});
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const { pending, malformed } = await this.config.workflowPort.getAvailableRuns(freeSlots);
|
|
161
178
|
// Each reportMalformedRun has its own try/catch, no individual failure poisons the cycle.
|
|
162
179
|
await Promise.allSettled(malformed.map(info => this.reportMalformedRun(info)));
|
|
163
|
-
const
|
|
180
|
+
const claimed = pending.filter(d => !this.inFlightRuns.has(d.step.runId));
|
|
181
|
+
if (this._state !== 'running') {
|
|
182
|
+
this.logger('Info', 'Poll answered after stop began, handing the claimed runs back', {
|
|
183
|
+
runIds: claimed.map(d => d.step.runId),
|
|
184
|
+
});
|
|
185
|
+
await Promise.all(claimed.map(d => this.handBack(d)));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
// A trigger may have taken a slot while the poll was awaited.
|
|
189
|
+
const slotsLeft = Math.max(0, defaults_1.MAX_CONCURRENT_RUNS - this.inFlightRuns.size);
|
|
190
|
+
const dispatchable = claimed.slice(0, slotsLeft);
|
|
191
|
+
const overCapacity = claimed.slice(slotsLeft);
|
|
192
|
+
dispatchable.forEach(d => this.dispatchDetached(d.step, d.auth.forestServerToken));
|
|
193
|
+
if (overCapacity.length) {
|
|
194
|
+
this.logger('Info', 'Poll answered with more runs than free slots, handing the extra back', {
|
|
195
|
+
runIds: overCapacity.map(d => d.step.runId),
|
|
196
|
+
});
|
|
197
|
+
await Promise.all(overCapacity.map(d => this.handBack(d)));
|
|
198
|
+
}
|
|
164
199
|
const logLevel = Runner.getPollingLogLevel({
|
|
165
200
|
pending: pending.length,
|
|
166
201
|
dispatched: dispatchable.length,
|
|
167
202
|
malformed: malformed.length,
|
|
168
203
|
});
|
|
169
204
|
this.logger(logLevel, 'Poll cycle completed', {
|
|
205
|
+
requested: freeSlots,
|
|
170
206
|
fetched: pending.length,
|
|
171
207
|
dispatching: dispatchable.length,
|
|
172
208
|
malformed: malformed.length,
|
|
209
|
+
...(claimed.length < pending.length && {
|
|
210
|
+
alreadyInFlight: pending.filter(d => !claimed.includes(d)).map(d => d.step.runId),
|
|
211
|
+
}),
|
|
173
212
|
});
|
|
174
|
-
await Promise.allSettled(dispatchable.map(d => this.executeStep(d.step, d.auth.forestServerToken)));
|
|
175
213
|
}
|
|
176
214
|
catch (error) {
|
|
177
215
|
this.logger('Error', 'Poll cycle failed', {
|
|
@@ -306,6 +344,9 @@ class Runner {
|
|
|
306
344
|
returnedRunId: nextDispatch.step.runId,
|
|
307
345
|
returnedStepIndex: nextDispatch.step.stepIndex,
|
|
308
346
|
});
|
|
347
|
+
// Another run's lock may be held by another chain or instance still executing it.
|
|
348
|
+
if (nextDispatch.step.runId === currentStep.runId)
|
|
349
|
+
await this.handBack(nextDispatch);
|
|
309
350
|
return;
|
|
310
351
|
}
|
|
311
352
|
// Cap check BEFORE incrementing: chainedCount counts chained steps we've already executed.
|
|
@@ -316,14 +357,17 @@ class Runner {
|
|
|
316
357
|
stepIndex: currentStep.stepIndex,
|
|
317
358
|
maxDepth,
|
|
318
359
|
});
|
|
360
|
+
await this.handBack(nextDispatch);
|
|
319
361
|
return;
|
|
320
362
|
}
|
|
321
|
-
// Graceful stop: finish the current step, then yield instead of chaining further.
|
|
322
|
-
|
|
363
|
+
// Graceful stop: finish the current step, then yield instead of chaining further. Also once
|
|
364
|
+
// a drain timeout has marked the runner stopped while this step was still running.
|
|
365
|
+
if (this._state === 'draining' || this._state === 'stopped') {
|
|
323
366
|
this.logger('Info', 'Chain interrupted by stop() — yielding', {
|
|
324
367
|
runId: currentStep.runId,
|
|
325
368
|
stepIndex: currentStep.stepIndex,
|
|
326
369
|
});
|
|
370
|
+
await this.handBack(nextDispatch);
|
|
327
371
|
return;
|
|
328
372
|
}
|
|
329
373
|
chainedCount += 1;
|
|
@@ -333,6 +377,9 @@ class Runner {
|
|
|
333
377
|
}
|
|
334
378
|
/* eslint-enable no-await-in-loop, no-constant-condition */
|
|
335
379
|
}
|
|
380
|
+
handBack(dispatch) {
|
|
381
|
+
return this.config.workflowPort.releaseRun(dispatch.step.runId, dispatch.lockedAt);
|
|
382
|
+
}
|
|
336
383
|
get contextConfig() {
|
|
337
384
|
return {
|
|
338
385
|
aiModelPort: this.config.aiModelPort,
|
|
@@ -358,4 +405,4 @@ class Runner {
|
|
|
358
405
|
}
|
|
359
406
|
}
|
|
360
407
|
exports.default = Runner;
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLCtFQUE0RDtBQUM1RCx5Q0FBNkU7QUFDN0UscUNBT2tCO0FBQ2xCLDhGQUFvRTtBQUNwRSxzRkFBMkQ7QUFDM0QsZ0ZBQXNEO0FBQ3RELGlFQUF1RTtBQUN2RSwwRUFBaUQ7QUErQmpELHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUF3QixDQUFDO0FBRXhGLE1BQXFCLE1BQU07SUFRekIsWUFBWSxNQUFvQjtRQU54QixpQkFBWSxHQUEwQixJQUFJLENBQUM7UUFDbEMsaUJBQVksR0FBRyxJQUFJLGdDQUFtQixFQUFFLENBQUM7UUFHbEQsV0FBTSxHQUFnQixNQUFNLENBQUM7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUEsd0JBQW1CLEdBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSw2QkFBaUIsQ0FDNUMsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLFdBQVcsRUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxNQUFNLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTztRQUV0QyxJQUFBLDBCQUFlLEVBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRix5RkFBeUY7UUFDekYsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFFeEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVO1lBQUUsT0FBTztRQUU5RixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFN0YsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILGtFQUFrRTtZQUNsRSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsRUFBRTtvQkFDN0MsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTtvQkFDN0IsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNwQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksaUNBQXNCLENBQUM7Z0JBQ3BFLElBQUksVUFBc0MsQ0FBQztnQkFDM0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ2xDLElBQUksVUFBVTs0QkFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBRXpDLE9BQU8sU0FBa0IsQ0FBQztvQkFDNUIsQ0FBQyxDQUFDO29CQUNGLElBQUksT0FBTyxDQUFZLE9BQU8sQ0FBQyxFQUFFO3dCQUMvQixVQUFVLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQ3JFLENBQUMsQ0FBQztpQkFDSCxDQUFDLENBQUM7Z0JBRUgsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFO3dCQUMzRCxhQUFhLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzVDLFFBQVE7cUJBQ1QsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztZQUNILENBQUM7WUFFRCx5RkFBeUY7WUFDekYsMkRBQTJEO1lBQzNELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVqRCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUN4QyxDQUFDLENBQUM7WUFFSCxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHlDQUF5QyxFQUFFO3dCQUM5RCxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztxQkFDdEYsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBYTtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUNmLEtBQWEsRUFDYixPQUEwRDtRQUUxRCwwRkFBMEY7UUFDMUYsOEZBQThGO1FBQzlGLHlGQUF5RjtRQUN6Riw0RkFBNEY7UUFDNUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLElBQUksUUFBcUMsQ0FBQztRQUUxQyxJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLEdBQUcsWUFBWSwwQkFBaUIsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLHlCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpELE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBRWhDLElBQUksT0FBTyxFQUFFLFlBQVksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2pGLE1BQU0sSUFBSSwwQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsWUFBWTtRQUNaLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdEYsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsS0FBSztnQkFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsS0FBSyxFQUFFLElBQUEsNEJBQW1CLEVBQUMsS0FBSyxDQUFDO2dCQUNqQyxLQUFLLEVBQUUsSUFBQSxxQkFBWSxFQUFDLEtBQUssQ0FBQztnQkFDMUIsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDeEQsQ0FBQztZQUVGLHlGQUF5RjtZQUN6RixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsV0FBVztZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFhO1FBQ3hDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSx5Q0FBeUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFMUUsTUFBTSxJQUFJLGdDQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUztZQUFFLE9BQU87UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZO1FBQ3hCLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pGLDBGQUEwRjtZQUMxRixNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFL0UsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDekMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN2QixVQUFVLEVBQUUsWUFBWSxDQUFDLE1BQU07Z0JBQy9CLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTthQUM1QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN2QixXQUFXLEVBQUUsWUFBWSxDQUFDLE1BQU07Z0JBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTthQUM1QixDQUFDLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQ3RCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFO2dCQUN4QyxLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxLQUFLLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ3hELENBQUMsQ0FBQztRQUNMLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELCtGQUErRjtJQUMvRiw4RkFBOEY7SUFDOUYsZ0NBQWdDO0lBQ3hCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFzQjtRQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsaUVBQWlFLEVBQUU7Z0JBQ3RGLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1lBRUgsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQzdELElBQUksRUFBRSxRQUFRO2dCQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixNQUFNLEVBQUUsT0FBTztnQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUU7Z0JBQ3RELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjthQUM3QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRTtnQkFDNUQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDbkMsV0FBVyxFQUFFLElBQUEsNEJBQW1CLEVBQUMsU0FBUyxDQUFDO2FBQzVDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUNqQixJQUE0QixFQUM1QixpQkFBeUIsRUFDekIsbUJBQTZCO1FBRTdCLHVGQUF1RjtRQUN2Rix5RkFBeUY7UUFDekYsNEZBQTRGO1FBQzVGLDhCQUE4QjtRQUM5QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUM1QixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQ2pFLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLGFBQWEsQ0FDekIsSUFBNEIsRUFDNUIsaUJBQXlCLEVBQ3pCLG1CQUE2QjtRQUU3QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxZQUFZLEdBQUcsaUJBQWlCLENBQUM7UUFDckMsSUFBSSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUM5QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxpREFBaUQ7UUFDdkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksa0NBQXVCLENBQUM7UUFFdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUU7WUFDNUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzlCLENBQUMsQ0FBQztRQUVILDJGQUEyRjtRQUMzRixnRUFBZ0U7UUFDaEUsNERBQTREO1FBQzVELE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLE1BQTJCLENBQUM7WUFFaEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sK0JBQW1CLENBQUMsTUFBTSxDQUMvQyxXQUFXLEVBQ1gsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQ3ZELENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQzFFLG1CQUFtQixFQUNuQixZQUFZLENBQ2IsQ0FBQztnQkFDRixNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxPQUFPLEVBQ1AsdUVBQXVFLEVBQ3ZFO29CQUNFLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDeEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO29CQUMxQixTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7b0JBQ2hDLEtBQUssRUFBRSxJQUFBLDRCQUFtQixFQUFDLEtBQUssQ0FBQztpQkFDbEMsQ0FDRixDQUFDO2dCQUVGLHNGQUFzRjtnQkFDdEYsNEVBQTRFO2dCQUM1RSxNQUFNLGdCQUFnQixHQUFnQjtvQkFDcEMsSUFBSSxFQUFFLElBQUEsb0NBQXFCLEVBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQzVELE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtvQkFDMUIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO29CQUNoQyxNQUFNLEVBQUUsT0FBTztvQkFDZixLQUFLLEVBQUUsK0JBQStCO2lCQUN2QyxDQUFDO2dCQUVGLElBQUksQ0FBQztvQkFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztnQkFBQyxPQUFPLFNBQVMsRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxzREFBc0QsRUFBRTt3QkFDM0UsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO3dCQUN4QixNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU07d0JBQzFCLFdBQVcsRUFBRSxJQUFBLDRCQUFtQixFQUFDLFNBQVMsQ0FBQztxQkFDNUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLFlBQXlDLENBQUM7WUFFOUMsSUFBSSxDQUFDO2dCQUNILFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUMvRCxXQUFXLENBQUMsS0FBSyxFQUNqQixNQUFNLENBQUMsV0FBVyxDQUNuQixDQUFDO1lBQ0osQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsK0JBQStCLEVBQUU7b0JBQ3BELEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDeEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO29CQUMxQixTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7b0JBQ2hDLEtBQUssRUFBRSxJQUFBLDRCQUFtQixFQUFDLEtBQUssQ0FBQztvQkFDakMsS0FBSyxFQUFFLElBQUEscUJBQVksRUFBQyxLQUFLLENBQUM7b0JBQzFCLEtBQUssRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN4RCxDQUFDLENBQUM7Z0JBRUgsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUseURBQXlELEVBQUU7b0JBQzdFLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDeEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2lCQUNqQyxDQUFDLENBQUM7Z0JBRUgsT0FBTztZQUNULENBQUM7WUFFRCw0RkFBNEY7WUFDNUYsMEZBQTBGO1lBQzFGLHNGQUFzRjtZQUN0RixxRUFBcUU7WUFDckUsSUFDRSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDN0MsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVMsRUFDcEQsQ0FBQztnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSwyREFBMkQsRUFBRTtvQkFDaEYsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO29CQUN4QixnQkFBZ0IsRUFBRSxXQUFXLENBQUMsU0FBUztvQkFDdkMsYUFBYSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSztvQkFDdEMsaUJBQWlCLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTO2lCQUMvQyxDQUFDLENBQUM7Z0JBRUgsT0FBTztZQUNULENBQUM7WUFFRCwyRkFBMkY7WUFDM0YsZ0ZBQWdGO1lBQ2hGLElBQUksWUFBWSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxpREFBaUQsRUFBRTtvQkFDckUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO29CQUN4QixTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7b0JBQ2hDLFFBQVE7aUJBQ1QsQ0FBQyxDQUFDO2dCQUVILE9BQU87WUFDVCxDQUFDO1lBRUQsa0ZBQWtGO1lBQ2xGLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0NBQXdDLEVBQUU7b0JBQzVELEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDeEIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2lCQUNqQyxDQUFDLENBQUM7Z0JBRUgsT0FBTztZQUNULENBQUM7WUFFRCxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQ2xCLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ2hDLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ25ELG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxDQUFDLHlDQUF5QztRQUM1RSxDQUFDO1FBQ0QsMkRBQTJEO0lBQzdELENBQUM7SUFFRCxJQUFZLGFBQWE7UUFDdkIsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ3RDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztZQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtZQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtTQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUNoQyxPQUFPLEVBQ1AsVUFBVSxFQUNWLFNBQVMsR0FLVjtRQUNDLE9BQU8sT0FBTyxLQUFLLENBQUMsSUFBSSxVQUFVLEtBQUssQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2pGLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxtREFBbUQsRUFBRTtnQkFDdkUsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDOUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuYkQseUJBbWJDIn0=
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLCtFQUE0RDtBQUM1RCx5Q0FBa0c7QUFDbEcscUNBT2tCO0FBQ2xCLDhGQUFvRTtBQUNwRSxzRkFBMkQ7QUFDM0QsZ0ZBQXNEO0FBQ3RELGlFQUF1RTtBQUN2RSwwRUFBaUQ7QUErQmpELHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUF3QixDQUFDO0FBRXhGLE1BQXFCLE1BQU07SUFTekIsWUFBWSxNQUFvQjtRQVB4QixpQkFBWSxHQUEwQixJQUFJLENBQUM7UUFDM0MsY0FBUyxHQUF5QixJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBRyxJQUFJLGdDQUFtQixFQUFFLENBQUM7UUFHbEQsV0FBTSxHQUFnQixNQUFNLENBQUM7UUFHbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUEsd0JBQW1CLEdBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSw2QkFBaUIsQ0FDNUMsTUFBTSxDQUFDLFlBQVksRUFDbkIsTUFBTSxDQUFDLFdBQVcsRUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFDWCxNQUFNLENBQUMsb0JBQW9CLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUs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
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { StepUser } from './execution-context';
|
|
2
|
+
export type SegmentConditionTree = {
|
|
3
|
+
field: string;
|
|
4
|
+
operator: string;
|
|
5
|
+
value?: unknown;
|
|
6
|
+
} | {
|
|
7
|
+
aggregator: string;
|
|
8
|
+
conditions: SegmentConditionTree[];
|
|
9
|
+
};
|
|
10
|
+
export type SegmentDescriptor = {
|
|
11
|
+
kind: 'smart';
|
|
12
|
+
name: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'sql';
|
|
15
|
+
query: string;
|
|
16
|
+
connectionName?: string | null;
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'filter';
|
|
19
|
+
conditionTree: SegmentConditionTree;
|
|
20
|
+
};
|
|
21
|
+
export interface PlainSortClause {
|
|
22
|
+
field: string;
|
|
23
|
+
ascending: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface AutomatedInbox {
|
|
26
|
+
inboxId: string;
|
|
27
|
+
renderingId?: number;
|
|
28
|
+
workflowId?: string;
|
|
29
|
+
collectionName: string;
|
|
30
|
+
primaryKeys: string[];
|
|
31
|
+
maxConcurrentRuns: number;
|
|
32
|
+
/** Zone the segment's relative dates are read in, already resolved to a valid one. */
|
|
33
|
+
timezone: string;
|
|
34
|
+
liana?: string | null;
|
|
35
|
+
lianaVersion?: string | null;
|
|
36
|
+
segment: SegmentDescriptor;
|
|
37
|
+
sort?: PlainSortClause[];
|
|
38
|
+
user: StepUser;
|
|
39
|
+
}
|
|
40
|
+
/** States stay plain strings: one a newer orchestrator introduces must not take the inbox down. */
|
|
41
|
+
export interface InboxAssignment {
|
|
42
|
+
recordId: string;
|
|
43
|
+
state: string;
|
|
44
|
+
workflowRunId?: number | null;
|
|
45
|
+
runState?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export type SegmentReadFailureReason = 'agent-forbidden' | 'agent-unreachable' | 'segment-read-failed';
|
|
48
|
+
export interface SegmentReadFailure {
|
|
49
|
+
reason: SegmentReadFailureReason;
|
|
50
|
+
httpStatus?: number;
|
|
51
|
+
}
|
|
52
|
+
export interface InboxSyncReport {
|
|
53
|
+
closed: {
|
|
54
|
+
recordId: string;
|
|
55
|
+
stillInSegment: boolean;
|
|
56
|
+
}[];
|
|
57
|
+
candidates: string[];
|
|
58
|
+
readFailure?: SegmentReadFailure;
|
|
59
|
+
}
|
|
60
|
+
export interface InboxSyncResult {
|
|
61
|
+
recordId: string;
|
|
62
|
+
outcome: string;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=automation.d.ts.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b21hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdXRvbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -234,7 +234,8 @@ export type Step = z.infer<typeof StepSchema>;
|
|
|
234
234
|
export declare enum TriggerType {
|
|
235
235
|
Manual = "manual",
|
|
236
236
|
Webhook = "webhook",
|
|
237
|
-
Mcp = "mcp"
|
|
237
|
+
Mcp = "mcp",
|
|
238
|
+
DataChange = "dataChange"
|
|
238
239
|
}
|
|
239
240
|
export declare const TriggerTypeSchema: z.ZodEnum<typeof TriggerType>;
|
|
240
241
|
export declare const CallScopeSchema: z.ZodObject<{
|
|
@@ -34,6 +34,7 @@ var TriggerType;
|
|
|
34
34
|
TriggerType["Manual"] = "manual";
|
|
35
35
|
TriggerType["Webhook"] = "webhook";
|
|
36
36
|
TriggerType["Mcp"] = "mcp";
|
|
37
|
+
TriggerType["DataChange"] = "dataChange";
|
|
37
38
|
})(TriggerType || (exports.TriggerType = TriggerType = {}));
|
|
38
39
|
exports.TriggerTypeSchema = zod_1.z.nativeEnum(TriggerType);
|
|
39
40
|
// Grouped because every field describes the same call. The frame is a set of steps rather than an
|
|
@@ -68,4 +69,4 @@ exports.AvailableStepExecutionSchema = zod_1.z
|
|
|
68
69
|
callScope: exports.CallScopeSchema.optional(),
|
|
69
70
|
})
|
|
70
71
|
.strict();
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL3ZhbGlkYXRlZC9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQWlDO0FBQ2pDLDZCQUF3QjtBQUV4Qiw2Q0FBK0M7QUFDL0MsdURBQXlEO0FBQ3pELGlEQUFtRDtBQUV0QyxRQUFBLGNBQWMsR0FBRyxPQUFDO0tBQzVCLE1BQU0sQ0FBQztJQUNOLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2QsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDakIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDckIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUU7SUFDM0MsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEIsZUFBZSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDM0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN2QyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUM7QUFHQyxRQUFBLFVBQVUsR0FBRyxPQUFDO0tBQ3hCLE1BQU0sQ0FBQztJQUNOLGNBQWMsRUFBRSxzQ0FBb0I7SUFDcEMsV0FBVyxFQUFFLGdDQUFpQjtJQUM5QiwwRkFBMEY7SUFDMUYsdUZBQXVGO0lBQ3ZGLDRDQUE0QztJQUM1QyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdELENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdaLElBQVksV0FLWDtBQUxELFdBQVksV0FBVztJQUNyQixnQ0FBaUIsQ0FBQTtJQUNqQixrQ0FBbUIsQ0FBQTtJQUNuQiwwQkFBVyxDQUFBO0lBQ1gsd0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUxXLFdBQVcsMkJBQVgsV0FBVyxRQUt0QjtBQUNZLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUUzRCxrR0FBa0c7QUFDbEcsMEVBQTBFO0FBQzdELFFBQUEsZUFBZSxHQUFHLE9BQUM7S0FDN0IsTUFBTSxDQUFDO0lBQ04sb0JBQW9CLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEQsc0JBQXNCLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUUsZ0dBQWdHO0lBQ2hHLHVCQUF1QixFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzNFLDRCQUE0QixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFELGtHQUFrRztJQUNsRywrRkFBK0Y7SUFDL0YsUUFBUSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQ3JDLENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdDLFFBQUEsNEJBQTRCLEdBQUcsT0FBQztLQUMxQyxNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3pDLFlBQVksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixXQUFXLEVBQUUseUJBQWlCO0lBQzlCLGFBQWEsRUFBRSw0QkFBZTtJQUM5QixjQUFjLEVBQUUsc0NBQW9CO0lBQ3BDLGFBQWEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFVLENBQUM7SUFDbEMsSUFBSSxFQUFFLHNCQUFjO0lBQ3BCLHlGQUF5RjtJQUN6RiwwRkFBMEY7SUFDMUYseUJBQXlCO0lBQ3pCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFRLENBQUMsV0FBVyxDQUFDO0lBQ2pELFNBQVMsRUFBRSx1QkFBZSxDQUFDLFFBQVEsRUFBRTtDQUN0QyxDQUFDO0tBQ0QsTUFBTSxFQUFFLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/workflow-executor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.34.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"forest-workflow-executor": "dist/cli.js"
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"test": "jest"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@forestadmin/agent-client": "1.
|
|
33
|
-
"@forestadmin/ai-proxy": "1.14.
|
|
34
|
-
"@forestadmin/forestadmin-client": "1.44.
|
|
32
|
+
"@forestadmin/agent-client": "1.19.0",
|
|
33
|
+
"@forestadmin/ai-proxy": "1.14.5",
|
|
34
|
+
"@forestadmin/forestadmin-client": "1.44.1",
|
|
35
35
|
"@koa/bodyparser": "^6.1.0",
|
|
36
36
|
"@koa/router": "^15.6.0",
|
|
37
37
|
"jsonwebtoken": "^9.0.3",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"luxon": "^3.2.1",
|
|
41
41
|
"pg": "^8.8.0",
|
|
42
42
|
"picocolors": "^1.1.1",
|
|
43
|
+
"semver": "^7.7.3",
|
|
43
44
|
"sequelize": "^6.37.8",
|
|
44
45
|
"umzug": "^3.8.2",
|
|
45
46
|
"zod": "4.6.5"
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"@types/koa": "^2.13.5",
|
|
50
51
|
"@types/koa__router": "^12.0.4",
|
|
51
52
|
"@types/luxon": "^3.2.0",
|
|
53
|
+
"@types/semver": "^7.3.12",
|
|
52
54
|
"@types/sequelize": "^6.12.0",
|
|
53
55
|
"sqlite3": "^6.0.1",
|
|
54
56
|
"supertest": "^7.1.3"
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.serializeRecordId = serializeRecordId;
|
|
4
|
-
exports.deserializeRecordId = deserializeRecordId;
|
|
5
|
-
const errors_1 = require("../errors");
|
|
6
|
-
function serializeRecordId(recordId) {
|
|
7
|
-
return recordId
|
|
8
|
-
.map(part => {
|
|
9
|
-
const serialized = String(part);
|
|
10
|
-
if (serialized.includes('|')) {
|
|
11
|
-
throw new errors_1.RecordIdSerializationError(serialized);
|
|
12
|
-
}
|
|
13
|
-
return serialized;
|
|
14
|
-
})
|
|
15
|
-
.join('|');
|
|
16
|
-
}
|
|
17
|
-
function deserializeRecordId(value) {
|
|
18
|
-
return value.split('|');
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLWlkLXNlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvcmVjb3JkLWlkLXNlcmlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw4Q0FZQztBQUVELGtEQUVDO0FBbEJELHNDQUF1RDtBQUV2RCxTQUFnQixpQkFBaUIsQ0FBQyxRQUFrQjtJQUNsRCxPQUFPLFFBQVE7U0FDWixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLG1DQUEwQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUM7U0FDRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYTtJQUMvQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQyJ9
|