@codai/axiom-mcp 2.1.0 → 2.2.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.
package/spec/tools.json CHANGED
@@ -186,7 +186,8 @@
186
186
  "inline",
187
187
  "template",
188
188
  "cas",
189
- "ref"
189
+ "ref",
190
+ "patch"
190
191
  ]
191
192
  }
192
193
  },
@@ -260,6 +261,38 @@
260
261
  "type": "integer",
261
262
  "minimum": 0,
262
263
  "maximum": 9007199254740991
264
+ },
265
+ "preImage": {
266
+ "type": "array",
267
+ "items": {
268
+ "type": "object",
269
+ "properties": {
270
+ "path": {
271
+ "type": "string",
272
+ "minLength": 1,
273
+ "maxLength": 1024,
274
+ "description": "Relative POSIX path, NFC, no reserved names"
275
+ },
276
+ "sha256": {
277
+ "anyOf": [
278
+ {
279
+ "type": "string",
280
+ "pattern": "^[a-f0-9]{64}$",
281
+ "description": "Lowercase hex-encoded sha256"
282
+ },
283
+ {
284
+ "type": "string",
285
+ "const": "absent"
286
+ }
287
+ ]
288
+ }
289
+ },
290
+ "required": [
291
+ "path",
292
+ "sha256"
293
+ ],
294
+ "additionalProperties": false
295
+ }
263
296
  }
264
297
  },
