@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @copilotkit/pathfinder
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - **Data Provider Abstraction**: Refactored SourceIndexer into DataProvider interface + IndexingPipeline, enabling API-based sources alongside file-based sources
8
+ - **Slack Data Provider**: Index Slack threads as searchable Q&A knowledge via LLM distillation (gpt-4o-mini). Configurable channels, confidence threshold, emoji-triggered reindexing
9
+ - **Discord Data Provider**: Index Discord text channels (LLM distillation) and forum channels (direct Q&A extraction at confidence 1.0). Forum posts are inherently Q&A-shaped — no LLM needed
10
+ - **FAQ Endpoint** (`/faq.txt`): Serves Q&A pairs from all FAQ-category sources, filtered by confidence at query time. Advertised via Link header
11
+ - **Knowledge MCP Tool**: New `knowledge` tool type with browse mode (full FAQ listing) and search mode (vector search scoped to FAQ sources)
12
+ - **`pathfinder validate` CLI Command**: Validates YAML config, checks env vars, probes source connectivity. Exit code 1 on errors
13
+ - **Q&A Chunker**: Renamed from slack-specific to source-agnostic, registered for both slack and discord source types
14
+
15
+ ### Patch Changes
16
+
17
+ - Fix bash filesystem empty after fresh deploy when DB already has current index state
18
+ - Fix pathfinder-docs Railway service missing deployment trigger
19
+ - Always refresh bash instances after startup index check completes
20
+ - Rename "Migrate" to "Switch" in docs nav (matches aimock)
21
+ - Update docs: config reference (Slack, Discord, Knowledge tool, jump links), usage (FAQ endpoint, validate command), deploy (new env vars), README
22
+
3
23
  ## 1.4.0
4
24
 
5
25
  ### Minor Changes
package/README.md CHANGED
@@ -57,16 +57,18 @@ Pathfinder indexes your GitHub repos — docs (Markdown, MDX, HTML) and source c
57
57
  | **Search** | Semantic search over indexed content | `search-docs("how to authenticate")` |
58
58
  | **Bash** | Virtual filesystem with find, grep, cat, ls | `explore-docs("cat /docs/quickstart.mdx")` |
59
59
  | **Collect** | Structured data collection from agents | `submit-feedback(rating: "helpful")` |
60
+ | **Knowledge** | Browse/search FAQ pairs from conversational sources | `knowledge-base("how to deploy")` |
60
61
 
61
62
  ## Features
62
63
 
