skilld 0.6.2 → 0.7.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 +40 -13
- package/dist/_chunks/chunk.mjs +13 -0
- package/dist/_chunks/detect-imports.mjs +2 -12
- package/dist/_chunks/detect-imports.mjs.map +1 -1
- package/dist/_chunks/embedding-cache.mjs +50 -0
- package/dist/_chunks/embedding-cache.mjs.map +1 -0
- package/dist/_chunks/npm.mjs +0 -7
- package/dist/_chunks/npm.mjs.map +1 -1
- package/dist/_chunks/pool2.mjs +1 -1
- package/dist/_chunks/storage.mjs +0 -21
- package/dist/_chunks/storage.mjs.map +1 -1
- package/dist/_chunks/utils.d.mts.map +1 -1
- package/dist/_chunks/version.d.mts +1 -1
- package/dist/_chunks/version.d.mts.map +1 -1
- package/dist/agent/index.mjs +2 -1
- package/dist/cli.mjs +3296 -3138
- package/dist/cli.mjs.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/retriv/index.d.mts.map +1 -1
- package/dist/retriv/index.mjs +5 -1
- package/dist/retriv/index.mjs.map +1 -1
- package/dist/retriv/worker.d.mts.map +1 -1
- package/dist/retriv/worker.mjs +5 -1
- package/dist/retriv/worker.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { n as __require } from "./chunk.mjs";
|
|
2
|
+
import { t as CACHE_DIR } from "./config.mjs";
|
|
3
|
+
import { join } from "pathe";
|
|
4
|
+
import { rmSync } from "node:fs";
|
|
5
|
+
import { cachedEmbeddings } from "retriv/embeddings/cached";
|
|
6
|
+
const EMBEDDINGS_DB_PATH = join(CACHE_DIR, "embeddings.db");
|
|
7
|
+
function openDb() {
|
|
8
|
+
const { DatabaseSync: DB } = __require("node:sqlite");
|
|
9
|
+
const db = new DB(EMBEDDINGS_DB_PATH);
|
|
10
|
+
db.exec("PRAGMA journal_mode=WAL");
|
|
11
|
+
db.exec("PRAGMA busy_timeout=5000");
|
|
12
|
+
db.exec(`CREATE TABLE IF NOT EXISTS embeddings (text_hash TEXT PRIMARY KEY, embedding BLOB NOT NULL)`);
|
|
13
|
+
db.exec(`CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)`);
|
|
14
|
+
return db;
|
|
15
|
+
}
|
|
16
|
+
function createSqliteStorage(db) {
|
|
17
|
+
const getStmt = db.prepare("SELECT embedding FROM embeddings WHERE text_hash = ?");
|
|
18
|
+
const setStmt = db.prepare("INSERT OR IGNORE INTO embeddings (text_hash, embedding) VALUES (?, ?)");
|
|
19
|
+
return {
|
|
20
|
+
get: (hash) => {
|
|
21
|
+
const row = getStmt.get(hash);
|
|
22
|
+
if (!row) return null;
|
|
23
|
+
return new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4);
|
|
24
|
+
},
|
|
25
|
+
set: (hash, embedding) => {
|
|
26
|
+
const arr = embedding instanceof Float32Array ? embedding : new Float32Array(embedding);
|
|
27
|
+
setStmt.run(hash, Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength));
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function cachedEmbeddings$1(config) {
|
|
32
|
+
const db = openDb();
|
|
33
|
+
const storage = createSqliteStorage(db);
|
|
34
|
+
const originalResolve = config.resolve;
|
|
35
|
+
return cachedEmbeddings({ async resolve() {
|
|
36
|
+
const resolved = await originalResolve();
|
|
37
|
+
const getMetaStmt = db.prepare("SELECT value FROM meta WHERE key = ?");
|
|
38
|
+
const setMetaStmt = db.prepare("INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)");
|
|
39
|
+
const storedDims = getMetaStmt.get("dimensions");
|
|
40
|
+
if (storedDims && Number(storedDims.value) !== resolved.dimensions) db.exec("DELETE FROM embeddings");
|
|
41
|
+
setMetaStmt.run("dimensions", String(resolved.dimensions));
|
|
42
|
+
return resolved;
|
|
43
|
+
} }, { storage });
|
|
44
|
+
}
|
|
45
|
+
function clearEmbeddingCache() {
|
|
46
|
+
rmSync(EMBEDDINGS_DB_PATH, { force: true });
|
|
47
|
+
}
|
|
48
|
+
export { clearEmbeddingCache as n, cachedEmbeddings$1 as t };
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=embedding-cache.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-cache.mjs","names":["cachedEmbeddings","retrivCached"],"sources":["../../src/retriv/embedding-cache.ts"],"sourcesContent":["import type { DatabaseSync } from 'node:sqlite'\nimport type { Embedding } from 'retriv'\nimport { rmSync } from 'node:fs'\nimport { join } from 'pathe'\nimport { cachedEmbeddings as retrivCached } from 'retriv/embeddings/cached'\nimport { CACHE_DIR } from '../cache'\n\ninterface EmbeddingConfig {\n resolve: () => Promise<{ embedder: (texts: string[]) => Promise<Embedding[]>, dimensions: number, maxTokens?: number }>\n}\n\nconst EMBEDDINGS_DB_PATH = join(CACHE_DIR, 'embeddings.db')\n\nfunction openDb(): DatabaseSync {\n // eslint-disable-next-line ts/no-require-imports\n const { DatabaseSync: DB } = require('node:sqlite') as typeof import('node:sqlite')\n const db = new DB(EMBEDDINGS_DB_PATH)\n db.exec('PRAGMA journal_mode=WAL')\n db.exec('PRAGMA busy_timeout=5000')\n db.exec(`CREATE TABLE IF NOT EXISTS embeddings (text_hash TEXT PRIMARY KEY, embedding BLOB NOT NULL)`)\n db.exec(`CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT NOT NULL)`)\n return db\n}\n\nfunction createSqliteStorage(db: DatabaseSync) {\n const getStmt = db.prepare('SELECT embedding FROM embeddings WHERE text_hash = ?')\n const setStmt = db.prepare('INSERT OR IGNORE INTO embeddings (text_hash, embedding) VALUES (?, ?)')\n\n return {\n get: (hash: string): Embedding | null => {\n const row = getStmt.get(hash) as { embedding: Buffer } | undefined\n if (!row)\n return null\n return new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4)\n },\n set: (hash: string, embedding: Embedding): void => {\n const arr = embedding instanceof Float32Array ? embedding : new Float32Array(embedding)\n setStmt.run(hash, Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength))\n },\n }\n}\n\nexport function cachedEmbeddings(config: EmbeddingConfig): EmbeddingConfig {\n const db = openDb()\n const storage = createSqliteStorage(db)\n\n // Validate dimensions on first resolve\n const originalResolve = config.resolve\n const validatedConfig: EmbeddingConfig = {\n async resolve() {\n const resolved = await originalResolve()\n const getMetaStmt = db.prepare('SELECT value FROM meta WHERE key = ?')\n const setMetaStmt = db.prepare('INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)')\n\n const storedDims = getMetaStmt.get('dimensions') as { value: string } | undefined\n if (storedDims && Number(storedDims.value) !== resolved.dimensions) {\n db.exec('DELETE FROM embeddings')\n }\n setMetaStmt.run('dimensions', String(resolved.dimensions))\n\n return resolved\n },\n }\n\n return retrivCached(validatedConfig, { storage })\n}\n\nexport function clearEmbeddingCache(): void {\n rmSync(EMBEDDINGS_DB_PATH, { force: true })\n}\n"],"mappings":";;;;;AAWA,MAAM,qBAAqB,KAAK,WAAW,gBAAgB;AAE3D,SAAS,SAAuB;CAE9B,MAAM,EAAE,cAAc,OAAA,UAAe,cAAc;CACnD,MAAM,KAAK,IAAI,GAAG,mBAAmB;AACrC,IAAG,KAAK,0BAA0B;AAClC,IAAG,KAAK,2BAA2B;AACnC,IAAG,KAAK,8FAA8F;AACtG,IAAG,KAAK,8EAA8E;AACtF,QAAO;;AAGT,SAAS,oBAAoB,IAAkB;CAC7C,MAAM,UAAU,GAAG,QAAQ,uDAAuD;CAClF,MAAM,UAAU,GAAG,QAAQ,wEAAwE;AAEnG,QAAO;EACL,MAAM,SAAmC;GACvC,MAAM,MAAM,QAAQ,IAAI,KAAK;AAC7B,OAAI,CAAC,IACH,QAAO;AACT,UAAO,IAAI,aAAa,IAAI,UAAU,QAAQ,IAAI,UAAU,YAAY,IAAI,UAAU,aAAa,EAAE;;EAEvG,MAAM,MAAc,cAA+B;GACjD,MAAM,MAAM,qBAAqB,eAAe,YAAY,IAAI,aAAa,UAAU;AACvF,WAAQ,IAAI,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,YAAY,IAAI,WAAW,CAAC;;EAE7E;;AAGH,SAAgBA,mBAAiB,QAA0C;CACzE,MAAM,KAAK,QAAQ;CACnB,MAAM,UAAU,oBAAoB,GAAG;CAGvC,MAAM,kBAAkB,OAAO;AAiB/B,QAAOC,iBAhBkC,EACvC,MAAM,UAAU;EACd,MAAM,WAAW,MAAM,iBAAiB;EACxC,MAAM,cAAc,GAAG,QAAQ,uCAAuC;EACtE,MAAM,cAAc,GAAG,QAAQ,yDAAyD;EAExF,MAAM,aAAa,YAAY,IAAI,aAAa;AAChD,MAAI,cAAc,OAAO,WAAW,MAAM,KAAK,SAAS,WACtD,IAAG,KAAK,yBAAyB;AAEnC,cAAY,IAAI,cAAc,OAAO,SAAS,WAAW,CAAC;AAE1D,SAAO;IAEV,EAEoC,EAAE,SAAS,CAAC;;AAGnD,SAAgB,sBAA4B;AAC1C,QAAO,oBAAoB,EAAE,OAAO,MAAM,CAAC"}
|
package/dist/_chunks/npm.mjs
CHANGED
|
@@ -1707,13 +1707,6 @@ async function readLocalDependencies(cwd) {
|
|
|
1707
1707
|
};
|
|
1708
1708
|
const results = [];
|
|
1709
1709
|
for (const [name, version] of Object.entries(deps)) {
|
|
1710
|
-
if (name.startsWith("@types/") || [
|
|
1711
|
-
"typescript",
|
|
1712
|
-
"eslint",
|
|
1713
|
-
"prettier",
|
|
1714
|
-
"vitest",
|
|
1715
|
-
"jest"
|
|
1716
|
-
].includes(name)) continue;
|
|
1717
1710
|
const parsed = parseVersionSpecifier(name, version, cwd);
|
|
1718
1711
|
if (parsed) results.push(parsed);
|
|
1719
1712
|
}
|