@codyswann/lisa 4.10.14 → 4.11.0

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 (121) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +4 -1
  2. package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +132 -43
  3. package/dist/cli/doctor-worktree-hygiene.d.ts +5 -2
  4. package/dist/cli/doctor-worktree-hygiene.d.ts.map +1 -1
  5. package/dist/cli/doctor-worktree-hygiene.js +12 -6
  6. package/dist/cli/doctor-worktree-hygiene.js.map +1 -1
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/prune-commands.d.ts +52 -0
  11. package/dist/cli/prune-commands.d.ts.map +1 -0
  12. package/dist/cli/prune-commands.js +158 -0
  13. package/dist/cli/prune-commands.js.map +1 -0
  14. package/dist/cli/prune-report.d.ts +40 -0
  15. package/dist/cli/prune-report.d.ts.map +1 -0
  16. package/dist/cli/prune-report.js +81 -0
  17. package/dist/cli/prune-report.js.map +1 -0
  18. package/dist/cli/stash-prune-policy.d.ts +72 -0
  19. package/dist/cli/stash-prune-policy.d.ts.map +1 -0
  20. package/dist/cli/stash-prune-policy.js +90 -0
  21. package/dist/cli/stash-prune-policy.js.map +1 -0
  22. package/dist/cli/stash-prune.d.ts +104 -0
  23. package/dist/cli/stash-prune.d.ts.map +1 -0
  24. package/dist/cli/stash-prune.js +206 -0
  25. package/dist/cli/stash-prune.js.map +1 -0
  26. package/dist/cli/worktree-inventory.d.ts +82 -0
  27. package/dist/cli/worktree-inventory.d.ts.map +1 -0
  28. package/dist/cli/worktree-inventory.js +195 -0
  29. package/dist/cli/worktree-inventory.js.map +1 -0
  30. package/dist/cli/worktree-liveness.d.ts +52 -0
  31. package/dist/cli/worktree-liveness.d.ts.map +1 -0
  32. package/dist/cli/worktree-liveness.js +124 -0
  33. package/dist/cli/worktree-liveness.js.map +1 -0
  34. package/dist/cli/worktree-ownership.d.ts +65 -0
  35. package/dist/cli/worktree-ownership.d.ts.map +1 -0
  36. package/dist/cli/worktree-ownership.js +142 -0
  37. package/dist/cli/worktree-ownership.js.map +1 -0
  38. package/dist/cli/worktree-prune-policy.d.ts +76 -0
  39. package/dist/cli/worktree-prune-policy.d.ts.map +1 -0
  40. package/dist/cli/worktree-prune-policy.js +114 -0
  41. package/dist/cli/worktree-prune-policy.js.map +1 -0
  42. package/dist/cli/worktree-prune.d.ts +96 -0
  43. package/dist/cli/worktree-prune.d.ts.map +1 -0
  44. package/dist/cli/worktree-prune.js +153 -0
  45. package/dist/cli/worktree-prune.js.map +1 -0
  46. package/dist/codex/scripts/block-no-verify.sh +4 -1
  47. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  48. package/dist/core/lisa-owned-hash-ledger.js +4 -0
  49. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  50. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  51. package/dist/core/upstream-evidence-manifest.js +23 -6
  52. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  53. package/dist/opencode/plugin-templates/block-no-verify.sh +4 -1
  54. package/dist/opencode/plugin-templates/parity-safety-net.sh +132 -43
  55. package/package.json +1 -1
  56. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  58. package/plugins/lisa/hooks/block-no-verify.agy.sh +4 -1
  59. package/plugins/lisa/hooks/block-no-verify.sh +4 -1
  60. package/plugins/lisa/hooks/parity-safety-net.sh +132 -43
  61. package/plugins/lisa/rules/reference/base-rules.md +1 -1
  62. package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +4 -1
  63. package/plugins/lisa-agy/hooks/parity-safety-net.sh +132 -43
  64. package/plugins/lisa-agy/plugin.json +1 -1
  65. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  68. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-copilot/hooks/block-no-verify.sh +4 -1
  72. package/plugins/lisa-copilot/hooks/parity-safety-net.sh +132 -43
  73. package/plugins/lisa-copilot/rules/reference/base-rules.md +1 -1
  74. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-cursor/hooks/block-no-verify.sh +4 -1
  76. package/plugins/lisa-cursor/hooks/parity-safety-net.sh +132 -43
  77. package/plugins/lisa-cursor/rules/base-rules-reference.mdc +1 -1
  78. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  80. package/plugins/lisa-expo-agy/plugin.json +1 -1
  81. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  85. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  86. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  90. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  91. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  95. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  96. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  101. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  105. package/plugins/lisa-rails-agy/plugin.json +1 -1
  106. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  110. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  111. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  113. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  114. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  115. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  116. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  118. package/plugins/src/base/hooks/block-no-verify.agy.sh +4 -1
  119. package/plugins/src/base/hooks/block-no-verify.sh +4 -1
  120. package/plugins/src/base/hooks/parity-safety-net.sh +132 -43
  121. package/plugins/src/base/rules/reference/base-rules.md +1 -1
