agentrinse 0.0.0 → 0.2.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 (173) hide show
  1. package/README.md +165 -83
  2. package/dist/adapters/artifacts/adapter.d.ts +3 -1
  3. package/dist/adapters/artifacts/adapter.d.ts.map +1 -1
  4. package/dist/adapters/artifacts/adapter.js +23 -1
  5. package/dist/adapters/artifacts/adapter.js.map +1 -1
  6. package/dist/adapters/git/adapter.d.ts +8 -1
  7. package/dist/adapters/git/adapter.d.ts.map +1 -1
  8. package/dist/adapters/git/adapter.js +247 -13
  9. package/dist/adapters/git/adapter.js.map +1 -1
  10. package/dist/adapters/git/status.d.ts +14 -0
  11. package/dist/adapters/git/status.d.ts.map +1 -0
  12. package/dist/adapters/git/status.js +81 -0
  13. package/dist/adapters/git/status.js.map +1 -0
  14. package/dist/adapters/provider-adapter.d.ts +3 -0
  15. package/dist/adapters/provider-adapter.d.ts.map +1 -1
  16. package/dist/adapters/provider-adapter.js +16 -0
  17. package/dist/adapters/provider-adapter.js.map +1 -1
  18. package/dist/adapters/provider-reachability.d.ts +6 -0
  19. package/dist/adapters/provider-reachability.d.ts.map +1 -0
  20. package/dist/adapters/provider-reachability.js +207 -0
  21. package/dist/adapters/provider-reachability.js.map +1 -0
  22. package/dist/adapters/provider-specs.d.ts +1 -1
  23. package/dist/adapters/provider-specs.d.ts.map +1 -1
  24. package/dist/adapters/registry.d.ts +7 -1
  25. package/dist/adapters/registry.d.ts.map +1 -1
  26. package/dist/adapters/registry.js +44 -4
  27. package/dist/adapters/registry.js.map +1 -1
  28. package/dist/adapters/runtime/adapter.d.ts +24 -0
  29. package/dist/adapters/runtime/adapter.d.ts.map +1 -0
  30. package/dist/adapters/runtime/adapter.js +319 -0
  31. package/dist/adapters/runtime/adapter.js.map +1 -0
  32. package/dist/cli.js +2 -1
  33. package/dist/cli.js.map +1 -1
  34. package/dist/commands/adapters.d.ts.map +1 -1
  35. package/dist/commands/adapters.js +1 -0
  36. package/dist/commands/adapters.js.map +1 -1
  37. package/dist/commands/apply.d.ts +6 -0
  38. package/dist/commands/apply.d.ts.map +1 -1
  39. package/dist/commands/apply.js +37 -13
  40. package/dist/commands/apply.js.map +1 -1
  41. package/dist/commands/audit.d.ts +7 -1
  42. package/dist/commands/audit.d.ts.map +1 -1
  43. package/dist/commands/audit.js +103 -12
  44. package/dist/commands/audit.js.map +1 -1
  45. package/dist/commands/clean.d.ts +61 -0
  46. package/dist/commands/clean.d.ts.map +1 -0
  47. package/dist/commands/clean.js +224 -0
  48. package/dist/commands/clean.js.map +1 -0
  49. package/dist/commands/completion.d.ts +4 -0
  50. package/dist/commands/completion.d.ts.map +1 -0
  51. package/dist/commands/completion.js +95 -0
  52. package/dist/commands/completion.js.map +1 -0
  53. package/dist/commands/config.d.ts +17 -0
  54. package/dist/commands/config.d.ts.map +1 -0
  55. package/dist/commands/config.js +41 -0
  56. package/dist/commands/config.js.map +1 -0
  57. package/dist/commands/doctor.d.ts +28 -0
  58. package/dist/commands/doctor.d.ts.map +1 -0
  59. package/dist/commands/doctor.js +582 -0
  60. package/dist/commands/doctor.js.map +1 -0
  61. package/dist/commands/history.d.ts +15 -0
  62. package/dist/commands/history.d.ts.map +1 -0
  63. package/dist/commands/history.js +30 -0
  64. package/dist/commands/history.js.map +1 -0
  65. package/dist/commands/lock.d.ts +21 -0
  66. package/dist/commands/lock.d.ts.map +1 -0
  67. package/dist/commands/lock.js +43 -0
  68. package/dist/commands/lock.js.map +1 -0
  69. package/dist/commands/plan.d.ts +2 -0
  70. package/dist/commands/plan.d.ts.map +1 -1
  71. package/dist/commands/plan.js +9 -2
  72. package/dist/commands/plan.js.map +1 -1
  73. package/dist/commands/show.d.ts +20 -0
  74. package/dist/commands/show.d.ts.map +1 -0
  75. package/dist/commands/show.js +54 -0
  76. package/dist/commands/show.js.map +1 -0
  77. package/dist/config/defaults.d.ts.map +1 -1
  78. package/dist/config/defaults.js +2 -0
  79. package/dist/config/defaults.js.map +1 -1
  80. package/dist/config/load.d.ts +6 -0
  81. package/dist/config/load.d.ts.map +1 -1
  82. package/dist/config/load.js +25 -0
  83. package/dist/config/load.js.map +1 -1
  84. package/dist/config/path.d.ts +5 -0
  85. package/dist/config/path.d.ts.map +1 -0
  86. package/dist/config/path.js +13 -0
  87. package/dist/config/path.js.map +1 -0
  88. package/dist/config/schema.d.ts +23 -0
  89. package/dist/config/schema.d.ts.map +1 -1
  90. package/dist/config/schema.js +48 -0
  91. package/dist/config/schema.js.map +1 -1
  92. package/dist/contracts/doctor.d.ts +35 -0
  93. package/dist/contracts/doctor.d.ts.map +1 -0
  94. package/dist/contracts/doctor.js +15 -0
  95. package/dist/contracts/doctor.js.map +1 -0
  96. package/dist/contracts/output.d.ts +50 -0
  97. package/dist/contracts/output.d.ts.map +1 -0
  98. package/dist/contracts/output.js +23 -0
  99. package/dist/contracts/output.js.map +1 -0
  100. package/dist/contracts/run.d.ts +2 -0
  101. package/dist/contracts/run.d.ts.map +1 -1
  102. package/dist/contracts/run.js +1 -1
  103. package/dist/contracts/run.js.map +1 -1
  104. package/dist/core/apply.d.ts +1 -0
  105. package/dist/core/apply.d.ts.map +1 -1
  106. package/dist/core/apply.js +46 -3
  107. package/dist/core/apply.js.map +1 -1
  108. package/dist/core/audit.d.ts +21 -0
  109. package/dist/core/audit.d.ts.map +1 -1
  110. package/dist/core/audit.js +31 -1
  111. package/dist/core/audit.js.map +1 -1
  112. package/dist/core/duration.d.ts +2 -0
  113. package/dist/core/duration.d.ts.map +1 -0
  114. package/dist/core/duration.js +21 -0
  115. package/dist/core/duration.js.map +1 -0
  116. package/dist/core/interruption.d.ts +5 -0
  117. package/dist/core/interruption.d.ts.map +1 -0
  118. package/dist/core/interruption.js +5 -0
  119. package/dist/core/interruption.js.map +1 -0
  120. package/dist/core/process-identity.d.ts +24 -0
  121. package/dist/core/process-identity.d.ts.map +1 -0
  122. package/dist/core/process-identity.js +104 -0
  123. package/dist/core/process-identity.js.map +1 -0
  124. package/dist/core/reachability.d.ts +29 -0
  125. package/dist/core/reachability.d.ts.map +1 -0
  126. package/dist/core/reachability.js +121 -0
  127. package/dist/core/reachability.js.map +1 -0
  128. package/dist/core/redaction.d.ts +4 -0
  129. package/dist/core/redaction.d.ts.map +1 -0
  130. package/dist/core/redaction.js +91 -0
  131. package/dist/core/redaction.js.map +1 -0
  132. package/dist/core/safety.d.ts +8 -0
  133. package/dist/core/safety.d.ts.map +1 -1
  134. package/dist/core/safety.js +29 -1
  135. package/dist/core/safety.js.map +1 -1
  136. package/dist/index.d.ts +3 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +2 -0
  139. package/dist/index.js.map +1 -1
  140. package/dist/machine-output.d.ts +21 -0
  141. package/dist/machine-output.d.ts.map +1 -0
  142. package/dist/machine-output.js +32 -0
  143. package/dist/machine-output.js.map +1 -0
  144. package/dist/main.d.ts.map +1 -1
  145. package/dist/main.js +232 -7
  146. package/dist/main.js.map +1 -1
  147. package/dist/state/json-file.d.ts +6 -1
  148. package/dist/state/json-file.d.ts.map +1 -1
  149. package/dist/state/json-file.js +34 -3
  150. package/dist/state/json-file.js.map +1 -1
  151. package/dist/state/layout.d.ts +2 -0
  152. package/dist/state/layout.d.ts.map +1 -1
  153. package/dist/state/layout.js +2 -0
  154. package/dist/state/layout.js.map +1 -1
  155. package/dist/state/lock.d.ts +54 -1
  156. package/dist/state/lock.d.ts.map +1 -1
  157. package/dist/state/lock.js +237 -33
  158. package/dist/state/lock.js.map +1 -1
  159. package/dist/state/records.d.ts +5 -0
  160. package/dist/state/records.d.ts.map +1 -0
  161. package/dist/state/records.js +35 -0
  162. package/dist/state/records.js.map +1 -0
  163. package/dist/state/run-journal.d.ts +3 -1
  164. package/dist/state/run-journal.d.ts.map +1 -1
  165. package/dist/state/run-journal.js +15 -4
  166. package/dist/state/run-journal.js.map +1 -1
  167. package/dist/version.d.ts +1 -1
  168. package/dist/version.js +1 -1
  169. package/package.json +3 -2
  170. package/schemas/command-envelope.schema.json +78 -0
  171. package/schemas/command-event.schema.json +36 -0
  172. package/schemas/doctor.schema.json +51 -0
  173. package/schemas/run.schema.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAcxD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA4B;IAE5B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,MAAM;QACN,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC;KACtC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;KACpF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { type ActionRisk } from "../contracts/action.js";
