wowbagger 0.1.0-alpha.7 → 0.1.0-alpha.8

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 (51) hide show
  1. package/CHANGELOG.md +193 -1
  2. package/README.md +194 -16
  3. package/adapters/claude-code/wowbagger-adapter.json +1 -1
  4. package/adapters/codex/wowbagger-adapter.json +1 -1
  5. package/adapters/opencode/wowbagger-adapter.json +1 -1
  6. package/docs/adapter-contract.md +66 -6
  7. package/docs/host-contract.md +287 -0
  8. package/docs/mutation-contract.md +558 -17
  9. package/docs/work-claim-contract.md +56 -24
  10. package/package.json +14 -1
  11. package/schemas/bare-ready-result.json +27 -0
  12. package/schemas/bare-validation-result.json +23 -0
  13. package/schemas/common.json +470 -0
  14. package/schemas/core-capabilities-response.json +346 -0
  15. package/schemas/core-envelope.json +141 -0
  16. package/schemas/core-inspect-response.json +37 -0
  17. package/schemas/core-inspect-workbench-response.json +340 -0
  18. package/schemas/core-list-error-response.json +242 -0
  19. package/schemas/core-list-query.json +98 -0
  20. package/schemas/core-list-response.json +140 -0
  21. package/schemas/core-report-response.json +379 -0
  22. package/schemas/core-transition-error-response.json +852 -0
  23. package/schemas/core-transition-request.json +47 -0
  24. package/schemas/core-transition-response.json +49 -0
  25. package/schemas/index.json +108 -0
  26. package/schemas/ledger-mutation-refusal.json +288 -0
  27. package/schemas/report-config-v1.json +140 -0
  28. package/schemas/report-config-v2.json +242 -0
  29. package/skills/wowbagger/SKILL.md +151 -38
  30. package/src/adapter/core-probe.js +87 -7
  31. package/src/claim-capabilities.js +4 -5
  32. package/src/claim-coordinator.js +15 -2
  33. package/src/claim-prospective.js +151 -0
  34. package/src/claim-publication.js +49 -9
  35. package/src/claim-sync.js +66 -0
  36. package/src/cli.js +671 -49
  37. package/src/extension-provision.js +33 -0
  38. package/src/git-autocommit.js +36 -6
  39. package/src/git-reconciliation.js +53 -9
  40. package/src/launch.js +52 -0
  41. package/src/lifecycle.js +153 -0
  42. package/src/limits.js +39 -0
  43. package/src/list.js +365 -0
  44. package/src/mutation.js +145 -118
  45. package/src/projection.js +39 -0
  46. package/src/report-graph.js +122 -21
  47. package/src/report-html.js +219 -51
  48. package/src/report-view.js +189 -0
  49. package/src/report.js +145 -15
  50. package/src/validate.js +4 -1
  51. package/src/workbench.js +117 -0
