@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.
Files changed (103) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +7 -2
  3. package/dist/cli.js +11 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +8 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +58 -5
  8. package/dist/config.js.map +1 -1
  9. package/dist/db/queries.d.ts +7 -1
  10. package/dist/db/queries.d.ts.map +1 -1
  11. package/dist/db/queries.js +55 -0
  12. package/dist/db/queries.js.map +1 -1
  13. package/dist/faq-txt.d.ts +12 -0
  14. package/dist/faq-txt.d.ts.map +1 -0
  15. package/dist/faq-txt.js +37 -0
  16. package/dist/faq-txt.js.map +1 -0
  17. package/dist/indexing/chunking/index.js +3 -0
  18. package/dist/indexing/chunking/index.js.map +1 -1
  19. package/dist/indexing/chunking/qa.d.ts +8 -0
  20. package/dist/indexing/chunking/qa.d.ts.map +1 -0
  21. package/dist/indexing/chunking/qa.js +22 -0
  22. package/dist/indexing/chunking/qa.js.map +1 -0
  23. package/dist/indexing/distiller.d.ts +29 -0
  24. package/dist/indexing/distiller.d.ts.map +1 -0
  25. package/dist/indexing/distiller.js +104 -0
  26. package/dist/indexing/distiller.js.map +1 -0
  27. package/dist/indexing/orchestrator.d.ts +8 -3
  28. package/dist/indexing/orchestrator.d.ts.map +1 -1
  29. package/dist/indexing/orchestrator.js +98 -93
  30. package/dist/indexing/orchestrator.js.map +1 -1
  31. package/dist/indexing/pipeline.d.ts +18 -0
  32. package/dist/indexing/pipeline.d.ts.map +1 -0
  33. package/dist/indexing/pipeline.js +68 -0
  34. package/dist/indexing/pipeline.js.map +1 -0
  35. package/dist/indexing/providers/discord-api.d.ts +79 -0
  36. package/dist/indexing/providers/discord-api.d.ts.map +1 -0
  37. package/dist/indexing/providers/discord-api.js +167 -0
  38. package/dist/indexing/providers/discord-api.js.map +1 -0
  39. package/dist/indexing/providers/discord.d.ts +25 -0
  40. package/dist/indexing/providers/discord.d.ts.map +1 -0
  41. package/dist/indexing/providers/discord.js +282 -0
  42. package/dist/indexing/providers/discord.js.map +1 -0
  43. package/dist/indexing/providers/file.d.ts +18 -0
  44. package/dist/indexing/providers/file.d.ts.map +1 -0
  45. package/dist/indexing/providers/file.js +262 -0
  46. package/dist/indexing/providers/file.js.map +1 -0
  47. package/dist/indexing/providers/index.d.ts +5 -0
  48. package/dist/indexing/providers/index.d.ts.map +1 -0
  49. package/dist/indexing/providers/index.js +22 -0
  50. package/dist/indexing/providers/index.js.map +1 -0
  51. package/dist/indexing/providers/slack-api.d.ts +62 -0
  52. package/dist/indexing/providers/slack-api.d.ts.map +1 -0
  53. package/dist/indexing/providers/slack-api.js +167 -0
  54. package/dist/indexing/providers/slack-api.js.map +1 -0
  55. package/dist/indexing/providers/slack.d.ts +21 -0
  56. package/dist/indexing/providers/slack.d.ts.map +1 -0
  57. package/dist/indexing/providers/slack.js +192 -0
  58. package/dist/indexing/providers/slack.js.map +1 -0
  59. package/dist/indexing/providers/types.d.ts +56 -0
  60. package/dist/indexing/providers/types.d.ts.map +1 -0
  61. package/dist/indexing/providers/types.js +3 -0
  62. package/dist/indexing/providers/types.js.map +1 -0
  63. package/dist/indexing/url-derivation.d.ts +2 -2
  64. package/dist/indexing/url-derivation.d.ts.map +1 -1
  65. package/dist/indexing/url-derivation.js.map +1 -1
  66. package/dist/indexing/utils.d.ts +19 -0
  67. package/dist/indexing/utils.d.ts.map +1 -0
  68. package/dist/indexing/utils.js +63 -0
  69. package/dist/indexing/utils.js.map +1 -0
  70. package/dist/mcp/server.d.ts.map +1 -1
  71. package/dist/mcp/server.js +4 -0
  72. package/dist/mcp/server.js.map +1 -1
  73. package/dist/mcp/tools/bash-fs.d.ts.map +1 -1
  74. package/dist/mcp/tools/bash-fs.js +4 -1
  75. package/dist/mcp/tools/bash-fs.js.map +1 -1
  76. package/dist/mcp/tools/knowledge.d.ts +13 -0
  77. package/dist/mcp/tools/knowledge.d.ts.map +1 -0
  78. package/dist/mcp/tools/knowledge.js +92 -0
  79. package/dist/mcp/tools/knowledge.js.map +1 -0
  80. package/dist/server.d.ts.map +1 -1
  81. package/dist/server.js +111 -8
  82. package/dist/server.js.map +1 -1
  83. package/dist/types.d.ts +788 -20
  84. package/dist/types.d.ts.map +1 -1
  85. package/dist/types.js +82 -4
  86. package/dist/types.js.map +1 -1
  87. package/dist/validate.d.ts +29 -0
  88. package/dist/validate.d.ts.map +1 -0
  89. package/dist/validate.js +192 -0
  90. package/dist/validate.js.map +1 -0
  91. package/dist/webhooks/discord.d.ts +13 -0
  92. package/dist/webhooks/discord.d.ts.map +1 -0
  93. package/dist/webhooks/discord.js +57 -0
  94. package/dist/webhooks/discord.js.map +1 -0
  95. package/dist/webhooks/slack.d.ts +13 -0
  96. package/dist/webhooks/slack.d.ts.map +1 -0
  97. package/dist/webhooks/slack.js +106 -0
  98. package/dist/webhooks/slack.js.map +1 -0
  99. package/package.json +15 -2
  100. package/dist/indexing/source-indexer.d.ts +0 -68
  101. package/dist/indexing/source-indexer.d.ts.map +0 -1
  102. package/dist/indexing/source-indexer.js +0 -380
  103. package/dist/indexing/source-indexer.js.map +0 -1
