@cleocode/contracts 2026.5.2 → 2026.5.4

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 (46) hide show
  1. package/dist/index.d.ts +5 -4
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lafs.d.ts +16 -143
  5. package/dist/lafs.d.ts.map +1 -1
  6. package/dist/lafs.js +11 -4
  7. package/dist/lafs.js.map +1 -1
  8. package/dist/operations/conduit.d.ts +15 -3
  9. package/dist/operations/conduit.d.ts.map +1 -1
  10. package/dist/operations/docs.d.ts +18 -15
  11. package/dist/operations/docs.d.ts.map +1 -1
  12. package/dist/operations/index.d.ts +5 -0
  13. package/dist/operations/index.d.ts.map +1 -1
  14. package/dist/operations/index.js +5 -0
  15. package/dist/operations/index.js.map +1 -1
  16. package/dist/operations/lifecycle.d.ts +3 -4
  17. package/dist/operations/lifecycle.d.ts.map +1 -1
  18. package/dist/operations/nexus.d.ts +341 -34
  19. package/dist/operations/nexus.d.ts.map +1 -1
  20. package/dist/operations/session.d.ts +201 -9
  21. package/dist/operations/session.d.ts.map +1 -1
  22. package/dist/operations/tasks.d.ts +381 -35
  23. package/dist/operations/tasks.d.ts.map +1 -1
  24. package/dist/operations/tasks.js +4 -3
  25. package/dist/operations/tasks.js.map +1 -1
  26. package/dist/tasks.d.ts +357 -0
  27. package/dist/tasks.d.ts.map +1 -0
  28. package/dist/tasks.js +18 -0
  29. package/dist/tasks.js.map +1 -0
  30. package/package.json +4 -2
  31. package/schemas/acceptance-gate.schema.json +484 -5
  32. package/schemas/attachment.schema.json +210 -5
  33. package/schemas/gate-result-details.schema.json +174 -5
  34. package/schemas/gate-result.schema.json +236 -5
  35. package/schemas/task-evidence.schema.json +199 -5
  36. package/schemas/task.schema.json +568 -5
  37. package/src/index.ts +37 -7
  38. package/src/lafs.ts +34 -162
  39. package/src/operations/conduit.ts +16 -3
  40. package/src/operations/docs.ts +22 -16
  41. package/src/operations/index.ts +5 -0
  42. package/src/operations/lifecycle.ts +3 -5
  43. package/src/operations/nexus.ts +355 -34
  44. package/src/operations/session.ts +213 -10
  45. package/src/operations/tasks.ts +377 -36
  46. package/src/tasks.ts +413 -0
@@ -1,9 +1,178 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "GateResultDetails",
4
4
  "description": "Kind-specific detail payload for a GateResult — discriminated by kind",
