kiro-memory 1.0.4 → 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.
- package/README.md +0 -1
- package/package.json +1 -1
- package/plugin/dist/cli/contextkit.js +0 -1
- package/plugin/dist/hooks/agentSpawn.js +41 -1
- package/plugin/dist/viewer.html +509 -122
- package/plugin/dist/viewer.js +306 -143
- package/plugin/dist/worker-service.js +80 -6
|
@@ -114,9 +114,9 @@ var require_bindings = __commonJS({
|
|
|
114
114
|
"node_modules/bindings/bindings.js"(exports, module) {
|
|
115
115
|
var fs = __require("fs");
|
|
116
116
|
var path = __require("path");
|
|
117
|
-
var
|
|
117
|
+
var fileURLToPath3 = require_file_uri_to_path();
|
|
118
118
|
var join4 = path.join;
|
|
119
|
-
var
|
|
119
|
+
var dirname3 = path.dirname;
|
|
120
120
|
var exists = fs.accessSync && function(path2) {
|
|
121
121
|
try {
|
|
122
122
|
fs.accessSync(path2);
|
|
@@ -226,12 +226,12 @@ var require_bindings = __commonJS({
|
|
|
226
226
|
Error.stackTraceLimit = origSTL;
|
|
227
227
|
var fileSchema = "file://";
|
|
228
228
|
if (fileName.indexOf(fileSchema) === 0) {
|
|
229
|
-
fileName =
|
|
229
|
+
fileName = fileURLToPath3(fileName);
|
|
230
230
|
}
|
|
231
231
|
return fileName;
|
|
232
232
|
};
|
|
233
233
|
exports.getRoot = function getRoot(file) {
|
|
234
|
-
var dir =
|
|
234
|
+
var dir = dirname3(file), prev;
|
|
235
235
|
while (true) {
|
|
236
236
|
if (dir === ".") {
|
|
237
237
|
dir = process.cwd();
|
|
@@ -1067,8 +1067,9 @@ var init_Search = __esm({
|
|
|
1067
1067
|
// src/services/worker-service.ts
|
|
1068
1068
|
import express from "express";
|
|
1069
1069
|
import cors from "cors";
|
|
1070
|
-
import { join as join3 } from "path";
|
|
1070
|
+
import { join as join3, dirname as dirname2 } from "path";
|
|
1071
1071
|
import { existsSync as existsSync3, mkdirSync as mkdirSync3, writeFileSync, unlinkSync } from "fs";
|
|
1072
|
+
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
1072
1073
|
|
|
1073
1074
|
// src/shims/bun-sqlite.ts
|
|
1074
1075
|
var import_better_sqlite3 = __toESM(require_lib());
|
|
@@ -1571,6 +1572,7 @@ var MigrationRunner = class {
|
|
|
1571
1572
|
};
|
|
1572
1573
|
|
|
1573
1574
|
// src/services/worker-service.ts
|
|
1575
|
+
var __worker_dirname = dirname2(fileURLToPath2(import.meta.url));
|
|
1574
1576
|
var PORT = process.env.CONTEXTKIT_WORKER_PORT || 3001;
|
|
1575
1577
|
var HOST = process.env.CONTEXTKIT_WORKER_HOST || "127.0.0.1";
|
|
1576
1578
|
var PID_FILE = join3(DATA_DIR, "worker.pid");
|
|
@@ -1756,8 +1758,80 @@ app.get("/api/stats/:project", (req, res) => {
|
|
|
1756
1758
|
res.status(500).json({ error: "Stats failed" });
|
|
1757
1759
|
}
|
|
1758
1760
|
});
|
|
1761
|
+
app.get("/api/observations", (req, res) => {
|
|
1762
|
+
const { offset, limit, project } = req.query;
|
|
1763
|
+
const _offset = offset ? parseInt(offset, 10) : 0;
|
|
1764
|
+
const _limit = limit ? parseInt(limit, 10) : 50;
|
|
1765
|
+
try {
|
|
1766
|
+
const sql = project ? "SELECT * FROM observations WHERE project = ? ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?" : "SELECT * FROM observations ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?";
|
|
1767
|
+
const stmt = db.db.query(sql);
|
|
1768
|
+
const rows = project ? stmt.all(project, _limit, _offset) : stmt.all(_limit, _offset);
|
|
1769
|
+
res.json(rows);
|
|
1770
|
+
} catch (error) {
|
|
1771
|
+
logger.error("WORKER", "Lista osservazioni fallita", {}, error);
|
|
1772
|
+
res.status(500).json({ error: "Failed to list observations" });
|
|
1773
|
+
}
|
|
1774
|
+
});
|
|
1775
|
+
app.get("/api/summaries", (req, res) => {
|
|
1776
|
+
const { offset, limit, project } = req.query;
|
|
1777
|
+
const _offset = offset ? parseInt(offset, 10) : 0;
|
|
1778
|
+
const _limit = limit ? parseInt(limit, 10) : 20;
|
|
1779
|
+
try {
|
|
1780
|
+
const sql = project ? "SELECT * FROM summaries WHERE project = ? ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?" : "SELECT * FROM summaries ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?";
|
|
1781
|
+
const stmt = db.db.query(sql);
|
|
1782
|
+
const rows = project ? stmt.all(project, _limit, _offset) : stmt.all(_limit, _offset);
|
|
1783
|
+
res.json(rows);
|
|
1784
|
+
} catch (error) {
|
|
1785
|
+
logger.error("WORKER", "Lista summary fallita", {}, error);
|
|
1786
|
+
res.status(500).json({ error: "Failed to list summaries" });
|
|
1787
|
+
}
|
|
1788
|
+
});
|
|
1789
|
+
app.get("/api/prompts", (req, res) => {
|
|
1790
|
+
const { offset, limit, project } = req.query;
|
|
1791
|
+
const _offset = offset ? parseInt(offset, 10) : 0;
|
|
1792
|
+
const _limit = limit ? parseInt(limit, 10) : 20;
|
|
1793
|
+
try {
|
|
1794
|
+
const sql = project ? "SELECT * FROM prompts WHERE project = ? ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?" : "SELECT * FROM prompts ORDER BY created_at_epoch DESC LIMIT ? OFFSET ?";
|
|
1795
|
+
const stmt = db.db.query(sql);
|
|
1796
|
+
const rows = project ? stmt.all(project, _limit, _offset) : stmt.all(_limit, _offset);
|
|
1797
|
+
res.json(rows);
|
|
1798
|
+
} catch (error) {
|
|
1799
|
+
logger.error("WORKER", "Lista prompt fallita", {}, error);
|
|
1800
|
+
res.status(500).json({ error: "Failed to list prompts" });
|
|
1801
|
+
}
|
|
1802
|
+
});
|
|
1803
|
+
app.get("/api/projects", (_req, res) => {
|
|
1804
|
+
try {
|
|
1805
|
+
const stmt = db.db.query(
|
|
1806
|
+
`SELECT DISTINCT project FROM (
|
|
1807
|
+
SELECT project FROM observations
|
|
1808
|
+
UNION
|
|
1809
|
+
SELECT project FROM summaries
|
|
1810
|
+
UNION
|
|
1811
|
+
SELECT project FROM prompts
|
|
1812
|
+
) ORDER BY project ASC`
|
|
1813
|
+
);
|
|
1814
|
+
const rows = stmt.all();
|
|
1815
|
+
res.json(rows.map((r) => r.project));
|
|
1816
|
+
} catch (error) {
|
|
1817
|
+
logger.error("WORKER", "Lista progetti fallita", {}, error);
|
|
1818
|
+
res.status(500).json({ error: "Failed to list projects" });
|
|
1819
|
+
}
|
|
1820
|
+
});
|
|
1821
|
+
app.use(express.static(__worker_dirname, {
|
|
1822
|
+
index: false,
|
|
1823
|
+
maxAge: "1h"
|
|
1824
|
+
}));
|
|
1825
|
+
app.get("/", (_req, res) => {
|
|
1826
|
+
const viewerPath = join3(__worker_dirname, "viewer.html");
|
|
1827
|
+
if (existsSync3(viewerPath)) {
|
|
1828
|
+
res.sendFile(viewerPath);
|
|
1829
|
+
} else {
|
|
1830
|
+
res.status(404).json({ error: "Viewer not found. Run npm run build first." });
|
|
1831
|
+
}
|
|
1832
|
+
});
|
|
1759
1833
|
var server = app.listen(Number(PORT), HOST, () => {
|
|
1760
|
-
logger.info("WORKER", `
|
|
1834
|
+
logger.info("WORKER", `Kiro Memory worker started on http://${HOST}:${PORT}`);
|
|
1761
1835
|
writeFileSync(PID_FILE, String(process.pid), "utf-8");
|
|
1762
1836
|
});
|
|
1763
1837
|
function shutdown(signal) {
|