@orgloop/core 0.1.4 → 0.1.6

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.
@@ -0,0 +1,185 @@
1
+ /**
2
+ * ModuleInstance — owns all resources (sources, actors, transforms, loggers)
3
+ * for a single loaded module.
4
+ *
5
+ * Tracks lifecycle state, health, and provides accessors for the runtime
6
+ * to poll sources, deliver events, and query status.
7
+ */
8
+ // ─── ModuleInstance Class ─────────────────────────────────────────────────────
9
+ export class ModuleInstance {
10
+ name;
11
+ config;
12
+ state = 'loading';
13
+ startedAt = 0;
14
+ // Module-owned resources
15
+ sources;
16
+ actors;
17
+ packageTransforms;
18
+ moduleLoggers;
19
+ checkpointStore;
20
+ healthStates;
21
+ constructor(config, options) {
22
+ this.name = config.name;
23
+ this.config = config;
24
+ this.sources = options.sources;
25
+ this.actors = options.actors;
26
+ this.packageTransforms = options.transforms;
27
+ this.moduleLoggers = options.loggers;
28
+ this.checkpointStore = options.checkpointStore;
29
+ this.healthStates = new Map();
30
+ // Initialize health states for all sources
31
+ for (const src of config.sources) {
32
+ this.healthStates.set(src.id, {
33
+ sourceId: src.id,
34
+ status: 'healthy',
35
+ lastSuccessfulPoll: null,
36
+ lastPollAttempt: null,
37
+ consecutiveErrors: 0,
38
+ lastError: null,
39
+ totalEventsEmitted: 0,
40
+ circuitOpen: false,
41
+ });
42
+ }
43
+ }
44
+ /** Initialize all connectors. Called during module load. */
45
+ async initialize() {
46
+ // Init sources
47
+ for (const [id, source] of this.sources) {
48
+ const srcConfig = this.config.sources.find((s) => s.id === id);
49
+ if (srcConfig) {
50
+ await source.init({
51
+ id: srcConfig.id,
52
+ connector: srcConfig.connector,
53
+ config: srcConfig.config,
54
+ poll: srcConfig.poll,
55
+ });
56
+ }
57
+ }
58
+ // Init actors
59
+ for (const [id, actor] of this.actors) {
60
+ const actConfig = this.config.actors.find((a) => a.id === id);
61
+ if (actConfig) {
62
+ await actor.init({
63
+ id: actConfig.id,
64
+ connector: actConfig.connector,
65
+ config: actConfig.config,
66
+ });
67
+ }
68
+ }
69
+ // Init transforms
70
+ for (const [id, transform] of this.packageTransforms) {
71
+ const txConfig = this.config.transforms.find((t) => t.name === id);
72
+ await transform.init(txConfig?.config ?? {});
73
+ }
74
+ // Init loggers
75
+ for (const [id, logger] of this.moduleLoggers) {
76
+ const lgConfig = this.config.loggers.find((l) => l.name === id);
77
+ if (lgConfig) {
78
+ await logger.init(lgConfig.config);
79
+ }
80
+ }
81
+ }
82
+ /** Mark module as active. */
83
+ activate() {
84
+ this.state = 'active';
85
+ this.startedAt = Date.now();
86
+ }
87
+ /** Begin unloading — mark state, stop accepting new events. */
88
+ deactivate() {
89
+ this.state = 'unloading';
90
+ }
91
+ /** Shutdown all owned resources. */
92
+ async shutdown() {
93
+ // Shutdown sources
94
+ for (const source of this.sources.values()) {
95
+ try {
96
+ await source.shutdown();
97
+ }
98
+ catch {
99
+ /* non-blocking */
100
+ }
101
+ }
102
+ // Shutdown actors
103
+ for (const actor of this.actors.values()) {
104
+ try {
105
+ await actor.shutdown();
106
+ }
107
+ catch {
108
+ /* non-blocking */
109
+ }
110
+ }
111
+ // Shutdown transforms
112
+ for (const transform of this.packageTransforms.values()) {
113
+ if ('shutdown' in transform && typeof transform.shutdown === 'function') {
114
+ try {
115
+ await transform.shutdown();
116
+ }
117
+ catch {
118
+ /* non-blocking */
119
+ }
120
+ }
121
+ }
122
+ // Shutdown loggers
123
+ for (const logger of this.moduleLoggers.values()) {
124
+ try {
125
+ await logger.shutdown();
126
+ }
127
+ catch {
128
+ /* non-blocking */
129
+ }
130
+ }
131
+ this.state = 'removed';
132
+ }
133
+ // ─── Accessors ─────────────────────────────────────────────────────────────
134
+ getState() {
135
+ return this.state;
136
+ }
137
+ getRoutes() {
138
+ return this.config.routes;
139
+ }
140
+ getSource(id) {
141
+ return this.sources.get(id);
142
+ }
143
+ getActor(id) {
144
+ return this.actors.get(id);
145
+ }
146
+ getTransform(name) {
147
+ return this.packageTransforms.get(name);
148
+ }
149
+ getTransformsMap() {
150
+ return this.packageTransforms;
151
+ }
152
+ getLoggers() {
153
+ return this.moduleLoggers;
154
+ }
155
+ getHealth() {
156
+ return [...this.healthStates.values()];
157
+ }
158
+ getHealthState(sourceId) {
159
+ return this.healthStates.get(sourceId);
160
+ }
161
+ updateHealth(sourceId, update) {
162
+ const existing = this.healthStates.get(sourceId);
163
+ if (existing) {
164
+ Object.assign(existing, update);
165
+ }
166
+ }
167
+ getContext() {
168
+ return { name: this.name, checkpointStore: this.checkpointStore };
169
+ }
170
+ getCheckpointStore() {
171
+ return this.checkpointStore;
172
+ }
173
+ status() {
174
+ return {
175
+ name: this.name,
176
+ state: this.state,
177
+ sources: this.sources.size,
178
+ routes: this.config.routes.length,
179
+ actors: this.actors.size,
180
+ uptime_ms: this.startedAt > 0 ? Date.now() - this.startedAt : 0,
181
+ health: this.getHealth(),
182
+ };
183
+ }
184
+ }
185
+ //# sourceMappingURL=module-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-instance.js","sourceRoot":"","sources":["../src/module-instance.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+CH,iFAAiF;AAEjF,MAAM,OAAO,cAAc;IACjB,IAAI,CAAS;IACb,MAAM,CAAe;IACtB,KAAK,GAAgB,SAAS,CAAC;IAC/B,SAAS,GAAG,CAAC,CAAC;IAEtB,yBAAyB;IACR,OAAO,CAA+B;IACtC,MAAM,CAA8B;IACpC,iBAAiB,CAAyB;IAC1C,aAAa,CAAsB;IACnC,eAAe,CAAkB;IACjC,YAAY,CAAiC;IAE9D,YACC,MAAoB,EACpB,OAMC;QAED,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAE9B,2CAA2C;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE;gBAC7B,QAAQ,EAAE,GAAG,CAAC,EAAE;gBAChB,MAAM,EAAE,SAA+B;gBACvC,kBAAkB,EAAE,IAAI;gBACxB,eAAe,EAAE,IAAI;gBACrB,iBAAiB,EAAE,CAAC;gBACpB,SAAS,EAAE,IAAI;gBACf,kBAAkB,EAAE,CAAC;gBACrB,WAAW,EAAE,KAAK;aAClB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,UAAU;QACf,eAAe;QACf,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/D,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,MAAM,CAAC,IAAI,CAAC;oBACjB,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,IAAI,EAAE,SAAS,CAAC,IAAI;iBACpB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,cAAc;QACd,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,KAAK,CAAC,IAAI,CAAC;oBAChB,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;iBACxB,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,kBAAkB;QAClB,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YACnE,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,eAAe;QACf,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;YAChE,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,6BAA6B;IAC7B,QAAQ;QACP,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,+DAA+D;IAC/D,UAAU;QACT,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;IAC1B,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,QAAQ;QACb,mBAAmB;QACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACR,kBAAkB;YACnB,CAAC;QACF,CAAC;QACD,kBAAkB;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACJ,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACR,kBAAkB;YACnB,CAAC;QACF,CAAC;QACD,sBAAsB;QACtB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBACzE,IAAI,CAAC;oBACJ,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACR,kBAAkB;gBACnB,CAAC;YACF,CAAC;QACF,CAAC;QACD,mBAAmB;QACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACR,kBAAkB;YACnB,CAAC;QACF,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,8EAA8E;IAE9E,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED,SAAS;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,cAAc,CAAC,QAAgB;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,MAAkC;QAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACF,CAAC;IAED,UAAU;QACT,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IACnE,CAAC;IAED,kBAAkB;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;SACxB,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ModuleRegistry — singleton registry for loaded module instances.
3
+ *
4
+ * Tracks all active modules by name. Names are unique — attempting to
5
+ * register a duplicate throws ModuleConflictError.
6
+ */
7
+ import type { ModuleInstance } from './module-instance.js';
8
+ export declare class ModuleRegistry {
9
+ private readonly modules;
10
+ /** Register a module. Throws ModuleConflictError if name already exists. */
11
+ register(module: ModuleInstance): void;
12
+ /** Unregister a module by name. Returns the removed instance or undefined. */
13
+ unregister(name: string): ModuleInstance | undefined;
14
+ /** Get a module by name. */
15
+ get(name: string): ModuleInstance | undefined;
16
+ /** Check if a module name is registered. */
17
+ has(name: string): boolean;
18
+ /** List all registered modules. */
19
+ list(): ModuleInstance[];
20
+ /** Get count of registered modules. */
21
+ get size(): number;
22
+ }
23
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAOtC,8EAA8E;IAC9E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAQpD,4BAA4B;IAC5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C,4CAA4C;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,mCAAmC;IACnC,IAAI,IAAI,cAAc,EAAE;IAIxB,uCAAuC;IACvC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ModuleRegistry — singleton registry for loaded module instances.
3
+ *
4
+ * Tracks all active modules by name. Names are unique — attempting to
5
+ * register a duplicate throws ModuleConflictError.
6
+ */
7
+ import { ModuleConflictError } from './errors.js';
8
+ export class ModuleRegistry {
9
+ modules = new Map();
10
+ /** Register a module. Throws ModuleConflictError if name already exists. */
11
+ register(module) {
12
+ if (this.modules.has(module.name)) {
13
+ throw new ModuleConflictError(module.name, `Module "${module.name}" is already loaded`);
14
+ }
15
+ this.modules.set(module.name, module);
16
+ }
17
+ /** Unregister a module by name. Returns the removed instance or undefined. */
18
+ unregister(name) {
19
+ const module = this.modules.get(name);
20
+ if (module) {
21
+ this.modules.delete(name);
22
+ }
23
+ return module;
24
+ }
25
+ /** Get a module by name. */
26
+ get(name) {
27
+ return this.modules.get(name);
28
+ }
29
+ /** Check if a module name is registered. */
30
+ has(name) {
31
+ return this.modules.has(name);
32
+ }
33
+ /** List all registered modules. */
34
+ list() {
35
+ return [...this.modules.values()];
36
+ }
37
+ /** Get count of registered modules. */
38
+ get size() {
39
+ return this.modules.size;
40
+ }
41
+ }
42
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,OAAO,cAAc;IACT,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D,4EAA4E;IAC5E,QAAQ,CAAC,MAAsB;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,UAAU,CAAC,IAAY;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,4BAA4B;IAC5B,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,4CAA4C;IAC5C,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,mCAAmC;IACnC,IAAI;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,uCAAuC;IACvC,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,CAAC;CACD"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Runtime — the long-lived host process.
3
+ *
4
+ * Owns shared infrastructure (bus, scheduler, logger, webhook server)
5
+ * and manages modules through a registry. Modules are loaded/unloaded
6
+ * independently without affecting each other.
7
+ */
8
+ import { EventEmitter } from 'node:events';
9
+ import type { ModuleStatus, OrgLoopEvent, RuntimeStatus } from '@orgloop/sdk';
10
+ import type { EventBus } from './bus.js';
11
+ import type { RuntimeControl } from './http.js';
12
+ import { LoggerManager } from './logger.js';
13
+ import type { ModuleConfig } from './module-instance.js';
14
+ import type { CheckpointStore } from './store.js';
15
+ export interface SourceCircuitBreakerOptions {
16
+ /** Consecutive failures before opening circuit (default: 5) */
17
+ failureThreshold?: number;
18
+ /** Backoff period in ms before retry when circuit is open (default: 60000) */
19
+ retryAfterMs?: number;
20
+ }
21
+ export interface RuntimeOptions {
22
+ /** Custom event bus (default: InMemoryBus) */
23
+ bus?: EventBus;
24
+ /** Shared logger manager (default: new LoggerManager) */
25
+ loggerManager?: LoggerManager;
26
+ /** HTTP port for webhook server and control API (default: 4800) */
27
+ httpPort?: number;
28
+ /** Circuit breaker options for source polling */
29
+ circuitBreaker?: SourceCircuitBreakerOptions;
30
+ /** Data directory for checkpoints and WAL */
31
+ dataDir?: string;
32
+ }
33
+ export interface LoadModuleOptions {
34
+ /** Pre-instantiated source connectors (keyed by source ID) */
35
+ sources?: Map<string, import('@orgloop/sdk').SourceConnector>;
36
+ /** Pre-instantiated actor connectors (keyed by actor ID) */
37
+ actors?: Map<string, import('@orgloop/sdk').ActorConnector>;
38
+ /** Pre-instantiated package transforms (keyed by transform name) */
39
+ transforms?: Map<string, import('@orgloop/sdk').Transform>;
40
+ /** Pre-instantiated loggers (keyed by logger name) */
41
+ loggers?: Map<string, import('@orgloop/sdk').Logger>;
42
+ /** Custom checkpoint store for this module */
43
+ checkpointStore?: CheckpointStore;
44
+ }
45
+ declare class Runtime extends EventEmitter implements RuntimeControl {
46
+ private readonly bus;
47
+ private readonly scheduler;
48
+ private readonly loggerManager;
49
+ private readonly registry;
50
+ private readonly webhookServer;
51
+ private running;
52
+ private httpStarted;
53
+ private startedAt;
54
+ private readonly httpPort;
55
+ private readonly dataDir?;
56
+ private readonly circuitBreakerOpts;
57
+ private readonly circuitRetryTimers;
58
+ private readonly moduleConfigs;
59
+ private readonly moduleLoadOptions;
60
+ constructor(options?: RuntimeOptions);
61
+ start(): Promise<void>;
62
+ /** Start the HTTP server for webhooks and control API. */
63
+ startHttpServer(): Promise<void>;
64
+ /** Whether the HTTP server is currently running. */
65
+ isHttpStarted(): boolean;
66
+ stop(): Promise<void>;
67
+ loadModule(config: ModuleConfig, options?: LoadModuleOptions): Promise<ModuleStatus>;
68
+ unloadModule(name: string): Promise<void>;
69
+ reloadModule(name: string): Promise<void>;
70
+ inject(event: OrgLoopEvent, moduleName?: string): Promise<void>;
71
+ private processEvent;
72
+ private deliverToActor;
73
+ private pollSource;
74
+ private scheduleCircuitRetry;
75
+ status(): RuntimeStatus;
76
+ listModules(): ModuleStatus[];
77
+ getModuleStatus(name: string): ModuleStatus | undefined;
78
+ private emitLog;
79
+ }
80
+ export { Runtime };
81
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}