agentrinse 0.0.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 (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/adapters/artifacts/adapter.d.ts +24 -0
  4. package/dist/adapters/artifacts/adapter.d.ts.map +1 -0
  5. package/dist/adapters/artifacts/adapter.js +342 -0
  6. package/dist/adapters/artifacts/adapter.js.map +1 -0
  7. package/dist/adapters/docker/adapter.d.ts +15 -0
  8. package/dist/adapters/docker/adapter.d.ts.map +1 -0
  9. package/dist/adapters/docker/adapter.js +121 -0
  10. package/dist/adapters/docker/adapter.js.map +1 -0
  11. package/dist/adapters/git/adapter.d.ts +15 -0
  12. package/dist/adapters/git/adapter.d.ts.map +1 -0
  13. package/dist/adapters/git/adapter.js +156 -0
  14. package/dist/adapters/git/adapter.js.map +1 -0
  15. package/dist/adapters/git/porcelain.d.ts +11 -0
  16. package/dist/adapters/git/porcelain.d.ts.map +1 -0
  17. package/dist/adapters/git/porcelain.js +54 -0
  18. package/dist/adapters/git/porcelain.js.map +1 -0
  19. package/dist/adapters/provider-adapter.d.ts +22 -0
  20. package/dist/adapters/provider-adapter.d.ts.map +1 -0
  21. package/dist/adapters/provider-adapter.js +178 -0
  22. package/dist/adapters/provider-adapter.js.map +1 -0
  23. package/dist/adapters/provider-specs.d.ts +16 -0
  24. package/dist/adapters/provider-specs.d.ts.map +1 -0
  25. package/dist/adapters/provider-specs.js +157 -0
  26. package/dist/adapters/provider-specs.js.map +1 -0
  27. package/dist/adapters/registry.d.ts +4 -0
  28. package/dist/adapters/registry.d.ts.map +1 -0
  29. package/dist/adapters/registry.js +28 -0
  30. package/dist/adapters/registry.js.map +1 -0
  31. package/dist/cli.d.ts +3 -0
  32. package/dist/cli.d.ts.map +1 -0
  33. package/dist/cli.js +8 -0
  34. package/dist/cli.js.map +1 -0
  35. package/dist/commands/adapters.d.ts +2 -0
  36. package/dist/commands/adapters.d.ts.map +1 -0
  37. package/dist/commands/adapters.js +17 -0
  38. package/dist/commands/adapters.js.map +1 -0
  39. package/dist/commands/apply.d.ts +15 -0
  40. package/dist/commands/apply.d.ts.map +1 -0
  41. package/dist/commands/apply.js +63 -0
  42. package/dist/commands/apply.js.map +1 -0
  43. package/dist/commands/audit.d.ts +13 -0
  44. package/dist/commands/audit.d.ts.map +1 -0
  45. package/dist/commands/audit.js +22 -0
  46. package/dist/commands/audit.js.map +1 -0
  47. package/dist/commands/plan.d.ts +12 -0
  48. package/dist/commands/plan.d.ts.map +1 -0
  49. package/dist/commands/plan.js +19 -0
  50. package/dist/commands/plan.js.map +1 -0
  51. package/dist/config/defaults.d.ts +3 -0
  52. package/dist/config/defaults.d.ts.map +1 -0
  53. package/dist/config/defaults.js +29 -0
  54. package/dist/config/defaults.js.map +1 -0
  55. package/dist/config/load.d.ts +3 -0
  56. package/dist/config/load.d.ts.map +1 -0
  57. package/dist/config/load.js +31 -0
  58. package/dist/config/load.js.map +1 -0
  59. package/dist/config/schema.d.ts +84 -0
  60. package/dist/config/schema.d.ts.map +1 -0
  61. package/dist/config/schema.js +108 -0
  62. package/dist/config/schema.js.map +1 -0
  63. package/dist/contracts/action.d.ts +109 -0
  64. package/dist/contracts/action.d.ts.map +1 -0
  65. package/dist/contracts/action.js +37 -0
  66. package/dist/contracts/action.js.map +1 -0
  67. package/dist/contracts/adapter.d.ts +21 -0
  68. package/dist/contracts/adapter.d.ts.map +1 -0
  69. package/dist/contracts/adapter.js +2 -0
  70. package/dist/contracts/adapter.js.map +1 -0
  71. package/dist/contracts/diagnostic.d.ts +21 -0
  72. package/dist/contracts/diagnostic.d.ts.map +1 -0
  73. package/dist/contracts/diagnostic.js +11 -0
  74. package/dist/contracts/diagnostic.js.map +1 -0
  75. package/dist/contracts/finding.d.ts +123 -0
  76. package/dist/contracts/finding.d.ts.map +1 -0
  77. package/dist/contracts/finding.js +35 -0
  78. package/dist/contracts/finding.js.map +1 -0
  79. package/dist/contracts/plan.d.ts +53 -0
  80. package/dist/contracts/plan.d.ts.map +1 -0
  81. package/dist/contracts/plan.js +56 -0
  82. package/dist/contracts/plan.js.map +1 -0
  83. package/dist/contracts/report.d.ts +177 -0
  84. package/dist/contracts/report.d.ts.map +1 -0
  85. package/dist/contracts/report.js +29 -0
  86. package/dist/contracts/report.js.map +1 -0
  87. package/dist/contracts/resource.d.ts +72 -0
  88. package/dist/contracts/resource.d.ts.map +1 -0
  89. package/dist/contracts/resource.js +33 -0
  90. package/dist/contracts/resource.js.map +1 -0
  91. package/dist/contracts/run.d.ts +108 -0
  92. package/dist/contracts/run.d.ts.map +1 -0
  93. package/dist/contracts/run.js +35 -0
  94. package/dist/contracts/run.js.map +1 -0
  95. package/dist/core/apply.d.ts +29 -0
  96. package/dist/core/apply.d.ts.map +1 -0
  97. package/dist/core/apply.js +120 -0
  98. package/dist/core/apply.js.map +1 -0
  99. package/dist/core/artifact-executor.d.ts +39 -0
  100. package/dist/core/artifact-executor.d.ts.map +1 -0
  101. package/dist/core/artifact-executor.js +200 -0
  102. package/dist/core/artifact-executor.js.map +1 -0
  103. package/dist/core/artifact-revalidation.d.ts +22 -0
  104. package/dist/core/artifact-revalidation.d.ts.map +1 -0
  105. package/dist/core/artifact-revalidation.js +113 -0
  106. package/dist/core/artifact-revalidation.js.map +1 -0
  107. package/dist/core/audit.d.ts +12 -0
  108. package/dist/core/audit.d.ts.map +1 -0
  109. package/dist/core/audit.js +41 -0
  110. package/dist/core/audit.js.map +1 -0
  111. package/dist/core/digest.d.ts +7 -0
  112. package/dist/core/digest.d.ts.map +1 -0
  113. package/dist/core/digest.js +21 -0
  114. package/dist/core/digest.js.map +1 -0
  115. package/dist/core/measure.d.ts +16 -0
  116. package/dist/core/measure.d.ts.map +1 -0
  117. package/dist/core/measure.js +79 -0
  118. package/dist/core/measure.js.map +1 -0
  119. package/dist/core/mount-boundaries.d.ts +21 -0
  120. package/dist/core/mount-boundaries.d.ts.map +1 -0
  121. package/dist/core/mount-boundaries.js +72 -0
  122. package/dist/core/mount-boundaries.js.map +1 -0
  123. package/dist/core/plan-verification.d.ts +10 -0
  124. package/dist/core/plan-verification.d.ts.map +1 -0
  125. package/dist/core/plan-verification.js +42 -0
  126. package/dist/core/plan-verification.js.map +1 -0
  127. package/dist/core/plan.d.ts +6 -0
  128. package/dist/core/plan.d.ts.map +1 -0
  129. package/dist/core/plan.js +40 -0
  130. package/dist/core/plan.js.map +1 -0
  131. package/dist/core/process-ownership.d.ts +27 -0
  132. package/dist/core/process-ownership.d.ts.map +1 -0
  133. package/dist/core/process-ownership.js +140 -0
  134. package/dist/core/process-ownership.js.map +1 -0
  135. package/dist/core/safety.d.ts +7 -0
  136. package/dist/core/safety.d.ts.map +1 -0
  137. package/dist/core/safety.js +50 -0
  138. package/dist/core/safety.js.map +1 -0
  139. package/dist/index.d.ts +9 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +9 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/main.d.ts +4 -0
  144. package/dist/main.d.ts.map +1 -0
  145. package/dist/main.js +59 -0
  146. package/dist/main.js.map +1 -0
  147. package/dist/output.d.ts +4 -0
  148. package/dist/output.d.ts.map +1 -0
  149. package/dist/output.js +35 -0
  150. package/dist/output.js.map +1 -0
  151. package/dist/state/json-file.d.ts +4 -0
  152. package/dist/state/json-file.d.ts.map +1 -0
  153. package/dist/state/json-file.js +36 -0
  154. package/dist/state/json-file.js.map +1 -0
  155. package/dist/state/layout.d.ts +12 -0
  156. package/dist/state/layout.d.ts.map +1 -0
  157. package/dist/state/layout.js +20 -0
  158. package/dist/state/layout.js.map +1 -0
  159. package/dist/state/lock.d.ts +9 -0
  160. package/dist/state/lock.d.ts.map +1 -0
  161. package/dist/state/lock.js +93 -0
  162. package/dist/state/lock.js.map +1 -0
  163. package/dist/state/run-journal.d.ts +10 -0
  164. package/dist/state/run-journal.d.ts.map +1 -0
  165. package/dist/state/run-journal.js +57 -0
  166. package/dist/state/run-journal.js.map +1 -0
  167. package/dist/version.d.ts +2 -0
  168. package/dist/version.d.ts.map +1 -0
  169. package/dist/version.js +2 -0
  170. package/dist/version.js.map +1 -0
  171. package/package.json +73 -0
  172. package/schemas/audit.schema.json +424 -0
  173. package/schemas/plan.schema.json +184 -0
  174. package/schemas/run.schema.json +161 -0
@@ -0,0 +1,157 @@
1
+ import { join } from "node:path";
2
+ function homePath(...segments) {
3
+ return (home) => join(home, ...segments);
4
+ }
5
+ export const PROVIDER_SPECS = {
6
+ codex: {
7
+ id: "codex",
8
+ displayName: "OpenAI Codex",
9
+ defaultRoot: homePath(".codex"),
10
+ resources: [
11
+ {
12
+ relativePath: "sessions",
13
+ displayName: "Codex sessions",
14
+ kind: "agent-session-store",
15
+ },
16
+ {
17
+ relativePath: "archived_sessions",
18
+ displayName: "Codex archived sessions",
19
+ kind: "agent-session-store",
20
+ },
21
+ {
22
+ relativePath: "worktrees",
23
+ displayName: "Codex managed worktrees",
24
+ kind: "git-worktree",
25
+ },
26
+ {
27
+ relativePath: "logs_2.sqlite",
28
+ displayName: "Codex diagnostic database",
29
+ kind: "agent-database",
30
+ },
31
+ ],
32
+ },
33
+ claude: {
34
+ id: "claude",
35
+ displayName: "Claude Code",
36
+ defaultRoot: homePath(".claude"),
37
+ resources: [
38
+ {
39
+ relativePath: "projects",
40
+ displayName: "Claude project sessions",
41
+ kind: "agent-session-store",
42
+ },
43
+ {
44
+ relativePath: "debug",
45
+ displayName: "Claude debug logs",
46
+ kind: "agent-log-store",
47
+ },
48
+ {
49
+ relativePath: "worktrees",
50
+ displayName: "Claude managed worktrees",
51
+ kind: "git-worktree",
52
+ },
53
+ ],
54
+ },
55
+ cursor: {
56
+ id: "cursor",
57
+ displayName: "Cursor",
58
+ defaultRoot(home, platform) {
59
+ if (platform === "darwin") {
60
+ return join(home, "Library", "Application Support", "Cursor");
61
+ }
62
+ if (platform === "win32") {
63
+ return join(home, "AppData", "Roaming", "Cursor");
64
+ }
65
+ return join(home, ".config", "Cursor");
66
+ },
67
+ resources: [
68
+ {
69
+ relativePath: join("User", "workspaceStorage"),
70
+ displayName: "Cursor workspace state",
71
+ kind: "agent-session-store",
72
+ },
73
+ {
74
+ relativePath: join("User", "globalStorage"),
75
+ displayName: "Cursor global state",
76
+ kind: "agent-database",
77
+ },
78
+ {
79
+ relativePath: "logs",
80
+ displayName: "Cursor logs",
81
+ kind: "agent-log-store",
82
+ },
83
+ ],
84
+ },
85
+ copilot: {
86
+ id: "copilot",
87
+ displayName: "GitHub Copilot CLI",
88
+ defaultRoot: homePath(".copilot"),
89
+ resources: [
90
+ {
91
+ relativePath: "session-state",
92
+ displayName: "Copilot CLI session state",
93
+ kind: "agent-session-store",
94
+ },
95
+ {
96
+ relativePath: "logs",
97
+ displayName: "Copilot CLI logs",
98
+ kind: "agent-log-store",
99
+ },
100
+ ],
101
+ },
102
+ zed: {
103
+ id: "zed",
104
+ displayName: "Zed",
105
+ defaultRoot(home, platform) {
106
+ if (platform === "darwin") {
107
+ return join(home, "Library", "Application Support", "Zed");
108
+ }
109
+ if (platform === "win32") {
110
+ return join(home, "AppData", "Local", "Zed");
111
+ }
112
+ return join(home, ".local", "share", "zed");
113
+ },
114
+ resources: [
115
+ {
116
+ relativePath: ".",
117
+ displayName: "Zed user data",
118
+ kind: "agent-home",
119
+ },
120
+ ],
121
+ },
122
+ opencode: {
123
+ id: "opencode",
124
+ displayName: "OpenCode",
125
+ defaultRoot: homePath(".local", "share", "opencode"),
126
+ resources: [
127
+ {
128
+ relativePath: "opencode.db",
129
+ displayName: "OpenCode database",
130
+ kind: "agent-database",
131
+ },
132
+ {
133
+ relativePath: "log",
134
+ displayName: "OpenCode logs",
135
+ kind: "agent-log-store",
136
+ },
137
+ {
138
+ relativePath: "snapshot",
139
+ displayName: "OpenCode snapshots",
140
+ kind: "agent-snapshot-store",
141
+ },
142
+ ],
143
+ },
144
+ grok: {
145
+ id: "grok",
146
+ displayName: "Grok Build",
147
+ defaultRoot: homePath(".grok"),
148
+ resources: [
149
+ {
150
+ relativePath: ".",
151
+ displayName: "Grok Build data",
152
+ kind: "agent-home",
153
+ },
154
+ ],
155
+ },
156
+ };
157
+ //# sourceMappingURL=provider-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-specs.js","sourceRoot":"","sources":["../../src/adapters/provider-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AgentRinseConfig } from "../config/schema.js";
2
+ import type { AuditAdapter } from "../contracts/adapter.js";
3
+ export declare function createAuditAdapters(config: AgentRinseConfig, platform?: NodeJS.Platform): AuditAdapter[];
4
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAS5D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,YAAY,EAAE,CA+BhB"}
@@ -0,0 +1,28 @@
1
+ import { ArtifactAuditAdapter } from "./artifacts/adapter.js";
2
+ import { DockerAuditAdapter } from "./docker/adapter.js";
3
+ import { GitWorktreeAuditAdapter } from "./git/adapter.js";
4
+ import { ProviderAuditAdapter } from "./provider-adapter.js";
5
+ import { PROVIDER_SPECS } from "./provider-specs.js";
6
+ const PROVIDER_IDS = Object.keys(PROVIDER_SPECS);
7
+ export function createAuditAdapters(config, platform = process.platform) {
8
+ const adapters = PROVIDER_IDS.filter((id) => config.adapters[id]?.enabled !== false).map((id) => new ProviderAuditAdapter(PROVIDER_SPECS[id], {
9
+ ...(config.adapters[id]?.root === undefined ? {} : { root: config.adapters[id].root }),
10
+ platform,
11
+ measureBytes: config.audit.measureBytes,
12
+ maxEntries: config.audit.maxEntries,
13
+ }));
14
+ if (config.artifacts.projects.length > 0) {
15
+ adapters.push(new ArtifactAuditAdapter({
16
+ ...config.artifacts,
17
+ ...config.audit,
18
+ }));
19
+ }
20
+ if (config.adapters.git?.enabled === true) {
21
+ adapters.push(new GitWorktreeAuditAdapter(config.adapters.git.root));
22
+ }
23
+ if (config.adapters.docker?.enabled === true) {
24
+ adapters.push(new DockerAuditAdapter());
25
+ }
26
+ return adapters;
27
+ }
28
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAA0B,MAAM,qBAAqB,CAAC;AAE7E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAwB,CAAC;AAExE,MAAM,UAAU,mBAAmB,CACjC,MAAwB,EACxB,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,QAAQ,GAAmB,YAAY,CAAC,MAAM,CAClD,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,KAAK,CAC/C,CAAC,GAAG,CACH,CAAC,EAAE,EAAE,EAAE,CACL,IAAI,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;QAC3C,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtF,QAAQ;QACR,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY;QACvC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;KACpC,CAAC,CACL,CAAC;IAEF,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CACX,IAAI,oBAAoB,CAAC;YACvB,GAAG,MAAM,CAAC,SAAS;YACnB,GAAG,MAAM,CAAC,KAAK;SAChB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { main } from "./main.js";
3
+ main().catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ process.stderr.write(`agentrinse: ${message}\n`);
6
+ process.exitCode = 1;
7
+ });
8
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,OAAO,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function renderAdapters(): string;
2
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/commands/adapters.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,IAAI,MAAM,CAevC"}
@@ -0,0 +1,17 @@
1
+ import { PROVIDER_SPECS } from "../adapters/provider-specs.js";
2
+ export function renderAdapters() {
3
+ const lines = [
4
+ "AgentRinse adapters",
5
+ "",
6
+ ...Object.values(PROVIDER_SPECS)
7
+ .sort((left, right) => left.id.localeCompare(right.id))
8
+ .map((spec) => `${spec.id.padEnd(10)} audit-only ${spec.displayName}`),
9
+ "",
10
+ "git audit-only Git worktrees (explicit root)",
11
+ "docker audit-only Docker images and containers (opt-in)",
12
+ "artifacts safe-clean Explicit rebuildable project directories",
13
+ "",
14
+ ];
15
+ return lines.join("\n");
16
+ }
17
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/commands/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,EAAE;QACF,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;aAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC;QACzE,EAAE;QACF,sDAAsD;QACtD,8DAA8D;QAC9D,iEAAiE;QACjE,EAAE;KACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CleanupRun } from "../contracts/run.js";
2
+ export type ApplyCommandOptions = {
3
+ plan: string;
4
+ config?: string;
5
+ stateDir?: string;
6
+ yes: boolean;
7
+ json: boolean;
8
+ };
9
+ export type ApplyCommandResult = {
10
+ run: CleanupRun;
11
+ journalPath: string;
12
+ output: string;
13
+ };
14
+ export declare function executeApplyCommand(options: ApplyCommandOptions): Promise<ApplyCommandResult>;
15
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,UAAU,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAgCF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA4B7B"}
@@ -0,0 +1,63 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { resolve } from "node:path";
3
+ import { loadConfig } from "../config/load.js";
4
+ import { cleanupPlanSchema } from "../contracts/plan.js";
5
+ import { applyCleanupPlan } from "../core/apply.js";
6
+ import { readJsonFile } from "../state/json-file.js";
7
+ import { resolveStateRoot } from "../state/layout.js";
8
+ import { VERSION } from "../version.js";
9
+ async function confirmApply(actionCount) {
10
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
11
+ throw new Error("apply requires --yes when stdin or stdout is not an interactive terminal");
12
+ }
13
+ const prompt = createInterface({
14
+ input: process.stdin,
15
+ output: process.stdout,
16
+ });
17
+ try {
18
+ const answer = await prompt.question(`Apply ${actionCount} safe cleanup action(s)? [y/N] `);
19
+ return ["y", "yes"].includes(answer.trim().toLowerCase());
20
+ }
21
+ finally {
22
+ prompt.close();
23
+ }
24
+ }
25
+ function renderRun(run, journalPath) {
26
+ const applied = run.actions.filter((action) => action.status === "applied").length;
27
+ const skipped = run.actions.filter((action) => action.status === "skipped-stale").length;
28
+ const failed = run.actions.length - applied - skipped;
29
+ return [
30
+ `run ${run.runId}: ${run.status}`,
31
+ `applied ${applied}, skipped ${skipped}, failed ${failed}`,
32
+ `reclaimed ${run.reclaimedBytes} bytes`,
33
+ `journal ${journalPath}`,
34
+ "",
35
+ ].join("\n");
36
+ }
37
+ export async function executeApplyCommand(options) {
38
+ if (options.json && !options.yes) {
39
+ throw new Error("apply --json requires --yes");
40
+ }
41
+ if (VERSION === "0.0.0") {
42
+ throw new Error("apply is unavailable in the unsupported 0.0.0 reservation release");
43
+ }
44
+ const input = await readJsonFile(resolve(options.plan));
45
+ const plan = cleanupPlanSchema.parse(input);
46
+ const config = await loadConfig(options.config);
47
+ if (!options.yes && !(await confirmApply(plan.actions.length))) {
48
+ throw new Error("apply cancelled");
49
+ }
50
+ const result = await applyCleanupPlan({
51
+ input,
52
+ config,
53
+ stateRoot: resolveStateRoot(plan.home, options.stateDir),
54
+ });
55
+ return {
56
+ run: result.run,
57
+ journalPath: result.journalPath,
58
+ output: options.json
59
+ ? `${JSON.stringify(result.run, null, 2)}\n`
60
+ : renderRun(result.run, result.journalPath),
61
+ };
62
+ }
63
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AuditReport } from "../contracts/report.js";
2
+ export type AuditCommandOptions = {
3
+ home: string;
4
+ config?: string;
5
+ json: boolean;
6
+ output?: string;
7
+ };
8
+ export type AuditCommandResult = {
9
+ report: AuditReport;
10
+ output: string;
11
+ };
12
+ export declare function executeAuditCommand(options: AuditCommandOptions): Promise<AuditCommandResult>;
13
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAgB7B"}
@@ -0,0 +1,22 @@
1
+ import { resolve } from "node:path";
2
+ import { createAuditAdapters } from "../adapters/registry.js";
3
+ import { loadConfig } from "../config/load.js";
4
+ import { runAudit } from "../core/audit.js";
5
+ import { renderAudit } from "../output.js";
6
+ import { writeJsonAtomic } from "../state/json-file.js";
7
+ export async function executeAuditCommand(options) {
8
+ const config = await loadConfig(options.config);
9
+ const report = await runAudit({
10
+ home: resolve(options.home),
11
+ config,
12
+ adapters: createAuditAdapters(config),
13
+ });
14
+ if (options.output !== undefined) {
15
+ await writeJsonAtomic(resolve(options.output), report);
16
+ }
17
+ return {
18
+ report,
19
+ output: options.json ? `${JSON.stringify(report, null, 2)}\n` : renderAudit(report),
20
+ };
21
+ }
22
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +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"}
@@ -0,0 +1,12 @@
1
+ import { type CleanupPlan } from "../contracts/plan.js";
2
+ export type PlanCommandOptions = {
3
+ audit: string;
4
+ config?: string;
5
+ output?: string;
6
+ };
7
+ export type PlanCommandResult = {
8
+ plan: CleanupPlan;
9
+ output: string;
10
+ };
11
+ export declare function executePlanCommand(options: PlanCommandOptions): Promise<PlanCommandResult>;
12
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAK3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAahG"}
@@ -0,0 +1,19 @@
1
+ import { resolve } from "node:path";
2
+ import { loadConfig } from "../config/load.js";
3
+ import { cleanupPlanSchema } from "../contracts/plan.js";
4
+ import { auditReportSchema } from "../contracts/report.js";
5
+ import { createCleanupPlan } from "../core/plan.js";
6
+ import { readJsonFile, writeJsonAtomic } from "../state/json-file.js";
7
+ export async function executePlanCommand(options) {
8
+ const audit = auditReportSchema.parse(await readJsonFile(resolve(options.audit)));
9
+ const config = await loadConfig(options.config);
10
+ const plan = cleanupPlanSchema.parse(createCleanupPlan(audit, config));
11
+ if (options.output !== undefined) {
12
+ await writeJsonAtomic(resolve(options.output), plan);
13
+ }
14
+ return {
15
+ plan,
16
+ output: `${JSON.stringify(plan, null, 2)}\n`,
17
+ };
18
+ }
19
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAoB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAatE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;KAC7C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentRinseConfig } from "./schema.js";
2
+ export declare const DEFAULT_CONFIG: AgentRinseConfig;
3
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,cAAc,EAAE,gBA2B5B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export const DEFAULT_CONFIG = {
2
+ schemaVersion: 1,
3
+ adapters: {
4
+ codex: { enabled: true },
5
+ claude: { enabled: true },
6
+ cursor: { enabled: true },
7
+ copilot: { enabled: true },
8
+ zed: { enabled: true },
9
+ opencode: { enabled: true },
10
+ grok: { enabled: true },
11
+ git: { enabled: false },
12
+ docker: { enabled: false },
13
+ },
14
+ audit: {
15
+ maxEntries: 100_000,
16
+ measureBytes: true,
17
+ },
18
+ artifacts: {
19
+ projects: [],
20
+ minAgeMinutes: 24 * 60,
21
+ minBytes: 64 * 1024 * 1024,
22
+ processCheck: "required",
23
+ },
24
+ plan: {
25
+ ttlMinutes: 30,
26
+ maxRisk: "safe",
27
+ },
28
+ };
29
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACxB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACzB,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACzB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC3B,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACvB,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACvB,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3B;IACD,KAAK,EAAE;QACL,UAAU,EAAE,OAAO;QACnB,YAAY,EAAE,IAAI;KACnB;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,aAAa,EAAE,EAAE,GAAG,EAAE;QACtB,QAAQ,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;QAC1B,YAAY,EAAE,UAAU;KACzB;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,MAAM;KAChB;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type AgentRinseConfig } from "./schema.js";
2
+ export declare function loadConfig(path?: string): Promise<AgentRinseConfig>;
3
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4BzE"}
@@ -0,0 +1,31 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { DEFAULT_CONFIG } from "./defaults.js";
3
+ import { agentRinseConfigSchema } from "./schema.js";
4
+ export async function loadConfig(path) {
5
+ if (path === undefined) {
6
+ return structuredClone(DEFAULT_CONFIG);
7
+ }
8
+ const input = JSON.parse(await readFile(path, "utf8"));
9
+ const parsed = agentRinseConfigSchema.parse(input);
10
+ return {
11
+ ...structuredClone(DEFAULT_CONFIG),
12
+ ...parsed,
13
+ adapters: {
14
+ ...structuredClone(DEFAULT_CONFIG.adapters),
15
+ ...parsed.adapters,
16
+ },
17
+ audit: {
18
+ ...DEFAULT_CONFIG.audit,
19
+ ...parsed.audit,
20
+ },
21
+ artifacts: {
22
+ ...DEFAULT_CONFIG.artifacts,
23
+ ...parsed.artifacts,
24
+ },
25
+ plan: {
26
+ ...DEFAULT_CONFIG.plan,
27
+ ...parsed.plan,
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAyB,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAa;IAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO;QACL,GAAG,eAAe,CAAC,cAAc,CAAC;QAClC,GAAG,MAAM;QACT,QAAQ,EAAE;YACR,GAAG,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC3C,GAAG,MAAM,CAAC,QAAQ;SACnB;QACD,KAAK,EAAE;YACL,GAAG,cAAc,CAAC,KAAK;YACvB,GAAG,MAAM,CAAC,KAAK;SAChB;QACD,SAAS,EAAE;YACT,GAAG,cAAc,CAAC,SAAS;YAC3B,GAAG,MAAM,CAAC,SAAS;SACpB;QACD,IAAI,EAAE;YACJ,GAAG,cAAc,CAAC,IAAI;YACtB,GAAG,MAAM,CAAC,IAAI;SACf;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { z } from "zod";
2
+ import { artifactNameSchema, type ArtifactName } from "../contracts/action.js";
3
+ export declare const adapterIdSchema: z.ZodEnum<{
4
+ claude: "claude";
5
+ codex: "codex";
6
+ copilot: "copilot";
7
+ cursor: "cursor";
8
+ docker: "docker";
9
+ git: "git";
10
+ grok: "grok";
11
+ opencode: "opencode";
12
+ zed: "zed";
13
+ }>;
14
+ export declare const artifactProjectSchema: z.ZodObject<{
15
+ root: z.ZodString;
16
+ names: z.ZodArray<z.ZodEnum<{
17
+ ".cache": ".cache";
18
+ ".next": ".next";
19
+ ".turbo": ".turbo";
20
+ ".venv": ".venv";
21
+ build: "build";
22
+ coverage: "coverage";
23
+ dist: "dist";
24
+ "dist-runtime": "dist-runtime";
25
+ node_modules: "node_modules";
26
+ target: "target";
27
+ }>>;
28
+ }, z.core.$strip>;
29
+ export declare const agentRinseConfigSchema: z.ZodObject<{
30
+ schemaVersion: z.ZodLiteral<1>;
31
+ adapters: z.ZodDefault<z.ZodRecord<z.ZodEnum<{
32
+ claude: "claude";
33
+ codex: "codex";
34
+ copilot: "copilot";
35
+ cursor: "cursor";
36
+ docker: "docker";
37
+ git: "git";
38
+ grok: "grok";
39
+ opencode: "opencode";
40
+ zed: "zed";
41
+ }> & z.core.$partial, z.ZodObject<{
42
+ enabled: z.ZodOptional<z.ZodBoolean>;
43
+ root: z.ZodOptional<z.ZodOptional<z.ZodString>>;
44
+ }, z.core.$strip>>>;
45
+ audit: z.ZodDefault<z.ZodObject<{
46
+ maxEntries: z.ZodDefault<z.ZodNumber>;
47
+ measureBytes: z.ZodDefault<z.ZodBoolean>;
48
+ }, z.core.$strip>>;
49
+ artifacts: z.ZodDefault<z.ZodObject<{
50
+ projects: z.ZodDefault<z.ZodArray<z.ZodObject<{
51
+ root: z.ZodString;
52
+ names: z.ZodArray<z.ZodEnum<{
53
+ ".cache": ".cache";
54
+ ".next": ".next";
55
+ ".turbo": ".turbo";
56
+ ".venv": ".venv";
57
+ build: "build";
58
+ coverage: "coverage";
59
+ dist: "dist";
60
+ "dist-runtime": "dist-runtime";
61
+ node_modules: "node_modules";
62
+ target: "target";
63
+ }>>;
64
+ }, z.core.$strip>>>;
65
+ minAgeMinutes: z.ZodDefault<z.ZodNumber>;
66
+ minBytes: z.ZodDefault<z.ZodNumber>;
67
+ processCheck: z.ZodDefault<z.ZodLiteral<"required">>;
68
+ }, z.core.$strip>>;
69
+ plan: z.ZodDefault<z.ZodObject<{
70
+ ttlMinutes: z.ZodDefault<z.ZodNumber>;
71
+ maxRisk: z.ZodDefault<z.ZodEnum<{
72
+ destructive: "destructive";
73
+ experimental: "experimental";
74
+ recoverable: "recoverable";
75
+ safe: "safe";
76
+ }>>;
77
+ }, z.core.$strip>>;
78
+ }, z.core.$strip>;
79
+ export type AdapterId = z.infer<typeof adapterIdSchema>;
80
+ export { artifactNameSchema };
81
+ export type { ArtifactName };
82
+ export type ArtifactProject = z.infer<typeof artifactProjectSchema>;
83
+ export type AgentRinseConfig = z.infer<typeof agentRinseConfigSchema>;
84
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/E,eAAO,MAAM,eAAe;;;;;;;;;;EAU1B,CAAC;AAOH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAMhC,CAAC;AAOH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8E/B,CAAC;AAEL,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}