@hasna/instructions 0.6.1 → 0.7.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 (80) hide show
  1. package/README.md +123 -6
  2. package/dist/chunks/{apply-ynfn1av7.js → apply-7svah2qm.js} +5 -3
  3. package/dist/chunks/{apply-sfzja1f3.js → apply-jp13sa1e.js} +6 -3
  4. package/dist/chunks/database-wstmr56z.js +23 -0
  5. package/dist/chunks/{index-85n5wnd8.js → index-1cnyjnd7.js} +5 -7
  6. package/dist/chunks/{index-pkscjnj5.js → index-3djthcm6.js} +0 -1
  7. package/dist/chunks/{index-v7dkb384.js → index-4pfq42t5.js} +129 -77
  8. package/dist/chunks/index-5d7zdftc.js +186 -0
  9. package/dist/chunks/{index-1hpwskwd.js → index-7m4j8a33.js} +205 -329
  10. package/dist/chunks/index-8rb7ng2y.js +148 -0
  11. package/dist/chunks/index-arrrx0ed.js +344 -0
  12. package/dist/chunks/{index-9p9gn7gh.js → index-bzyxvwcd.js} +5 -7
  13. package/dist/chunks/index-fpeyzn3n.js +186 -0
  14. package/dist/chunks/{index-axhwg61p.js → index-fwbs6tma.js} +15 -4
  15. package/dist/chunks/index-n3fjspr0.js +119 -0
  16. package/dist/chunks/{index-e9epbsvs.js → index-z3ma4aqk.js} +15 -4
  17. package/dist/chunks/legacy-store-migration-z2m5yzyk.js +322 -0
  18. package/dist/chunks/{local-a9nen65z.js → local-5wvv5xv3.js} +2 -2
  19. package/dist/chunks/{local-0d8qrc92.js → local-zxa5dpf4.js} +13 -188
  20. package/dist/chunks/s3-backup-n2z4fwyh.js +240 -0
  21. package/dist/chunks/s3-config-hhght91k.js +14 -0
  22. package/dist/chunks/s3-object-store-90tgbh6k.js +14 -0
  23. package/dist/chunks/{sync-m46fc257.js → sync-2075deve.js} +5 -4
  24. package/dist/chunks/{sync-vy1yjvs6.js → sync-r8t7zsp3.js} +4 -4
  25. package/dist/chunks/{template-02wjvv05.js → template-fsfxpe4p.js} +1 -1
  26. package/dist/chunks/{template-ke972qqe.js → template-wgnzdn7h.js} +1 -1
  27. package/dist/cli/index.js +1011 -247
  28. package/dist/data/config-store.d.ts +1 -0
  29. package/dist/data/config-store.d.ts.map +1 -1
  30. package/dist/index.js +840 -215
  31. package/dist/lib/apply.d.ts +7 -0
  32. package/dist/lib/apply.d.ts.map +1 -1
  33. package/dist/lib/compact-output.d.ts +1 -0
  34. package/dist/lib/compact-output.d.ts.map +1 -1
  35. package/dist/lib/export.d.ts +22 -3
  36. package/dist/lib/export.d.ts.map +1 -1
  37. package/dist/lib/import.d.ts +18 -0
  38. package/dist/lib/import.d.ts.map +1 -1
  39. package/dist/lib/legacy-store-migration.d.ts +39 -0
  40. package/dist/lib/legacy-store-migration.d.ts.map +1 -0
  41. package/dist/lib/managed-skill-runtimes.d.ts +1 -0
  42. package/dist/lib/managed-skill-runtimes.d.ts.map +1 -1
  43. package/dist/lib/sync-dir.d.ts.map +1 -1
  44. package/dist/mcp/index.js +31 -20
  45. package/dist/sdk/index.d.ts +2 -0
  46. package/dist/sdk/index.d.ts.map +1 -1
  47. package/dist/sdk/index.js +205 -10
  48. package/dist/sdk/resolve.d.ts +1 -1
  49. package/dist/sdk/resolve.d.ts.map +1 -1
  50. package/dist/sdk/v1-client.d.ts +57 -0
  51. package/dist/sdk/v1-client.d.ts.map +1 -0
  52. package/dist/sdk/v1.generated.d.ts +212 -21
  53. package/dist/sdk/v1.generated.d.ts.map +1 -1
  54. package/dist/server/cloud.d.ts.map +1 -1
  55. package/dist/server/index.d.ts +13 -5
  56. package/dist/server/index.d.ts.map +1 -1
  57. package/dist/server/index.js +1180 -432
  58. package/dist/server/openapi.d.ts +1264 -92
  59. package/dist/server/openapi.d.ts.map +1 -1
  60. package/dist/server/v1.d.ts +25 -1
  61. package/dist/server/v1.d.ts.map +1 -1
  62. package/dist/storage/cloud-store.d.ts +57 -1
  63. package/dist/storage/cloud-store.d.ts.map +1 -1
  64. package/dist/storage/index.d.ts +7 -0
  65. package/dist/storage/index.d.ts.map +1 -0
  66. package/dist/storage/index.js +725 -0
  67. package/dist/storage/s3-backup.d.ts +76 -0
  68. package/dist/storage/s3-backup.d.ts.map +1 -0
  69. package/dist/storage/s3-config.d.ts +46 -0
  70. package/dist/storage/s3-config.d.ts.map +1 -0
  71. package/dist/storage/s3-object-store.d.ts +70 -0
  72. package/dist/storage/s3-object-store.d.ts.map +1 -0
  73. package/dist/types/index.d.ts +65 -3
  74. package/dist/types/index.d.ts.map +1 -1
  75. package/hasna.contract.json +110 -0
  76. package/migrations/0001_instructions.sql +63 -0
  77. package/migrations/0002_api_keys.sql +20 -0
  78. package/migrations/0003_idempotency_receipts.sql +24 -0
  79. package/package.json +22 -11
  80. package/assets/skills/inbox/SKILL.md +0 -86
@@ -82,6 +82,49 @@ export declare function buildV1OpenApiDocument(version?: string): {
82
82
  };
83
83
  };
84
84
  };