5
- "$ref": "#/definitions/GateResultDetails",
6
- "definitions": {
7
- "GateResultDetails": {}
8
- }
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "properties": {
9
+ "kind": {
10
+ "type": "string",
11
+ "const": "test"
12
+ },
13
+ "exitCode": {
14
+ "type": "integer",
15
+ "minimum": -9007199254740991,
16
+ "maximum": 9007199254740991
17
+ },
18
+ "stdout": {
19
+ "type": "string"
20
+ },
21
+ "stderr": {
22
+ "type": "string"
23
+ },
24
+ "duration": {
25
+ "type": "number",
26
+ "minimum": 0
27
+ }
28
+ },
29
+ "required": [
30
+ "kind",
31
+ "exitCode",
32
+ "stdout",
33
+ "stderr",
34
+ "duration"
35
+ ],
36
+ "additionalProperties": false
37
+ },
38
+ {
39
+ "type": "object",
40
+ "properties": {
41
+ "kind": {
42
+ "type": "string",
43
+ "const": "file"
44
+ },
45
+ "path": {
46
+ "type": "string",
47
+ "minLength": 1
48
+ },
49
+ "passedAssertions": {
50
+ "type": "array",
51
+ "items": {
52
+ "type": "string"
53
+ }
54
+ },
55
+ "failedAssertions": {
56
+ "type": "array",
57
+ "items": {
58
+ "type": "string"
59
+ }
60
+ }
61
+ },
62
+ "required": [
63
+ "kind",
64
+ "path",
65
+ "passedAssertions",
66
+ "failedAssertions"
67
+ ],
68
+ "additionalProperties": false
69
+ },
70
+ {
71
+ "type": "object",
72
+ "properties": {
73
+ "kind": {
74
+ "type": "string",
75
+ "const": "command"
76
+ },
77
+ "cmd": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ },
81
+ "exitCode": {
82
+ "type": "integer",
83
+ "minimum": -9007199254740991,
84
+ "maximum": 9007199254740991
85
+ },
86
+ "stdout": {
87
+ "type": "string"
88
+ }
89
+ },
90
+ "required": [
91
+ "kind",
92
+ "cmd",
93
+ "exitCode",
94
+ "stdout"
95
+ ],
96
+ "additionalProperties": false
97
+ },
98
+ {
99
+ "type": "object",
100
+ "properties": {
101
+ "kind": {
102
+ "type": "string",
103
+ "const": "lint"
104
+ },
105
+ "tool": {
106
+ "type": "string",
107
+ "minLength": 1
108
+ },
109
+ "warnings": {
110
+ "type": "integer",
111
+ "minimum": 0,
112
+ "maximum": 9007199254740991
113
+ },
114
+ "errors": {
115
+ "type": "integer",
116
+ "minimum": 0,
117
+ "maximum": 9007199254740991
118
+ }
119
+ },
120
+ "required": [
121
+ "kind",
122
+ "tool",
123
+ "warnings",
124
+ "errors"
125
+ ],
126
+ "additionalProperties": false
127
+ },
128
+ {
129
+ "type": "object",
130
+ "properties": {
131
+ "kind": {
132
+ "type": "string",
133
+ "const": "http"
134
+ },
135
+ "url": {
136
+ "type": "string"
137
+ },
138
+ "status": {
139
+ "type": "integer",
140
+ "minimum": 100,
141
+ "maximum": 599
142
+ },
143
+ "body": {
144
+ "type": "string"
145
+ }
146
+ },
147
+ "required": [
148
+ "kind",
149
+ "url",
150
+ "status",
151
+ "body"
152
+ ],
153
+ "additionalProperties": false
154
+ },
155
+ {
156
+ "type": "object",
157
+ "properties": {
158
+ "kind": {
159
+ "type": "string",
160
+ "const": "manual"
161
+ },
162
+ "prompt": {
163
+ "type": "string",
164
+ "minLength": 1
165
+ },
166
+ "accepted": {
167
+ "type": "boolean"
168
+ }
169
+ },
170
+ "required": [
171
+ "kind",
172
+ "prompt",
173
+ "accepted"
174
+ ],
175
+ "additionalProperties": false
176
+ }
177
+ ]
9
178
  }
@@ -1,9 +1,240 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "GateResult",
4
4
  "description": "Result of running one acceptance gate — persisted to lifecycle_gate_results",
