hexel-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/Makefile +28 -0
  3. package/README.md +123 -0
  4. package/dist/_internal/auth.d.ts +17 -0
  5. package/dist/_internal/auth.d.ts.map +1 -0
  6. package/dist/_internal/auth.js +50 -0
  7. package/dist/_internal/auth.js.map +1 -0
  8. package/dist/_internal/client.d.ts +15 -0
  9. package/dist/_internal/client.d.ts.map +1 -0
  10. package/dist/_internal/client.js +22 -0
  11. package/dist/_internal/client.js.map +1 -0
  12. package/dist/_internal/http.d.ts +15 -0
  13. package/dist/_internal/http.d.ts.map +1 -0
  14. package/dist/_internal/http.js +59 -0
  15. package/dist/_internal/http.js.map +1 -0
  16. package/dist/compute/agent.d.ts +18 -0
  17. package/dist/compute/agent.d.ts.map +1 -0
  18. package/dist/compute/agent.js +40 -0
  19. package/dist/compute/agent.js.map +1 -0
  20. package/dist/compute/index.d.ts +13 -0
  21. package/dist/compute/index.d.ts.map +1 -0
  22. package/dist/compute/index.js +36 -0
  23. package/dist/compute/index.js.map +1 -0
  24. package/dist/compute/instance.d.ts +18 -0
  25. package/dist/compute/instance.d.ts.map +1 -0
  26. package/dist/compute/instance.js +40 -0
  27. package/dist/compute/instance.js.map +1 -0
  28. package/dist/compute/sandbox.d.ts +20 -0
  29. package/dist/compute/sandbox.d.ts.map +1 -0
  30. package/dist/compute/sandbox.js +44 -0
  31. package/dist/compute/sandbox.js.map +1 -0
  32. package/dist/compute/types.d.ts +272 -0
  33. package/dist/compute/types.d.ts.map +1 -0
  34. package/dist/compute/types.js +4 -0
  35. package/dist/compute/types.js.map +1 -0
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +23 -0
  39. package/dist/index.js.map +1 -0
  40. package/generator/generate.py +180 -0
  41. package/generator/ir.json +1545 -0
  42. package/generator/overrides.json +66 -0
  43. package/generator/parser.py +180 -0
  44. package/package.json +21 -0
  45. package/specs/agent-registry-api.json +1 -0
  46. package/specs/agentd-api.json +1364 -0
  47. package/specs/compute-api.json +1 -0
  48. package/src/_internal/auth.ts +56 -0
  49. package/src/_internal/client.ts +33 -0
  50. package/src/_internal/http.ts +61 -0
  51. package/src/compute/agent.ts +41 -0
  52. package/src/compute/index.ts +20 -0
  53. package/src/compute/instance.ts +41 -0
  54. package/src/compute/sandbox.ts +46 -0
  55. package/src/compute/types.ts +310 -0
  56. package/src/index.ts +3 -0
  57. package/tsconfig.json +17 -0
