@vurb/core 3.5.0 → 3.6.1

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 (97) hide show
  1. package/README.md +726 -677
  2. package/dist/cli/constants.js +59 -59
  3. package/dist/cli/scaffold.js +2 -0
  4. package/dist/cli/scaffold.js.map +1 -1
  5. package/dist/cli/templates/config.js +27 -27
  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.js +1 -1
  9. package/dist/cli/templates/core.js +95 -95
  10. package/dist/cli/templates/index.d.ts +1 -0
  11. package/dist/cli/templates/index.d.ts.map +1 -1
  12. package/dist/cli/templates/index.js +2 -0
  13. package/dist/cli/templates/index.js.map +1 -1
  14. package/dist/cli/templates/middleware.js +25 -25
  15. package/dist/cli/templates/model.d.ts +7 -0
  16. package/dist/cli/templates/model.d.ts.map +1 -0
  17. package/dist/cli/templates/model.js +31 -0
  18. package/dist/cli/templates/model.js.map +1 -0
  19. package/dist/cli/templates/presenter.d.ts.map +1 -1
  20. package/dist/cli/templates/presenter.js +4 -9
  21. package/dist/cli/templates/presenter.js.map +1 -1
  22. package/dist/cli/templates/readme.d.ts.map +1 -1
  23. package/dist/cli/templates/readme.js +144 -142
  24. package/dist/cli/templates/readme.js.map +1 -1
  25. package/dist/cli/templates/testing.js +84 -84
  26. package/dist/cli/templates/tools.js +46 -46
  27. package/dist/cli/templates/vectors/database.js +69 -69
  28. package/dist/cli/templates/vectors/oauth.js +63 -63
  29. package/dist/cli/templates/vectors/openapi.js +97 -97
  30. package/dist/core/builder/BuildPipeline.d.ts +56 -0
  31. package/dist/core/builder/BuildPipeline.d.ts.map +1 -0
  32. package/dist/core/builder/BuildPipeline.js +139 -0
  33. package/dist/core/builder/BuildPipeline.js.map +1 -0
  34. package/dist/core/builder/FluentToolBuilder.d.ts +64 -19
  35. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -1
  36. package/dist/core/builder/FluentToolBuilder.js +116 -114
  37. package/dist/core/builder/FluentToolBuilder.js.map +1 -1
  38. package/dist/core/builder/ProxyHandler.d.ts +26 -0
  39. package/dist/core/builder/ProxyHandler.d.ts.map +1 -0
  40. package/dist/core/builder/ProxyHandler.js +65 -0
  41. package/dist/core/builder/ProxyHandler.js.map +1 -0
  42. package/dist/core/builder/SemanticDefaults.d.ts +25 -0
  43. package/dist/core/builder/SemanticDefaults.d.ts.map +1 -0
  44. package/dist/core/builder/SemanticDefaults.js +16 -0
  45. package/dist/core/builder/SemanticDefaults.js.map +1 -0
  46. package/dist/core/builder/index.d.ts +2 -1
  47. package/dist/core/builder/index.d.ts.map +1 -1
  48. package/dist/core/builder/index.js +1 -0
  49. package/dist/core/builder/index.js.map +1 -1
  50. package/dist/core/middleware/AuditTrail.d.ts.map +1 -1
  51. package/dist/core/middleware/AuditTrail.js +6 -2
  52. package/dist/core/middleware/AuditTrail.js.map +1 -1
  53. package/dist/core/middleware/RateLimiter.d.ts.map +1 -1
  54. package/dist/core/middleware/RateLimiter.js +3 -1
  55. package/dist/core/middleware/RateLimiter.js.map +1 -1
  56. package/dist/fsm/StateMachineGate.d.ts +3 -0
  57. package/dist/fsm/StateMachineGate.d.ts.map +1 -1
  58. package/dist/fsm/StateMachineGate.js +12 -0
  59. package/dist/fsm/StateMachineGate.js.map +1 -1
  60. package/dist/index.d.ts +4 -0
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +3 -0
  63. package/dist/index.js.map +1 -1
  64. package/dist/introspection/SemanticProbe.js +49 -49
  65. package/dist/model/defineModel.d.ts +167 -0
  66. package/dist/model/defineModel.d.ts.map +1 -0
  67. package/dist/model/defineModel.js +345 -0
  68. package/dist/model/defineModel.js.map +1 -0
  69. package/dist/model/index.d.ts +8 -0
  70. package/dist/model/index.d.ts.map +1 -0
  71. package/dist/model/index.js +7 -0
  72. package/dist/model/index.js.map +1 -0
  73. package/dist/observability/TelemetryBus.d.ts.map +1 -1
  74. package/dist/observability/TelemetryBus.js +14 -13
  75. package/dist/observability/TelemetryBus.js.map +1 -1
  76. package/dist/presenter/Presenter.d.ts +21 -0
  77. package/dist/presenter/Presenter.d.ts.map +1 -1
  78. package/dist/presenter/Presenter.js +17 -8
  79. package/dist/presenter/Presenter.js.map +1 -1
  80. package/dist/presenter/PresenterPipeline.d.ts +2 -0
  81. package/dist/presenter/PresenterPipeline.d.ts.map +1 -1
  82. package/dist/presenter/PresenterPipeline.js +4 -0
  83. package/dist/presenter/PresenterPipeline.js.map +1 -1
  84. package/dist/presenter/definePresenter.d.ts.map +1 -1
  85. package/dist/presenter/definePresenter.js +13 -3
  86. package/dist/presenter/definePresenter.js.map +1 -1
  87. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -1
  88. package/dist/resource/ResourceRegistry.d.ts +3 -0
  89. package/dist/resource/ResourceRegistry.d.ts.map +1 -1
  90. package/dist/resource/ResourceRegistry.js +8 -2
  91. package/dist/resource/ResourceRegistry.js.map +1 -1
  92. package/dist/sandbox/SandboxGuard.js +7 -4
  93. package/dist/sandbox/SandboxGuard.js.map +1 -1
  94. package/dist/server/ServerAttachment.d.ts.map +1 -1
  95. package/dist/server/ServerAttachment.js +48 -9
  96. package/dist/server/ServerAttachment.js.map +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,139 @@