@@ -112,7 +112,10 @@ def strip_heredocs(text: str) -> str:
112
112
  words = shlex.split(raw, posix=True)
113
113
  except ValueError:
114
114
  return None
115
- return words[0] if len(words) == 1 and words[0] else None
115
+ # An explicitly quoted empty word is a valid heredoc delimiter. Bash
116
+ # terminates that heredoc on the next empty line, so preserve "" as a
117
+ # marker instead of treating it as a parse failure.
118
+ return words[0] if len(words) == 1 else None
116
119
 
117
120
  index = 0
118
121
  while index < len(lines):
@@ -447,7 +447,8 @@ rm_scan_scope() {
447
447
  printf '%s' "$stmt"
448
448
  return
449
449
  fi
450
- local i=0 ch q="" esc=0 outside="" cur_run="" first_rm_run="" found=0
450
+ local i=0 ch q="" esc=0 outside="" cur_run="" rm_runs="" found=0
451
+ local run_leading=0
451
452
  while [ "$i" -lt "$n" ]; do
452
453
  ch="${stmt:i:1}"
453
454
  i=$((i + 1))
@@ -462,16 +463,19 @@ rm_scan_scope() {
462
463
  fi
463
464
  if [ -n "$q" ]; then
464
465
  if [ "$ch" = "$q" ]; then
465
- if [ "$found" -eq 0 ]; then
466
- case "$cur_run" in
467
- *[Rr][Mm]*)
468
- if scan -Ei "$cur_run" "$RM_CMD"'([[:space:]]|$)'; then
469
- found=1
470
- first_rm_run="$cur_run"
466
+ case "$cur_run" in
467
+ *[Rr][Mm]*)
468
+ if scan -Ei "$cur_run" "$RM_CMD"'([[:space:]]|$)'; then
469
+ found=$((found + 1))
470
+ if [ -n "$rm_runs" ]; then rm_runs="$rm_runs"$'\n'; fi
471
+ rm_runs="$rm_runs$cur_run"
472
+ if scan -Ei "$cur_run" \
473
+ '^[[:space:]]*(\\|\$\(|`|\(|<\(|>\()*[[:space:]]*([[:alnum:]_./-]*/)?rm([[:space:]]|$)'; then
474
+ run_leading=1
471
475
  fi
472
- ;;
473
- esac
474
- fi
476
+ fi
477
+ ;;
478
+ esac
475
479
  q=""
476
480
  cur_run=""
477
481
  else
@@ -498,36 +502,118 @@ rm_scan_scope() {
498
502
  printf '%s' "$stmt"
499
503
  return
500
504
  fi
501
- # `rm` first in its run (modulo whitespace and substitution/alias openers) is
502
- # an invocation, not prose.
503
- if scan -Ei "$first_rm_run" \
504
- '^[[:space:]]*(\\|\$\(|`|\(|<\(|>\()*[[:space:]]*([[:alnum:]_./-]*/)?rm([[:space:]]|$)'; then
505
+ # `rm` first in ANY run (modulo whitespace and substitution/alias openers) is
506
+ # an invocation, not prose. Inspect every run before deciding: returning on
507
+ # the first prose run used to hide a real delete in a later quoted run.
508
+ if [ "$run_leading" -eq 1 ]; then
505
509
  printf '%s' "$stmt"
506
510
  return
507
511
  fi
508
- printf '%s' "$first_rm_run"
512
+ printf '%s' "$rm_runs"
509
513
  }
