skilld 0.8.1 → 0.9.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 +28 -0
- package/dist/_chunks/chunk.mjs +13 -0
- package/dist/_chunks/config.mjs +25 -0
- package/dist/_chunks/config.mjs.map +1 -0
- package/dist/_chunks/detect-imports.mjs +2005 -0
- package/dist/_chunks/detect-imports.mjs.map +1 -0
- package/dist/_chunks/embedding-cache.mjs +50 -0
- package/dist/_chunks/embedding-cache.mjs.map +1 -0
- package/dist/_chunks/npm.mjs +1941 -0
- package/dist/_chunks/npm.mjs.map +1 -0
- package/dist/_chunks/pool2.mjs +120 -0
- package/dist/_chunks/pool2.mjs.map +1 -0
- package/dist/_chunks/storage.mjs +436 -0
- package/dist/_chunks/storage.mjs.map +1 -0
- package/dist/_chunks/types.d.mts +90 -0
- package/dist/_chunks/types.d.mts.map +1 -0
- package/dist/_chunks/utils.d.mts +541 -0
- package/dist/_chunks/utils.d.mts.map +1 -0
- package/dist/_chunks/version.d.mts +153 -0
- package/dist/_chunks/version.d.mts.map +1 -0
- package/dist/_chunks/yaml.mjs +468 -0
- package/dist/_chunks/yaml.mjs.map +1 -0
- package/dist/agent/index.d.mts +318 -1
- package/dist/agent/index.d.mts.map +1 -0
- package/dist/agent/index.mjs +6 -1
- package/dist/cache/index.d.mts +2 -1
- package/dist/cache/index.mjs +3 -1
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +4275 -1
- package/dist/cli.mjs.map +1 -0
- package/dist/index.d.mts +6 -1
- package/dist/index.mjs +10 -1
- package/dist/retriv/index.d.mts +26 -1
- package/dist/retriv/index.d.mts.map +1 -0
- package/dist/retriv/index.mjs +109 -1
- package/dist/retriv/index.mjs.map +1 -0
- package/dist/retriv/worker.d.mts +33 -1
- package/dist/retriv/worker.d.mts.map +1 -0
- package/dist/retriv/worker.mjs +51 -1
- package/dist/retriv/worker.mjs.map +1 -0
- package/dist/sources/index.d.mts +2 -1
- package/dist/sources/index.mjs +4 -1
- package/dist/types.d.mts +6 -1
- package/dist/types.mjs +1 -1
- package/package.json +2 -1
package/dist/index.d.mts
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { C as CacheConfig, D as REFERENCES_DIR, E as CACHE_DIR, S as writeToCache, T as CachedPackage, a as clearAllCache, d as isCached, g as listCached, n as getCacheKey, o as clearCache, r as getVersionKey, s as ensureCacheDir, t as getCacheDir, v as readCachedDocs, w as CachedDoc } from "./_chunks/version.mjs";
|
|
2
|
+
import { c as SearchResult, l as SearchSnippet, n as Document, o as SearchFilter, r as IndexConfig, s as SearchOptions } from "./_chunks/types.mjs";
|
|
3
|
+
import { createIndex, search, searchSnippets } from "./retriv/index.mjs";
|
|
4
|
+
import { G as normalizeLlmsLinks, K as parseMarkdownLinks, P as readLocalDependencies, R as resolvePackageDocs, U as fetchLlmsTxt, V as downloadLlmsDocs, ct as LlmsLink, k as fetchNpmPackage, lt as LocalDependency, ot as FetchedDoc, pt as ResolvedPackage, rt as fetchReadmeContent, st as LlmsContent, ut as NpmPackageInfo } from "./_chunks/utils.mjs";
|
|
5
|
+
import "./sources/index.mjs";
|
|
6
|
+
export { CACHE_DIR, type CacheConfig, type CachedDoc, type CachedPackage, type Document, type FetchedDoc, type IndexConfig, type LlmsContent, type LlmsLink, type LocalDependency, type NpmPackageInfo, REFERENCES_DIR, type ResolvedPackage, type SearchFilter, type SearchOptions, type SearchResult, type SearchSnippet, clearAllCache, clearCache, createIndex, downloadLlmsDocs, ensureCacheDir, fetchLlmsTxt, fetchNpmPackage, fetchReadmeContent, getCacheDir, getCacheKey, getVersionKey, isCached, listCached, normalizeLlmsLinks, parseMarkdownLinks, readCachedDocs, readLocalDependencies, resolvePackageDocs, search, searchSnippets, writeToCache };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import "./_chunks/chunk.mjs";
|
|
2
|
+
import { a as getCacheKey, i as getCacheDir, n as REFERENCES_DIR, o as getVersionKey, t as CACHE_DIR } from "./_chunks/config.mjs";
|
|
3
|
+
import { f as listCached, m as readCachedDocs, n as clearCache, r as ensureCacheDir, s as isCached, t as clearAllCache, v as writeToCache } from "./_chunks/storage.mjs";
|
|
4
|
+
import "./cache/index.mjs";
|
|
5
|
+
import "./_chunks/embedding-cache.mjs";
|
|
6
|
+
import { createIndex, search, searchSnippets } from "./retriv/index.mjs";
|
|
7
|
+
import "./_chunks/yaml.mjs";
|
|
8
|
+
import { d as resolvePackageDocs, g as fetchLlmsTxt, m as downloadLlmsDocs, n as fetchNpmPackage, s as readLocalDependencies, v as normalizeLlmsLinks, w as fetchReadmeContent, y as parseMarkdownLinks } from "./_chunks/npm.mjs";
|
|
9
|
+
import "./sources/index.mjs";
|
|
10
|
+
export { CACHE_DIR, REFERENCES_DIR, clearAllCache, clearCache, createIndex, downloadLlmsDocs, ensureCacheDir, fetchLlmsTxt, fetchNpmPackage, fetchReadmeContent, getCacheDir, getCacheKey, getVersionKey, isCached, listCached, normalizeLlmsLinks, parseMarkdownLinks, readCachedDocs, readLocalDependencies, resolvePackageDocs, search, searchSnippets, writeToCache };
|
package/dist/retriv/index.d.mts
CHANGED
|
@@ -1 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
import { a as IndexProgress, c as SearchResult, i as IndexPhase, l as SearchSnippet, n as Document, o as SearchFilter, r as IndexConfig, s as SearchOptions, t as ChunkEntity } from "../_chunks/types.mjs";
|
|
2
|
+
import { createRetriv } from "retriv";
|
|
3
|
+
|
|
4
|
+
//#region src/retriv/index.d.ts
|
|
5
|
+
type RetrivInstance = Awaited<ReturnType<typeof createRetriv>>;
|
|
6
|
+
/**
|
|
7
|
+
* Index documents in-process (no worker thread).
|
|
8
|
+
* Preferred for tests and environments where worker_threads is unreliable.
|
|
9
|
+
*/
|
|
10
|
+
declare function createIndexDirect(documents: Document[], config: IndexConfig): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Index documents in a background worker thread.
|
|
13
|
+
* Falls back to direct indexing if worker fails to spawn.
|
|
14
|
+
*/
|
|
15
|
+
declare function createIndex(documents: Document[], config: IndexConfig): Promise<void>;
|
|
16
|
+
declare function search(query: string, config: IndexConfig, options?: SearchOptions): Promise<SearchResult[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Search and return formatted snippets
|
|
19
|
+
*/
|
|
20
|
+
declare function searchSnippets(query: string, config: IndexConfig, options?: SearchOptions): Promise<SearchSnippet[]>;
|
|
21
|
+
declare function openPool(dbPaths: string[]): Promise<Map<string, RetrivInstance>>;
|
|
22
|
+
declare function searchPooled(query: string, pool: Map<string, RetrivInstance>, options?: SearchOptions): Promise<SearchSnippet[]>;
|
|
23
|
+
declare function closePool(pool: Map<string, RetrivInstance>): Promise<void>;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { type ChunkEntity, type Document, type IndexConfig, type IndexPhase, type IndexProgress, type SearchFilter, type SearchOptions, type SearchResult, type SearchSnippet, closePool, createIndex, createIndexDirect, openPool, search, searchPooled, searchSnippets };
|
|
26
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/retriv/index.ts"],"mappings":";;;;KASK,cAAA,GAAiB,OAAA,CAAQ,UAAA,QAAkB,YAAA;AAFuF;;;;AAAA,iBAkBjH,iBAAA,CACpB,SAAA,EAAW,QAAA,IACX,MAAA,EAAQ,WAAA,GACP,OAAA;;;;;iBAUmB,WAAA,CACpB,SAAA,EAAW,QAAA,IACX,MAAA,EAAQ,WAAA,GACP,OAAA;AAAA,iBAMmB,MAAA,CACpB,KAAA,UACA,MAAA,EAAQ,WAAA,EACR,OAAA,GAAS,aAAA,GACR,OAAA,CAAQ,YAAA;;;AA1BX;iBAuDsB,cAAA,CACpB,KAAA,UACA,MAAA,EAAQ,WAAA,EACR,OAAA,GAAS,aAAA,GACR,OAAA,CAAQ,aAAA;AAAA,iBA2BW,QAAA,CAAS,OAAA,aAAoB,OAAA,CAAQ,GAAA,SAAY,cAAA;AAAA,iBASjD,YAAA,CACpB,KAAA,UACA,IAAA,EAAM,GAAA,SAAY,cAAA,GAClB,OAAA,GAAS,aAAA,GACR,OAAA,CAAQ,aAAA;AAAA,iBAqBW,SAAA,CAAU,IAAA,EAAM,GAAA,SAAY,cAAA,IAAkB,OAAA"}
|
package/dist/retriv/index.mjs
CHANGED
|
@@ -1 +1,109 @@
|
|
|
1
|
-
|
|
1
|
+
import "../_chunks/chunk.mjs";
|
|
2
|
+
import "../_chunks/config.mjs";
|
|
3
|
+
import "../_chunks/storage.mjs";
|
|
4
|
+
import { t as cachedEmbeddings } from "../_chunks/embedding-cache.mjs";
|
|
5
|
+
import { createRetriv } from "retriv";
|
|
6
|
+
import { autoChunker } from "retriv/chunkers/auto";
|
|
7
|
+
import sqlite from "retriv/db/sqlite";
|
|
8
|
+
import { transformersJs } from "retriv/embeddings/transformers-js";
|
|
9
|
+
function getDb(config) {
|
|
10
|
+
return createRetriv({
|
|
11
|
+
driver: sqlite({
|
|
12
|
+
path: config.dbPath,
|
|
13
|
+
embeddings: cachedEmbeddings(transformersJs())
|
|
14
|
+
}),
|
|
15
|
+
chunking: autoChunker()
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async function createIndexDirect(documents, config) {
|
|
19
|
+
const db = await getDb(config);
|
|
20
|
+
await db.index(documents, { onProgress: config.onProgress });
|
|
21
|
+
await db.close?.();
|
|
22
|
+
}
|
|
23
|
+
async function createIndex(documents, config) {
|
|
24
|
+
const { createIndexInWorker } = await import("../_chunks/pool2.mjs").then((n) => n.t);
|
|
25
|
+
return createIndexInWorker(documents, config);
|
|
26
|
+
}
|
|
27
|
+
async function search(query, config, options = {}) {
|
|
28
|
+
const { limit = 10, filter } = options;
|
|
29
|
+
const db = await getDb(config);
|
|
30
|
+
const results = await db.search(query, {
|
|
31
|
+
limit,
|
|
32
|
+
filter,
|
|
33
|
+
returnContent: true,
|
|
34
|
+
returnMetadata: true,
|
|
35
|
+
returnMeta: true
|
|
36
|
+
});
|
|
37
|
+
await db.close?.();
|
|
38
|
+
return results.map((r) => ({
|
|
39
|
+
id: r.id,
|
|
40
|
+
content: r.content ?? "",
|
|
41
|
+
score: r.score,
|
|
42
|
+
metadata: r.metadata ?? {},
|
|
43
|
+
highlights: r._meta?.highlights ?? [],
|
|
44
|
+
lineRange: r._chunk?.lineRange,
|
|
45
|
+
entities: r._chunk?.entities,
|
|
46
|
+
scope: r._chunk?.scope
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
function stripFrontmatter(content) {
|
|
50
|
+
const match = content.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n/);
|
|
51
|
+
return match ? content.slice(match[0].length).trim() : content;
|
|
52
|
+
}
|
|
53
|
+
async function searchSnippets(query, config, options = {}) {
|
|
54
|
+
return toSnippets(await search(query, config, options));
|
|
55
|
+
}
|
|
56
|
+
function toSnippets(results) {
|
|
57
|
+
return results.map((r) => {
|
|
58
|
+
const content = stripFrontmatter(r.content);
|
|
59
|
+
const source = r.metadata.source || r.id;
|
|
60
|
+
const lines = content.split("\n").length;
|
|
61
|
+
return {
|
|
62
|
+
package: r.metadata.package || "unknown",
|
|
63
|
+
source,
|
|
64
|
+
lineStart: r.lineRange?.[0] ?? 1,
|
|
65
|
+
lineEnd: r.lineRange?.[1] ?? lines,
|
|
66
|
+
content,
|
|
67
|
+
score: r.score,
|
|
68
|
+
highlights: r.highlights,
|
|
69
|
+
entities: r.entities,
|
|
70
|
+
scope: r.scope
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async function openPool(dbPaths) {
|
|
75
|
+
const pool = /* @__PURE__ */ new Map();
|
|
76
|
+
await Promise.all(dbPaths.map(async (dbPath) => {
|
|
77
|
+
const db = await getDb({ dbPath });
|
|
78
|
+
pool.set(dbPath, db);
|
|
79
|
+
}));
|
|
80
|
+
return pool;
|
|
81
|
+
}
|
|
82
|
+
async function searchPooled(query, pool, options = {}) {
|
|
83
|
+
const { limit = 10, filter } = options;
|
|
84
|
+
return toSnippets((await Promise.all([...pool.values()].map(async (db) => {
|
|
85
|
+
return (await db.search(query, {
|
|
86
|
+
limit,
|
|
87
|
+
filter,
|
|
88
|
+
returnContent: true,
|
|
89
|
+
returnMetadata: true,
|
|
90
|
+
returnMeta: true
|
|
91
|
+
})).map((r) => ({
|
|
92
|
+
id: r.id,
|
|
93
|
+
content: r.content ?? "",
|
|
94
|
+
score: r.score,
|
|
95
|
+
metadata: r.metadata ?? {},
|
|
96
|
+
highlights: r._meta?.highlights ?? [],
|
|
97
|
+
lineRange: r._chunk?.lineRange,
|
|
98
|
+
entities: r._chunk?.entities,
|
|
99
|
+
scope: r._chunk?.scope
|
|
100
|
+
}));
|
|
101
|
+
}))).flat().sort((a, b) => b.score - a.score).slice(0, limit));
|
|
102
|
+
}
|
|
103
|
+
async function closePool(pool) {
|
|
104
|
+
await Promise.all([...pool.values()].map((db) => db.close?.()));
|
|
105
|
+
pool.clear();
|
|
106
|
+
}
|
|
107
|
+
export { closePool, createIndex, createIndexDirect, openPool, search, searchPooled, searchSnippets };
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/retriv/index.ts"],"sourcesContent":["import type { ChunkEntity, Document, IndexConfig, IndexPhase, IndexProgress, SearchFilter, SearchOptions, SearchResult, SearchSnippet } from './types.ts'\nimport { createRetriv } from 'retriv'\nimport { autoChunker } from 'retriv/chunkers/auto'\nimport sqlite from 'retriv/db/sqlite'\nimport { transformersJs } from 'retriv/embeddings/transformers-js'\nimport { cachedEmbeddings } from './embedding-cache.ts'\n\nexport type { ChunkEntity, Document, IndexConfig, IndexPhase, IndexProgress, SearchFilter, SearchOptions, SearchResult, SearchSnippet }\n\ntype RetrivInstance = Awaited<ReturnType<typeof createRetriv>>\n\nfunction getDb(config: IndexConfig) {\n return createRetriv({\n driver: sqlite({\n path: config.dbPath,\n embeddings: cachedEmbeddings(transformersJs()),\n }),\n chunking: autoChunker(),\n })\n}\n\n/**\n * Index documents in-process (no worker thread).\n * Preferred for tests and environments where worker_threads is unreliable.\n */\nexport async function createIndexDirect(\n documents: Document[],\n config: IndexConfig,\n): Promise<void> {\n const db = await getDb(config)\n await db.index(documents, { onProgress: config.onProgress })\n await db.close?.()\n}\n\n/**\n * Index documents in a background worker thread.\n * Falls back to direct indexing if worker fails to spawn.\n */\nexport async function createIndex(\n documents: Document[],\n config: IndexConfig,\n): Promise<void> {\n // Dynamic import justified: search/searchSnippets shouldn't pull in worker_threads\n const { createIndexInWorker } = await import('./pool.ts')\n return createIndexInWorker(documents, config)\n}\n\nexport async function search(\n query: string,\n config: IndexConfig,\n options: SearchOptions = {},\n): Promise<SearchResult[]> {\n const { limit = 10, filter } = options\n const db = await getDb(config)\n const results = await db.search(query, { limit, filter, returnContent: true, returnMetadata: true, returnMeta: true })\n await db.close?.()\n\n return results.map(r => ({\n id: r.id,\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata ?? {},\n highlights: r._meta?.highlights ?? [],\n lineRange: r._chunk?.lineRange,\n entities: r._chunk?.entities,\n scope: r._chunk?.scope,\n }))\n}\n\n/**\n * Strip YAML frontmatter from markdown content\n */\nfunction stripFrontmatter(content: string): string {\n const match = content.match(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n/)\n return match ? content.slice(match[0].length).trim() : content\n}\n\n/**\n * Search and return formatted snippets\n */\nexport async function searchSnippets(\n query: string,\n config: IndexConfig,\n options: SearchOptions = {},\n): Promise<SearchSnippet[]> {\n const results = await search(query, config, options)\n return toSnippets(results)\n}\n\nfunction toSnippets(results: SearchResult[]): SearchSnippet[] {\n return results.map((r) => {\n const content = stripFrontmatter(r.content)\n const source = r.metadata.source || r.id\n const lines = content.split('\\n').length\n\n return {\n package: r.metadata.package || 'unknown',\n source,\n lineStart: r.lineRange?.[0] ?? 1,\n lineEnd: r.lineRange?.[1] ?? lines,\n content,\n score: r.score,\n highlights: r.highlights,\n entities: r.entities,\n scope: r.scope,\n }\n })\n}\n\n// ── Pooled DB access for interactive search ──\n\nexport async function openPool(dbPaths: string[]): Promise<Map<string, RetrivInstance>> {\n const pool = new Map<string, RetrivInstance>()\n await Promise.all(dbPaths.map(async (dbPath) => {\n const db = await getDb({ dbPath })\n pool.set(dbPath, db)\n }))\n return pool\n}\n\nexport async function searchPooled(\n query: string,\n pool: Map<string, RetrivInstance>,\n options: SearchOptions = {},\n): Promise<SearchSnippet[]> {\n const { limit = 10, filter } = options\n const allResults = await Promise.all(\n [...pool.values()].map(async (db) => {\n const results = await db.search(query, { limit, filter, returnContent: true, returnMetadata: true, returnMeta: true })\n return results.map(r => ({\n id: r.id,\n content: r.content ?? '',\n score: r.score,\n metadata: r.metadata ?? {},\n highlights: r._meta?.highlights ?? [],\n lineRange: r._chunk?.lineRange as [number, number] | undefined,\n entities: r._chunk?.entities,\n scope: r._chunk?.scope,\n }))\n }),\n )\n const merged = allResults.flat().sort((a, b) => b.score - a.score).slice(0, limit)\n return toSnippets(merged)\n}\n\nexport async function closePool(pool: Map<string, RetrivInstance>): Promise<void> {\n await Promise.all([...pool.values()].map(db => db.close?.()))\n pool.clear()\n}\n"],"mappings":"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"}
|
package/dist/retriv/worker.d.mts
CHANGED
|
@@ -1 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
import { n as Document } from "../_chunks/types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/retriv/worker.d.ts
|
|
4
|
+
interface WorkerIndexMessage {
|
|
5
|
+
type: 'index';
|
|
6
|
+
id: number;
|
|
7
|
+
documents: Document[];
|
|
8
|
+
dbPath: string;
|
|
9
|
+
}
|
|
10
|
+
interface WorkerShutdownMessage {
|
|
11
|
+
type: 'shutdown';
|
|
12
|
+
}
|
|
13
|
+
type WorkerMessage = WorkerIndexMessage | WorkerShutdownMessage;
|
|
14
|
+
interface WorkerProgressResponse {
|
|
15
|
+
type: 'progress';
|
|
16
|
+
id: number;
|
|
17
|
+
phase: string;
|
|
18
|
+
current: number;
|
|
19
|
+
total: number;
|
|
20
|
+
}
|
|
21
|
+
interface WorkerDoneResponse {
|
|
22
|
+
type: 'done';
|
|
23
|
+
id: number;
|
|
24
|
+
}
|
|
25
|
+
interface WorkerErrorResponse {
|
|
26
|
+
type: 'error';
|
|
27
|
+
id: number;
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
type WorkerResponse = WorkerProgressResponse | WorkerDoneResponse | WorkerErrorResponse;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { WorkerDoneResponse, WorkerErrorResponse, WorkerIndexMessage, WorkerMessage, WorkerProgressResponse, WorkerResponse, WorkerShutdownMessage };
|
|
33
|
+
//# sourceMappingURL=worker.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.mts","names":[],"sources":["../../src/retriv/worker.ts"],"mappings":";;;UAQiB,kBAAA;EACf,IAAA;EACA,EAAA;EACA,SAAA,EAAW,QAAA;EACX,MAAA;AAAA;AAAA,UAGe,qBAAA;EACf,IAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,kBAAA,GAAqB,qBAAA;AAAA,UAEhC,sBAAA;EACf,IAAA;EACA,EAAA;EACA,KAAA;EACA,OAAA;EACA,KAAA;AAAA;AAAA,UAGe,kBAAA;EACf,IAAA;EACA,EAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA;EACA,EAAA;EACA,OAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,sBAAA,GAAyB,kBAAA,GAAqB,mBAAA"}
|
package/dist/retriv/worker.mjs
CHANGED
|
@@ -1 +1,51 @@
|
|
|
1
|
-
|
|
1
|
+
import "../_chunks/chunk.mjs";
|
|
2
|
+
import "../_chunks/config.mjs";
|
|
3
|
+
import "../_chunks/storage.mjs";
|
|
4
|
+
import { t as cachedEmbeddings } from "../_chunks/embedding-cache.mjs";
|
|
5
|
+
import { createRetriv } from "retriv";
|
|
6
|
+
import { autoChunker } from "retriv/chunkers/auto";
|
|
7
|
+
import sqlite from "retriv/db/sqlite";
|
|
8
|
+
import { transformersJs } from "retriv/embeddings/transformers-js";
|
|
9
|
+
import { parentPort } from "node:worker_threads";
|
|
10
|
+
if (parentPort) parentPort.on("message", async (msg) => {
|
|
11
|
+
if (msg.type === "shutdown") process.exit(0);
|
|
12
|
+
if (msg.type === "index") {
|
|
13
|
+
const { id, documents, dbPath } = msg;
|
|
14
|
+
try {
|
|
15
|
+
const config = {
|
|
16
|
+
dbPath,
|
|
17
|
+
onProgress: ({ phase, current, total }) => {
|
|
18
|
+
parentPort.postMessage({
|
|
19
|
+
type: "progress",
|
|
20
|
+
id,
|
|
21
|
+
phase,
|
|
22
|
+
current,
|
|
23
|
+
total
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const db = await createRetriv({
|
|
28
|
+
driver: sqlite({
|
|
29
|
+
path: config.dbPath,
|
|
30
|
+
embeddings: cachedEmbeddings(transformersJs())
|
|
31
|
+
}),
|
|
32
|
+
chunking: autoChunker()
|
|
33
|
+
});
|
|
34
|
+
await db.index(documents, { onProgress: config.onProgress });
|
|
35
|
+
await db.close?.();
|
|
36
|
+
parentPort.postMessage({
|
|
37
|
+
type: "done",
|
|
38
|
+
id
|
|
39
|
+
});
|
|
40
|
+
} catch (err) {
|
|
41
|
+
parentPort.postMessage({
|
|
42
|
+
type: "error",
|
|
43
|
+
id,
|
|
44
|
+
message: err instanceof Error ? err.message : String(err)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
export {};
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.mjs","names":[],"sources":["../../src/retriv/worker.ts"],"sourcesContent":["import type { IndexConfig, Document as RetrivDocument } from './types.ts'\nimport { parentPort } from 'node:worker_threads'\nimport { createRetriv } from 'retriv'\nimport { autoChunker } from 'retriv/chunkers/auto'\nimport sqlite from 'retriv/db/sqlite'\nimport { transformersJs } from 'retriv/embeddings/transformers-js'\nimport { cachedEmbeddings } from './embedding-cache.ts'\n\nexport interface WorkerIndexMessage {\n type: 'index'\n id: number\n documents: RetrivDocument[]\n dbPath: string\n}\n\nexport interface WorkerShutdownMessage {\n type: 'shutdown'\n}\n\nexport type WorkerMessage = WorkerIndexMessage | WorkerShutdownMessage\n\nexport interface WorkerProgressResponse {\n type: 'progress'\n id: number\n phase: string\n current: number\n total: number\n}\n\nexport interface WorkerDoneResponse {\n type: 'done'\n id: number\n}\n\nexport interface WorkerErrorResponse {\n type: 'error'\n id: number\n message: string\n}\n\nexport type WorkerResponse = WorkerProgressResponse | WorkerDoneResponse | WorkerErrorResponse\n\nif (parentPort) {\n parentPort.on('message', async (msg: WorkerMessage) => {\n if (msg.type === 'shutdown') {\n process.exit(0)\n }\n\n if (msg.type === 'index') {\n const { id, documents, dbPath } = msg\n\n try {\n const config: IndexConfig = {\n dbPath,\n onProgress: ({ phase, current, total }) => {\n parentPort!.postMessage({ type: 'progress', id, phase, current, total } satisfies WorkerProgressResponse)\n },\n }\n\n const db = await createRetriv({\n driver: sqlite({\n path: config.dbPath,\n embeddings: cachedEmbeddings(transformersJs()),\n }),\n chunking: autoChunker(),\n })\n\n await db.index(documents, { onProgress: config.onProgress })\n await db.close?.()\n\n parentPort!.postMessage({ type: 'done', id } satisfies WorkerDoneResponse)\n }\n catch (err) {\n parentPort!.postMessage({\n type: 'error',\n id,\n message: err instanceof Error ? err.message : String(err),\n } satisfies WorkerErrorResponse)\n }\n }\n })\n}\n"],"mappings":";;;;;;;;;AA0CA,IAAI,WACF,YAAW,GAAG,WAAW,OAAO,QAAuB;AACrD,KAAI,IAAI,SAAS,WACf,SAAQ,KAAK,EAAE;AAGjB,KAAI,IAAI,SAAS,SAAS;EACxB,MAAM,EAAE,IAAI,WAAW,WAAW;AAElC,MAAI;GACF,MAAM,SAAsB;IAC1B;IACA,aAAa,EAAE,OAAO,SAAS,YAAY;AACzC,gBAAY,YAAY;MAAE,MAAM;MAAY;MAAI;MAAO;MAAS;MAAO,CAAkC;;IAE5G;GAED,MAAM,KAAK,MAAM,aAAa;IAC5B,QAAQ,OAAO;KACb,MAAM,OAAO;KACb,YAAY,iBAAiB,gBAAgB,CAAA;KAC9C,CAAC;IACF,UAAU,aAAA;IACX,CAAC;AAEF,SAAM,GAAG,MAAM,WAAW,EAAE,YAAY,OAAO,YAAY,CAAC;AAC5D,SAAM,GAAG,SAAS;AAElB,cAAY,YAAY;IAAE,MAAM;IAAQ;IAAI,CAA8B;WAErE,KAAK;AACV,cAAY,YAAY;IACtB,MAAM;IACN;IACA,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAA;IACtD,CAA+B;;;EAGpC"}
|
package/dist/sources/index.d.mts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { $ as MIN_GIT_DOCS, A as fetchNpmRegistryMeta, B as searchNpmPackages, C as getRepoEntry, Ct as formatDiscussionAsMarkdown, D as ResolveStep, E as ResolveOptions, F as readLocalPackageInfo, G as normalizeLlmsLinks, H as extractSections, I as resolveInstalledVersion, J as fetchGitHubIssues, K as parseMarkdownLinks, L as resolveLocalPackageDocs, M as getInstalledSkillVersion, N as parseVersionSpecifier, O as fetchLatestVersion, P as readLocalDependencies, Q as GitDocsResult, R as resolvePackageDocs, S as getRelatedPackages, St as fetchGitHubDiscussions, T as LocalPackageInfo, Tt as fetchBlogReleases, U as fetchLlmsTxt, V as downloadLlmsDocs, W as fetchLlmsUrl, X as generateIssueIndex, Y as formatIssueAsMarkdown, Z as isGhAvailable, _ as BlogRelease, _t as parseGitSkillInput, a as normalizeRepoUrl, at as validateGitDocsWithLlms, b as getDocOverride, bt as resolveEntryFiles, c as GitHubRelease, ct as LlmsLink, d as compareSemver, dt as ResolveAttempt, et as fetchGitDocs, f as fetchReleaseNotes, ft as ResolveResult, g as BlogPreset, gt as fetchGitSkills, h as parseSemver, ht as RemoteSkill, i as isGitHubRepoUrl, it as isShallowGitDocs, j as fetchPkgDist, k as fetchNpmPackage, l as ReleaseIndexOptions, lt as LocalDependency, m as isPrerelease, mt as GitSkillSource, n as extractBranchHint, nt as fetchReadme, o as parseGitHubUrl, ot as FetchedDoc, p as generateReleaseIndex, pt as ResolvedPackage, q as GitHubIssue, r as fetchText, rt as fetchReadmeContent, s as verifyUrl, st as LlmsContent, t as $fetch, tt as fetchGitHubRepoMeta, u as SemVer, ut as NpmPackageInfo, v as DocOverride, vt as parseSkillFrontmatterName, w as getRepoKeyForPackage, wt as generateDiscussionIndex, x as getFilePatterns, xt as GitHubDiscussion, y as getBlogPreset, yt as EntryFile, z as resolvePackageDocsWithAttempts } from "../_chunks/utils.mjs";
|
|
2
|
+
export { $fetch, type BlogPreset, type BlogRelease, type DocOverride, type EntryFile, type FetchedDoc, type GitDocsResult, type GitHubDiscussion, type GitHubIssue, type GitHubRelease, type GitSkillSource, type LlmsContent, type LlmsLink, type LocalDependency, type LocalPackageInfo, MIN_GIT_DOCS, type NpmPackageInfo, type ReleaseIndexOptions, type RemoteSkill, type ResolveAttempt, type ResolveOptions, type ResolveResult, type ResolveStep, type ResolvedPackage, type SemVer, compareSemver, downloadLlmsDocs, extractBranchHint, extractSections, fetchBlogReleases, fetchGitDocs, fetchGitHubDiscussions, fetchGitHubIssues, fetchGitHubRepoMeta, fetchGitSkills, fetchLatestVersion, fetchLlmsTxt, fetchLlmsUrl, fetchNpmPackage, fetchNpmRegistryMeta, fetchPkgDist, fetchReadme, fetchReadmeContent, fetchReleaseNotes, fetchText, formatDiscussionAsMarkdown, formatIssueAsMarkdown, generateDiscussionIndex, generateIssueIndex, generateReleaseIndex, getBlogPreset, getDocOverride, getFilePatterns, getInstalledSkillVersion, getRelatedPackages, getRepoEntry, getRepoKeyForPackage, isGhAvailable, isGitHubRepoUrl, isPrerelease, isShallowGitDocs, normalizeLlmsLinks, normalizeRepoUrl, parseGitHubUrl, parseGitSkillInput, parseMarkdownLinks, parseSemver, parseSkillFrontmatterName, parseVersionSpecifier, readLocalDependencies, readLocalPackageInfo, resolveEntryFiles, resolveInstalledVersion, resolveLocalPackageDocs, resolvePackageDocs, resolvePackageDocsWithAttempts, searchNpmPackages, validateGitDocsWithLlms, verifyUrl };
|
package/dist/sources/index.mjs
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import "../_chunks/config.mjs";
|
|
2
|
+
import { c as getDocOverride, d as getRepoEntry, f as getRepoKeyForPackage, l as getFilePatterns, s as getBlogPreset, u as getRelatedPackages } from "../_chunks/yaml.mjs";
|
|
3
|
+
import { A as resolveEntryFiles, B as $fetch, C as fetchReadme, D as fetchGitSkills, E as validateGitDocsWithLlms, F as compareSemver, G as parseGitHubUrl, H as fetchText, I as fetchReleaseNotes, J as formatIssueAsMarkdown, K as verifyUrl, L as generateReleaseIndex, M as formatDiscussionAsMarkdown, N as generateDiscussionIndex, O as parseGitSkillInput, P as fetchBlogReleases, R as isPrerelease, S as fetchGitHubRepoMeta, T as isShallowGitDocs, U as isGitHubRepoUrl, V as extractBranchHint, W as normalizeRepoUrl, X as isGhAvailable, Y as generateIssueIndex, _ as fetchLlmsUrl, a as getInstalledSkillVersion, b as MIN_GIT_DOCS, c as readLocalPackageInfo, d as resolvePackageDocs, f as resolvePackageDocsWithAttempts, g as fetchLlmsTxt, h as extractSections, i as fetchPkgDist, j as fetchGitHubDiscussions, k as parseSkillFrontmatterName, l as resolveInstalledVersion, m as downloadLlmsDocs, n as fetchNpmPackage, o as parseVersionSpecifier, p as searchNpmPackages, q as fetchGitHubIssues, r as fetchNpmRegistryMeta, s as readLocalDependencies, t as fetchLatestVersion, u as resolveLocalPackageDocs, v as normalizeLlmsLinks, w as fetchReadmeContent, x as fetchGitDocs, y as parseMarkdownLinks, z as parseSemver } from "../_chunks/npm.mjs";
|
|
4
|
+
export { $fetch, MIN_GIT_DOCS, compareSemver, downloadLlmsDocs, extractBranchHint, extractSections, fetchBlogReleases, fetchGitDocs, fetchGitHubDiscussions, fetchGitHubIssues, fetchGitHubRepoMeta, fetchGitSkills, fetchLatestVersion, fetchLlmsTxt, fetchLlmsUrl, fetchNpmPackage, fetchNpmRegistryMeta, fetchPkgDist, fetchReadme, fetchReadmeContent, fetchReleaseNotes, fetchText, formatDiscussionAsMarkdown, formatIssueAsMarkdown, generateDiscussionIndex, generateIssueIndex, generateReleaseIndex, getBlogPreset, getDocOverride, getFilePatterns, getInstalledSkillVersion, getRelatedPackages, getRepoEntry, getRepoKeyForPackage, isGhAvailable, isGitHubRepoUrl, isPrerelease, isShallowGitDocs, normalizeLlmsLinks, normalizeRepoUrl, parseGitHubUrl, parseGitSkillInput, parseMarkdownLinks, parseSemver, parseSkillFrontmatterName, parseVersionSpecifier, readLocalDependencies, readLocalPackageInfo, resolveEntryFiles, resolveInstalledVersion, resolveLocalPackageDocs, resolvePackageDocs, resolvePackageDocsWithAttempts, searchNpmPackages, validateGitDocsWithLlms, verifyUrl };
|
package/dist/types.d.mts
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { C as CacheConfig, T as CachedPackage } from "./_chunks/version.mjs";
|
|
2
|
+
import { c as SearchResult, l as SearchSnippet, n as Document, o as SearchFilter, r as IndexConfig, s as SearchOptions } from "./_chunks/types.mjs";
|
|
3
|
+
import "./retriv/index.mjs";
|
|
4
|
+
import { ct as LlmsLink, ot as FetchedDoc, st as LlmsContent } from "./_chunks/utils.mjs";
|
|
5
|
+
import "./sources/index.mjs";
|
|
6
|
+
export { type CacheConfig, type CachedPackage, type Document, type FetchedDoc, type IndexConfig, type LlmsContent, type LlmsLink, type SearchFilter, type SearchOptions, type SearchResult, type SearchSnippet };
|
package/dist/types.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skilld",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.0",
|
|
5
5
|
"description": "Generate AI agent skills from npm package documentation",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"pathe": "^2.0.3",
|
|
58
58
|
"retriv": "^0.10.0",
|
|
59
59
|
"sqlite-vec": "^0.1.6",
|
|
60
|
+
"std-env": "^3.10.0",
|
|
60
61
|
"typescript": "beta",
|
|
61
62
|
"unagent": "^0.0.8"
|
|
62
63
|
},
|