@wolfx/oh-my-openagent 4.2.0-patch.1 → 4.2.0-patch.3

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 (97) hide show
  1. package/package.json +4 -3
  2. package/packages/lsp-tools-mcp/dist/cli.d.ts +3 -0
  3. package/packages/lsp-tools-mcp/dist/cli.d.ts.map +1 -0
  4. package/packages/lsp-tools-mcp/dist/cli.js +24 -0
  5. package/packages/lsp-tools-mcp/dist/cli.js.map +1 -0
  6. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +2 -0
  7. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts.map +1 -0
  8. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js +7 -0
  9. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js.map +1 -0
  10. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts +14 -0
  11. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts.map +1 -0
  12. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +110 -0
  13. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js.map +1 -0
  14. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts +21 -0
  15. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts.map +1 -0
  16. package/packages/lsp-tools-mcp/dist/lsp/client.js +130 -0
  17. package/packages/lsp-tools-mcp/dist/lsp/client.js.map +1 -0
  18. package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts +25 -0
  19. package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts.map +1 -0
  20. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +110 -0
  21. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js.map +1 -0
  22. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts +5 -0
  23. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts.map +1 -0
  24. package/packages/lsp-tools-mcp/dist/lsp/connection.js +67 -0
  25. package/packages/lsp-tools-mcp/dist/lsp/connection.js.map +1 -0
  26. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +11 -0
  27. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts.map +1 -0
  28. package/packages/lsp-tools-mcp/dist/lsp/constants.js +11 -0
  29. package/packages/lsp-tools-mcp/dist/lsp/constants.js.map +1 -0
  30. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts +4 -0
  31. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts.map +1 -0
  32. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +124 -0
  33. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js.map +1 -0
  34. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts +36 -0
  35. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts.map +1 -0
  36. package/packages/lsp-tools-mcp/dist/lsp/errors.js +57 -0
  37. package/packages/lsp-tools-mcp/dist/lsp/errors.js.map +1 -0
  38. package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts +13 -0
  39. package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts.map +1 -0
  40. package/packages/lsp-tools-mcp/dist/lsp/formatters.js +109 -0
  41. package/packages/lsp-tools-mcp/dist/lsp/formatters.js.map +1 -0
  42. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts +2 -0
  43. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts.map +1 -0
  44. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +59 -0
  45. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js.map +1 -0
  46. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts +37 -0
  47. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts.map +1 -0
  48. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js +248 -0
  49. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js.map +1 -0
  50. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +5 -0
  51. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts.map +1 -0
  52. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +170 -0
  53. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js.map +1 -0
  54. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts +48 -0
  55. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts.map +1 -0
  56. package/packages/lsp-tools-mcp/dist/lsp/manager.js +308 -0
  57. package/packages/lsp-tools-mcp/dist/lsp/manager.js.map +1 -0
  58. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts +26 -0
  59. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts.map +1 -0
  60. package/packages/lsp-tools-mcp/dist/lsp/process.js +124 -0
  61. package/packages/lsp-tools-mcp/dist/lsp/process.js.map +1 -0
  62. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts +5 -0
  63. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts.map +1 -0
  64. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +159 -0
  65. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js.map +1 -0
  66. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts +3 -0
  67. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts.map +1 -0
  68. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js +51 -0
  69. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js.map +1 -0
  70. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts +12 -0
  71. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts.map +1 -0
  72. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js +75 -0
  73. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js.map +1 -0
  74. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts +26 -0
  75. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts.map +1 -0
  76. package/packages/lsp-tools-mcp/dist/lsp/transport.js +234 -0
  77. package/packages/lsp-tools-mcp/dist/lsp/transport.js.map +1 -0
  78. package/packages/lsp-tools-mcp/dist/lsp/types.d.ts +125 -0
  79. package/packages/lsp-tools-mcp/dist/lsp/types.d.ts.map +1 -0
  80. package/packages/lsp-tools-mcp/dist/lsp/types.js +2 -0
  81. package/packages/lsp-tools-mcp/dist/lsp/types.js.map +1 -0
  82. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts +5 -0
  83. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts.map +1 -0
  84. package/packages/lsp-tools-mcp/dist/lsp/utils.js +43 -0
  85. package/packages/lsp-tools-mcp/dist/lsp/utils.js.map +1 -0
  86. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts +9 -0
  87. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts.map +1 -0
  88. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +114 -0
  89. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js.map +1 -0
  90. package/packages/lsp-tools-mcp/dist/mcp.d.ts +31 -0
  91. package/packages/lsp-tools-mcp/dist/mcp.d.ts.map +1 -0
  92. package/packages/lsp-tools-mcp/dist/mcp.js +95 -0
  93. package/packages/lsp-tools-mcp/dist/mcp.js.map +1 -0
  94. package/packages/lsp-tools-mcp/dist/tools.d.ts +91 -0
  95. package/packages/lsp-tools-mcp/dist/tools.d.ts.map +1 -0
  96. package/packages/lsp-tools-mcp/dist/tools.js +453 -0
  97. package/packages/lsp-tools-mcp/dist/tools.js.map +1 -0
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@wolfx/oh-my-openagent",
3
- "version": "4.2.0-patch.1",
3
+ "version": "4.2.0-patch.3",
4
4
  "description": "A fork of oh-my-openagent",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
