@cleocode/contracts 2026.5.3 → 2026.5.5

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,572 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "title": "Task",
4
4
  "description": "CLEO task summary — machine-verifiable fields for LLM tool-use",
5
- "$ref": "#/definitions/Task",
6
- "definitions": {
7
- "Task": {}
8
- }
5
+ "type": "object",
6
+ "properties": {
7
+ "id": {
8
+ "type": "string",
9
+ "description": "Task identifier (e.g. \"T801\")"
10
+ },
11
+ "title": {
12
+ "type": "string",
13
+ "minLength": 1,
14
+ "description": "Short task title"
15
+ },
16
+ "status": {
17
+ "type": "string",
18
+ "enum": [
19
+ "todo",
20
+ "in-progress",
21
+ "done",
22
+ "blocked",
23
+ "cancelled",
24
+ "archived"
25
+ ],
26
+ "description": "Current task status"
27
+ },
28
+ "priority": {
29
+ "description": "Task priority",
30
+ "type": "string",
31
+ "enum": [
32
+ "critical",
33
+ "high",
34
+ "medium",
35
+ "low"
36
+ ]
37
+ },
38
+ "size": {
39
+ "description": "Task size estimate",
40
+ "type": "string",
41
+ "enum": [
42
+ "small",
43
+ "medium",
44
+ "large"
45
+ ]
46
+ },
47
+ "type": {
48
+ "description": "Task hierarchy type",
49
+ "type": "string",
50
+ "enum": [
51
+ "epic",
52
+ "task",
53
+ "subtask"
54
+ ]
55
+ },
56
+ "parentId": {
57
+ "description": "Parent task ID",
58
+ "anyOf": [
59
+ {
60
+ "type": "string"
61
+ },
62
+ {
63
+ "type": "null"
64
+ }
65
+ ]
66
+ },
67
+ "acceptance": {
68
+ "type": "array",
69
+ "items": {
70
+ "anyOf": [
71
+ {
72
+ "type": "string",
73
+ "minLength": 1
74
+ },
75
+ {
76
+ "oneOf": [
77
+ {
78
+ "type": "object",
79
+ "properties": {
80
+ "req": {
81
+ "type": "string"
82
+ },
83
+ "description": {
84
+ "type": "string",
85
+ "minLength": 1
86
+ },
87
+ "advisory": {
88
+ "type": "boolean"
89
+ },
90
+ "timeoutMs": {
91
+ "type": "integer",
92
+ "exclusiveMinimum": 0,
93
+ "maximum": 9007199254740991
94
+ },
95
+ "kind": {
96
+ "type": "string",
97
+ "const": "test"
98
+ },
99
+ "command": {
100
+ "type": "string",
101
+ "minLength": 1
102
+ },
103
+ "args": {
104
+ "type": "array",
105
+ "items": {
106
+ "type": "string"
107
+ }
108
+ },
109
+ "expect": {
110
+ "type": "string",
111
+ "enum": [
112
+ "pass",
113
+ "exit0"
114
+ ]
115
+ },
116
+ "minCount": {
117
+ "type": "integer",
118
+ "minimum": 0,
119
+ "maximum": 9007199254740991
120
+ },
121
+ "cwd": {
122
+ "type": "string"
123
+ },
124
+ "env": {
125
+ "type": "object",
126
+ "propertyNames": {
127
+ "type": "string"
128
+ },
129
+ "additionalProperties": {
130
+ "type": "string"
131
+ }
132
+ }
133
+ },
134
+ "required": [
135
+ "description",
136
+ "kind",
137
+ "command",
138
+ "expect"
139
+ ],
140
+ "additionalProperties": false
141
+ },
142
+ {
143
+ "type": "object",
144
+ "properties": {
145
+ "req": {
146
+ "type": "string"
147
+ },
148
+ "description": {
149
+ "type": "string",
150
+ "minLength": 1
151
+ },
152
+ "advisory": {
153
+ "type": "boolean"
154
+ },
155
+ "timeoutMs": {
156
+ "type": "integer",
157
+ "exclusiveMinimum": 0,
158
+ "maximum": 9007199254740991
159
+ },
160
+ "kind": {
161
+ "type": "string",
162
+ "const": "file"
163
+ },
164
+ "path": {
165
+ "type": "string",
166
+ "minLength": 1
167
+ },
168
+ "attachmentSha256": {
169
+ "type": "string",
170
+ "pattern": "^[0-9a-f]{64}$"
171
+ },
172
+ "assertions": {
173
+ "minItems": 1,
174
+ "type": "array",
175
+ "items": {
176
+ "oneOf": [
177
+ {
178
+ "type": "object",
179
+ "properties": {
180
+ "type": {
181
+ "type": "string",
182
+ "const": "exists"
183
+ }
184
+ },
185
+ "required": [
186
+ "type"
187
+ ],
188
+ "additionalProperties": false
189
+ },
190
+ {
191
+ "type": "object",
192
+ "properties": {
193
+ "type": {
194
+ "type": "string",
195
+ "const": "absent"
196
+ }
197
+ },
198
+ "required": [
199
+ "type"
200
+ ],
201
+ "additionalProperties": false
202
+ },
203
+ {
204
+ "type": "object",
205
+ "properties": {
206
+ "type": {
207
+ "type": "string",
208
+ "const": "nonEmpty"
209
+ }
210
+ },
211
+ "required": [
212
+ "type"
213
+ ],
214
+ "additionalProperties": false
215
+ },
216
+ {
217
+ "type": "object",
218
+ "properties": {
219
+ "type": {
220
+ "type": "string",
221
+ "const": "maxBytes"
222
+ },
223
+ "value": {
224
+ "type": "integer",
225
+ "minimum": 0,
226
+ "maximum": 9007199254740991
227
+ }
228
+ },
229
+ "required": [
230
+ "type",
231
+ "value"
232
+ ],
233
+ "additionalProperties": false
234
+ },
235
+ {
236
+ "type": "object",
237
+ "properties": {
238
+ "type": {
239
+ "type": "string",
240
+ "const": "minBytes"
241
+ },
242
+ "value": {
243
+ "type": "integer",
244
+ "minimum": 0,
245
+ "maximum": 9007199254740991
246
+ }
247
+ },
248
+ "required": [
249
+ "type",
250
+ "value"
251
+ ],
252
+ "additionalProperties": false
253
+ },
254
+ {
255
+ "type": "object",
256
+ "properties": {
257
+ "type": {
258
+ "type": "string",
259
+ "const": "contains"
260
+ },
261
+ "value": {
262
+ "type": "string"
263
+ }
264
+ },
265
+ "required": [
266
+ "type",
267
+ "value"
268
+ ],
269
+ "additionalProperties": false
270
+ },
271
+ {
272
+ "type": "object",
273
+ "properties": {
274
+ "type": {
275
+ "type": "string",
276
+ "const": "matches"
277
+ },
278
+ "regex": {
279
+ "type": "string",
280
+ "minLength": 1
281
+ },
282
+ "flags": {
283
+ "type": "string"
284
+ }
285
+ },
286
+ "required": [
287
+ "type",
288
+ "regex"
289
+ ],
290
+ "additionalProperties": false
291
+ },
292
+ {
293
+ "type": "object",
294
+ "properties": {
295
+ "type": {
296
+ "type": "string",
297
+ "const": "sha256"
298
+ },
299
+ "value": {
300
+ "type": "string",
301
+ "minLength": 64,
302
+ "maxLength": 64
303
+ }
304
+ },
305
+ "required": [
306
+ "type",
307
+ "value"
308
+ ],
309
+ "additionalProperties": false
310
+ }
311
+ ]
312
+ }
313
+ }
314
+ },
315
+ "required": [
316
+ "description",
317
+ "kind",
318
+ "assertions"
319
+ ],
320
+ "additionalProperties": false
321
+ },
322
+ {
323
+ "type": "object",
324
+ "properties": {
325
+ "req": {
326
+ "type": "string"
327
+ },
328
+ "description": {
329
+ "type": "string",
330
+ "minLength": 1
331
+ },
332
+ "advisory": {
333
+ "type": "boolean"
334
+ },
335
+ "timeoutMs": {
336
+ "type": "integer",
337
+ "exclusiveMinimum": 0,
338
+ "maximum": 9007199254740991
339
+ },
340
+ "kind": {
341
+ "type": "string",
342
+ "const": "command"
343
+ },
344
+ "cmd": {
345
+ "type": "string",
346
+ "minLength": 1
347
+ },
348
+ "args": {
349
+ "type": "array",
350
+ "items": {
351
+ "type": "string"
352
+ }
353
+ },
354
+ "exitCode": {
355
+ "type": "integer",
356
+ "minimum": -9007199254740991,
357
+ "maximum": 9007199254740991
358
+ },
359
+ "stdoutMatches": {
360
+ "type": "string"
361
+ },
362
+ "stderrMatches": {
363
+ "type": "string"
364
+ },
365
+ "cwd": {
366
+ "type": "string"
367
+ },
368
+ "env": {
369
+ "type": "object",
370
+ "propertyNames": {
371
+ "type": "string"
372
+ },
373
+ "additionalProperties": {
374
+ "type": "string"
375
+ }
376
+ }
377
+ },
378
+ "required": [
379
+ "description",
380
+ "kind",
381
+ "cmd"
382
+ ],
383
+ "additionalProperties": false
384
+ },
385
+ {
386
+ "type": "object",
387
+ "properties": {
388
+ "req": {
389
+ "type": "string"
390
+ },
391
+ "description": {
392
+ "type": "string",
393
+ "minLength": 1
394
+ },
395
+ "advisory": {
396
+ "type": "boolean"
397
+ },
398
+ "timeoutMs": {
399
+ "type": "integer",
400
+ "exclusiveMinimum": 0,
401
+ "maximum": 9007199254740991
402
+ },
403
+ "kind": {
404
+ "type": "string",
405
+ "const": "lint"
406
+ },
407
+ "tool": {
408
+ "type": "string",
409
+ "enum": [
410
+ "biome",
411
+ "eslint",
412
+ "tsc",
413
+ "prettier",
414
+ "rustc",
415
+ "clippy"
416
+ ]
417
+ },
418
+ "args": {
419
+ "type": "array",
420
+ "items": {
421
+ "type": "string"
422
+ }
423
+ },
424
+ "expect": {
425
+ "type": "string",
426
+ "enum": [
427
+ "clean",
428
+ "noErrors"
429
+ ]
430
+ },
431
+ "cwd": {
432
+ "type": "string"
433
+ }
434
+ },
435
+ "required": [
436
+ "description",
437
+ "kind",
438
+ "tool",
439
+ "expect"
440
+ ],
441
+ "additionalProperties": false
442
+ },
443
+ {
444
+ "type": "object",
445
+ "properties": {
446
+ "req": {
447
+ "type": "string"
448
+ },
449
+ "description": {
450
+ "type": "string",
451
+ "minLength": 1
452
+ },
453
+ "advisory": {
454
+ "type": "boolean"
455
+ },
456
+ "timeoutMs": {
457
+ "type": "integer",
458
+ "exclusiveMinimum": 0,
459
+ "maximum": 9007199254740991
460
+ },
461
+ "kind": {
462
+ "type": "string",
463
+ "const": "http"
464
+ },
465
+ "url": {
466
+ "type": "string",
467
+ "format": "uri"
468
+ },
469
+ "method": {
470
+ "type": "string",
471
+ "enum": [
472
+ "GET",
473
+ "HEAD",
474
+ "POST",
475
+ "PUT",
476
+ "DELETE"
477
+ ]
478
+ },
479
+ "status": {
480
+ "type": "integer",
481
+ "minimum": 100,
482
+ "maximum": 599
483
+ },
484
+ "bodyMatches": {
485
+ "type": "string"
486
+ },
487
+ "headers": {
488
+ "type": "object",
489
+ "propertyNames": {
490
+ "type": "string"
491
+ },
492
+ "additionalProperties": {
493
+ "type": "string"
494
+ }
495
+ },
496
+ "startCommand": {
497
+ "type": "string"
498
+ },
499
+ "startupDelayMs": {
500
+ "type": "integer",
501
+ "minimum": 0,
502
+ "maximum": 9007199254740991
503
+ }
504
+ },
505
+ "required": [
506
+ "description",
507
+ "kind",
508
+ "url",
509
+ "status"
510
+ ],
511
+ "additionalProperties": false
512
+ },
513
+ {
514
+ "type": "object",
515
+ "properties": {
516
+ "req": {
517
+ "type": "string"
518
+ },
519
+ "description": {
520
+ "type": "string",
521
+ "minLength": 1
522
+ },
523
+ "advisory": {
524
+ "type": "boolean"
525
+ },
526
+ "timeoutMs": {
527
+ "type": "integer",
528
+ "exclusiveMinimum": 0,
529
+ "maximum": 9007199254740991
530
+ },
531
+ "kind": {
532
+ "type": "string",
533
+ "const": "manual"
534
+ },
535
+ "prompt": {
536
+ "type": "string",
537
+ "minLength": 1
538
+ },
539
+ "verdicts": {
540
+ "type": "array",
541
+ "items": {
542
+ "type": "string",
543
+ "enum": [
544
+ "pass",
545
+ "fail",
546
+ "warn"
547
+ ]
548
+ }
549
+ }
550
+ },
551
+ "required": [
552
+ "description",
553
+ "kind",
554
+ "prompt"
555
+ ],
556
+ "additionalProperties": false
557
+ }
558
+ ]
559
+ }
560
+ ]
561
+ },
562
+ "description": "Acceptance criteria: free-text strings or structured AcceptanceGate objects"
563
+ }
564
+ },
565
+ "required": [
566
+ "id",
567
+ "title",
568
+ "status",
569
+ "acceptance"
570
+ ],
571
+ "additionalProperties": false
9
572
  }
