kiro-memory 1.4.1 → 1.5.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.
@@ -106,7 +106,7 @@ var Logger = class {
106
106
  mkdirSync(logsDir, { recursive: true });
107
107
  }
108
108
  const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
109
- this.logFilePath = join(logsDir, `contextkit-${date}.log`);
109
+ this.logFilePath = join(logsDir, `kiro-memory-${date}.log`);
110
110
  } catch (error) {
111
111
  console.error("[LOGGER] Failed to initialize log file:", error);
112
112
  this.logFilePath = null;
@@ -122,7 +122,7 @@ var Logger = class {
122
122
  if (existsSync(settingsPath)) {
123
123
  const settingsData = readFileSync(settingsPath, "utf-8");
124
124
  const settings = JSON.parse(settingsData);
125
- const envLevel = (settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
125
+ const envLevel = (settings.KIRO_MEMORY_LOG_LEVEL || settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
126
126
  this.level = LogLevel[envLevel] ?? 1 /* INFO */;
127
127
  } else {
128
128
  this.level = 1 /* INFO */;
@@ -300,9 +300,9 @@ function getDirname() {
300
300
  return dirname(fileURLToPath(import.meta.url));
301
301
  }
302
302
  var _dirname = getDirname();
303
- var DATA_DIR = process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
303
+ var DATA_DIR = process.env.KIRO_MEMORY_DATA_DIR || process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
304
304
  var KIRO_CONFIG_DIR = process.env.KIRO_CONFIG_DIR || join2(homedir2(), ".kiro");
305
- var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "contextkit");
305
+ var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "kiro-memory");
306
306
  var ARCHIVES_DIR = join2(DATA_DIR, "archives");
307
307
  var LOGS_DIR = join2(DATA_DIR, "logs");
308
308
  var TRASH_DIR = join2(DATA_DIR, "trash");
@@ -322,7 +322,7 @@ function ensureDir(dirPath) {
322
322
  var SQLITE_MMAP_SIZE_BYTES = 256 * 1024 * 1024;
323
323
  var SQLITE_CACHE_SIZE_PAGES = 1e4;
324
324
  var dbInstance = null;
325
- var ContextKitDatabase = class {
325
+ var KiroMemoryDatabase = class {
326
326
  db;
327
327
  constructor(dbPath = DB_PATH) {
328
328
  if (dbPath !== ":memory:") {
@@ -634,9 +634,9 @@ async function initializeDatabase() {
634
634
  return await manager.initialize();
635
635
  }
636
636
  export {
637
- ContextKitDatabase,
638
637
  Database,
639
638
  DatabaseManager,
639
+ KiroMemoryDatabase,
640
640
  getDatabase,
641
641
  initializeDatabase
642
642
  };
@@ -106,7 +106,7 @@ var Logger = class {
106
106
  mkdirSync(logsDir, { recursive: true });
107
107
  }
108
108
  const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
109
- this.logFilePath = join(logsDir, `contextkit-${date}.log`);
109
+ this.logFilePath = join(logsDir, `kiro-memory-${date}.log`);
110
110
  } catch (error) {
111
111
  console.error("[LOGGER] Failed to initialize log file:", error);
112
112
  this.logFilePath = null;
@@ -122,7 +122,7 @@ var Logger = class {
122
122
  if (existsSync(settingsPath)) {
123
123
  const settingsData = readFileSync(settingsPath, "utf-8");
124
124
  const settings = JSON.parse(settingsData);
125
- const envLevel = (settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
125
+ const envLevel = (settings.KIRO_MEMORY_LOG_LEVEL || settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
126
126
  this.level = LogLevel[envLevel] ?? 1 /* INFO */;
127
127
  } else {
128
128
  this.level = 1 /* INFO */;
@@ -300,9 +300,9 @@ function getDirname() {
300
300
  return dirname(fileURLToPath(import.meta.url));
301
301
  }
302
302
  var _dirname = getDirname();
303
- var DATA_DIR = process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
303
+ var DATA_DIR = process.env.KIRO_MEMORY_DATA_DIR || process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
304
304
  var KIRO_CONFIG_DIR = process.env.KIRO_CONFIG_DIR || join2(homedir2(), ".kiro");
305
- var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "contextkit");
305
+ var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "kiro-memory");
306
306
  var ARCHIVES_DIR = join2(DATA_DIR, "archives");
307
307
  var LOGS_DIR = join2(DATA_DIR, "logs");
308
308
  var TRASH_DIR = join2(DATA_DIR, "trash");
@@ -322,7 +322,7 @@ function ensureDir(dirPath) {
322
322
  var SQLITE_MMAP_SIZE_BYTES = 256 * 1024 * 1024;
323
323
  var SQLITE_CACHE_SIZE_PAGES = 1e4;
324
324
  var dbInstance = null;
325
- var ContextKitDatabase = class {
325
+ var KiroMemoryDatabase = class {
326
326
  db;
327
327
  constructor(dbPath = DB_PATH) {
328
328
  if (dbPath !== ":memory:") {
@@ -932,8 +932,9 @@ function getProjectStats(db, project) {
932
932
  };
933
933
  }
934
934
  export {
935
- ContextKitDatabase,
935
+ KiroMemoryDatabase as ContextKitDatabase,
936
936
  DatabaseManager,
937
+ KiroMemoryDatabase,
937
938
  completeSession,
938
939
  createObservation,
939
940
  createPrompt,
@@ -40,7 +40,7 @@ var Logger = class {
40
40
  mkdirSync(logsDir, { recursive: true });
41
41
  }
42
42
  const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
43
- this.logFilePath = join(logsDir, `contextkit-${date}.log`);
43
+ this.logFilePath = join(logsDir, `kiro-memory-${date}.log`);
44
44
  } catch (error) {
45
45
  console.error("[LOGGER] Failed to initialize log file:", error);
46
46
  this.logFilePath = null;
@@ -56,7 +56,7 @@ var Logger = class {
56
56
  if (existsSync(settingsPath)) {
57
57
  const settingsData = readFileSync(settingsPath, "utf-8");
58
58
  const settings = JSON.parse(settingsData);
59
- const envLevel = (settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
59
+ const envLevel = (settings.KIRO_MEMORY_LOG_LEVEL || settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
60
60
  this.level = LogLevel[envLevel] ?? 1 /* INFO */;
61
61
  } else {
62
62
  this.level = 1 /* INFO */;
@@ -234,9 +234,9 @@ function getDirname() {
234
234
  return dirname(fileURLToPath(import.meta.url));
235
235
  }
236
236
  var _dirname = getDirname();
237
- var DATA_DIR = process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
237
+ var DATA_DIR = process.env.KIRO_MEMORY_DATA_DIR || process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
238
238
  var KIRO_CONFIG_DIR = process.env.KIRO_CONFIG_DIR || join2(homedir2(), ".kiro");
239
- var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "contextkit");
239
+ var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "kiro-memory");
240
240
  var ARCHIVES_DIR = join2(DATA_DIR, "archives");
241
241
  var LOGS_DIR = join2(DATA_DIR, "logs");
242
242
  var TRASH_DIR = join2(DATA_DIR, "trash");
@@ -33,7 +33,7 @@ var Logger = class {
33
33
  mkdirSync(logsDir, { recursive: true });
34
34
  }
35
35
  const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
36
- this.logFilePath = join(logsDir, `contextkit-${date}.log`);
36
+ this.logFilePath = join(logsDir, `kiro-memory-${date}.log`);
37
37
  } catch (error) {
38
38
  console.error("[LOGGER] Failed to initialize log file:", error);
39
39
  this.logFilePath = null;
@@ -49,7 +49,7 @@ var Logger = class {
49
49
  if (existsSync(settingsPath)) {
50
50
  const settingsData = readFileSync(settingsPath, "utf-8");
51
51
  const settings = JSON.parse(settingsData);
52
- const envLevel = (settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
52
+ const envLevel = (settings.KIRO_MEMORY_LOG_LEVEL || settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
53
53
  this.level = LogLevel[envLevel] ?? 1 /* INFO */;
54
54
  } else {
55
55
  this.level = 1 /* INFO */;
@@ -3,7 +3,10 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>ContextKitMemory Dashboard</title>
6
+ <title>Kiro Memory — Dashboard</title>
7
+
8
+ <!-- Favicon SVG inline -->
9
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0%25' stop-color='%237C5AFF'/%3E%3Cstop offset='100%25' stop-color='%233B82F6'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='32' height='32' rx='8' fill='%230a0b10'/%3E%3Ccircle cx='16' cy='16' r='12' fill='none' stroke='url(%23g)' stroke-width='1.5' opacity='.5'/%3E%3Ccircle cx='16' cy='16' r='6' fill='none' stroke='url(%23g)' stroke-width='1.5' opacity='.9'/%3E%3Ccircle cx='16' cy='16' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='16' cy='4' r='1.5' fill='%237C5AFF'/%3E%3Ccircle cx='26' cy='11' r='1.2' fill='%236366F1' opacity='.7'/%3E%3Ccircle cx='26' cy='21' r='1' fill='%233B82F6' opacity='.5'/%3E%3C/svg%3E">
7
10
 
8
11
  <!-- Fonts: Inter (ui) + JetBrains Mono (code) -->
9
12
  <link rel="preconnect" href="https://fonts.googleapis.com">
@@ -23713,7 +23713,7 @@ function SearchBar() {
23713
23713
 
23714
23714
  // src/ui/viewer/components/Header.tsx
23715
23715
  function Header({ isConnected, resolvedTheme, onThemeToggle }) {
23716
- return /* @__PURE__ */ import_react2.default.createElement("header", { className: "flex items-center gap-4 px-6 h-14 bg-surface-1 border-b border-border z-50" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center gap-3 flex-shrink-0" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: "w-8 h-8 rounded-lg bg-accent-violet flex items-center justify-center" }, /* @__PURE__ */ import_react2.default.createElement("svg", { className: "w-[18px] h-[18px] text-white", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 2a4 4 0 0 1 4 4c0 1.95-1.4 3.58-3.25 3.93a1 1 0 0 0-.75.97V13" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 2a4 4 0 0 0-4 4c0 1.95 1.4 3.58 3.25 3.93a1 1 0 0 1 .75.97V13" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M9 18h6" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M10 22h4" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 13v5" }))), /* @__PURE__ */ import_react2.default.createElement("div", null, /* @__PURE__ */ import_react2.default.createElement("h1", { className: "text-[15px] font-bold text-zinc-100 leading-none" }, "ContextKit"), /* @__PURE__ */ import_react2.default.createElement("span", { className: "text-[11px] text-zinc-500 mt-0.5 block" }, "Memory Dashboard"))), /* @__PURE__ */ import_react2.default.createElement("div", { className: "hidden md:block w-px h-6 bg-border" }), /* @__PURE__ */ import_react2.default.createElement(SearchBar, null), /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex-1" }), /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 rounded-lg bg-surface-2 border border-border" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: `w-2 h-2 rounded-full ${isConnected ? "bg-accent-green animate-pulse-dot" : "bg-zinc-500"}` }), /* @__PURE__ */ import_react2.default.createElement("span", { className: `text-xs font-medium ${isConnected ? "text-accent-green" : "text-zinc-500"}` }, isConnected ? "Live" : "Offline")), /* @__PURE__ */ import_react2.default.createElement(
23716
+ return /* @__PURE__ */ import_react2.default.createElement("header", { className: "flex items-center gap-4 px-6 h-14 bg-surface-1 border-b border-border z-50" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center gap-3 flex-shrink-0" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: "w-8 h-8 rounded-lg bg-accent-violet flex items-center justify-center" }, /* @__PURE__ */ import_react2.default.createElement("svg", { className: "w-[18px] h-[18px] text-white", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 2a4 4 0 0 1 4 4c0 1.95-1.4 3.58-3.25 3.93a1 1 0 0 0-.75.97V13" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 2a4 4 0 0 0-4 4c0 1.95 1.4 3.58 3.25 3.93a1 1 0 0 1 .75.97V13" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M9 18h6" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M10 22h4" }), /* @__PURE__ */ import_react2.default.createElement("path", { d: "M12 13v5" }))), /* @__PURE__ */ import_react2.default.createElement("div", null, /* @__PURE__ */ import_react2.default.createElement("h1", { className: "text-[15px] font-bold text-zinc-100 leading-none" }, "Kiro Memory"), /* @__PURE__ */ import_react2.default.createElement("span", { className: "text-[11px] text-zinc-500 mt-0.5 block" }, "Memory Dashboard"))), /* @__PURE__ */ import_react2.default.createElement("div", { className: "hidden md:block w-px h-6 bg-border" }), /* @__PURE__ */ import_react2.default.createElement(SearchBar, null), /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex-1" }), /* @__PURE__ */ import_react2.default.createElement("div", { className: "flex items-center gap-2 px-3 py-1.5 rounded-lg bg-surface-2 border border-border" }, /* @__PURE__ */ import_react2.default.createElement("div", { className: `w-2 h-2 rounded-full ${isConnected ? "bg-accent-green animate-pulse-dot" : "bg-zinc-500"}` }), /* @__PURE__ */ import_react2.default.createElement("span", { className: `text-xs font-medium ${isConnected ? "text-accent-green" : "text-zinc-500"}` }, isConnected ? "Live" : "Offline")), /* @__PURE__ */ import_react2.default.createElement(
23717
23717
  "button",
23718
23718
  {
23719
23719
  onClick: onThemeToggle,
@@ -23847,7 +23847,7 @@ function Sidebar({
23847
23847
  { label: "Summaries", value: stats.summaries, color: "text-accent-cyan" },
23848
23848
  { label: "Prompts", value: stats.prompts, color: "text-accent-amber" },
23849
23849
  { label: "Projects", value: projects.length, color: "text-accent-green" }
23850
- ].map((item) => /* @__PURE__ */ import_react3.default.createElement("div", { key: item.label, className: "rounded-lg bg-surface-2 border border-border px-3 py-3 text-center" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: `text-xl font-bold tabular-nums ${item.color}` }, item.value), /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-[10px] uppercase tracking-wider text-zinc-600 mt-1" }, item.label))))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "mt-auto px-4 py-4" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-[10px] text-zinc-700 font-mono text-center" }, "ContextKit v1.4.0")));
23850
+ ].map((item) => /* @__PURE__ */ import_react3.default.createElement("div", { key: item.label, className: "rounded-lg bg-surface-2 border border-border px-3 py-3 text-center" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: `text-xl font-bold tabular-nums ${item.color}` }, item.value), /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-[10px] uppercase tracking-wider text-zinc-600 mt-1" }, item.label))))), /* @__PURE__ */ import_react3.default.createElement("div", { className: "mt-auto px-4 py-4" }, /* @__PURE__ */ import_react3.default.createElement("div", { className: "text-[10px] text-zinc-700 font-mono text-center" }, "Kiro Memory v1.5.0")));
23851
23851
  }
23852
23852
 
23853
23853
  // src/ui/viewer/components/Feed.tsx
@@ -387,7 +387,7 @@ var Logger = class {
387
387
  mkdirSync(logsDir, { recursive: true });
388
388
  }
389
389
  const date = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
390
- this.logFilePath = join(logsDir, `contextkit-${date}.log`);
390
+ this.logFilePath = join(logsDir, `kiro-memory-${date}.log`);
391
391
  } catch (error) {
392
392
  console.error("[LOGGER] Failed to initialize log file:", error);
393
393
  this.logFilePath = null;
@@ -403,7 +403,7 @@ var Logger = class {
403
403
  if (existsSync(settingsPath)) {
404
404
  const settingsData = readFileSync(settingsPath, "utf-8");
405
405
  const settings = JSON.parse(settingsData);
406
- const envLevel = (settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
406
+ const envLevel = (settings.KIRO_MEMORY_LOG_LEVEL || settings.CONTEXTKIT_LOG_LEVEL || "INFO").toUpperCase();
407
407
  this.level = LogLevel[envLevel] ?? 1 /* INFO */;
408
408
  } else {
409
409
  this.level = 1 /* INFO */;
@@ -581,9 +581,9 @@ function getDirname() {
581
581
  return dirname(fileURLToPath(import.meta.url));
582
582
  }
583
583
  var _dirname = getDirname();
584
- var DATA_DIR = process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
584
+ var DATA_DIR = process.env.KIRO_MEMORY_DATA_DIR || process.env.CONTEXTKIT_DATA_DIR || join2(homedir2(), ".contextkit");
585
585
  var KIRO_CONFIG_DIR = process.env.KIRO_CONFIG_DIR || join2(homedir2(), ".kiro");
586
- var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "contextkit");
586
+ var PLUGIN_ROOT = join2(KIRO_CONFIG_DIR, "plugins", "kiro-memory");
587
587
  var ARCHIVES_DIR = join2(DATA_DIR, "archives");
588
588
  var LOGS_DIR = join2(DATA_DIR, "logs");
589
589
  var TRASH_DIR = join2(DATA_DIR, "trash");
@@ -602,7 +602,7 @@ function ensureDir(dirPath) {
602
602
  // src/services/sqlite/Database.ts
603
603
  var SQLITE_MMAP_SIZE_BYTES = 256 * 1024 * 1024;
604
604
  var SQLITE_CACHE_SIZE_PAGES = 1e4;
605
- var ContextKitDatabase = class {
605
+ var KiroMemoryDatabase = class {
606
606
  db;
607
607
  constructor(dbPath = DB_PATH) {
608
608
  if (dbPath !== ":memory:") {
@@ -798,13 +798,13 @@ var MigrationRunner = class {
798
798
 
799
799
  // src/services/worker-service.ts
800
800
  var __worker_dirname = dirname2(fileURLToPath2(import.meta.url));
801
- var PORT = process.env.CONTEXTKIT_WORKER_PORT || 3001;
802
- var HOST = process.env.CONTEXTKIT_WORKER_HOST || "127.0.0.1";
801
+ var PORT = process.env.KIRO_MEMORY_WORKER_PORT || process.env.CONTEXTKIT_WORKER_PORT || 3001;
802
+ var HOST = process.env.KIRO_MEMORY_WORKER_HOST || process.env.CONTEXTKIT_WORKER_HOST || "127.0.0.1";
803
803
  var PID_FILE = join3(DATA_DIR, "worker.pid");
804
804
  if (!existsSync3(DATA_DIR)) {
805
805
  mkdirSync3(DATA_DIR, { recursive: true });
806
806
  }
807
- var db = new ContextKitDatabase();
807
+ var db = new KiroMemoryDatabase();
808
808
  logger.info("WORKER", "Database initialized");
809
809
  var app = express();
810
810
  app.use(express.json());