8
8
  "files": [
9
- "dist"
9
+ "dist",
10
+ "packages/lsp-tools-mcp/dist"
10
11
  ],
11
12
  "publishConfig": {
12
13
  "access": "public",
@@ -27,7 +28,7 @@
27
28
  "build:model-capabilities": "bun run script/build-model-capabilities.ts",
28
29
  "clean": "rm -rf dist",
29
30
  "prepare": "bun run build",
30
- "prepublishOnly": "bun run clean && bun run build",
31
+ "prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build",
31
32
  "test:model-capabilities": "bun test src/shared/model-capability-aliases.test.ts src/shared/model-capability-guardrails.test.ts src/shared/model-capabilities.test.ts --bail",
32
33
  "typecheck": "tsc --noEmit",
33
34
  "test": "bun run script/run-ci-tests.ts"
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import { argv, stderr } from "node:process";
3
+ import { disposeDefaultLspManager } from "./lsp/manager.js";
4
+ import { runMcpStdioServer } from "./mcp.js";
5
+ async function main() {
6
+ const [command = "mcp"] = argv.slice(2);
7
+ try {
8
+ if (command === "mcp") {
9
+ await runMcpStdioServer();
10
+ return;
11
+ }
12
+ stderr.write("Usage: lsp-tools-mcp [mcp]\n");
13
+ process.exitCode = 2;
14
+ }
15
+ finally {
16
+ await disposeDefaultLspManager();
17
+ }
18
+ }
19
+ main().catch(async (error) => {
20
+ stderr.write(`${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
21
+ await disposeDefaultLspManager();
22
+ process.exitCode = 1;
23
+ });
24
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,KAAK,UAAU,IAAI;IAClB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,CAAC;QACJ,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACvB,MAAM,iBAAiB,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;YAAS,CAAC;QACV,MAAM,wBAAwB,EAAE,CAAC;IAClC,CAAC;AACF,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;IACrC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7F,MAAM,wBAAwB,EAAE,CAAC;IACjC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function reportBestEffortCleanupError(operation: string, error: unknown): void;
2
+ //# sourceMappingURL=cleanup-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-errors.d.ts","sourceRoot":"","sources":["../../src/lsp/cleanup-errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAIpF"}
@@ -0,0 +1,7 @@
1
+ export function reportBestEffortCleanupError(operation, error) {
2
+ if (process.env.CODEX_LSP_DEBUG_CLEANUP !== "1")
3
+ return;
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ console.error(`[codex-lsp] ignored ${operation} failure during cleanup: ${message}`);
6
+ }
7
+ //# sourceMappingURL=cleanup-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-errors.js","sourceRoot":"","sources":["../../src/lsp/cleanup-errors.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,4BAA4B,CAAC,SAAiB,EAAE,KAAc;IAC7E,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,GAAG;QAAE,OAAO;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,4BAA4B,OAAO,EAAE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { LspClient } from "./client.js";
2
+ import { type LspManager } from "./manager.js";
3
+ import type { ServerLookupResult } from "./types.js";
4
+ export declare function isDirectoryPath(filePath: string): boolean;
5
+ export declare function findWorkspaceRoot(filePath: string): string;
6
+ export declare function formatServerLookupError(result: Exclude<ServerLookupResult, {
7
+ status: "found";
8
+ }>): string;
9
+ export interface WithLspClientOptions {
10
+ signal?: AbortSignal;
11
+ manager?: LspManager;
12
+ }
13
+ export declare function withLspClient<T>(filePath: string, fn: (client: LspClient) => Promise<T>, toolName: string, options?: WithLspClientOptions): Promise<T>;
14
+ //# sourceMappingURL=client-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-wrapper.d.ts","sourceRoot":"","sources":["../../src/lsp/client-wrapper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,MAAM,CAkCxG;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,UAAU,CAAC;CACrB;AAWD,wBAAsB,aAAa,CAAC,CAAC,EACpC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,CAAC,CAAC,CA2CZ"}
@@ -0,0 +1,110 @@
1
+ import { existsSync, statSync } from "node:fs";
2
+ import { dirname, extname, join, resolve } from "node:path";
3
+ import { isLspDeadConnectionError, LspInvalidPathError, LspRequestTimeoutError, LspServerInitializingError, LspServerLookupError, } from "./errors.js";
4
+ import { getLspManager } from "./manager.js";
5
+ import { findServerForExtension } from "./server-resolution.js";
6
+ const WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
7
+ export function isDirectoryPath(filePath) {
8
+ try {
9
+ return statSync(filePath).isDirectory();
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ export function findWorkspaceRoot(filePath) {
16
+ const abs = resolve(filePath);
17
+ let dir = abs;
18
+ if (!isDirectoryPath(dir)) {
19
+ dir = dirname(dir);
20
+ }
21
+ let prevDir = "";
22
+ while (dir !== prevDir) {
23
+ for (const marker of WORKSPACE_MARKERS) {
24
+ if (existsSync(join(dir, marker))) {
25
+ return dir;
26
+ }
27
+ }
28
+ prevDir = dir;
29
+ dir = dirname(dir);
30
+ }
31
+ return dirname(abs);
32
+ }
33
+ export function formatServerLookupError(result) {
34
+ if (result.status === "not_installed") {
35
+ const { server, installHint } = result;
36
+ return [
37
+ `LSP server '${server.id}' is configured but NOT INSTALLED.`,
38
+ "",
39
+ `Command not found: ${server.command[0]}`,
40
+ "",
41
+ "To install:",
42
+ ` ${installHint}`,
43
+ "",
44
+ `Supported extensions: ${server.extensions.join(", ")}`,
45
+ "",
46
+ "After installation, the server will be available automatically.",
47
+ ].join("\n");
48
+ }
49
+ return [
50
+ `No LSP server configured for extension: ${result.extension}`,
51
+ "",
52
+ `Available servers: ${result.availableServers.slice(0, 10).join(", ")}${result.availableServers.length > 10 ? "..." : ""}`,
53
+ "",
54
+ "Configure a custom server in '.codex/lsp-client.json':",
55
+ " {",
56
+ ' "lsp": {',
57
+ ' "my-server": {',
58
+ ' "command": ["my-lsp", "--stdio"],',
59
+ ` "extensions": ["${result.extension}"]`,
60
+ " }",
61
+ " }",
62
+ " }",
63
+ ].join("\n");
64
+ }
65
+ const READ_ONLY_RETRY_TOOLS = new Set([
66
+ "diagnostics",
67
+ "definition",
68
+ "references",
69
+ "documentSymbols",
70
+ "workspaceSymbols",
71
+ "prepareRename",
72
+ ]);
73
+ export async function withLspClient(filePath, fn, toolName, options = {}) {
74
+ const absPath = resolve(filePath);
75
+ if (isDirectoryPath(absPath)) {
76
+ throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " +
77
+ "Use lsp.diagnostics with a directory path for directory diagnostics.");
78
+ }
79
+ const ext = extname(absPath);
80
+ const result = findServerForExtension(ext);
81
+ if (result.status !== "found") {
82
+ throw new LspServerLookupError(formatServerLookupError(result));
83
+ }
84
+ const server = result.server;
85
+ const root = findWorkspaceRoot(absPath);
86
+ const manager = options.manager ?? getLspManager();
87
+ const acquireAndCall = async (allowRetry) => {
88
+ const client = await manager.getClient(root, server, options.signal);
89
+ try {
90
+ return await fn(client);
91
+ }
92
+ catch (err) {
93
+ if (allowRetry && READ_ONLY_RETRY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
94
+ manager.invalidateClient(root, server.id, client);
95
+ return acquireAndCall(false);
96
+ }
97
+ if (err instanceof LspRequestTimeoutError) {
98
+ if (manager.isServerInitializing(root, server.id)) {
99
+ throw new LspServerInitializingError(err);
100
+ }
101
+ }
102
+ throw err;
103
+ }
104
+ finally {
105
+ manager.releaseClient(root, server.id);
106
+ }
107
+ };
108
+ return acquireAndCall(true);
109
+ }
110
+ //# sourceMappingURL=client-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-wrapper.js","sourceRoot":"","sources":["../../src/lsp/client-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { LspClientConnection } from "./connection.js";
2
+ import type { Diagnostic, DocumentSymbol, Location, LocationLink, PrepareRenameDefaultBehavior, PrepareRenameResult, Range, SymbolInfo, WorkspaceEdit } from "./types.js";
3
+ export declare class LspClient extends LspClientConnection {
4
+ private readonly openedFiles;
5
+ private readonly documentVersions;
6
+ private readonly lastSyncedText;
7
+ private readonly diagnosticPullErrors;
8
+ getDiagnosticPullErrors(): readonly Error[];
9
+ openFile(filePath: string): Promise<void>;
10
+ definition(filePath: string, line: number, character: number): Promise<Location | LocationLink | Array<Location | LocationLink> | null>;
11
+ references(filePath: string, line: number, character: number, includeDeclaration?: boolean): Promise<Location[]>;
12
+ documentSymbols(filePath: string): Promise<Array<DocumentSymbol | SymbolInfo>>;
13
+ workspaceSymbols(query: string): Promise<SymbolInfo[]>;
14
+ private isUnsupportedDiagnosticPullError;
15
+ diagnostics(filePath: string): Promise<{
16
+ items: Diagnostic[];
17
+ }>;
18
+ prepareRename(filePath: string, line: number, character: number): Promise<PrepareRenameResult | PrepareRenameDefaultBehavior | Range | null>;
19
+ rename(filePath: string, line: number, character: number, newName: string): Promise<WorkspaceEdit | null>;
20
+ }
21
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lsp/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,EACL,UAAU,EACV,aAAa,EACb,MAAM,YAAY,CAAC;AAKpB,qBAAa,SAAU,SAAQ,mBAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6B;IAC5D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IAEpD,uBAAuB,IAAI,SAAS,KAAK,EAAE;IAIrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CzC,UAAU,CACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;IAYrE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,UAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAU7G,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC;IAQ9E,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAI5D,OAAO,CAAC,gCAAgC;IAOlC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAsB/D,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,GAAG,4BAA4B,GAAG,KAAK,GAAG,IAAI,CAAC;IAYvE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAS/G"}
@@ -0,0 +1,130 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { extname, resolve } from "node:path";
3
+ import { pathToFileURL } from "node:url";
4
+ import { LspClientConnection } from "./connection.js";
5
+ import { getLanguageId } from "./language-mappings.js";
6
+ const POST_OPEN_DELAY_MS = 1000;
7
+ const POST_DIAGNOSTICS_WAIT_MS = 500;
8
+ export class LspClient extends LspClientConnection {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.openedFiles = new Set();
12
+ this.documentVersions = new Map();
13
+ this.lastSyncedText = new Map();
14
+ this.diagnosticPullErrors = [];
15
+ }
16
+ getDiagnosticPullErrors() {
17
+ return this.diagnosticPullErrors;
18
+ }
19
+ async openFile(filePath) {
20
+ const absPath = resolve(filePath);
21
+ const uri = pathToFileURL(absPath).href;
22
+ const text = readFileSync(absPath, "utf-8");
23
+ if (!this.openedFiles.has(absPath)) {
24
+ const ext = extname(absPath);
25
+ const languageId = getLanguageId(ext);
26
+ const version = 1;
27
+ await this.sendNotification("textDocument/didOpen", {
28
+ textDocument: {
29
+ uri,
30
+ languageId,
31
+ version,
32
+ text,
33
+ },
34
+ });
35
+ this.openedFiles.add(absPath);
36
+ this.documentVersions.set(uri, version);
37
+ this.lastSyncedText.set(uri, text);
38
+ await new Promise((r) => setTimeout(r, POST_OPEN_DELAY_MS));
39
+ return;
40
+ }
41
+ const prevText = this.lastSyncedText.get(uri);
42
+ if (prevText === text) {
43
+ return;
44
+ }
45
+ const nextVersion = (this.documentVersions.get(uri) ?? 1) + 1;
46
+ this.documentVersions.set(uri, nextVersion);
47
+ this.lastSyncedText.set(uri, text);
48
+ await this.sendNotification("textDocument/didChange", {
49
+ textDocument: { uri, version: nextVersion },
50
+ contentChanges: [{ text }],
51
+ });
52
+ await this.sendNotification("textDocument/didSave", {
53
+ textDocument: { uri },
54
+ text,
55
+ });
56
+ }
57
+ async definition(filePath, line, character) {
58
+ const absPath = resolve(filePath);
59
+ await this.openFile(absPath);
60
+ return this.sendRequest("textDocument/definition", {
61
+ textDocument: { uri: pathToFileURL(absPath).href },
62
+ position: { line: line - 1, character },
63
+ });
64
+ }
65
+ async references(filePath, line, character, includeDeclaration = true) {
66
+ const absPath = resolve(filePath);
67
+ await this.openFile(absPath);
68
+ return this.sendRequest("textDocument/references", {
69
+ textDocument: { uri: pathToFileURL(absPath).href },
70
+ position: { line: line - 1, character },
71
+ context: { includeDeclaration },
72
+ });
73
+ }
74
+ async documentSymbols(filePath) {
75
+ const absPath = resolve(filePath);
76
+ await this.openFile(absPath);
77
+ return this.sendRequest("textDocument/documentSymbol", {
78
+ textDocument: { uri: pathToFileURL(absPath).href },
79
+ });
80
+ }
81
+ async workspaceSymbols(query) {
82
+ return this.sendRequest("workspace/symbol", { query });
83
+ }
84
+ isUnsupportedDiagnosticPullError(error) {
85
+ if (!(error instanceof Error))
86
+ return false;
87
+ const code = "code" in error && typeof error.code === "number" ? error.code : undefined;
88
+ if (code === -32601)
89
+ return true;
90
+ return /unsupported|not supported|method not found|unknown request/i.test(error.message);
91
+ }
92
+ async diagnostics(filePath) {
93
+ const absPath = resolve(filePath);
94
+ const uri = pathToFileURL(absPath).href;
95
+ await this.openFile(absPath);
96
+ await new Promise((r) => setTimeout(r, POST_DIAGNOSTICS_WAIT_MS));
97
+ try {
98
+ const result = await this.sendRequest("textDocument/diagnostic", {
99
+ textDocument: { uri },
100
+ });
101
+ if (result.items) {
102
+ return { items: result.items };
103
+ }
104
+ }
105
+ catch (error) {
106
+ if (!this.isUnsupportedDiagnosticPullError(error)) {
107
+ this.diagnosticPullErrors.push(error instanceof Error ? error : new Error(String(error)));
108
+ }
109
+ }
110
+ return { items: this.getStoredDiagnostics(uri) };
111
+ }
112
+ async prepareRename(filePath, line, character) {
113
+ const absPath = resolve(filePath);
114
+ await this.openFile(absPath);
115
+ return this.sendRequest("textDocument/prepareRename", {
116
+ textDocument: { uri: pathToFileURL(absPath).href },
117
+ position: { line: line - 1, character },
118
+ });
119
+ }
120
+ async rename(filePath, line, character, newName) {
121
+ const absPath = resolve(filePath);
122
+ await this.openFile(absPath);
123
+ return this.sendRequest("textDocument/rename", {
124
+ textDocument: { uri: pathToFileURL(absPath).href },
125
+ position: { line: line - 1, character },
126
+ newName,
127
+ });
128
+ }
129
+ }
130
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lsp/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ResolvedServer } from "./types.js";
2
+ interface LspEntry {
3
+ disabled?: boolean;
4
+ command?: string[];
5
+ extensions?: string[];
6
+ priority?: number;
7
+ env?: Record<string, string>;
8
+ initialization?: Record<string, unknown>;
9
+ }
10
+ interface ConfigJson {
11
+ lsp?: Record<string, LspEntry>;
12
+ }
13
+ type ConfigSource = "project" | "user";
14
+ export interface ServerWithSource extends ResolvedServer {
15
+ source: "project" | "user" | "builtin";
16
+ }
17
+ export declare function getConfigPaths(): {
18
+ project: string;
19
+ user: string;
20
+ };
21
+ export declare function loadAllConfigs(): Map<ConfigSource, ConfigJson>;
22
+ export declare function getMergedServers(): ServerWithSource[];
23
+ export declare function getDisabledServerIds(): Set<string>;
24
+ export {};
25
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/lsp/config-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,UAAU,QAAQ;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,UAAU,UAAU;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC/B;AAED,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAgBlE;AAWD,wBAAgB,cAAc,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAW9D;AAED,wBAAgB,gBAAgB,IAAI,gBAAgB,EAAE,CAyDrD;AAED,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,CAAC,CAYlD"}
@@ -0,0 +1,110 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { isAbsolute, join } from "node:path";
4
+ import { BUILTIN_SERVERS } from "./server-definitions.js";
5
+ export function getConfigPaths() {
6
+ const cwd = process.cwd();
7
+ const projectOverride = process.env.LSP_TOOLS_MCP_PROJECT_CONFIG;
8
+ const userOverride = process.env.LSP_TOOLS_MCP_USER_CONFIG;
9
+ return {
10
+ project: projectOverride
11
+ ? isAbsolute(projectOverride)
12
+ ? projectOverride
13
+ : join(cwd, projectOverride)
14
+ : join(cwd, ".codex", "lsp-client.json"),
15
+ user: userOverride
16
+ ? isAbsolute(userOverride)
17
+ ? userOverride
18
+ : join(homedir(), userOverride)
19
+ : join(homedir(), ".codex", "lsp-client.json"),
20
+ };
21
+ }
22
+ function loadJsonFile(path) {
23
+ if (!existsSync(path))
24
+ return null;
25
+ try {
26
+ return JSON.parse(readFileSync(path, "utf-8"));
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ export function loadAllConfigs() {
33
+ const paths = getConfigPaths();
34
+ const configs = new Map();
35
+ const project = loadJsonFile(paths.project);
36
+ if (project)
37
+ configs.set("project", project);
38
+ const user = loadJsonFile(paths.user);
39
+ if (user)
40
+ configs.set("user", user);
41
+ return configs;
42
+ }
43
+ export function getMergedServers() {
44
+ const configs = loadAllConfigs();
45
+ const servers = [];
46
+ const disabled = new Set();
47
+ const seen = new Set();
48
+ const sources = ["project", "user"];
49
+ for (const source of sources) {
50
+ const config = configs.get(source);
51
+ if (!config?.lsp)
52
+ continue;
53
+ for (const [id, entry] of Object.entries(config.lsp)) {
54
+ if (entry.disabled) {
55
+ disabled.add(id);
56
+ continue;
57
+ }
58
+ if (seen.has(id))
59
+ continue;
60
+ if (!entry.command || !entry.extensions)
61
+ continue;
62
+ servers.push({
63
+ id,
64
+ command: entry.command,
65
+ extensions: entry.extensions,
66
+ priority: entry.priority ?? 0,
67
+ env: entry.env,
68
+ initialization: entry.initialization,
69
+ source,
70
+ });
71
+ seen.add(id);
72
+ }
73
+ }
74
+ for (const [id, config] of Object.entries(BUILTIN_SERVERS)) {
75
+ if (disabled.has(id) || seen.has(id))
76
+ continue;
77
+ servers.push({
78
+ id,
79
+ command: config.command,
80
+ extensions: config.extensions,
81
+ priority: -100,
82
+ source: "builtin",
83
+ });
84
+ }
85
+ return servers.sort((a, b) => {
86
+ if (a.source !== b.source) {
87
+ const order = {
88
+ project: 0,
89
+ user: 1,
90
+ builtin: 2,
91
+ };
92
+ return order[a.source] - order[b.source];
93
+ }
94
+ return b.priority - a.priority;
95
+ });
96
+ }
97
+ export function getDisabledServerIds() {
98
+ const configs = loadAllConfigs();
99
+ const disabled = new Set();
100
+ for (const config of configs.values()) {
101
+ if (!config.lsp)
102
+ continue;
103
+ for (const [id, entry] of Object.entries(config.lsp)) {
104
+ if (entry.disabled)
105
+ disabled.add(id);
106
+ }
107
+ }
108
+ return disabled;
109
+ }
110
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/lsp/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { LspClientTransport } from "./transport.js";
2
+ export declare class LspClientConnection extends LspClientTransport {
3
+ initialize(): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/lsp/connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAIpD,qBAAa,mBAAoB,SAAQ,kBAAkB;IACpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CA6DjC"}
@@ -0,0 +1,67 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import { LspClientTransport } from "./transport.js";
3
+ const INITIALIZE_SETTLE_MS = 300;
4
+ export class LspClientConnection extends LspClientTransport {
5
+ async initialize() {
6
+ const rootUri = pathToFileURL(this.root).href;
7
+ await this.sendRequest("initialize", {
8
+ processId: process.pid,
9
+ rootUri,
10
+ rootPath: this.root,
11
+ workspaceFolders: [{ uri: rootUri, name: "workspace" }],
12
+ capabilities: {
13
+ textDocument: {
14
+ hover: { contentFormat: ["markdown", "plaintext"] },
15
+ definition: { linkSupport: true },
16
+ references: {},
17
+ documentSymbol: { hierarchicalDocumentSymbolSupport: true },
18
+ publishDiagnostics: {},
19
+ rename: {
20
+ prepareSupport: true,
21
+ prepareSupportDefaultBehavior: 1,
22
+ honorsChangeAnnotations: true,
23
+ },
24
+ codeAction: {
25
+ codeActionLiteralSupport: {
26
+ codeActionKind: {
27
+ valueSet: [
28
+ "quickfix",
29
+ "refactor",
30
+ "refactor.extract",
31
+ "refactor.inline",
32
+ "refactor.rewrite",
33
+ "source",
34
+ "source.organizeImports",
35
+ "source.fixAll",
36
+ ],
37
+ },
38
+ },
39
+ isPreferredSupport: true,
40
+ disabledSupport: true,
41
+ dataSupport: true,
42
+ resolveSupport: {
43
+ properties: ["edit", "command"],
44
+ },
45
+ },
46
+ },
47
+ workspace: {
48
+ symbol: {},
49
+ workspaceFolders: true,
50
+ configuration: true,
51
+ applyEdit: true,
52
+ workspaceEdit: {
53
+ documentChanges: true,
54
+ },
55
+ },
56
+ },
57
+ initializationOptions: this.server.initialization,
58
+ });
59
+ await this.sendNotification("initialized");
60
+ await this.sendNotification("workspace/didChangeConfiguration", {
61
+ settings: { json: { validate: { enable: true } } },
62
+ });
63
+ // Some servers accept initialized before their diagnostics/indexing handlers are ready.
64
+ await new Promise((r) => setTimeout(r, INITIALIZE_SETTLE_MS));
65
+ }
66
+ }
67
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/lsp/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAC1D,KAAK,CAAC,UAAU;QACf,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC9C,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YACpC,SAAS,EAAE,OAAO,CAAC,GAAG;YACtB,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACvD,YAAY,EAAE;gBACb,YAAY,EAAE;oBACb,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;oBACnD,UAAU,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;oBACjC,UAAU,EAAE,EAAE;oBACd,cAAc,EAAE,EAAE,iCAAiC,EAAE,IAAI,EAAE;oBAC3D,kBAAkB,EAAE,EAAE;oBACtB,MAAM,EAAE;wBACP,cAAc,EAAE,IAAI;wBACpB,6BAA6B,EAAE,CAAC;wBAChC,uBAAuB,EAAE,IAAI;qBAC7B;oBACD,UAAU,EAAE;wBACX,wBAAwB,EAAE;4BACzB,cAAc,EAAE;gCACf,QAAQ,EAAE;oCACT,UAAU;oCACV,UAAU;oCACV,kBAAkB;oCAClB,iBAAiB;oCACjB,kBAAkB;oCAClB,QAAQ;oCACR,wBAAwB;oCACxB,eAAe;iCACf;6BACD;yBACD;wBACD,kBAAkB,EAAE,IAAI;wBACxB,eAAe,EAAE,IAAI;wBACrB,WAAW,EAAE,IAAI;wBACjB,cAAc,EAAE;4BACf,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;yBAC/B;qBACD;iBACD;gBACD,SAAS,EAAE;oBACV,MAAM,EAAE,EAAE;oBACV,gBAAgB,EAAE,IAAI;oBACtB,aAAa,EAAE,IAAI;oBACnB,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE;wBACd,eAAe,EAAE,IAAI;qBACrB;iBACD;aACD;YACD,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;SACjD,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,gBAAgB,CAAC,kCAAkC,EAAE;YAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;SAClD,CAAC,CAAC;QACH,wFAAwF;QACxF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC/D,CAAC;CACD"}
@@ -0,0 +1,11 @@
1
+ export declare const DEFAULT_MAX_REFERENCES = 200;
2
+ export declare const DEFAULT_MAX_SYMBOLS = 200;
3
+ export declare const DEFAULT_MAX_DIAGNOSTICS = 200;
4
+ export declare const DEFAULT_MAX_DIRECTORY_FILES = 50;
5
+ export declare const REQUEST_TIMEOUT_MS = 15000;
6
+ export declare const INIT_TIMEOUT_MS = 60000;
7
+ export declare const IDLE_TIMEOUT_MS: number;
8
+ export declare const REAPER_INTERVAL_MS = 60000;
9
+ export declare const STOP_HARD_KILL_TIMEOUT_MS = 5000;
10
+ export declare const STOP_SIGKILL_GRACE_MS = 1000;
11
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lsp/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,eAAe,QAAa,CAAC;AAC1C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAC/C,eAAO,MAAM,qBAAqB,OAAQ,CAAC"}