85
+ ConfigIdentity: {
86
+ readonly type: "object";
87
+ readonly required: readonly ["id", "name", "slug", "kind", "category", "agent", "format", "is_template", "version", "created_at", "updated_at", "synced_at"];
88
+ readonly properties: {
89
+ readonly id: {
90
+ readonly type: "string";
91
+ };
92
+ readonly name: {
93
+ readonly type: "string";
94
+ };
95
+ readonly slug: {
96
+ readonly type: "string";
97
+ };
98
+ readonly kind: {
99
+ readonly type: "string";
100
+ };
101
+ readonly category: {
102
+ readonly type: "string";
103
+ };
104
+ readonly agent: {
105
+ readonly type: "string";
106
+ };
107
+ readonly format: {
108
+ readonly type: "string";
109
+ };
110
+ readonly is_template: {
111
+ readonly type: "boolean";
112
+ };
113
+ readonly version: {
114
+ readonly type: "number";
115
+ };
116
+ readonly created_at: {
117
+ readonly type: "string";
118
+ };
119
+ readonly updated_at: {
120
+ readonly type: "string";
121
+ };
122
+ readonly synced_at: {
123
+ readonly type: "string";
124
+ readonly nullable: true;
125
+ };
126
+ };
127
+ };
85
128
  Profile: {
86
129
  readonly type: "object";
87
130
  readonly properties: {
@@ -112,6 +155,75 @@ export declare function buildV1OpenApiDocument(version?: string): {
112
155
  };
113
156
  };
114
157
  };
