@jait/gateway 0.1.0 → 0.1.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.
@@ -1,26 +1,24 @@
1
1
  /**
2
- * SQLite connection via bun:sqlite + Drizzle ORM.
2
+ * SQLite connection via better-sqlite3 + Drizzle ORM.
3
3
  *
4
4
  * Database lives at ~/.jait/data/jait.db (created automatically).
5
5
  * For tests, pass ":memory:" as dbPath.
6
6
  */
7
- import { Database } from "bun:sqlite";
8
- import { type BunSQLiteDatabase } from "drizzle-orm/bun-sqlite";
7
+ import Database from "better-sqlite3";
8
+ import { type BetterSQLite3Database } from "drizzle-orm/better-sqlite3";
9
9
  import * as schema from "./schema.js";
10
- export type JaitDB = BunSQLiteDatabase<typeof schema>;
10
+ export type JaitDB = BetterSQLite3Database<typeof schema>;
11
11
  /** Resolve the default DB path: ~/.jait/data/jait.db */
12
12
  export declare function defaultDbPath(): string;
13
13
  /**
14
14
  * Open (or create) the SQLite database and run table creation.
15
15
  *
16
16
  * @param dbPath File path for the SQLite DB, or ":memory:" for tests.
17
- * @returns { db, sqlite } — drizzle instance + raw bun:sqlite handle
17
+ * @returns { db, sqlite } — drizzle instance + raw better-sqlite3 handle
18
18
  */
19
19
  export declare function openDatabase(dbPath?: string): {
20
- db: BunSQLiteDatabase<typeof schema> & {
21
- $client: Database;
22
- };
23
- sqlite: Database;
20
+ db: JaitDB;
21
+ sqlite: Database.Database;
24
22
  };
25
23
  /**
26
24
  * Run DDL to create all tables if they don't already exist.
@@ -29,9 +27,9 @@ export declare function openDatabase(dbPath?: string): {
29
27
  * Migrations are numbered and tracked in a `_migrations` table.
30
28
  * Only new (un-applied) migrations run on each startup — safe for updates.
31
29
  */
32
- export declare function migrateDatabase(sqlite: Database): void;
30
+ export declare function migrateDatabase(sqlite: Database.Database): void;
33
31
  /**
34
32
  * Get the current schema version (highest applied migration ID).
35
33
  */
36
- export declare function getSchemaVersion(sqlite: Database): number;
34
+ export declare function getSchemaVersion(sqlite: Database.Database): number;
37
35
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAW,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAMtC,MAAM,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,MAAM,CAAC,CAAC;AAEtD,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM;;;;;EAoB3C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,QAkC/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAOzD"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAW,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAMtC,MAAM,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1D,wDAAwD;AACxD,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAA;CAAE,CAoBvF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,QAiCxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAOlE"}
@@ -1,11 +1,11 @@
1
1
  /**
2
- * SQLite connection via bun:sqlite + Drizzle ORM.
2
+ * SQLite connection via better-sqlite3 + Drizzle ORM.
3
3
  *
4
4
  * Database lives at ~/.jait/data/jait.db (created automatically).
5
5
  * For tests, pass ":memory:" as dbPath.
6
6
  */
7
- import { Database } from "bun:sqlite";
8
- import { drizzle } from "drizzle-orm/bun-sqlite";
7
+ import Database from "better-sqlite3";
8
+ import { drizzle } from "drizzle-orm/better-sqlite3";
9
9
  import * as schema from "./schema.js";
10
10
  import { migrations } from "./migrations.js";
11
11
  import { mkdirSync, existsSync } from "node:fs";