2
+ import type { CleanupPlan } from "../contracts/plan.js";
3
+ import type { AuditReport } from "../contracts/report.js";
4
+ import type { CleanupRun } from "../contracts/run.js";
5
+ export type CleanCommandOptions = {
6
+ home: string;
7
+ config?: string;
8
+ stateDir?: string;
9
+ profile: "closeout";
10
+ cwd?: string;
11
+ apply: boolean;
12
+ yes: boolean;
13
+ json: boolean;
14
+ maxRisk?: ActionRisk;
15
+ signal?: AbortSignal;
16
+ dependencies?: {
17
+ platform?: NodeJS.Platform;
18
+ now?: () => Date;
19
+ runCommand?: (command: string, args: string[]) => Promise<{
20
+ stdout: string;
21
+ stderr: string;
22
+ }>;
23
+ };
24
+ };
25
+ export type MoleHandoff = {
26
+ status: "available" | "absent" | "not-applicable";
27
+ suggestions: string[];
28
+ };
29
+ export type CloseoutSummary = {
30
+ profile: "closeout";
31
+ repositoryRoot: string;
32
+ currentWorktree: string;
33
+ auditId: string;
34
+ planId: string;
35
+ auditPath: string;
36
+ planPath: string;
37
+ configPath: string;
38
+ worktrees: number;
39
+ protectedWorktrees: number;
40
+ eligibleActions: number;
41
+ expectedReclaimBytes: number;
42
+ mole: MoleHandoff;
43
+ run?: {
44
+ runId: string;
45
+ status: CleanupRun["status"];
46
+ journalPath: string;
47
+ reclaimedBytes: number;
48
+ };
49
+ };
50
+ export type CleanCommandResult = {
51
+ audit: AuditReport;
52
+ plan: CleanupPlan;
53
+ run?: CleanupRun;
54
+ status: "ok" | "degraded" | "failed";
55
+ summary: CloseoutSummary;
56
+ output: string;
57
+ };
58
+ export declare function cleanCommandExitCode(result: Pick<CleanCommandResult, "run" | "status">): number | undefined;
59
+ export declare function cleanCommandStatus(audit: Pick<AuditReport, "diagnostics" | "probes">, run?: Pick<CleanupRun, "status">): CleanCommandResult["status"];
60
+ export declare function executeCleanCommand(options: CleanCommandOptions): Promise<CleanCommandResult>;
61
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AASA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAWtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC3B,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;QACjB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/F,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,gBAAgB,CAAC;IAClD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,UAAU,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,QAAQ,CAAC,GACjD,MAAM,GAAG,SAAS,CAQpB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,QAAQ,CAAC,EAClD,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAC/B,kBAAkB,CAAC,QAAQ,CAAC,CAO9B;AA6FD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAgI7B"}
@@ -0,0 +1,224 @@
1
+ import { execFile } from "node:child_process";
2
+ import { isAbsolute, relative, resolve } from "node:path";
3
+ import { promisify } from "node:util";
4
+ import { parseWorktreePorcelain } from "../adapters/git/porcelain.js";
5
+ import { createAuditAdapters } from "../adapters/registry.js";
6
+ import { confirmApply } from "./apply.js";
7
+ import { loadConfigForHome } from "../config/load.js";
8
+ import { actionRiskSchema } from "../contracts/action.js";
9
+ import { applyCleanupPlan } from "../core/apply.js";
10
+ import { runAudit } from "../core/audit.js";
11
+ import { CommandInterruptedError } from "../core/interruption.js";
12
+ import { createCleanupPlan } from "../core/plan.js";
13
+ import { createCommandEnvelope, jsonDocument } from "../machine-output.js";
14
+ import { writeJsonAtomic } from "../state/json-file.js";
15
+ import { resolveStateRoot, stateLayout } from "../state/layout.js";
16
+ const execFileAsync = promisify(execFile);
17
+ export function cleanCommandExitCode(result) {
18
+ if (result.run?.status === "interrupted") {
19
+ return 130;
20
+ }
21
+ if (result.run !== undefined && ["failed", "partial"].includes(result.run.status)) {
22
+ return 2;
23
+ }
24
+ return result.status === "degraded" ? 1 : undefined;
25
+ }
26
+ export function cleanCommandStatus(audit, run) {
27
+ if (run !== undefined && ["failed", "interrupted", "partial"].includes(run.status)) {
28
+ return "failed";
29
+ }
30
+ return audit.probes.some((probe) => probe.status === "degraded") || audit.diagnostics.length > 0
31
+ ? "degraded"
32
+ : "ok";
33
+ }
34
+ async function defaultRunCommand(command, args) {
35
+ const result = await execFileAsync(command, args, {
36
+ encoding: "utf8",
37
+ maxBuffer: 4 * 1024 * 1024,
38
+ timeout: 10_000,
39
+ });
40
+ return { stdout: result.stdout, stderr: result.stderr };
41
+ }
42
+ function isInside(root, candidate) {
43
+ const result = relative(resolve(root), resolve(candidate));
44
+ return result === "" || (!result.startsWith("..") && !isAbsolute(result));
45
+ }
46
+ function scopedConfig(config, currentWorktree, worktrees, maxRisk) {
47
+ const scoped = structuredClone(config);
48
+ for (const id of ["cursor", "copilot", "zed", "opencode", "grok", "runtime", "docker"]) {
49
+ scoped.adapters[id] = { enabled: false };
50
+ }
51
+ scoped.adapters.git = { enabled: true, root: currentWorktree };
52
+ scoped.artifacts.projects = scoped.artifacts.projects.filter((project) => worktrees.some((worktree) => isInside(worktree, project.root)));
53
+ if (maxRisk !== undefined) {
54
+ scoped.plan.maxRisk = maxRisk;
55
+ }
56
+ return scoped;
57
+ }
58
+ async function moleHandoff(platform, runCommand) {
59
+ if (platform !== "darwin") {
60
+ return { status: "not-applicable", suggestions: [] };
61
+ }
62
+ try {
63
+ await runCommand("mo", ["--version"]);
64
+ return {
65
+ status: "available",
66
+ suggestions: ["mo purge --dry-run", "mo clean --dry-run"],
67
+ };
68
+ }
69
+ catch {
70
+ return {
71
+ status: "absent",
72
+ suggestions: ["Install Mole to preview broad macOS cleanup outside AgentRinse."],
73
+ };
74
+ }
75
+ }
76
+ function renderCloseout(summary) {
77
+ const lines = [
78
+ "AgentRinse closeout",
79
+ "",
80
+ `Repository: ${summary.repositoryRoot}`,
81
+ `Worktrees: ${summary.worktrees} (${summary.protectedWorktrees} protected)`,
82
+ `Eligible actions: ${summary.eligibleActions}`,
83
+ `Expected reclaim: ${summary.expectedReclaimBytes} bytes`,
84
+ `Audit: ${summary.auditPath}`,
85
+ `Plan: ${summary.planPath}`,
86
+ `Config: ${summary.configPath}`,
87
+ ];
88
+ if (summary.run !== undefined) {
89
+ lines.push(`Run: ${summary.run.status} (${summary.run.reclaimedBytes} bytes)`, `Journal: ${summary.run.journalPath}`);
90
+ }
91
+ if (summary.mole.suggestions.length > 0) {
92
+ lines.push("", "Mole handoff:", ...summary.mole.suggestions.map((item) => ` ${item}`));
93
+ }
94
+ return `${lines.join("\n")}\n`;
95
+ }
96
+ function interruptionFrom(signal) {
97
+ if (signal?.aborted !== true) {
98
+ return undefined;
99
+ }
100
+ return signal.reason instanceof CommandInterruptedError
101
+ ? signal.reason
102
+ : new CommandInterruptedError("clean interrupted");
103
+ }
104
+ export async function executeCleanCommand(options) {
105
+ if (options.profile !== "closeout") {
106
+ throw new Error(`unsupported clean profile: ${options.profile}`);
107
+ }
108
+ if (options.json && options.apply && !options.yes) {
109
+ throw new Error("clean --json --apply requires --yes");
110
+ }
111
+ const runCommand = options.dependencies?.runCommand ?? defaultRunCommand;
112
+ const platform = options.dependencies?.platform ?? process.platform;
113
+ const clock = options.dependencies?.now ?? (() => new Date());
114
+ const cwd = resolve(options.cwd ?? process.cwd());
115
+ const home = resolve(options.home);
116
+ const currentWorktree = (await runCommand("git", ["-C", cwd, "rev-parse", "--show-toplevel"])).stdout.trim();
117
+ if (currentWorktree === "") {
118
+ throw new Error("closeout requires a Git worktree");
119
+ }
120
+ const worktreeOutput = (await runCommand("git", ["-C", currentWorktree, "worktree", "list", "--porcelain", "-z"])).stdout;
121
+ const worktrees = parseWorktreePorcelain(worktreeOutput).map((record) => resolve(record.path));
122
+ const repositoryRoot = worktrees[0] ?? currentWorktree;
123
+ const { config } = await loadConfigForHome(home, options.config);
124
+ const maxRisk = options.maxRisk === undefined ? undefined : actionRiskSchema.parse(options.maxRisk);
125
+ const scoped = scopedConfig(config, currentWorktree, worktrees, maxRisk);
126
+ const audit = await runAudit({
127
+ home,
128
+ config: scoped,
129
+ adapters: createAuditAdapters(scoped, platform, {
130
+ providerInventory: false,
131
+ roots: [
132
+ {
133
+ path: currentWorktree,
134
+ code: "current-worktree",
135
+ source: "closeout",
136
+ detail: "The worktree running the closeout profile is protected.",
137
+ },
138
+ ],
139
+ }),
140
+ now: clock,
141
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
142
+ });
143
+ const plan = createCleanupPlan(audit, scoped, clock());
144
+ const layout = stateLayout(resolveStateRoot(home, options.stateDir));
145
+ const auditPath = resolve(layout.audits, `${audit.auditId}.json`);
146
+ const planPath = resolve(layout.plans, `${plan.planId}.json`);
147
+ const configPath = resolve(layout.plans, `${plan.planId}.config.json`);
148
+ await writeJsonAtomic(auditPath, audit, {
149
+ privateDirectories: [layout.root, layout.audits],
150
+ });
151
+ await writeJsonAtomic(planPath, plan, {
152
+ privateDirectories: [layout.root, layout.plans],
153
+ });
154
+ await writeJsonAtomic(configPath, scoped, {
155
+ privateDirectories: [layout.root, layout.plans],
156
+ });
157
+ let run;
158
+ let journalPath;
159
+ if (options.apply) {
160
+ const interruption = interruptionFrom(options.signal);
161
+ if (interruption !== undefined) {
162
+ throw interruption;
163
+ }
164
+ if (!options.yes && !(await confirmApply(plan.actions.length, options.signal))) {
165
+ throw new Error("clean apply cancelled");
166
+ }
167
+ const result = await applyCleanupPlan({
168
+ input: plan,
169
+ config: scoped,
170
+ stateRoot: layout.root,
171
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
172
+ dependencies: { clock },
173
+ });
174
+ run = result.run;
175
+ journalPath = result.journalPath;
176
+ }
177
+ const gitFindings = audit.findings.filter((finding) => finding.resource.kind === "git-worktree");
178
+ const summary = {
179
+ profile: "closeout",
180
+ repositoryRoot,
181
+ currentWorktree,
182
+ auditId: audit.auditId,
183
+ planId: plan.planId,
184
+ auditPath,
185
+ planPath,
186
+ configPath,
187
+ worktrees: gitFindings.length,
188
+ protectedWorktrees: gitFindings.filter((finding) => finding.state !== "eligible").length,
189
+ eligibleActions: plan.actions.length,
190
+ expectedReclaimBytes: plan.expectedReclaimBytes,
191
+ mole: await moleHandoff(platform, runCommand),
192
+ ...(run === undefined || journalPath === undefined
193
+ ? {}
194
+ : {
195
+ run: {
196
+ runId: run.runId,
197
+ status: run.status,
198
+ journalPath,
199
+ reclaimedBytes: run.reclaimedBytes,
200
+ },
201
+ }),
202
+ };
203
+ const startedAt = audit.startedAt;
204
+ const completedAt = clock().toISOString();
205
+ const status = cleanCommandStatus(audit, run);
206
+ return {
207
+ audit,
208
+ plan,
209
+ ...(run === undefined ? {} : { run }),
210
+ status,
211
+ summary,
212
+ output: options.json
213
+ ? jsonDocument(createCommandEnvelope({
214
+ command: "clean",
215
+ startedAt,
216
+ completedAt,
217
+ status,
218
+ data: summary,
219
+ diagnostics: audit.diagnostics,
220
+ }))
221
+ : renderCloseout(summary),
222
+ };
223
+ }
224
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const completionShells: readonly ["bash", "zsh", "fish"];
2
+ export type CompletionShell = (typeof completionShells)[number];
3
+ export declare function renderCompletion(shell: string): string;
4
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,YAAI,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AA6FhE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWtD"}
@@ -0,0 +1,95 @@
1
+ export const completionShells = ["bash", "zsh", "fish"];
2
+ const COMMANDS = [
3
+ "adapters",
4
+ "apply",
5
+ "audit",
6
+ "clean",
7
+ "completion",
8
+ "config",
9
+ "doctor",
10
+ "history",
11
+ "lock",
12
+ "plan",
13
+ "show",
14
+ ];
15
+ const SUBCOMMANDS = {
16
+ completion: [...completionShells],
17
+ config: ["init", "path", "show", "validate"],
18
+ lock: ["recover", "status"],
19
+ show: ["plan", "resource", "run"],
20
+ };
21
+ function bashCompletion() {
22
+ return `# bash completion for AgentRinse
23
+ _agentrinse_completion() {
24
+ local current command
25
+ current="\${COMP_WORDS[COMP_CWORD]}"
26
+ command="\${COMP_WORDS[1]}"
27
+
28
+ if [[ "\${COMP_CWORD}" -eq 1 ]]; then
29
+ COMPREPLY=( $(compgen -W "${COMMANDS.join(" ")}" -- "\${current}") )
30
+ return
31
+ fi
32
+
33
+ case "\${command}" in
34
+ completion) COMPREPLY=( $(compgen -W "${SUBCOMMANDS.completion.join(" ")}" -- "\${current}") ) ;;
35
+ config) COMPREPLY=( $(compgen -W "${SUBCOMMANDS.config.join(" ")}" -- "\${current}") ) ;;
36
+ lock) COMPREPLY=( $(compgen -W "${SUBCOMMANDS.lock.join(" ")}" -- "\${current}") ) ;;
37
+ show) COMPREPLY=( $(compgen -W "${SUBCOMMANDS.show.join(" ")}" -- "\${current}") ) ;;
38
+ *) COMPREPLY=( $(compgen -W "--help --version --home --config --state-dir --json --ndjson --redact --yes --output --audit --plan --since --profile --apply --max-risk" -- "\${current}") ) ;;
39
+ esac
40
+ }
41
+ complete -F _agentrinse_completion agentrinse
42
+ `;
43
+ }
44
+ function zshCompletion() {
45
+ return `#compdef agentrinse
46
+
47
+ _agentrinse() {
48
+ local -a commands
49
+ commands=(
50
+ ${COMMANDS.map((command) => ` '${command}:${command}'`).join("\n")}
51
+ )
52
+
53
+ if (( CURRENT == 2 )); then
54
+ _describe 'command' commands
55
+ return
56
+ fi
57
+
58
+ case "\${words[2]}" in
59
+ completion) _values 'shell' ${SUBCOMMANDS.completion.join(" ")} ;;
60
+ config) _values 'config command' ${SUBCOMMANDS.config.join(" ")} ;;
61
+ lock) _values 'lock command' ${SUBCOMMANDS.lock.join(" ")} ;;
62
+ show) _values 'show command' ${SUBCOMMANDS.show.join(" ")} ;;
63
+ *) _arguments '*:argument:_files' ;;
64
+ esac
65
+ }
66
+
67
+ compdef _agentrinse agentrinse
68
+ `;
69
+ }
70
+ function fishCompletion() {
71
+ const lines = [
72
+ "# fish completion for AgentRinse",
73
+ "complete -c agentrinse -f",
74
+ ...COMMANDS.map((command) => `complete -c agentrinse -n '__fish_use_subcommand' -a '${command}' -d '${command}'`),
75
+ ];
76
+ for (const [command, subcommands] of Object.entries(SUBCOMMANDS)) {
77
+ for (const subcommand of subcommands) {
78
+ lines.push(`complete -c agentrinse -n '__fish_seen_subcommand_from ${command}' -a '${subcommand}'`);
79
+ }
80
+ }
81
+ return `${lines.join("\n")}\n`;
82
+ }
83
+ export function renderCompletion(shell) {
84
+ if (shell === "bash") {
85
+ return bashCompletion();
86
+ }
87
+ if (shell === "zsh") {
88
+ return zshCompletion();
89
+ }
90
+ if (shell === "fish") {
91
+ return fishCompletion();
92
+ }
93
+ throw new Error(`unsupported completion shell ${shell}; expected bash, zsh, or fish`);
94
+ }
95
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAGjE,MAAM,QAAQ,GAAG;IACf,UAAU;IACV,OAAO;IACP,OAAO;IACP,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,UAAU,EAAE,CAAC,GAAG,gBAAgB,CAAC;IACjC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;IAC5C,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3B,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC;CACzB,CAAC;AAEX,SAAS,cAAc;IACrB,OAAO;;;;;;;gCAOuB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;4CAKN,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;wCACpC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;sCAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;sCAC1B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;CAK/D,CAAC;AACF,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;;;;;EAKP,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;kCASnC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;uCAC3B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;mCAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;mCAC1B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;CAM5D,CAAC;AACF,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG;QACZ,kCAAkC;QAClC,2BAA2B;QAC3B,GAAG,QAAQ,CAAC,GAAG,CACb,CAAC,OAAO,EAAE,EAAE,CACV,yDAAyD,OAAO,SAAS,OAAO,GAAG,CACtF;KACF,CAAC;IACF,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CACR,0DAA0D,OAAO,SAAS,UAAU,GAAG,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,+BAA+B,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type ConfigEnvironment } from "../config/path.js";
2
+ import type { AgentRinseConfig } from "../config/schema.js";
3
+ export type ConfigCommandOptions = {
4
+ home: string;
5
+ config?: string | undefined;
6
+ environment?: ConfigEnvironment | undefined;
7
+ };
8
+ export type ConfigCommandResult = {
9
+ path: string;
10
+ output: string;
11
+ config?: AgentRinseConfig;
12
+ };
13
+ export declare function executeConfigPathCommand(options: ConfigCommandOptions): ConfigCommandResult;
14
+ export declare function executeConfigInitCommand(options: ConfigCommandOptions): Promise<ConfigCommandResult>;
15
+ export declare function executeConfigShowCommand(options: ConfigCommandOptions): Promise<ConfigCommandResult>;
16
+ export declare function executeConfigValidateCommand(options: ConfigCommandOptions): Promise<ConfigCommandResult>;
17
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAUF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAG3F;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAQ9B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAW9B;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAS9B"}
@@ -0,0 +1,41 @@
1
+ import { access } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { DEFAULT_CONFIG } from "../config/defaults.js";
4
+ import { loadConfig, loadConfigForHome } from "../config/load.js";
5
+ import { resolveConfigPath } from "../config/path.js";
6
+ import { writeJsonExclusive } from "../state/json-file.js";
7
+ function targetPath(options) {
8
+ return resolveConfigPath(resolve(options.home), options.config, options.environment ?? process.env);
9
+ }
10
+ export function executeConfigPathCommand(options) {
11
+ const path = targetPath(options);
12
+ return { path, output: `${path}\n` };
13
+ }
14
+ export async function executeConfigInitCommand(options) {
15
+ const path = targetPath(options);
16
+ await writeJsonExclusive(path, DEFAULT_CONFIG);
17
+ return {
18
+ path,
19
+ config: structuredClone(DEFAULT_CONFIG),
20
+ output: `created ${path}\n`,
21
+ };
22
+ }
23
+ export async function executeConfigShowCommand(options) {
24
+ const loaded = await loadConfigForHome(options.home, options.config, options.environment ?? process.env);
25
+ return {
26
+ path: loaded.path,
27
+ config: loaded.config,
28
+ output: `${JSON.stringify(loaded.config, null, 2)}\n`,
29
+ };
30
+ }
31
+ export async function executeConfigValidateCommand(options) {
32
+ const path = targetPath(options);
33
+ await access(path);
34
+ const config = await loadConfig(path);
35
+ return {
36
+ path,
37
+ config,
38
+ output: `valid ${path}\n`,
39
+ };
40
+ }
41
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAA0B,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAc3D,SAAS,UAAU,CAAC,OAA6B;IAC/C,OAAO,iBAAiB,CACtB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EACrB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAA6B;IACpE,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA6B;IAE7B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/C,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC;QACvC,MAAM,EAAE,WAAW,IAAI,IAAI;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CACnC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAA6B;IAE7B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,SAAS,IAAI,IAAI;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type DoctorReport } from "../contracts/doctor.js";
2
+ import { type LockInspectionDependencies } from "../state/lock.js";
3
+ export type CommandResult = {
4
+ stdout: string;
5
+ stderr: string;
6
+ };
7
+ export type DoctorCommandDependencies = {
8
+ now?: () => Date;
9
+ platform?: NodeJS.Platform;
10
+ environment?: NodeJS.ProcessEnv;
11
+ runCommand?: (command: string, args: string[]) => Promise<CommandResult>;
12
+ readProcessStat?: () => Promise<string>;
13
+ currentUid?: () => number | undefined;
14
+ lock?: LockInspectionDependencies;
15
+ };
16
+ export type DoctorCommandOptions = {
17
+ home: string;
18
+ config?: string | undefined;
19
+ stateDir?: string | undefined;
20
+ json: boolean;
21
+ dependencies?: DoctorCommandDependencies | undefined;
22
+ };
23
+ export type DoctorCommandResult = {
24
+ report: DoctorReport;
25
+ output: string;
26
+ };
27
+ export declare function executeDoctorCommand(options: DoctorCommandOptions): Promise<DoctorCommandResult>;
28
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGjG,OAAO,EAAoB,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAIrF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACzE,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,0BAA0B,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA+jBF,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAsC9B"}