1
+ /**
2
+ * BuildPipeline — Compiles FluentToolBuilder state into a GroupedToolBuilder.
3
+ *
4
+ * Extracts the `_build()` pipeline from FluentToolBuilder into a
5
+ * standalone function for SRP compliance. Handles:
6
+ * - Name parsing (`domain.action`)
7
+ * - Description compilation (instructions + sandbox prompting)
8
+ * - Semantic defaults resolution
9
+ * - Handler wrapping (implicit `success()`)
10
+ * - GroupedToolBuilder assembly + middleware propagation
11
+ *
12
+ * @module
13
+ */
14
+ import {} from 'zod';
15
+ import { z } from 'zod';
16
+ import { GroupedToolBuilder } from './GroupedToolBuilder.js';
17
+ import {} from '../types.js';
18
+ import { success, TOOL_RESPONSE_BRAND } from '../response.js';
19
+ import {} from '../../presenter/Presenter.js';
20
+ import {} from '../execution/ConcurrencyGuard.js';
21
+ import {} from '../../sandbox/SandboxEngine.js';
22
+ import { SANDBOX_SYSTEM_INSTRUCTION } from '../../sandbox/index.js';
23
+ import {} from './SemanticDefaults.js';
24
+ /**
25
+ * Compile FluentToolBuilder state into a GroupedToolBuilder.
26
+ *
27
+ * @param config - Assembled configuration from builder state
28
+ * @returns A `GroupedToolBuilder` ready for registration
29
+ */
30
+ export function buildToolFromFluent(config) {
31
+ // Build accumulated with* params into ZodObject
32
+ let inputSchema;
33
+ if (Object.keys(config.withParams).length > 0) {
34
+ inputSchema = z.object(config.withParams);
35
+ }
36
+ // Parse name: 'domain.action' → tool='domain', action='action'
37
+ const dotIndex = config.name.indexOf('.');
38
+ // Bug #109 fix: reject multi-dot names early with a clear error.
39
+ if (dotIndex > 0 && config.name.indexOf('.', dotIndex + 1) !== -1) {
40
+ throw new Error(`Tool name '${config.name}' has too many dot-separated segments. ` +
41
+ `Only one dot is allowed (e.g. 'group.action'). Use f.router() for nested prefixes.`);
42
+ }
43
+ const toolName = dotIndex > 0 ? config.name.slice(0, dotIndex) : config.name;
44
+ const actionName = dotIndex > 0 ? config.name.slice(dotIndex + 1) : 'default';
45
+ // Compile description: instructions + description
46
+ const descParts = [];
47
+ if (config.instructions) {
48
+ descParts.push(`[INSTRUCTIONS] ${config.instructions}`);
49
+ }
50
+ if (config.description) {
51
+ descParts.push(config.description);
52
+ }
53
+ // HATEOAS Auto-Prompting: teach the LLM about sandbox capability
54
+ if (config.sandboxConfig) {
55
+ descParts.push(SANDBOX_SYSTEM_INSTRUCTION.trim());
56
+ }
57
+ const compiledDescription = descParts.length > 0 ? descParts.join('\n\n') : undefined;
58
+ // Resolve semantic defaults + overrides
59
+ const readOnly = config.readOnly ?? config.semanticDefaults.readOnly;
60
+ const destructive = config.destructive ?? config.semanticDefaults.destructive;
61
+ const idempotent = config.idempotent ?? config.semanticDefaults.idempotent;
62
+ // Wrap handler: (input, ctx) → (ctx, args)
63
+ const resolvedHandler = config.handler;
64
+ const wrappedHandler = async (ctx, args) => {
65
+ const result = await resolvedHandler(args, ctx);
66
+ // Guard: void/null handlers → safe fallback (Bug #41)
67
+ if (result === undefined || result === null) {
68
+ return success('OK');
69
+ }
70
+ // Auto-wrap non-ToolResponse results (implicit success)
71
+ // Primary: check brand symbol stamped by success()/error()/toolError() helpers.
72
+ // Fallback: shape-based heuristic for manually constructed ToolResponse objects.
73
+ if (typeof result === 'object' && result !== null) {
74
+ // Brand check — reliable, no false positives (Bug #127)
75
+ if (TOOL_RESPONSE_BRAND in result) {
76
+ return result;
77
+ }
78
+ // Shape heuristic — backward compat for manually constructed ToolResponse
79
+ if ('content' in result &&
80
+ Array.isArray(result.content) &&
81
+ result.content.length > 0 &&
82
+ result.content[0]?.type === 'text' &&
83
+ typeof result.content[0]?.text === 'string' &&
84
+ Object.keys(result).every(k => k === 'content' || k === 'isError')) {
85
+ return result;
86
+ }
87
+ }
88
+ // Implicit success() — the dev just returns raw data!
89
+ return success(result);
90
+ };
91
+ // Build via GroupedToolBuilder for consistency with existing pipeline
92
+ const builder = new GroupedToolBuilder(toolName);
93
+ if (compiledDescription)
94
+ builder.description(compiledDescription);
95
+ if (config.tags.length > 0)
96
+ builder.tags(...config.tags);
97
+ if (config.toonMode)
98
+ builder.toonDescription();
99
+ if (config.annotations)
100
+ builder.annotations(config.annotations);
101
+ // Propagate state sync hints
102
+ if (config.invalidatesPatterns.length > 0) {
103
+ builder.invalidates(...config.invalidatesPatterns);
104
+ }
105
+ if (config.cacheControl) {
106
+ config.cacheControl === 'immutable' ? builder.cached() : builder.stale();
107
+ }
108
+ // Propagate runtime guards
109
+ if (config.concurrency) {
110
+ builder.concurrency(config.concurrency);
111
+ }
112
+ if (config.egressMaxBytes !== undefined) {
113
+ builder.maxPayloadBytes(config.egressMaxBytes);
114
+ }
115
+ // Propagate sandbox config
116
+ if (config.sandboxConfig) {
117
+ builder.sandbox(config.sandboxConfig);
118
+ }
119
+ // Propagate FSM state gate
120
+ if (config.fsmStates) {
121
+ builder.bindState(config.fsmStates, config.fsmTransition);
122
+ }
123
+ // Apply middleware
124
+ for (const mw of config.middlewares) {
125
+ builder.use(mw);
126
+ }
127
+ // Register the single action
128
+ builder.action({
129
+ name: actionName,
130
+ handler: wrappedHandler,
131
+ ...(inputSchema ? { schema: inputSchema } : {}),
132
+ ...(readOnly !== undefined ? { readOnly } : {}),
133
+ ...(destructive !== undefined ? { destructive } : {}),
134
+ ...(idempotent !== undefined ? { idempotent } : {}),
135
+ ...(config.returns ? { returns: config.returns } : {}),
136
+ });
137
+ return builder;
138
+ }
139
+ //# sourceMappingURL=BuildPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildPipeline.js","sourceRoot":"","sources":["../../../src/core/builder/BuildPipeline.ts"],"names":[],"mappings":"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"}
@@ -26,27 +26,15 @@
26
26
  * @module
