@orgloop/core 0.1.5 → 0.1.7

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 (45) hide show
  1. package/README.md +51 -17
  2. package/dist/engine.d.ts +12 -26
  3. package/dist/engine.d.ts.map +1 -1
  4. package/dist/engine.js +61 -448
  5. package/dist/engine.js.map +1 -1
  6. package/dist/errors.d.ts +11 -0
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +22 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/http.d.ts +19 -1
  11. package/dist/http.d.ts.map +1 -1
  12. package/dist/http.js +114 -2
  13. package/dist/http.js.map +1 -1
  14. package/dist/index.d.ts +9 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +8 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/logger.d.ts +5 -1
  19. package/dist/logger.d.ts.map +1 -1
  20. package/dist/logger.js +15 -5
  21. package/dist/logger.js.map +1 -1
  22. package/dist/module-instance.d.ts +76 -0
  23. package/dist/module-instance.d.ts.map +1 -0
  24. package/dist/module-instance.js +185 -0
  25. package/dist/module-instance.js.map +1 -0
  26. package/dist/prompt.d.ts +20 -0
  27. package/dist/prompt.d.ts.map +1 -0
  28. package/dist/prompt.js +35 -0
  29. package/dist/prompt.js.map +1 -0
  30. package/dist/registry.d.ts +23 -0
  31. package/dist/registry.d.ts.map +1 -0
  32. package/dist/registry.js +42 -0
  33. package/dist/registry.js.map +1 -0
  34. package/dist/runtime.d.ts +81 -0
  35. package/dist/runtime.d.ts.map +1 -0
  36. package/dist/runtime.js +522 -0
  37. package/dist/runtime.js.map +1 -0
  38. package/dist/scheduler.d.ts +11 -2
  39. package/dist/scheduler.d.ts.map +1 -1
  40. package/dist/scheduler.js +44 -6
  41. package/dist/scheduler.js.map +1 -1
  42. package/dist/transform.d.ts.map +1 -1
  43. package/dist/transform.js +45 -18
  44. package/dist/transform.js.map +1 -1
  45. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @orgloop/core
2
2
 
3
- OrgLoop runtime engine -- library-first event routing for autonomous AI organizations. Load a config, wire up sources/actors/transforms/loggers, and run the event loop.
3
+ OrgLoop runtime engine -- library-first event routing for autonomous AI organizations. Multi-module runtime with independent module lifecycle, shared infrastructure, and backward-compatible single-module API.
4
4
 
5
5
  ## Install
6
6
 
@@ -10,34 +10,67 @@ npm install @orgloop/core
10
10
 
11
11
  ## Usage
12
12
 
13
+ ### Multi-module (Runtime)
14
+
13
15
  ```typescript
14
- import { OrgLoop, loadConfig, InMemoryBus } from '@orgloop/core';
16
+ import { Runtime, InMemoryBus } from '@orgloop/core';
15
17
 
16
- // Load and validate an orgloop.yaml
17
- const config = await loadConfig('./orgloop.yaml');
18
+ const runtime = new Runtime({ bus: new InMemoryBus() });
19
+ await runtime.start();
18
20
 
19
- // Create and start the engine
20
- const engine = new OrgLoop({
21
- config,
22
- bus: new InMemoryBus(),
23
- sources: { github: myGitHubSource },
24
- actors: { reviewer: myReviewerActor },
25
- });
21
+ // Load modules dynamically
22
+ await runtime.loadModule(
23
+ { name: 'engineering', sources: [...], actors: [...], routes: [...], transforms: [], loggers: [] },
24
+ { sources: mySourcesMap, actors: myActorsMap }
25
+ );
26
+
27
+ // Load more modules without restarting
28
+ await runtime.loadModule(anotherModuleConfig, anotherConnectors);
29
+
30
+ // Manage modules at runtime
31
+ await runtime.reloadModule('engineering');
32
+ await runtime.unloadModule('engineering');
33
+
34
+ await runtime.stop();
35
+ ```
36
+
37
+ ### Single-module (OrgLoop wrapper)
26
38
 
27
- await engine.start();
39
+ ```typescript
40
+ import { OrgLoop, loadConfig } from '@orgloop/core';
41
+
42
+ // Backward-compatible API -- creates a Runtime with one "default" module
43
+ const config = await loadConfig('./orgloop.yaml');
44
+ const loop = new OrgLoop(config, {
45
+ sources: mySourcesMap,
46
+ actors: myActorsMap,
47
+ });
28
48
 
29
- // Later...
30
- await engine.stop();
49
+ await loop.start();
50
+ await loop.stop();
31
51
  ```
32
52
 
33
53
  ## API
34
54
 
35
- ### Engine
55
+ ### Runtime (multi-module)
36
56
 
37
- - `OrgLoop` -- main engine class (extends EventEmitter)
57
+ - `Runtime` -- multi-module runtime class (extends EventEmitter)
58
+ - `RuntimeOptions` -- runtime constructor options (bus, httpPort, circuitBreaker, dataDir)
59
+ - `LoadModuleOptions` -- options for loadModule() (sources, actors, transforms, loggers, checkpointStore)
60
+
61
+ ### Engine (single-module wrapper)
62
+
63
+ - `OrgLoop` -- backward-compatible wrapper around Runtime (extends EventEmitter)
38
64
  - `OrgLoopOptions` -- engine constructor options
