sandstream-kit 1.0.1 → 1.1.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.
Files changed (84) hide show
  1. package/README.md +18 -0
  2. package/dist/cli.js +458 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/database.d.ts +2 -2
  5. package/dist/database.js +9 -14
  6. package/dist/database.js.map +1 -1
  7. package/dist/lock.js +5 -3
  8. package/dist/lock.js.map +1 -1
  9. package/dist/memory/backup 2.d.ts +6 -0
  10. package/dist/memory/backup 2.js +80 -0
  11. package/dist/memory/backup 2.js.map +1 -0
  12. package/dist/memory/backup.d.ts +6 -0
  13. package/dist/memory/backup.js +80 -0
  14. package/dist/memory/backup.js.map +1 -0
  15. package/dist/memory/db 2.d.ts +40 -0
  16. package/dist/memory/db 2.js +233 -0
  17. package/dist/memory/db 2.js.map +1 -0
  18. package/dist/memory/db.d.ts +40 -0
  19. package/dist/memory/db.js +233 -0
  20. package/dist/memory/db.js.map +1 -0
  21. package/dist/memory/hook 2.d.ts +6 -0
  22. package/dist/memory/hook 2.js +51 -0
  23. package/dist/memory/hook 2.js.map +1 -0
  24. package/dist/memory/hook.d.ts +6 -0
  25. package/dist/memory/hook.js +51 -0
  26. package/dist/memory/hook.js.map +1 -0
  27. package/dist/memory/hook.test 2.d.ts +1 -0
  28. package/dist/memory/hook.test 2.js +35 -0
  29. package/dist/memory/hook.test 2.js.map +1 -0
  30. package/dist/memory/install 2.d.ts +8 -0
  31. package/dist/memory/install 2.js +72 -0
  32. package/dist/memory/install 2.js.map +1 -0
  33. package/dist/memory/install.d.ts +8 -0
  34. package/dist/memory/install.js +72 -0
  35. package/dist/memory/install.js.map +1 -0
  36. package/dist/memory/install.test 2.d.ts +1 -0
  37. package/dist/memory/install.test 2.js +59 -0
  38. package/dist/memory/install.test 2.js.map +1 -0
  39. package/dist/memory/pal 2.d.ts +47 -0
  40. package/dist/memory/pal 2.js +154 -0
  41. package/dist/memory/pal 2.js.map +1 -0
  42. package/dist/memory/pal.d.ts +47 -0
  43. package/dist/memory/pal.js +154 -0
  44. package/dist/memory/pal.js.map +1 -0
  45. package/dist/memory/parser.d.ts +25 -0
  46. package/dist/memory/parser.js +164 -0
  47. package/dist/memory/parser.js.map +1 -0
  48. package/dist/memory/project 2.d.ts +1 -0
  49. package/dist/memory/project 2.js +24 -0
  50. package/dist/memory/project 2.js.map +1 -0
  51. package/dist/memory/project.d.ts +1 -0
  52. package/dist/memory/project.js +24 -0
  53. package/dist/memory/project.js.map +1 -0
  54. package/dist/memory/scan 2.d.ts +15 -0
  55. package/dist/memory/scan 2.js +94 -0
  56. package/dist/memory/scan 2.js.map +1 -0
  57. package/dist/memory/scan.d.ts +15 -0
  58. package/dist/memory/scan.js +94 -0
  59. package/dist/memory/scan.js.map +1 -0
  60. package/dist/memory/scan.test 2.d.ts +1 -0
  61. package/dist/memory/scan.test 2.js +55 -0
  62. package/dist/memory/scan.test 2.js.map +1 -0
  63. package/dist/memory/shared 2.d.ts +33 -0
  64. package/dist/memory/shared 2.js +120 -0
  65. package/dist/memory/shared 2.js.map +1 -0
  66. package/dist/memory/shared.d.ts +33 -0
  67. package/dist/memory/shared.js +120 -0
  68. package/dist/memory/shared.js.map +1 -0
  69. package/dist/memory/threads 2.d.ts +37 -0
  70. package/dist/memory/threads 2.js +50 -0
  71. package/dist/memory/threads 2.js.map +1 -0
  72. package/dist/memory/threads.d.ts +37 -0
  73. package/dist/memory/threads.js +50 -0
  74. package/dist/memory/threads.js.map +1 -0
  75. package/dist/memory/threads.test 2.d.ts +1 -0
  76. package/dist/memory/threads.test 2.js +66 -0
  77. package/dist/memory/threads.test 2.js.map +1 -0
  78. package/dist/memory/types 2.d.ts +52 -0
  79. package/dist/memory/types 2.js +5 -0
  80. package/dist/memory/types 2.js.map +1 -0
  81. package/dist/memory/types.d.ts +52 -0
  82. package/dist/memory/types.js +5 -0
  83. package/dist/memory/types.js.map +1 -0
  84. package/package.json +1 -1