27
27
  */
28
28
  import { type ZodType, type ZodObject, type ZodRawShape } from 'zod';
29
+ import { type Model } from '../../model/defineModel.js';
29
30
  import { GroupedToolBuilder } from './GroupedToolBuilder.js';
30
31
  import { type ToolResponse, type MiddlewareFn } from '../types.js';
31
32
  import { type Presenter } from '../../presenter/Presenter.js';
32
33
  import { type ConcurrencyConfig } from '../execution/ConcurrencyGuard.js';
33
34
  import { type SandboxConfig } from '../../sandbox/SandboxEngine.js';
34
35
  import { type MiddlewareDefinition } from '../middleware/ContextDerivation.js';
35
- /**
36
- * Semantic defaults applied by each verb.
37
- * @internal
38
- */
39
- export interface SemanticDefaults {
40
- readonly readOnly?: boolean;
41
- readonly destructive?: boolean;
42
- readonly idempotent?: boolean;
43
- }
44
- /** Defaults for `f.query()` — read-only, no side effects */
45
- export declare const QUERY_DEFAULTS: SemanticDefaults;
46
- /** Defaults for `f.mutation()` — destructive, irreversible */
47
- export declare const MUTATION_DEFAULTS: SemanticDefaults;
48
- /** Defaults for `f.action()` — neutral, no assumptions */
49
- export declare const ACTION_DEFAULTS: SemanticDefaults;
36
+ import { type SemanticDefaults } from './SemanticDefaults.js';
37
+ export { type SemanticDefaults, QUERY_DEFAULTS, MUTATION_DEFAULTS, ACTION_DEFAULTS } from './SemanticDefaults.js';
50
38
  /**
51
39
  * Fluent builder that accumulates types at each step.
52
40
  *
@@ -54,13 +42,14 @@ export declare const ACTION_DEFAULTS: SemanticDefaults;
54
42
  * @typeParam TInput - Accumulated input type (built by `with*()` methods)
55
43
  * @typeParam TCtx - Accumulated context type (enriched by `.use()`)
56
44
  */
