@paths.design/caws-cli 11.1.7 → 11.1.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 (158) hide show
  1. package/dist/index.js +55 -58
  2. package/dist/init/hook-packs/manifest-claude-code.d.ts +1 -1
  3. package/dist/init/hook-packs/manifest-claude-code.d.ts.map +1 -1
  4. package/dist/init/hook-packs/manifest-claude-code.js +260 -2
  5. package/dist/init/hook-packs/manifest-claude-code.js.map +1 -1
  6. package/dist/shell/binding/resolve-binding.d.ts.map +1 -1
  7. package/dist/shell/binding/resolve-binding.js +105 -1
  8. package/dist/shell/binding/resolve-binding.js.map +1 -1
  9. package/dist/shell/binding/types.d.ts +47 -3
  10. package/dist/shell/binding/types.d.ts.map +1 -1
  11. package/dist/shell/command-metadata.d.ts +93 -0
  12. package/dist/shell/command-metadata.d.ts.map +1 -0
  13. package/dist/shell/command-metadata.js +687 -0
  14. package/dist/shell/command-metadata.js.map +1 -0
  15. package/dist/shell/commands/agents.d.ts +1 -2
  16. package/dist/shell/commands/agents.d.ts.map +1 -1
  17. package/dist/shell/commands/claim.d.ts +16 -0
  18. package/dist/shell/commands/claim.d.ts.map +1 -1
  19. package/dist/shell/commands/claim.js +85 -26
  20. package/dist/shell/commands/claim.js.map +1 -1
  21. package/dist/shell/commands/events.d.ts +106 -0
  22. package/dist/shell/commands/events.d.ts.map +1 -0
  23. package/dist/shell/commands/events.js +510 -0
  24. package/dist/shell/commands/events.js.map +1 -0
  25. package/dist/shell/commands/gates.d.ts +2 -2
  26. package/dist/shell/commands/gates.d.ts.map +1 -1
  27. package/dist/shell/commands/gates.js +106 -25
  28. package/dist/shell/commands/gates.js.map +1 -1
  29. package/dist/shell/commands/init.d.ts.map +1 -1
  30. package/dist/shell/commands/init.js +26 -0
  31. package/dist/shell/commands/init.js.map +1 -1
  32. package/dist/shell/commands/prepush.d.ts +26 -0
  33. package/dist/shell/commands/prepush.d.ts.map +1 -0
  34. package/dist/shell/commands/prepush.js +373 -0
  35. package/dist/shell/commands/prepush.js.map +1 -0
  36. package/dist/shell/commands/scope.d.ts.map +1 -1
  37. package/dist/shell/commands/scope.js +31 -1
  38. package/dist/shell/commands/scope.js.map +1 -1
  39. package/dist/shell/commands/specs.d.ts +44 -3
  40. package/dist/shell/commands/specs.d.ts.map +1 -1
  41. package/dist/shell/commands/specs.js +411 -15
  42. package/dist/shell/commands/specs.js.map +1 -1
  43. package/dist/shell/commands/worktree.d.ts.map +1 -1
  44. package/dist/shell/commands/worktree.js +51 -1
  45. package/dist/shell/commands/worktree.js.map +1 -1
  46. package/dist/shell/gates/disposition.d.ts.map +1 -1
  47. package/dist/shell/gates/disposition.js +43 -2
  48. package/dist/shell/gates/disposition.js.map +1 -1
  49. package/dist/shell/index.d.ts +10 -4
  50. package/dist/shell/index.d.ts.map +1 -1
  51. package/dist/shell/index.js +22 -2
  52. package/dist/shell/index.js.map +1 -1
  53. package/dist/shell/legacy-command-map.js +832 -0
  54. package/dist/shell/push-range/classify-range.d.ts +99 -0
  55. package/dist/shell/push-range/classify-range.d.ts.map +1 -0
  56. package/dist/shell/push-range/classify-range.js +155 -0
  57. package/dist/shell/push-range/classify-range.js.map +1 -0
  58. package/dist/shell/push-range/scope-match.d.ts +13 -0
  59. package/dist/shell/push-range/scope-match.d.ts.map +1 -0
  60. package/dist/shell/push-range/scope-match.js +53 -0
  61. package/dist/shell/push-range/scope-match.js.map +1 -0
  62. package/dist/shell/register.d.ts.map +1 -1
  63. package/dist/shell/register.js +263 -228
  64. package/dist/shell/register.js.map +1 -1
  65. package/dist/shell/registered-command-groups.js +48 -0
  66. package/dist/shell/rules.d.ts +19 -0
  67. package/dist/shell/rules.d.ts.map +1 -1
  68. package/dist/shell/rules.js +27 -0
  69. package/dist/shell/rules.js.map +1 -1
  70. package/dist/shell/session/resolve-session.d.ts +29 -1
  71. package/dist/shell/session/resolve-session.d.ts.map +1 -1
  72. package/dist/shell/session/resolve-session.js +817 -11
  73. package/dist/shell/session/resolve-session.js.map +1 -1
  74. package/dist/shell/session/types.d.ts +127 -1
  75. package/dist/shell/session/types.d.ts.map +1 -1
  76. package/dist/shell/session/types.js +10 -4
  77. package/dist/shell/session/types.js.map +1 -1
  78. package/dist/store/doctor-snapshot.d.ts.map +1 -1
  79. package/dist/store/doctor-snapshot.js +26 -0
  80. package/dist/store/doctor-snapshot.js.map +1 -1
  81. package/dist/store/events-migration.d.ts +207 -0
  82. package/dist/store/events-migration.d.ts.map +1 -0
  83. package/dist/store/events-migration.js +358 -0
  84. package/dist/store/events-migration.js.map +1 -0
  85. package/dist/store/events-store.d.ts +47 -1
  86. package/dist/store/events-store.d.ts.map +1 -1
  87. package/dist/store/events-store.js +278 -0
  88. package/dist/store/events-store.js.map +1 -1
  89. package/dist/store/git-autocommit.d.ts +46 -0
  90. package/dist/store/git-autocommit.d.ts.map +1 -0
  91. package/dist/store/git-autocommit.js +198 -0
  92. package/dist/store/git-autocommit.js.map +1 -0
  93. package/dist/store/index.d.ts +4 -1
  94. package/dist/store/index.d.ts.map +1 -1
  95. package/dist/store/index.js +7 -1
  96. package/dist/store/index.js.map +1 -1
  97. package/dist/store/leases-store.d.ts.map +1 -1
  98. package/dist/store/leases-store.js +58 -0
  99. package/dist/store/leases-store.js.map +1 -1
  100. package/dist/store/rules.d.ts +53 -0
  101. package/dist/store/rules.d.ts.map +1 -1
  102. package/dist/store/rules.js +54 -0
  103. package/dist/store/rules.js.map +1 -1
  104. package/dist/store/specs-migration.d.ts +128 -0
  105. package/dist/store/specs-migration.d.ts.map +1 -0
  106. package/dist/store/specs-migration.js +481 -0
  107. package/dist/store/specs-migration.js.map +1 -0
  108. package/dist/store/specs-store.d.ts.map +1 -1
  109. package/dist/store/specs-store.js +14 -2
  110. package/dist/store/specs-store.js.map +1 -1
  111. package/dist/store/specs-writer.d.ts +130 -3
  112. package/dist/store/specs-writer.d.ts.map +1 -1
  113. package/dist/store/specs-writer.js +941 -102
  114. package/dist/store/specs-writer.js.map +1 -1
  115. package/dist/store/types.d.ts +6 -0
  116. package/dist/store/types.d.ts.map +1 -1
  117. package/dist/store/waivers-store.d.ts.map +1 -1
  118. package/dist/store/waivers-store.js +8 -1
  119. package/dist/store/waivers-store.js.map +1 -1
  120. package/dist/store/worktrees-writer.d.ts +28 -0
  121. package/dist/store/worktrees-writer.d.ts.map +1 -1
  122. package/dist/store/worktrees-writer.js +110 -12
  123. package/dist/store/worktrees-writer.js.map +1 -1
  124. package/package.json +5 -2
  125. package/templates/hook-packs/claude-code/CLAUDE.md +7 -1
  126. package/templates/hook-packs/claude-code/agent-heartbeat.sh +1 -1
  127. package/templates/hook-packs/claude-code/agent-register.sh +1 -1
  128. package/templates/hook-packs/claude-code/agent-stop.sh +1 -1
  129. package/templates/hook-packs/claude-code/audit.sh +1 -1
  130. package/templates/hook-packs/claude-code/block-dangerous.sh +1 -1
  131. package/templates/hook-packs/claude-code/classify_command.py +1 -1
  132. package/templates/hook-packs/claude-code/cwd-guard.sh +30 -0
  133. package/templates/hook-packs/claude-code/dispatch/post_tool_use.sh +15 -4
  134. package/templates/hook-packs/claude-code/dispatch/pre_tool_use.sh +10 -2
  135. package/templates/hook-packs/claude-code/dispatch/session_start.sh +1 -1
  136. package/templates/hook-packs/claude-code/dispatch/stop.sh +2 -2
  137. package/templates/hook-packs/claude-code/duplicate-export-check.sh +156 -0
  138. package/templates/hook-packs/claude-code/god-object-check.sh +102 -0
  139. package/templates/hook-packs/claude-code/guard-strikes.sh +1 -1
  140. package/templates/hook-packs/claude-code/lib/parse-input.sh +115 -1
  141. package/templates/hook-packs/claude-code/lib/run-handlers.sh +1 -1
  142. package/templates/hook-packs/claude-code/loc-delta-check.sh +91 -0
  143. package/templates/hook-packs/claude-code/naming-check.sh +128 -0
  144. package/templates/hook-packs/claude-code/plan-transcript-finalize.sh +59 -0
  145. package/templates/hook-packs/claude-code/plan-transcript-snapshot.sh +86 -0
  146. package/templates/hook-packs/claude-code/protected-paths.sh +59 -0
  147. package/templates/hook-packs/claude-code/quiet-merge.sh +68 -0
  148. package/templates/hook-packs/claude-code/reset-danger-latch.sh +1 -1
  149. package/templates/hook-packs/claude-code/reset-strikes.sh +1 -1
  150. package/templates/hook-packs/claude-code/runtime-paths.sh +1 -1
  151. package/templates/hook-packs/claude-code/scan-secrets.sh +98 -0
  152. package/templates/hook-packs/claude-code/scope-guard.sh +47 -65
  153. package/templates/hook-packs/claude-code/session-caws-status.sh +1 -1
  154. package/templates/hook-packs/claude-code/session-log.sh +1 -1
  155. package/templates/hook-packs/claude-code/session_log_renderer.py +956 -0
  156. package/templates/hook-packs/claude-code/shortcut-language-check.sh +147 -0
  157. package/templates/hook-packs/claude-code/worktree-guard.sh +1 -1
  158. package/templates/hook-packs/claude-code/worktree-write-guard.sh +1 -1