510
514
  # Look up the ONE unambiguous assignment of NAME inside the command being
511
515
  # classified — issue #3106 arm B, the variable half.
512
516
  #
513
- # Prints the recorded right-hand side, or fails when the name is never assigned
514
- # here or is assigned more than one distinct value. Ambiguity must fail: the
515
- # last write wins at run time and a text scan cannot order writes against the
516
- # delete, so `V=/etc; rm -rf "$V"; V=/tmp/x` must not resolve to the harmless
517
- # one. Only assignments literally present in this command are ever trusted;
518
- # nothing is expanded from the hook's own environment.
517
+ # Prints the recorded right-hand side, or fails when the name is not assigned
518
+ # before the first rm token or is assigned more than one distinct value there.
519
+ # A later write cannot affect an earlier delete, and a quoted assignment-like
520
+ # argument can be prose, so neither is considered. Only assignments literally
521
+ # present in this command are ever trusted; nothing is expanded from the hook's
522
+ # own environment.
523
+ rm_assignment_stmt=""
519
524
  rm_assignment_value() {
520
- local name="$1" hits="" count=""
525
+ local name="$1"
521
526
  case "$name" in
522
527
  "" | *[!A-Za-z0-9_]*) return 1 ;;
523
528
  esac
524
- hits="$(printf '%s\n' "$normalized_command_str" | tr ';&|' '\n' \
525
- | grep -oE "(^|[[:space:]])${name}=[^[:space:]]*" \
526
- | sed -E "s/^.*${name}=//")"
527
- [ -n "$hits" ] || return 1
528
- count="$(printf '%s\n' "$hits" | sort -u | grep -c '' | tr -d '[:space:]')"
529
- [ "$count" = "1" ] || return 1
530
- printf '%s' "$(printf '%s\n' "$hits" | head -n 1)"
529
+ # Only assignments that occur before this statement's rm token can influence
530
+ # its delete safely. A later assignment is too late at runtime, and an
531
+ # assignment whose NAME begins inside a quoted argument can be prose. The
532
+ # small lexer below preserves quoted right-hand sides such as V="/tmp/x"
533
+ # while excluding an argument such as echo "V=/tmp/x". Any ambiguity fails
534
+ # closed.
535
+ RM_ASSIGNMENT_NAME="$name" RM_ASSIGNMENT_COMMAND="$normalized_command_str" \
536
+ RM_ASSIGNMENT_STATEMENT="$rm_assignment_stmt" \
537
+ python3 - <<'PY'
538
+ import os
539
+ import re
540
+ import sys
541
+
542
+ name = os.environ.get("RM_ASSIGNMENT_NAME", "")
543
+ command = os.environ.get("RM_ASSIGNMENT_COMMAND", "")
544
+ statement = os.environ.get("RM_ASSIGNMENT_STATEMENT", "")
545
+ if not re.fullmatch(r"[A-Za-z_][A-Za-z0-9_]*", name):
546
+ sys.exit(1)
547
+
548
+ rm_pattern = re.compile(
549
+ r"(?i)(?<![A-Za-z0-9_./-])(?:[A-Za-z0-9_./-]*/)?rm(?=$|[\s;&|()'\"`])",
550
+ )
551
+ rm_token = rm_pattern.search(statement)
552
+ if rm_token is None or not statement or command.count(statement) != 1:
553
+ sys.exit(1)
554
+ statement_start = command.find(statement)
555
+ if statement_start < 0:
556
+ sys.exit(1)
557
+ prefix = command[: statement_start + rm_token.start()]
558
+
559
+ tokens = []
560
+ buffer = []
561
+ quote = None
562
+ escaped = False
563
+ started = False
564
+ started_unquoted = False
565
+
566
+ def flush():
567
+ global buffer, started, started_unquoted
568
+ if started:
569
+ tokens.append(("".join(buffer), started_unquoted))
570
+ buffer = []
571
+ started = False
572
+ started_unquoted = False
573
+
574
+ for char in prefix:
575
+ if escaped:
576
+ buffer.append(char)
577
+ escaped = False
578
+ continue
579
+ if quote is not None:
580
+ if char == quote:
581
+ quote = None
582
+ elif char == "\\" and quote == '"':
583
+ escaped = True
584
+ else:
585
+ buffer.append(char)
586
+ continue
587
+ if char in "'\"":
588
+ if not started:
589
+ started = True
590
+ started_unquoted = False
591
+ quote = char
592
+ elif char == "\\":
593
+ if not started:
594
+ started = True
595
+ started_unquoted = True
596
+ escaped = True
597
+ elif char.isspace() or char in ";&|()":
598
+ flush()
599
+ else:
600
+ if not started:
601
+ started = True
602
+ started_unquoted = True
603
+ buffer.append(char)
604
+ flush()
605
+
606
+ needle = f"{name}="
607
+ hits = [token[len(needle):] for token, outside in tokens
608
+ if outside and token.startswith(needle)]
609
+ distinct = set(hits)
610
+ if len(distinct) != 1:
611
+ sys.exit(1)
612
+ value = hits[0]
613
+ if not value:
614
+ sys.exit(1)
615
+ sys.stdout.write(value)
616
+ PY
531
617
  }
