flowquery 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +182 -0
  2. package/dist/extensibility.d.ts +9 -0
  3. package/dist/extensibility.d.ts.map +1 -0
  4. package/dist/extensibility.js +25 -0
  5. package/dist/extensibility.js.map +1 -0
  6. package/dist/flowquery.min.js +1 -1
  7. package/dist/parsing/functions/avg.d.ts.map +1 -1
  8. package/dist/parsing/functions/avg.js +20 -2
  9. package/dist/parsing/functions/avg.js.map +1 -1
  10. package/dist/parsing/functions/collect.d.ts.map +1 -1
  11. package/dist/parsing/functions/collect.js +20 -2
  12. package/dist/parsing/functions/collect.js.map +1 -1
  13. package/dist/parsing/functions/extensibility/index.d.ts +37 -0
  14. package/dist/parsing/functions/extensibility/index.d.ts.map +1 -0
  15. package/dist/parsing/functions/extensibility/index.js +50 -0
  16. package/dist/parsing/functions/extensibility/index.js.map +1 -0
  17. package/dist/parsing/functions/function_factory.d.ts +23 -0
  18. package/dist/parsing/functions/function_factory.d.ts.map +1 -1
  19. package/dist/parsing/functions/function_factory.js +44 -47
  20. package/dist/parsing/functions/function_factory.js.map +1 -1
  21. package/dist/parsing/functions/function_metadata.d.ts +57 -6
  22. package/dist/parsing/functions/function_metadata.d.ts.map +1 -1
  23. package/dist/parsing/functions/function_metadata.js +103 -153
  24. package/dist/parsing/functions/function_metadata.js.map +1 -1
  25. package/dist/parsing/functions/functions.d.ts.map +1 -1
  26. package/dist/parsing/functions/functions.js +37 -2
  27. package/dist/parsing/functions/functions.js.map +1 -1
  28. package/dist/parsing/functions/join.d.ts.map +1 -1
  29. package/dist/parsing/functions/join.js +21 -2
  30. package/dist/parsing/functions/join.js.map +1 -1
  31. package/dist/parsing/functions/predicate_function.d.ts +1 -0
  32. package/dist/parsing/functions/predicate_function.d.ts.map +1 -1
  33. package/dist/parsing/functions/predicate_function.js +3 -0
  34. package/dist/parsing/functions/predicate_function.js.map +1 -1
  35. package/dist/parsing/functions/predicate_sum.d.ts.map +1 -1
  36. package/dist/parsing/functions/predicate_sum.js +23 -2
  37. package/dist/parsing/functions/predicate_sum.js.map +1 -1
  38. package/dist/parsing/functions/rand.d.ts.map +1 -1
  39. package/dist/parsing/functions/rand.js +18 -2
  40. package/dist/parsing/functions/rand.js.map +1 -1
  41. package/dist/parsing/functions/range.d.ts.map +1 -1
  42. package/dist/parsing/functions/range.js +21 -2
  43. package/dist/parsing/functions/range.js.map +1 -1
  44. package/dist/parsing/functions/replace.d.ts.map +1 -1
  45. package/dist/parsing/functions/replace.js +22 -2
  46. package/dist/parsing/functions/replace.js.map +1 -1
  47. package/dist/parsing/functions/round.d.ts.map +1 -1
  48. package/dist/parsing/functions/round.js +20 -2
  49. package/dist/parsing/functions/round.js.map +1 -1
  50. package/dist/parsing/functions/size.d.ts.map +1 -1
  51. package/dist/parsing/functions/size.js +20 -2
  52. package/dist/parsing/functions/size.js.map +1 -1
  53. package/dist/parsing/functions/split.d.ts.map +1 -1
  54. package/dist/parsing/functions/split.js +21 -2
  55. package/dist/parsing/functions/split.js.map +1 -1
  56. package/dist/parsing/functions/stringify.d.ts.map +1 -1
  57. package/dist/parsing/functions/stringify.js +20 -2
  58. package/dist/parsing/functions/stringify.js.map +1 -1
  59. package/dist/parsing/functions/sum.d.ts.map +1 -1
  60. package/dist/parsing/functions/sum.js +20 -2
  61. package/dist/parsing/functions/sum.js.map +1 -1
  62. package/dist/parsing/functions/to_json.d.ts.map +1 -1
  63. package/dist/parsing/functions/to_json.js +20 -2
  64. package/dist/parsing/functions/to_json.js.map +1 -1
  65. package/dist/parsing/parser.d.ts.map +1 -1
  66. package/dist/parsing/parser.js +1 -2
  67. package/dist/parsing/parser.js.map +1 -1
  68. package/docs/flowquery.min.js +1 -1
  69. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +1 -1
  70. package/misc/apps/RAG/.env.example +14 -0
  71. package/misc/apps/RAG/README.md +0 -7
  72. package/misc/apps/RAG/package.json +16 -7
  73. package/misc/apps/RAG/public/index.html +18 -0
  74. package/misc/apps/RAG/src/App.css +42 -0
  75. package/misc/apps/RAG/src/App.tsx +50 -0
  76. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +245 -0
  77. package/misc/apps/RAG/src/components/ChatContainer.css +67 -0
  78. package/misc/apps/RAG/src/components/ChatContainer.tsx +239 -0
  79. package/misc/apps/RAG/src/components/ChatInput.css +23 -0
  80. package/misc/apps/RAG/src/components/ChatInput.tsx +62 -0
  81. package/misc/apps/RAG/src/components/ChatMessage.css +136 -0
  82. package/misc/apps/RAG/src/components/ChatMessage.tsx +152 -0
  83. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +390 -0
  84. package/misc/apps/RAG/src/components/FlowQueryRunner.css +104 -0
  85. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +332 -0
  86. package/misc/apps/RAG/src/components/index.ts +15 -0
  87. package/misc/apps/RAG/src/index.tsx +17 -0
  88. package/misc/apps/RAG/src/plugins/PluginRegistry.ts +136 -0
  89. package/misc/apps/RAG/src/plugins/README.md +139 -0
  90. package/misc/apps/RAG/src/plugins/index.ts +72 -0
  91. package/misc/apps/RAG/src/plugins/loaders/CatFacts.ts +79 -0
  92. package/misc/apps/RAG/src/plugins/loaders/FetchJson.ts +71 -0
  93. package/misc/apps/RAG/src/plugins/loaders/Llm.ts +441 -0
  94. package/misc/apps/RAG/src/plugins/loaders/MockData.ts +161 -0
  95. package/misc/apps/RAG/src/plugins/types.ts +52 -0
  96. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +385 -0
  97. package/misc/apps/RAG/src/prompts/index.ts +10 -0
  98. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +131 -0
  99. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +203 -0
  100. package/misc/apps/RAG/src/utils/index.ts +9 -0
  101. package/misc/apps/RAG/tsconfig.json +4 -2
  102. package/misc/apps/RAG/webpack.config.js +23 -12
  103. package/package.json +7 -1
  104. package/src/extensibility.ts +9 -0
  105. package/src/parsing/functions/avg.ts +10 -0
  106. package/src/parsing/functions/collect.ts +10 -0
  107. package/src/parsing/functions/extensibility/index.ts +54 -0
  108. package/src/parsing/functions/function_factory.ts +51 -48
  109. package/src/parsing/functions/function_metadata.ts +132 -156
  110. package/src/parsing/functions/functions.ts +27 -0
  111. package/src/parsing/functions/join.ts +11 -0
  112. package/src/parsing/functions/predicate_function.ts +4 -0
  113. package/src/parsing/functions/predicate_sum.ts +13 -0
  114. package/src/parsing/functions/rand.ts +8 -0
  115. package/src/parsing/functions/range.ts +11 -0
  116. package/src/parsing/functions/replace.ts +12 -0
  117. package/src/parsing/functions/round.ts +10 -0
  118. package/src/parsing/functions/size.ts +10 -0
  119. package/src/parsing/functions/split.ts +11 -0
  120. package/src/parsing/functions/stringify.ts +10 -0
  121. package/src/parsing/functions/sum.ts +10 -0
  122. package/src/parsing/functions/to_json.ts +10 -0
  123. package/src/parsing/parser.ts +1 -2
  124. package/tests/parsing/function_plugins.test.ts +11 -11
  125. package/tsconfig.json +1 -0
  126. package/dist/parsing/functions/predicate_function_factory.d.ts +0 -6
  127. package/dist/parsing/functions/predicate_function_factory.d.ts.map +0 -1
  128. package/dist/parsing/functions/predicate_function_factory.js +0 -19
  129. package/dist/parsing/functions/predicate_function_factory.js.map +0 -1
  130. package/misc/apps/RAG/src/index.ts +0 -20
  131. package/src/parsing/functions/predicate_function_factory.ts +0 -15