@@ -54,6 +54,8 @@ var __importStar = (this && this.__importStar) || (function () {
54
54
  Object.defineProperty(exports, "__esModule", { value: true });
55
55
  exports.loadEvents = loadEvents;
56
56
  exports.appendEvent = appendEvent;
57
+ exports.rotateEvents = rotateEvents;
58
+ const crypto = __importStar(require("crypto"));
57
59
  const fs = __importStar(require("fs"));
58
60
  const path = __importStar(require("path"));
59
61
  const caws_kernel_1 = require("@paths.design/caws-kernel");
@@ -223,6 +225,282 @@ function appendEvent(cawsDir, body) {
223
225
  releaseLock(lockFd.value, lockPath);
224
226
  }
225
227
  }
228
+ // ----------------------------------------------------------------------------
229
+ // rotateEvents — sanctioned second writer for chain maintenance
230
+ // ----------------------------------------------------------------------------
231
+ //
232
+ // Per doctrine invariant 14 (docs/architecture/caws-vnext-command-surface.md
233
+ // §6), rotateEvents is the only writer of events.jsonl besides appendEvent.
234
+ // Both functions live in this module, both hold the same lock. Shell commands
235
+ // and migration tooling NEVER write events.jsonl directly; they invoke this
236
+ // function through the exported store surface. The lock primitives below
237
+ // (acquireLock/releaseLock/tryRecoverStaleLock) stay private — exporting them
238
+ // would create a third writer surface by exposing lock acquisition to callers
239
+ // that bypass the canonical functions.
240
+ //
241
+ // Atomicity:
242
+ // The operation is a same-lock single critical section that performs a
243
+ // two-step filesystem transition: rename old file → write new genesis file.
244
+ // On a single filesystem, fs.renameSync is atomic. The genesis write is
245
+ // fsynced before the lock is released. A crash BETWEEN the rename and the
246
+ // genesis write leaves the archive on disk but no new events.jsonl; the
247
+ // next caws command sees "no events.jsonl, create on first append" (per
248
+ // invariant 5: events.jsonl is never required at rest), and the archive
249
+ // is still verifiable by hash if the operator preserved the digest
250
+ // out-of-band. A crash DURING the rename is a no-op (rename is atomic).
251
+ //
252
+ // Validation chain (doctrine nuance — see invariant 1 amendment):
253
+ // The chain_rotated body is constructed in-memory by this function, then
254
+ // passed to prepareAppend(null, body). prepareAppend invokes
255
+ // validateEventBody, which runs the chain_rotated payload schema and
256
+ // rejects malformed payloads BEFORE any file write. This function does NOT
257
+ // hand-build a ChainedEvent — sequence numbers and hash linkage remain
258
+ // kernel authority.
259
+ const ARCHIVE_PREFIX = 'events.jsonl.archive-';
260
+ /**
261
+ * Rotate the events.jsonl chain: archive the existing file under a
262
+ * timestamped name and write a fresh chain whose genesis event is
263
+ * chain_rotated, cryptographically tying the archive to the new chain
264
+ * via prior_file_digest.
265
+ *
266
+ * Refusals (typed Diagnostic, no file mutations on any refusal path):
267
+ * - EVENTS_ROTATE_NOTHING_TO_ROTATE: file missing or zero-length.
268
+ * - EVENTS_ROTATE_CLEAN_CHAIN_REQUIRES_ALLOW_CLEAN: all entries are
269
+ * structured (v11) actors and allowClean !== true.
270
+ * - EVENTS_PREPARE_APPEND_REJECTED: the constructed chain_rotated body
271
+ * failed kernel validation (programmer error in this function or a
272
+ * schema change drift). Carries kernel diagnostics in data.source_rule.
273
+ * - WRITE_IO_FAILED: rename or genesis-write failed at the FS layer.
274
+ *
275
+ * On success returns the new ChainedEvent (the chain_rotated genesis event
276
+ * that is now the entirety of the new events.jsonl).
277
+ */
278
+ function rotateEvents(cawsDir, opts) {
279
+ const eventsPath = path.join(cawsDir, 'events.jsonl');
280
+ const lockPath = `${eventsPath}.lock`;
281
+ if (!fs.existsSync(cawsDir)) {
282
+ throw new Error(`rotateEvents: cawsDir does not exist: ${cawsDir}`);
283
+ }
284
+ const lockFd = acquireLock(lockPath);
285
+ if (!(0, caws_kernel_1.isOk)(lockFd))
286
+ return (0, caws_kernel_1.err)(lockFd.errors);
287
+ try {
288
+ // ── 1. Refuse if there is nothing to rotate. ──────────────────────────
289
+ let stat;
290
+ try {
291
+ stat = fs.statSync(eventsPath);
292
+ }
293
+ catch (e) {
294
+ const cause = e;
295
+ if (cause.code === 'ENOENT') {
296
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.EVENTS_ROTATE_NOTHING_TO_ROTATE, 'rotateEvents refuses: events.jsonl does not exist.', { subject: eventsPath, data: { code: 'ENOENT' } }));
297
+ }
298
+ throw e;
299
+ }
300
+ if (stat.size === 0) {
301
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.EVENTS_ROTATE_NOTHING_TO_ROTATE, 'rotateEvents refuses: events.jsonl is empty.', { subject: eventsPath, data: { size: 0 } }));
302
+ }
303
+ // ── 2. Read the file once for sha256 + tolerant scan. ────────────────
304
+ // Streaming is overkill for the sizes events.jsonl reaches in practice
305
+ // (sterling's worst case is 1500 lines ≈ a few hundred KB); a single
306
+ // readFileSync is simpler and the lock is held throughout anyway.
307
+ const rawBytes = fs.readFileSync(eventsPath);
308
+ const priorFileDigest = `sha256:${crypto
309
+ .createHash('sha256')
310
+ .update(rawBytes)
311
+ .digest('hex')}`;
312
+ const scanResult = tolerantScanEventsFile(rawBytes.toString('utf8'));
313
+ // ── 3a. Partial-corruption refusal. ───────────────────────────────────
314
+ // A log that has SOME unparseable lines alongside parseable ones
315
+ // cannot be honestly labeled by the prior_chain_status enum:
316
+ // 'parseable_unverified' implies every line parsed, and
317
+ // 'unparseable' implies every line did not. Refuse rather than ship
318
+ // a dishonest label. The fully-unparseable case is still admissible
319
+ // (status: 'unparseable' is the honest label) for operators who
320
+ // explicitly want to archive a fully-corrupt log; the trap is only
321
+ // mixed parseable + unparseable.
322
+ //
323
+ // A future opt-in path (e.g. opts.allowCorruptArchive + a new
324
+ // 'partially_unparseable' enum value on chain_rotated) may be added
325
+ // in a later slice if recovery from partial corruption becomes a
326
+ // first-class operator concern. Not in v11.2 scope.
327
+ const hasPartialCorruption = scanResult.stats.unparseable > 0 &&
328
+ scanResult.stats.unparseable < scanResult.lineCount;
329
+ if (hasPartialCorruption) {
330
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.EVENTS_ROTATE_PARTIAL_CORRUPTION, `rotateEvents refuses: events.jsonl has ${scanResult.stats.unparseable} unparseable line(s) alongside ${scanResult.stats.v10_string_actor + scanResult.stats.v11_object_actor} parseable line(s). Mixed parseable + unparseable cannot be honestly labeled by the chain_rotated payload (no enum value covers the case). Inspect the file and recover manually, or remove the corrupt lines before retrying.`, {
331
+ subject: eventsPath,
332
+ data: { actor_shape_stats: scanResult.stats, lineCount: scanResult.lineCount },
333
+ }));
334
+ }
335
+ // ── 3b. Clean-chain refusal (friction flag). ─────────────────────────
336
+ // A clean v11 chain has only structured actors. Refuse unless the
337
+ // operator explicitly opted in via allowClean: true. The intent is to
338
+ // make general log rotation explicit-and-auditable, not to forbid it.
339
+ const isCleanV11 = scanResult.stats.v10_string_actor === 0 &&
340
+ scanResult.stats.unparseable === 0 &&
341
+ scanResult.stats.v11_object_actor > 0;
342
+ if (isCleanV11 && opts.allowClean !== true) {
343
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.EVENTS_ROTATE_CLEAN_CHAIN_REQUIRES_ALLOW_CLEAN, 'rotateEvents refuses: prior chain is a clean v11 chain (all structured actors); pass allowClean: true (CLI: --allow-clean) to rotate it anyway.', {
344
+ subject: eventsPath,
345
+ data: { actor_shape_stats: scanResult.stats },
346
+ }));
347
+ }
348
+ // ── 4. Build the chain_rotated body. ────────────────────────────────
349
+ const nowDate = opts.now ?? new Date();
350
+ const archiveName = `${ARCHIVE_PREFIX}${windowsSafeIso(nowDate)}`;
351
+ const archivePath = path.join(cawsDir, archiveName);
352
+ const priorChainStatus = scanResult.stats.unparseable > 0 &&
353
+ scanResult.stats.v10_string_actor === 0 &&
354
+ scanResult.stats.v11_object_actor === 0
355
+ ? 'unparseable'
356
+ : 'parseable_unverified';
357
+ const data = {
358
+ prior_tail_hash: scanResult.tailHash,
359
+ prior_file_path: archiveName,
360
+ prior_file_digest: priorFileDigest,
361
+ prior_line_count: scanResult.lineCount,
362
+ prior_chain_status: priorChainStatus,
363
+ actor_shape_stats: scanResult.stats,
364
+ migration_reason: opts.reason,
365
+ };
366
+ if (scanResult.tailSeq !== null) {
367
+ data.prior_seq = scanResult.tailSeq;
368
+ }
369
+ const body = {
370
+ event: 'chain_rotated',
371
+ ts: nowDate.toISOString(),
372
+ actor: opts.actor,
373
+ data,
374
+ };
375
+ // ── 5. Kernel validation BEFORE any file mutation. ──────────────────
376
+ // prepareAppend invokes validateEventBody, which runs the chain_rotated
377
+ // payload schema. A malformed body fails here, no file is touched. This
378
+ // is the doctrine-compliant validation chain (invariant 1 amendment).
379
+ const prepared = (0, caws_kernel_1.prepareAppend)(null, body);
380
+ if (!(0, caws_kernel_1.isOk)(prepared)) {
381
+ const wrapped = prepared.errors.map((d) => ({
382
+ ...d,
383
+ rule: rules_1.STORE_RULES.EVENTS_PREPARE_APPEND_REJECTED,
384
+ data: { ...(d.data ?? {}), source_rule: d.rule },
385
+ }));
386
+ return (0, caws_kernel_1.err)(wrapped);
387
+ }
388
+ const genesisEvent = prepared.value;
389
+ const genesisLine = JSON.stringify(genesisEvent) + '\n';
390
+ // ── 6. Two-step filesystem transition: rename then write+fsync. ────
391
+ // Both steps are inside the same lock critical section. Same-filesystem
392
+ // rename is atomic; the new genesis write is fsynced before lock
393
+ // release. A crash between rename and genesis-write leaves the archive
394
+ // intact and no events.jsonl, recoverable per invariant 5.
395
+ try {
396
+ fs.renameSync(eventsPath, archivePath);
397
+ }
398
+ catch (e) {
399
+ const cause = e;
400
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.WRITE_IO_FAILED, `Failed to rename events.jsonl to archive: ${cause.message ?? 'unknown error'}.`, {
401
+ subject: eventsPath,
402
+ data: { code: cause.code, archivePath },
403
+ }));
404
+ }
405
+ let fd;
406
+ try {
407
+ fd = fs.openSync(eventsPath, 'w');
408
+ fs.writeFileSync(fd, genesisLine);
409
+ fs.fsyncSync(fd);
410
+ }
411
+ catch (e) {
412
+ const cause = e;
413
+ return (0, caws_kernel_1.err)((0, repo_root_1.storeDiagnostic)(rules_1.STORE_RULES.WRITE_IO_FAILED, `Failed to write chain_rotated genesis event after archive rename: ${cause.message ?? 'unknown error'}. The archive at ${archivePath} is intact; the next caws command will see no events.jsonl and create one on first append (per doctrine invariant 5).`, {
414
+ subject: eventsPath,
415
+ data: { code: cause.code, archivePath },
416
+ }));
417
+ }
418
+ finally {
419
+ if (fd !== undefined) {
420
+ try {
421
+ fs.closeSync(fd);
422
+ }
423
+ catch {
424
+ /* ignore */
425
+ }
426
+ }
427
+ }
428
+ return (0, caws_kernel_1.ok)(genesisEvent);
429
+ }
430
+ finally {
431
+ releaseLock(lockFd.value, lockPath);
432
+ }
433
+ }
434
+ function tolerantScanEventsFile(raw) {
435
+ const trailingNewline = raw.endsWith('\n');
436
+ const parts = raw.split('\n');
437
+ const lines = trailingNewline ? parts.slice(0, -1) : parts;
438
+ const nonEmpty = lines.filter((l) => l.length > 0);
439
+ let v10 = 0;
440
+ let v11 = 0;
441
+ let bad = 0;
442
+ let tailHash = null;
443
+ let tailSeq = null;
444
+ for (let i = 0; i < nonEmpty.length; i++) {
445
+ const line = nonEmpty[i];
446
+ let parsed;
447
+ try {
448
+ parsed = JSON.parse(line);
449
+ }
450
+ catch {
451
+ bad += 1;
452
+ continue;
453
+ }
454
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
455
+ bad += 1;
456
+ continue;
457
+ }
458
+ const obj = parsed;
459
+ const actor = obj['actor'];
460
+ if (typeof actor === 'string') {
461
+ v10 += 1;
462
+ }
463
+ else if (actor !== null &&
464
+ typeof actor === 'object' &&
465
+ !Array.isArray(actor) &&
466
+ typeof actor['kind'] === 'string') {
467
+ v11 += 1;
468
+ }
469
+ else {
470
+ bad += 1;
471
+ }
472
+ // Tail extraction: only the last non-empty line contributes; only
473
+ // accept event_hash/seq if their shapes look right (no full validation).
474
+ if (i === nonEmpty.length - 1) {
475
+ const eh = obj['event_hash'];
476
+ if (typeof eh === 'string' && /^sha256:[0-9a-f]{64}$/.test(eh)) {
477
+ tailHash = eh;
478
+ }
479
+ const sq = obj['seq'];
480
+ if (typeof sq === 'number' && Number.isInteger(sq) && sq >= 1) {
481
+ tailSeq = sq;
482
+ }
483
+ }
484
+ }
485
+ return {
486
+ stats: {
487
+ v10_string_actor: v10,
488
+ v11_object_actor: v11,
489
+ unparseable: bad,
490
+ },
491
+ lineCount: nonEmpty.length,
492
+ tailHash,
493
+ tailSeq,
494
+ };
495
+ }
496
+ /**
497
+ * Windows-safe ISO timestamp for archive filenames. Replaces ':' with '-'
498
+ * (colons are forbidden in Windows filesystem names) while keeping the
499
+ * sortable yyyy-mm-ddThh-mm-ss-sssZ shape.
500
+ */
501
+ function windowsSafeIso(d) {
502
+ return d.toISOString().replace(/:/g, '-').replace(/\./g, '-');
503
+ }
226
504
  function acquireLock(lockPath) {
227
505
  for (let attempt = 0; attempt < LOCK_MAX_ATTEMPTS; attempt++) {
228
506
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"events-store.js","sourceRoot":"","sources":["../../src/store/events-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events-store.js","sourceRoot":"","sources":["../../src/store/events-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export type AutoCommitKind = 'committed' | 'refused_dirty' | 'skipped_no_git';
2
+ export interface AutoCommitOutcome {
3
+ readonly kind: AutoCommitKind;
4
+ /** Present only when kind === 'committed'. The short sha of the
5
+ * resulting commit. */
6
+ readonly sha?: string;
7
+ /** Present when kind === 'refused_dirty'. A human-readable reason
8
+ * the caller should surface to the user. */
9
+ readonly reason?: string;
10
+ }
11
+ export interface AutoCommitInput {
12
+ /** Absolute path to the repo root. Used as cwd for git operations. */
13
+ readonly repoRoot: string;
14
+ /** Paths to stage and commit, repo-root-relative. Must be the exact
15
+ * set the writer wrote. Other dirty files will NOT be staged. */
16
+ readonly paths: readonly string[];
17
+ /** Conventional commit message. Should start with `chore(caws): `. */
18
+ readonly message: string;
19
+ /** Whether ANY of the target paths were dirty before the writer's
20
+ * own write. The caller knows this; the utility cannot rederive it
21
+ * after the write has landed. */
22
+ readonly wasDirtyBeforeWrite: boolean;
23
+ }
24
+ /**
25
+ * Stage and commit CAWS-authored writes as the final step of a
26
+ * lifecycle transaction.
27
+ *
28
+ * Returns an outcome describing what happened; never throws. Callers
29
+ * should treat all three outcome kinds as non-fatal: a refused or
30
+ * skipped commit does NOT mean the writer's transaction failed, only
31
+ * that the audit-trail commit could not be authored automatically.
32
+ */
33
+ export declare function autoCommit(input: AutoCommitInput): AutoCommitOutcome;
34
+ /**
35
+ * Helper: detect whether a path is dirty in the working tree. Callers
36
+ * that need to populate `wasDirtyBeforeWrite` can use this BEFORE
37
+ * calling fs.writeFileSync.
38
+ */
39
+ export declare function isPathDirty(repoRoot: string, relPath: string): boolean;
40
+ /**
41
+ * Helper: convert an absolute path to a repo-root-relative path. The
42
+ * autocommit utility wants relative paths so git diff/add output is
43
+ * stable across cwds.
44
+ */
45
+ export declare function relativeToRepoRoot(repoRoot: string, abs: string): string;
46
+ //# sourceMappingURL=git-autocommit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-autocommit.d.ts","sourceRoot":"","sources":["../../src/store/git-autocommit.ts"],"names":[],"mappings":"AA+CA,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B;4BACwB;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;iDAC6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;sEACkE;IAClE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;sCAEkC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CA0EpE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAItE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ // Shared utility for committing CAWS-authored writes to canonical state.
3
+ //
4
+ // CAWS-FIRST-CONTACT-UX-001 Fix 5/6.
5
+ //
6
+ // Problem: every caws subcommand that mutates .caws/worktrees.json (or
7
+ // other governance files) writes the file but does NOT commit it. The
8
+ // next agent walks in, sees a dirty registry, and either commits it
9
+ // blindly, leaves it, or stashes — each path produces different
10
+ // downstream confusion. Without a CLI-authored commit, no agent ever
11
+ // has a clean baseline to work from.
12
+ //
13
+ // Solution: this module exposes one function, `autoCommit`, that the
14
+ // worktrees-writer (and similar writers) call as the final step of a
15
+ // successful lifecycle transaction. The function is total over three
16
+ // observable states:
17
+ //
18
+ // 1. cwd is NOT inside a git working tree -> skip with kind:'skipped_no_git'
19
+ // (defense-in-depth; caws worktree commands cannot reach this
20
+ // branch in production because resolveRepoRoot requires git)
21
+ //
22
+ // 2. target file was dirty BEFORE the writer's own write (i.e. there
23
+ // were unrelated uncommitted changes to the file already) -> refuse
24
+ // commit with kind:'refused_dirty'. The writer's change still lands
25
+ // in the working tree; the user resolves manually.
26
+ //
27
+ // 3. target file was clean BEFORE the writer's own write -> commit
28
+ // succeeds with kind:'committed' and the resulting sha.
29
+ //
30
+ // The utility intentionally does NOT use --no-verify, --no-gpg-sign,
31
+ // or any hook-bypass flag. It interacts with whatever pre-commit /
32
+ // commit-msg hooks the consumer project has installed. Upstream caws
33
+ // ships no .git/hooks/pre-commit, so a vanilla caws-init'd project has
34
+ // nothing to interact with; downstream consumers (like Sterling) that
35
+ // install their own hooks remain responsible for admitting
36
+ // `chore(caws):` commits if they want CAWS auto-commits to land
37
+ // without manual hook configuration.
38
+ //
39
+ // The dirty-detection contract is "dirty before the writer's own
40
+ // write." The caller passes in `wasDirtyBeforeWrite: boolean` because
41
+ // only the caller knows what state the file was in before it called
42
+ // fs.writeFileSync. The utility does not try to re-derive that by
43
+ // reading git twice (race-prone and ambiguous: a dirty file with the
44
+ // writer's change applied looks identical to a dirty file without).
45
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
46
+ if (k2 === undefined) k2 = k;
47
+ var desc = Object.getOwnPropertyDescriptor(m, k);
48
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
49
+ desc = { enumerable: true, get: function() { return m[k]; } };
50
+ }
51
+ Object.defineProperty(o, k2, desc);
52
+ }) : (function(o, m, k, k2) {
53
+ if (k2 === undefined) k2 = k;
54
+ o[k2] = m[k];
55
+ }));
56
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
57
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
58
+ }) : function(o, v) {
59
+ o["default"] = v;
60
+ });
61
+ var __importStar = (this && this.__importStar) || (function () {
62
+ var ownKeys = function(o) {
63
+ ownKeys = Object.getOwnPropertyNames || function (o) {
64
+ var ar = [];
65
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
66
+ return ar;
67
+ };
68
+ return ownKeys(o);
69
+ };
70
+ return function (mod) {
71
+ if (mod && mod.__esModule) return mod;
72
+ var result = {};
73
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
74
+ __setModuleDefault(result, mod);
75
+ return result;
76
+ };
77
+ })();
78
+ Object.defineProperty(exports, "__esModule", { value: true });
79
+ exports.autoCommit = autoCommit;
80
+ exports.isPathDirty = isPathDirty;
81
+ exports.relativeToRepoRoot = relativeToRepoRoot;
82
+ const child_process_1 = require("child_process");
83
+ const path = __importStar(require("path"));
84
+ function runGit(args, cwd) {
85
+ try {
86
+ const stdout = (0, child_process_1.execFileSync)('git', [...args], {
87
+ cwd,
88
+ encoding: 'utf8',
89
+ stdio: ['ignore', 'pipe', 'pipe'],
90
+ });
91
+ return { ok: true, stdout: stdout.toString() };
92
+ }
93
+ catch (e) {
94
+ const cause = e;
95
+ const stderr = cause.stderr instanceof Buffer
96
+ ? cause.stderr.toString()
97
+ : typeof cause.stderr === 'string'
98
+ ? cause.stderr
99
+ : '';
100
+ const message = typeof cause.message === 'string' ? cause.message : '';
101
+ return { ok: false, reason: stderr || message || 'unknown git error' };
102
+ }
103
+ }
104
+ function isInsideGitWorkingTree(cwd) {
105
+ const r = runGit(['rev-parse', '--is-inside-work-tree'], cwd);
106
+ if (!r.ok)
107
+ return false;
108
+ return r.stdout.trim() === 'true';
109
+ }
110
+ /**
111
+ * Stage and commit CAWS-authored writes as the final step of a
112
+ * lifecycle transaction.
113
+ *
114
+ * Returns an outcome describing what happened; never throws. Callers
115
+ * should treat all three outcome kinds as non-fatal: a refused or
116
+ * skipped commit does NOT mean the writer's transaction failed, only
117
+ * that the audit-trail commit could not be authored automatically.
118
+ */
119
+ function autoCommit(input) {
120
+ if (!isInsideGitWorkingTree(input.repoRoot)) {
121
+ return { kind: 'skipped_no_git' };
122
+ }
123
+ if (input.wasDirtyBeforeWrite) {
124
+ return {
125
+ kind: 'refused_dirty',
126
+ reason: `${input.paths.join(', ')} was dirty before the caws write. ` +
127
+ 'The caws write has been applied to the working tree but not committed. ' +
128
+ 'Resolve the prior change manually (git add + git commit, or git checkout -- <path> to discard), ' +
129
+ 'then re-run the caws command if you want a clean audit commit.',
130
+ };
131
+ }
132
+ // Stage exactly the writer's paths. Do NOT use `git add -A` —
133
+ // that would silently stage unrelated dirty files.
134
+ const addResult = runGit(['add', '--', ...input.paths], input.repoRoot);
135
+ if (!addResult.ok) {
136
+ return {
137
+ kind: 'refused_dirty',
138
+ reason: `git add failed: ${addResult.reason.trim()}`,
139
+ };
140
+ }
141
+ // Check whether `git add` actually staged anything. If the writer's
142
+ // write was a no-op (file already matched), there's nothing to
143
+ // commit and we should NOT create an empty commit.
144
+ const diffCached = runGit(['diff', '--cached', '--name-only', '--', ...input.paths], input.repoRoot);
145
+ if (!diffCached.ok) {
146
+ return {
147
+ kind: 'refused_dirty',
148
+ reason: `git diff --cached failed: ${diffCached.reason.trim()}`,
149
+ };
150
+ }
151
+ if (diffCached.stdout.trim().length === 0) {
152
+ // Nothing to commit. Treat as 'committed' with no sha — the
153
+ // writer's intended state IS already in HEAD.
154
+ return { kind: 'committed', sha: '' };
155
+ }
156
+ // Commit ONLY the writer's own paths via an explicit pathspec.
157
+ // A bare `git commit -m <msg>` commits the ENTIRE index, which under
158
+ // a shared cross-worktree index (a concurrent sibling session may have
159
+ // pre-staged unrelated files) would sweep those foreign files into a
160
+ // CAWS lifecycle commit — the exact cross-session attribution failure
161
+ // CAWS exists to prevent. Path-scoping the commit makes it total over
162
+ // ambient index state: only `input.paths` are committed, whatever else
163
+ // is staged. (CAWS-AUTOCOMMIT-INTEGRITY-001)
164
+ const commitResult = runGit(['commit', '-m', input.message, '--', ...input.paths], input.repoRoot);
165
+ if (!commitResult.ok) {
166
+ // Commit failed. Most likely a pre-commit hook refused (downstream
167
+ // consumer hooks, not anything CAWS ships). Surface the hook's
168
+ // reason verbatim; do NOT retry with --no-verify.
169
+ return {
170
+ kind: 'refused_dirty',
171
+ reason: `git commit failed: ${commitResult.reason.trim()}`,
172
+ };
173
+ }
174
+ // Capture the resulting sha for evidence/audit.
175
+ const shaResult = runGit(['rev-parse', '--short', 'HEAD'], input.repoRoot);
176
+ const sha = shaResult.ok ? shaResult.stdout.trim() : '';
177
+ return { kind: 'committed', sha };
178
+ }
179
+ /**
180
+ * Helper: detect whether a path is dirty in the working tree. Callers
181
+ * that need to populate `wasDirtyBeforeWrite` can use this BEFORE
182
+ * calling fs.writeFileSync.
183
+ */
184
+ function isPathDirty(repoRoot, relPath) {
185
+ const r = runGit(['status', '--porcelain', '--', relPath], repoRoot);
186
+ if (!r.ok)
187
+ return false;
188
+ return r.stdout.trim().length > 0;
189
+ }
190
+ /**
191
+ * Helper: convert an absolute path to a repo-root-relative path. The
192
+ * autocommit utility wants relative paths so git diff/add output is
193
+ * stable across cwds.
194
+ */
195
+ function relativeToRepoRoot(repoRoot, abs) {
196
+ return path.relative(repoRoot, abs);
197
+ }
198
+ //# sourceMappingURL=git-autocommit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-autocommit.js","sourceRoot":"","sources":["../../src/store/git-autocommit.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@ export { fsyncDir, writeFileAtomic } from './atomic-write';
7
7
  export { readJsonFile } from './json-store';
