@vinkius-core/mcp-fusion 2.9.0 → 2.12.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 (172) hide show
  1. package/dist/cli/fusion.d.ts +3 -0
  2. package/dist/cli/fusion.d.ts.map +1 -1
  3. package/dist/cli/fusion.js +125 -3
  4. package/dist/cli/fusion.js.map +1 -1
  5. package/dist/cli/templates/config.js +3 -3
  6. package/dist/cli/templates/config.js.map +1 -1
  7. package/dist/cli/templates/constants.d.ts +1 -1
  8. package/dist/cli/templates/constants.d.ts.map +1 -1
  9. package/dist/cli/templates/constants.js +1 -1
  10. package/dist/cli/templates/constants.js.map +1 -1
  11. package/dist/cli/templates/core.js +5 -5
  12. package/dist/cli/templates/middleware.d.ts +1 -1
  13. package/dist/cli/templates/middleware.d.ts.map +1 -1
  14. package/dist/cli/templates/middleware.js +16 -13
  15. package/dist/cli/templates/middleware.js.map +1 -1
  16. package/dist/cli/templates/readme.d.ts.map +1 -1
  17. package/dist/cli/templates/readme.js +14 -18
  18. package/dist/cli/templates/readme.js.map +1 -1
  19. package/dist/cli/templates/tools.d.ts +4 -0
  20. package/dist/cli/templates/tools.d.ts.map +1 -1
  21. package/dist/cli/templates/tools.js +26 -29
  22. package/dist/cli/templates/tools.js.map +1 -1
  23. package/dist/cli/templates/vectors/database.d.ts.map +1 -1
  24. package/dist/cli/templates/vectors/database.js +14 -19
  25. package/dist/cli/templates/vectors/database.js.map +1 -1
  26. package/dist/cli/templates/vectors/oauth.d.ts.map +1 -1
  27. package/dist/cli/templates/vectors/oauth.js +4 -5
  28. package/dist/cli/templates/vectors/oauth.js.map +1 -1
  29. package/dist/cli/templates/vectors/openapi.js +2 -2
  30. package/dist/cli/templates/vectors/workflow.js +1 -1
  31. package/dist/cli/templates/vectors/workflow.js.map +1 -1
  32. package/dist/client/FusionClient.d.ts +55 -0
  33. package/dist/client/FusionClient.d.ts.map +1 -1
  34. package/dist/client/FusionClient.js +30 -0
  35. package/dist/client/FusionClient.js.map +1 -1
  36. package/dist/client/index.d.ts +1 -1
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js.map +1 -1
  39. package/dist/core/builder/ActionGroupBuilder.d.ts +86 -46
  40. package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -1
  41. package/dist/core/builder/ActionGroupBuilder.js +68 -26
  42. package/dist/core/builder/ActionGroupBuilder.js.map +1 -1
  43. package/dist/core/builder/ErrorBuilder.d.ts +59 -0
  44. package/dist/core/builder/ErrorBuilder.d.ts.map +1 -0
  45. package/dist/core/builder/ErrorBuilder.js +99 -0
  46. package/dist/core/builder/ErrorBuilder.js.map +1 -0
  47. package/dist/core/builder/FluentRouter.d.ts +91 -0
  48. package/dist/core/builder/FluentRouter.d.ts.map +1 -0
  49. package/dist/core/builder/FluentRouter.js +121 -0
  50. package/dist/core/builder/FluentRouter.js.map +1 -0
  51. package/dist/core/builder/FluentSchemaHelpers.d.ts +237 -0
  52. package/dist/core/builder/FluentSchemaHelpers.d.ts.map +1 -0
  53. package/dist/core/builder/FluentSchemaHelpers.js +227 -0
  54. package/dist/core/builder/FluentSchemaHelpers.js.map +1 -0
  55. package/dist/core/builder/FluentToolBuilder.d.ts +347 -0
  56. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -0
  57. package/dist/core/builder/FluentToolBuilder.js +525 -0
  58. package/dist/core/builder/FluentToolBuilder.js.map +1 -0
  59. package/dist/core/builder/GroupedToolBuilder.d.ts +91 -1
  60. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -1
  61. package/dist/core/builder/GroupedToolBuilder.js +122 -4
  62. package/dist/core/builder/GroupedToolBuilder.js.map +1 -1
  63. package/dist/core/builder/ToolDefinitionCompiler.d.ts +1 -0
  64. package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -1
  65. package/dist/core/builder/ToolDefinitionCompiler.js +1 -1
  66. package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -1
  67. package/dist/core/builder/index.d.ts +4 -0
  68. package/dist/core/builder/index.d.ts.map +1 -1
  69. package/dist/core/builder/index.js +7 -0
  70. package/dist/core/builder/index.js.map +1 -1
  71. package/dist/core/execution/EgressGuard.js +1 -1
  72. package/dist/core/execution/EgressGuard.js.map +1 -1
  73. package/dist/core/execution/ExecutionPipeline.d.ts +8 -2
  74. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
  75. package/dist/core/execution/ExecutionPipeline.js +18 -9
  76. package/dist/core/execution/ExecutionPipeline.js.map +1 -1
  77. package/dist/core/execution/PipelineHooks.d.ts +0 -6
  78. package/dist/core/execution/PipelineHooks.d.ts.map +1 -1
  79. package/dist/core/execution/PipelineHooks.js +7 -3
  80. package/dist/core/execution/PipelineHooks.js.map +1 -1
  81. package/dist/core/index.d.ts +5 -7
  82. package/dist/core/index.d.ts.map +1 -1
  83. package/dist/core/index.js +2 -4
  84. package/dist/core/index.js.map +1 -1
  85. package/dist/core/initFusion.d.ts +119 -87
  86. package/dist/core/initFusion.d.ts.map +1 -1
  87. package/dist/core/initFusion.js +56 -66
  88. package/dist/core/initFusion.js.map +1 -1
  89. package/dist/core/registry/ToolRegistry.d.ts +1 -1
  90. package/dist/core/registry/ToolRegistry.d.ts.map +1 -1
  91. package/dist/core/registry/ToolRegistry.js +1 -1
  92. package/dist/core/registry/ToolRegistry.js.map +1 -1
  93. package/dist/core/schema/SchemaGenerator.d.ts +1 -1
  94. package/dist/core/schema/SchemaGenerator.d.ts.map +1 -1
  95. package/dist/core/schema/SchemaGenerator.js +38 -1
  96. package/dist/core/schema/SchemaGenerator.js.map +1 -1
  97. package/dist/core/types.d.ts +19 -0
  98. package/dist/core/types.d.ts.map +1 -1
  99. package/dist/exposition/ExpositionCompiler.d.ts.map +1 -1
  100. package/dist/exposition/ExpositionCompiler.js +25 -2
  101. package/dist/exposition/ExpositionCompiler.js.map +1 -1
  102. package/dist/index.d.ts +3 -3
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +4 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/introspection/BehaviorDigest.d.ts +2 -2
  107. package/dist/introspection/BehaviorDigest.d.ts.map +1 -1
  108. package/dist/introspection/BehaviorDigest.js +38 -36
  109. package/dist/introspection/BehaviorDigest.js.map +1 -1
  110. package/dist/introspection/CapabilityLockfile.d.ts +2 -2
  111. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -1
  112. package/dist/introspection/CapabilityLockfile.js +9 -9
  113. package/dist/introspection/CapabilityLockfile.js.map +1 -1
  114. package/dist/introspection/CryptoAttestation.d.ts.map +1 -1
  115. package/dist/introspection/CryptoAttestation.js +27 -36
  116. package/dist/introspection/CryptoAttestation.js.map +1 -1
  117. package/dist/introspection/ToolContract.d.ts +2 -2
  118. package/dist/introspection/ToolContract.d.ts.map +1 -1
  119. package/dist/introspection/ToolContract.js +9 -9
  120. package/dist/introspection/ToolContract.js.map +1 -1
  121. package/dist/introspection/canonicalize.d.ts +16 -1
  122. package/dist/introspection/canonicalize.d.ts.map +1 -1
  123. package/dist/introspection/canonicalize.js +24 -3
  124. package/dist/introspection/canonicalize.js.map +1 -1
  125. package/dist/presenter/PostProcessor.d.ts +4 -2
  126. package/dist/presenter/PostProcessor.d.ts.map +1 -1
  127. package/dist/presenter/PostProcessor.js +10 -10
  128. package/dist/presenter/PostProcessor.js.map +1 -1
  129. package/dist/presenter/Presenter.d.ts +112 -6
  130. package/dist/presenter/Presenter.d.ts.map +1 -1
  131. package/dist/presenter/Presenter.js +134 -40
  132. package/dist/presenter/Presenter.js.map +1 -1
  133. package/dist/presenter/SelectUtils.d.ts +78 -0
  134. package/dist/presenter/SelectUtils.d.ts.map +1 -0
  135. package/dist/presenter/SelectUtils.js +141 -0
  136. package/dist/presenter/SelectUtils.js.map +1 -0
  137. package/dist/presenter/index.d.ts +3 -0
  138. package/dist/presenter/index.d.ts.map +1 -1
  139. package/dist/presenter/index.js +6 -0
  140. package/dist/presenter/index.js.map +1 -1
  141. package/dist/presenter/suggest.d.ts +39 -0
  142. package/dist/presenter/suggest.d.ts.map +1 -0
  143. package/dist/presenter/suggest.js +41 -0
  144. package/dist/presenter/suggest.js.map +1 -0
  145. package/dist/presenter/typeHelpers.d.ts +147 -0
  146. package/dist/presenter/typeHelpers.d.ts.map +1 -0
  147. package/dist/presenter/typeHelpers.js +152 -0
  148. package/dist/presenter/typeHelpers.js.map +1 -0
  149. package/dist/prompt/FluentPromptBuilder.d.ts +155 -0
  150. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -0
  151. package/dist/prompt/FluentPromptBuilder.js +193 -0
  152. package/dist/prompt/FluentPromptBuilder.js.map +1 -0
  153. package/dist/prompt/index.d.ts +1 -0
  154. package/dist/prompt/index.d.ts.map +1 -1
  155. package/dist/prompt/index.js +1 -0
  156. package/dist/prompt/index.js.map +1 -1
  157. package/dist/server/DevServer.js +8 -8
  158. package/dist/server/DevServer.js.map +1 -1
  159. package/dist/server/ServerAttachment.d.ts +1 -1
  160. package/dist/server/ServerAttachment.d.ts.map +1 -1
  161. package/dist/server/ServerAttachment.js +57 -4
  162. package/dist/server/ServerAttachment.js.map +1 -1
  163. package/dist/state-sync/ResponseDecorator.d.ts +1 -1
  164. package/dist/state-sync/StateSyncBuilder.d.ts +75 -0
  165. package/dist/state-sync/StateSyncBuilder.d.ts.map +1 -0
  166. package/dist/state-sync/StateSyncBuilder.js +123 -0
  167. package/dist/state-sync/StateSyncBuilder.js.map +1 -0
  168. package/dist/state-sync/index.d.ts +1 -0
  169. package/dist/state-sync/index.d.ts.map +1 -1
  170. package/dist/state-sync/index.js +1 -0
  171. package/dist/state-sync/index.js.map +1 -1
  172. package/package.json +1 -1