57
- export declare class FluentToolBuilder<TContext, TInput = void, TCtx = TContext> {
45
+ export declare class FluentToolBuilder<TContext, TInput = Record<string, never>, TCtx = TContext> {
58
46
  /** @internal */ readonly _name: string;
59
47
  /** @internal */ _description?: string;
60
48
  /** @internal */ _instructions?: string;
61
49
  /** @internal */ _inputSchema?: ZodObject<ZodRawShape>;
62
50
  /** @internal */ _withParams: Record<string, ZodType>;
63
51
  /** @internal */ _tags: string[];
52
+ /** @internal */ _modelRef?: Model;
64
53
  /**
65
54
  * @internal Bug #118 fix: reject duplicate parameter names.
66
55
  * All `withXxx()` methods delegate to this instead of assigning directly.
@@ -411,6 +400,27 @@ export declare class FluentToolBuilder<TContext, TInput = void, TCtx = TContext>
411
400
  withOptionalArrays<I extends 'string' | 'number' | 'boolean', R extends Record<string, string>>(itemType: I, fields: R): FluentToolBuilder<TContext, TInput & {
412
401
  [K in keyof R & string]?: (I extends 'string' ? string : I extends 'number' ? number : boolean)[] | undefined;
413
402
  }, TCtx>;
403
+ /**
404
+ * Derive tool input parameters from a Model's fillable profile.
405
+ *
406
+ * Reads the specified operation from `model.input` (fillable profiles),
407
+ * then adds each field as a parameter using the type and description from
408
+ * the Model's casts. For `create`, fields respect their schema optionality.
409
+ * For `update` and `filter`, all fields become optional.
410
+ *
411
+ * @param model - A `Model` from `defineModel()`
412
+ * @param operation - The fillable profile name (e.g. `'create'`, `'update'`, `'filter'`)
413
+ * @returns Builder with additional parameters from the Model
414
+ *
415
+ * @example
416
+ * ```typescript
417
+ * f.mutation('task.create')
418
+ * .fromModel(TaskModel, 'create')
419
+ * .withStrings({ company_slug: '...', project_slug: '...' })
420
+ * .handle(async (input, ctx) => { ... });
421
+ * ```
422
+ */
423
+ fromModel<M extends Model>(model: M, operation: string): FluentToolBuilder<TContext, TInput & Record<string, any>, TCtx>;
414
424
  /**
415
425
  * Add context-derivation middleware (tRPC-style).
416
426
  *
@@ -456,7 +466,7 @@ export declare class FluentToolBuilder<TContext, TInput = void, TCtx = TContext>
456
466
  * @param presenter - A Presenter instance
457
467
  * @returns `this` for chaining
458
468
  */
459
- returns(presenter: Presenter<unknown>): FluentToolBuilder<TContext, TInput, TCtx>;
469
+ returns(presenter: Presenter<any>): FluentToolBuilder<TContext, TInput, TCtx>;
460
470
  /**
461
471
  * Add capability tags for selective tool exposure.
462
472
  *
@@ -593,13 +603,48 @@ export declare class FluentToolBuilder<TContext, TInput = void, TCtx = TContext>
593
603
  * });
594
604
  * ```
595
605
  */
596
- handle(handler: (input: TInput extends void ? Record<string, unknown> : TInput, ctx: TCtx) => Promise<ToolResponse | unknown>): GroupedToolBuilder<TContext>;
606
+ handle(handler: (input: [TInput] extends [Record<string, never>] ? Record<string, any> : TInput, ctx: TCtx) => Promise<ToolResponse | unknown>): GroupedToolBuilder<TContext>;
607
+ /**
608
+ * Auto-generate a handler that proxies to `ctx.client` HTTP methods.
609
+ *
610
+ * Eliminates boilerplate by deriving the HTTP method from the semantic
611
+ * verb (`query` → GET, `mutation` → POST) and passing model input
612
+ * directly as query params or request body.
613
+ *
614
+ * For tools with non-trivial logic (data transformation, multi-step
615
+ * calls, conditional behavior), use `.handle()` instead.
616
+ *
617
+ * @param endpoint - API path (e.g. `'companies/standup/summary'`)
618
+ * @param options - Optional overrides
619
+ * @param options.method - Force HTTP method (`'GET'`, `'POST'`, `'PUT'`, `'DELETE'`)
620
+ * @param options.unwrap - Auto-unwrap `response.data` (default: `true`)
621
+ * @returns A `GroupedToolBuilder` ready for registration
622
+ *
623
+ * @example
624
+ * ```typescript
625
+ * const pulse = analytics.query('pulse')
626
+ * .fromModel(AnalyticsModel, 'query')
627
+ * .proxy('companies/manager-dashboard/pulse');
628
+ *
629
+ * const create = note.mutation('create')
630
+ * .fromModel(NoteModel, 'create')
631
+ * .proxy('notes');
632
+ *
633
+ * const update = note.mutation('update')
634
+ * .fromModel(NoteModel, 'update')
635
+ * .proxy('notes/:uuid', { method: 'PUT' });
636
+ * ```
637
+ */
638
+ proxy(endpoint: string, options?: {
639
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
640
+ unwrap?: boolean;
641
+ }): GroupedToolBuilder<TContext>;
597
642
  /**
598
643
  * Alias for `.handle()` — for backward compatibility.
599
644
  * @internal
600
645
  */
601
646
  resolve(handler: (args: {
602
- input: TInput extends void ? Record<string, unknown> : TInput;
647
+ input: [TInput] extends [Record<string, never>] ? Record<string, any> : TInput;
603
648
  ctx: TCtx;
604
649
  }) => Promise<ToolResponse | unknown>): GroupedToolBuilder<TContext>;
605
650
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"FluentToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/builder/FluentToolBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FluentToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/core/builder/FluentToolBuilder.ts"],"names":[],"mappings":"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"}
@@ -26,20 +26,18 @@
26
26
  * @module