8
8
  export { readYamlFile, readYamlSource } from './yaml-store';
9
9
  export { loadSpecs } from './specs-store';
10
+ export { runSpecsMigrateScan, runSpecsMigrateApply, MIGRATION_REPORT_SCHEMA_VERSION, } from './specs-migration';
11
+ export type { ScanEntry, ScanReport, ReportEntry, ReportVerdict, MigrationReport, ApplyResult as SpecsMigrateApplyResult, ScanOptions as SpecsMigrateScanOptions, ApplyOptions as SpecsMigrateApplyOptions, NonYamlObservation, } from './specs-migration';
10
12
  export { loadPolicy } from './policy-store';
11
13
  export { loadWorktrees } from './worktrees-store';
12
14
  export { loadAgents } from './agents-store';
13
- export { appendEvent, loadEvents } from './events-store';
15
+ export { appendEvent, loadEvents, rotateEvents } from './events-store';
16
+ export type { RotateEventsOptions } from './events-store';
14
17
  export { applyRegistryPatch } from './apply-patch';
15
18
  export { safeLeaseFilename, loadLeases, applyLeasePatch, applyLeasePatches, pruneLeasesByStatus, } from './leases-store';
16
19
  export type { LoadLeasesResult, PruneOptions, PruneResult, } from './leases-store';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,WAAW,IAAI,uBAAuB,EACtC,WAAW,IAAI,uBAAuB,EACtC,YAAY,IAAI,wBAAwB,EACxC,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKnD,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC"}