@kraki/head 0.10.3 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/storage.js CHANGED
@@ -1,7 +1,20 @@
1
+ import { createHash, randomBytes } from 'crypto';
1
2
  import Database from 'better-sqlite3';
2
- const SCHEMA_VERSION = 4;
3
+ const SCHEMA_VERSION = 7;
3
4
  export class Storage {
4
5
  db;
6
+ static hashSecret(secret) {
7
+ return createHash('sha256').update(secret).digest('hex');
8
+ }
9
+ static normalizeRegionCode(region) {
10
+ const value = region.trim().toLowerCase();
11
+ if (!value)
12
+ throw new Error('Region code is required');
13
+ if (!/^[a-z0-9_-]+$/.test(value)) {
14
+ throw new Error(`Invalid region code "${region}". Use letters, numbers, - or _.`);
15
+ }
16
+ return value;
17
+ }
5
18
  constructor(dbPath = ':memory:') {
6
19
  this.db = new Database(dbPath);
7
20
  this.db.pragma('journal_mode = WAL');
@@ -69,19 +82,85 @@ export class Storage {
69
82
  );
70
83
  `);
71
84
  }
85
+ if (currentVersion < 5) {
86
+ try {
87
+ this.db.exec(`ALTER TABLE users ADD COLUMN region TEXT`);
88
+ }
89
+ catch {
90
+ // Column may already exist
91
+ }
92
+ }
93
+ if (currentVersion < 6) {
94
+ this.db.exec(`
95
+ CREATE TABLE IF NOT EXISTS regions (
96
+ code TEXT PRIMARY KEY,
97
+ relay_url TEXT NOT NULL,
98
+ display_name TEXT,
99
+ enabled INTEGER NOT NULL DEFAULT 1,
100
+ registered_at TEXT NOT NULL DEFAULT (datetime('now')),
101
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
102
+ last_seen_at TEXT
103
+ );
104
+ CREATE INDEX IF NOT EXISTS idx_regions_enabled ON regions(enabled);
105
+
106
+ CREATE TABLE IF NOT EXISTS edge_join_tokens (
107
+ token_hash TEXT PRIMARY KEY,
108
+ region TEXT,
109
+ relay_url TEXT,
110
+ display_name TEXT,
111
+ expires_at TEXT NOT NULL,
112
+ used_at TEXT,
113
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
114
+ );
115
+ CREATE INDEX IF NOT EXISTS idx_edge_join_tokens_expires ON edge_join_tokens(expires_at);
116
+
117
+ CREATE TABLE IF NOT EXISTS edge_services (
118
+ region TEXT PRIMARY KEY,
119
+ service_key_hash TEXT NOT NULL,
120
+ issued_at TEXT NOT NULL DEFAULT (datetime('now')),
121
+ last_seen_at TEXT
122
+ );
123
+ `);
124
+ }
125
+ if (currentVersion < 7) {
126
+ // Make region and relay_url nullable (edge provides them at join time)
127
+ try {
128
+ const rows = this.db.prepare('SELECT token_hash, region, relay_url, display_name, expires_at, used_at, created_at FROM edge_join_tokens').all();
129
+ this.db.exec('DROP TABLE IF EXISTS edge_join_tokens');
130
+ this.db.exec(`
131
+ CREATE TABLE edge_join_tokens (
132
+ token_hash TEXT PRIMARY KEY,
133
+ region TEXT,
134
+ relay_url TEXT,
135
+ display_name TEXT,
136
+ expires_at TEXT NOT NULL,
137
+ used_at TEXT,
138
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
139
+ );
140
+ CREATE INDEX IF NOT EXISTS idx_edge_join_tokens_expires ON edge_join_tokens(expires_at);
141
+ `);
142
+ const ins = this.db.prepare('INSERT INTO edge_join_tokens (token_hash, region, relay_url, display_name, expires_at, used_at, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)');
143
+ for (const row of rows) {
144
+ ins.run(row.token_hash, row.region, row.relay_url, row.display_name, row.expires_at, row.used_at, row.created_at);
145
+ }
146
+ }
147
+ catch {
148
+ // Table may not exist yet on fresh DBs
149
+ }
150
+ }
72
151
  this.db.pragma(`user_version = ${SCHEMA_VERSION}`);
73
152
  }
74
153
  // --- Users ---
75
- upsertUser(userId, username, provider, email) {
154
+ upsertUser(userId, username, provider, email, region) {
76
155
  this.db.prepare(`
77
- INSERT INTO users (user_id, username, provider, email)
78
- VALUES (?, ?, ?, ?)
156
+ INSERT INTO users (user_id, username, provider, email, region)
157
+ VALUES (?, ?, ?, ?, ?)
79
158
  ON CONFLICT(user_id) DO UPDATE SET username = excluded.username, provider = excluded.provider, email = excluded.email
80
- `).run(userId, username, provider ?? 'open', email ?? null);
159
+ `).run(userId, username, provider ?? 'open', email ?? null, region ?? null);
81
160
  return this.getUser(userId);
82
161
  }