27
27
  */
28
28
  import { z } from 'zod';
29
+ import { compileFieldForInput } from '../../model/defineModel.js';
29
30
  import { GroupedToolBuilder } from './GroupedToolBuilder.js';
30
31
  import {} from '../types.js';
31
- import { success, TOOL_RESPONSE_BRAND } from '../response.js';
32
32
  import {} from '../../presenter/Presenter.js';
33
33
  import {} from '../execution/ConcurrencyGuard.js';
34
34
  import {} from '../../sandbox/SandboxEngine.js';
35
- import { SANDBOX_SYSTEM_INSTRUCTION } from '../../sandbox/index.js';
36
35
  import {} from '../middleware/ContextDerivation.js';
37
- /** Defaults for `f.query()` — read-only, no side effects */
38
- export const QUERY_DEFAULTS = { readOnly: true };
39
- /** Defaults for `f.mutation()` destructive, irreversible */
40
- export const MUTATION_DEFAULTS = { destructive: true };
41
- /** Defaults for `f.action()` neutral, no assumptions */
42
- export const ACTION_DEFAULTS = {};
36
+ import {} from './SemanticDefaults.js';
37
+ import { createProxyHandler } from './ProxyHandler.js';
38
+ import { buildToolFromFluent } from './BuildPipeline.js';
39
+ // Re-export SemanticDefaults for backward compatibility
40
+ export { QUERY_DEFAULTS, MUTATION_DEFAULTS, ACTION_DEFAULTS } from './SemanticDefaults.js';
43
41
  // ── Array Item Type Resolution ───────────────────────────
