@cleocode/contracts 2026.5.101 → 2026.5.103

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.
@@ -1 +1 @@
1
- {"version":3,"file":"operations-registry.d.ts","sourceRoot":"","sources":["../../src/dispatch/operations-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEjG,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAMvE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAE1F;AAMD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,YAAY,EAkwPpC,CAAC"}
1
+ {"version":3,"file":"operations-registry.d.ts","sourceRoot":"","sources":["../../src/dispatch/operations-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAEjG,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAMvE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAE1F;AAMD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,EAAE,YAAY,EAu1PpC,CAAC"}
@@ -2346,6 +2346,38 @@ export const OPERATIONS = [
2346
2346
  },
2347
2347
  ],
2348
2348
  },
2349
+ {
2350
+ gateway: 'mutate',
2351
+ domain: 'tasks',
2352
+ operation: 'saga.detach',
2353
+ description: 'tasks.saga.detach (mutate) — remove a Saga member relation (task_relations type=groups); idempotent; appends to .cleo/audit/saga-detach.jsonl (T10118)',
2354
+ tier: 0,
2355
+ idempotent: true,
2356
+ sessionRequired: false,
2357
+ requiredParams: ['sagaId', 'memberId'],
2358
+ params: [
2359
+ {
2360
+ name: 'sagaId',
2361
+ type: 'string',
2362
+ required: true,
2363
+ description: 'Saga task ID',
2364
+ cli: { positional: true },
2365
+ },
2366
+ {
2367
+ name: 'memberId',
2368
+ type: 'string',
2369
+ required: true,
2370
+ description: 'Member task ID to detach from the Saga',
2371
+ cli: { positional: true },
2372
+ },
2373
+ {
2374
+ name: 'reason',
2375
+ type: 'string',
2376
+ required: false,
2377
+ description: 'Human-readable reason recorded in the audit log entry',
2378
+ },
2379
+ ],
2380
+ },
2349
2381
  {
2350
2382
  gateway: 'query',
2351
2383
  domain: 'tasks',
@@ -2395,6 +2427,56 @@ export const OPERATIONS = [
2395
2427
  },
2396
2428
  ],
2397
2429
  },
2430
+ {
2431
+ // T10117 — detach I5-violating parentId and re-attach via task_relations
2432
+ // type=groups (ADR-073 §1.2 invariant I5). Idempotent.
2433
+ gateway: 'mutate',
2434
+ domain: 'tasks',
2435
+ operation: 'saga.repair',
2436
+ description: 'tasks.saga.repair (mutate) — detach I5-violating parentId and re-attach via task_relations type=groups; idempotent',
2437
+ tier: 0,
2438
+ idempotent: true,
2439
+ sessionRequired: false,
2440
+ requiredParams: ['sagaId'],
2441
+ params: [
2442
+ {
2443
+ name: 'sagaId',
2444
+ type: 'string',
2445
+ required: true,
2446
+ description: 'Saga task ID (must have label=saga)',
2447
+ cli: { positional: true },
2448
+ },
2449
+ ],
2450
+ },
2451
+ {
2452
+ // T10121 — idempotent cron-safe saga auto-close repair. Re-applies
2453
+ // T10116 logic for sagas whose members reached 100% terminal via paths
2454
+ // OTHER than completeTask (bulk SQL, crash recovery, manual edits).
2455
+ // Supersedes T10098 standalone scope.
2456
+ gateway: 'mutate',
2457
+ domain: 'tasks',
2458
+ operation: 'saga.reconcile',
2459
+ description: 'tasks.saga.reconcile (mutate) — idempotent cron-safe saga auto-close repair; per-saga advisory lock + audit log; supersedes T10098',
2460
+ tier: 0,
2461
+ idempotent: true,
2462
+ sessionRequired: false,
2463
+ requiredParams: [],
2464
+ params: [
2465
+ {
2466
+ name: 'sagaId',
2467
+ type: 'string',
2468
+ required: false,
2469
+ description: 'Optional saga task ID. Omit to walk every saga.',
2470
+ cli: { positional: true },
2471
+ },
2472
+ {
2473
+ name: 'dryRun',
2474
+ type: 'boolean',
2475
+ required: false,
2476
+ description: 'Report what would happen without mutating rows or writing audit log',
2477
+ },
2478
+ ],
2479
+ },
2398
2480
  {
2399
2481
  gateway: 'mutate',
2400
2482
  domain: 'tasks',