flowquery 1.0.6 → 1.0.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 (49) hide show
  1. package/README.md +30 -138
  2. package/dist/compute/runner.d.ts +1 -22
  3. package/dist/compute/runner.d.ts.map +1 -1
  4. package/dist/compute/runner.js.map +1 -1
  5. package/dist/extensibility.d.ts +28 -2
  6. package/dist/extensibility.d.ts.map +1 -1
  7. package/dist/extensibility.js +39 -15
  8. package/dist/extensibility.js.map +1 -1
  9. package/dist/flowquery.min.js +1 -1
  10. package/dist/index.browser.d.ts.map +1 -1
  11. package/dist/index.browser.js +0 -80
  12. package/dist/index.browser.js.map +1 -1
  13. package/dist/index.node.d.ts +3 -3
  14. package/dist/index.node.d.ts.map +1 -1
  15. package/dist/index.node.js +0 -80
  16. package/dist/index.node.js.map +1 -1
  17. package/dist/parsing/functions/function_factory.d.ts +3 -80
  18. package/dist/parsing/functions/function_factory.d.ts.map +1 -1
  19. package/dist/parsing/functions/function_factory.js +8 -127
  20. package/dist/parsing/functions/function_factory.js.map +1 -1
  21. package/dist/parsing/functions/function_metadata.d.ts +32 -22
  22. package/dist/parsing/functions/function_metadata.d.ts.map +1 -1
  23. package/dist/parsing/functions/function_metadata.js +53 -1
  24. package/dist/parsing/functions/function_metadata.js.map +1 -1
  25. package/docs/flowquery.min.js +1 -1
  26. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
  27. package/misc/apps/RAG/package.json +1 -1
  28. package/misc/apps/RAG/src/plugins/index.ts +29 -33
  29. package/misc/apps/RAG/src/plugins/loaders/CatFacts.ts +28 -32
  30. package/misc/apps/RAG/src/plugins/loaders/FetchJson.ts +29 -33
  31. package/misc/apps/RAG/src/plugins/loaders/Llm.ts +55 -59
  32. package/misc/apps/RAG/src/plugins/loaders/MockData.ts +61 -71
  33. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +8 -8
  34. package/package.json +1 -1
  35. package/src/compute/runner.ts +1 -26
  36. package/src/extensibility.ts +38 -2
  37. package/src/index.browser.ts +2 -88
  38. package/src/index.node.ts +3 -92
  39. package/src/parsing/functions/function_factory.ts +13 -154
  40. package/src/parsing/functions/function_metadata.ts +68 -25
  41. package/tests/extensibility.test.ts +563 -0
  42. package/dist/parsing/functions/extensibility/index.d.ts +0 -37
  43. package/dist/parsing/functions/extensibility/index.d.ts.map +0 -1
  44. package/dist/parsing/functions/extensibility/index.js +0 -50
  45. package/dist/parsing/functions/extensibility/index.js.map +0 -1
  46. package/misc/apps/RAG/src/plugins/PluginRegistry.ts +0 -136
  47. package/misc/apps/RAG/src/plugins/types.ts +0 -52
  48. package/src/parsing/functions/extensibility/index.ts +0 -54
  49. package/tests/parsing/function_plugins.test.ts +0 -369
