kiro-memory 1.2.2 → 1.4.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/package.json +5 -1
- package/plugin/dist/cli/contextkit.js +165 -10
- package/plugin/dist/hooks/agentSpawn.js +15 -0
- package/plugin/dist/hooks/kiro-hooks.js +15 -0
- package/plugin/dist/hooks/postToolUse.js +15 -0
- package/plugin/dist/hooks/stop.js +15 -0
- package/plugin/dist/hooks/userPromptSubmit.js +15 -0
- package/plugin/dist/index.js +15 -0
- package/plugin/dist/sdk/index.js +15 -0
- package/plugin/dist/services/sqlite/Database.js +15 -0
- package/plugin/dist/services/sqlite/index.js +15 -0
- package/plugin/dist/viewer.html +100 -630
- package/plugin/dist/viewer.js +359 -150
- package/plugin/dist/worker-service.js +50 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kiro-memory",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Persistent cross-session memory for Kiro CLI. Automatically tracks context, observations, and summaries across coding sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"kiro",
|
|
@@ -90,13 +90,17 @@
|
|
|
90
90
|
"ansi-to-html": "^0.7.2",
|
|
91
91
|
"better-sqlite3": "^12.6.2",
|
|
92
92
|
"chromadb": "^3.2.2",
|
|
93
|
+
"class-variance-authority": "^0.7.1",
|
|
94
|
+
"clsx": "^2.1.1",
|
|
93
95
|
"cors": "^2.8.5",
|
|
94
96
|
"dompurify": "^3.3.1",
|
|
95
97
|
"express": "^4.18.2",
|
|
96
98
|
"glob": "^11.0.3",
|
|
97
99
|
"handlebars": "^4.7.8",
|
|
100
|
+
"lucide-react": "^0.574.0",
|
|
98
101
|
"react": "^18.3.1",
|
|
99
102
|
"react-dom": "^18.3.1",
|
|
103
|
+
"tailwind-merge": "^3.4.1",
|
|
100
104
|
"yaml": "^2.8.2",
|
|
101
105
|
"zod": "^3.23.8"
|
|
102
106
|
},
|
|
@@ -878,6 +878,21 @@ var MigrationRunner = class {
|
|
|
878
878
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
879
879
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
880
880
|
}
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
version: 3,
|
|
884
|
+
up: (db) => {
|
|
885
|
+
db.run(`
|
|
886
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
887
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
888
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
889
|
+
display_name TEXT NOT NULL,
|
|
890
|
+
created_at TEXT NOT NULL,
|
|
891
|
+
updated_at TEXT NOT NULL
|
|
892
|
+
)
|
|
893
|
+
`);
|
|
894
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
895
|
+
}
|
|
881
896
|
}
|
|
882
897
|
];
|
|
883
898
|
}
|
|
@@ -1287,15 +1302,154 @@ function detectShellRc() {
|
|
|
1287
1302
|
if (shell.includes("fish")) return { name: "fish", rcFile: join3(homedir3(), ".config/fish/config.fish") };
|
|
1288
1303
|
return { name: "bash", rcFile: join3(homedir3(), ".bashrc") };
|
|
1289
1304
|
}
|
|
1305
|
+
var AUTOFIXABLE_CHECKS = /* @__PURE__ */ new Set([
|
|
1306
|
+
"WSL: npm global prefix",
|
|
1307
|
+
"WSL: npm binary",
|
|
1308
|
+
"Build tools (native modules)",
|
|
1309
|
+
"better-sqlite3"
|
|
1310
|
+
]);
|
|
1311
|
+
async function tryAutoFix(failedChecks) {
|
|
1312
|
+
const fixable = failedChecks.filter((c) => !c.ok && AUTOFIXABLE_CHECKS.has(c.name));
|
|
1313
|
+
if (fixable.length === 0) return { fixed: false, needsRestart: false };
|
|
1314
|
+
const { rcFile } = detectShellRc();
|
|
1315
|
+
let anyFixed = false;
|
|
1316
|
+
let needsRestart = false;
|
|
1317
|
+
console.log(` \x1B[36mFound ${fixable.length} issue(s) that can be fixed automatically:\x1B[0m
|
|
1318
|
+
`);
|
|
1319
|
+
for (const check of fixable) {
|
|
1320
|
+
console.log(` - ${check.name}: ${check.message}`);
|
|
1321
|
+
}
|
|
1322
|
+
console.log("");
|
|
1323
|
+
const answer = await askUser(" Fix automatically? [Y/n] ");
|
|
1324
|
+
if (answer !== "" && answer !== "y" && answer !== "yes") {
|
|
1325
|
+
console.log("\n Skipped auto-fix. Fix manually and run: kiro-memory install\n");
|
|
1326
|
+
return { fixed: false, needsRestart: false };
|
|
1327
|
+
}
|
|
1328
|
+
console.log("");
|
|
1329
|
+
const prefixCheck = fixable.find((c) => c.name === "WSL: npm global prefix");
|
|
1330
|
+
if (prefixCheck) {
|
|
1331
|
+
console.log(" Fixing npm global prefix...");
|
|
1332
|
+
try {
|
|
1333
|
+
const npmGlobalDir = join3(homedir3(), ".npm-global");
|
|
1334
|
+
mkdirSync3(npmGlobalDir, { recursive: true });
|
|
1335
|
+
execSync(`npm config set prefix "${npmGlobalDir}"`, { stdio: "ignore" });
|
|
1336
|
+
const exportLine = 'export PATH="$HOME/.npm-global/bin:$PATH"';
|
|
1337
|
+
let alreadyInRc = false;
|
|
1338
|
+
if (existsSync3(rcFile)) {
|
|
1339
|
+
const content = readFileSync2(rcFile, "utf8");
|
|
1340
|
+
alreadyInRc = content.includes(".npm-global/bin");
|
|
1341
|
+
}
|
|
1342
|
+
if (!alreadyInRc) {
|
|
1343
|
+
appendFileSync2(rcFile, `
|
|
1344
|
+
# npm global prefix (added by kiro-memory)
|
|
1345
|
+
${exportLine}
|
|
1346
|
+
`);
|
|
1347
|
+
}
|
|
1348
|
+
process.env.PATH = `${npmGlobalDir}/bin:${process.env.PATH}`;
|
|
1349
|
+
console.log(` \x1B[32m\u2713\x1B[0m npm prefix set to ${npmGlobalDir}`);
|
|
1350
|
+
console.log(` \x1B[32m\u2713\x1B[0m PATH updated in ${rcFile}`);
|
|
1351
|
+
anyFixed = true;
|
|
1352
|
+
} catch (err) {
|
|
1353
|
+
console.log(` \x1B[31m\u2717\x1B[0m Could not fix npm prefix: ${err.message}`);
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
const npmBinaryCheck = fixable.find((c) => c.name === "WSL: npm binary");
|
|
1357
|
+
if (npmBinaryCheck) {
|
|
1358
|
+
console.log("\n Fixing npm binary (installing nvm + Node.js 22)...");
|
|
1359
|
+
const nvmDir = join3(homedir3(), ".nvm");
|
|
1360
|
+
try {
|
|
1361
|
+
if (existsSync3(nvmDir)) {
|
|
1362
|
+
console.log(` nvm already installed at ${nvmDir}`);
|
|
1363
|
+
} else {
|
|
1364
|
+
console.log(" Downloading nvm...");
|
|
1365
|
+
execSync("curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash", {
|
|
1366
|
+
stdio: "inherit",
|
|
1367
|
+
timeout: 6e4
|
|
1368
|
+
});
|
|
1369
|
+
console.log(` \x1B[32m\u2713\x1B[0m nvm installed`);
|
|
1370
|
+
}
|
|
1371
|
+
console.log(" Installing Node.js 22 via nvm...");
|
|
1372
|
+
execSync('bash -c "source $HOME/.nvm/nvm.sh && nvm install 22"', {
|
|
1373
|
+
stdio: "inherit",
|
|
1374
|
+
timeout: 12e4
|
|
1375
|
+
});
|
|
1376
|
+
console.log(` \x1B[32m\u2713\x1B[0m Node.js 22 installed`);
|
|
1377
|
+
anyFixed = true;
|
|
1378
|
+
needsRestart = true;
|
|
1379
|
+
} catch (err) {
|
|
1380
|
+
console.log(` \x1B[31m\u2717\x1B[0m Could not install nvm/Node: ${err.message}`);
|
|
1381
|
+
console.log(" Install manually:");
|
|
1382
|
+
console.log(" curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash");
|
|
1383
|
+
console.log(" source ~/.bashrc");
|
|
1384
|
+
console.log(" nvm install 22");
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
const buildCheck = fixable.find((c) => c.name === "Build tools (native modules)");
|
|
1388
|
+
if (buildCheck) {
|
|
1389
|
+
console.log("\n Fixing build tools (requires sudo)...");
|
|
1390
|
+
try {
|
|
1391
|
+
execSync("sudo apt-get update -qq && sudo apt-get install -y build-essential python3", {
|
|
1392
|
+
stdio: "inherit",
|
|
1393
|
+
timeout: 12e4
|
|
1394
|
+
});
|
|
1395
|
+
console.log(` \x1B[32m\u2713\x1B[0m Build tools installed`);
|
|
1396
|
+
anyFixed = true;
|
|
1397
|
+
} catch (err) {
|
|
1398
|
+
console.log(` \x1B[31m\u2717\x1B[0m Could not install build tools: ${err.message}`);
|
|
1399
|
+
console.log(" Install manually: sudo apt-get install -y build-essential python3");
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
const sqliteCheck = fixable.find((c) => c.name === "better-sqlite3");
|
|
1403
|
+
if (sqliteCheck) {
|
|
1404
|
+
console.log("\n Rebuilding better-sqlite3...");
|
|
1405
|
+
try {
|
|
1406
|
+
const globalDir = execSync("npm prefix -g", { encoding: "utf8" }).trim();
|
|
1407
|
+
const sqlitePkg = join3(globalDir, "lib", "node_modules", "kiro-memory");
|
|
1408
|
+
if (existsSync3(sqlitePkg)) {
|
|
1409
|
+
execSync(`cd "${sqlitePkg}" && npm rebuild better-sqlite3`, {
|
|
1410
|
+
stdio: "inherit",
|
|
1411
|
+
timeout: 6e4
|
|
1412
|
+
});
|
|
1413
|
+
} else {
|
|
1414
|
+
execSync("npm rebuild better-sqlite3", { stdio: "inherit", timeout: 6e4 });
|
|
1415
|
+
}
|
|
1416
|
+
console.log(` \x1B[32m\u2713\x1B[0m better-sqlite3 rebuilt`);
|
|
1417
|
+
anyFixed = true;
|
|
1418
|
+
} catch (err) {
|
|
1419
|
+
console.log(` \x1B[31m\u2717\x1B[0m Could not rebuild: ${err.message}`);
|
|
1420
|
+
console.log(" Try: npm install -g kiro-memory --build-from-source");
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
console.log("");
|
|
1424
|
+
return { fixed: anyFixed, needsRestart };
|
|
1425
|
+
}
|
|
1290
1426
|
async function installKiro() {
|
|
1291
1427
|
console.log("\n=== Kiro Memory - Installation ===\n");
|
|
1292
|
-
console.log("[1/
|
|
1293
|
-
|
|
1294
|
-
|
|
1428
|
+
console.log("[1/4] Running environment checks...");
|
|
1429
|
+
let checks = runEnvironmentChecks();
|
|
1430
|
+
let { hasErrors } = printChecks(checks);
|
|
1295
1431
|
if (hasErrors) {
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1432
|
+
const { fixed, needsRestart } = await tryAutoFix(checks);
|
|
1433
|
+
if (needsRestart) {
|
|
1434
|
+
console.log(" \x1B[33m\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\x1B[0m");
|
|
1435
|
+
console.log(" \x1B[33m\u2502\x1B[0m Node.js was installed via nvm. To activate it: \x1B[33m\u2502\x1B[0m");
|
|
1436
|
+
console.log(" \x1B[33m\u2502\x1B[0m \x1B[33m\u2502\x1B[0m");
|
|
1437
|
+
console.log(" \x1B[33m\u2502\x1B[0m 1. Close and reopen your terminal \x1B[33m\u2502\x1B[0m");
|
|
1438
|
+
console.log(" \x1B[33m\u2502\x1B[0m 2. Run: \x1B[1mnpm install -g kiro-memory\x1B[0m \x1B[33m\u2502\x1B[0m");
|
|
1439
|
+
console.log(" \x1B[33m\u2502\x1B[0m 3. Run: \x1B[1mkiro-memory install\x1B[0m \x1B[33m\u2502\x1B[0m");
|
|
1440
|
+
console.log(" \x1B[33m\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\x1B[0m\n");
|
|
1441
|
+
process.exit(0);
|
|
1442
|
+
}
|
|
1443
|
+
if (fixed) {
|
|
1444
|
+
console.log(" Re-running checks...\n");
|
|
1445
|
+
checks = runEnvironmentChecks();
|
|
1446
|
+
({ hasErrors } = printChecks(checks));
|
|
1447
|
+
}
|
|
1448
|
+
if (hasErrors) {
|
|
1449
|
+
console.log("\x1B[31mInstallation aborted.\x1B[0m Fix the remaining issues and retry.");
|
|
1450
|
+
console.log("After fixing, run: kiro-memory install\n");
|
|
1451
|
+
process.exit(1);
|
|
1452
|
+
}
|
|
1299
1453
|
}
|
|
1300
1454
|
const distDir = DIST_DIR;
|
|
1301
1455
|
const kiroDir = process.env.KIRO_CONFIG_DIR || join3(homedir3(), ".kiro");
|
|
@@ -1303,7 +1457,7 @@ async function installKiro() {
|
|
|
1303
1457
|
const settingsDir = join3(kiroDir, "settings");
|
|
1304
1458
|
const steeringDir = join3(kiroDir, "steering");
|
|
1305
1459
|
const dataDir = process.env.CONTEXTKIT_DATA_DIR || join3(homedir3(), ".contextkit");
|
|
1306
|
-
console.log("[2/
|
|
1460
|
+
console.log("[2/4] Installing Kiro configuration...\n");
|
|
1307
1461
|
for (const dir of [agentsDir, settingsDir, steeringDir, dataDir]) {
|
|
1308
1462
|
mkdirSync3(dir, { recursive: true });
|
|
1309
1463
|
}
|
|
@@ -1330,8 +1484,8 @@ async function installKiro() {
|
|
|
1330
1484
|
writeFileSync(steeringDestPath, STEERING_CONTENT, "utf8");
|
|
1331
1485
|
console.log(` \u2192 Steering: ${steeringDestPath}`);
|
|
1332
1486
|
console.log(` \u2192 Data dir: ${dataDir}`);
|
|
1333
|
-
console.log("\n[3/
|
|
1334
|
-
const {
|
|
1487
|
+
console.log("\n[3/4] Shell alias setup\n");
|
|
1488
|
+
const { rcFile } = detectShellRc();
|
|
1335
1489
|
const aliasLine = 'alias kiro="kiro-cli --agent contextkit-memory"';
|
|
1336
1490
|
let aliasAlreadySet = false;
|
|
1337
1491
|
if (existsSync3(rcFile)) {
|
|
@@ -1370,7 +1524,8 @@ ${aliasLine}
|
|
|
1370
1524
|
console.log(` echo '${aliasLine}' >> ${rcFile}`);
|
|
1371
1525
|
}
|
|
1372
1526
|
}
|
|
1373
|
-
console.log("\n
|
|
1527
|
+
console.log("\n[4/4] Done!\n");
|
|
1528
|
+
console.log(" \x1B[32m\u2550\u2550\u2550 Installation complete! \u2550\u2550\u2550\x1B[0m\n");
|
|
1374
1529
|
console.log(" Start Kiro with memory:");
|
|
1375
1530
|
if (aliasAlreadySet) {
|
|
1376
1531
|
console.log(" \x1B[1mkiro\x1B[0m");
|
|
@@ -980,6 +980,21 @@ var MigrationRunner = class {
|
|
|
980
980
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
981
981
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
982
982
|
}
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
version: 3,
|
|
986
|
+
up: (db) => {
|
|
987
|
+
db.run(`
|
|
988
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
989
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
990
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
991
|
+
display_name TEXT NOT NULL,
|
|
992
|
+
created_at TEXT NOT NULL,
|
|
993
|
+
updated_at TEXT NOT NULL
|
|
994
|
+
)
|
|
995
|
+
`);
|
|
996
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
997
|
+
}
|
|
983
998
|
}
|
|
984
999
|
];
|
|
985
1000
|
}
|
|
@@ -877,6 +877,21 @@ var MigrationRunner = class {
|
|
|
877
877
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
878
878
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
879
879
|
}
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
version: 3,
|
|
883
|
+
up: (db) => {
|
|
884
|
+
db.run(`
|
|
885
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
886
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
887
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
888
|
+
display_name TEXT NOT NULL,
|
|
889
|
+
created_at TEXT NOT NULL,
|
|
890
|
+
updated_at TEXT NOT NULL
|
|
891
|
+
)
|
|
892
|
+
`);
|
|
893
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
894
|
+
}
|
|
880
895
|
}
|
|
881
896
|
];
|
|
882
897
|
}
|
|
@@ -971,6 +971,21 @@ var MigrationRunner = class {
|
|
|
971
971
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
972
972
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
973
973
|
}
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
version: 3,
|
|
977
|
+
up: (db) => {
|
|
978
|
+
db.run(`
|
|
979
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
980
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
981
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
982
|
+
display_name TEXT NOT NULL,
|
|
983
|
+
created_at TEXT NOT NULL,
|
|
984
|
+
updated_at TEXT NOT NULL
|
|
985
|
+
)
|
|
986
|
+
`);
|
|
987
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
988
|
+
}
|
|
974
989
|
}
|
|
975
990
|
];
|
|
976
991
|
}
|
|
@@ -971,6 +971,21 @@ var MigrationRunner = class {
|
|
|
971
971
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
972
972
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
973
973
|
}
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
version: 3,
|
|
977
|
+
up: (db) => {
|
|
978
|
+
db.run(`
|
|
979
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
980
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
981
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
982
|
+
display_name TEXT NOT NULL,
|
|
983
|
+
created_at TEXT NOT NULL,
|
|
984
|
+
updated_at TEXT NOT NULL
|
|
985
|
+
)
|
|
986
|
+
`);
|
|
987
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
988
|
+
}
|
|
974
989
|
}
|
|
975
990
|
];
|
|
976
991
|
}
|
|
@@ -971,6 +971,21 @@ var MigrationRunner = class {
|
|
|
971
971
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
972
972
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
973
973
|
}
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
version: 3,
|
|
977
|
+
up: (db) => {
|
|
978
|
+
db.run(`
|
|
979
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
980
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
981
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
982
|
+
display_name TEXT NOT NULL,
|
|
983
|
+
created_at TEXT NOT NULL,
|
|
984
|
+
updated_at TEXT NOT NULL
|
|
985
|
+
)
|
|
986
|
+
`);
|
|
987
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
988
|
+
}
|
|
974
989
|
}
|
|
975
990
|
];
|
|
976
991
|
}
|
package/plugin/dist/index.js
CHANGED
|
@@ -986,6 +986,21 @@ var MigrationRunner = class {
|
|
|
986
986
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
987
987
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
988
988
|
}
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
version: 3,
|
|
992
|
+
up: (db) => {
|
|
993
|
+
db.run(`
|
|
994
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
995
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
996
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
997
|
+
display_name TEXT NOT NULL,
|
|
998
|
+
created_at TEXT NOT NULL,
|
|
999
|
+
updated_at TEXT NOT NULL
|
|
1000
|
+
)
|
|
1001
|
+
`);
|
|
1002
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
1003
|
+
}
|
|
989
1004
|
}
|
|
990
1005
|
];
|
|
991
1006
|
}
|
package/plugin/dist/sdk/index.js
CHANGED
|
@@ -877,6 +877,21 @@ var MigrationRunner = class {
|
|
|
877
877
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
878
878
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
879
879
|
}
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
version: 3,
|
|
883
|
+
up: (db) => {
|
|
884
|
+
db.run(`
|
|
885
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
886
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
887
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
888
|
+
display_name TEXT NOT NULL,
|
|
889
|
+
created_at TEXT NOT NULL,
|
|
890
|
+
updated_at TEXT NOT NULL
|
|
891
|
+
)
|
|
892
|
+
`);
|
|
893
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
894
|
+
}
|
|
880
895
|
}
|
|
881
896
|
];
|
|
882
897
|
}
|
|
@@ -604,6 +604,21 @@ var MigrationRunner = class {
|
|
|
604
604
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
605
605
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
606
606
|
}
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
version: 3,
|
|
610
|
+
up: (db) => {
|
|
611
|
+
db.run(`
|
|
612
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
613
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
614
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
615
|
+
display_name TEXT NOT NULL,
|
|
616
|
+
created_at TEXT NOT NULL,
|
|
617
|
+
updated_at TEXT NOT NULL
|
|
618
|
+
)
|
|
619
|
+
`);
|
|
620
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
621
|
+
}
|
|
607
622
|
}
|
|
608
623
|
];
|
|
609
624
|
}
|
|
@@ -604,6 +604,21 @@ var MigrationRunner = class {
|
|
|
604
604
|
db.run("CREATE INDEX IF NOT EXISTS idx_summaries_epoch ON summaries(created_at_epoch)");
|
|
605
605
|
db.run("CREATE INDEX IF NOT EXISTS idx_prompts_project ON prompts(project)");
|
|
606
606
|
}
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
version: 3,
|
|
610
|
+
up: (db) => {
|
|
611
|
+
db.run(`
|
|
612
|
+
CREATE TABLE IF NOT EXISTS project_aliases (
|
|
613
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
614
|
+
project_name TEXT NOT NULL UNIQUE,
|
|
615
|
+
display_name TEXT NOT NULL,
|
|
616
|
+
created_at TEXT NOT NULL,
|
|
617
|
+
updated_at TEXT NOT NULL
|
|
618
|
+
)
|
|
619
|
+
`);
|
|
620
|
+
db.run("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_aliases_name ON project_aliases(project_name)");
|
|
621
|
+
}
|
|
607
622
|
}
|
|
608
623
|
];
|
|
609
624
|
}
|