39
65
  - `EngineStatus` -- runtime status type
40
66
 
67
+ ### Module lifecycle
68
+
69
+ - `ModuleInstance` -- per-module resource container with lifecycle (loading/active/unloading/removed)
70
+ - `ModuleRegistry` -- singleton module name registry
71
+ - `ModuleConfig` -- module configuration type
72
+ - `ModuleContext` -- module-scoped context
73
+
41
74
  ### Config
42
75
 
43
76
  - `loadConfig(path, options?)` -- load and validate YAML config with env var substitution
@@ -62,11 +95,12 @@ await engine.stop();
62
95
 
63
96
  - `Scheduler` -- manages poll intervals with graceful start/stop
64
97
  - `LoggerManager` -- fan-out to multiple loggers, error-isolated
65
- - `WebhookServer` -- HTTP server for webhook-based sources
98
+ - `WebhookServer` -- HTTP server for webhook sources and control API
66
99
 
67
100
  ### Errors
68
101
 
69
102
  - `OrgLoopError`, `ConfigError`, `ConnectorError`, `TransformError`, `DeliveryError`, `SchemaError`
103
+ - `ModuleConflictError`, `ModuleNotFoundError`, `RuntimeError`
70
104
 
71
105
  ## Documentation
72
106
 
package/dist/engine.d.ts CHANGED
@@ -1,14 +1,17 @@
1
1
  /**
2
- * OrgLoop — the main runtime engine.
2
+ * OrgLoop — backward-compatible wrapper around Runtime.
3
3
  *
4
4
  * Library-first API:
5
5
  * const loop = new OrgLoop(config);
6
6
  * await loop.start();
7
7
  * await loop.stop();
8
+ *
9
+ * Internally delegates to a Runtime instance, converting the flat
10
+ * OrgLoopConfig into a single module. Preserves the original public API
11
+ * for existing callers and tests.
8
12
  */
9
13
  import { EventEmitter } from 'node:events';
10
- import type { ActorConnector, Logger, OrgLoopConfig, OrgLoopEvent, SourceConnector, SourceHealthState } from '@orgloop/sdk';
11
- import type { Transform } from '@orgloop/sdk';
14
+ import type { ActorConnector, Logger, OrgLoopConfig, OrgLoopEvent, SourceConnector, SourceHealthState, Transform } from '@orgloop/sdk';
12
15
  import type { EventBus } from './bus.js';
13
16
  import { LoggerManager } from './logger.js';
14
17
  import type { CheckpointStore } from './store.js';
@@ -57,22 +60,9 @@ export interface OrgLoopEvents {
57
60
  }
58
61
  export declare class OrgLoop extends EventEmitter {
59
62
  private readonly config;
60
- private readonly sources;
61
- private readonly actors;
62
- private readonly packageTransforms;
63
- private readonly resolvedLoggers;
64
- private readonly bus;
65
- private readonly checkpointStore;
66
- private readonly loggerManager;
67
- private readonly scheduler;
68
- private readonly httpPort;
69
- private webhookServer;
70
- private readonly webhookSources;
71
- private running;
72
- private startedAt;
73
- private readonly healthStates;
74
- private readonly circuitBreakerOpts;
75
- private readonly circuitRetryTimers;
63
+ private readonly runtime;
64
+ private readonly moduleConfig;
65
+ private readonly loadOptions;
76
66
  constructor(config: OrgLoopConfig, options?: OrgLoopOptions);
77
67
  /**
78
68
  * Start the engine: initialize connectors, start scheduler, begin processing.
@@ -96,14 +86,10 @@ export declare class OrgLoop extends EventEmitter {
96
86
  * Get health state for all sources.
97
87
  */
98
88
  health(): SourceHealthState[];
99
- private pollSource;
100
89
  /**
101
- * Schedule a single retry poll after the backoff period.
102
- * If it succeeds, resume normal polling. If not, stay in circuit-open state.
90
+ * Internal: poll a single source (used by health-tracking tests).
91
+ * @internal
103
92
  */
104
- private scheduleCircuitRetry;
105
- private processEvent;
106
- private deliverToActor;
107
- private emitLog;
93
+ private pollSource;
108
94
  }
109
95
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACX,cAAc,EACd,MAAM,EACN,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,MAAM,WAAW,2BAA2B;IAC3C,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC9B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,oEAAoE;IACpE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,sDAAsD;IACtD,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,8CAA8C;IAC9C,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,8BAA8B;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,cAAc,CAAC,EAAE,2BAA2B,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAID,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC;IACtB,QAAQ,EAAE,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;CACf;AAQD,qBAAa,OAAQ,SAAQ,YAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM1B;gBAEU,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,cAAc;IAqC3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACH,MAAM,IAAI,YAAY;IAetB,6DAA6D;IAC7D,IAAI,OAAO,IAAI,aAAa,CAG3B;IAED;;OAEG;IACH,MAAM,IAAI,iBAAiB,EAAE;IAM7B;;;OAGG;YACW,UAAU;CAIxB"}