package/src/index.ts CHANGED
@@ -354,6 +354,7 @@ export type {
354
354
  LAFSErrorCategory,
355
355
  LAFSMeta,
356
356
  LAFSPage,
357
+ LAFSPageCursor,
357
358
  LAFSPageNone,
358
359
  LAFSPageOffset,
359
360
  LAFSTransport,
@@ -496,10 +497,11 @@ export type {
496
497
  } from './operations/admin.js';
497
498
  // === Conduit Operation Types (T1422 — typed-dispatch migration) ===
498
499
  // Re-exported at top level so CLI dispatch can import without the `ops.` namespace hop.
499
- // Note: ConduitSendResult from operations/conduit.ts is intentionally NOT re-exported
500
- // here because conduit.ts (transport-layer) already exports a ConduitSendResult of a
501
- // different shape. Consumers needing the operation-result variant should import via
502
- // `import type { ConduitOps } from '@cleocode/contracts'` and reference `ConduitOps['send'][1]`.
500
+ // Note: The transport-layer ConduitSendResult (in ./conduit.ts) carries { messageId, deliveredAt }
501
+ // and is the canonical type for the Conduit interface (ConduitClient / publishToTopic).
502
+ // ConduitSendOperationResult (below) is the wire-format type for the conduit.send CLI/HTTP
503
+ // dispatch operation and carries { messageId, from, to, transport, sentAt }.
504
+ // The two types serve different layers and are intentionally distinct.
503
505
  export type {
504
506
  ConduitInboxMessage,
505
507
  ConduitListenParams,
@@ -509,6 +511,7 @@ export type {
509
511
  ConduitPeekResult,
510
512
  ConduitPublishParams,
511
513
  ConduitPublishResult,
514
+ ConduitSendOperationResult,
512
515
  ConduitSendParams,
513
516
  ConduitStartParams,
514
517
  ConduitStartResult,
@@ -533,10 +536,10 @@ export type {
533
536
  export * as ops from './operations/index.js';
534
537
  // === Lifecycle Operation Types (T1455 — ADR-057 D1 Core normalization) ===
535
538
  // Re-exported at top level so @cleocode/core/lifecycle can import without the `ops.` namespace hop.
536
- // Note: Gate and GateStatus are omitted here — GateStatus conflicts with the
537
- // status-registry export (different shape). Consumers needing the lifecycle
538
- // Gate/GateStatus should import via `ops.Gate` / `ops.GateStatus`.
539
+ // Note: Gate is included here — GateStatus conflict resolved (T1694): lifecycle.ts now re-exports
540
+ // the canonical GateStatus from status-registry.ts (single source of truth, ADR-018).
539
541
  export type {
542
+ Gate,
540
543
  LifecycleCheckParams,
541
544
  LifecycleCheckResult,
542
545
  LifecycleGateFailParams,
@@ -580,6 +583,7 @@ export type {
580
583
  BrainPageNodeEntry,
581
584
  NexusAugmentParams,
582
585
  NexusAugmentResult,
586
+ NexusAugmentSymbol,
583
587
  NexusBlockersShowParams,
584
588
  NexusBlockersShowResult,
585
589
  NexusBrainAnchorsParams,
@@ -593,8 +597,12 @@ export type {
593
597
  NexusCommunityEntry,
594
598
  NexusConduitScanParams,
595
599
  NexusConduitScanResult,
600
+ NexusContextNode,
596
601
  NexusContextParams,
602
+ NexusContextProcess,
603
+ NexusContextRelation,
597
604
  NexusContextResult,
605
+ NexusContextSourceContent,
598
606
  NexusContractsLinkTasksParams,
599
607
  NexusContractsLinkTasksResult,
600
608
  NexusContractsShowParams,
@@ -604,6 +612,7 @@ export type {
604
612
  NexusDepsEntry,
605
613
  NexusDepsParams,
606
614
  NexusDepsResult,
615
+ NexusDiffHealth,
607
616
  NexusDiffParams,
608
617
  NexusDiffResult,
609
618
  NexusDiscoverHit,
@@ -667,6 +676,7 @@ export type {
667
676
  NexusResolveResult,
668
677
  NexusRouteMapParams,
669
678
  NexusRouteMapResult,
679
+ NexusScanAutoRegisterError,
670
680
  NexusSearchCodeParams,
671
681
  NexusSearchCodeResult,
672
682
  NexusSearchHit,
@@ -1173,6 +1183,26 @@ export {
1173
1183
  assertArchiveReason,
1174
1184
  isArchiveTombstoneAllowed,
1175
1185
  } from './tasks/archive.js';
1186
+ // === Task Domain Result Types (T1703 — canonical shapes for operations/tasks.ts stubs) ===
1187
+ export type {
1188
+ TaskComplexityFactor,
1189
+ TaskDependsRef,
1190
+ TaskDependsResult,
1191
+ TaskLabelInfo,
1192
+ TaskPlanBlockedTask,
1193
+ TaskPlanInProgressEpic,
1194
+ TaskPlanMetrics,
1195
+ TaskPlanOpenBug,
1196
+ TaskPlanReadyTask,
1197
+ TaskPlanResult,
1198
+ TaskTreeNode,
1199
+ TaskView,
1200
+ TaskViewChildRollup,
1201
+ TaskViewGatesStatus,
1202
+ TaskViewLifecycleProgress,
1203
+ TaskViewNextAction,
1204
+ TaskViewPipelineStage,
1205
+ } from './tasks.js';
1176
1206
  // === Tessera Types ===
1177
1207
  export type {
1178
1208
  TesseraInstantiationInput,