Skip to main content

harn_hostlib/
schemas.rs

1//! Embedded JSON Schemas for every hostlib host method.
2//!
3//! Schemas live at `schemas/<module>/<method>.{request,response}.json` and
4//! are baked into the crate at compile time via `include_str!`. They're the
5//! source of truth for hostlib request/response compatibility: the schema
6//! files ship with the crate (see the `include` field in `Cargo.toml`),
7//! and consumers fetch them through this module.
8//!
9//! Schemas use JSON Schema draft 2020-12.
10
11/// Direction of a schema (request body vs. response body).
12#[derive(Clone, Copy, Debug, PartialEq, Eq)]
13pub enum SchemaKind {
14    /// Schema for the *input* of a host method.
15    Request,
16    /// Schema for the *output* of a host method.
17    Response,
18}
19
20/// One `(module, method, kind, schema_text)` tuple for every shipped schema.
21///
22/// Embedders use this catalog to:
23/// - assert that every registered builtin has a matching schema (drift test);
24/// - export the schemas to downstream consumers;
25/// - validate live request/response payloads in tests.
26pub const SCHEMAS: &[(&str, &str, SchemaKind, &str)] = &[
27    // ast/
28    (
29        "ast",
30        "parse_file",
31        SchemaKind::Request,
32        include_str!("../schemas/ast/parse_file.request.json"),
33    ),
34    (
35        "ast",
36        "parse_file",
37        SchemaKind::Response,
38        include_str!("../schemas/ast/parse_file.response.json"),
39    ),
40    (
41        "ast",
42        "symbols",
43        SchemaKind::Request,
44        include_str!("../schemas/ast/symbols.request.json"),
45    ),
46    (
47        "ast",
48        "symbols",
49        SchemaKind::Response,
50        include_str!("../schemas/ast/symbols.response.json"),
51    ),
52    (
53        "ast",
54        "outline",
55        SchemaKind::Request,
56        include_str!("../schemas/ast/outline.request.json"),
57    ),
58    (
59        "ast",
60        "outline",
61        SchemaKind::Response,
62        include_str!("../schemas/ast/outline.response.json"),
63    ),
64    (
65        "ast",
66        "parse_errors",
67        SchemaKind::Request,
68        include_str!("../schemas/ast/parse_errors.request.json"),
69    ),
70    (
71        "ast",
72        "parse_errors",
73        SchemaKind::Response,
74        include_str!("../schemas/ast/parse_errors.response.json"),
75    ),
76    (
77        "ast",
78        "undefined_names",
79        SchemaKind::Request,
80        include_str!("../schemas/ast/undefined_names.request.json"),
81    ),
82    (
83        "ast",
84        "undefined_names",
85        SchemaKind::Response,
86        include_str!("../schemas/ast/undefined_names.response.json"),
87    ),
88    (
89        "ast",
90        "function_body",
91        SchemaKind::Request,
92        include_str!("../schemas/ast/function_body.request.json"),
93    ),
94    (
95        "ast",
96        "function_body",
97        SchemaKind::Response,
98        include_str!("../schemas/ast/function_body.response.json"),
99    ),
100    (
101        "ast",
102        "function_bodies",
103        SchemaKind::Request,
104        include_str!("../schemas/ast/function_bodies.request.json"),
105    ),
106    (
107        "ast",
108        "function_bodies",
109        SchemaKind::Response,
110        include_str!("../schemas/ast/function_bodies.response.json"),
111    ),
112    (
113        "ast",
114        "extract_imports",
115        SchemaKind::Request,
116        include_str!("../schemas/ast/extract_imports.request.json"),
117    ),
118    (
119        "ast",
120        "extract_imports",
121        SchemaKind::Response,
122        include_str!("../schemas/ast/extract_imports.response.json"),
123    ),
124    (
125        "ast",
126        "symbol_extract",
127        SchemaKind::Request,
128        include_str!("../schemas/ast/symbol_extract.request.json"),
129    ),
130    (
131        "ast",
132        "symbol_extract",
133        SchemaKind::Response,
134        include_str!("../schemas/ast/symbol_extract.response.json"),
135    ),
136    (
137        "ast",
138        "symbol_delete",
139        SchemaKind::Request,
140        include_str!("../schemas/ast/symbol_delete.request.json"),
141    ),
142    (
143        "ast",
144        "symbol_delete",
145        SchemaKind::Response,
146        include_str!("../schemas/ast/symbol_delete.response.json"),
147    ),
148    (
149        "ast",
150        "symbol_replace",
151        SchemaKind::Request,
152        include_str!("../schemas/ast/symbol_replace.request.json"),
153    ),
154    (
155        "ast",
156        "symbol_replace",
157        SchemaKind::Response,
158        include_str!("../schemas/ast/symbol_replace.response.json"),
159    ),
160    (
161        "ast",
162        "bracket_balance",
163        SchemaKind::Request,
164        include_str!("../schemas/ast/bracket_balance.request.json"),
165    ),
166    (
167        "ast",
168        "bracket_balance",
169        SchemaKind::Response,
170        include_str!("../schemas/ast/bracket_balance.response.json"),
171    ),
172    (
173        "ast",
174        "apply_node",
175        SchemaKind::Request,
176        include_str!("../schemas/ast/apply_node.request.json"),
177    ),
178    (
179        "ast",
180        "apply_node",
181        SchemaKind::Response,
182        include_str!("../schemas/ast/apply_node.response.json"),
183    ),
184    (
185        "ast",
186        "insert_at_anchor",
187        SchemaKind::Request,
188        include_str!("../schemas/ast/insert_at_anchor.request.json"),
189    ),
190    (
191        "ast",
192        "insert_at_anchor",
193        SchemaKind::Response,
194        include_str!("../schemas/ast/insert_at_anchor.response.json"),
195    ),
196    (
197        "ast",
198        "dry_run",
199        SchemaKind::Request,
200        include_str!("../schemas/ast/dry_run.request.json"),
201    ),
202    (
203        "ast",
204        "dry_run",
205        SchemaKind::Response,
206        include_str!("../schemas/ast/dry_run.response.json"),
207    ),
208    (
209        "ast",
210        "capabilities",
211        SchemaKind::Request,
212        include_str!("../schemas/ast/capabilities.request.json"),
213    ),
214    (
215        "ast",
216        "capabilities",
217        SchemaKind::Response,
218        include_str!("../schemas/ast/capabilities.response.json"),
219    ),
220    // code_index/
221    (
222        "code_index",
223        "query",
224        SchemaKind::Request,
225        include_str!("../schemas/code_index/query.request.json"),
226    ),
227    (
228        "code_index",
229        "query",
230        SchemaKind::Response,
231        include_str!("../schemas/code_index/query.response.json"),
232    ),
233    (
234        "code_index",
235        "rebuild",
236        SchemaKind::Request,
237        include_str!("../schemas/code_index/rebuild.request.json"),
238    ),
239    (
240        "code_index",
241        "rebuild",
242        SchemaKind::Response,
243        include_str!("../schemas/code_index/rebuild.response.json"),
244    ),
245    (
246        "code_index",
247        "stats",
248        SchemaKind::Request,
249        include_str!("../schemas/code_index/stats.request.json"),
250    ),
251    (
252        "code_index",
253        "stats",
254        SchemaKind::Response,
255        include_str!("../schemas/code_index/stats.response.json"),
256    ),
257    (
258        "code_index",
259        "imports_for",
260        SchemaKind::Request,
261        include_str!("../schemas/code_index/imports_for.request.json"),
262    ),
263    (
264        "code_index",
265        "imports_for",
266        SchemaKind::Response,
267        include_str!("../schemas/code_index/imports_for.response.json"),
268    ),
269    (
270        "code_index",
271        "importers_of",
272        SchemaKind::Request,
273        include_str!("../schemas/code_index/importers_of.request.json"),
274    ),
275    (
276        "code_index",
277        "importers_of",
278        SchemaKind::Response,
279        include_str!("../schemas/code_index/importers_of.response.json"),
280    ),
281    // code_index — file table accessors
282    (
283        "code_index",
284        "path_to_id",
285        SchemaKind::Request,
286        include_str!("../schemas/code_index/path_to_id.request.json"),
287    ),
288    (
289        "code_index",
290        "path_to_id",
291        SchemaKind::Response,
292        include_str!("../schemas/code_index/path_to_id.response.json"),
293    ),
294    (
295        "code_index",
296        "id_to_path",
297        SchemaKind::Request,
298        include_str!("../schemas/code_index/id_to_path.request.json"),
299    ),
300    (
301        "code_index",
302        "id_to_path",
303        SchemaKind::Response,
304        include_str!("../schemas/code_index/id_to_path.response.json"),
305    ),
306    (
307        "code_index",
308        "file_ids",
309        SchemaKind::Request,
310        include_str!("../schemas/code_index/file_ids.request.json"),
311    ),
312    (
313        "code_index",
314        "file_ids",
315        SchemaKind::Response,
316        include_str!("../schemas/code_index/file_ids.response.json"),
317    ),
318    (
319        "code_index",
320        "file_meta",
321        SchemaKind::Request,
322        include_str!("../schemas/code_index/file_meta.request.json"),
323    ),
324    (
325        "code_index",
326        "file_meta",
327        SchemaKind::Response,
328        include_str!("../schemas/code_index/file_meta.response.json"),
329    ),
330    (
331        "code_index",
332        "file_hash",
333        SchemaKind::Request,
334        include_str!("../schemas/code_index/file_hash.request.json"),
335    ),
336    (
337        "code_index",
338        "file_hash",
339        SchemaKind::Response,
340        include_str!("../schemas/code_index/file_hash.response.json"),
341    ),
342    // code_index — cached reads
343    (
344        "code_index",
345        "read_range",
346        SchemaKind::Request,
347        include_str!("../schemas/code_index/read_range.request.json"),
348    ),
349    (
350        "code_index",
351        "read_range",
352        SchemaKind::Response,
353        include_str!("../schemas/code_index/read_range.response.json"),
354    ),
355    (
356        "code_index",
357        "reindex_file",
358        SchemaKind::Request,
359        include_str!("../schemas/code_index/reindex_file.request.json"),
360    ),
361    (
362        "code_index",
363        "reindex_file",
364        SchemaKind::Response,
365        include_str!("../schemas/code_index/reindex_file.response.json"),
366    ),
367    (
368        "code_index",
369        "trigram_query",
370        SchemaKind::Request,
371        include_str!("../schemas/code_index/trigram_query.request.json"),
372    ),
373    (
374        "code_index",
375        "trigram_query",
376        SchemaKind::Response,
377        include_str!("../schemas/code_index/trigram_query.response.json"),
378    ),
379    (
380        "code_index",
381        "extract_trigrams",
382        SchemaKind::Request,
383        include_str!("../schemas/code_index/extract_trigrams.request.json"),
384    ),
385    (
386        "code_index",
387        "extract_trigrams",
388        SchemaKind::Response,
389        include_str!("../schemas/code_index/extract_trigrams.response.json"),
390    ),
391    (
392        "code_index",
393        "word_get",
394        SchemaKind::Request,
395        include_str!("../schemas/code_index/word_get.request.json"),
396    ),
397    (
398        "code_index",
399        "word_get",
400        SchemaKind::Response,
401        include_str!("../schemas/code_index/word_get.response.json"),
402    ),
403    (
404        "code_index",
405        "deps_get",
406        SchemaKind::Request,
407        include_str!("../schemas/code_index/deps_get.request.json"),
408    ),
409    (
410        "code_index",
411        "deps_get",
412        SchemaKind::Response,
413        include_str!("../schemas/code_index/deps_get.response.json"),
414    ),
415    (
416        "code_index",
417        "outline_get",
418        SchemaKind::Request,
419        include_str!("../schemas/code_index/outline_get.request.json"),
420    ),
421    (
422        "code_index",
423        "outline_get",
424        SchemaKind::Response,
425        include_str!("../schemas/code_index/outline_get.response.json"),
426    ),
427    // code_index — change log
428    (
429        "code_index",
430        "current_seq",
431        SchemaKind::Request,
432        include_str!("../schemas/code_index/current_seq.request.json"),
433    ),
434    (
435        "code_index",
436        "current_seq",
437        SchemaKind::Response,
438        include_str!("../schemas/code_index/current_seq.response.json"),
439    ),
440    (
441        "code_index",
442        "changes_since",
443        SchemaKind::Request,
444        include_str!("../schemas/code_index/changes_since.request.json"),
445    ),
446    (
447        "code_index",
448        "changes_since",
449        SchemaKind::Response,
450        include_str!("../schemas/code_index/changes_since.response.json"),
451    ),
452    (
453        "code_index",
454        "version_record",
455        SchemaKind::Request,
456        include_str!("../schemas/code_index/version_record.request.json"),
457    ),
458    (
459        "code_index",
460        "version_record",
461        SchemaKind::Response,
462        include_str!("../schemas/code_index/version_record.response.json"),
463    ),
464    // code_index — agents + locks
465    (
466        "code_index",
467        "agent_register",
468        SchemaKind::Request,
469        include_str!("../schemas/code_index/agent_register.request.json"),
470    ),
471    (
472        "code_index",
473        "agent_register",
474        SchemaKind::Response,
475        include_str!("../schemas/code_index/agent_register.response.json"),
476    ),
477    (
478        "code_index",
479        "agent_heartbeat",
480        SchemaKind::Request,
481        include_str!("../schemas/code_index/agent_heartbeat.request.json"),
482    ),
483    (
484        "code_index",
485        "agent_heartbeat",
486        SchemaKind::Response,
487        include_str!("../schemas/code_index/agent_heartbeat.response.json"),
488    ),
489    (
490        "code_index",
491        "agent_unregister",
492        SchemaKind::Request,
493        include_str!("../schemas/code_index/agent_unregister.request.json"),
494    ),
495    (
496        "code_index",
497        "agent_unregister",
498        SchemaKind::Response,
499        include_str!("../schemas/code_index/agent_unregister.response.json"),
500    ),
501    (
502        "code_index",
503        "lock_try",
504        SchemaKind::Request,
505        include_str!("../schemas/code_index/lock_try.request.json"),
506    ),
507    (
508        "code_index",
509        "lock_try",
510        SchemaKind::Response,
511        include_str!("../schemas/code_index/lock_try.response.json"),
512    ),
513    (
514        "code_index",
515        "lock_release",
516        SchemaKind::Request,
517        include_str!("../schemas/code_index/lock_release.request.json"),
518    ),
519    (
520        "code_index",
521        "lock_release",
522        SchemaKind::Response,
523        include_str!("../schemas/code_index/lock_release.response.json"),
524    ),
525    (
526        "code_index",
527        "status",
528        SchemaKind::Request,
529        include_str!("../schemas/code_index/status.request.json"),
530    ),
531    (
532        "code_index",
533        "status",
534        SchemaKind::Response,
535        include_str!("../schemas/code_index/status.response.json"),
536    ),
537    (
538        "code_index",
539        "current_agent_id",
540        SchemaKind::Request,
541        include_str!("../schemas/code_index/current_agent_id.request.json"),
542    ),
543    (
544        "code_index",
545        "current_agent_id",
546        SchemaKind::Response,
547        include_str!("../schemas/code_index/current_agent_id.response.json"),
548    ),
549    (
550        "code_index",
551        "cypher",
552        SchemaKind::Request,
553        include_str!("../schemas/code_index/cypher.request.json"),
554    ),
555    (
556        "code_index",
557        "cypher",
558        SchemaKind::Response,
559        include_str!("../schemas/code_index/cypher.response.json"),
560    ),
561    (
562        "code_index",
563        "branch_overlay",
564        SchemaKind::Request,
565        include_str!("../schemas/code_index/branch_overlay.request.json"),
566    ),
567    (
568        "code_index",
569        "branch_overlay",
570        SchemaKind::Response,
571        include_str!("../schemas/code_index/branch_overlay.response.json"),
572    ),
573    (
574        "code_index",
575        "freshness",
576        SchemaKind::Request,
577        include_str!("../schemas/code_index/freshness.request.json"),
578    ),
579    (
580        "code_index",
581        "freshness",
582        SchemaKind::Response,
583        include_str!("../schemas/code_index/freshness.response.json"),
584    ),
585    (
586        "code_index",
587        "rename_symbol",
588        SchemaKind::Request,
589        include_str!("../schemas/code_index/rename_symbol.request.json"),
590    ),
591    (
592        "code_index",
593        "rename_symbol",
594        SchemaKind::Response,
595        include_str!("../schemas/code_index/rename_symbol.response.json"),
596    ),
597    // scanner/
598    (
599        "scanner",
600        "scan_project",
601        SchemaKind::Request,
602        include_str!("../schemas/scanner/scan_project.request.json"),
603    ),
604    (
605        "scanner",
606        "scan_project",
607        SchemaKind::Response,
608        include_str!("../schemas/scanner/scan_project.response.json"),
609    ),
610    (
611        "scanner",
612        "scan_incremental",
613        SchemaKind::Request,
614        include_str!("../schemas/scanner/scan_incremental.request.json"),
615    ),
616    (
617        "scanner",
618        "scan_incremental",
619        SchemaKind::Response,
620        include_str!("../schemas/scanner/scan_incremental.response.json"),
621    ),
622    // fs/
623    (
624        "fs",
625        "set_mode",
626        SchemaKind::Request,
627        include_str!("../schemas/fs/set_mode.request.json"),
628    ),
629    (
630        "fs",
631        "set_mode",
632        SchemaKind::Response,
633        include_str!("../schemas/fs/set_mode.response.json"),
634    ),
635    (
636        "fs",
637        "staged_status",
638        SchemaKind::Request,
639        include_str!("../schemas/fs/staged_status.request.json"),
640    ),
641    (
642        "fs",
643        "staged_status",
644        SchemaKind::Response,
645        include_str!("../schemas/fs/staged_status.response.json"),
646    ),
647    (
648        "fs",
649        "commit_staged",
650        SchemaKind::Request,
651        include_str!("../schemas/fs/commit_staged.request.json"),
652    ),
653    (
654        "fs",
655        "commit_staged",
656        SchemaKind::Response,
657        include_str!("../schemas/fs/commit_staged.response.json"),
658    ),
659    (
660        "fs",
661        "discard_staged",
662        SchemaKind::Request,
663        include_str!("../schemas/fs/discard_staged.request.json"),
664    ),
665    (
666        "fs",
667        "discard_staged",
668        SchemaKind::Response,
669        include_str!("../schemas/fs/discard_staged.response.json"),
670    ),
671    (
672        "fs",
673        "safe_text_patch",
674        SchemaKind::Request,
675        include_str!("../schemas/fs/safe_text_patch.request.json"),
676    ),
677    (
678        "fs",
679        "safe_text_patch",
680        SchemaKind::Response,
681        include_str!("../schemas/fs/safe_text_patch.response.json"),
682    ),
683    (
684        "fs",
685        "read_text",
686        SchemaKind::Request,
687        include_str!("../schemas/fs/read_text.request.json"),
688    ),
689    (
690        "fs",
691        "read_text",
692        SchemaKind::Response,
693        include_str!("../schemas/fs/read_text.response.json"),
694    ),
695    (
696        "fs",
697        "emit_safe_text_patch_result",
698        SchemaKind::Request,
699        include_str!("../schemas/fs/emit_safe_text_patch_result.request.json"),
700    ),
701    (
702        "fs",
703        "emit_safe_text_patch_result",
704        SchemaKind::Response,
705        include_str!("../schemas/fs/emit_safe_text_patch_result.response.json"),
706    ),
707    (
708        "fs",
709        "snapshot",
710        SchemaKind::Request,
711        include_str!("../schemas/fs/snapshot.request.json"),
712    ),
713    (
714        "fs",
715        "snapshot",
716        SchemaKind::Response,
717        include_str!("../schemas/fs/snapshot.response.json"),
718    ),
719    (
720        "fs",
721        "restore",
722        SchemaKind::Request,
723        include_str!("../schemas/fs/restore.request.json"),
724    ),
725    (
726        "fs",
727        "restore",
728        SchemaKind::Response,
729        include_str!("../schemas/fs/restore.response.json"),
730    ),
731    (
732        "fs",
733        "list_snapshots",
734        SchemaKind::Request,
735        include_str!("../schemas/fs/list_snapshots.request.json"),
736    ),
737    (
738        "fs",
739        "list_snapshots",
740        SchemaKind::Response,
741        include_str!("../schemas/fs/list_snapshots.response.json"),
742    ),
743    (
744        "fs",
745        "drop_snapshot",
746        SchemaKind::Request,
747        include_str!("../schemas/fs/drop_snapshot.request.json"),
748    ),
749    (
750        "fs",
751        "drop_snapshot",
752        SchemaKind::Response,
753        include_str!("../schemas/fs/drop_snapshot.response.json"),
754    ),
755    // fs_watch/
756    (
757        "fs_watch",
758        "subscribe",
759        SchemaKind::Request,
760        include_str!("../schemas/fs_watch/subscribe.request.json"),
761    ),
762    (
763        "fs_watch",
764        "subscribe",
765        SchemaKind::Response,
766        include_str!("../schemas/fs_watch/subscribe.response.json"),
767    ),
768    (
769        "fs_watch",
770        "unsubscribe",
771        SchemaKind::Request,
772        include_str!("../schemas/fs_watch/unsubscribe.request.json"),
773    ),
774    (
775        "fs_watch",
776        "unsubscribe",
777        SchemaKind::Response,
778        include_str!("../schemas/fs_watch/unsubscribe.response.json"),
779    ),
780    // tools/
781    (
782        "tools",
783        "search",
784        SchemaKind::Request,
785        include_str!("../schemas/tools/search.request.json"),
786    ),
787    (
788        "tools",
789        "search",
790        SchemaKind::Response,
791        include_str!("../schemas/tools/search.response.json"),
792    ),
793    (
794        "tools",
795        "read_file",
796        SchemaKind::Request,
797        include_str!("../schemas/tools/read_file.request.json"),
798    ),
799    (
800        "tools",
801        "read_file",
802        SchemaKind::Response,
803        include_str!("../schemas/tools/read_file.response.json"),
804    ),
805    (
806        "tools",
807        "write_file",
808        SchemaKind::Request,
809        include_str!("../schemas/tools/write_file.request.json"),
810    ),
811    (
812        "tools",
813        "write_file",
814        SchemaKind::Response,
815        include_str!("../schemas/tools/write_file.response.json"),
816    ),
817    (
818        "tools",
819        "delete_file",
820        SchemaKind::Request,
821        include_str!("../schemas/tools/delete_file.request.json"),
822    ),
823    (
824        "tools",
825        "delete_file",
826        SchemaKind::Response,
827        include_str!("../schemas/tools/delete_file.response.json"),
828    ),
829    (
830        "tools",
831        "list_directory",
832        SchemaKind::Request,
833        include_str!("../schemas/tools/list_directory.request.json"),
834    ),
835    (
836        "tools",
837        "list_directory",
838        SchemaKind::Response,
839        include_str!("../schemas/tools/list_directory.response.json"),
840    ),
841    (
842        "tools",
843        "get_file_outline",
844        SchemaKind::Request,
845        include_str!("../schemas/tools/get_file_outline.request.json"),
846    ),
847    (
848        "tools",
849        "get_file_outline",
850        SchemaKind::Response,
851        include_str!("../schemas/tools/get_file_outline.response.json"),
852    ),
853    (
854        "tools",
855        "git",
856        SchemaKind::Request,
857        include_str!("../schemas/tools/git.request.json"),
858    ),
859    (
860        "tools",
861        "git",
862        SchemaKind::Response,
863        include_str!("../schemas/tools/git.response.json"),
864    ),
865    (
866        "tools",
867        "run_command",
868        SchemaKind::Request,
869        include_str!("../schemas/tools/run_command.request.json"),
870    ),
871    (
872        "tools",
873        "run_command",
874        SchemaKind::Response,
875        include_str!("../schemas/tools/run_command.response.json"),
876    ),
877    (
878        "tools",
879        "read_command_output",
880        SchemaKind::Request,
881        include_str!("../schemas/tools/read_command_output.request.json"),
882    ),
883    (
884        "tools",
885        "read_command_output",
886        SchemaKind::Response,
887        include_str!("../schemas/tools/read_command_output.response.json"),
888    ),
889    (
890        "tools",
891        "run_test",
892        SchemaKind::Request,
893        include_str!("../schemas/tools/run_test.request.json"),
894    ),
895    (
896        "tools",
897        "run_test",
898        SchemaKind::Response,
899        include_str!("../schemas/tools/run_test.response.json"),
900    ),
901    (
902        "tools",
903        "run_build_command",
904        SchemaKind::Request,
905        include_str!("../schemas/tools/run_build_command.request.json"),
906    ),
907    (
908        "tools",
909        "run_build_command",
910        SchemaKind::Response,
911        include_str!("../schemas/tools/run_build_command.response.json"),
912    ),
913    (
914        "tools",
915        "inspect_test_results",
916        SchemaKind::Request,
917        include_str!("../schemas/tools/inspect_test_results.request.json"),
918    ),
919    (
920        "tools",
921        "inspect_test_results",
922        SchemaKind::Response,
923        include_str!("../schemas/tools/inspect_test_results.response.json"),
924    ),
925    (
926        "tools",
927        "manage_packages",
928        SchemaKind::Request,
929        include_str!("../schemas/tools/manage_packages.request.json"),
930    ),
931    (
932        "tools",
933        "manage_packages",
934        SchemaKind::Response,
935        include_str!("../schemas/tools/manage_packages.response.json"),
936    ),
937    (
938        "tools",
939        "cancel_handle",
940        SchemaKind::Request,
941        include_str!("../schemas/tools/cancel_handle.request.json"),
942    ),
943    (
944        "tools",
945        "cancel_handle",
946        SchemaKind::Response,
947        include_str!("../schemas/tools/cancel_handle.response.json"),
948    ),
949    (
950        "tools",
951        "enable",
952        SchemaKind::Request,
953        include_str!("../schemas/tools/enable.request.json"),
954    ),
955    (
956        "tools",
957        "enable",
958        SchemaKind::Response,
959        include_str!("../schemas/tools/enable.response.json"),
960    ),
961    // secret_store/
962    (
963        "secret_store",
964        "get",
965        SchemaKind::Request,
966        include_str!("../schemas/secret_store/get.request.json"),
967    ),
968    (
969        "secret_store",
970        "get",
971        SchemaKind::Response,
972        include_str!("../schemas/secret_store/get.response.json"),
973    ),
974    (
975        "secret_store",
976        "set",
977        SchemaKind::Request,
978        include_str!("../schemas/secret_store/set.request.json"),
979    ),
980    (
981        "secret_store",
982        "set",
983        SchemaKind::Response,
984        include_str!("../schemas/secret_store/set.response.json"),
985    ),
986    (
987        "secret_store",
988        "delete",
989        SchemaKind::Request,
990        include_str!("../schemas/secret_store/delete.request.json"),
991    ),
992    (
993        "secret_store",
994        "delete",
995        SchemaKind::Response,
996        include_str!("../schemas/secret_store/delete.response.json"),
997    ),
998    (
999        "secret_store",
1000        "list",
1001        SchemaKind::Request,
1002        include_str!("../schemas/secret_store/list.request.json"),
1003    ),
1004    (
1005        "secret_store",
1006        "list",
1007        SchemaKind::Response,
1008        include_str!("../schemas/secret_store/list.response.json"),
1009    ),
1010];
1011
1012/// Look up a single schema as raw JSON text.
1013pub fn lookup(module: &str, method: &str, kind: SchemaKind) -> Option<&'static str> {
1014    SCHEMAS
1015        .iter()
1016        .find(|(m, mt, k, _)| *m == module && *mt == method && *k == kind)
1017        .map(|(_, _, _, body)| *body)
1018}