@copilotkit/pathfinder 1.1.0 → 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.
- package/CHANGELOG.md +39 -1
- package/README.md +65 -248
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +70 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +58 -5
- package/dist/config.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +3 -1
- package/dist/db/client.js.map +1 -1
- package/dist/db/queries.d.ts +21 -4
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +101 -45
- package/dist/db/queries.js.map +1 -1
- package/dist/db/schema.d.ts +5 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +11 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/faq-txt.d.ts +12 -0
- package/dist/faq-txt.d.ts.map +1 -0
- package/dist/faq-txt.js +37 -0
- package/dist/faq-txt.js.map +1 -0
- package/dist/index.js +2 -362
- package/dist/index.js.map +1 -1
- package/dist/indexing/chunking/html.d.ts +7 -0
- package/dist/indexing/chunking/html.d.ts.map +1 -0
- package/dist/indexing/chunking/html.js +356 -0
- package/dist/indexing/chunking/html.js.map +1 -0
- package/dist/indexing/chunking/index.js +5 -0
- package/dist/indexing/chunking/index.js.map +1 -1
- package/dist/indexing/chunking/qa.d.ts +8 -0
- package/dist/indexing/chunking/qa.d.ts.map +1 -0
- package/dist/indexing/chunking/qa.js +22 -0
- package/dist/indexing/chunking/qa.js.map +1 -0
- package/dist/indexing/distiller.d.ts +29 -0
- package/dist/indexing/distiller.d.ts.map +1 -0
- package/dist/indexing/distiller.js +104 -0
- package/dist/indexing/distiller.js.map +1 -0
- package/dist/indexing/orchestrator.d.ts +9 -3
- package/dist/indexing/orchestrator.d.ts.map +1 -1
- package/dist/indexing/orchestrator.js +113 -83
- package/dist/indexing/orchestrator.js.map +1 -1
- package/dist/indexing/pipeline.d.ts +18 -0
- package/dist/indexing/pipeline.d.ts.map +1 -0
- package/dist/indexing/pipeline.js +68 -0
- package/dist/indexing/pipeline.js.map +1 -0
- package/dist/indexing/providers/discord-api.d.ts +79 -0
- package/dist/indexing/providers/discord-api.d.ts.map +1 -0
- package/dist/indexing/providers/discord-api.js +167 -0
- package/dist/indexing/providers/discord-api.js.map +1 -0
- package/dist/indexing/providers/discord.d.ts +25 -0
- package/dist/indexing/providers/discord.d.ts.map +1 -0
- package/dist/indexing/providers/discord.js +282 -0
- package/dist/indexing/providers/discord.js.map +1 -0
- package/dist/indexing/providers/file.d.ts +18 -0
- package/dist/indexing/providers/file.d.ts.map +1 -0
- package/dist/indexing/providers/file.js +262 -0
- package/dist/indexing/providers/file.js.map +1 -0
- package/dist/indexing/providers/index.d.ts +5 -0
- package/dist/indexing/providers/index.d.ts.map +1 -0
- package/dist/indexing/providers/index.js +22 -0
- package/dist/indexing/providers/index.js.map +1 -0
- package/dist/indexing/providers/slack-api.d.ts +62 -0
- package/dist/indexing/providers/slack-api.d.ts.map +1 -0
- package/dist/indexing/providers/slack-api.js +167 -0
- package/dist/indexing/providers/slack-api.js.map +1 -0
- package/dist/indexing/providers/slack.d.ts +21 -0
- package/dist/indexing/providers/slack.d.ts.map +1 -0
- package/dist/indexing/providers/slack.js +192 -0
- package/dist/indexing/providers/slack.js.map +1 -0
- package/dist/indexing/providers/types.d.ts +56 -0
- package/dist/indexing/providers/types.d.ts.map +1 -0
- package/dist/indexing/providers/types.js +3 -0
- package/dist/indexing/providers/types.js.map +1 -0
- package/dist/indexing/url-derivation.d.ts +2 -2
- package/dist/indexing/url-derivation.d.ts.map +1 -1
- package/dist/indexing/url-derivation.js.map +1 -1
- package/dist/indexing/utils.d.ts +19 -0
- package/dist/indexing/utils.d.ts.map +1 -0
- package/dist/indexing/utils.js +63 -0
- package/dist/indexing/utils.js.map +1 -0
- package/dist/ip-limiter.d.ts +11 -0
- package/dist/ip-limiter.d.ts.map +1 -0
- package/dist/ip-limiter.js +40 -0
- package/dist/ip-limiter.js.map +1 -0
- package/dist/llms-txt.d.ts +11 -0
- package/dist/llms-txt.d.ts.map +1 -0
- package/dist/llms-txt.js +43 -0
- package/dist/llms-txt.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +9 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/bash-fs.d.ts.map +1 -1
- package/dist/mcp/tools/bash-fs.js +4 -1
- package/dist/mcp/tools/bash-fs.js.map +1 -1
- package/dist/mcp/tools/bash.d.ts +8 -0
- package/dist/mcp/tools/bash.d.ts.map +1 -1
- package/dist/mcp/tools/bash.js +59 -0
- package/dist/mcp/tools/bash.js.map +1 -1
- package/dist/mcp/tools/knowledge.d.ts +13 -0
- package/dist/mcp/tools/knowledge.d.ts.map +1 -0
- package/dist/mcp/tools/knowledge.js +92 -0
- package/dist/mcp/tools/knowledge.js.map +1 -0
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +11 -3
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/server.d.ts +6 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +595 -0
- package/dist/server.js.map +1 -0
- package/dist/skill-md.d.ts +3 -0
- package/dist/skill-md.d.ts.map +1 -0
- package/dist/skill-md.js +75 -0
- package/dist/skill-md.js.map +1 -0
- package/dist/types.d.ts +844 -38
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +88 -6
- package/dist/types.js.map +1 -1
- package/dist/validate.d.ts +29 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +192 -0
- package/dist/validate.js.map +1 -0
- package/dist/webhooks/discord.d.ts +13 -0
- package/dist/webhooks/discord.d.ts.map +1 -0
- package/dist/webhooks/discord.js +57 -0
- package/dist/webhooks/discord.js.map +1 -0
- package/dist/webhooks/slack.d.ts +13 -0
- package/dist/webhooks/slack.d.ts.map +1 -0
- package/dist/webhooks/slack.js +106 -0
- package/dist/webhooks/slack.js.map +1 -0
- package/dist/workspace.d.ts +13 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +118 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +27 -2
- package/pathfinder-docs.yaml +54 -0
- package/pathfinder.example.yaml +48 -0
- package/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html +0 -324
- package/.superpowers/brainstorm/47098-1775507869/state/server-stopped +0 -1
- package/.superpowers/brainstorm/47098-1775507869/state/server.log +0 -13
- package/.superpowers/brainstorm/47098-1775507869/state/server.pid +0 -1
- package/.superpowers/brainstorm/82141-1775511032/content/migration-v2.html +0 -340
- package/.superpowers/brainstorm/82141-1775511032/content/migration.html +0 -340
- package/.superpowers/brainstorm/82141-1775511032/state/server-stopped +0 -1
- package/.superpowers/brainstorm/82141-1775511032/state/server.log +0 -4
- package/.superpowers/brainstorm/82141-1775511032/state/server.pid +0 -1
- package/dist/indexing/source-indexer.d.ts +0 -68
- package/dist/indexing/source-indexer.d.ts.map +0 -1
- package/dist/indexing/source-indexer.js +0 -379
- package/dist/indexing/source-indexer.js.map +0 -1
package/dist/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAOpB;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,EAAE,CAAC,IAAI,CAsBjC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAOpB;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,EAAE,CAAC,IAAI,CAsBjC;AAyDD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CtD;AAED;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/C"}
|
package/dist/db/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pg from "pg";
|
|
2
2
|
import pgvector from "pgvector/pg";
|
|
3
|
-
import { generateSchema, generateMigration } from "./schema.js";
|
|
3
|
+
import { generateSchema, generateMigration, generatePostSchemaMigration } from "./schema.js";
|
|
4
4
|
import { getConfig, getServerConfig } from "../config.js";
|
|
5
5
|
let pool = null;
|
|
6
6
|
/**
|
|
@@ -48,6 +48,7 @@ async function initializePGlite() {
|
|
|
48
48
|
try {
|
|
49
49
|
await db.exec(generateMigration());
|
|
50
50
|
await db.exec(generateSchema(dimensions));
|
|
51
|
+
await db.exec(generatePostSchemaMigration());
|
|
51
52
|
await db.exec('COMMIT');
|
|
52
53
|
}
|
|
53
54
|
catch (err) {
|
|
@@ -111,6 +112,7 @@ export async function initializeSchema() {
|
|
|
111
112
|
await migrationClient.query('BEGIN');
|
|
112
113
|
await migrationClient.query(generateMigration());
|
|
113
114
|
await migrationClient.query(generateSchema(dimensions));
|
|
115
|
+
await migrationClient.query(generatePostSchemaMigration());
|
|
114
116
|
await migrationClient.query('COMMIT');
|
|
115
117
|
}
|
|
116
118
|
catch (err) {
|
package/dist/db/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
|
package/dist/db/queries.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { Chunk, ChunkResult, IndexState } from "../types.js";
|
|
1
|
+
import type { Chunk, ChunkResult, FaqChunkResult, IndexState } from "../types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Cosine similarity search on the unified chunks table.
|
|
4
|
-
* Optionally filtered by source_name. Returns results ordered
|
|
5
|
-
* (highest first).
|
|
4
|
+
* Optionally filtered by source_name and/or version. Returns results ordered
|
|
5
|
+
* by similarity (highest first).
|
|
6
6
|
*/
|
|
7
|
-
export declare function searchChunks(embedding: number[], limit: number, sourceName?: string): Promise<ChunkResult[]>;
|
|
7
|
+
export declare function searchChunks(embedding: number[], limit: number, sourceName?: string, version?: string): Promise<ChunkResult[]>;
|
|
8
8
|
/**
|
|
9
9
|
* Text search (ILIKE) on the unified chunks table.
|
|
10
10
|
* Optionally filtered by source_name. Returns results ordered by id.
|
|
@@ -44,6 +44,23 @@ export interface IndexStats {
|
|
|
44
44
|
indexedRepos: number;
|
|
45
45
|
indexStates: IndexState[];
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Fetch all chunks (without embeddings) for llms.txt generation.
|
|
49
|
+
* Ordered by source_name, file_path, chunk_index for deterministic output.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getAllChunksForLlms(): Promise<{
|
|
52
|
+
source_name: string;
|
|
53
|
+
file_path: string;
|
|
54
|
+
title: string | null;
|
|
55
|
+
content: string;
|
|
56
|
+
chunk_index: number;
|
|
57
|
+
}[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Fetch FAQ chunks filtered by source name and minimum confidence.
|
|
60
|
+
* Confidence is stored in chunk metadata JSONB; this query extracts and filters it.
|
|
61
|
+
* Results are ordered by source_name, then indexed_at DESC (most recent first).
|
|
62
|
+
*/
|
|
63
|
+
export declare function getFaqChunks(sourceNames: string[], minConfidence: number, limit?: number): Promise<FaqChunkResult[]>;
|
|
47
64
|
/**
|
|
48
65
|
* Get aggregate statistics for the health endpoint.
|
|
49
66
|
*/
|
package/dist/db/queries.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAM/
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAM/F;;;;GAIG;AACH,wBAAsB,YAAY,CAC9B,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAsDxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,EAAE,CAAC,CA2BxB;AAMD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjE;AAMD;;GAEG;AACH,wBAAsB,kBAAkB,CACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5E;AAMD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAmB5B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvE;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAMf;AAMD,MAAM,WAAW,UAAU;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAM7J;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAC9B,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,EAAE,CAAC,CAsD3B;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA8BzD"}
|
package/dist/db/queries.js
CHANGED
|
@@ -5,54 +5,44 @@ import { getPool } from "./client.js";
|
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
6
6
|
/**
|
|
7
7
|
* Cosine similarity search on the unified chunks table.
|
|
8
|
-
* Optionally filtered by source_name. Returns results ordered
|
|
9
|
-
* (highest first).
|
|
8
|
+
* Optionally filtered by source_name and/or version. Returns results ordered
|
|
9
|
+
* by similarity (highest first).
|
|
10
10
|
*/
|
|
11
|
-
export async function searchChunks(embedding, limit, sourceName) {
|
|
11
|
+
export async function searchChunks(embedding, limit, sourceName, version) {
|
|
12
12
|
const pool = getPool();
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
const conditions = [];
|
|
14
|
+
const params = [pgvector.toSql(embedding)];
|
|
15
|
+
let paramIdx = 2;
|
|
15
16
|
if (sourceName) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
id,
|
|
19
|
-
source_name,
|
|
20
|
-
source_url,
|
|
21
|
-
title,
|
|
22
|
-
content,
|
|
23
|
-
repo_url,
|
|
24
|
-
file_path,
|
|
25
|
-
start_line,
|
|
26
|
-
end_line,
|
|
27
|
-
language,
|
|
28
|
-
1 - (embedding <=> $1) AS similarity
|
|
29
|
-
FROM chunks
|
|
30
|
-
WHERE source_name = $2
|
|
31
|
-
ORDER BY embedding <=> $1
|
|
32
|
-
LIMIT $3
|
|
33
|
-
`;
|
|
34
|
-
params = [pgvector.toSql(embedding), sourceName, limit];
|
|
17
|
+
conditions.push(`source_name = $${paramIdx++}`);
|
|
18
|
+
params.push(sourceName);
|
|
35
19
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
id,
|
|
40
|
-
source_name,
|
|
41
|
-
source_url,
|
|
42
|
-
title,
|
|
43
|
-
content,
|
|
44
|
-
repo_url,
|
|
45
|
-
file_path,
|
|
46
|
-
start_line,
|
|
47
|
-
end_line,
|
|
48
|
-
language,
|
|
49
|
-
1 - (embedding <=> $1) AS similarity
|
|
50
|
-
FROM chunks
|
|
51
|
-
ORDER BY embedding <=> $1
|
|
52
|
-
LIMIT $2
|
|
53
|
-
`;
|
|
54
|
-
params = [pgvector.toSql(embedding), limit];
|
|
20
|
+
if (version) {
|
|
21
|
+
conditions.push(`version = $${paramIdx++}`);
|
|
22
|
+
params.push(version);
|
|
55
23
|
}
|
|
24
|
+
const whereClause = conditions.length > 0
|
|
25
|
+
? `WHERE ${conditions.join(' AND ')}`
|
|
26
|
+
: '';
|
|
27
|
+
const sql = `
|
|
28
|
+
SELECT
|
|
29
|
+
id,
|
|
30
|
+
source_name,
|
|
31
|
+
source_url,
|
|
32
|
+
title,
|
|
33
|
+
content,
|
|
34
|
+
repo_url,
|
|
35
|
+
file_path,
|
|
36
|
+
start_line,
|
|
37
|
+
end_line,
|
|
38
|
+
language,
|
|
39
|
+
1 - (embedding <=> $1) AS similarity
|
|
40
|
+
FROM chunks
|
|
41
|
+
${whereClause}
|
|
42
|
+
ORDER BY embedding <=> $1
|
|
43
|
+
LIMIT $${paramIdx}
|
|
44
|
+
`;
|
|
45
|
+
params.push(limit);
|
|
56
46
|
const { rows } = await pool.query(sql, params);
|
|
57
47
|
return rows.map((r) => ({
|
|
58
48
|
id: r.id,
|
|
@@ -119,9 +109,9 @@ export async function upsertChunks(chunks) {
|
|
|
119
109
|
INSERT INTO chunks
|
|
120
110
|
(source_name, source_url, title, content, embedding, repo_url,
|
|
121
111
|
file_path, start_line, end_line, language, chunk_index,
|
|
122
|
-
metadata, commit_sha, indexed_at)
|
|
112
|
+
metadata, commit_sha, version, indexed_at)
|
|
123
113
|
VALUES
|
|
124
|
-
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, NOW())
|
|
114
|
+
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, NOW())
|
|
125
115
|
ON CONFLICT (source_name, file_path, chunk_index) DO UPDATE SET
|
|
126
116
|
source_url = EXCLUDED.source_url,
|
|
127
117
|
title = EXCLUDED.title,
|
|
@@ -133,6 +123,7 @@ export async function upsertChunks(chunks) {
|
|
|
133
123
|
language = EXCLUDED.language,
|
|
134
124
|
metadata = EXCLUDED.metadata,
|
|
135
125
|
commit_sha = EXCLUDED.commit_sha,
|
|
126
|
+
version = EXCLUDED.version,
|
|
136
127
|
indexed_at = NOW()
|
|
137
128
|
`;
|
|
138
129
|
for (const chunk of chunks) {
|
|
@@ -150,6 +141,7 @@ export async function upsertChunks(chunks) {
|
|
|
150
141
|
chunk.chunk_index,
|
|
151
142
|
JSON.stringify(chunk.metadata ?? {}),
|
|
152
143
|
chunk.commit_sha ?? null,
|
|
144
|
+
chunk.version ?? null,
|
|
153
145
|
]);
|
|
154
146
|
}
|
|
155
147
|
await client.query("COMMIT");
|
|
@@ -240,6 +232,70 @@ export async function insertCollectedData(toolName, data) {
|
|
|
240
232
|
const pool = getPool();
|
|
241
233
|
await pool.query("INSERT INTO collected_data (tool_name, data) VALUES ($1, $2)", [toolName, JSON.stringify(data)]);
|
|
242
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Fetch all chunks (without embeddings) for llms.txt generation.
|
|
237
|
+
* Ordered by source_name, file_path, chunk_index for deterministic output.
|
|
238
|
+
*/
|
|
239
|
+
export async function getAllChunksForLlms() {
|
|
240
|
+
const pool = getPool();
|
|
241
|
+
const result = await pool.query('SELECT source_name, file_path, title, content, chunk_index FROM chunks ORDER BY source_name, file_path, chunk_index');
|
|
242
|
+
return result.rows;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Fetch FAQ chunks filtered by source name and minimum confidence.
|
|
246
|
+
* Confidence is stored in chunk metadata JSONB; this query extracts and filters it.
|
|
247
|
+
* Results are ordered by source_name, then indexed_at DESC (most recent first).
|
|
248
|
+
*/
|
|
249
|
+
export async function getFaqChunks(sourceNames, minConfidence, limit) {
|
|
250
|
+
const pool = getPool();
|
|
251
|
+
if (sourceNames.length === 0)
|
|
252
|
+
return [];
|
|
253
|
+
// Build parameterized source_name IN clause
|
|
254
|
+
const placeholders = sourceNames.map((_, i) => `$${i + 1}`).join(', ');
|
|
255
|
+
const confidenceParam = sourceNames.length + 1;
|
|
256
|
+
let sql = `
|
|
257
|
+
SELECT
|
|
258
|
+
id,
|
|
259
|
+
source_name,
|
|
260
|
+
source_url,
|
|
261
|
+
title,
|
|
262
|
+
content,
|
|
263
|
+
repo_url,
|
|
264
|
+
file_path,
|
|
265
|
+
start_line,
|
|
266
|
+
end_line,
|
|
267
|
+
language,
|
|
268
|
+
0.0 AS similarity,
|
|
269
|
+
metadata,
|
|
270
|
+
COALESCE((metadata->>'confidence')::float, 0.0) AS confidence
|
|
271
|
+
FROM chunks
|
|
272
|
+
WHERE source_name IN (${placeholders})
|
|
273
|
+
AND metadata ? 'confidence'
|
|
274
|
+
AND (metadata->>'confidence')::float >= $${confidenceParam}
|
|
275
|
+
ORDER BY source_name, indexed_at DESC
|
|
276
|
+
`;
|
|
277
|
+
const params = [...sourceNames, minConfidence];
|
|
278
|
+
if (limit != null) {
|
|
279
|
+
sql += ` LIMIT $${confidenceParam + 1}`;
|
|
280
|
+
params.push(limit);
|
|
281
|
+
}
|
|
282
|
+
const { rows } = await pool.query(sql, params);
|
|
283
|
+
return rows.map((r) => ({
|
|
284
|
+
id: r.id,
|
|
285
|
+
source_name: r.source_name,
|
|
286
|
+
source_url: r.source_url ?? null,
|
|
287
|
+
title: r.title ?? null,
|
|
288
|
+
content: r.content,
|
|
289
|
+
repo_url: r.repo_url ?? null,
|
|
290
|
+
file_path: r.file_path,
|
|
291
|
+
start_line: r.start_line ?? null,
|
|
292
|
+
end_line: r.end_line ?? null,
|
|
293
|
+
language: r.language ?? null,
|
|
294
|
+
similarity: parseFloat(r.similarity),
|
|
295
|
+
metadata: r.metadata ?? {},
|
|
296
|
+
confidence: parseFloat(r.confidence) || 0.0,
|
|
297
|
+
}));
|
|
298
|
+
}
|
|
243
299
|
/**
|
|
244
300
|
* Get aggregate statistics for the health endpoint.
|
|
245
301
|
*/
|
package/dist/db/queries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAC9B,SAAmB,EACnB,KAAa,EACb,UAAmB;
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
package/dist/db/schema.d.ts
CHANGED
|
@@ -8,4 +8,9 @@ export declare function generateSchema(dimensions: number): string;
|
|
|
8
8
|
* Safe to run even if they don't exist (IF EXISTS).
|
|
9
9
|
*/
|
|
10
10
|
export declare function generateMigration(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Generate post-schema migration SQL for columns added after initial release.
|
|
13
|
+
* Safe to run repeatedly — uses IF NOT EXISTS / ADD COLUMN IF NOT EXISTS.
|
|
14
|
+
*/
|
|
15
|
+
export declare function generatePostSchemaMigration(): string;
|
|
11
16
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA8CzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD"}
|
package/dist/db/schema.js
CHANGED
|
@@ -24,6 +24,7 @@ CREATE TABLE IF NOT EXISTS chunks (
|
|
|
24
24
|
metadata JSONB NOT NULL DEFAULT '{}',
|
|
25
25
|
indexed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
26
26
|
commit_sha TEXT,
|
|
27
|
+
version TEXT,
|
|
27
28
|
CONSTRAINT chunks_source_file_chunk_uniq UNIQUE (source_name, file_path, chunk_index)
|
|
28
29
|
);
|
|
29
30
|
|
|
@@ -60,4 +61,14 @@ DROP TABLE IF EXISTS doc_chunks CASCADE;
|
|
|
60
61
|
DROP TABLE IF EXISTS code_chunks CASCADE;
|
|
61
62
|
`;
|
|
62
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Generate post-schema migration SQL for columns added after initial release.
|
|
66
|
+
* Safe to run repeatedly — uses IF NOT EXISTS / ADD COLUMN IF NOT EXISTS.
|
|
67
|
+
*/
|
|
68
|
+
export function generatePostSchemaMigration() {
|
|
69
|
+
return `
|
|
70
|
+
ALTER TABLE chunks ADD COLUMN IF NOT EXISTS version TEXT;
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_chunks_version ON chunks (version);
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
63
74
|
//# sourceMappingURL=schema.js.map
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,2CAA2C;AAE3C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC7C,OAAO;;;;;;;;;6BASkB,UAAU
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,2CAA2C;AAE3C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC7C,OAAO;;;;;;;;;6BASkB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCtC,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC7B,OAAO;;;CAGV,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACvC,OAAO;;;CAGV,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FaqChunkResult } from './types.js';
|
|
2
|
+
interface FaqSource {
|
|
3
|
+
name: string;
|
|
4
|
+
confidenceThreshold: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Generate the /faq.txt content from FAQ chunks.
|
|
8
|
+
* Groups Q&A pairs by source, with source headings.
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateFaqTxt(chunks: FaqChunkResult[], serverName: string, faqSources: FaqSource[]): string;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=faq-txt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faq-txt.d.ts","sourceRoot":"","sources":["../src/faq-txt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,cAAc,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,EAAE,GACxB,MAAM,CAmCR"}
|
package/dist/faq-txt.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the /faq.txt content from FAQ chunks.
|
|
3
|
+
* Groups Q&A pairs by source, with source headings.
|
|
4
|
+
*/
|
|
5
|
+
export function generateFaqTxt(chunks, serverName, faqSources) {
|
|
6
|
+
const lines = [
|
|
7
|
+
`# ${serverName} — Frequently Asked Questions`,
|
|
8
|
+
'',
|
|
9
|
+
];
|
|
10
|
+
// Group chunks by source_name
|
|
11
|
+
const bySource = new Map();
|
|
12
|
+
for (const chunk of chunks) {
|
|
13
|
+
if (!bySource.has(chunk.source_name))
|
|
14
|
+
bySource.set(chunk.source_name, []);
|
|
15
|
+
bySource.get(chunk.source_name).push(chunk);
|
|
16
|
+
}
|
|
17
|
+
// Emit each source section in the order of faqSources config
|
|
18
|
+
let hasContent = false;
|
|
19
|
+
for (const source of faqSources) {
|
|
20
|
+
const sourceChunks = bySource.get(source.name);
|
|
21
|
+
if (!sourceChunks || sourceChunks.length === 0)
|
|
22
|
+
continue;
|
|
23
|
+
hasContent = true;
|
|
24
|
+
lines.push(`## ${source.name}`, '');
|
|
25
|
+
for (const chunk of sourceChunks) {
|
|
26
|
+
// Content is stored as "Q: ...\n\nA: ..."
|
|
27
|
+
lines.push(chunk.content);
|
|
28
|
+
lines.push('');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (!hasContent) {
|
|
32
|
+
lines.push('No FAQ content available yet.');
|
|
33
|
+
lines.push('');
|
|
34
|
+
}
|
|
35
|
+
return lines.join('\n');
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=faq-txt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faq-txt.js","sourceRoot":"","sources":["../src/faq-txt.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC1B,MAAwB,EACxB,UAAkB,EAClB,UAAuB;IAEvB,MAAM,KAAK,GAAa;QACpB,KAAK,UAAU,+BAA+B;QAC9C,EAAE;KACL,CAAC;IAEF,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1E,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEzD,UAAU,GAAG,IAAI,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,0CAA0C;YAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|