@vibesdotdev/localdb 0.0.2 → 1.0.0-rc.3

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 (198) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +123 -2
  3. package/dist/cli/commands/_shared.consumer.d.ts +1 -3
  4. package/dist/cli/commands/_shared.consumer.d.ts.map +1 -1
  5. package/dist/cli/commands/_shared.consumer.js +1 -11
  6. package/dist/cli/commands/_shared.consumer.js.map +1 -1
  7. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.js +1 -1
  8. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.js.map +1 -1
  9. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.d.ts +9 -3
  10. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.d.ts.map +1 -1
  11. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js +59 -45
  12. package/dist/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.js.map +1 -1
  13. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.js +1 -1
  14. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.js.map +1 -1
  15. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.d.ts +8 -3
  16. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.d.ts.map +1 -1
  17. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js +12 -10
  18. package/dist/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.js.map +1 -1
  19. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.js +1 -1
  20. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.js.map +1 -1
  21. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.d.ts +6 -3
  22. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.d.ts.map +1 -1
  23. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.js +8 -7
  24. package/dist/cli/commands/pools/dev.localdb.pools.cli-command.impl.js.map +1 -1
  25. package/dist/cli/commands/query/dev.localdb.query.cli-command.descriptor.js +1 -1
  26. package/dist/cli/commands/query/dev.localdb.query.cli-command.descriptor.js.map +1 -1
  27. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.d.ts +13 -3
  28. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.d.ts.map +1 -1
  29. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js +66 -51
  30. package/dist/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.js.map +1 -1
  31. package/dist/cli/commands/status/dev.localdb.status.cli-command.descriptor.js +1 -1
  32. package/dist/cli/commands/status/dev.localdb.status.cli-command.descriptor.js.map +1 -1
  33. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.d.ts +9 -3
  34. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.d.ts.map +1 -1
  35. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js +41 -29
  36. package/dist/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.js.map +1 -1
  37. package/dist/cli/inputs.d.ts +25 -0
  38. package/dist/cli/inputs.d.ts.map +1 -0
  39. package/dist/cli/inputs.js +81 -0
  40. package/dist/cli/inputs.js.map +1 -0
  41. package/dist/cli/types.d.ts +45 -0
  42. package/dist/cli/types.d.ts.map +1 -0
  43. package/dist/cli/types.js +14 -0
  44. package/dist/cli/types.js.map +1 -0
  45. package/dist/core/connection-pool.d.ts +204 -46
  46. package/dist/core/connection-pool.d.ts.map +1 -1
  47. package/dist/core/connection-pool.js +610 -101
  48. package/dist/core/connection-pool.js.map +1 -1
  49. package/dist/core/database.d.ts +243 -63
  50. package/dist/core/database.d.ts.map +1 -1
  51. package/dist/core/database.js +937 -203
  52. package/dist/core/database.js.map +1 -1
  53. package/dist/core/holders.d.ts +15 -0
  54. package/dist/core/holders.d.ts.map +1 -0
  55. package/dist/core/holders.js +4 -0
  56. package/dist/core/holders.js.map +1 -0
  57. package/dist/core/host-kinds.d.ts +22 -0
  58. package/dist/core/host-kinds.d.ts.map +1 -0
  59. package/dist/core/host-kinds.js +52 -0
  60. package/dist/core/host-kinds.js.map +1 -0
  61. package/dist/core/live-runtime.d.ts +17 -0
  62. package/dist/core/live-runtime.d.ts.map +1 -0
  63. package/dist/core/live-runtime.js +28 -0
  64. package/dist/core/live-runtime.js.map +1 -0
  65. package/dist/core/migration-registry.d.ts +115 -80
  66. package/dist/core/migration-registry.d.ts.map +1 -1
  67. package/dist/core/migration-registry.js +340 -199
  68. package/dist/core/migration-registry.js.map +1 -1
  69. package/dist/core/open-connection.d.ts +11 -0
  70. package/dist/core/open-connection.d.ts.map +1 -0
  71. package/dist/core/open-connection.js +70 -0
  72. package/dist/core/open-connection.js.map +1 -0
  73. package/dist/core/outcome.d.ts +21 -0
  74. package/dist/core/outcome.d.ts.map +1 -0
  75. package/dist/core/outcome.js +22 -0
  76. package/dist/core/outcome.js.map +1 -0
  77. package/dist/core/pool-api.d.ts +19 -0
  78. package/dist/core/pool-api.d.ts.map +1 -0
  79. package/dist/core/pool-api.js +59 -0
  80. package/dist/core/pool-api.js.map +1 -0
  81. package/dist/core/slow-statement.d.ts +81 -0
  82. package/dist/core/slow-statement.d.ts.map +1 -0
  83. package/dist/core/slow-statement.js +149 -0
  84. package/dist/core/slow-statement.js.map +1 -0
  85. package/dist/core/wal-policy.d.ts +86 -0
  86. package/dist/core/wal-policy.d.ts.map +1 -0
  87. package/dist/core/wal-policy.js +115 -0
  88. package/dist/core/wal-policy.js.map +1 -0
  89. package/dist/dev.localdb.cli-group.descriptor.d.ts +1 -1
  90. package/dist/dev.localdb.cli-group.descriptor.d.ts.map +1 -1
  91. package/dist/dev.localdb.context.descriptor.d.ts +15 -1
  92. package/dist/dev.localdb.context.descriptor.d.ts.map +1 -1
  93. package/dist/dev.localdb.context.descriptor.js +1 -1
  94. package/dist/dev.localdb.context.descriptor.js.map +1 -1
  95. package/dist/dev.localdb.context.impl.consumer.d.ts +12 -5
  96. package/dist/dev.localdb.context.impl.consumer.d.ts.map +1 -1
  97. package/dist/dev.localdb.context.impl.consumer.js +14 -5
  98. package/dist/dev.localdb.context.impl.consumer.js.map +1 -1
  99. package/dist/driver/sqlite-driver.base.d.ts +107 -0
  100. package/dist/driver/sqlite-driver.base.d.ts.map +1 -0
  101. package/dist/driver/sqlite-driver.base.js +426 -0
  102. package/dist/driver/sqlite-driver.base.js.map +1 -0
  103. package/dist/driver/sqlite-driver.d.ts +154 -0
  104. package/dist/driver/sqlite-driver.d.ts.map +1 -0
  105. package/dist/driver/sqlite-driver.js +103 -0
  106. package/dist/driver/sqlite-driver.js.map +1 -0
  107. package/dist/index.d.ts +11 -5
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +8 -4
  110. package/dist/index.js.map +1 -1
  111. package/dist/localdb.client.descriptor.d.ts +10 -0
  112. package/dist/localdb.client.descriptor.d.ts.map +1 -0
  113. package/dist/localdb.client.descriptor.js +13 -0
  114. package/dist/localdb.client.descriptor.js.map +1 -0
  115. package/dist/localdb.client.impl.consumer.d.ts +11 -0
  116. package/dist/localdb.client.impl.consumer.d.ts.map +1 -0
  117. package/dist/localdb.client.impl.consumer.js +11 -0
  118. package/dist/localdb.client.impl.consumer.js.map +1 -0
  119. package/dist/localdb.plugin.d.ts +2 -2
  120. package/dist/localdb.plugin.d.ts.map +1 -1
  121. package/dist/localdb.plugin.js +58 -10
  122. package/dist/localdb.plugin.js.map +1 -1
  123. package/dist/location.d.ts +6 -0
  124. package/dist/location.d.ts.map +1 -0
  125. package/dist/location.js +6 -0
  126. package/dist/location.js.map +1 -0
  127. package/dist/migrations/load-sql.d.ts +25 -21
  128. package/dist/migrations/load-sql.d.ts.map +1 -1
  129. package/dist/migrations/load-sql.js +91 -76
  130. package/dist/migrations/load-sql.js.map +1 -1
  131. package/dist/pool.d.ts +3 -0
  132. package/dist/pool.d.ts.map +1 -0
  133. package/dist/pool.js +3 -0
  134. package/dist/pool.js.map +1 -0
  135. package/dist/schemas/api.d.ts +133 -59
  136. package/dist/schemas/api.d.ts.map +1 -1
  137. package/dist/schemas/api.js +1 -1
  138. package/dist/schemas/api.js.map +1 -1
  139. package/dist/schemas/migrations.d.ts +123 -0
  140. package/dist/schemas/migrations.d.ts.map +1 -0
  141. package/dist/schemas/migrations.js +55 -0
  142. package/dist/schemas/migrations.js.map +1 -0
  143. package/dist/schemas/pool.d.ts +27 -0
  144. package/dist/schemas/pool.d.ts.map +1 -0
  145. package/dist/schemas/pool.js +7 -0
  146. package/dist/schemas/pool.js.map +1 -0
  147. package/dist/schemas/sqlite-driver-base.d.ts +50 -0
  148. package/dist/schemas/sqlite-driver-base.d.ts.map +1 -0
  149. package/dist/schemas/sqlite-driver-base.js +2 -0
  150. package/dist/schemas/sqlite-driver-base.js.map +1 -0
  151. package/dist/testing/sqlite-driver-conformance.d.ts +42 -0
  152. package/dist/testing/sqlite-driver-conformance.d.ts.map +1 -0
  153. package/dist/testing/sqlite-driver-conformance.js +471 -0
  154. package/dist/testing/sqlite-driver-conformance.js.map +1 -0
  155. package/package.json +78 -104
  156. package/dist/core/error-context.d.ts +0 -2
  157. package/dist/core/error-context.d.ts.map +0 -1
  158. package/dist/core/error-context.js +0 -17
  159. package/dist/core/error-context.js.map +0 -1
  160. package/dist/core/runtime.d.ts +0 -3
  161. package/dist/core/runtime.d.ts.map +0 -1
  162. package/dist/core/runtime.js +0 -17
  163. package/dist/core/runtime.js.map +0 -1
  164. package/dist/localdb.cloud.plugin.d.ts +0 -17
  165. package/dist/localdb.cloud.plugin.d.ts.map +0 -1
  166. package/dist/localdb.cloud.plugin.js +0 -23
  167. package/dist/localdb.cloud.plugin.js.map +0 -1
  168. package/src/cli/commands/_shared.consumer.ts +0 -20
  169. package/src/cli/commands/migrate/dev.localdb.migrate.cli-command.descriptor.ts +0 -20
  170. package/src/cli/commands/migrate/dev.localdb.migrate.cli-command.impl.consumer.ts +0 -97
  171. package/src/cli/commands/namespaces/dev.localdb.namespaces.cli-command.descriptor.ts +0 -17
  172. package/src/cli/commands/namespaces/dev.localdb.namespaces.cli-command.impl.ts +0 -46
  173. package/src/cli/commands/pools/dev.localdb.pools.cli-command.descriptor.ts +0 -16
  174. package/src/cli/commands/pools/dev.localdb.pools.cli-command.impl.ts +0 -37
  175. package/src/cli/commands/query/dev.localdb.query.cli-command.descriptor.ts +0 -21
  176. package/src/cli/commands/query/dev.localdb.query.cli-command.impl.consumer.ts +0 -69
  177. package/src/cli/commands/status/dev.localdb.status.cli-command.descriptor.ts +0 -20
  178. package/src/cli/commands/status/dev.localdb.status.cli-command.impl.consumer.ts +0 -93
  179. package/src/core/connection-pool.ts +0 -240
  180. package/src/core/database.ts +0 -419
  181. package/src/core/error-context.ts +0 -19
  182. package/src/core/migration-registry.ts +0 -321
  183. package/src/core/runtime.ts +0 -17
  184. package/src/dev.localdb.cli-group.descriptor.ts +0 -20
  185. package/src/dev.localdb.context.descriptor.ts +0 -13
  186. package/src/dev.localdb.context.impl.consumer.ts +0 -12
  187. package/src/index.ts +0 -28
  188. package/src/localdb.cloud.plugin.ts +0 -24
  189. package/src/localdb.plugin.ts +0 -43
  190. package/src/migrations/atlas/001-initial-schema.sql +0 -173
  191. package/src/migrations/atlas/002-lang-server-fields.sql +0 -12
  192. package/src/migrations/atlas/003-config-id-dedup.sql +0 -31
  193. package/src/migrations/atlas/004-fix-on-conflict-constraints.sql +0 -25
  194. package/src/migrations/atlas/005-diagnostics.sql +0 -66
  195. package/src/migrations/atlas/006-diagnostic-summaries.sql +0 -65
  196. package/src/migrations/atlas/007-diagnostic-slice.sql +0 -83
  197. package/src/migrations/load-sql.ts +0 -133
  198. package/src/schemas/api.ts +0 -92
