@stateflowx/runtime 0.1.0

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 (116) hide show
  1. package/README.md +38 -0
  2. package/dist/app.module.d.ts +2 -0
  3. package/dist/app.module.js +17 -0
  4. package/dist/app.module.js.map +1 -0
  5. package/dist/core/db.interface.d.ts +6 -0
  6. package/dist/core/db.interface.js +2 -0
  7. package/dist/core/db.interface.js.map +1 -0
  8. package/dist/core/logger/logger.d.ts +2 -0
  9. package/dist/core/logger/logger.js +14 -0
  10. package/dist/core/logger/logger.js.map +1 -0
  11. package/dist/core/protocol/json-rpc/json-rpc.protocol.d.ts +7 -0
  12. package/dist/core/protocol/json-rpc/json-rpc.protocol.js +13 -0
  13. package/dist/core/protocol/json-rpc/json-rpc.protocol.js.map +1 -0
  14. package/dist/core/provider/provider.config.interface.d.ts +6 -0
  15. package/dist/core/provider/provider.config.interface.js +2 -0
  16. package/dist/core/provider/provider.config.interface.js.map +1 -0
  17. package/dist/core/provider/provider.interface.d.ts +3 -0
  18. package/dist/core/provider/provider.interface.js +2 -0
  19. package/dist/core/provider/provider.interface.js.map +1 -0
  20. package/dist/core/provider/provider.manager.d.ts +10 -0
  21. package/dist/core/provider/provider.manager.js +24 -0
  22. package/dist/core/provider/provider.manager.js.map +1 -0
  23. package/dist/core/provider/providers/gemini.provider.d.ts +5 -0
  24. package/dist/core/provider/providers/gemini.provider.js +15 -0
  25. package/dist/core/provider/providers/gemini.provider.js.map +1 -0
  26. package/dist/core/provider/providers/mock-provider.provider.d.ts +4 -0
  27. package/dist/core/provider/providers/mock-provider.provider.js +9 -0
  28. package/dist/core/provider/providers/mock-provider.provider.js.map +1 -0
  29. package/dist/core/runtime/bootstrap.d.ts +3 -0
  30. package/dist/core/runtime/bootstrap.js +8 -0
  31. package/dist/core/runtime/bootstrap.js.map +1 -0
  32. package/dist/core/runtime/create-runtime-config.interface.d.ts +10 -0
  33. package/dist/core/runtime/create-runtime-config.interface.js +2 -0
  34. package/dist/core/runtime/create-runtime-config.interface.js.map +1 -0
  35. package/dist/core/runtime/create-runtime-context.d.ts +4 -0
  36. package/dist/core/runtime/create-runtime-context.js +19 -0
  37. package/dist/core/runtime/create-runtime-context.js.map +1 -0
  38. package/dist/core/runtime/create-runtime.d.ts +8 -0
  39. package/dist/core/runtime/create-runtime.js +47 -0
  40. package/dist/core/runtime/create-runtime.js.map +1 -0
  41. package/dist/core/runtime/runtime-app-init.d.ts +5 -0
  42. package/dist/core/runtime/runtime-app-init.js +51 -0
  43. package/dist/core/runtime/runtime-app-init.js.map +1 -0
  44. package/dist/core/runtime/runtime-app.interface.d.ts +4 -0
  45. package/dist/core/runtime/runtime-app.interface.js +2 -0
  46. package/dist/core/runtime/runtime-app.interface.js.map +1 -0
  47. package/dist/core/runtime/runtime-config.interface.d.ts +9 -0
  48. package/dist/core/runtime/runtime-config.interface.js +2 -0
  49. package/dist/core/runtime/runtime-config.interface.js.map +1 -0
  50. package/dist/core/runtime/runtime-context.interface.d.ts +15 -0
  51. package/dist/core/runtime/runtime-context.interface.js +2 -0
  52. package/dist/core/runtime/runtime-context.interface.js.map +1 -0
  53. package/dist/core/service/providers/http.service.d.ts +12 -0
  54. package/dist/core/service/providers/http.service.js +22 -0
  55. package/dist/core/service/providers/http.service.js.map +1 -0
  56. package/dist/core/service/runtime-service.interface.d.ts +4 -0
  57. package/dist/core/service/runtime-service.interface.js +2 -0
  58. package/dist/core/service/runtime-service.interface.js.map +1 -0
  59. package/dist/core/service/service-config.interface.d.ts +4 -0
  60. package/dist/core/service/service-config.interface.js +2 -0
  61. package/dist/core/service/service-config.interface.js.map +1 -0
  62. package/dist/core/service/service-definition.interface.d.ts +9 -0
  63. package/dist/core/service/service-definition.interface.js +2 -0
  64. package/dist/core/service/service-definition.interface.js.map +1 -0
  65. package/dist/core/service/service.manager.d.ts +7 -0
  66. package/dist/core/service/service.manager.js +15 -0
  67. package/dist/core/service/service.manager.js.map +1 -0
  68. package/dist/core/storage/in-memory.db.d.ts +8 -0
  69. package/dist/core/storage/in-memory.db.js +16 -0
  70. package/dist/core/storage/in-memory.db.js.map +1 -0
  71. package/dist/core/transport/transport.interface.d.ts +1 -0
  72. package/dist/core/transport/transport.interface.js +2 -0
  73. package/dist/core/transport/transport.interface.js.map +1 -0
  74. package/dist/core/transport/ws/connection-metadata.interface.d.ts +5 -0
  75. package/dist/core/transport/ws/connection-metadata.interface.js +2 -0
  76. package/dist/core/transport/ws/connection-metadata.interface.js.map +1 -0
  77. package/dist/core/transport/ws/events.gateway.d.ts +15 -0
  78. package/dist/core/transport/ws/events.gateway.js +120 -0
  79. package/dist/core/transport/ws/events.gateway.js.map +1 -0
  80. package/dist/core/transport/ws/utils.d.ts +5 -0
  81. package/dist/core/transport/ws/utils.js +74 -0
  82. package/dist/core/transport/ws/utils.js.map +1 -0
  83. package/dist/core/transport/ws/ws.client.interface.d.ts +4 -0
  84. package/dist/core/transport/ws/ws.client.interface.js +2 -0
  85. package/dist/core/transport/ws/ws.client.interface.js.map +1 -0
  86. package/dist/core/transport/ws/ws.interface.d.ts +10 -0
  87. package/dist/core/transport/ws/ws.interface.js +10 -0
  88. package/dist/core/transport/ws/ws.interface.js.map +1 -0
  89. package/dist/examples/ping-pong/client/client.d.ts +1 -0
  90. package/dist/examples/ping-pong/client/client.js +48 -0
  91. package/dist/examples/ping-pong/client/client.js.map +1 -0
  92. package/dist/examples/ping-pong/ping-pong.app.d.ts +4 -0
  93. package/dist/examples/ping-pong/ping-pong.app.js +20 -0
  94. package/dist/examples/ping-pong/ping-pong.app.js.map +1 -0
  95. package/dist/examples/ping-pong/ping-pong.app.spec.d.ts +1 -0
  96. package/dist/examples/ping-pong/ping-pong.app.spec.js +59 -0
  97. package/dist/examples/ping-pong/ping-pong.app.spec.js.map +1 -0
  98. package/dist/examples/relay-ops/agent/agent.service.d.ts +6 -0
  99. package/dist/examples/relay-ops/agent/agent.service.js +26 -0
  100. package/dist/examples/relay-ops/agent/agent.service.js.map +1 -0
  101. package/dist/examples/relay-ops/client/client.d.ts +1 -0
  102. package/dist/examples/relay-ops/client/client.js +27 -0
  103. package/dist/examples/relay-ops/client/client.js.map +1 -0
  104. package/dist/examples/relay-ops/relay-ops.app.d.ts +4 -0
  105. package/dist/examples/relay-ops/relay-ops.app.js +35 -0
  106. package/dist/examples/relay-ops/relay-ops.app.js.map +1 -0
  107. package/dist/examples/relay-ops/relay-ops.controller.d.ts +10 -0
  108. package/dist/examples/relay-ops/relay-ops.controller.js +39 -0
  109. package/dist/examples/relay-ops/relay-ops.controller.js.map +1 -0
  110. package/dist/main.d.ts +1 -0
  111. package/dist/main.js +12 -0
  112. package/dist/main.js.map +1 -0
  113. package/dist/runtime/index.d.ts +7 -0
  114. package/dist/runtime/index.js +8 -0
  115. package/dist/runtime/index.js.map +1 -0
  116. package/package.json +85 -0
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # @stateflowx/runtime
2
+
3
+ StateFlowX Runtime is a lightweight orchestration runtime for building operational workflows, realtime systems, and AI-driven execution pipelines using pluggable transports and providers.
4
+
5
+ ## Features
6
+
7
+ - JSON-RPC over WebSockets
8
+ - Runtime composition
9
+ - Pluggable provider architecture
10
+ - Transport abstraction
11
+ - Service orchestration foundation
12
+ - Realtime execution flow
13
+ - NestJS-based runtime infrastructure
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @stateflowx/runtime
19
+ ```
20
+
21
+ ## Basic Example
22
+
23
+ ```ts
24
+ import { createRuntime } from '@stateflowx/runtime';
25
+
26
+ const runtime = createRuntime({
27
+ providers: [
28
+ gemini({
29
+ priority: 1,
30
+ }),
31
+ ],
32
+ });
33
+
34
+ ```
35
+
36
+ ## Current Status
37
+
38
+ StateFlowX Runtime is currently experimental and under active development.
@@ -0,0 +1,2 @@
1
+ export declare class AppModule {
2
+ }
@@ -0,0 +1,17 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Module } from '@nestjs/common';
8
+ import EventsGateway from './core/transport/ws/events.gateway.js';
9
+ let AppModule = class AppModule {
10
+ };
11
+ AppModule = __decorate([
12
+ Module({
13
+ providers: [EventsGateway],
14
+ })
15
+ ], AppModule);
16
+ export { AppModule };
17
+ //# sourceMappingURL=app.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,aAAa,MAAM,uCAAuC,CAAC;AAK3D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAHrB,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,aAAa,CAAC;KAC3B,CAAC;GACW,SAAS,CAAG"}
@@ -0,0 +1,6 @@
1
+ export interface DB {
2
+ get<T = unknown>(key: string): T | undefined;
3
+ set<T = unknown>(key: string, value: T): void;
4
+ delete(key: string): void;
5
+ clear(): void;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=db.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.interface.js","sourceRoot":"","sources":["../../src/core/db.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import pino from 'pino';
2
+ export declare const logger: pino.Logger<never, boolean>;
@@ -0,0 +1,14 @@
1
+ import pino from 'pino';
2
+ export const logger = pino({
3
+ transport: process.env.NODE_ENV !== 'production'
4
+ ? {
5
+ target: 'pino-pretty',
6
+ options: {
7
+ colorize: true,
8
+ translateTime: 'HH:MM:ss',
9
+ ignore: 'pid,hostname',
10
+ },
11
+ }
12
+ : undefined,
13
+ });
14
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/logger/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACnC,CAAC,CAAC;YACE,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,UAAU;gBACzB,MAAM,EAAE,cAAc;aACvB;SACF;QACH,CAAC,CAAC,SAAS;CAChB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { JSONRPCServer } from 'json-rpc-2.0';
2
+ export declare class JsonRpcProtocol {
3
+ private readonly jsonrpc;
4
+ constructor(jsonrpc: JSONRPCServer);
5
+ addMethod(route: string, handler: Function): void;
6
+ receive(payload: any): Promise<import("json-rpc-2.0").JSONRPCResponse | null>;
7
+ }
@@ -0,0 +1,13 @@
1
+ export class JsonRpcProtocol {
2
+ jsonrpc;
3
+ constructor(jsonrpc) {
4
+ this.jsonrpc = jsonrpc;
5
+ }
6
+ addMethod(route, handler) {
7
+ this.jsonrpc.addMethod(route, handler);
8
+ }
9
+ async receive(payload) {
10
+ return this.jsonrpc.receive(payload);
11
+ }
12
+ }
13
+ //# sourceMappingURL=json-rpc.protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-rpc.protocol.js","sourceRoot":"","sources":["../../../../src/core/protocol/json-rpc/json-rpc.protocol.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAEvD,SAAS,CAAC,KAAa,EAAE,OAAiB;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAc,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAY;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { AgentProvider } from './provider.interface.js';
2
+ export interface ProviderConfig {
3
+ name: string;
4
+ provider: AgentProvider;
5
+ priority?: number;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.config.interface.js","sourceRoot":"","sources":["../../../src/core/provider/provider.config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export interface AgentProvider {
2
+ generate(prompt: string): Promise<string>;
3
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.interface.js","sourceRoot":"","sources":["../../../src/core/provider/provider.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { ProviderConfig } from './provider.config.interface.js';
2
+ import { AgentProvider } from './provider.interface.js';
3
+ export declare class ProviderManager {
4
+ private providers;
5
+ private defaultProvider;
6
+ constructor(providers?: ProviderConfig[]);
7
+ register(name: string, provider: AgentProvider): void;
8
+ get(name: string): AgentProvider;
9
+ generate(prompt: string, providerName?: string): Promise<string>;
10
+ }
@@ -0,0 +1,24 @@
1
+ export class ProviderManager {
2
+ providers = new Map();
3
+ defaultProvider = 'default';
4
+ constructor(providers = []) {
5
+ providers.forEach(({ name, provider }) => {
6
+ this.register(name, provider);
7
+ });
8
+ }
9
+ register(name, provider) {
10
+ this.providers.set(name, provider);
11
+ }
12
+ get(name) {
13
+ const provider = this.providers.get(name);
14
+ if (!provider) {
15
+ throw new Error(`Provider not found: ${name}`);
16
+ }
17
+ return provider;
18
+ }
19
+ async generate(prompt, providerName = this.defaultProvider) {
20
+ const provider = this.get(providerName);
21
+ return provider.generate(prompt);
22
+ }
23
+ }
24
+ //# sourceMappingURL=provider.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.manager.js","sourceRoot":"","sources":["../../../src/core/provider/provider.manager.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,eAAe;IAClB,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE7C,eAAe,GAAG,SAAS,CAAC;IAEpC,YAAY,YAA8B,EAAE;QAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,QAAuB;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,YAAY,GAAG,IAAI,CAAC,eAAe;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAExC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { AgentProvider } from '../provider.interface.js';
2
+ export declare class GeminiProvider implements AgentProvider {
3
+ private genAI;
4
+ generate(prompt: string): Promise<string>;
5
+ }
@@ -0,0 +1,15 @@
1
+ import { GoogleGenerativeAI } from '@google/generative-ai';
2
+ export class GeminiProvider {
3
+ genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
4
+ async generate(prompt) {
5
+ console.log('Gemini prompt:', prompt);
6
+ const model = this.genAI.getGenerativeModel({
7
+ model: 'gemini-2.5-flash',
8
+ });
9
+ const result = await model.generateContent(prompt);
10
+ const text = result.response.text();
11
+ console.log('Gemini response:', text);
12
+ return text;
13
+ }
14
+ }
15
+ //# sourceMappingURL=gemini.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.provider.js","sourceRoot":"","sources":["../../../../src/core/provider/providers/gemini.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,MAAM,OAAO,cAAc;IACjB,KAAK,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAe,CAAC,CAAC;IAEpE,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YAC1C,KAAK,EAAE,kBAAkB;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { AgentProvider } from '../provider.interface.js';
2
+ export declare class MockProvider implements AgentProvider {
3
+ generate(prompt: string): Promise<string>;
4
+ }
@@ -0,0 +1,9 @@
1
+ export class MockProvider {
2
+ async generate(prompt) {
3
+ console.log('MockProvider prompt:', prompt);
4
+ const response = `Mock response for prompt: "${prompt}"`;
5
+ console.log('MockProvider response:', response);
6
+ return response;
7
+ }
8
+ }
9
+ //# sourceMappingURL=mock-provider.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-provider.provider.js","sourceRoot":"","sources":["../../../../src/core/provider/providers/mock-provider.provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,8BAA8B,MAAM,GAAG,CAAC;QAEzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { RuntimeApp } from './runtime-app.interface.js';
2
+ import { RuntimeConfig } from './runtime-config.interface.js';
3
+ export declare function bootstrapRuntime(apps: RuntimeApp[], config: RuntimeConfig): void;
@@ -0,0 +1,8 @@
1
+ import { createRuntimeContext } from './create-runtime-context.js';
2
+ export function bootstrapRuntime(apps, config) {
3
+ apps.forEach((app) => {
4
+ const context = createRuntimeContext(app, config);
5
+ app.register(context);
6
+ });
7
+ }
8
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/core/runtime/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,MAAqB;IAIrB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,oBAAoB,CAClC,GAAG,EACH,MAAM,CACP,CAAC;QAEF,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { DB } from '../db.interface.js';
2
+ import { RuntimeApp } from './runtime-app.interface.js';
3
+ import { ProviderConfig } from '../provider/provider.config.interface.js';
4
+ import { ServiceConfig } from '../service/service-config.interface.js';
5
+ export interface CreateRuntimeConfig {
6
+ apps: RuntimeApp[];
7
+ providers: ProviderConfig[];
8
+ services?: ServiceConfig[];
9
+ db?: DB;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create-runtime-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-runtime-config.interface.js","sourceRoot":"","sources":["../../../src/core/runtime/create-runtime-config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { RuntimeContext } from './runtime-context.interface.js';
2
+ import { RuntimeApp } from './runtime-app.interface.js';
3
+ import { RuntimeConfig } from './runtime-config.interface.js';
4
+ export declare function createRuntimeContext(app: RuntimeApp, config: RuntimeConfig): RuntimeContext;
@@ -0,0 +1,19 @@
1
+ import { InMemoryDB } from '../storage/in-memory.db.js';
2
+ import { ServiceManager } from '../service/service.manager.js';
3
+ import { ProviderManager } from '../provider/provider.manager.js';
4
+ export function createRuntimeContext(app, config) {
5
+ const db = config.db ? config.db : new InMemoryDB();
6
+ const providerManager = new ProviderManager(config.providers);
7
+ const serviceManager = new ServiceManager(config.services);
8
+ return {
9
+ db,
10
+ state: {},
11
+ protocol: config.protocol,
12
+ ai: providerManager,
13
+ services: serviceManager,
14
+ prompt(route, handler) {
15
+ config.protocol?.addMethod(route, handler);
16
+ },
17
+ };
18
+ }
19
+ //# sourceMappingURL=create-runtime-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../../src/core/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAMxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,UAAU,oBAAoB,CAClC,GAAe,EACf,MAAqB;IAErB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;IAEpD,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE3D,OAAO;QACL,EAAE;QAEF,KAAK,EAAE,EAAE;QAET,QAAQ,EAAE,MAAM,CAAC,QAAQ;QAEzB,EAAE,EAAE,eAAe;QAEnB,QAAQ,EAAE,cAAc;QAExB,MAAM,CAAC,KAAa,EAAE,OAAiB;YACrC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CreateRuntimeConfig } from './create-runtime-config.interface.js';
2
+ interface RuntimeClient {
3
+ send(data: string): void;
4
+ }
5
+ export declare function createRuntime(client: RuntimeClient, config: CreateRuntimeConfig): {
6
+ receiveAndSend(payload: unknown): Promise<void>;
7
+ };
8
+ export {};
@@ -0,0 +1,47 @@
1
+ import { JSONRPCClient, JSONRPCServer, JSONRPCServerAndClient, } from 'json-rpc-2.0';
2
+ import { InMemoryDB } from '../storage/in-memory.db.js';
3
+ import { bootstrapRuntime } from './bootstrap.js';
4
+ import { JsonRpcProtocol } from '../protocol/json-rpc/json-rpc.protocol.js';
5
+ export function createRuntime(client, config) {
6
+ const jsonSC = new JSONRPCServerAndClient(new JSONRPCServer(), new JSONRPCClient((request) => {
7
+ client.send(JSON.stringify(request));
8
+ return Promise.resolve();
9
+ }));
10
+ const runtimeConfig = {
11
+ db: config.db ?? new InMemoryDB(),
12
+ protocol: new JsonRpcProtocol(jsonSC.server),
13
+ providers: config.providers,
14
+ services: config.services,
15
+ };
16
+ bootstrapRuntime(config.apps, runtimeConfig);
17
+ return {
18
+ receiveAndSend(payload) {
19
+ return jsonSC.receiveAndSend(payload);
20
+ },
21
+ };
22
+ }
23
+ // export function createRuntime(
24
+ // // client: RuntimeClient,
25
+ // // config: CreateRuntimeConfig
26
+ // config: RuntimeConfig
27
+ // ) {
28
+ // const jsonSC = new JSONRPCServerAndClient(
29
+ // new JSONRPCServer(),
30
+ // new JSONRPCClient((request) => {
31
+ // client.send(JSON.stringify(request));
32
+ // })
33
+ // );
34
+ // const runtimeConfig: RuntimeConfig = {
35
+ // db: config.db ?? new InMemoryDB(),
36
+ // protocol: new JsonRpcProtocol(jsonSC.server),
37
+ // providers: config.providers,
38
+ // services: config.services,
39
+ // };
40
+ // bootstrapRuntime(config.apps, runtimeConfig);
41
+ // return {
42
+ // receiveAndSend(payload: unknown) {
43
+ // jsonSC.receiveAndSend(payload as any);
44
+ // },
45
+ // };
46
+ // }
47
+ //# sourceMappingURL=create-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-runtime.js","sourceRoot":"","sources":["../../../src/core/runtime/create-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAU5E,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,MAA2B;IAE3B,MAAM,MAAM,GAAG,IAAI,sBAAsB,CACvC,IAAI,aAAa,EAAE,EAEnB,IAAI,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAErC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,aAAa,GAAkB;QACnC,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE;QAEjC,QAAQ,EAAE,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;QAE5C,SAAS,EAAE,MAAM,CAAC,SAAS;QAE3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;IAEF,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAE7C,OAAO;QACL,cAAc,CAAC,OAAgB;YAC7B,OAAO,MAAM,CAAC,cAAc,CAAC,OAAc,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,8BAA8B;AAC9B,mCAAmC;AACnC,0BAA0B;AAC1B,MAAM;AACN,+CAA+C;AAC/C,2BAA2B;AAE3B,uCAAuC;AACvC,8CAA8C;AAC9C,SAAS;AACT,OAAO;AAEP,2CAA2C;AAC3C,yCAAyC;AAEzC,oDAAoD;AAEpD,mCAAmC;AAEnC,iCAAiC;AACjC,OAAO;AAEP,kDAAkD;AAElD,aAAa;AACb,yCAAyC;AACzC,+CAA+C;AAC/C,SAAS;AACT,OAAO;AACP,IAAI"}
@@ -0,0 +1,5 @@
1
+ import { RuntimeApp } from '../../core/runtime/runtime-app.interface.js';
2
+ import { RuntimeContext } from '../../core/runtime/runtime-context.interface.js';
3
+ export declare class RuntimeInitializeApp implements RuntimeApp {
4
+ register(runtime: RuntimeContext): void;
5
+ }
@@ -0,0 +1,51 @@
1
+ import { logger } from '../../core/logger/logger.js';
2
+ import { createHttpService } from '../service/providers/http.service.js';
3
+ export class RuntimeInitializeApp {
4
+ register(runtime) {
5
+ runtime.prompt('runtime.initialize', async (payload) => {
6
+ logger.info('runtime.initialize invoked');
7
+ if (typeof payload !== 'object' || payload === null) {
8
+ throw new Error('Invalid runtime config payload');
9
+ }
10
+ const config = payload;
11
+ //
12
+ // REGISTER SERVICES
13
+ //
14
+ config.services?.forEach((serviceConfig) => {
15
+ if (serviceConfig.type === 'http') {
16
+ const service = createHttpService(serviceConfig);
17
+ runtime.services.register(service);
18
+ logger.info({
19
+ service: serviceConfig.name,
20
+ }, 'Service registered');
21
+ }
22
+ });
23
+ //
24
+ // REGISTER WORKFLOWS
25
+ //
26
+ config.workflows?.forEach((workflow) => {
27
+ runtime.prompt(workflow.route, async () => {
28
+ const service = runtime.services.get(workflow.service);
29
+ if (!service) {
30
+ throw new Error(`Service not found: ${workflow.service}`);
31
+ }
32
+ const data = await service.execute();
33
+ const enhancedPrompt = `
34
+ ${workflow.prompt}
35
+
36
+ DATA:
37
+ ${JSON.stringify(data)}
38
+ `;
39
+ return runtime.ai.generate(enhancedPrompt);
40
+ });
41
+ logger.info({
42
+ route: workflow.route,
43
+ }, 'Workflow registered');
44
+ });
45
+ return {
46
+ success: true,
47
+ };
48
+ });
49
+ }
50
+ }
51
+ //# sourceMappingURL=runtime-app-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-app-init.js","sourceRoot":"","sources":["../../../src/core/runtime/runtime-app-init.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,MAAM,OAAO,oBAAoB;IAC/B,QAAQ,CAAC,OAAuB;QAC9B,OAAO,CAAC,MAAM,CACZ,oBAAoB,EAEpB,KAAK,EAAE,OAAgB,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAE1C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,MAAM,GAAG,OAwBd,CAAC;YAEF,EAAE;YACF,oBAAoB;YACpB,EAAE;YACF,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;gBACzC,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;oBAEjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAEnC,MAAM,CAAC,IAAI,CACT;wBACE,OAAO,EAAE,aAAa,CAAC,IAAI;qBAC5B,EACD,oBAAoB,CACrB,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE;YACF,qBAAqB;YACrB,EAAE;YACF,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACrC,OAAO,CAAC,MAAM,CACZ,QAAQ,CAAC,KAAK,EAEd,KAAK,IAAI,EAAE;oBACT,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAEvD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;oBAErC,MAAM,cAAc,GAAG;gBACrB,QAAQ,CAAC,MAAM;;;kBAGb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBACrB,CAAC;oBAEU,OAAO,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAC3C,CAAC,CACJ,CAAC;gBAEF,MAAM,CAAC,IAAI,CACP;oBACA,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACpB,EACD,qBAAqB,CACxB,CAAC;YACF,CAAC,CAAC,CAAC;YAEH,OAAO;gBACP,OAAO,EAAE,IAAI;aACZ,CAAC;QACN,CAAC,CACA,CAAC;IACN,CAAC;CAChB"}
@@ -0,0 +1,4 @@
1
+ import { RuntimeContext } from './runtime-context.interface.js';
2
+ export interface RuntimeApp {
3
+ register(runtime: RuntimeContext): void;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-app.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-app.interface.js","sourceRoot":"","sources":["../../../src/core/runtime/runtime-app.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { DB } from '../db.interface.js';
2
+ import { ProviderConfig } from '../provider/provider.config.interface.js';
3
+ import { ServiceConfig } from '../service/service-config.interface.js';
4
+ export interface RuntimeConfig {
5
+ protocol: any;
6
+ providers: ProviderConfig[];
7
+ services?: ServiceConfig[];
8
+ db?: DB;
9
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-config.interface.js","sourceRoot":"","sources":["../../../src/core/runtime/runtime-config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { DB } from '../db.interface.js';
2
+ import { ProviderManager } from '../provider/provider.manager.js';
3
+ import { ServiceManager } from '../service/service.manager.js';
4
+ export type PromptHandler = (payload: unknown) => Promise<unknown> | unknown;
5
+ export interface Protocol {
6
+ register(route: string, handler: PromptHandler): void;
7
+ }
8
+ export interface RuntimeContext {
9
+ db: DB;
10
+ state: Record<string, unknown>;
11
+ protocol: Protocol;
12
+ ai: ProviderManager;
13
+ services: ServiceManager;
14
+ prompt(route: string, handler: PromptHandler): void;
15
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-context.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-context.interface.js","sourceRoot":"","sources":["../../../src/core/runtime/runtime-context.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export interface HttpServiceConfig {
2
+ name: string;
3
+ type: 'http';
4
+ method?: 'GET' | 'POST';
5
+ url: string;
6
+ headers?: Record<string, string>;
7
+ body?: unknown;
8
+ }
9
+ export declare function createHttpService(config: HttpServiceConfig): {
10
+ name: string;
11
+ execute(): Promise<any>;
12
+ };
@@ -0,0 +1,22 @@
1
+ import { logger } from '../../logger/logger.js';
2
+ export function createHttpService(config) {
3
+ logger.debug({
4
+ name: config.name,
5
+ body: config.body ? JSON.stringify(config.body).length : 0,
6
+ }, 'Http service created');
7
+ return {
8
+ name: config.name,
9
+ async execute() {
10
+ const response = await fetch(config.url, {
11
+ method: config.method ?? 'GET',
12
+ headers: config.headers,
13
+ body: config.body ? JSON.stringify(config.body) : undefined,
14
+ });
15
+ if (!response.ok) {
16
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
17
+ }
18
+ return response.json();
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=http.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.service.js","sourceRoot":"","sources":["../../../../src/core/service/providers/http.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAgBhD,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,CAAC,KAAK,CACV;QACE,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAC3D,EACD,sBAAsB,CACvB,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QAEjB,KAAK,CAAC,OAAO;YACX,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;gBACvC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;gBAE9B,OAAO,EAAE,MAAM,CAAC,OAAO;gBAEvB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5D,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface RuntimeService {
2
+ name: string;
3
+ execute(input?: unknown): Promise<unknown>;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runtime-service.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-service.interface.js","sourceRoot":"","sources":["../../../src/core/service/runtime-service.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export interface ServiceConfig {
2
+ name: string;
3
+ execute(input?: unknown): Promise<unknown>;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=service-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-config.interface.js","sourceRoot":"","sources":["../../../src/core/service/service-config.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export interface HttpServiceDefinition {
2
+ name: string;
3
+ type: 'http';
4
+ method?: 'GET' | 'POST';
5
+ url: string;
6
+ headers?: Record<string, string>;
7
+ body?: unknown;
8
+ }
9
+ export type ServiceDefinition = HttpServiceDefinition;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=service-definition.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-definition.interface.js","sourceRoot":"","sources":["../../../src/core/service/service-definition.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { ServiceConfig } from './service-config.interface.js';
2
+ export declare class ServiceManager {
3
+ private services;
4
+ constructor(services?: ServiceConfig[]);
5
+ register(service: ServiceConfig): void;
6
+ get(name: string): ServiceConfig | undefined;
7
+ }
@@ -0,0 +1,15 @@
1
+ export class ServiceManager {
2
+ services = new Map();
3
+ constructor(services = []) {
4
+ services.forEach((service) => {
5
+ this.register(service);
6
+ });
7
+ }
8
+ register(service) {
9
+ this.services.set(service.name, service);
10
+ }
11
+ get(name) {
12
+ return this.services.get(name);
13
+ }
14
+ }
15
+ //# sourceMappingURL=service.manager.js.map