532
618
  # Rewrite a leading `$NAME` / `${NAME}` in a deletion target to the value the
533
619
  # command itself assigns it, so the target is classified as if the agent had
@@ -667,21 +753,24 @@ while IFS= read -r rm_stmt; do
667
753
  # Scope the walk to the quoting region that actually contains the rm (#3106
668
754
  # arm A). Unquoted and run-leading invocations get the whole statement back,
669
755
  # so this is a no-op for every real delete.
756
+ rm_assignment_stmt="$rm_stmt"
670
757
  rm_walk_text="$(rm_scan_scope "$rm_stmt")"
671
- set -f
672
- seen_rm=0
673
- for raw_token in $rm_walk_text; do
674
- token="$(strip_subst_wrappers "$raw_token")"
675
- if [ "$seen_rm" -eq 0 ]; then
676
- # Path-prefixed spellings (`/bin/rm`, `./rm`) are still rm (F2).
677
- case "$token" in
678
- rm | */rm) seen_rm=1 ;;
679
- esac
680
- continue
681
- fi
682
- classify_rm_target "$token"
683
- done
684
- set +f
758
+ while IFS= read -r rm_scope; do
759
+ set -f
760
+ seen_rm=0
761
+ for raw_token in $rm_scope; do
762
+ token="$(strip_subst_wrappers "$raw_token")"
763
+ if [ "$seen_rm" -eq 0 ]; then
764
+ # Path-prefixed spellings (`/bin/rm`, `./rm`) are still rm (F2).
765
+ case "$token" in
766
+ rm | */rm) seen_rm=1 ;;
767
+ esac
768
+ continue
769
+ fi
770
+ classify_rm_target "$token"
771
+ done
772
+ set +f
773
+ done <<< "$rm_walk_text"
685
774
  done <<<"$rm_segments"
686
775
 
687
776
  # 2. Force-pushing a protected branch. `--force-with-lease` is the safe,
@@ -27,8 +27,11 @@ export declare const WORKTREE_COUNT_WARN_THRESHOLD = 10;
27
27
  * only appeared once enough worktrees had piled up.
28
28
  *
29
29
  * Read-only and warn-only by design. Doctor reports the count and names the
