@copilotkit/pathfinder 1.4.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 +20 -0
- package/README.md +7 -2
- package/dist/cli.js +11 -1
- package/dist/cli.js.map +1 -1
- 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/queries.d.ts +7 -1
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +55 -0
- package/dist/db/queries.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/indexing/chunking/index.js +3 -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 +8 -3
- package/dist/indexing/orchestrator.d.ts.map +1 -1
- package/dist/indexing/orchestrator.js +98 -93
- 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/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -0
- 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/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/server.d.ts.map +1 -1
- package/dist/server.js +111 -8
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +788 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +82 -4
- 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/package.json +15 -2
- 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 -380
- package/dist/indexing/source-indexer.js.map +0 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// SlackDataProvider — Slack thread acquisition via Web API + LLM distillation.
|
|
2
|
+
// Implements DataProvider: fetches threads from configured channels, distills
|
|
3
|
+
// them into Q&A pairs, and returns ContentItems for the indexing pipeline.
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
import { SlackApiClient } from './slack-api.js';
|
|
6
|
+
import { distillThread } from '../distiller.js';
|
|
7
|
+
import { getConfig } from '../../config.js';
|
|
8
|
+
export class SlackDataProvider {
|
|
9
|
+
config;
|
|
10
|
+
apiClient;
|
|
11
|
+
openaiClient;
|
|
12
|
+
logPrefix;
|
|
13
|
+
constructor(config, options) {
|
|
14
|
+
if (config.type !== 'slack') {
|
|
15
|
+
throw new Error('SlackDataProvider requires a slack source config');
|
|
16
|
+
}
|
|
17
|
+
this.config = config;
|
|
18
|
+
const token = options.slackBotToken;
|
|
19
|
+
if (!token) {
|
|
20
|
+
throw new Error('SlackDataProvider requires a slackBotToken in provider options');
|
|
21
|
+
}
|
|
22
|
+
this.apiClient = new SlackApiClient({ token });
|
|
23
|
+
this.openaiClient = new OpenAI({ apiKey: getConfig().openaiApiKey });
|
|
24
|
+
this.logPrefix = `[slack-provider:${config.name}]`;
|
|
25
|
+
}
|
|
26
|
+
async fullAcquire() {
|
|
27
|
+
console.log(`${this.logPrefix} Starting full acquire for ${this.config.channels.length} channel(s)`);
|
|
28
|
+
const allItems = [];
|
|
29
|
+
let maxTimestamp = '0';
|
|
30
|
+
let failedChannels = 0;
|
|
31
|
+
for (const channelId of this.config.channels) {
|
|
32
|
+
try {
|
|
33
|
+
const { items, latestTs } = await this.processChannel(channelId);
|
|
34
|
+
allItems.push(...items);
|
|
35
|
+
if (latestTs > maxTimestamp)
|
|
36
|
+
maxTimestamp = latestTs;
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
failedChannels++;
|
|
40
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
41
|
+
console.error(`${this.logPrefix} Failed to process channel ${channelId}: ${msg}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (failedChannels === this.config.channels.length) {
|
|
45
|
+
throw new Error(`All ${failedChannels} channel(s) failed during acquire`);
|
|
46
|
+
}
|
|
47
|
+
console.log(`${this.logPrefix} Full acquire complete: ${allItems.length} Q&A pairs from ${this.config.channels.length} channel(s)`);
|
|
48
|
+
return {
|
|
49
|
+
items: allItems,
|
|
50
|
+
removedIds: [],
|
|
51
|
+
stateToken: maxTimestamp,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async incrementalAcquire(lastStateToken) {
|
|
55
|
+
console.log(`${this.logPrefix} Starting incremental acquire since ${lastStateToken}`);
|
|
56
|
+
const allItems = [];
|
|
57
|
+
let maxTimestamp = lastStateToken;
|
|
58
|
+
let failedChannels = 0;
|
|
59
|
+
for (const channelId of this.config.channels) {
|
|
60
|
+
try {
|
|
61
|
+
const { items, latestTs } = await this.processChannel(channelId, lastStateToken);
|
|
62
|
+
allItems.push(...items);
|
|
63
|
+
if (latestTs > maxTimestamp)
|
|
64
|
+
maxTimestamp = latestTs;
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
failedChannels++;
|
|
68
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
69
|
+
console.error(`${this.logPrefix} Failed to process channel ${channelId}: ${msg}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (failedChannels === this.config.channels.length) {
|
|
73
|
+
throw new Error(`All ${failedChannels} channel(s) failed during acquire`);
|
|
74
|
+
}
|
|
75
|
+
console.log(`${this.logPrefix} Incremental acquire complete: ${allItems.length} Q&A pairs`);
|
|
76
|
+
return {
|
|
77
|
+
items: allItems,
|
|
78
|
+
removedIds: [], // Slack API doesn't surface deletions; caught on next full acquire
|
|
79
|
+
stateToken: maxTimestamp,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
async getCurrentStateToken() {
|
|
83
|
+
let maxTimestamp = '0';
|
|
84
|
+
for (const channelId of this.config.channels) {
|
|
85
|
+
try {
|
|
86
|
+
const messages = await this.apiClient.fetchChannelHistory(channelId, undefined, 1);
|
|
87
|
+
if (messages.length > 0) {
|
|
88
|
+
// Messages are returned newest-first by Slack
|
|
89
|
+
const latest = messages[0].ts;
|
|
90
|
+
if (latest > maxTimestamp)
|
|
91
|
+
maxTimestamp = latest;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
96
|
+
console.warn(`${this.logPrefix} Failed to check channel ${channelId}: ${msg}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return maxTimestamp === '0' ? null : maxTimestamp;
|
|
100
|
+
}
|
|
101
|
+
// -----------------------------------------------------------------------
|
|
102
|
+
// Private helpers
|
|
103
|
+
// -----------------------------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* Process a single channel: fetch threads, distill, return items.
|
|
106
|
+
*/
|
|
107
|
+
async processChannel(channelId, oldest) {
|
|
108
|
+
const messages = await this.apiClient.fetchChannelHistory(channelId, oldest);
|
|
109
|
+
const items = [];
|
|
110
|
+
let latestTs = oldest ?? '0';
|
|
111
|
+
// Filter to threaded messages with sufficient replies
|
|
112
|
+
const threads = messages.filter(m => m.thread_ts === m.ts && (m.reply_count ?? 0) >= this.config.min_thread_replies);
|
|
113
|
+
console.log(`${this.logPrefix} Channel ${channelId}: ${messages.length} messages, ${threads.length} qualifying threads`);
|
|
114
|
+
// Process threads sequentially to avoid OpenAI rate limits
|
|
115
|
+
for (const thread of threads) {
|
|
116
|
+
try {
|
|
117
|
+
const threadItems = await this.processThread(channelId, thread);
|
|
118
|
+
items.push(...threadItems);
|
|
119
|
+
if (thread.ts > latestTs)
|
|
120
|
+
latestTs = thread.ts;
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
124
|
+
console.error(`${this.logPrefix} Failed to distill thread ${thread.ts}: ${msg}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return { items, latestTs };
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Process a single thread: fetch replies, resolve users, distill, create items.
|
|
131
|
+
*/
|
|
132
|
+
async processThread(channelId, parentMessage) {
|
|
133
|
+
const replies = await this.apiClient.fetchThreadReplies(channelId, parentMessage.ts);
|
|
134
|
+
// Resolve user display names
|
|
135
|
+
const threadMessages = [];
|
|
136
|
+
for (const reply of replies) {
|
|
137
|
+
let author = reply.user ?? 'unknown';
|
|
138
|
+
try {
|
|
139
|
+
if (reply.user) {
|
|
140
|
+
const user = await this.apiClient.fetchUserInfo(reply.user);
|
|
141
|
+
author = user.displayName;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
146
|
+
console.warn(`${this.logPrefix} Failed to resolve user ${reply.user}: ${msg}`);
|
|
147
|
+
}
|
|
148
|
+
threadMessages.push({
|
|
149
|
+
author,
|
|
150
|
+
content: reply.text ?? '',
|
|
151
|
+
timestamp: reply.ts,
|
|
152
|
+
reactions: reply.reactions,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
// Distill the thread
|
|
156
|
+
const distillerResult = await distillThread(threadMessages, {
|
|
157
|
+
model: this.config.distiller_model,
|
|
158
|
+
client: this.openaiClient,
|
|
159
|
+
});
|
|
160
|
+
// Create ContentItems for ALL pairs — confidence filtering happens at query time
|
|
161
|
+
const items = [];
|
|
162
|
+
let permalink;
|
|
163
|
+
if (distillerResult.pairs.length > 0) {
|
|
164
|
+
try {
|
|
165
|
+
permalink = await this.apiClient.getChannelPermalink(channelId, parentMessage.ts);
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
169
|
+
console.warn(`${this.logPrefix} Failed to get permalink for ${channelId}/${parentMessage.ts}: ${msg}`);
|
|
170
|
+
permalink = undefined;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const participants = [...new Set(threadMessages.map(m => m.author))];
|
|
174
|
+
for (let i = 0; i < distillerResult.pairs.length; i++) {
|
|
175
|
+
const pair = distillerResult.pairs[i];
|
|
176
|
+
items.push({
|
|
177
|
+
id: `${channelId}:${parentMessage.ts}:${i}`,
|
|
178
|
+
content: `Q: ${pair.question}\n\nA: ${pair.answer}`,
|
|
179
|
+
title: pair.question,
|
|
180
|
+
sourceUrl: permalink,
|
|
181
|
+
metadata: {
|
|
182
|
+
channel: channelId,
|
|
183
|
+
participants,
|
|
184
|
+
confidence: pair.confidence,
|
|
185
|
+
emojiTriggered: false,
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return items;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=slack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../../../src/indexing/providers/slack.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAE3E,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAqB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAsB,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,OAAO,iBAAiB;IAClB,MAAM,CAAoB;IAC1B,SAAS,CAAiB;IAC1B,YAAY,CAAS;IACrB,SAAS,CAAS;IAE1B,YAAY,MAAoB,EAAE,OAAwB;QACtD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,mBAAmB,MAAM,CAAC,IAAI,GAAG,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QACrG,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,IAAI,YAAY,GAAG,GAAG,CAAC;QACvB,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACxB,IAAI,QAAQ,GAAG,YAAY;oBAAE,YAAY,GAAG,QAAQ,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,cAAc,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,8BAA8B,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;YACtF,CAAC;QACL,CAAC;QAED,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,OAAO,cAAc,mCAAmC,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,2BAA2B,QAAQ,CAAC,MAAM,mBAAmB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QAEpI,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,YAAY;SAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,cAAsB;QAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,uCAAuC,cAAc,EAAE,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAkB,EAAE,CAAC;QACnC,IAAI,YAAY,GAAG,cAAc,CAAC;QAClC,IAAI,cAAc,GAAG,CAAC,CAAC;QAEvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACjF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACxB,IAAI,QAAQ,GAAG,YAAY;oBAAE,YAAY,GAAG,QAAQ,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,cAAc,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,8BAA8B,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;YACtF,CAAC;QACL,CAAC;QAED,IAAI,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,OAAO,cAAc,mCAAmC,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,kCAAkC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QAE5F,OAAO;YACH,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,EAAE,EAAE,mEAAmE;YACnF,UAAU,EAAE,YAAY;SAC3B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,oBAAoB;QACtB,IAAI,YAAY,GAAG,GAAG,CAAC;QAEvB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,8CAA8C;oBAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,IAAI,MAAM,GAAG,YAAY;wBAAE,YAAY,GAAG,MAAM,CAAC;gBACrD,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,4BAA4B,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;YACnF,CAAC;QACL,CAAC;QAED,OAAO,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACtD,CAAC;IAED,0EAA0E;IAC1E,kBAAkB;IAClB,0EAA0E;IAE1E;;OAEG;IACK,KAAK,CAAC,cAAc,CACxB,SAAiB,EACjB,MAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,QAAQ,GAAG,MAAM,IAAI,GAAG,CAAC;QAE7B,sDAAsD;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CACtF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,YAAY,SAAS,KAAK,QAAQ,CAAC,MAAM,cAAc,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAEzH,2DAA2D;QAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAE3B,IAAI,MAAM,CAAC,EAAE,GAAG,QAAQ;oBAAE,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,6BAA6B,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;YACrF,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CACvB,SAAiB,EACjB,aAA2B;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QAErF,6BAA6B;QAC7B,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;YACrC,IAAI,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC5D,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC9B,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,2BAA2B,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;YACnF,CAAC;YAED,cAAc,CAAC,IAAI,CAAC;gBAChB,MAAM;gBACN,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACzB,SAAS,EAAE,KAAK,CAAC,EAAE;gBACnB,SAAS,EAAE,KAAK,CAAC,SAAS;aAC7B,CAAC,CAAC;QACP,CAAC;QAED,qBAAqB;QACrB,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE;YACxD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;YAClC,MAAM,EAAE,IAAI,CAAC,YAAY;SAC5B,CAAC,CAAC;QAEH,iFAAiF;QACjF,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,SAA6B,CAAC;QAElC,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACD,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,gCAAgC,SAAS,IAAI,aAAa,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;gBACvG,SAAS,GAAG,SAAS,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtC,KAAK,CAAC,IAAI,CAAC;gBACP,EAAE,EAAE,GAAG,SAAS,IAAI,aAAa,CAAC,EAAE,IAAI,CAAC,EAAE;gBAC3C,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,UAAU,IAAI,CAAC,MAAM,EAAE;gBACnD,KAAK,EAAE,IAAI,CAAC,QAAQ;gBACpB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE;oBACN,OAAO,EAAE,SAAS;oBAClB,YAAY;oBACZ,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,cAAc,EAAE,KAAK;iBACxB;aACJ,CAAC,CAAC;QACP,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SourceConfig } from '../../types.js';
|
|
2
|
+
/** A single content item to be indexed. */
|
|
3
|
+
export interface ContentItem {
|
|
4
|
+
/** Unique identifier within the source (file path, thread ID, page ID, etc.) */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Raw content to be chunked */
|
|
7
|
+
content: string;
|
|
8
|
+
/** Human-readable title (optional — chunker may derive one) */
|
|
9
|
+
title?: string;
|
|
10
|
+
/** URL to the original content (optional) */
|
|
11
|
+
sourceUrl?: string;
|
|
12
|
+
/** Additional metadata passed through to chunk records */
|
|
13
|
+
metadata?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
/** Result of a data acquisition run. */
|
|
16
|
+
export interface AcquisitionResult {
|
|
17
|
+
/** Items to index (full list for full acquire, changed items for incremental) */
|
|
18
|
+
items: ContentItem[];
|
|
19
|
+
/**
|
|
20
|
+
* Item IDs to remove from the index.
|
|
21
|
+
* Full acquire: always empty — deleted-file detection is not performed during
|
|
22
|
+
* full acquire, so chunks from files no longer in the source persist until the
|
|
23
|
+
* next incremental acquire or manual cleanup.
|
|
24
|
+
* Incremental acquire: IDs of items deleted since lastStateToken.
|
|
25
|
+
*/
|
|
26
|
+
removedIds: string[];
|
|
27
|
+
/** Opaque state token to persist (commit SHA, API cursor, timestamp) */
|
|
28
|
+
stateToken: string;
|
|
29
|
+
}
|
|
30
|
+
/** Interface that all data providers implement. */
|
|
31
|
+
export interface DataProvider {
|
|
32
|
+
/**
|
|
33
|
+
* Full acquisition — return all indexable items.
|
|
34
|
+
* Providers must apply their own content filtering before returning items.
|
|
35
|
+
*/
|
|
36
|
+
fullAcquire(): Promise<AcquisitionResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Incremental acquisition — only items changed since lastStateToken.
|
|
39
|
+
*/
|
|
40
|
+
incrementalAcquire(lastStateToken: string): Promise<AcquisitionResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Get the current state token without acquiring items (for staleness checks).
|
|
43
|
+
* Returns null if the source is unavailable (e.g., clone dir missing).
|
|
44
|
+
*/
|
|
45
|
+
getCurrentStateToken(): Promise<string | null>;
|
|
46
|
+
}
|
|
47
|
+
/** Options passed to provider factories. */
|
|
48
|
+
export interface ProviderOptions {
|
|
49
|
+
cloneDir: string;
|
|
50
|
+
githubToken?: string;
|
|
51
|
+
slackBotToken?: string;
|
|
52
|
+
discordBotToken?: string;
|
|
53
|
+
}
|
|
54
|
+
/** Factory function that creates a DataProvider for a given source config. */
|
|
55
|
+
export type DataProviderFactory = (config: SourceConfig, options: ProviderOptions) => DataProvider;
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/indexing/providers/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IACxB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAC9B,iFAAiF;IACjF,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IACzB;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1C;;OAEG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvE;;;OAGG;IACH,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClD;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,KAAK,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/indexing/providers/types.ts"],"names":[],"mappings":"AAAA,iFAAiF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FileSourceConfig } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Derive a public URL from a relative file path using the source's URL derivation rules.
|
|
4
4
|
* Returns null if the source has no base_url or url_derivation configured.
|
|
5
5
|
*/
|
|
6
|
-
export declare function deriveUrl(filePath: string, sourceConfig:
|
|
6
|
+
export declare function deriveUrl(filePath: string, sourceConfig: FileSourceConfig): string | null;
|
|
7
7
|
//# sourceMappingURL=url-derivation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-derivation.d.ts","sourceRoot":"","sources":["../../src/indexing/url-derivation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"url-derivation.d.ts","sourceRoot":"","sources":["../../src/indexing/url-derivation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAsBzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-derivation.js","sourceRoot":"","sources":["../../src/indexing/url-derivation.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAItE;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"url-derivation.js","sourceRoot":"","sources":["../../src/indexing/url-derivation.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAItE;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,YAA8B;IACtE,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAExE,MAAM,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;IACtC,IAAI,IAAI,GAAG,QAAQ,CAAC;IAEpB,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;QACpD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC;QACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,OAAO;YAAE,IAAI,GAAG,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FileSourceConfig } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if file content has low semantic value (SVG paths, base64, minified code).
|
|
4
|
+
* Samples the first 8KB and checks the ratio of digits, dots, commas, semicolons,
|
|
5
|
+
* and equals signs. If >30% of characters are these low-value tokens, the file
|
|
6
|
+
* is likely SVG path data, base64, or minified code with no search value.
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasLowSemanticValue(content: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Convert a glob pattern to a RegExp.
|
|
11
|
+
* Supports: ** (any path), * (any segment), ? (any char)
|
|
12
|
+
*/
|
|
13
|
+
export declare function globToRegex(pattern: string): RegExp;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a relative file path matches the source's file_patterns (include)
|
|
16
|
+
* and does not match exclude_patterns.
|
|
17
|
+
*/
|
|
18
|
+
export declare function matchesPatterns(relPath: string, sourceConfig: FileSourceConfig): boolean;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/indexing/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAqB5D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWnD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAmBxF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Shared indexing utilities — used by providers, bash-fs, and test scripts.
|
|
2
|
+
/**
|
|
3
|
+
* Check if file content has low semantic value (SVG paths, base64, minified code).
|
|
4
|
+
* Samples the first 8KB and checks the ratio of digits, dots, commas, semicolons,
|
|
5
|
+
* and equals signs. If >30% of characters are these low-value tokens, the file
|
|
6
|
+
* is likely SVG path data, base64, or minified code with no search value.
|
|
7
|
+
*/
|
|
8
|
+
export function hasLowSemanticValue(content) {
|
|
9
|
+
if (content.length < 500)
|
|
10
|
+
return false;
|
|
11
|
+
const sample = content.slice(0, 8192);
|
|
12
|
+
let lowValueChars = 0;
|
|
13
|
+
for (let i = 0; i < sample.length; i++) {
|
|
14
|
+
const c = sample.charCodeAt(i);
|
|
15
|
+
if ((c >= 48 && c <= 57) || // 0-9
|
|
16
|
+
c === 46 || // .
|
|
17
|
+
c === 44 || // ,
|
|
18
|
+
c === 59 || // ;
|
|
19
|
+
c === 61 // =
|
|
20
|
+
) {
|
|
21
|
+
lowValueChars++;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const ratio = lowValueChars / sample.length;
|
|
25
|
+
return ratio > 0.3;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert a glob pattern to a RegExp.
|
|
29
|
+
* Supports: ** (any path), * (any segment), ? (any char)
|
|
30
|
+
*/
|
|
31
|
+
export function globToRegex(pattern) {
|
|
32
|
+
let re = pattern
|
|
33
|
+
.replace(/[.+^${}()|[\]\\]/g, '\\$&') // escape regex chars (except * and ?)
|
|
34
|
+
.replace(/\*\*\//g, '{{GLOBSTAR_SLASH}}') // **/ = any path prefix (including empty)
|
|
35
|
+
.replace(/\*\*/g, '{{GLOBSTAR}}') // ** alone = anything
|
|
36
|
+
.replace(/\*/g, '[^/]*') // * = anything except /
|
|
37
|
+
.replace(/\?/g, '[^/]') // ? = single char except /
|
|
38
|
+
.replace(/\{\{GLOBSTAR_SLASH\}\}/g, '(?:.*/)?') // **/ = optional path prefix
|
|
39
|
+
.replace(/\{\{GLOBSTAR\}\}/g, '.*'); // ** = anything including /
|
|
40
|
+
return new RegExp(`^${re}$`);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if a relative file path matches the source's file_patterns (include)
|
|
44
|
+
* and does not match exclude_patterns.
|
|
45
|
+
*/
|
|
46
|
+
export function matchesPatterns(relPath, sourceConfig) {
|
|
47
|
+
const normalized = relPath.replace(/\\/g, '/');
|
|
48
|
+
// Check excludes first (takes precedence)
|
|
49
|
+
const excludes = sourceConfig.exclude_patterns ?? [];
|
|
50
|
+
for (const pattern of excludes) {
|
|
51
|
+
if (globToRegex(pattern).test(normalized)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Must match at least one include pattern
|
|
56
|
+
for (const pattern of sourceConfig.file_patterns) {
|
|
57
|
+
if (globToRegex(pattern).test(normalized)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/indexing/utils.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAI5E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IACI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAK,MAAM;YAC/B,CAAC,KAAK,EAAE,IAAkB,IAAI;YAC9B,CAAC,KAAK,EAAE,IAAkB,IAAI;YAC9B,CAAC,KAAK,EAAE,IAAkB,IAAI;YAC9B,CAAC,KAAK,EAAE,CAAkB,IAAI;UAChC,CAAC;YACC,aAAa,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,OAAO,KAAK,GAAG,GAAG,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,IAAI,EAAE,GAAG,OAAO;SACX,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,sCAAsC;SAC3E,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC,0CAA0C;SACnF,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAU,sBAAsB;SAChE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAoB,wBAAwB;SACnE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAqB,2BAA2B;SACtE,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC,6BAA6B;SAC5E,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAa,4BAA4B;IAEjF,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,YAA8B;IAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE/C,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACrD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EACjC,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,YAAY,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,EACvC,SAAS,CAAC,EAAE,aAAa,EACzB,SAAS,CAAC,EAAE,gBAAgB,GAC7B,SAAS,CAqEX"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -3,6 +3,7 @@ import { EmbeddingClient } from '../indexing/embeddings.js';
|
|
|
3
3
|
import { getConfig, getServerConfig } from '../config.js';
|
|
4
4
|
import { registerSearchTool } from './tools/search.js';
|
|
5
5
|
import { registerCollectTool } from './tools/collect.js';
|
|
6
|
+
import { registerKnowledgeTool } from './tools/knowledge.js';
|
|
6
7
|
import { registerBashTool } from './tools/bash.js';
|
|
7
8
|
/**
|
|
8
9
|
* Creates a new McpServer instance with all tools registered.
|
|
@@ -60,6 +61,9 @@ export function createMcpServer(bashInstances, sessionStateManager, getSessionId
|
|
|
60
61
|
});
|
|
61
62
|
break;
|
|
62
63
|
}
|
|
64
|
+
case 'knowledge':
|
|
65
|
+
registerKnowledgeTool(server, getEmbeddingClient(), tool);
|
|
66
|
+
break;
|
|
63
67
|
default: {
|
|
64
68
|
const _exhaustive = tool;
|
|
65
69
|
throw new Error(`Unknown tool type: ${_exhaustive.type}`);
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-fs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/bash-fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"bash-fs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/bash-fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqCnD,MAAM,WAAW,mBAAmB;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,iBAAiB,CACnC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+CjC;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAU7F;AAED,wBAAgB,YAAY,CACxB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GACvC,MAAM,CA+BR;AAED,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,mBAAmB,GAC9B,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAM5C"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { Bash } from 'just-bash';
|
|
4
|
-
import { matchesPatterns } from '../../indexing/
|
|
4
|
+
import { matchesPatterns } from '../../indexing/utils.js';
|
|
5
|
+
import { isFileSourceConfig } from '../../types.js';
|
|
5
6
|
import { generateIndexMd, generateSearchTipsMd } from './bash-virtual-files.js';
|
|
6
7
|
const DEFAULT_SKIP_DIRS = new Set(['node_modules', 'dist', 'build', '.git']);
|
|
7
8
|
const DEFAULT_MAX_FILE_SIZE = 102400; // 100KB
|
|
@@ -40,6 +41,8 @@ export async function buildBashFilesMap(sources, options) {
|
|
|
40
41
|
const files = {};
|
|
41
42
|
const multiSource = sources.length > 1;
|
|
42
43
|
for (const source of sources) {
|
|
44
|
+
if (!isFileSourceConfig(source))
|
|
45
|
+
continue; // Slack sources don't have filesystem paths
|
|
43
46
|
let rootDir;
|
|
44
47
|
if (source.repo && options?.cloneDir) {
|
|
45
48
|
// Git-based source: the orchestrator clones into cloneDir/<repoName>/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-fs.js","sourceRoot":"","sources":["../../../src/mcp/tools/bash-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"bash-fs.js","sourceRoot":"","sources":["../../../src/mcp/tools/bash-fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { EmbeddingClient } from '../../indexing/embeddings.js';
|
|
3
|
+
import type { KnowledgeToolConfig, FaqChunkResult } from '../../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Format FAQ results in the standard QUESTION/ANSWER/SOURCE/CONFIDENCE format.
|
|
6
|
+
*/
|
|
7
|
+
export declare function formatFaqResults(results: FaqChunkResult[]): string;
|
|
8
|
+
/**
|
|
9
|
+
* Register a knowledge tool on the MCP server.
|
|
10
|
+
* Supports two modes: browse (no query) and search (with query).
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerKnowledgeTool(server: McpServer, embeddingClient: EmbeddingClient, toolConfig: KnowledgeToolConfig): void;
|
|
13
|
+
//# sourceMappingURL=knowledge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/knowledge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAC;AAGvF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAUlE;AAYD;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,SAAS,EACjB,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,mBAAmB,GAChC,IAAI,CA0EN"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getFaqChunks, searchChunks } from '../../db/queries.js';
|
|
3
|
+
/**
|
|
4
|
+
* Format FAQ results in the standard QUESTION/ANSWER/SOURCE/CONFIDENCE format.
|
|
5
|
+
*/
|
|
6
|
+
export function formatFaqResults(results) {
|
|
7
|
+
if (results.length === 0)
|
|
8
|
+
return "No FAQ results found.";
|
|
9
|
+
return results.map((r, i) => [
|
|
10
|
+
`Q&A ${i + 1}`,
|
|
11
|
+
`QUESTION: ${r.title || '(untitled)'}`,
|
|
12
|
+
`ANSWER: ${extractAnswer(r.content)}`,
|
|
13
|
+
`SOURCE: ${r.source_url || r.file_path}`,
|
|
14
|
+
`CONFIDENCE: ${r.confidence.toFixed(2)}`,
|
|
15
|
+
].join('\n')).join('\n\n');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extract the answer portion from Q&A content format "Q: ...\n\nA: ..."
|
|
19
|
+
*/
|
|
20
|
+
function extractAnswer(content) {
|
|
21
|
+
const match = content.match(/\nA:\s*([\s\S]*)/);
|
|
22
|
+
if (match)
|
|
23
|
+
return match[1].trim();
|
|
24
|
+
// Fallback: return full content
|
|
25
|
+
return content;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Register a knowledge tool on the MCP server.
|
|
29
|
+
* Supports two modes: browse (no query) and search (with query).
|
|
30
|
+
*/
|
|
31
|
+
export function registerKnowledgeTool(server, embeddingClient, toolConfig) {
|
|
32
|
+
const inputSchema = {
|
|
33
|
+
query: z.string().optional().describe("Search query. Omit for full FAQ listing."),
|
|
34
|
+
limit: z.number().min(1).max(toolConfig.max_limit).optional()
|
|
35
|
+
.describe(`Maximum results to return (default: ${toolConfig.default_limit})`),
|
|
36
|
+
min_confidence: z.number().min(0).max(1).optional()
|
|
37
|
+
.describe(`Override minimum confidence threshold (default: ${toolConfig.min_confidence})`),
|
|
38
|
+
};
|
|
39
|
+
server.tool(toolConfig.name, toolConfig.description, inputSchema, async ({ query, limit, min_confidence }) => {
|
|
40
|
+
const effectiveLimit = limit ?? toolConfig.default_limit;
|
|
41
|
+
const effectiveConfidence = min_confidence ?? toolConfig.min_confidence;
|
|
42
|
+
try {
|
|
43
|
+
if (!query || query.trim() === '') {
|
|
44
|
+
// Browse mode: return all FAQ entries above confidence
|
|
45
|
+
const chunks = await getFaqChunks(toolConfig.sources, effectiveConfidence, effectiveLimit);
|
|
46
|
+
return {
|
|
47
|
+
content: [{ type: "text", text: formatFaqResults(chunks) }],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Search mode: embed query, search each source, merge, filter by confidence
|
|
52
|
+
const embedding = await embeddingClient.embed(query);
|
|
53
|
+
// Search each source independently and merge
|
|
54
|
+
const allResults = [];
|
|
55
|
+
for (const sourceName of toolConfig.sources) {
|
|
56
|
+
const results = await searchChunks(embedding, effectiveLimit, sourceName);
|
|
57
|
+
allResults.push(...results);
|
|
58
|
+
}
|
|
59
|
+
// Sort by similarity descending, take top N
|
|
60
|
+
allResults.sort((a, b) => b.similarity - a.similarity);
|
|
61
|
+
const topResults = allResults.slice(0, effectiveLimit);
|
|
62
|
+
// Now get FAQ chunks (with confidence) for the same sources to cross-reference
|
|
63
|
+
// Use a very low confidence threshold (0) to get all, then filter
|
|
64
|
+
const faqChunks = await getFaqChunks(toolConfig.sources, 0, effectiveLimit * 5);
|
|
65
|
+
const faqById = new Map(faqChunks.map(c => [c.id, c]));
|
|
66
|
+
// Merge: keep search results that have FAQ metadata and meet confidence threshold
|
|
67
|
+
const mergedResults = [];
|
|
68
|
+
for (const result of topResults) {
|
|
69
|
+
const faqChunk = faqById.get(result.id);
|
|
70
|
+
if (faqChunk && faqChunk.confidence >= effectiveConfidence) {
|
|
71
|
+
mergedResults.push({
|
|
72
|
+
...faqChunk,
|
|
73
|
+
similarity: result.similarity,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
content: [{ type: "text", text: formatFaqResults(mergedResults) }],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
console.error(`[${toolConfig.name}] Knowledge query failed:`, error);
|
|
84
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
85
|
+
return {
|
|
86
|
+
content: [{ type: "text", text: `Error querying FAQ: ${detail}` }],
|
|
87
|
+
isError: true,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../../src/mcp/tools/knowledge.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA0BA,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AA4bD,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2IxE"}
|