@@ -80,14 +80,14 @@ export declare class DatabaseManager {
80
80
  /**
81
81
  * Create a database backup.
82
82
  */
83
- createBackup(filename: string): Promise<{
83
+ createBackup(_filename: string): Promise<{
84
84
  success: boolean;
85
85
  backupFile: string;
86
86
  }>;
87
87
  /**
88
88
  * Restore from backup.
89
89
  */
90
- restoreBackup(backupFile: string): Promise<{
90
+ restoreBackup(_backupFile: string): Promise<{
91
91
  success: boolean;
92
92
  message: string;
93
93
  }>;
package/dist/database.js CHANGED
@@ -171,24 +171,18 @@ export class DatabaseManager {
171
171
  /**
172
172
  * Create a database backup.
173
173
  */
174
- async createBackup(filename) {
175
- // In real implementation, would use pg_dump
176
- // For now, return mock response
177
- return {
178
- success: true,
179
- backupFile: `backups/${filename}-${Date.now()}.sql`,
180
- };
174
+ async createBackup(_filename) {
175
+ // Not implemented. kit does not manage database backups. Throwing keeps this
176
+ // honest instead of returning a fake success that could mask data loss if a
177
+ // caller ever relied on it.
178
+ throw new Error("DatabaseManager.createBackup is not implemented — kit does not perform database backups");
181
179
  }
182
180
  /**
183
181
  * Restore from backup.
184
182
  */
185
- async restoreBackup(backupFile) {
186
- // In real implementation, would use psql restore
187
- // For now, return mock response
188
- return {
189
- success: true,
190
- message: `Restored from ${backupFile}`,
191
- };
183
+ async restoreBackup(_backupFile) {
184
+ // Not implemented (see createBackup).
185
+ throw new Error("DatabaseManager.restoreBackup is not implemented — kit does not perform database restores");
192
186
  }
193
187
  // ─── Health & Monitoring ──────────────────────────────────────────────
194
188
  /**
@@ -330,6 +324,7 @@ class MockConnection {
330
324
  void config;
331
325
  }
332
326
  async query(sql, params = []) {
327
+ void params;
333
328
  // Simulate query execution
334
329
  await new Promise((resolve) => setTimeout(resolve, Math.random() * 10));
335
330
  // Handle special test queries
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
package/dist/lock.js CHANGED
@@ -122,9 +122,11 @@ export async function writekitMeta(meta) {
122
122
  }
123
123
  }
124
124
  /**
125
- * Compute a hash for skill content
126
- * For now, this creates a hash from the source+version string
127
- * In the future, this should fetch and hash the actual skill content
125
+ * Pin identifier for a skill: sha256 of "source@version" (first 16 hex chars).
126
+ * This identifies WHICH skill + version the lockfile pinned — it is NOT a
127
+ * content-integrity hash and does not detect tampering of fetched skill content.
128
+ * Content verification is tracked separately; kit's public docs do not claim
129
+ * content verification, so this stays honest.
128
130
  */
129
131
  function computeSkillHash(source, version) {
130
132
  const content = `${source}@${version}`;
package/dist/lock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** Reject a too-short or obviously-weak backup passphrase (fail before encrypting). */
2
+ export declare function validatePassphrase(passphrase: string): void;
3
+ /** Encrypt the memory DB file into `outPath`. WAL is checkpointed first so the file is complete. */
4
+ export declare function backupEncrypted(passphrase: string, srcPath?: string, outPath?: string): void;
5
+ /** Decrypt a backup blob into `destPath`. Throws on a wrong passphrase or tampered blob (GCM auth). */
6
+ export declare function restoreEncrypted(passphrase: string, inPath: string, destPath: string): void;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * kit memory — encrypted backup / restore.
3
+ *
4
+ * The personal store is local-only (0600) — a stolen laptop loses it. This makes
5
+ * an ENCRYPTED, portable backup so you can restore your whole brain on a new
6
+ * machine. AES-256-GCM with a scrypt-derived key from a passphrase the operator
7
+ * supplies (and which is NEVER stored). Zero dependencies (node:crypto). The
8
+ * encrypted blob can live anywhere — Turso, object storage, a USB stick — and is
9
+ * the transport for the future opt-in live sync.
10
+ *
11
+ * Blob layout: MAGIC(8) | salt(16) | iv(12) | authTag(16) | ciphertext
12
+ */
13
+ import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from "node:crypto";
14
+ import { readFileSync, writeFileSync } from "node:fs";
15
+ import { openMemoryDb, getMemoryDbPath } from "./db.js";
16
+ const MAGIC = Buffer.from("KITMEM01");
17
+ const SALT_LEN = 16;
18
+ const IV_LEN = 12;
19
+ const TAG_LEN = 16;
20
+ function deriveKey(passphrase, salt) {
21
+ return scryptSync(passphrase, salt, 32);
22
+ }
23
+ const MIN_PASSPHRASE_LEN = 12;
24
+ // Substrings that mark an obviously guessable / placeholder passphrase. A long
25
+ // phrase is worthless if it is predictable — the passphrase is the ONLY thing
26
+ // protecting an encrypted backup that may sit on a USB stick or in the cloud.
27
+ const WEAK_MARKERS = [
28
+ "passphrase",
29
+ "password",
30
+ "changeme",
31
+ "example",
32
+ "valfri",
33
+ "correct horse",
34
+ "testpass",
35
+ "123456",
36
+ ];
37
+ /** Reject a too-short or obviously-weak backup passphrase (fail before encrypting). */
38
+ export function validatePassphrase(passphrase) {
39
+ if (passphrase.length < MIN_PASSPHRASE_LEN) {
40
+ throw new Error(`passphrase too weak: use at least ${MIN_PASSPHRASE_LEN} characters — it is the only thing protecting your encrypted backup`);
41
+ }
42
+ const low = passphrase.toLowerCase();
43
+ if (WEAK_MARKERS.some((m) => low.includes(m))) {
44
+ throw new Error("passphrase too weak: it looks like an example/placeholder — choose a long, non-obvious phrase");
45
+ }
46
+ }
47
+ /** Encrypt the memory DB file into `outPath`. WAL is checkpointed first so the file is complete. */
48
+ export function backupEncrypted(passphrase, srcPath = getMemoryDbPath(), outPath) {
49
+ if (!outPath)
50
+ throw new Error("backupEncrypted requires an output path");
51
+ validatePassphrase(passphrase);
52
+ // Flush WAL into the main file so reading the .db captures everything.
53
+ const db = openMemoryDb(srcPath);
54
+ db.exec("PRAGMA wal_checkpoint(TRUNCATE)");
55
+ db.close();
56
+ const data = readFileSync(srcPath);
57
+ const salt = randomBytes(SALT_LEN);
58
+ const iv = randomBytes(IV_LEN);
59
+ const cipher = createCipheriv("aes-256-gcm", deriveKey(passphrase, salt), iv);
60
+ const ciphertext = Buffer.concat([cipher.update(data), cipher.final()]);
61
+ const tag = cipher.getAuthTag();
62
+ writeFileSync(outPath, Buffer.concat([MAGIC, salt, iv, tag, ciphertext]));
63
+ }
64
+ /** Decrypt a backup blob into `destPath`. Throws on a wrong passphrase or tampered blob (GCM auth). */
65
+ export function restoreEncrypted(passphrase, inPath, destPath) {
66
+ const blob = readFileSync(inPath);
67
+ if (!blob.subarray(0, MAGIC.length).equals(MAGIC)) {
68
+ throw new Error("not a kit memory backup (bad magic)");
69
+ }
70
+ let off = MAGIC.length;
71
+ const salt = blob.subarray(off, (off += SALT_LEN));
72
+ const iv = blob.subarray(off, (off += IV_LEN));
73
+ const tag = blob.subarray(off, (off += TAG_LEN));
74
+ const ciphertext = blob.subarray(off);
75
+ const decipher = createDecipheriv("aes-256-gcm", deriveKey(passphrase, salt), iv);
76
+ decipher.setAuthTag(tag);
77
+ const data = Buffer.concat([decipher.update(ciphertext), decipher.final()]); // throws if wrong key
78
+ writeFileSync(destPath, data);
79
+ }
80
+ //# sourceMappingURL=backup%202.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup 2.js","sourceRoot":"","sources":["../../src/memory/backup 2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** Reject a too-short or obviously-weak backup passphrase (fail before encrypting). */
2
+ export declare function validatePassphrase(passphrase: string): void;
3
+ /** Encrypt the memory DB file into `outPath`. WAL is checkpointed first so the file is complete. */
4
+ export declare function backupEncrypted(passphrase: string, srcPath?: string, outPath?: string): void;
5
+ /** Decrypt a backup blob into `destPath`. Throws on a wrong passphrase or tampered blob (GCM auth). */
6
+ export declare function restoreEncrypted(passphrase: string, inPath: string, destPath: string): void;
@@ -0,0 +1,80 @@
1
+ /**
2
+ * kit memory — encrypted backup / restore.
3
+ *
4
+ * The personal store is local-only (0600) — a stolen laptop loses it. This makes
5
+ * an ENCRYPTED, portable backup so you can restore your whole brain on a new
6
+ * machine. AES-256-GCM with a scrypt-derived key from a passphrase the operator
7
+ * supplies (and which is NEVER stored). Zero dependencies (node:crypto). The
8
+ * encrypted blob can live anywhere — Turso, object storage, a USB stick — and is
9
+ * the transport for the future opt-in live sync.
10
+ *
11
+ * Blob layout: MAGIC(8) | salt(16) | iv(12) | authTag(16) | ciphertext
12
+ */
13
+ import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from "node:crypto";
14
+ import { readFileSync, writeFileSync } from "node:fs";
15
+ import { openMemoryDb, getMemoryDbPath } from "./db.js";
16
+ const MAGIC = Buffer.from("KITMEM01");
17
+ const SALT_LEN = 16;
18
+ const IV_LEN = 12;
19
+ const TAG_LEN = 16;
20
+ function deriveKey(passphrase, salt) {
21
+ return scryptSync(passphrase, salt, 32);
22
+ }
23
+ const MIN_PASSPHRASE_LEN = 12;
24
+ // Substrings that mark an obviously guessable / placeholder passphrase. A long
25
+ // phrase is worthless if it is predictable — the passphrase is the ONLY thing
26
+ // protecting an encrypted backup that may sit on a USB stick or in the cloud.
27
+ const WEAK_MARKERS = [
28
+ "passphrase",
29
+ "password",
30
+ "changeme",
31
+ "example",
32
+ "valfri",
33
+ "correct horse",
34
+ "testpass",
35
+ "123456",
36
+ ];
37
+ /** Reject a too-short or obviously-weak backup passphrase (fail before encrypting). */
38
+ export function validatePassphrase(passphrase) {
39
+ if (passphrase.length < MIN_PASSPHRASE_LEN) {
40
+ throw new Error(`passphrase too weak: use at least ${MIN_PASSPHRASE_LEN} characters — it is the only thing protecting your encrypted backup`);
41
+ }
42
+ const low = passphrase.toLowerCase();
43
+ if (WEAK_MARKERS.some((m) => low.includes(m))) {
44
+ throw new Error("passphrase too weak: it looks like an example/placeholder — choose a long, non-obvious phrase");
45
+ }
46
+ }
47
+ /** Encrypt the memory DB file into `outPath`. WAL is checkpointed first so the file is complete. */
48
+ export function backupEncrypted(passphrase, srcPath = getMemoryDbPath(), outPath) {
49
+ if (!outPath)
50
+ throw new Error("backupEncrypted requires an output path");
51
+ validatePassphrase(passphrase);
52
+ // Flush WAL into the main file so reading the .db captures everything.
53
+ const db = openMemoryDb(srcPath);
54
+ db.exec("PRAGMA wal_checkpoint(TRUNCATE)");
55
+ db.close();
56
+ const data = readFileSync(srcPath);
57
+ const salt = randomBytes(SALT_LEN);
58
+ const iv = randomBytes(IV_LEN);
59
+ const cipher = createCipheriv("aes-256-gcm", deriveKey(passphrase, salt), iv);
60
+ const ciphertext = Buffer.concat([cipher.update(data), cipher.final()]);
61
+ const tag = cipher.getAuthTag();
62
+ writeFileSync(outPath, Buffer.concat([MAGIC, salt, iv, tag, ciphertext]));
63
+ }
64
+ /** Decrypt a backup blob into `destPath`. Throws on a wrong passphrase or tampered blob (GCM auth). */
65
+ export function restoreEncrypted(passphrase, inPath, destPath) {
66
+ const blob = readFileSync(inPath);
67
+ if (!blob.subarray(0, MAGIC.length).equals(MAGIC)) {
68
+ throw new Error("not a kit memory backup (bad magic)");
69
+ }
70
+ let off = MAGIC.length;
71
+ const salt = blob.subarray(off, (off += SALT_LEN));
72
+ const iv = blob.subarray(off, (off += IV_LEN));
73
+ const tag = blob.subarray(off, (off += TAG_LEN));
74
+ const ciphertext = blob.subarray(off);
75
+ const decipher = createDecipheriv("aes-256-gcm", deriveKey(passphrase, salt), iv);
76
+ decipher.setAuthTag(tag);
77
+ const data = Buffer.concat([decipher.update(ciphertext), decipher.final()]); // throws if wrong key
78
+ writeFileSync(destPath, data);
79
+ }
80
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/memory/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * kit memory — local SQLite store (node:sqlite + FTS5).
3
+ *
4
+ * Schema is derived from cloudctx (MIT — github.com/chadptk1238/cloudctx): we reuse
5
+ * its proven table layout, PRAGMAs and FTS5 design. Differences: kit is a Node/TS
6
+ * project, so we use the built-in `node:sqlite` driver instead of `bun:sqlite`; we
7
+ * add a `harness` column (kit is harness-agnostic) and a `pending_actions` table
8
+ * (PAL — the structured, actionable layer on top of raw conversation memory).
9
+ *
10
+ * Memory is RAW and append-only: one row per message, no summarisation. Retrieval
11
+ * (FTS5) happens at time of work — store everything raw, search on demand. This DB
12
+ * is secret-dense (it indexes private transcripts): it lives only under ~/.kit/ with
13
+ * 0600 perms and is never committed. Redaction / encryption is stage B7.
14
+ */
15
+ import { DatabaseSync } from "node:sqlite";
16
+ import type { MemoryStats, MessageInput, SearchHit, SessionInput, ToolUseInput } from "./types.js";
17
+ export declare const SCHEMA_VERSION = 2;
18
+ export declare function getMemoryDir(): string;
19
+ export declare function getMemoryDbPath(): string;
20
+ /**
21
+ * Open (creating + migrating if needed) the memory database. Pass ":memory:" for
22
+ * an ephemeral in-process DB (tests). Otherwise defaults to ~/.kit/memory.db.
23
+ */
24
+ export declare function openMemoryDb(path?: string): DatabaseSync;
25
+ export declare function upsertSession(db: DatabaseSync, s: SessionInput): void;
26
+ /** Insert a message idempotently (by uuid). Returns true if a new row was added. */
27
+ export declare function insertMessage(db: DatabaseSync, m: MessageInput): boolean;
28
+ export declare function insertToolUse(db: DatabaseSync, t: ToolUseInput): void;
29
+ export interface SearchOptions {
30
+ limit?: number;
31
+ /** Restrict to messages whose cwd is this repo root (or a subdirectory). */
32
+ projectPath?: string;
33
+ }
34
+ /**
35
+ * Full-text search over raw message content (FTS5 MATCH, ranked by `rank`).
36
+ * Pass opts.projectPath to scope to one repo (relevance + blast-radius); omit it
37
+ * for cross-project ("--global") recall over the personal store.
38
+ */
39
+ export declare function searchMessages(db: DatabaseSync, query: string, opts?: SearchOptions): SearchHit[];
40
+ export declare function getStats(db: DatabaseSync): MemoryStats;
@@ -0,0 +1,233 @@
1
+ /**
2
+ * kit memory — local SQLite store (node:sqlite + FTS5).
3
+ *
4
+ * Schema is derived from cloudctx (MIT — github.com/chadptk1238/cloudctx): we reuse
5
+ * its proven table layout, PRAGMAs and FTS5 design. Differences: kit is a Node/TS
6
+ * project, so we use the built-in `node:sqlite` driver instead of `bun:sqlite`; we
7
+ * add a `harness` column (kit is harness-agnostic) and a `pending_actions` table
8
+ * (PAL — the structured, actionable layer on top of raw conversation memory).
9
+ *
10
+ * Memory is RAW and append-only: one row per message, no summarisation. Retrieval
11
+ * (FTS5) happens at time of work — store everything raw, search on demand. This DB
12
+ * is secret-dense (it indexes private transcripts): it lives only under ~/.kit/ with
13
+ * 0600 perms and is never committed. Redaction / encryption is stage B7.
14
+ */
15
+ import { DatabaseSync } from "node:sqlite";
16
+ import { homedir } from "node:os";
17
+ import { join } from "node:path";
18
+ import { existsSync, mkdirSync, chmodSync, statSync } from "node:fs";
19
+ export const SCHEMA_VERSION = 2;
20
+ export function getMemoryDir() {
21
+ return process.env.KIT_MEMORY_DIR ?? join(homedir(), ".kit");
22
+ }
23
+ export function getMemoryDbPath() {
24
+ return process.env.KIT_MEMORY_DB ?? join(getMemoryDir(), "memory.db");
25
+ }
26
+ function ensureMemoryDir() {
27
+ const dir = getMemoryDir();
28
+ if (!existsSync(dir))
29
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
30
+ }
31
+ const SCHEMA_SQL = `
32
+ CREATE TABLE IF NOT EXISTS sessions (
33
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
34
+ session_id TEXT UNIQUE NOT NULL,
35
+ harness TEXT NOT NULL DEFAULT 'claude-code',
36
+ project TEXT,
37
+ first_message_at TEXT,
38
+ last_message_at TEXT,
39
+ message_count INTEGER DEFAULT 0,
40
+ is_agent_sidechain INTEGER DEFAULT 0
41
+ );
42
+
43
+ CREATE TABLE IF NOT EXISTS messages (
44
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
45
+ uuid TEXT UNIQUE,
46
+ session_id TEXT NOT NULL,
47
+ parent_uuid TEXT,
48
+ type TEXT NOT NULL,
49
+ role TEXT,
50
+ content TEXT,
51
+ model TEXT,
52
+ input_tokens INTEGER,
53
+ output_tokens INTEGER,
54
+ timestamp TEXT,
55
+ cwd TEXT,
56
+ git_branch TEXT,
57
+ version TEXT
58
+ );
59
+
60
+ CREATE TABLE IF NOT EXISTS tool_uses (
61
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
62
+ message_uuid TEXT,
63
+ session_id TEXT,
64
+ tool_name TEXT,
65
+ tool_input TEXT,
66
+ timestamp TEXT
67
+ );
68
+
69
+ CREATE TABLE IF NOT EXISTS saved_threads (
70
+ name TEXT PRIMARY KEY,
71
+ session_id TEXT NOT NULL,
72
+ summary TEXT,
73
+ project_path TEXT,
74
+ saved_at TEXT DEFAULT CURRENT_TIMESTAMP
75
+ );
76
+
77
+ CREATE TABLE IF NOT EXISTS pending_actions (
78
+ id TEXT PRIMARY KEY,
79
+ status TEXT NOT NULL DEFAULT 'open',
80
+ title TEXT NOT NULL,
81
+ detail TEXT,
82
+ scope TEXT,
83
+ kind TEXT NOT NULL DEFAULT 'manual',
84
+ verify_cmd TEXT,
85
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP,
86
+ next_check TEXT,
87
+ snooze_until TEXT,
88
+ closed_at TEXT,
89
+ verify_passes INTEGER NOT NULL DEFAULT 0
90
+ );
91
+
92
+ CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
93
+ CREATE INDEX IF NOT EXISTS idx_messages_type ON messages(type);
94
+ CREATE INDEX IF NOT EXISTS idx_messages_timestamp ON messages(timestamp);
95
+ CREATE INDEX IF NOT EXISTS idx_tool_uses_tool ON tool_uses(tool_name);
96
+ CREATE INDEX IF NOT EXISTS idx_pending_status ON pending_actions(status);
97
+
98
+ CREATE VIRTUAL TABLE IF NOT EXISTS messages_fts USING fts5(
99
+ content,
100
+ content=messages,
101
+ content_rowid=id
102
+ );
103
+
104
+ CREATE TRIGGER IF NOT EXISTS messages_ai AFTER INSERT ON messages BEGIN
105
+ INSERT INTO messages_fts(rowid, content) VALUES (new.id, new.content);
106
+ END;
107
+ CREATE TRIGGER IF NOT EXISTS messages_ad AFTER DELETE ON messages BEGIN
108
+ INSERT INTO messages_fts(messages_fts, rowid, content) VALUES ('delete', old.id, old.content);
109
+ END;
110
+ CREATE TRIGGER IF NOT EXISTS messages_au AFTER UPDATE ON messages BEGIN
111
+ INSERT INTO messages_fts(messages_fts, rowid, content) VALUES ('delete', old.id, old.content);
112
+ INSERT INTO messages_fts(rowid, content) VALUES (new.id, new.content);
113
+ END;
114
+ `;
115
+ function ensureColumn(db, table, column, decl) {
116
+ const cols = db.prepare(`PRAGMA table_info(${table})`).all();
117
+ if (!cols.some((col) => col.name === column)) {
118
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${decl}`);
119
+ }
120
+ }
121
+ function migrate(db) {
122
+ db.exec("CREATE TABLE IF NOT EXISTS schema_meta (version INTEGER NOT NULL)");
123
+ db.exec(SCHEMA_SQL);
124
+ // v2: pending_actions.verify_passes (N=2 auto-verify confirmation). Add to
125
+ // tables created before this column existed.
126
+ ensureColumn(db, "pending_actions", "verify_passes", "INTEGER NOT NULL DEFAULT 0");
127
+ const row = db.prepare("SELECT version FROM schema_meta LIMIT 1").get();
128
+ if (!row) {
129
+ db.prepare("INSERT INTO schema_meta(version) VALUES (?)").run(SCHEMA_VERSION);
130
+ }
131
+ else if (row.version < SCHEMA_VERSION) {
132
+ db.prepare("UPDATE schema_meta SET version = ?").run(SCHEMA_VERSION);
133
+ }
134
+ }
135
+ /**
136
+ * Open (creating + migrating if needed) the memory database. Pass ":memory:" for
137
+ * an ephemeral in-process DB (tests). Otherwise defaults to ~/.kit/memory.db.
138
+ */
139
+ export function openMemoryDb(path) {
140
+ const dbPath = path ?? getMemoryDbPath();
141
+ if (dbPath !== ":memory:")
142
+ ensureMemoryDir();
143
+ const db = new DatabaseSync(dbPath);
144
+ db.exec("PRAGMA journal_mode = WAL");
145
+ db.exec("PRAGMA busy_timeout = 5000");
146
+ db.exec("PRAGMA foreign_keys = OFF");
147
+ migrate(db);
148
+ if (dbPath !== ":memory:" && existsSync(dbPath)) {
149
+ try {
150
+ chmodSync(dbPath, 0o600);
151
+ }
152
+ catch {
153
+ // best-effort: non-POSIX filesystems may not support chmod
154
+ }
155
+ }
156
+ return db;
157
+ }
158
+ export function upsertSession(db, s) {
159
+ db.prepare(`INSERT INTO sessions (session_id, harness, project, first_message_at, last_message_at, is_agent_sidechain)
160
+ VALUES (?, ?, ?, ?, ?, ?)
161
+ ON CONFLICT(session_id) DO UPDATE SET
162
+ last_message_at = COALESCE(excluded.last_message_at, sessions.last_message_at),
163
+ first_message_at = COALESCE(sessions.first_message_at, excluded.first_message_at),
164
+ project = COALESCE(excluded.project, sessions.project),
165
+ harness = excluded.harness,
166
+ is_agent_sidechain = MAX(sessions.is_agent_sidechain, excluded.is_agent_sidechain)`).run(s.sessionId, s.harness, s.project ?? null, s.firstMessageAt ?? null, s.lastMessageAt ?? null, s.isAgentSidechain ? 1 : 0);
167
+ }
168
+ /** Insert a message idempotently (by uuid). Returns true if a new row was added. */
169
+ export function insertMessage(db, m) {
170
+ const res = db
171
+ .prepare(`INSERT OR IGNORE INTO messages
172
+ (uuid, session_id, parent_uuid, type, role, content, model, input_tokens, output_tokens, timestamp, cwd, git_branch, version)
173
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
174
+ .run(m.uuid, m.sessionId, m.parentUuid ?? null, m.type, m.role ?? null, m.content ?? null, m.model ?? null, m.inputTokens ?? null, m.outputTokens ?? null, m.timestamp ?? null, m.cwd ?? null, m.gitBranch ?? null, m.version ?? null);
175
+ if (Number(res.changes) > 0) {
176
+ db.prepare("UPDATE sessions SET message_count = message_count + 1 WHERE session_id = ?").run(m.sessionId);
177
+ return true;
178
+ }
179
+ return false;
180
+ }
181
+ export function insertToolUse(db, t) {
182
+ db.prepare(`INSERT INTO tool_uses (message_uuid, session_id, tool_name, tool_input, timestamp)
183
+ VALUES (?, ?, ?, ?, ?)`).run(t.messageUuid ?? null, t.sessionId ?? null, t.toolName, t.toolInput ?? null, t.timestamp ?? null);
184
+ }
185
+ /**
186
+ * Full-text search over raw message content (FTS5 MATCH, ranked by `rank`).
187
+ * Pass opts.projectPath to scope to one repo (relevance + blast-radius); omit it
188
+ * for cross-project ("--global") recall over the personal store.
189
+ */
190
+ export function searchMessages(db, query, opts = {}) {
191
+ const limit = opts.limit ?? 20;
192
+ const params = [query];
193
+ let where = "messages_fts MATCH ?";
194
+ if (opts.projectPath) {
195
+ where += " AND (m.cwd = ? OR m.cwd LIKE ?)";
196
+ params.push(opts.projectPath, `${opts.projectPath}/%`);
197
+ }
198
+ params.push(limit);
199
+ return db
200
+ .prepare(`SELECT m.id AS id, m.uuid AS uuid, m.session_id AS sessionId, m.role AS role,
201
+ m.content AS content, m.timestamp AS timestamp
202
+ FROM messages_fts f
203
+ JOIN messages m ON m.id = f.rowid
204
+ WHERE ${where}
205
+ ORDER BY rank
206
+ LIMIT ?`)
207
+ .all(...params);
208
+ }
209
+ export function getStats(db) {
210
+ const count = (sql) => {
211
+ const r = db.prepare(sql).get();
212
+ return r ? Number(r.n) : 0;
213
+ };
214
+ const dbPath = getMemoryDbPath();
215
+ let sizeBytes = 0;
216
+ if (dbPath !== ":memory:" && existsSync(dbPath)) {
217
+ try {
218
+ sizeBytes = statSync(dbPath).size;
219
+ }
220
+ catch {
221
+ // best-effort: size is informational only
222
+ }
223
+ }
224
+ return {
225
+ sessions: count("SELECT COUNT(*) AS n FROM sessions"),
226
+ messages: count("SELECT COUNT(*) AS n FROM messages"),
227
+ toolUses: count("SELECT COUNT(*) AS n FROM tool_uses"),
228
+ pendingOpen: count("SELECT COUNT(*) AS n FROM pending_actions WHERE status = 'open'"),
229
+ dbPath,
230
+ sizeBytes,
231
+ };
232
+ }
233
+ //# sourceMappingURL=db%202.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db 2.js","sourceRoot":"","sources":["../../src/memory/db 2.ts"],"names":[],"mappings":"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"}