30
- * repair; it never removes a worktree itself, because the operator is the only
31
- * one who knows whether an idle-looking checkout still holds work.
30
+ * repair; it never removes a worktree itself. What it names is now a verb
31
+ * rather than a manual procedure: reporting a mess an agent has no sanctioned
32
+ * way to clear is the state that produced the accumulation in the first place
33
+ * (CodySwannGT/lisa#2993), so the repair line points at `lisa worktree prune`,
34
+ * which answers "does this idle-looking checkout still hold work?" itself.
32
35
  *
33
36
  * Running from INSIDE a worktree naturally reports clean: the roots live in the
34
37
  * primary checkout, so a worktree has none of its own. That matches how
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-worktree-hygiene.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-worktree-hygiene.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAQhD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAsDtB"}
1
+ {"version":3,"file":"doctor-worktree-hygiene.d.ts","sourceRoot":"","sources":["../../src/cli/doctor-worktree-hygiene.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAQhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAyDtB"}
@@ -30,8 +30,11 @@ export const WORKTREE_COUNT_WARN_THRESHOLD = 10;
30
30
  * only appeared once enough worktrees had piled up.
31
31
  *
32
32
  * Read-only and warn-only by design. Doctor reports the count and names the
33
- * repair; it never removes a worktree itself, because the operator is the only
34
- * one who knows whether an idle-looking checkout still holds work.
33
+ * repair; it never removes a worktree itself. What it names is now a verb
34
+ * rather than a manual procedure: reporting a mess an agent has no sanctioned
35
+ * way to clear is the state that produced the accumulation in the first place
36
+ * (CodySwannGT/lisa#2993), so the repair line points at `lisa worktree prune`,
37
+ * which answers "does this idle-looking checkout still hold work?" itself.
35
38
  *
36
39
  * Running from INSIDE a worktree naturally reports clean: the roots live in the
37
40
  * primary checkout, so a worktree has none of its own. That matches how
@@ -72,10 +75,13 @@ export async function checkWorktreeHygiene(targetPath) {
72
75
  `over the threshold of ${WORKTREE_COUNT_WARN_THRESHOLD}. ` +
73
76
  "Each one is a full checkout that every file crawler walks past, which is " +
74
77
  "what makes unit suites time out from ambient load rather than defects. " +
75
- "Review them with `git worktree list`, retire the finished ones with " +
76
- "`git worktree remove <path>` — which refuses a worktree with uncommitted " +
77
- "changes, so it cannot discard work — then clear stale registrations with " +
78
- "`git worktree prune` (CodySwannGT/lisa#2490)",
78
+ "Run `lisa worktree prune` to see which of them are provably nobody's " +
79
+ "live work: it reports by default and removes only with `--apply`, and " +
80
+ "it refuses any worktree a process is working inside, or that holds " +
81
+ "unpushed commits or uncommitted changes (CodySwannGT/lisa#2993). " +
82
+ "Underneath it uses the plain `git worktree remove`, which refuses a " +
83
+ "dirty tree, and `git worktree prune` for registrations whose directory " +
84
+ "is already gone (CodySwannGT/lisa#2490)",
79
85
  };
80
86
  }
81
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-worktree-hygiene.js","sourceRoot":"","sources":["../../src/cli/doctor-worktree-hygiene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-worktree-hygiene.js","sourceRoot":"","sources":["../../src/cli/doctor-worktree-hygiene.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAwND;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAgET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAqB,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAyND;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAgET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/dist/cli/index.js CHANGED
@@ -8,6 +8,7 @@ import { runHealthCli } from "./health-cmd.js";
8
8
  import { addGateCommands } from "./gate-commands.js";
9
9
  import { runKaneCli, runKanePilotCli, runKaneProbeCli, } from "./kane-cmd.js";
10
10
  import { printUpdateWarning } from "./print-update-warning.js";
11
+ import { addPruneCommands } from "./prune-commands.js";
11
12
  import { DEFAULT_SETUP_PROJECT_DEPENDENCIES, runSetupProject, } from "./setup-project.js";
12
13
  import { runSetupWiki } from "./setup-wiki.js";
13
14
  import { addSharedOptions } from "./shared-options.js";
@@ -172,6 +173,7 @@ function addMaintenanceCommands(program, deps) {
172
173
  });
173
174
  addGateCommands(program, deps);
174
175
  addKaneCommands(program, deps);
176
+ addPruneCommands(program);
175
177
  program
176
178
  .command("cross-pollinate")
177
179
  .description("Make locally-authored agent definitions available to the other agents this project supports")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Registration and CLI runners for Lisa's cleanup verbs.
3
+ *
4
+ * These exist because an agent could previously DETECT accumulated disk state
5
+ * and never remove it: `lisa doctor` reports dirty worktrees and work at risk,
6
+ * and the enumerated command list held no `worktree` verb and no `stash` verb
7
+ * (CodySwannGT/lisa#2993). Detection without remediation is not half a
8
+ * solution — it is the state in which the disk keeps filling with a recorded
9
+ * warning nobody is permitted to act on.
10
+ *
11
+ * The answer is a vetted verb, never an override. Nothing here relaxes the
12
+ * safety-net guard: the raw `git worktree remove --force`, `git stash drop`,
13
+ * and `git stash clear` forms stay blocked for everybody, this command never
14
+ * passes `--force` to git, and the entitlement rules it enforces are in
15
+ * `worktree-prune-policy` and `stash-prune-policy` where they can be tested.
16
+ * @module cli/prune-commands
17
+ */
18
+ import type { Command } from "commander";
19
+ import { type StashPruneOptions } from "./stash-prune.js";
20
+ import { type WorktreePruneOptions } from "./worktree-prune.js";
21
+ /** Options accepted by the claim verb. */
22
+ export interface WorktreeClaimOptions {
23
+ /** Owner id to record; defaults to the runtime's session id. */
24
+ readonly owner?: string;
25
+ }
26
+ /**
27
+ * Run `lisa worktree prune`.
28
+ * @param targetPath - Repository path
29
+ * @param options - Command-line options
30
+ * @returns Process exit code
31
+ */
32
+ export declare function runWorktreePruneCli(targetPath: string | undefined, options: WorktreePruneOptions): Promise<number>;
33
+ /**
34
+ * Run `lisa worktree claim`.
35
+ * @param targetPath - Worktree path to claim
36
+ * @param options - Command-line options
37
+ * @returns Process exit code
38
+ */
39
+ export declare function runWorktreeClaimCli(targetPath: string | undefined, options: WorktreeClaimOptions): Promise<number>;
40
+ /**
41
+ * Run `lisa stash prune`.
42
+ * @param targetPath - Repository path
43
+ * @param options - Command-line options
44
+ * @returns Process exit code
45
+ */
46
+ export declare function runStashPruneCli(targetPath: string | undefined, options: StashPruneOptions): Promise<number>;
47
+ /**
48
+ * Register every cleanup verb.
49
+ * @param program - Commander program to mutate
50
+ */
51
+ export declare function addPruneCommands(program: Command): void;
52
+ //# sourceMappingURL=prune-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune-commands.d.ts","sourceRoot":"","sources":["../../src/cli/prune-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAML,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAcD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AA4ED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGvD"}
@@ -0,0 +1,158 @@
1
+ import * as path from "node:path";
2
+ import { applyStashPrune, planStashPrune, } from "./stash-prune.js";
3
+ import { renderStashPlan, renderWorktreePlan } from "./prune-report.js";
4
+ import { git } from "./worktree-inventory.js";
5
+ import { resolveCallerOwnerId, writeOwnerReceipt, } from "./worktree-ownership.js";
6
+ import { applyWorktreePrune, defaultWorktreePruneDependencies, planWorktreePrune, pruneMissingRegistrations, } from "./worktree-prune.js";
7
+ /** Help text for the optional repository-path positional argument. */
8
+ const REPO_ARG_DESCRIPTION = "Repository path (default: current directory)";
9
+ /**
10
+ * Print lines through a writer.
11
+ * @param lines - Lines to print
12
+ * @param write - Sink, defaults to stdout
13
+ */
14
+ function emit(lines, write = line => process.stdout.write(`${line}\n`)) {
15
+ lines.forEach(write);
16
+ }
17
+ /**
18
+ * Run `lisa worktree prune`.
19
+ * @param targetPath - Repository path
20
+ * @param options - Command-line options
21
+ * @returns Process exit code
22
+ */
23
+ export async function runWorktreePruneCli(targetPath, options) {
24
+ const repoPath = path.resolve(targetPath ?? process.cwd());
25
+ const plan = await planWorktreePrune(repoPath, options, defaultWorktreePruneDependencies());
26
+ const outcomes = options.apply === true ? await applyWorktreePrune(plan) : [];
27
+ const forgotten = options.apply === true ? await pruneMissingRegistrations(plan) : 0;
28
+ if (options.json === true) {
29
+ emit([
30
+ JSON.stringify({ plan, outcomes, forgottenRegistrations: forgotten }, undefined, 2),
31
+ ]);
32
+ }
33
+ else {
34
+ emit([
35
+ ...renderWorktreePlan(plan, options.apply === true),
36
+ ...outcomes
37
+ .filter(outcome => !outcome.removed)
38
+ .map(outcome => ` FAILED ${outcome.path} — ${outcome.error ?? "git refused it"}`),
39
+ ]);
40
+ }
41
+ return outcomes.some(outcome => !outcome.removed) ? 1 : 0;
42
+ }
43
+ /**
44
+ * Run `lisa worktree claim`.
45
+ * @param targetPath - Worktree path to claim
46
+ * @param options - Command-line options
47
+ * @returns Process exit code
48
+ */
49
+ export async function runWorktreeClaimCli(targetPath, options) {
50
+ const worktree = path.resolve(targetPath ?? process.cwd());
51
+ const owner = options.owner ?? resolveCallerOwnerId();
52
+ if (owner === undefined) {
53
+ emit([
54
+ "No owner id available. Pass --owner <id>, or run under an agent runtime " +
55
+ "that sets one, so the claim names somebody.",
56
+ ]);
57
+ return 1;
58
+ }
59
+ const adminDirectory = await git(["rev-parse", "--absolute-git-dir"], worktree).then(out => out.trim(), () => "");
60
+ if (adminDirectory === "") {
61
+ emit([
62
+ `${worktree} is not inside a git repository, so it cannot be claimed.`,
63
+ ]);
64
+ return 1;
65
+ }
66
+ const receipt = await writeOwnerReceipt(adminDirectory, owner);
67
+ emit([
68
+ `Claimed ${worktree} for ${owner}.`,
69
+ `Receipt: ${receipt} (inside the git control plane, so it never dirties the working tree).`,
70
+ ]);
71
+ return 0;
72
+ }
73
+ /**
74
+ * Run `lisa stash prune`.
75
+ * @param targetPath - Repository path
76
+ * @param options - Command-line options
77
+ * @returns Process exit code
78
+ */
79
+ export async function runStashPruneCli(targetPath, options) {
80
+ const repoPath = path.resolve(targetPath ?? process.cwd());
81
+ const plan = await planStashPrune(repoPath, options);
82
+ const outcomes = options.apply === true ? await applyStashPrune(plan) : [];
83
+ if (options.json === true) {
84
+ emit([JSON.stringify({ plan, outcomes }, undefined, 2)]);
85
+ }
86
+ else {
87
+ emit([
88
+ ...renderStashPlan(plan, options.apply === true),
89
+ ...outcomes
90
+ .filter(outcome => !outcome.dropped)
91
+ .map(outcome => ` FAILED ${outcome.sha.slice(0, 8)} — ${outcome.error ?? "git refused it"}`),
92
+ ]);
93
+ }
94
+ return outcomes.some(outcome => !outcome.dropped) ? 1 : 0;
95
+ }
96
+ /**
97
+ * Register the worktree command group.
98
+ * @param program - Commander program to mutate
99
+ */
100
+ function addWorktreeCommands(program) {
101
+ const worktree = program
102
+ .command("worktree")
103
+ .description("Inspect and retire this repository's agent worktrees");
104
+ worktree
105
+ .command("prune")
106
+ .description("Remove agent worktrees that are provably nobody's live work (dry run unless --apply)")
107
+ .argument("[path]", REPO_ARG_DESCRIPTION)
108
+ .option("--apply", "Perform the removals (default: report only)")
109
+ .option("--idle-hours <hours>", "Quiescence an unclaimed worktree must show before it is eligible (default: 24)")
110
+ .option("--json", "Emit the plan and outcomes as JSON")
111
+ .action(async (targetPath, options) => {
112
+ const code = await runWorktreePruneCli(targetPath, options);
113
+ if (code !== 0) {
114
+ process.exitCode = code;
115
+ }
116
+ });
117
+ worktree
118
+ .command("claim")
119
+ .description("Record this agent as the owner of a worktree so it can retire it later")
120
+ .argument("[path]", "Worktree path (default: current directory)")
121
+ .option("--owner <id>", "Owner id to record")
122
+ .action(async (targetPath, options) => {
123
+ const code = await runWorktreeClaimCli(targetPath, options);
124
+ if (code !== 0) {
125
+ process.exitCode = code;
126
+ }
127
+ });
128
+ }
129
+ /**
130
+ * Register the stash command group.
131
+ * @param program - Commander program to mutate
132
+ */
133
+ function addStashCommands(program) {
134
+ program
135
+ .command("stash")
136
+ .description("Clear provably redundant stash entries")
137
+ .command("prune")
138
+ .description("Drop stash entries that are provably redundant, preserving each one under a ref first (dry run unless --apply)")
139
+ .argument("[path]", REPO_ARG_DESCRIPTION)
140
+ .option("--apply", "Perform the drops (default: report only)")
141
+ .option("--older-than-hours <hours>", "Age a machine-generated backup must reach before it counts as debris (default: 24)")
142
+ .option("--json", "Emit the plan and outcomes as JSON")
143
+ .action(async (targetPath, options) => {
144
+ const code = await runStashPruneCli(targetPath, options);
145
+ if (code !== 0) {
146
+ process.exitCode = code;
147
+ }
148
+ });
149
+ }
150
+ /**
151
+ * Register every cleanup verb.
152
+ * @param program - Commander program to mutate
153
+ */
154
+ export function addPruneCommands(program) {
155
+ addWorktreeCommands(program);
156
+ addStashCommands(program);
157
+ }
158
+ //# sourceMappingURL=prune-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune-commands.js","sourceRoot":"","sources":["../../src/cli/prune-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Operator-readable reports for the prune verbs.
3
+ *
4
+ * Every candidate appears in the output, kept ones included, with the reason it
5
+ * was kept. A cleaner that silently leaves things behind is as hard to trust as
6
+ * one that silently takes them: the operator cannot tell "nothing was eligible"
7
+ * from "the check never ran". Nothing here truncates the list for that reason.
8
+ * @module cli/prune-report
9
+ */
10
+ import { type StashVerdict } from "./stash-prune-policy.js";
11
+ import type { StashPrunePlan } from "./stash-prune.js";
12
+ import type { WorktreePrunePlan } from "./worktree-prune.js";
13
+ import { type WorktreeVerdict } from "./worktree-prune-policy.js";
14
+ /**
15
+ * Describe one worktree verdict in a single line.
16
+ * @param verdict - Verdict for one worktree
17
+ * @returns Report line
18
+ */
19
+ export declare function describeWorktreeVerdict(verdict: WorktreeVerdict): string;
20
+ /**
21
+ * Describe one stash verdict in a single line.
22
+ * @param verdict - Verdict for one stash entry
23
+ * @returns Report line
24
+ */
25
+ export declare function describeStashVerdict(verdict: StashVerdict): string;
26
+ /**
27
+ * Render the worktree plan for a human.
28
+ * @param plan - Plan produced by the prune verb
29
+ * @param applied - Whether removals were actually performed
30
+ * @returns Report lines
31
+ */
32
+ export declare function renderWorktreePlan(plan: WorktreePrunePlan, applied: boolean): readonly string[];
33
+ /**
34
+ * Render the stash plan for a human.
35
+ * @param plan - Plan produced by the stash prune verb
36
+ * @param applied - Whether drops were actually performed
37
+ * @returns Report lines
38
+ */
39
+ export declare function renderStashPlan(plan: StashPrunePlan, applied: boolean): readonly string[];
40
+ //# sourceMappingURL=prune-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune-report.d.ts","sourceRoot":"","sources":["../../src/cli/prune-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAOlE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,OAAO,GACf,SAAS,MAAM,EAAE,CAqBnB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,OAAO,GACf,SAAS,MAAM,EAAE,CASnB"}