83
162
  getUser(userId) {
84
- const row = this.db.prepare('SELECT user_id, username, provider, email, preferences, created_at FROM users WHERE user_id = ?').get(userId);
163
+ const row = this.db.prepare('SELECT user_id, username, provider, email, preferences, region, created_at FROM users WHERE user_id = ?').get(userId);
85
164
  if (!row)
86
165
  return undefined;
87
166
  let prefs;
@@ -91,7 +170,10 @@ export class Storage {
91
170
  }
92
171
  catch { /* ignore */ }
93
172
  }
94
- return { userId: row.user_id, username: row.username, provider: row.provider, email: row.email ?? undefined, preferences: prefs, createdAt: row.created_at };
173
+ return { userId: row.user_id, username: row.username, provider: row.provider, email: row.email ?? undefined, preferences: prefs, region: row.region ?? undefined, createdAt: row.created_at };
174
+ }
175
+ setUserRegion(userId, region) {
176
+ this.db.prepare('UPDATE users SET region = ? WHERE user_id = ?').run(region, userId);
95
177
  }
96
178
  updatePreferences(userId, preferences) {
97
179
  const existing = this.getUser(userId);
@@ -101,6 +183,135 @@ export class Storage {
101
183
  this.db.prepare('UPDATE users SET preferences = ? WHERE user_id = ?')
102
184
  .run(JSON.stringify(merged), userId);
103
185
  }
186
+ // --- Region registry ---
187
+ upsertRegion(code, relayUrl, displayName, enabled = true) {
188
+ const normalizedCode = Storage.normalizeRegionCode(code);
189
+ const trimmedRelayUrl = relayUrl.trim();
190
+ if (!trimmedRelayUrl)
191
+ throw new Error('Relay URL is required');
192
+ this.db.prepare(`
193
+ INSERT INTO regions (code, relay_url, display_name, enabled)
194
+ VALUES (?, ?, ?, ?)
195
+ ON CONFLICT(code) DO UPDATE SET
196
+ relay_url = excluded.relay_url,
197
+ display_name = excluded.display_name,
198
+ enabled = excluded.enabled,
199
+ updated_at = datetime('now')
200
+ `).run(normalizedCode, trimmedRelayUrl, displayName ?? null, enabled ? 1 : 0);
201
+ return this.getRegion(normalizedCode);
202
+ }
203
+ getRegion(code) {
204
+ const row = this.db.prepare(`
205
+ SELECT code, relay_url, display_name, enabled, registered_at, updated_at, last_seen_at
206
+ FROM regions WHERE code = ?
207
+ `).get(Storage.normalizeRegionCode(code));
208
+ if (!row)
209
+ return undefined;
210
+ return this.mapRegionRow(row);
211
+ }
212
+ getRegions(enabledOnly = false) {
213
+ const rows = enabledOnly
214
+ ? this.db.prepare(`
215
+ SELECT code, relay_url, display_name, enabled, registered_at, updated_at, last_seen_at
216
+ FROM regions WHERE enabled = 1 ORDER BY code
217
+ `).all()
218
+ : this.db.prepare(`
219
+ SELECT code, relay_url, display_name, enabled, registered_at, updated_at, last_seen_at
220
+ FROM regions ORDER BY code
221
+ `).all();
222
+ return rows.map(row => this.mapRegionRow(row));
223
+ }
224
+ touchRegion(code) {
225
+ this.db.prepare('UPDATE regions SET last_seen_at = datetime(\'now\') WHERE code = ?')
226
+ .run(Storage.normalizeRegionCode(code));
227
+ }
228
+ getRegionVersion() {
229
+ const row = this.db.prepare(`
230
+ SELECT MAX(CAST(strftime('%s', COALESCE(last_seen_at, updated_at, registered_at)) AS INTEGER)) AS version
231
+ FROM regions
232
+ WHERE enabled = 1
233
+ `).get();
234
+ return Number(row.version ?? 0);
235
+ }
236
+ mapRegionRow(row) {
237
+ return {
238
+ code: row.code,
239
+ relayUrl: row.relay_url,
240
+ displayName: row.display_name ?? undefined,
241
+ enabled: row.enabled === 1,
242
+ registeredAt: row.registered_at,
243
+ updatedAt: row.updated_at,
244
+ lastSeenAt: row.last_seen_at ?? undefined,
245
+ };
246
+ }
247
+ // --- Edge registration / service credentials ---
248
+ issueEdgeJoinToken(expiresIn = 300) {
249
+ const ttl = Math.max(60, Math.floor(expiresIn));
250
+ const token = `kjt_${randomBytes(18).toString('hex')}`;
251
+ const tokenHash = Storage.hashSecret(token);
252
+ this.db.prepare(`
253
+ INSERT INTO edge_join_tokens (token_hash, expires_at)
254
+ VALUES (?, datetime('now', '+' || ? || ' seconds'))
255
+ `).run(tokenHash, ttl);
256
+ return { token, expiresIn: ttl };
257
+ }
258
+ consumeEdgeJoinToken(token, region, relayUrl, displayName) {
259
+ const normalizedRegion = Storage.normalizeRegionCode(region);
260
+ const trimmedRelayUrl = relayUrl.trim();
261
+ if (!trimmedRelayUrl) {
262
+ return { ok: false, code: 'bad_request', message: 'relayUrl is required' };
263
+ }
264
+ const tokenHash = Storage.hashSecret(token);
265
+ const row = this.db.prepare(`
266
+ SELECT token_hash, region, relay_url, display_name, expires_at, used_at, created_at
267
+ FROM edge_join_tokens
268
+ WHERE token_hash = ?
269
+ `).get(tokenHash);
270
+ if (!row) {
271
+ return { ok: false, code: 'invalid_join_token', message: 'Join token not found' };
272
+ }
273
+ if (row.used_at) {
274
+ return { ok: false, code: 'join_token_used', message: 'Join token has already been used' };
275
+ }
276
+ const expiresAt = new Date(`${row.expires_at.replace(' ', 'T')}Z`).getTime();
277
+ if (Number.isFinite(expiresAt) && expiresAt <= Date.now()) {
278
+ return { ok: false, code: 'join_token_expired', message: 'Join token has expired' };
279
+ }
280
+ this.db.prepare('UPDATE edge_join_tokens SET used_at = datetime(\'now\'), region = ?, relay_url = ?, display_name = ? WHERE token_hash = ?')
281
+ .run(normalizedRegion, trimmedRelayUrl, displayName ?? null, tokenHash);
282
+ return {
283
+ ok: true,
284
+ region: normalizedRegion,
285
+ relayUrl: trimmedRelayUrl,
286
+ displayName: displayName ?? undefined,
287
+ };
288
+ }
289
+ issueRegionServiceKey(region) {
290
+ const normalizedRegion = Storage.normalizeRegionCode(region);
291
+ const serviceKey = `ksk_${randomBytes(24).toString('hex')}`;
292
+ const serviceKeyHash = Storage.hashSecret(serviceKey);
293
+ this.db.prepare(`
294
+ INSERT INTO edge_services (region, service_key_hash)
295
+ VALUES (?, ?)
296
+ ON CONFLICT(region) DO UPDATE SET
297
+ service_key_hash = excluded.service_key_hash,
298
+ issued_at = datetime('now'),
299
+ last_seen_at = NULL
300
+ `).run(normalizedRegion, serviceKeyHash);
301
+ return { region: normalizedRegion, serviceKey };
302
+ }
303
+ validateServiceKey(serviceKey) {
304
+ const row = this.db.prepare(`
305
+ SELECT region, service_key_hash, issued_at, last_seen_at
306
+ FROM edge_services
307
+ WHERE service_key_hash = ?
308
+ `).get(Storage.hashSecret(serviceKey));
309
+ if (!row)
310
+ return { valid: false };
311
+ this.db.prepare('UPDATE edge_services SET last_seen_at = datetime(\'now\') WHERE region = ?').run(row.region);
312
+ this.touchRegion(row.region);
313
+ return { valid: true, region: row.region };
314
+ }
104
315
  // --- Devices ---
105
316
  upsertDevice(id, userId, name, role, kind, publicKey, encryptionKey) {
106
317
  const existing = this.getDevice(id);
@@ -177,6 +388,11 @@ export class Storage {
177
388
  const result = this.db.prepare(`DELETE FROM pending_messages WHERE created_at < datetime('now', '-${Storage.PENDING_TTL_DAYS} days')`).run();
178
389
  return result.changes;
179
390
  }
391
+ // --- Device activity ---
392
+ /** Update last_seen timestamp for a device (called on disconnect). */
393
+ touchDeviceLastSeen(deviceId) {
394
+ this.db.prepare("UPDATE devices SET last_seen = datetime('now') WHERE id = ?").run(deviceId);
395
+ }
180
396
  // --- Push tokens ---
181
397
  upsertPushToken(deviceId, provider, token, environment, bundleId) {
182
398
  this.db.prepare(`
@@ -196,6 +412,29 @@ export class Storage {
196
412
  deletePushTokensForDevice(deviceId) {
197
413
  this.db.prepare('DELETE FROM push_tokens WHERE device_id = ?').run(deviceId);
198
414
  }
415
+ /**
416
+ * Delete push tokens from stale devices of the same user.
417
+ * A device is considered stale if it is not currently connected
418
+ * AND its last_seen is older than the given threshold (default 24h).
419
+ * Returns the number of tokens deleted.
420
+ */
421
+ deleteStaleUserPushTokens(userId, excludeDeviceId, onlineDeviceIds, maxAgeHours = 24) {
422
+ const hours = Math.floor(Math.abs(Number(maxAgeHours)));
423
+ if (!Number.isFinite(hours) || hours === 0)
424
+ return 0;
425
+ const cutoff = new Date(Date.now() - hours * 3600_000).toISOString().replace('T', ' ').slice(0, 19);
426
+ const allExcluded = [excludeDeviceId, ...onlineDeviceIds];
427
+ const placeholders = allExcluded.map(() => '?').join(',');
428
+ const result = this.db.prepare(`
429
+ DELETE FROM push_tokens WHERE device_id IN (
430
+ SELECT d.id FROM devices d
431
+ WHERE d.user_id = ?
432
+ AND d.id NOT IN (${placeholders})
433
+ AND d.last_seen < ?
434
+ )
435
+ `).run(userId, ...allExcluded, cutoff);
436
+ return result.changes;
437
+ }
199
438
  /** Get push tokens for offline devices of a user (devices NOT in the online set). */
200
439
  getPushTokensForOfflineDevices(userId, onlineDeviceIds) {
201
440
  if (onlineDeviceIds.length === 0) {
@@ -232,10 +471,10 @@ export class Storage {
232
471
  return this.db.prepare('SELECT COUNT(*) as cnt FROM devices').get().cnt;
233
472
  }
234
473
  getAllUsers() {
235
- const rows = this.db.prepare('SELECT user_id, username, provider, email, preferences, created_at FROM users ORDER BY created_at').all();
474
+ const rows = this.db.prepare('SELECT user_id, username, provider, email, preferences, region, created_at FROM users ORDER BY created_at').all();
236
475
  return rows.map(row => ({
237
476
  userId: row.user_id, username: row.username, provider: row.provider,
238
- email: row.email ?? undefined, createdAt: row.created_at,
477
+ email: row.email ?? undefined, region: row.region ?? undefined, createdAt: row.created_at,
239
478
  }));
240
479
  }
241
480
  // --- Cleanup ---
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kraki/head",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
4
  "description": "Kraki relay server — the brain that routes messages between tentacles and apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  "uuid": "^13.0.0",
31
31
  "web-push": "^3.6.7",
32
32
  "ws": "^8.19.0",
33
- "@kraki/protocol": "0.9.1"
33
+ "@kraki/protocol": "0.10.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/better-sqlite3": "^7.6.0",