@grackle-ai/database 0.84.1 → 0.85.1
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/dist/db.d.ts +8 -13
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +114 -300
- package/dist/db.js.map +1 -1
- package/dist/env-registry.d.ts +2 -0
- package/dist/env-registry.d.ts.map +1 -1
- package/dist/env-registry.js +7 -0
- package/dist/env-registry.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/db.d.ts
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import Database from "better-sqlite3";
|
|
2
2
|
import type { BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
|
|
3
3
|
import * as schema from "./schema.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
name: string;
|
|
7
|
-
error: unknown;
|
|
8
|
-
}
|
|
9
|
-
/** Result returned by {@link initDatabase}. */
|
|
10
|
-
export interface InitDatabaseResult {
|
|
11
|
-
migrationErrors: MigrationError[];
|
|
12
|
-
}
|
|
4
|
+
/** The highest schema version defined by BASELINE + MIGRATIONS. */
|
|
5
|
+
declare const CURRENT_VERSION: number;
|
|
13
6
|
/** Raw better-sqlite3 instance. Available after {@link openDatabase} has been called. */
|
|
14
7
|
declare let sqlite: InstanceType<typeof Database> | undefined;
|
|
15
8
|
/**
|
|
@@ -30,14 +23,16 @@ declare let db: BetterSQLite3Database<typeof schema> & {
|
|
|
30
23
|
*/
|
|
31
24
|
export declare function openDatabase(dbPath?: string): void;
|
|
32
25
|
/**
|
|
33
|
-
* Initialize all database tables and run migrations.
|
|
26
|
+
* Initialize all database tables and run any pending migrations.
|
|
34
27
|
* Call once at startup after {@link openDatabase}, or pass an in-memory
|
|
35
28
|
* SQLite instance for testing.
|
|
36
29
|
*
|
|
30
|
+
* Uses `PRAGMA user_version` to track schema versions. Each migration runs
|
|
31
|
+
* exactly once, in order, inside a transaction.
|
|
32
|
+
*
|
|
37
33
|
* @param sqliteOverride - Optional SQLite instance to use instead of the module-level one.
|
|
38
|
-
* @returns Collected migration errors from idempotent try-catch steps.
|
|
39
34
|
*/
|
|
40
|
-
export declare function initDatabase(sqliteOverride?: InstanceType<typeof Database>):
|
|
41
|
-
export { sqlite };
|
|
35
|
+
export declare function initDatabase(sqliteOverride?: InstanceType<typeof Database>): void;
|
|
36
|
+
export { sqlite, CURRENT_VERSION };
|
|
42
37
|
export { db as default };
|
|
43
38
|
//# sourceMappingURL=db.d.ts.map
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AA6BtC,mEAAmE;AACnE,QAAA,MAAM,eAAe,EAAE,MAEH,CAAC;AA8CrB,yFAAyF;AACzF,QAAA,IAAI,MAAM,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,SAAS,CAAC;AAEtD;;;;;GAKG;AACH,QAAA,IAAI,EAAE,EAAG,qBAAqB,CAAC,OAAO,MAAM,CAAC,GAAG;IAC9C,OAAO,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAsElD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,IAAI,CAsMjF;AAED,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACnC,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC"}
|
package/dist/db.js
CHANGED
|
@@ -5,6 +5,59 @@ import { mkdirSync } from "node:fs";
|
|
|
5
5
|
import { DB_FILENAME } from "@grackle-ai/common";
|
|
6
6
|
import { grackleHome } from "./paths.js";
|
|
7
7
|
import * as schema from "./schema.js";
|
|
8
|
+
// ─── Schema Versioning ──────────────────────────────────────
|
|
9
|
+
/**
|
|
10
|
+
* Schema version representing the consolidated baseline.
|
|
11
|
+
* All historical migrations (pre-versioning) are collapsed into this version.
|
|
12
|
+
*/
|
|
13
|
+
const BASELINE_VERSION = 1;
|
|
14
|
+
/**
|
|
15
|
+
* Ordered list of versioned migrations.
|
|
16
|
+
* Add new migrations to the end with incrementing version numbers.
|
|
17
|
+
*/
|
|
18
|
+
const MIGRATIONS = [
|
|
19
|
+
// Future migrations go here, e.g.:
|
|
20
|
+
// { version: 2, name: "add-foo-to-bar", up: (conn) => { conn.exec("ALTER TABLE ..."); } },
|
|
21
|
+
];
|
|
22
|
+
/** The highest schema version defined by BASELINE + MIGRATIONS. */
|
|
23
|
+
const CURRENT_VERSION = MIGRATIONS.length > 0
|
|
24
|
+
? MIGRATIONS[MIGRATIONS.length - 1].version
|
|
25
|
+
: BASELINE_VERSION;
|
|
26
|
+
// ─── Legacy Schema Validation ───────────────────────────────
|
|
27
|
+
/**
|
|
28
|
+
* Columns that must exist in a database to be considered baseline-compatible.
|
|
29
|
+
* These were added at various points during the historical migration sequence.
|
|
30
|
+
*/
|
|
31
|
+
const BASELINE_SCHEMA_CHECKS = [
|
|
32
|
+
{ table: "sessions", column: "cost_usd" },
|
|
33
|
+
{ table: "tasks", column: "schedule_id" },
|
|
34
|
+
{ table: "workspaces", column: "working_directory" },
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* Verify that an unversioned database has all columns expected by the baseline schema.
|
|
38
|
+
* Throws if tables exist but are missing columns, indicating the database predates
|
|
39
|
+
* historical migrations that have been removed.
|
|
40
|
+
*/
|
|
41
|
+
function validateBaselineSchema(conn) {
|
|
42
|
+
const tables = conn
|
|
43
|
+
.prepare("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%'")
|
|
44
|
+
.all();
|
|
45
|
+
// No tables = fresh install, nothing to validate
|
|
46
|
+
if (tables.length === 0) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
for (const { table, column } of BASELINE_SCHEMA_CHECKS) {
|
|
50
|
+
const cols = conn
|
|
51
|
+
.prepare(`PRAGMA table_info(${table})`)
|
|
52
|
+
.all();
|
|
53
|
+
// Table exists but is missing a required column
|
|
54
|
+
if (cols.length > 0 && !cols.some((c) => c.name === column)) {
|
|
55
|
+
throw new Error(`Database schema is too old: table "${table}" is missing column "${column}". ` +
|
|
56
|
+
`Delete your database file and restart to create a fresh one.`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ─── Database Singleton ─────────────────────────────────────
|
|
8
61
|
/** Raw better-sqlite3 instance. Available after {@link openDatabase} has been called. */
|
|
9
62
|
let sqlite;
|
|
10
63
|
/**
|
|
@@ -84,66 +137,33 @@ export function openDatabase(dbPath) {
|
|
|
84
137
|
db = drizzle(sqlite, { schema });
|
|
85
138
|
}
|
|
86
139
|
/**
|
|
87
|
-
* Initialize all database tables and run migrations.
|
|
140
|
+
* Initialize all database tables and run any pending migrations.
|
|
88
141
|
* Call once at startup after {@link openDatabase}, or pass an in-memory
|
|
89
142
|
* SQLite instance for testing.
|
|
90
143
|
*
|
|
144
|
+
* Uses `PRAGMA user_version` to track schema versions. Each migration runs
|
|
145
|
+
* exactly once, in order, inside a transaction.
|
|
146
|
+
*
|
|
91
147
|
* @param sqliteOverride - Optional SQLite instance to use instead of the module-level one.
|
|
92
|
-
* @returns Collected migration errors from idempotent try-catch steps.
|
|
93
148
|
*/
|
|
94
149
|
export function initDatabase(sqliteOverride) {
|
|
95
150
|
const conn = sqliteOverride ?? sqlite;
|
|
96
151
|
if (!conn) {
|
|
97
152
|
throw new Error("Database not initialized. Call openDatabase() first or provide a sqliteOverride.");
|
|
98
153
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const tryMigration = (name, fn) => {
|
|
113
|
-
try {
|
|
114
|
-
fn();
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
if (isExpectedIdempotencyError(error)) {
|
|
118
|
-
migrationErrors.push({ name, error });
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
throw error;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
// Migration: rename projects table to workspaces
|
|
126
|
-
tryMigration("rename-projects-to-workspaces", () => {
|
|
127
|
-
conn.exec("ALTER TABLE projects RENAME TO workspaces");
|
|
128
|
-
});
|
|
129
|
-
// Migration: rename project_id column to workspace_id on tasks
|
|
130
|
-
tryMigration("rename-tasks-project-id", () => {
|
|
131
|
-
conn.exec("ALTER TABLE tasks RENAME COLUMN project_id TO workspace_id");
|
|
132
|
-
});
|
|
133
|
-
// Migration: rename project_id column to workspace_id on findings
|
|
134
|
-
tryMigration("rename-findings-project-id", () => {
|
|
135
|
-
conn.exec("ALTER TABLE findings RENAME COLUMN project_id TO workspace_id");
|
|
136
|
-
});
|
|
137
|
-
// Migration: drop old findings index after column rename
|
|
138
|
-
tryMigration("drop-idx-findings-project", () => {
|
|
139
|
-
conn.exec("DROP INDEX IF EXISTS idx_findings_project");
|
|
140
|
-
});
|
|
141
|
-
// Migration: rename default_env_id → environment_id on workspaces
|
|
142
|
-
// Must run BEFORE the backfill block below which references environment_id.
|
|
143
|
-
tryMigration("rename-workspaces-default-env-id", () => {
|
|
144
|
-
conn.exec("ALTER TABLE workspaces RENAME COLUMN default_env_id TO environment_id");
|
|
145
|
-
});
|
|
146
|
-
// Create tables — idempotent, safe to run every startup
|
|
154
|
+
// Check current schema version before creating tables — an ancient database
|
|
155
|
+
// with missing columns would cause index creation to fail with a confusing error.
|
|
156
|
+
const currentVersion = conn.pragma("user_version", { simple: true });
|
|
157
|
+
// Prevent running an older binary against a database upgraded by a newer version.
|
|
158
|
+
if (currentVersion > CURRENT_VERSION) {
|
|
159
|
+
throw new Error(`Database schema version (${currentVersion}) is newer than this application supports (${CURRENT_VERSION}). ` +
|
|
160
|
+
"Please upgrade the application or use a compatible database file.");
|
|
161
|
+
}
|
|
162
|
+
if (currentVersion < BASELINE_VERSION) {
|
|
163
|
+
validateBaselineSchema(conn);
|
|
164
|
+
}
|
|
165
|
+
// Create all tables and indices — IF NOT EXISTS makes this safe for both
|
|
166
|
+
// fresh installs and existing databases.
|
|
147
167
|
conn.exec(`
|
|
148
168
|
CREATE TABLE IF NOT EXISTS environments (
|
|
149
169
|
id TEXT PRIMARY KEY,
|
|
@@ -175,7 +195,13 @@ export function initDatabase(sqliteOverride) {
|
|
|
175
195
|
end_reason TEXT,
|
|
176
196
|
error TEXT,
|
|
177
197
|
task_id TEXT NOT NULL DEFAULT '',
|
|
178
|
-
persona_id TEXT NOT NULL DEFAULT ''
|
|
198
|
+
persona_id TEXT NOT NULL DEFAULT '',
|
|
199
|
+
parent_session_id TEXT NOT NULL DEFAULT '',
|
|
200
|
+
pipe_mode TEXT NOT NULL DEFAULT '',
|
|
201
|
+
input_tokens INTEGER NOT NULL DEFAULT 0,
|
|
202
|
+
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
203
|
+
cost_usd REAL NOT NULL DEFAULT 0,
|
|
204
|
+
sigterm_sent_at TEXT
|
|
179
205
|
);
|
|
180
206
|
|
|
181
207
|
CREATE TABLE IF NOT EXISTS tokens (
|
|
@@ -192,6 +218,8 @@ export function initDatabase(sqliteOverride) {
|
|
|
192
218
|
environment_id TEXT NOT NULL DEFAULT '' REFERENCES environments(id),
|
|
193
219
|
status TEXT NOT NULL DEFAULT 'active',
|
|
194
220
|
use_worktrees INTEGER NOT NULL DEFAULT 1,
|
|
221
|
+
working_directory TEXT NOT NULL DEFAULT '',
|
|
222
|
+
default_persona_id TEXT NOT NULL DEFAULT '',
|
|
195
223
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
196
224
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
197
225
|
);
|
|
@@ -239,6 +267,9 @@ export function initDatabase(sqliteOverride) {
|
|
|
239
267
|
model TEXT NOT NULL DEFAULT '',
|
|
240
268
|
max_turns INTEGER NOT NULL DEFAULT 0,
|
|
241
269
|
mcp_servers TEXT NOT NULL DEFAULT '[]',
|
|
270
|
+
type TEXT NOT NULL DEFAULT 'agent',
|
|
271
|
+
script TEXT NOT NULL DEFAULT '',
|
|
272
|
+
allowed_mcp_tools TEXT NOT NULL DEFAULT '[]',
|
|
242
273
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
243
274
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
244
275
|
);
|
|
@@ -248,8 +279,6 @@ export function initDatabase(sqliteOverride) {
|
|
|
248
279
|
value TEXT NOT NULL
|
|
249
280
|
);
|
|
250
281
|
|
|
251
|
-
CREATE INDEX IF NOT EXISTS idx_findings_workspace ON findings(workspace_id);
|
|
252
|
-
|
|
253
282
|
CREATE TABLE IF NOT EXISTS domain_events (
|
|
254
283
|
id TEXT PRIMARY KEY,
|
|
255
284
|
type TEXT NOT NULL,
|
|
@@ -257,247 +286,6 @@ export function initDatabase(sqliteOverride) {
|
|
|
257
286
|
payload TEXT NOT NULL
|
|
258
287
|
);
|
|
259
288
|
|
|
260
|
-
CREATE INDEX IF NOT EXISTS idx_domain_events_type ON domain_events(type);
|
|
261
|
-
CREATE INDEX IF NOT EXISTS idx_domain_events_timestamp ON domain_events(timestamp);
|
|
262
|
-
`);
|
|
263
|
-
// Migration: add powerline_token column if missing (older databases)
|
|
264
|
-
tryMigration("add-environments-powerline-token", () => {
|
|
265
|
-
conn.exec("ALTER TABLE environments ADD COLUMN powerline_token TEXT NOT NULL DEFAULT ''");
|
|
266
|
-
});
|
|
267
|
-
// Migration: rename sidecar_token → powerline_token (from older databases)
|
|
268
|
-
tryMigration("rename-environments-sidecar-token", () => {
|
|
269
|
-
conn.exec("ALTER TABLE environments RENAME COLUMN sidecar_token TO powerline_token");
|
|
270
|
-
});
|
|
271
|
-
// Migration: backfill NULLs in stage-2 tables from older schemas that lacked NOT NULL
|
|
272
|
-
conn.exec(`
|
|
273
|
-
UPDATE workspaces SET description = '' WHERE description IS NULL;
|
|
274
|
-
UPDATE workspaces SET repo_url = '' WHERE repo_url IS NULL;
|
|
275
|
-
UPDATE workspaces SET environment_id = COALESCE(
|
|
276
|
-
(SELECT id FROM environments LIMIT 1), ''
|
|
277
|
-
) WHERE environment_id IS NULL OR environment_id = '';
|
|
278
|
-
UPDATE workspaces SET status = 'active' WHERE status IS NULL;
|
|
279
|
-
UPDATE workspaces SET created_at = datetime('now') WHERE created_at IS NULL;
|
|
280
|
-
UPDATE workspaces SET updated_at = datetime('now') WHERE updated_at IS NULL;
|
|
281
|
-
|
|
282
|
-
UPDATE tasks SET description = '' WHERE description IS NULL;
|
|
283
|
-
UPDATE tasks SET status = 'not_started' WHERE status IS NULL;
|
|
284
|
-
UPDATE tasks SET branch = '' WHERE branch IS NULL;
|
|
285
|
-
UPDATE tasks SET depends_on = '[]' WHERE depends_on IS NULL;
|
|
286
|
-
UPDATE tasks SET created_at = datetime('now') WHERE created_at IS NULL;
|
|
287
|
-
UPDATE tasks SET updated_at = datetime('now') WHERE updated_at IS NULL;
|
|
288
|
-
UPDATE tasks SET sort_order = 0 WHERE sort_order IS NULL;
|
|
289
|
-
|
|
290
|
-
UPDATE findings SET task_id = '' WHERE task_id IS NULL;
|
|
291
|
-
UPDATE findings SET session_id = '' WHERE session_id IS NULL;
|
|
292
|
-
UPDATE findings SET category = 'general' WHERE category IS NULL;
|
|
293
|
-
UPDATE findings SET tags = '[]' WHERE tags IS NULL;
|
|
294
|
-
UPDATE findings SET created_at = datetime('now') WHERE created_at IS NULL;
|
|
295
|
-
`);
|
|
296
|
-
// Migration: add parent_task_id and depth columns if missing (older databases)
|
|
297
|
-
tryMigration("add-tasks-parent-task-id", () => {
|
|
298
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN parent_task_id TEXT NOT NULL DEFAULT ''");
|
|
299
|
-
});
|
|
300
|
-
tryMigration("add-tasks-depth", () => {
|
|
301
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN depth INTEGER NOT NULL DEFAULT 0");
|
|
302
|
-
});
|
|
303
|
-
// Migration: add can_decompose column if missing (older databases)
|
|
304
|
-
tryMigration("add-tasks-can-decompose", () => {
|
|
305
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN can_decompose INTEGER NOT NULL DEFAULT 0");
|
|
306
|
-
// Backfill: mark root tasks and tasks with existing children as decomposable
|
|
307
|
-
conn.exec(`
|
|
308
|
-
UPDATE tasks
|
|
309
|
-
SET can_decompose = 1
|
|
310
|
-
WHERE parent_task_id IS NULL OR parent_task_id = ''
|
|
311
|
-
OR id IN (
|
|
312
|
-
SELECT DISTINCT parent_task_id
|
|
313
|
-
FROM tasks
|
|
314
|
-
WHERE parent_task_id IS NOT NULL AND parent_task_id <> ''
|
|
315
|
-
)
|
|
316
|
-
`);
|
|
317
|
-
});
|
|
318
|
-
// Migration: add persona_id column to tasks if missing
|
|
319
|
-
tryMigration("add-tasks-persona-id", () => {
|
|
320
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN persona_id TEXT NOT NULL DEFAULT ''");
|
|
321
|
-
});
|
|
322
|
-
// Migration: add task_id column to sessions if missing
|
|
323
|
-
tryMigration("add-sessions-task-id", () => {
|
|
324
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN task_id TEXT NOT NULL DEFAULT ''");
|
|
325
|
-
});
|
|
326
|
-
// Migration: add use_worktrees column to workspaces if missing (older databases)
|
|
327
|
-
tryMigration("add-workspaces-use-worktrees", () => {
|
|
328
|
-
conn.exec("ALTER TABLE workspaces ADD COLUMN use_worktrees INTEGER NOT NULL DEFAULT 1");
|
|
329
|
-
});
|
|
330
|
-
// Migration: add worktree_base_path column to workspaces if missing (older databases)
|
|
331
|
-
// NOTE: column was later renamed to working_directory — see rename-worktree-base-path migration below.
|
|
332
|
-
tryMigration("add-workspaces-worktree-base-path", () => {
|
|
333
|
-
conn.exec("ALTER TABLE workspaces ADD COLUMN worktree_base_path TEXT NOT NULL DEFAULT ''");
|
|
334
|
-
});
|
|
335
|
-
// Migration: backfill task_id on existing sessions from tasks.session_id.
|
|
336
|
-
// Guard with try/catch since session_id column may have been dropped already.
|
|
337
|
-
tryMigration("backfill-sessions-task-id", () => {
|
|
338
|
-
conn.exec(`
|
|
339
|
-
UPDATE sessions SET task_id = (
|
|
340
|
-
SELECT id FROM tasks WHERE tasks.session_id = sessions.id LIMIT 1
|
|
341
|
-
) WHERE task_id = '' AND EXISTS (
|
|
342
|
-
SELECT 1 FROM tasks WHERE tasks.session_id = sessions.id
|
|
343
|
-
)
|
|
344
|
-
`);
|
|
345
|
-
});
|
|
346
|
-
// Migration: add persona_id column to sessions if missing
|
|
347
|
-
tryMigration("add-sessions-persona-id", () => {
|
|
348
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN persona_id TEXT NOT NULL DEFAULT ''");
|
|
349
|
-
});
|
|
350
|
-
// Migration: copy persona_id from tasks to sessions before dropping
|
|
351
|
-
tryMigration("copy-persona-id-tasks-to-sessions", () => {
|
|
352
|
-
conn.exec(`
|
|
353
|
-
UPDATE sessions SET persona_id = (
|
|
354
|
-
SELECT persona_id FROM tasks WHERE tasks.session_id = sessions.id LIMIT 1
|
|
355
|
-
) WHERE persona_id = '' AND task_id != ''
|
|
356
|
-
`);
|
|
357
|
-
});
|
|
358
|
-
// Migration: drop columns that moved off the tasks table
|
|
359
|
-
tryMigration("drop-tasks-session-id", () => {
|
|
360
|
-
conn.exec("ALTER TABLE tasks DROP COLUMN session_id");
|
|
361
|
-
});
|
|
362
|
-
tryMigration("drop-tasks-env-id", () => {
|
|
363
|
-
conn.exec("ALTER TABLE tasks DROP COLUMN env_id");
|
|
364
|
-
});
|
|
365
|
-
tryMigration("drop-tasks-persona-id", () => {
|
|
366
|
-
conn.exec("ALTER TABLE tasks DROP COLUMN persona_id");
|
|
367
|
-
});
|
|
368
|
-
// Migration: normalize existing started_at values from SQLite datetime('now')
|
|
369
|
-
// format (YYYY-MM-DD HH:MM:SS) to ISO 8601 (YYYY-MM-DDTHH:MM:SS.000Z) so
|
|
370
|
-
// ordering is consistent with newly inserted rows.
|
|
371
|
-
conn.exec(`
|
|
372
|
-
UPDATE sessions
|
|
373
|
-
SET started_at = replace(started_at, ' ', 'T') || '.000Z'
|
|
374
|
-
WHERE started_at NOT LIKE '%T%'
|
|
375
|
-
`);
|
|
376
|
-
// Migration: normalize task statuses to simplified model
|
|
377
|
-
conn.exec(`
|
|
378
|
-
UPDATE tasks SET status = 'not_started' WHERE status IN ('pending', 'assigned');
|
|
379
|
-
UPDATE tasks SET status = 'complete' WHERE status = 'done';
|
|
380
|
-
UPDATE tasks SET status = 'not_started' WHERE status IN ('in_progress', 'waiting_input', 'review');
|
|
381
|
-
`);
|
|
382
|
-
// Migration: normalize session statuses
|
|
383
|
-
conn.exec(`
|
|
384
|
-
UPDATE sessions SET status = 'idle' WHERE status = 'waiting_input';
|
|
385
|
-
UPDATE sessions SET status = 'interrupted' WHERE status = 'killed';
|
|
386
|
-
`);
|
|
387
|
-
// Migration: drop stale columns from tasks
|
|
388
|
-
tryMigration("drop-tasks-assigned-at", () => {
|
|
389
|
-
conn.exec("ALTER TABLE tasks DROP COLUMN assigned_at");
|
|
390
|
-
});
|
|
391
|
-
tryMigration("drop-tasks-review-notes", () => {
|
|
392
|
-
conn.exec("ALTER TABLE tasks DROP COLUMN review_notes");
|
|
393
|
-
});
|
|
394
|
-
// Index for efficient session-by-task lookups
|
|
395
|
-
conn.exec("CREATE INDEX IF NOT EXISTS idx_sessions_task_id ON sessions(task_id)");
|
|
396
|
-
// Migration: add default_persona_id to workspaces and tasks
|
|
397
|
-
tryMigration("add-workspaces-default-persona-id", () => {
|
|
398
|
-
conn.exec("ALTER TABLE workspaces ADD COLUMN default_persona_id TEXT NOT NULL DEFAULT ''");
|
|
399
|
-
});
|
|
400
|
-
tryMigration("add-tasks-default-persona-id", () => {
|
|
401
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN default_persona_id TEXT NOT NULL DEFAULT ''");
|
|
402
|
-
});
|
|
403
|
-
tryMigration("add-tasks-workpad", () => {
|
|
404
|
-
conn.exec("ALTER TABLE tasks ADD COLUMN workpad TEXT NOT NULL DEFAULT ''");
|
|
405
|
-
});
|
|
406
|
-
// Migration: add type and script columns to personas if missing
|
|
407
|
-
tryMigration("add-personas-type", () => {
|
|
408
|
-
conn.exec("ALTER TABLE personas ADD COLUMN type TEXT NOT NULL DEFAULT 'agent'");
|
|
409
|
-
});
|
|
410
|
-
tryMigration("add-personas-script", () => {
|
|
411
|
-
conn.exec("ALTER TABLE personas ADD COLUMN script TEXT NOT NULL DEFAULT ''");
|
|
412
|
-
});
|
|
413
|
-
tryMigration("add-personas-allowed-mcp-tools", () => {
|
|
414
|
-
conn.exec("ALTER TABLE personas ADD COLUMN allowed_mcp_tools TEXT NOT NULL DEFAULT '[]'");
|
|
415
|
-
});
|
|
416
|
-
tryMigration("add-sessions-parent-session-id", () => {
|
|
417
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN parent_session_id TEXT NOT NULL DEFAULT ''");
|
|
418
|
-
});
|
|
419
|
-
tryMigration("add-sessions-pipe-mode", () => {
|
|
420
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN pipe_mode TEXT NOT NULL DEFAULT ''");
|
|
421
|
-
});
|
|
422
|
-
tryMigration("add-sessions-input-tokens", () => {
|
|
423
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN input_tokens INTEGER NOT NULL DEFAULT 0");
|
|
424
|
-
});
|
|
425
|
-
tryMigration("add-sessions-output-tokens", () => {
|
|
426
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN output_tokens INTEGER NOT NULL DEFAULT 0");
|
|
427
|
-
});
|
|
428
|
-
tryMigration("add-sessions-cost-usd", () => {
|
|
429
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN cost_usd REAL NOT NULL DEFAULT 0");
|
|
430
|
-
});
|
|
431
|
-
// Migration: add end_reason column to sessions if missing (older databases)
|
|
432
|
-
tryMigration("add-sessions-end-reason", () => {
|
|
433
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN end_reason TEXT");
|
|
434
|
-
});
|
|
435
|
-
// Migration: normalize old session statuses to STOPPED + end_reason
|
|
436
|
-
conn.exec(`
|
|
437
|
-
UPDATE sessions SET end_reason = 'completed', status = 'stopped'
|
|
438
|
-
WHERE status = 'completed';
|
|
439
|
-
UPDATE sessions SET end_reason = 'interrupted', status = 'stopped'
|
|
440
|
-
WHERE status IN ('failed', 'interrupted');
|
|
441
|
-
UPDATE sessions SET end_reason = 'completed', status = 'stopped'
|
|
442
|
-
WHERE status = 'hibernating';
|
|
443
|
-
`);
|
|
444
|
-
// Migration: make workspace_id nullable on tasks.
|
|
445
|
-
// SQLite doesn't support ALTER COLUMN, so we recreate the table.
|
|
446
|
-
// Guard: only run if the column currently has NOT NULL.
|
|
447
|
-
{
|
|
448
|
-
const tableInfo = conn.prepare("PRAGMA table_info(tasks)").all();
|
|
449
|
-
const workspaceIdCol = tableInfo.find((c) => c.name === "workspace_id");
|
|
450
|
-
if (workspaceIdCol?.notnull === 1) {
|
|
451
|
-
conn.exec(`
|
|
452
|
-
BEGIN;
|
|
453
|
-
CREATE TABLE tasks_new (
|
|
454
|
-
id TEXT PRIMARY KEY,
|
|
455
|
-
workspace_id TEXT REFERENCES workspaces(id),
|
|
456
|
-
title TEXT NOT NULL,
|
|
457
|
-
description TEXT NOT NULL DEFAULT '',
|
|
458
|
-
status TEXT NOT NULL DEFAULT 'not_started',
|
|
459
|
-
branch TEXT NOT NULL DEFAULT '',
|
|
460
|
-
depends_on TEXT NOT NULL DEFAULT '[]',
|
|
461
|
-
started_at TEXT,
|
|
462
|
-
completed_at TEXT,
|
|
463
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
464
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
465
|
-
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
466
|
-
parent_task_id TEXT NOT NULL DEFAULT '',
|
|
467
|
-
depth INTEGER NOT NULL DEFAULT 0,
|
|
468
|
-
can_decompose INTEGER NOT NULL DEFAULT 0,
|
|
469
|
-
default_persona_id TEXT NOT NULL DEFAULT '',
|
|
470
|
-
workpad TEXT NOT NULL DEFAULT '',
|
|
471
|
-
schedule_id TEXT NOT NULL DEFAULT ''
|
|
472
|
-
);
|
|
473
|
-
INSERT INTO tasks_new SELECT
|
|
474
|
-
id, workspace_id, title, description, status, branch, depends_on,
|
|
475
|
-
started_at, completed_at, created_at, updated_at, sort_order,
|
|
476
|
-
parent_task_id, depth, can_decompose, default_persona_id,
|
|
477
|
-
COALESCE(workpad, ''),
|
|
478
|
-
COALESCE(schedule_id, '')
|
|
479
|
-
FROM tasks;
|
|
480
|
-
DROP TABLE tasks;
|
|
481
|
-
ALTER TABLE tasks_new RENAME TO tasks;
|
|
482
|
-
COMMIT;
|
|
483
|
-
`);
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
// Migration: add index on workspaces.environment_id for efficient lookup
|
|
487
|
-
conn.exec("CREATE INDEX IF NOT EXISTS idx_workspaces_environment_id ON workspaces(environment_id)");
|
|
488
|
-
tryMigration("add-sessions-sigterm-sent-at", () => {
|
|
489
|
-
conn.exec("ALTER TABLE sessions ADD COLUMN sigterm_sent_at TEXT");
|
|
490
|
-
});
|
|
491
|
-
// Migration: rename worktree_base_path → working_directory on workspaces table (#547)
|
|
492
|
-
// Guard: only run if the old column still exists (new databases already have working_directory).
|
|
493
|
-
tryMigration("rename-worktree-base-path", () => {
|
|
494
|
-
const tableInfo = conn.prepare("PRAGMA table_info(workspaces)").all();
|
|
495
|
-
if (tableInfo.some((c) => c.name === "worktree_base_path")) {
|
|
496
|
-
conn.exec("ALTER TABLE workspaces RENAME COLUMN worktree_base_path TO working_directory");
|
|
497
|
-
}
|
|
498
|
-
});
|
|
499
|
-
// ─── Schedules table ──────────────────────────────────────
|
|
500
|
-
conn.exec(`
|
|
501
289
|
CREATE TABLE IF NOT EXISTS schedules (
|
|
502
290
|
id TEXT PRIMARY KEY,
|
|
503
291
|
title TEXT NOT NULL,
|
|
@@ -514,14 +302,40 @@ export function initDatabase(sqliteOverride) {
|
|
|
514
302
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
515
303
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
516
304
|
);
|
|
305
|
+
|
|
306
|
+
CREATE INDEX IF NOT EXISTS idx_findings_workspace ON findings(workspace_id);
|
|
307
|
+
CREATE INDEX IF NOT EXISTS idx_domain_events_type ON domain_events(type);
|
|
308
|
+
CREATE INDEX IF NOT EXISTS idx_domain_events_timestamp ON domain_events(timestamp);
|
|
309
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_task_id ON sessions(task_id);
|
|
310
|
+
CREATE INDEX IF NOT EXISTS idx_workspaces_environment_id ON workspaces(environment_id);
|
|
517
311
|
CREATE INDEX IF NOT EXISTS idx_schedules_due ON schedules(enabled, next_run_at);
|
|
518
312
|
`);
|
|
519
|
-
//
|
|
520
|
-
|
|
521
|
-
conn.
|
|
522
|
-
}
|
|
523
|
-
|
|
313
|
+
// Mark unversioned databases as baseline now that tables are confirmed
|
|
314
|
+
if (currentVersion < BASELINE_VERSION) {
|
|
315
|
+
conn.pragma(`user_version = ${BASELINE_VERSION}`);
|
|
316
|
+
}
|
|
317
|
+
// Run any pending versioned migrations
|
|
318
|
+
for (const migration of MIGRATIONS) {
|
|
319
|
+
if (migration.version <= currentVersion) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
const run = conn.transaction(() => {
|
|
323
|
+
migration.up(conn);
|
|
324
|
+
conn.pragma(`user_version = ${migration.version}`);
|
|
325
|
+
});
|
|
326
|
+
try {
|
|
327
|
+
run();
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
const label = `Migration v${migration.version} ("${migration.name}") failed`;
|
|
331
|
+
if (error instanceof Error) {
|
|
332
|
+
error.message = `${label}: ${error.message}`;
|
|
333
|
+
throw error;
|
|
334
|
+
}
|
|
335
|
+
throw new Error(`${label}: ${String(error)}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
524
338
|
}
|
|
525
|
-
export { sqlite };
|
|
339
|
+
export { sqlite, CURRENT_VERSION };
|
|
526
340
|
export { db as default };
|
|
527
341
|
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/env-registry.d.ts
CHANGED
|
@@ -24,6 +24,8 @@ export interface UpdateEnvironmentFields {
|
|
|
24
24
|
}
|
|
25
25
|
/** Update mutable fields (displayName, adapterConfig) of an existing environment. */
|
|
26
26
|
export declare function updateEnvironment(id: string, fields: UpdateEnvironmentFields): void;
|
|
27
|
+
/** Update the default bootstrap runtime for an environment. */
|
|
28
|
+
export declare function updateDefaultRuntime(id: string, runtime: string): void;
|
|
27
29
|
/** Reset all environment statuses to disconnected on server startup. */
|
|
28
30
|
export declare function resetAllStatuses(): void;
|
|
29
31
|
//# sourceMappingURL=env-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-registry.d.ts","sourceRoot":"","sources":["../src/env-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAErE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,IAAI,CASN;AAED,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAKnF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKzD;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAenF;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
1
|
+
{"version":3,"file":"env-registry.d.ts","sourceRoot":"","sources":["../src/env-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAErE;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,IAAI,CASN;AAED,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAKnF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKzD;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKpE;AAED,oDAAoD;AACpD,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAenF;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKtE;AAED,wEAAwE;AACxE,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/env-registry.js
CHANGED
|
@@ -71,6 +71,13 @@ export function updateEnvironment(id, fields) {
|
|
|
71
71
|
.where(eq(environments.id, id))
|
|
72
72
|
.run();
|
|
73
73
|
}
|
|
74
|
+
/** Update the default bootstrap runtime for an environment. */
|
|
75
|
+
export function updateDefaultRuntime(id, runtime) {
|
|
76
|
+
db.update(environments)
|
|
77
|
+
.set({ defaultRuntime: runtime })
|
|
78
|
+
.where(eq(environments.id, id))
|
|
79
|
+
.run();
|
|
80
|
+
}
|
|
74
81
|
/** Reset all environment statuses to disconnected on server startup. */
|
|
75
82
|
export function resetAllStatuses() {
|
|
76
83
|
db.update(environments).set({ status: "disconnected" }).run();
|
package/dist/env-registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-registry.js","sourceRoot":"","sources":["../src/env-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,2BAA2B,GAAW,EAAE,CAAC;AAI/C,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7E,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAC5B,EAAU,EACV,WAAmB,EACnB,WAAmB,EACnB,aAAqB;IAErB,MAAM,cAAc,GAAG,WAAW,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChF,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;QAC7B,EAAE;QACF,WAAW;QACX,WAAW;QACX,aAAa;QACb,cAAc;KACf,CAAC,CAAC,GAAG,EAAE,CAAC;AACX,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC/D,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,uBAAuB,CAAC,EAAU,EAAE,MAAyB;IAC3E,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAA,iBAAiB,EAAE,CAAC;SAC/C,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9B,GAAG,EAAE,CAAC;AACX,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAC3B,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9B,GAAG,EAAE,CAAC;AACX,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,IAAY;IACjD,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACtB,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9B,GAAG,EAAE,CAAC;AACX,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,mBAAmB,CAAC,EAAU,EAAE,MAAc;IAC5D,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;SAC9B,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9B,GAAG,EAAE,CAAC;AACX,CAAC;AAQD,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,EAAU,EAAE,MAA+B;IAC3E,MAAM,OAAO,GAAmE,EAAE,CAAC;IACnF,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,OAAO,CAAC;SACZ,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC9B,GAAG,EAAE,CAAC;AACX,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,gBAAgB;IAC9B,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AAChE,CAAC"}
|
|
1
|
+
{"version":3,"file":"env-registry.js","sourceRoot":"","sources":["../src/env-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
* Re-exports schema, stores, migrations, and utility modules so consumers
|
|
5
5
|
* can import everything from a single package entry point.
|
|
6
6
|
*/
|
|
7
|
-
export { openDatabase, initDatabase, sqlite, default as db } from "./db.js";
|
|
8
|
-
export type { MigrationError, InitDatabaseResult } from "./db.js";
|
|
7
|
+
export { openDatabase, initDatabase, sqlite, CURRENT_VERSION, default as db } from "./db.js";
|
|
9
8
|
export { seedDatabase } from "./db-seed.js";
|
|
10
9
|
export * as schema from "./schema.js";
|
|
11
10
|
export type { EnvironmentRow, NewEnvironment, SessionRow, NewSession, TokenRow, WorkspaceRow, NewWorkspace, TaskRow, NewTask, FindingRow, NewFinding, PersonaRow, NewPersona, ScheduleRow, NewSchedule, } from "./schema.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAGrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* can import everything from a single package entry point.
|
|
6
6
|
*/
|
|
7
7
|
// ─── Database Lifecycle ────────────────────────────────────
|
|
8
|
-
export { openDatabase, initDatabase, sqlite, default as db } from "./db.js";
|
|
8
|
+
export { openDatabase, initDatabase, sqlite, CURRENT_VERSION, default as db } from "./db.js";
|
|
9
9
|
export { seedDatabase } from "./db-seed.js";
|
|
10
10
|
// ─── Schema ────────────────────────────────────────────────
|
|
11
11
|
export * as schema from "./schema.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,8DAA8D;AAC9D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAmBtC,8DAA8D;AAC9D,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,8DAA8D;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,8DAA8D;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/database",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.85.1",
|
|
4
4
|
"description": "SQLite persistence layer for Grackle — schema, stores, and migrations",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"better-sqlite3": "^11.0.0",
|
|
33
33
|
"drizzle-orm": "^0.38.0",
|
|
34
34
|
"uuid": "^11.0.0",
|
|
35
|
-
"@grackle-ai/common": "0.
|
|
35
|
+
"@grackle-ai/common": "0.85.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@rushstack/heft": "1.2.7",
|