265
298
  "required": [
@@ -385,8 +418,16 @@
385
418
  "type": "object",
386
419
  "properties": {
387
420
  "payloadType": {
388
- "type": "string",
389
- "const": "application/vnd.axiom.manifest+json"
421
+ "anyOf": [
422
+ {
423
+ "type": "string",
424
+ "const": "application/vnd.axiom.manifest+json"
425
+ },
426
+ {
427
+ "type": "string",
428
+ "const": "application/vnd.axiom.manifest-bound+json"
429
+ }
430
+ ]
390
431
  },
391
432
  "payload": {
392
433
  "type": "string",
@@ -592,18 +633,26 @@
592
633
  "ERR_PROVIDER_FAILED",
593
634
  "ERR_GUARD_TIMEOUT",
594
635
  "ERR_GUARD_OUTPUT",
636
+ "ERR_FACT_DISABLED",
595
637
  "ERR_SIGNATURE_MISSING",
596
638
  "ERR_SIGNATURE_INVALID",
639
+ "ERR_TRUST_STATE_CORRUPT",
597
640
  "ERR_ROLLBACK",
598
641
  "ERR_EMITTER_UNKNOWN",
599
642
  "ERR_TEMPLATE_UNKNOWN",
600
643
  "ERR_TEMPLATE_PARAMS",
644
+ "ERR_PATCH_FORMAT",
645
+ "ERR_PATCH_PREIMAGE",
646
+ "ERR_PATCH_NO_MATCH",
601
647
  "ERR_GIT_NOT_FOUND",
602
648
  "ERR_GIT_NOT_REPO",
603
649
  "ERR_GIT_DIRTY",
604
650
  "ERR_GIT_BRANCH_EXISTS",
605
651
  "ERR_GIT_BRANCH_INVALID",
606
652
  "ERR_GIT_FAILED",
653
+ "ERR_TASK_NOT_FOUND",
654
+ "ERR_TASK_CANCELLED",
655
+ "ERR_PLAN_SESSION_STATE",
607
656
  "ERR_REF_OFFLINE",
608
657
  "ERR_NET_DISABLED",
609
658
  "ERR_NET_DENIED",
@@ -638,207 +687,1401 @@
638
687
  "type": "string"
639
688
  }
640
689
  },
641
- "findings": {
690
+ "findings": {
691
+ "type": "array",
692
+ "items": {
693
+ "type": "object",
694
+ "properties": {
695
+ "id": {
696
+ "type": "string"
697
+ },
698
+ "message": {
699
+ "type": "string"
700
+ }
701
+ },
702
+ "required": [
703
+ "id",
704
+ "message"
705
+ ]
706
+ }
707
+ },
708
+ "ok": {
709
+ "type": "boolean"
710
+ },
711
+ "code": {
712
+ "type": "string",
713
+ "enum": [
714
+ "ERR_SIGNATURE_MISSING",
715
+ "ERR_SIGNATURE_INVALID"
716
+ ]
717
+ }
718
+ },
719
+ "required": [
720
+ "trustFile",
721
+ "keyids",
722
+ "findings",
723
+ "ok"
724
+ ]
725
+ }
726
+ },
727
+ "required": [
728
+ "ok",
729
+ "canonical",
730
+ "signed",
731
+ "missing",
732
+ "errors"
733
+ ]
734
+ }
735
+ },
736
+ {
737
+ "name": "axiom_check",
738
+ "description": "Evaluate the profile's predicates (plus the manifest's own checks) against the bundle. Repo facts are read from the root when one is available and the profile allows it. Verdict `error` means a provider could not run — never a silent pass.",
739
+ "riskClass": "READ",
740
+ "annotations": {
741
+ "readOnlyHint": true,
742
+ "destructiveHint": false,
743
+ "idempotentHint": true,
744
+ "openWorldHint": false
745
+ },
746
+ "inputSchema": {
747
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
748
+ "type": "object",
749
+ "properties": {
750
+ "bundle": {
751
+ "type": "object",
752
+ "propertyNames": {
753
+ "type": "string"
754
+ },
755
+ "additionalProperties": {},
756
+ "description": "ManifestBundle"
757
+ },
758
+ "profile": {
759
+ "description": "Profile name (builtin default|strict|permissive, or <root>/.axiom/profiles/<name>.json)",
760
+ "type": "string"
761
+ },
762
+ "root": {
763
+ "description": "Absolute repository root; must equal or lie inside an allowlisted --root",
764
+ "type": "string"
765
+ }
766
+ },
767
+ "required": [
768
+ "bundle"
769
+ ]
770
+ },
771
+ "outputSchema": {
772
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
773
+ "type": "object",
774
+ "properties": {
775
+ "apiVersion": {
776
+ "type": "string",
777
+ "const": "axiom.dev/v2"
778
+ },
779
+ "kind": {
780
+ "type": "string",
781
+ "const": "CheckReport"
782
+ },
783
+ "manifestDigest": {
784
+ "type": "string",
785
+ "pattern": "^sha256:[a-f0-9]{64}$",
786
+ "description": "sha256:<64 lowercase hex>"
787
+ },
788
+ "profile": {
789
+ "type": "string"
790
+ },
791
+ "verdict": {
792
+ "type": "string",
793
+ "enum": [
794
+ "pass",
795
+ "fail",
796
+ "error"
797
+ ]
798
+ },
799
+ "findings": {
800
+ "type": "array",
801
+ "items": {
802
+ "type": "object",
803
+ "properties": {
804
+ "id": {
805
+ "type": "string"
806
+ },
807
+ "severity": {
808
+ "type": "string",
809
+ "enum": [
810
+ "error",
811
+ "warn",
812
+ "info"
813
+ ]
814
+ },
815
+ "predicate": {
816
+ "type": "string"
817
+ },
818
+ "message": {
819
+ "type": "string"
820
+ },
821
+ "path": {
822
+ "type": "string",
823
+ "minLength": 1,
824
+ "maxLength": 1024,
825
+ "description": "Relative POSIX path, NFC, no reserved names"
826
+ },
827
+ "facts": {
828
+ "default": {},
829
+ "type": "object",
830
+ "propertyNames": {
831
+ "type": "string"
832
+ },
833
+ "additionalProperties": {
834
+ "$ref": "#/$defs/__schema0"
835
+ }
836
+ }
837
+ },
838
+ "required": [
839
+ "id",
840
+ "severity",
841
+ "predicate",
842
+ "message"
843
+ ],
844
+ "additionalProperties": false
845
+ }
846
+ },
847
+ "factsDigest": {
848
+ "type": "string",
849
+ "pattern": "^sha256:[a-f0-9]{64}$",
850
+ "description": "sha256:<64 lowercase hex>"
851
+ },
852
+ "durationMs": {
853
+ "type": "integer",
854
+ "minimum": 0,
855
+ "maximum": 9007199254740991
856
+ },
857
+ "providers": {
858
+ "type": "array",
859
+ "items": {
860
+ "type": "object",
861
+ "properties": {
862
+ "name": {
863
+ "type": "string"
864
+ },
865
+ "status": {
866
+ "type": "string",
867
+ "enum": [
868
+ "ok",
869
+ "skipped",
870
+ "error"
871
+ ]
872
+ },
873
+ "ms": {
874
+ "type": "integer",
875
+ "minimum": 0,
876
+ "maximum": 9007199254740991
877
+ }
878
+ },
879
+ "required": [
880
+ "name",
881
+ "status",
882
+ "ms"
883
+ ],
884
+ "additionalProperties": false
885
+ }
886
+ },
887
+ "preImage": {
888
+ "type": "string",
889
+ "enum": [
890
+ "verified",
891
+ "drifted",
892
+ "unverified"
893
+ ]
894
+ }
895
+ },
896
+ "required": [
897
+ "apiVersion",
898
+ "kind",
899
+ "manifestDigest",
900
+ "profile",
901
+ "verdict",
902
+ "findings",
903
+ "factsDigest",
904
+ "durationMs",
905
+ "providers"
906
+ ],
907
+ "additionalProperties": false,
908
+ "$defs": {
909
+ "__schema0": {
910
+ "anyOf": [
911
+ {
912
+ "type": "string"
913
+ },
914
+ {
915
+ "type": "number"
916
+ },
917
+ {
918
+ "type": "boolean"
919
+ },
920
+ {
921
+ "type": "null"
922
+ },
923
+ {
924
+ "type": "array",
925
+ "items": {
926
+ "$ref": "#/$defs/__schema0"
927
+ }
928
+ },
929
+ {
930
+ "type": "object",
931
+ "propertyNames": {
932
+ "type": "string"
933
+ },
934
+ "additionalProperties": {
935
+ "$ref": "#/$defs/__schema0"
936
+ }
937
+ }
938
+ ]
939
+ }
940
+ }
941
+ }
942
+ },
943
+ {
944
+ "name": "axiom_check_start",
945
+ "description": "Same evaluation as axiom_check, but returned immediately as a task so long `guard.external` suites (up to 15 min per guard) outlive the client's per-call timeout. Poll axiom_task_get with the returned taskId every pollIntervalMs until status is completed|failed|cancelled; the CheckReport is in `result`. Finished tasks are pollable for ttlMs, then forgotten. Tasks live in this server process only (D-24 — tool-level tasks, not the io.modelcontextprotocol/tasks wire extension).",
946
+ "riskClass": "READ",
947
+ "annotations": {
948
+ "readOnlyHint": true,
949
+ "destructiveHint": false,
950
+ "idempotentHint": true,
951
+ "openWorldHint": false
952
+ },
953
+ "inputSchema": {
954
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
955
+ "type": "object",
956
+ "properties": {
957
+ "bundle": {
958
+ "type": "object",
959
+ "propertyNames": {
960
+ "type": "string"
961
+ },
962
+ "additionalProperties": {},
963
+ "description": "ManifestBundle"
964
+ },
965
+ "profile": {
966
+ "description": "Profile name (builtin default|strict|permissive, or <root>/.axiom/profiles/<name>.json)",
967
+ "type": "string"
968
+ },
969
+ "root": {
970
+ "description": "Absolute repository root; must equal or lie inside an allowlisted --root",
971
+ "type": "string"
972
+ }
973
+ },
974
+ "required": [
975
+ "bundle"
976
+ ]
977
+ },
978
+ "outputSchema": {
979
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
980
+ "type": "object",
981
+ "properties": {
982
+ "taskId": {
983
+ "type": "string"
984
+ },
985
+ "tool": {
986
+ "type": "string"
987
+ },
988
+ "status": {
989
+ "type": "string",
990
+ "enum": [
991
+ "working",
992
+ "completed",
993
+ "failed",
994
+ "cancelled"
995
+ ]
996
+ },
997
+ "pollIntervalMs": {
998
+ "type": "integer",
999
+ "exclusiveMinimum": 0,
1000
+ "maximum": 9007199254740991
1001
+ },
1002
+ "ttlMs": {
1003
+ "type": "integer",
1004
+ "exclusiveMinimum": 0,
1005
+ "maximum": 9007199254740991
1006
+ },
1007
+ "elapsedMs": {
1008
+ "type": "integer",
1009
+ "minimum": 0,
1010
+ "maximum": 9007199254740991
1011
+ }
1012
+ },
1013
+ "required": [
1014
+ "taskId",
1015
+ "tool",
1016
+ "status",
1017
+ "pollIntervalMs",
1018
+ "ttlMs",
1019
+ "elapsedMs"
1020
+ ]
1021
+ }
1022
+ },
1023
+ {
1024
+ "name": "axiom_task_get",
1025
+ "description": "Status of a task created by axiom_check_start. While `working` only the descriptor is returned; once terminal, `result` (completed) or `error` (failed|cancelled) is attached. Unknown or expired taskId → ERR_TASK_NOT_FOUND.",
1026
+ "riskClass": "READ",
1027
+ "annotations": {
1028
+ "readOnlyHint": true,
1029
+ "destructiveHint": false,
1030
+ "idempotentHint": true,
1031
+ "openWorldHint": false
1032
+ },
1033
+ "inputSchema": {
1034
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "taskId": {
1038
+ "type": "string",
1039
+ "minLength": 1,
1040
+ "description": "taskId returned by axiom_check_start"
1041
+ }
1042
+ },
1043
+ "required": [
1044
+ "taskId"
1045
+ ]
1046
+ },
1047
+ "outputSchema": {
1048
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1049
+ "type": "object",
1050
+ "properties": {
1051
+ "taskId": {
1052
+ "type": "string"
1053
+ },
1054
+ "tool": {
1055
+ "type": "string"
1056
+ },
1057
+ "status": {
1058
+ "type": "string",
1059
+ "enum": [
1060
+ "working",
1061
+ "completed",
1062
+ "failed",
1063
+ "cancelled"
1064
+ ]
1065
+ },
1066
+ "pollIntervalMs": {
1067
+ "type": "integer",
1068
+ "exclusiveMinimum": 0,
1069
+ "maximum": 9007199254740991
1070
+ },
1071
+ "ttlMs": {
1072
+ "type": "integer",
1073
+ "exclusiveMinimum": 0,
1074
+ "maximum": 9007199254740991
1075
+ },
1076
+ "elapsedMs": {
1077
+ "type": "integer",
1078
+ "minimum": 0,
1079
+ "maximum": 9007199254740991
1080
+ },
1081
+ "result": {
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "apiVersion": {
1085
+ "type": "string",
1086
+ "const": "axiom.dev/v2"
1087
+ },
1088
+ "kind": {
1089
+ "type": "string",
1090
+ "const": "CheckReport"
1091
+ },
1092
+ "manifestDigest": {
1093
+ "type": "string",
1094
+ "pattern": "^sha256:[a-f0-9]{64}$",
1095
+ "description": "sha256:<64 lowercase hex>"
1096
+ },
1097
+ "profile": {
1098
+ "type": "string"
1099
+ },
1100
+ "verdict": {
1101
+ "type": "string",
1102
+ "enum": [
1103
+ "pass",
1104
+ "fail",
1105
+ "error"
1106
+ ]
1107
+ },
1108
+ "findings": {
1109
+ "type": "array",
1110
+ "items": {
1111
+ "type": "object",
1112
+ "properties": {
1113
+ "id": {
1114
+ "type": "string"
1115
+ },
1116
+ "severity": {
1117
+ "type": "string",
1118
+ "enum": [
1119
+ "error",
1120
+ "warn",
1121
+ "info"
1122
+ ]
1123
+ },
1124
+ "predicate": {
1125
+ "type": "string"
1126
+ },
1127
+ "message": {
1128
+ "type": "string"
1129
+ },
1130
+ "path": {
1131
+ "type": "string",
1132
+ "minLength": 1,
1133
+ "maxLength": 1024,
1134
+ "description": "Relative POSIX path, NFC, no reserved names"
1135
+ },
1136
+ "facts": {
1137
+ "default": {},
1138
+ "type": "object",
1139
+ "propertyNames": {
1140
+ "type": "string"
1141
+ },
1142
+ "additionalProperties": {
1143
+ "$ref": "#/$defs/__schema0"
1144
+ }
1145
+ }
1146
+ },
1147
+ "required": [
1148
+ "id",
1149
+ "severity",
1150
+ "predicate",
1151
+ "message"
1152
+ ],
1153
+ "additionalProperties": false
1154
+ }
1155
+ },
1156
+ "factsDigest": {
1157
+ "type": "string",
1158
+ "pattern": "^sha256:[a-f0-9]{64}$",
1159
+ "description": "sha256:<64 lowercase hex>"
1160
+ },
1161
+ "durationMs": {
1162
+ "type": "integer",
1163
+ "minimum": 0,
1164
+ "maximum": 9007199254740991
1165
+ },
1166
+ "providers": {
1167
+ "type": "array",
1168
+ "items": {
1169
+ "type": "object",
1170
+ "properties": {
1171
+ "name": {
1172
+ "type": "string"
1173
+ },
1174
+ "status": {
1175
+ "type": "string",
1176
+ "enum": [
1177
+ "ok",
1178
+ "skipped",
1179
+ "error"
1180
+ ]
1181
+ },
1182
+ "ms": {
1183
+ "type": "integer",
1184
+ "minimum": 0,
1185
+ "maximum": 9007199254740991
1186
+ }
1187
+ },
1188
+ "required": [
1189
+ "name",
1190
+ "status",
1191
+ "ms"
1192
+ ],
1193
+ "additionalProperties": false
1194
+ }
1195
+ },
1196
+ "preImage": {
1197
+ "type": "string",
1198
+ "enum": [
1199
+ "verified",
1200
+ "drifted",
1201
+ "unverified"
1202
+ ]
1203
+ }
1204
+ },
1205
+ "required": [
1206
+ "apiVersion",
1207
+ "kind",
1208
+ "manifestDigest",
1209
+ "profile",
1210
+ "verdict",
1211
+ "findings",
1212
+ "factsDigest",
1213
+ "durationMs",
1214
+ "providers"
1215
+ ],
1216
+ "additionalProperties": false
1217
+ },
1218
+ "error": {
1219
+ "type": "object",
1220
+ "properties": {
1221
+ "code": {
1222
+ "type": "string"
1223
+ },
1224
+ "message": {
1225
+ "type": "string"
1226
+ },
1227
+ "details": {
1228
+ "type": "object",
1229
+ "propertyNames": {
1230
+ "type": "string"
1231
+ },
1232
+ "additionalProperties": {}
1233
+ }
1234
+ },
1235
+ "required": [
1236
+ "code",
1237
+ "message"
1238
+ ]
1239
+ }
1240
+ },
1241
+ "required": [
1242
+ "taskId",
1243
+ "tool",
1244
+ "status",
1245
+ "pollIntervalMs",
1246
+ "ttlMs",
1247
+ "elapsedMs"
1248
+ ],
1249
+ "$defs": {
1250
+ "__schema0": {
1251
+ "anyOf": [
1252
+ {
1253
+ "type": "string"
1254
+ },
1255
+ {
1256
+ "type": "number"
1257
+ },
1258
+ {
1259
+ "type": "boolean"
1260
+ },
1261
+ {
1262
+ "type": "null"
1263
+ },
1264
+ {
1265
+ "type": "array",
1266
+ "items": {
1267
+ "$ref": "#/$defs/__schema0"
1268
+ }
1269
+ },
1270
+ {
1271
+ "type": "object",
1272
+ "propertyNames": {
1273
+ "type": "string"
1274
+ },
1275
+ "additionalProperties": {
1276
+ "$ref": "#/$defs/__schema0"
1277
+ }
1278
+ }
1279
+ ]
1280
+ }
1281
+ }
1282
+ }
1283
+ },
1284
+ {
1285
+ "name": "axiom_task_cancel",
1286
+ "description": "Abort a `working` task: every running guard process tree is killed and the task ends `cancelled` with error ERR_TASK_CANCELLED. Idempotent — a terminal task is returned unchanged.",
1287
+ "riskClass": "ACT",
1288
+ "annotations": {
1289
+ "readOnlyHint": false,
1290
+ "destructiveHint": false,
1291
+ "idempotentHint": true,
1292
+ "openWorldHint": false
1293
+ },
1294
+ "inputSchema": {
1295
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1296
+ "type": "object",
1297
+ "properties": {
1298
+ "taskId": {
1299
+ "type": "string",
1300
+ "minLength": 1,
1301
+ "description": "taskId returned by axiom_check_start"
1302
+ }
1303
+ },
1304
+ "required": [
1305
+ "taskId"
1306
+ ]
1307
+ },
1308
+ "outputSchema": {
1309
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1310
+ "type": "object",
1311
+ "properties": {
1312
+ "taskId": {
1313
+ "type": "string"
1314
+ },
1315
+ "tool": {
1316
+ "type": "string"
1317
+ },
1318
+ "status": {
1319
+ "type": "string",
1320
+ "enum": [
1321
+ "working",
1322
+ "completed",
1323
+ "failed",
1324
+ "cancelled"
1325
+ ]
1326
+ },
1327
+ "pollIntervalMs": {
1328
+ "type": "integer",
1329
+ "exclusiveMinimum": 0,
1330
+ "maximum": 9007199254740991
1331
+ },
1332
+ "ttlMs": {
1333
+ "type": "integer",
1334
+ "exclusiveMinimum": 0,
1335
+ "maximum": 9007199254740991
1336
+ },
1337
+ "elapsedMs": {
1338
+ "type": "integer",
1339
+ "minimum": 0,
1340
+ "maximum": 9007199254740991
1341
+ }
1342
+ },
1343
+ "required": [
1344
+ "taskId",
1345
+ "tool",
1346
+ "status",
1347
+ "pollIntervalMs",
1348
+ "ttlMs",
1349
+ "elapsedMs"
1350
+ ]
1351
+ }
1352
+ },
1353
+ {
1354
+ "name": "axiom_plan_begin",
1355
+ "description": "Start assembling a Plan whose JSON would exceed the 4 MiB per-call cap: send the header here (everything except `artifacts`), append artifacts in chunks with axiom_plan_add, then axiom_plan_seal compiles the whole. The sealed bundle's manifestDigest is identical to a one-shot axiom_plan_compile of the same Plan. Sessions are in-memory, expire after 30 min idle, and hold at most 2000 artifacts / 64 MiB.",
1356
+ "riskClass": "ACT",
1357
+ "annotations": {
1358
+ "readOnlyHint": false,
1359
+ "destructiveHint": false,
1360
+ "idempotentHint": true,
1361
+ "openWorldHint": false
1362
+ },
1363
+ "inputSchema": {
1364
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1365
+ "type": "object",
1366
+ "properties": {
1367
+ "name": {
1368
+ "type": "string",
1369
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
1370
+ },
1371
+ "intent": {
1372
+ "type": "string",
1373
+ "maxLength": 2000
1374
+ },
1375
+ "profile": {
1376
+ "default": "default",
1377
+ "type": "string",
1378
+ "minLength": 1
1379
+ },
1380
+ "capabilities": {
1381
+ "default": [],
1382
+ "type": "array",
1383
+ "items": {
1384
+ "type": "string",
1385
+ "enum": [
1386
+ "fs",
1387
+ "net",
1388
+ "secret",
1389
+ "ai",
1390
+ "compute",
1391
+ "git"
1392
+ ]
1393
+ }
1394
+ },
1395
+ "checks": {
1396
+ "default": [],
1397
+ "type": "array",
1398
+ "items": {
1399
+ "type": "object",
1400
+ "properties": {
1401
+ "id": {
1402
+ "type": "string",
1403
+ "minLength": 1,
1404
+ "maxLength": 128
1405
+ },
1406
+ "predicate": {
1407
+ "type": "string",
1408
+ "pattern": "^[a-z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*$"
1409
+ },
1410
+ "params": {
1411
+ "$ref": "#/$defs/__schema0"
1412
+ },
1413
+ "severity": {
1414
+ "default": "error",
1415
+ "type": "string",
1416
+ "enum": [
1417
+ "error",
1418
+ "warn",
1419
+ "info"
1420
+ ]
1421
+ }
1422
+ },
1423
+ "required": [
1424
+ "id",
1425
+ "predicate",
1426
+ "params"
1427
+ ],
1428
+ "additionalProperties": false
1429
+ }
1430
+ },
1431
+ "counter": {
1432
+ "type": "integer",
1433
+ "minimum": 0,
1434
+ "maximum": 9007199254740991
1435
+ },
1436
+ "metadata": {
1437
+ "default": {},
1438
+ "type": "object",
1439
+ "propertyNames": {
1440
+ "type": "string"
1441
+ },
1442
+ "additionalProperties": {
1443
+ "$ref": "#/$defs/__schema1"
1444
+ }
1445
+ }
1446
+ },
1447
+ "required": [
1448
+ "name",
1449
+ "intent"
1450
+ ],
1451
+ "$defs": {
1452
+ "__schema0": {
1453
+ "anyOf": [
1454
+ {
1455
+ "type": "string"
1456
+ },
1457
+ {
1458
+ "type": "number"
1459
+ },
1460
+ {
1461
+ "type": "boolean"
1462
+ },
1463
+ {
1464
+ "type": "null"
1465
+ },
1466
+ {
1467
+ "type": "array",
1468
+ "items": {
1469
+ "$ref": "#/$defs/__schema0"
1470
+ }
1471
+ },
1472
+ {
1473
+ "type": "object",
1474
+ "propertyNames": {
1475
+ "type": "string"
1476
+ },
1477
+ "additionalProperties": {
1478
+ "$ref": "#/$defs/__schema0"
1479
+ }
1480
+ }
1481
+ ]
1482
+ },
1483
+ "__schema1": {
1484
+ "anyOf": [
1485
+ {
1486
+ "type": "string"
1487
+ },
1488
+ {
1489
+ "type": "number"
1490
+ },
1491
+ {
1492
+ "type": "boolean"
1493
+ },
1494
+ {
1495
+ "type": "null"
1496
+ },
1497
+ {
1498
+ "type": "array",
1499
+ "items": {
1500
+ "$ref": "#/$defs/__schema1"
1501
+ }
1502
+ },
1503
+ {
1504
+ "type": "object",
1505
+ "propertyNames": {
1506
+ "type": "string"
1507
+ },
1508
+ "additionalProperties": {
1509
+ "$ref": "#/$defs/__schema1"
1510
+ }
1511
+ }
1512
+ ]
1513
+ }
1514
+ }
1515
+ },
1516
+ "outputSchema": {
1517
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1518
+ "type": "object",
1519
+ "properties": {
1520
+ "sessionId": {
1521
+ "type": "string"
1522
+ },
1523
+ "artifacts": {
1524
+ "type": "integer",
1525
+ "minimum": 0,
1526
+ "maximum": 9007199254740991
1527
+ },
1528
+ "bytes": {
1529
+ "type": "integer",
1530
+ "minimum": 0,
1531
+ "maximum": 9007199254740991
1532
+ },
1533
+ "limits": {
1534
+ "type": "object",
1535
+ "properties": {
1536
+ "maxArtifacts": {
1537
+ "type": "integer",
1538
+ "exclusiveMinimum": 0,
1539
+ "maximum": 9007199254740991
1540
+ },
1541
+ "maxBytes": {
1542
+ "type": "integer",
1543
+ "exclusiveMinimum": 0,
1544
+ "maximum": 9007199254740991
1545
+ }
1546
+ },
1547
+ "required": [
1548
+ "maxArtifacts",
1549
+ "maxBytes"
1550
+ ]
1551
+ },
1552
+ "ttlMs": {
1553
+ "type": "integer",
1554
+ "exclusiveMinimum": 0,
1555
+ "maximum": 9007199254740991
1556
+ }
1557
+ },
1558
+ "required": [
1559
+ "sessionId",
1560
+ "artifacts",
1561
+ "bytes",
1562
+ "limits",
1563
+ "ttlMs"
1564
+ ]
1565
+ }
1566
+ },
1567
+ {
1568
+ "name": "axiom_plan_add",
1569
+ "description": "Add a chunk of Plan artifacts (each ≤ 4 MiB call, inline content ≤ 256 KiB per artifact as in a Plan) to an open session. Paths must be unique across every chunk (ERR_INVALID_PLAN otherwise); a sealed or over-budget session is ERR_PLAN_SESSION_STATE.",
1570
+ "riskClass": "ACT",
1571
+ "annotations": {
1572
+ "readOnlyHint": false,
1573
+ "destructiveHint": false,
1574
+ "idempotentHint": true,
1575
+ "openWorldHint": false
1576
+ },
1577
+ "inputSchema": {
1578
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1579
+ "type": "object",
1580
+ "properties": {
1581
+ "sessionId": {
1582
+ "type": "string",
1583
+ "minLength": 1,
1584
+ "description": "sessionId returned by axiom_plan_begin"
1585
+ },
1586
+ "artifacts": {
1587
+ "minItems": 1,
1588
+ "type": "array",
1589
+ "items": {
1590
+ "type": "object",
1591
+ "propertyNames": {
1592
+ "type": "string"
1593
+ },
1594
+ "additionalProperties": {}
1595
+ },
1596
+ "description": "Plan artifacts, same shape as Plan.artifacts[]"
1597
+ }
1598
+ },
1599
+ "required": [
1600
+ "sessionId",
1601
+ "artifacts"
1602
+ ]
1603
+ },
1604
+ "outputSchema": {
1605
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1606
+ "type": "object",
1607
+ "properties": {
1608
+ "sessionId": {
1609
+ "type": "string"
1610
+ },
1611
+ "artifacts": {
1612
+ "type": "integer",
1613
+ "minimum": 0,
1614
+ "maximum": 9007199254740991
1615
+ },
1616
+ "bytes": {
1617
+ "type": "integer",
1618
+ "minimum": 0,
1619
+ "maximum": 9007199254740991
1620
+ },
1621
+ "limits": {
1622
+ "type": "object",
1623
+ "properties": {
1624
+ "maxArtifacts": {
1625
+ "type": "integer",
1626
+ "exclusiveMinimum": 0,
1627
+ "maximum": 9007199254740991
1628
+ },
1629
+ "maxBytes": {
1630
+ "type": "integer",
1631
+ "exclusiveMinimum": 0,
1632
+ "maximum": 9007199254740991
1633
+ }
1634
+ },
1635
+ "required": [
1636
+ "maxArtifacts",
1637
+ "maxBytes"
1638
+ ]
1639
+ },
1640
+ "ttlMs": {
1641
+ "type": "integer",
1642
+ "exclusiveMinimum": 0,
1643
+ "maximum": 9007199254740991
1644
+ }
1645
+ },
1646
+ "required": [
1647
+ "sessionId",
1648
+ "artifacts",
1649
+ "bytes",
1650
+ "limits",
1651
+ "ttlMs"
1652
+ ]
1653
+ }
1654
+ },
1655
+ {
1656
+ "name": "axiom_plan_seal",
1657
+ "description": "Assemble the session's header + every added artifact into one Plan and compile it exactly like axiom_plan_compile (same options, same digest). The session is consumed whether or not compilation succeeds. Bundles whose inline blobs exceed 4 MiB need `store: cas` (and therefore a root).",
1658
+ "riskClass": "ACT",
1659
+ "annotations": {
1660
+ "readOnlyHint": false,
1661
+ "destructiveHint": false,
1662
+ "idempotentHint": true,
1663
+ "openWorldHint": false
1664
+ },
1665
+ "inputSchema": {
1666
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1667
+ "type": "object",
1668
+ "properties": {
1669
+ "sessionId": {
1670
+ "type": "string",
1671
+ "minLength": 1,
1672
+ "description": "sessionId returned by axiom_plan_begin"
1673
+ },
1674
+ "store": {
1675
+ "description": "Blob transport; default inline",
1676
+ "type": "string",
1677
+ "enum": [
1678
+ "inline",
1679
+ "cas"
1680
+ ]
1681
+ },
1682
+ "root": {
1683
+ "description": "Absolute repository root; must equal or lie inside an allowlisted --root",
1684
+ "type": "string"
1685
+ }
1686
+ },
1687
+ "required": [
1688
+ "sessionId"
1689
+ ]
1690
+ },
1691
+ "outputSchema": {
1692
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1693
+ "type": "object",
1694
+ "properties": {
1695
+ "manifest": {
1696
+ "type": "object",
1697
+ "properties": {
1698
+ "apiVersion": {
1699
+ "type": "string",
1700
+ "const": "axiom.dev/v2"
1701
+ },
1702
+ "kind": {
1703
+ "type": "string",
1704
+ "const": "Manifest"
1705
+ },
1706
+ "name": {
1707
+ "type": "string",
1708
+ "pattern": "^[a-z0-9][a-z0-9-]{0,63}$"
1709
+ },
1710
+ "profile": {
1711
+ "type": "string",
1712
+ "minLength": 1
1713
+ },
1714
+ "planDigest": {
1715
+ "type": "string",
1716
+ "pattern": "^sha256:[a-f0-9]{64}$",
1717
+ "description": "sha256:<64 lowercase hex>"
1718
+ },
1719
+ "artifacts": {
1720
+ "minItems": 1,
1721
+ "maxItems": 2000,
1722
+ "type": "array",
1723
+ "items": {
1724
+ "type": "object",
1725
+ "properties": {
1726
+ "path": {
1727
+ "type": "string",
1728
+ "minLength": 1,
1729
+ "maxLength": 1024,
1730
+ "description": "Relative POSIX path, NFC, no reserved names"
1731
+ },
1732
+ "op": {
1733
+ "type": "string",
1734
+ "enum": [
1735
+ "create",
1736
+ "overwrite",
1737
+ "delete"
1738
+ ]
1739
+ },
1740
+ "mode": {
1741
+ "type": "string",
1742
+ "enum": [
1743
+ "0644",
1744
+ "0755"
1745
+ ]
1746
+ },
1747
+ "digest": {
1748
+ "type": "object",
1749
+ "properties": {
1750
+ "sha256": {
1751
+ "type": "string",
1752
+ "pattern": "^[a-f0-9]{64}$",
1753
+ "description": "Lowercase hex-encoded sha256"
1754
+ }
1755
+ },
1756
+ "required": [
1757
+ "sha256"
1758
+ ],
1759
+ "additionalProperties": false
1760
+ },
1761
+ "bytes": {
1762
+ "type": "integer",
1763
+ "minimum": 0,
1764
+ "maximum": 9007199254740991
1765
+ },
1766
+ "origin": {
1767
+ "type": "string",
1768
+ "enum": [
1769
+ "inline",
1770
+ "template",
1771
+ "cas",
1772
+ "ref",
1773
+ "patch"
1774
+ ]
1775
+ }
1776
+ },
1777
+ "required": [
1778
+ "path",
1779
+ "op",
1780
+ "mode"
1781
+ ],
1782
+ "additionalProperties": false
1783
+ }
1784
+ },
1785
+ "checks": {
1786
+ "type": "array",
1787
+ "items": {
1788
+ "type": "object",
1789
+ "properties": {
1790
+ "id": {
1791
+ "type": "string",
1792
+ "minLength": 1,
1793
+ "maxLength": 128
1794
+ },
1795
+ "predicate": {
1796
+ "type": "string",
1797
+ "pattern": "^[a-z][a-zA-Z0-9]*\\.[a-zA-Z][a-zA-Z0-9]*$"
1798
+ },
1799
+ "params": {
1800
+ "$ref": "#/$defs/__schema0"
1801
+ },
1802
+ "severity": {
1803
+ "default": "error",
1804
+ "type": "string",
1805
+ "enum": [
1806
+ "error",
1807
+ "warn",
1808
+ "info"
1809
+ ]
1810
+ }
1811
+ },
1812
+ "required": [
1813
+ "id",
1814
+ "predicate",
1815
+ "params"
1816
+ ],
1817
+ "additionalProperties": false
1818
+ }
1819
+ },
1820
+ "toolchain": {
1821
+ "type": "object",
1822
+ "properties": {
1823
+ "axiom": {
1824
+ "type": "string",
1825
+ "minLength": 1
1826
+ },
1827
+ "emitters": {
1828
+ "type": "object",
1829
+ "propertyNames": {
1830
+ "type": "string"
1831
+ },
1832
+ "additionalProperties": {
1833
+ "type": "string"
1834
+ }
1835
+ }
1836
+ },
1837
+ "required": [
1838
+ "axiom",
1839
+ "emitters"
1840
+ ],
1841
+ "additionalProperties": false
1842
+ },
1843
+ "counter": {
1844
+ "type": "integer",
1845
+ "minimum": 0,
1846
+ "maximum": 9007199254740991
1847
+ },
1848
+ "preImage": {
1849
+ "type": "array",
1850
+ "items": {
1851
+ "type": "object",
1852
+ "properties": {
1853
+ "path": {
1854
+ "type": "string",
1855
+ "minLength": 1,
1856
+ "maxLength": 1024,
1857
+ "description": "Relative POSIX path, NFC, no reserved names"
1858
+ },
1859
+ "sha256": {
1860
+ "anyOf": [
1861
+ {
1862
+ "type": "string",
1863
+ "pattern": "^[a-f0-9]{64}$",
1864
+ "description": "Lowercase hex-encoded sha256"
1865
+ },
1866
+ {
1867
+ "type": "string",
1868
+ "const": "absent"
1869
+ }
1870
+ ]
1871
+ }
1872
+ },
1873
+ "required": [
1874
+ "path",
1875
+ "sha256"
1876
+ ],
1877
+ "additionalProperties": false
1878
+ }
1879
+ }
1880
+ },
1881
+ "required": [
1882
+ "apiVersion",
1883
+ "kind",
1884
+ "name",
1885
+ "profile",
1886
+ "planDigest",
1887
+ "artifacts",
1888
+ "checks",
1889
+ "toolchain"
1890
+ ],
1891
+ "additionalProperties": false
1892
+ },
1893
+ "manifestDigest": {
1894
+ "type": "string",
1895
+ "pattern": "^sha256:[a-f0-9]{64}$",
1896
+ "description": "sha256:<64 lowercase hex>"
1897
+ },
1898
+ "attestation": {
1899
+ "type": "object",
1900
+ "properties": {
1901
+ "_type": {
1902
+ "type": "string",
1903
+ "const": "https://in-toto.io/Statement/v1"
1904
+ },
1905
+ "subject": {
1906
+ "minItems": 1,
1907
+ "type": "array",
1908
+ "items": {
1909
+ "type": "object",
1910
+ "properties": {
1911
+ "name": {
1912
+ "type": "string"
1913
+ },
1914
+ "digest": {
1915
+ "type": "object",
1916
+ "properties": {
1917
+ "sha256": {
1918
+ "type": "string",
1919
+ "pattern": "^[a-f0-9]{64}$",
1920
+ "description": "Lowercase hex-encoded sha256"
1921
+ }
1922
+ },
1923
+ "required": [
1924
+ "sha256"
1925
+ ],
1926
+ "additionalProperties": false
1927
+ }
1928
+ },
1929
+ "required": [
1930
+ "name",
1931
+ "digest"
1932
+ ],
1933
+ "additionalProperties": false
1934
+ }
1935
+ },
1936
+ "predicateType": {
1937
+ "type": "string",
1938
+ "format": "uri"
1939
+ },
1940
+ "predicate": {
1941
+ "type": "object",
1942
+ "propertyNames": {
1943
+ "type": "string"
1944
+ },
1945
+ "additionalProperties": {}
1946
+ }
1947
+ },
1948
+ "required": [
1949
+ "_type",
1950
+ "subject",
1951
+ "predicateType",
1952
+ "predicate"
1953
+ ],
1954
+ "additionalProperties": false
1955
+ },
1956
+ "envelope": {
1957
+ "type": "object",
1958
+ "properties": {
1959
+ "payloadType": {
1960
+ "type": "string",
1961
+ "const": "application/vnd.in-toto+json"
1962
+ },
1963
+ "payload": {
1964
+ "type": "string",
1965
+ "format": "base64",
1966
+ "contentEncoding": "base64",
1967
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"
1968
+ },
1969
+ "signatures": {
642
1970
  "type": "array",
643
1971
  "items": {
644
1972
  "type": "object",
645
1973
  "properties": {
646
- "id": {
1974
+ "keyid": {
647
1975
  "type": "string"
648
1976
  },
649
- "message": {
650
- "type": "string"
1977
+ "sig": {
1978
+ "type": "string",
1979
+ "format": "base64",
1980
+ "contentEncoding": "base64",
1981
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"
651
1982
  }
652
1983
  },
653
1984
  "required": [
654
- "id",
655
- "message"
656
- ]
1985
+ "sig"
1986
+ ],
1987
+ "additionalProperties": false
657
1988
  }
658
- },
659
- "ok": {
660
- "type": "boolean"
661
1989
  }
662
1990
  },
663
1991
  "required": [
664
- "trustFile",
665
- "keyids",
666
- "findings",
667
- "ok"
668
- ]
669
- }
670
- },
671
- "required": [
672
- "ok",
673
- "canonical",
674
- "signed",
675
- "missing",
676
- "errors"
677
- ]
678
- }
679
- },
680
- {
681
- "name": "axiom_check",
682
- "description": "Evaluate the profile's predicates (plus the manifest's own checks) against the bundle. Repo facts are read from the root when one is available and the profile allows it. Verdict `error` means a provider could not run — never a silent pass.",
683
- "riskClass": "READ",
684
- "annotations": {
685
- "readOnlyHint": true,
686
- "destructiveHint": false,
687
- "idempotentHint": true,
688
- "openWorldHint": false
689
- },
690
- "inputSchema": {
691
- "$schema": "https://json-schema.org/draft/2020-12/schema",
692
- "type": "object",
693
- "properties": {
694
- "bundle": {
695
- "type": "object",
696
- "propertyNames": {
697
- "type": "string"
698
- },
699
- "additionalProperties": {},
700
- "description": "ManifestBundle"
701
- },
702
- "profile": {
703
- "description": "Profile name (builtin default|strict|permissive, or <root>/.axiom/profiles/<name>.json)",
704
- "type": "string"
705
- },
706
- "root": {
707
- "description": "Absolute repository root; must equal or lie inside an allowlisted --root",
708
- "type": "string"
709
- }
710
- },
711
- "required": [
712
- "bundle"
713
- ]
714
- },
715
- "outputSchema": {
716
- "$schema": "https://json-schema.org/draft/2020-12/schema",
717
- "type": "object",
718
- "properties": {
719
- "apiVersion": {
720
- "type": "string",
721
- "const": "axiom.dev/v2"
722
- },
723
- "kind": {
724
- "type": "string",
725
- "const": "CheckReport"
726
- },
727
- "manifestDigest": {
728
- "type": "string",
729
- "pattern": "^sha256:[a-f0-9]{64}$",
730
- "description": "sha256:<64 lowercase hex>"
731
- },
732
- "profile": {
733
- "type": "string"
734
- },
735
- "verdict": {
736
- "type": "string",
737
- "enum": [
738
- "pass",
739
- "fail",
740
- "error"
741
- ]
1992
+ "payloadType",
1993
+ "payload",
1994
+ "signatures"
1995
+ ],
1996
+ "additionalProperties": false
742
1997
  },
743
- "findings": {
1998
+ "signatures": {
744
1999
  "type": "array",
745
2000
  "items": {
746
2001
  "type": "object",
747
2002
  "properties": {
748
- "id": {
749
- "type": "string"
750
- },
751
- "severity": {
752
- "type": "string",
753
- "enum": [
754
- "error",
755
- "warn",
756
- "info"
2003
+ "payloadType": {
2004
+ "anyOf": [
2005
+ {
2006
+ "type": "string",
2007
+ "const": "application/vnd.axiom.manifest+json"
2008
+ },
2009
+ {
2010
+ "type": "string",
2011
+ "const": "application/vnd.axiom.manifest-bound+json"
2012
+ }
757
2013
  ]
758
2014
  },
759
- "predicate": {
760
- "type": "string"
761
- },
762
- "message": {
763
- "type": "string"
764
- },
765
- "path": {
2015
+ "payload": {
766
2016
  "type": "string",
767
- "minLength": 1,
768
- "maxLength": 1024,
769
- "description": "Relative POSIX path, NFC, no reserved names"
2017
+ "format": "base64",
2018
+ "contentEncoding": "base64",
2019
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"
770
2020
  },
771
- "facts": {
772
- "default": {},
773
- "type": "object",
774
- "propertyNames": {
775
- "type": "string"
776
- },
777
- "additionalProperties": {
778
- "$ref": "#/$defs/__schema0"
2021
+ "signatures": {
2022
+ "minItems": 1,
2023
+ "type": "array",
2024
+ "items": {
2025
+ "type": "object",
2026
+ "properties": {
2027
+ "keyid": {
2028
+ "type": "string"
2029
+ },
2030
+ "sig": {
2031
+ "type": "string",
2032
+ "format": "base64",
2033
+ "contentEncoding": "base64",
2034
+ "pattern": "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$"
2035
+ }
2036
+ },
2037
+ "required": [
2038
+ "sig"
2039
+ ],
2040
+ "additionalProperties": false
779
2041
  }
780
2042
  }
781
2043
  },
782
2044
  "required": [
783
- "id",
784
- "severity",
785
- "predicate",
786
- "message"
2045
+ "payloadType",
2046
+ "payload",
2047
+ "signatures"
787
2048
  ],
788
2049
  "additionalProperties": false
789
2050
  }
790
2051
  },
791
- "factsDigest": {
792
- "type": "string",
793
- "pattern": "^sha256:[a-f0-9]{64}$",
794
- "description": "sha256:<64 lowercase hex>"
795
- },
796
- "durationMs": {
797
- "type": "integer",
798
- "minimum": 0,
799
- "maximum": 9007199254740991
800
- },
801
- "providers": {
802
- "type": "array",
803
- "items": {
2052
+ "blobs": {
2053
+ "default": {},
2054
+ "type": "object",
2055
+ "propertyNames": {
2056
+ "type": "string",
2057
+ "pattern": "^sha256:[a-f0-9]{64}$",
2058
+ "description": "sha256:<64 lowercase hex>"
2059
+ },
2060
+ "additionalProperties": {
804
2061
  "type": "object",
805
2062
  "properties": {
806
- "name": {
807
- "type": "string"
808
- },
809
- "status": {
2063
+ "encoding": {
810
2064
  "type": "string",
811
2065
  "enum": [
812
- "ok",
813
- "skipped",
814
- "error"
2066
+ "utf8",
2067
+ "base64"
815
2068
  ]
816
2069
  },
817
- "ms": {
818
- "type": "integer",
819
- "minimum": 0,
820
- "maximum": 9007199254740991
2070
+ "data": {
2071
+ "type": "string"
821
2072
  }
822
2073
  },
823
2074
  "required": [
824
- "name",
825
- "status",
826
- "ms"
2075
+ "encoding",
2076
+ "data"
827
2077
  ],
828
2078
  "additionalProperties": false
829
2079
  }
830
2080
  }
831
2081
  },
832
2082
  "required": [
833
- "apiVersion",
834
- "kind",
835
- "manifestDigest",
836
- "profile",
837
- "verdict",
838
- "findings",
839
- "factsDigest",
840
- "durationMs",
841
- "providers"
2083
+ "manifest",
2084
+ "manifestDigest"
842
2085
  ],
843
2086
  "additionalProperties": false,
844
2087
  "$defs": {
@@ -1027,6 +2270,15 @@
1027
2270
  ],
1028
2271
  "additionalProperties": false
1029
2272
  },
2273
+ "drifted": {
2274
+ "type": "array",
2275
+ "items": {
2276
+ "type": "string",
2277
+ "minLength": 1,
2278
+ "maxLength": 1024,
2279
+ "description": "Relative POSIX path, NFC, no reserved names"
2280
+ }
2281
+ },
1030
2282
  "error": {
1031
2283
  "type": "object",
1032
2284
  "properties": {
@@ -1067,18 +2319,26 @@
1067
2319
  "ERR_PROVIDER_FAILED",
1068
2320
  "ERR_GUARD_TIMEOUT",
1069
2321
  "ERR_GUARD_OUTPUT",
2322
+ "ERR_FACT_DISABLED",
1070
2323
  "ERR_SIGNATURE_MISSING",
1071
2324
  "ERR_SIGNATURE_INVALID",
2325
+ "ERR_TRUST_STATE_CORRUPT",
1072
2326
  "ERR_ROLLBACK",
1073
2327
  "ERR_EMITTER_UNKNOWN",
1074
2328
  "ERR_TEMPLATE_UNKNOWN",
1075
2329
  "ERR_TEMPLATE_PARAMS",
2330
+ "ERR_PATCH_FORMAT",
2331
+ "ERR_PATCH_PREIMAGE",
2332
+ "ERR_PATCH_NO_MATCH",
1076
2333
  "ERR_GIT_NOT_FOUND",
1077
2334
  "ERR_GIT_NOT_REPO",
1078
2335
  "ERR_GIT_DIRTY",
1079
2336
  "ERR_GIT_BRANCH_EXISTS",
1080
2337
  "ERR_GIT_BRANCH_INVALID",
1081
2338
  "ERR_GIT_FAILED",
2339
+ "ERR_TASK_NOT_FOUND",
2340
+ "ERR_TASK_CANCELLED",
2341
+ "ERR_PLAN_SESSION_STATE",
1082
2342
  "ERR_REF_OFFLINE",
1083
2343
  "ERR_NET_DISABLED",
1084
2344
  "ERR_NET_DENIED",
@@ -1288,6 +2548,15 @@
1288
2548
  ],
1289
2549
  "additionalProperties": false
1290
2550
  },
2551
+ "drifted": {
2552
+ "type": "array",
2553
+ "items": {
2554
+ "type": "string",
2555
+ "minLength": 1,
2556
+ "maxLength": 1024,
2557
+ "description": "Relative POSIX path, NFC, no reserved names"
2558
+ }
2559
+ },
1291
2560
  "error": {
1292
2561
  "type": "object",
1293
2562
  "properties": {
@@ -1328,18 +2597,26 @@
1328
2597
  "ERR_PROVIDER_FAILED",
1329
2598
  "ERR_GUARD_TIMEOUT",
1330
2599
  "ERR_GUARD_OUTPUT",
2600
+ "ERR_FACT_DISABLED",
1331
2601
  "ERR_SIGNATURE_MISSING",
1332
2602
  "ERR_SIGNATURE_INVALID",
2603
+ "ERR_TRUST_STATE_CORRUPT",
1333
2604
  "ERR_ROLLBACK",
1334
2605
  "ERR_EMITTER_UNKNOWN",
1335
2606
  "ERR_TEMPLATE_UNKNOWN",
1336
2607
  "ERR_TEMPLATE_PARAMS",
2608
+ "ERR_PATCH_FORMAT",
2609
+ "ERR_PATCH_PREIMAGE",
2610
+ "ERR_PATCH_NO_MATCH",
1337
2611
  "ERR_GIT_NOT_FOUND",
1338
2612
  "ERR_GIT_NOT_REPO",
1339
2613
  "ERR_GIT_DIRTY",
1340
2614
  "ERR_GIT_BRANCH_EXISTS",
1341
2615
  "ERR_GIT_BRANCH_INVALID",
1342
2616
  "ERR_GIT_FAILED",
2617
+ "ERR_TASK_NOT_FOUND",
2618
+ "ERR_TASK_CANCELLED",
2619
+ "ERR_PLAN_SESSION_STATE",
1343
2620
  "ERR_REF_OFFLINE",
1344
2621
  "ERR_NET_DISABLED",
1345
2622
  "ERR_NET_DENIED",
@@ -1751,7 +3028,49 @@
1751
3028
  "template"
1752
3029
  ],
1753
3030
  "additionalProperties": false,
1754
- "description": "v2.1"
3031
+ "description": "template source rendered by a registered emitter at compile time"
3032
+ },
3033
+ {
3034
+ "type": "object",
3035
+ "properties": {
3036
+ "type": {
3037
+ "type": "string",
3038
+ "const": "patch"
3039
+ },
3040
+ "format": {
3041
+ "type": "string",
3042
+ "enum": [
3043
+ "unified",
3044
+ "v4a",
3045
+ "search-replace"
3046
+ ]
3047
+ },
3048
+ "preImage": {
3049
+ "anyOf": [
3050
+ {
3051
+ "type": "string",
3052
+ "pattern": "^sha256:[a-f0-9]{64}$",
3053
+ "description": "sha256:<64 lowercase hex>"
3054
+ },
3055
+ {
3056
+ "type": "string",
3057
+ "const": "absent"
3058
+ }
3059
+ ]
3060
+ },
3061
+ "body": {
3062
+ "type": "string",
3063
+ "maxLength": 262144
3064
+ }
3065
+ },
3066
+ "required": [
3067
+ "type",
3068
+ "format",
3069
+ "preImage",
3070
+ "body"
3071
+ ],
3072
+ "additionalProperties": false,
3073
+ "description": "patch applied at compile time to the pre-image named by its digest"
1755
3074
  }
1756
3075
  ]
1757
3076
  }
@@ -1872,18 +3191,26 @@
1872
3191
  "ERR_PROVIDER_FAILED",
1873
3192
  "ERR_GUARD_TIMEOUT",
1874
3193
  "ERR_GUARD_OUTPUT",
3194
+ "ERR_FACT_DISABLED",
1875
3195
  "ERR_SIGNATURE_MISSING",
1876
3196
  "ERR_SIGNATURE_INVALID",
3197
+ "ERR_TRUST_STATE_CORRUPT",
1877
3198
  "ERR_ROLLBACK",
1878
3199
  "ERR_EMITTER_UNKNOWN",
1879
3200
  "ERR_TEMPLATE_UNKNOWN",
1880
3201
  "ERR_TEMPLATE_PARAMS",
3202
+ "ERR_PATCH_FORMAT",
3203
+ "ERR_PATCH_PREIMAGE",
3204
+ "ERR_PATCH_NO_MATCH",
1881
3205
  "ERR_GIT_NOT_FOUND",
1882
3206
  "ERR_GIT_NOT_REPO",
1883
3207
  "ERR_GIT_DIRTY",
1884
3208
  "ERR_GIT_BRANCH_EXISTS",
1885
3209
  "ERR_GIT_BRANCH_INVALID",
1886
3210
  "ERR_GIT_FAILED",
3211
+ "ERR_TASK_NOT_FOUND",
3212
+ "ERR_TASK_CANCELLED",
3213
+ "ERR_PLAN_SESSION_STATE",
1887
3214
  "ERR_REF_OFFLINE",
1888
3215
  "ERR_NET_DISABLED",
1889
3216
  "ERR_NET_DENIED",