agentrinse 0.3.0 → 0.5.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 (179) hide show
  1. package/README.md +281 -179
  2. package/dist/adapters/claude-cache.d.ts +3 -0
  3. package/dist/adapters/claude-cache.d.ts.map +1 -0
  4. package/dist/adapters/claude-cache.js +67 -0
  5. package/dist/adapters/claude-cache.js.map +1 -0
  6. package/dist/adapters/claude-debug.d.ts +3 -0
  7. package/dist/adapters/claude-debug.d.ts.map +1 -0
  8. package/dist/adapters/claude-debug.js +100 -0
  9. package/dist/adapters/claude-debug.js.map +1 -0
  10. package/dist/adapters/claude-retention.d.ts +36 -0
  11. package/dist/adapters/claude-retention.d.ts.map +1 -0
  12. package/dist/adapters/claude-retention.js +176 -0
  13. package/dist/adapters/claude-retention.js.map +1 -0
  14. package/dist/adapters/codex-database.d.ts +64 -0
  15. package/dist/adapters/codex-database.d.ts.map +1 -0
  16. package/dist/adapters/codex-database.js +409 -0
  17. package/dist/adapters/codex-database.js.map +1 -0
  18. package/dist/adapters/copilot-maintenance.d.ts +23 -0
  19. package/dist/adapters/copilot-maintenance.d.ts.map +1 -0
  20. package/dist/adapters/copilot-maintenance.js +53 -0
  21. package/dist/adapters/copilot-maintenance.js.map +1 -0
  22. package/dist/adapters/provider-adapter.d.ts +5 -0
  23. package/dist/adapters/provider-adapter.d.ts.map +1 -1
  24. package/dist/adapters/provider-adapter.js +352 -6
  25. package/dist/adapters/provider-adapter.js.map +1 -1
  26. package/dist/adapters/provider-root.d.ts +8 -0
  27. package/dist/adapters/provider-root.d.ts.map +1 -0
  28. package/dist/adapters/provider-root.js +27 -0
  29. package/dist/adapters/provider-root.js.map +1 -0
  30. package/dist/adapters/provider-specs.d.ts.map +1 -1
  31. package/dist/adapters/provider-specs.js +25 -0
  32. package/dist/adapters/provider-specs.js.map +1 -1
  33. package/dist/adapters/registry.d.ts +1 -0
  34. package/dist/adapters/registry.d.ts.map +1 -1
  35. package/dist/adapters/registry.js +2 -0
  36. package/dist/adapters/registry.js.map +1 -1
  37. package/dist/commands/adapters.d.ts.map +1 -1
  38. package/dist/commands/adapters.js +3 -1
  39. package/dist/commands/adapters.js.map +1 -1
  40. package/dist/commands/apply.d.ts +2 -0
  41. package/dist/commands/apply.d.ts.map +1 -1
  42. package/dist/commands/apply.js +24 -3
  43. package/dist/commands/apply.js.map +1 -1
  44. package/dist/commands/audit.d.ts +1 -0
  45. package/dist/commands/audit.d.ts.map +1 -1
  46. package/dist/commands/audit.js +3 -1
  47. package/dist/commands/audit.js.map +1 -1
  48. package/dist/commands/completion.js +1 -1
  49. package/dist/commands/doctor.d.ts.map +1 -1
  50. package/dist/commands/doctor.js +34 -0
  51. package/dist/commands/doctor.js.map +1 -1
  52. package/dist/commands/plan.d.ts +2 -0
  53. package/dist/commands/plan.d.ts.map +1 -1
  54. package/dist/commands/plan.js +11 -1
  55. package/dist/commands/plan.js.map +1 -1
  56. package/dist/commands/purge.d.ts +13 -1
  57. package/dist/commands/purge.d.ts.map +1 -1
  58. package/dist/commands/purge.js +52 -6
  59. package/dist/commands/purge.js.map +1 -1
  60. package/dist/commands/show.d.ts.map +1 -1
  61. package/dist/commands/show.js +6 -0
  62. package/dist/commands/show.js.map +1 -1
  63. package/dist/commands/undo.d.ts +7 -1
  64. package/dist/commands/undo.d.ts.map +1 -1
  65. package/dist/commands/undo.js +38 -3
  66. package/dist/commands/undo.js.map +1 -1
  67. package/dist/contracts/action.d.ts +517 -2
  68. package/dist/contracts/action.d.ts.map +1 -1
  69. package/dist/contracts/action.js +101 -1
  70. package/dist/contracts/action.js.map +1 -1
  71. package/dist/contracts/database-backup.d.ts +192 -0
  72. package/dist/contracts/database-backup.d.ts.map +1 -0
  73. package/dist/contracts/database-backup.js +70 -0
  74. package/dist/contracts/database-backup.js.map +1 -0
  75. package/dist/contracts/finding.d.ts +208 -2
  76. package/dist/contracts/finding.d.ts.map +1 -1
  77. package/dist/contracts/plan.d.ts +207 -2
  78. package/dist/contracts/plan.d.ts.map +1 -1
  79. package/dist/contracts/plan.js +11 -2
  80. package/dist/contracts/plan.js.map +1 -1
  81. package/dist/contracts/provider-file-quarantine.d.ts +221 -0
  82. package/dist/contracts/provider-file-quarantine.d.ts.map +1 -0
  83. package/dist/contracts/provider-file-quarantine.js +61 -0
  84. package/dist/contracts/provider-file-quarantine.js.map +1 -0
  85. package/dist/contracts/report.d.ts +208 -2
  86. package/dist/contracts/report.d.ts.map +1 -1
  87. package/dist/contracts/resource.d.ts +3 -0
  88. package/dist/contracts/resource.d.ts.map +1 -1
  89. package/dist/contracts/resource.js +1 -0
  90. package/dist/contracts/resource.js.map +1 -1
  91. package/dist/contracts/run.d.ts +194 -0
  92. package/dist/contracts/run.d.ts.map +1 -1
  93. package/dist/contracts/run.js +16 -0
  94. package/dist/contracts/run.js.map +1 -1
  95. package/dist/core/apply.d.ts +9 -1
  96. package/dist/core/apply.d.ts.map +1 -1
  97. package/dist/core/apply.js +147 -4
  98. package/dist/core/apply.js.map +1 -1
  99. package/dist/core/database-exclusion.d.ts +23 -0
  100. package/dist/core/database-exclusion.d.ts.map +1 -0
  101. package/dist/core/database-exclusion.js +133 -0
  102. package/dist/core/database-exclusion.js.map +1 -0
  103. package/dist/core/database-executor.d.ts +45 -0
  104. package/dist/core/database-executor.d.ts.map +1 -0
  105. package/dist/core/database-executor.js +436 -0
  106. package/dist/core/database-executor.js.map +1 -0
  107. package/dist/core/database-recovery.d.ts +25 -0
  108. package/dist/core/database-recovery.d.ts.map +1 -0
  109. package/dist/core/database-recovery.js +628 -0
  110. package/dist/core/database-recovery.js.map +1 -0
  111. package/dist/core/database-revalidation.d.ts +19 -0
  112. package/dist/core/database-revalidation.d.ts.map +1 -0
  113. package/dist/core/database-revalidation.js +70 -0
  114. package/dist/core/database-revalidation.js.map +1 -0
  115. package/dist/core/no-clobber-rename.d.ts +2 -0
  116. package/dist/core/no-clobber-rename.d.ts.map +1 -1
  117. package/dist/core/no-clobber-rename.js +88 -0
  118. package/dist/core/no-clobber-rename.js.map +1 -1
  119. package/dist/core/pinned-file.d.ts +37 -0
  120. package/dist/core/pinned-file.d.ts.map +1 -0
  121. package/dist/core/pinned-file.js +228 -0
  122. package/dist/core/pinned-file.js.map +1 -0
  123. package/dist/core/plan.d.ts.map +1 -1
  124. package/dist/core/plan.js +4 -1
  125. package/dist/core/plan.js.map +1 -1
  126. package/dist/core/process-ownership.d.ts +1 -0
  127. package/dist/core/process-ownership.d.ts.map +1 -1
  128. package/dist/core/process-ownership.js +17 -3
  129. package/dist/core/process-ownership.js.map +1 -1
  130. package/dist/core/provider-file-executor.d.ts +40 -0
  131. package/dist/core/provider-file-executor.d.ts.map +1 -0
  132. package/dist/core/provider-file-executor.js +259 -0
  133. package/dist/core/provider-file-executor.js.map +1 -0
  134. package/dist/core/provider-file-identity.d.ts +8 -0
  135. package/dist/core/provider-file-identity.d.ts.map +1 -0
  136. package/dist/core/provider-file-identity.js +113 -0
  137. package/dist/core/provider-file-identity.js.map +1 -0
  138. package/dist/core/provider-file-policy.d.ts +19 -0
  139. package/dist/core/provider-file-policy.d.ts.map +1 -0
  140. package/dist/core/provider-file-policy.js +72 -0
  141. package/dist/core/provider-file-policy.js.map +1 -0
  142. package/dist/core/provider-file-recovery.d.ts +25 -0
  143. package/dist/core/provider-file-recovery.d.ts.map +1 -0
  144. package/dist/core/provider-file-recovery.js +393 -0
  145. package/dist/core/provider-file-recovery.js.map +1 -0
  146. package/dist/core/provider-file-revalidation.d.ts +20 -0
  147. package/dist/core/provider-file-revalidation.d.ts.map +1 -0
  148. package/dist/core/provider-file-revalidation.js +60 -0
  149. package/dist/core/provider-file-revalidation.js.map +1 -0
  150. package/dist/core/provider-processes.d.ts +18 -0
  151. package/dist/core/provider-processes.d.ts.map +1 -0
  152. package/dist/core/provider-processes.js +90 -0
  153. package/dist/core/provider-processes.js.map +1 -0
  154. package/dist/index.d.ts +4 -2
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +4 -2
  157. package/dist/index.js.map +1 -1
  158. package/dist/main.d.ts.map +1 -1
  159. package/dist/main.js +4 -1
  160. package/dist/main.js.map +1 -1
  161. package/dist/state/json-file.d.ts +2 -1
  162. package/dist/state/json-file.d.ts.map +1 -1
  163. package/dist/state/json-file.js +59 -2
  164. package/dist/state/json-file.js.map +1 -1
  165. package/dist/state/layout.d.ts +2 -0
  166. package/dist/state/layout.d.ts.map +1 -1
  167. package/dist/state/layout.js +2 -0
  168. package/dist/state/layout.js.map +1 -1
  169. package/dist/state/run-journal.d.ts.map +1 -1
  170. package/dist/state/run-journal.js +8 -2
  171. package/dist/state/run-journal.js.map +1 -1
  172. package/dist/version.d.ts +1 -1
  173. package/dist/version.js +1 -1
  174. package/package.json +1 -1
  175. package/schemas/audit.schema.json +1029 -1
  176. package/schemas/database-backup.schema.json +648 -0
  177. package/schemas/plan.schema.json +1014 -1
  178. package/schemas/provider-file-quarantine.schema.json +741 -0
  179. package/schemas/run.schema.json +180 -0