@@ -0,0 +1,1364 @@
1
+ {
2
+ "components": {
3
+ "schemas": {
4
+ "models.CodeContext": {
5
+ "properties": {
6
+ "created_at": {
7
+ "type": "string"
8
+ },
9
+ "id": {
10
+ "type": "string"
11
+ },
12
+ "kernel_id": {
13
+ "type": "string"
14
+ },
15
+ "language": {
16
+ "type": "string"
17
+ },
18
+ "session_id": {
19
+ "type": "string"
20
+ }
21
+ },
22
+ "type": "object"
23
+ },
24
+ "models.CommandStatus": {
25
+ "properties": {
26
+ "exit_code": {
27
+ "type": "integer"
28
+ },
29
+ "finished_at": {
30
+ "type": "string"
31
+ },
32
+ "id": {
33
+ "type": "string"
34
+ },
35
+ "running": {
36
+ "type": "boolean"
37
+ },
38
+ "started_at": {
39
+ "type": "string"
40
+ }
41
+ },
42
+ "type": "object"
43
+ },
44
+ "models.CreateContextRequest": {
45
+ "properties": {
46
+ "language": {
47
+ "type": "string"
48
+ },
49
+ "session_id": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "required": [
54
+ "language",
55
+ "session_id"
56
+ ],
57
+ "type": "object"
58
+ },
59
+ "models.ErrorResponse": {
60
+ "properties": {
61
+ "code": {
62
+ "type": "integer"
63
+ },
64
+ "message": {
65
+ "type": "string"
66
+ }
67
+ },
68
+ "type": "object"
69
+ },
70
+ "models.ExecuteCodeRequest": {
71
+ "properties": {
72
+ "code": {
73
+ "type": "string"
74
+ },
75
+ "context_id": {
76
+ "type": "string"
77
+ }
78
+ },
79
+ "required": [
80
+ "code",
81
+ "context_id"
82
+ ],
83
+ "type": "object"
84
+ },
85
+ "models.ExecuteRequest": {
86
+ "type": "object"
87
+ },
88
+ "models.FileInfo": {
89
+ "properties": {
90
+ "group": {
91
+ "type": "string"
92
+ },
93
+ "is_dir": {
94
+ "type": "boolean"
95
+ },
96
+ "mod_time": {
97
+ "type": "string"
98
+ },
99
+ "mode": {
100
+ "type": "string"
101
+ },
102
+ "owner": {
103
+ "type": "string"
104
+ },
105
+ "path": {
106
+ "type": "string"
107
+ },
108
+ "size": {
109
+ "type": "integer"
110
+ }
111
+ },
112
+ "type": "object"
113
+ },
114
+ "models.LoadSkillsRequest": {
115
+ "properties": {
116
+ "skills": {
117
+ "items": {
118
+ "type": "string"
119
+ },
120
+ "type": "array"
121
+ }
122
+ },
123
+ "required": [
124
+ "skills"
125
+ ],
126
+ "type": "object"
127
+ },
128
+ "models.MetricsSnapshot": {
129
+ "properties": {
130
+ "cpu_percent": {
131
+ "type": "number"
132
+ },
133
+ "mem_total_bytes": {
134
+ "type": "integer"
135
+ },
136
+ "mem_used_bytes": {
137
+ "type": "integer"
138
+ },
139
+ "tokens_total": {
140
+ "type": "integer"
141
+ }
142
+ },
143
+ "type": "object"
144
+ },
145
+ "models.RunCommandRequest": {
146
+ "properties": {
147
+ "background": {
148
+ "type": "boolean"
149
+ },
150
+ "command": {
151
+ "type": "string"
152
+ },
153
+ "cwd": {
154
+ "type": "string"
155
+ },
156
+ "envs": {
157
+ "additionalProperties": {
158
+ "type": "string"
159
+ },
160
+ "type": "object"
161
+ },
162
+ "gid": {
163
+ "type": "integer"
164
+ },
165
+ "timeout_ms": {
166
+ "type": "integer"
167
+ },
168
+ "uid": {
169
+ "type": "integer"
170
+ }
171
+ },
172
+ "required": [
173
+ "command"
174
+ ],
175
+ "type": "object"
176
+ },
177
+ "models.SSEEvent": {
178
+ "properties": {
179
+ "data": {
180
+ "type": "string"
181
+ },
182
+ "event": {
183
+ "type": "string"
184
+ }
185
+ },
186
+ "type": "object"
187
+ },
188
+ "models.SkillInfo": {
189
+ "properties": {
190
+ "loaded": {
191
+ "type": "boolean"
192
+ },
193
+ "name": {
194
+ "type": "string"
195
+ },
196
+ "path": {
197
+ "type": "string"
198
+ }
199
+ },
200
+ "type": "object"
201
+ }
202
+ },
203
+ "securitySchemes": {
204
+ "AgentdToken": {
205
+ "in": "header",
206
+ "name": "X-AGENT-TOKEN",
207
+ "type": "apiKey"
208
+ }
209
+ }
210
+ },
211
+ "info": {
212
+ "contact": {},
213
+ "description": "Sidecar daemon for agent pods — auth, manifest discovery, proxy, file ops, sessions, metrics",
214
+ "title": "Agentd API",
215
+ "version": "2.0"
216
+ },
217
+ "openapi": "3.0.1",
218
+ "paths": {
219
+ "/v1/agents": {
220
+ "get": {
221
+ "description": "Returns all tracked agent processes",
222
+ "responses": {
223
+ "200": {
224
+ "content": {
225
+ "application/json": {
226
+ "schema": {
227
+ "items": {
228
+ "additionalProperties": true,
229
+ "type": "object"
230
+ },
231
+ "type": "array"
232
+ }
233
+ }
234
+ },
235
+ "description": "OK"
236
+ }
237
+ },
238
+ "summary": "List all agent processes",
239
+ "tags": [
240
+ "agents"
241
+ ]
242
+ }
243
+ },
244
+ "/v1/agents/execute": {
245
+ "post": {
246
+ "description": "Spawns an agent process and streams output via SSE",
247
+ "requestBody": {
248
+ "content": {
249
+ "application/json": {
250
+ "schema": {
251
+ "$ref": "#/components/schemas/models.ExecuteRequest"
252
+ }
253
+ }
254
+ },
255
+ "description": "Execute request",
256
+ "required": true,
257
+ "x-originalParamName": "request"
258
+ },
259
+ "responses": {
260
+ "200": {
261
+ "content": {
262
+ "text/event-stream": {
263
+ "schema": {
264
+ "$ref": "#/components/schemas/models.SSEEvent"
265
+ }
266
+ }
267
+ },
268
+ "description": "SSE stream"
269
+ },
270
+ "400": {
271
+ "content": {
272
+ "text/event-stream": {
273
+ "schema": {
274
+ "$ref": "#/components/schemas/models.ErrorResponse"
275
+ }
276
+ }
277
+ },
278
+ "description": "Bad Request"
279
+ }
280
+ },
281
+ "summary": "Execute an agent",
282
+ "tags": [
283
+ "agents"
284
+ ]
285
+ }
286
+ },
287
+ "/v1/agents/{id}": {
288
+ "delete": {
289
+ "description": "Terminates an agent process by ID",
290
+ "parameters": [
291
+ {
292
+ "description": "Agent process ID",
293
+ "in": "path",
294
+ "name": "id",
295
+ "required": true,
296
+ "schema": {
297
+ "type": "string"
298
+ }
299
+ }
300
+ ],
301
+ "responses": {
302
+ "204": {
303
+ "description": "No Content"
304
+ },
305
+ "404": {
306
+ "content": {
307
+ "application/json": {
308
+ "schema": {
309
+ "$ref": "#/components/schemas/models.ErrorResponse"
310
+ }
311
+ }
312
+ },
313
+ "description": "Not Found"
314
+ }
315
+ },
316
+ "summary": "Kill a running agent",
317
+ "tags": [
318
+ "agents"
319
+ ]
320
+ },
321
+ "get": {
322
+ "description": "Returns the current state of an agent process",
323
+ "parameters": [
324
+ {
325
+ "description": "Agent process ID",
326
+ "in": "path",
327
+ "name": "id",
328
+ "required": true,
329
+ "schema": {
330
+ "type": "string"
331
+ }
332
+ }
333
+ ],
334
+ "responses": {
335
+ "200": {
336
+ "content": {
337
+ "application/json": {
338
+ "schema": {
339
+ "additionalProperties": true,
340
+ "type": "object"
341
+ }
342
+ }
343
+ },
344
+ "description": "OK"
345
+ },
346
+ "404": {
347
+ "content": {
348
+ "application/json": {
349
+ "schema": {
350
+ "$ref": "#/components/schemas/models.ErrorResponse"
351
+ }
352
+ }
353
+ },
354
+ "description": "Not Found"
355
+ }
356
+ },
357
+ "summary": "Get agent process status",
358
+ "tags": [
359
+ "agents"
360
+ ]
361
+ }
362
+ },
363
+ "/v1/code/contexts": {
364
+ "get": {
365
+ "description": "Returns all active code execution contexts",
366
+ "responses": {
367
+ "200": {
368
+ "content": {
369
+ "application/json": {
370
+ "schema": {
371
+ "items": {
372
+ "$ref": "#/components/schemas/models.CodeContext"
373
+ },
374
+ "type": "array"
375
+ }
376
+ }
377
+ },
378
+ "description": "OK"
379
+ }
380
+ },
381
+ "summary": "List code contexts",
382
+ "tags": [
383
+ "code"
384
+ ]
385
+ },
386
+ "post": {
387
+ "description": "Creates a new Jupyter kernel session",
388
+ "requestBody": {
389
+ "content": {
390
+ "application/json": {
391
+ "schema": {
392
+ "$ref": "#/components/schemas/models.CreateContextRequest"
393
+ }
394
+ }
395
+ },
396
+ "description": "Create context request",
397
+ "required": true,
398
+ "x-originalParamName": "request"
399
+ },
400
+ "responses": {
401
+ "201": {
402
+ "content": {
403
+ "application/json": {
404
+ "schema": {
405
+ "$ref": "#/components/schemas/models.CodeContext"
406
+ }
407
+ }
408
+ },
409
+ "description": "Created"
410
+ },
411
+ "400": {
412
+ "content": {
413
+ "application/json": {
414
+ "schema": {
415
+ "$ref": "#/components/schemas/models.ErrorResponse"
416
+ }
417
+ }
418
+ },
419
+ "description": "Bad Request"
420
+ },
421
+ "500": {
422
+ "content": {
423
+ "application/json": {
424
+ "schema": {
425
+ "$ref": "#/components/schemas/models.ErrorResponse"
426
+ }
427
+ }
428
+ },
429
+ "description": "Internal Server Error"
430
+ }
431
+ },
432
+ "summary": "Create a code execution context",
433
+ "tags": [
434
+ "code"
435
+ ]
436
+ }
437
+ },
438
+ "/v1/code/contexts/{id}": {
439
+ "delete": {
440
+ "description": "Destroys a Jupyter kernel session",
441
+ "parameters": [
442
+ {
443
+ "description": "Context ID",
444
+ "in": "path",
445
+ "name": "id",
446
+ "required": true,
447
+ "schema": {
448
+ "type": "string"
449
+ }
450
+ }
451
+ ],
452
+ "responses": {
453
+ "204": {
454
+ "description": "No Content"
455
+ },
456
+ "404": {
457
+ "content": {
458
+ "application/json": {
459
+ "schema": {
460
+ "$ref": "#/components/schemas/models.ErrorResponse"
461
+ }
462
+ }
463
+ },
464
+ "description": "Not Found"
465
+ }
466
+ },
467
+ "summary": "Delete a code context",
468
+ "tags": [
469
+ "code"
470
+ ]
471
+ },
472
+ "get": {
473
+ "description": "Returns a specific code execution context",
474
+ "parameters": [
475
+ {
476
+ "description": "Context ID",
477
+ "in": "path",
478
+ "name": "id",
479
+ "required": true,
480
+ "schema": {
481
+ "type": "string"
482
+ }
483
+ }
484
+ ],
485
+ "responses": {
486
+ "200": {
487
+ "content": {
488
+ "application/json": {
489
+ "schema": {
490
+ "$ref": "#/components/schemas/models.CodeContext"
491
+ }
492
+ }
493
+ },
494
+ "description": "OK"
495
+ },
496
+ "404": {
497
+ "content": {
498
+ "application/json": {
499
+ "schema": {
500
+ "$ref": "#/components/schemas/models.ErrorResponse"
501
+ }
502
+ }
503
+ },
504
+ "description": "Not Found"
505
+ }
506
+ },
507
+ "summary": "Get a code context",
508
+ "tags": [
509
+ "code"
510
+ ]
511
+ }
512
+ },
513
+ "/v1/code/execute": {
514
+ "post": {
515
+ "description": "Runs code in a Jupyter kernel and streams output via SSE",
516
+ "requestBody": {
517
+ "content": {
518
+ "application/json": {
519
+ "schema": {
520
+ "$ref": "#/components/schemas/models.ExecuteCodeRequest"
521
+ }
522
+ }
523
+ },
524
+ "description": "Execute code request",
525
+ "required": true,
526
+ "x-originalParamName": "request"
527
+ },
528
+ "responses": {
529
+ "200": {
530
+ "content": {
531
+ "text/event-stream": {
532
+ "schema": {
533
+ "$ref": "#/components/schemas/models.SSEEvent"
534
+ }
535
+ }
536
+ },
537
+ "description": "SSE stream"
538
+ },
539
+ "400": {
540
+ "content": {
541
+ "text/event-stream": {
542
+ "schema": {
543
+ "$ref": "#/components/schemas/models.ErrorResponse"
544
+ }
545
+ }
546
+ },
547
+ "description": "Bad Request"
548
+ },
549
+ "404": {
550
+ "content": {
551
+ "text/event-stream": {
552
+ "schema": {
553
+ "$ref": "#/components/schemas/models.ErrorResponse"
554
+ }
555
+ }
556
+ },
557
+ "description": "Not Found"
558
+ }
559
+ },
560
+ "summary": "Execute code in a context",
561
+ "tags": [
562
+ "code"
563
+ ]
564
+ }
565
+ },
566
+ "/v1/code/execute/{id}": {
567
+ "delete": {
568
+ "description": "Interrupts a running code execution in a context",
569
+ "parameters": [
570
+ {
571
+ "description": "Context ID",
572
+ "in": "path",
573
+ "name": "id",
574
+ "required": true,
575
+ "schema": {
576
+ "type": "string"
577
+ }
578
+ }
579
+ ],
580
+ "responses": {
581
+ "204": {
582
+ "description": "No Content"
583
+ },
584
+ "404": {
585
+ "content": {
586
+ "application/json": {
587
+ "schema": {
588
+ "$ref": "#/components/schemas/models.ErrorResponse"
589
+ }
590
+ }
591
+ },
592
+ "description": "Not Found"
593
+ }
594
+ },
595
+ "summary": "Interrupt code execution",
596
+ "tags": [
597
+ "code"
598
+ ]
599
+ }
600
+ },
601
+ "/v1/commands/run": {
602
+ "post": {
603
+ "description": "Executes a shell command and streams output via SSE",
604
+ "requestBody": {
605
+ "content": {
606
+ "application/json": {
607
+ "schema": {
608
+ "$ref": "#/components/schemas/models.RunCommandRequest"
609
+ }
610
+ }
611
+ },
612
+ "description": "Command request",
613
+ "required": true,
614
+ "x-originalParamName": "request"
615
+ },
616
+ "responses": {
617
+ "200": {
618
+ "content": {
619
+ "text/event-stream": {
620
+ "schema": {
621
+ "$ref": "#/components/schemas/models.SSEEvent"
622
+ }
623
+ }
624
+ },
625
+ "description": "SSE stream"
626
+ },
627
+ "400": {
628
+ "content": {
629
+ "text/event-stream": {
630
+ "schema": {
631
+ "$ref": "#/components/schemas/models.ErrorResponse"
632
+ }
633
+ }
634
+ },
635
+ "description": "Bad Request"
636
+ }
637
+ },
638
+ "summary": "Run a shell command",
639
+ "tags": [
640
+ "commands"
641
+ ]
642
+ }
643
+ },
644
+ "/v1/commands/{id}": {
645
+ "delete": {
646
+ "description": "Terminates a running command by ID",
647
+ "parameters": [
648
+ {
649
+ "description": "Command ID",
650
+ "in": "path",
651
+ "name": "id",
652
+ "required": true,
653
+ "schema": {
654
+ "type": "string"
655
+ }
656
+ }
657
+ ],
658
+ "responses": {
659
+ "204": {
660
+ "description": "No Content"
661
+ },
662
+ "404": {
663
+ "content": {
664
+ "application/json": {
665
+ "schema": {
666
+ "$ref": "#/components/schemas/models.ErrorResponse"
667
+ }
668
+ }
669
+ },
670
+ "description": "Not Found"
671
+ }
672
+ },
673
+ "summary": "Kill a running command",
674
+ "tags": [
675
+ "commands"
676
+ ]
677
+ }
678
+ },
679
+ "/v1/commands/{id}/status": {
680
+ "get": {
681
+ "description": "Returns the status of a command",
682
+ "parameters": [
683
+ {
684
+ "description": "Command ID",
685
+ "in": "path",
686
+ "name": "id",
687
+ "required": true,
688
+ "schema": {
689
+ "type": "string"
690
+ }
691
+ }
692
+ ],
693
+ "responses": {
694
+ "200": {
695
+ "content": {
696
+ "application/json": {
697
+ "schema": {
698
+ "$ref": "#/components/schemas/models.CommandStatus"
699
+ }
700
+ }
701
+ },
702
+ "description": "OK"
703
+ },
704
+ "404": {
705
+ "content": {
706
+ "application/json": {
707
+ "schema": {
708
+ "$ref": "#/components/schemas/models.ErrorResponse"
709
+ }
710
+ }
711
+ },
712
+ "description": "Not Found"
713
+ }
714
+ },
715
+ "summary": "Get command status",
716
+ "tags": [
717
+ "commands"
718
+ ]
719
+ }
720
+ },
721
+ "/v1/directories": {
722
+ "delete": {
723
+ "description": "Deletes one or more directories recursively",
724
+ "requestBody": {
725
+ "content": {
726
+ "application/json": {
727
+ "schema": {
728
+ "items": {
729
+ "type": "string"
730
+ },
731
+ "type": "array"
732
+ }
733
+ }
734
+ },
735
+ "description": "Directory paths",
736
+ "required": true,
737
+ "x-originalParamName": "paths"
738
+ },
739
+ "responses": {
740
+ "204": {
741
+ "description": "No Content"
742
+ },
743
+ "400": {
744
+ "content": {
745
+ "application/json": {
746
+ "schema": {
747
+ "$ref": "#/components/schemas/models.ErrorResponse"
748
+ }
749
+ }
750
+ },
751
+ "description": "Bad Request"
752
+ }
753
+ },
754
+ "summary": "Delete directories",
755
+ "tags": [
756
+ "files"
757
+ ]
758
+ },
759
+ "post": {
760
+ "description": "Creates one or more directories",
761
+ "requestBody": {
762
+ "content": {
763
+ "application/json": {
764
+ "schema": {
765
+ "items": {
766
+ "type": "string"
767
+ },
768
+ "type": "array"
769
+ }
770
+ }
771
+ },
772
+ "description": "Directory paths",
773
+ "required": true,
774
+ "x-originalParamName": "paths"
775
+ },
776
+ "responses": {
777
+ "201": {
778
+ "description": "Created"
779
+ },
780
+ "400": {
781
+ "content": {
782
+ "application/json": {
783
+ "schema": {
784
+ "$ref": "#/components/schemas/models.ErrorResponse"
785
+ }
786
+ }
787
+ },
788
+ "description": "Bad Request"
789
+ }
790
+ },
791
+ "summary": "Create directories",
792
+ "tags": [
793
+ "files"
794
+ ]
795
+ }
796
+ },
797
+ "/v1/files": {
798
+ "delete": {
799
+ "description": "Deletes one or more files",
800
+ "requestBody": {
801
+ "content": {
802
+ "application/json": {
803
+ "schema": {
804
+ "items": {
805
+ "type": "string"
806
+ },
807
+ "type": "array"
808
+ }
809
+ }
810
+ },
811
+ "description": "File paths to delete",
812
+ "required": true,
813
+ "x-originalParamName": "paths"
814
+ },
815
+ "responses": {
816
+ "204": {
817
+ "description": "No Content"
818
+ },
819
+ "400": {
820
+ "content": {
821
+ "application/json": {
822
+ "schema": {
823
+ "$ref": "#/components/schemas/models.ErrorResponse"
824
+ }
825
+ }
826
+ },
827
+ "description": "Bad Request"
828
+ }
829
+ },
830
+ "summary": "Delete files",
831
+ "tags": [
832
+ "files"
833
+ ]
834
+ }
835
+ },
836
+ "/v1/files/download": {
837
+ "get": {
838
+ "description": "Downloads a file from the workspace",
839
+ "parameters": [
840
+ {
841
+ "description": "File path",
842
+ "in": "query",
843
+ "name": "path",
844
+ "required": true,
845
+ "schema": {
846
+ "type": "string"
847
+ }
848
+ }
849
+ ],
850
+ "responses": {
851
+ "200": {
852
+ "content": {
853
+ "application/octet-stream": {
854
+ "schema": {
855
+ "type": "file"
856
+ }
857
+ }
858
+ },
859
+ "description": "OK"
860
+ },
861
+ "400": {
862
+ "content": {
863
+ "application/octet-stream": {
864
+ "schema": {
865
+ "$ref": "#/components/schemas/models.ErrorResponse"
866
+ }
867
+ }
868
+ },
869
+ "description": "Bad Request"
870
+ },
871
+ "404": {
872
+ "content": {
873
+ "application/octet-stream": {
874
+ "schema": {
875
+ "$ref": "#/components/schemas/models.ErrorResponse"
876
+ }
877
+ }
878
+ },
879
+ "description": "Not Found"
880
+ }
881
+ },
882
+ "summary": "Download a file",
883
+ "tags": [
884
+ "files"
885
+ ]
886
+ }
887
+ },
888
+ "/v1/files/info": {
889
+ "get": {
890
+ "description": "Returns metadata for a file or directory",
891
+ "parameters": [
892
+ {
893
+ "description": "File path",
894
+ "in": "query",
895
+ "name": "path",
896
+ "required": true,
897
+ "schema": {
898
+ "type": "string"
899
+ }
900
+ }
901
+ ],
902
+ "responses": {
903
+ "200": {
904
+ "content": {
905
+ "application/json": {
906
+ "schema": {
907
+ "$ref": "#/components/schemas/models.FileInfo"
908
+ }
909
+ }
910
+ },
911
+ "description": "OK"
912
+ },
913
+ "400": {
914
+ "content": {
915
+ "application/json": {
916
+ "schema": {
917
+ "$ref": "#/components/schemas/models.ErrorResponse"
918
+ }
919
+ }
920
+ },
921
+ "description": "Bad Request"
922
+ },
923
+ "404": {
924
+ "content": {
925
+ "application/json": {
926
+ "schema": {
927
+ "$ref": "#/components/schemas/models.ErrorResponse"
928
+ }
929
+ }
930
+ },
931
+ "description": "Not Found"
932
+ }
933
+ },
934
+ "summary": "Get file info",
935
+ "tags": [
936
+ "files"
937
+ ]
938
+ }
939
+ },
940
+ "/v1/files/mv": {
941
+ "post": {
942
+ "description": "Moves files from source to destination",
943
+ "requestBody": {
944
+ "content": {
945
+ "application/json": {
946
+ "schema": {
947
+ "items": {
948
+ "additionalProperties": {
949
+ "type": "string"
950
+ },
951
+ "type": "object"
952
+ },
953
+ "type": "array"
954
+ }
955
+ }
956
+ },
957
+ "description": "Array of {src, dst}",
958
+ "required": true,
959
+ "x-originalParamName": "moves"
960
+ },
961
+ "responses": {
962
+ "204": {
963
+ "description": "No Content"
964
+ },
965
+ "400": {
966
+ "content": {
967
+ "application/json": {
968
+ "schema": {
969
+ "$ref": "#/components/schemas/models.ErrorResponse"
970
+ }
971
+ }
972
+ },
973
+ "description": "Bad Request"
974
+ }
975
+ },
976
+ "summary": "Move or rename files",
977
+ "tags": [
978
+ "files"
979
+ ]
980
+ }
981
+ },
982
+ "/v1/files/search": {
983
+ "get": {
984
+ "description": "Searches for files matching a pattern",
985
+ "parameters": [
986
+ {
987
+ "description": "Directory to search",
988
+ "in": "query",
989
+ "name": "dir",
990
+ "schema": {
991
+ "default": ".",
992
+ "type": "string"
993
+ }
994
+ },
995
+ {
996
+ "description": "Glob pattern",
997
+ "in": "query",
998
+ "name": "pattern",
999
+ "required": true,
1000
+ "schema": {
1001
+ "type": "string"
1002
+ }
1003
+ }
1004
+ ],
1005
+ "responses": {
1006
+ "200": {
1007
+ "content": {
1008
+ "application/json": {
1009
+ "schema": {
1010
+ "items": {
1011
+ "$ref": "#/components/schemas/models.FileInfo"
1012
+ },
1013
+ "type": "array"
1014
+ }
1015
+ }
1016
+ },
1017
+ "description": "OK"
1018
+ },
1019
+ "400": {
1020
+ "content": {
1021
+ "application/json": {
1022
+ "schema": {
1023
+ "$ref": "#/components/schemas/models.ErrorResponse"
1024
+ }
1025
+ }
1026
+ },
1027
+ "description": "Bad Request"
1028
+ }
1029
+ },
1030
+ "summary": "Search files",
1031
+ "tags": [
1032
+ "files"
1033
+ ]
1034
+ }
1035
+ },
1036
+ "/v1/files/upload": {
1037
+ "post": {
1038
+ "description": "Uploads a file to the workspace",
1039
+ "requestBody": {
1040
+ "content": {
1041
+ "multipart/form-data": {
1042
+ "schema": {
1043
+ "properties": {
1044
+ "file": {
1045
+ "description": "File to upload",
1046
+ "format": "binary",
1047
+ "type": "string",
1048
+ "x-formData-name": "file"
1049
+ },
1050
+ "path": {
1051
+ "description": "Destination path",
1052
+ "type": "string",
1053
+ "x-formData-name": "path"
1054
+ }
1055
+ },
1056
+ "required": [
1057
+ "path",
1058
+ "file"
1059
+ ],
1060
+ "type": "object"
1061
+ }
1062
+ }
1063
+ }
1064
+ },
1065
+ "responses": {
1066
+ "201": {
1067
+ "content": {
1068
+ "application/json": {
1069
+ "schema": {
1070
+ "additionalProperties": {
1071
+ "type": "string"
1072
+ },
1073
+ "type": "object"
1074
+ }
1075
+ }
1076
+ },
1077
+ "description": "Created"
1078
+ },
1079
+ "400": {
1080
+ "content": {
1081
+ "application/json": {
1082
+ "schema": {
1083
+ "$ref": "#/components/schemas/models.ErrorResponse"
1084
+ }
1085
+ }
1086
+ },
1087
+ "description": "Bad Request"
1088
+ }
1089
+ },
1090
+ "summary": "Upload a file",
1091
+ "tags": [
1092
+ "files"
1093
+ ]
1094
+ }
1095
+ },
1096
+ "/v1/metrics": {
1097
+ "get": {
1098
+ "description": "Returns a snapshot of CPU, memory, and token metrics",
1099
+ "responses": {
1100
+ "200": {
1101
+ "content": {
1102
+ "application/json": {
1103
+ "schema": {
1104
+ "$ref": "#/components/schemas/models.MetricsSnapshot"
1105
+ }
1106
+ }
1107
+ },
1108
+ "description": "OK"
1109
+ }
1110
+ },
1111
+ "summary": "Get current metrics",
1112
+ "tags": [
1113
+ "metrics"
1114
+ ]
1115
+ }
1116
+ },
1117
+ "/v1/metrics/watch": {
1118
+ "get": {
1119
+ "description": "Streams metrics snapshots every 2 seconds via SSE",
1120
+ "responses": {
1121
+ "200": {
1122
+ "content": {
1123
+ "text/event-stream": {
1124
+ "schema": {
1125
+ "$ref": "#/components/schemas/models.SSEEvent"
1126
+ }
1127
+ }
1128
+ },
1129
+ "description": "SSE stream"
1130
+ }
1131
+ },
1132
+ "summary": "Watch metrics via SSE",
1133
+ "tags": [
1134
+ "metrics"
1135
+ ]
1136
+ }
1137
+ },
1138
+ "/v1/sessions/init": {
1139
+ "post": {
1140
+ "description": "Creates the workspace directory for a session",
1141
+ "requestBody": {
1142
+ "content": {
1143
+ "application/json": {
1144
+ "schema": {
1145
+ "additionalProperties": {
1146
+ "type": "string"
1147
+ },
1148
+ "type": "object"
1149
+ }
1150
+ }
1151
+ },
1152
+ "description": "Session init request with session_id",
1153
+ "required": true,
1154
+ "x-originalParamName": "request"
1155
+ },
1156
+ "responses": {
1157
+ "201": {
1158
+ "content": {
1159
+ "application/json": {
1160
+ "schema": {
1161
+ "additionalProperties": {
1162
+ "type": "string"
1163
+ },
1164
+ "type": "object"
1165
+ }
1166
+ }
1167
+ },
1168
+ "description": "Created"
1169
+ },
1170
+ "400": {
1171
+ "content": {
1172
+ "application/json": {
1173
+ "schema": {
1174
+ "$ref": "#/components/schemas/models.ErrorResponse"
1175
+ }
1176
+ }
1177
+ },
1178
+ "description": "Bad Request"
1179
+ }
1180
+ },
1181
+ "summary": "Initialize a session workspace",
1182
+ "tags": [
1183
+ "sessions"
1184
+ ]
1185
+ }
1186
+ },
1187
+ "/v1/sessions/{id}": {
1188
+ "delete": {
1189
+ "description": "Removes the workspace directory for a session",
1190
+ "parameters": [
1191
+ {
1192
+ "description": "Session ID",
1193
+ "in": "path",
1194
+ "name": "id",
1195
+ "required": true,
1196
+ "schema": {
1197
+ "type": "string"
1198
+ }
1199
+ }
1200
+ ],
1201
+ "responses": {
1202
+ "204": {
1203
+ "description": "No Content"
1204
+ },
1205
+ "500": {
1206
+ "content": {
1207
+ "application/json": {
1208
+ "schema": {
1209
+ "$ref": "#/components/schemas/models.ErrorResponse"
1210
+ }
1211
+ }
1212
+ },
1213
+ "description": "Internal Server Error"
1214
+ }
1215
+ },
1216
+ "summary": "Cleanup a session workspace",
1217
+ "tags": [
1218
+ "sessions"
1219
+ ]
1220
+ }
1221
+ },
1222
+ "/v1/skills": {
1223
+ "get": {
1224
+ "description": "Returns all loaded skills",
1225
+ "responses": {
1226
+ "200": {
1227
+ "content": {
1228
+ "application/json": {
1229
+ "schema": {
1230
+ "items": {
1231
+ "$ref": "#/components/schemas/models.SkillInfo"
1232
+ },
1233
+ "type": "array"
1234
+ }
1235
+ }
1236
+ },
1237
+ "description": "OK"
1238
+ }
1239
+ },
1240
+ "summary": "List loaded skills",
1241
+ "tags": [
1242
+ "skills"
1243
+ ]
1244
+ }
1245
+ },
1246
+ "/v1/skills/load": {
1247
+ "post": {
1248
+ "description": "Downloads and installs skills from a remote store",
1249
+ "requestBody": {
1250
+ "content": {
1251
+ "application/json": {
1252
+ "schema": {
1253
+ "$ref": "#/components/schemas/models.LoadSkillsRequest"
1254
+ }
1255
+ }
1256
+ },
1257
+ "description": "Load skills request",
1258
+ "required": true,
1259
+ "x-originalParamName": "request"
1260
+ },
1261
+ "responses": {
1262
+ "200": {
1263
+ "content": {
1264
+ "application/json": {
1265
+ "schema": {
1266
+ "items": {
1267
+ "$ref": "#/components/schemas/models.SkillInfo"
1268
+ },
1269
+ "type": "array"
1270
+ }
1271
+ }
1272
+ },
1273
+ "description": "OK"
1274
+ },
1275
+ "400": {
1276
+ "content": {
1277
+ "application/json": {
1278
+ "schema": {
1279
+ "$ref": "#/components/schemas/models.ErrorResponse"
1280
+ }
1281
+ }
1282
+ },
1283
+ "description": "Bad Request"
1284
+ }
1285
+ },
1286
+ "summary": "Load skills from store",
1287
+ "tags": [
1288
+ "skills"
1289
+ ]
1290
+ }
1291
+ },
1292
+ "/v1/skills/{name}": {
1293
+ "get": {
1294
+ "description": "Returns info about a specific loaded skill",
1295
+ "parameters": [
1296
+ {
1297
+ "description": "Skill name",
1298
+ "in": "path",
1299
+ "name": "name",
1300
+ "required": true,
1301
+ "schema": {
1302
+ "type": "string"
1303
+ }
1304
+ }
1305
+ ],
1306
+ "responses": {
1307
+ "200": {
1308
+ "content": {
1309
+ "application/json": {
1310
+ "schema": {
1311
+ "$ref": "#/components/schemas/models.SkillInfo"
1312
+ }
1313
+ }
1314
+ },
1315
+ "description": "OK"
1316
+ },
1317
+ "404": {
1318
+ "content": {
1319
+ "application/json": {
1320
+ "schema": {
1321
+ "$ref": "#/components/schemas/models.ErrorResponse"
1322
+ }
1323
+ }
1324
+ },
1325
+ "description": "Not Found"
1326
+ }
1327
+ },
1328
+ "summary": "Get skill info",
1329
+ "tags": [
1330
+ "skills"
1331
+ ]
1332
+ }
1333
+ },
1334
+ "/v1/workspace/reset": {
1335
+ "post": {
1336
+ "description": "Wipes all session data for pool recycling",
1337
+ "responses": {
1338
+ "204": {
1339
+ "description": "No Content"
1340
+ },
1341
+ "500": {
1342
+ "content": {
1343
+ "application/json": {
1344
+ "schema": {
1345
+ "$ref": "#/components/schemas/models.ErrorResponse"
1346
+ }
1347
+ }
1348
+ },
1349
+ "description": "Internal Server Error"
1350
+ }
1351
+ },
1352
+ "summary": "Reset workspace",
1353
+ "tags": [
1354
+ "sessions"
1355
+ ]
1356
+ }
1357
+ }
1358
+ },
1359
+ "servers": [
1360
+ {
1361
+ "url": "https://localhost:44772/"
1362
+ }
1363
+ ]
1364
+ }