158
+ ProfileIdentity: {
159
+ readonly type: "object";
160
+ readonly required: readonly ["id", "name", "slug", "created_at", "updated_at"];
161
+ readonly properties: {
162
+ readonly id: {
163
+ readonly type: "string";
164
+ };
165
+ readonly name: {
166
+ readonly type: "string";
167
+ };
168
+ readonly slug: {
169
+ readonly type: "string";
170
+ };
171
+ readonly created_at: {
172
+ readonly type: "string";
173
+ };
174
+ readonly updated_at: {
175
+ readonly type: "string";
176
+ };
177
+ };
178
+ };
179
+ Machine: {
180
+ readonly type: "object";
181
+ readonly required: readonly ["id", "hostname", "os", "arch", "last_applied_at", "created_at"];
182
+ readonly properties: {
183
+ readonly id: {
184
+ readonly type: "string";
185
+ };
186
+ readonly hostname: {
187
+ readonly type: "string";
188
+ };
189
+ readonly os: {
190
+ readonly type: "string";
191
+ readonly nullable: true;
192
+ };
193
+ readonly arch: {
194
+ readonly type: "string";
195
+ readonly nullable: true;
196
+ };
197
+ readonly last_applied_at: {
198
+ readonly type: "string";
199
+ readonly nullable: true;
200
+ };
201
+ readonly created_at: {
202
+ readonly type: "string";
203
+ };
204
+ };
205
+ };
206
+ ConfigSnapshot: {
207
+ readonly type: "object";
208
+ readonly required: readonly ["id", "config_id", "content", "version", "created_at"];
209
+ readonly properties: {
210
+ readonly id: {
211
+ readonly type: "string";
212
+ };
213
+ readonly config_id: {
214
+ readonly type: "string";
215
+ };
216
+ readonly content: {
217
+ readonly type: "string";
218
+ };
219
+ readonly version: {
220
+ readonly type: "number";
221
+ };
222
+ readonly created_at: {
223
+ readonly type: "string";
224
+ };
225
+ };
226
+ };
115
227
  CreateConfigInput: {
116
228
  type: string;
117
229
  required: string[];
@@ -157,17 +269,34 @@ export declare function buildV1OpenApiDocument(version?: string): {
157
269
  name: {
158
270
  type: string;
159
271
  };
272
+ kind: {
273
+ type: string;
274
+ };
160
275
  category: {
161
276
  type: string;
162
277
  };
163
278
  agent: {
164
279
  type: string;
165
280
  };
281
+ target_path: {
282
+ type: string;
283
+ nullable: boolean;
284
+ };
285
+ outputs: {
286
+ type: string;
287
+ items: {
288
+ type: string;
289
+ };
290
+ };
291
+ format: {
292
+ type: string;
293
+ };
166
294
  content: {
167
295
  type: string;
168
296
  };
169
297
  description: {
170
298
  type: string;
299
+ nullable: boolean;
171
300
  };
172
301
  tags: {
173
302
  type: string;
@@ -178,6 +307,10 @@ export declare function buildV1OpenApiDocument(version?: string): {
178
307
  is_template: {
179
308
  type: string;
180
309
  };
310
+ synced_at: {
311
+ type: string;
312
+ nullable: boolean;
313
+ };
181
314
  };
182
315
  };
183
316
  CreateProfileInput: {
@@ -198,6 +331,61 @@ export declare function buildV1OpenApiDocument(version?: string): {
198
331
  };
199
332
  };
200
333
  };
334
+ UpdateProfileInput: {
335
+ type: string;
336
+ properties: {
337
+ name: {
338
+ type: string;
339
+ };
340
+ description: {
341
+ type: string;
342
+ nullable: boolean;
343
+ };
344
+ selectors: {
345
+ type: string;
346
+ };
347
+ variables: {
348
+ type: string;
349
+ };
350
+ };
351
+ };
352
+ PruneSnapshotsInput: {
353
+ type: string;
354
+ properties: {
355
+ keep: {
356
+ type: string;
357
+ minimum: number;
358
+ default: number;
359
+ };
360
+ };
361
+ };
362
+ MachineAppliedInput: {
363
+ type: string;
364
+ required: string[];
365
+ properties: {
366
+ hostname: {
367
+ type: string;
368
+ };
369
+ };
370
+ };
371
+ FeedbackInput: {
372
+ type: string;
373
+ required: string[];
374
+ properties: {
375
+ message: {
376
+ type: string;
377
+ };
378
+ email: {
379
+ type: string;
380
+ };
381
+ category: {
382
+ type: string;
383
+ };
384
+ version: {
385
+ type: string;
386
+ };
387
+ };
388
+ };
201
389
  AddProfileConfigInput: {
202
390
  type: string;
203
391
  required: string[];
@@ -498,12 +686,21 @@ export declare function buildV1OpenApiDocument(version?: string): {
498
686
  type: string;
499
687
  required: string[];
500
688
  properties: {
689
+ configs: {
690
+ type: string;
691
+ items: {
692
+ $ref: string;
693
+ };
694
+ };
501
695
  items: {
502
696
  type: string;
503
697
  items: {
504
698
  $ref: string;
505
699
  };
506
700
  };
701
+ count: {
702
+ type: string;
703
+ };
507
704
  total: {
508
705
  type: string;
509
706
  };
@@ -532,90 +729,395 @@ export declare function buildV1OpenApiDocument(version?: string): {
532
729
  };
533
730
  };
534
731
  };
535
- ProfileShowResponse: {
732
+ BoundedConfigIdentityPage: {
536
733
  type: string;
537
734
  required: string[];
538
735
  properties: {
539
- profile: {
540
- $ref: string;
541
- };
542
736
  configs: {
543
- $ref: string;
737
+ type: string;
738
+ items: {
739
+ $ref: string;
740
+ };
741
+ };
742
+ items: {
743
+ type: string;
744
+ items: {
745
+ $ref: string;
746
+ };
747
+ };
748
+ count: {
749
+ type: string;
750
+ };
751
+ total: {
752
+ type: string;
753
+ };
754
+ limit: {
755
+ type: string;
756
+ };
757
+ cursor: {
758
+ type: string;
759
+ };
760
+ next_cursor: {
761
+ type: string;
762
+ nullable: boolean;
763
+ };
764
+ has_more: {
765
+ type: string;
766
+ };
767
+ complete: {
768
+ type: string;
769
+ };
770
+ truncated: {
771
+ type: string;
772
+ const: boolean;
773
+ };
774
+ source_bounded: {
775
+ type: string;
544
776
  };
545
777
  };
546
778
  };
547
- ProfileResolutionRead: {
779
+ BoundedProfileIdentityPage: {
548
780
  type: string;
549
781
  required: string[];
550
782
  properties: {
551
- profile: {
552
- oneOf: ({
783
+ profiles: {
784
+ type: string;
785
+ items: {
553
786
  $ref: string;
554
- type?: undefined;
555
- } | {
556
- type: string;
557
- $ref?: undefined;
558
- })[];
787
+ };
559
788
  };
560
- scanned: {
789
+ items: {
790
+ type: string;
791
+ items: {
792
+ $ref: string;
793
+ };
794
+ };
795
+ count: {
561
796
  type: string;
562
- nullable: boolean;
563
797
  };
564
798
  total: {
565
799
  type: string;
566
- nullable: boolean;
567
800
  };
568
- batch_limit: {
801
+ limit: {
802
+ type: string;
803
+ };
804
+ cursor: {
805
+ type: string;
806
+ };
807
+ next_cursor: {
569
808
  type: string;
570
809
  nullable: boolean;
571
810
  };
572
- source_bounded: {
811
+ has_more: {
573
812
  type: string;
574
813
  };
575
814
  complete: {
576
815
  type: string;
577
- const: boolean;
578
816
  };
579
817
  truncated: {
580
818
  type: string;
581
819
  const: boolean;
582
820
  };
821
+ source_bounded: {
822
+ type: string;
823
+ };
583
824
  };
584
825
  };
585
- };
586
- };
587
- security: {
588
- apiKey: never[];
826
+ BoundedSnapshotPage: {
827
+ type: string;
828
+ required: string[];
829
+ properties: {
830
+ snapshots: {
831
+ type: string;
832
+ items: {
833
+ $ref: string;
834
+ };
835
+ };
836
+ items: {
837
+ type: string;
838
+ items: {
839
+ $ref: string;
840
+ };
841
+ };
842
+ count: {
843
+ type: string;
844
+ };
845
+ total: {
846
+ type: string;
847
+ };
848
+ limit: {
849
+ type: string;
850
+ };
851
+ cursor: {
852
+ type: string;
853
+ };
854
+ next_cursor: {
855
+ type: string;
856
+ nullable: boolean;
857
+ };
858
+ has_more: {
859
+ type: string;
860
+ };
861
+ complete: {
862
+ type: string;
863
+ };
864
+ truncated: {
865
+ type: string;
866
+ const: boolean;
867
+ };
868
+ source_bounded: {
869
+ type: string;
870
+ };
871
+ };
872
+ };
873
+ BoundedMachinePage: {
874
+ type: string;
875
+ required: string[];
876
+ properties: {
877
+ machines: {
878
+ type: string;
879
+ items: {
880
+ $ref: string;
881
+ };
882
+ };
883
+ items: {
884
+ type: string;
885
+ items: {
886
+ $ref: string;
887
+ };
888
+ };
889
+ count: {
890
+ type: string;
891
+ };
892
+ total: {
893
+ type: string;
894
+ };
895
+ limit: {
896
+ type: string;
897
+ };
898
+ cursor: {
899
+ type: string;
900
+ };
901
+ next_cursor: {
902
+ type: string;
903
+ nullable: boolean;
904
+ };
905
+ has_more: {
906
+ type: string;
907
+ };
908
+ complete: {
909
+ type: string;
910
+ };
911
+ truncated: {
912
+ type: string;
913
+ const: boolean;
914
+ };
915
+ source_bounded: {
916
+ type: string;
917
+ };
918
+ };
919
+ };
920
+ BoundedProfileConfigBindingPage: {
921
+ type: string;
922
+ required: string[];
923
+ properties: {
924
+ bindings: {
925
+ type: string;
926
+ items: {
927
+ $ref: string;
928
+ };
929
+ };
930
+ items: {
931
+ type: string;
932
+ items: {
933
+ $ref: string;
934
+ };
935
+ };
936
+ count: {
937
+ type: string;
938
+ };
939
+ total: {
940
+ type: string;
941
+ };
942
+ limit: {
943
+ type: string;
944
+ };
945
+ cursor: {
946
+ type: string;
947
+ };
948
+ next_cursor: {
949
+ type: string;
950
+ nullable: boolean;
951
+ };
952
+ has_more: {
953
+ type: string;
954
+ };
955
+ complete: {
956
+ type: string;
957
+ };
958
+ truncated: {
959
+ type: string;
960
+ const: boolean;
961
+ };
962
+ source_bounded: {
963
+ type: string;
964
+ };
965
+ };
966
+ };
967
+ BoundedProfileAssetBindingPage: {
968
+ type: string;
969
+ required: string[];
970
+ properties: {
971
+ assets: {
972
+ type: string;
973
+ items: {
974
+ $ref: string;
975
+ };
976
+ };
977
+ items: {
978
+ type: string;
979
+ items: {
980
+ $ref: string;
981
+ };
982
+ };
983
+ count: {
984
+ type: string;
985
+ };
986
+ total: {
987
+ type: string;
988
+ };
989
+ limit: {
990
+ type: string;
991
+ };
992
+ cursor: {
993
+ type: string;
994
+ };
995
+ next_cursor: {
996
+ type: string;
997
+ nullable: boolean;
998
+ };
999
+ has_more: {
1000
+ type: string;
1001
+ };
1002
+ complete: {
1003
+ type: string;
1004
+ };
1005
+ truncated: {
1006
+ type: string;
1007
+ const: boolean;
1008
+ };
1009
+ source_bounded: {
1010
+ type: string;
1011
+ };
1012
+ };
1013
+ };
1014
+ ProfileShowResponse: {
1015
+ type: string;
1016
+ required: string[];
1017
+ properties: {
1018
+ profile: {
1019
+ $ref: string;
1020
+ };
1021
+ configs: {
1022
+ $ref: string;
1023
+ };
1024
+ };
1025
+ };
1026
+ ProfileResolutionRead: {
1027
+ type: string;
1028
+ required: string[];
1029
+ properties: {
1030
+ profile: {
1031
+ oneOf: ({
1032
+ $ref: string;
1033
+ type?: undefined;
1034
+ } | {
1035
+ type: string;
1036
+ $ref?: undefined;
1037
+ })[];
1038
+ };
1039
+ scanned: {
1040
+ type: string;
1041
+ nullable: boolean;
1042
+ };
1043
+ total: {
1044
+ type: string;
1045
+ nullable: boolean;
1046
+ };
1047
+ batch_limit: {
1048
+ type: string;
1049
+ nullable: boolean;
1050
+ };
1051
+ source_bounded: {
1052
+ type: string;
1053
+ };
1054
+ complete: {
1055
+ type: string;
1056
+ const: boolean;
1057
+ };
1058
+ truncated: {
1059
+ type: string;
1060
+ const: boolean;
1061
+ };
1062
+ };
1063
+ };
1064
+ };
1065
+ };
1066
+ security: {
1067
+ apiKey: never[];
589
1068
  }[];
590
1069
  paths: {
591
1070
  "/v1/configs": {
592
1071
  get: {
593
1072
  operationId: string;
594
1073
  summary: string;
595
- parameters: {
1074
+ parameters: ({
1075
+ readonly name: "limit";
1076
+ readonly in: "query";
1077
+ readonly schema: {
1078
+ readonly type: "integer";
1079
+ readonly minimum: 1;
1080
+ readonly maximum: 100;
1081
+ };
1082
+ } | {
1083
+ readonly name: "cursor";
1084
+ readonly in: "query";
1085
+ readonly schema: {
1086
+ readonly type: "integer";
1087
+ readonly minimum: 0;
1088
+ readonly maximum: 100000;
1089
+ };
1090
+ } | {
1091
+ readonly name: "view";
1092
+ readonly in: "query";
1093
+ readonly description: "Use identity for a metadata-only projection that omits instruction content, paths, outputs, and private profile fields.";
1094
+ readonly schema: {
1095
+ readonly type: "string";
1096
+ readonly enum: readonly ["identity"];
1097
+ };
1098
+ } | {
596
1099
  name: string;
597
1100
  in: string;
598
1101
  schema: {
599
1102
  type: string;
1103
+ maxLength?: undefined;
600
1104
  };
601
- }[];
1105
+ } | {
1106
+ name: string;
1107
+ in: string;
1108
+ schema: {
1109
+ type: string;
1110
+ maxLength: number;
1111
+ };
1112
+ })[];
602
1113
  responses: {
603
1114
  "200": {
604
1115
  content: {
605
1116
  "application/json": {
606
1117
  schema: {
607
- type: string;
608
- properties: {
609
- configs: {
610
- type: string;
611
- items: {
612
- $ref: string;
613
- };
614
- };
615
- count: {
616
- type: string;
617
- };
618
- };
1118
+ oneOf: {
1119
+ $ref: string;
1120
+ }[];
619
1121
  };
620
1122
  };
621
1123
  };
@@ -625,6 +1127,18 @@ export declare function buildV1OpenApiDocument(version?: string): {
625
1127
  post: {
626
1128
  operationId: string;
627
1129
  summary: string;
1130
+ parameters: {
1131
+ readonly name: "Idempotency-Key";
1132
+ readonly in: "header";
1133
+ readonly required: false;
1134
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
1135
+ readonly schema: {
1136
+ readonly type: "string";
1137
+ readonly minLength: 1;
1138
+ readonly maxLength: 255;
1139
+ readonly pattern: "^[!-~]+$";
1140
+ };
1141
+ }[];
628
1142
  requestBody: {
629
1143
  required: boolean;
630
1144
  content: {
@@ -650,6 +1164,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
650
1164
  };
651
1165
  };
652
1166
  };
1167
+ "409": {
1168
+ readonly description: "The Idempotency-Key was already used for a different request body.";
1169
+ readonly content: {
1170
+ readonly "application/json": {
1171
+ readonly schema: {
1172
+ readonly type: "object";
1173
+ readonly required: readonly ["error", "code"];
1174
+ readonly properties: {
1175
+ readonly error: {
1176
+ readonly type: "string";
1177
+ };
1178
+ readonly code: {
1179
+ readonly type: "string";
1180
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
1181
+ };
1182
+ };
1183
+ };
1184
+ };
1185
+ };
1186
+ };
653
1187
  };
654
1188
  };
655
1189
  };
@@ -720,6 +1254,44 @@ export declare function buildV1OpenApiDocument(version?: string): {
720
1254
  };
721
1255
  };
722
1256
  };
1257
+ put: {
1258
+ operationId: string;
1259
+ summary: string;
1260
+ parameters: {
1261
+ name: string;
1262
+ in: string;
1263
+ required: boolean;
1264
+ schema: {
1265
+ type: string;
1266
+ };
1267
+ }[];
1268
+ requestBody: {
1269
+ required: boolean;
1270
+ content: {
1271
+ "application/json": {
1272
+ schema: {
1273
+ $ref: string;
1274
+ };
1275
+ };
1276
+ };
1277
+ };
1278
+ responses: {
1279
+ "200": {
1280
+ content: {
1281
+ "application/json": {
1282
+ schema: {
1283
+ type: string;
1284
+ properties: {
1285
+ config: {
1286
+ $ref: string;
1287
+ };
1288
+ };
1289
+ };
1290
+ };
1291
+ };
1292
+ };
1293
+ };
1294
+ };
723
1295
  delete: {
724
1296
  operationId: string;
725
1297
  summary: string;
@@ -756,29 +1328,111 @@ export declare function buildV1OpenApiDocument(version?: string): {
756
1328
  get: {
757
1329
  operationId: string;
758
1330
  summary: string;
759
- parameters: {
1331
+ parameters: ({
1332
+ readonly name: "limit";
1333
+ readonly in: "query";
1334
+ readonly schema: {
1335
+ readonly type: "integer";
1336
+ readonly minimum: 1;
1337
+ readonly maximum: 100;
1338
+ };
1339
+ } | {
1340
+ readonly name: "cursor";
1341
+ readonly in: "query";
1342
+ readonly schema: {
1343
+ readonly type: "integer";
1344
+ readonly minimum: 0;
1345
+ readonly maximum: 100000;
1346
+ };
1347
+ } | {
760
1348
  name: string;
761
1349
  in: string;
762
1350
  required: boolean;
763
1351
  schema: {
764
1352
  type: string;
765
1353
  };
766
- }[];
1354
+ })[];
767
1355
  responses: {
768
1356
  "200": {
1357
+ content: {
1358
+ "application/json": {
1359
+ schema: {
1360
+ $ref: string;
1361
+ };
1362
+ };
1363
+ };
1364
+ };
1365
+ };
1366
+ };
1367
+ post: {
1368
+ operationId: string;
1369
+ summary: string;
1370
+ parameters: ({
1371
+ readonly name: "Idempotency-Key";
1372
+ readonly in: "header";
1373
+ readonly required: false;
1374
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
1375
+ readonly schema: {
1376
+ readonly type: "string";
1377
+ readonly minLength: 1;
1378
+ readonly maxLength: 255;
1379
+ readonly pattern: "^[!-~]+$";
1380
+ };
1381
+ } | {
1382
+ name: string;
1383
+ in: string;
1384
+ required: boolean;
1385
+ schema: {
1386
+ type: string;
1387
+ };
1388
+ })[];
1389
+ requestBody: {
1390
+ required: boolean;
1391
+ content: {
1392
+ "application/json": {
1393
+ schema: {
1394
+ type: string;
1395
+ properties: {
1396
+ content: {
1397
+ type: string;
1398
+ };
1399
+ version: {
1400
+ type: string;
1401
+ };
1402
+ };
1403
+ };
1404
+ };
1405
+ };
1406
+ };
1407
+ responses: {
1408
+ "201": {
769
1409
  content: {
770
1410
  "application/json": {
771
1411
  schema: {
772
1412
  type: string;
773
1413
  properties: {
774
- snapshots: {
775
- type: string;
776
- items: {
777
- type: string;
778
- };
1414
+ snapshot: {
1415
+ $ref: string;
779
1416
  };
780
- count: {
781
- type: string;
1417
+ };
1418
+ };
1419
+ };
1420
+ };
1421
+ };
1422
+ "409": {
1423
+ readonly description: "The Idempotency-Key was already used for a different request body.";
1424
+ readonly content: {
1425
+ readonly "application/json": {
1426
+ readonly schema: {
1427
+ readonly type: "object";
1428
+ readonly required: readonly ["error", "code"];
1429
+ readonly properties: {
1430
+ readonly error: {
1431
+ readonly type: "string";
1432
+ };
1433
+ readonly code: {
1434
+ readonly type: "string";
1435
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
782
1436
  };
783
1437
  };
784
1438
  };
@@ -787,6 +1441,8 @@ export declare function buildV1OpenApiDocument(version?: string): {
787
1441
  };
788
1442
  };
789
1443
  };
1444
+ };
1445
+ "/v1/configs/{id}/snapshots/prune": {
790
1446
  post: {
791
1447
  operationId: string;
792
1448
  summary: string;
@@ -798,14 +1454,25 @@ export declare function buildV1OpenApiDocument(version?: string): {
798
1454
  type: string;
799
1455
  };
800
1456
  }[];
1457
+ requestBody: {
1458
+ required: boolean;
1459
+ content: {
1460
+ "application/json": {
1461
+ schema: {
1462
+ $ref: string;
1463
+ };
1464
+ };
1465
+ };
1466
+ };
801
1467
  responses: {
802
- "201": {
1468
+ "200": {
803
1469
  content: {
804
1470
  "application/json": {
805
1471
  schema: {
806
1472
  type: string;
1473
+ required: string[];
807
1474
  properties: {
808
- snapshot: {
1475
+ pruned: {
809
1476
  type: string;
810
1477
  };
811
1478
  };
@@ -816,25 +1483,63 @@ export declare function buildV1OpenApiDocument(version?: string): {
816
1483
  };
817
1484
  };
818
1485
  };
819
- "/v1/profiles": {
1486
+ "/v1/configs/{id}/snapshots/{version}": {
820
1487
  get: {
821
1488
  operationId: string;
822
1489
  summary: string;
823
- parameters: ({
1490
+ parameters: {
824
1491
  name: string;
825
1492
  in: string;
1493
+ required: boolean;
826
1494
  schema: {
827
1495
  type: string;
828
- minimum: number;
829
- maximum: number;
1496
+ };
1497
+ }[];
1498
+ responses: {
1499
+ "200": {
1500
+ content: {
1501
+ "application/json": {
1502
+ schema: {
1503
+ type: string;
1504
+ properties: {
1505
+ snapshot: {
1506
+ $ref: string;
1507
+ };
1508
+ };
1509
+ };
1510
+ };
1511
+ };
1512
+ };
1513
+ };
1514
+ };
1515
+ };
1516
+ "/v1/profiles": {
1517
+ get: {
1518
+ operationId: string;
1519
+ summary: string;
1520
+ parameters: ({
1521
+ readonly name: "limit";
1522
+ readonly in: "query";
1523
+ readonly schema: {
1524
+ readonly type: "integer";
1525
+ readonly minimum: 1;
1526
+ readonly maximum: 100;
830
1527
  };
831
1528
  } | {
832
- name: string;
833
- in: string;
834
- schema: {
835
- type: string;
836
- minimum: number;
837
- maximum?: undefined;
1529
+ readonly name: "cursor";
1530
+ readonly in: "query";
1531
+ readonly schema: {
1532
+ readonly type: "integer";
1533
+ readonly minimum: 0;
1534
+ readonly maximum: 100000;
1535
+ };
1536
+ } | {
1537
+ readonly name: "view";
1538
+ readonly in: "query";
1539
+ readonly description: "Use identity for a metadata-only projection that omits instruction content, paths, outputs, and private profile fields.";
1540
+ readonly schema: {
1541
+ readonly type: "string";
1542
+ readonly enum: readonly ["identity"];
838
1543
  };
839
1544
  })[];
840
1545
  responses: {
@@ -842,7 +1547,9 @@ export declare function buildV1OpenApiDocument(version?: string): {
842
1547
  content: {
843
1548
  "application/json": {
844
1549
  schema: {
845
- $ref: string;
1550
+ oneOf: {
1551
+ $ref: string;
1552
+ }[];
846
1553
  };
847
1554
  };
848
1555
  };
@@ -852,6 +1559,18 @@ export declare function buildV1OpenApiDocument(version?: string): {
852
1559
  post: {
853
1560
  operationId: string;
854
1561
  summary: string;
1562
+ parameters: {
1563
+ readonly name: "Idempotency-Key";
1564
+ readonly in: "header";
1565
+ readonly required: false;
1566
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
1567
+ readonly schema: {
1568
+ readonly type: "string";
1569
+ readonly minLength: 1;
1570
+ readonly maxLength: 255;
1571
+ readonly pattern: "^[!-~]+$";
1572
+ };
1573
+ }[];
855
1574
  requestBody: {
856
1575
  required: boolean;
857
1576
  content: {
@@ -877,6 +1596,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
877
1596
  };
878
1597
  };
879
1598
  };
1599
+ "409": {
1600
+ readonly description: "The Idempotency-Key was already used for a different request body.";
1601
+ readonly content: {
1602
+ readonly "application/json": {
1603
+ readonly schema: {
1604
+ readonly type: "object";
1605
+ readonly required: readonly ["error", "code"];
1606
+ readonly properties: {
1607
+ readonly error: {
1608
+ readonly type: "string";
1609
+ };
1610
+ readonly code: {
1611
+ readonly type: "string";
1612
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
1613
+ };
1614
+ };
1615
+ };
1616
+ };
1617
+ };
1618
+ };
880
1619
  };
881
1620
  };
882
1621
  };
@@ -944,14 +1683,91 @@ export declare function buildV1OpenApiDocument(version?: string): {
944
1683
  minimum: number;
945
1684
  maximum?: undefined;
946
1685
  };
947
- required?: undefined;
948
- })[];
1686
+ required?: undefined;
1687
+ })[];
1688
+ responses: {
1689
+ "200": {
1690
+ content: {
1691
+ "application/json": {
1692
+ schema: {
1693
+ $ref: string;
1694
+ };
1695
+ };
1696
+ };
1697
+ };
1698
+ };
1699
+ };
1700
+ patch: {
1701
+ operationId: string;
1702
+ summary: string;
1703
+ parameters: {
1704
+ name: string;
1705
+ in: string;
1706
+ required: boolean;
1707
+ schema: {
1708
+ type: string;
1709
+ };
1710
+ }[];
1711
+ requestBody: {
1712
+ required: boolean;
1713
+ content: {
1714
+ "application/json": {
1715
+ schema: {
1716
+ $ref: string;
1717
+ };
1718
+ };
1719
+ };
1720
+ };
1721
+ responses: {
1722
+ "200": {
1723
+ content: {
1724
+ "application/json": {
1725
+ schema: {
1726
+ type: string;
1727
+ properties: {
1728
+ profile: {
1729
+ $ref: string;
1730
+ };
1731
+ };
1732
+ };
1733
+ };
1734
+ };
1735
+ };
1736
+ };
1737
+ };
1738
+ put: {
1739
+ operationId: string;
1740
+ summary: string;
1741
+ description: string;
1742
+ parameters: {
1743
+ name: string;
1744
+ in: string;
1745
+ required: boolean;
1746
+ schema: {
1747
+ type: string;
1748
+ };
1749
+ }[];
1750
+ requestBody: {
1751
+ required: boolean;
1752
+ content: {
1753
+ "application/json": {
1754
+ schema: {
1755
+ $ref: string;
1756
+ };
1757
+ };
1758
+ };
1759
+ };
949
1760
  responses: {
950
1761
  "200": {
951
1762
  content: {
952
1763
  "application/json": {
953
1764
  schema: {
954
- $ref: string;
1765
+ type: string;
1766
+ properties: {
1767
+ profile: {
1768
+ $ref: string;
1769
+ };
1770
+ };
955
1771
  };
956
1772
  };
957
1773
  };
@@ -998,14 +1814,25 @@ export declare function buildV1OpenApiDocument(version?: string): {
998
1814
  security: {
999
1815
  apiKey: never[];
1000
1816
  }[];
1001
- parameters: {
1817
+ parameters: ({
1818
+ readonly name: "Idempotency-Key";
1819
+ readonly in: "header";
1820
+ readonly required: false;
1821
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
1822
+ readonly schema: {
1823
+ readonly type: "string";
1824
+ readonly minLength: 1;
1825
+ readonly maxLength: 255;
1826
+ readonly pattern: "^[!-~]+$";
1827
+ };
1828
+ } | {
1002
1829
  name: string;
1003
1830
  in: string;
1004
1831
  required: boolean;
1005
1832
  schema: {
1006
1833
  type: string;
1007
1834
  };
1008
- }[];
1835
+ })[];
1009
1836
  requestBody: {
1010
1837
  required: boolean;
1011
1838
  content: {
@@ -1026,6 +1853,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
1026
1853
  };
1027
1854
  };
1028
1855
  };
1856
+ "409": {
1857
+ readonly description: "The Idempotency-Key was already used for a different request body.";
1858
+ readonly content: {
1859
+ readonly "application/json": {
1860
+ readonly schema: {
1861
+ readonly type: "object";
1862
+ readonly required: readonly ["error", "code"];
1863
+ readonly properties: {
1864
+ readonly error: {
1865
+ readonly type: "string";
1866
+ };
1867
+ readonly code: {
1868
+ readonly type: "string";
1869
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
1870
+ };
1871
+ };
1872
+ };
1873
+ };
1874
+ };
1875
+ };
1029
1876
  };
1030
1877
  };
1031
1878
  };
@@ -1036,14 +1883,25 @@ export declare function buildV1OpenApiDocument(version?: string): {
1036
1883
  security: {
1037
1884
  apiKey: never[];
1038
1885
  }[];
1039
- parameters: {
1886
+ parameters: ({
1887
+ readonly name: "Idempotency-Key";
1888
+ readonly in: "header";
1889
+ readonly required: false;
1890
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
1891
+ readonly schema: {
1892
+ readonly type: "string";
1893
+ readonly minLength: 1;
1894
+ readonly maxLength: 255;
1895
+ readonly pattern: "^[!-~]+$";
1896
+ };
1897
+ } | {
1040
1898
  name: string;
1041
1899
  in: string;
1042
1900
  required: boolean;
1043
1901
  schema: {
1044
1902
  type: string;
1045
1903
  };
1046
- }[];
1904
+ })[];
1047
1905
  requestBody: {
1048
1906
  required: boolean;
1049
1907
  content: {
@@ -1075,6 +1933,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
1075
1933
  };
1076
1934
  };
1077
1935
  };
1936
+ "409": {
1937
+ readonly description: "The Idempotency-Key was already used for a different request body.";
1938
+ readonly content: {
1939
+ readonly "application/json": {
1940
+ readonly schema: {
1941
+ readonly type: "object";
1942
+ readonly required: readonly ["error", "code"];
1943
+ readonly properties: {
1944
+ readonly error: {
1945
+ readonly type: "string";
1946
+ };
1947
+ readonly code: {
1948
+ readonly type: "string";
1949
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
1950
+ };
1951
+ };
1952
+ };
1953
+ };
1954
+ };
1955
+ };
1078
1956
  };
1079
1957
  };
1080
1958
  delete: {
@@ -1109,28 +1987,36 @@ export declare function buildV1OpenApiDocument(version?: string): {
1109
1987
  get: {
1110
1988
  operationId: string;
1111
1989
  summary: string;
1112
- parameters: {
1990
+ parameters: ({
1991
+ readonly name: "limit";
1992
+ readonly in: "query";
1993
+ readonly schema: {
1994
+ readonly type: "integer";
1995
+ readonly minimum: 1;
1996
+ readonly maximum: 100;
1997
+ };
1998
+ } | {
1999
+ readonly name: "cursor";
2000
+ readonly in: "query";
2001
+ readonly schema: {
2002
+ readonly type: "integer";
2003
+ readonly minimum: 0;
2004
+ readonly maximum: 100000;
2005
+ };
2006
+ } | {
1113
2007
  name: string;
1114
2008
  in: string;
1115
2009
  required: boolean;
1116
2010
  schema: {
1117
2011
  type: string;
1118
2012
  };
1119
- }[];
2013
+ })[];
1120
2014
  responses: {
1121
2015
  "200": {
1122
2016
  content: {
1123
2017
  "application/json": {
1124
2018
  schema: {
1125
- type: string;
1126
- properties: {
1127
- bindings: {
1128
- type: string;
1129
- items: {
1130
- $ref: string;
1131
- };
1132
- };
1133
- };
2019
+ $ref: string;
1134
2020
  };
1135
2021
  };
1136
2022
  };
@@ -1142,28 +2028,36 @@ export declare function buildV1OpenApiDocument(version?: string): {
1142
2028
  get: {
1143
2029
  operationId: string;
1144
2030
  summary: string;
1145
- parameters: {
2031
+ parameters: ({
2032
+ readonly name: "limit";
2033
+ readonly in: "query";
2034
+ readonly schema: {
2035
+ readonly type: "integer";
2036
+ readonly minimum: 1;
2037
+ readonly maximum: 100;
2038
+ };
2039
+ } | {
2040
+ readonly name: "cursor";
2041
+ readonly in: "query";
2042
+ readonly schema: {
2043
+ readonly type: "integer";
2044
+ readonly minimum: 0;
2045
+ readonly maximum: 100000;
2046
+ };
2047
+ } | {
1146
2048
  name: string;
1147
2049
  in: string;
1148
2050
  required: boolean;
1149
2051
  schema: {
1150
2052
  type: string;
1151
2053
  };
1152
- }[];
2054
+ })[];
1153
2055
  responses: {
1154
2056
  "200": {
1155
2057
  content: {
1156
2058
  "application/json": {
1157
2059
  schema: {
1158
- type: string;
1159
- properties: {
1160
- assets: {
1161
- type: string;
1162
- items: {
1163
- $ref: string;
1164
- };
1165
- };
1166
- };
2060
+ $ref: string;
1167
2061
  };
1168
2062
  };
1169
2063
  };
@@ -1176,14 +2070,25 @@ export declare function buildV1OpenApiDocument(version?: string): {
1176
2070
  security: {
1177
2071
  apiKey: never[];
1178
2072
  }[];
1179
- parameters: {
2073
+ parameters: ({
2074
+ readonly name: "Idempotency-Key";
2075
+ readonly in: "header";
2076
+ readonly required: false;
2077
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
2078
+ readonly schema: {
2079
+ readonly type: "string";
2080
+ readonly minLength: 1;
2081
+ readonly maxLength: 255;
2082
+ readonly pattern: "^[!-~]+$";
2083
+ };
2084
+ } | {
1180
2085
  name: string;
1181
2086
  in: string;
1182
2087
  required: boolean;
1183
2088
  schema: {
1184
2089
  type: string;
1185
2090
  };
1186
- }[];
2091
+ })[];
1187
2092
  requestBody: {
1188
2093
  required: boolean;
1189
2094
  content: {
@@ -1209,6 +2114,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
1209
2114
  };
1210
2115
  };
1211
2116
  };
2117
+ "409": {
2118
+ readonly description: "The Idempotency-Key was already used for a different request body.";
2119
+ readonly content: {
2120
+ readonly "application/json": {
2121
+ readonly schema: {
2122
+ readonly type: "object";
2123
+ readonly required: readonly ["error", "code"];
2124
+ readonly properties: {
2125
+ readonly error: {
2126
+ readonly type: "string";
2127
+ };
2128
+ readonly code: {
2129
+ readonly type: "string";
2130
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
2131
+ };
2132
+ };
2133
+ };
2134
+ };
2135
+ };
2136
+ };
1212
2137
  };
1213
2138
  };
1214
2139
  };
@@ -1219,14 +2144,25 @@ export declare function buildV1OpenApiDocument(version?: string): {
1219
2144
  security: {
1220
2145
  apiKey: never[];
1221
2146
  }[];
1222
- parameters: {
2147
+ parameters: ({
2148
+ readonly name: "Idempotency-Key";
2149
+ readonly in: "header";
2150
+ readonly required: false;
2151
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
2152
+ readonly schema: {
2153
+ readonly type: "string";
2154
+ readonly minLength: 1;
2155
+ readonly maxLength: 255;
2156
+ readonly pattern: "^[!-~]+$";
2157
+ };
2158
+ } | {
1223
2159
  name: string;
1224
2160
  in: string;
1225
2161
  required: boolean;
1226
2162
  schema: {
1227
2163
  type: string;
1228
2164
  };
1229
- }[];
2165
+ })[];
1230
2166
  requestBody: {
1231
2167
  required: boolean;
1232
2168
  content: {
@@ -1258,6 +2194,26 @@ export declare function buildV1OpenApiDocument(version?: string): {
1258
2194
  };
1259
2195
  };
1260
2196
  };
2197
+ "409": {
2198
+ readonly description: "The Idempotency-Key was already used for a different request body.";
2199
+ readonly content: {
2200
+ readonly "application/json": {
2201
+ readonly schema: {
2202
+ readonly type: "object";
2203
+ readonly required: readonly ["error", "code"];
2204
+ readonly properties: {
2205
+ readonly error: {
2206
+ readonly type: "string";
2207
+ };
2208
+ readonly code: {
2209
+ readonly type: "string";
2210
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
2211
+ };
2212
+ };
2213
+ };
2214
+ };
2215
+ };
2216
+ };
1261
2217
  };
1262
2218
  };
1263
2219
  delete: {
@@ -1293,6 +2249,222 @@ export declare function buildV1OpenApiDocument(version?: string): {
1293
2249
  };
1294
2250
  };
1295
2251
  };
2252
+ "/v1/snapshots/{id}": {
2253
+ get: {
2254
+ operationId: string;
2255
+ summary: string;
2256
+ parameters: {
2257
+ name: string;
2258
+ in: string;
2259
+ required: boolean;
2260
+ schema: {
2261
+ type: string;
2262
+ };
2263
+ }[];
2264
+ responses: {
2265
+ "200": {
2266
+ content: {
2267
+ "application/json": {
2268
+ schema: {
2269
+ type: string;
2270
+ properties: {
2271
+ snapshot: {
2272
+ $ref: string;
2273
+ };
2274
+ };
2275
+ };
2276
+ };
2277
+ };
2278
+ };
2279
+ };
2280
+ };
2281
+ };
2282
+ "/v1/machines/applied": {
2283
+ post: {
2284
+ operationId: string;
2285
+ summary: string;
2286
+ requestBody: {
2287
+ required: boolean;
2288
+ content: {
2289
+ "application/json": {
2290
+ schema: {
2291
+ $ref: string;
2292
+ };
2293
+ };
2294
+ };
2295
+ };
2296
+ responses: {
2297
+ "200": {
2298
+ content: {
2299
+ "application/json": {
2300
+ schema: {
2301
+ type: string;
2302
+ required: string[];
2303
+ properties: {
2304
+ updated: {
2305
+ type: string;
2306
+ const: boolean;
2307
+ };
2308
+ };
2309
+ };
2310
+ };
2311
+ };
2312
+ };
2313
+ };
2314
+ };
2315
+ };
2316
+ "/v1/machines": {
2317
+ get: {
2318
+ operationId: string;
2319
+ summary: string;
2320
+ parameters: ({
2321
+ readonly name: "limit";
2322
+ readonly in: "query";
2323
+ readonly schema: {
2324
+ readonly type: "integer";
2325
+ readonly minimum: 1;
2326
+ readonly maximum: 100;
2327
+ };
2328
+ } | {
2329
+ readonly name: "cursor";
2330
+ readonly in: "query";
2331
+ readonly schema: {
2332
+ readonly type: "integer";
2333
+ readonly minimum: 0;
2334
+ readonly maximum: 100000;
2335
+ };
2336
+ } | {
2337
+ readonly name: "view";
2338
+ readonly in: "query";
2339
+ readonly description: "Use identity for a metadata-only projection that omits instruction content, paths, outputs, and private profile fields.";
2340
+ readonly schema: {
2341
+ readonly type: "string";
2342
+ readonly enum: readonly ["identity"];
2343
+ };
2344
+ })[];
2345
+ responses: {
2346
+ "200": {
2347
+ content: {
2348
+ "application/json": {
2349
+ schema: {
2350
+ $ref: string;
2351
+ };
2352
+ };
2353
+ };
2354
+ };
2355
+ };
2356
+ };
2357
+ post: {
2358
+ operationId: string;
2359
+ summary: string;
2360
+ parameters: {
2361
+ readonly name: "Idempotency-Key";
2362
+ readonly in: "header";
2363
+ readonly required: false;
2364
+ readonly description: "Optional visible-ASCII request key (1-255 characters). Replays the first committed response for the same authenticated principal, operation, and canonical JSON body; reuse with a different body returns 409.";
2365
+ readonly schema: {
2366
+ readonly type: "string";
2367
+ readonly minLength: 1;
2368
+ readonly maxLength: 255;
2369
+ readonly pattern: "^[!-~]+$";
2370
+ };
2371
+ }[];
2372
+ requestBody: {
2373
+ required: boolean;
2374
+ content: {
2375
+ "application/json": {
2376
+ schema: {
2377
+ type: string;
2378
+ required: string[];
2379
+ properties: {
2380
+ hostname: {
2381
+ type: string;
2382
+ };
2383
+ os: {
2384
+ type: string;
2385
+ nullable: boolean;
2386
+ };
2387
+ arch: {
2388
+ type: string;
2389
+ nullable: boolean;
2390
+ };
2391
+ };
2392
+ };
2393
+ };
2394
+ };
2395
+ };
2396
+ responses: {
2397
+ "201": {
2398
+ content: {
2399
+ "application/json": {
2400
+ schema: {
2401
+ type: string;
2402
+ properties: {
2403
+ machine: {
2404
+ $ref: string;
2405
+ };
2406
+ };
2407
+ };
2408
+ };
2409
+ };
2410
+ };
2411
+ "409": {
2412
+ readonly description: "The Idempotency-Key was already used for a different request body.";
2413
+ readonly content: {
2414
+ readonly "application/json": {
2415
+ readonly schema: {
2416
+ readonly type: "object";
2417
+ readonly required: readonly ["error", "code"];
2418
+ readonly properties: {
2419
+ readonly error: {
2420
+ readonly type: "string";
2421
+ };
2422
+ readonly code: {
2423
+ readonly type: "string";
2424
+ readonly const: "IDEMPOTENCY_KEY_REUSED";
2425
+ };
2426
+ };
2427
+ };
2428
+ };
2429
+ };
2430
+ };
2431
+ };
2432
+ };
2433
+ };
2434
+ "/v1/feedback": {
2435
+ post: {
2436
+ operationId: string;
2437
+ summary: string;
2438
+ requestBody: {
2439
+ required: boolean;
2440
+ content: {
2441
+ "application/json": {
2442
+ schema: {
2443
+ $ref: string;
2444
+ };
2445
+ };
2446
+ };
2447
+ };
2448
+ responses: {
2449
+ "201": {
2450
+ content: {
2451
+ "application/json": {
2452
+ schema: {
2453
+ type: string;
2454
+ required: string[];
2455
+ properties: {
2456
+ ok: {
2457
+ type: string;
2458
+ const: boolean;
2459
+ };
2460
+ };
2461
+ };
2462
+ };
2463
+ };
2464
+ };
2465
+ };
2466
+ };
2467
+ };
1296
2468
  "/v1/stats": {
1297
2469
  get: {
1298
2470
  operationId: string;