@@ -17,86 +17,6 @@ const function_factory_1 = __importDefault(require("./parsing/functions/function
17
17
  exports.FunctionFactory = function_factory_1.default;
18
18
  const function_1 = __importDefault(require("./parsing/functions/function"));
19
19
  exports.Function = function_1.default;
20
- /**
21
- * Register a synchronous plugin function.
22
- *
23
- * @param name - The function name
24
- * @param factoryOrOptions - Factory function or options object with metadata
25
- *
26
- * @example
27
- * ```javascript
28
- * // Simple registration
29
- * FlowQuery.registerFunction("uppercase", () => new MyUpperCaseFunction());
30
- *
31
- * // Registration with metadata for LLM consumption
32
- * FlowQuery.registerFunction("uppercase", {
33
- * factory: () => new MyUpperCaseFunction(),
34
- * metadata: {
35
- * name: "uppercase",
36
- * description: "Converts a string to uppercase",
37
- * category: "string",
38
- * parameters: [{ name: "text", description: "String to convert", type: "string" }],
39
- * output: { description: "Uppercase string", type: "string" },
40
- * examples: ["WITH 'hello' AS s RETURN uppercase(s)"]
41
- * }
42
- * });
43
- * ```
44
- */
45
- runner_1.default.registerFunction = function (name, factoryOrOptions) {
46
- function_factory_1.default.register(name, factoryOrOptions);
47
- };
48
- /**
49
- * Unregister a synchronous plugin function.
50
- *
51
- * @param name - The function name
52
- */
53
- runner_1.default.unregisterFunction = function (name) {
54
- function_factory_1.default.unregister(name);
55
- };
56
- /**
57
- * Register an async data provider function for use in LOAD operations.
58
- *
59
- * @param name - The function name
60
- * @param providerOrOptions - Async provider or options object with metadata
61
- *
62
- * @example
63
- * ```javascript
64
- * // Registration with metadata for LLM consumption
65
- * FlowQuery.registerAsyncProvider("fetchUsers", {
66
- * provider: async function* (endpoint) {
67
- * const response = await fetch(endpoint);
68
- * const data = await response.json();
69
- * for (const item of data) yield item;
70
- * },
71
- * metadata: {
72
- * name: "fetchUsers",
73
- * description: "Fetches user data from an API",
74
- * category: "data",
75
- * parameters: [{ name: "endpoint", description: "API URL", type: "string" }],
76
- * output: {
77
- * description: "User object",
78
- * type: "object",
79
- * properties: {
80
- * id: { description: "User ID", type: "number" },
81
- * name: { description: "User name", type: "string" }
82
- * }
83
- * },
84
- * examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
85
- * }
86
- * });
87
- * ```
88
- */
89
- runner_1.default.registerAsyncProvider = function (name, providerOrOptions) {
90
- function_factory_1.default.registerAsyncProvider(name, providerOrOptions);
91
- };
92
- /**
93
- * Unregister an async data provider function.
94
- *
95
- * @param name - The function name
96
- */
97
- runner_1.default.unregisterAsyncProvider = function (name) {
98
- function_factory_1.default.unregisterAsyncProvider(name);
99
- };
100
20
  /**
101
21
  * List all registered functions with their metadata.
102
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAsD;AA0HlD,0FA1He,gBAAS,OA0Hf;AAzHb,4FAA2G;AA2HvG,0BA3HG,0BAAe,CA2HH;AAnHnB,4EAAoD;AAkHhD,mBAlHG,kBAAQ,CAkHH;AAhHZ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,gBAAS,CAAC,gBAAgB,GAAG,UAAS,IAAY,EAAE,gBAA2D;IAC3G,0BAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF;;;;GAIG;AACH,gBAAS,CAAC,kBAAkB,GAAG,UAAS,IAAY;IAChD,0BAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,gBAAS,CAAC,qBAAqB,GAAG,UAAS,IAAY,EAAE,iBAAmE;IACxH,0BAAe,CAAC,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF;;;;GAIG;AACH,gBAAS,CAAC,uBAAuB,GAAG,UAAS,IAAY;IACrD,0BAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,gBAAS,CAAC,aAAa,GAAG,UAAS,OAAwE;IACvG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,gBAAS,CAAC,mBAAmB,GAAG,UAAS,IAAY;IACjD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,gBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,gBAAS,CAAC"}
1
+ {"version":3,"file":"index.node.js","sourceRoot":"","sources":["../src/index.node.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,8DAAsD;AAoClD,0FApCe,gBAAS,OAoCf;AAnCb,4FAA0F;AAqCtF,0BArCG,0BAAe,CAqCH;AA/BnB,4EAAoD;AA8BhD,mBA9BG,kBAAQ,CA8BH;AA5BZ;;;;;GAKG;AACH,gBAAS,CAAC,aAAa,GAAG,UAAS,OAAwE;IACvG,OAAO,0BAAe,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,gBAAS,CAAC,mBAAmB,GAAG,UAAS,IAAY;IACjD,OAAO,0BAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;GAEG;AACH,gBAAS,CAAC,QAAQ,GAAG,kBAAQ,CAAC;AAE9B,kBAAe,gBAAS,CAAC"}
@@ -14,19 +14,12 @@ import "./stringify";
14
14
  import "./size";
15
15
  import "./functions";
16
16
  import "./predicate_sum";
17
- import { FunctionMetadata, RegisterFunctionOptions, RegisterAsyncProviderOptions } from "./function_metadata";
18
- /**
19
- * Type for synchronous function factories.
20
- */
21
- export type FunctionCreator = () => Function;
22
- /**
23
- * Type for async data provider functions used in LOAD operations.
24
- * These functions can yield data asynchronously.
25
- */
26
- export type AsyncDataProvider = (...args: any[]) => AsyncGenerator<any, void, unknown> | Promise<any>;
17
+ import { FunctionMetadata, AsyncDataProvider } from "./function_metadata";
18
+ export { AsyncDataProvider };
27
19
  /**
28
20
  * Factory for creating function instances by name.
29
21
  *
22
+ * All functions are registered via the @FunctionDef decorator.
30
23
  * Maps function names (case-insensitive) to their corresponding implementation classes.
31
24
  * Supports built-in functions like sum, avg, collect, range, split, join, etc.
32
25
  *
@@ -37,74 +30,6 @@ export type AsyncDataProvider = (...args: any[]) => AsyncGenerator<any, void, un
37
30
  * ```
38
31
  */
39
32
  declare class FunctionFactory {
40
- /**
41
- * Registry for plugin functions (synchronous).
42
- */
43
- private static plugins;
44
- /**
45
- * Registry for async data provider functions used in LOAD operations.
46
- */
47
- private static asyncProviders;
48
- /**
49
- * Registry for function metadata (both sync and async).
50
- */
51
- private static metadata;
52
- /**
53
- * Registers a synchronous plugin function.
54
- *
55
- * @param name - The function name (will be lowercased)
56
- * @param factoryOrOptions - Factory function or options object with metadata
57
- */
58
- static register(name: string, factoryOrOptions: FunctionCreator | RegisterFunctionOptions): void;
59
- /**
60
- * Unregisters a synchronous plugin function.
61
- *
62
- * @param name - The function name to unregister
63
- */
64
- static unregister(name: string): void;
65
- /**
66
- * Registers an async data provider function for use in LOAD operations.
67
- *
68
- * @param name - The function name (will be lowercased)
69
- * @param providerOrOptions - Async provider or options object with metadata
70
- *
71
- * @example
72
- * ```typescript
73
- * // Register with metadata for LLM consumption
74
- * FunctionFactory.registerAsyncProvider("fetchUsers", {
75
- * provider: async function* (endpoint: string) {
76
- * const response = await fetch(endpoint);
77
- * const data = await response.json();
78
- * for (const item of data) {
79
- * yield item;
80
- * }
81
- * },
82
- * metadata: {
83
- * name: "fetchUsers",
84
- * description: "Fetches user data from an API endpoint",
85
- * parameters: [
86
- * { name: "endpoint", description: "API endpoint URL", type: "string" }
87
- * ],
88
- * output: {
89
- * description: "User objects",
90
- * type: "object",
91
- * properties: {
92
- * id: { description: "User ID", type: "number" },
93
- * name: { description: "User name", type: "string" }
94
- * }
95
- * },
96
- * examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
97
- * }
98
- * });
99
- * ```
100
- */
101
- static registerAsyncProvider(name: string, providerOrOptions: AsyncDataProvider | RegisterAsyncProviderOptions): void;
102
- /**
103
- * Unregisters an async data provider function.
104
- *
105
- * @param name - The function name to unregister
106
- */
107
- static unregisterAsyncProvider(name: string): void;
108
33
  /**
109
34
  * Gets an async data provider by name.
110
35
  *
@@ -128,14 +53,12 @@ declare class FunctionFactory {
128
53
  static getMetadata(name: string): FunctionMetadata | undefined;
129
54
  /**
130
55
  * Lists all registered functions with their metadata.
131
- * Includes both built-in and plugin functions.
132
56
  *
133
57
  * @param options - Optional filter options
134
58
  * @returns Array of function metadata
135
59
  */
136
60
  static listFunctions(options?: {
137
61
  category?: string;
138
- includeBuiltins?: boolean;
139
62
  asyncOnly?: boolean;
140
63
  syncOnly?: boolean;
141
64
  }): FunctionMetadata[];
@@ -1 +1 @@
1
- {"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,OAAO,CAAC;AACf,OAAO,WAAW,CAAC;AACnB,OAAO,OAAO,CAAC;AACf,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,EACH,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAI/B,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAEtG;;;;;;;;;;;GAWG;AACH,cAAM,eAAe;IACjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO,CAA2C;IAEjE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc,CAA6C;IAE1E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4C;IAEnE;;;;;OAKG;WACW,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,GAAG,uBAAuB,GAAG,IAAI;IAcvG;;;;OAIG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;WACW,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,4BAA4B,GAAG,IAAI;IAc5H;;;;OAIG;WACW,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzD;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3E;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAUrE;;;;;;OAMG;WACW,aAAa,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,gBAAgB,EAAE;IAwBtB;;;;OAIG;WACW,iBAAiB,IAAI,MAAM,EAAE;IAO3C;;;;OAIG;WACW,MAAM,IAAI;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAM/E;;;;;OAKG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAkB5C;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAYjE;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"function_factory.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AAErD,OAAO,OAAO,CAAC;AACf,OAAO,WAAW,CAAC;AACnB,OAAO,OAAO,CAAC;AACf,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,SAAS,CAAC;AACjB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,QAAQ,CAAC;AAChB,OAAO,aAAa,CAAC;AACrB,OAAO,iBAAiB,CAAC;AACzB,OAAO,EACH,gBAAgB,EAKhB,iBAAiB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,cAAM,eAAe;IACjB;;;;;OAKG;WACW,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3E;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;OAKG;WACW,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIrE;;;;;OAKG;WACW,aAAa,CAAC,OAAO,CAAC,EAAE;QAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,gBAAgB,EAAE;IAatB;;;;OAIG;WACW,iBAAiB,IAAI,MAAM,EAAE;IAI3C;;;;OAIG;WACW,MAAM,IAAI;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAM/E;;;;;OAKG;WACW,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;IAa5C;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;CAYjE;AAED,eAAe,eAAe,CAAC"}
@@ -24,6 +24,7 @@ const function_metadata_1 = require("./function_metadata");
24
24
  /**
25
25
  * Factory for creating function instances by name.
26
26
  *
27
+ * All functions are registered via the @FunctionDef decorator.
27
28
  * Maps function names (case-insensitive) to their corresponding implementation classes.
28
29
  * Supports built-in functions like sum, avg, collect, range, split, join, etc.
29
30
  *
@@ -34,88 +35,6 @@ const function_metadata_1 = require("./function_metadata");
34
35
  * ```
35
36
  */
36
37
  class FunctionFactory {
37
- /**
38
- * Registers a synchronous plugin function.
39
- *
40
- * @param name - The function name (will be lowercased)
41
- * @param factoryOrOptions - Factory function or options object with metadata
42
- */
43
- static register(name, factoryOrOptions) {
44
- const lowerName = name.toLowerCase();
45
- if (typeof factoryOrOptions === 'function') {
46
- FunctionFactory.plugins.set(lowerName, factoryOrOptions);
47
- }
48
- else {
49
- FunctionFactory.plugins.set(lowerName, factoryOrOptions.factory);
50
- FunctionFactory.metadata.set(lowerName, Object.assign(Object.assign({}, factoryOrOptions.metadata), { name: lowerName, isAsyncProvider: false }));
51
- }
52
- }
53
- /**
54
- * Unregisters a synchronous plugin function.
55
- *
56
- * @param name - The function name to unregister
57
- */
58
- static unregister(name) {
59
- const lowerName = name.toLowerCase();
60
- FunctionFactory.plugins.delete(lowerName);
61
- FunctionFactory.metadata.delete(lowerName);
62
- }
63
- /**
64
- * Registers an async data provider function for use in LOAD operations.
65
- *
66
- * @param name - The function name (will be lowercased)
67
- * @param providerOrOptions - Async provider or options object with metadata
68
- *
69
- * @example
70
- * ```typescript
71
- * // Register with metadata for LLM consumption
72
- * FunctionFactory.registerAsyncProvider("fetchUsers", {
73
- * provider: async function* (endpoint: string) {
74
- * const response = await fetch(endpoint);
75
- * const data = await response.json();
76
- * for (const item of data) {
77
- * yield item;
78
- * }
79
- * },
80
- * metadata: {
81
- * name: "fetchUsers",
82
- * description: "Fetches user data from an API endpoint",
83
- * parameters: [
84
- * { name: "endpoint", description: "API endpoint URL", type: "string" }
85
- * ],
86
- * output: {
87
- * description: "User objects",
88
- * type: "object",
89
- * properties: {
90
- * id: { description: "User ID", type: "number" },
91
- * name: { description: "User name", type: "string" }
92
- * }
93
- * },
94
- * examples: ["LOAD JSON FROM fetchUsers('https://api.example.com/users') AS user"]
95
- * }
96
- * });
97
- * ```
98
- */
99
- static registerAsyncProvider(name, providerOrOptions) {
100
- const lowerName = name.toLowerCase();
101
- if (typeof providerOrOptions === 'function') {
102
- FunctionFactory.asyncProviders.set(lowerName, providerOrOptions);
103
- }
104
- else {
105
- FunctionFactory.asyncProviders.set(lowerName, providerOrOptions.provider);
106
- FunctionFactory.metadata.set(lowerName, Object.assign(Object.assign({}, providerOrOptions.metadata), { name: lowerName, isAsyncProvider: true }));
107
- }
108
- }
109
- /**
110
- * Unregisters an async data provider function.
111
- *
112
- * @param name - The function name to unregister
113
- */
114
- static unregisterAsyncProvider(name) {
115
- const lowerName = name.toLowerCase();
116
- FunctionFactory.asyncProviders.delete(lowerName);
117
- FunctionFactory.metadata.delete(lowerName);
118
- }
119
38
  /**
120
39
  * Gets an async data provider by name.
121
40
  *
@@ -123,7 +42,7 @@ class FunctionFactory {
123
42
  * @returns The async data provider, or undefined if not found
124
43
  */
125
44
  static getAsyncProvider(name) {
126
- return FunctionFactory.asyncProviders.get(name.toLowerCase());
45
+ return (0, function_metadata_1.getRegisteredAsyncProvider)(name.toLowerCase());
127
46
  }
128
47
  /**
129
48
  * Checks if a function name is registered as an async data provider.
@@ -132,7 +51,7 @@ class FunctionFactory {
132
51
  * @returns True if the function is an async data provider
133
52
  */
134
53
  static isAsyncProvider(name) {
135
- return FunctionFactory.asyncProviders.has(name.toLowerCase());
54
+ return (0, function_metadata_1.getRegisteredAsyncProvider)(name.toLowerCase()) !== undefined;
136
55
  }
137
56
  /**
138
57
  * Gets metadata for a specific function.
@@ -141,41 +60,22 @@ class FunctionFactory {
141
60
  * @returns The function metadata, or undefined if not found
142
61
  */
143
62
  static getMetadata(name) {
144
- const lowerName = name.toLowerCase();
145
- // Check plugin metadata first
146
- if (FunctionFactory.metadata.has(lowerName)) {
147
- return FunctionFactory.metadata.get(lowerName);
148
- }
149
- // Fall back to decorator-registered metadata
150
- return (0, function_metadata_1.getFunctionMetadata)(lowerName);
63
+ return (0, function_metadata_1.getFunctionMetadata)(name.toLowerCase());
151
64
  }
152
65
  /**
153
66
  * Lists all registered functions with their metadata.
154
- * Includes both built-in and plugin functions.
155
67
  *
156
68
  * @param options - Optional filter options
157
69
  * @returns Array of function metadata
158
70
  */
159
71
  static listFunctions(options) {
160
72
  const result = [];
161
- const includeBuiltins = (options === null || options === void 0 ? void 0 : options.includeBuiltins) !== false;
162
- // Add decorator-registered functions (built-ins)
163
- if (includeBuiltins) {
164
- for (const meta of (0, function_metadata_1.getRegisteredFunctionMetadata)()) {
165
- if ((options === null || options === void 0 ? void 0 : options.category) && meta.category !== options.category)
166
- continue;
167
- if (options === null || options === void 0 ? void 0 : options.asyncOnly)
168
- continue; // Built-ins are sync
169
- result.push(meta);
170
- }
171
- }
172
- // Add plugin functions
173
- for (const [name, meta] of FunctionFactory.metadata) {
73
+ for (const meta of (0, function_metadata_1.getRegisteredFunctionMetadata)()) {
174
74
  if ((options === null || options === void 0 ? void 0 : options.category) && meta.category !== options.category)
175
75
  continue;
176
- if ((options === null || options === void 0 ? void 0 : options.asyncOnly) && !meta.isAsyncProvider)
76
+ if ((options === null || options === void 0 ? void 0 : options.asyncOnly) && meta.category !== 'async')
177
77
  continue;
178
- if ((options === null || options === void 0 ? void 0 : options.syncOnly) && meta.isAsyncProvider)
78
+ if ((options === null || options === void 0 ? void 0 : options.syncOnly) && meta.category === 'async')
179
79
  continue;
180
80
  result.push(meta);
181
81
  }
@@ -187,10 +87,7 @@ class FunctionFactory {
187
87
  * @returns Array of function names
188
88
  */
189
89
  static listFunctionNames() {
190
- const builtinNames = (0, function_metadata_1.getRegisteredFunctionMetadata)().map(m => m.name);
191
- const pluginNames = Array.from(FunctionFactory.plugins.keys());
192
- const asyncNames = Array.from(FunctionFactory.asyncProviders.keys());
193
- return [...new Set([...builtinNames, ...pluginNames, ...asyncNames])];
90
+ return (0, function_metadata_1.getRegisteredFunctionMetadata)().map(m => m.name);
194
91
  }
195
92
  /**
196
93
  * Gets all function metadata as a JSON-serializable object for LLM consumption.
@@ -210,10 +107,6 @@ class FunctionFactory {
210
107
  */
211
108
  static create(name) {
212
109
  const lowerName = name.toLowerCase();
213
- // Check plugin registry first (allows overriding built-ins)
214
- if (FunctionFactory.plugins.has(lowerName)) {
215
- return FunctionFactory.plugins.get(lowerName)();
216
- }
217
110
  // Check decorator-registered functions (built-ins use @FunctionDef)
218
111
  const decoratorFactory = (0, function_metadata_1.getRegisteredFunctionFactory)(lowerName);
219
112
  if (decoratorFactory) {
@@ -240,17 +133,5 @@ class FunctionFactory {
240
133
  return new predicate_function_1.default(name);
241
134
  }
242
135
  }
243
- /**
244
- * Registry for plugin functions (synchronous).
245
- */
246
- FunctionFactory.plugins = new Map();
247
- /**
248
- * Registry for async data provider functions used in LOAD operations.
249
- */
250
- FunctionFactory.asyncProviders = new Map();
251
- /**
252
- * Registry for function metadata (both sync and async).
253
- */
254
- FunctionFactory.metadata = new Map();
255
136
  exports.default = FunctionFactory;
256
137
  //# sourceMappingURL=function_factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function_factory.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_factory.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Core categories: scalar, aggregate, predicate, async
4
4
  * Additional categories for organization: string, math, data, etc.
5
5
  */
6
- export type FunctionCategory = "scalar" | "aggregate" | "predicate" | "async" | "string" | "math" | "data" | "introspection" | string;
6
+ export type FunctionCategory = "scalar" | "aggregate" | "predicate" | "async" | string;
7
7
  /**
8
8
  * Schema definition for function arguments and outputs.
9
9
  * Compatible with JSON Schema for LLM consumption.
@@ -51,8 +51,8 @@ export interface FunctionMetadata {
51
51
  name: string;
52
52
  /** Human-readable description of what the function does */
53
53
  description: string;
54
- /** Category for grouping functions */
55
- category?: FunctionCategory;
54
+ /** Category that determines function type and behavior */
55
+ category: FunctionCategory;
56
56
  /** Array of parameter schemas */
57
57
  parameters: ParameterSchema[];
58
58
  /** Output schema */
@@ -61,40 +61,30 @@ export interface FunctionMetadata {
61
61
  examples?: string[];
62
62
  /** Additional notes or caveats */
63
63
  notes?: string;
64
- /** Whether this is an async data provider (for LOAD operations) */
65
- isAsyncProvider?: boolean;
66
64
  }
67
65
  /**
68
- * Options for registering a sync function with metadata.
66
+ * Type for async data provider functions used in LOAD operations.
69
67
  */
70
- export interface RegisterFunctionOptions {
71
- /** Factory function that creates the Function instance */
72
- factory: () => any;
73
- /** Function metadata for documentation */
74
- metadata: FunctionMetadata;
75
- }
76
- /**
77
- * Options for registering an async data provider with metadata.
78
- */
79
- export interface RegisterAsyncProviderOptions {
80
- /** Async generator or function that returns data */
81
- provider: (...args: any[]) => AsyncGenerator<any, void, unknown> | Promise<any>;
82
- /** Function metadata for documentation */
83
- metadata: FunctionMetadata;
84
- }
68
+ export type AsyncDataProvider = (...args: any[]) => AsyncGenerator<any, void, unknown> | Promise<any>;
85
69
  /**
86
70
  * Decorator options - metadata without the name (derived from class).
87
71
  */
88
72
  export type FunctionDefOptions = Omit<FunctionMetadata, 'name'>;
89
73
  /**
90
74
  * Class decorator that registers function metadata.
91
- * The function name is derived from the class's constructor call to super().
75
+ * The function name is derived from the class's constructor call to super() for regular functions,
76
+ * or from the class name for async providers.
77
+ *
78
+ * For async providers (category: "async"), the class must have a `fetch` method that returns
79
+ * an AsyncGenerator. The function name is derived from the class name (removing 'Loader' suffix
80
+ * if present) and converted to camelCase.
92
81
  *
93
82
  * @param options - Function metadata (excluding name)
94
83
  * @returns Class decorator
95
84
  *
96
85
  * @example
97
86
  * ```typescript
87
+ * // Regular function
98
88
  * @FunctionDef({
99
89
  * description: "Calculates the sum of numeric values",
100
90
  * category: "aggregate",
@@ -103,6 +93,18 @@ export type FunctionDefOptions = Omit<FunctionMetadata, 'name'>;
103
93
  * examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
104
94
  * })
105
95
  * class Sum extends AggregateFunction { ... }
96
+ *
97
+ * // Async data provider
98
+ * @FunctionDef({
99
+ * description: "Fetches random cat facts from the Cat Facts API",
100
+ * category: "async",
101
+ * parameters: [{ name: "count", description: "Number of facts", type: "number", required: false, default: 1 }],
102
+ * output: { description: "Cat fact object", type: "object" },
103
+ * examples: ["LOAD JSON FROM catFacts(5) AS fact RETURN fact.text"]
104
+ * })
105
+ * class CatFactsLoader {
106
+ * async *fetch(count: number = 1): AsyncGenerator<any> { ... }
107
+ * }
106
108
  * ```
107
109
  */
108
110
  export declare function FunctionDef(options: FunctionDefOptions): <T extends new (...args: any[]) => any>(constructor: T) => T;
@@ -131,4 +133,12 @@ export declare function getRegisteredFunctionFactory(name: string, category?: st
131
133
  * @returns Function metadata or undefined
132
134
  */
133
135
  export declare function getFunctionMetadata(name: string, category?: string): FunctionMetadata | undefined;
136
+ /**
137
+ * Gets a registered async data provider by name.
138
+ * Used by FunctionFactory to get decorator-registered async providers.
139
+ *
140
+ * @param name - Function name (case-insensitive)
141
+ * @returns Async data provider or undefined
142
+ */
143
+ export declare function getRegisteredAsyncProvider(name: string): AsyncDataProvider | undefined;
134
144
  //# sourceMappingURL=function_metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"function_metadata.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function_metadata.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.FunctionDef = FunctionDef;
4
4
  exports.getRegisteredFunctionMetadata = getRegisteredFunctionMetadata;
5
5
  exports.getRegisteredFunctionFactory = getRegisteredFunctionFactory;
6
6
  exports.getFunctionMetadata = getFunctionMetadata;
7
+ exports.getRegisteredAsyncProvider = getRegisteredAsyncProvider;
7
8
  /**
8
9
  * Registry for function metadata collected via decorators.
9
10
  */
@@ -13,15 +14,25 @@ const functionMetadataRegistry = new Map();
13
14
  * Allows @FunctionDef to automatically register functions for instantiation.
14
15
  */
15
16
  const functionFactoryRegistry = new Map();
17
+ /**
18
+ * Registry for async data providers collected via decorators.
19
+ */
20
+ const asyncProviderRegistry = new Map();
16
21
  /**
17
22
  * Class decorator that registers function metadata.
18
- * The function name is derived from the class's constructor call to super().
23
+ * The function name is derived from the class's constructor call to super() for regular functions,
24
+ * or from the class name for async providers.
25
+ *
26
+ * For async providers (category: "async"), the class must have a `fetch` method that returns
27
+ * an AsyncGenerator. The function name is derived from the class name (removing 'Loader' suffix
28
+ * if present) and converted to camelCase.
19
29
  *
20
30
  * @param options - Function metadata (excluding name)
21
31
  * @returns Class decorator
22
32
  *
23
33
  * @example
24
34
  * ```typescript
35
+ * // Regular function
25
36
  * @FunctionDef({
26
37
  * description: "Calculates the sum of numeric values",
27
38
  * category: "aggregate",
@@ -30,11 +41,42 @@ const functionFactoryRegistry = new Map();
30
41
  * examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
31
42
  * })
32
43
  * class Sum extends AggregateFunction { ... }
44
+ *
45
+ * // Async data provider
46
+ * @FunctionDef({
47
+ * description: "Fetches random cat facts from the Cat Facts API",
48
+ * category: "async",
49
+ * parameters: [{ name: "count", description: "Number of facts", type: "number", required: false, default: 1 }],
50
+ * output: { description: "Cat fact object", type: "object" },
51
+ * examples: ["LOAD JSON FROM catFacts(5) AS fact RETURN fact.text"]
52
+ * })
53
+ * class CatFactsLoader {
54
+ * async *fetch(count: number = 1): AsyncGenerator<any> { ... }
55
+ * }
33
56
  * ```
34
57
  */
35
58
  function FunctionDef(options) {
36
59
  return function (constructor) {
37
60
  var _a;
61
+ // Handle async providers differently
62
+ if (options.category === 'async') {
63
+ // Derive the function name from the class name
64
+ // Remove 'Loader' suffix if present and convert to lowercase for registry
65
+ let baseName = constructor.name;
66
+ if (baseName.endsWith('Loader')) {
67
+ baseName = baseName.slice(0, -6);
68
+ }
69
+ // Keep display name in camelCase, but use lowercase for registry keys
70
+ const displayName = baseName.charAt(0).toLowerCase() + baseName.slice(1);
71
+ const registryKey = displayName.toLowerCase();
72
+ // Register metadata with display name
73
+ const metadata = Object.assign({ name: displayName }, options);
74
+ functionMetadataRegistry.set(registryKey, metadata);
75
+ // Register the async provider (wraps the class's fetch method)
76
+ asyncProviderRegistry.set(registryKey, (...args) => new constructor().fetch(...args));
77
+ return constructor;
78
+ }
79
+ // Regular function handling
38
80
  // Create an instance to get the function name from super() call
39
81
  const instance = new constructor();
40
82
  const baseName = ((_a = instance.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || constructor.name.toLowerCase();
@@ -106,4 +148,14 @@ function getFunctionMetadata(name, category) {
106
148
  }
107
149
  return undefined;
108
150
  }
151
+ /**
152
+ * Gets a registered async data provider by name.
153
+ * Used by FunctionFactory to get decorator-registered async providers.
154
+ *
155
+ * @param name - Function name (case-insensitive)
156
+ * @returns Async data provider or undefined
157
+ */
158
+ function getRegisteredAsyncProvider(name) {
159
+ return asyncProviderRegistry.get(name.toLowerCase());
160
+ }
109
161
  //# sourceMappingURL=function_metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"function_metadata.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":";;AA6HA,kCA2BC;AAOD,sEAEC;AAUD,oEAcC;AAWD,kDAiBC;AA3HD;;GAEG;AACH,MAAM,wBAAwB,GAAkC,IAAI,GAAG,EAAE,CAAC;AAE1E;;;GAGG;AACH,MAAM,uBAAuB,GAA2B,IAAI,GAAG,EAAE,CAAC;AAOlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,WAAW,CAAC,OAA2B;IACnD,OAAO,UAAiD,WAAc;;QAClE,gEAAgE;QAChE,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,CAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,WAAW,EAAE,KAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhF,8EAA8E;QAC9E,mDAAmD;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;QAE1F,iEAAiE;QACjE,MAAM,QAAQ,mBACV,IAAI,EAAE,WAAW,IACd,OAAO,CACb,CAAC;QACF,wBAAwB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEpD,wDAAwD;QACxD,mGAAmG;QACnG,IAAI,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACnC,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAElE,OAAO,WAAW,CAAC;IACvB,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAgB,6BAA6B;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,4BAA4B,CAAC,IAAY,EAAE,QAAiB;IACxE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,8CAA8C;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,uBAAuB,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,yBAAyB;IACzB,IAAI,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,IAAY,EAAE,QAAiB;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAErC,8CAA8C;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,wBAAwB,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,+EAA+E;IAC/E,kDAAkD;IAClD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"function_metadata.js","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}