tokenos 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 +571 -0
- package/USAGE.md +451 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/db/connection.d.ts +3 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +78 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +4 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/memory.d.ts +6 -0
- package/dist/db/memory.d.ts.map +1 -0
- package/dist/db/memory.js +62 -0
- package/dist/db/memory.js.map +1 -0
- package/dist/db/queries.d.ts +29 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +215 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/embeddings/client.d.ts +16 -0
- package/dist/embeddings/client.d.ts.map +1 -0
- package/dist/embeddings/client.js +70 -0
- package/dist/embeddings/client.js.map +1 -0
- package/dist/embeddings/index.d.ts +11 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +37 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/similarity.d.ts +7 -0
- package/dist/embeddings/similarity.d.ts.map +1 -0
- package/dist/embeddings/similarity.js +31 -0
- package/dist/embeddings/similarity.js.map +1 -0
- package/dist/indexer/cli.d.ts +8 -0
- package/dist/indexer/cli.d.ts.map +1 -0
- package/dist/indexer/cli.js +21 -0
- package/dist/indexer/cli.js.map +1 -0
- package/dist/indexer/ignore.d.ts +4 -0
- package/dist/indexer/ignore.d.ts.map +1 -0
- package/dist/indexer/ignore.js +30 -0
- package/dist/indexer/ignore.js.map +1 -0
- package/dist/indexer/index.d.ts +5 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +4 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/indexer.d.ts +13 -0
- package/dist/indexer/indexer.d.ts.map +1 -0
- package/dist/indexer/indexer.js +125 -0
- package/dist/indexer/indexer.js.map +1 -0
- package/dist/indexer/parser.d.ts +10 -0
- package/dist/indexer/parser.d.ts.map +1 -0
- package/dist/indexer/parser.js +444 -0
- package/dist/indexer/parser.js.map +1 -0
- package/dist/indexer/watcher.d.ts +7 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +64 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +92 -0
- package/dist/main.js.map +1 -0
- package/dist/reset.d.ts +6 -0
- package/dist/reset.d.ts.map +1 -0
- package/dist/reset.js +23 -0
- package/dist/reset.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/server.d.ts +4 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +558 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/visualize.d.ts +2 -0
- package/dist/server/visualize.d.ts.map +1 -0
- package/dist/server/visualize.js +299 -0
- package/dist/server/visualize.js.map +1 -0
- package/dist/test-phase1.d.ts +13 -0
- package/dist/test-phase1.d.ts.map +1 -0
- package/dist/test-phase1.js +90 -0
- package/dist/test-phase1.js.map +1 -0
- package/dist/test-phase2.d.ts +13 -0
- package/dist/test-phase2.d.ts.map +1 -0
- package/dist/test-phase2.js +110 -0
- package/dist/test-phase2.js.map +1 -0
- package/dist/test-phase3.d.ts +12 -0
- package/dist/test-phase3.d.ts.map +1 -0
- package/dist/test-phase3.js +85 -0
- package/dist/test-phase3.js.map +1 -0
- package/dist/types.d.ts +73 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cache.d.ts +12 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +45 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +52 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/scoring.d.ts +15 -0
- package/dist/utils/scoring.d.ts.map +1 -0
- package/dist/utils/scoring.js +17 -0
- package/dist/utils/scoring.js.map +1 -0
- package/dist/verify-parser.d.ts +6 -0
- package/dist/verify-parser.d.ts.map +1 -0
- package/dist/verify-parser.js +105 -0
- package/dist/verify-parser.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import chokidar from "chokidar";
|
|
2
|
+
import { indexFile, removeFile } from "./indexer.js";
|
|
3
|
+
import { logger } from "../utils/logger.js";
|
|
4
|
+
import { createIgnorer, isIgnored } from "./ignore.js";
|
|
5
|
+
export function startWatcher(watchPath, options = {}) {
|
|
6
|
+
const ig = createIgnorer(watchPath);
|
|
7
|
+
const watcher = chokidar.watch(watchPath, {
|
|
8
|
+
ignored: (testPath) => {
|
|
9
|
+
// Don't ignore the root watch directory
|
|
10
|
+
if (testPath === watchPath)
|
|
11
|
+
return false;
|
|
12
|
+
return isIgnored(ig, watchPath, testPath);
|
|
13
|
+
},
|
|
14
|
+
persistent: true,
|
|
15
|
+
ignoreInitial: true, // initial index is done by indexDirectory() — only watch for changes
|
|
16
|
+
awaitWriteFinish: { stabilityThreshold: 150, pollInterval: 50 },
|
|
17
|
+
});
|
|
18
|
+
watcher
|
|
19
|
+
.on("add", async (filePath) => {
|
|
20
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".tsx"))
|
|
21
|
+
return;
|
|
22
|
+
try {
|
|
23
|
+
const result = await indexFile(filePath);
|
|
24
|
+
if (!result.skipped) {
|
|
25
|
+
logger.info("watcher", `added: ${filePath} (+${result.nodes} nodes, +${result.edges} edges)`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
logger.error("watcher", `error indexing ${filePath}:`, err);
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.on("change", async (filePath) => {
|
|
33
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".tsx"))
|
|
34
|
+
return;
|
|
35
|
+
try {
|
|
36
|
+
const result = await indexFile(filePath);
|
|
37
|
+
if (result.skipped) {
|
|
38
|
+
logger.info("watcher", `unchanged: ${filePath} (skipped)`);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
logger.success("watcher", `updated: ${filePath} (+${result.nodes} nodes)`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
logger.error("watcher", `error re-indexing ${filePath}:`, err);
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
.on("unlink", (filePath) => {
|
|
49
|
+
if (!filePath.endsWith(".ts") && !filePath.endsWith(".tsx"))
|
|
50
|
+
return;
|
|
51
|
+
removeFile(filePath);
|
|
52
|
+
logger.info("watcher", `removed: ${filePath}`);
|
|
53
|
+
})
|
|
54
|
+
.on("ready", () => {
|
|
55
|
+
logger.success("watcher", `ready — watching ${watchPath}`);
|
|
56
|
+
options.onReady?.();
|
|
57
|
+
})
|
|
58
|
+
.on("error", (err) => {
|
|
59
|
+
logger.error("watcher", "error:", err);
|
|
60
|
+
options.onError?.(err);
|
|
61
|
+
});
|
|
62
|
+
return watcher;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { config } from "./config.js";
|
|
4
|
+
import { startServer } from "./server/index.js";
|
|
5
|
+
import { startWatcher } from "./indexer/index.js";
|
|
6
|
+
import { indexDirectory } from "./indexer/indexer.js";
|
|
7
|
+
import { computeAllImportance } from "./utils/scoring.js";
|
|
8
|
+
// @ts-ignore - Valid Node16 module resolution, IDE false positive
|
|
9
|
+
import { backfillEmbeddings, checkOllama } from "./embeddings/index.js";
|
|
10
|
+
// @ts-ignore - Valid Node16 module resolution, IDE false positive
|
|
11
|
+
import { startVisualizationServer } from "./server/visualize.js";
|
|
12
|
+
import { logger } from "./utils/logger.js";
|
|
13
|
+
// ───── Validate ───────────────────────────────────────────────────────────────
|
|
14
|
+
if (!existsSync(config.watchPath)) {
|
|
15
|
+
logger.error("tokenos", `watch path does not exist: ${config.watchPath}`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
process.on("uncaughtException", (err) => {
|
|
19
|
+
logger.error("tokenos", "uncaught error:", err);
|
|
20
|
+
});
|
|
21
|
+
process.on("unhandledRejection", (reason) => {
|
|
22
|
+
logger.error("tokenos", "unhandled rejection:", reason);
|
|
23
|
+
});
|
|
24
|
+
// ───── Bootstrap ──────────────────────────────────────────────────────────────
|
|
25
|
+
async function main() {
|
|
26
|
+
const bootStart = Date.now();
|
|
27
|
+
logger.info("tokenos", `starting — watching: ${config.watchPath}`);
|
|
28
|
+
logger.info("tokenos", `database: ${config.dbPath}`);
|
|
29
|
+
logger.info("tokenos", `embedding model: ${config.ollama.model}`);
|
|
30
|
+
// Optionally start visualization UI
|
|
31
|
+
if (config.ui.enabled) {
|
|
32
|
+
try {
|
|
33
|
+
await startVisualizationServer();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
logger.error("tokenos", "visualization UI failed to start");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Initial full index of the watched directory
|
|
40
|
+
logger.info("tokenos", "running initial index...");
|
|
41
|
+
const totals = await indexDirectory(config.watchPath);
|
|
42
|
+
logger.success("tokenos", `initial index complete: ${totals.files} files, ${totals.nodes} nodes, ${totals.edges} edges`);
|
|
43
|
+
// Back-fill embeddings for newly indexed nodes (graceful if Ollama is offline)
|
|
44
|
+
const ollamaOk = await checkOllama();
|
|
45
|
+
if (ollamaOk) {
|
|
46
|
+
try {
|
|
47
|
+
logger.info("tokenos", "backfilling embeddings...");
|
|
48
|
+
const { updated, skipped } = await backfillEmbeddings();
|
|
49
|
+
logger.success("tokenos", `embeddings ready: ${updated} updated, ${skipped} skipped`);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
logger.warn("tokenos", "embeddings skipped (Ollama unavailable)");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
logger.warn("tokenos", "embeddings skipped (Ollama offline)");
|
|
57
|
+
}
|
|
58
|
+
// Compute importance scores for all nodes
|
|
59
|
+
const { updated: scored } = computeAllImportance();
|
|
60
|
+
logger.success("tokenos", `importance scoring complete: ${scored} nodes scored`);
|
|
61
|
+
// Start chokidar watcher for incremental updates (ignoreInitial=true — initial index is done)
|
|
62
|
+
const watcher = startWatcher(config.watchPath, {
|
|
63
|
+
onReady: () => logger.success("watcher", "ready"),
|
|
64
|
+
});
|
|
65
|
+
// Start MCP stdio server (blocks until client disconnects)
|
|
66
|
+
await startServer();
|
|
67
|
+
logger.viteLike({
|
|
68
|
+
version: "1.0.0",
|
|
69
|
+
timeMs: Date.now() - bootStart,
|
|
70
|
+
localUrl: config.ui.enabled ? `http://localhost:${config.ui.port}/graph` : undefined,
|
|
71
|
+
ollamaOk,
|
|
72
|
+
sqliteOk: true,
|
|
73
|
+
cwd: config.watchPath,
|
|
74
|
+
model: config.ollama.model,
|
|
75
|
+
});
|
|
76
|
+
// Graceful shutdown
|
|
77
|
+
process.on("SIGINT", async () => {
|
|
78
|
+
logger.info("tokenos", "shutting down...");
|
|
79
|
+
await watcher.close();
|
|
80
|
+
process.exit(0);
|
|
81
|
+
});
|
|
82
|
+
process.on("SIGTERM", async () => {
|
|
83
|
+
logger.info("tokenos", "shutting down...");
|
|
84
|
+
await watcher.close();
|
|
85
|
+
process.exit(0);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
main().catch((err) => {
|
|
89
|
+
logger.error("tokenos", "fatal:", err);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/reset.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../src/reset.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/dist/reset.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reset script — deletes the project database so the next `npm run dev` re-indexes from scratch.
|
|
3
|
+
* Usage: npm run reset
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, unlinkSync } from "fs";
|
|
6
|
+
import { config } from "./config.js";
|
|
7
|
+
import { logger } from "./utils/logger.js";
|
|
8
|
+
const dbFiles = [config.dbPath, `${config.dbPath}-shm`, `${config.dbPath}-wal`];
|
|
9
|
+
let deleted = 0;
|
|
10
|
+
for (const file of dbFiles) {
|
|
11
|
+
if (existsSync(file)) {
|
|
12
|
+
unlinkSync(file);
|
|
13
|
+
deleted++;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (deleted > 0) {
|
|
17
|
+
logger.success("reset", `deleted ${deleted} database file(s) for: ${config.watchPath}`);
|
|
18
|
+
logger.info("reset", `run \`npm run dev\` to re-index from scratch`);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
logger.info("reset", `no database found for: ${config.watchPath}`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=reset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../src/reset.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAU,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;AAEhF,IAAI,OAAO,GAAG,CAAC,CAAC;AAEhB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;IAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,OAAO,0BAA0B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACxF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,8CAA8C,CAAC,CAAC;AACvE,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,0BAA0B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmHpE,wBAAgB,YAAY,IAAI,SAAS,CAofxC;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjD"}
|