5
- "$ref": "#/definitions/GateResult",
6
- "definitions": {
7
- "GateResult": {}
8
- }
5
+ "type": "object",
6
+ "properties": {
7
+ "index": {
8
+ "type": "integer",
9
+ "minimum": 0,
10
+ "maximum": 9007199254740991
11
+ },
12
+ "req": {
13
+ "type": "string"
14
+ },
15
+ "kind": {
16
+ "type": "string",
17
+ "enum": [
18
+ "test",
19
+ "file",
20
+ "command",
21
+ "lint",
22
+ "http",
23
+ "manual"
24
+ ]
25
+ },
26
+ "result": {
27
+ "type": "string",
28
+ "enum": [
29
+ "pass",
30
+ "fail",
31
+ "warn",
32
+ "skipped",
33
+ "error"
34
+ ]
35
+ },
36
+ "durationMs": {
37
+ "type": "number",
38
+ "minimum": 0
39
+ },
40
+ "details": {
41
+ "oneOf": [
42
+ {
43
+ "type": "object",
44
+ "properties": {
45
+ "kind": {
46
+ "type": "string",
47
+ "const": "test"
48
+ },
49
+ "exitCode": {
50
+ "type": "integer",
51
+ "minimum": -9007199254740991,
52
+ "maximum": 9007199254740991
53
+ },
54
+ "stdout": {
55
+ "type": "string"
56
+ },
57
+ "stderr": {
58
+ "type": "string"
59
+ },
60
+ "duration": {
61
+ "type": "number",
62
+ "minimum": 0
63
+ }
64
+ },
65
+ "required": [
66
+ "kind",
67
+ "exitCode",
68
+ "stdout",
69
+ "stderr",
70
+ "duration"
71
+ ],
72
+ "additionalProperties": false
73
+ },
74
+ {
75
+ "type": "object",
76
+ "properties": {
77
+ "kind": {
78
+ "type": "string",
79
+ "const": "file"
80
+ },
81
+ "path": {
82
+ "type": "string",
83
+ "minLength": 1
84
+ },
85
+ "passedAssertions": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "string"
89
+ }
90
+ },
91
+ "failedAssertions": {
92
+ "type": "array",
93
+ "items": {
94
+ "type": "string"
95
+ }
96
+ }
97
+ },
98
+ "required": [
99
+ "kind",
100
+ "path",
101
+ "passedAssertions",
102
+ "failedAssertions"
103
+ ],
104
+ "additionalProperties": false
105
+ },
106
+ {
107
+ "type": "object",
108
+ "properties": {
109
+ "kind": {
110
+ "type": "string",
111
+ "const": "command"
112
+ },
113
+ "cmd": {
114
+ "type": "string",
115
+ "minLength": 1
116
+ },
117
+ "exitCode": {
118
+ "type": "integer",
119
+ "minimum": -9007199254740991,
120
+ "maximum": 9007199254740991
121
+ },
122
+ "stdout": {
123
+ "type": "string"
124
+ }
125
+ },
126
+ "required": [
127
+ "kind",
128
+ "cmd",
129
+ "exitCode",
130
+ "stdout"
131
+ ],
132
+ "additionalProperties": false
133
+ },
134
+ {
135
+ "type": "object",
136
+ "properties": {
137
+ "kind": {
138
+ "type": "string",
139
+ "const": "lint"
140
+ },
141
+ "tool": {
142
+ "type": "string",
143
+ "minLength": 1
144
+ },
145
+ "warnings": {
146
+ "type": "integer",
147
+ "minimum": 0,
148
+ "maximum": 9007199254740991
149
+ },
150
+ "errors": {
151
+ "type": "integer",
152
+ "minimum": 0,
153
+ "maximum": 9007199254740991
154
+ }
155
+ },
156
+ "required": [
157
+ "kind",
158
+ "tool",
159
+ "warnings",
160
+ "errors"
161
+ ],
162
+ "additionalProperties": false
163
+ },
164
+ {
165
+ "type": "object",
166
+ "properties": {
167
+ "kind": {
168
+ "type": "string",
169
+ "const": "http"
170
+ },
171
+ "url": {
172
+ "type": "string"
173
+ },
174
+ "status": {
175
+ "type": "integer",
176
+ "minimum": 100,
177
+ "maximum": 599
178
+ },
179
+ "body": {
180
+ "type": "string"
181
+ }
182
+ },
183
+ "required": [
184
+ "kind",
185
+ "url",
186
+ "status",
187
+ "body"
188
+ ],
189
+ "additionalProperties": false
190
+ },
191
+ {
192
+ "type": "object",
193
+ "properties": {
194
+ "kind": {
195
+ "type": "string",
196
+ "const": "manual"
197
+ },
198
+ "prompt": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ },
202
+ "accepted": {
203
+ "type": "boolean"
204
+ }
205
+ },
206
+ "required": [
207
+ "kind",
208
+ "prompt",
209
+ "accepted"
210
+ ],
211
+ "additionalProperties": false
212
+ }
213
+ ]
214
+ },
215
+ "evidence": {
216
+ "type": "string"
217
+ },
218
+ "errorMessage": {
219
+ "type": "string"
220
+ },
221
+ "checkedAt": {
222
+ "type": "string",
223
+ "format": "date-time",
224
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
225
+ },
226
+ "checkedBy": {
227
+ "type": "string",
228
+ "minLength": 1
229
+ }
230
+ },
231
+ "required": [
232
+ "index",
233
+ "kind",
234
+ "result",
235
+ "durationMs",
236
+ "checkedAt",
237
+ "checkedBy"
238
+ ],
239
+ "additionalProperties": false
9
240
  }
@@ -1,9 +1,203 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "TaskEvidence",
4
4
  "description": "Typed evidence artifact attached to a verification record — discriminated by kind",