@@ -0,0 +1,140 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/lstutzman/wowbagger/schemas/core-list-response.json",
4
+ "title": "list --json success response",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "ok",
9
+ "command",
10
+ "contract_version",
11
+ "result"
12
+ ],
13
+ "properties": {
14
+ "ok": {
15
+ "const": true
16
+ },
17
+ "command": {
18
+ "const": "list"
19
+ },
20
+ "contract_version": {
21
+ "const": 5
22
+ },
23
+ "result": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": [
27
+ "query_version",
28
+ "as_of",
29
+ "snapshot",
30
+ "page",
31
+ "items"
32
+ ],
33
+ "properties": {
34
+ "query_version": {
35
+ "const": 1
36
+ },
37
+ "as_of": {
38
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/isoDate"
39
+ },
40
+ "snapshot": {
41
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/snapshotWitness"
42
+ },
43
+ "page": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": [
47
+ "size",
48
+ "offset",
49
+ "returned",
50
+ "matched",
51
+ "has_more",
52
+ "next_cursor"
53
+ ],
54
+ "properties": {
55
+ "size": {
56
+ "type": "integer",
57
+ "minimum": 1
58
+ },
59
+ "offset": {
60
+ "type": "integer",
61
+ "minimum": 0
62
+ },
63
+ "returned": {
64
+ "type": "integer",
65
+ "minimum": 0
66
+ },
67
+ "matched": {
68
+ "type": "integer",
69
+ "minimum": 0
70
+ },
71
+ "has_more": {
72
+ "type": "boolean"
73
+ },
74
+ "next_cursor": {
75
+ "type": [
76
+ "string",
77
+ "null"
78
+ ]
79
+ }
80
+ }
81
+ },
82
+ "items": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": [
88
+ "id",
89
+ "title",
90
+ "title_truncated",
91
+ "kind",
92
+ "status",
93
+ "created",
94
+ "updated",
95
+ "revision",
96
+ "ready"
97
+ ],
98
+ "properties": {
99
+ "id": {
100
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/itemId"
101
+ },
102
+ "number": {
103
+ "type": "integer",
104
+ "minimum": 1
105
+ },
106
+ "title": {
107
+ "type": "string"
108
+ },
109
+ "title_truncated": {
110
+ "type": "boolean"
111
+ },
112
+ "kind": {
113
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/kind"
114
+ },
115
+ "status": {
116
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/status"
117
+ },
118
+ "priority": {
119
+ "type": "integer"
120
+ },
121
+ "created": {
122
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/isoDate"
123
+ },
124
+ "updated": {
125
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/isoDate"
126
+ },
127
+ "revision": {
128
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/revision"
129
+ },
130
+ "ready": {
131
+ "type": "boolean"
132
+ }
133
+ },
134
+ "description": "One bounded row. `number` and `priority` are present only when the item carries them; there is no source and no body."
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
@@ -0,0 +1,379 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/lstutzman/wowbagger/schemas/core-report-response.json",
4
+ "title": "report --json responses",
5
+ "description": "A successful publication names the configuration version it ran and, for a named view, the view it published. An invocation without `--view` carries no `view` member.",
6
+ "type": "object",
7
+ "oneOf": [
8
+ {
9
+ "type": "object",
10
+ "additionalProperties": false,
11
+ "required": [
12
+ "ok",
13
+ "command",
14
+ "contract_version",
15
+ "result"
16
+ ],
17
+ "properties": {
18
+ "ok": {
19
+ "const": true
20
+ },
21
+ "command": {
22
+ "const": "report"
23
+ },
24
+ "contract_version": {
25
+ "const": 5
26
+ },
27
+ "result": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "report_version": {
32
+ "enum": [
33
+ 1,
34
+ 2
35
+ ]
36
+ },
37
+ "as_of": {
38
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/isoDate"
39
+ },
40
+ "output": {
41
+ "type": "string",
42
+ "minLength": 1
43
+ },
44
+ "item_count": {
45
+ "type": "integer",
46
+ "minimum": 0
47
+ },
48
+ "ready_count": {
49
+ "type": "integer",
50
+ "minimum": 0
51
+ },
52
+ "view": {
53
+ "type": "string",
54
+ "pattern": "^[a-z][a-z0-9-]{0,63}$",
55
+ "description": "Present only when --view named a configured view."
56
+ }
57
+ },
58
+ "required": [
59
+ "report_version",
60
+ "as_of",
61
+ "output",
62
+ "item_count",
63
+ "ready_count"
64
+ ]
65
+ }
66
+ },
67
+ "title": "publication"
68
+ },
69
+ {
70
+ "title": "invalid-request",
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": [
74
+ "ok",
75
+ "command",
76
+ "contract_version",
77
+ "error"
78
+ ],
79
+ "properties": {
80
+ "ok": {
81
+ "const": false
82
+ },
83
+ "command": {
84
+ "const": "report"
85
+ },
86
+ "contract_version": {
87
+ "const": 5
88
+ },
89
+ "error": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "properties": {
93
+ "code": {
94
+ "const": "invalid-request"
95
+ },
96
+ "message": {
97
+ "type": "string"
98
+ },
99
+ "details": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "issues": {
104
+ "type": "array",
105
+ "minItems": 1,
106
+ "items": {
107
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/requestIssue"
108
+ }
109
+ }
110
+ },
111
+ "required": [
112
+ "issues"
113
+ ]
114
+ }
115
+ },
116
+ "required": [
117
+ "code",
118
+ "message",
119
+ "details"
120
+ ]
121
+ }
122
+ }
123
+ },
124
+ {
125
+ "title": "ledger-invalid",
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": [
129
+ "ok",
130
+ "command",
131
+ "contract_version",
132
+ "error"
133
+ ],
134
+ "properties": {
135
+ "ok": {
136
+ "const": false
137
+ },
138
+ "command": {
139
+ "const": "report"
140
+ },
141
+ "contract_version": {
142
+ "const": 5
143
+ },
144
+ "error": {
145
+ "type": "object",
146
+ "additionalProperties": false,
147
+ "properties": {
148
+ "code": {
149
+ "const": "ledger-invalid"
150
+ },
151
+ "message": {
152
+ "type": "string"
153
+ },
154
+ "details": {
155
+ "type": "object",
156
+ "additionalProperties": false,
157
+ "description": "The report refusal names the validation errors under `errors`, which is the member this command has always emitted. The mutation commands name theirs `validation_errors`; the two are the same error objects under two published member names, and neither may be renamed without a contract version.",
158
+ "properties": {
159
+ "errors": {
160
+ "type": "array",
161
+ "minItems": 1,
162
+ "items": {
163
+ "$ref": "https://github.com/lstutzman/wowbagger/schemas/common.json#/$defs/validationError"
164
+ }
165
+ }
166
+ },
167
+ "required": [
168
+ "errors"
169
+ ]
170
+ }
171
+ },
172
+ "required": [
173
+ "code",
174
+ "message",
175
+ "details"
176
+ ]
177
+ }
178
+ }
179
+ },
180
+ {
181
+ "title": "report-config-invalid",
182
+ "type": "object",
183
+ "additionalProperties": false,
184
+ "required": [
185
+ "ok",
186
+ "command",
187
+ "contract_version",
188
+ "error"
189
+ ],
190
+ "properties": {
191
+ "ok": {
192
+ "const": false
193
+ },
194
+ "command": {
195
+ "const": "report"
196
+ },
197
+ "contract_version": {
198
+ "const": 5
199
+ },
200
+ "error": {
201
+ "type": "object",
202
+ "additionalProperties": false,
203
+ "properties": {
204
+ "code": {
205
+ "const": "report-config-invalid"
206
+ },
207
+ "message": {
208
+ "type": "string"
209
+ },
210
+ "details": {
211
+ "type": "object",
212
+ "additionalProperties": false,
213
+ "properties": {
214
+ "issues": {
215
+ "type": "array",
216
+ "minItems": 1,
217
+ "items": {
218
+ "type": "object",
219
+ "additionalProperties": false,
220
+ "required": [
221
+ "path",
222
+ "code",
223
+ "message"
224
+ ],
225
+ "properties": {
226
+ "path": {
227
+ "type": "string"
228
+ },
229
+ "code": {
230
+ "const": "report-config-invalid"
231
+ },
232
+ "message": {
233
+ "type": "string"
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ "required": [
240
+ "issues"
241
+ ]
242
+ }
243
+ },
244
+ "required": [
245
+ "code",
246
+ "message",
247
+ "details"
248
+ ]
249
+ }
250
+ }
251
+ },
252
+ {
253
+ "title": "report-view-not-found",
254
+ "type": "object",
255
+ "additionalProperties": false,
256
+ "required": [
257
+ "ok",
258
+ "command",
259
+ "contract_version",
260
+ "error"
261
+ ],
262
+ "properties": {
263
+ "ok": {
264
+ "const": false
265
+ },
266
+ "command": {
267
+ "const": "report"
268
+ },
269
+ "contract_version": {
270
+ "const": 5
271
+ },
272
+ "error": {
273
+ "type": "object",
274
+ "additionalProperties": false,
275
+ "properties": {
276
+ "code": {
277
+ "const": "report-view-not-found"
278
+ },
279
+ "message": {
280
+ "type": "string"
281
+ },
282
+ "details": {
283
+ "type": "object"
284
+ }
285
+ },
286
+ "required": [
287
+ "code",
288
+ "message",
289
+ "details"
290
+ ]
291
+ }
292
+ }
293
+ },
294
+ {
295
+ "title": "report-read-failed",
296
+ "type": "object",
297
+ "additionalProperties": false,
298
+ "required": [
299
+ "ok",
300
+ "command",
301
+ "contract_version",
302
+ "error"
303
+ ],
304
+ "properties": {
305
+ "ok": {
306
+ "const": false
307
+ },
308
+ "command": {
309
+ "const": "report"
310
+ },
311
+ "contract_version": {
312
+ "const": 5
313
+ },
314
+ "error": {
315
+ "type": "object",
316
+ "additionalProperties": false,
317
+ "properties": {
318
+ "code": {
319
+ "const": "report-read-failed"
320
+ },
321
+ "message": {
322
+ "type": "string"
323
+ },
324
+ "details": {
325
+ "type": "object"
326
+ }
327
+ },
328
+ "required": [
329
+ "code",
330
+ "message",
331
+ "details"
332
+ ]
333
+ }
334
+ }
335
+ },
336
+ {
337
+ "title": "report-write-failed",
338
+ "type": "object",
339
+ "additionalProperties": false,
340
+ "required": [
341
+ "ok",
342
+ "command",
343
+ "contract_version",
344
+ "error"
345
+ ],
346
+ "properties": {
347
+ "ok": {
348
+ "const": false
349
+ },
350
+ "command": {
351
+ "const": "report"
352
+ },
353
+ "contract_version": {
354
+ "const": 5
355
+ },
356
+ "error": {
357
+ "type": "object",
358
+ "additionalProperties": false,
359
+ "properties": {
360
+ "code": {
361
+ "const": "report-write-failed"
362
+ },
363
+ "message": {
364
+ "type": "string"
365
+ },
366
+ "details": {
367
+ "type": "object"
368
+ }
369
+ },
370
+ "required": [
371
+ "code",
372
+ "message",
373
+ "details"
374
+ ]
375
+ }
376
+ }
377
+ }
378
+ ]
379
+ }