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.
Files changed (65) hide show
  1. package/dist/core/ActorSystem.d.ts +34 -0
  2. package/dist/core/ActorSystem.d.ts.map +1 -0
  3. package/dist/core/ActorSystem.js +169 -0
  4. package/dist/core/ActorSystem.js.map +1 -0
  5. package/dist/core/types.d.ts +66 -0
  6. package/dist/core/types.d.ts.map +1 -0
  7. package/dist/core/types.js +10 -0
  8. package/dist/core/types.js.map +1 -0
  9. package/dist/dispatch/ActorDispatchAdapter.d.ts +28 -0
  10. package/dist/dispatch/ActorDispatchAdapter.d.ts.map +1 -0
  11. package/dist/dispatch/ActorDispatchAdapter.js +38 -0
  12. package/dist/dispatch/ActorDispatchAdapter.js.map +1 -0
  13. package/dist/index.d.ts +16 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +9 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/orchestration/index.d.ts +9 -0
  18. package/dist/orchestration/index.d.ts.map +1 -0
  19. package/dist/orchestration/index.js +8 -0
  20. package/dist/orchestration/index.js.map +1 -0
  21. package/dist/orchestration/presets/aiAgent.d.ts +4 -0
  22. package/dist/orchestration/presets/aiAgent.d.ts.map +1 -0
  23. package/dist/orchestration/presets/aiAgent.js +38 -0
  24. package/dist/orchestration/presets/aiAgent.js.map +1 -0
  25. package/dist/orchestration/recovery.d.ts +4 -0
  26. package/dist/orchestration/recovery.d.ts.map +1 -0
  27. package/dist/orchestration/recovery.js +110 -0
  28. package/dist/orchestration/recovery.js.map +1 -0
  29. package/dist/orchestration/reducer.d.ts +5 -0
  30. package/dist/orchestration/reducer.d.ts.map +1 -0
  31. package/dist/orchestration/reducer.js +273 -0
  32. package/dist/orchestration/reducer.js.map +1 -0
  33. package/dist/orchestration/runtimeAdapter.d.ts +5 -0
  34. package/dist/orchestration/runtimeAdapter.d.ts.map +1 -0
  35. package/dist/orchestration/runtimeAdapter.js +12 -0
  36. package/dist/orchestration/runtimeAdapter.js.map +1 -0
  37. package/dist/orchestration/scheduler.d.ts +11 -0
  38. package/dist/orchestration/scheduler.d.ts.map +1 -0
  39. package/dist/orchestration/scheduler.js +82 -0
  40. package/dist/orchestration/scheduler.js.map +1 -0
  41. package/dist/orchestration/types.d.ts +145 -0
  42. package/dist/orchestration/types.d.ts.map +1 -0
  43. package/dist/orchestration/types.js +12 -0
  44. package/dist/orchestration/types.js.map +1 -0
  45. package/dist/pipeline/ActorPipeline.d.ts +29 -0
  46. package/dist/pipeline/ActorPipeline.d.ts.map +1 -0
  47. package/dist/pipeline/ActorPipeline.js +32 -0
  48. package/dist/pipeline/ActorPipeline.js.map +1 -0
  49. package/dist/runtime/ActorRuntime.d.ts +35 -0
  50. package/dist/runtime/ActorRuntime.d.ts.map +1 -0
  51. package/dist/runtime/ActorRuntime.js +74 -0
  52. package/dist/runtime/ActorRuntime.js.map +1 -0
  53. package/dist/runtime/completion.d.ts +21 -0
  54. package/dist/runtime/completion.d.ts.map +1 -0
  55. package/dist/runtime/completion.js +69 -0
  56. package/dist/runtime/completion.js.map +1 -0
  57. package/dist/runtime/indexing.d.ts +12 -0
  58. package/dist/runtime/indexing.d.ts.map +1 -0
  59. package/dist/runtime/indexing.js +30 -0
  60. package/dist/runtime/indexing.js.map +1 -0
  61. package/dist/runtime/snapshot.d.ts +76 -0
  62. package/dist/runtime/snapshot.d.ts.map +1 -0
  63. package/dist/runtime/snapshot.js +10 -0
  64. package/dist/runtime/snapshot.js.map +1 -0
  65. 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":"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"}
@@ -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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"}