@flutchai/flutch-sdk 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 (191) hide show
  1. package/README.md +287 -0
  2. package/dist/api/callback-token.guard.d.ts +17 -0
  3. package/dist/api/callback-token.guard.js +80 -0
  4. package/dist/api/callback-token.guard.js.map +1 -0
  5. package/dist/api/callback.controller.d.ts +7 -0
  6. package/dist/api/callback.controller.js +44 -0
  7. package/dist/api/callback.controller.js.map +1 -0
  8. package/dist/api/graph.controller.d.ts +32 -0
  9. package/dist/api/graph.controller.js +187 -0
  10. package/dist/api/graph.controller.js.map +1 -0
  11. package/dist/api/ui-dispatch.controller.d.ts +34 -0
  12. package/dist/api/ui-dispatch.controller.js +178 -0
  13. package/dist/api/ui-dispatch.controller.js.map +1 -0
  14. package/dist/bootstrap.d.ts +4 -0
  15. package/dist/bootstrap.js +177 -0
  16. package/dist/bootstrap.js.map +1 -0
  17. package/dist/callbacks/callback-acl.service.d.ts +24 -0
  18. package/dist/callbacks/callback-acl.service.js +144 -0
  19. package/dist/callbacks/callback-acl.service.js.map +1 -0
  20. package/dist/callbacks/callback-auditor.service.d.ts +47 -0
  21. package/dist/callbacks/callback-auditor.service.js +286 -0
  22. package/dist/callbacks/callback-auditor.service.js.map +1 -0
  23. package/dist/callbacks/callback-metrics.service.d.ts +34 -0
  24. package/dist/callbacks/callback-metrics.service.js +216 -0
  25. package/dist/callbacks/callback-metrics.service.js.map +1 -0
  26. package/dist/callbacks/callback-patch.service.d.ts +13 -0
  27. package/dist/callbacks/callback-patch.service.js +51 -0
  28. package/dist/callbacks/callback-patch.service.js.map +1 -0
  29. package/dist/callbacks/callback-rate-limiter.d.ts +27 -0
  30. package/dist/callbacks/callback-rate-limiter.js +129 -0
  31. package/dist/callbacks/callback-rate-limiter.js.map +1 -0
  32. package/dist/callbacks/callback-registry.d.ts +7 -0
  33. package/dist/callbacks/callback-registry.js +29 -0
  34. package/dist/callbacks/callback-registry.js.map +1 -0
  35. package/dist/callbacks/callback-store.d.ts +19 -0
  36. package/dist/callbacks/callback-store.js +145 -0
  37. package/dist/callbacks/callback-store.js.map +1 -0
  38. package/dist/callbacks/example.callback.d.ts +2 -0
  39. package/dist/callbacks/example.callback.js +10 -0
  40. package/dist/callbacks/example.callback.js.map +1 -0
  41. package/dist/callbacks/idempotency-manager.d.ts +54 -0
  42. package/dist/callbacks/idempotency-manager.js +230 -0
  43. package/dist/callbacks/idempotency-manager.js.map +1 -0
  44. package/dist/callbacks/index.d.ts +13 -0
  45. package/dist/callbacks/index.js +30 -0
  46. package/dist/callbacks/index.js.map +1 -0
  47. package/dist/callbacks/smart-callback.router.d.ts +52 -0
  48. package/dist/callbacks/smart-callback.router.js +213 -0
  49. package/dist/callbacks/smart-callback.router.js.map +1 -0
  50. package/dist/callbacks/telegram-patch.handler.d.ts +6 -0
  51. package/dist/callbacks/telegram-patch.handler.js +24 -0
  52. package/dist/callbacks/telegram-patch.handler.js.map +1 -0
  53. package/dist/callbacks/universal-callback.service.d.ts +14 -0
  54. package/dist/callbacks/universal-callback.service.js +20 -0
  55. package/dist/callbacks/universal-callback.service.js.map +1 -0
  56. package/dist/callbacks/web-patch.handler.d.ts +6 -0
  57. package/dist/callbacks/web-patch.handler.js +24 -0
  58. package/dist/callbacks/web-patch.handler.js.map +1 -0
  59. package/dist/core/abstract-graph.builder.d.ts +128 -0
  60. package/dist/core/abstract-graph.builder.js +488 -0
  61. package/dist/core/abstract-graph.builder.js.map +1 -0
  62. package/dist/core/builder-registry.service.d.ts +6 -0
  63. package/dist/core/builder-registry.service.js +29 -0
  64. package/dist/core/builder-registry.service.js.map +1 -0
  65. package/dist/core/universal-graph.module.d.ts +10 -0
  66. package/dist/core/universal-graph.module.js +294 -0
  67. package/dist/core/universal-graph.module.js.map +1 -0
  68. package/dist/decorators/callback.decorators.d.ts +21 -0
  69. package/dist/decorators/callback.decorators.js +73 -0
  70. package/dist/decorators/callback.decorators.js.map +1 -0
  71. package/dist/endpoint-registry/endpoint.decorators.d.ts +35 -0
  72. package/dist/endpoint-registry/endpoint.decorators.js +115 -0
  73. package/dist/endpoint-registry/endpoint.decorators.js.map +1 -0
  74. package/dist/endpoint-registry/endpoint.registry.d.ts +44 -0
  75. package/dist/endpoint-registry/endpoint.registry.js +90 -0
  76. package/dist/endpoint-registry/endpoint.registry.js.map +1 -0
  77. package/dist/endpoint-registry/index.d.ts +3 -0
  78. package/dist/endpoint-registry/index.js +20 -0
  79. package/dist/endpoint-registry/index.js.map +1 -0
  80. package/dist/endpoint-registry/ui-endpoints.discovery.d.ts +11 -0
  81. package/dist/endpoint-registry/ui-endpoints.discovery.js +72 -0
  82. package/dist/endpoint-registry/ui-endpoints.discovery.js.map +1 -0
  83. package/dist/engine/api-call-tracer.utils.d.ts +8 -0
  84. package/dist/engine/api-call-tracer.utils.js +184 -0
  85. package/dist/engine/api-call-tracer.utils.js.map +1 -0
  86. package/dist/engine/event-processor.utils.d.ts +49 -0
  87. package/dist/engine/event-processor.utils.js +314 -0
  88. package/dist/engine/event-processor.utils.js.map +1 -0
  89. package/dist/engine/graph-engine.factory.d.ts +12 -0
  90. package/dist/engine/graph-engine.factory.js +43 -0
  91. package/dist/engine/graph-engine.factory.js.map +1 -0
  92. package/dist/engine/langgraph-engine.d.ts +14 -0
  93. package/dist/engine/langgraph-engine.js +261 -0
  94. package/dist/engine/langgraph-engine.js.map +1 -0
  95. package/dist/index.d.ts +27 -0
  96. package/dist/index.js +48 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/interfaces/callback.interface.d.ts +46 -0
  99. package/dist/interfaces/callback.interface.js +3 -0
  100. package/dist/interfaces/callback.interface.js.map +1 -0
  101. package/dist/interfaces/graph-registry.interface.d.ts +8 -0
  102. package/dist/interfaces/graph-registry.interface.js +3 -0
  103. package/dist/interfaces/graph-registry.interface.js.map +1 -0
  104. package/dist/interfaces/graph-service.interface.d.ts +43 -0
  105. package/dist/interfaces/graph-service.interface.js +9 -0
  106. package/dist/interfaces/graph-service.interface.js.map +1 -0
  107. package/dist/interfaces/index.d.ts +3 -0
  108. package/dist/interfaces/index.js +20 -0
  109. package/dist/interfaces/index.js.map +1 -0
  110. package/dist/llm/index.d.ts +6 -0
  111. package/dist/llm/index.js +23 -0
  112. package/dist/llm/index.js.map +1 -0
  113. package/dist/llm/llm.initializer.d.ts +14 -0
  114. package/dist/llm/llm.initializer.js +167 -0
  115. package/dist/llm/llm.initializer.js.map +1 -0
  116. package/dist/llm/llm.interface.d.ts +6 -0
  117. package/dist/llm/llm.interface.js +3 -0
  118. package/dist/llm/llm.interface.js.map +1 -0
  119. package/dist/llm/llm.types.d.ts +32 -0
  120. package/dist/llm/llm.types.js +3 -0
  121. package/dist/llm/llm.types.js.map +1 -0
  122. package/dist/llm/model.initializer.d.ts +45 -0
  123. package/dist/llm/model.initializer.js +630 -0
  124. package/dist/llm/model.initializer.js.map +1 -0
  125. package/dist/llm/model.interface.d.ts +38 -0
  126. package/dist/llm/model.interface.js +4 -0
  127. package/dist/llm/model.interface.js.map +1 -0
  128. package/dist/llm/rerankers/voyageai-rerank.d.ts +17 -0
  129. package/dist/llm/rerankers/voyageai-rerank.js +56 -0
  130. package/dist/llm/rerankers/voyageai-rerank.js.map +1 -0
  131. package/dist/retriever/database-factory.d.ts +15 -0
  132. package/dist/retriever/database-factory.js +83 -0
  133. package/dist/retriever/database-factory.js.map +1 -0
  134. package/dist/retriever/index.d.ts +2 -0
  135. package/dist/retriever/index.js +19 -0
  136. package/dist/retriever/index.js.map +1 -0
  137. package/dist/retriever/retriever.client.d.ts +28 -0
  138. package/dist/retriever/retriever.client.js +97 -0
  139. package/dist/retriever/retriever.client.js.map +1 -0
  140. package/dist/retriever/retriever.service.d.ts +25 -0
  141. package/dist/retriever/retriever.service.js +265 -0
  142. package/dist/retriever/retriever.service.js.map +1 -0
  143. package/dist/retriever/types.d.ts +22 -0
  144. package/dist/retriever/types.js +3 -0
  145. package/dist/retriever/types.js.map +1 -0
  146. package/dist/schemas/graph-manifest.schema.d.ts +134 -0
  147. package/dist/schemas/graph-manifest.schema.js +180 -0
  148. package/dist/schemas/graph-manifest.schema.js.map +1 -0
  149. package/dist/schemas/index.d.ts +1 -0
  150. package/dist/schemas/index.js +18 -0
  151. package/dist/schemas/index.js.map +1 -0
  152. package/dist/shared-types/index.d.ts +199 -0
  153. package/dist/shared-types/index.js +58 -0
  154. package/dist/shared-types/index.js.map +1 -0
  155. package/dist/tools/index.d.ts +3 -0
  156. package/dist/tools/index.js +20 -0
  157. package/dist/tools/index.js.map +1 -0
  158. package/dist/tools/mcp-converter.d.ts +15 -0
  159. package/dist/tools/mcp-converter.js +133 -0
  160. package/dist/tools/mcp-converter.js.map +1 -0
  161. package/dist/tools/mcp-tool-filter.d.ts +11 -0
  162. package/dist/tools/mcp-tool-filter.js +123 -0
  163. package/dist/tools/mcp-tool-filter.js.map +1 -0
  164. package/dist/tools/mcp.interfaces.d.ts +19 -0
  165. package/dist/tools/mcp.interfaces.js +3 -0
  166. package/dist/tools/mcp.interfaces.js.map +1 -0
  167. package/dist/types/graph-types.d.ts +82 -0
  168. package/dist/types/graph-types.js +6 -0
  169. package/dist/types/graph-types.js.map +1 -0
  170. package/dist/utils/error.utils.d.ts +18 -0
  171. package/dist/utils/error.utils.js +78 -0
  172. package/dist/utils/error.utils.js.map +1 -0
  173. package/dist/utils/graph-type.utils.d.ts +14 -0
  174. package/dist/utils/graph-type.utils.js +71 -0
  175. package/dist/utils/graph-type.utils.js.map +1 -0
  176. package/dist/utils/index.d.ts +1 -0
  177. package/dist/utils/index.js +18 -0
  178. package/dist/utils/index.js.map +1 -0
  179. package/dist/utils/usage-recorder.d.ts +23 -0
  180. package/dist/utils/usage-recorder.js +29 -0
  181. package/dist/utils/usage-recorder.js.map +1 -0
  182. package/dist/versioning/index.d.ts +2 -0
  183. package/dist/versioning/index.js +19 -0
  184. package/dist/versioning/index.js.map +1 -0
  185. package/dist/versioning/versioned-graph.service.d.ts +16 -0
  186. package/dist/versioning/versioned-graph.service.js +132 -0
  187. package/dist/versioning/versioned-graph.service.js.map +1 -0
  188. package/dist/versioning/versioning.types.d.ts +21 -0
  189. package/dist/versioning/versioning.types.js +3 -0
  190. package/dist/versioning/versioning.types.js.map +1 -0
  191. package/package.json +70 -0
