@alextis59/athena 1.0.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 (201) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +147 -0
  3. package/dist/agent/ask.d.ts +7 -0
  4. package/dist/agent/ask.d.ts.map +1 -0
  5. package/dist/agent/ask.js +35 -0
  6. package/dist/agent/ask.js.map +1 -0
  7. package/dist/agent/citations.d.ts +27 -0
  8. package/dist/agent/citations.d.ts.map +1 -0
  9. package/dist/agent/citations.js +190 -0
  10. package/dist/agent/citations.js.map +1 -0
  11. package/dist/agent/fake-provider.d.ts +9 -0
  12. package/dist/agent/fake-provider.d.ts.map +1 -0
  13. package/dist/agent/fake-provider.js +51 -0
  14. package/dist/agent/fake-provider.js.map +1 -0
  15. package/dist/agent/index.d.ts +10 -0
  16. package/dist/agent/index.d.ts.map +1 -0
  17. package/dist/agent/index.js +6 -0
  18. package/dist/agent/index.js.map +1 -0
  19. package/dist/agent/loop.d.ts +11 -0
  20. package/dist/agent/loop.d.ts.map +1 -0
  21. package/dist/agent/loop.js +156 -0
  22. package/dist/agent/loop.js.map +1 -0
  23. package/dist/agent/providers.d.ts +17 -0
  24. package/dist/agent/providers.d.ts.map +1 -0
  25. package/dist/agent/providers.js +171 -0
  26. package/dist/agent/providers.js.map +1 -0
  27. package/dist/agent/tools.d.ts +8 -0
  28. package/dist/agent/tools.d.ts.map +1 -0
  29. package/dist/agent/tools.js +233 -0
  30. package/dist/agent/tools.js.map +1 -0
  31. package/dist/agent/types.d.ts +84 -0
  32. package/dist/agent/types.d.ts.map +1 -0
  33. package/dist/agent/types.js +2 -0
  34. package/dist/agent/types.js.map +1 -0
  35. package/dist/cli/help.d.ts +2 -0
  36. package/dist/cli/help.d.ts.map +1 -0
  37. package/dist/cli/help.js +28 -0
  38. package/dist/cli/help.js.map +1 -0
  39. package/dist/cli/main.d.ts +3 -0
  40. package/dist/cli/main.d.ts.map +1 -0
  41. package/dist/cli/main.js +5 -0
  42. package/dist/cli/main.js.map +1 -0
  43. package/dist/cli/options.d.ts +21 -0
  44. package/dist/cli/options.d.ts.map +1 -0
  45. package/dist/cli/options.js +97 -0
  46. package/dist/cli/options.js.map +1 -0
  47. package/dist/cli/run.d.ts +21 -0
  48. package/dist/cli/run.d.ts.map +1 -0
  49. package/dist/cli/run.js +144 -0
  50. package/dist/cli/run.js.map +1 -0
  51. package/dist/config/index.d.ts +4 -0
  52. package/dist/config/index.d.ts.map +1 -0
  53. package/dist/config/index.js +3 -0
  54. package/dist/config/index.js.map +1 -0
  55. package/dist/config/loader.d.ts +14 -0
  56. package/dist/config/loader.d.ts.map +1 -0
  57. package/dist/config/loader.js +352 -0
  58. package/dist/config/loader.js.map +1 -0
  59. package/dist/config/schema.d.ts +6 -0
  60. package/dist/config/schema.d.ts.map +1 -0
  61. package/dist/config/schema.js +72 -0
  62. package/dist/config/schema.js.map +1 -0
  63. package/dist/config/types.d.ts +53 -0
  64. package/dist/config/types.d.ts.map +1 -0
  65. package/dist/config/types.js +2 -0
  66. package/dist/config/types.js.map +1 -0
  67. package/dist/doctor/doctor.d.ts +47 -0
  68. package/dist/doctor/doctor.d.ts.map +1 -0
  69. package/dist/doctor/doctor.js +159 -0
  70. package/dist/doctor/doctor.js.map +1 -0
  71. package/dist/embeddings/index.d.ts +117 -0
  72. package/dist/embeddings/index.d.ts.map +1 -0
  73. package/dist/embeddings/index.js +515 -0
  74. package/dist/embeddings/index.js.map +1 -0
  75. package/dist/errors.d.ts +19 -0
  76. package/dist/errors.d.ts.map +1 -0
  77. package/dist/errors.js +37 -0
  78. package/dist/errors.js.map +1 -0
  79. package/dist/index.d.ts +17 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +9 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/indexer/discovery.d.ts +10 -0
  84. package/dist/indexer/discovery.d.ts.map +1 -0
  85. package/dist/indexer/discovery.js +38 -0
  86. package/dist/indexer/discovery.js.map +1 -0
  87. package/dist/indexer/hash.d.ts +3 -0
  88. package/dist/indexer/hash.d.ts.map +1 -0
  89. package/dist/indexer/hash.js +11 -0
  90. package/dist/indexer/hash.js.map +1 -0
  91. package/dist/indexer/index.d.ts +7 -0
  92. package/dist/indexer/index.d.ts.map +1 -0
  93. package/dist/indexer/index.js +5 -0
  94. package/dist/indexer/index.js.map +1 -0
  95. package/dist/indexer/kinds.d.ts +4 -0
  96. package/dist/indexer/kinds.d.ts.map +1 -0
  97. package/dist/indexer/kinds.js +38 -0
  98. package/dist/indexer/kinds.js.map +1 -0
  99. package/dist/indexer/run.d.ts +42 -0
  100. package/dist/indexer/run.d.ts.map +1 -0
  101. package/dist/indexer/run.js +563 -0
  102. package/dist/indexer/run.js.map +1 -0
  103. package/dist/logging/logger.d.ts +11 -0
  104. package/dist/logging/logger.d.ts.map +1 -0
  105. package/dist/logging/logger.js +18 -0
  106. package/dist/logging/logger.js.map +1 -0
  107. package/dist/mcp/index.d.ts +35 -0
  108. package/dist/mcp/index.d.ts.map +1 -0
  109. package/dist/mcp/index.js +392 -0
  110. package/dist/mcp/index.js.map +1 -0
  111. package/dist/parsers/chunking.d.ts +4 -0
  112. package/dist/parsers/chunking.d.ts.map +1 -0
  113. package/dist/parsers/chunking.js +112 -0
  114. package/dist/parsers/chunking.js.map +1 -0
  115. package/dist/parsers/index.d.ts +8 -0
  116. package/dist/parsers/index.d.ts.map +1 -0
  117. package/dist/parsers/index.js +5 -0
  118. package/dist/parsers/index.js.map +1 -0
  119. package/dist/parsers/line-parser.d.ts +13 -0
  120. package/dist/parsers/line-parser.d.ts.map +1 -0
  121. package/dist/parsers/line-parser.js +242 -0
  122. package/dist/parsers/line-parser.js.map +1 -0
  123. package/dist/parsers/normalize.d.ts +4 -0
  124. package/dist/parsers/normalize.d.ts.map +1 -0
  125. package/dist/parsers/normalize.js +17 -0
  126. package/dist/parsers/normalize.js.map +1 -0
  127. package/dist/parsers/parser.d.ts +14 -0
  128. package/dist/parsers/parser.d.ts.map +1 -0
  129. package/dist/parsers/parser.js +77 -0
  130. package/dist/parsers/parser.js.map +1 -0
  131. package/dist/parsers/pdf2llm.d.ts +14 -0
  132. package/dist/parsers/pdf2llm.d.ts.map +1 -0
  133. package/dist/parsers/pdf2llm.js +215 -0
  134. package/dist/parsers/pdf2llm.js.map +1 -0
  135. package/dist/parsers/types.d.ts +48 -0
  136. package/dist/parsers/types.d.ts.map +1 -0
  137. package/dist/parsers/types.js +2 -0
  138. package/dist/parsers/types.js.map +1 -0
  139. package/dist/retrieval/index.d.ts +4 -0
  140. package/dist/retrieval/index.d.ts.map +1 -0
  141. package/dist/retrieval/index.js +3 -0
  142. package/dist/retrieval/index.js.map +1 -0
  143. package/dist/retrieval/schemas.d.ts +127 -0
  144. package/dist/retrieval/schemas.d.ts.map +1 -0
  145. package/dist/retrieval/schemas.js +65 -0
  146. package/dist/retrieval/schemas.js.map +1 -0
  147. package/dist/retrieval/tools.d.ts +31 -0
  148. package/dist/retrieval/tools.d.ts.map +1 -0
  149. package/dist/retrieval/tools.js +803 -0
  150. package/dist/retrieval/tools.js.map +1 -0
  151. package/dist/retrieval/types.d.ts +104 -0
  152. package/dist/retrieval/types.d.ts.map +1 -0
  153. package/dist/retrieval/types.js +2 -0
  154. package/dist/retrieval/types.js.map +1 -0
  155. package/dist/server/index.d.ts +3 -0
  156. package/dist/server/index.d.ts.map +1 -0
  157. package/dist/server/index.js +2 -0
  158. package/dist/server/index.js.map +1 -0
  159. package/dist/server/server.d.ts +49 -0
  160. package/dist/server/server.d.ts.map +1 -0
  161. package/dist/server/server.js +517 -0
  162. package/dist/server/server.js.map +1 -0
  163. package/dist/shared/types.d.ts +98 -0
  164. package/dist/shared/types.d.ts.map +1 -0
  165. package/dist/shared/types.js +2 -0
  166. package/dist/shared/types.js.map +1 -0
  167. package/dist/storage/database.d.ts +18 -0
  168. package/dist/storage/database.d.ts.map +1 -0
  169. package/dist/storage/database.js +66 -0
  170. package/dist/storage/database.js.map +1 -0
  171. package/dist/storage/index.d.ts +8 -0
  172. package/dist/storage/index.d.ts.map +1 -0
  173. package/dist/storage/index.js +5 -0
  174. package/dist/storage/index.js.map +1 -0
  175. package/dist/storage/migrations.d.ts +15 -0
  176. package/dist/storage/migrations.d.ts.map +1 -0
  177. package/dist/storage/migrations.js +170 -0
  178. package/dist/storage/migrations.js.map +1 -0
  179. package/dist/storage/paths.d.ts +15 -0
  180. package/dist/storage/paths.d.ts.map +1 -0
  181. package/dist/storage/paths.js +27 -0
  182. package/dist/storage/paths.js.map +1 -0
  183. package/dist/storage/schema.d.ts +11 -0
  184. package/dist/storage/schema.d.ts.map +1 -0
  185. package/dist/storage/schema.js +40 -0
  186. package/dist/storage/schema.js.map +1 -0
  187. package/dist/ui/index.d.ts +2 -0
  188. package/dist/ui/index.d.ts.map +1 -0
  189. package/dist/ui/index.js +2 -0
  190. package/dist/ui/index.js.map +1 -0
  191. package/dist/ui/static-app.d.ts +2 -0
  192. package/dist/ui/static-app.d.ts.map +1 -0
  193. package/dist/ui/static-app.js +735 -0
  194. package/dist/ui/static-app.js.map +1 -0
  195. package/docs/adr/0001-sqlite-driver.md +23 -0
  196. package/docs/agentic-rag-specifications.md +659 -0
  197. package/docs/agentic-rag-study.md +1056 -0
  198. package/docs/implementation-plan.md +1425 -0
  199. package/docs/mcp-integration.md +154 -0
  200. package/docs/validation-corpus.md +71 -0
  201. package/package.json +79 -0
