1// Package swagger Code generated by swaggo/swag. DO NOT EDIT
2package swagger
3
4import "github.com/swaggo/swag"
5
6const docTemplate = `{
7 "schemes": {{ marshal .Schemes }},
8 "swagger": "2.0",
9 "info": {
10 "description": "{{escape .Description}}",
11 "title": "{{.Title}}",
12 "contact": {
13 "name": "Charm",
14 "url": "https://charm.sh"
15 },
16 "license": {
17 "name": "MIT",
18 "url": "https://github.com/charmbracelet/crush/blob/main/LICENSE"
19 },
20 "version": "{{.Version}}"
21 },
22 "host": "{{.Host}}",
23 "basePath": "{{.BasePath}}",
24 "paths": {
25 "/config": {
26 "get": {
27 "produces": [
28 "application/json"
29 ],
30 "tags": [
31 "system"
32 ],
33 "summary": "Get server config",
34 "responses": {
35 "200": {
36 "description": "OK",
37 "schema": {
38 "type": "object"
39 }
40 }
41 }
42 }
43 },
44 "/control": {
45 "post": {
46 "consumes": [
47 "application/json"
48 ],
49 "tags": [
50 "system"
51 ],
52 "summary": "Send server control command",
53 "parameters": [
54 {
55 "description": "Control command (e.g. shutdown)",
56 "name": "request",
57 "in": "body",
58 "required": true,
59 "schema": {
60 "$ref": "#/definitions/proto.ServerControl"
61 }
62 }
63 ],
64 "responses": {
65 "200": {
66 "description": "OK"
67 },
68 "400": {
69 "description": "Bad Request",
70 "schema": {
71 "$ref": "#/definitions/proto.Error"
72 }
73 }
74 }
75 }
76 },
77 "/health": {
78 "get": {
79 "tags": [
80 "system"
81 ],
82 "summary": "Health check",
83 "responses": {
84 "200": {
85 "description": "OK"
86 }
87 }
88 }
89 },
90 "/version": {
91 "get": {
92 "produces": [
93 "application/json"
94 ],
95 "tags": [
96 "system"
97 ],
98 "summary": "Get server version",
99 "responses": {
100 "200": {
101 "description": "OK",
102 "schema": {
103 "$ref": "#/definitions/proto.VersionInfo"
104 }
105 }
106 }
107 }
108 },
109 "/workspaces": {
110 "get": {
111 "produces": [
112 "application/json"
113 ],
114 "tags": [
115 "workspaces"
116 ],
117 "summary": "List workspaces",
118 "responses": {
119 "200": {
120 "description": "OK",
121 "schema": {
122 "type": "array",
123 "items": {
124 "$ref": "#/definitions/proto.Workspace"
125 }
126 }
127 }
128 }
129 },
130 "post": {
131 "consumes": [
132 "application/json"
133 ],
134 "produces": [
135 "application/json"
136 ],
137 "tags": [
138 "workspaces"
139 ],
140 "summary": "Create workspace",
141 "parameters": [
142 {
143 "description": "Workspace creation params",
144 "name": "request",
145 "in": "body",
146 "required": true,
147 "schema": {
148 "$ref": "#/definitions/proto.Workspace"
149 }
150 }
151 ],
152 "responses": {
153 "200": {
154 "description": "OK",
155 "schema": {
156 "$ref": "#/definitions/proto.Workspace"
157 }
158 },
159 "400": {
160 "description": "Bad Request",
161 "schema": {
162 "$ref": "#/definitions/proto.Error"
163 }
164 },
165 "500": {
166 "description": "Internal Server Error",
167 "schema": {
168 "$ref": "#/definitions/proto.Error"
169 }
170 }
171 }
172 }
173 },
174 "/workspaces/{id}": {
175 "get": {
176 "produces": [
177 "application/json"
178 ],
179 "tags": [
180 "workspaces"
181 ],
182 "summary": "Get workspace",
183 "parameters": [
184 {
185 "type": "string",
186 "description": "Workspace ID",
187 "name": "id",
188 "in": "path",
189 "required": true
190 }
191 ],
192 "responses": {
193 "200": {
194 "description": "OK",
195 "schema": {
196 "$ref": "#/definitions/proto.Workspace"
197 }
198 },
199 "404": {
200 "description": "Not Found",
201 "schema": {
202 "$ref": "#/definitions/proto.Error"
203 }
204 },
205 "500": {
206 "description": "Internal Server Error",
207 "schema": {
208 "$ref": "#/definitions/proto.Error"
209 }
210 }
211 }
212 },
213 "delete": {
214 "tags": [
215 "workspaces"
216 ],
217 "summary": "Delete workspace",
218 "parameters": [
219 {
220 "type": "string",
221 "description": "Workspace ID",
222 "name": "id",
223 "in": "path",
224 "required": true
225 }
226 ],
227 "responses": {
228 "200": {
229 "description": "OK"
230 },
231 "404": {
232 "description": "Not Found",
233 "schema": {
234 "$ref": "#/definitions/proto.Error"
235 }
236 }
237 }
238 }
239 },
240 "/workspaces/{id}/agent": {
241 "get": {
242 "produces": [
243 "application/json"
244 ],
245 "tags": [
246 "agent"
247 ],
248 "summary": "Get agent info",
249 "parameters": [
250 {
251 "type": "string",
252 "description": "Workspace ID",
253 "name": "id",
254 "in": "path",
255 "required": true
256 }
257 ],
258 "responses": {
259 "200": {
260 "description": "OK",
261 "schema": {
262 "$ref": "#/definitions/proto.AgentInfo"
263 }
264 },
265 "404": {
266 "description": "Not Found",
267 "schema": {
268 "$ref": "#/definitions/proto.Error"
269 }
270 },
271 "500": {
272 "description": "Internal Server Error",
273 "schema": {
274 "$ref": "#/definitions/proto.Error"
275 }
276 }
277 }
278 },
279 "post": {
280 "consumes": [
281 "application/json"
282 ],
283 "tags": [
284 "agent"
285 ],
286 "summary": "Send message to agent",
287 "parameters": [
288 {
289 "type": "string",
290 "description": "Workspace ID",
291 "name": "id",
292 "in": "path",
293 "required": true
294 },
295 {
296 "description": "Agent message",
297 "name": "request",
298 "in": "body",
299 "required": true,
300 "schema": {
301 "$ref": "#/definitions/proto.AgentMessage"
302 }
303 }
304 ],
305 "responses": {
306 "200": {
307 "description": "OK"
308 },
309 "400": {
310 "description": "Bad Request",
311 "schema": {
312 "$ref": "#/definitions/proto.Error"
313 }
314 },
315 "404": {
316 "description": "Not Found",
317 "schema": {
318 "$ref": "#/definitions/proto.Error"
319 }
320 },
321 "500": {
322 "description": "Internal Server Error",
323 "schema": {
324 "$ref": "#/definitions/proto.Error"
325 }
326 }
327 }
328 }
329 },
330 "/workspaces/{id}/agent/default-small-model": {
331 "get": {
332 "produces": [
333 "application/json"
334 ],
335 "tags": [
336 "agent"
337 ],
338 "summary": "Get default small model",
339 "parameters": [
340 {
341 "type": "string",
342 "description": "Workspace ID",
343 "name": "id",
344 "in": "path",
345 "required": true
346 },
347 {
348 "type": "string",
349 "description": "Provider ID",
350 "name": "provider_id",
351 "in": "query"
352 }
353 ],
354 "responses": {
355 "200": {
356 "description": "OK",
357 "schema": {
358 "type": "object"
359 }
360 },
361 "404": {
362 "description": "Not Found",
363 "schema": {
364 "$ref": "#/definitions/proto.Error"
365 }
366 },
367 "500": {
368 "description": "Internal Server Error",
369 "schema": {
370 "$ref": "#/definitions/proto.Error"
371 }
372 }
373 }
374 }
375 },
376 "/workspaces/{id}/agent/init": {
377 "post": {
378 "tags": [
379 "agent"
380 ],
381 "summary": "Initialize agent",
382 "parameters": [
383 {
384 "type": "string",
385 "description": "Workspace ID",
386 "name": "id",
387 "in": "path",
388 "required": true
389 }
390 ],
391 "responses": {
392 "200": {
393 "description": "OK"
394 },
395 "404": {
396 "description": "Not Found",
397 "schema": {
398 "$ref": "#/definitions/proto.Error"
399 }
400 },
401 "500": {
402 "description": "Internal Server Error",
403 "schema": {
404 "$ref": "#/definitions/proto.Error"
405 }
406 }
407 }
408 }
409 },
410 "/workspaces/{id}/agent/sessions/{sid}": {
411 "get": {
412 "produces": [
413 "application/json"
414 ],
415 "tags": [
416 "agent"
417 ],
418 "summary": "Get agent session",
419 "parameters": [
420 {
421 "type": "string",
422 "description": "Workspace ID",
423 "name": "id",
424 "in": "path",
425 "required": true
426 },
427 {
428 "type": "string",
429 "description": "Session ID",
430 "name": "sid",
431 "in": "path",
432 "required": true
433 }
434 ],
435 "responses": {
436 "200": {
437 "description": "OK",
438 "schema": {
439 "$ref": "#/definitions/proto.AgentSession"
440 }
441 },
442 "404": {
443 "description": "Not Found",
444 "schema": {
445 "$ref": "#/definitions/proto.Error"
446 }
447 },
448 "500": {
449 "description": "Internal Server Error",
450 "schema": {
451 "$ref": "#/definitions/proto.Error"
452 }
453 }
454 }
455 }
456 },
457 "/workspaces/{id}/agent/sessions/{sid}/cancel": {
458 "post": {
459 "tags": [
460 "agent"
461 ],
462 "summary": "Cancel agent session",
463 "parameters": [
464 {
465 "type": "string",
466 "description": "Workspace ID",
467 "name": "id",
468 "in": "path",
469 "required": true
470 },
471 {
472 "type": "string",
473 "description": "Session ID",
474 "name": "sid",
475 "in": "path",
476 "required": true
477 }
478 ],
479 "responses": {
480 "200": {
481 "description": "OK"
482 },
483 "404": {
484 "description": "Not Found",
485 "schema": {
486 "$ref": "#/definitions/proto.Error"
487 }
488 },
489 "500": {
490 "description": "Internal Server Error",
491 "schema": {
492 "$ref": "#/definitions/proto.Error"
493 }
494 }
495 }
496 }
497 },
498 "/workspaces/{id}/agent/sessions/{sid}/prompts/clear": {
499 "post": {
500 "tags": [
501 "agent"
502 ],
503 "summary": "Clear prompt queue",
504 "parameters": [
505 {
506 "type": "string",
507 "description": "Workspace ID",
508 "name": "id",
509 "in": "path",
510 "required": true
511 },
512 {
513 "type": "string",
514 "description": "Session ID",
515 "name": "sid",
516 "in": "path",
517 "required": true
518 }
519 ],
520 "responses": {
521 "200": {
522 "description": "OK"
523 },
524 "404": {
525 "description": "Not Found",
526 "schema": {
527 "$ref": "#/definitions/proto.Error"
528 }
529 },
530 "500": {
531 "description": "Internal Server Error",
532 "schema": {
533 "$ref": "#/definitions/proto.Error"
534 }
535 }
536 }
537 }
538 },
539 "/workspaces/{id}/agent/sessions/{sid}/prompts/list": {
540 "get": {
541 "produces": [
542 "application/json"
543 ],
544 "tags": [
545 "agent"
546 ],
547 "summary": "List queued prompts",
548 "parameters": [
549 {
550 "type": "string",
551 "description": "Workspace ID",
552 "name": "id",
553 "in": "path",
554 "required": true
555 },
556 {
557 "type": "string",
558 "description": "Session ID",
559 "name": "sid",
560 "in": "path",
561 "required": true
562 }
563 ],
564 "responses": {
565 "200": {
566 "description": "OK",
567 "schema": {
568 "type": "array",
569 "items": {
570 "type": "string"
571 }
572 }
573 },
574 "404": {
575 "description": "Not Found",
576 "schema": {
577 "$ref": "#/definitions/proto.Error"
578 }
579 },
580 "500": {
581 "description": "Internal Server Error",
582 "schema": {
583 "$ref": "#/definitions/proto.Error"
584 }
585 }
586 }
587 }
588 },
589 "/workspaces/{id}/agent/sessions/{sid}/prompts/queued": {
590 "get": {
591 "produces": [
592 "application/json"
593 ],
594 "tags": [
595 "agent"
596 ],
597 "summary": "Get queued prompt status",
598 "parameters": [
599 {
600 "type": "string",
601 "description": "Workspace ID",
602 "name": "id",
603 "in": "path",
604 "required": true
605 },
606 {
607 "type": "string",
608 "description": "Session ID",
609 "name": "sid",
610 "in": "path",
611 "required": true
612 }
613 ],
614 "responses": {
615 "200": {
616 "description": "OK",
617 "schema": {
618 "type": "object"
619 }
620 },
621 "404": {
622 "description": "Not Found",
623 "schema": {
624 "$ref": "#/definitions/proto.Error"
625 }
626 },
627 "500": {
628 "description": "Internal Server Error",
629 "schema": {
630 "$ref": "#/definitions/proto.Error"
631 }
632 }
633 }
634 }
635 },
636 "/workspaces/{id}/agent/sessions/{sid}/summarize": {
637 "post": {
638 "tags": [
639 "agent"
640 ],
641 "summary": "Summarize session",
642 "parameters": [
643 {
644 "type": "string",
645 "description": "Workspace ID",
646 "name": "id",
647 "in": "path",
648 "required": true
649 },
650 {
651 "type": "string",
652 "description": "Session ID",
653 "name": "sid",
654 "in": "path",
655 "required": true
656 }
657 ],
658 "responses": {
659 "200": {
660 "description": "OK"
661 },
662 "404": {
663 "description": "Not Found",
664 "schema": {
665 "$ref": "#/definitions/proto.Error"
666 }
667 },
668 "500": {
669 "description": "Internal Server Error",
670 "schema": {
671 "$ref": "#/definitions/proto.Error"
672 }
673 }
674 }
675 }
676 },
677 "/workspaces/{id}/agent/update": {
678 "post": {
679 "tags": [
680 "agent"
681 ],
682 "summary": "Update agent",
683 "parameters": [
684 {
685 "type": "string",
686 "description": "Workspace ID",
687 "name": "id",
688 "in": "path",
689 "required": true
690 }
691 ],
692 "responses": {
693 "200": {
694 "description": "OK"
695 },
696 "404": {
697 "description": "Not Found",
698 "schema": {
699 "$ref": "#/definitions/proto.Error"
700 }
701 },
702 "500": {
703 "description": "Internal Server Error",
704 "schema": {
705 "$ref": "#/definitions/proto.Error"
706 }
707 }
708 }
709 }
710 },
711 "/workspaces/{id}/config": {
712 "get": {
713 "produces": [
714 "application/json"
715 ],
716 "tags": [
717 "workspaces"
718 ],
719 "summary": "Get workspace config",
720 "parameters": [
721 {
722 "type": "string",
723 "description": "Workspace ID",
724 "name": "id",
725 "in": "path",
726 "required": true
727 }
728 ],
729 "responses": {
730 "200": {
731 "description": "OK",
732 "schema": {
733 "type": "object"
734 }
735 },
736 "404": {
737 "description": "Not Found",
738 "schema": {
739 "$ref": "#/definitions/proto.Error"
740 }
741 },
742 "500": {
743 "description": "Internal Server Error",
744 "schema": {
745 "$ref": "#/definitions/proto.Error"
746 }
747 }
748 }
749 }
750 },
751 "/workspaces/{id}/config/compact": {
752 "post": {
753 "consumes": [
754 "application/json"
755 ],
756 "tags": [
757 "config"
758 ],
759 "summary": "Set compact mode",
760 "parameters": [
761 {
762 "type": "string",
763 "description": "Workspace ID",
764 "name": "id",
765 "in": "path",
766 "required": true
767 },
768 {
769 "description": "Config compact request",
770 "name": "request",
771 "in": "body",
772 "required": true,
773 "schema": {
774 "$ref": "#/definitions/proto.ConfigCompactRequest"
775 }
776 }
777 ],
778 "responses": {
779 "200": {
780 "description": "OK"
781 },
782 "400": {
783 "description": "Bad Request",
784 "schema": {
785 "$ref": "#/definitions/proto.Error"
786 }
787 },
788 "404": {
789 "description": "Not Found",
790 "schema": {
791 "$ref": "#/definitions/proto.Error"
792 }
793 },
794 "500": {
795 "description": "Internal Server Error",
796 "schema": {
797 "$ref": "#/definitions/proto.Error"
798 }
799 }
800 }
801 }
802 },
803 "/workspaces/{id}/config/import-copilot": {
804 "post": {
805 "produces": [
806 "application/json"
807 ],
808 "tags": [
809 "config"
810 ],
811 "summary": "Import Copilot credentials",
812 "parameters": [
813 {
814 "type": "string",
815 "description": "Workspace ID",
816 "name": "id",
817 "in": "path",
818 "required": true
819 }
820 ],
821 "responses": {
822 "200": {
823 "description": "OK",
824 "schema": {
825 "$ref": "#/definitions/proto.ImportCopilotResponse"
826 }
827 },
828 "404": {
829 "description": "Not Found",
830 "schema": {
831 "$ref": "#/definitions/proto.Error"
832 }
833 },
834 "500": {
835 "description": "Internal Server Error",
836 "schema": {
837 "$ref": "#/definitions/proto.Error"
838 }
839 }
840 }
841 }
842 },
843 "/workspaces/{id}/config/model": {
844 "post": {
845 "consumes": [
846 "application/json"
847 ],
848 "tags": [
849 "config"
850 ],
851 "summary": "Set the preferred model",
852 "parameters": [
853 {
854 "type": "string",
855 "description": "Workspace ID",
856 "name": "id",
857 "in": "path",
858 "required": true
859 },
860 {
861 "description": "Config model request",
862 "name": "request",
863 "in": "body",
864 "required": true,
865 "schema": {
866 "$ref": "#/definitions/proto.ConfigModelRequest"
867 }
868 }
869 ],
870 "responses": {
871 "200": {
872 "description": "OK"
873 },
874 "400": {
875 "description": "Bad Request",
876 "schema": {
877 "$ref": "#/definitions/proto.Error"
878 }
879 },
880 "404": {
881 "description": "Not Found",
882 "schema": {
883 "$ref": "#/definitions/proto.Error"
884 }
885 },
886 "500": {
887 "description": "Internal Server Error",
888 "schema": {
889 "$ref": "#/definitions/proto.Error"
890 }
891 }
892 }
893 }
894 },
895 "/workspaces/{id}/config/provider-key": {
896 "post": {
897 "consumes": [
898 "application/json"
899 ],
900 "tags": [
901 "config"
902 ],
903 "summary": "Set provider API key",
904 "parameters": [
905 {
906 "type": "string",
907 "description": "Workspace ID",
908 "name": "id",
909 "in": "path",
910 "required": true
911 },
912 {
913 "description": "Config provider key request",
914 "name": "request",
915 "in": "body",
916 "required": true,
917 "schema": {
918 "$ref": "#/definitions/proto.ConfigProviderKeyRequest"
919 }
920 }
921 ],
922 "responses": {
923 "200": {
924 "description": "OK"
925 },
926 "400": {
927 "description": "Bad Request",
928 "schema": {
929 "$ref": "#/definitions/proto.Error"
930 }
931 },
932 "404": {
933 "description": "Not Found",
934 "schema": {
935 "$ref": "#/definitions/proto.Error"
936 }
937 },
938 "500": {
939 "description": "Internal Server Error",
940 "schema": {
941 "$ref": "#/definitions/proto.Error"
942 }
943 }
944 }
945 }
946 },
947 "/workspaces/{id}/config/refresh-oauth": {
948 "post": {
949 "consumes": [
950 "application/json"
951 ],
952 "tags": [
953 "config"
954 ],
955 "summary": "Refresh OAuth token",
956 "parameters": [
957 {
958 "type": "string",
959 "description": "Workspace ID",
960 "name": "id",
961 "in": "path",
962 "required": true
963 },
964 {
965 "description": "Refresh OAuth request",
966 "name": "request",
967 "in": "body",
968 "required": true,
969 "schema": {
970 "$ref": "#/definitions/proto.ConfigRefreshOAuthRequest"
971 }
972 }
973 ],
974 "responses": {
975 "200": {
976 "description": "OK"
977 },
978 "400": {
979 "description": "Bad Request",
980 "schema": {
981 "$ref": "#/definitions/proto.Error"
982 }
983 },
984 "404": {
985 "description": "Not Found",
986 "schema": {
987 "$ref": "#/definitions/proto.Error"
988 }
989 },
990 "500": {
991 "description": "Internal Server Error",
992 "schema": {
993 "$ref": "#/definitions/proto.Error"
994 }
995 }
996 }
997 }
998 },
999 "/workspaces/{id}/config/remove": {
1000 "post": {
1001 "consumes": [
1002 "application/json"
1003 ],
1004 "tags": [
1005 "config"
1006 ],
1007 "summary": "Remove a config field",
1008 "parameters": [
1009 {
1010 "type": "string",
1011 "description": "Workspace ID",
1012 "name": "id",
1013 "in": "path",
1014 "required": true
1015 },
1016 {
1017 "description": "Config remove request",
1018 "name": "request",
1019 "in": "body",
1020 "required": true,
1021 "schema": {
1022 "$ref": "#/definitions/proto.ConfigRemoveRequest"
1023 }
1024 }
1025 ],
1026 "responses": {
1027 "200": {
1028 "description": "OK"
1029 },
1030 "400": {
1031 "description": "Bad Request",
1032 "schema": {
1033 "$ref": "#/definitions/proto.Error"
1034 }
1035 },
1036 "404": {
1037 "description": "Not Found",
1038 "schema": {
1039 "$ref": "#/definitions/proto.Error"
1040 }
1041 },
1042 "500": {
1043 "description": "Internal Server Error",
1044 "schema": {
1045 "$ref": "#/definitions/proto.Error"
1046 }
1047 }
1048 }
1049 }
1050 },
1051 "/workspaces/{id}/config/set": {
1052 "post": {
1053 "consumes": [
1054 "application/json"
1055 ],
1056 "tags": [
1057 "config"
1058 ],
1059 "summary": "Set a config field",
1060 "parameters": [
1061 {
1062 "type": "string",
1063 "description": "Workspace ID",
1064 "name": "id",
1065 "in": "path",
1066 "required": true
1067 },
1068 {
1069 "description": "Config set request",
1070 "name": "request",
1071 "in": "body",
1072 "required": true,
1073 "schema": {
1074 "$ref": "#/definitions/proto.ConfigSetRequest"
1075 }
1076 }
1077 ],
1078 "responses": {
1079 "200": {
1080 "description": "OK"
1081 },
1082 "400": {
1083 "description": "Bad Request",
1084 "schema": {
1085 "$ref": "#/definitions/proto.Error"
1086 }
1087 },
1088 "404": {
1089 "description": "Not Found",
1090 "schema": {
1091 "$ref": "#/definitions/proto.Error"
1092 }
1093 },
1094 "500": {
1095 "description": "Internal Server Error",
1096 "schema": {
1097 "$ref": "#/definitions/proto.Error"
1098 }
1099 }
1100 }
1101 }
1102 },
1103 "/workspaces/{id}/events": {
1104 "get": {
1105 "produces": [
1106 "text/event-stream"
1107 ],
1108 "tags": [
1109 "workspaces"
1110 ],
1111 "summary": "Stream workspace events (SSE)",
1112 "parameters": [
1113 {
1114 "type": "string",
1115 "description": "Workspace ID",
1116 "name": "id",
1117 "in": "path",
1118 "required": true
1119 }
1120 ],
1121 "responses": {
1122 "200": {
1123 "description": "OK"
1124 },
1125 "404": {
1126 "description": "Not Found",
1127 "schema": {
1128 "$ref": "#/definitions/proto.Error"
1129 }
1130 },
1131 "500": {
1132 "description": "Internal Server Error",
1133 "schema": {
1134 "$ref": "#/definitions/proto.Error"
1135 }
1136 }
1137 }
1138 }
1139 },
1140 "/workspaces/{id}/filetracker/lastread": {
1141 "get": {
1142 "produces": [
1143 "application/json"
1144 ],
1145 "tags": [
1146 "filetracker"
1147 ],
1148 "summary": "Get last read time for file",
1149 "parameters": [
1150 {
1151 "type": "string",
1152 "description": "Workspace ID",
1153 "name": "id",
1154 "in": "path",
1155 "required": true
1156 },
1157 {
1158 "type": "string",
1159 "description": "Session ID",
1160 "name": "session_id",
1161 "in": "query"
1162 },
1163 {
1164 "type": "string",
1165 "description": "File path",
1166 "name": "path",
1167 "in": "query",
1168 "required": true
1169 }
1170 ],
1171 "responses": {
1172 "200": {
1173 "description": "OK",
1174 "schema": {
1175 "type": "object"
1176 }
1177 },
1178 "404": {
1179 "description": "Not Found",
1180 "schema": {
1181 "$ref": "#/definitions/proto.Error"
1182 }
1183 },
1184 "500": {
1185 "description": "Internal Server Error",
1186 "schema": {
1187 "$ref": "#/definitions/proto.Error"
1188 }
1189 }
1190 }
1191 }
1192 },
1193 "/workspaces/{id}/filetracker/read": {
1194 "post": {
1195 "consumes": [
1196 "application/json"
1197 ],
1198 "tags": [
1199 "filetracker"
1200 ],
1201 "summary": "Record file read",
1202 "parameters": [
1203 {
1204 "type": "string",
1205 "description": "Workspace ID",
1206 "name": "id",
1207 "in": "path",
1208 "required": true
1209 },
1210 {
1211 "description": "File tracker read request",
1212 "name": "request",
1213 "in": "body",
1214 "required": true,
1215 "schema": {
1216 "$ref": "#/definitions/proto.FileTrackerReadRequest"
1217 }
1218 }
1219 ],
1220 "responses": {
1221 "200": {
1222 "description": "OK"
1223 },
1224 "400": {
1225 "description": "Bad Request",
1226 "schema": {
1227 "$ref": "#/definitions/proto.Error"
1228 }
1229 },
1230 "404": {
1231 "description": "Not Found",
1232 "schema": {
1233 "$ref": "#/definitions/proto.Error"
1234 }
1235 },
1236 "500": {
1237 "description": "Internal Server Error",
1238 "schema": {
1239 "$ref": "#/definitions/proto.Error"
1240 }
1241 }
1242 }
1243 }
1244 },
1245 "/workspaces/{id}/lsps": {
1246 "get": {
1247 "produces": [
1248 "application/json"
1249 ],
1250 "tags": [
1251 "lsp"
1252 ],
1253 "summary": "List LSP clients",
1254 "parameters": [
1255 {
1256 "type": "string",
1257 "description": "Workspace ID",
1258 "name": "id",
1259 "in": "path",
1260 "required": true
1261 }
1262 ],
1263 "responses": {
1264 "200": {
1265 "description": "OK",
1266 "schema": {
1267 "type": "object",
1268 "additionalProperties": {
1269 "$ref": "#/definitions/proto.LSPClientInfo"
1270 }
1271 }
1272 },
1273 "404": {
1274 "description": "Not Found",
1275 "schema": {
1276 "$ref": "#/definitions/proto.Error"
1277 }
1278 },
1279 "500": {
1280 "description": "Internal Server Error",
1281 "schema": {
1282 "$ref": "#/definitions/proto.Error"
1283 }
1284 }
1285 }
1286 }
1287 },
1288 "/workspaces/{id}/lsps/start": {
1289 "post": {
1290 "consumes": [
1291 "application/json"
1292 ],
1293 "tags": [
1294 "lsp"
1295 ],
1296 "summary": "Start LSP server",
1297 "parameters": [
1298 {
1299 "type": "string",
1300 "description": "Workspace ID",
1301 "name": "id",
1302 "in": "path",
1303 "required": true
1304 },
1305 {
1306 "description": "LSP start request",
1307 "name": "request",
1308 "in": "body",
1309 "required": true,
1310 "schema": {
1311 "$ref": "#/definitions/proto.LSPStartRequest"
1312 }
1313 }
1314 ],
1315 "responses": {
1316 "200": {
1317 "description": "OK"
1318 },
1319 "400": {
1320 "description": "Bad Request",
1321 "schema": {
1322 "$ref": "#/definitions/proto.Error"
1323 }
1324 },
1325 "404": {
1326 "description": "Not Found",
1327 "schema": {
1328 "$ref": "#/definitions/proto.Error"
1329 }
1330 },
1331 "500": {
1332 "description": "Internal Server Error",
1333 "schema": {
1334 "$ref": "#/definitions/proto.Error"
1335 }
1336 }
1337 }
1338 }
1339 },
1340 "/workspaces/{id}/lsps/stop": {
1341 "post": {
1342 "tags": [
1343 "lsp"
1344 ],
1345 "summary": "Stop all LSP servers",
1346 "parameters": [
1347 {
1348 "type": "string",
1349 "description": "Workspace ID",
1350 "name": "id",
1351 "in": "path",
1352 "required": true
1353 }
1354 ],
1355 "responses": {
1356 "200": {
1357 "description": "OK"
1358 },
1359 "404": {
1360 "description": "Not Found",
1361 "schema": {
1362 "$ref": "#/definitions/proto.Error"
1363 }
1364 },
1365 "500": {
1366 "description": "Internal Server Error",
1367 "schema": {
1368 "$ref": "#/definitions/proto.Error"
1369 }
1370 }
1371 }
1372 }
1373 },
1374 "/workspaces/{id}/lsps/{lsp}/diagnostics": {
1375 "get": {
1376 "produces": [
1377 "application/json"
1378 ],
1379 "tags": [
1380 "lsp"
1381 ],
1382 "summary": "Get LSP diagnostics",
1383 "parameters": [
1384 {
1385 "type": "string",
1386 "description": "Workspace ID",
1387 "name": "id",
1388 "in": "path",
1389 "required": true
1390 },
1391 {
1392 "type": "string",
1393 "description": "LSP client name",
1394 "name": "lsp",
1395 "in": "path",
1396 "required": true
1397 }
1398 ],
1399 "responses": {
1400 "200": {
1401 "description": "OK",
1402 "schema": {
1403 "type": "object"
1404 }
1405 },
1406 "404": {
1407 "description": "Not Found",
1408 "schema": {
1409 "$ref": "#/definitions/proto.Error"
1410 }
1411 },
1412 "500": {
1413 "description": "Internal Server Error",
1414 "schema": {
1415 "$ref": "#/definitions/proto.Error"
1416 }
1417 }
1418 }
1419 }
1420 },
1421 "/workspaces/{id}/mcp/get-prompt": {
1422 "post": {
1423 "consumes": [
1424 "application/json"
1425 ],
1426 "produces": [
1427 "application/json"
1428 ],
1429 "tags": [
1430 "mcp"
1431 ],
1432 "summary": "Get MCP prompt",
1433 "parameters": [
1434 {
1435 "type": "string",
1436 "description": "Workspace ID",
1437 "name": "id",
1438 "in": "path",
1439 "required": true
1440 },
1441 {
1442 "description": "MCP get prompt request",
1443 "name": "request",
1444 "in": "body",
1445 "required": true,
1446 "schema": {
1447 "$ref": "#/definitions/proto.MCPGetPromptRequest"
1448 }
1449 }
1450 ],
1451 "responses": {
1452 "200": {
1453 "description": "OK",
1454 "schema": {
1455 "$ref": "#/definitions/proto.MCPGetPromptResponse"
1456 }
1457 },
1458 "400": {
1459 "description": "Bad Request",
1460 "schema": {
1461 "$ref": "#/definitions/proto.Error"
1462 }
1463 },
1464 "404": {
1465 "description": "Not Found",
1466 "schema": {
1467 "$ref": "#/definitions/proto.Error"
1468 }
1469 },
1470 "500": {
1471 "description": "Internal Server Error",
1472 "schema": {
1473 "$ref": "#/definitions/proto.Error"
1474 }
1475 }
1476 }
1477 }
1478 },
1479 "/workspaces/{id}/mcp/read-resource": {
1480 "post": {
1481 "consumes": [
1482 "application/json"
1483 ],
1484 "produces": [
1485 "application/json"
1486 ],
1487 "tags": [
1488 "mcp"
1489 ],
1490 "summary": "Read MCP resource",
1491 "parameters": [
1492 {
1493 "type": "string",
1494 "description": "Workspace ID",
1495 "name": "id",
1496 "in": "path",
1497 "required": true
1498 },
1499 {
1500 "description": "MCP read resource request",
1501 "name": "request",
1502 "in": "body",
1503 "required": true,
1504 "schema": {
1505 "$ref": "#/definitions/proto.MCPReadResourceRequest"
1506 }
1507 }
1508 ],
1509 "responses": {
1510 "200": {
1511 "description": "OK",
1512 "schema": {
1513 "type": "object"
1514 }
1515 },
1516 "400": {
1517 "description": "Bad Request",
1518 "schema": {
1519 "$ref": "#/definitions/proto.Error"
1520 }
1521 },
1522 "404": {
1523 "description": "Not Found",
1524 "schema": {
1525 "$ref": "#/definitions/proto.Error"
1526 }
1527 },
1528 "500": {
1529 "description": "Internal Server Error",
1530 "schema": {
1531 "$ref": "#/definitions/proto.Error"
1532 }
1533 }
1534 }
1535 }
1536 },
1537 "/workspaces/{id}/mcp/refresh-prompts": {
1538 "post": {
1539 "consumes": [
1540 "application/json"
1541 ],
1542 "tags": [
1543 "mcp"
1544 ],
1545 "summary": "Refresh MCP prompts",
1546 "parameters": [
1547 {
1548 "type": "string",
1549 "description": "Workspace ID",
1550 "name": "id",
1551 "in": "path",
1552 "required": true
1553 },
1554 {
1555 "description": "MCP name request",
1556 "name": "request",
1557 "in": "body",
1558 "required": true,
1559 "schema": {
1560 "$ref": "#/definitions/proto.MCPNameRequest"
1561 }
1562 }
1563 ],
1564 "responses": {
1565 "200": {
1566 "description": "OK"
1567 },
1568 "400": {
1569 "description": "Bad Request",
1570 "schema": {
1571 "$ref": "#/definitions/proto.Error"
1572 }
1573 },
1574 "404": {
1575 "description": "Not Found",
1576 "schema": {
1577 "$ref": "#/definitions/proto.Error"
1578 }
1579 },
1580 "500": {
1581 "description": "Internal Server Error",
1582 "schema": {
1583 "$ref": "#/definitions/proto.Error"
1584 }
1585 }
1586 }
1587 }
1588 },
1589 "/workspaces/{id}/mcp/refresh-resources": {
1590 "post": {
1591 "consumes": [
1592 "application/json"
1593 ],
1594 "tags": [
1595 "mcp"
1596 ],
1597 "summary": "Refresh MCP resources",
1598 "parameters": [
1599 {
1600 "type": "string",
1601 "description": "Workspace ID",
1602 "name": "id",
1603 "in": "path",
1604 "required": true
1605 },
1606 {
1607 "description": "MCP name request",
1608 "name": "request",
1609 "in": "body",
1610 "required": true,
1611 "schema": {
1612 "$ref": "#/definitions/proto.MCPNameRequest"
1613 }
1614 }
1615 ],
1616 "responses": {
1617 "200": {
1618 "description": "OK"
1619 },
1620 "400": {
1621 "description": "Bad Request",
1622 "schema": {
1623 "$ref": "#/definitions/proto.Error"
1624 }
1625 },
1626 "404": {
1627 "description": "Not Found",
1628 "schema": {
1629 "$ref": "#/definitions/proto.Error"
1630 }
1631 },
1632 "500": {
1633 "description": "Internal Server Error",
1634 "schema": {
1635 "$ref": "#/definitions/proto.Error"
1636 }
1637 }
1638 }
1639 }
1640 },
1641 "/workspaces/{id}/mcp/refresh-tools": {
1642 "post": {
1643 "consumes": [
1644 "application/json"
1645 ],
1646 "tags": [
1647 "mcp"
1648 ],
1649 "summary": "Refresh MCP tools",
1650 "parameters": [
1651 {
1652 "type": "string",
1653 "description": "Workspace ID",
1654 "name": "id",
1655 "in": "path",
1656 "required": true
1657 },
1658 {
1659 "description": "MCP name request",
1660 "name": "request",
1661 "in": "body",
1662 "required": true,
1663 "schema": {
1664 "$ref": "#/definitions/proto.MCPNameRequest"
1665 }
1666 }
1667 ],
1668 "responses": {
1669 "200": {
1670 "description": "OK"
1671 },
1672 "400": {
1673 "description": "Bad Request",
1674 "schema": {
1675 "$ref": "#/definitions/proto.Error"
1676 }
1677 },
1678 "404": {
1679 "description": "Not Found",
1680 "schema": {
1681 "$ref": "#/definitions/proto.Error"
1682 }
1683 },
1684 "500": {
1685 "description": "Internal Server Error",
1686 "schema": {
1687 "$ref": "#/definitions/proto.Error"
1688 }
1689 }
1690 }
1691 }
1692 },
1693 "/workspaces/{id}/mcp/states": {
1694 "get": {
1695 "produces": [
1696 "application/json"
1697 ],
1698 "tags": [
1699 "mcp"
1700 ],
1701 "summary": "Get MCP client states",
1702 "parameters": [
1703 {
1704 "type": "string",
1705 "description": "Workspace ID",
1706 "name": "id",
1707 "in": "path",
1708 "required": true
1709 }
1710 ],
1711 "responses": {
1712 "200": {
1713 "description": "OK",
1714 "schema": {
1715 "type": "object",
1716 "additionalProperties": {
1717 "$ref": "#/definitions/proto.MCPClientInfo"
1718 }
1719 }
1720 },
1721 "404": {
1722 "description": "Not Found",
1723 "schema": {
1724 "$ref": "#/definitions/proto.Error"
1725 }
1726 },
1727 "500": {
1728 "description": "Internal Server Error",
1729 "schema": {
1730 "$ref": "#/definitions/proto.Error"
1731 }
1732 }
1733 }
1734 }
1735 },
1736 "/workspaces/{id}/messages/user": {
1737 "get": {
1738 "produces": [
1739 "application/json"
1740 ],
1741 "tags": [
1742 "workspaces"
1743 ],
1744 "summary": "Get all user messages for workspace",
1745 "parameters": [
1746 {
1747 "type": "string",
1748 "description": "Workspace ID",
1749 "name": "id",
1750 "in": "path",
1751 "required": true
1752 }
1753 ],
1754 "responses": {
1755 "200": {
1756 "description": "OK",
1757 "schema": {
1758 "type": "array",
1759 "items": {
1760 "$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
1761 }
1762 }
1763 },
1764 "404": {
1765 "description": "Not Found",
1766 "schema": {
1767 "$ref": "#/definitions/proto.Error"
1768 }
1769 },
1770 "500": {
1771 "description": "Internal Server Error",
1772 "schema": {
1773 "$ref": "#/definitions/proto.Error"
1774 }
1775 }
1776 }
1777 }
1778 },
1779 "/workspaces/{id}/permissions/grant": {
1780 "post": {
1781 "consumes": [
1782 "application/json"
1783 ],
1784 "tags": [
1785 "permissions"
1786 ],
1787 "summary": "Grant permission",
1788 "parameters": [
1789 {
1790 "type": "string",
1791 "description": "Workspace ID",
1792 "name": "id",
1793 "in": "path",
1794 "required": true
1795 },
1796 {
1797 "description": "Permission grant",
1798 "name": "request",
1799 "in": "body",
1800 "required": true,
1801 "schema": {
1802 "$ref": "#/definitions/proto.PermissionGrant"
1803 }
1804 }
1805 ],
1806 "responses": {
1807 "200": {
1808 "description": "OK"
1809 },
1810 "400": {
1811 "description": "Bad Request",
1812 "schema": {
1813 "$ref": "#/definitions/proto.Error"
1814 }
1815 },
1816 "404": {
1817 "description": "Not Found",
1818 "schema": {
1819 "$ref": "#/definitions/proto.Error"
1820 }
1821 },
1822 "500": {
1823 "description": "Internal Server Error",
1824 "schema": {
1825 "$ref": "#/definitions/proto.Error"
1826 }
1827 }
1828 }
1829 }
1830 },
1831 "/workspaces/{id}/permissions/skip": {
1832 "get": {
1833 "produces": [
1834 "application/json"
1835 ],
1836 "tags": [
1837 "permissions"
1838 ],
1839 "summary": "Get skip permissions status",
1840 "parameters": [
1841 {
1842 "type": "string",
1843 "description": "Workspace ID",
1844 "name": "id",
1845 "in": "path",
1846 "required": true
1847 }
1848 ],
1849 "responses": {
1850 "200": {
1851 "description": "OK",
1852 "schema": {
1853 "$ref": "#/definitions/proto.PermissionSkipRequest"
1854 }
1855 },
1856 "404": {
1857 "description": "Not Found",
1858 "schema": {
1859 "$ref": "#/definitions/proto.Error"
1860 }
1861 },
1862 "500": {
1863 "description": "Internal Server Error",
1864 "schema": {
1865 "$ref": "#/definitions/proto.Error"
1866 }
1867 }
1868 }
1869 },
1870 "post": {
1871 "consumes": [
1872 "application/json"
1873 ],
1874 "tags": [
1875 "permissions"
1876 ],
1877 "summary": "Set skip permissions",
1878 "parameters": [
1879 {
1880 "type": "string",
1881 "description": "Workspace ID",
1882 "name": "id",
1883 "in": "path",
1884 "required": true
1885 },
1886 {
1887 "description": "Permission skip request",
1888 "name": "request",
1889 "in": "body",
1890 "required": true,
1891 "schema": {
1892 "$ref": "#/definitions/proto.PermissionSkipRequest"
1893 }
1894 }
1895 ],
1896 "responses": {
1897 "200": {
1898 "description": "OK"
1899 },
1900 "400": {
1901 "description": "Bad Request",
1902 "schema": {
1903 "$ref": "#/definitions/proto.Error"
1904 }
1905 },
1906 "404": {
1907 "description": "Not Found",
1908 "schema": {
1909 "$ref": "#/definitions/proto.Error"
1910 }
1911 },
1912 "500": {
1913 "description": "Internal Server Error",
1914 "schema": {
1915 "$ref": "#/definitions/proto.Error"
1916 }
1917 }
1918 }
1919 }
1920 },
1921 "/workspaces/{id}/project/init": {
1922 "post": {
1923 "tags": [
1924 "project"
1925 ],
1926 "summary": "Mark project as initialized",
1927 "parameters": [
1928 {
1929 "type": "string",
1930 "description": "Workspace ID",
1931 "name": "id",
1932 "in": "path",
1933 "required": true
1934 }
1935 ],
1936 "responses": {
1937 "200": {
1938 "description": "OK"
1939 },
1940 "404": {
1941 "description": "Not Found",
1942 "schema": {
1943 "$ref": "#/definitions/proto.Error"
1944 }
1945 },
1946 "500": {
1947 "description": "Internal Server Error",
1948 "schema": {
1949 "$ref": "#/definitions/proto.Error"
1950 }
1951 }
1952 }
1953 }
1954 },
1955 "/workspaces/{id}/project/init-prompt": {
1956 "get": {
1957 "produces": [
1958 "application/json"
1959 ],
1960 "tags": [
1961 "project"
1962 ],
1963 "summary": "Get project initialization prompt",
1964 "parameters": [
1965 {
1966 "type": "string",
1967 "description": "Workspace ID",
1968 "name": "id",
1969 "in": "path",
1970 "required": true
1971 }
1972 ],
1973 "responses": {
1974 "200": {
1975 "description": "OK",
1976 "schema": {
1977 "$ref": "#/definitions/proto.ProjectInitPromptResponse"
1978 }
1979 },
1980 "404": {
1981 "description": "Not Found",
1982 "schema": {
1983 "$ref": "#/definitions/proto.Error"
1984 }
1985 },
1986 "500": {
1987 "description": "Internal Server Error",
1988 "schema": {
1989 "$ref": "#/definitions/proto.Error"
1990 }
1991 }
1992 }
1993 }
1994 },
1995 "/workspaces/{id}/project/needs-init": {
1996 "get": {
1997 "produces": [
1998 "application/json"
1999 ],
2000 "tags": [
2001 "project"
2002 ],
2003 "summary": "Check if project needs initialization",
2004 "parameters": [
2005 {
2006 "type": "string",
2007 "description": "Workspace ID",
2008 "name": "id",
2009 "in": "path",
2010 "required": true
2011 }
2012 ],
2013 "responses": {
2014 "200": {
2015 "description": "OK",
2016 "schema": {
2017 "$ref": "#/definitions/proto.ProjectNeedsInitResponse"
2018 }
2019 },
2020 "404": {
2021 "description": "Not Found",
2022 "schema": {
2023 "$ref": "#/definitions/proto.Error"
2024 }
2025 },
2026 "500": {
2027 "description": "Internal Server Error",
2028 "schema": {
2029 "$ref": "#/definitions/proto.Error"
2030 }
2031 }
2032 }
2033 }
2034 },
2035 "/workspaces/{id}/providers": {
2036 "get": {
2037 "produces": [
2038 "application/json"
2039 ],
2040 "tags": [
2041 "workspaces"
2042 ],
2043 "summary": "Get workspace providers",
2044 "parameters": [
2045 {
2046 "type": "string",
2047 "description": "Workspace ID",
2048 "name": "id",
2049 "in": "path",
2050 "required": true
2051 }
2052 ],
2053 "responses": {
2054 "200": {
2055 "description": "OK",
2056 "schema": {
2057 "type": "object"
2058 }
2059 },
2060 "404": {
2061 "description": "Not Found",
2062 "schema": {
2063 "$ref": "#/definitions/proto.Error"
2064 }
2065 },
2066 "500": {
2067 "description": "Internal Server Error",
2068 "schema": {
2069 "$ref": "#/definitions/proto.Error"
2070 }
2071 }
2072 }
2073 }
2074 },
2075 "/workspaces/{id}/sessions": {
2076 "get": {
2077 "produces": [
2078 "application/json"
2079 ],
2080 "tags": [
2081 "sessions"
2082 ],
2083 "summary": "List sessions",
2084 "parameters": [
2085 {
2086 "type": "string",
2087 "description": "Workspace ID",
2088 "name": "id",
2089 "in": "path",
2090 "required": true
2091 }
2092 ],
2093 "responses": {
2094 "200": {
2095 "description": "OK",
2096 "schema": {
2097 "type": "array",
2098 "items": {
2099 "$ref": "#/definitions/proto.Session"
2100 }
2101 }
2102 },
2103 "404": {
2104 "description": "Not Found",
2105 "schema": {
2106 "$ref": "#/definitions/proto.Error"
2107 }
2108 },
2109 "500": {
2110 "description": "Internal Server Error",
2111 "schema": {
2112 "$ref": "#/definitions/proto.Error"
2113 }
2114 }
2115 }
2116 },
2117 "post": {
2118 "consumes": [
2119 "application/json"
2120 ],
2121 "produces": [
2122 "application/json"
2123 ],
2124 "tags": [
2125 "sessions"
2126 ],
2127 "summary": "Create session",
2128 "parameters": [
2129 {
2130 "type": "string",
2131 "description": "Workspace ID",
2132 "name": "id",
2133 "in": "path",
2134 "required": true
2135 },
2136 {
2137 "description": "Session creation params (title)",
2138 "name": "request",
2139 "in": "body",
2140 "required": true,
2141 "schema": {
2142 "$ref": "#/definitions/proto.Session"
2143 }
2144 }
2145 ],
2146 "responses": {
2147 "200": {
2148 "description": "OK",
2149 "schema": {
2150 "$ref": "#/definitions/proto.Session"
2151 }
2152 },
2153 "400": {
2154 "description": "Bad Request",
2155 "schema": {
2156 "$ref": "#/definitions/proto.Error"
2157 }
2158 },
2159 "404": {
2160 "description": "Not Found",
2161 "schema": {
2162 "$ref": "#/definitions/proto.Error"
2163 }
2164 },
2165 "500": {
2166 "description": "Internal Server Error",
2167 "schema": {
2168 "$ref": "#/definitions/proto.Error"
2169 }
2170 }
2171 }
2172 }
2173 },
2174 "/workspaces/{id}/sessions/{sid}": {
2175 "get": {
2176 "produces": [
2177 "application/json"
2178 ],
2179 "tags": [
2180 "sessions"
2181 ],
2182 "summary": "Get session",
2183 "parameters": [
2184 {
2185 "type": "string",
2186 "description": "Workspace ID",
2187 "name": "id",
2188 "in": "path",
2189 "required": true
2190 },
2191 {
2192 "type": "string",
2193 "description": "Session ID",
2194 "name": "sid",
2195 "in": "path",
2196 "required": true
2197 }
2198 ],
2199 "responses": {
2200 "200": {
2201 "description": "OK",
2202 "schema": {
2203 "$ref": "#/definitions/proto.Session"
2204 }
2205 },
2206 "404": {
2207 "description": "Not Found",
2208 "schema": {
2209 "$ref": "#/definitions/proto.Error"
2210 }
2211 },
2212 "500": {
2213 "description": "Internal Server Error",
2214 "schema": {
2215 "$ref": "#/definitions/proto.Error"
2216 }
2217 }
2218 }
2219 },
2220 "put": {
2221 "consumes": [
2222 "application/json"
2223 ],
2224 "produces": [
2225 "application/json"
2226 ],
2227 "tags": [
2228 "sessions"
2229 ],
2230 "summary": "Update session",
2231 "parameters": [
2232 {
2233 "type": "string",
2234 "description": "Workspace ID",
2235 "name": "id",
2236 "in": "path",
2237 "required": true
2238 },
2239 {
2240 "type": "string",
2241 "description": "Session ID",
2242 "name": "sid",
2243 "in": "path",
2244 "required": true
2245 },
2246 {
2247 "description": "Updated session",
2248 "name": "request",
2249 "in": "body",
2250 "required": true,
2251 "schema": {
2252 "$ref": "#/definitions/proto.Session"
2253 }
2254 }
2255 ],
2256 "responses": {
2257 "200": {
2258 "description": "OK",
2259 "schema": {
2260 "$ref": "#/definitions/proto.Session"
2261 }
2262 },
2263 "400": {
2264 "description": "Bad Request",
2265 "schema": {
2266 "$ref": "#/definitions/proto.Error"
2267 }
2268 },
2269 "404": {
2270 "description": "Not Found",
2271 "schema": {
2272 "$ref": "#/definitions/proto.Error"
2273 }
2274 },
2275 "500": {
2276 "description": "Internal Server Error",
2277 "schema": {
2278 "$ref": "#/definitions/proto.Error"
2279 }
2280 }
2281 }
2282 },
2283 "delete": {
2284 "tags": [
2285 "sessions"
2286 ],
2287 "summary": "Delete session",
2288 "parameters": [
2289 {
2290 "type": "string",
2291 "description": "Workspace ID",
2292 "name": "id",
2293 "in": "path",
2294 "required": true
2295 },
2296 {
2297 "type": "string",
2298 "description": "Session ID",
2299 "name": "sid",
2300 "in": "path",
2301 "required": true
2302 }
2303 ],
2304 "responses": {
2305 "200": {
2306 "description": "OK"
2307 },
2308 "404": {
2309 "description": "Not Found",
2310 "schema": {
2311 "$ref": "#/definitions/proto.Error"
2312 }
2313 },
2314 "500": {
2315 "description": "Internal Server Error",
2316 "schema": {
2317 "$ref": "#/definitions/proto.Error"
2318 }
2319 }
2320 }
2321 }
2322 },
2323 "/workspaces/{id}/sessions/{sid}/filetracker/files": {
2324 "get": {
2325 "produces": [
2326 "application/json"
2327 ],
2328 "tags": [
2329 "filetracker"
2330 ],
2331 "summary": "List tracked files for session",
2332 "parameters": [
2333 {
2334 "type": "string",
2335 "description": "Workspace ID",
2336 "name": "id",
2337 "in": "path",
2338 "required": true
2339 },
2340 {
2341 "type": "string",
2342 "description": "Session ID",
2343 "name": "sid",
2344 "in": "path",
2345 "required": true
2346 }
2347 ],
2348 "responses": {
2349 "200": {
2350 "description": "OK",
2351 "schema": {
2352 "type": "array",
2353 "items": {
2354 "type": "string"
2355 }
2356 }
2357 },
2358 "404": {
2359 "description": "Not Found",
2360 "schema": {
2361 "$ref": "#/definitions/proto.Error"
2362 }
2363 },
2364 "500": {
2365 "description": "Internal Server Error",
2366 "schema": {
2367 "$ref": "#/definitions/proto.Error"
2368 }
2369 }
2370 }
2371 }
2372 },
2373 "/workspaces/{id}/sessions/{sid}/history": {
2374 "get": {
2375 "produces": [
2376 "application/json"
2377 ],
2378 "tags": [
2379 "sessions"
2380 ],
2381 "summary": "Get session history",
2382 "parameters": [
2383 {
2384 "type": "string",
2385 "description": "Workspace ID",
2386 "name": "id",
2387 "in": "path",
2388 "required": true
2389 },
2390 {
2391 "type": "string",
2392 "description": "Session ID",
2393 "name": "sid",
2394 "in": "path",
2395 "required": true
2396 }
2397 ],
2398 "responses": {
2399 "200": {
2400 "description": "OK",
2401 "schema": {
2402 "type": "array",
2403 "items": {
2404 "$ref": "#/definitions/proto.File"
2405 }
2406 }
2407 },
2408 "404": {
2409 "description": "Not Found",
2410 "schema": {
2411 "$ref": "#/definitions/proto.Error"
2412 }
2413 },
2414 "500": {
2415 "description": "Internal Server Error",
2416 "schema": {
2417 "$ref": "#/definitions/proto.Error"
2418 }
2419 }
2420 }
2421 }
2422 },
2423 "/workspaces/{id}/sessions/{sid}/messages": {
2424 "get": {
2425 "produces": [
2426 "application/json"
2427 ],
2428 "tags": [
2429 "sessions"
2430 ],
2431 "summary": "Get session messages",
2432 "parameters": [
2433 {
2434 "type": "string",
2435 "description": "Workspace ID",
2436 "name": "id",
2437 "in": "path",
2438 "required": true
2439 },
2440 {
2441 "type": "string",
2442 "description": "Session ID",
2443 "name": "sid",
2444 "in": "path",
2445 "required": true
2446 }
2447 ],
2448 "responses": {
2449 "200": {
2450 "description": "OK",
2451 "schema": {
2452 "type": "array",
2453 "items": {
2454 "$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
2455 }
2456 }
2457 },
2458 "404": {
2459 "description": "Not Found",
2460 "schema": {
2461 "$ref": "#/definitions/proto.Error"
2462 }
2463 },
2464 "500": {
2465 "description": "Internal Server Error",
2466 "schema": {
2467 "$ref": "#/definitions/proto.Error"
2468 }
2469 }
2470 }
2471 }
2472 },
2473 "/workspaces/{id}/sessions/{sid}/messages/user": {
2474 "get": {
2475 "produces": [
2476 "application/json"
2477 ],
2478 "tags": [
2479 "sessions"
2480 ],
2481 "summary": "Get user messages for session",
2482 "parameters": [
2483 {
2484 "type": "string",
2485 "description": "Workspace ID",
2486 "name": "id",
2487 "in": "path",
2488 "required": true
2489 },
2490 {
2491 "type": "string",
2492 "description": "Session ID",
2493 "name": "sid",
2494 "in": "path",
2495 "required": true
2496 }
2497 ],
2498 "responses": {
2499 "200": {
2500 "description": "OK",
2501 "schema": {
2502 "type": "array",
2503 "items": {
2504 "$ref": "#/definitions/github_com_charmbracelet_crush_internal_proto.Message"
2505 }
2506 }
2507 },
2508 "404": {
2509 "description": "Not Found",
2510 "schema": {
2511 "$ref": "#/definitions/proto.Error"
2512 }
2513 },
2514 "500": {
2515 "description": "Internal Server Error",
2516 "schema": {
2517 "$ref": "#/definitions/proto.Error"
2518 }
2519 }
2520 }
2521 }
2522 }
2523 },
2524 "definitions": {
2525 "catwalk.Model": {
2526 "type": "object",
2527 "properties": {
2528 "can_reason": {
2529 "type": "boolean"
2530 },
2531 "context_window": {
2532 "type": "integer"
2533 },
2534 "cost_per_1m_in": {
2535 "type": "number"
2536 },
2537 "cost_per_1m_in_cached": {
2538 "type": "number"
2539 },
2540 "cost_per_1m_out": {
2541 "type": "number"
2542 },
2543 "cost_per_1m_out_cached": {
2544 "type": "number"
2545 },
2546 "default_max_tokens": {
2547 "type": "integer"
2548 },
2549 "default_reasoning_effort": {
2550 "type": "string"
2551 },
2552 "id": {
2553 "type": "string"
2554 },
2555 "name": {
2556 "type": "string"
2557 },
2558 "options": {
2559 "$ref": "#/definitions/catwalk.ModelOptions"
2560 },
2561 "reasoning_levels": {
2562 "type": "array",
2563 "items": {
2564 "type": "string"
2565 }
2566 },
2567 "supports_attachments": {
2568 "type": "boolean"
2569 }
2570 }
2571 },
2572 "catwalk.ModelOptions": {
2573 "type": "object",
2574 "properties": {
2575 "frequency_penalty": {
2576 "type": "number"
2577 },
2578 "presence_penalty": {
2579 "type": "number"
2580 },
2581 "provider_options": {
2582 "type": "object",
2583 "additionalProperties": {}
2584 },
2585 "temperature": {
2586 "type": "number"
2587 },
2588 "top_k": {
2589 "type": "integer"
2590 },
2591 "top_p": {
2592 "type": "number"
2593 }
2594 }
2595 },
2596 "config.Attribution": {
2597 "type": "object",
2598 "properties": {
2599 "co_authored_by": {
2600 "type": "boolean"
2601 },
2602 "generated_with": {
2603 "type": "boolean"
2604 },
2605 "trailer_style": {
2606 "$ref": "#/definitions/config.TrailerStyle"
2607 }
2608 }
2609 },
2610 "config.Completions": {
2611 "type": "object",
2612 "properties": {
2613 "max_depth": {
2614 "type": "integer"
2615 },
2616 "max_items": {
2617 "type": "integer"
2618 }
2619 }
2620 },
2621 "config.LSPConfig": {
2622 "type": "object",
2623 "properties": {
2624 "args": {
2625 "type": "array",
2626 "items": {
2627 "type": "string"
2628 }
2629 },
2630 "command": {
2631 "type": "string"
2632 },
2633 "disabled": {
2634 "type": "boolean"
2635 },
2636 "env": {
2637 "type": "object",
2638 "additionalProperties": {
2639 "type": "string"
2640 }
2641 },
2642 "filetypes": {
2643 "type": "array",
2644 "items": {
2645 "type": "string"
2646 }
2647 },
2648 "init_options": {
2649 "type": "object",
2650 "additionalProperties": {}
2651 },
2652 "options": {
2653 "type": "object",
2654 "additionalProperties": {}
2655 },
2656 "root_markers": {
2657 "type": "array",
2658 "items": {
2659 "type": "string"
2660 }
2661 },
2662 "timeout": {
2663 "type": "integer"
2664 }
2665 }
2666 },
2667 "config.LSPs": {
2668 "type": "object",
2669 "additionalProperties": {
2670 "$ref": "#/definitions/config.LSPConfig"
2671 }
2672 },
2673 "config.MCPConfig": {
2674 "type": "object",
2675 "properties": {
2676 "args": {
2677 "type": "array",
2678 "items": {
2679 "type": "string"
2680 }
2681 },
2682 "command": {
2683 "type": "string"
2684 },
2685 "disabled": {
2686 "type": "boolean"
2687 },
2688 "disabled_tools": {
2689 "type": "array",
2690 "items": {
2691 "type": "string"
2692 }
2693 },
2694 "env": {
2695 "type": "object",
2696 "additionalProperties": {
2697 "type": "string"
2698 }
2699 },
2700 "headers": {
2701 "description": "TODO: maybe make it possible to get the value from the env",
2702 "type": "object",
2703 "additionalProperties": {
2704 "type": "string"
2705 }
2706 },
2707 "timeout": {
2708 "type": "integer"
2709 },
2710 "type": {
2711 "$ref": "#/definitions/config.MCPType"
2712 },
2713 "url": {
2714 "type": "string"
2715 }
2716 }
2717 },
2718 "config.MCPType": {
2719 "type": "string",
2720 "enum": [
2721 "stdio",
2722 "sse",
2723 "http"
2724 ],
2725 "x-enum-varnames": [
2726 "MCPStdio",
2727 "MCPSSE",
2728 "MCPHttp"
2729 ]
2730 },
2731 "config.MCPs": {
2732 "type": "object",
2733 "additionalProperties": {
2734 "$ref": "#/definitions/config.MCPConfig"
2735 }
2736 },
2737 "config.Permissions": {
2738 "type": "object",
2739 "properties": {
2740 "allowed_tools": {
2741 "type": "array",
2742 "items": {
2743 "type": "string"
2744 }
2745 }
2746 }
2747 },
2748 "config.Scope": {
2749 "type": "integer",
2750 "enum": [
2751 0,
2752 1
2753 ],
2754 "x-enum-varnames": [
2755 "ScopeGlobal",
2756 "ScopeWorkspace"
2757 ]
2758 },
2759 "config.SelectedModel": {
2760 "type": "object",
2761 "properties": {
2762 "frequency_penalty": {
2763 "type": "number"
2764 },
2765 "max_tokens": {
2766 "description": "Overrides the default model configuration.",
2767 "type": "integer"
2768 },
2769 "model": {
2770 "description": "The model id as used by the provider API.\nRequired.",
2771 "type": "string"
2772 },
2773 "presence_penalty": {
2774 "type": "number"
2775 },
2776 "provider": {
2777 "description": "The model provider, same as the key/id used in the providers config.\nRequired.",
2778 "type": "string"
2779 },
2780 "provider_options": {
2781 "description": "Override provider specific options.",
2782 "type": "object",
2783 "additionalProperties": {}
2784 },
2785 "reasoning_effort": {
2786 "description": "Only used by models that use the openai provider and need this set.",
2787 "type": "string"
2788 },
2789 "temperature": {
2790 "type": "number"
2791 },
2792 "think": {
2793 "description": "Used by anthropic models that can reason to indicate if the model should think.",
2794 "type": "boolean"
2795 },
2796 "top_k": {
2797 "type": "integer"
2798 },
2799 "top_p": {
2800 "type": "number"
2801 }
2802 }
2803 },
2804 "config.SelectedModelType": {
2805 "type": "string",
2806 "enum": [
2807 "large",
2808 "small"
2809 ],
2810 "x-enum-varnames": [
2811 "SelectedModelTypeLarge",
2812 "SelectedModelTypeSmall"
2813 ]
2814 },
2815 "config.TUIOptions": {
2816 "type": "object",
2817 "properties": {
2818 "compact_mode": {
2819 "type": "boolean"
2820 },
2821 "completions": {
2822 "$ref": "#/definitions/config.Completions"
2823 },
2824 "diff_mode": {
2825 "type": "string"
2826 },
2827 "transparent": {
2828 "type": "boolean"
2829 }
2830 }
2831 },
2832 "config.ToolGrep": {
2833 "type": "object",
2834 "properties": {
2835 "timeout": {
2836 "$ref": "#/definitions/time.Duration"
2837 }
2838 }
2839 },
2840 "config.ToolLs": {
2841 "type": "object",
2842 "properties": {
2843 "max_depth": {
2844 "type": "integer"
2845 },
2846 "max_items": {
2847 "type": "integer"
2848 }
2849 }
2850 },
2851 "config.Tools": {
2852 "type": "object",
2853 "properties": {
2854 "grep": {
2855 "$ref": "#/definitions/config.ToolGrep"
2856 },
2857 "ls": {
2858 "$ref": "#/definitions/config.ToolLs"
2859 }
2860 }
2861 },
2862 "config.TrailerStyle": {
2863 "type": "string",
2864 "enum": [
2865 "none",
2866 "co-authored-by",
2867 "assisted-by"
2868 ],
2869 "x-enum-varnames": [
2870 "TrailerStyleNone",
2871 "TrailerStyleCoAuthoredBy",
2872 "TrailerStyleAssistedBy"
2873 ]
2874 },
2875 "csync.Map-string-config_ProviderConfig": {
2876 "type": "object"
2877 },
2878 "github_com_charmbracelet_crush_internal_config.Config": {
2879 "type": "object",
2880 "properties": {
2881 "$schema": {
2882 "type": "string"
2883 },
2884 "lsp": {
2885 "$ref": "#/definitions/config.LSPs"
2886 },
2887 "mcp": {
2888 "$ref": "#/definitions/config.MCPs"
2889 },
2890 "models": {
2891 "description": "We currently only support large/small as values here.",
2892 "type": "object",
2893 "additionalProperties": {
2894 "$ref": "#/definitions/config.SelectedModel"
2895 }
2896 },
2897 "options": {
2898 "$ref": "#/definitions/github_com_charmbracelet_crush_internal_config.Options"
2899 },
2900 "permissions": {
2901 "$ref": "#/definitions/config.Permissions"
2902 },
2903 "providers": {
2904 "description": "The providers that are configured",
2905 "allOf": [
2906 {
2907 "$ref": "#/definitions/csync.Map-string-config_ProviderConfig"
2908 }
2909 ]
2910 },
2911 "recent_models": {
2912 "description": "Recently used models stored in the data directory config.",
2913 "type": "object",
2914 "additionalProperties": {
2915 "type": "array",
2916 "items": {
2917 "$ref": "#/definitions/config.SelectedModel"
2918 }
2919 }
2920 },
2921 "tools": {
2922 "$ref": "#/definitions/config.Tools"
2923 }
2924 }
2925 },
2926 "github_com_charmbracelet_crush_internal_config.Options": {
2927 "type": "object",
2928 "properties": {
2929 "attribution": {
2930 "$ref": "#/definitions/config.Attribution"
2931 },
2932 "auto_lsp": {
2933 "type": "boolean"
2934 },
2935 "context_paths": {
2936 "type": "array",
2937 "items": {
2938 "type": "string"
2939 }
2940 },
2941 "data_directory": {
2942 "description": "Relative to the cwd",
2943 "type": "string"
2944 },
2945 "debug": {
2946 "type": "boolean"
2947 },
2948 "debug_lsp": {
2949 "type": "boolean"
2950 },
2951 "disable_auto_summarize": {
2952 "type": "boolean"
2953 },
2954 "disable_default_providers": {
2955 "type": "boolean"
2956 },
2957 "disable_metrics": {
2958 "type": "boolean"
2959 },
2960 "disable_notifications": {
2961 "type": "boolean"
2962 },
2963 "disable_provider_auto_update": {
2964 "type": "boolean"
2965 },
2966 "disabled_tools": {
2967 "type": "array",
2968 "items": {
2969 "type": "string"
2970 }
2971 },
2972 "initialize_as": {
2973 "type": "string"
2974 },
2975 "progress": {
2976 "type": "boolean"
2977 },
2978 "skills_paths": {
2979 "type": "array",
2980 "items": {
2981 "type": "string"
2982 }
2983 },
2984 "tui": {
2985 "$ref": "#/definitions/config.TUIOptions"
2986 }
2987 }
2988 },
2989 "github_com_charmbracelet_crush_internal_proto.Message": {
2990 "type": "object",
2991 "properties": {
2992 "created_at": {
2993 "type": "integer"
2994 },
2995 "id": {
2996 "type": "string"
2997 },
2998 "model": {
2999 "type": "string"
3000 },
3001 "parts": {
3002 "type": "array",
3003 "items": {}
3004 },
3005 "provider": {
3006 "type": "string"
3007 },
3008 "role": {
3009 "$ref": "#/definitions/proto.MessageRole"
3010 },
3011 "session_id": {
3012 "type": "string"
3013 },
3014 "updated_at": {
3015 "type": "integer"
3016 }
3017 }
3018 },
3019 "lsp.ServerState": {
3020 "type": "integer",
3021 "enum": [
3022 0,
3023 1,
3024 2,
3025 3,
3026 4,
3027 5
3028 ],
3029 "x-enum-varnames": [
3030 "StateUnstarted",
3031 "StateStarting",
3032 "StateReady",
3033 "StateError",
3034 "StateStopped",
3035 "StateDisabled"
3036 ]
3037 },
3038 "proto.AgentInfo": {
3039 "type": "object",
3040 "properties": {
3041 "is_busy": {
3042 "type": "boolean"
3043 },
3044 "is_ready": {
3045 "type": "boolean"
3046 },
3047 "model": {
3048 "$ref": "#/definitions/catwalk.Model"
3049 },
3050 "model_cfg": {
3051 "$ref": "#/definitions/config.SelectedModel"
3052 }
3053 }
3054 },
3055 "proto.AgentMessage": {
3056 "type": "object",
3057 "properties": {
3058 "attachments": {
3059 "type": "array",
3060 "items": {
3061 "$ref": "#/definitions/proto.Attachment"
3062 }
3063 },
3064 "prompt": {
3065 "type": "string"
3066 },
3067 "session_id": {
3068 "type": "string"
3069 }
3070 }
3071 },
3072 "proto.AgentSession": {
3073 "type": "object",
3074 "properties": {
3075 "completion_tokens": {
3076 "type": "integer"
3077 },
3078 "cost": {
3079 "type": "number"
3080 },
3081 "created_at": {
3082 "type": "integer"
3083 },
3084 "id": {
3085 "type": "string"
3086 },
3087 "is_busy": {
3088 "type": "boolean"
3089 },
3090 "message_count": {
3091 "type": "integer"
3092 },
3093 "parent_session_id": {
3094 "type": "string"
3095 },
3096 "prompt_tokens": {
3097 "type": "integer"
3098 },
3099 "summary_message_id": {
3100 "type": "string"
3101 },
3102 "title": {
3103 "type": "string"
3104 },
3105 "updated_at": {
3106 "type": "integer"
3107 }
3108 }
3109 },
3110 "proto.Attachment": {
3111 "type": "object",
3112 "properties": {
3113 "content": {
3114 "type": "array",
3115 "items": {
3116 "type": "integer"
3117 }
3118 },
3119 "file_name": {
3120 "type": "string"
3121 },
3122 "file_path": {
3123 "type": "string"
3124 },
3125 "mime_type": {
3126 "type": "string"
3127 }
3128 }
3129 },
3130 "proto.ConfigCompactRequest": {
3131 "type": "object",
3132 "properties": {
3133 "enabled": {
3134 "type": "boolean"
3135 },
3136 "scope": {
3137 "$ref": "#/definitions/config.Scope"
3138 }
3139 }
3140 },
3141 "proto.ConfigModelRequest": {
3142 "type": "object",
3143 "properties": {
3144 "model": {
3145 "$ref": "#/definitions/config.SelectedModel"
3146 },
3147 "model_type": {
3148 "$ref": "#/definitions/config.SelectedModelType"
3149 },
3150 "scope": {
3151 "$ref": "#/definitions/config.Scope"
3152 }
3153 }
3154 },
3155 "proto.ConfigProviderKeyRequest": {
3156 "type": "object",
3157 "properties": {
3158 "api_key": {},
3159 "provider_id": {
3160 "type": "string"
3161 },
3162 "scope": {
3163 "$ref": "#/definitions/config.Scope"
3164 }
3165 }
3166 },
3167 "proto.ConfigRefreshOAuthRequest": {
3168 "type": "object",
3169 "properties": {
3170 "provider_id": {
3171 "type": "string"
3172 },
3173 "scope": {
3174 "$ref": "#/definitions/config.Scope"
3175 }
3176 }
3177 },
3178 "proto.ConfigRemoveRequest": {
3179 "type": "object",
3180 "properties": {
3181 "key": {
3182 "type": "string"
3183 },
3184 "scope": {
3185 "$ref": "#/definitions/config.Scope"
3186 }
3187 }
3188 },
3189 "proto.ConfigSetRequest": {
3190 "type": "object",
3191 "properties": {
3192 "key": {
3193 "type": "string"
3194 },
3195 "scope": {
3196 "$ref": "#/definitions/config.Scope"
3197 },
3198 "value": {}
3199 }
3200 },
3201 "proto.Error": {
3202 "type": "object",
3203 "properties": {
3204 "message": {
3205 "type": "string"
3206 }
3207 }
3208 },
3209 "proto.File": {
3210 "type": "object",
3211 "properties": {
3212 "content": {
3213 "type": "string"
3214 },
3215 "created_at": {
3216 "type": "integer"
3217 },
3218 "id": {
3219 "type": "string"
3220 },
3221 "path": {
3222 "type": "string"
3223 },
3224 "session_id": {
3225 "type": "string"
3226 },
3227 "updated_at": {
3228 "type": "integer"
3229 },
3230 "version": {
3231 "type": "integer"
3232 }
3233 }
3234 },
3235 "proto.FileTrackerReadRequest": {
3236 "type": "object",
3237 "properties": {
3238 "path": {
3239 "type": "string"
3240 },
3241 "session_id": {
3242 "type": "string"
3243 }
3244 }
3245 },
3246 "proto.ImportCopilotResponse": {
3247 "type": "object",
3248 "properties": {
3249 "success": {
3250 "type": "boolean"
3251 },
3252 "token": {}
3253 }
3254 },
3255 "proto.LSPClientInfo": {
3256 "type": "object",
3257 "properties": {
3258 "connected_at": {
3259 "type": "string"
3260 },
3261 "diagnostic_count": {
3262 "type": "integer"
3263 },
3264 "error": {},
3265 "name": {
3266 "type": "string"
3267 },
3268 "state": {
3269 "$ref": "#/definitions/lsp.ServerState"
3270 }
3271 }
3272 },
3273 "proto.LSPStartRequest": {
3274 "type": "object",
3275 "properties": {
3276 "path": {
3277 "type": "string"
3278 }
3279 }
3280 },
3281 "proto.MCPClientInfo": {
3282 "type": "object",
3283 "properties": {
3284 "connected_at": {
3285 "type": "string"
3286 },
3287 "error": {},
3288 "name": {
3289 "type": "string"
3290 },
3291 "prompt_count": {
3292 "type": "integer"
3293 },
3294 "resource_count": {
3295 "type": "integer"
3296 },
3297 "state": {
3298 "$ref": "#/definitions/proto.MCPState"
3299 },
3300 "tool_count": {
3301 "type": "integer"
3302 }
3303 }
3304 },
3305 "proto.MCPGetPromptRequest": {
3306 "type": "object",
3307 "properties": {
3308 "args": {
3309 "type": "object",
3310 "additionalProperties": {
3311 "type": "string"
3312 }
3313 },
3314 "client_id": {
3315 "type": "string"
3316 },
3317 "prompt_id": {
3318 "type": "string"
3319 }
3320 }
3321 },
3322 "proto.MCPGetPromptResponse": {
3323 "type": "object",
3324 "properties": {
3325 "prompt": {
3326 "type": "string"
3327 }
3328 }
3329 },
3330 "proto.MCPNameRequest": {
3331 "type": "object",
3332 "properties": {
3333 "name": {
3334 "type": "string"
3335 }
3336 }
3337 },
3338 "proto.MCPReadResourceRequest": {
3339 "type": "object",
3340 "properties": {
3341 "name": {
3342 "type": "string"
3343 },
3344 "uri": {
3345 "type": "string"
3346 }
3347 }
3348 },
3349 "proto.MCPState": {
3350 "type": "integer",
3351 "enum": [
3352 0,
3353 1,
3354 2,
3355 3
3356 ],
3357 "x-enum-varnames": [
3358 "MCPStateDisabled",
3359 "MCPStateStarting",
3360 "MCPStateConnected",
3361 "MCPStateError"
3362 ]
3363 },
3364 "proto.MessageRole": {
3365 "type": "string",
3366 "enum": [
3367 "assistant",
3368 "user",
3369 "system",
3370 "tool"
3371 ],
3372 "x-enum-varnames": [
3373 "Assistant",
3374 "User",
3375 "System",
3376 "Tool"
3377 ]
3378 },
3379 "proto.PermissionAction": {
3380 "type": "string",
3381 "enum": [
3382 "allow",
3383 "allow_session",
3384 "deny"
3385 ],
3386 "x-enum-varnames": [
3387 "PermissionAllow",
3388 "PermissionAllowForSession",
3389 "PermissionDeny"
3390 ]
3391 },
3392 "proto.PermissionGrant": {
3393 "type": "object",
3394 "properties": {
3395 "action": {
3396 "$ref": "#/definitions/proto.PermissionAction"
3397 },
3398 "permission": {
3399 "$ref": "#/definitions/proto.PermissionRequest"
3400 }
3401 }
3402 },
3403 "proto.PermissionRequest": {
3404 "type": "object",
3405 "properties": {
3406 "action": {
3407 "type": "string"
3408 },
3409 "description": {
3410 "type": "string"
3411 },
3412 "id": {
3413 "type": "string"
3414 },
3415 "params": {},
3416 "path": {
3417 "type": "string"
3418 },
3419 "session_id": {
3420 "type": "string"
3421 },
3422 "tool_call_id": {
3423 "type": "string"
3424 },
3425 "tool_name": {
3426 "type": "string"
3427 }
3428 }
3429 },
3430 "proto.PermissionSkipRequest": {
3431 "type": "object",
3432 "properties": {
3433 "skip": {
3434 "type": "boolean"
3435 }
3436 }
3437 },
3438 "proto.ProjectInitPromptResponse": {
3439 "type": "object",
3440 "properties": {
3441 "prompt": {
3442 "type": "string"
3443 }
3444 }
3445 },
3446 "proto.ProjectNeedsInitResponse": {
3447 "type": "object",
3448 "properties": {
3449 "needs_init": {
3450 "type": "boolean"
3451 }
3452 }
3453 },
3454 "proto.ServerControl": {
3455 "type": "object",
3456 "properties": {
3457 "command": {
3458 "type": "string"
3459 }
3460 }
3461 },
3462 "proto.Session": {
3463 "type": "object",
3464 "properties": {
3465 "completion_tokens": {
3466 "type": "integer"
3467 },
3468 "cost": {
3469 "type": "number"
3470 },
3471 "created_at": {
3472 "type": "integer"
3473 },
3474 "id": {
3475 "type": "string"
3476 },
3477 "message_count": {
3478 "type": "integer"
3479 },
3480 "parent_session_id": {
3481 "type": "string"
3482 },
3483 "prompt_tokens": {
3484 "type": "integer"
3485 },
3486 "summary_message_id": {
3487 "type": "string"
3488 },
3489 "title": {
3490 "type": "string"
3491 },
3492 "updated_at": {
3493 "type": "integer"
3494 }
3495 }
3496 },
3497 "proto.VersionInfo": {
3498 "type": "object",
3499 "properties": {
3500 "commit": {
3501 "type": "string"
3502 },
3503 "go_version": {
3504 "type": "string"
3505 },
3506 "platform": {
3507 "type": "string"
3508 },
3509 "version": {
3510 "type": "string"
3511 }
3512 }
3513 },
3514 "proto.Workspace": {
3515 "type": "object",
3516 "properties": {
3517 "config": {
3518 "$ref": "#/definitions/github_com_charmbracelet_crush_internal_config.Config"
3519 },
3520 "data_dir": {
3521 "type": "string"
3522 },
3523 "debug": {
3524 "type": "boolean"
3525 },
3526 "env": {
3527 "type": "array",
3528 "items": {
3529 "type": "string"
3530 }
3531 },
3532 "id": {
3533 "type": "string"
3534 },
3535 "path": {
3536 "type": "string"
3537 },
3538 "version": {
3539 "type": "string"
3540 },
3541 "yolo": {
3542 "type": "boolean"
3543 }
3544 }
3545 },
3546 "time.Duration": {
3547 "type": "integer",
3548 "format": "int64",
3549 "enum": [
3550 -9223372036854775808,
3551 9223372036854775807,
3552 1,
3553 1000,
3554 1000000,
3555 1000000000,
3556 60000000000,
3557 3600000000000
3558 ],
3559 "x-enum-varnames": [
3560 "minDuration",
3561 "maxDuration",
3562 "Nanosecond",
3563 "Microsecond",
3564 "Millisecond",
3565 "Second",
3566 "Minute",
3567 "Hour"
3568 ]
3569 }
3570 }
3571}`
3572
3573// SwaggerInfo holds exported Swagger Info so clients can modify it
3574var SwaggerInfo = &swag.Spec{
3575 Version: "1.0",
3576 Host: "",
3577 BasePath: "/v1",
3578 Schemes: []string{},
3579 Title: "Crush API",
3580 Description: "Crush is a terminal-based AI coding assistant. This API is served over a Unix socket (or Windows named pipe) and provides programmatic access to workspaces, sessions, agents, LSP, MCP, and more.",
3581 InfoInstanceName: "swagger",
3582 SwaggerTemplate: docTemplate,
3583 LeftDelim: "{{",
3584 RightDelim: "}}",
3585}
3586
3587func init() {
3588 swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
3589}