@@ -0,0 +1,37 @@
1
+ /**
2
+ * FlowQuery Extensibility API
3
+ *
4
+ * This module provides all the exports needed to create custom FlowQuery functions.
5
+ *
6
+ * @packageDocumentation
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { Function, FunctionDef } from '../parsing/functions/extensibility';
11
+ *
12
+ * @FunctionDef({
13
+ * description: "Converts a string to uppercase",
14
+ * category: "string",
15
+ * parameters: [{ name: "text", description: "String to convert", type: "string" }],
16
+ * output: { description: "Uppercase string", type: "string" }
17
+ * })
18
+ * class UpperCase extends Function {
19
+ * constructor() {
20
+ * super("uppercase");
21
+ * this._expectedParameterCount = 1;
22
+ * }
23
+ * public value(): string {
24
+ * return String(this.getChildren()[0].value()).toUpperCase();
25
+ * }
26
+ * }
27
+ * ```
28
+ */
29
+ export { default as Function } from "../function";
30
+ export { default as AggregateFunction } from "../aggregate_function";
31
+ export { default as PredicateFunction } from "../predicate_function";
32
+ export { default as ReducerElement } from "../reducer_element";
33
+ export { FunctionDef, FunctionMetadata, FunctionDefOptions, ParameterSchema, OutputSchema, FunctionCategory } from "../function_metadata";
34
+ export { default as FunctionFactory } from "../function_factory";
35
+ export type { FunctionCreator, AsyncDataProvider } from "../function_factory";
36
+ export type { RegisterFunctionOptions, RegisterAsyncProviderOptions } from "../function_metadata";
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/parsing/functions/extensibility/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,YAAY,EACR,uBAAuB,EACvB,4BAA4B,EAC/B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * FlowQuery Extensibility API
4
+ *
5
+ * This module provides all the exports needed to create custom FlowQuery functions.
6
+ *
7
+ * @packageDocumentation
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { Function, FunctionDef } from '../parsing/functions/extensibility';
12
+ *
13
+ * @FunctionDef({
14
+ * description: "Converts a string to uppercase",
15
+ * category: "string",
16
+ * parameters: [{ name: "text", description: "String to convert", type: "string" }],
17
+ * output: { description: "Uppercase string", type: "string" }
18
+ * })
19
+ * class UpperCase extends Function {
20
+ * constructor() {
21
+ * super("uppercase");
22
+ * this._expectedParameterCount = 1;
23
+ * }
24
+ * public value(): string {
25
+ * return String(this.getChildren()[0].value()).toUpperCase();
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.FunctionFactory = exports.FunctionDef = exports.ReducerElement = exports.PredicateFunction = exports.AggregateFunction = exports.Function = void 0;
35
+ // Base function classes for creating custom functions
36
+ var function_1 = require("../function");
37
+ Object.defineProperty(exports, "Function", { enumerable: true, get: function () { return __importDefault(function_1).default; } });
38
+ var aggregate_function_1 = require("../aggregate_function");
39
+ Object.defineProperty(exports, "AggregateFunction", { enumerable: true, get: function () { return __importDefault(aggregate_function_1).default; } });
40
+ var predicate_function_1 = require("../predicate_function");
41
+ Object.defineProperty(exports, "PredicateFunction", { enumerable: true, get: function () { return __importDefault(predicate_function_1).default; } });
42
+ var reducer_element_1 = require("../reducer_element");
43
+ Object.defineProperty(exports, "ReducerElement", { enumerable: true, get: function () { return __importDefault(reducer_element_1).default; } });
44
+ // Decorator and metadata types for function registration
45
+ var function_metadata_1 = require("../function_metadata");
46
+ Object.defineProperty(exports, "FunctionDef", { enumerable: true, get: function () { return function_metadata_1.FunctionDef; } });
47
+ // Factory for advanced usage
48
+ var function_factory_1 = require("../function_factory");
49
+ Object.defineProperty(exports, "FunctionFactory", { enumerable: true, get: function () { return __importDefault(function_factory_1).default; } });
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/parsing/functions/extensibility/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;AAEH,sDAAsD;AACtD,wCAAkD;AAAzC,qHAAA,OAAO,OAAY;AAC5B,4DAAqE;AAA5D,wIAAA,OAAO,OAAqB;AACrC,4DAAqE;AAA5D,wIAAA,OAAO,OAAqB;AACrC,sDAA+D;AAAtD,kIAAA,OAAO,OAAkB;AAElC,yDAAyD;AACzD,0DAO8B;AAN1B,gHAAA,WAAW,OAAA;AAQf,6BAA6B;AAC7B,wDAAiE;AAAxD,oIAAA,OAAO,OAAmB"}
@@ -1,4 +1,19 @@
1
1
  import Function from "./function";
2
+ import PredicateFunction from "./predicate_function";
3
+ import "./sum";
4
+ import "./collect";
5
+ import "./avg";
6
+ import "./range";
7
+ import "./rand";
8
+ import "./round";
9
+ import "./split";
10
+ import "./join";
11
+ import "./to_json";
12
+ import "./replace";
13
+ import "./stringify";
14
+ import "./size";
15
+ import "./functions";
16
+ import "./predicate_sum";
2
17
  import { FunctionMetadata, RegisterFunctionOptions, RegisterAsyncProviderOptions } from "./function_metadata";
3
18
  /**
4
19
  * Type for synchronous function factories.
@@ -146,6 +161,14 @@ declare class FunctionFactory {
146
161
  * @returns A Function instance of the appropriate type
147
162
  */
148
163
  static create(name: string): Function;
164
+ /**
165
+ * Creates a predicate function instance by name.
166
+ * Predicate functions are used in WHERE clauses with quantifiers (e.g., ANY, ALL).
167
+ *
168
+ * @param name - The function name (case-insensitive)
169
+ * @returns A PredicateFunction instance of the appropriate type
170
+ */
171
+ static createPredicate(name: string): PredicateFunction;
149
172
  }
150
173
  export default FunctionFactory;
151
174
  //# sourceMappingURL=function_factory.d.ts.map
@@ -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,EACH,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAE/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;CAuC/C;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,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"}
@@ -3,20 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const sum_1 = __importDefault(require("./sum"));
7
- const collect_1 = __importDefault(require("./collect"));
8
- const avg_1 = __importDefault(require("./avg"));
9
- const range_1 = __importDefault(require("./range"));
10
- const rand_1 = __importDefault(require("./rand"));
11
- const round_1 = __importDefault(require("./round"));
12
- const split_1 = __importDefault(require("./split"));
13
- const join_1 = __importDefault(require("./join"));
14
- const to_json_1 = __importDefault(require("./to_json"));
15
- const replace_1 = __importDefault(require("./replace"));
16
- const stringify_1 = __importDefault(require("./stringify"));
17
- const size_1 = __importDefault(require("./size"));
18
- const functions_1 = __importDefault(require("./functions"));
19
6
  const function_1 = __importDefault(require("./function"));
7
+ const predicate_function_1 = __importDefault(require("./predicate_function"));
8
+ // Import built-in functions to ensure their @FunctionDef decorators run
9
+ require("./sum");
10
+ require("./collect");
11
+ require("./avg");
12
+ require("./range");
13
+ require("./rand");
14
+ require("./round");
15
+ require("./split");
16
+ require("./join");
17
+ require("./to_json");
18
+ require("./replace");
19
+ require("./stringify");
20
+ require("./size");
21
+ require("./functions");
22
+ require("./predicate_sum");
20
23
  const function_metadata_1 = require("./function_metadata");
21
24
  /**
22
25
  * Factory for creating function instances by name.
@@ -143,8 +146,8 @@ class FunctionFactory {
143
146
  if (FunctionFactory.metadata.has(lowerName)) {
144
147
  return FunctionFactory.metadata.get(lowerName);
145
148
  }
146
- // Fall back to built-in metadata
147
- return function_metadata_1.BUILTIN_FUNCTION_METADATA.find(m => m.name === lowerName);
149
+ // Fall back to decorator-registered metadata
150
+ return (0, function_metadata_1.getFunctionMetadata)(lowerName);
148
151
  }
149
152
  /**
150
153
  * Lists all registered functions with their metadata.
@@ -156,9 +159,9 @@ class FunctionFactory {
156
159
  static listFunctions(options) {
157
160
  const result = [];
158
161
  const includeBuiltins = (options === null || options === void 0 ? void 0 : options.includeBuiltins) !== false;
159
- // Add built-in functions
162
+ // Add decorator-registered functions (built-ins)
160
163
  if (includeBuiltins) {
161
- for (const meta of function_metadata_1.BUILTIN_FUNCTION_METADATA) {
164
+ for (const meta of (0, function_metadata_1.getRegisteredFunctionMetadata)()) {
162
165
  if ((options === null || options === void 0 ? void 0 : options.category) && meta.category !== options.category)
163
166
  continue;
164
167
  if (options === null || options === void 0 ? void 0 : options.asyncOnly)
@@ -184,7 +187,7 @@ class FunctionFactory {
184
187
  * @returns Array of function names
185
188
  */
186
189
  static listFunctionNames() {
187
- const builtinNames = function_metadata_1.BUILTIN_FUNCTION_METADATA.map(m => m.name);
190
+ const builtinNames = (0, function_metadata_1.getRegisteredFunctionMetadata)().map(m => m.name);
188
191
  const pluginNames = Array.from(FunctionFactory.plugins.keys());
189
192
  const asyncNames = Array.from(FunctionFactory.asyncProviders.keys());
190
193
  return [...new Set([...builtinNames, ...pluginNames, ...asyncNames])];
@@ -211,36 +214,30 @@ class FunctionFactory {
211
214
  if (FunctionFactory.plugins.has(lowerName)) {
212
215
  return FunctionFactory.plugins.get(lowerName)();
213
216
  }
214
- switch (lowerName) {
215
- case "sum":
216
- return new sum_1.default();
217
- case "collect":
218
- return new collect_1.default();
219
- case "avg":
220
- return new avg_1.default();
221
- case "range":
222
- return new range_1.default();
223
- case "rand":
224
- return new rand_1.default();
225
- case "round":
226
- return new round_1.default();
227
- case "split":
228
- return new split_1.default();
229
- case "join":
230
- return new join_1.default();
231
- case "tojson":
232
- return new to_json_1.default();
233
- case "replace":
234
- return new replace_1.default();
235
- case "stringify":
236
- return new stringify_1.default();
237
- case "size":
238
- return new size_1.default();
239
- case "functions":
240
- return new functions_1.default();
241
- default:
242
- return new function_1.default(name);
217
+ // Check decorator-registered functions (built-ins use @FunctionDef)
218
+ const decoratorFactory = (0, function_metadata_1.getRegisteredFunctionFactory)(lowerName);
219
+ if (decoratorFactory) {
220
+ return decoratorFactory();
243
221
  }
222
+ // Unknown function - return generic Function instance
223
+ return new function_1.default(name);
224
+ }
225
+ /**
226
+ * Creates a predicate function instance by name.
227
+ * Predicate functions are used in WHERE clauses with quantifiers (e.g., ANY, ALL).
228
+ *
229
+ * @param name - The function name (case-insensitive)
230
+ * @returns A PredicateFunction instance of the appropriate type
231
+ */
232
+ static createPredicate(name) {
233
+ const lowerName = name.toLowerCase();
234
+ // Check decorator-registered predicate functions
235
+ const decoratorFactory = (0, function_metadata_1.getRegisteredFunctionFactory)(lowerName, 'predicate');
236
+ if (decoratorFactory) {
237
+ return decoratorFactory();
238
+ }
239
+ // Unknown predicate function - return generic PredicateFunction instance
240
+ return new predicate_function_1.default(name);
244
241
  }
245
242
  }
246
243
  /**
@@ -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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"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Category types for functions.
3
+ * Core categories: scalar, aggregate, predicate, async
4
+ * Additional categories for organization: string, math, data, etc.
5
+ */
6
+ export type FunctionCategory = "scalar" | "aggregate" | "predicate" | "async" | "string" | "math" | "data" | "introspection" | string;
1
7
  /**
2
8
  * Schema definition for function arguments and outputs.
3
9
  * Compatible with JSON Schema for LLM consumption.
@@ -45,18 +51,18 @@ export interface FunctionMetadata {
45
51
  name: string;
46
52
  /** Human-readable description of what the function does */
47
53
  description: string;
48
- /** Category for grouping functions (e.g., "aggregation", "string", "data") */
49
- category?: string;
54
+ /** Category for grouping functions */
55
+ category?: FunctionCategory;
50
56
  /** Array of parameter schemas */
51
57
  parameters: ParameterSchema[];
52
58
  /** Output schema */
53
59
  output: OutputSchema;
54
60
  /** Example usage in FlowQuery syntax */
55
61
  examples?: string[];
56
- /** Whether this is an async data provider for LOAD operations */
57
- isAsyncProvider?: boolean;
58
62
  /** Additional notes or caveats */
59
63
  notes?: string;
64
+ /** Whether this is an async data provider (for LOAD operations) */
65
+ isAsyncProvider?: boolean;
60
66
  }
61
67
  /**
62
68
  * Options for registering a sync function with metadata.
@@ -77,7 +83,52 @@ export interface RegisterAsyncProviderOptions {
77
83
  metadata: FunctionMetadata;
78
84
  }
79
85
  /**
80
- * Built-in function metadata definitions.
86
+ * Decorator options - metadata without the name (derived from class).
87
+ */
88
+ export type FunctionDefOptions = Omit<FunctionMetadata, 'name'>;
89
+ /**
90
+ * Class decorator that registers function metadata.
91
+ * The function name is derived from the class's constructor call to super().
92
+ *
93
+ * @param options - Function metadata (excluding name)
94
+ * @returns Class decorator
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * @FunctionDef({
99
+ * description: "Calculates the sum of numeric values",
100
+ * category: "aggregate",
101
+ * parameters: [{ name: "value", description: "Numeric value to sum", type: "number" }],
102
+ * output: { description: "Sum of all values", type: "number", example: 150 },
103
+ * examples: ["WITH [1, 2, 3] AS nums UNWIND nums AS n RETURN sum(n)"]
104
+ * })
105
+ * class Sum extends AggregateFunction { ... }
106
+ * ```
107
+ */
108
+ export declare function FunctionDef(options: FunctionDefOptions): <T extends new (...args: any[]) => any>(constructor: T) => T;
109
+ /**
110
+ * Gets all registered function metadata from decorators.
111
+ *
112
+ * @returns Array of function metadata
113
+ */
114
+ export declare function getRegisteredFunctionMetadata(): FunctionMetadata[];
115
+ /**
116
+ * Gets a registered function factory by name.
117
+ * Used by FunctionFactory to instantiate decorator-registered functions.
118
+ *
119
+ * @param name - Function name (case-insensitive)
120
+ * @param category - Optional category to disambiguate (e.g., 'predicate')
121
+ * @returns Factory function or undefined
122
+ */
123
+ export declare function getRegisteredFunctionFactory(name: string, category?: string): (() => any) | undefined;
124
+ /**
125
+ * Gets metadata for a specific function by name.
126
+ * If multiple functions share the same name (e.g., aggregate vs predicate),
127
+ * optionally specify the category to get the specific one.
128
+ *
129
+ * @param name - Function name (case-insensitive)
130
+ * @param category - Optional category to disambiguate
131
+ * @returns Function metadata or undefined
81
132
  */
82
- export declare const BUILTIN_FUNCTION_METADATA: FunctionMetadata[];
133
+ export declare function getFunctionMetadata(name: string, category?: string): FunctionMetadata | undefined;
83
134
  //# 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":"AAAA;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7E,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;IAC/D,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IACxE,6BAA6B;IAC7B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,oBAAoB;IACpB,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7E,sCAAsC;IACtC,KAAK,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC1C,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IACxE,2BAA2B;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,oBAAoB;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,EAAE,gBAAgB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC,oDAAoD;IACpD,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChF,0CAA0C;IAC1C,QAAQ,EAAE,gBAAgB,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,EAuJvD,CAAC"}
1
+ {"version":3,"file":"function_metadata.d.ts","sourceRoot":"","sources":["../../../src/parsing/functions/function_metadata.ts"],"names":[],"mappings":"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"}