@@ -0,0 +1,104 @@
1
+ // LLM thread distiller — extracts Q&A pairs from conversation threads.
2
+ // Source-agnostic: takes structured messages, returns structured Q&A pairs.
3
+ import OpenAI from 'openai';
4
+ // ── Constants ────────────────────────────────────────────────────────────────
5
+ const DEFAULT_MODEL = 'gpt-4o-mini';
6
+ const DEFAULT_MAX_MESSAGES = 100;
7
+ const SYSTEM_PROMPT = `You are a Q&A extraction engine. Given a conversation thread, identify distinct question-answer pairs.
8
+
9
+ For each pair:
10
+ 1. Extract the core question (rephrase if needed for clarity)
11
+ 2. Extract the best answer (synthesize from multiple replies if needed)
12
+ 3. Score confidence from 0.0 to 1.0 based on:
13
+ - Answer completeness (does it fully address the question?)
14
+ - Questioner satisfaction signals ("thanks", "that worked", etc.)
15
+ - Community validation (reactions like thumbsup, check marks)
16
+ - Answer specificity (concrete steps vs vague suggestions)
17
+
18
+ Return JSON with this exact structure:
19
+ {
20
+ "pairs": [
21
+ {
22
+ "question": "How do I configure X?",
23
+ "answer": "You can configure X by...",
24
+ "confidence": 0.85
25
+ }
26
+ ]
27
+ }
28
+
29
+ Rules:
30
+ - A thread may contain multiple Q&A pairs (follow-up questions)
31
+ - Skip greetings, pleasantries, and off-topic tangents
32
+ - If no clear Q&A exists, return {"pairs": []}
33
+ - Keep answers concise but complete (aim for 1-3 paragraphs)
34
+ - Preserve code blocks, URLs, and technical details from answers
35
+ - Confidence below 0.3 means the answer is likely incomplete or wrong`;
36
+ // ── Distiller ────────────────────────────────────────────────────────────────
37
+ /**
38
+ * Distill a conversation thread into Q&A pairs using an LLM.
39
+ */
40
+ export async function distillThread(messages, options) {
41
+ const model = options?.model ?? DEFAULT_MODEL;
42
+ const maxMessages = options?.maxMessages ?? DEFAULT_MAX_MESSAGES;
43
+ if (messages.length === 0) {
44
+ return { pairs: [] };
45
+ }
46
+ // Truncate to max messages
47
+ const truncated = messages.slice(0, maxMessages);
48
+ // Format as conversation transcript
49
+ const transcript = truncated.map(msg => {
50
+ const reactions = msg.reactions && msg.reactions.length > 0
51
+ ? ` [reactions: ${msg.reactions.map(r => `:${r.name}: x${r.count}`).join(', ')}]`
52
+ : '';
53
+ return `[${msg.timestamp}] ${msg.author}: ${msg.content}${reactions}`;
54
+ }).join('\n\n');
55
+ const client = options?.client ?? new OpenAI({ apiKey: options?.apiKey });
56
+ try {
57
+ const response = await client.chat.completions.create({
58
+ model,
59
+ messages: [
60
+ { role: 'system', content: SYSTEM_PROMPT },
61
+ { role: 'user', content: transcript },
62
+ ],
63
+ response_format: { type: 'json_object' },
64
+ temperature: 0.1,
65
+ });
66
+ const content = response.choices[0]?.message?.content;
67
+ if (!content) {
68
+ console.warn('[distiller] Empty response from LLM');
69
+ return { pairs: [] };
70
+ }
71
+ const parsed = JSON.parse(content);
72
+ // Validate structure
73
+ if (!Array.isArray(parsed.pairs)) {
74
+ console.warn('[distiller] Invalid response structure — missing pairs array');
75
+ return { pairs: [] };
76
+ }
77
+ // Validate and filter each pair
78
+ const validPairs = [];
79
+ for (const pair of parsed.pairs) {
80
+ if (typeof pair.question === 'string' && pair.question.trim() &&
81
+ typeof pair.answer === 'string' && pair.answer.trim() &&
82
+ typeof pair.confidence === 'number' &&
83
+ pair.confidence >= 0 && pair.confidence <= 1) {
84
+ validPairs.push({
85
+ question: pair.question.trim(),
86
+ answer: pair.answer.trim(),
87
+ confidence: pair.confidence,
88
+ });
89
+ }
90
+ else {
91
+ console.warn('[distiller] Skipping malformed pair:', JSON.stringify(pair).slice(0, 200));
92
+ }
93
+ }
94
+ return { pairs: validPairs };
95
+ }
96
+ catch (error) {
97
+ if (error instanceof SyntaxError) {
98
+ console.error('[distiller] Failed to parse LLM JSON response:', error.message);
99
+ return { pairs: [] };
100
+ }
101
+ throw error; // Re-throw API errors for caller to handle
102
+ }
103
+ }
104
+ //# sourceMappingURL=distiller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller.js","sourceRoot":"","sources":["../../src/indexing/distiller.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,10 @@ export declare class IndexingOrchestrator {
13
13
  */
