@happyvertical/smrt-core 0.40.70 → 0.42.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.
- package/AGENTS.md +3 -3
- package/agents/change-feed.md +1 -1
- package/agents/schema-paths.md +561 -32
- package/dist/browser.js +5 -4
- package/dist/cascade.d.ts +120 -0
- package/dist/cascade.d.ts.map +1 -0
- package/dist/cascade.js +430 -0
- package/dist/cascade.js.map +1 -0
- package/dist/change-feed.d.ts +34 -2
- package/dist/change-feed.d.ts.map +1 -1
- package/dist/change-feed.js +54 -13
- package/dist/change-feed.js.map +1 -1
- package/dist/change-signals.d.ts.map +1 -1
- package/dist/change-signals.js +8 -1
- package/dist/change-signals.js.map +1 -1
- package/dist/class.d.ts +36 -3
- package/dist/class.d.ts.map +1 -1
- package/dist/class.js +69 -14
- package/dist/class.js.map +1 -1
- package/dist/collection-cache.js +0 -0
- package/dist/collection-cache.js.map +1 -1
- package/dist/collection.d.ts +29 -0
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +68 -16
- package/dist/collection.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/decorators/index.d.ts +63 -5
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +37 -5
- package/dist/decorators/index.js.map +1 -1
- package/dist/dispatch/collections/Dispatches.d.ts.map +1 -1
- package/dist/dispatch/collections/Dispatches.js +21 -6
- package/dist/dispatch/collections/Dispatches.js.map +1 -1
- package/dist/dispatch/models/Dispatch.d.ts +1 -1
- package/dist/dispatch/models/Dispatch.d.ts.map +1 -1
- package/dist/dispatch/models/Dispatch.js +3 -2
- package/dist/dispatch/models/Dispatch.js.map +1 -1
- package/dist/dispatch/models/DispatchSubscription.d.ts +1 -1
- package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -1
- package/dist/dispatch/models/DispatchSubscription.js +2 -1
- package/dist/dispatch/models/DispatchSubscription.js.map +1 -1
- package/dist/dispatch/types.d.ts +5 -0
- package/dist/dispatch/types.d.ts.map +1 -1
- package/dist/embedded-write-queue.d.ts +46 -0
- package/dist/embedded-write-queue.d.ts.map +1 -0
- package/dist/embedded-write-queue.js +66 -0
- package/dist/embedded-write-queue.js.map +1 -0
- package/dist/embeddings/storage.d.ts +7 -0
- package/dist/embeddings/storage.d.ts.map +1 -1
- package/dist/embeddings/storage.js +31 -13
- package/dist/embeddings/storage.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/hierarchical.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -6
- package/dist/interceptors.d.ts +21 -0
- package/dist/interceptors.d.ts.map +1 -1
- package/dist/interceptors.js +27 -1
- package/dist/interceptors.js.map +1 -1
- package/dist/learning/memory.d.ts.map +1 -1
- package/dist/learning/memory.js +5 -4
- package/dist/learning/memory.js.map +1 -1
- package/dist/manifest/generator.d.ts.map +1 -1
- package/dist/manifest/generator.js +4 -7
- package/dist/manifest/generator.js.map +1 -1
- package/dist/manifest/static-manifest.js +10 -10
- package/dist/manifest/static-manifest.js.map +1 -1
- package/dist/manifest/store.js +1 -1
- package/dist/manifest/store.js.map +1 -1
- package/dist/manifest.json +19 -19
- package/dist/migrations/differ.d.ts +9 -1
- package/dist/migrations/differ.d.ts.map +1 -1
- package/dist/migrations/differ.js +12 -7
- package/dist/migrations/differ.js.map +1 -1
- package/dist/migrations/index.d.ts +2 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -1
- package/dist/migrations/integer-width.d.ts +99 -0
- package/dist/migrations/integer-width.d.ts.map +1 -0
- package/dist/migrations/integer-width.js +237 -0
- package/dist/migrations/integer-width.js.map +1 -0
- package/dist/migrations/minor-units.d.ts +162 -0
- package/dist/migrations/minor-units.d.ts.map +1 -0
- package/dist/migrations/minor-units.js +383 -0
- package/dist/migrations/minor-units.js.map +1 -0
- package/dist/migrations/tracker.d.ts.map +1 -1
- package/dist/migrations/tracker.js +28 -20
- package/dist/migrations/tracker.js.map +1 -1
- package/dist/migrations.js +3 -1
- package/dist/object.d.ts +98 -5
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +138 -30
- package/dist/object.js.map +1 -1
- package/dist/query-bounds.d.ts +5 -1
- package/dist/query-bounds.d.ts.map +1 -1
- package/dist/query-bounds.js +5 -1
- package/dist/query-bounds.js.map +1 -1
- package/dist/registry/class-registration.d.ts.map +1 -1
- package/dist/registry/class-registration.js +3 -1
- package/dist/registry/class-registration.js.map +1 -1
- package/dist/registry/manifest-field-merge.d.ts +12 -0
- package/dist/registry/manifest-field-merge.d.ts.map +1 -1
- package/dist/registry/manifest-field-merge.js +14 -2
- package/dist/registry/manifest-field-merge.js.map +1 -1
- package/dist/registry/schema-builder.d.ts +22 -1
- package/dist/registry/schema-builder.d.ts.map +1 -1
- package/dist/registry/schema-builder.js +205 -165
- package/dist/registry/schema-builder.js.map +1 -1
- package/dist/registry/types.d.ts +3 -2
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry.d.ts +41 -46
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +61 -83
- package/dist/registry.js.map +1 -1
- package/dist/scanner/manifest-generator.d.ts +45 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -1
- package/dist/scanner/manifest-generator.js +92 -28
- package/dist/scanner/manifest-generator.js.map +1 -1
- package/dist/schema/conflict-target.d.ts +104 -0
- package/dist/schema/conflict-target.d.ts.map +1 -0
- package/dist/schema/conflict-target.js +129 -0
- package/dist/schema/conflict-target.js.map +1 -0
- package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -1
- package/dist/schema/ddl/duckdb-strategy.js +3 -1
- package/dist/schema/ddl/duckdb-strategy.js.map +1 -1
- package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -1
- package/dist/schema/ddl/postgres-strategy.js +14 -1
- package/dist/schema/ddl/postgres-strategy.js.map +1 -1
- package/dist/schema/generator.d.ts +245 -41
- package/dist/schema/generator.d.ts.map +1 -1
- package/dist/schema/generator.js +397 -241
- package/dist/schema/generator.js.map +1 -1
- package/dist/schema/index-utils.d.ts +120 -0
- package/dist/schema/index-utils.d.ts.map +1 -1
- package/dist/schema/index-utils.js +242 -1
- package/dist/schema/index-utils.js.map +1 -1
- package/dist/schema/index.d.ts +2 -3
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +2 -3
- package/dist/schema/live-parity.d.ts +3 -1
- package/dist/schema/live-parity.d.ts.map +1 -1
- package/dist/schema/live-parity.js +23 -2
- package/dist/schema/live-parity.js.map +1 -1
- package/dist/schema/system-table-shapes.d.ts +13 -0
- package/dist/schema/system-table-shapes.d.ts.map +1 -1
- package/dist/schema/system-table-shapes.js +14 -1
- package/dist/schema/system-table-shapes.js.map +1 -1
- package/dist/schema/types.d.ts +17 -10
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/utils.d.ts +1 -1
- package/dist/schema/utils.d.ts.map +1 -1
- package/dist/schema/utils.js +3 -3
- package/dist/schema/utils.js.map +1 -1
- package/dist/schema.js +2 -3
- package/dist/smrt-knowledge.json +9 -9
- package/dist/system/compatibility.d.ts +42 -0
- package/dist/system/compatibility.d.ts.map +1 -1
- package/dist/system/compatibility.js +182 -9
- package/dist/system/compatibility.js.map +1 -1
- package/dist/system/index.d.ts +1 -0
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +3 -2
- package/dist/system/retention.d.ts +237 -0
- package/dist/system/retention.d.ts.map +1 -0
- package/dist/system/retention.js +497 -0
- package/dist/system/retention.js.map +1 -0
- package/dist/system/schema.d.ts +102 -16
- package/dist/system/schema.d.ts.map +1 -1
- package/dist/system/schema.js +85 -47
- package/dist/system/schema.js.map +1 -1
- package/dist/system/types.d.ts +0 -2
- package/dist/system/types.d.ts.map +1 -1
- package/dist/testing/database.d.ts.map +1 -1
- package/dist/testing/database.js.map +1 -1
- package/dist/utils/safe-integer.d.ts +19 -0
- package/dist/utils/safe-integer.d.ts.map +1 -0
- package/dist/utils/safe-integer.js +31 -0
- package/dist/utils/safe-integer.js.map +1 -0
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -3
- package/dist/utils.js.map +1 -1
- package/dist/vite-plugin/index.d.ts.map +1 -1
- package/dist/vite-plugin/index.js +4 -62
- package/dist/vite-plugin/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/schema/override-system.d.ts +0 -43
- package/dist/schema/override-system.d.ts.map +0 -1
- package/dist/schema/override-system.js +0 -205
- package/dist/schema/override-system.js.map +0 -1
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { DatabaseInterface } from '@happyvertical/sql';
|
|
2
|
+
/** Retention for the append-only change feed (`_smrt_changes`). */
|
|
3
|
+
export interface ChangeFeedRetentionPolicy {
|
|
4
|
+
/** Run this task (default `true`). */
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
/** Drop entries older than this many days (default 30). */
|
|
7
|
+
maxAgeDays?: number;
|
|
8
|
+
/** Additionally keep at most this many newest entries (default: unbounded). */
|
|
9
|
+
maxRows?: number;
|
|
10
|
+
}
|
|
11
|
+
/** Retention for AI usage telemetry (`_smrt_ai_usage`). */
|
|
12
|
+
export interface AiUsageRetentionPolicy {
|
|
13
|
+
/** Run this task (default `true`). */
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
/** Drop records older than this many days (default 90). */
|
|
16
|
+
maxAgeDays?: number;
|
|
17
|
+
/** Additionally keep at most this many newest records (default: unbounded). */
|
|
18
|
+
maxRows?: number;
|
|
19
|
+
}
|
|
20
|
+
/** Retention for remembered context entries (`_smrt_contexts`). */
|
|
21
|
+
export interface ContextsRetentionPolicy {
|
|
22
|
+
/** Run this task (default `true`). */
|
|
23
|
+
enabled?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Retention for the dispatch queue (`_smrt_dispatch`). */
|
|
26
|
+
export interface DispatchRetentionPolicy {
|
|
27
|
+
/** Run this task (default `true`). */
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
/** Drop completed dispatches processed more than this many days ago (default 30). */
|
|
30
|
+
completedOlderThanDays?: number;
|
|
31
|
+
/** Drop failed dispatches last touched more than this many days ago (default 90). */
|
|
32
|
+
failedOlderThanDays?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Retention policy for a sweep.
|
|
36
|
+
*
|
|
37
|
+
* Every table is pruned by default; set a table's entry to `false` (or
|
|
38
|
+
* `{ enabled: false }`) to opt that table out, or `enabled: false` at the top
|
|
39
|
+
* level to opt the whole sweep out.
|
|
40
|
+
*/
|
|
41
|
+
export interface RetentionPolicy {
|
|
42
|
+
/** Run the sweep at all (default `true`). */
|
|
43
|
+
enabled?: boolean;
|
|
44
|
+
/** Report what would be pruned without deleting anything (default `false`). */
|
|
45
|
+
dryRun?: boolean;
|
|
46
|
+
/** `_smrt_changes` retention, or `false` to skip. */
|
|
47
|
+
changes?: ChangeFeedRetentionPolicy | false;
|
|
48
|
+
/** `_smrt_ai_usage` retention, or `false` to skip. */
|
|
49
|
+
aiUsage?: AiUsageRetentionPolicy | false;
|
|
50
|
+
/** `_smrt_contexts` expiry enforcement, or `false` to skip. */
|
|
51
|
+
contexts?: ContextsRetentionPolicy | false;
|
|
52
|
+
/** `_smrt_dispatch` retention, or `false` to skip. */
|
|
53
|
+
dispatch?: DispatchRetentionPolicy | false;
|
|
54
|
+
/**
|
|
55
|
+
* Enable/disable individual tasks contributed through
|
|
56
|
+
* {@link registerRetentionTask}, keyed by task name. Unlisted tasks run.
|
|
57
|
+
*/
|
|
58
|
+
tasks?: Record<string, boolean>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Documented retention defaults.
|
|
62
|
+
*
|
|
63
|
+
* Chosen to be generous relative to every in-tree consumer: change-feed
|
|
64
|
+
* cursors resync automatically past the window, AI usage outlives a monthly
|
|
65
|
+
* billing cycle by two months, and dispatch keeps a full quarter of failures
|
|
66
|
+
* for forensics. Applications that need longer history raise these; those that
|
|
67
|
+
* need none set the table to `false`.
|
|
68
|
+
*/
|
|
69
|
+
export declare const DEFAULT_RETENTION_POLICY: {
|
|
70
|
+
changes: ChangeFeedRetentionPolicy;
|
|
71
|
+
aiUsage: AiUsageRetentionPolicy;
|
|
72
|
+
contexts: ContextsRetentionPolicy;
|
|
73
|
+
dispatch: DispatchRetentionPolicy;
|
|
74
|
+
};
|
|
75
|
+
/** Per-run inputs handed to every retention task. */
|
|
76
|
+
export interface RetentionTaskContext {
|
|
77
|
+
/** Count what would be deleted instead of deleting it. */
|
|
78
|
+
dryRun: boolean;
|
|
79
|
+
/** Sweep start time — every task derives its cutoffs from this one clock. */
|
|
80
|
+
now: Date;
|
|
81
|
+
}
|
|
82
|
+
/** What one task did (or why it did nothing). */
|
|
83
|
+
export interface RetentionTaskResult {
|
|
84
|
+
/** Task name, unique within a sweep. */
|
|
85
|
+
task: string;
|
|
86
|
+
/** Rows deleted, or — under `dryRun` — rows that would be deleted. */
|
|
87
|
+
pruned: number;
|
|
88
|
+
/**
|
|
89
|
+
* Why the task did no work: `disabled` (policy opted it out) or
|
|
90
|
+
* `unavailable` (the table does not exist in this database).
|
|
91
|
+
*/
|
|
92
|
+
skipped?: 'disabled' | 'unavailable';
|
|
93
|
+
/** Message of the error this task failed with, if any. */
|
|
94
|
+
error?: string;
|
|
95
|
+
/** Optional per-bucket breakdown (e.g. completed vs failed dispatches). */
|
|
96
|
+
details?: Record<string, number>;
|
|
97
|
+
}
|
|
98
|
+
/** What a task returns; a bare number is shorthand for `{ pruned }`. */
|
|
99
|
+
export type RetentionTaskOutcome = number | {
|
|
100
|
+
pruned: number;
|
|
101
|
+
details?: Record<string, number>;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* A retention task contributed by a package that owns its own tables.
|
|
105
|
+
*
|
|
106
|
+
* Tasks must honour `context.dryRun` — a task that deletes during a dry run
|
|
107
|
+
* makes the whole preview a lie.
|
|
108
|
+
*/
|
|
109
|
+
export interface RetentionTask {
|
|
110
|
+
/** Unique name; also the {@link RetentionPolicy.tasks} opt-out key. */
|
|
111
|
+
name: string;
|
|
112
|
+
/** One-line description surfaced by `smrt db:prune --json`. */
|
|
113
|
+
description?: string;
|
|
114
|
+
/** Perform (or, under `dryRun`, count) the deletion. */
|
|
115
|
+
run(db: DatabaseInterface, context: RetentionTaskContext): Promise<RetentionTaskOutcome>;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Register a retention task so {@link runRetentionSweep} includes it.
|
|
119
|
+
*
|
|
120
|
+
* Registering a task does not schedule anything — a task only runs when
|
|
121
|
+
* something calls {@link runRetentionSweep}, and the policy can still turn it
|
|
122
|
+
* off by name. Re-registering the same name replaces the previous task, which
|
|
123
|
+
* keeps module re-evaluation (HMR, repeated test imports) idempotent.
|
|
124
|
+
*
|
|
125
|
+
* @throws If `task.name` is empty, or is one of the four built-in table
|
|
126
|
+
* names (`changes`, `ai-usage`, `contexts`, `dispatch`) — see
|
|
127
|
+
* {@link RESERVED_TASK_NAMES}.
|
|
128
|
+
*/
|
|
129
|
+
export declare function registerRetentionTask(task: RetentionTask): void;
|
|
130
|
+
/** Remove a registered retention task. Returns `true` if one was removed. */
|
|
131
|
+
export declare function unregisterRetentionTask(name: string): boolean;
|
|
132
|
+
/** Registered retention tasks, ordered by name for deterministic sweeps. */
|
|
133
|
+
export declare function getRetentionTasks(): RetentionTask[];
|
|
134
|
+
/** Drop every registered retention task (test helper). */
|
|
135
|
+
export declare function clearRetentionTasks(): void;
|
|
136
|
+
/** Bounds for {@link pruneAiUsage}. At least one bound is required. */
|
|
137
|
+
export interface AiUsageRetention {
|
|
138
|
+
/** Delete records older than this many milliseconds. */
|
|
139
|
+
maxAgeMs?: number;
|
|
140
|
+
/**
|
|
141
|
+
* Keep at most this many newest records (by `created_at`).
|
|
142
|
+
*
|
|
143
|
+
* A ceiling, not a floor: combined with `maxAgeMs`, the two bounds union
|
|
144
|
+
* — a row past the age cutoff is deleted regardless of `maxRows`, so
|
|
145
|
+
* `maxRows` never resurrects rows the age bound already excludes. If every
|
|
146
|
+
* row is already older than `maxAgeMs`, a finite `maxRows` keeps none of
|
|
147
|
+
* them; it does not guarantee `maxRows` survivors independent of age. (A
|
|
148
|
+
* `maxRows` that overrode age this way would defeat the reason `maxAgeMs`
|
|
149
|
+
* usually exists in the first place — a compliance/privacy deletion
|
|
150
|
+
* deadline that a row-count floor should not be able to postpone.)
|
|
151
|
+
*
|
|
152
|
+
* Rows sharing the cutoff timestamp all survive, so the retained count can
|
|
153
|
+
* exceed `maxRows` by the size of one timestamp tie.
|
|
154
|
+
*/
|
|
155
|
+
maxRows?: number;
|
|
156
|
+
/**
|
|
157
|
+
* Restrict the prune to one tenant: a string matches that tenant, `null`
|
|
158
|
+
* matches the global (tenant-less) records. Omit to prune every tenant.
|
|
159
|
+
*/
|
|
160
|
+
tenantId?: string | null;
|
|
161
|
+
/** Count matching records without deleting them. */
|
|
162
|
+
dryRun?: boolean;
|
|
163
|
+
/** Clock for the age cutoff (default: now). */
|
|
164
|
+
now?: Date;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Prune AI usage telemetry to bound `_smrt_ai_usage` growth.
|
|
168
|
+
*
|
|
169
|
+
* `_smrt_ai_usage` gains one row per AI call and persistence is on by default,
|
|
170
|
+
* so a busy deployment writes millions of rows a year with nothing to remove
|
|
171
|
+
* them. Both bounds may be combined; each is applied independently and the
|
|
172
|
+
* returned count is the total deleted.
|
|
173
|
+
*
|
|
174
|
+
* Predicates are covered by `idx_smrt_ai_usage_tenant_created`
|
|
175
|
+
* (`tenant_id, created_at`) — the same index the subscriptions billing meter
|
|
176
|
+
* needs for its `tenant_id + created_at` range scan.
|
|
177
|
+
*
|
|
178
|
+
* @param db - Database holding the system tables.
|
|
179
|
+
* @param retention - At least one of `maxAgeMs` / `maxRows`.
|
|
180
|
+
* @returns Number of records deleted (or, under `dryRun`, matched).
|
|
181
|
+
*/
|
|
182
|
+
export declare function pruneAiUsage(db: DatabaseInterface, retention: AiUsageRetention): Promise<{
|
|
183
|
+
pruned: number;
|
|
184
|
+
}>;
|
|
185
|
+
/**
|
|
186
|
+
* Delete context entries whose `expires_at` has passed.
|
|
187
|
+
*
|
|
188
|
+
* `remember({ expiresAt })` has always stored the expiry and never acted on
|
|
189
|
+
* it. Enforcement is deliberately prune-side only: `recall()`/`recallAll()`
|
|
190
|
+
* keep their documented "expiry is not applied at read time" contract, so this
|
|
191
|
+
* bounds storage without changing read semantics for existing callers.
|
|
192
|
+
* (`LearningMemory` filters expired rows itself.)
|
|
193
|
+
*
|
|
194
|
+
* Rows with a `NULL` `expires_at` never expire and are never touched.
|
|
195
|
+
* The predicate is covered by `idx_smrt_contexts_expires_at`.
|
|
196
|
+
*
|
|
197
|
+
* @param db - Database holding the system tables.
|
|
198
|
+
* @param options.now - Clock for the expiry comparison (default: now).
|
|
199
|
+
* @param options.dryRun - Count matching rows without deleting them.
|
|
200
|
+
* @returns Number of expired entries deleted (or, under `dryRun`, matched).
|
|
201
|
+
*/
|
|
202
|
+
export declare function pruneExpiredContexts(db: DatabaseInterface, options?: {
|
|
203
|
+
now?: Date;
|
|
204
|
+
dryRun?: boolean;
|
|
205
|
+
}): Promise<{
|
|
206
|
+
pruned: number;
|
|
207
|
+
}>;
|
|
208
|
+
/** Aggregate outcome of one {@link runRetentionSweep} call. */
|
|
209
|
+
export interface RetentionSweepResult {
|
|
210
|
+
/** Whether this run only counted rows. */
|
|
211
|
+
dryRun: boolean;
|
|
212
|
+
/** Sweep start time, ISO-8601. */
|
|
213
|
+
startedAt: string;
|
|
214
|
+
/** Wall-clock duration of the sweep. */
|
|
215
|
+
durationMs: number;
|
|
216
|
+
/** Total rows pruned (or matched) across all tasks. */
|
|
217
|
+
pruned: number;
|
|
218
|
+
/** Per-task outcomes, in execution order. */
|
|
219
|
+
tasks: RetentionTaskResult[];
|
|
220
|
+
/** Whether any task failed — the sweep never throws for a task failure. */
|
|
221
|
+
failed: boolean;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Apply a {@link RetentionPolicy} across every framework-owned table.
|
|
225
|
+
*
|
|
226
|
+
* Built-in tasks run first, in a fixed order (`changes`, `ai-usage`,
|
|
227
|
+
* `contexts`, `dispatch`), followed by tasks registered via
|
|
228
|
+
* {@link registerRetentionTask} in name order. Tables that do not exist in
|
|
229
|
+
* this database are reported as `skipped: 'unavailable'` rather than failing —
|
|
230
|
+
* a sweep must be safe to run against a partially bootstrapped database.
|
|
231
|
+
*
|
|
232
|
+
* @param db - Database holding the system tables.
|
|
233
|
+
* @param policy - Overrides on {@link DEFAULT_RETENTION_POLICY}.
|
|
234
|
+
* @returns Per-task and aggregate counts; never throws for a task failure.
|
|
235
|
+
*/
|
|
236
|
+
export declare function runRetentionSweep(db: DatabaseInterface, policy?: RetentionPolicy): Promise<RetentionSweepResult>;
|
|
237
|
+
//# sourceMappingURL=retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/system/retention.ts"],"names":[],"mappings":"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"}
|