@@ -0,0 +1,237 @@
1
+ /**
2
+ * FluentSchemaHelpers — Chainable Parameter Declarations
3
+ *
4
+ * Provides `f.string()`, `f.number()`, `f.boolean()`, `f.enum()`, `f.array()`
5
+ * that build ParamDescriptors via fluent method chaining.
6
+ *
7
+ * These are syntax sugar over the existing `ParamDescriptors` system.
8
+ * At build time, `.toDescriptor()` produces the same JSON descriptor
9
+ * that `convertParamsToZod()` already knows how to convert.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const f = initFusion<AppContext>();
14
+ *
15
+ * f.query('users.list')
16
+ * .input({
17
+ * limit: f.number().min(1).max(100).default(10).describe('Max results'),
18
+ * status: f.enum('active', 'inactive').optional(),
19
+ * name: f.string().min(3).example('Alice').describe('Search by name'),
20
+ * })
21
+ * .resolve(async ({ input, ctx }) => { ... });
22
+ * ```
23
+ *
24
+ * @module
25
+ */
26
+ import type { ParamDef, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef } from './ParamDescriptors.js';
27
+ /**
28
+ * Symbol used to detect fluent schema helpers at runtime.
29
+ * @internal
30
+ */
31
+ export declare const FLUENT_DESCRIPTOR: unique symbol;
32
+ /**
33
+ * Base interface for all fluent descriptors.
34
+ * @internal
35
+ */
36
+ export interface FluentDescriptor {
37
+ readonly [FLUENT_DESCRIPTOR]: true;
38
+ /** Convert the fluent descriptor to a plain ParamDef for ParamDescriptors. */
39
+ toDescriptor(): ParamDef;
40
+ }
41
+ /**
42
+ * Type guard: is this value a FluentDescriptor?
43
+ * @internal
44
+ */
45
+ export declare function isFluentDescriptor(value: unknown): value is FluentDescriptor;
46
+ /**
47
+ * Infer the TypeScript type from a single fluent descriptor or ParamDef.
48
+ * @internal
49
+ */
50
+ type InferSingleFluent<T> = T extends FluentString ? string : T extends FluentNumber ? number : T extends FluentBoolean ? boolean : T extends FluentEnum<infer V> ? V : T extends FluentArray ? (T extends {
51
+ _itemType: 'string';
52
+ } ? string[] : T extends {
53
+ _itemType: 'number';
54
+ } ? number[] : T extends {
55
+ _itemType: 'boolean';
56
+ } ? boolean[] : unknown[]) : T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends {
57
+ type: 'string';
58
+ } ? string : T extends {
59
+ type: 'number';
60
+ } ? number : T extends {
61
+ type: 'boolean';
62
+ } ? boolean : T extends {
63
+ enum: readonly (infer V)[];
64
+ } ? V : T extends {
65
+ array: 'string';
66
+ } ? string[] : T extends {
67
+ array: 'number';
68
+ } ? number[] : T extends {
69
+ array: 'boolean';
70
+ } ? boolean[] : unknown;
71
+ /**
72
+ * Check if a fluent/param value is optional.
73
+ * @internal
74
+ */
75
+ type IsFieldOptional<T> = T extends {
76
+ _optional: true;
77
+ } ? true : T extends {
78
+ optional: true;
79
+ } ? true : false;
80
+ /** Required keys from a FluentParamsMap */
81
+ type FluentRequiredKeys<T extends Record<string, unknown>> = {
82
+ [K in keyof T]: IsFieldOptional<T[K]> extends true ? never : K;
83
+ }[keyof T];
84
+ /** Optional keys from a FluentParamsMap */
85
+ type FluentOptionalKeys<T extends Record<string, unknown>> = {
86
+ [K in keyof T]: IsFieldOptional<T[K]> extends true ? K : never;
87
+ }[keyof T];
88
+ /**
89
+ * Infer the full TypeScript type from a FluentParamsMap.
90
+ *
91
+ * Required params become required properties, optional params become
92
+ * optional properties with `| undefined`.
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const schema = {
97
+ * limit: f.number().min(1).max(100), // required: number
98
+ * status: f.enum('active', 'inactive').optional(), // optional: 'active' | 'inactive'
99
+ * };
100
+ * type T = InferFluentParams<typeof schema>;
101
+ * // { limit: number; status?: 'active' | 'inactive' }
102
+ * ```
103
+ */
104
+ export type InferFluentParams<T extends Record<string, unknown>> = {
105
+ [K in FluentRequiredKeys<T>]: InferSingleFluent<T[K]>;
106
+ } & {
107
+ [K in FluentOptionalKeys<T>]?: InferSingleFluent<T[K]>;
108
+ };
109
+ export declare class FluentString implements FluentDescriptor {
110
+ readonly [FLUENT_DESCRIPTOR]: true;
111
+ private _desc?;
112
+ /** @internal */ _optional: boolean;
113
+ private _min?;
114
+ private _max?;
115
+ private _regex?;
116
+ private _default?;
117
+ private _examples?;
118
+ /** Set minimum string length */
119
+ min(n: number): this;
120
+ /** Set maximum string length */
121
+ max(n: number): this;
122
+ /** Set regex validation pattern */
123
+ regex(pattern: string): this;
124
+ /** Mark as optional */
125
+ optional(): FluentString & {
126
+ _optional: true;
127
+ };
128
+ /** Set human-readable description */
129
+ describe(text: string): this;
130
+ /** Set default value (appended to description for LLM) */
131
+ default(value: string): this;
132
+ /** Add a single LLM few-shot example (AI-First DX) */
133
+ example(value: string): this;
134
+ /** Set multiple LLM few-shot examples */
135
+ examples(...values: string[]): this;
136
+ toDescriptor(): StringParamDef;
137
+ }
138
+ export declare class FluentNumber implements FluentDescriptor {
139
+ readonly [FLUENT_DESCRIPTOR]: true;
140
+ private _desc?;
141
+ /** @internal */ _optional: boolean;
142
+ private _min?;
143
+ private _max?;
144
+ private _int;
145
+ private _default?;
146
+ private _examples?;
147
+ /** Set minimum value */
148
+ min(n: number): this;
149
+ /** Set maximum value */
150
+ max(n: number): this;
151
+ /** Restrict to integers */
152
+ int(): this;
153
+ /** Mark as optional */
154
+ optional(): FluentNumber & {
155
+ _optional: true;
156
+ };
157
+ /** Set human-readable description */
158
+ describe(text: string): this;
159
+ /** Set default value (appended to description for LLM) */
160
+ default(value: number): this;
161
+ /** Add a single LLM few-shot example (AI-First DX) */
162
+ example(value: number): this;
163
+ /** Set multiple LLM few-shot examples */
164
+ examples(...values: number[]): this;
165
+ toDescriptor(): NumberParamDef;
166
+ }
167
+ export declare class FluentBoolean implements FluentDescriptor {
168
+ readonly [FLUENT_DESCRIPTOR]: true;
169
+ private _desc?;
170
+ /** @internal */ _optional: boolean;
171
+ private _default?;
172
+ /** Mark as optional */
173
+ optional(): FluentBoolean & {
174
+ _optional: true;
175
+ };
176
+ /** Set human-readable description */
177
+ describe(text: string): this;
178
+ /** Set default value (appended to description for LLM) */
179
+ default(value: boolean): this;
180
+ toDescriptor(): BooleanParamDef;
181
+ }
182
+ export declare class FluentEnum<V extends string = string> implements FluentDescriptor {
183
+ readonly [FLUENT_DESCRIPTOR]: true;
184
+ private _desc?;
185
+ /** @internal */ _optional: boolean;
186
+ private _examples?;
187
+ private _default?;
188
+ private readonly _values;
189
+ constructor(...values: [V, ...V[]]);
190
+ /** Mark as optional */
191
+ optional(): FluentEnum<V> & {
192
+ _optional: true;
193
+ };
194
+ /** Set human-readable description */
195
+ describe(text: string): this;
196
+ /** Set default value (appended to description for LLM) */
197
+ default(value: V): this;
198
+ /** Add a single LLM few-shot example (AI-First DX) */
199
+ example(value: V): this;
200
+ /** Set multiple LLM few-shot examples */
201
+ examples(...values: V[]): this;
202
+ toDescriptor(): EnumParamDef<V>;
203
+ }
204
+ type PrimitiveType = 'string' | 'number' | 'boolean';
205
+ export declare class FluentArray implements FluentDescriptor {
206
+ readonly [FLUENT_DESCRIPTOR]: true;
207
+ private _desc?;
208
+ /** @internal */ _optional: boolean;
209
+ private _min?;
210
+ private _max?;
211
+ /** @internal */ readonly _itemType: PrimitiveType;
212
+ constructor(itemType: PrimitiveType);
213
+ /** Set minimum array length */
214
+ min(n: number): this;
215
+ /** Set maximum array length */
216
+ max(n: number): this;
217
+ /** Mark as optional */
218
+ optional(): FluentArray & {
219
+ _optional: true;
220
+ };
221
+ /** Set human-readable description */
222
+ describe(text: string): this;
223
+ toDescriptor(): ArrayParamDef;
224
+ }
225
+ /**
226
+ * A map where values can be either classic ParamDef or FluentDescriptor.
227
+ * The FluentToolBuilder resolves these to ParamDef at build time.
228
+ */
229
+ export type FluentParamsMap = Record<string, ParamDef | FluentDescriptor>;
230
+ /**
231
+ * Resolve a FluentParamsMap to a plain ParamsMap by calling .toDescriptor()
232
+ * on any FluentDescriptor values.
233
+ * @internal
234
+ */
235
+ export declare function resolveFluentParams(input: FluentParamsMap): Record<string, ParamDef>;
236
+ export {};
237
+ //# sourceMappingURL=FluentSchemaHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentSchemaHelpers.d.ts","sourceRoot":"","sources":["../../../src/core/builder/FluentSchemaHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ // ── Sentinel for fluent descriptor detection ──────────────
2
+ /**
3
+ * Symbol used to detect fluent schema helpers at runtime.
4
+ * @internal
5
+ */
6
+ export const FLUENT_DESCRIPTOR = Symbol.for('mcp-fusion.fluent-descriptor');
7
+ /**
8
+ * Type guard: is this value a FluentDescriptor?
9
+ * @internal
10
+ */
11
+ export function isFluentDescriptor(value) {
12
+ return (typeof value === 'object' &&
13
+ value !== null &&
14
+ FLUENT_DESCRIPTOR in value &&
15
+ value[FLUENT_DESCRIPTOR] === true);
16
+ }
17
+ // ── String Helper ────────────────────────────────────────
18
+ export class FluentString {
19
+ [FLUENT_DESCRIPTOR] = true;
20
+ _desc;
21
+ /** @internal */ _optional = false;
22
+ _min;
23
+ _max;
24
+ _regex;
25
+ _default;
26
+ _examples;
27
+ /** Set minimum string length */
28
+ min(n) { this._min = n; return this; }
29
+ /** Set maximum string length */
30
+ max(n) { this._max = n; return this; }
31
+ /** Set regex validation pattern */
32
+ regex(pattern) { this._regex = pattern; return this; }
33
+ /** Mark as optional */
34
+ optional() {
35
+ this._optional = true;
36
+ return this;
37
+ }
38
+ /** Set human-readable description */
39
+ describe(text) { this._desc = text; return this; }
40
+ /** Set default value (appended to description for LLM) */
41
+ default(value) { this._default = value; return this; }
42
+ /** Add a single LLM few-shot example (AI-First DX) */
43
+ example(value) {
44
+ if (!this._examples)
45
+ this._examples = [];
46
+ this._examples.push(value);
47
+ return this;
48
+ }
49
+ /** Set multiple LLM few-shot examples */
50
+ examples(...values) { this._examples = values; return this; }
51
+ toDescriptor() {
52
+ const desc = this._default !== undefined
53
+ ? (this._desc ? `${this._desc} (default: '${this._default}')` : `(default: '${this._default}')`)
54
+ : this._desc;
55
+ return {
56
+ type: 'string',
57
+ ...(desc && { description: desc }),
58
+ ...(this._optional && { optional: true }),
59
+ ...(this._min !== undefined && { min: this._min }),
60
+ ...(this._max !== undefined && { max: this._max }),
61
+ ...(this._regex !== undefined && { regex: this._regex }),
62
+ ...(this._examples && { examples: this._examples }),
63
+ };
64
+ }
65
+ }
66
+ // ── Number Helper ────────────────────────────────────────
67
+ export class FluentNumber {
68
+ [FLUENT_DESCRIPTOR] = true;
69
+ _desc;
70
+ /** @internal */ _optional = false;
71
+ _min;
72
+ _max;
73
+ _int = false;
74
+ _default;
75
+ _examples;
76
+ /** Set minimum value */
77
+ min(n) { this._min = n; return this; }
78
+ /** Set maximum value */
79
+ max(n) { this._max = n; return this; }
80
+ /** Restrict to integers */
81
+ int() { this._int = true; return this; }
82
+ /** Mark as optional */
83
+ optional() {
84
+ this._optional = true;
85
+ return this;
86
+ }
87
+ /** Set human-readable description */
88
+ describe(text) { this._desc = text; return this; }
89
+ /** Set default value (appended to description for LLM) */
90
+ default(value) { this._default = value; return this; }
91
+ /** Add a single LLM few-shot example (AI-First DX) */
92
+ example(value) {
93
+ if (!this._examples)
94
+ this._examples = [];
95
+ this._examples.push(value);
96
+ return this;
97
+ }
98
+ /** Set multiple LLM few-shot examples */
99
+ examples(...values) { this._examples = values; return this; }
100
+ toDescriptor() {
101
+ const desc = this._default !== undefined
102
+ ? (this._desc ? `${this._desc} (default: ${this._default})` : `(default: ${this._default})`)
103
+ : this._desc;
104
+ return {
105
+ type: 'number',
106
+ ...(desc && { description: desc }),
107
+ ...(this._optional && { optional: true }),
108
+ ...(this._min !== undefined && { min: this._min }),
109
+ ...(this._max !== undefined && { max: this._max }),
110
+ ...(this._int && { int: true }),
111
+ ...(this._examples && { examples: this._examples }),
112
+ };
113
+ }
114
+ }
115
+ // ── Boolean Helper ───────────────────────────────────────
116
+ export class FluentBoolean {
117
+ [FLUENT_DESCRIPTOR] = true;
118
+ _desc;
119
+ /** @internal */ _optional = false;
120
+ _default;
121
+ /** Mark as optional */
122
+ optional() {
123
+ this._optional = true;
124
+ return this;
125
+ }
126
+ /** Set human-readable description */
127
+ describe(text) { this._desc = text; return this; }
128
+ /** Set default value (appended to description for LLM) */
129
+ default(value) { this._default = value; return this; }
130
+ toDescriptor() {
131
+ const desc = this._default !== undefined
132
+ ? (this._desc ? `${this._desc} (default: ${this._default})` : `(default: ${this._default})`)
133
+ : this._desc;
134
+ return {
135
+ type: 'boolean',
136
+ ...(desc && { description: desc }),
137
+ ...(this._optional && { optional: true }),
138
+ };
139
+ }
140
+ }
141
+ // ── Enum Helper ──────────────────────────────────────────
142
+ export class FluentEnum {
143
+ [FLUENT_DESCRIPTOR] = true;
144
+ _desc;
145
+ /** @internal */ _optional = false;
146
+ _examples;
147
+ _default;
148
+ _values;
149
+ constructor(...values) {
150
+ this._values = values;
151
+ }
152
+ /** Mark as optional */
153
+ optional() {
154
+ this._optional = true;
155
+ return this;
156
+ }
157
+ /** Set human-readable description */
158
+ describe(text) { this._desc = text; return this; }
159
+ /** Set default value (appended to description for LLM) */
160
+ default(value) { this._default = value; return this; }
161
+ /** Add a single LLM few-shot example (AI-First DX) */
162
+ example(value) {
163
+ if (!this._examples)
164
+ this._examples = [];
165
+ this._examples.push(value);
166
+ return this;
167
+ }
168
+ /** Set multiple LLM few-shot examples */
169
+ examples(...values) { this._examples = values; return this; }
170
+ toDescriptor() {
171
+ const desc = this._default !== undefined
172
+ ? (this._desc ? `${this._desc} (default: '${this._default}')` : `(default: '${this._default}')`)
173
+ : this._desc;
174
+ return {
175
+ enum: this._values,
176
+ ...(desc && { description: desc }),
177
+ ...(this._optional && { optional: true }),
178
+ ...(this._examples && { examples: this._examples }),
179
+ };
180
+ }
181
+ }
182
+ export class FluentArray {
183
+ [FLUENT_DESCRIPTOR] = true;
184
+ _desc;
185
+ /** @internal */ _optional = false;
186
+ _min;
187
+ _max;
188
+ /** @internal */ _itemType;
189
+ constructor(itemType) {
190
+ this._itemType = itemType;
191
+ }
192
+ /** Set minimum array length */
193
+ min(n) { this._min = n; return this; }
194
+ /** Set maximum array length */
195
+ max(n) { this._max = n; return this; }
196
+ /** Mark as optional */
197
+ optional() {
198
+ this._optional = true;
199
+ return this;
200
+ }
201
+ /** Set human-readable description */
202
+ describe(text) { this._desc = text; return this; }
203
+ toDescriptor() {
204
+ return {
205
+ array: this._itemType,
206
+ ...(this._desc && { description: this._desc }),
207
+ ...(this._optional && { optional: true }),
208
+ ...(this._min !== undefined && { min: this._min }),
209
+ ...(this._max !== undefined && { max: this._max }),
210
+ };
211
+ }
212
+ }
213
+ /**
214
+ * Resolve a FluentParamsMap to a plain ParamsMap by calling .toDescriptor()
215
+ * on any FluentDescriptor values.
216
+ * @internal
217
+ */
218
+ export function resolveFluentParams(input) {
219
+ const resolved = {};
220
+ for (const [key, value] of Object.entries(input)) {
221
+ resolved[key] = isFluentDescriptor(value)
222
+ ? value.toDescriptor()
223
+ : value;
224
+ }
225
+ return resolved;
226
+ }
227
+ //# sourceMappingURL=FluentSchemaHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentSchemaHelpers.js","sourceRoot":"","sources":["../../../src/core/builder/FluentSchemaHelpers.ts"],"names":[],"mappings":"AAkCA,6DAA6D;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AAY5E;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC7C,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,iBAAiB,IAAI,KAAK;QACzB,KAAiC,CAAC,iBAAiB,CAAC,KAAK,IAAI,CACjE,CAAC;AACN,CAAC;AAgFD,4DAA4D;AAE5D,MAAM,OAAO,YAAY;IACZ,CAAC,iBAAiB,CAAC,GAAG,IAAa,CAAC;IACrC,KAAK,CAAU;IACvB,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAU;IACd,IAAI,CAAU;IACd,MAAM,CAAU;IAChB,QAAQ,CAAU;IAClB,SAAS,CAAY;IAE7B,gCAAgC;IAChC,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,gCAAgC;IAChC,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,mCAAmC;IACnC,KAAK,CAAC,OAAe,IAAU,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpE,uBAAuB;IACvB,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAA0C,CAAC;IACtD,CAAC;IACD,qCAAqC;IACrC,QAAQ,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,OAAO,CAAC,KAAa,IAAU,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpE,sDAAsD;IACtD,OAAO,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,yCAAyC;IACzC,QAAQ,CAAC,GAAG,MAAgB,IAAU,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE7E,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC;YAChG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjB,OAAO;YACH,IAAI,EAAE,QAAiB;YACvB,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACtD,CAAC;IACN,CAAC;CACJ;AAED,4DAA4D;AAE5D,MAAM,OAAO,YAAY;IACZ,CAAC,iBAAiB,CAAC,GAAG,IAAa,CAAC;IACrC,KAAK,CAAU;IACvB,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAU;IACd,IAAI,CAAU;IACd,IAAI,GAAG,KAAK,CAAC;IACb,QAAQ,CAAU;IAClB,SAAS,CAAY;IAE7B,wBAAwB;IACxB,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,wBAAwB;IACxB,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,2BAA2B;IAC3B,GAAG,KAAW,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9C,uBAAuB;IACvB,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAA0C,CAAC;IACtD,CAAC;IACD,qCAAqC;IACrC,QAAQ,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,OAAO,CAAC,KAAa,IAAU,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpE,sDAAsD;IACtD,OAAO,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,yCAAyC;IACzC,QAAQ,CAAC,GAAG,MAAgB,IAAU,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAE7E,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjB,OAAO;YACH,IAAI,EAAE,QAAiB;YACvB,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,IAAa,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACtD,CAAC;IACN,CAAC;CACJ;AAED,4DAA4D;AAE5D,MAAM,OAAO,aAAa;IACb,CAAC,iBAAiB,CAAC,GAAG,IAAa,CAAC;IACrC,KAAK,CAAU;IACvB,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,QAAQ,CAAW;IAE3B,uBAAuB;IACvB,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAA2C,CAAC;IACvD,CAAC;IACD,qCAAqC;IACrC,QAAQ,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,OAAO,CAAC,KAAc,IAAU,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAErE,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC5F,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjB,OAAO;YACH,IAAI,EAAE,SAAkB;YACxB,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;SACrD,CAAC;IACN,CAAC;CACJ;AAED,4DAA4D;AAE5D,MAAM,OAAO,UAAU;IACV,CAAC,iBAAiB,CAAC,GAAG,IAAa,CAAC;IACrC,KAAK,CAAU;IACvB,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,SAAS,CAAO;IAChB,QAAQ,CAAK;IACJ,OAAO,CAAuB;IAE/C,YAAY,GAAG,MAAmB;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,uBAAuB;IACvB,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAA2C,CAAC;IACvD,CAAC;IACD,qCAAqC;IACrC,QAAQ,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,OAAO,CAAC,KAAQ,IAAU,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC/D,sDAAsD;IACtD,OAAO,CAAC,KAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,yCAAyC;IACzC,QAAQ,CAAC,GAAG,MAAW,IAAU,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAExE,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,QAAQ,IAAI,CAAC;YAChG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAEjB,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,OAAO;YAClB,GAAG,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;SACtD,CAAC;IACN,CAAC;CACJ;AAMD,MAAM,OAAO,WAAW;IACX,CAAC,iBAAiB,CAAC,GAAG,IAAa,CAAC;IACrC,KAAK,CAAU;IACvB,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAU;IACd,IAAI,CAAU;IACtB,gBAAgB,CAAU,SAAS,CAAgB;IAEnD,YAAY,QAAuB;QAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAED,+BAA+B;IAC/B,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,+BAA+B;IAC/B,GAAG,CAAC,CAAS,IAAU,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IACpD,uBAAuB;IACvB,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAAyC,CAAC;IACrD,CAAC;IACD,qCAAqC;IACrC,QAAQ,CAAC,IAAY,IAAU,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAEhE,YAAY;QACR,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;SACrD,CAAC;IACN,CAAC;CACJ;AAUD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAC/B,KAAsB;IAEtB,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE;YACtB,CAAC,CAAC,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}