depa-actor 0.1.0 → 0.1.2
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/core/ActorSystem.d.ts +34 -0
- package/dist/core/ActorSystem.d.ts.map +1 -0
- package/dist/core/ActorSystem.js +169 -0
- package/dist/core/ActorSystem.js.map +1 -0
- package/dist/core/types.d.ts +66 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +10 -0
- package/dist/core/types.js.map +1 -0
- package/dist/dispatch/ActorDispatchAdapter.d.ts +28 -0
- package/dist/dispatch/ActorDispatchAdapter.d.ts.map +1 -0
- package/dist/dispatch/ActorDispatchAdapter.js +38 -0
- package/dist/dispatch/ActorDispatchAdapter.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestration/index.d.ts +9 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +8 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/presets/aiAgent.d.ts +4 -0
- package/dist/orchestration/presets/aiAgent.d.ts.map +1 -0
- package/dist/orchestration/presets/aiAgent.js +38 -0
- package/dist/orchestration/presets/aiAgent.js.map +1 -0
- package/dist/orchestration/recovery.d.ts +4 -0
- package/dist/orchestration/recovery.d.ts.map +1 -0
- package/dist/orchestration/recovery.js +110 -0
- package/dist/orchestration/recovery.js.map +1 -0
- package/dist/orchestration/reducer.d.ts +5 -0
- package/dist/orchestration/reducer.d.ts.map +1 -0
- package/dist/orchestration/reducer.js +273 -0
- package/dist/orchestration/reducer.js.map +1 -0
- package/dist/orchestration/runtimeAdapter.d.ts +5 -0
- package/dist/orchestration/runtimeAdapter.d.ts.map +1 -0
- package/dist/orchestration/runtimeAdapter.js +12 -0
- package/dist/orchestration/runtimeAdapter.js.map +1 -0
- package/dist/orchestration/scheduler.d.ts +11 -0
- package/dist/orchestration/scheduler.d.ts.map +1 -0
- package/dist/orchestration/scheduler.js +82 -0
- package/dist/orchestration/scheduler.js.map +1 -0
- package/dist/orchestration/types.d.ts +145 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +12 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/pipeline/ActorPipeline.d.ts +29 -0
- package/dist/pipeline/ActorPipeline.d.ts.map +1 -0
- package/dist/pipeline/ActorPipeline.js +32 -0
- package/dist/pipeline/ActorPipeline.js.map +1 -0
- package/dist/runtime/ActorRuntime.d.ts +35 -0
- package/dist/runtime/ActorRuntime.d.ts.map +1 -0
- package/dist/runtime/ActorRuntime.js +74 -0
- package/dist/runtime/ActorRuntime.js.map +1 -0
- package/dist/runtime/completion.d.ts +21 -0
- package/dist/runtime/completion.d.ts.map +1 -0
- package/dist/runtime/completion.js +69 -0
- package/dist/runtime/completion.js.map +1 -0
- package/dist/runtime/indexing.d.ts +12 -0
- package/dist/runtime/indexing.d.ts.map +1 -0
- package/dist/runtime/indexing.js +30 -0
- package/dist/runtime/indexing.js.map +1 -0
- package/dist/runtime/snapshot.d.ts +76 -0
- package/dist/runtime/snapshot.d.ts.map +1 -0
- package/dist/runtime/snapshot.js +10 -0
- package/dist/runtime/snapshot.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MailboxSchema } from '../core/types';
|
|
2
|
+
import { type FiberAction, type OrchestratorOptions, type OrchestratorState, type ReduceResult } from './types';
|
|
3
|
+
export declare function createOrchestratorState<TSchema extends MailboxSchema>(options?: Partial<OrchestratorOptions<TSchema>>): OrchestratorState<TSchema>;
|
|
4
|
+
export declare function reduceOrchestrator<TSchema extends MailboxSchema>(state: OrchestratorState<TSchema>, action: FiberAction<TSchema>): ReduceResult<TSchema>;
|
|
5
|
+
//# sourceMappingURL=reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../src/orchestration/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAEL,KAAK,WAAW,EAGhB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,SAAS,CAAC;AAiEjB,wBAAgB,uBAAuB,CAAC,OAAO,SAAS,aAAa,EACnE,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAC9C,iBAAiB,CAAC,OAAO,CAAC,CAoB5B;AA8DD,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,aAAa,EAC9D,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACjC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,YAAY,CAAC,OAAO,CAAC,CA4KvB"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { applyFailure } from './recovery';
|
|
2
|
+
import { DEFAULT_ORCHESTRATOR_OPTIONS, } from './types';
|
|
3
|
+
function isTerminalStatus(status) {
|
|
4
|
+
return status === 'completed' || status === 'cancelled' || status === 'failed' || status === 'dead_letter';
|
|
5
|
+
}
|
|
6
|
+
function cloneFiberMap(state) {
|
|
7
|
+
return { ...state.fibers };
|
|
8
|
+
}
|
|
9
|
+
function upsertParentChildRelation(fibers, fiber, now) {
|
|
10
|
+
if (!fiber.parentId) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const parent = fibers[fiber.parentId];
|
|
14
|
+
if (!parent) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!parent.childIds.includes(fiber.id)) {
|
|
18
|
+
fibers[fiber.parentId] = {
|
|
19
|
+
...parent,
|
|
20
|
+
childIds: [...parent.childIds, fiber.id],
|
|
21
|
+
updatedAt: now,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function createFiberRecord(input, now, order, state) {
|
|
26
|
+
const timeoutMs = input.timeoutMs ?? state.options.defaultTimeoutMs;
|
|
27
|
+
return {
|
|
28
|
+
id: input.id,
|
|
29
|
+
actorId: input.actorId,
|
|
30
|
+
parentId: input.parentId,
|
|
31
|
+
childIds: [],
|
|
32
|
+
lane: input.lane ?? 'default',
|
|
33
|
+
status: 'ready',
|
|
34
|
+
basePriority: input.basePriority,
|
|
35
|
+
age: 0,
|
|
36
|
+
attempts: 0,
|
|
37
|
+
maxAttempts: Math.max(0, input.maxAttempts ?? 0),
|
|
38
|
+
step: input.step,
|
|
39
|
+
waitingReason: undefined,
|
|
40
|
+
suspendPolicy: undefined,
|
|
41
|
+
timeoutMs: timeoutMs > 0 ? timeoutMs : undefined,
|
|
42
|
+
timeoutAt: undefined,
|
|
43
|
+
retryAt: undefined,
|
|
44
|
+
lastError: undefined,
|
|
45
|
+
order,
|
|
46
|
+
createdAt: now,
|
|
47
|
+
updatedAt: now,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function createOrchestratorState(options) {
|
|
51
|
+
const raw = (options ?? {});
|
|
52
|
+
const effectiveDefault = raw.defaultSuspendPolicy ??
|
|
53
|
+
DEFAULT_ORCHESTRATOR_OPTIONS.defaultSuspendPolicy;
|
|
54
|
+
const base = {
|
|
55
|
+
...DEFAULT_ORCHESTRATOR_OPTIONS,
|
|
56
|
+
...raw,
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
options: {
|
|
60
|
+
...base,
|
|
61
|
+
defaultSuspendPolicy: effectiveDefault,
|
|
62
|
+
},
|
|
63
|
+
fibers: {},
|
|
64
|
+
deadLetters: [],
|
|
65
|
+
sequence: 0,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function applyTick(state, now) {
|
|
69
|
+
let nextState = state;
|
|
70
|
+
let aggregatedEffects = [];
|
|
71
|
+
const ids = Object.keys(state.fibers);
|
|
72
|
+
for (const id of ids) {
|
|
73
|
+
const fiber = nextState.fibers[id];
|
|
74
|
+
if (!fiber) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (isTerminalStatus(fiber.status)) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (nextState.options.timeoutEnabled &&
|
|
81
|
+
fiber.timeoutAt !== undefined &&
|
|
82
|
+
now >= fiber.timeoutAt &&
|
|
83
|
+
(fiber.status === 'running' || fiber.status === 'ready' || fiber.status === 'suspended')) {
|
|
84
|
+
const timed = applyFailure(nextState, id, now, 'timeout');
|
|
85
|
+
nextState = timed.state;
|
|
86
|
+
aggregatedEffects = [...aggregatedEffects, ...timed.effects];
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const iter = nextState.fibers[id];
|
|
90
|
+
if (iter &&
|
|
91
|
+
iter.status === 'suspended' &&
|
|
92
|
+
iter.waitingReason === 'retry_backoff' &&
|
|
93
|
+
iter.retryAt !== undefined &&
|
|
94
|
+
now >= iter.retryAt) {
|
|
95
|
+
nextState = {
|
|
96
|
+
...nextState,
|
|
97
|
+
fibers: {
|
|
98
|
+
...nextState.fibers,
|
|
99
|
+
[id]: {
|
|
100
|
+
...iter,
|
|
101
|
+
status: 'ready',
|
|
102
|
+
waitingReason: undefined,
|
|
103
|
+
retryAt: undefined,
|
|
104
|
+
timeoutAt: undefined,
|
|
105
|
+
updatedAt: now,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
state: nextState,
|
|
113
|
+
effects: aggregatedEffects,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export function reduceOrchestrator(state, action) {
|
|
117
|
+
if (action.type === 'tick') {
|
|
118
|
+
return applyTick(state, action.now);
|
|
119
|
+
}
|
|
120
|
+
if (action.type === 'spawn') {
|
|
121
|
+
const nextSequence = state.sequence + 1;
|
|
122
|
+
const nextFibers = cloneFiberMap(state);
|
|
123
|
+
const record = createFiberRecord(action.fiber, action.now, nextSequence, state);
|
|
124
|
+
nextFibers[action.fiber.id] = record;
|
|
125
|
+
upsertParentChildRelation(nextFibers, action.fiber, action.now);
|
|
126
|
+
return {
|
|
127
|
+
state: {
|
|
128
|
+
...state,
|
|
129
|
+
sequence: nextSequence,
|
|
130
|
+
fibers: nextFibers,
|
|
131
|
+
},
|
|
132
|
+
effects: [],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
const current = state.fibers[action.fiberId];
|
|
136
|
+
if (!current) {
|
|
137
|
+
return { state, effects: [] };
|
|
138
|
+
}
|
|
139
|
+
if (action.type === 'yield') {
|
|
140
|
+
if (isTerminalStatus(current.status)) {
|
|
141
|
+
return { state, effects: [] };
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
state: {
|
|
145
|
+
...state,
|
|
146
|
+
fibers: {
|
|
147
|
+
...state.fibers,
|
|
148
|
+
[action.fiberId]: {
|
|
149
|
+
...current,
|
|
150
|
+
status: 'ready',
|
|
151
|
+
waitingReason: undefined,
|
|
152
|
+
suspendPolicy: undefined,
|
|
153
|
+
timeoutAt: undefined,
|
|
154
|
+
step: action.nextStep ?? current.step,
|
|
155
|
+
updatedAt: action.now,
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
effects: [],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (action.type === 'suspend') {
|
|
163
|
+
if (isTerminalStatus(current.status)) {
|
|
164
|
+
return { state, effects: [] };
|
|
165
|
+
}
|
|
166
|
+
const effectivePolicy = action.suspendPolicy ??
|
|
167
|
+
state.options.defaultSuspendPolicy ??
|
|
168
|
+
'continue_others';
|
|
169
|
+
return {
|
|
170
|
+
state: {
|
|
171
|
+
...state,
|
|
172
|
+
fibers: {
|
|
173
|
+
...state.fibers,
|
|
174
|
+
[action.fiberId]: {
|
|
175
|
+
...current,
|
|
176
|
+
status: 'suspended',
|
|
177
|
+
waitingReason: action.reason,
|
|
178
|
+
suspendPolicy: effectivePolicy,
|
|
179
|
+
timeoutAt: undefined,
|
|
180
|
+
updatedAt: action.now,
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
effects: [],
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (action.type === 'resume') {
|
|
188
|
+
if (isTerminalStatus(current.status)) {
|
|
189
|
+
return { state, effects: [] };
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
state: {
|
|
193
|
+
...state,
|
|
194
|
+
fibers: {
|
|
195
|
+
...state.fibers,
|
|
196
|
+
[action.fiberId]: {
|
|
197
|
+
...current,
|
|
198
|
+
status: 'ready',
|
|
199
|
+
waitingReason: undefined,
|
|
200
|
+
suspendPolicy: undefined,
|
|
201
|
+
retryAt: undefined,
|
|
202
|
+
timeoutAt: undefined,
|
|
203
|
+
step: action.nextStep ?? current.step,
|
|
204
|
+
updatedAt: action.now,
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
effects: [],
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (action.type === 'complete') {
|
|
212
|
+
return {
|
|
213
|
+
state: {
|
|
214
|
+
...state,
|
|
215
|
+
fibers: {
|
|
216
|
+
...state.fibers,
|
|
217
|
+
[action.fiberId]: {
|
|
218
|
+
...current,
|
|
219
|
+
status: 'completed',
|
|
220
|
+
waitingReason: undefined,
|
|
221
|
+
suspendPolicy: undefined,
|
|
222
|
+
timeoutAt: undefined,
|
|
223
|
+
updatedAt: action.now,
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
effects: [],
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
if (action.type === 'fail') {
|
|
231
|
+
return applyFailure(state, action.fiberId, action.now, action.error);
|
|
232
|
+
}
|
|
233
|
+
if (action.type === 'cancel') {
|
|
234
|
+
const nextFibers = cloneFiberMap(state);
|
|
235
|
+
const queue = [action.fiberId];
|
|
236
|
+
const seen = new Set();
|
|
237
|
+
while (queue.length > 0) {
|
|
238
|
+
const id = queue.shift();
|
|
239
|
+
if (seen.has(id)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
seen.add(id);
|
|
243
|
+
const item = nextFibers[id];
|
|
244
|
+
if (!item) {
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
nextFibers[id] = {
|
|
248
|
+
...item,
|
|
249
|
+
status: 'cancelled',
|
|
250
|
+
waitingReason: undefined,
|
|
251
|
+
suspendPolicy: undefined,
|
|
252
|
+
timeoutAt: undefined,
|
|
253
|
+
retryAt: undefined,
|
|
254
|
+
lastError: action.reason,
|
|
255
|
+
updatedAt: action.now,
|
|
256
|
+
};
|
|
257
|
+
if (action.propagateToChildren) {
|
|
258
|
+
for (const childId of item.childIds) {
|
|
259
|
+
queue.push(childId);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
state: {
|
|
265
|
+
...state,
|
|
266
|
+
fibers: nextFibers,
|
|
267
|
+
},
|
|
268
|
+
effects: [],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return { state, effects: [] };
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/orchestration/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MailboxSchema } from '../core/types';
|
|
2
|
+
import type { ActorRuntime } from '../runtime/ActorRuntime';
|
|
3
|
+
import type { FiberEffect } from './types';
|
|
4
|
+
export declare function dispatchEffects<TRuntime, TSchema extends MailboxSchema>(runtime: ActorRuntime<TRuntime, TSchema>, effects: FiberEffect<TSchema>[], senderId?: string): void;
|
|
5
|
+
//# sourceMappingURL=runtimeAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeAdapter.d.ts","sourceRoot":"","sources":["../../src/orchestration/runtimeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,SAAS,aAAa,EACrE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EACxC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAUN"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function dispatchEffects(runtime, effects, senderId) {
|
|
2
|
+
const from = senderId ?? '__fiber_scheduler__';
|
|
3
|
+
for (const effect of effects) {
|
|
4
|
+
if (effect.kind === 'send') {
|
|
5
|
+
runtime.sendFrom(from, effect.to, effect.step.tag, effect.step.payload);
|
|
6
|
+
}
|
|
7
|
+
if (effect.kind === 'dead_letter' && effect.to && effect.step) {
|
|
8
|
+
runtime.sendFrom(from, effect.to, effect.step.tag, effect.step.payload);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=runtimeAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeAdapter.js","sourceRoot":"","sources":["../../src/orchestration/runtimeAdapter.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,eAAe,CAC7B,OAAwC,EACxC,OAA+B,EAC/B,QAAiB;IAEjB,MAAM,IAAI,GAAG,QAAQ,IAAI,qBAAqB,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9D,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MailboxSchema } from '../core/types';
|
|
2
|
+
import type { FiberEffect, FiberId, FiberRecord, OrchestratorState } from './types';
|
|
3
|
+
export interface ScheduleResult<TSchema extends MailboxSchema> {
|
|
4
|
+
state: OrchestratorState<TSchema>;
|
|
5
|
+
effects: FiberEffect<TSchema>[];
|
|
6
|
+
selectedFiberId?: FiberId;
|
|
7
|
+
}
|
|
8
|
+
export declare function computeEffectivePriority<TSchema extends MailboxSchema>(fiber: FiberRecord<TSchema>, agingStep: number): number;
|
|
9
|
+
export declare function selectNextFiberId<TSchema extends MailboxSchema>(state: OrchestratorState<TSchema>, now?: number): FiberId | undefined;
|
|
10
|
+
export declare function scheduleOne<TSchema extends MailboxSchema>(state: OrchestratorState<TSchema>, now: number): ScheduleResult<TSchema>;
|
|
11
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestration/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEpF,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,aAAa;IAC3D,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD,wBAAgB,wBAAwB,CAAC,OAAO,SAAS,aAAa,EACpE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAC3B,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,aAAa,EAC7D,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,GAAG,SAAS,CA2BrB;AAED,wBAAgB,WAAW,CAAC,OAAO,SAAS,aAAa,EACvD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACjC,GAAG,EAAE,MAAM,GACV,cAAc,CAAC,OAAO,CAAC,CAuDzB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
function isSchedulable(fiber) {
|
|
2
|
+
return fiber.status === 'ready';
|
|
3
|
+
}
|
|
4
|
+
export function computeEffectivePriority(fiber, agingStep) {
|
|
5
|
+
return fiber.basePriority - fiber.age * Math.max(0, agingStep);
|
|
6
|
+
}
|
|
7
|
+
export function selectNextFiberId(state, now) {
|
|
8
|
+
const hooks = state.options.schedulerHooks;
|
|
9
|
+
const selectionNow = typeof now === 'number' ? now : Date.now();
|
|
10
|
+
let candidates = Object.values(state.fibers).filter(isSchedulable);
|
|
11
|
+
if (hooks?.filterCandidates) {
|
|
12
|
+
candidates = hooks.filterCandidates({ state, candidates, now: selectionNow });
|
|
13
|
+
}
|
|
14
|
+
else if (hooks?.filterCandidate) {
|
|
15
|
+
const f = hooks.filterCandidate;
|
|
16
|
+
candidates = candidates.filter(fiber => f({ state, fiber, now: selectionNow }));
|
|
17
|
+
}
|
|
18
|
+
if (candidates.length === 0) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const agingStep = state.options.agingStep;
|
|
22
|
+
candidates.sort((a, b) => {
|
|
23
|
+
const pa = computeEffectivePriority(a, agingStep);
|
|
24
|
+
const pb = computeEffectivePriority(b, agingStep);
|
|
25
|
+
if (pa !== pb) {
|
|
26
|
+
return pa - pb;
|
|
27
|
+
}
|
|
28
|
+
return a.order - b.order;
|
|
29
|
+
});
|
|
30
|
+
return candidates[0]?.id;
|
|
31
|
+
}
|
|
32
|
+
export function scheduleOne(state, now) {
|
|
33
|
+
const selectedFiberId = selectNextFiberId(state, now);
|
|
34
|
+
if (!selectedFiberId) {
|
|
35
|
+
return { state, effects: [] };
|
|
36
|
+
}
|
|
37
|
+
const selected = state.fibers[selectedFiberId];
|
|
38
|
+
if (!selected) {
|
|
39
|
+
return { state, effects: [] };
|
|
40
|
+
}
|
|
41
|
+
const timeoutMs = selected.timeoutMs ?? state.options.defaultTimeoutMs;
|
|
42
|
+
const timeoutAt = state.options.timeoutEnabled && timeoutMs > 0 ? now + timeoutMs : undefined;
|
|
43
|
+
const nextFibers = { ...state.fibers };
|
|
44
|
+
for (const [id, fiber] of Object.entries(state.fibers)) {
|
|
45
|
+
if (id === selectedFiberId) {
|
|
46
|
+
nextFibers[id] = {
|
|
47
|
+
...fiber,
|
|
48
|
+
status: 'running',
|
|
49
|
+
age: 0,
|
|
50
|
+
timeoutAt,
|
|
51
|
+
updatedAt: now,
|
|
52
|
+
};
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (fiber.status === 'ready') {
|
|
56
|
+
nextFibers[id] = {
|
|
57
|
+
...fiber,
|
|
58
|
+
age: fiber.age + Math.max(0, state.options.agingStep),
|
|
59
|
+
updatedAt: now,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const effects = [];
|
|
64
|
+
const withStep = nextFibers[selectedFiberId];
|
|
65
|
+
if (withStep?.step) {
|
|
66
|
+
effects.push({
|
|
67
|
+
kind: 'send',
|
|
68
|
+
fiberId: selectedFiberId,
|
|
69
|
+
to: withStep.actorId,
|
|
70
|
+
step: withStep.step,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
state: {
|
|
75
|
+
...state,
|
|
76
|
+
fibers: nextFibers,
|
|
77
|
+
},
|
|
78
|
+
effects,
|
|
79
|
+
selectedFiberId,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/orchestration/scheduler.ts"],"names":[],"mappings":"AASA,SAAS,aAAa,CAAgC,KAA2B;IAC/E,OAAO,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAA2B,EAC3B,SAAiB;IAEjB,OAAO,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAiC,EACjC,GAAY;IAEZ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IAC3C,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAChE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAEnE,IAAI,KAAK,EAAE,gBAAgB,EAAE,CAAC;QAC5B,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,KAAK,EAAE,eAAe,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;QAChC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,wBAAwB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAiC,EACjC,GAAW;IAEX,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9F,MAAM,UAAU,GAA0C,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC9E,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;YAC3B,UAAU,CAAC,EAAE,CAAC,GAAG;gBACf,GAAG,KAAK;gBACR,MAAM,EAAE,SAAS;gBACjB,GAAG,EAAE,CAAC;gBACN,SAAS;gBACT,SAAS,EAAE,GAAG;aACf,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,CAAC,GAAG;gBACf,GAAG,KAAK;gBACR,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACrD,SAAS,EAAE,GAAG;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,QAAQ,CAAC,OAAO;YACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,KAAK,EAAE;YACL,GAAG,KAAK;YACR,MAAM,EAAE,UAAU;SACnB;QACD,OAAO;QACP,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import type { MailboxSchema } from '../core/types';
|
|
2
|
+
export type FiberId = string;
|
|
3
|
+
export type FiberStatus = 'ready' | 'running' | 'suspended' | 'completed' | 'cancelled' | 'failed' | 'dead_letter';
|
|
4
|
+
export type FiberWaitingReason = string;
|
|
5
|
+
export type SuspendPolicy = 'continue_others' | 'pause_all';
|
|
6
|
+
export type FiberLane = string;
|
|
7
|
+
export type SchedulerFilterCandidate<TSchema extends MailboxSchema> = (args: {
|
|
8
|
+
state: OrchestratorState<TSchema>;
|
|
9
|
+
fiber: FiberRecord<TSchema>;
|
|
10
|
+
now: number;
|
|
11
|
+
}) => boolean;
|
|
12
|
+
export type SchedulerFilterCandidates<TSchema extends MailboxSchema> = (args: {
|
|
13
|
+
state: OrchestratorState<TSchema>;
|
|
14
|
+
candidates: Array<FiberRecord<TSchema>>;
|
|
15
|
+
now: number;
|
|
16
|
+
}) => Array<FiberRecord<TSchema>>;
|
|
17
|
+
export interface SchedulerHooks<TSchema extends MailboxSchema> {
|
|
18
|
+
filterCandidate?: SchedulerFilterCandidate<TSchema>;
|
|
19
|
+
filterCandidates?: SchedulerFilterCandidates<TSchema>;
|
|
20
|
+
}
|
|
21
|
+
export type FiberStep<TSchema extends MailboxSchema> = {
|
|
22
|
+
[K in keyof TSchema & string]: {
|
|
23
|
+
tag: K;
|
|
24
|
+
payload: TSchema[K];
|
|
25
|
+
};
|
|
26
|
+
}[keyof TSchema & string];
|
|
27
|
+
export interface FiberRecord<TSchema extends MailboxSchema> {
|
|
28
|
+
id: FiberId;
|
|
29
|
+
actorId: string;
|
|
30
|
+
parentId?: FiberId;
|
|
31
|
+
childIds: FiberId[];
|
|
32
|
+
lane: FiberLane;
|
|
33
|
+
status: FiberStatus;
|
|
34
|
+
basePriority: number;
|
|
35
|
+
age: number;
|
|
36
|
+
attempts: number;
|
|
37
|
+
maxAttempts: number;
|
|
38
|
+
step?: FiberStep<TSchema>;
|
|
39
|
+
waitingReason?: FiberWaitingReason;
|
|
40
|
+
suspendPolicy?: SuspendPolicy;
|
|
41
|
+
timeoutMs?: number;
|
|
42
|
+
timeoutAt?: number;
|
|
43
|
+
retryAt?: number;
|
|
44
|
+
lastError?: string;
|
|
45
|
+
order: number;
|
|
46
|
+
createdAt: number;
|
|
47
|
+
updatedAt: number;
|
|
48
|
+
}
|
|
49
|
+
export interface SpawnFiberInput<TSchema extends MailboxSchema> {
|
|
50
|
+
id: FiberId;
|
|
51
|
+
actorId: string;
|
|
52
|
+
parentId?: FiberId;
|
|
53
|
+
basePriority: number;
|
|
54
|
+
lane?: FiberLane;
|
|
55
|
+
maxAttempts?: number;
|
|
56
|
+
step?: FiberStep<TSchema>;
|
|
57
|
+
timeoutMs?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface DeadLetterRecord<TSchema extends MailboxSchema> {
|
|
60
|
+
fiberId: FiberId;
|
|
61
|
+
actorId: string;
|
|
62
|
+
reason: string;
|
|
63
|
+
at: number;
|
|
64
|
+
attempts: number;
|
|
65
|
+
step?: FiberStep<TSchema>;
|
|
66
|
+
}
|
|
67
|
+
export interface OrchestratorOptions<TSchema extends MailboxSchema> {
|
|
68
|
+
senderId: string;
|
|
69
|
+
agingStep: number;
|
|
70
|
+
defaultSuspendPolicy: SuspendPolicy;
|
|
71
|
+
schedulerHooks?: SchedulerHooks<TSchema>;
|
|
72
|
+
timeoutEnabled: boolean;
|
|
73
|
+
defaultTimeoutMs: number;
|
|
74
|
+
retryEnabled: boolean;
|
|
75
|
+
retryDelayMs: number;
|
|
76
|
+
retryBackoffMultiplier: number;
|
|
77
|
+
deadLetterEnabled: boolean;
|
|
78
|
+
deadLetterFactory?: (fiber: FiberRecord<TSchema>, reason: string) => {
|
|
79
|
+
to: string;
|
|
80
|
+
step: FiberStep<TSchema>;
|
|
81
|
+
} | null;
|
|
82
|
+
}
|
|
83
|
+
export interface OrchestratorState<TSchema extends MailboxSchema> {
|
|
84
|
+
options: OrchestratorOptions<TSchema>;
|
|
85
|
+
fibers: Record<FiberId, FiberRecord<TSchema>>;
|
|
86
|
+
deadLetters: DeadLetterRecord<TSchema>[];
|
|
87
|
+
sequence: number;
|
|
88
|
+
}
|
|
89
|
+
export type FiberAction<TSchema extends MailboxSchema> = {
|
|
90
|
+
type: 'spawn';
|
|
91
|
+
fiber: SpawnFiberInput<TSchema>;
|
|
92
|
+
now: number;
|
|
93
|
+
} | {
|
|
94
|
+
type: 'yield';
|
|
95
|
+
fiberId: FiberId;
|
|
96
|
+
now: number;
|
|
97
|
+
nextStep?: FiberStep<TSchema>;
|
|
98
|
+
} | {
|
|
99
|
+
type: 'suspend';
|
|
100
|
+
fiberId: FiberId;
|
|
101
|
+
now: number;
|
|
102
|
+
reason: FiberWaitingReason;
|
|
103
|
+
suspendPolicy?: SuspendPolicy;
|
|
104
|
+
} | {
|
|
105
|
+
type: 'resume';
|
|
106
|
+
fiberId: FiberId;
|
|
107
|
+
now: number;
|
|
108
|
+
nextStep?: FiberStep<TSchema>;
|
|
109
|
+
} | {
|
|
110
|
+
type: 'complete';
|
|
111
|
+
fiberId: FiberId;
|
|
112
|
+
now: number;
|
|
113
|
+
} | {
|
|
114
|
+
type: 'fail';
|
|
115
|
+
fiberId: FiberId;
|
|
116
|
+
now: number;
|
|
117
|
+
error: string;
|
|
118
|
+
} | {
|
|
119
|
+
type: 'cancel';
|
|
120
|
+
fiberId: FiberId;
|
|
121
|
+
now: number;
|
|
122
|
+
reason: string;
|
|
123
|
+
propagateToChildren?: boolean;
|
|
124
|
+
} | {
|
|
125
|
+
type: 'tick';
|
|
126
|
+
now: number;
|
|
127
|
+
};
|
|
128
|
+
export type FiberEffect<TSchema extends MailboxSchema> = {
|
|
129
|
+
kind: 'send';
|
|
130
|
+
fiberId: FiberId;
|
|
131
|
+
to: string;
|
|
132
|
+
step: FiberStep<TSchema>;
|
|
133
|
+
} | {
|
|
134
|
+
kind: 'dead_letter';
|
|
135
|
+
fiberId: FiberId;
|
|
136
|
+
reason: string;
|
|
137
|
+
to?: string;
|
|
138
|
+
step?: FiberStep<TSchema>;
|
|
139
|
+
};
|
|
140
|
+
export interface ReduceResult<TSchema extends MailboxSchema> {
|
|
141
|
+
state: OrchestratorState<TSchema>;
|
|
142
|
+
effects: FiberEffect<TSchema>[];
|
|
143
|
+
}
|
|
144
|
+
export declare const DEFAULT_ORCHESTRATOR_OPTIONS: Omit<OrchestratorOptions<MailboxSchema>, 'deadLetterFactory'>;
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const DEFAULT_ORCHESTRATOR_OPTIONS = {
|
|
2
|
+
senderId: '__fiber_scheduler__',
|
|
3
|
+
agingStep: 1,
|
|
4
|
+
defaultSuspendPolicy: 'continue_others',
|
|
5
|
+
timeoutEnabled: false,
|
|
6
|
+
defaultTimeoutMs: 0,
|
|
7
|
+
retryEnabled: false,
|
|
8
|
+
retryDelayMs: 0,
|
|
9
|
+
retryBackoffMultiplier: 1,
|
|
10
|
+
deadLetterEnabled: false,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestration/types.ts"],"names":[],"mappings":"AAoJA,MAAM,CAAC,MAAM,4BAA4B,GAAkE;IACzG,QAAQ,EAAE,qBAAqB;IAC/B,SAAS,EAAE,CAAC;IACZ,oBAAoB,EAAE,iBAAiB;IACvC,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,KAAK;IACnB,YAAY,EAAE,CAAC;IACf,sBAAsB,EAAE,CAAC;IACzB,iBAAiB,EAAE,KAAK;CACzB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* depa-actor — ActorPipeline
|
|
3
|
+
*
|
|
4
|
+
* Adapts the DOP 6-step pipeline (from depa-processor) to actor context.
|
|
5
|
+
*
|
|
6
|
+
* Mapping:
|
|
7
|
+
* OuterRuntime = ActorSelf
|
|
8
|
+
* OuterInput = envelope payload
|
|
9
|
+
* OuterConfig = actor state
|
|
10
|
+
*
|
|
11
|
+
* createPipelineHandler() wraps a pipeline definition into an ActorHandler.
|
|
12
|
+
*/
|
|
13
|
+
import type { MailboxSchema, ActorSelf, ActorHandler } from '../core/types';
|
|
14
|
+
export type PipelineDerivedAdapter<TRuntime, TSchema extends MailboxSchema, TState, TDerived> = (self: ActorSelf<TRuntime, TSchema, TState>, payload: TSchema[keyof TSchema & string], state: TState) => TDerived;
|
|
15
|
+
export type PipelineInnerRuntimeAdapter<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerRuntime> = (self: ActorSelf<TRuntime, TSchema, TState>, payload: TSchema[keyof TSchema & string], state: TState, derived: TDerived) => TInnerRuntime;
|
|
16
|
+
export type PipelineInnerInputAdapter<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerInput> = (self: ActorSelf<TRuntime, TSchema, TState>, payload: TSchema[keyof TSchema & string], state: TState, derived: TDerived) => TInnerInput;
|
|
17
|
+
export type PipelineInnerConfigAdapter<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerConfig> = (self: ActorSelf<TRuntime, TSchema, TState>, payload: TSchema[keyof TSchema & string], state: TState, derived: TDerived) => TInnerConfig;
|
|
18
|
+
export type PipelineCoreLogic<TInnerRuntime, TInnerInput, TInnerConfig, TInnerOutput> = (runtime: TInnerRuntime, input: TInnerInput, config: TInnerConfig) => TInnerOutput | Promise<TInnerOutput>;
|
|
19
|
+
export type PipelineOutputAdapter<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerOutput> = (self: ActorSelf<TRuntime, TSchema, TState>, payload: TSchema[keyof TSchema & string], state: TState, derived: TDerived, innerOutput: TInnerOutput) => void | Promise<void>;
|
|
20
|
+
export interface ActorPipelineDef<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerRuntime, TInnerInput, TInnerConfig, TInnerOutput> {
|
|
21
|
+
computeDerived: PipelineDerivedAdapter<TRuntime, TSchema, TState, TDerived>;
|
|
22
|
+
innerRuntime: PipelineInnerRuntimeAdapter<TRuntime, TSchema, TState, TDerived, TInnerRuntime>;
|
|
23
|
+
innerInput: PipelineInnerInputAdapter<TRuntime, TSchema, TState, TDerived, TInnerInput>;
|
|
24
|
+
innerConfig: PipelineInnerConfigAdapter<TRuntime, TSchema, TState, TDerived, TInnerConfig>;
|
|
25
|
+
coreLogic: PipelineCoreLogic<TInnerRuntime, TInnerInput, TInnerConfig, TInnerOutput>;
|
|
26
|
+
output: PipelineOutputAdapter<TRuntime, TSchema, TState, TDerived, TInnerOutput>;
|
|
27
|
+
}
|
|
28
|
+
export declare function createPipelineHandler<TRuntime, TSchema extends MailboxSchema, TState, TDerived, TInnerRuntime, TInnerInput, TInnerConfig, TInnerOutput>(pipeline: ActorPipelineDef<TRuntime, TSchema, TState, TDerived, TInnerRuntime, TInnerInput, TInnerConfig, TInnerOutput>): ActorHandler<TRuntime, TSchema, TState>;
|
|
29
|
+
//# sourceMappingURL=ActorPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActorPipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline/ActorPipeline.ts"],"names":[],"mappings":"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"}
|