63
64
  - **[Semantic Search](https://pathfinder.copilotkit.dev/search)** — pgvector RAG with configurable chunk sizes, overlap, and score thresholds
64
65
  - **[Filesystem Exploration](https://pathfinder.copilotkit.dev/search)** — QuickJS WASM sandbox with session state, `qmd` semantic grep, `related` files
65
- - **[4 Source Types](https://pathfinder.copilotkit.dev/config)** — Markdown, code, raw-text, HTML — with pluggable chunker registry
66
+ - **[6 Source Types](https://pathfinder.copilotkit.dev/config)** — Markdown, code, raw-text, HTML, Slack, Discord — with pluggable chunker registry
66
67
  - **[Config-Driven](https://pathfinder.copilotkit.dev/config)** — Everything in one `pathfinder.yaml`: sources, tools, embedding, indexing, webhooks
67
68
  - **[Client Setup](https://pathfinder.copilotkit.dev/clients)** — Claude Desktop, Claude Code, Cursor, Codex, VS Code, any Streamable HTTP client
68
69
  - **[Docker + Railway](https://pathfinder.copilotkit.dev/deploy)** — Container image, docker-compose, Railway one-click
69
- - **[Auto-Generated Endpoints](https://pathfinder.copilotkit.dev/usage)** — `/llms.txt`, `/llms-full.txt`, `/.well-known/skills/default/skill.md`
70
+ - **[Conversational Sources](https://pathfinder.copilotkit.dev/config)** — Slack threads and Discord forums distilled into searchable Q&A pairs
71
+ - **[Auto-Generated Endpoints](https://pathfinder.copilotkit.dev/usage)** — `/llms.txt`, `/llms-full.txt`, `/faq.txt`, `/.well-known/skills/default/skill.md`
70
72
  - **[Webhook Reindexing](https://pathfinder.copilotkit.dev/deploy)** — GitHub push triggers incremental reindex
71
73
  - **[IP Rate Limiting](https://pathfinder.copilotkit.dev/config)** — Per-IP session caps and configurable TTL
72
74
 
@@ -79,6 +81,9 @@ npx @copilotkit/pathfinder init
79
81
  # Start server (uses PGlite if no DATABASE_URL)
80
82
  npx @copilotkit/pathfinder serve
81
83
 
84
+ # Validate config, env vars, and source connectivity
85
+ npx @copilotkit/pathfinder validate
86
+
82
87
  # Docker with Postgres
83
88
  docker compose up
84
89
  ```
package/dist/cli.js CHANGED
@@ -8,7 +8,7 @@ const program = new Command();
8
8
  program
9
9
  .name("pathfinder")
10
10
  .description("Agentic docs retrieval for AI agents")
11
- .version("1.1.0");
11
+ .version("1.5.0");
12
12
  program
13
13
  .command("init")
14
14
  .description("Scaffold a new Pathfinder project in the current directory")
@@ -56,5 +56,15 @@ program
56
56
  configPath: opts.config,
57
57
  });
58
58
  });
59
+ program
60
+ .command('validate')
61
+ .description('Validate config and probe source connectivity')
62
+ .option('-c, --config <path>', 'Path to pathfinder.yaml')
63
+ .action(async (opts) => {
64
+ const { validateConfig, formatValidationResult } = await import('./validate.js');
65
+ const result = await validateConfig(opts.config);
66
+ console.log(formatValidationResult(result));
67
+ process.exit(result.errors.length > 0 ? 1 : 0);
68
+ });
59
69
  program.parse();
60
70
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACJ,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAC3E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACnB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,WAAW,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU,EAAE,IAAI,CAAC,MAAM;KAC1B,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACnB,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/dist/config.d.ts CHANGED
@@ -9,11 +9,19 @@ export interface Config {
9
9
  nodeEnv: string;
10
10
  logLevel: string;
11
11
  cloneDir: string;
12
+ slackBotToken: string;
13
+ slackSigningSecret: string;
14
+ discordBotToken: string;
15
+ discordPublicKey: string;
12
16
  }
13
17
  /**
14
18
  * Check whether any search tools are configured (requires embeddings + indexing).
15
19
  */
16
20
  export declare function hasSearchTools(): boolean;
21
+ /**
22
+ * Check whether any knowledge tools are configured (requires embeddings + indexing).
23
+ */
24
+ export declare function hasKnowledgeTools(): boolean;
17
25
  /**
18
26
  * Check whether any collect tools are configured (requires database).
19
27
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAInE,MAAM,WAAW,MAAM;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAK/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,GAAG,CAAC,MAAM,CAAC,CAGrD;AA0CD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,eAAO,MAAM,MAAM,QAIjB,CAAC;AA+HH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,CAAC;AAIvB,OAAO,EAAsB,KAAK,YAAY,EAAyB,MAAM,YAAY,CAAC;AAI1F,MAAM,WAAW,MAAM;IACnB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAK/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,GAAG,CAAC,MAAM,CAAC,CAKrD;AA8DD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,eAAO,MAAM,MAAM,QAIjB,CAAC;AAwJH,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}
package/dist/config.js CHANGED
@@ -3,13 +3,19 @@ import 'dotenv/config';
3
3
  import { readFileSync, existsSync } from 'node:fs';
4
4
  import { resolve } from 'node:path';
5
5
  import { parse as parseYaml } from 'yaml';
6
- import { ServerConfigSchema } from './types.js';
6
+ import { ServerConfigSchema, isDiscordSourceConfig } from './types.js';
7
7
  /**
8
8
  * Check whether any search tools are configured (requires embeddings + indexing).
9
9
  */
10
10
  export function hasSearchTools() {
11
11
  return getServerConfig().tools.some(t => t.type === 'search');
12
12
  }
13
+ /**
14
+ * Check whether any knowledge tools are configured (requires embeddings + indexing).
15
+ */
16
+ export function hasKnowledgeTools() {
17
+ return getServerConfig().tools.some(t => t.type === 'knowledge');
18
+ }
13
19
  /**
14
20
  * Check whether any collect tools are configured (requires database).
15
21
  */
@@ -27,13 +33,15 @@ export function hasBashSemanticSearch() {
27
33
  * Get the set of source names that need indexing (only those referenced by search tools).
28
34
  */
29
35
  export function getIndexableSourceNames() {
30
- const searchTools = getServerConfig().tools.filter(t => t.type === 'search');
31
- return new Set(searchTools.map(t => t.source));
36
+ const cfg = getServerConfig();
37
+ const searchSources = cfg.tools.filter(t => t.type === 'search').map(t => t.source);
38
+ const knowledgeSources = cfg.tools.filter(t => t.type === 'knowledge').flatMap(t => t.sources);
39
+ return new Set([...searchSources, ...knowledgeSources]);
32
40
  }
33
41
  let cachedConfig = null;
34
42
  function parseConfig() {
35
43
  const missing = [];
36
- const needsRag = hasSearchTools();
44
+ const needsRag = hasSearchTools() || hasKnowledgeTools();
37
45
  const needsDb = needsRag || hasCollectTools() || hasBashSemanticSearch();
38
46
  const databaseUrl = process.env.DATABASE_URL;
39
47
  if (!databaseUrl && needsDb)
@@ -42,6 +50,25 @@ function parseConfig() {
42
50
  if (!openaiApiKey && needsRag)
43
51
  missing.push('OPENAI_API_KEY');
44
52
  const githubWebhookSecret = process.env.GITHUB_WEBHOOK_SECRET ?? '';
53
+ // Slack credentials — required when any slack source is configured
54
+ const hasSlackSource = getServerConfig().sources.some(s => s.type === 'slack');
55
+ const slackBotToken = process.env.SLACK_BOT_TOKEN ?? '';
56
+ const slackSigningSecret = process.env.SLACK_SIGNING_SECRET ?? '';
57
+ if (hasSlackSource && !slackBotToken)
58
+ missing.push('SLACK_BOT_TOKEN');
59
+ if (hasSlackSource && !openaiApiKey)
60
+ missing.push('OPENAI_API_KEY (required for Slack distillation)');
61
+ // Discord credentials — required when any discord source is configured
62
+ const hasDiscordSource = getServerConfig().sources.some(s => s.type === 'discord');
63
+ const hasDiscordTextChannels = getServerConfig().sources.some(s => isDiscordSourceConfig(s) && s.channels.some(c => c.type === 'text'));
64
+ const discordBotToken = process.env.DISCORD_BOT_TOKEN ?? '';
65
+ const discordPublicKey = process.env.DISCORD_PUBLIC_KEY ?? '';
66
+ if (hasDiscordSource && !discordBotToken)
67
+ missing.push('DISCORD_BOT_TOKEN');
68
+ if (hasDiscordSource && !discordPublicKey)
69
+ missing.push('DISCORD_PUBLIC_KEY');
70
+ if (hasDiscordTextChannels && !openaiApiKey)
71
+ missing.push('OPENAI_API_KEY (required for Discord text channel distillation)');
45
72
  if (missing.length > 0) {
46
73
  throw new Error(`Missing required environment variables: ${missing.join(', ')}. ` +
47
74
  `Set them before starting the server.`);
@@ -59,6 +86,10 @@ function parseConfig() {
59
86
  nodeEnv: process.env.NODE_ENV || 'development',
60
87
  logLevel: process.env.LOG_LEVEL || 'info',
61
88
  cloneDir: process.env.CLONE_DIR || '/tmp/mcp-repos',
89
+ slackBotToken,
90
+ slackSigningSecret,
91
+ discordBotToken,
92
+ discordPublicKey,
62
93
  };
63
94
  }
64
95
  export function getConfig() {
@@ -144,6 +175,15 @@ function loadServerConfig() {
144
175
  throw new Error(`Tool "${tool.name}" references source "${tool.source}" which is not defined in sources.`);
145
176
  }
146
177
  }
178
+ // Cross-validate: every knowledge tool's sources must reference existing source names
179
+ const knowledgeTools = result.data.tools.filter(t => t.type === 'knowledge');
180
+ for (const tool of knowledgeTools) {
181
+ for (const src of tool.sources) {
182
+ if (!sourceNames.has(src)) {
183
+ throw new Error(`Knowledge tool "${tool.name}" references source "${src}" which is not defined in sources.`);
184
+ }
185
+ }
186
+ }
147
187
  // Cross-validate: webhook repo_sources and path_triggers must reference valid source names
148
188
  if (result.data.webhook) {
149
189
  const wh = result.data.webhook;
@@ -160,8 +200,21 @@ function loadServerConfig() {
160
200
  }
161
201
  }
162
202
  }
163
- // Validate local source paths exist
203
+ // Warn if knowledge tools reference non-FAQ sources
204
+ for (const tool of result.data.tools) {
205
+ if (tool.type === 'knowledge') {
206
+ for (const srcName of tool.sources) {
207
+ const src = result.data.sources.find(s => s.name === srcName);
208
+ if (src && (!('category' in src) || src.category !== 'faq')) {
209
+ console.warn(`[config] Knowledge tool "${tool.name}" references source "${srcName}" which does not have category: "faq" — queries may return empty results`);
210
+ }
211
+ }
212
+ }
213
+ }
214
+ // Validate local source paths exist (file-based sources only)
164
215
  for (const source of result.data.sources) {
216
+ if (source.type === 'slack' || source.type === 'discord')
217
+ continue;
165
218
  if (!source.repo) {
166
219
  const resolved = resolve(source.path);
167
220
  if (!existsSync(resolved)) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
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
4
  * Optionally filtered by source_name and/or version. Returns results ordered
@@ -55,6 +55,12 @@ export declare function getAllChunksForLlms(): Promise<{
55
55
  content: string;
56
56
  chunk_index: number;
57
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[]>;
58
64
  /**
59
65
  * Get aggregate statistics for the health endpoint.
60
66
  */
@@ -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/E;;;;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;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA8BzD"}
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"}
@@ -241,6 +241,61 @@ export async function getAllChunksForLlms() {
241
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
242
  return result.rows;
243
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
+ }
244
299
  /**
245
300
  * Get aggregate statistics for the health endpoint.
246
301
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/db/queries.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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"}
@@ -18,4 +18,7 @@ registerChunker('markdown', chunkMarkdown);
18
18
  registerChunker('code', chunkCode);
19
19
  registerChunker('raw-text', chunkRawText);
20
20
  registerChunker('html', chunkHtml);
21
+ import { chunkQa } from './qa.js';
22
+ registerChunker('slack', chunkQa);
23
+ registerChunker('discord', chunkQa);
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexing/chunking/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAM9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,EAAa;IACvD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,OAAO,EAAE,CAAC;AACd,CAAC;AAED,+BAA+B;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,eAAe,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3C,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC1C,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/indexing/chunking/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAM9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,EAAa;IACvD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,iBAAiB,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,OAAO,EAAE,CAAC;AACd,CAAC;AAED,+BAA+B;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,eAAe,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3C,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC1C,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ChunkOutput, SourceConfig } from '../../types.js';
2
+ /**
3
+ * Chunk Q&A content. Each content item from a FAQ-category provider
4
+ * is a single Q&A pair, already sized appropriately.
5
+ * The chunker formats it and returns a single ChunkOutput.
6
+ */
7
+ export declare function chunkQa(content: string, filePath: string, config: SourceConfig): ChunkOutput[];
8
+ //# sourceMappingURL=qa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa.d.ts","sourceRoot":"","sources":["../../../src/indexing/chunking/qa.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAe9F"}
@@ -0,0 +1,22 @@
1
+ // Q&A chunker — formats distilled Q&A pairs for embedding.
2
+ // Source-agnostic: used by any source that produces Q&A-formatted content.
3
+ /**
4
+ * Chunk Q&A content. Each content item from a FAQ-category provider
5
+ * is a single Q&A pair, already sized appropriately.
6
+ * The chunker formats it and returns a single ChunkOutput.
7
+ */
8
+ export function chunkQa(content, filePath, config) {
9
+ if (!content || !content.trim()) {
10
+ return [];
11
+ }
12
+ // The content is already formatted as "Q: ...\n\nA: ..." by the provider.
13
+ // Extract the question for use as title.
14
+ const questionMatch = content.match(/^Q:\s*(.+?)(?:\n|$)/);
15
+ const title = questionMatch ? questionMatch[1].trim() : undefined;
16
+ return [{
17
+ content: content.trim(),
18
+ title,
19
+ chunkIndex: 0,
20
+ }];
21
+ }
22
+ //# sourceMappingURL=qa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa.js","sourceRoot":"","sources":["../../../src/indexing/chunking/qa.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,2EAA2E;AAI3E;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,QAAgB,EAAE,MAAoB;IAC3E,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,OAAO,CAAC;YACJ,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;YACvB,KAAK;YACL,UAAU,EAAE,CAAC;SAChB,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,29 @@
1
+ import OpenAI from 'openai';
2
+ export interface ThreadMessage {
3
+ author: string;
4
+ content: string;
5
+ timestamp: string;
6
+ reactions?: Array<{
7
+ name: string;
8
+ count: number;
9
+ }>;
10
+ }
11
+ export interface DistilledPair {
12
+ question: string;
13
+ answer: string;
14
+ confidence: number;
15
+ }
16
+ export interface DistillerResult {
17
+ pairs: DistilledPair[];
18
+ }
19
+ export interface DistillerOptions {
20
+ model?: string;
21
+ maxMessages?: number;
22
+ apiKey?: string;
23
+ client?: OpenAI;
24
+ }
25
+ /**
26
+ * Distill a conversation thread into Q&A pairs using an LLM.
27
+ */
28
+ export declare function distillThread(messages: ThreadMessage[], options?: DistillerOptions): Promise<DistillerResult>;
29
+ //# sourceMappingURL=distiller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distiller.d.ts","sourceRoot":"","sources":["../../src/indexing/distiller.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAI5B,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,aAAa;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAuCD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAyE1B"}