@@ -19,7 +19,7 @@ export function defaultDbPath() {
19
19
  * Open (or create) the SQLite database and run table creation.
20
20
  *
21
21
  * @param dbPath File path for the SQLite DB, or ":memory:" for tests.
22
- * @returns { db, sqlite } — drizzle instance + raw bun:sqlite handle
22
+ * @returns { db, sqlite } — drizzle instance + raw better-sqlite3 handle
23
23
  */
24
24
  export function openDatabase(dbPath) {
25
25
  const resolvedPath = dbPath ?? defaultDbPath();
@@ -32,8 +32,8 @@ export function openDatabase(dbPath) {
32
32
  }
33
33
  const sqlite = new Database(resolvedPath);
34
34
  // Enable WAL mode for better concurrent read performance
35
- sqlite.run("PRAGMA journal_mode = WAL");
36
- sqlite.run("PRAGMA foreign_keys = ON");
35
+ sqlite.pragma("journal_mode = WAL");
36
+ sqlite.pragma("foreign_keys = ON");
37
37
  const db = drizzle(sqlite, { schema });
38
38
  return { db, sqlite };
39
39
  }
@@ -46,7 +46,7 @@ export function openDatabase(dbPath) {
46
46
  */
47
47
  export function migrateDatabase(sqlite) {
48
48
  // Ensure the migrations tracking table exists
49
- sqlite.run(`
49
+ sqlite.exec(`
50
50
  CREATE TABLE IF NOT EXISTS _migrations (
51
51
  id INTEGER PRIMARY KEY,
52
52
  name TEXT NOT NULL,
@@ -54,7 +54,7 @@ export function migrateDatabase(sqlite) {
54
54
  )
55
55
  `);
56
56
  // Load which migrations have already been applied
57
- const applied = new Set(sqlite.query("SELECT id FROM _migrations").all()
57
+ const applied = new Set(sqlite.prepare("SELECT id FROM _migrations").all()
58
58
  .map((r) => r.id));
59
59
  let ran = 0;
60
60
  for (const migration of migrations) {
@@ -63,7 +63,7 @@ export function migrateDatabase(sqlite) {
63
63
  console.log(` Running migration ${migration.id}: ${migration.name}`);
64
64
  migration.run(sqlite);
65
65
  // Record that this migration has been applied
66
- sqlite.run("INSERT INTO _migrations (id, name, applied_at) VALUES (?, ?, ?)", [migration.id, migration.name, new Date().toISOString()]);
66
+ sqlite.prepare("INSERT INTO _migrations (id, name, applied_at) VALUES (?, ?, ?)").run(migration.id, migration.name, new Date().toISOString());
67
67
  ran++;
68
68
  }
69
69
  if (ran > 0) {
@@ -75,7 +75,7 @@ export function migrateDatabase(sqlite) {
75
75
  */
76
76
  export function getSchemaVersion(sqlite) {
77
77
  try {
78
- const row = sqlite.query("SELECT MAX(id) as v FROM _migrations").get();
78
+ const row = sqlite.prepare("SELECT MAX(id) as v FROM _migrations").get();
79
79
  return row?.v ?? 0;
80
80
  }
81
81
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,11 @@
14
14
  * - Use `CREATE TABLE IF NOT EXISTS` and try/catch `ALTER TABLE` for safety.
15
15
  * - Give each migration a short human-readable `name`.
16
16
  */
17
- import type { Database } from "bun:sqlite";
17
+ import type Database from "better-sqlite3";
18
18
  export interface Migration {
19
19
  id: number;
20
20
  name: string;
21
- run: (db: Database) => void;
21
+ run: (db: Database.Database) => void;
22
22
  }
23
23
  export declare const migrations: Migration[];
24
24
  //# sourceMappingURL=migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA0SjC,CAAC"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC;CACtC;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA0SjC,CAAC"}
@@ -4,7 +4,7 @@ export const migrations = [
4
4
  id: 1,
5
5
  name: "baseline_schema",
6
6
  run(db) {
7
- db.run(`
7
+ db.exec(`
8
8
  CREATE TABLE IF NOT EXISTS sessions (
9
9
  id TEXT PRIMARY KEY,
10
10
  user_id TEXT,
@@ -16,8 +16,8 @@ export const migrations = [
16
16
  metadata TEXT
17
17
  )
18
18
  `);
19
- db.run(`CREATE INDEX IF NOT EXISTS idx_sessions_user_status ON sessions(user_id, status, last_active_at DESC)`);
20
- db.run(`
19
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_user_status ON sessions(user_id, status, last_active_at DESC)`);
20
+ db.exec(`
21
21
  CREATE TABLE IF NOT EXISTS users (
22
22
  id TEXT PRIMARY KEY,
23
23
  username TEXT NOT NULL UNIQUE,
@@ -26,8 +26,8 @@ export const migrations = [
26
26
  updated_at TEXT NOT NULL
27
27
  )
28
28
  `);
29
- db.run(`CREATE INDEX IF NOT EXISTS idx_users_username ON users(username)`);
30
- db.run(`
29
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_users_username ON users(username)`);
30
+ db.exec(`
31
31
  CREATE TABLE IF NOT EXISTS user_settings (
32
32
  user_id TEXT PRIMARY KEY,
33
33
  theme TEXT NOT NULL DEFAULT 'system',
@@ -36,7 +36,7 @@ export const migrations = [
36
36
  updated_at TEXT NOT NULL
37
37
  )
38
38
  `);
39
- db.run(`
39
+ db.exec(`
40
40
  CREATE TABLE IF NOT EXISTS audit_log (
41
41
  id TEXT PRIMARY KEY,
42
42
  timestamp TEXT NOT NULL,
@@ -55,11 +55,11 @@ export const migrations = [
55
55
  consent_method TEXT
56
56
  )
57
57
  `);
58
- db.run(`CREATE INDEX IF NOT EXISTS idx_audit_action_id ON audit_log(action_id)`);
59
- db.run(`CREATE INDEX IF NOT EXISTS idx_audit_session ON audit_log(session_id, timestamp DESC)`);
60
- db.run(`CREATE INDEX IF NOT EXISTS idx_audit_surface ON audit_log(surface_type, timestamp DESC)`);
61
- db.run(`CREATE INDEX IF NOT EXISTS idx_audit_device ON audit_log(device_id, timestamp DESC)`);
62
- db.run(`
58
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_action_id ON audit_log(action_id)`);
59
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_session ON audit_log(session_id, timestamp DESC)`);
60
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_surface ON audit_log(surface_type, timestamp DESC)`);
61
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_audit_device ON audit_log(device_id, timestamp DESC)`);
62
+ db.exec(`
63
63
  CREATE TABLE IF NOT EXISTS trust_levels (
64
64
  action_type TEXT PRIMARY KEY,
65
65
  approved_count INTEGER DEFAULT 0,
@@ -67,7 +67,7 @@ export const migrations = [
67
67
  current_level INTEGER DEFAULT 0
68
68
  )
69
69
  `);
70
- db.run(`
70
+ db.exec(`
71
71
  CREATE TABLE IF NOT EXISTS consent_log (
72
72
  id TEXT PRIMARY KEY,
73
73
  action_id TEXT NOT NULL,
@@ -77,14 +77,14 @@ export const migrations = [
77
77
  decided_via TEXT
78
78
  )
79
79
  `);
80
- db.run(`
80
+ db.exec(`
81
81
  CREATE TABLE IF NOT EXISTS consent_session_approvals (
82
82
  session_id TEXT PRIMARY KEY,
83
83
  approve_all INTEGER NOT NULL DEFAULT 1,
84
84
  updated_at TEXT NOT NULL
85
85
  )
86
86
  `);
87
- db.run(`
87
+ db.exec(`
88
88
  CREATE TABLE IF NOT EXISTS memories (
89
89
  id TEXT PRIMARY KEY,
90
90
  scope TEXT NOT NULL,
@@ -98,9 +98,9 @@ export const migrations = [
98
98
  expires_at TEXT
99
99
  )
100
100
  `);
101
- db.run(`CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope, created_at)`);
102
- db.run(`CREATE INDEX IF NOT EXISTS idx_memories_expires ON memories(expires_at)`);
103
- db.run(`
101
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope, created_at)`);
102
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_memories_expires ON memories(expires_at)`);
103
+ db.exec(`
104
104
  CREATE TABLE IF NOT EXISTS messages (
105
105
  id TEXT PRIMARY KEY,
106
106
  session_id TEXT NOT NULL,
@@ -110,8 +110,8 @@ export const migrations = [
110
110
  created_at TEXT NOT NULL
111
111
  )
112
112
  `);
113
- db.run(`CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, created_at)`);
114
- db.run(`
113
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id, created_at)`);
114
+ db.exec(`
115
115
  CREATE TABLE IF NOT EXISTS scheduled_jobs (
116
116
  id TEXT PRIMARY KEY,
117
117
  user_id TEXT,
@@ -127,9 +127,9 @@ export const migrations = [
127
127
  updated_at TEXT NOT NULL
128
128
  )
129
129
  `);
130
- db.run(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_enabled ON scheduled_jobs(enabled)`);
131
- db.run(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_updated ON scheduled_jobs(updated_at DESC)`);
132
- db.run(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_user_updated ON scheduled_jobs(user_id, updated_at DESC)`);
130
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_enabled ON scheduled_jobs(enabled)`);
131
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_updated ON scheduled_jobs(updated_at DESC)`);
132
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_user_updated ON scheduled_jobs(user_id, updated_at DESC)`);
133
133
  },
134
134
  },
135
135
  // ─── 002: Legacy column migrations (safe re-runs) ─────────────────
@@ -139,15 +139,15 @@ export const migrations = [
139
139
  run(db) {
140
140
  // These were the old try/catch ALTER TABLEs — now tracked properly
141
141
  try {
142
- db.run(`ALTER TABLE sessions ADD COLUMN user_id TEXT`);
142
+ db.exec(`ALTER TABLE sessions ADD COLUMN user_id TEXT`);
143
143
  }
144
144
  catch { /* exists */ }
145
145
  try {
146
- db.run(`ALTER TABLE scheduled_jobs ADD COLUMN user_id TEXT`);
146
+ db.exec(`ALTER TABLE scheduled_jobs ADD COLUMN user_id TEXT`);
147
147
  }
148
148
  catch { /* exists */ }
149
149
  try {
150
- db.run(`ALTER TABLE messages ADD COLUMN tool_calls TEXT`);
150
+ db.exec(`ALTER TABLE messages ADD COLUMN tool_calls TEXT`);
151
151
  }
152
152
  catch { /* exists */ }
153
153
  },
@@ -158,7 +158,7 @@ export const migrations = [
158
158
  name: "user_settings_disabled_tools",
159
159
  run(db) {
160
160
  try {
161
- db.run(`ALTER TABLE user_settings ADD COLUMN disabled_tools TEXT`);
161
+ db.exec(`ALTER TABLE user_settings ADD COLUMN disabled_tools TEXT`);
162
162
  }
163
163
  catch { /* exists */ }
164
164
  },
@@ -168,7 +168,7 @@ export const migrations = [
168
168
  id: 4,
169
169
  name: "session_state_table",
170
170
  run(db) {
171
- db.run(`
171
+ db.exec(`
172
172
  CREATE TABLE IF NOT EXISTS session_state (
173
173
  session_id TEXT NOT NULL,
174
174
  key TEXT NOT NULL,
@@ -177,7 +177,7 @@ export const migrations = [
177
177
  PRIMARY KEY (session_id, key)
178
178
  )
179
179
  `);
180
- db.run(`CREATE INDEX IF NOT EXISTS idx_session_state_session ON session_state(session_id)`);
180
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_session_state_session ON session_state(session_id)`);
181
181
  },
182
182
  },
183
183
  // ─── 005: stt_provider in user_settings ────────────────────────────
@@ -186,7 +186,7 @@ export const migrations = [
186
186
  name: "user_settings_stt_provider",
187
187
  run(db) {
188
188
  try {
189
- db.run(`ALTER TABLE user_settings ADD COLUMN stt_provider TEXT NOT NULL DEFAULT 'simulated'`);
189
+ db.exec(`ALTER TABLE user_settings ADD COLUMN stt_provider TEXT NOT NULL DEFAULT 'simulated'`);
190
190
  }
191
191
  catch { /* exists */ }
192
192
  },
@@ -197,7 +197,7 @@ export const migrations = [
197
197
  name: "messages_segments_column",
198
198
  run(db) {
199
199
  try {
200
- db.run(`ALTER TABLE messages ADD COLUMN segments TEXT`);
200
+ db.exec(`ALTER TABLE messages ADD COLUMN segments TEXT`);
201
201
  }
202
202
  catch { /* exists */ }
203
203
  },
@@ -207,7 +207,7 @@ export const migrations = [
207
207
  id: 7,
208
208
  name: "agent_threads_tables",
209
209
  run(db) {
210
- db.run(`
210
+ db.exec(`
211
211
  CREATE TABLE IF NOT EXISTS agent_threads (
212
212
  id TEXT PRIMARY KEY,
213
213
  user_id TEXT,
@@ -226,11 +226,11 @@ export const migrations = [
226
226
  completed_at TEXT
227
227
  )
228
228
  `);
229
- db.run(`CREATE INDEX IF NOT EXISTS idx_agent_threads_user ON agent_threads(user_id)`);
230
- db.run(`CREATE INDEX IF NOT EXISTS idx_agent_threads_session ON agent_threads(session_id)`);
231
- db.run(`CREATE INDEX IF NOT EXISTS idx_agent_threads_status ON agent_threads(status)`);
232
- db.run(`CREATE INDEX IF NOT EXISTS idx_agent_threads_updated ON agent_threads(updated_at)`);
233
- db.run(`
229
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_agent_threads_user ON agent_threads(user_id)`);
230
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_agent_threads_session ON agent_threads(session_id)`);
231
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_agent_threads_status ON agent_threads(status)`);
232
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_agent_threads_updated ON agent_threads(updated_at)`);
233
+ db.exec(`
234
234
  CREATE TABLE IF NOT EXISTS agent_thread_activities (
235
235
  id TEXT PRIMARY KEY,
236
236
  thread_id TEXT NOT NULL,
@@ -240,7 +240,7 @@ export const migrations = [
240
240
  created_at TEXT NOT NULL
241
241
  )
242
242
  `);
243
- db.run(`CREATE INDEX IF NOT EXISTS idx_agent_thread_activities_thread ON agent_thread_activities(thread_id, created_at)`);
243
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_agent_thread_activities_thread ON agent_thread_activities(thread_id, created_at)`);
244
244
  },
245
245
  },
246
246
  // ─── 008: Add chat_provider to user_settings ──────────────────────
@@ -249,7 +249,7 @@ export const migrations = [
249
249
  name: "user_settings_chat_provider",
250
250
  run(db) {
251
251
  try {
252
- db.run(`ALTER TABLE user_settings ADD COLUMN chat_provider TEXT NOT NULL DEFAULT 'jait'`);
252
+ db.exec(`ALTER TABLE user_settings ADD COLUMN chat_provider TEXT NOT NULL DEFAULT 'jait'`);
253
253
  }
254
254
  catch { /* column already exists */ }
255
255
  },
@@ -260,19 +260,19 @@ export const migrations = [
260
260
  name: "agent_threads_pr_metadata",
261
261
  run(db) {
262
262
  try {
263
- db.run(`ALTER TABLE agent_threads ADD COLUMN pr_url TEXT`);
263
+ db.exec(`ALTER TABLE agent_threads ADD COLUMN pr_url TEXT`);
264
264
  }
265
265
  catch { /* exists */ }
266
266
  try {
267
- db.run(`ALTER TABLE agent_threads ADD COLUMN pr_number INTEGER`);
267
+ db.exec(`ALTER TABLE agent_threads ADD COLUMN pr_number INTEGER`);
268
268
  }
269
269
  catch { /* exists */ }
270
270
  try {
271
- db.run(`ALTER TABLE agent_threads ADD COLUMN pr_title TEXT`);
271
+ db.exec(`ALTER TABLE agent_threads ADD COLUMN pr_title TEXT`);
272
272
  }
273
273
  catch { /* exists */ }
274
274
  try {
275
- db.run(`ALTER TABLE agent_threads ADD COLUMN pr_state TEXT`);
275
+ db.exec(`ALTER TABLE agent_threads ADD COLUMN pr_state TEXT`);
276
276
  }
277
277
  catch { /* exists */ }
278
278
  },
@@ -282,7 +282,7 @@ export const migrations = [
282
282
  id: 10,
283
283
  name: "automation_repositories_table",
284
284
  run(db) {
285
- db.run(`
285
+ db.exec(`
286
286
  CREATE TABLE IF NOT EXISTS automation_repositories (
287
287
  id TEXT PRIMARY KEY,
288
288
  user_id TEXT,
@@ -294,7 +294,7 @@ export const migrations = [
294
294
  updated_at TEXT NOT NULL
295
295
  )
296
296
  `);
297
- db.run(`CREATE INDEX IF NOT EXISTS idx_automation_repos_user ON automation_repositories(user_id)`);
297
+ db.exec(`CREATE INDEX IF NOT EXISTS idx_automation_repos_user ON automation_repositories(user_id)`);
298
298
  },
299
299
  },
300
300
  // ─── 011: Add device_id to automation repositories ──────────────
@@ -303,7 +303,7 @@ export const migrations = [
303
303
  name: "automation_repositories_device_id",
304
304
  run(db) {
305
305
  try {
306
- db.run(`ALTER TABLE automation_repositories ADD COLUMN device_id TEXT`);
306
+ db.exec(`ALTER TABLE automation_repositories ADD COLUMN device_id TEXT`);
307
307
  }
308
308
  catch { /* column already exists */ }
309
309
  },
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -20,10 +20,10 @@ import type { SessionStateService } from "./services/session-state.js";
20
20
  import type { ThreadService } from "./services/threads.js";
21
21
  import type { RepositoryService } from "./services/repositories.js";
22
22
  import type { ProviderRegistry } from "./providers/registry.js";
23
- import type { Database } from "bun:sqlite";
23
+ import type Database from "better-sqlite3";
24
24
  export interface ServerDeps {
25
25
  db?: JaitDB;
26
- sqlite?: Database;
26
+ sqlite?: Database.Database;
27
27
  sessionService?: SessionService;
28
28
  userService?: UserService;
29
29
  audit?: AuditWriter;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAuB7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,KACtD,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,UAAe,sSA4I1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jait/gateway",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "Jait AI gateway — local-first AI coding agent with terminal, filesystem, and browser control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,7 +15,7 @@
15
15
  "scripts": {
16
16
  "build": "tsc",
17
17
  "dev": "bun --watch src/index.ts",
18
- "start": "bun dist/index.js",
18
+ "start": "node dist/index.js",
19
19
  "typecheck": "tsc --noEmit"
20
20
  },
21
21
  "keywords": [
@@ -38,10 +38,10 @@
38
38
  "@fastify/cors": "^11.0.0",
39
39
  "@fastify/static": "^9.0.0",
40
40
  "@fastify/websocket": "^11.0.0",
41
- "@jait/screen-share": "^0.1.0",
42
- "@jait/shared": "^0.1.0",
43
- "@jait/web": "^0.1.0",
44
- "bun-pty": "^0.4.8",
41
+ "@jait/screen-share": "^0.1.3",
42
+ "@jait/shared": "^0.1.3",
43
+ "@jait/web": "^0.1.3",
44
+ "better-sqlite3": "^11.0.0",
45
45
  "dotenv": "^16.4.0",
46
46
  "drizzle-orm": "^0.45.1",
47
47
  "fastify": "^5.2.0",
@@ -53,7 +53,7 @@
53
53
  "ws": "^8.18.0"
54
54
  },
55
55
  "devDependencies": {
56
- "@types/bun": "^1.3.9",
56
+ "@types/better-sqlite3": "^7.6.0",
57
57
  "@types/ws": "^8.5.0",
58
58
  "drizzle-kit": "^0.31.9",
59
59
  "typescript": "^5.7.3"