@@ -5,222 +5,363 @@
5
5
  * Consumers register their migrations with the registry, which ensures
6
6
  * they run in order with proper error handling and version tracking.
7
7
  */
8
+ import * as z from 'zod/v4';
8
9
  import { getLogger } from '@vibesdotdev/logging';
9
- import { toErrorContext } from './error-context.js';
10
- const logger = getLogger('localdb:migrations');
11
- class MigrationRegistry {
12
- namespaces = new Map();
13
- hasVersionTable(db) {
14
- const row = db
15
- .query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'vibes_schema_versions'")
16
- .get();
17
- return row?.name === 'vibes_schema_versions';
10
+ import { CapabilityError, createRuntimeKind, isCapabilityError } from '@vibesdotdev/kernel';
11
+ import { MigrationDescriptorSchema, MigrationRegistrationSchema, MigrationReplacementSchema, NamespaceDatabaseLocationSchema } from "../schemas/migrations.js";
12
+ /** The registry's Logging on the runtime one call serves (C083a). */
13
+ function migrationsLogger(runtime) {
14
+ return getLogger('localdb:migrations', runtime);
15
+ }
16
+ /** The rows the registry reads back. */
17
+ const NameRowSchema = z.object({ name: z.string() });
18
+ const UserVersionRowSchema = z.object({ user_version: z.number() });
19
+ const VersionRowSchema = z.object({ version: z.number() });
20
+ const CountRowSchema = z.object({ count: z.number() });
21
+ /** The typed refusal of a second registration of one migration namespace. */
22
+ export const MIGRATION_NAMESPACE_REGISTERED = 'migration-namespace-registered';
23
+ /**
24
+ * Whether a caught failure is the registry's refusal to register `namespace`
25
+ * (any namespace when omitted) a second time. A catch site parses its binding
26
+ * with Runtime's `CaughtFailureSchema` first.
27
+ */
28
+ export function isMigrationNamespaceRegistered(failure, namespace) {
29
+ return (isCapabilityError(failure) &&
30
+ failure.reason === MIGRATION_NAMESPACE_REGISTERED &&
31
+ (namespace === undefined || failure.details?.namespace === namespace));
32
+ }
33
+ export const MIGRATION_KIND = 'localdb/migrations';
34
+ export const migrationKind = createRuntimeKind({
35
+ id: MIGRATION_KIND,
36
+ descriptorSchema: MigrationDescriptorSchema
37
+ });
38
+ function validated(schema, input, reason) {
39
+ try {
40
+ return schema.parse(input);
18
41
  }
19
- ensureVersionTable(db) {
20
- if (this.hasVersionTable(db))
21
- return;
22
- db.exec(`
23
- CREATE TABLE IF NOT EXISTS vibes_schema_versions (
24
- namespace TEXT PRIMARY KEY,
25
- version INTEGER NOT NULL DEFAULT 0,
26
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
27
- )
28
- `);
42
+ catch (cause) {
43
+ throw new CapabilityError('Invalid LocalDB migration declaration', 'INVALID_INPUT', {
44
+ reason, retryable: false, cause
45
+ });
29
46
  }
30
- getLegacyUserVersion(db) {
31
- let lastError;
32
- const maxRetries = 3;
33
- const baseDelay = 100;
34
- for (let attempt = 0; attempt < maxRetries; attempt++) {
35
- try {
36
- const result = db.query('PRAGMA user_version').get();
37
- return result.user_version;
38
- }
39
- catch (error) {
40
- lastError = error;
41
- if (error?.code === 'SQLITE_BUSY' && attempt < maxRetries - 1) {
42
- const delay = baseDelay * Math.pow(2, attempt);
43
- Bun.sleepSync(delay);
44
- continue;
45
- }
46
- throw error;
47
- }
48
- }
49
- throw lastError ?? new Error('All retries exhausted');
47
+ }
48
+ function declarations(runtime) {
49
+ if (!runtime.hasKind(MIGRATION_KIND))
50
+ return [];
51
+ // SAFETY: the kernel validates every contribution with MigrationDescriptorSchema at registration.
52
+ return runtime.query(MIGRATION_KIND).descriptors();
53
+ }
54
+ function declaration(runtime, namespace) {
55
+ return declarations(runtime).find(entry => entry.namespace === namespace);
56
+ }
57
+ function install(runtime, declaration) {
58
+ if (!runtime.hasKind(MIGRATION_KIND))
59
+ runtime.registerKind(migrationKind);
60
+ runtime.registerDescriptor(MIGRATION_KIND, {
61
+ kind: MIGRATION_KIND, id: declaration.namespace, ...declaration
62
+ });
63
+ }
64
+ function buildNamespace(namespace, migrations, autoReset, location) {
65
+ return {
66
+ namespace,
67
+ migrations,
68
+ currentVersion: migrations.length,
69
+ autoReset,
70
+ location
71
+ };
72
+ }
73
+ function getMigrationIds(migrations) {
74
+ return migrations.map(({ version, name }) => `${String(version).padStart(3, '0')}-${name}`);
75
+ }
76
+ /**
77
+ * Whether `right` names exactly the ids in `left` (the registered ids, which
78
+ * are distinct: versions are sequential). Equal lengths plus every distinct
79
+ * `left` id present in `right` means `right` repeats none.
80
+ */
81
+ function hasSameMigrationIds(left, right) {
82
+ if (left.length !== right.length)
83
+ return false;
84
+ const rightIds = new Set(right);
85
+ return left.every((id) => rightIds.has(id));
86
+ }
87
+ function hasVersionTable(db) {
88
+ const row = NameRowSchema.nullable().parse(db.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'vibes_schema_versions'").get());
89
+ return row?.name === 'vibes_schema_versions';
90
+ }
91
+ function ensureVersionTable(db) {
92
+ if (hasVersionTable(db))
93
+ return;
94
+ db.exec(`
95
+ CREATE TABLE IF NOT EXISTS vibes_schema_versions (
96
+ namespace TEXT PRIMARY KEY,
97
+ version INTEGER NOT NULL DEFAULT 0,
98
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
99
+ )
100
+ `);
101
+ }
102
+ /**
103
+ * The legacy `user_version`. Contention is the connection's own wait: every
104
+ * LocalDB connection carries a `busy_timeout`, so SQLite's busy handler has
105
+ * already waited before a `SQLITE_BUSY` reaches here — it propagates. (A
106
+ * second, hand-rolled retry with a thread-parking sleep used to sit on top.)
107
+ */
108
+ function getLegacyUserVersion(db) {
109
+ return UserVersionRowSchema.nullable().parse(db.prepare('PRAGMA user_version').get())?.user_version ?? 0;
110
+ }
111
+ function getTrackedSchemaVersion(db, namespace) {
112
+ ensureVersionTable(db);
113
+ const row = VersionRowSchema.nullable().parse(db.prepare('SELECT version FROM vibes_schema_versions WHERE namespace = ?').get(namespace));
114
+ return row ? row.version : null;
115
+ }
116
+ function bootstrapSchemaVersion(runtime, db, namespace) {
117
+ const tracked = getTrackedSchemaVersion(db, namespace);
118
+ if (tracked !== null)
119
+ return tracked;
120
+ const ns = declaration(runtime, namespace);
121
+ if (!ns) {
122
+ throw new Error(`Unknown migration namespace: ${namespace}`);
50
123
  }
51
- getTrackedSchemaVersion(db, namespace) {
52
- this.ensureVersionTable(db);
53
- const row = db
54
- .query('SELECT version FROM vibes_schema_versions WHERE namespace = ?')
55
- .get(namespace);
56
- return row ? row.version : null;
124
+ const legacyVersion = getLegacyUserVersion(db);
125
+ const trackedNamespaceCount = CountRowSchema.nullable().parse(db.prepare('SELECT COUNT(*) as count FROM vibes_schema_versions').get())?.count ?? 0;
126
+ const bootstrapVersion = trackedNamespaceCount === 0 && legacyVersion > 0 && legacyVersion <= ns.currentVersion
127
+ ? legacyVersion
128
+ : 0;
129
+ setSchemaVersion(db, namespace, bootstrapVersion);
130
+ return bootstrapVersion;
131
+ }
132
+ /**
133
+ * Register migrations for a namespace (e.g., 'atlas', 'session'), reported
134
+ * on the registering runtime. Declarations belong to the handed runtime.
135
+ */
136
+ function register(runtime, namespace, migrations, options) {
137
+ ({ namespace, migrations, options } = validated(MigrationRegistrationSchema, { namespace, migrations, options }, 'localdb-migration-registration-invalid'));
138
+ if (declaration(runtime, namespace) !== undefined) {
139
+ throw new CapabilityError(`Migration namespace '${namespace}' is already registered`, 'CONFLICT', {
140
+ reason: MIGRATION_NAMESPACE_REGISTERED,
141
+ retryable: false,
142
+ details: { namespace }
143
+ });
57
144
  }
58
- bootstrapSchemaVersion(db, namespace) {
59
- const tracked = this.getTrackedSchemaVersion(db, namespace);
60
- if (tracked !== null)
61
- return tracked;
62
- const ns = this.namespaces.get(namespace);
63
- if (!ns) {
64
- throw new Error(`Unknown migration namespace: ${namespace}`);
65
- }
66
- const legacyVersion = this.getLegacyUserVersion(db);
67
- const trackedNamespaceCount = db.query('SELECT COUNT(*) as count FROM vibes_schema_versions').get()
68
- ?.count ?? 0;
69
- const bootstrapVersion = trackedNamespaceCount === 0 && legacyVersion > 0 && legacyVersion <= ns.currentVersion
70
- ? legacyVersion
71
- : 0;
72
- this.setSchemaVersion(db, namespace, bootstrapVersion);
73
- return bootstrapVersion;
145
+ install(runtime, buildNamespace(namespace, migrations, options?.autoReset ?? false, options?.location));
146
+ migrationsLogger(runtime).debug(`Registered ${migrations.length} migration(s) for namespace '${namespace}'`);
147
+ }
148
+ /**
149
+ * Repair a namespace that was registered with an incomplete migration set.
150
+ *
151
+ * `register()` deliberately remains immutable. This guarded escape hatch is
152
+ * for callers that can prove the registry contains the poisoned set they
153
+ * just observed, such as Atlas after an earlier empty registration. The
154
+ * compare-and-swap guard prevents a stale observer from overwriting a
155
+ * namespace another registrar repaired in the meantime.
156
+ *
157
+ * Returns `true` when the expectation matched. An identical incoming set is
158
+ * a successful no-op; otherwise the complete replacement is installed only
159
+ * after validating its migration sequence.
160
+ */
161
+ function replaceMigrations(runtime, namespace, migrations, options) {
162
+ ({ namespace, migrations, options } = validated(MigrationReplacementSchema, { namespace, migrations, options }, 'localdb-migration-replacement-invalid'));
163
+ const registered = declaration(runtime, namespace);
164
+ if (!registered)
165
+ return false;
166
+ const registeredIds = getMigrationIds(registered.migrations);
167
+ if (!hasSameMigrationIds(registeredIds, options.expectedRegisteredIds)) {
168
+ return false;
74
169
  }
75
- /**
76
- * Register migrations for a namespace (e.g., 'atlas', 'session')
77
- */
78
- register(namespace, migrations) {
79
- if (this.namespaces.has(namespace)) {
80
- throw new Error(`Migration namespace '${namespace}' is already registered`);
81
- }
82
- // Sort migrations by version
83
- const sorted = [...migrations].sort((a, b) => a.version - b.version);
84
- // Validate version sequence
85
- for (let i = 0; i < sorted.length; i++) {
86
- const expected = i + 1;
87
- const actual = sorted[i].version;
88
- if (actual !== expected) {
89
- throw new Error(`Invalid migration sequence in '${namespace}': expected version ${expected}, got ${actual}`);
90
- }
91
- }
92
- const currentVersion = sorted.length > 0 ? sorted[sorted.length - 1].version : 0;
93
- this.namespaces.set(namespace, {
94
- namespace,
95
- migrations: sorted,
96
- currentVersion
97
- });
98
- logger.debug(`Registered ${migrations.length} migration(s) for namespace '${namespace}'`);
170
+ const incomingIds = getMigrationIds(migrations);
171
+ if (hasSameMigrationIds(registeredIds, incomingIds)) {
172
+ return true;
99
173
  }
100
- /**
101
- * Get current schema version from database
102
- */
103
- getSchemaVersion(db, namespace) {
104
- return this.bootstrapSchemaVersion(db, namespace);
174
+ const replacement = buildNamespace(namespace, migrations, registered.autoReset, registered.location);
175
+ install(runtime, replacement);
176
+ migrationsLogger(runtime).info(`Replaced migrations for namespace '${namespace}' after guarded repair`);
177
+ return true;
178
+ }
179
+ /**
180
+ * Get current schema version from database
181
+ */
182
+ function getSchemaVersion(runtime, db, namespace) {
183
+ return bootstrapSchemaVersion(runtime, db, namespace);
184
+ }
185
+ /**
186
+ * Set schema version in database
187
+ */
188
+ function setSchemaVersion(db, namespace, version) {
189
+ ensureVersionTable(db);
190
+ db.prepare(`INSERT INTO vibes_schema_versions (namespace, version, updated_at)
191
+ VALUES (?, ?, datetime('now'))
192
+ ON CONFLICT(namespace) DO UPDATE SET
193
+ version = excluded.version,
194
+ updated_at = datetime('now')`).run(namespace, version);
195
+ }
196
+ /**
197
+ * Check if database needs migration
198
+ */
199
+ function needsMigration(runtime, db, namespace) {
200
+ const ns = declaration(runtime, namespace);
201
+ if (!ns) {
202
+ throw new Error(`Unknown migration namespace: ${namespace}`);
105
203
  }
106
- /**
107
- * Set schema version in database
108
- */
109
- setSchemaVersion(db, namespace, version) {
110
- this.ensureVersionTable(db);
111
- db.query(`INSERT INTO vibes_schema_versions (namespace, version, updated_at)
112
- VALUES (?, ?, datetime('now'))
113
- ON CONFLICT(namespace) DO UPDATE SET
114
- version = excluded.version,
115
- updated_at = datetime('now')`).run(namespace, version);
204
+ const currentVersion = getSchemaVersion(runtime, db, namespace);
205
+ return currentVersion < ns.currentVersion;
206
+ }
207
+ /**
208
+ * Check if database is from an incompatible/old migration system
209
+ * This happens when the version is higher than our max (legacy system)
210
+ */
211
+ function isIncompatibleDatabase(runtime, db, namespace) {
212
+ const ns = declaration(runtime, namespace);
213
+ if (!ns) {
214
+ return false;
116
215
  }
117
- /**
118
- * Check if database needs migration
119
- */
120
- needsMigration(db, namespace) {
121
- const ns = this.namespaces.get(namespace);
122
- if (!ns) {
123
- throw new Error(`Unknown migration namespace: ${namespace}`);
124
- }
125
- const currentVersion = this.getSchemaVersion(db, namespace);
126
- return currentVersion < ns.currentVersion;
216
+ const trackedVersion = getTrackedSchemaVersion(db, namespace);
217
+ if (trackedVersion === null) {
218
+ return false;
127
219
  }
128
- /**
129
- * Check if database is from an incompatible/old migration system
130
- * This happens when the version is higher than our max (legacy system)
131
- */
132
- isIncompatibleDatabase(db, namespace) {
133
- const ns = this.namespaces.get(namespace);
134
- if (!ns) {
135
- return false;
136
- }
137
- const trackedVersion = this.getTrackedSchemaVersion(db, namespace);
138
- if (trackedVersion === null) {
139
- return false;
140
- }
141
- return trackedVersion > ns.currentVersion;
220
+ return trackedVersion > ns.currentVersion;
221
+ }
222
+ /**
223
+ * Whether the namespace opted into destructive auto-reset recovery.
224
+ */
225
+ function allowsAutoReset(runtime, namespace) {
226
+ return declaration(runtime, namespace)?.autoReset ?? false;
227
+ }
228
+ /**
229
+ * Tracked schema version for diagnostics (e.g. incompatible-database errors).
230
+ */
231
+ function describeVersions(runtime, db, namespace) {
232
+ return {
233
+ tracked: getTrackedSchemaVersion(db, namespace),
234
+ current: declaration(runtime, namespace)?.currentVersion ?? 0
235
+ };
236
+ }
237
+ /**
238
+ * Run all pending migrations for a namespace, reported on the runtime the
239
+ * run serves.
240
+ */
241
+ async function runMigrations(runtime, db, namespace) {
242
+ const ns = declaration(runtime, namespace);
243
+ if (!ns) {
244
+ throw new Error(`Unknown migration namespace: ${namespace}`);
142
245
  }
143
- /**
144
- * Run all pending migrations for a namespace
145
- */
146
- async runMigrations(db, namespace) {
147
- const ns = this.namespaces.get(namespace);
148
- if (!ns) {
149
- throw new Error(`Unknown migration namespace: ${namespace}`);
150
- }
151
- let currentVersion = this.getSchemaVersion(db, namespace);
152
- logger.debug(`Running migrations for '${namespace}' (v${currentVersion} → v${ns.currentVersion})`);
153
- for (const migration of ns.migrations) {
154
- if (migration.version > currentVersion) {
155
- logger.debug(`Applying migration ${migration.version}: ${migration.name}`);
156
- try {
157
- await migration.up(db);
158
- currentVersion = migration.version;
159
- this.setSchemaVersion(db, namespace, currentVersion);
160
- logger.debug(`[LocalDB] Migration ${migration.version} completed`);
161
- }
162
- catch (error) {
163
- logger.error(`[LocalDB] Migration ${migration.version} failed:`, toErrorContext(error));
164
- throw new Error(`Migration ${migration.version} (${migration.name}) failed: ${error}`);
165
- }
246
+ const logger = migrationsLogger(runtime);
247
+ let currentVersion = getSchemaVersion(runtime, db, namespace);
248
+ logger.debug(`Running migrations for '${namespace}' (v${currentVersion} → v${ns.currentVersion})`);
249
+ for (const migration of ns.migrations) {
250
+ if (migration.version > currentVersion) {
251
+ logger.debug(`Applying migration ${migration.version}: ${migration.name}`);
252
+ try {
253
+ await migration.up(db);
166
254
  }
255
+ catch (error) {
256
+ throw new CapabilityError(`Migration ${migration.version} (${migration.name}) failed.`, 'INTERNAL', {
257
+ reason: 'localdb-migration-failed',
258
+ retryable: false,
259
+ details: { namespace, version: migration.version, name: migration.name },
260
+ cause: error
261
+ });
262
+ }
263
+ currentVersion = migration.version;
264
+ setSchemaVersion(db, namespace, currentVersion);
265
+ logger.debug(`[LocalDB] Migration ${migration.version} completed`);
167
266
  }
168
- logger.debug(`[LocalDB] All migrations completed for '${namespace}'`);
169
- }
170
- /**
171
- * Get migration status for all namespaces
172
- */
173
- getStatus() {
174
- const status = [];
175
- for (const ns of this.namespaces.values()) {
176
- status.push({
177
- namespace: ns.namespace,
178
- currentVersion: 0, // Will be determined per-database
179
- targetVersion: ns.currentVersion,
180
- pendingMigrations: 0 // Will be determined per-database
181
- });
182
- }
183
- return status;
184
267
  }
185
- /**
186
- * Get migration status for a specific database and namespace
187
- */
188
- getDatabaseStatus(db, namespace) {
189
- const ns = this.namespaces.get(namespace);
190
- if (!ns) {
191
- throw new Error(`Unknown migration namespace: ${namespace}`);
192
- }
193
- const currentVersion = this.getSchemaVersion(db, namespace);
194
- const pending = Math.max(0, ns.currentVersion - currentVersion);
195
- return {
196
- namespace,
197
- currentVersion,
268
+ logger.debug(`[LocalDB] All migrations completed for '${namespace}'`);
269
+ }
270
+ /**
271
+ * Get migration status for all namespaces
272
+ */
273
+ function getStatus(runtime) {
274
+ const status = [];
275
+ for (const ns of declarations(runtime)) {
276
+ status.push({
277
+ namespace: ns.namespace,
278
+ currentVersion: 0, // Will be determined per-database
198
279
  targetVersion: ns.currentVersion,
199
- pendingMigrations: pending,
200
- migrations: ns.migrations.map((m) => ({
201
- version: m.version,
202
- name: m.name,
203
- applied: m.version <= currentVersion
204
- }))
205
- };
280
+ pendingMigrations: 0 // Will be determined per-database
281
+ });
282
+ }
283
+ return status;
284
+ }
285
+ /**
286
+ * Get migration status for a specific database and namespace
287
+ */
288
+ function getDatabaseStatus(runtime, db, namespace) {
289
+ const ns = declaration(runtime, namespace);
290
+ if (!ns) {
291
+ throw new Error(`Unknown migration namespace: ${namespace}`);
206
292
  }
207
- /**
208
- * List all registered namespaces
209
- */
210
- listNamespaces() {
211
- return Array.from(this.namespaces.keys());
293
+ const currentVersion = getSchemaVersion(runtime, db, namespace);
294
+ const pending = Math.max(0, ns.currentVersion - currentVersion);
295
+ return {
296
+ namespace,
297
+ currentVersion,
298
+ targetVersion: ns.currentVersion,
299
+ pendingMigrations: pending,
300
+ migrations: ns.migrations.map((m) => ({
301
+ version: m.version,
302
+ name: m.name,
303
+ applied: m.version <= currentVersion
304
+ }))
305
+ };
306
+ }
307
+ /**
308
+ * List all registered namespaces
309
+ */
310
+ function listNamespaces(runtime) {
311
+ return declarations(runtime).map(entry => entry.namespace);
312
+ }
313
+ /**
314
+ * Resolve the owner-declared database location for a namespace, or
315
+ * `undefined` when the namespace is unknown or declared no location.
316
+ * Propagates resolver throws (e.g. an unbound project) — callers report
317
+ * that as the finding rather than guessing a path.
318
+ */
319
+ function getNamespaceLocation(runtime, namespace) {
320
+ const location = declaration(runtime, namespace)?.location;
321
+ return location ? validated(NamespaceDatabaseLocationSchema, location(), 'localdb-migration-location-invalid') : undefined;
322
+ }
323
+ function getMigrations(runtime, namespace) {
324
+ if (!(runtime instanceof Object) || namespace === undefined) {
325
+ throw new CapabilityError('A runtime is required for migration declarations', 'INVALID_INPUT', {
326
+ reason: 'localdb-runtime-required', retryable: false
327
+ });
212
328
  }
213
- /**
214
- * Get migrations for a namespace
215
- */
216
- getMigrations(namespace) {
217
- const ns = this.namespaces.get(namespace);
218
- if (!ns) {
219
- throw new Error(`Unknown migration namespace: ${namespace}`);
220
- }
221
- return [...ns.migrations];
329
+ const ns = declaration(runtime, namespace);
330
+ if (!ns) {
331
+ throw new Error(`Unknown migration namespace: ${namespace}`);
222
332
  }
333
+ return [...ns.migrations];
334
+ }
335
+ /** Stateless compatibility facade; declarations live only in the handed kernel. */
336
+ export const migrationRegistry = {
337
+ register,
338
+ replaceMigrations,
339
+ getSchemaVersion,
340
+ needsMigration,
341
+ isIncompatibleDatabase,
342
+ allowsAutoReset,
343
+ describeVersions,
344
+ runMigrations,
345
+ getStatus,
346
+ getDatabaseStatus,
347
+ listNamespaces,
348
+ getNamespaceLocation,
349
+ getMigrations,
350
+ };
351
+ /** Compatibility constructor; no copied declarations or owned registry state. */
352
+ export class MigrationRegistry {
353
+ register = register;
354
+ replaceMigrations = replaceMigrations;
355
+ getSchemaVersion = getSchemaVersion;
356
+ needsMigration = needsMigration;
357
+ isIncompatibleDatabase = isIncompatibleDatabase;
358
+ allowsAutoReset = allowsAutoReset;
359
+ describeVersions = describeVersions;
360
+ runMigrations = runMigrations;
361
+ getStatus = getStatus;
362
+ getDatabaseStatus = getDatabaseStatus;
363
+ listNamespaces = listNamespaces;
364
+ getNamespaceLocation = getNamespaceLocation;
365
+ getMigrations = getMigrations;
223
366
  }
224
- // Singleton instance
225
- export const migrationRegistry = new MigrationRegistry();
226
367
  //# sourceMappingURL=migration-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-registry.js","sourceRoot":"","sources":["../../src/core/migration-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-registry.js","sourceRoot":"","sources":["../../src/core/migration-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
2
+ import { type SqliteConnection } from '../driver/sqlite-driver.ts';
3
+ /** Keep custody of a just-opened handle across the caller's async continuation. */
4
+ export declare function assertOpenedConnectionLive(runtime: RuntimeRef, db: SqliteConnection, lifecycle?: import("@vibesdotdev/kernel").RuntimeLifecycle): void;
5
+ /**
6
+ * Foreground SQLite setup only: one five-second contention budget, with the
7
+ * calling lifecycle owning the wait and cancellation. Migrations and application
8
+ * statements never enter this policy.
9
+ */
10
+ export declare function openConfiguredDatabase(runtime: RuntimeRef, open: () => SqliteConnection, configure: (exec: (sql: string) => void) => void, lifecycle?: import("@vibesdotdev/kernel").RuntimeLifecycle): Promise<SqliteConnection>;
11
+ //# sourceMappingURL=open-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-connection.d.ts","sourceRoot":"","sources":["../../src/core/open-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAkCjF,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,SAAS,iDAAoB,GAAG,IAAI,CAQzH;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,gBAAgB,EAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,EAChD,SAAS,iDAAoB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAoB3B"}