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        "batch_apply",
199        SchemaKind::Request,
200        include_str!("../schemas/ast/batch_apply.request.json"),
201    ),
202    (
203        "ast",
204        "batch_apply",
205        SchemaKind::Response,
206        include_str!("../schemas/ast/batch_apply.response.json"),
207    ),
208    (
209        "ast",
210        "dry_run",
211        SchemaKind::Request,
212        include_str!("../schemas/ast/dry_run.request.json"),
213    ),
214    (
215        "ast",
216        "dry_run",
217        SchemaKind::Response,
218        include_str!("../schemas/ast/dry_run.response.json"),
219    ),
220    (
221        "ast",
222        "search",
223        SchemaKind::Request,
224        include_str!("../schemas/ast/search.request.json"),
225    ),
226    (
227        "ast",
228        "search",
229        SchemaKind::Response,
230        include_str!("../schemas/ast/search.response.json"),
231    ),
232    (
233        "ast",
234        "structural_diff",
235        SchemaKind::Request,
236        include_str!("../schemas/ast/structural_diff.request.json"),
237    ),
238    (
239        "ast",
240        "structural_diff",
241        SchemaKind::Response,
242        include_str!("../schemas/ast/structural_diff.response.json"),
243    ),
244    (
245        "ast",
246        "capabilities",
247        SchemaKind::Request,
248        include_str!("../schemas/ast/capabilities.request.json"),
249    ),
250    (
251        "ast",
252        "capabilities",
253        SchemaKind::Response,
254        include_str!("../schemas/ast/capabilities.response.json"),
255    ),
256    // code_index/
257    (
258        "code_index",
259        "query",
260        SchemaKind::Request,
261        include_str!("../schemas/code_index/query.request.json"),
262    ),
263    (
264        "code_index",
265        "query",
266        SchemaKind::Response,
267        include_str!("../schemas/code_index/query.response.json"),
268    ),
269    (
270        "code_index",
271        "rebuild",
272        SchemaKind::Request,
273        include_str!("../schemas/code_index/rebuild.request.json"),
274    ),
275    (
276        "code_index",
277        "rebuild",
278        SchemaKind::Response,
279        include_str!("../schemas/code_index/rebuild.response.json"),
280    ),
281    (
282        "code_index",
283        "stats",
284        SchemaKind::Request,
285        include_str!("../schemas/code_index/stats.request.json"),
286    ),
287    (
288        "code_index",
289        "stats",
290        SchemaKind::Response,
291        include_str!("../schemas/code_index/stats.response.json"),
292    ),
293    (
294        "code_index",
295        "imports_for",
296        SchemaKind::Request,
297        include_str!("../schemas/code_index/imports_for.request.json"),
298    ),
299    (
300        "code_index",
301        "imports_for",
302        SchemaKind::Response,
303        include_str!("../schemas/code_index/imports_for.response.json"),
304    ),
305    (
306        "code_index",
307        "importers_of",
308        SchemaKind::Request,
309        include_str!("../schemas/code_index/importers_of.request.json"),
310    ),
311    (
312        "code_index",
313        "importers_of",
314        SchemaKind::Response,
315        include_str!("../schemas/code_index/importers_of.response.json"),
316    ),
317    // code_index — file table accessors
318    (
319        "code_index",
320        "path_to_id",
321        SchemaKind::Request,
322        include_str!("../schemas/code_index/path_to_id.request.json"),
323    ),
324    (
325        "code_index",
326        "path_to_id",
327        SchemaKind::Response,
328        include_str!("../schemas/code_index/path_to_id.response.json"),
329    ),
330    (
331        "code_index",
332        "id_to_path",
333        SchemaKind::Request,
334        include_str!("../schemas/code_index/id_to_path.request.json"),
335    ),
336    (
337        "code_index",
338        "id_to_path",
339        SchemaKind::Response,
340        include_str!("../schemas/code_index/id_to_path.response.json"),
341    ),
342    (
343        "code_index",
344        "file_ids",
345        SchemaKind::Request,
346        include_str!("../schemas/code_index/file_ids.request.json"),
347    ),
348    (
349        "code_index",
350        "file_ids",
351        SchemaKind::Response,
352        include_str!("../schemas/code_index/file_ids.response.json"),
353    ),
354    (
355        "code_index",
356        "file_meta",
357        SchemaKind::Request,
358        include_str!("../schemas/code_index/file_meta.request.json"),
359    ),
360    (
361        "code_index",
362        "file_meta",
363        SchemaKind::Response,
364        include_str!("../schemas/code_index/file_meta.response.json"),
365    ),
366    (
367        "code_index",
368        "file_hash",
369        SchemaKind::Request,
370        include_str!("../schemas/code_index/file_hash.request.json"),
371    ),
372    (
373        "code_index",
374        "file_hash",
375        SchemaKind::Response,
376        include_str!("../schemas/code_index/file_hash.response.json"),
377    ),
378    // code_index — cached reads
379    (
380        "code_index",
381        "read_range",
382        SchemaKind::Request,
383        include_str!("../schemas/code_index/read_range.request.json"),
384    ),
385    (
386        "code_index",
387        "read_range",
388        SchemaKind::Response,
389        include_str!("../schemas/code_index/read_range.response.json"),
390    ),
391    (
392        "code_index",
393        "reindex_file",
394        SchemaKind::Request,
395        include_str!("../schemas/code_index/reindex_file.request.json"),
396    ),
397    (
398        "code_index",
399        "reindex_file",
400        SchemaKind::Response,
401        include_str!("../schemas/code_index/reindex_file.response.json"),
402    ),
403    (
404        "code_index",
405        "trigram_query",
406        SchemaKind::Request,
407        include_str!("../schemas/code_index/trigram_query.request.json"),
408    ),
409    (
410        "code_index",
411        "trigram_query",
412        SchemaKind::Response,
413        include_str!("../schemas/code_index/trigram_query.response.json"),
414    ),
415    (
416        "code_index",
417        "extract_trigrams",
418        SchemaKind::Request,
419        include_str!("../schemas/code_index/extract_trigrams.request.json"),
420    ),
421    (
422        "code_index",
423        "extract_trigrams",
424        SchemaKind::Response,
425        include_str!("../schemas/code_index/extract_trigrams.response.json"),
426    ),
427    (
428        "code_index",
429        "word_get",
430        SchemaKind::Request,
431        include_str!("../schemas/code_index/word_get.request.json"),
432    ),
433    (
434        "code_index",
435        "word_get",
436        SchemaKind::Response,
437        include_str!("../schemas/code_index/word_get.response.json"),
438    ),
439    (
440        "code_index",
441        "deps_get",
442        SchemaKind::Request,
443        include_str!("../schemas/code_index/deps_get.request.json"),
444    ),
445    (
446        "code_index",
447        "deps_get",
448        SchemaKind::Response,
449        include_str!("../schemas/code_index/deps_get.response.json"),
450    ),
451    (
452        "code_index",
453        "outline_get",
454        SchemaKind::Request,
455        include_str!("../schemas/code_index/outline_get.request.json"),
456    ),
457    (
458        "code_index",
459        "outline_get",
460        SchemaKind::Response,
461        include_str!("../schemas/code_index/outline_get.response.json"),
462    ),
463    // code_index — change log
464    (
465        "code_index",
466        "current_seq",
467        SchemaKind::Request,
468        include_str!("../schemas/code_index/current_seq.request.json"),
469    ),
470    (
471        "code_index",
472        "current_seq",
473        SchemaKind::Response,
474        include_str!("../schemas/code_index/current_seq.response.json"),
475    ),
476    (
477        "code_index",
478        "changes_since",
479        SchemaKind::Request,
480        include_str!("../schemas/code_index/changes_since.request.json"),
481    ),
482    (
483        "code_index",
484        "changes_since",
485        SchemaKind::Response,
486        include_str!("../schemas/code_index/changes_since.response.json"),
487    ),
488    (
489        "code_index",
490        "version_record",
491        SchemaKind::Request,
492        include_str!("../schemas/code_index/version_record.request.json"),
493    ),
494    (
495        "code_index",
496        "version_record",
497        SchemaKind::Response,
498        include_str!("../schemas/code_index/version_record.response.json"),
499    ),
500    // code_index — agents + locks
501    (
502        "code_index",
503        "agent_register",
504        SchemaKind::Request,
505        include_str!("../schemas/code_index/agent_register.request.json"),
506    ),
507    (
508        "code_index",
509        "agent_register",
510        SchemaKind::Response,
511        include_str!("../schemas/code_index/agent_register.response.json"),
512    ),
513    (
514        "code_index",
515        "agent_heartbeat",
516        SchemaKind::Request,
517        include_str!("../schemas/code_index/agent_heartbeat.request.json"),
518    ),
519    (
520        "code_index",
521        "agent_heartbeat",
522        SchemaKind::Response,
523        include_str!("../schemas/code_index/agent_heartbeat.response.json"),
524    ),
525    (
526        "code_index",
527        "agent_unregister",
528        SchemaKind::Request,
529        include_str!("../schemas/code_index/agent_unregister.request.json"),
530    ),
531    (
532        "code_index",
533        "agent_unregister",
534        SchemaKind::Response,
535        include_str!("../schemas/code_index/agent_unregister.response.json"),
536    ),
537    (
538        "code_index",
539        "lock_try",
540        SchemaKind::Request,
541        include_str!("../schemas/code_index/lock_try.request.json"),
542    ),
543    (
544        "code_index",
545        "lock_try",
546        SchemaKind::Response,
547        include_str!("../schemas/code_index/lock_try.response.json"),
548    ),
549    (
550        "code_index",
551        "lock_release",
552        SchemaKind::Request,
553        include_str!("../schemas/code_index/lock_release.request.json"),
554    ),
555    (
556        "code_index",
557        "lock_release",
558        SchemaKind::Response,
559        include_str!("../schemas/code_index/lock_release.response.json"),
560    ),
561    (
562        "code_index",
563        "status",
564        SchemaKind::Request,
565        include_str!("../schemas/code_index/status.request.json"),
566    ),
567    (
568        "code_index",
569        "status",
570        SchemaKind::Response,
571        include_str!("../schemas/code_index/status.response.json"),
572    ),
573    (
574        "code_index",
575        "current_agent_id",
576        SchemaKind::Request,
577        include_str!("../schemas/code_index/current_agent_id.request.json"),
578    ),
579    (
580        "code_index",
581        "current_agent_id",
582        SchemaKind::Response,
583        include_str!("../schemas/code_index/current_agent_id.response.json"),
584    ),
585    (
586        "code_index",
587        "cypher",
588        SchemaKind::Request,
589        include_str!("../schemas/code_index/cypher.request.json"),
590    ),
591    (
592        "code_index",
593        "cypher",
594        SchemaKind::Response,
595        include_str!("../schemas/code_index/cypher.response.json"),
596    ),
597    (
598        "code_index",
599        "branch_overlay",
600        SchemaKind::Request,
601        include_str!("../schemas/code_index/branch_overlay.request.json"),
602    ),
603    (
604        "code_index",
605        "branch_overlay",
606        SchemaKind::Response,
607        include_str!("../schemas/code_index/branch_overlay.response.json"),
608    ),
609    (
610        "code_index",
611        "freshness",
612        SchemaKind::Request,
613        include_str!("../schemas/code_index/freshness.request.json"),
614    ),
615    (
616        "code_index",
617        "freshness",
618        SchemaKind::Response,
619        include_str!("../schemas/code_index/freshness.response.json"),
620    ),
621    (
622        "code_index",
623        "rename_symbol",
624        SchemaKind::Request,
625        include_str!("../schemas/code_index/rename_symbol.request.json"),
626    ),
627    (
628        "code_index",
629        "rename_symbol",
630        SchemaKind::Response,
631        include_str!("../schemas/code_index/rename_symbol.response.json"),
632    ),
633    // scanner/
634    (
635        "scanner",
636        "scan_project",
637        SchemaKind::Request,
638        include_str!("../schemas/scanner/scan_project.request.json"),
639    ),
640    (
641        "scanner",
642        "scan_project",
643        SchemaKind::Response,
644        include_str!("../schemas/scanner/scan_project.response.json"),
645    ),
646    (
647        "scanner",
648        "scan_incremental",
649        SchemaKind::Request,
650        include_str!("../schemas/scanner/scan_incremental.request.json"),
651    ),
652    (
653        "scanner",
654        "scan_incremental",
655        SchemaKind::Response,
656        include_str!("../schemas/scanner/scan_incremental.response.json"),
657    ),
658    // fs/
659    (
660        "fs",
661        "set_mode",
662        SchemaKind::Request,
663        include_str!("../schemas/fs/set_mode.request.json"),
664    ),
665    (
666        "fs",
667        "set_mode",
668        SchemaKind::Response,
669        include_str!("../schemas/fs/set_mode.response.json"),
670    ),
671    (
672        "fs",
673        "staged_status",
674        SchemaKind::Request,
675        include_str!("../schemas/fs/staged_status.request.json"),
676    ),
677    (
678        "fs",
679        "staged_status",
680        SchemaKind::Response,
681        include_str!("../schemas/fs/staged_status.response.json"),
682    ),
683    (
684        "fs",
685        "commit_staged",
686        SchemaKind::Request,
687        include_str!("../schemas/fs/commit_staged.request.json"),
688    ),
689    (
690        "fs",
691        "commit_staged",
692        SchemaKind::Response,
693        include_str!("../schemas/fs/commit_staged.response.json"),
694    ),
695    (
696        "fs",
697        "discard_staged",
698        SchemaKind::Request,
699        include_str!("../schemas/fs/discard_staged.request.json"),
700    ),
701    (
702        "fs",
703        "discard_staged",
704        SchemaKind::Response,
705        include_str!("../schemas/fs/discard_staged.response.json"),
706    ),
707    (
708        "fs",
709        "safe_text_patch",
710        SchemaKind::Request,
711        include_str!("../schemas/fs/safe_text_patch.request.json"),
712    ),
713    (
714        "fs",
715        "safe_text_patch",
716        SchemaKind::Response,
717        include_str!("../schemas/fs/safe_text_patch.response.json"),
718    ),
719    (
720        "fs",
721        "read_text",
722        SchemaKind::Request,
723        include_str!("../schemas/fs/read_text.request.json"),
724    ),
725    (
726        "fs",
727        "read_text",
728        SchemaKind::Response,
729        include_str!("../schemas/fs/read_text.response.json"),
730    ),
731    (
732        "fs",
733        "emit_safe_text_patch_result",
734        SchemaKind::Request,
735        include_str!("../schemas/fs/emit_safe_text_patch_result.request.json"),
736    ),
737    (
738        "fs",
739        "emit_safe_text_patch_result",
740        SchemaKind::Response,
741        include_str!("../schemas/fs/emit_safe_text_patch_result.response.json"),
742    ),
743    (
744        "fs",
745        "snapshot",
746        SchemaKind::Request,
747        include_str!("../schemas/fs/snapshot.request.json"),
748    ),
749    (
750        "fs",
751        "snapshot",
752        SchemaKind::Response,
753        include_str!("../schemas/fs/snapshot.response.json"),
754    ),
755    (
756        "fs",
757        "restore",
758        SchemaKind::Request,
759        include_str!("../schemas/fs/restore.request.json"),
760    ),
761    (
762        "fs",
763        "restore",
764        SchemaKind::Response,
765        include_str!("../schemas/fs/restore.response.json"),
766    ),
767    (
768        "fs",
769        "list_snapshots",
770        SchemaKind::Request,
771        include_str!("../schemas/fs/list_snapshots.request.json"),
772    ),
773    (
774        "fs",
775        "list_snapshots",
776        SchemaKind::Response,
777        include_str!("../schemas/fs/list_snapshots.response.json"),
778    ),
779    (
780        "fs",
781        "drop_snapshot",
782        SchemaKind::Request,
783        include_str!("../schemas/fs/drop_snapshot.request.json"),
784    ),
785    (
786        "fs",
787        "drop_snapshot",
788        SchemaKind::Response,
789        include_str!("../schemas/fs/drop_snapshot.response.json"),
790    ),
791    // fs_watch/
792    (
793        "fs_watch",
794        "subscribe",
795        SchemaKind::Request,
796        include_str!("../schemas/fs_watch/subscribe.request.json"),
797    ),
798    (
799        "fs_watch",
800        "subscribe",
801        SchemaKind::Response,
802        include_str!("../schemas/fs_watch/subscribe.response.json"),
803    ),
804    (
805        "fs_watch",
806        "unsubscribe",
807        SchemaKind::Request,
808        include_str!("../schemas/fs_watch/unsubscribe.request.json"),
809    ),
810    (
811        "fs_watch",
812        "unsubscribe",
813        SchemaKind::Response,
814        include_str!("../schemas/fs_watch/unsubscribe.response.json"),
815    ),
816    // tools/
817    (
818        "tools",
819        "search",
820        SchemaKind::Request,
821        include_str!("../schemas/tools/search.request.json"),
822    ),
823    (
824        "tools",
825        "search",
826        SchemaKind::Response,
827        include_str!("../schemas/tools/search.response.json"),
828    ),
829    (
830        "tools",
831        "read_file",
832        SchemaKind::Request,
833        include_str!("../schemas/tools/read_file.request.json"),
834    ),
835    (
836        "tools",
837        "read_file",
838        SchemaKind::Response,
839        include_str!("../schemas/tools/read_file.response.json"),
840    ),
841    (
842        "tools",
843        "write_file",
844        SchemaKind::Request,
845        include_str!("../schemas/tools/write_file.request.json"),
846    ),
847    (
848        "tools",
849        "write_file",
850        SchemaKind::Response,
851        include_str!("../schemas/tools/write_file.response.json"),
852    ),
853    (
854        "tools",
855        "delete_file",
856        SchemaKind::Request,
857        include_str!("../schemas/tools/delete_file.request.json"),
858    ),
859    (
860        "tools",
861        "delete_file",
862        SchemaKind::Response,
863        include_str!("../schemas/tools/delete_file.response.json"),
864    ),
865    (
866        "tools",
867        "list_directory",
868        SchemaKind::Request,
869        include_str!("../schemas/tools/list_directory.request.json"),
870    ),
871    (
872        "tools",
873        "list_directory",
874        SchemaKind::Response,
875        include_str!("../schemas/tools/list_directory.response.json"),
876    ),
877    (
878        "tools",
879        "get_file_outline",
880        SchemaKind::Request,
881        include_str!("../schemas/tools/get_file_outline.request.json"),
882    ),
883    (
884        "tools",
885        "get_file_outline",
886        SchemaKind::Response,
887        include_str!("../schemas/tools/get_file_outline.response.json"),
888    ),
889    (
890        "tools",
891        "git",
892        SchemaKind::Request,
893        include_str!("../schemas/tools/git.request.json"),
894    ),
895    (
896        "tools",
897        "git",
898        SchemaKind::Response,
899        include_str!("../schemas/tools/git.response.json"),
900    ),
901    (
902        "tools",
903        "run_command",
904        SchemaKind::Request,
905        include_str!("../schemas/tools/run_command.request.json"),
906    ),
907    (
908        "tools",
909        "run_command",
910        SchemaKind::Response,
911        include_str!("../schemas/tools/run_command.response.json"),
912    ),
913    (
914        "tools",
915        "read_command_output",
916        SchemaKind::Request,
917        include_str!("../schemas/tools/read_command_output.request.json"),
918    ),
919    (
920        "tools",
921        "read_command_output",
922        SchemaKind::Response,
923        include_str!("../schemas/tools/read_command_output.response.json"),
924    ),
925    (
926        "tools",
927        "wait_command",
928        SchemaKind::Request,
929        include_str!("../schemas/tools/wait_command.request.json"),
930    ),
931    (
932        "tools",
933        "wait_command",
934        SchemaKind::Response,
935        include_str!("../schemas/tools/wait_command.response.json"),
936    ),
937    (
938        "tools",
939        "run_test",
940        SchemaKind::Request,
941        include_str!("../schemas/tools/run_test.request.json"),
942    ),
943    (
944        "tools",
945        "run_test",
946        SchemaKind::Response,
947        include_str!("../schemas/tools/run_test.response.json"),
948    ),
949    (
950        "tools",
951        "run_build_command",
952        SchemaKind::Request,
953        include_str!("../schemas/tools/run_build_command.request.json"),
954    ),
955    (
956        "tools",
957        "run_build_command",
958        SchemaKind::Response,
959        include_str!("../schemas/tools/run_build_command.response.json"),
960    ),
961    (
962        "tools",
963        "inspect_test_results",
964        SchemaKind::Request,
965        include_str!("../schemas/tools/inspect_test_results.request.json"),
966    ),
967    (
968        "tools",
969        "inspect_test_results",
970        SchemaKind::Response,
971        include_str!("../schemas/tools/inspect_test_results.response.json"),
972    ),
973    (
974        "tools",
975        "manage_packages",
976        SchemaKind::Request,
977        include_str!("../schemas/tools/manage_packages.request.json"),
978    ),
979    (
980        "tools",
981        "manage_packages",
982        SchemaKind::Response,
983        include_str!("../schemas/tools/manage_packages.response.json"),
984    ),
985    (
986        "tools",
987        "cancel_handle",
988        SchemaKind::Request,
989        include_str!("../schemas/tools/cancel_handle.request.json"),
990    ),
991    (
992        "tools",
993        "cancel_handle",
994        SchemaKind::Response,
995        include_str!("../schemas/tools/cancel_handle.response.json"),
996    ),
997    (
998        "tools",
999        "enable",
1000        SchemaKind::Request,
1001        include_str!("../schemas/tools/enable.request.json"),
1002    ),
1003    (
1004        "tools",
1005        "enable",
1006        SchemaKind::Response,
1007        include_str!("../schemas/tools/enable.response.json"),
1008    ),
1009    // secret_store/
1010    (
1011        "secret_store",
1012        "get",
1013        SchemaKind::Request,
1014        include_str!("../schemas/secret_store/get.request.json"),
1015    ),
1016    (
1017        "secret_store",
1018        "get",
1019        SchemaKind::Response,
1020        include_str!("../schemas/secret_store/get.response.json"),
1021    ),
1022    (
1023        "secret_store",
1024        "set",
1025        SchemaKind::Request,
1026        include_str!("../schemas/secret_store/set.request.json"),
1027    ),
1028    (
1029        "secret_store",
1030        "set",
1031        SchemaKind::Response,
1032        include_str!("../schemas/secret_store/set.response.json"),
1033    ),
1034    (
1035        "secret_store",
1036        "delete",
1037        SchemaKind::Request,
1038        include_str!("../schemas/secret_store/delete.request.json"),
1039    ),
1040    (
1041        "secret_store",
1042        "delete",
1043        SchemaKind::Response,
1044        include_str!("../schemas/secret_store/delete.response.json"),
1045    ),
1046    (
1047        "secret_store",
1048        "list",
1049        SchemaKind::Request,
1050        include_str!("../schemas/secret_store/list.request.json"),
1051    ),
1052    (
1053        "secret_store",
1054        "list",
1055        SchemaKind::Response,
1056        include_str!("../schemas/secret_store/list.response.json"),
1057    ),
1058];
1059
1060/// Look up a single schema as raw JSON text.
1061pub fn lookup(module: &str, method: &str, kind: SchemaKind) -> Option<&'static str> {
1062    SCHEMAS
1063        .iter()
1064        .find(|(m, mt, k, _)| *m == module && *mt == method && *k == kind)
1065        .map(|(_, _, _, body)| *body)
1066}