@@ -0,0 +1,35 @@
1
+ import { RetrievalToolRuntime } from "../retrieval/index.js";
2
+ export interface McpServerOptions {
3
+ root: string;
4
+ dbPath?: string;
5
+ input: AsyncIterable<string | Uint8Array>;
6
+ output: McpWritable;
7
+ }
8
+ export interface McpWritable {
9
+ write(chunk: string | Uint8Array): unknown;
10
+ }
11
+ type JsonRpcId = string | number;
12
+ interface JsonRpcResponse {
13
+ jsonrpc: "2.0";
14
+ id: JsonRpcId | null;
15
+ result?: unknown;
16
+ error?: {
17
+ code: number;
18
+ message: string;
19
+ data?: unknown;
20
+ };
21
+ }
22
+ interface McpToolDefinition {
23
+ name: McpToolName;
24
+ description: string;
25
+ inputSchema: unknown;
26
+ annotations: {
27
+ readOnlyHint: true;
28
+ };
29
+ }
30
+ type McpToolName = "searchDocs" | "readSourceRange" | "readPdfSource" | "grepDocs" | "listDocs" | "relatedChunks";
31
+ export declare const mcpToolDefinitions: McpToolDefinition[];
32
+ export declare function runMcpServer(options: McpServerOptions): Promise<void>;
33
+ export declare function handleMcpMessage(message: unknown, runtime: RetrievalToolRuntime): Promise<JsonRpcResponse[]>;
34
+ export {};
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAe,MAAM,uBAAuB,CAAC;AAe1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IAC1C,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;CAC5C;AAED,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAejC,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE;QACX,YAAY,EAAE,IAAI,CAAC;KACpB,CAAC;CACH;AAED,KAAK,WAAW,GACZ,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,UAAU,GACV,UAAU,GACV,eAAe,CAAC;AAEpB,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EA2CjD,CAAC;AAIF,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3E;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,EAAE,CAAC,CAc5B"}
@@ -0,0 +1,392 @@
1
+ import path from "node:path";
2
+ import { UserFacingError } from "../errors.js";
3
+ import { isSupportedSourceKind } from "../indexer/kinds.js";
4
+ import { RetrievalToolRuntime, toolSchemas } from "../retrieval/index.js";
5
+ const mcpProtocolVersion = "2025-03-26";
6
+ const serverVersion = "1.0.0";
7
+ export const mcpToolDefinitions = [
8
+ {
9
+ name: "searchDocs",
10
+ description: "Search indexed documentation chunks with Athena hybrid retrieval and citation locators.",
11
+ inputSchema: toolSchemas.searchDocs,
12
+ annotations: { readOnlyHint: true }
13
+ },
14
+ {
15
+ name: "readSourceRange",
16
+ description: "Read a repository-relative text source range by line number for citation-backed answers.",
17
+ inputSchema: toolSchemas.readSourceRange,
18
+ annotations: { readOnlyHint: true }
19
+ },
20
+ {
21
+ name: "readPdfSource",
22
+ description: "Read generated PDF Markdown plus page, region, confidence, warning, and sidecar metadata.",
23
+ inputSchema: toolSchemas.readPdfSource,
24
+ annotations: { readOnlyHint: true }
25
+ },
26
+ {
27
+ name: "grepDocs",
28
+ description: "Search indexed repository documentation lines with a literal or bounded regular expression.",
29
+ inputSchema: toolSchemas.grepDocs,
30
+ annotations: { readOnlyHint: true }
31
+ },
32
+ {
33
+ name: "listDocs",
34
+ description: "List indexed documentation sources by optional path prefix and source kind.",
35
+ inputSchema: toolSchemas.listDocs,
36
+ annotations: { readOnlyHint: true }
37
+ },
38
+ {
39
+ name: "relatedChunks",
40
+ description: "Read neighboring chunks around an already discovered chunk without mutating the index.",
41
+ inputSchema: toolSchemas.relatedChunks,
42
+ annotations: { readOnlyHint: true }
43
+ }
44
+ ];
45
+ const mcpToolNames = new Set(mcpToolDefinitions.map((tool) => tool.name));
46
+ export async function runMcpServer(options) {
47
+ const runtime = new RetrievalToolRuntime(options.root, options.dbPath);
48
+ try {
49
+ for await (const message of readJsonRpcMessages(options.input)) {
50
+ if (isJsonRpcResponse(message)) {
51
+ options.output.write(`${JSON.stringify(message)}\n`);
52
+ continue;
53
+ }
54
+ const responses = await handleMcpMessage(message, runtime);
55
+ for (const response of responses) {
56
+ options.output.write(`${JSON.stringify(response)}\n`);
57
+ }
58
+ }
59
+ }
60
+ finally {
61
+ runtime.close();
62
+ }
63
+ }
64
+ export async function handleMcpMessage(message, runtime) {
65
+ if (Array.isArray(message)) {
66
+ const responses = await Promise.all(message.map(async (entry) => await handleSingleMcpMessage(entry, runtime)));
67
+ return responses.filter((response) => response !== null);
68
+ }
69
+ const response = await handleSingleMcpMessage(message, runtime);
70
+ return response === null ? [] : [response];
71
+ }
72
+ async function handleSingleMcpMessage(message, runtime) {
73
+ if (!isRecord(message) || message.jsonrpc !== "2.0") {
74
+ return jsonRpcError(null, -32600, "Invalid JSON-RPC request.");
75
+ }
76
+ if (typeof message.method !== "string") {
77
+ return jsonRpcError(readRequestId(message), -32600, "Missing method.");
78
+ }
79
+ if (!("id" in message)) {
80
+ handleMcpNotification({
81
+ jsonrpc: "2.0",
82
+ method: message.method,
83
+ ...(message.params === undefined ? {} : { params: message.params })
84
+ });
85
+ return null;
86
+ }
87
+ const id = readRequestId(message);
88
+ if (id === null) {
89
+ return jsonRpcError(null, -32600, "JSON-RPC request id must be a string or number.");
90
+ }
91
+ try {
92
+ return jsonRpcResult(id, await handleMcpRequest({
93
+ jsonrpc: "2.0",
94
+ id,
95
+ method: message.method,
96
+ ...(message.params === undefined ? {} : { params: message.params })
97
+ }, runtime));
98
+ }
99
+ catch (error) {
100
+ return toJsonRpcError(id, error);
101
+ }
102
+ }
103
+ function handleMcpNotification(message) {
104
+ switch (message.method) {
105
+ case "notifications/initialized":
106
+ case "notifications/cancelled":
107
+ return;
108
+ default:
109
+ return;
110
+ }
111
+ }
112
+ async function handleMcpRequest(request, runtime) {
113
+ switch (request.method) {
114
+ case "initialize":
115
+ return createInitializeResult();
116
+ case "ping":
117
+ return {};
118
+ case "tools/list":
119
+ return { tools: mcpToolDefinitions };
120
+ case "tools/call":
121
+ return await callMcpTool(runtime, request.params);
122
+ default:
123
+ throw new JsonRpcProtocolError(-32601, `Unknown MCP method: ${request.method}`);
124
+ }
125
+ }
126
+ function createInitializeResult() {
127
+ return {
128
+ protocolVersion: mcpProtocolVersion,
129
+ capabilities: {
130
+ tools: {
131
+ listChanged: false
132
+ }
133
+ },
134
+ serverInfo: {
135
+ name: "athena",
136
+ version: serverVersion
137
+ },
138
+ instructions: "Athena exposes read-only, citation-aware documentation retrieval tools. External agents consume retrieval context but do not own Athena's agent loop."
139
+ };
140
+ }
141
+ async function callMcpTool(runtime, params) {
142
+ const input = requireRecord(params, "tools/call params");
143
+ const name = requireString(input.name, "name");
144
+ if (!isMcpToolName(name)) {
145
+ throw new JsonRpcProtocolError(-32602, `Unknown tool: ${name}`);
146
+ }
147
+ try {
148
+ const result = await executeMcpTool(runtime, name, input.arguments ?? {});
149
+ return {
150
+ content: [
151
+ {
152
+ type: "text",
153
+ text: JSON.stringify({
154
+ result,
155
+ trace: serializeRetrievalTrace(runtime.trace)
156
+ }, null, 2)
157
+ }
158
+ ],
159
+ isError: false
160
+ };
161
+ }
162
+ catch (error) {
163
+ return {
164
+ content: [
165
+ {
166
+ type: "text",
167
+ text: error instanceof Error ? error.message : String(error)
168
+ }
169
+ ],
170
+ isError: true
171
+ };
172
+ }
173
+ }
174
+ async function executeMcpTool(runtime, name, args) {
175
+ switch (name) {
176
+ case "searchDocs":
177
+ return runtime.searchDocs(readSearchDocsInput(args));
178
+ case "readSourceRange":
179
+ return await runtime.readSourceRange(readSourceRangeInput(args));
180
+ case "readPdfSource":
181
+ return runtime.readPdfSource(readPdfSourceInput(args));
182
+ case "grepDocs":
183
+ return await runtime.grepDocs(readGrepDocsInput(args));
184
+ case "listDocs":
185
+ return runtime.listDocs(readListDocsInput(args));
186
+ case "relatedChunks":
187
+ return runtime.relatedChunks(readRelatedChunksInput(args));
188
+ }
189
+ }
190
+ function serializeRetrievalTrace(trace) {
191
+ return {
192
+ seenChunkIds: [...trace.seenChunkIds],
193
+ readLocators: trace.readLocators,
194
+ searchScores: trace.searchScores
195
+ };
196
+ }
197
+ function readSearchDocsInput(value) {
198
+ const input = requireRecord(value, "searchDocs arguments");
199
+ return {
200
+ query: requireString(input.query, "query"),
201
+ ...optionalLimit(input.limit, "limit", 1, 50),
202
+ ...optionalPathPrefix(input.pathPrefix),
203
+ ...optionalKind(input.kind)
204
+ };
205
+ }
206
+ function readSourceRangeInput(value) {
207
+ const input = requireRecord(value, "readSourceRange arguments");
208
+ return {
209
+ path: requireRelativePath(input.path, "path"),
210
+ startLine: requireInteger(input.startLine, "startLine", 1),
211
+ endLine: requireInteger(input.endLine, "endLine", 1)
212
+ };
213
+ }
214
+ function readPdfSourceInput(value) {
215
+ const input = requireRecord(value, "readPdfSource arguments");
216
+ return {
217
+ path: requireRelativePath(input.path, "path"),
218
+ ...optionalLimit(input.page, "page", 1, Number.MAX_SAFE_INTEGER),
219
+ ...optionalString(input.regionId, "regionId")
220
+ };
221
+ }
222
+ function readGrepDocsInput(value) {
223
+ const input = requireRecord(value, "grepDocs arguments");
224
+ return {
225
+ pattern: requireString(input.pattern, "pattern"),
226
+ ...optionalBoolean(input.regex, "regex"),
227
+ ...optionalLimit(input.limit, "limit", 1, 100),
228
+ ...optionalPathPrefix(input.pathPrefix),
229
+ ...optionalKind(input.kind)
230
+ };
231
+ }
232
+ function readListDocsInput(value) {
233
+ const input = requireRecord(value, "listDocs arguments");
234
+ return {
235
+ ...optionalLimit(input.limit, "limit", 1, 500),
236
+ ...optionalPathPrefix(input.pathPrefix),
237
+ ...optionalKind(input.kind)
238
+ };
239
+ }
240
+ function readRelatedChunksInput(value) {
241
+ const input = requireRecord(value, "relatedChunks arguments");
242
+ return {
243
+ chunkId: requireString(input.chunkId, "chunkId"),
244
+ ...optionalLimit(input.before, "before", 0, 10),
245
+ ...optionalLimit(input.after, "after", 0, 10)
246
+ };
247
+ }
248
+ async function* readJsonRpcMessages(input) {
249
+ let buffered = "";
250
+ for await (const chunk of input) {
251
+ buffered += chunk.toString();
252
+ while (true) {
253
+ const newlineIndex = buffered.indexOf("\n");
254
+ if (newlineIndex === -1) {
255
+ break;
256
+ }
257
+ const line = buffered.slice(0, newlineIndex).trim();
258
+ buffered = buffered.slice(newlineIndex + 1);
259
+ if (line === "") {
260
+ continue;
261
+ }
262
+ yield parseJsonRpcLine(line);
263
+ }
264
+ }
265
+ const trailing = buffered.trim();
266
+ if (trailing !== "") {
267
+ yield parseJsonRpcLine(trailing);
268
+ }
269
+ }
270
+ function parseJsonRpcLine(line) {
271
+ try {
272
+ return JSON.parse(line);
273
+ }
274
+ catch (error) {
275
+ return jsonRpcError(null, -32700, "Parse error.", {
276
+ message: error instanceof Error ? error.message : String(error)
277
+ });
278
+ }
279
+ }
280
+ function isJsonRpcResponse(value) {
281
+ return (isRecord(value) &&
282
+ value.jsonrpc === "2.0" &&
283
+ "id" in value &&
284
+ ("result" in value || "error" in value) &&
285
+ !("method" in value));
286
+ }
287
+ function jsonRpcResult(id, result) {
288
+ return {
289
+ jsonrpc: "2.0",
290
+ id,
291
+ result
292
+ };
293
+ }
294
+ function jsonRpcError(id, code, message, data) {
295
+ return {
296
+ jsonrpc: "2.0",
297
+ id,
298
+ error: {
299
+ code,
300
+ message,
301
+ ...(data === undefined ? {} : { data })
302
+ }
303
+ };
304
+ }
305
+ function toJsonRpcError(id, error) {
306
+ if (error instanceof JsonRpcProtocolError) {
307
+ return jsonRpcError(id, error.code, error.message);
308
+ }
309
+ return jsonRpcError(id, -32603, error instanceof Error ? error.message : String(error));
310
+ }
311
+ function readRequestId(message) {
312
+ const id = message.id;
313
+ return typeof id === "string" || typeof id === "number" ? id : null;
314
+ }
315
+ function isMcpToolName(value) {
316
+ return mcpToolNames.has(value);
317
+ }
318
+ function requireRecord(value, fieldName) {
319
+ if (!isRecord(value)) {
320
+ throw new UserFacingError(`${fieldName} must be an object.`);
321
+ }
322
+ return value;
323
+ }
324
+ function requireString(value, fieldName) {
325
+ if (typeof value !== "string" || value.trim() === "") {
326
+ throw new UserFacingError(`${fieldName} must be a non-empty string.`);
327
+ }
328
+ return value;
329
+ }
330
+ function requireRelativePath(value, fieldName) {
331
+ const pathValue = requireString(value, fieldName);
332
+ if (pathValue.includes("..") || path.isAbsolute(pathValue)) {
333
+ throw new UserFacingError(`${fieldName} must be repository-relative.`);
334
+ }
335
+ return pathValue;
336
+ }
337
+ function requireInteger(value, fieldName, minimum, maximum = Number.MAX_SAFE_INTEGER) {
338
+ if (typeof value !== "number" ||
339
+ !Number.isInteger(value) ||
340
+ value < minimum ||
341
+ value > maximum) {
342
+ throw new UserFacingError(`${fieldName} must be an integer between ${String(minimum)} and ${String(maximum)}.`);
343
+ }
344
+ return value;
345
+ }
346
+ function optionalLimit(value, fieldName, minimum, maximum) {
347
+ return value === undefined
348
+ ? {}
349
+ : { [fieldName]: requireInteger(value, fieldName, minimum, maximum) };
350
+ }
351
+ function optionalString(value, fieldName) {
352
+ return value === undefined
353
+ ? {}
354
+ : { [fieldName]: requireString(value, fieldName) };
355
+ }
356
+ function optionalBoolean(value, fieldName) {
357
+ if (value === undefined) {
358
+ return {};
359
+ }
360
+ if (typeof value !== "boolean") {
361
+ throw new UserFacingError(`${fieldName} must be a boolean.`);
362
+ }
363
+ return { [fieldName]: value };
364
+ }
365
+ function optionalPathPrefix(value) {
366
+ if (value === undefined) {
367
+ return {};
368
+ }
369
+ return { pathPrefix: requireRelativePath(value, "pathPrefix") };
370
+ }
371
+ function optionalKind(value) {
372
+ if (value === undefined) {
373
+ return {};
374
+ }
375
+ const kind = requireString(value, "kind");
376
+ if (!isSupportedSourceKind(kind)) {
377
+ throw new UserFacingError(`Unsupported source kind: ${kind}.`);
378
+ }
379
+ return { kind };
380
+ }
381
+ function isRecord(value) {
382
+ return typeof value === "object" && value !== null;
383
+ }
384
+ class JsonRpcProtocolError extends Error {
385
+ code;
386
+ constructor(code, message) {
387
+ super(message);
388
+ this.code = code;
389
+ this.name = "JsonRpcProtocolError";
390
+ }
391
+ }
392
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ChunkDraft, ChunkingOptions, ParsedDocument } from "./types.js";
2
+ export declare const defaultChunkingOptions: ChunkingOptions;
3
+ export declare function chunkParsedDocument(document: ParsedDocument, options?: ChunkingOptions): ChunkDraft[];
4
+ //# sourceMappingURL=chunking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../src/parsers/chunking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAEf,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,sBAAsB,EAAE,eAIpC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,eAAwC,GAChD,UAAU,EAAE,CAyBd"}
@@ -0,0 +1,112 @@
1
+ import { estimateTokens, normalizeText } from "./normalize.js";
2
+ export const defaultChunkingOptions = {
3
+ targetTokens: 350,
4
+ overlapTokens: 50,
5
+ hardMaxTokens: 700
6
+ };
7
+ export function chunkParsedDocument(document, options = defaultChunkingOptions) {
8
+ const chunks = [];
9
+ let currentBlocks = [];
10
+ for (const block of document.blocks) {
11
+ const blockParts = splitOversizedBlock(block, options.hardMaxTokens);
12
+ for (const blockPart of blockParts) {
13
+ const nextTokenCount = estimateBlocks(currentBlocks) + estimateTokens(blockPart.text);
14
+ if (currentBlocks.length > 0 && nextTokenCount > options.targetTokens) {
15
+ chunks.push(createChunk(chunks.length, currentBlocks));
16
+ currentBlocks = trailingOverlap(currentBlocks, options.overlapTokens);
17
+ }
18
+ currentBlocks.push(blockPart);
19
+ }
20
+ }
21
+ if (currentBlocks.length > 0) {
22
+ chunks.push(createChunk(chunks.length, currentBlocks));
23
+ }
24
+ return chunks;
25
+ }
26
+ function splitOversizedBlock(block, hardMaxTokens) {
27
+ if (estimateTokens(block.text) <= hardMaxTokens) {
28
+ return [block];
29
+ }
30
+ const lines = block.text.split("\n");
31
+ const lineCount = Math.max(lines.length, 1);
32
+ const parts = [];
33
+ let currentLines = [];
34
+ let currentStartLine = block.startLine;
35
+ for (const [index, line] of lines.entries()) {
36
+ const projected = [...currentLines, line].join("\n");
37
+ if (currentLines.length > 0 && estimateTokens(projected) > hardMaxTokens) {
38
+ parts.push(createBlockPart(block, currentLines, currentStartLine));
39
+ currentLines = [];
40
+ currentStartLine = block.startLine + index;
41
+ }
42
+ currentLines.push(line);
43
+ }
44
+ if (currentLines.length > 0) {
45
+ parts.push(createBlockPart(block, currentLines, currentStartLine));
46
+ }
47
+ return parts.length === 0
48
+ ? [
49
+ {
50
+ ...block,
51
+ endLine: block.startLine + lineCount - 1
52
+ }
53
+ ]
54
+ : parts;
55
+ }
56
+ function createBlockPart(block, lines, startLine) {
57
+ const text = lines.join("\n");
58
+ return {
59
+ ...block,
60
+ text,
61
+ normalizedText: normalizeText(text),
62
+ startLine,
63
+ endLine: startLine + lines.length - 1
64
+ };
65
+ }
66
+ function trailingOverlap(blocks, overlapTokens) {
67
+ const overlap = [];
68
+ let tokenCount = 0;
69
+ for (let index = blocks.length - 1; index >= 0; index -= 1) {
70
+ const block = blocks[index];
71
+ if (block === undefined) {
72
+ continue;
73
+ }
74
+ const blockTokens = estimateTokens(block.text);
75
+ if (overlap.length > 0 && tokenCount + blockTokens > overlapTokens) {
76
+ break;
77
+ }
78
+ overlap.unshift(block);
79
+ tokenCount += blockTokens;
80
+ }
81
+ return overlap;
82
+ }
83
+ function createChunk(ordinal, blocks) {
84
+ const text = blocks.map((block) => block.text).join("\n\n");
85
+ const headingPath = [...(blocks.at(-1)?.headingPath ?? [])];
86
+ const metadata = mergeBlockMetadata(blocks);
87
+ return {
88
+ ordinal,
89
+ text,
90
+ normalizedText: normalizeText(text),
91
+ headingPath,
92
+ startLine: blocks[0]?.startLine ?? 1,
93
+ endLine: blocks.at(-1)?.endLine ?? blocks[0]?.endLine ?? 1,
94
+ tokenEstimate: estimateTokens(text),
95
+ ...(metadata === undefined ? {} : { metadata })
96
+ };
97
+ }
98
+ function estimateBlocks(blocks) {
99
+ return blocks.reduce((total, block) => total + estimateTokens(block.text), 0);
100
+ }
101
+ function mergeBlockMetadata(blocks) {
102
+ const metadata = {};
103
+ for (const block of blocks) {
104
+ for (const [key, value] of Object.entries(block.metadata ?? {})) {
105
+ if (metadata[key] === undefined) {
106
+ metadata[key] = value;
107
+ }
108
+ }
109
+ }
110
+ return Object.keys(metadata).length === 0 ? undefined : metadata;
111
+ }
112
+ //# sourceMappingURL=chunking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../src/parsers/chunking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { chunkParsedDocument, defaultChunkingOptions } from "./chunking.js";
2
+ export { estimateTokens, normalizeText } from "./normalize.js";
3
+ export { createPdfParserOptionsHash, PDF2LLM_PACKAGE_VERSION, PDF2LLM_PARSER_NAME, PDF2LLM_PARSER_VERSION, parsePdfFile } from "./pdf2llm.js";
4
+ export { TEXT_PARSER_VERSION, parseSourceFile, parseSourceText, parserNameForKind, parserVersionForKind } from "./parser.js";
5
+ export type { ChunkDraft, ChunkingOptions, ParsedBlock, ParsedDocument, ParserArtifactDraft, ParserWarning } from "./types.js";
6
+ export type { ParsePdfFileOptions, Pdf2LlmConverter } from "./pdf2llm.js";
7
+ export type { ParseSourceFileOptions } from "./parser.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1E,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { chunkParsedDocument, defaultChunkingOptions } from "./chunking.js";
2
+ export { estimateTokens, normalizeText } from "./normalize.js";
3
+ export { createPdfParserOptionsHash, PDF2LLM_PACKAGE_VERSION, PDF2LLM_PARSER_NAME, PDF2LLM_PARSER_VERSION, parsePdfFile } from "./pdf2llm.js";
4
+ export { TEXT_PARSER_VERSION, parseSourceFile, parseSourceText, parserNameForKind, parserVersionForKind } from "./parser.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ParsedBlock, ParserWarning } from "./types.js";
2
+ export interface LineParseResult {
3
+ blocks: ParsedBlock[];
4
+ warnings: ParserWarning[];
5
+ }
6
+ export declare function parseMarkdownLikeLines(sourceText: string, options: {
7
+ mdx: boolean;
8
+ }): LineParseResult;
9
+ export declare function parsePlainTextLines(sourceText: string): LineParseResult;
10
+ export declare function parseRstLines(sourceText: string): LineParseResult;
11
+ export declare function parseAsciiDocLines(sourceText: string): LineParseResult;
12
+ export declare function parseHtmlLines(sourceText: string): LineParseResult;
13
+ //# sourceMappingURL=line-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/line-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,GACxB,eAAe,CAsFjB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CA4BvE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAuDjE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAmDtE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAsDlE"}