@raytio/mcp-server 10.4.0 → 10.4.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.
@@ -0,0 +1,986 @@
1
+ import { z } from 'zod';
2
+ import { type PersistResourceContract } from './persist-resource-contract.js';
3
+ declare const operationSchema: z.ZodEnum<["create", "update", "filter", "read", "response"]>;
4
+ export declare const toolBindingSchema: z.ZodObject<{
5
+ toolName: z.ZodString;
6
+ authority: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
7
+ kind: z.ZodLiteral<"relation">;
8
+ resourceId: z.ZodString;
9
+ }, "strip", z.ZodTypeAny, {
10
+ kind: "relation";
11
+ resourceId: string;
12
+ }, {
13
+ kind: "relation";
14
+ resourceId: string;
15
+ }>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"endpoint">;
17
+ endpoint: z.ZodString;
18
+ fields: z.ZodArray<z.ZodString, "many">;
19
+ }, "strip", z.ZodTypeAny, {
20
+ fields: string[];
21
+ kind: "endpoint";
22
+ endpoint: string;
23
+ }, {
24
+ fields: string[];
25
+ kind: "endpoint";
26
+ endpoint: string;
27
+ }>, z.ZodObject<{
28
+ kind: z.ZodLiteral<"composite">;
29
+ sources: z.ZodArray<z.ZodString, "many">;
30
+ reason: z.ZodString;
31
+ }, "strip", z.ZodTypeAny, {
32
+ reason: string;
33
+ kind: "composite";
34
+ sources: string[];
35
+ }, {
36
+ reason: string;
37
+ kind: "composite";
38
+ sources: string[];
39
+ }>]>;
40
+ surfaces: z.ZodArray<z.ZodObject<{
41
+ operation: z.ZodEnum<["create", "update", "filter", "read", "response"]>;
42
+ fields: z.ZodArray<z.ZodObject<{
43
+ toolField: z.ZodString;
44
+ upstreamField: z.ZodString;
45
+ mapping: z.ZodEnum<["direct", "alias"]>;
46
+ requirement: z.ZodEnum<["upstream", "optional"]>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ toolField: string;
49
+ upstreamField: string;
50
+ mapping: "direct" | "alias";
51
+ requirement: "upstream" | "optional";
52
+ }, {
53
+ toolField: string;
54
+ upstreamField: string;
55
+ mapping: "direct" | "alias";
56
+ requirement: "upstream" | "optional";
57
+ }>, "many">;
58
+ overrides: z.ZodArray<z.ZodObject<{
59
+ toolField: z.ZodOptional<z.ZodString>;
60
+ upstreamField: z.ZodString;
61
+ override: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
62
+ kind: z.ZodLiteral<"database_default">;
63
+ reason: z.ZodString;
64
+ }, "strip", z.ZodTypeAny, {
65
+ reason: string;
66
+ kind: "database_default";
67
+ }, {
68
+ reason: string;
69
+ kind: "database_default";
70
+ }>, z.ZodObject<{
71
+ kind: z.ZodLiteral<"trigger">;
72
+ reason: z.ZodString;
73
+ }, "strip", z.ZodTypeAny, {
74
+ reason: string;
75
+ kind: "trigger";
76
+ }, {
77
+ reason: string;
78
+ kind: "trigger";
79
+ }>, z.ZodObject<{
80
+ kind: z.ZodLiteral<"generated">;
81
+ reason: z.ZodString;
82
+ }, "strip", z.ZodTypeAny, {
83
+ reason: string;
84
+ kind: "generated";
85
+ }, {
86
+ reason: string;
87
+ kind: "generated";
88
+ }>, z.ZodObject<{
89
+ kind: z.ZodLiteral<"auth_context">;
90
+ reason: z.ZodString;
91
+ }, "strip", z.ZodTypeAny, {
92
+ reason: string;
93
+ kind: "auth_context";
94
+ }, {
95
+ reason: string;
96
+ kind: "auth_context";
97
+ }>, z.ZodObject<{
98
+ kind: z.ZodLiteral<"composite_logic">;
99
+ reason: z.ZodString;
100
+ }, "strip", z.ZodTypeAny, {
101
+ reason: string;
102
+ kind: "composite_logic";
103
+ }, {
104
+ reason: string;
105
+ kind: "composite_logic";
106
+ }>, z.ZodObject<{
107
+ kind: z.ZodLiteral<"hidden">;
108
+ reason: z.ZodString;
109
+ }, "strip", z.ZodTypeAny, {
110
+ reason: string;
111
+ kind: "hidden";
112
+ }, {
113
+ reason: string;
114
+ kind: "hidden";
115
+ }>, z.ZodObject<{
116
+ kind: z.ZodLiteral<"nullable">;
117
+ reason: z.ZodString;
118
+ }, "strip", z.ZodTypeAny, {
119
+ reason: string;
120
+ kind: "nullable";
121
+ }, {
122
+ reason: string;
123
+ kind: "nullable";
124
+ }>, z.ZodObject<{
125
+ kind: z.ZodLiteral<"conditional">;
126
+ reason: z.ZodString;
127
+ condition: z.ZodString;
128
+ }, "strip", z.ZodTypeAny, {
129
+ reason: string;
130
+ kind: "conditional";
131
+ condition: string;
132
+ }, {
133
+ reason: string;
134
+ kind: "conditional";
135
+ condition: string;
136
+ }>]>;
137
+ }, "strip", z.ZodTypeAny, {
138
+ upstreamField: string;
139
+ override: {
140
+ reason: string;
141
+ kind: "database_default";
142
+ } | {
143
+ reason: string;
144
+ kind: "trigger";
145
+ } | {
146
+ reason: string;
147
+ kind: "generated";
148
+ } | {
149
+ reason: string;
150
+ kind: "auth_context";
151
+ } | {
152
+ reason: string;
153
+ kind: "composite_logic";
154
+ } | {
155
+ reason: string;
156
+ kind: "hidden";
157
+ } | {
158
+ reason: string;
159
+ kind: "nullable";
160
+ } | {
161
+ reason: string;
162
+ kind: "conditional";
163
+ condition: string;
164
+ };
165
+ toolField?: string | undefined;
166
+ }, {
167
+ upstreamField: string;
168
+ override: {
169
+ reason: string;
170
+ kind: "database_default";
171
+ } | {
172
+ reason: string;
173
+ kind: "trigger";
174
+ } | {
175
+ reason: string;
176
+ kind: "generated";
177
+ } | {
178
+ reason: string;
179
+ kind: "auth_context";
180
+ } | {
181
+ reason: string;
182
+ kind: "composite_logic";
183
+ } | {
184
+ reason: string;
185
+ kind: "hidden";
186
+ } | {
187
+ reason: string;
188
+ kind: "nullable";
189
+ } | {
190
+ reason: string;
191
+ kind: "conditional";
192
+ condition: string;
193
+ };
194
+ toolField?: string | undefined;
195
+ }>, "many">;
196
+ }, "strip", z.ZodTypeAny, {
197
+ operation: "filter" | "create" | "update" | "read" | "response";
198
+ fields: {
199
+ toolField: string;
200
+ upstreamField: string;
201
+ mapping: "direct" | "alias";
202
+ requirement: "upstream" | "optional";
203
+ }[];
204
+ overrides: {
205
+ upstreamField: string;
206
+ override: {
207
+ reason: string;
208
+ kind: "database_default";
209
+ } | {
210
+ reason: string;
211
+ kind: "trigger";
212
+ } | {
213
+ reason: string;
214
+ kind: "generated";
215
+ } | {
216
+ reason: string;
217
+ kind: "auth_context";
218
+ } | {
219
+ reason: string;
220
+ kind: "composite_logic";
221
+ } | {
222
+ reason: string;
223
+ kind: "hidden";
224
+ } | {
225
+ reason: string;
226
+ kind: "nullable";
227
+ } | {
228
+ reason: string;
229
+ kind: "conditional";
230
+ condition: string;
231
+ };
232
+ toolField?: string | undefined;
233
+ }[];
234
+ }, {
235
+ operation: "filter" | "create" | "update" | "read" | "response";
236
+ fields: {
237
+ toolField: string;
238
+ upstreamField: string;
239
+ mapping: "direct" | "alias";
240
+ requirement: "upstream" | "optional";
241
+ }[];
242
+ overrides: {
243
+ upstreamField: string;
244
+ override: {
245
+ reason: string;
246
+ kind: "database_default";
247
+ } | {
248
+ reason: string;
249
+ kind: "trigger";
250
+ } | {
251
+ reason: string;
252
+ kind: "generated";
253
+ } | {
254
+ reason: string;
255
+ kind: "auth_context";
256
+ } | {
257
+ reason: string;
258
+ kind: "composite_logic";
259
+ } | {
260
+ reason: string;
261
+ kind: "hidden";
262
+ } | {
263
+ reason: string;
264
+ kind: "nullable";
265
+ } | {
266
+ reason: string;
267
+ kind: "conditional";
268
+ condition: string;
269
+ };
270
+ toolField?: string | undefined;
271
+ }[];
272
+ }>, "many">;
273
+ }, "strip", z.ZodTypeAny, {
274
+ toolName: string;
275
+ authority: {
276
+ kind: "relation";
277
+ resourceId: string;
278
+ } | {
279
+ fields: string[];
280
+ kind: "endpoint";
281
+ endpoint: string;
282
+ } | {
283
+ reason: string;
284
+ kind: "composite";
285
+ sources: string[];
286
+ };
287
+ surfaces: {
288
+ operation: "filter" | "create" | "update" | "read" | "response";
289
+ fields: {
290
+ toolField: string;
291
+ upstreamField: string;
292
+ mapping: "direct" | "alias";
293
+ requirement: "upstream" | "optional";
294
+ }[];
295
+ overrides: {
296
+ upstreamField: string;
297
+ override: {
298
+ reason: string;
299
+ kind: "database_default";
300
+ } | {
301
+ reason: string;
302
+ kind: "trigger";
303
+ } | {
304
+ reason: string;
305
+ kind: "generated";
306
+ } | {
307
+ reason: string;
308
+ kind: "auth_context";
309
+ } | {
310
+ reason: string;
311
+ kind: "composite_logic";
312
+ } | {
313
+ reason: string;
314
+ kind: "hidden";
315
+ } | {
316
+ reason: string;
317
+ kind: "nullable";
318
+ } | {
319
+ reason: string;
320
+ kind: "conditional";
321
+ condition: string;
322
+ };
323
+ toolField?: string | undefined;
324
+ }[];
325
+ }[];
326
+ }, {
327
+ toolName: string;
328
+ authority: {
329
+ kind: "relation";
330
+ resourceId: string;
331
+ } | {
332
+ fields: string[];
333
+ kind: "endpoint";
334
+ endpoint: string;
335
+ } | {
336
+ reason: string;
337
+ kind: "composite";
338
+ sources: string[];
339
+ };
340
+ surfaces: {
341
+ operation: "filter" | "create" | "update" | "read" | "response";
342
+ fields: {
343
+ toolField: string;
344
+ upstreamField: string;
345
+ mapping: "direct" | "alias";
346
+ requirement: "upstream" | "optional";
347
+ }[];
348
+ overrides: {
349
+ upstreamField: string;
350
+ override: {
351
+ reason: string;
352
+ kind: "database_default";
353
+ } | {
354
+ reason: string;
355
+ kind: "trigger";
356
+ } | {
357
+ reason: string;
358
+ kind: "generated";
359
+ } | {
360
+ reason: string;
361
+ kind: "auth_context";
362
+ } | {
363
+ reason: string;
364
+ kind: "composite_logic";
365
+ } | {
366
+ reason: string;
367
+ kind: "hidden";
368
+ } | {
369
+ reason: string;
370
+ kind: "nullable";
371
+ } | {
372
+ reason: string;
373
+ kind: "conditional";
374
+ condition: string;
375
+ };
376
+ toolField?: string | undefined;
377
+ }[];
378
+ }[];
379
+ }>;
380
+ export declare const toolBindingManifestSchema: z.ZodObject<{
381
+ version: z.ZodLiteral<1>;
382
+ tools: z.ZodArray<z.ZodObject<{
383
+ toolName: z.ZodString;
384
+ authority: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
385
+ kind: z.ZodLiteral<"relation">;
386
+ resourceId: z.ZodString;
387
+ }, "strip", z.ZodTypeAny, {
388
+ kind: "relation";
389
+ resourceId: string;
390
+ }, {
391
+ kind: "relation";
392
+ resourceId: string;
393
+ }>, z.ZodObject<{
394
+ kind: z.ZodLiteral<"endpoint">;
395
+ endpoint: z.ZodString;
396
+ fields: z.ZodArray<z.ZodString, "many">;
397
+ }, "strip", z.ZodTypeAny, {
398
+ fields: string[];
399
+ kind: "endpoint";
400
+ endpoint: string;
401
+ }, {
402
+ fields: string[];
403
+ kind: "endpoint";
404
+ endpoint: string;
405
+ }>, z.ZodObject<{
406
+ kind: z.ZodLiteral<"composite">;
407
+ sources: z.ZodArray<z.ZodString, "many">;
408
+ reason: z.ZodString;
409
+ }, "strip", z.ZodTypeAny, {
410
+ reason: string;
411
+ kind: "composite";
412
+ sources: string[];
413
+ }, {
414
+ reason: string;
415
+ kind: "composite";
416
+ sources: string[];
417
+ }>]>;
418
+ surfaces: z.ZodArray<z.ZodObject<{
419
+ operation: z.ZodEnum<["create", "update", "filter", "read", "response"]>;
420
+ fields: z.ZodArray<z.ZodObject<{
421
+ toolField: z.ZodString;
422
+ upstreamField: z.ZodString;
423
+ mapping: z.ZodEnum<["direct", "alias"]>;
424
+ requirement: z.ZodEnum<["upstream", "optional"]>;
425
+ }, "strip", z.ZodTypeAny, {
426
+ toolField: string;
427
+ upstreamField: string;
428
+ mapping: "direct" | "alias";
429
+ requirement: "upstream" | "optional";
430
+ }, {
431
+ toolField: string;
432
+ upstreamField: string;
433
+ mapping: "direct" | "alias";
434
+ requirement: "upstream" | "optional";
435
+ }>, "many">;
436
+ overrides: z.ZodArray<z.ZodObject<{
437
+ toolField: z.ZodOptional<z.ZodString>;
438
+ upstreamField: z.ZodString;
439
+ override: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
440
+ kind: z.ZodLiteral<"database_default">;
441
+ reason: z.ZodString;
442
+ }, "strip", z.ZodTypeAny, {
443
+ reason: string;
444
+ kind: "database_default";
445
+ }, {
446
+ reason: string;
447
+ kind: "database_default";
448
+ }>, z.ZodObject<{
449
+ kind: z.ZodLiteral<"trigger">;
450
+ reason: z.ZodString;
451
+ }, "strip", z.ZodTypeAny, {
452
+ reason: string;
453
+ kind: "trigger";
454
+ }, {
455
+ reason: string;
456
+ kind: "trigger";
457
+ }>, z.ZodObject<{
458
+ kind: z.ZodLiteral<"generated">;
459
+ reason: z.ZodString;
460
+ }, "strip", z.ZodTypeAny, {
461
+ reason: string;
462
+ kind: "generated";
463
+ }, {
464
+ reason: string;
465
+ kind: "generated";
466
+ }>, z.ZodObject<{
467
+ kind: z.ZodLiteral<"auth_context">;
468
+ reason: z.ZodString;
469
+ }, "strip", z.ZodTypeAny, {
470
+ reason: string;
471
+ kind: "auth_context";
472
+ }, {
473
+ reason: string;
474
+ kind: "auth_context";
475
+ }>, z.ZodObject<{
476
+ kind: z.ZodLiteral<"composite_logic">;
477
+ reason: z.ZodString;
478
+ }, "strip", z.ZodTypeAny, {
479
+ reason: string;
480
+ kind: "composite_logic";
481
+ }, {
482
+ reason: string;
483
+ kind: "composite_logic";
484
+ }>, z.ZodObject<{
485
+ kind: z.ZodLiteral<"hidden">;
486
+ reason: z.ZodString;
487
+ }, "strip", z.ZodTypeAny, {
488
+ reason: string;
489
+ kind: "hidden";
490
+ }, {
491
+ reason: string;
492
+ kind: "hidden";
493
+ }>, z.ZodObject<{
494
+ kind: z.ZodLiteral<"nullable">;
495
+ reason: z.ZodString;
496
+ }, "strip", z.ZodTypeAny, {
497
+ reason: string;
498
+ kind: "nullable";
499
+ }, {
500
+ reason: string;
501
+ kind: "nullable";
502
+ }>, z.ZodObject<{
503
+ kind: z.ZodLiteral<"conditional">;
504
+ reason: z.ZodString;
505
+ condition: z.ZodString;
506
+ }, "strip", z.ZodTypeAny, {
507
+ reason: string;
508
+ kind: "conditional";
509
+ condition: string;
510
+ }, {
511
+ reason: string;
512
+ kind: "conditional";
513
+ condition: string;
514
+ }>]>;
515
+ }, "strip", z.ZodTypeAny, {
516
+ upstreamField: string;
517
+ override: {
518
+ reason: string;
519
+ kind: "database_default";
520
+ } | {
521
+ reason: string;
522
+ kind: "trigger";
523
+ } | {
524
+ reason: string;
525
+ kind: "generated";
526
+ } | {
527
+ reason: string;
528
+ kind: "auth_context";
529
+ } | {
530
+ reason: string;
531
+ kind: "composite_logic";
532
+ } | {
533
+ reason: string;
534
+ kind: "hidden";
535
+ } | {
536
+ reason: string;
537
+ kind: "nullable";
538
+ } | {
539
+ reason: string;
540
+ kind: "conditional";
541
+ condition: string;
542
+ };
543
+ toolField?: string | undefined;
544
+ }, {
545
+ upstreamField: string;
546
+ override: {
547
+ reason: string;
548
+ kind: "database_default";
549
+ } | {
550
+ reason: string;
551
+ kind: "trigger";
552
+ } | {
553
+ reason: string;
554
+ kind: "generated";
555
+ } | {
556
+ reason: string;
557
+ kind: "auth_context";
558
+ } | {
559
+ reason: string;
560
+ kind: "composite_logic";
561
+ } | {
562
+ reason: string;
563
+ kind: "hidden";
564
+ } | {
565
+ reason: string;
566
+ kind: "nullable";
567
+ } | {
568
+ reason: string;
569
+ kind: "conditional";
570
+ condition: string;
571
+ };
572
+ toolField?: string | undefined;
573
+ }>, "many">;
574
+ }, "strip", z.ZodTypeAny, {
575
+ operation: "filter" | "create" | "update" | "read" | "response";
576
+ fields: {
577
+ toolField: string;
578
+ upstreamField: string;
579
+ mapping: "direct" | "alias";
580
+ requirement: "upstream" | "optional";
581
+ }[];
582
+ overrides: {
583
+ upstreamField: string;
584
+ override: {
585
+ reason: string;
586
+ kind: "database_default";
587
+ } | {
588
+ reason: string;
589
+ kind: "trigger";
590
+ } | {
591
+ reason: string;
592
+ kind: "generated";
593
+ } | {
594
+ reason: string;
595
+ kind: "auth_context";
596
+ } | {
597
+ reason: string;
598
+ kind: "composite_logic";
599
+ } | {
600
+ reason: string;
601
+ kind: "hidden";
602
+ } | {
603
+ reason: string;
604
+ kind: "nullable";
605
+ } | {
606
+ reason: string;
607
+ kind: "conditional";
608
+ condition: string;
609
+ };
610
+ toolField?: string | undefined;
611
+ }[];
612
+ }, {
613
+ operation: "filter" | "create" | "update" | "read" | "response";
614
+ fields: {
615
+ toolField: string;
616
+ upstreamField: string;
617
+ mapping: "direct" | "alias";
618
+ requirement: "upstream" | "optional";
619
+ }[];
620
+ overrides: {
621
+ upstreamField: string;
622
+ override: {
623
+ reason: string;
624
+ kind: "database_default";
625
+ } | {
626
+ reason: string;
627
+ kind: "trigger";
628
+ } | {
629
+ reason: string;
630
+ kind: "generated";
631
+ } | {
632
+ reason: string;
633
+ kind: "auth_context";
634
+ } | {
635
+ reason: string;
636
+ kind: "composite_logic";
637
+ } | {
638
+ reason: string;
639
+ kind: "hidden";
640
+ } | {
641
+ reason: string;
642
+ kind: "nullable";
643
+ } | {
644
+ reason: string;
645
+ kind: "conditional";
646
+ condition: string;
647
+ };
648
+ toolField?: string | undefined;
649
+ }[];
650
+ }>, "many">;
651
+ }, "strip", z.ZodTypeAny, {
652
+ toolName: string;
653
+ authority: {
654
+ kind: "relation";
655
+ resourceId: string;
656
+ } | {
657
+ fields: string[];
658
+ kind: "endpoint";
659
+ endpoint: string;
660
+ } | {
661
+ reason: string;
662
+ kind: "composite";
663
+ sources: string[];
664
+ };
665
+ surfaces: {
666
+ operation: "filter" | "create" | "update" | "read" | "response";
667
+ fields: {
668
+ toolField: string;
669
+ upstreamField: string;
670
+ mapping: "direct" | "alias";
671
+ requirement: "upstream" | "optional";
672
+ }[];
673
+ overrides: {
674
+ upstreamField: string;
675
+ override: {
676
+ reason: string;
677
+ kind: "database_default";
678
+ } | {
679
+ reason: string;
680
+ kind: "trigger";
681
+ } | {
682
+ reason: string;
683
+ kind: "generated";
684
+ } | {
685
+ reason: string;
686
+ kind: "auth_context";
687
+ } | {
688
+ reason: string;
689
+ kind: "composite_logic";
690
+ } | {
691
+ reason: string;
692
+ kind: "hidden";
693
+ } | {
694
+ reason: string;
695
+ kind: "nullable";
696
+ } | {
697
+ reason: string;
698
+ kind: "conditional";
699
+ condition: string;
700
+ };
701
+ toolField?: string | undefined;
702
+ }[];
703
+ }[];
704
+ }, {
705
+ toolName: string;
706
+ authority: {
707
+ kind: "relation";
708
+ resourceId: string;
709
+ } | {
710
+ fields: string[];
711
+ kind: "endpoint";
712
+ endpoint: string;
713
+ } | {
714
+ reason: string;
715
+ kind: "composite";
716
+ sources: string[];
717
+ };
718
+ surfaces: {
719
+ operation: "filter" | "create" | "update" | "read" | "response";
720
+ fields: {
721
+ toolField: string;
722
+ upstreamField: string;
723
+ mapping: "direct" | "alias";
724
+ requirement: "upstream" | "optional";
725
+ }[];
726
+ overrides: {
727
+ upstreamField: string;
728
+ override: {
729
+ reason: string;
730
+ kind: "database_default";
731
+ } | {
732
+ reason: string;
733
+ kind: "trigger";
734
+ } | {
735
+ reason: string;
736
+ kind: "generated";
737
+ } | {
738
+ reason: string;
739
+ kind: "auth_context";
740
+ } | {
741
+ reason: string;
742
+ kind: "composite_logic";
743
+ } | {
744
+ reason: string;
745
+ kind: "hidden";
746
+ } | {
747
+ reason: string;
748
+ kind: "nullable";
749
+ } | {
750
+ reason: string;
751
+ kind: "conditional";
752
+ condition: string;
753
+ };
754
+ toolField?: string | undefined;
755
+ }[];
756
+ }[];
757
+ }>, "many">;
758
+ }, "strip", z.ZodTypeAny, {
759
+ version: 1;
760
+ tools: {
761
+ toolName: string;
762
+ authority: {
763
+ kind: "relation";
764
+ resourceId: string;
765
+ } | {
766
+ fields: string[];
767
+ kind: "endpoint";
768
+ endpoint: string;
769
+ } | {
770
+ reason: string;
771
+ kind: "composite";
772
+ sources: string[];
773
+ };
774
+ surfaces: {
775
+ operation: "filter" | "create" | "update" | "read" | "response";
776
+ fields: {
777
+ toolField: string;
778
+ upstreamField: string;
779
+ mapping: "direct" | "alias";
780
+ requirement: "upstream" | "optional";
781
+ }[];
782
+ overrides: {
783
+ upstreamField: string;
784
+ override: {
785
+ reason: string;
786
+ kind: "database_default";
787
+ } | {
788
+ reason: string;
789
+ kind: "trigger";
790
+ } | {
791
+ reason: string;
792
+ kind: "generated";
793
+ } | {
794
+ reason: string;
795
+ kind: "auth_context";
796
+ } | {
797
+ reason: string;
798
+ kind: "composite_logic";
799
+ } | {
800
+ reason: string;
801
+ kind: "hidden";
802
+ } | {
803
+ reason: string;
804
+ kind: "nullable";
805
+ } | {
806
+ reason: string;
807
+ kind: "conditional";
808
+ condition: string;
809
+ };
810
+ toolField?: string | undefined;
811
+ }[];
812
+ }[];
813
+ }[];
814
+ }, {
815
+ version: 1;
816
+ tools: {
817
+ toolName: string;
818
+ authority: {
819
+ kind: "relation";
820
+ resourceId: string;
821
+ } | {
822
+ fields: string[];
823
+ kind: "endpoint";
824
+ endpoint: string;
825
+ } | {
826
+ reason: string;
827
+ kind: "composite";
828
+ sources: string[];
829
+ };
830
+ surfaces: {
831
+ operation: "filter" | "create" | "update" | "read" | "response";
832
+ fields: {
833
+ toolField: string;
834
+ upstreamField: string;
835
+ mapping: "direct" | "alias";
836
+ requirement: "upstream" | "optional";
837
+ }[];
838
+ overrides: {
839
+ upstreamField: string;
840
+ override: {
841
+ reason: string;
842
+ kind: "database_default";
843
+ } | {
844
+ reason: string;
845
+ kind: "trigger";
846
+ } | {
847
+ reason: string;
848
+ kind: "generated";
849
+ } | {
850
+ reason: string;
851
+ kind: "auth_context";
852
+ } | {
853
+ reason: string;
854
+ kind: "composite_logic";
855
+ } | {
856
+ reason: string;
857
+ kind: "hidden";
858
+ } | {
859
+ reason: string;
860
+ kind: "nullable";
861
+ } | {
862
+ reason: string;
863
+ kind: "conditional";
864
+ condition: string;
865
+ };
866
+ toolField?: string | undefined;
867
+ }[];
868
+ }[];
869
+ }[];
870
+ }>;
871
+ export type ToolBindingManifest = z.infer<typeof toolBindingManifestSchema>;
872
+ export type ToolBinding = z.infer<typeof toolBindingSchema>;
873
+ /**
874
+ * Initial manifest for direct PPM bindings. Each operation has its own field
875
+ * surface: sharing a relation never implies identical create, update, filter,
876
+ * and response semantics.
877
+ */
878
+ export declare const toolBindingManifest: {
879
+ readonly version: 1;
880
+ readonly tools: [{
881
+ readonly toolName: "ppm_work_item_create";
882
+ readonly authority: {
883
+ readonly kind: "relation";
884
+ readonly resourceId: "ppm_work_items";
885
+ };
886
+ readonly surfaces: [{
887
+ readonly operation: "create";
888
+ readonly fields: [{
889
+ readonly toolField: "role_id";
890
+ readonly upstreamField: "role_id";
891
+ readonly mapping: "direct";
892
+ readonly requirement: "upstream";
893
+ }];
894
+ readonly overrides: [{
895
+ readonly upstreamField: "tenant_id";
896
+ readonly override: {
897
+ readonly kind: "auth_context";
898
+ readonly reason: "Tenant identity is derived from the authenticated JWT and is never caller-controlled.";
899
+ };
900
+ }, {
901
+ readonly upstreamField: "created_date";
902
+ readonly override: {
903
+ readonly kind: "trigger";
904
+ readonly reason: "Audit timestamps are populated by Persist rather than accepted from MCP callers.";
905
+ };
906
+ }, {
907
+ readonly upstreamField: "updated_date";
908
+ readonly override: {
909
+ readonly kind: "trigger";
910
+ readonly reason: "Audit timestamps are populated by Persist rather than accepted from MCP callers.";
911
+ };
912
+ }];
913
+ }];
914
+ }, {
915
+ readonly toolName: "ppm_template_slot_create";
916
+ readonly authority: {
917
+ readonly kind: "relation";
918
+ readonly resourceId: "ppm_epic_template_slots";
919
+ };
920
+ readonly surfaces: [{
921
+ readonly operation: "create";
922
+ readonly fields: [{
923
+ readonly toolField: "template_id";
924
+ readonly upstreamField: "template_id";
925
+ readonly mapping: "direct";
926
+ readonly requirement: "upstream";
927
+ }, {
928
+ readonly toolField: "slot_code";
929
+ readonly upstreamField: "slot_code";
930
+ readonly mapping: "direct";
931
+ readonly requirement: "upstream";
932
+ }, {
933
+ readonly toolField: "slot_name";
934
+ readonly upstreamField: "slot_name";
935
+ readonly mapping: "direct";
936
+ readonly requirement: "upstream";
937
+ }, {
938
+ readonly toolField: "slot_order";
939
+ readonly upstreamField: "slot_order";
940
+ readonly mapping: "direct";
941
+ readonly requirement: "optional";
942
+ }, {
943
+ readonly toolField: "role_id";
944
+ readonly upstreamField: "role_id";
945
+ readonly mapping: "direct";
946
+ readonly requirement: "upstream";
947
+ }];
948
+ readonly overrides: [{
949
+ readonly upstreamField: "tenant_id";
950
+ readonly override: {
951
+ readonly kind: "auth_context";
952
+ readonly reason: "Tenant identity is derived from the authenticated JWT and is never caller-controlled.";
953
+ };
954
+ }, {
955
+ readonly upstreamField: "slot_order";
956
+ readonly toolField: "slot_order";
957
+ readonly override: {
958
+ readonly kind: "database_default";
959
+ readonly reason: "Persist supplies the default ordering value when the caller omits slot_order.";
960
+ };
961
+ }];
962
+ }];
963
+ }];
964
+ };
965
+ export interface ToolFieldSurface {
966
+ toolName: string;
967
+ operation: z.infer<typeof operationSchema>;
968
+ fields: ReadonlySet<string>;
969
+ requiredFields: ReadonlySet<string>;
970
+ }
971
+ /** Validate references against the pinned upstream contract and MCP schemas. */
972
+ export declare function validateToolBindingManifest(input: unknown, contract: PersistResourceContract, toolSurfaces: readonly ToolFieldSurface[]): ToolBindingManifest;
973
+ /**
974
+ * Whether a tool's create field is required, for tool schemas while the
975
+ * contract rollout remains incremental.
976
+ *
977
+ * `requirement: 'upstream'` follows Persist: for a relation binding the
978
+ * answer is the pinned resource contract's `required` flag for the mapped
979
+ * column, so a column that becomes nullable upstream makes the MCP field
980
+ * optional on the next contract sync. Endpoint and composite bindings have
981
+ * no column metadata, so `upstream` there means required.
982
+ * `requirement: 'optional'` is always optional.
983
+ */
984
+ export declare function isCreateFieldRequired(toolName: string, toolField: string, contract?: PersistResourceContract): boolean;
985
+ export {};
986
+ //# sourceMappingURL=tool-binding-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-binding-manifest.d.ts","sourceRoot":"","sources":["../../src/contracts/tool-binding-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAC;AAExC,QAAA,MAAM,eAAe,+DAA6D,CAAC;AAmDnF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEQ,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACrC;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,mBAAmB,CAwFrB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,uBAAuB,GACjC,OAAO,CAmBT"}
@@ -0,0 +1,242 @@
1
+ import { z } from 'zod';
2
+ import { loadPersistResourceContract, } from './persist-resource-contract.js';
3
+ const operationSchema = z.enum(['create', 'update', 'filter', 'read', 'response']);
4
+ const nonEmptyReason = z.string().trim().min(1, 'Every semantic override requires a reason');
5
+ const mappedFieldSchema = z.object({
6
+ toolField: z.string().min(1),
7
+ upstreamField: z.string().min(1),
8
+ mapping: z.enum(['direct', 'alias']),
9
+ requirement: z.enum(['upstream', 'optional']),
10
+ });
11
+ const overrideSchema = z.discriminatedUnion('kind', [
12
+ z.object({ kind: z.literal('database_default'), reason: nonEmptyReason }),
13
+ z.object({ kind: z.literal('trigger'), reason: nonEmptyReason }),
14
+ z.object({ kind: z.literal('generated'), reason: nonEmptyReason }),
15
+ z.object({ kind: z.literal('auth_context'), reason: nonEmptyReason }),
16
+ z.object({ kind: z.literal('composite_logic'), reason: nonEmptyReason }),
17
+ z.object({ kind: z.literal('hidden'), reason: nonEmptyReason }),
18
+ z.object({ kind: z.literal('nullable'), reason: nonEmptyReason }),
19
+ z.object({
20
+ kind: z.literal('conditional'),
21
+ reason: nonEmptyReason,
22
+ condition: z.string().trim().min(1),
23
+ }),
24
+ ]);
25
+ const overriddenFieldSchema = z.object({
26
+ toolField: z.string().min(1).optional(),
27
+ upstreamField: z.string().min(1),
28
+ override: overrideSchema,
29
+ });
30
+ const surfaceSchema = z.object({
31
+ operation: operationSchema,
32
+ fields: z.array(mappedFieldSchema),
33
+ overrides: z.array(overriddenFieldSchema),
34
+ });
35
+ const authoritySchema = z.discriminatedUnion('kind', [
36
+ z.object({ kind: z.literal('relation'), resourceId: z.string().min(1) }),
37
+ z.object({
38
+ kind: z.literal('endpoint'),
39
+ endpoint: z.string().min(1),
40
+ fields: z.array(z.string().min(1)),
41
+ }),
42
+ z.object({
43
+ kind: z.literal('composite'),
44
+ sources: z.array(z.string().min(1)).min(2),
45
+ reason: nonEmptyReason,
46
+ }),
47
+ ]);
48
+ export const toolBindingSchema = z.object({
49
+ toolName: z.string().min(1),
50
+ authority: authoritySchema,
51
+ surfaces: z.array(surfaceSchema).min(1),
52
+ });
53
+ export const toolBindingManifestSchema = z.object({
54
+ version: z.literal(1),
55
+ tools: z.array(toolBindingSchema),
56
+ });
57
+ /**
58
+ * Initial manifest for direct PPM bindings. Each operation has its own field
59
+ * surface: sharing a relation never implies identical create, update, filter,
60
+ * and response semantics.
61
+ */
62
+ export const toolBindingManifest = {
63
+ version: 1,
64
+ tools: [
65
+ {
66
+ toolName: 'ppm_work_item_create',
67
+ authority: { kind: 'relation', resourceId: 'ppm_work_items' },
68
+ surfaces: [
69
+ {
70
+ operation: 'create',
71
+ fields: [{ toolField: 'role_id', upstreamField: 'role_id', mapping: 'direct', requirement: 'upstream' }],
72
+ overrides: [
73
+ {
74
+ upstreamField: 'tenant_id',
75
+ override: {
76
+ kind: 'auth_context',
77
+ reason: 'Tenant identity is derived from the authenticated JWT and is never caller-controlled.',
78
+ },
79
+ },
80
+ {
81
+ upstreamField: 'created_date',
82
+ override: {
83
+ kind: 'trigger',
84
+ reason: 'Audit timestamps are populated by Persist rather than accepted from MCP callers.',
85
+ },
86
+ },
87
+ {
88
+ upstreamField: 'updated_date',
89
+ override: {
90
+ kind: 'trigger',
91
+ reason: 'Audit timestamps are populated by Persist rather than accepted from MCP callers.',
92
+ },
93
+ },
94
+ ],
95
+ },
96
+ ],
97
+ },
98
+ {
99
+ toolName: 'ppm_template_slot_create',
100
+ authority: { kind: 'relation', resourceId: 'ppm_epic_template_slots' },
101
+ surfaces: [
102
+ {
103
+ operation: 'create',
104
+ fields: [
105
+ { toolField: 'template_id', upstreamField: 'template_id', mapping: 'direct', requirement: 'upstream' },
106
+ { toolField: 'slot_code', upstreamField: 'slot_code', mapping: 'direct', requirement: 'upstream' },
107
+ { toolField: 'slot_name', upstreamField: 'slot_name', mapping: 'direct', requirement: 'upstream' },
108
+ { toolField: 'slot_order', upstreamField: 'slot_order', mapping: 'direct', requirement: 'optional' },
109
+ { toolField: 'role_id', upstreamField: 'role_id', mapping: 'direct', requirement: 'upstream' },
110
+ ],
111
+ overrides: [
112
+ {
113
+ upstreamField: 'tenant_id',
114
+ override: {
115
+ kind: 'auth_context',
116
+ reason: 'Tenant identity is derived from the authenticated JWT and is never caller-controlled.',
117
+ },
118
+ },
119
+ {
120
+ upstreamField: 'slot_order',
121
+ toolField: 'slot_order',
122
+ override: {
123
+ kind: 'database_default',
124
+ reason: 'Persist supplies the default ordering value when the caller omits slot_order.',
125
+ },
126
+ },
127
+ ],
128
+ },
129
+ ],
130
+ },
131
+ ],
132
+ };
133
+ /** Validate references against the pinned upstream contract and MCP schemas. */
134
+ export function validateToolBindingManifest(input, contract, toolSurfaces) {
135
+ const manifest = toolBindingManifestSchema.parse(input);
136
+ const resources = new Map(contract.resources.map((resource) => [resource.resource_id, resource]));
137
+ const schemas = new Map(toolSurfaces.map((surface) => [
138
+ `${surface.toolName}:${surface.operation}`,
139
+ surface.fields,
140
+ ]));
141
+ const toolNames = new Set();
142
+ for (const tool of manifest.tools) {
143
+ if (toolNames.has(tool.toolName))
144
+ throw new Error(`Duplicate binding for tool ${tool.toolName}`);
145
+ toolNames.add(tool.toolName);
146
+ let upstreamFields;
147
+ if (tool.authority.kind === 'relation') {
148
+ const resource = resources.get(tool.authority.resourceId);
149
+ if (!resource) {
150
+ throw new Error(`${tool.toolName}: unknown Persist resource ${tool.authority.resourceId}`);
151
+ }
152
+ upstreamFields = new Set(resource.fields.map((field) => field.name));
153
+ }
154
+ else if (tool.authority.kind === 'endpoint') {
155
+ upstreamFields = new Set(tool.authority.fields);
156
+ }
157
+ else {
158
+ upstreamFields = new Set(tool.authority.sources);
159
+ }
160
+ const operations = new Set();
161
+ for (const surface of tool.surfaces) {
162
+ if (operations.has(surface.operation)) {
163
+ throw new Error(`${tool.toolName}: duplicate ${surface.operation} surface`);
164
+ }
165
+ operations.add(surface.operation);
166
+ if (tool.authority.kind === 'relation') {
167
+ const resource = resources.get(tool.authority.resourceId);
168
+ const expected = surface.operation === 'filter' || surface.operation === 'response'
169
+ ? 'read'
170
+ : surface.operation;
171
+ if (!resource.operations.includes(expected)) {
172
+ throw new Error(`${tool.toolName}: resource ${tool.authority.resourceId} does not support ${expected}`);
173
+ }
174
+ }
175
+ const schemaFields = schemas.get(`${tool.toolName}:${surface.operation}`);
176
+ if (!schemaFields)
177
+ throw new Error(`${tool.toolName}: missing MCP ${surface.operation} schema`);
178
+ const seenUpstream = new Set();
179
+ for (const field of [...surface.fields, ...surface.overrides]) {
180
+ if (!upstreamFields.has(field.upstreamField)) {
181
+ throw new Error(`${tool.toolName}.${surface.operation}: upstream field ${field.upstreamField} does not exist`);
182
+ }
183
+ if (seenUpstream.has(field.upstreamField) && !('override' in field)) {
184
+ throw new Error(`${tool.toolName}.${surface.operation}: duplicate mapping for ${field.upstreamField}`);
185
+ }
186
+ seenUpstream.add(field.upstreamField);
187
+ if (field.toolField && !schemaFields.has(field.toolField)) {
188
+ throw new Error(`${tool.toolName}.${surface.operation}: MCP field ${field.toolField} does not exist (obsolete alias or stale override)`);
189
+ }
190
+ }
191
+ for (const field of surface.fields) {
192
+ if (field.mapping === 'direct' && field.toolField !== field.upstreamField) {
193
+ throw new Error(`${tool.toolName}.${surface.operation}: ${field.toolField} must be declared as an alias`);
194
+ }
195
+ if (field.mapping === 'alias' && field.toolField === field.upstreamField) {
196
+ throw new Error(`${tool.toolName}.${surface.operation}: alias ${field.toolField} is obsolete`);
197
+ }
198
+ if (tool.authority.kind === 'relation' && field.requirement === 'upstream') {
199
+ const resource = resources.get(tool.authority.resourceId);
200
+ const upstreamRequired = resource.fields.find((candidate) => candidate.name === field.upstreamField).required;
201
+ const toolRequired = schemaFields.has(field.toolField) &&
202
+ toolSurfaces.find((candidate) => candidate.toolName === tool.toolName && candidate.operation === surface.operation).requiredFields.has(field.toolField);
203
+ if (toolRequired !== upstreamRequired) {
204
+ throw new Error(`${tool.toolName}.${field.toolField} required=${toolRequired}, but Persist ` +
205
+ `${field.upstreamField} required=${upstreamRequired}`);
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }
211
+ return manifest;
212
+ }
213
+ let pinnedContract;
214
+ /**
215
+ * Whether a tool's create field is required, for tool schemas while the
216
+ * contract rollout remains incremental.
217
+ *
218
+ * `requirement: 'upstream'` follows Persist: for a relation binding the
219
+ * answer is the pinned resource contract's `required` flag for the mapped
220
+ * column, so a column that becomes nullable upstream makes the MCP field
221
+ * optional on the next contract sync. Endpoint and composite bindings have
222
+ * no column metadata, so `upstream` there means required.
223
+ * `requirement: 'optional'` is always optional.
224
+ */
225
+ export function isCreateFieldRequired(toolName, toolField, contract) {
226
+ const tool = toolBindingManifest.tools.find((entry) => entry.toolName === toolName);
227
+ const create = tool?.surfaces.find((surface) => surface.operation === 'create');
228
+ const field = create?.fields.find((candidate) => candidate.toolField === toolField);
229
+ if (!tool || !field || field.requirement !== 'upstream')
230
+ return false;
231
+ if (tool.authority.kind !== 'relation')
232
+ return true;
233
+ const source = contract ?? (pinnedContract ??= loadPersistResourceContract());
234
+ const resourceId = tool.authority.resourceId;
235
+ const resource = source.resources.find((candidate) => candidate.resource_id === resourceId);
236
+ const column = resource?.fields.find((candidate) => candidate.name === field.upstreamField);
237
+ if (!column) {
238
+ throw new Error(`${toolName}.${toolField}: Persist field ${resourceId}.${field.upstreamField} is not in the pinned contract`);
239
+ }
240
+ return column.required;
241
+ }
242
+ //# sourceMappingURL=tool-binding-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-binding-manifest.js","sourceRoot":"","sources":["../../src/contracts/tool-binding-manifest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template-slot-create.d.ts","sourceRoot":"","sources":["../../../src/tools/ppm/template-slot-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAOtC,eAAO,MAAM,sBAAsB,EAAE,IA4CpC,CAAC"}
1
+ {"version":3,"file":"template-slot-create.d.ts","sourceRoot":"","sources":["../../../src/tools/ppm/template-slot-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAOtC,eAAO,MAAM,sBAAsB,EAAE,IA2CpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { successResponse, errorResponse, API_ERROR } from '../types.js';
3
3
  import { EPIC_TEMPLATE_SLOT_SELECT } from '../../ppm/projection.js';
4
- import { persistContract, withPersistInsertRequirement } from '../../contracts/persist-contract.js';
4
+ import { isCreateFieldRequired } from '../../contracts/tool-binding-manifest.js';
5
5
  import { cap } from '../../capabilities/tool-capability.js';
6
6
  export const templateSlotCreateTool = {
7
7
  name: 'ppm_template_slot_create',
@@ -12,7 +12,9 @@ export const templateSlotCreateTool = {
12
12
  slot_name: z.string().max(256).describe('Display label for this slot'),
13
13
  slot_description: z.string().nullable().optional().describe('Description of what this slot represents'),
14
14
  work_item_type: z.string().max(32).nullable().optional().describe('Work item type created for this slot (e.g. TASK, STORY)'),
15
- role_id: withPersistInsertRequirement(z.string(), persistContract.fields.ppmTemplateSlotCreateRoleId).describe('UUID of the WRM role for this slot'),
15
+ role_id: (isCreateFieldRequired('ppm_template_slot_create', 'role_id')
16
+ ? z.string()
17
+ : z.string().optional()).describe('UUID of the WRM role for this slot'),
16
18
  slot_order: z.number().int().nullable().optional().describe('Sort order within the template (default 0)'),
17
19
  }),
18
20
  capabilities: [
@@ -1 +1 @@
1
- {"version":3,"file":"template-slot-create.js","sourceRoot":"","sources":["../../../src/tools/ppm/template-slot-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACpG,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAE5D,MAAM,CAAC,MAAM,sBAAsB,GAAS;IAC1C,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,8CAA8C;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACtF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACtE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACvG,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QAC5H,OAAO,EAAE,4BAA4B,CACnC,CAAC,CAAC,MAAM,EAAE,EACV,eAAe,CAAC,MAAM,CAAC,2BAA2B,CACnD,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAChD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KAC1G,CAAC;IACF,YAAY,EAAE;QACZ,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC;KACzC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,IAAI,GAA4B;gBACpC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YAEF,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;YACnF,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS;gBAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;YACzF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;gBAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YAEvE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CACpC,yCAAyC,yBAAyB,EAAE,EACpE,IAAI,EACJ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,CACjD,CAAC;YAEF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"template-slot-create.js","sourceRoot":"","sources":["../../../src/tools/ppm/template-slot-create.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"work-item-create.d.ts","sourceRoot":"","sources":["../../../src/tools/ppm/work-item-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAOtC,eAAO,MAAM,kBAAkB,EAAE,IAuDhC,CAAC"}
1
+ {"version":3,"file":"work-item-create.d.ts","sourceRoot":"","sources":["../../../src/tools/ppm/work-item-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAOtC,eAAO,MAAM,kBAAkB,EAAE,IAsDhC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { successResponse, errorResponse, API_ERROR } from '../types.js';
3
3
  import { WORK_ITEM_SELECT } from '../../ppm/projection.js';
4
- import { persistContract, withPersistInsertRequirement } from '../../contracts/persist-contract.js';
4
+ import { isCreateFieldRequired } from '../../contracts/tool-binding-manifest.js';
5
5
  import { cap } from '../../capabilities/tool-capability.js';
6
6
  export const workItemCreateTool = {
7
7
  name: 'ppm_work_item_create',
@@ -20,7 +20,9 @@ export const workItemCreateTool = {
20
20
  external_system_id: z.string().optional().describe('External system UUID (FK → ppm_external_systems)'),
21
21
  external_item_id: z.string().optional().describe('Identifier of this item in the external system (e.g. GitLab issue number, Jira key)'),
22
22
  confidential: z.boolean().optional().describe('Whether the item is confidential'),
23
- role_id: withPersistInsertRequirement(z.string(), persistContract.fields.ppmWorkItemCreateRoleId).describe('UUID of the WRM role for this work item'),
23
+ role_id: (isCreateFieldRequired('ppm_work_item_create', 'role_id')
24
+ ? z.string()
25
+ : z.string().optional()).describe('UUID of the WRM role for this work item'),
24
26
  metadata: z.record(z.unknown()).optional().describe('Arbitrary JSON metadata object'),
25
27
  }),
26
28
  capabilities: [
@@ -1 +1 @@
1
- {"version":3,"file":"work-item-create.js","sourceRoot":"","sources":["../../../src/tools/ppm/work-item-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACpG,OAAO,EAAE,GAAG,EAAE,MAAM,uCAAuC,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,4BAA4B;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAChF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAClE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC1E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5D,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC7D,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACnF,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACtG,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;QACvI,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjF,OAAO,EAAE,4BAA4B,CACnC,CAAC,CAAC,MAAM,EAAE,EACV,eAAe,CAAC,MAAM,CAAC,uBAAuB,CAC/C,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACtF,CAAC;IACF,YAAY,EAAE;QACZ,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC;KAChC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,IAA2B,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB;gBAChC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC;YAEF,MAAM,cAAc,GAAG,CAAC,YAAY;gBAClC,uBAAuB,EAAE,qBAAqB,EAAE,cAAc;gBAC9D,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,wBAAwB;gBACpE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU;aACrE,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CACpC,gCAAgC,gBAAgB,EAAE,EAClD,IAAI,EACJ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,CACjD,CAAC;YAEF,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,aAAa,CAAC,SAAS,EAAE,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"work-item-create.js","sourceRoot":"","sources":["../../../src/tools/ppm/work-item-create.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raytio/mcp-server",
3
- "version": "10.4.0",
3
+ "version": "10.4.1",
4
4
  "description": "MCP server for secure AI agent access to Raytio user data",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",