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,34 @@
1
+ /**
2
+ * depa-actor — ActorSystem
3
+ *
4
+ * Multi-mailbox actor system with priority-based drain.
5
+ * Evolved from depa-data-graph ActorSystem with MailboxSchema support.
6
+ */
7
+ import type { MailboxSchema, ActorLogEntry, ActorDef, ActorRef } from './types';
8
+ export declare class ActorSystem<TRuntime, TSchema extends MailboxSchema> {
9
+ private getRuntime;
10
+ private onLog?;
11
+ private seq;
12
+ private cells;
13
+ constructor(getRuntime: () => TRuntime, onLog?: ((entry: ActorLogEntry<TSchema>) => void) | undefined);
14
+ ids(): string[];
15
+ has(id: string): boolean;
16
+ register<TState = void>(id: string, def: ActorDef<TRuntime, TSchema, TState>): void;
17
+ unregister(id: string): void;
18
+ refFrom(from: string, to: string): ActorRef<TSchema> | undefined;
19
+ sendFrom<TTag extends keyof TSchema & string>(from: string, to: string, tag: TTag, payload: TSchema[TTag]): void;
20
+ broadcastFrom<TTag extends keyof TSchema & string>(from: string, tag: TTag, payload: TSchema[TTag], opts?: {
21
+ excludeSelf?: boolean;
22
+ }): void;
23
+ private scheduleDrain;
24
+ /**
25
+ * Priority-based drain: sorts pending messages by tag priority,
26
+ * then processes sequentially. Per-tag handlers take precedence.
27
+ */
28
+ private drain;
29
+ /** Route envelope to per-tag handler or unified handler */
30
+ private dispatch;
31
+ /** Construct ActorSelf with selective receive capabilities */
32
+ private makeSelf;
33
+ }
34
+ //# sourceMappingURL=ActorSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorSystem.d.ts","sourceRoot":"","sources":["../../src/core/ActorSystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,QAAQ,EACR,QAAQ,EAIT,MAAM,SAAS,CAAC;AAcjB,qBAAa,WAAW,CAAC,QAAQ,EAAE,OAAO,SAAS,aAAa;IAK5D,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,KAAK,CAA4D;gBAG/D,UAAU,EAAE,MAAM,QAAQ,EAC1B,KAAK,CAAC,GAAE,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,aAAA;IAKzD,GAAG,IAAI,MAAM,EAAE;IAIf,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAMxB,QAAQ,CAAC,MAAM,GAAG,IAAI,EACpB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACvC,IAAI;IAgBP,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS;IAQhE,QAAQ,CAAC,IAAI,SAAS,MAAM,OAAO,GAAG,MAAM,EAC1C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GACrB,IAAI;IAqBP,aAAa,CAAC,IAAI,SAAS,MAAM,OAAO,GAAG,MAAM,EAC/C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EACtB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,IAAI;IASP,OAAO,CAAC,aAAa;IAQrB;;;OAGG;YACW,KAAK;IA8BnB,2DAA2D;YAC7C,QAAQ;IAuBtB,8DAA8D;IAC9D,OAAO,CAAC,QAAQ;CAiCjB"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * depa-actor — ActorSystem
3
+ *
4
+ * Multi-mailbox actor system with priority-based drain.
5
+ * Evolved from depa-data-graph ActorSystem with MailboxSchema support.
6
+ */
7
+ // ─── ActorSystem ─────────────────────────────────────────────────────
8
+ export class ActorSystem {
9
+ getRuntime;
10
+ onLog;
11
+ seq = 0;
12
+ cells = new Map();
13
+ constructor(getRuntime, onLog) {
14
+ this.getRuntime = getRuntime;
15
+ this.onLog = onLog;
16
+ }
17
+ // ── Query ──
18
+ ids() {
19
+ return Array.from(this.cells.keys()).sort();
20
+ }
21
+ has(id) {
22
+ return this.cells.has(id);
23
+ }
24
+ // ── Registration ──
25
+ register(id, def) {
26
+ if (this.cells.has(id)) {
27
+ throw new Error(`Actor already registered: ${id}`);
28
+ }
29
+ if (!def.handler && !def.handlers) {
30
+ throw new Error(`Actor "${id}" must have at least handler or handlers`);
31
+ }
32
+ this.cells.set(id, {
33
+ id,
34
+ def: def,
35
+ state: def.initialState,
36
+ queue: [],
37
+ processing: false,
38
+ });
39
+ }
40
+ unregister(id) {
41
+ this.cells.delete(id);
42
+ }
43
+ // ── Messaging ──
44
+ refFrom(from, to) {
45
+ if (!this.cells.has(to))
46
+ return undefined;
47
+ return {
48
+ id: to,
49
+ send: (tag, payload) => this.sendFrom(from, to, tag, payload),
50
+ };
51
+ }
52
+ sendFrom(from, to, tag, payload) {
53
+ const target = this.cells.get(to);
54
+ const envelope = {
55
+ id: ++this.seq,
56
+ ts: Date.now(),
57
+ from,
58
+ to,
59
+ tag,
60
+ payload,
61
+ };
62
+ if (!target) {
63
+ this.onLog?.({ kind: 'error', ...envelope, error: `Unknown actor: ${to}` });
64
+ return;
65
+ }
66
+ this.onLog?.({ kind: 'send', ...envelope });
67
+ target.queue.push(envelope);
68
+ this.scheduleDrain(target);
69
+ }
70
+ broadcastFrom(from, tag, payload, opts) {
71
+ for (const id of this.cells.keys()) {
72
+ if (opts?.excludeSelf && id === from)
73
+ continue;
74
+ this.sendFrom(from, id, tag, payload);
75
+ }
76
+ }
77
+ // ── Drain ──
78
+ scheduleDrain(cell) {
79
+ if (cell.processing)
80
+ return;
81
+ cell.processing = true;
82
+ queueMicrotask(() => {
83
+ void this.drain(cell);
84
+ });
85
+ }
86
+ /**
87
+ * Priority-based drain: sorts pending messages by tag priority,
88
+ * then processes sequentially. Per-tag handlers take precedence.
89
+ */
90
+ async drain(cell) {
91
+ try {
92
+ while (cell.queue.length > 0) {
93
+ // Sort by priority (lower = higher priority, default 100)
94
+ const priorities = cell.def.priority ?? {};
95
+ cell.queue.sort((a, b) => {
96
+ const pa = priorities[a.tag] ?? 100;
97
+ const pb = priorities[b.tag] ?? 100;
98
+ return pa - pb;
99
+ });
100
+ const envelope = cell.queue.shift();
101
+ const self = this.makeSelf(cell);
102
+ try {
103
+ await this.dispatch(cell, self, envelope);
104
+ this.onLog?.({ kind: 'deliver', ...envelope });
105
+ }
106
+ catch (err) {
107
+ const message = err instanceof Error ? err.message : String(err);
108
+ this.onLog?.({ kind: 'error', ...envelope, error: message });
109
+ }
110
+ }
111
+ }
112
+ finally {
113
+ cell.processing = false;
114
+ if (cell.queue.length > 0) {
115
+ this.scheduleDrain(cell);
116
+ }
117
+ }
118
+ }
119
+ /** Route envelope to per-tag handler or unified handler */
120
+ async dispatch(cell, self, envelope) {
121
+ const tagHandler = cell.def.handlers?.[envelope.tag];
122
+ if (tagHandler) {
123
+ await tagHandler(self, envelope);
124
+ }
125
+ else if (cell.def.handler) {
126
+ await cell.def.handler(self, envelope);
127
+ }
128
+ else {
129
+ // No handler for this tag — log and skip
130
+ this.onLog?.({
131
+ kind: 'error',
132
+ ...envelope,
133
+ error: `No handler for tag "${envelope.tag}" on actor "${cell.id}"`,
134
+ });
135
+ }
136
+ }
137
+ /** Construct ActorSelf with selective receive capabilities */
138
+ makeSelf(cell) {
139
+ return {
140
+ id: cell.id,
141
+ ref: {
142
+ id: cell.id,
143
+ send: (tag, payload) => this.sendFrom(cell.id, cell.id, tag, payload),
144
+ },
145
+ runtime: this.getRuntime(),
146
+ state: cell.state,
147
+ send: (to, tag, payload) => this.sendFrom(cell.id, to, tag, payload),
148
+ broadcast: (tag, payload, opts) => this.broadcastFrom(cell.id, tag, payload, opts),
149
+ // Selective receive
150
+ hasPending: (tag) => cell.queue.some((e) => e.tag === tag),
151
+ drainMailbox: (tag) => {
152
+ const matching = [];
153
+ const remaining = [];
154
+ for (const e of cell.queue) {
155
+ if (e.tag === tag) {
156
+ matching.push(e);
157
+ }
158
+ else {
159
+ remaining.push(e);
160
+ }
161
+ }
162
+ cell.queue.length = 0;
163
+ cell.queue.push(...remaining);
164
+ return matching;
165
+ },
166
+ };
167
+ }
168
+ }
169
+ //# sourceMappingURL=ActorSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorSystem.js","sourceRoot":"","sources":["../../src/core/ActorSystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH,wEAAwE;AAExE,MAAM,OAAO,WAAW;IAKZ;IACA;IALF,GAAG,GAAG,CAAC,CAAC;IACR,KAAK,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEzE,YACU,UAA0B,EAC1B,KAA+C;QAD/C,eAAU,GAAV,UAAU,CAAgB;QAC1B,UAAK,GAAL,KAAK,CAA0C;IACtD,CAAC;IAEJ,cAAc;IAEd,GAAG;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB;IAErB,QAAQ,CACN,EAAU,EACV,GAAwC;QAExC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,0CAA0C,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;YACjB,EAAE;YACF,GAAG,EAAE,GAA2C;YAChD,KAAK,EAAE,GAAG,CAAC,YAAuB;YAClC,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,kBAAkB;IAElB,OAAO,CAAC,IAAY,EAAE,EAAU;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO;YACL,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,QAAQ,CACN,IAAY,EACZ,EAAU,EACV,GAAS,EACT,OAAsB;QAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,QAAQ,GAA2B;YACvC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,IAAI;YACJ,EAAE;YACF,GAAG;YACH,OAAO;SACR,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CACX,IAAY,EACZ,GAAS,EACT,OAAsB,EACtB,IAAgC;QAEhC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,IAAI,EAAE,WAAW,IAAI,EAAE,KAAK,IAAI;gBAAE,SAAS;YAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,cAAc;IAEN,aAAa,CAAC,IAA2C;QAC/D,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,cAAc,CAAC,GAAG,EAAE;YAClB,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,KAAK,CAAC,IAA2C;QAC7D,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,0DAA0D;gBAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBACvB,MAAM,EAAE,GAAI,UAAiD,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;oBAC5E,MAAM,EAAE,GAAI,UAAiD,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;oBAC5E,OAAO,EAAE,GAAG,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;gBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAC1C,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IACnD,KAAK,CAAC,QAAQ,CACpB,IAA2C,EAC3C,IAA2C,EAC3C,QAAgC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAEtC,CAAC;QAEd,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC,IAAI,EAAE,QAA2C,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,GAAG,QAAQ;gBACX,KAAK,EAAE,uBAAuB,QAAQ,CAAC,GAAG,eAAe,IAAI,CAAC,EAAE,GAAG;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8DAA8D;IACtD,QAAQ,CACd,IAA2C;QAE3C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,EAAE;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;aACtE;YACD,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YAEjB,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC;YACpE,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;YAElF,oBAAoB;YACpB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YAC1D,YAAY,EAAE,CAAsC,GAAS,EAAE,EAAE;gBAC/D,MAAM,QAAQ,GAAoC,EAAE,CAAC;gBACrD,MAAM,SAAS,GAA6B,EAAE,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;wBAClB,QAAQ,CAAC,IAAI,CAAC,CAAkC,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC9B,OAAO,QAAQ,CAAC;YAClB,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * depa-actor — Core Type Definitions
3
+ *
4
+ * Synthesizes:
5
+ * - depa-data-graph ActorSystem (true actor model, mailbox queue, microtask drain)
6
+ * - depa-processor (dispatch routing, DOP pipeline)
7
+ * - OneAgentActor domain needs (multi-mailbox, typed tags)
8
+ */
9
+ export type MailboxSchema = Record<string, unknown>;
10
+ export interface ActorEnvelope<TSchema extends MailboxSchema = MailboxSchema> {
11
+ id: number;
12
+ ts: number;
13
+ from: string;
14
+ to: string;
15
+ tag: keyof TSchema & string;
16
+ payload: TSchema[keyof TSchema & string];
17
+ }
18
+ /** Type-safe envelope for a specific tag */
19
+ export type TaggedEnvelope<TSchema extends MailboxSchema, TTag extends keyof TSchema & string> = Omit<ActorEnvelope<TSchema>, 'tag' | 'payload'> & {
20
+ tag: TTag;
21
+ payload: TSchema[TTag];
22
+ };
23
+ export type MailboxPriority<TSchema extends MailboxSchema> = {
24
+ [K in keyof TSchema & string]?: number;
25
+ };
26
+ export interface ActorRef<TSchema extends MailboxSchema = MailboxSchema> {
27
+ readonly id: string;
28
+ send<TTag extends keyof TSchema & string>(tag: TTag, payload: TSchema[TTag]): void;
29
+ }
30
+ export interface ActorSelf<TRuntime, TSchema extends MailboxSchema, TState = void> {
31
+ readonly id: string;
32
+ readonly ref: ActorRef<TSchema>;
33
+ readonly runtime: TRuntime;
34
+ state: TState;
35
+ /** Send to a specific actor */
36
+ send(to: string, tag: keyof TSchema & string, payload: TSchema[keyof TSchema & string]): void;
37
+ /** Broadcast to all actors */
38
+ broadcast(tag: keyof TSchema & string, payload: TSchema[keyof TSchema & string], opts?: {
39
+ excludeSelf?: boolean;
40
+ }): void;
41
+ /** Check if there are pending messages for a specific tag */
42
+ hasPending<TTag extends keyof TSchema & string>(tag: TTag): boolean;
43
+ /** Drain all pending messages for a specific tag (removes them from queue) */
44
+ drainMailbox<TTag extends keyof TSchema & string>(tag: TTag): TaggedEnvelope<TSchema, TTag>[];
45
+ }
46
+ /** Unified handler — receives all envelopes, switch on tag */
47
+ export type ActorHandler<TRuntime, TSchema extends MailboxSchema, TState = void> = (self: ActorSelf<TRuntime, TSchema, TState>, envelope: ActorEnvelope<TSchema>) => void | Promise<void>;
48
+ /** Per-tag handler — handles a single tag */
49
+ export type TagHandler<TRuntime, TSchema extends MailboxSchema, TState, TTag extends keyof TSchema & string> = (self: ActorSelf<TRuntime, TSchema, TState>, envelope: TaggedEnvelope<TSchema, TTag>) => void | Promise<void>;
50
+ export interface ActorDef<TRuntime, TSchema extends MailboxSchema, TState = void> {
51
+ initialState: TState;
52
+ /** Mailbox priority — lower number = higher priority. Default: 100 */
53
+ priority?: MailboxPriority<TSchema>;
54
+ /** Unified handler (fallback for tags not in `handlers`) */
55
+ handler?: ActorHandler<TRuntime, TSchema, TState>;
56
+ /** Per-tag handlers — takes precedence over `handler` for matching tags */
57
+ handlers?: {
58
+ [TTag in keyof TSchema & string]?: TagHandler<TRuntime, TSchema, TState, TTag>;
59
+ };
60
+ }
61
+ export type ActorLogKind = 'send' | 'deliver' | 'error';
62
+ export interface ActorLogEntry<TSchema extends MailboxSchema = MailboxSchema> extends ActorEnvelope<TSchema> {
63
+ kind: ActorLogKind;
64
+ error?: string;
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * depa-actor — Core Type Definitions
3
+ *
4
+ * Synthesizes:
5
+ * - depa-data-graph ActorSystem (true actor model, mailbox queue, microtask drain)
6
+ * - depa-processor (dispatch routing, DOP pipeline)
7
+ * - OneAgentActor domain needs (multi-mailbox, typed tags)
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * depa-actor — Dispatch Bridge
3
+ *
4
+ * Optional bridge to depa-processor DispatchEngine.
5
+ * Only this file imports from depa-processor concepts.
6
+ * No hard dependency — uses structural typing.
7
+ */
8
+ import type { MailboxSchema, ActorSelf, ActorEnvelope, ActorHandler } from '../core/types';
9
+ /**
10
+ * A dispatch route maps a tag to a dispatch key and handler.
11
+ * This is a structural interface — no dependency on depa-processor.
12
+ */
13
+ export interface DispatchRoute<TRuntime, TSchema extends MailboxSchema, TState> {
14
+ /** Which tags this route handles */
15
+ tags: (keyof TSchema & string)[];
16
+ /** Resolve dispatch key from envelope */
17
+ resolveKey: (envelope: ActorEnvelope<TSchema>) => string;
18
+ /** Route table: dispatch key → handler */
19
+ routes: Record<string, (self: ActorSelf<TRuntime, TSchema, TState>, envelope: ActorEnvelope<TSchema>) => void | Promise<void>>;
20
+ /** Fallback if no route matches */
21
+ fallback?: (self: ActorSelf<TRuntime, TSchema, TState>, envelope: ActorEnvelope<TSchema>, key: string) => void | Promise<void>;
22
+ }
23
+ /**
24
+ * Creates an ActorHandler that routes envelopes through dispatch routes.
25
+ * Falls back to `defaultHandler` for tags not covered by any route.
26
+ */
27
+ export declare function createDispatchHandler<TRuntime, TSchema extends MailboxSchema, TState>(routes: DispatchRoute<TRuntime, TSchema, TState>[], defaultHandler?: ActorHandler<TRuntime, TSchema, TState>): ActorHandler<TRuntime, TSchema, TState>;
28
+ //# sourceMappingURL=ActorDispatchAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorDispatchAdapter.d.ts","sourceRoot":"","sources":["../../src/dispatch/ActorDispatchAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,EACb,MAAM,eAAe,CAAC;AAIvB;;;GAGG;AACH,MAAM,WAAW,aAAa,CAC5B,QAAQ,EACR,OAAO,SAAS,aAAa,EAC7B,MAAM;IAEN,oCAAoC;IACpC,IAAI,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAEjC,yCAAyC;IACzC,UAAU,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;IAEzD,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CACrB,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,GAAG,EAAE,MAAM,KACR,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EACR,OAAO,SAAS,aAAa,EAC7B,MAAM,EAEN,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAClD,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GACvD,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAwBzC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * depa-actor — Dispatch Bridge
3
+ *
4
+ * Optional bridge to depa-processor DispatchEngine.
5
+ * Only this file imports from depa-processor concepts.
6
+ * No hard dependency — uses structural typing.
7
+ */
8
+ // ─── createDispatchHandler ───────────────────────────────────────────
9
+ /**
10
+ * Creates an ActorHandler that routes envelopes through dispatch routes.
11
+ * Falls back to `defaultHandler` for tags not covered by any route.
12
+ */
13
+ export function createDispatchHandler(routes, defaultHandler) {
14
+ // Build tag → route index for O(1) lookup
15
+ const tagIndex = new Map();
16
+ for (const route of routes) {
17
+ for (const tag of route.tags) {
18
+ tagIndex.set(tag, route);
19
+ }
20
+ }
21
+ return async (self, envelope) => {
22
+ const route = tagIndex.get(envelope.tag);
23
+ if (route) {
24
+ const key = route.resolveKey(envelope);
25
+ const handler = route.routes[key];
26
+ if (handler) {
27
+ await handler(self, envelope);
28
+ }
29
+ else if (route.fallback) {
30
+ await route.fallback(self, envelope, key);
31
+ }
32
+ }
33
+ else if (defaultHandler) {
34
+ await defaultHandler(self, envelope);
35
+ }
36
+ };
37
+ }
38
+ //# sourceMappingURL=ActorDispatchAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorDispatchAdapter.js","sourceRoot":"","sources":["../../src/dispatch/ActorDispatchAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwCH,wEAAwE;AAExE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAKnC,MAAkD,EAClD,cAAwD;IAExD,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoD,CAAC;IAC7E,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,MAAM,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type { MailboxSchema, ActorEnvelope, TaggedEnvelope, MailboxPriority, ActorRef, ActorSelf, ActorHandler, TagHandler, ActorDef, ActorLogKind, ActorLogEntry, } from './core/types';
2
+ export { ActorSystem } from './core/ActorSystem';
3
+ export type { ActorPlugin } from './runtime/ActorRuntime';
4
+ export { ActorRuntime } from './runtime/ActorRuntime';
5
+ export { CompletionSignalRegistry, CompletionBindingRegistry, createCompletionSignalRegistry, createCompletionBindingRegistry, } from './runtime/completion';
6
+ export type { CompletionWaiter, } from './runtime/completion';
7
+ export type { SnapshotRecoveryState, RuntimeSnapshotManifestBase, RuntimeRootSnapshotBase, ActorSnapshotBase, FiberSnapshotBase, SnapshotCodec, RecoveryHooks, PersistenceEffectPort, } from './runtime/snapshot';
8
+ export { createSnapshotCodec, createRecoveryHooks, createPersistenceEffectPort, } from './runtime/snapshot';
9
+ export { RuntimeIndexHook, createRuntimeIndexHook } from './runtime/indexing';
10
+ export type { ActorPipelineDef, PipelineDerivedAdapter, PipelineInnerRuntimeAdapter, PipelineInnerInputAdapter, PipelineInnerConfigAdapter, PipelineCoreLogic, PipelineOutputAdapter, } from './pipeline/ActorPipeline';
11
+ export { createPipelineHandler } from './pipeline/ActorPipeline';
12
+ export type { DispatchRoute } from './dispatch/ActorDispatchAdapter';
13
+ export { createDispatchHandler } from './dispatch/ActorDispatchAdapter';
14
+ export type { FiberId, FiberStatus, FiberWaitingReason, SuspendPolicy, SchedulerHooks, FiberStep, FiberRecord, SpawnFiberInput, DeadLetterRecord, OrchestratorOptions, OrchestratorState, FiberAction, FiberEffect, ReduceResult, ScheduleResult, } from './orchestration';
15
+ export { DEFAULT_ORCHESTRATOR_OPTIONS, createOrchestratorState, reduceOrchestrator, applyFailure, computeEffectivePriority, selectNextFiberId, scheduleOne, createAiAgentSchedulerHooks, dispatchEffects, } from './orchestration';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,YAAY,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,EACX,2BAA2B,EAC3B,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { ActorSystem } from './core/ActorSystem';
2
+ export { ActorRuntime } from './runtime/ActorRuntime';
3
+ export { CompletionSignalRegistry, CompletionBindingRegistry, createCompletionSignalRegistry, createCompletionBindingRegistry, } from './runtime/completion';
4
+ export { createSnapshotCodec, createRecoveryHooks, createPersistenceEffectPort, } from './runtime/snapshot';
5
+ export { RuntimeIndexHook, createRuntimeIndexHook } from './runtime/indexing';
6
+ export { createPipelineHandler } from './pipeline/ActorPipeline';
7
+ export { createDispatchHandler } from './dispatch/ActorDispatchAdapter';
8
+ export { DEFAULT_ORCHESTRATOR_OPTIONS, createOrchestratorState, reduceOrchestrator, applyFailure, computeEffectivePriority, selectNextFiberId, scheduleOne, createAiAgentSchedulerHooks, dispatchEffects, } from './orchestration';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAc9B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAY9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAqBxE,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,EACX,2BAA2B,EAC3B,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export type { FiberId, FiberStatus, FiberWaitingReason, SuspendPolicy, SchedulerHooks, FiberStep, FiberRecord, SpawnFiberInput, DeadLetterRecord, OrchestratorOptions, OrchestratorState, FiberAction, FiberEffect, ReduceResult, } from './types';
2
+ export { DEFAULT_ORCHESTRATOR_OPTIONS } from './types';
3
+ export { createOrchestratorState, reduceOrchestrator } from './reducer';
4
+ export { applyFailure } from './recovery';
5
+ export { computeEffectivePriority, selectNextFiberId, scheduleOne, } from './scheduler';
6
+ export type { ScheduleResult } from './scheduler';
7
+ export { createAiAgentSchedulerHooks } from './presets/aiAgent';
8
+ export { dispatchEffects } from './runtimeAdapter';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ // depa-actor — Orchestration (Fiber Scheduling)
2
+ export { DEFAULT_ORCHESTRATOR_OPTIONS } from './types';
3
+ export { createOrchestratorState, reduceOrchestrator } from './reducer';
4
+ export { applyFailure } from './recovery';
5
+ export { computeEffectivePriority, selectNextFiberId, scheduleOne, } from './scheduler';
6
+ export { createAiAgentSchedulerHooks } from './presets/aiAgent';
7
+ export { dispatchEffects } from './runtimeAdapter';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orchestration/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAmBhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MailboxSchema } from '../../core/types';
2
+ import type { SchedulerHooks } from '../types';
3
+ export declare function createAiAgentSchedulerHooks<TSchema extends MailboxSchema>(): SchedulerHooks<TSchema>;
4
+ //# sourceMappingURL=aiAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiAgent.d.ts","sourceRoot":"","sources":["../../../src/orchestration/presets/aiAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,KAAK,EAAkC,cAAc,EAAiB,MAAM,UAAU,CAAC;AAoC9F,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,aAAa,KAAK,cAAc,CAAC,OAAO,CAAC,CASpG"}
@@ -0,0 +1,38 @@
1
+ function isAiHumanWaitReason(reason) {
2
+ return reason === 'human_clarification' || reason === 'human_approval' || reason === 'human_answer';
3
+ }
4
+ function getEffectiveSuspendPolicy(fiber) {
5
+ const raw = fiber?.suspendPolicy;
6
+ return raw === 'continue_others' || raw === 'pause_all' ? raw : undefined;
7
+ }
8
+ function isBlockingLaneForPauseAll(lane) {
9
+ // Treat any non-background lane as blocking by default.
10
+ if (lane === 'background' || lane === 'collective') {
11
+ return false;
12
+ }
13
+ return true;
14
+ }
15
+ function isAllowedLaneDuringPauseAll(lane) {
16
+ return lane === 'background' || lane === 'collective';
17
+ }
18
+ function hasPauseAllHumanWaitInBlockingLane(state) {
19
+ return Object.values(state.fibers).some((fiber) => {
20
+ return (fiber?.status === 'suspended' &&
21
+ isAiHumanWaitReason(fiber?.waitingReason) &&
22
+ getEffectiveSuspendPolicy(fiber) === 'pause_all' &&
23
+ isBlockingLaneForPauseAll(fiber?.lane));
24
+ });
25
+ }
26
+ // AIAgent-compatible scheduling hooks:
27
+ // - When a pause_all human wait exists in a blocking lane (interactive/member), only allow background/collective lanes.
28
+ export function createAiAgentSchedulerHooks() {
29
+ return {
30
+ filterCandidate: ({ state, fiber }) => {
31
+ if (!hasPauseAllHumanWaitInBlockingLane(state)) {
32
+ return true;
33
+ }
34
+ return isAllowedLaneDuringPauseAll(fiber?.lane);
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=aiAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiAgent.js","sourceRoot":"","sources":["../../../src/orchestration/presets/aiAgent.ts"],"names":[],"mappings":"AAIA,SAAS,mBAAmB,CAAC,MAAe;IAC1C,OAAO,MAAM,KAAK,qBAAqB,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,cAAc,CAAC;AACtG,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAiC;IAClE,MAAM,GAAG,GAAI,KAAa,EAAE,aAAa,CAAC;IAC1C,OAAO,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAa;IAC9C,wDAAwD;IACxD,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAa;IAChD,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,CAAC;AACxD,CAAC;AAED,SAAS,kCAAkC,CAAgC,KAAiC;IAC1G,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAa,CAAC,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE;QAC5D,OAAO,CACL,KAAK,EAAE,MAAM,KAAK,WAAW;YAC7B,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC;YACzC,yBAAyB,CAAC,KAAmC,CAAC,KAAK,WAAW;YAC9E,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CACvC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uCAAuC;AACvC,wHAAwH;AACxH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YACpC,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,2BAA2B,CAAE,KAAa,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MailboxSchema } from '../core/types';
2
+ import type { FiberId, OrchestratorState, ReduceResult } from './types';
3
+ export declare function applyFailure<TSchema extends MailboxSchema>(state: OrchestratorState<TSchema>, fiberId: FiberId, now: number, error: string): ReduceResult<TSchema>;
4
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../src/orchestration/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAe,OAAO,EAAe,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA6ClG,wBAAgB,YAAY,CAAC,OAAO,SAAS,aAAa,EACxD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,YAAY,CAAC,OAAO,CAAC,CA4FvB"}
@@ -0,0 +1,110 @@
1
+ function cloneFiberMap(state) {
2
+ return { ...state.fibers };
3
+ }
4
+ function buildDeadLetterEffects(state, fiber, reason) {
5
+ const effects = [
6
+ {
7
+ kind: 'dead_letter',
8
+ fiberId: fiber.id,
9
+ reason,
10
+ },
11
+ ];
12
+ const route = state.options.deadLetterFactory?.(fiber, reason);
13
+ if (route) {
14
+ effects.push({
15
+ kind: 'dead_letter',
16
+ fiberId: fiber.id,
17
+ reason,
18
+ to: route.to,
19
+ step: route.step,
20
+ });
21
+ }
22
+ return effects;
23
+ }
24
+ function computeRetryDelay(retryDelayMs, retryBackoffMultiplier, attempts) {
25
+ const base = Math.max(0, retryDelayMs);
26
+ const multiplier = Math.max(1, retryBackoffMultiplier);
27
+ return Math.floor(base * Math.pow(multiplier, Math.max(0, attempts - 1)));
28
+ }
29
+ export function applyFailure(state, fiberId, now, error) {
30
+ const fiber = state.fibers[fiberId];
31
+ if (!fiber) {
32
+ return { state, effects: [] };
33
+ }
34
+ if (fiber.status === 'completed' || fiber.status === 'cancelled' || fiber.status === 'dead_letter') {
35
+ return { state, effects: [] };
36
+ }
37
+ const nextFibers = cloneFiberMap(state);
38
+ if (state.options.retryEnabled && fiber.attempts < fiber.maxAttempts) {
39
+ const nextAttempts = fiber.attempts + 1;
40
+ const delay = computeRetryDelay(state.options.retryDelayMs, state.options.retryBackoffMultiplier, nextAttempts);
41
+ const updated = {
42
+ ...fiber,
43
+ status: 'suspended',
44
+ waitingReason: 'retry_backoff',
45
+ suspendPolicy: undefined,
46
+ retryAt: now + delay,
47
+ timeoutAt: undefined,
48
+ attempts: nextAttempts,
49
+ lastError: error,
50
+ updatedAt: now,
51
+ };
52
+ nextFibers[fiberId] = updated;
53
+ return {
54
+ state: {
55
+ ...state,
56
+ fibers: nextFibers,
57
+ },
58
+ effects: [],
59
+ };
60
+ }
61
+ if (state.options.deadLetterEnabled) {
62
+ const updated = {
63
+ ...fiber,
64
+ status: 'dead_letter',
65
+ waitingReason: undefined,
66
+ suspendPolicy: undefined,
67
+ retryAt: undefined,
68
+ lastError: error,
69
+ updatedAt: now,
70
+ };
71
+ nextFibers[fiberId] = updated;
72
+ const deadLetters = [
73
+ ...state.deadLetters,
74
+ {
75
+ fiberId: fiber.id,
76
+ actorId: fiber.actorId,
77
+ reason: error,
78
+ at: now,
79
+ attempts: fiber.attempts,
80
+ step: fiber.step,
81
+ },
82
+ ];
83
+ return {
84
+ state: {
85
+ ...state,
86
+ fibers: nextFibers,
87
+ deadLetters,
88
+ },
89
+ effects: buildDeadLetterEffects(state, updated, error),
90
+ };
91
+ }
92
+ const updated = {
93
+ ...fiber,
94
+ status: 'failed',
95
+ waitingReason: undefined,
96
+ suspendPolicy: undefined,
97
+ retryAt: undefined,
98
+ lastError: error,
99
+ updatedAt: now,
100
+ };
101
+ nextFibers[fiberId] = updated;
102
+ return {
103
+ state: {
104
+ ...state,
105
+ fibers: nextFibers,
106
+ },
107
+ effects: [],
108
+ };
109
+ }
110
+ //# sourceMappingURL=recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/orchestration/recovery.ts"],"names":[],"mappings":"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"}