5
- "$ref": "#/definitions/TaskEvidence",
6
- "definitions": {
7
- "TaskEvidence": {}
8
- }
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "properties": {
9
+ "kind": {
10
+ "type": "string",
11
+ "const": "file"
12
+ },
13
+ "sha256": {
14
+ "type": "string",
15
+ "minLength": 64,
16
+ "maxLength": 64
17
+ },
18
+ "timestamp": {
19
+ "type": "string",
20
+ "format": "date-time",
21
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
22
+ },
23
+ "path": {
24
+ "type": "string",
25
+ "minLength": 1
26
+ },
27
+ "mime": {
28
+ "type": "string"
29
+ },
30
+ "description": {
31
+ "type": "string"
32
+ }
33
+ },
34
+ "required": [
35
+ "kind",
36
+ "sha256",
37
+ "timestamp",
38
+ "path"
39
+ ],
40
+ "additionalProperties": false
41
+ },
42
+ {
43
+ "type": "object",
44
+ "properties": {
45
+ "kind": {
46
+ "type": "string",
47
+ "const": "log"
48
+ },
49
+ "sha256": {
50
+ "type": "string",
51
+ "minLength": 64,
52
+ "maxLength": 64
53
+ },
54
+ "timestamp": {
55
+ "type": "string",
56
+ "format": "date-time",
57
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
58
+ },
59
+ "source": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ },
63
+ "description": {
64
+ "type": "string"
65
+ }
66
+ },
67
+ "required": [
68
+ "kind",
69
+ "sha256",
70
+ "timestamp",
71
+ "source"
72
+ ],
73
+ "additionalProperties": false
74
+ },
75
+ {
76
+ "type": "object",
77
+ "properties": {
78
+ "kind": {
79
+ "type": "string",
80
+ "const": "screenshot"
81
+ },
82
+ "sha256": {
83
+ "type": "string",
84
+ "minLength": 64,
85
+ "maxLength": 64
86
+ },
87
+ "timestamp": {
88
+ "type": "string",
89
+ "format": "date-time",
90
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
91
+ },
92
+ "mime": {
93
+ "type": "string",
94
+ "enum": [
95
+ "image/png",
96
+ "image/jpeg",
97
+ "image/webp"
98
+ ]
99
+ },
100
+ "description": {
101
+ "type": "string"
102
+ }
103
+ },
104
+ "required": [
105
+ "kind",
106
+ "sha256",
107
+ "timestamp"
108
+ ],
109
+ "additionalProperties": false
110
+ },
111
+ {
112
+ "type": "object",
113
+ "properties": {
114
+ "kind": {
115
+ "type": "string",
116
+ "const": "test-output"
117
+ },
118
+ "sha256": {
119
+ "type": "string",
120
+ "minLength": 64,
121
+ "maxLength": 64
122
+ },
123
+ "timestamp": {
124
+ "type": "string",
125
+ "format": "date-time",
126
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
127
+ },
128
+ "passed": {
129
+ "type": "integer",
130
+ "minimum": 0,
131
+ "maximum": 9007199254740991
132
+ },
133
+ "failed": {
134
+ "type": "integer",
135
+ "minimum": 0,
136
+ "maximum": 9007199254740991
137
+ },
138
+ "skipped": {
139
+ "type": "integer",
140
+ "minimum": 0,
141
+ "maximum": 9007199254740991
142
+ },
143
+ "exitCode": {
144
+ "type": "integer",
145
+ "minimum": -9007199254740991,
146
+ "maximum": 9007199254740991
147
+ },
148
+ "description": {
149
+ "type": "string"
150
+ }
151
+ },
152
+ "required": [
153
+ "kind",
154
+ "sha256",
155
+ "timestamp",
156
+ "passed",
157
+ "failed",
158
+ "skipped",
159
+ "exitCode"
160
+ ],
161
+ "additionalProperties": false
162
+ },
163
+ {
164
+ "type": "object",
165
+ "properties": {
166
+ "kind": {
167
+ "type": "string",
168
+ "const": "command-output"
169
+ },
170
+ "sha256": {
171
+ "type": "string",
172
+ "minLength": 64,
173
+ "maxLength": 64
174
+ },
175
+ "timestamp": {
176
+ "type": "string",
177
+ "format": "date-time",
178
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
179
+ },
180
+ "cmd": {
181
+ "type": "string",
182
+ "minLength": 1
183
+ },
184
+ "exitCode": {
185
+ "type": "integer",
186
+ "minimum": -9007199254740991,
187
+ "maximum": 9007199254740991
188
+ },
189
+ "description": {
190
+ "type": "string"
191
+ }
192
+ },
193
+ "required": [
194
+ "kind",
195
+ "sha256",
196
+ "timestamp",
197
+ "cmd",
198
+ "exitCode"
199
+ ],
200
+ "additionalProperties": false
201
+ }
202
+ ]
9
203
  }