@@ -0,0 +1,82 @@
1
+ export interface IGraphTracer {
2
+ log(data: any): void;
3
+ error(data: any): void;
4
+ }
5
+ export interface IUsageRecorder {
6
+ recordModelExecution(record: any): void;
7
+ }
8
+ import { BaseChannel, CompiledStateGraph, LangGraphRunnableConfig } from "@langchain/langgraph";
9
+ export type MappedChannels<T> = {
10
+ [K in keyof T]: BaseChannel<T[K], T[K]>;
11
+ };
12
+ declare global {
13
+ namespace GraphTypes {
14
+ interface Registry {
15
+ }
16
+ }
17
+ }
18
+ export type IGraphTypeRegistry = GraphTypes.Registry;
19
+ export interface IGenericGraphType {
20
+ Params: any;
21
+ State: any;
22
+ Config: any;
23
+ Input: any;
24
+ Definition: any;
25
+ ConfigDefinition: any;
26
+ InputDefinition: any;
27
+ StateValues: any;
28
+ ConfigValues: any;
29
+ InputValues: any;
30
+ OutputValues: any;
31
+ }
32
+ export type CompiledGraphFor<T extends string> = T extends keyof IGraphTypeRegistry ? CompiledStateGraph<IGraphTypeRegistry[T]["State"], IGraphTypeRegistry[T]["State"], string, IGraphTypeRegistry[T]["Input"], IGraphTypeRegistry[T]["State"], IGraphTypeRegistry[T]["Config"]> : CompiledStateGraph<any, any, string, any, any, any>;
33
+ export interface IGraphBuilder<T extends string> {
34
+ buildGraph(config?: any): Promise<CompiledGraphFor<T>>;
35
+ }
36
+ export interface IGraphCompiler {
37
+ getConfiguredGraph<T extends string>(type: T, thread?: any): Promise<CompiledGraphFor<T>>;
38
+ }
39
+ export type BaseGraphState = {};
40
+ export interface IGraphMetadata {
41
+ userId: string;
42
+ applicationId: string;
43
+ workflowType: string;
44
+ version: string;
45
+ }
46
+ export interface IGraphConfigurable<TGraphSettings = any> {
47
+ thread_id?: string;
48
+ metadata?: IGraphMetadata;
49
+ graphSettings: TGraphSettings;
50
+ }
51
+ export type IGraphRunnableConfig<TGraphSettings = any> = LangGraphRunnableConfig<IGraphConfigurable<TGraphSettings>> & {
52
+ configurable: IGraphConfigurable<TGraphSettings>;
53
+ };
54
+ export type StrictGraphRunnableConfig<TGraphSettings = any> = LangGraphRunnableConfig<TGraphSettings> & {
55
+ configurable: IGraphConfigurable<TGraphSettings>;
56
+ };
57
+ export interface LLMConfig {
58
+ modelId: string;
59
+ temperature?: number;
60
+ maxTokens?: number;
61
+ prompt?: string;
62
+ }
63
+ export interface IGraphTypeMetadata {
64
+ type: string;
65
+ metadata: {
66
+ title: string;
67
+ description: string;
68
+ detailedDescription: string;
69
+ icon?: string;
70
+ recommendations?: string[];
71
+ tags?: string[];
72
+ category?: string;
73
+ };
74
+ schema: {
75
+ properties: Record<string, any>;
76
+ required: string[];
77
+ };
78
+ defaultSettings: any;
79
+ formFields?: any[];
80
+ }
81
+ export type IGraphMetadataRegistry = Record<string, IGraphTypeMetadata>;
82
+ export { StreamChannel } from "../shared-types";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamChannel = void 0;
4
+ var shared_types_1 = require("../shared-types");
5
+ Object.defineProperty(exports, "StreamChannel", { enumerable: true, get: function () { return shared_types_1.StreamChannel; } });
6
+ //# sourceMappingURL=graph-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-types.js","sourceRoot":"","sources":["../../src/types/graph-types.ts"],"names":[],"mappings":";;;AA6IA,gDAAgD;AAAvC,6GAAA,aAAa,OAAA"}
@@ -0,0 +1,18 @@
1
+ export declare function isError(error: unknown): error is Error;
2
+ export declare function getErrorMessage(error: unknown): string;
3
+ export declare function getErrorStack(error: unknown): string | undefined;
4
+ export declare function formatError(error: unknown): {
5
+ message: string;
6
+ stack?: string;
7
+ code?: string;
8
+ statusCode?: number;
9
+ details?: any;
10
+ };
11
+ export declare function formatErrorForProduction(error: unknown): {
12
+ message: string;
13
+ code?: string;
14
+ statusCode?: number;
15
+ };
16
+ export declare function logError(logger: {
17
+ error: (message: string, ...args: any[]) => void;
18
+ }, error: unknown, context: string, additionalData?: Record<string, any>): void;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isError = isError;
4
+ exports.getErrorMessage = getErrorMessage;
5
+ exports.getErrorStack = getErrorStack;
6
+ exports.formatError = formatError;
7
+ exports.formatErrorForProduction = formatErrorForProduction;
8
+ exports.logError = logError;
9
+ function isError(error) {
10
+ return error instanceof Error;
11
+ }
12
+ function getErrorMessage(error) {
13
+ if (error instanceof Error)
14
+ return error.message;
15
+ if (typeof error === "string")
16
+ return error;
17
+ if (typeof error === "object" && error !== null) {
18
+ if ("message" in error && typeof error.message === "string") {
19
+ return error.message;
20
+ }
21
+ return JSON.stringify(error);
22
+ }
23
+ return String(error);
24
+ }
25
+ function getErrorStack(error) {
26
+ if (error instanceof Error)
27
+ return error.stack;
28
+ if (typeof error === "object" && error !== null && "stack" in error) {
29
+ return String(error.stack);
30
+ }
31
+ return undefined;
32
+ }
33
+ function formatError(error) {
34
+ if (error instanceof Error) {
35
+ const formatted = {
36
+ message: error.message,
37
+ stack: error.stack,
38
+ };
39
+ if ("code" in error)
40
+ formatted.code = error.code;
41
+ if ("statusCode" in error)
42
+ formatted.statusCode = error.statusCode;
43
+ if ("response" in error)
44
+ formatted.details = error.response;
45
+ return formatted;
46
+ }
47
+ if (typeof error === "string") {
48
+ return { message: error };
49
+ }
50
+ if (typeof error === "object" && error !== null) {
51
+ const formatted = {
52
+ message: "message" in error && typeof error.message === "string"
53
+ ? error.message
54
+ : JSON.stringify(error),
55
+ };
56
+ if ("stack" in error)
57
+ formatted.stack = String(error.stack);
58
+ if ("code" in error)
59
+ formatted.code = String(error.code);
60
+ if ("statusCode" in error && typeof error.statusCode === "number") {
61
+ formatted.statusCode = error.statusCode;
62
+ }
63
+ return formatted;
64
+ }
65
+ return { message: String(error) };
66
+ }
67
+ function formatErrorForProduction(error) {
68
+ const formatted = formatError(error);
69
+ delete formatted.stack;
70
+ delete formatted.details;
71
+ return formatted;
72
+ }
73
+ function logError(logger, error, context, additionalData) {
74
+ const errorInfo = formatError(error);
75
+ logger.error(context, process.env.ENV === "prod"
76
+ ? Object.assign(Object.assign({}, formatErrorForProduction(error)), additionalData) : Object.assign(Object.assign({}, errorInfo), additionalData));
77
+ }
78
+ //# sourceMappingURL=error.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.utils.js","sourceRoot":"","sources":["../../src/utils/error.utils.ts"],"names":[],"mappings":";;AAQA,0BAEC;AAKD,0CAWC;AAKD,sCAMC;AAKD,kCA2CC;AAKD,4DAUC;AAMD,4BAcC;AAhHD,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC;AAKD,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAEhD,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAKD,SAAgB,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QACpE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAKD,SAAgB,WAAW,CAAC,KAAc;IAOxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAQ;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QAGF,IAAI,MAAM,IAAI,KAAK;YAAE,SAAS,CAAC,IAAI,GAAI,KAAa,CAAC,IAAI,CAAC;QAC1D,IAAI,YAAY,IAAI,KAAK;YAAE,SAAS,CAAC,UAAU,GAAI,KAAa,CAAC,UAAU,CAAC;QAC5E,IAAI,UAAU,IAAI,KAAK;YAAE,SAAS,CAAC,OAAO,GAAI,KAAa,CAAC,QAAQ,CAAC;QAErE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,SAAS,GAAQ;YACrB,OAAO,EACL,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACrD,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC;QAEF,IAAI,OAAO,IAAI,KAAK;YAAE,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,MAAM,IAAI,KAAK;YAAE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClE,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAC1C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACpC,CAAC;AAKD,SAAgB,wBAAwB,CAAC,KAAc;IAKrD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO,SAAS,CAAC,KAAK,CAAC;IACvB,OAAO,SAAS,CAAC,OAAO,CAAC;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,SAAgB,QAAQ,CACtB,MAA4D,EAC5D,KAAc,EACd,OAAe,EACf,cAAoC;IAEpC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,CAAC,KAAK,CACV,OAAO,EACP,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM;QACxB,CAAC,iCAAM,wBAAwB,CAAC,KAAK,CAAC,GAAK,cAAc,EACzD,CAAC,iCAAM,SAAS,GAAK,cAAc,CAAE,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare class GraphTypeUtils {
2
+ static parse(fullType: string): {
3
+ companyId: string;
4
+ name: string;
5
+ version?: string;
6
+ };
7
+ static build(companyId: string, name: string, version?: string): string;
8
+ static normalize(graphType: string): string;
9
+ static getBaseType(graphType: string): string;
10
+ static getVersion(graphType: string): string | undefined;
11
+ static isValidVersion(version: string): boolean;
12
+ static isSystemGraph(graphType: string): boolean;
13
+ static compareVersions(a: string, b: string): number;
14
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphTypeUtils = void 0;
4
+ class GraphTypeUtils {
5
+ static parse(fullType) {
6
+ if (fullType.includes("::")) {
7
+ const [baseType, version] = fullType.split("::");
8
+ const [companyId, name] = baseType.split(".");
9
+ return { companyId, name, version };
10
+ }
11
+ const parts = fullType.split(".");
12
+ if (parts.length === 1) {
13
+ return { companyId: "global", name: parts[0] };
14
+ }
15
+ return { companyId: parts[0], name: parts[1] };
16
+ }
17
+ static build(companyId, name, version) {
18
+ const base = `${companyId}.${name}`;
19
+ return version ? `${base}::${version}` : base;
20
+ }
21
+ static normalize(graphType) {
22
+ const { companyId, name, version } = this.parse(graphType);
23
+ return this.build(companyId, name, version);
24
+ }
25
+ static getBaseType(graphType) {
26
+ if (graphType.includes("::")) {
27
+ return graphType.split("::")[0];
28
+ }
29
+ const { companyId, name } = this.parse(graphType);
30
+ return `${companyId}.${name}`;
31
+ }
32
+ static getVersion(graphType) {
33
+ return graphType.includes("::") ? graphType.split("::")[1] : undefined;
34
+ }
35
+ static isValidVersion(version) {
36
+ const semverRegex = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?$/;
37
+ return semverRegex.test(version);
38
+ }
39
+ static isSystemGraph(graphType) {
40
+ const { companyId } = this.parse(graphType);
41
+ return companyId === "global";
42
+ }
43
+ static compareVersions(a, b) {
44
+ const parseVersion = (v) => {
45
+ const [main, prerelease] = v.split("-");
46
+ const [major, minor, patch] = main.split(".").map(Number);
47
+ return { major, minor, patch, prerelease };
48
+ };
49
+ const versionA = parseVersion(a);
50
+ const versionB = parseVersion(b);
51
+ if (versionA.major !== versionB.major) {
52
+ return versionA.major - versionB.major;
53
+ }
54
+ if (versionA.minor !== versionB.minor) {
55
+ return versionA.minor - versionB.minor;
56
+ }
57
+ if (versionA.patch !== versionB.patch) {
58
+ return versionA.patch - versionB.patch;
59
+ }
60
+ if (versionA.prerelease && !versionB.prerelease)
61
+ return -1;
62
+ if (!versionA.prerelease && versionB.prerelease)
63
+ return 1;
64
+ if (versionA.prerelease && versionB.prerelease) {
65
+ return versionA.prerelease.localeCompare(versionB.prerelease);
66
+ }
67
+ return 0;
68
+ }
69
+ }
70
+ exports.GraphTypeUtils = GraphTypeUtils;
71
+ //# sourceMappingURL=graph-type.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-type.utils.js","sourceRoot":"","sources":["../../src/utils/graph-type.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./graph-type.utils";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./graph-type.utils"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,qDAAmC"}
@@ -0,0 +1,23 @@
1
+ export declare class UsageRecorder {
2
+ private modelCalls;
3
+ recordModelExecution(record: {
4
+ modelId: string;
5
+ promptTokens: number;
6
+ completionTokens: number;
7
+ totalTokens?: number;
8
+ [key: string]: any;
9
+ }): void;
10
+ getRecords(): {
11
+ modelCalls: Array<{
12
+ modelId: string;
13
+ promptTokens: number;
14
+ completionTokens: number;
15
+ totalTokens: number;
16
+ timestamp: string;
17
+ [key: string]: any;
18
+ }>;
19
+ };
20
+ clear(): void;
21
+ getTotalTokens(): number;
22
+ getTotalCalls(): number;
23
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UsageRecorder = void 0;
4
+ class UsageRecorder {
5
+ constructor() {
6
+ this.modelCalls = [];
7
+ }
8
+ recordModelExecution(record) {
9
+ var _a;
10
+ const totalTokens = (_a = record.totalTokens) !== null && _a !== void 0 ? _a : record.promptTokens + record.completionTokens;
11
+ this.modelCalls.push(Object.assign(Object.assign({}, record), { totalTokens, timestamp: new Date().toISOString() }));
12
+ }
13
+ getRecords() {
14
+ return {
15
+ modelCalls: [...this.modelCalls],
16
+ };
17
+ }
18
+ clear() {
19
+ this.modelCalls = [];
20
+ }
21
+ getTotalTokens() {
22
+ return this.modelCalls.reduce((sum, call) => sum + call.totalTokens, 0);
23
+ }
24
+ getTotalCalls() {
25
+ return this.modelCalls.length;
26
+ }
27
+ }
28
+ exports.UsageRecorder = UsageRecorder;
29
+ //# sourceMappingURL=usage-recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-recorder.js","sourceRoot":"","sources":["../../src/utils/usage-recorder.ts"],"names":[],"mappings":";;;AAGA,MAAa,aAAa;IAA1B;QACU,eAAU,GAOb,EAAE,CAAC;IA4CV,CAAC;IA1CC,oBAAoB,CAAC,MAMpB;;QACC,MAAM,WAAW,GACf,MAAA,MAAM,CAAC,WAAW,mCAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,IAAI,iCACf,MAAM,KACT,WAAW,EACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IACnC,CAAC;IACL,CAAC;IAED,UAAU;QAUR,OAAO;YACL,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;SACjC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AApDD,sCAoDC"}
@@ -0,0 +1,2 @@
1
+ export * from "./versioned-graph.service";
2
+ export * from "./versioning.types";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./versioned-graph.service"), exports);
18
+ __exportStar(require("./versioning.types"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/versioning/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,4DAA0C;AAC1C,qDAAmC"}
@@ -0,0 +1,16 @@
1
+ import { ModuleRef } from "@nestjs/core";
2
+ import { AbstractGraphBuilder } from "../core/abstract-graph.builder";
3
+ import { VersioningConfig, VersionResolution, VersionResolutionOptions } from "./versioning.types";
4
+ export declare class VersionedGraphService {
5
+ private readonly logger;
6
+ private readonly versionConfigs;
7
+ constructor();
8
+ registerVersioning(config: VersioningConfig): void;
9
+ resolveVersion(graphType: string, options?: VersionResolutionOptions): Promise<VersionResolution>;
10
+ createVersionedBuilder(graphType: string, moduleRef?: ModuleRef, options?: VersionResolutionOptions): Promise<AbstractGraphBuilder<any>>;
11
+ getAvailableVersions(baseGraphType: string): string[];
12
+ isVersionSupported(graphType: string, options?: VersionResolutionOptions): boolean;
13
+ private findBestVersionRoute;
14
+ private isVersionCompatible;
15
+ getVersioningInfo(baseGraphType: string): VersioningConfig | null;
16
+ }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var VersionedGraphService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.VersionedGraphService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const graph_type_utils_1 = require("../utils/graph-type.utils");
16
+ let VersionedGraphService = VersionedGraphService_1 = class VersionedGraphService {
17
+ constructor() {
18
+ this.logger = new common_1.Logger(VersionedGraphService_1.name);
19
+ this.versionConfigs = new Map();
20
+ }
21
+ registerVersioning(config) {
22
+ this.versionConfigs.set(config.baseGraphType, config);
23
+ this.logger.log(`Registered versioning for ${config.baseGraphType} with ${config.versions.length} versions`);
24
+ }
25
+ async resolveVersion(graphType, options = {}) {
26
+ const parsed = graph_type_utils_1.GraphTypeUtils.parse(graphType);
27
+ const baseType = graph_type_utils_1.GraphTypeUtils.getBaseType(graphType);
28
+ const requestedVersion = graph_type_utils_1.GraphTypeUtils.getVersion(graphType) || options.requestedVersion;
29
+ const config = this.versionConfigs.get(baseType);
30
+ if (!config) {
31
+ throw new Error(`No versioning configuration found for ${baseType}`);
32
+ }
33
+ const route = this.findBestVersionRoute(config, requestedVersion, options);
34
+ if (!route) {
35
+ throw new Error(`No compatible version found for ${graphType} with options: ${JSON.stringify(options)}`);
36
+ }
37
+ const fullGraphType = graph_type_utils_1.GraphTypeUtils.build(parsed.companyId, parsed.name, route.version);
38
+ return {
39
+ version: route.version,
40
+ builderClass: route.builderClass,
41
+ fullGraphType,
42
+ };
43
+ }
44
+ async createVersionedBuilder(graphType, moduleRef, options = {}) {
45
+ const resolution = await this.resolveVersion(graphType, options);
46
+ try {
47
+ if (!moduleRef) {
48
+ throw new Error("ModuleRef is not available - falling back to direct instantiation");
49
+ }
50
+ const builder = await moduleRef.create(resolution.builderClass);
51
+ this.logger.debug(`Created versioned builder for ${resolution.fullGraphType}`);
52
+ return builder;
53
+ }
54
+ catch (error) {
55
+ this.logger.error(`Failed to create builder for ${resolution.fullGraphType}: ${error.message}`);
56
+ throw new Error(`Failed to create versioned builder: ${error.message}`);
57
+ }
58
+ }
59
+ getAvailableVersions(baseGraphType) {
60
+ const config = this.versionConfigs.get(baseGraphType);
61
+ if (!config) {
62
+ return [];
63
+ }
64
+ return config.versions
65
+ .map(route => route.version)
66
+ .sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b, a));
67
+ }
68
+ isVersionSupported(graphType, options = {}) {
69
+ try {
70
+ const baseType = graph_type_utils_1.GraphTypeUtils.getBaseType(graphType);
71
+ const requestedVersion = graph_type_utils_1.GraphTypeUtils.getVersion(graphType);
72
+ const config = this.versionConfigs.get(baseType);
73
+ if (!config) {
74
+ return false;
75
+ }
76
+ const route = this.findBestVersionRoute(config, requestedVersion, options);
77
+ return route !== null;
78
+ }
79
+ catch (_a) {
80
+ return false;
81
+ }
82
+ }
83
+ findBestVersionRoute(config, requestedVersion, options = {}) {
84
+ const { strict = false } = options;
85
+ let candidates = [...config.versions];
86
+ if (requestedVersion) {
87
+ const exactMatch = candidates.find(route => route.version === requestedVersion);
88
+ if (exactMatch) {
89
+ return exactMatch;
90
+ }
91
+ if (strict) {
92
+ return null;
93
+ }
94
+ const compatibleVersions = candidates.filter(route => this.isVersionCompatible(requestedVersion, route.version));
95
+ if (compatibleVersions.length > 0) {
96
+ return compatibleVersions.sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b.version, a.version))[0];
97
+ }
98
+ }
99
+ const defaultRoute = candidates.find(route => route.isDefault);
100
+ if (defaultRoute) {
101
+ return defaultRoute;
102
+ }
103
+ if (config.defaultVersionStrategy === "latest" ||
104
+ !config.defaultVersionStrategy) {
105
+ const sortedVersions = candidates.sort((a, b) => graph_type_utils_1.GraphTypeUtils.compareVersions(b.version, a.version));
106
+ return sortedVersions[0] || null;
107
+ }
108
+ return null;
109
+ }
110
+ isVersionCompatible(requested, available) {
111
+ try {
112
+ const requestedParts = requested.split(".").map(Number);
113
+ const availableParts = available.split(".").map(Number);
114
+ if (requestedParts[0] !== availableParts[0]) {
115
+ return false;
116
+ }
117
+ return graph_type_utils_1.GraphTypeUtils.compareVersions(available, requested) >= 0;
118
+ }
119
+ catch (_a) {
120
+ return false;
121
+ }
122
+ }
123
+ getVersioningInfo(baseGraphType) {
124
+ return this.versionConfigs.get(baseGraphType) || null;
125
+ }
126
+ };
127
+ exports.VersionedGraphService = VersionedGraphService;
128
+ exports.VersionedGraphService = VersionedGraphService = VersionedGraphService_1 = __decorate([
129
+ (0, common_1.Injectable)(),
130
+ __metadata("design:paramtypes", [])
131
+ ], VersionedGraphService);
132
+ //# sourceMappingURL=versioned-graph.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioned-graph.service.js","sourceRoot":"","sources":["../../src/versioning/versioned-graph.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Type } from "@nestjs/common";
2
+ import { AbstractGraphBuilder } from "../core/abstract-graph.builder";
3
+ export interface VersionRoute {
4
+ version: string;
5
+ builderClass: Type<AbstractGraphBuilder<any>>;
6
+ isDefault?: boolean;
7
+ }
8
+ export interface VersioningConfig {
9
+ baseGraphType: string;
10
+ versions: VersionRoute[];
11
+ defaultVersionStrategy?: "latest" | "explicit";
12
+ }
13
+ export interface VersionResolution {
14
+ version: string;
15
+ builderClass: Type<AbstractGraphBuilder<any>>;
16
+ fullGraphType: string;
17
+ }
18
+ export interface VersionResolutionOptions {
19
+ requestedVersion?: string;
20
+ strict?: boolean;
21
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=versioning.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioning.types.js","sourceRoot":"","sources":["../../src/versioning/versioning.types.ts"],"names":[],"mappings":""}