44
42
  /** Resolve Zod type from array item type string */
45
43
  function resolveArrayItemType(itemType) {
@@ -64,6 +62,7 @@ export class FluentToolBuilder {
64
62
  /** @internal */ _inputSchema;
65
63
  /** @internal */ _withParams = {};
66
64
  /** @internal */ _tags = [];
65
+ /** @internal */ _modelRef;
67
66
  /**
68
67
  * @internal Bug #118 fix: reject duplicate parameter names.
69
68
  * All `withXxx()` methods delegate to this instead of assigning directly.
@@ -73,7 +72,7 @@ export class FluentToolBuilder {
73
72
  throw new Error(`Empty parameter name on tool "${this._name}". ` +
74
73
  `Each parameter must have a non-empty name.`);
75
74
  }
76
- if (name in this._withParams) {
75
+ if (Object.prototype.hasOwnProperty.call(this._withParams, name)) {
77
76
  throw new Error(`Duplicate parameter name "${name}" on tool "${this._name}". ` +
78
77
  `Each parameter must have a unique name.`);
79
78
  }
@@ -525,6 +524,51 @@ export class FluentToolBuilder {
525
524
  }
526
525
  return this;
527
526
  }
527
+ // ── Model Integration ─────────────────────────────────
528
+ /**
529
+ * Derive tool input parameters from a Model's fillable profile.
530
+ *
531
+ * Reads the specified operation from `model.input` (fillable profiles),
532
+ * then adds each field as a parameter using the type and description from
533
+ * the Model's casts. For `create`, fields respect their schema optionality.
534
+ * For `update` and `filter`, all fields become optional.
535
+ *
536
+ * @param model - A `Model` from `defineModel()`
537
+ * @param operation - The fillable profile name (e.g. `'create'`, `'update'`, `'filter'`)
538
+ * @returns Builder with additional parameters from the Model
539
+ *
540
+ * @example
541
+ * ```typescript
542
+ * f.mutation('task.create')
543
+ * .fromModel(TaskModel, 'create')
544
+ * .withStrings({ company_slug: '...', project_slug: '...' })
545
+ * .handle(async (input, ctx) => { ... });
546
+ * ```
547
+ */
548
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Model fields are runtime-defined; `any` avoids forced casting
549
+ fromModel(model, operation) {
550
+ const fieldNames = model.input[operation];
551
+ if (!fieldNames) {
552
+ throw new Error(`Model "${model.name}" has no fillable profile "${operation}". ` +
553
+ `Available: ${Object.keys(model.input).join(', ') || 'none'}`);
554
+ }
555
+ // Determine if all fields should be forced optional (update/filter semantics)
556
+ const forceOptional = operation !== 'create';
557
+ for (const fieldName of fieldNames) {
558
+ const fieldDef = model.fields[fieldName];
559
+ if (!fieldDef) {
560
+ throw new Error(`Model "${model.name}" fillable profile "${operation}" references ` +
561
+ `field "${fieldName}" which is not defined in casts.`);
562
+ }
563
+ // Compile FieldDef → Zod schema for input context
564
+ const schema = compileFieldForInput(fieldDef, forceOptional);
565
+ this._addParam(fieldName, schema);
566
+ }
567
+ // Store Model reference for .proxy() alias resolution
568
+ this._modelRef = model;
569
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
570
+ return this;
571
+ }
528
572
  use(mw) {
529
573
  // Handle MiddlewareDefinition from f.middleware()
530
574
  if (typeof mw === 'object' && mw !== null && '__brand' in mw && mw.__brand === 'MiddlewareDefinition') {
@@ -563,6 +607,7 @@ export class FluentToolBuilder {
563
607
  * @param presenter - A Presenter instance
564
608
  * @returns `this` for chaining
565
609
  */
610
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- covariant: accept any Presenter subtype
566
611
  returns(presenter) {
567
612
  this._returns = presenter;
568
613
  return this;
@@ -753,6 +798,46 @@ export class FluentToolBuilder {
753
798
  handle(handler) {
754
799
  return this._build(handler);
755
800
  }
801
+ // ── Terminal: proxy() ────────────────────────────────
802
+ /**
803
+ * Auto-generate a handler that proxies to `ctx.client` HTTP methods.
804
+ *
805
+ * Eliminates boilerplate by deriving the HTTP method from the semantic
806
+ * verb (`query` → GET, `mutation` → POST) and passing model input
807
+ * directly as query params or request body.
808
+ *
809
+ * For tools with non-trivial logic (data transformation, multi-step
810
+ * calls, conditional behavior), use `.handle()` instead.
811
+ *
812
+ * @param endpoint - API path (e.g. `'companies/standup/summary'`)
813
+ * @param options - Optional overrides
814
+ * @param options.method - Force HTTP method (`'GET'`, `'POST'`, `'PUT'`, `'DELETE'`)
815
+ * @param options.unwrap - Auto-unwrap `response.data` (default: `true`)
816
+ * @returns A `GroupedToolBuilder` ready for registration
817
+ *
818
+ * @example
819
+ * ```typescript
820
+ * const pulse = analytics.query('pulse')
821
+ * .fromModel(AnalyticsModel, 'query')
822
+ * .proxy('companies/manager-dashboard/pulse');
823
+ *
824
+ * const create = note.mutation('create')
825
+ * .fromModel(NoteModel, 'create')
826
+ * .proxy('notes');
827
+ *
828
+ * const update = note.mutation('update')
829
+ * .fromModel(NoteModel, 'update')
830
+ * .proxy('notes/:uuid', { method: 'PUT' });
831
+ * ```
832
+ */
833
+ proxy(endpoint, options) {
834
+ const httpMethod = options?.method
835
+ ?? (this._semanticDefaults.readOnly ? 'GET' : 'POST');
836
+ const shouldUnwrap = options?.unwrap ?? true;
837
+ const handler = createProxyHandler(endpoint, httpMethod, shouldUnwrap, this._modelRef);
838
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
839
+ return this._build(handler);
840
+ }
756
841
  /**
757
842
  * Alias for `.handle()` — for backward compatibility.
758
843
  * @internal
@@ -770,112 +855,29 @@ export class FluentToolBuilder {
770
855
  `Each FluentToolBuilder can only have one handler.`);
771
856
  }
772
857
  this._handlerSet = true;
773
- // Build accumulated with* params into ZodObject
774
- if (Object.keys(this._withParams).length > 0) {
775
- this._inputSchema = z.object(this._withParams);
776
- }
777
- // Parse name: 'domain.action' → tool='domain', action='action'
778
- const dotIndex = this._name.indexOf('.');
779
- // Bug #109 fix: reject multi-dot names early with a clear error.
780
- if (dotIndex > 0 && this._name.indexOf('.', dotIndex + 1) !== -1) {
781
- throw new Error(`Tool name '${this._name}' has too many dot-separated segments. ` +
782
- `Only one dot is allowed (e.g. 'group.action'). Use f.router() for nested prefixes.`);
783
- }
784
- const toolName = dotIndex > 0 ? this._name.slice(0, dotIndex) : this._name;
785
- const actionName = dotIndex > 0 ? this._name.slice(dotIndex + 1) : 'default';
786
- // Compile description: instructions + description
787
- const descParts = [];
788
- if (this._instructions) {
789
- descParts.push(`[INSTRUCTIONS] ${this._instructions}`);
790
- }
791
- if (this._description) {
792
- descParts.push(this._description);
793
- }
794
- // HATEOAS Auto-Prompting: teach the LLM about sandbox capability
795
- if (this._sandboxConfig) {
796
- descParts.push(SANDBOX_SYSTEM_INSTRUCTION.trim());
797
- }
798
- const compiledDescription = descParts.length > 0 ? descParts.join('\n\n') : undefined;
799
- // Resolve semantic defaults + overrides
800
- const readOnly = this._readOnly ?? this._semanticDefaults.readOnly;
801
- const destructive = this._destructive ?? this._semanticDefaults.destructive;
802
- const idempotent = this._idempotent ?? this._semanticDefaults.idempotent;
803
- // Wrap handler: (input, ctx) → (ctx, args)
804
- const resolvedHandler = handler;
805
- const wrappedHandler = async (ctx, args) => {
806
- const result = await resolvedHandler(args, ctx);
807
- // Guard: void/null handlers → safe fallback (Bug #41)
808
- if (result === undefined || result === null) {
809
- return success('OK');
810
- }
811
- // Auto-wrap non-ToolResponse results (implicit success)
812
- // Primary: check brand symbol stamped by success()/error()/toolError() helpers.
813
- // Fallback: shape-based heuristic for manually constructed ToolResponse objects.
814
- if (typeof result === 'object' && result !== null) {
815
- // Brand check — reliable, no false positives (Bug #127)
816
- if (TOOL_RESPONSE_BRAND in result) {
817
- return result;
818
- }
819
- // Shape heuristic — backward compat for manually constructed ToolResponse
820
- if ('content' in result &&
821
- Array.isArray(result.content) &&
822
- result.content.length > 0 &&
823
- result.content[0]?.type === 'text' &&
824
- typeof result.content[0]?.text === 'string' &&
825
- Object.keys(result).every(k => k === 'content' || k === 'isError')) {
826
- return result;
827
- }
828
- }
829
- // Implicit success() — the dev just returns raw data!
830
- return success(result);
831
- };
832
- // Build via GroupedToolBuilder for consistency with existing pipeline
833
- const builder = new GroupedToolBuilder(toolName);
834
- if (compiledDescription)
835
- builder.description(compiledDescription);
836
- if (this._tags.length > 0)
837
- builder.tags(...this._tags);
838
- if (this._toonMode)
839
- builder.toonDescription();
840
- if (this._annotations)
841
- builder.annotations(this._annotations);
842
- // Propagate state sync hints
843
- if (this._invalidatesPatterns.length > 0) {
844
- builder.invalidates(...this._invalidatesPatterns);
845
- }
846
- if (this._cacheControl) {
847
- this._cacheControl === 'immutable' ? builder.cached() : builder.stale();
848
- }
849
- // Propagate runtime guards
850
- if (this._concurrency) {
851
- builder.concurrency(this._concurrency);
852
- }
853
- if (this._egressMaxBytes !== undefined) {
854
- builder.maxPayloadBytes(this._egressMaxBytes);
855
- }
856
- // Propagate sandbox config
857
- if (this._sandboxConfig) {
858
- builder.sandbox(this._sandboxConfig);
859
- }
860
- // Propagate FSM state gate
861
- if (this._fsmStates) {
862
- builder.bindState(this._fsmStates, this._fsmTransition);
863
- }
864
- // Apply middleware
865
- for (const mw of this._middlewares) {
866
- builder.use(mw);
867
- }
868
- // Register the single action
869
- builder.action({
870
- name: actionName,
871
- handler: wrappedHandler,
872
- ...(this._inputSchema ? { schema: this._inputSchema } : {}),
873
- ...(readOnly !== undefined ? { readOnly } : {}),
874
- ...(destructive !== undefined ? { destructive } : {}),
875
- ...(idempotent !== undefined ? { idempotent } : {}),
876
- ...(this._returns ? { returns: this._returns } : {}),
858
+ return buildToolFromFluent({
859
+ name: this._name,
860
+ description: this._description,
861
+ instructions: this._instructions,
862
+ withParams: this._withParams,
863
+ tags: this._tags,
864
+ middlewares: this._middlewares,
865
+ returns: this._returns,
866
+ semanticDefaults: this._semanticDefaults,
867
+ readOnly: this._readOnly,
868
+ destructive: this._destructive,
869
+ idempotent: this._idempotent,
870
+ toonMode: this._toonMode,
871
+ annotations: this._annotations,
872
+ invalidatesPatterns: this._invalidatesPatterns,
873
+ cacheControl: this._cacheControl,
874
+ concurrency: this._concurrency,
875
+ egressMaxBytes: this._egressMaxBytes,
876
+ sandboxConfig: this._sandboxConfig,
877
+ fsmStates: this._fsmStates,
878
+ fsmTransition: this._fsmTransition,
879
+ handler: handler,
877
880
  });
878
- return builder;
879
881
  }
880
882
  }
881
883
  //# sourceMappingURL=FluentToolBuilder.js.map