@@ -0,0 +1,100 @@
1
+ import { lstat, readdir } from "node:fs/promises";
2
+ import { basename, join } from "node:path";
3
+ import { sha256 } from "../core/digest.js";
4
+ import { inspectProviderFile } from "../core/provider-file-identity.js";
5
+ import { CLAUDE_DEBUG_LOG_MIN_AGE_MINUTES, CLAUDE_DEBUG_LOG_POLICY_ID, isClaudeDebugLogRelativePath, } from "../core/provider-file-policy.js";
6
+ function isMissing(error) {
7
+ return (error instanceof Error && "code" in error && error.code === "ENOENT");
8
+ }
9
+ export async function collectClaudeDebugLogs(context, ownerRoot, maxEntries) {
10
+ const debugRoot = join(ownerRoot, "debug");
11
+ const diagnostics = [];
12
+ let entries;
13
+ try {
14
+ const rootStats = await lstat(debugRoot);
15
+ if (rootStats.isSymbolicLink() || !rootStats.isDirectory()) {
16
+ return { resources: [], diagnostics };
17
+ }
18
+ entries = await readdir(debugRoot, { withFileTypes: true });
19
+ }
20
+ catch (error) {
21
+ if (isMissing(error)) {
22
+ return { resources: [], diagnostics };
23
+ }
24
+ return {
25
+ resources: [],
26
+ diagnostics: [
27
+ {
28
+ severity: "warning",
29
+ code: "CLAUDE_DEBUG_ENUMERATION_FAILED",
30
+ message: error instanceof Error ? error.message : String(error),
31
+ adapter: "claude",
32
+ },
33
+ ],
34
+ };
35
+ }
36
+ if (entries.length > maxEntries) {
37
+ return {
38
+ resources: [],
39
+ diagnostics: [
40
+ {
41
+ severity: "warning",
42
+ code: "CLAUDE_DEBUG_ENUMERATION_TRUNCATED",
43
+ message: `Claude debug cleanup requires at most ${maxEntries} direct entries`,
44
+ adapter: "claude",
45
+ },
46
+ ],
47
+ };
48
+ }
49
+ const cutoffMs = context.now.getTime() - CLAUDE_DEBUG_LOG_MIN_AGE_MINUTES * 60_000;
50
+ const resources = [];
51
+ for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
52
+ context.signal?.throwIfAborted();
53
+ const path = join(debugRoot, entry.name);
54
+ const relativePath = join("debug", entry.name);
55
+ if (!isClaudeDebugLogRelativePath(relativePath)) {
56
+ continue;
57
+ }
58
+ try {
59
+ const stats = await lstat(path);
60
+ if (!stats.isFile() || stats.isSymbolicLink() || stats.mtimeMs > cutoffMs) {
61
+ continue;
62
+ }
63
+ const identity = await inspectProviderFile(path, ownerRoot, "claude");
64
+ const canonicalKey = `claude:debug-log:${identity.path}`;
65
+ resources.push({
66
+ resource: {
67
+ id: `claude:agent-log-store:${sha256(canonicalKey)}`,
68
+ adapter: "claude",
69
+ kind: "agent-log-store",
70
+ canonicalKey,
71
+ displayName: `Claude debug log ${basename(identity.path)}`,
72
+ path: identity.path,
73
+ },
74
+ observedAt: context.now.toISOString(),
75
+ exists: true,
76
+ measuredBytes: identity.measuredBytes,
77
+ facts: {
78
+ reportOnly: false,
79
+ maintenanceAction: "provider.file-quarantine",
80
+ policyId: CLAUDE_DEBUG_LOG_POLICY_ID,
81
+ minAgeMinutes: CLAUDE_DEBUG_LOG_MIN_AGE_MINUTES,
82
+ providerFileIdentity: identity,
83
+ },
84
+ });
85
+ }
86
+ catch (error) {
87
+ if (isMissing(error)) {
88
+ continue;
89
+ }
90
+ diagnostics.push({
91
+ severity: "warning",
92
+ code: "CLAUDE_DEBUG_FILE_INSPECTION_FAILED",
93
+ message: error instanceof Error ? error.message : String(error),
94
+ adapter: "claude",
95
+ });
96
+ }
97
+ }
98
+ return { resources, diagnostics };
99
+ }
100
+ //# sourceMappingURL=claude-debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-debug.js","sourceRoot":"","sources":["../../src/adapters/claude-debug.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type Stats } from "node:fs";
2
+ import { type FileHandle } from "node:fs/promises";
3
+ import { z } from "zod";
4
+ import type { Diagnostic } from "../contracts/diagnostic.js";
5
+ export declare const CLAUDE_NATIVE_RETENTION_DEFAULT_DAYS = 30;
6
+ export declare const claudeNativeRetentionFactsSchema: z.ZodObject<{
7
+ mechanism: z.ZodLiteral<"cleanupPeriodDays">;
8
+ documentedDefaultDays: z.ZodLiteral<30>;
9
+ startupSweep: z.ZodLiteral<true>;
10
+ effectiveDaysKnown: z.ZodLiteral<false>;
11
+ userSettingsStatus: z.ZodEnum<{
12
+ changed: "changed";
13
+ invalid: "invalid";
14
+ missing: "missing";
15
+ "too-large": "too-large";
16
+ unreadable: "unreadable";
17
+ unsupported: "unsupported";
18
+ unverified: "unverified";
19
+ valid: "valid";
20
+ }>;
21
+ userConfiguredDays: z.ZodOptional<z.ZodNumber>;
22
+ }, z.core.$strip>;
23
+ export type ClaudeNativeRetentionFacts = z.infer<typeof claudeNativeRetentionFactsSchema>;
24
+ type SettingsFileHandle = Pick<FileHandle, "close" | "read" | "stat">;
25
+ export type ClaudeRetentionDependencies = {
26
+ lstat(path: string): Promise<Stats>;
27
+ open(path: string, flags: number): Promise<SettingsFileHandle>;
28
+ };
29
+ export type ClaudeRetentionInspection = {
30
+ facts: ClaudeNativeRetentionFacts;
31
+ diagnostics: Diagnostic[];
32
+ };
33
+ export declare function usesClaudeNativeRetention(relativePath: string): boolean;
34
+ export declare function inspectClaudeNativeRetention(ownerRoot: string, platform?: NodeJS.Platform, dependencies?: ClaudeRetentionDependencies): Promise<ClaudeRetentionInspection>;
35
+ export {};
36
+ //# sourceMappingURL=claude-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-retention.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-retention.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAI7D,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;iBAgB3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAEtE,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,0BAA0B,CAAC;IAClC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAAC;AA0EF,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEvE;AAED,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,YAAY,GAAE,2BAAkD,GAC/D,OAAO,CAAC,yBAAyB,CAAC,CAyIpC"}
@@ -0,0 +1,176 @@
1
+ import { constants } from "node:fs";
2
+ import { lstat, open } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { z } from "zod";
5
+ const MAX_SETTINGS_BYTES = 1024 * 1024;
6
+ export const CLAUDE_NATIVE_RETENTION_DEFAULT_DAYS = 30;
7
+ export const claudeNativeRetentionFactsSchema = z.object({
8
+ mechanism: z.literal("cleanupPeriodDays"),
9
+ documentedDefaultDays: z.literal(CLAUDE_NATIVE_RETENTION_DEFAULT_DAYS),
10
+ startupSweep: z.literal(true),
11
+ effectiveDaysKnown: z.literal(false),
12
+ userSettingsStatus: z.enum([
13
+ "missing",
14
+ "valid",
15
+ "invalid",
16
+ "changed",
17
+ "unreadable",
18
+ "unsupported",
19
+ "too-large",
20
+ "unverified",
21
+ ]),
22
+ userConfiguredDays: z.number().int().min(1).optional(),
23
+ });
24
+ const DEFAULT_DEPENDENCIES = {
25
+ lstat,
26
+ open,
27
+ };
28
+ const NATIVE_RETENTION_PATHS = new Set(["projects", "debug", "paste-cache", "image-cache"]);
29
+ function isMissing(error) {
30
+ return (error instanceof Error && "code" in error && error.code === "ENOENT");
31
+ }
32
+ function stableStats(before, after) {
33
+ return (before.dev === after.dev &&
34
+ before.ino === after.ino &&
35
+ before.mode === after.mode &&
36
+ before.mtimeMs === after.mtimeMs &&
37
+ before.ctimeMs === after.ctimeMs &&
38
+ before.size === after.size);
39
+ }
40
+ async function readBoundedSettings(handle) {
41
+ const buffer = Buffer.allocUnsafe(MAX_SETTINGS_BYTES + 1);
42
+ let offset = 0;
43
+ while (offset < buffer.length) {
44
+ const result = await handle.read(buffer, offset, buffer.length - offset, offset);
45
+ if (result.bytesRead === 0) {
46
+ break;
47
+ }
48
+ offset += result.bytesRead;
49
+ }
50
+ if (offset > MAX_SETTINGS_BYTES) {
51
+ return { overflow: true };
52
+ }
53
+ return {
54
+ contents: buffer.subarray(0, offset).toString("utf8"),
55
+ overflow: false,
56
+ };
57
+ }
58
+ function inspection(userSettingsStatus, diagnostics = [], userConfiguredDays) {
59
+ return {
60
+ facts: {
61
+ mechanism: "cleanupPeriodDays",
62
+ documentedDefaultDays: CLAUDE_NATIVE_RETENTION_DEFAULT_DAYS,
63
+ startupSweep: true,
64
+ effectiveDaysKnown: false,
65
+ userSettingsStatus,
66
+ ...(userConfiguredDays === undefined ? {} : { userConfiguredDays }),
67
+ },
68
+ diagnostics,
69
+ };
70
+ }
71
+ function warning(code, message) {
72
+ return {
73
+ severity: "warning",
74
+ code,
75
+ message,
76
+ adapter: "claude",
77
+ };
78
+ }
79
+ export function usesClaudeNativeRetention(relativePath) {
80
+ return NATIVE_RETENTION_PATHS.has(relativePath);
81
+ }
82
+ export async function inspectClaudeNativeRetention(ownerRoot, platform = process.platform, dependencies = DEFAULT_DEPENDENCIES) {
83
+ const settingsPath = join(ownerRoot, "settings.json");
84
+ let entryStats;
85
+ try {
86
+ entryStats = await dependencies.lstat(settingsPath);
87
+ }
88
+ catch (error) {
89
+ if (isMissing(error)) {
90
+ return inspection("missing");
91
+ }
92
+ return inspection("unreadable", [
93
+ warning("CLAUDE_RETENTION_SETTINGS_UNREADABLE", "Claude user settings could not be inspected; native retention is uncertain."),
94
+ ]);
95
+ }
96
+ if (entryStats.isSymbolicLink() || !entryStats.isFile()) {
97
+ return inspection("unsupported", [
98
+ warning("CLAUDE_RETENTION_SETTINGS_UNSUPPORTED", "Claude user settings are not a direct regular file; native retention is uncertain."),
99
+ ]);
100
+ }
101
+ if (entryStats.size > MAX_SETTINGS_BYTES) {
102
+ return inspection("too-large", [
103
+ warning("CLAUDE_RETENTION_SETTINGS_TOO_LARGE", "Claude user settings exceed the inspection limit; native retention is uncertain."),
104
+ ]);
105
+ }
106
+ let handle;
107
+ try {
108
+ const flags = platform === "win32" ? constants.O_RDONLY : constants.O_RDONLY | constants.O_NOFOLLOW;
109
+ handle = await dependencies.open(settingsPath, flags);
110
+ }
111
+ catch {
112
+ return inspection("unreadable", [
113
+ warning("CLAUDE_RETENTION_SETTINGS_UNREADABLE", "Claude user settings could not be opened safely; native retention is uncertain."),
114
+ ]);
115
+ }
116
+ let contents;
117
+ try {
118
+ const before = await handle.stat();
119
+ if (!before.isFile() || !stableStats(entryStats, before) || before.size > MAX_SETTINGS_BYTES) {
120
+ return inspection("changed", [
121
+ warning("CLAUDE_RETENTION_SETTINGS_CHANGED", "Claude user settings changed during inspection; native retention is uncertain."),
122
+ ]);
123
+ }
124
+ const boundedRead = await readBoundedSettings(handle);
125
+ const after = await handle.stat();
126
+ if (!stableStats(before, after)) {
127
+ return inspection("changed", [
128
+ warning("CLAUDE_RETENTION_SETTINGS_CHANGED", "Claude user settings changed during inspection; native retention is uncertain."),
129
+ ]);
130
+ }
131
+ if (boundedRead.overflow || boundedRead.contents === undefined) {
132
+ return inspection("too-large", [
133
+ warning("CLAUDE_RETENTION_SETTINGS_TOO_LARGE", "Claude user settings exceed the inspection limit; native retention is uncertain."),
134
+ ]);
135
+ }
136
+ contents = boundedRead.contents;
137
+ }
138
+ catch {
139
+ return inspection("unreadable", [
140
+ warning("CLAUDE_RETENTION_SETTINGS_UNREADABLE", "Claude user settings could not be read safely; native retention is uncertain."),
141
+ ]);
142
+ }
143
+ finally {
144
+ await handle.close().catch(() => undefined);
145
+ }
146
+ let value;
147
+ try {
148
+ value = JSON.parse(contents.replace(/^\uFEFF/u, ""));
149
+ }
150
+ catch {
151
+ return inspection("invalid", [
152
+ warning("CLAUDE_RETENTION_SETTINGS_INVALID", "Claude user settings are not valid JSON; Claude may pause its native retention sweep."),
153
+ ]);
154
+ }
155
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
156
+ return inspection("invalid", [
157
+ warning("CLAUDE_RETENTION_SETTINGS_INVALID", "Claude user settings must be a JSON object; Claude may pause its native retention sweep."),
158
+ ]);
159
+ }
160
+ const settings = value;
161
+ const cleanupPeriodDays = settings.cleanupPeriodDays;
162
+ if (cleanupPeriodDays !== undefined &&
163
+ (!Number.isInteger(cleanupPeriodDays) || cleanupPeriodDays < 1)) {
164
+ return inspection("invalid", [
165
+ warning("CLAUDE_RETENTION_SETTINGS_INVALID", "Claude cleanupPeriodDays must be an integer of at least 1; native retention is uncertain."),
166
+ ]);
167
+ }
168
+ const userConfiguredDays = cleanupPeriodDays === undefined ? undefined : cleanupPeriodDays;
169
+ if (Object.keys(settings).some((key) => key !== "cleanupPeriodDays")) {
170
+ return inspection("unverified", [
171
+ warning("CLAUDE_RETENTION_SETTINGS_UNVERIFIED", "Claude user settings contain fields AgentRinse does not validate; native retention is uncertain."),
172
+ ], userConfiguredDays);
173
+ }
174
+ return inspection("valid", [], userConfiguredDays);
175
+ }
176
+ //# sourceMappingURL=claude-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-retention.js","sourceRoot":"","sources":["../../src/adapters/claude-retention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { type FileHandle } from "node:fs/promises";
2
+ import { type CodexDatabaseFilename, type CodexDatabaseName, type DatabaseIdentity } from "../contracts/action.js";
3
+ export type CodexDatabaseContract = {
4
+ database: CodexDatabaseName;
5
+ filename: CodexDatabaseFilename;
6
+ migrationVersion: number;
7
+ migrationDigest: string;
8
+ schemaDigest: string;
9
+ requiredTables: string[];
10
+ };
11
+ export declare const CODEX_DATABASE_CONTRACTS: Record<CodexDatabaseFilename, CodexDatabaseContract>;
12
+ export type CommandResult = {
13
+ stdout: string;
14
+ stderr: string;
15
+ };
16
+ export type SqliteRunOptions = {
17
+ timeoutMs: number;
18
+ signal?: AbortSignal;
19
+ };
20
+ export type CodexDatabaseDependencies = {
21
+ signal?: AbortSignal;
22
+ runSqlite?: (args: string[], options?: SqliteRunOptions) => Promise<CommandResult>;
23
+ runLsof?: (paths: string[]) => Promise<CommandResult>;
24
+ runPs?: () => Promise<CommandResult>;
25
+ };
26
+ export type OpenHandleInspection = {
27
+ status: "idle";
28
+ pids: [];
29
+ } | {
30
+ status: "busy";
31
+ pids: number[];
32
+ } | {
33
+ status: "unknown";
34
+ pids: [];
35
+ reason: string;
36
+ };
37
+ export type CodexProcessInspection = {
38
+ status: "idle";
39
+ pids: [];
40
+ } | {
41
+ status: "busy";
42
+ pids: number[];
43
+ } | {
44
+ status: "unknown";
45
+ pids: [];
46
+ reason: string;
47
+ };
48
+ export type CodexDatabaseInspection = {
49
+ identity: DatabaseIdentity;
50
+ estimatedReclaimBytes: number;
51
+ freePageRatio: number;
52
+ quickCheck: "ok";
53
+ walBytes: number;
54
+ shmBytes: number;
55
+ sidecarsPresent: boolean;
56
+ };
57
+ export declare function codexDatabaseContract(path: string): CodexDatabaseContract | undefined;
58
+ export declare function inspectCodexDatabase(path: string, dependencies?: CodexDatabaseDependencies, contractPath?: string, identityPath?: string, lockedHandle?: FileHandle): Promise<CodexDatabaseInspection>;
59
+ export declare function vacuumCodexDatabaseInto(sourcePath: string, destinationPath: string, dependencies?: CodexDatabaseDependencies): Promise<void>;
60
+ export declare function verifyCodexDatabaseIntegrity(path: string, dependencies?: CodexDatabaseDependencies): Promise<void>;
61
+ export declare function inspectDatabaseOpenHandles(path: string, dependencies?: CodexDatabaseDependencies): Promise<OpenHandleInspection>;
62
+ export declare function inspectCodexProcesses(dependencies?: CodexDatabaseDependencies): Promise<CodexProcessInspection>;
63
+ export declare function codexDatabaseContractMatches(identity: DatabaseIdentity): boolean;
64
+ //# sourceMappingURL=codex-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-database.d.ts","sourceRoot":"","sources":["../../src/adapters/codex-database.ts"],"names":[],"mappings":"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"}