14
14
  checkAndIndex(): Promise<void>;
15
15
  /**
16
- * Get the HEAD SHA of a remote repo without cloning.
17
- * Uses `git ls-remote` which only fetches refs.
16
+ * Get the current state token for a source without acquiring items.
17
+ * Returns null if the source is unavailable.
18
18
  */
19
- private getRemoteHead;
19
+ private getSourceStateToken;
20
20
  /**
21
21
  * Queue a full re-index of all sources. Returns immediately.
22
22
  */
@@ -25,6 +25,11 @@ export declare class IndexingOrchestrator {
25
25
  * Queue an incremental re-index for a specific repo. Returns immediately.
26
26
  */
27
27
  queueIncrementalReindex(repoUrl: string): void;
28
+ /**
29
+ * Queue a reindex for a single named source. Returns immediately.
30
+ * Used by webhook handlers to trigger reindexing of specific sources.
31
+ */
32
+ queueSourceReindex(sourceName: string): void;
28
33
  /**
29
34
  * Returns true if any indexing job is currently running.
30
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/indexing/orchestrator.ts"],"names":[],"mappings":"AAiCA,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,aAAa,CAAqB;IAG1C,OAAO,CAAC,eAAe,CAAuB;IAG9C,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;;IAMpD;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4GpC;;;OAGG;YACW,aAAa;IAa3B;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9C;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IA4B3B;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;YACW,KAAK;IAwBnB;;OAEG;YACW,UAAU;IAkDxB;;OAEG;YACW,cAAc;IAqB5B;;OAEG;YACW,qBAAqB;IAoDnC;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;YACW,cAAc;IAmB5B;;OAEG;YACW,cAAc;CAgB/B"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/indexing/orchestrator.ts"],"names":[],"mappings":"AAqCA,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,aAAa,CAAqB;IAG1C,OAAO,CAAC,eAAe,CAAuB;IAG9C,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;;IAMpD;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA+GpC;;;OAGG;YACW,mBAAmB;IAYjC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU9C;;;OAGG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ5C;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IA4B3B;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;YACW,KAAK;IAwBnB;;OAEG;YACW,UAAU;IA8DxB;;OAEG;YACW,cAAc;IAqB5B;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;YACW,oBAAoB;IAsDlC;;OAEG;YACW,cAAc;IAmB5B;;OAEG;YACW,cAAc;CAgB/B"}
@@ -1,17 +1,18 @@
1
1
  // Job queue and coordination for indexing pipelines.
2
2
  // Fully config-driven: indexes sources referenced by search tools in mcp-docs.yaml.
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { simpleGit } from 'simple-git';
3
+ import fs from 'node:fs';
4
+ import path from 'node:path';
6
5
  import { getConfig, getServerConfig, getIndexableSourceNames } from '../config.js';
7
6
  import { EmbeddingClient } from './embeddings.js';
8
- import { SourceIndexer } from './source-indexer.js';
7
+ import { getProvider } from './providers/index.js';
8
+ import { IndexingPipeline } from './pipeline.js';
9
9
  import { getIndexState, upsertIndexState, } from '../db/queries.js';
10
+ import { isFileSourceConfig } from '../types.js';
10
11
  /**
11
12
  * Find all source configs that reference a given repo URL.
12
13
  */
13
14
  function getSourcesByRepo(repoUrl) {
14
- return getServerConfig().sources.filter(s => s.repo === repoUrl);
15
+ return getServerConfig().sources.filter(s => isFileSourceConfig(s) && s.repo === repoUrl);
15
16
  }
16
17
  function getStaleThresholdMs() {
17
18
  const serverCfg = getServerConfig();
@@ -67,89 +68,93 @@ export class IndexingOrchestrator {
67
68
  return;
68
69
  }
69
70
  // Queue incremental reindexes for each affected git-backed repo
70
- const reposToReindex = new Set(sourcesNeedingFullReindex.filter(s => s.repo).map(s => s.repo));
71
+ const reposToReindex = new Set();
72
+ for (const s of sourcesNeedingFullReindex) {
73
+ if (isFileSourceConfig(s) && s.repo)
74
+ reposToReindex.add(s.repo);
75
+ }
71
76
  for (const repoUrl of reposToReindex) {
72
77
  this.queueIncrementalReindex(repoUrl);
73
78
  }
74
79
  // Local sources (no repo) get queued as a full reindex of just those sources
75
- const localSources = sourcesNeedingFullReindex.filter(s => !s.repo);
80
+ const localSources = sourcesNeedingFullReindex.filter(s => isFileSourceConfig(s) && !s.repo);
76
81
  if (localSources.length > 0) {
77
82
  this.queue.push({ type: 'full-reindex-local', sources: localSources });
78
83
  this.drain().catch(err => console.error('[orchestrator] drain() failed:', err));
79
84
  }
85
+ // Non-file sources (e.g., Slack) that need reindexing
86
+ const nonFileSources = sourcesNeedingFullReindex.filter(s => !isFileSourceConfig(s));
87
+ for (const source of nonFileSources) {
88
+ this.queueSourceReindex(source.name);
89
+ }
80
90
  }
81
91
  if (sourcesOk.length === 0)
82
92
  return;
83
93
  // Local sources in sourcesOk have no remote to check — always reindex on startup
84
- const localSourcesOk = sourcesOk.filter(s => !s.repo);
94
+ const localSourcesOk = sourcesOk.filter(s => isFileSourceConfig(s) && !s.repo);
85
95
  if (localSourcesOk.length > 0) {
86
96
  console.log(`[orchestrator] Queuing reindex for ${localSourcesOk.length} local source(s)`);
87
97
  this.queue.push({ type: 'full-reindex-local', sources: localSourcesOk });
88
98
  this.drain().catch(err => console.error('[orchestrator] drain() failed:', err));
89
99
  }
90
100
  console.log('[orchestrator] Checking remotes for changes on indexed sources...');
91
- // Only check remotes for git-backed sources
92
- const repos = [...new Set(sourcesOk.filter(s => s.repo).map(s => s.repo))];
93
- for (const repoUrl of repos) {
101
+ // Check each git-backed source for changes
102
+ const gitSourcesOk = sourcesOk.filter(s => isFileSourceConfig(s) && s.repo);
103
+ for (const source of gitSourcesOk) {
94
104
  try {
95
- const remoteHead = await this.getRemoteHead(repoUrl);
96
- const sources = getSourcesByRepo(repoUrl).filter(s => indexableNames.has(s.name));
97
- let anyChanged = false;
98
- for (const source of sources) {
99
- const state = await getIndexState(source.type, source.name);
100
- if (state?.last_commit_sha !== remoteHead) {
101
- anyChanged = true;
102
- break;
105
+ const currentToken = await this.getSourceStateToken(source);
106
+ const state = await getIndexState(source.type, source.name);
107
+ if (currentToken === null || state?.last_commit_sha !== currentToken) {
108
+ const reason = currentToken === null
109
+ ? 'source unavailable (clone missing?)'
110
+ : `remote ${currentToken.slice(0, 8)} differs from indexed`;
111
+ console.log(`[orchestrator] ${reason} for ${source.name} — queuing reindex`);
112
+ if (isFileSourceConfig(source) && source.repo) {
113
+ this.queueIncrementalReindex(source.repo);
103
114
  }
104
115
  }
105
- // Even if DB says current, verify clone dir exists (fresh container = empty /tmp)
106
- const repoName = repoUrl.split('/').pop()?.replace(/\.git$/, '') ?? '';
107
- const cloneDir = getConfig().cloneDir;
108
- const repoDir = path.join(cloneDir, repoName);
109
- const cloneMissing = !fs.existsSync(repoDir);
110
- if (anyChanged || cloneMissing) {
111
- const reason = cloneMissing
112
- ? `clone dir missing at ${repoDir}`
113
- : `remote HEAD ${remoteHead.slice(0, 8)} differs from indexed`;
114
- console.log(`[orchestrator] ${reason} for ${repoUrl} — queuing incremental reindex`);
115
- this.queueIncrementalReindex(repoUrl);
116
- }
117
116
  else {
118
- console.log(`[orchestrator] Index current at ${remoteHead.slice(0, 8)}`);
117
+ console.log(`[orchestrator] ${source.name} index current at ${currentToken.slice(0, 8)}`);
119
118
  }
120
119
  }
121
120
  catch (err) {
122
- // If we can't check remote, fall back to age-based staleness
123
- console.warn(`[orchestrator] Failed to check remote HEAD for ${repoUrl}, falling back to age check:`, err);
124
- const repoSources = getSourcesByRepo(repoUrl);
125
- const firstState = await getIndexState(repoSources[0].type, repoSources[0].name);
126
- if (this.isStale(firstState)) {
127
- const thresholdHours = getServerConfig().indexing?.stale_threshold_hours ?? 24;
128
- console.log(`[orchestrator] Index for ${repoUrl} is stale (>${thresholdHours}h) — queuing full reindex`);
121
+ console.warn(`[orchestrator] Failed to check state for ${source.name}, falling back to age check:`, err);
122
+ const state = await getIndexState(source.type, source.name);
123
+ if (this.isStale(state)) {
124
+ console.log(`[orchestrator] Index for ${source.name} is stale — queuing full reindex`);
129
125
  this.queueFullReindex();
130
126
  }
131
- else {
132
- console.log(`[orchestrator] Index for ${repoUrl} appears fresh, skipping`);
133
- }
127
+ }
128
+ }
129
+ // Ensure git repos are cloned even when index is current.
130
+ // On fresh deploys, the container has no local clones but the DB may have valid state.
131
+ // Bash tools need the clone directories to build their filesystem.
132
+ const cloneDir = getConfig().cloneDir;
133
+ for (const source of gitSourcesOk) {
134
+ if (!isFileSourceConfig(source) || !source.repo)
135
+ continue;
136
+ const repoName = source.repo.replace(/\.git$/, '').split('/').pop();
137
+ const repoDir = path.join(cloneDir, repoName);
138
+ if (!fs.existsSync(repoDir)) {
139
+ console.log(`[orchestrator] Clone directory missing for ${source.name}, queuing reindex to populate`);
140
+ this.queueIncrementalReindex(source.repo);
134
141
  }
135
142
  }
136
143
  }
137
144
  /**
138
- * Get the HEAD SHA of a remote repo without cloning.
139
- * Uses `git ls-remote` which only fetches refs.
145
+ * Get the current state token for a source without acquiring items.
146
+ * Returns null if the source is unavailable.
140
147
  */
141
- async getRemoteHead(repoUrl) {
148
+ async getSourceStateToken(source) {
142
149
  const config = getConfig();
143
- let url = repoUrl;
144
- if (config.githubToken) {
145
- url = repoUrl.replace('https://github.com/', `https://x-access-token:${config.githubToken}@github.com/`);
146
- }
147
- const git = simpleGit();
148
- const result = await git.listRemote([url, 'HEAD']);
149
- const sha = result.split('\t')[0]?.trim();
150
- if (!sha)
151
- throw new Error(`Could not resolve HEAD for ${repoUrl}`);
152
- return sha;
150
+ const providerOptions = {
151
+ cloneDir: config.cloneDir,
152
+ githubToken: config.githubToken,
153
+ slackBotToken: config.slackBotToken,
154
+ discordBotToken: config.discordBotToken,
155
+ };
156
+ const provider = getProvider(source.type)(source, providerOptions);
157
+ return provider.getCurrentStateToken();
153
158
  }
154
159
  /**
155
160
  * Queue a full re-index of all sources. Returns immediately.
@@ -171,6 +176,17 @@ export class IndexingOrchestrator {
171
176
  console.error('[orchestrator] drain() failed:', err);
172
177
  });
173
178
  }
179
+ /**
180
+ * Queue a reindex for a single named source. Returns immediately.
181
+ * Used by webhook handlers to trigger reindexing of specific sources.
182
+ */
183
+ queueSourceReindex(sourceName) {
184
+ this.queue.push({ type: 'source-reindex', sourceName });
185
+ console.log(`[orchestrator] Source re-index queued for ${sourceName}`);
186
+ this.drain().catch((err) => {
187
+ console.error('[orchestrator] drain() failed:', err);
188
+ });
189
+ }
174
190
  /**
175
191
  * Returns true if any indexing job is currently running.
176
192
  */
@@ -276,6 +292,19 @@ export class IndexingOrchestrator {
276
292
  await this.runIncrementalReindex(embeddingClient, config.cloneDir, config.githubToken, job.repoUrl);
277
293
  affectedSourceNames = getSourcesByRepo(job.repoUrl).map(s => s.name);
278
294
  }
295
+ else if (job.type === 'source-reindex') {
296
+ if (!job.sourceName) {
297
+ console.warn('[orchestrator] source-reindex job has no sourceName, skipping');
298
+ return;
299
+ }
300
+ const sourceConfig = serverCfg2.sources.find(s => s.name === job.sourceName);
301
+ if (!sourceConfig) {
302
+ console.warn(`[orchestrator] source-reindex: source "${job.sourceName}" not found in config`);
303
+ return;
304
+ }
305
+ await this.indexSourceWithState(sourceConfig, embeddingClient, config.cloneDir);
306
+ affectedSourceNames = [job.sourceName];
307
+ }
279
308
  if (affectedSourceNames.length > 0 && this.onReindexComplete) {
280
309
  try {
281
310
  this.onReindexComplete(affectedSourceNames);
@@ -305,38 +334,7 @@ export class IndexingOrchestrator {
305
334
  const indexableNames = getIndexableSourceNames();
306
335
  const sources = getSourcesByRepo(repoUrl).filter(s => indexableNames.has(s.name));
307
336
  for (const sourceConfig of sources) {
308
- const state = await getIndexState(sourceConfig.type, sourceConfig.name);
309
- if (state?.last_commit_sha) {
310
- await this.withSourceLock(`${sourceConfig.type}:${sourceConfig.name}`, async () => {
311
- await this.setIndexStatus(sourceConfig.type, sourceConfig.name, 'indexing');
312
- try {
313
- const indexer = new SourceIndexer(sourceConfig, embeddingClient, cloneDir, githubToken);
314
- await indexer.incrementalIndex(state.last_commit_sha);
315
- const headSha = await indexer.getHeadSha();
316
- await upsertIndexState({
317
- source_type: sourceConfig.type,
318
- source_key: sourceConfig.name,
319
- last_commit_sha: headSha,
320
- last_indexed_at: new Date(),
321
- status: 'idle',
322
- });
323
- }
324
- catch (err) {
325
- console.error(`[orchestrator] Incremental reindex failed for ${sourceConfig.name}:`, err);
326
- try {
327
- await this.setIndexStatus(sourceConfig.type, sourceConfig.name, 'error', err instanceof Error ? err.message : String(err));
328
- }
329
- catch (statusErr) {
330
- console.error('[orchestrator] Failed to update index status:', statusErr);
331
- }
332
- // Don't rethrow — continue with remaining sources
333
- }
334
- });
335
- }
336
- else {
337
- // No previous state — do a full index for this source
338
- await this.indexSourceWithState(sourceConfig, embeddingClient, cloneDir, githubToken);
339
- }
337
+ await this.indexSourceWithState(sourceConfig, embeddingClient, cloneDir, githubToken);
340
338
  }
341
339
  console.log(`[orchestrator] Incremental re-index complete for ${repoUrl}`);
342
340
  }
@@ -346,21 +344,29 @@ export class IndexingOrchestrator {
346
344
  async indexSourceWithState(sourceConfig, embeddingClient, cloneDir, githubToken) {
347
345
  const lockKey = `${sourceConfig.type}:${sourceConfig.name}`;
348
346
  await this.withSourceLock(lockKey, async () => {
349
- const indexer = new SourceIndexer(sourceConfig, embeddingClient, cloneDir, githubToken);
347
+ const providerOptions = { cloneDir, githubToken, slackBotToken: getConfig().slackBotToken, discordBotToken: getConfig().discordBotToken };
348
+ const provider = getProvider(sourceConfig.type)(sourceConfig, providerOptions);
349
+ const pipeline = new IndexingPipeline(embeddingClient, sourceConfig);
350
350
  await this.setIndexStatus(sourceConfig.type, sourceConfig.name, 'indexing');
351
351
  try {
352
352
  const state = await getIndexState(sourceConfig.type, sourceConfig.name);
353
+ let result;
353
354
  if (state?.last_commit_sha) {
354
- await indexer.incrementalIndex(state.last_commit_sha);
355
+ result = await provider.incrementalAcquire(state.last_commit_sha);
355
356
  }
356
357
  else {
357
- await indexer.fullIndex();
358
+ result = await provider.fullAcquire();
359
+ }
360
+ if (result.removedIds.length > 0) {
361
+ await pipeline.removeItems(result.removedIds);
362
+ }
363
+ if (result.items.length > 0) {
364
+ await pipeline.indexItems(result.items, result.stateToken);
358
365
  }
359
- const headSha = await indexer.getHeadSha();
360
366
  await upsertIndexState({
361
367
  source_type: sourceConfig.type,
362
368
  source_key: sourceConfig.name,
363
- last_commit_sha: headSha,
369
+ last_commit_sha: result.stateToken,
364
370
  last_indexed_at: new Date(),
365
371
  status: 'idle',
366
372
  });
@@ -374,7 +380,6 @@ export class IndexingOrchestrator {
374
380
  catch (statusErr) {
375
381
  console.error('[orchestrator] Failed to update index status:', statusErr);
376
382
  }
377
- // Don't rethrow — continue with remaining sources
378
383
  }
379
384
  });
380
385
  }
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/indexing/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/indexing/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { EmbeddingClient } from './embeddings.js';
2
+ import type { SourceConfig } from '../types.js';
3
+ import type { ContentItem } from './providers/types.js';
4
+ export declare class IndexingPipeline {
5
+ private sourceConfig;
6
+ private embeddingClient;
7
+ private logPrefix;
8
+ constructor(embeddingClient: EmbeddingClient, sourceConfig: SourceConfig);
9
+ /**
10
+ * Index a batch of content items: chunk → embed → upsert.
11
+ * Each item's existing chunks are deleted first to handle shrinkage.
12
+ */
13
+ indexItems(items: ContentItem[], stateToken: string): Promise<void>;
14
+ /** Remove items from the index by ID. */
15
+ removeItems(ids: string[]): Promise<void>;
16
+ private indexItem;
17
+ }
18
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/indexing/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,qBAAa,gBAAgB;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,SAAS,CAAS;gBAEd,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY;IAMxE;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,yCAAyC;IACnC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAMjC,SAAS;CAmC1B"}
@@ -0,0 +1,68 @@
1
+ // IndexingPipeline — source-agnostic chunk → embed → upsert logic.
2
+ import { getChunker } from './chunking/index.js';
3
+ import { deriveUrl } from './url-derivation.js';
4
+ import { upsertChunks, deleteChunksByFile } from '../db/queries.js';
5
+ import { isFileSourceConfig } from '../types.js';
6
+ export class IndexingPipeline {
7
+ sourceConfig;
8
+ embeddingClient;
9
+ logPrefix;
10
+ constructor(embeddingClient, sourceConfig) {
11
+ this.embeddingClient = embeddingClient;
12
+ this.sourceConfig = sourceConfig;
13
+ this.logPrefix = `[pipeline:${sourceConfig.name}]`;
14
+ }
15
+ /**
16
+ * Index a batch of content items: chunk → embed → upsert.
17
+ * Each item's existing chunks are deleted first to handle shrinkage.
18
+ */
19
+ async indexItems(items, stateToken) {
20
+ for (const item of items) {
21
+ try {
22
+ await this.indexItem(item, stateToken);
23
+ }
24
+ catch (err) {
25
+ const msg = err instanceof Error ? err.message : String(err);
26
+ console.error(`${this.logPrefix} Failed to index ${item.id}: ${msg}`);
27
+ }
28
+ }
29
+ }
30
+ /** Remove items from the index by ID. */
31
+ async removeItems(ids) {
32
+ for (const id of ids) {
33
+ await deleteChunksByFile(this.sourceConfig.name, id);
34
+ }
35
+ }
36
+ async indexItem(item, stateToken) {
37
+ const chunker = getChunker(this.sourceConfig.type);
38
+ const chunkOutputs = chunker(item.content, item.id, this.sourceConfig);
39
+ if (chunkOutputs.length === 0) {
40
+ return;
41
+ }
42
+ const texts = chunkOutputs.map(c => c.content);
43
+ const embeddings = await this.embeddingClient.embedBatch(texts);
44
+ const sourceUrl = item.sourceUrl ?? (isFileSourceConfig(this.sourceConfig) ? deriveUrl(item.id, this.sourceConfig) : null);
45
+ const chunks = chunkOutputs.map((chunk, i) => ({
46
+ source_name: this.sourceConfig.name,
47
+ source_url: sourceUrl,
48
+ title: chunk.title ?? item.title ?? null,
49
+ content: chunk.content,
50
+ embedding: embeddings[i],
51
+ repo_url: isFileSourceConfig(this.sourceConfig) ? (this.sourceConfig.repo ?? null) : null,
52
+ file_path: item.id,
53
+ start_line: chunk.startLine ?? null,
54
+ end_line: chunk.endLine ?? null,
55
+ language: chunk.language ?? null,
56
+ chunk_index: chunk.chunkIndex,
57
+ metadata: {
58
+ ...(chunk.headingPath ? { headingPath: chunk.headingPath } : {}),
59
+ ...(item.metadata ?? {}),
60
+ },
61
+ commit_sha: stateToken,
62
+ version: this.sourceConfig.version ?? null,
63
+ }));
64
+ await deleteChunksByFile(this.sourceConfig.name, item.id);
65
+ await upsertChunks(chunks);
66
+ }
67
+ }
68
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/indexing/pipeline.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,OAAO,gBAAgB;IACjB,YAAY,CAAe;IAC3B,eAAe,CAAkB;IACjC,SAAS,CAAS;IAE1B,YAAY,eAAgC,EAAE,YAA0B;QACpE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,aAAa,YAAY,CAAC,IAAI,GAAG,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,KAAoB,EAAE,UAAkB;QACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3C,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,oBAAoB,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CAAC,GAAa;QAC3B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAiB,EAAE,UAAkB;QACzD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE3H,MAAM,MAAM,GAAY,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;YACnC,UAAU,EAAE,SAAS;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YACxC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACxB,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACzF,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,UAAU,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;YACnC,QAAQ,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;YAChC,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,QAAQ,EAAE;gBACN,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;aAC3B;YACD,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI;SAC7C,CAAC,CAAC,CAAC;QAEJ,MAAM,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACJ"}