@nxuss/lemma 1.32.0 → 1.34.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 (183) hide show
  1. package/README.md +16 -2
  2. package/dashboard/README.md +28 -332
  3. package/dashboard/dist/assets/{index-Dh-whqJ7.js → index-euG1IvQ7.js} +82 -82
  4. package/dashboard/dist/index.html +1 -1
  5. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  6. package/dist/cjs/cli/lemma-proxy.js +20 -1
  7. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  8. package/dist/cjs/language-core/contracts/CapabilityMatrix.d.ts +10 -0
  9. package/dist/cjs/language-core/contracts/CapabilityMatrix.d.ts.map +1 -0
  10. package/dist/cjs/language-core/contracts/CapabilityMatrix.js +70 -0
  11. package/dist/cjs/language-core/contracts/CapabilityMatrix.js.map +1 -0
  12. package/dist/cjs/language-core/detection/detectProjectType.d.ts +17 -0
  13. package/dist/cjs/language-core/detection/detectProjectType.d.ts.map +1 -0
  14. package/dist/cjs/language-core/detection/detectProjectType.js +186 -0
  15. package/dist/cjs/language-core/detection/detectProjectType.js.map +1 -0
  16. package/dist/cjs/language-core/registry/adapterRegistry.d.ts +11 -0
  17. package/dist/cjs/language-core/registry/adapterRegistry.d.ts.map +1 -0
  18. package/dist/cjs/language-core/registry/adapterRegistry.js +45 -0
  19. package/dist/cjs/language-core/registry/adapterRegistry.js.map +1 -0
  20. package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.d.ts +24 -0
  21. package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.d.ts.map +1 -0
  22. package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.js +199 -0
  23. package/dist/cjs/languages/adapters/dotnet/DotNetDependencyGraph.js.map +1 -0
  24. package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts +37 -0
  25. package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts.map +1 -0
  26. package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.js +51 -0
  27. package/dist/cjs/languages/adapters/dotnet/DotNetLanguageAdapter.js.map +1 -0
  28. package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.d.ts +25 -0
  29. package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.d.ts.map +1 -0
  30. package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.js +241 -0
  31. package/dist/cjs/languages/adapters/dotnet/DotNetPatchValidator.js.map +1 -0
  32. package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.d.ts +18 -0
  33. package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.d.ts.map +1 -0
  34. package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.js +214 -0
  35. package/dist/cjs/languages/adapters/dotnet/DotNetSymbolGraph.js.map +1 -0
  36. package/dist/cjs/languages/csharp/csharpSymbols.d.ts +33 -0
  37. package/dist/cjs/languages/csharp/csharpSymbols.d.ts.map +1 -0
  38. package/dist/cjs/languages/csharp/csharpSymbols.js +274 -0
  39. package/dist/cjs/languages/csharp/csharpSymbols.js.map +1 -0
  40. package/dist/cjs/mcp/cognitiveMap.d.ts +39 -10
  41. package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -1
  42. package/dist/cjs/mcp/cognitiveMap.js +488 -31
  43. package/dist/cjs/mcp/cognitiveMap.js.map +1 -1
  44. package/dist/cjs/mcp/index.js +6 -0
  45. package/dist/cjs/mcp/index.js.map +1 -1
  46. package/dist/cjs/mcp/tools/analysis.d.ts.map +1 -1
  47. package/dist/cjs/mcp/tools/analysis.js +9 -0
  48. package/dist/cjs/mcp/tools/analysis.js.map +1 -1
  49. package/dist/cjs/mcp/tools/codenav.d.ts.map +1 -1
  50. package/dist/cjs/mcp/tools/codenav.js +45 -76
  51. package/dist/cjs/mcp/tools/codenav.js.map +1 -1
  52. package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
  53. package/dist/cjs/mcp/tools/context-tools.js +28 -0
  54. package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
  55. package/dist/cjs/mcp/tools/depgraph.d.ts.map +1 -1
  56. package/dist/cjs/mcp/tools/depgraph.js +15 -0
  57. package/dist/cjs/mcp/tools/depgraph.js.map +1 -1
  58. package/dist/cjs/mcp/tools/dev-utils.d.ts.map +1 -1
  59. package/dist/cjs/mcp/tools/dev-utils.js +6 -0
  60. package/dist/cjs/mcp/tools/dev-utils.js.map +1 -1
  61. package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -1
  62. package/dist/cjs/mcp/tools/devtools.js +51 -39
  63. package/dist/cjs/mcp/tools/devtools.js.map +1 -1
  64. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
  65. package/dist/cjs/mcp/tools/memory.js +10 -0
  66. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  67. package/dist/cjs/mcp/tools/misc.d.ts.map +1 -1
  68. package/dist/cjs/mcp/tools/misc.js +11 -0
  69. package/dist/cjs/mcp/tools/misc.js.map +1 -1
  70. package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -1
  71. package/dist/cjs/mcp/tools/refactor.js +9 -0
  72. package/dist/cjs/mcp/tools/refactor.js.map +1 -1
  73. package/dist/cjs/mcp/tools.d.ts +1 -0
  74. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  75. package/dist/cjs/mcp/tools.js +44 -7
  76. package/dist/cjs/mcp/tools.js.map +1 -1
  77. package/dist/cjs/proxy/DebuggerState.d.ts +3 -0
  78. package/dist/cjs/proxy/DebuggerState.d.ts.map +1 -0
  79. package/dist/cjs/proxy/DebuggerState.js +18 -0
  80. package/dist/cjs/proxy/DebuggerState.js.map +1 -0
  81. package/dist/cjs/subconscious/TheBrainV2.d.ts +11 -0
  82. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  83. package/dist/cjs/subconscious/TheBrainV2.js +8 -0
  84. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  85. package/dist/cjs/utils/SearchCache.d.ts +2 -2
  86. package/dist/cjs/utils/SearchCache.d.ts.map +1 -1
  87. package/dist/cjs/utils/SearchCache.js +6 -6
  88. package/dist/cjs/utils/SearchCache.js.map +1 -1
  89. package/dist/cjs/utils/WorkspaceSearch.d.ts +3 -1
  90. package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
  91. package/dist/cjs/utils/WorkspaceSearch.js +5 -2
  92. package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
  93. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  94. package/dist/esm/cli/lemma-proxy.js +20 -1
  95. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  96. package/dist/esm/language-core/contracts/CapabilityMatrix.d.ts +10 -0
  97. package/dist/esm/language-core/contracts/CapabilityMatrix.d.ts.map +1 -0
  98. package/dist/esm/language-core/contracts/CapabilityMatrix.js +66 -0
  99. package/dist/esm/language-core/contracts/CapabilityMatrix.js.map +1 -0
  100. package/dist/esm/language-core/detection/detectProjectType.d.ts +17 -0
  101. package/dist/esm/language-core/detection/detectProjectType.d.ts.map +1 -0
  102. package/dist/esm/language-core/detection/detectProjectType.js +150 -0
  103. package/dist/esm/language-core/detection/detectProjectType.js.map +1 -0
  104. package/dist/esm/language-core/registry/adapterRegistry.d.ts +11 -0
  105. package/dist/esm/language-core/registry/adapterRegistry.d.ts.map +1 -0
  106. package/dist/esm/language-core/registry/adapterRegistry.js +41 -0
  107. package/dist/esm/language-core/registry/adapterRegistry.js.map +1 -0
  108. package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.d.ts +24 -0
  109. package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.d.ts.map +1 -0
  110. package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.js +162 -0
  111. package/dist/esm/languages/adapters/dotnet/DotNetDependencyGraph.js.map +1 -0
  112. package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts +37 -0
  113. package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.d.ts.map +1 -0
  114. package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.js +44 -0
  115. package/dist/esm/languages/adapters/dotnet/DotNetLanguageAdapter.js.map +1 -0
  116. package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.d.ts +25 -0
  117. package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.d.ts.map +1 -0
  118. package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.js +201 -0
  119. package/dist/esm/languages/adapters/dotnet/DotNetPatchValidator.js.map +1 -0
  120. package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.d.ts +18 -0
  121. package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.d.ts.map +1 -0
  122. package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.js +175 -0
  123. package/dist/esm/languages/adapters/dotnet/DotNetSymbolGraph.js.map +1 -0
  124. package/dist/esm/languages/csharp/csharpSymbols.d.ts +33 -0
  125. package/dist/esm/languages/csharp/csharpSymbols.d.ts.map +1 -0
  126. package/dist/esm/languages/csharp/csharpSymbols.js +268 -0
  127. package/dist/esm/languages/csharp/csharpSymbols.js.map +1 -0
  128. package/dist/esm/mcp/cognitiveMap.d.ts +39 -10
  129. package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -1
  130. package/dist/esm/mcp/cognitiveMap.js +442 -25
  131. package/dist/esm/mcp/cognitiveMap.js.map +1 -1
  132. package/dist/esm/mcp/index.js +6 -0
  133. package/dist/esm/mcp/index.js.map +1 -1
  134. package/dist/esm/mcp/tools/analysis.d.ts.map +1 -1
  135. package/dist/esm/mcp/tools/analysis.js +9 -0
  136. package/dist/esm/mcp/tools/analysis.js.map +1 -1
  137. package/dist/esm/mcp/tools/codenav.d.ts.map +1 -1
  138. package/dist/esm/mcp/tools/codenav.js +46 -77
  139. package/dist/esm/mcp/tools/codenav.js.map +1 -1
  140. package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
  141. package/dist/esm/mcp/tools/context-tools.js +28 -0
  142. package/dist/esm/mcp/tools/context-tools.js.map +1 -1
  143. package/dist/esm/mcp/tools/depgraph.d.ts.map +1 -1
  144. package/dist/esm/mcp/tools/depgraph.js +15 -0
  145. package/dist/esm/mcp/tools/depgraph.js.map +1 -1
  146. package/dist/esm/mcp/tools/dev-utils.d.ts.map +1 -1
  147. package/dist/esm/mcp/tools/dev-utils.js +6 -0
  148. package/dist/esm/mcp/tools/dev-utils.js.map +1 -1
  149. package/dist/esm/mcp/tools/devtools.d.ts.map +1 -1
  150. package/dist/esm/mcp/tools/devtools.js +51 -39
  151. package/dist/esm/mcp/tools/devtools.js.map +1 -1
  152. package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
  153. package/dist/esm/mcp/tools/memory.js +10 -0
  154. package/dist/esm/mcp/tools/memory.js.map +1 -1
  155. package/dist/esm/mcp/tools/misc.d.ts.map +1 -1
  156. package/dist/esm/mcp/tools/misc.js +11 -0
  157. package/dist/esm/mcp/tools/misc.js.map +1 -1
  158. package/dist/esm/mcp/tools/refactor.d.ts.map +1 -1
  159. package/dist/esm/mcp/tools/refactor.js +9 -0
  160. package/dist/esm/mcp/tools/refactor.js.map +1 -1
  161. package/dist/esm/mcp/tools.d.ts +1 -0
  162. package/dist/esm/mcp/tools.d.ts.map +1 -1
  163. package/dist/esm/mcp/tools.js +45 -9
  164. package/dist/esm/mcp/tools.js.map +1 -1
  165. package/dist/esm/proxy/DebuggerState.d.ts +3 -0
  166. package/dist/esm/proxy/DebuggerState.d.ts.map +1 -0
  167. package/dist/esm/proxy/DebuggerState.js +14 -0
  168. package/dist/esm/proxy/DebuggerState.js.map +1 -0
  169. package/dist/esm/subconscious/TheBrainV2.d.ts +11 -0
  170. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  171. package/dist/esm/subconscious/TheBrainV2.js +8 -0
  172. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  173. package/dist/esm/utils/SearchCache.d.ts +2 -2
  174. package/dist/esm/utils/SearchCache.d.ts.map +1 -1
  175. package/dist/esm/utils/SearchCache.js +6 -6
  176. package/dist/esm/utils/SearchCache.js.map +1 -1
  177. package/dist/esm/utils/WorkspaceSearch.d.ts +3 -1
  178. package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
  179. package/dist/esm/utils/WorkspaceSearch.js +5 -2
  180. package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
  181. package/mcp-server.js +1 -1
  182. package/package.json +4 -2
  183. package/dashboard/dist/assets/index-Dh-whqJ7.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DOTNET_SUPPORT = void 0;
4
+ exports.isDotNetTarget = isDotNetTarget;
5
+ exports.dotNetHologramResult = dotNetHologramResult;
6
+ exports.dotNetSurgicalResult = dotNetSurgicalResult;
7
+ exports.dotNetDepgraphResult = dotNetDepgraphResult;
8
+ const adapterRegistry_1 = require("../../../language-core/registry/adapterRegistry");
9
+ const DotNetDependencyGraph_1 = require("./DotNetDependencyGraph");
10
+ const DotNetSymbolGraph_1 = require("./DotNetSymbolGraph");
11
+ exports.DOTNET_SUPPORT = {
12
+ get_ast_hologram: "full",
13
+ get_symbol_surgical_context: "full",
14
+ depgraph: "partial",
15
+ validate_patch_sandbox: "partial",
16
+ refactor: "fallback",
17
+ refactor_rename: "fallback",
18
+ refactor_move: "fallback",
19
+ surgical_ast_insert: "fallback",
20
+ type_coverage_report: "fallback",
21
+ entropy_score: "fallback",
22
+ };
23
+ /** True when this file/dir target should be served by the .NET adapter. */
24
+ function isDotNetTarget(root, fileOrDir) {
25
+ if (!fileOrDir)
26
+ return (0, adapterRegistry_1.resolveAdapterForProject)(root) === "dotnet";
27
+ const byFile = (0, adapterRegistry_1.resolveAdapterForFile)(root, fileOrDir);
28
+ if (byFile)
29
+ return byFile === "dotnet";
30
+ return (0, adapterRegistry_1.resolveAdapterForProject)(root) === "dotnet";
31
+ }
32
+ function dotNetHologramResult(root, dirRel) {
33
+ return {
34
+ content: [{ type: "text", text: (0, DotNetSymbolGraph_1.formatDotNetHologram)(root, dirRel) }],
35
+ };
36
+ }
37
+ function dotNetSurgicalResult(root, filePath, symbolName) {
38
+ return {
39
+ content: [
40
+ { type: "text", text: (0, DotNetSymbolGraph_1.dotNetSurgicalContext)(root, filePath, symbolName) },
41
+ ],
42
+ };
43
+ }
44
+ function dotNetDepgraphResult(root, filePath, opts) {
45
+ return {
46
+ content: [
47
+ { type: "text", text: (0, DotNetDependencyGraph_1.formatDotNetDepGraph)(root, filePath, opts) },
48
+ ],
49
+ };
50
+ }
51
+ //# sourceMappingURL=DotNetLanguageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetLanguageAdapter.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetLanguageAdapter.ts"],"names":[],"mappings":";;;AAyBA,wCAKC;AAED,oDAOC;AAED,oDAUC;AAED,oDAUC;AA/DD,qFAIyD;AACzD,mEAA+D;AAC/D,2DAG6B;AAEhB,QAAA,cAAc,GAAG;IAC5B,gBAAgB,EAAE,MAAM;IACxB,2BAA2B,EAAE,MAAM;IACnC,QAAQ,EAAE,SAAS;IACnB,sBAAsB,EAAE,SAAS;IACjC,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,UAAU;IAC3B,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,UAAU;IAC/B,oBAAoB,EAAE,UAAU;IAChC,aAAa,EAAE,UAAU;CACjB,CAAC;AAEX,2EAA2E;AAC3E,SAAgB,cAAc,CAAC,IAAY,EAAE,SAAiB;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,IAAA,0CAAwB,EAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;IACnE,MAAM,MAAM,GAAqB,IAAA,uCAAqB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxE,IAAI,MAAM;QAAE,OAAO,MAAM,KAAK,QAAQ,CAAC;IACvC,OAAO,IAAA,0CAAwB,EAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,MAAc;IAEd,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,wCAAoB,EAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,QAAgB,EAChB,UAAkB;IAElB,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,yCAAqB,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAClC,IAAY,EACZ,QAAgB,EAChB,IAA4D;IAE5D,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,4CAAoB,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;SACnE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ export interface DotNetValidation {
2
+ verdict: "SAFE TO APPLY" | "DO NOT APPLY -- Issues Found";
3
+ syntaxBalanced: boolean;
4
+ /** Human-readable outcome; explicit about whether a real build ran. */
5
+ csharpCheck: string;
6
+ buildAttempted: boolean;
7
+ }
8
+ /** Injectable CLI runner so unit tests never need the .NET SDK installed. */
9
+ export type DotNetRunner = (args: string[], cwd: string) => string;
10
+ export declare function defaultDotNetRunner(args: string[], cwd: string): string;
11
+ /** Cached `dotnet --version` probe. Never throws. */
12
+ export declare function isDotnetAvailable(): boolean;
13
+ export declare function resetDotnetAvailabilityCache(): void;
14
+ /** Nearest .csproj at or above the target file, relative to root. Null if none. */
15
+ export declare function findNearestCsproj(root: string, fileRel: string): string | null;
16
+ /**
17
+ * Three-level C# patch validation:
18
+ * 1. `dotnet build` on a temp copy of the owning project (real compiler).
19
+ * 2. Structural check (brackets + C# parse smoke) with an explicit disclaimer.
20
+ * 3. Never the TypeScript path — callers route here only for C# targets.
21
+ */
22
+ export declare function validateCSharpPatch(root: string, fileRel: string, patchedContent: string, runner?: DotNetRunner, opts?: {
23
+ dotnetAvailable?: boolean;
24
+ }): DotNetValidation;
25
+ //# sourceMappingURL=DotNetPatchValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetPatchValidator.d.ts","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetPatchValidator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,GAAG,8BAA8B,CAAC;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQvE;AAID,qDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,OAAO,CAY3C;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAiBf;AAyDD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,YAAkC,EAC1C,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,gBAAgB,CAwFlB"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.defaultDotNetRunner = defaultDotNetRunner;
37
+ exports.isDotnetAvailable = isDotnetAvailable;
38
+ exports.resetDotnetAvailabilityCache = resetDotnetAvailabilityCache;
39
+ exports.findNearestCsproj = findNearestCsproj;
40
+ exports.validateCSharpPatch = validateCSharpPatch;
41
+ const child_process_1 = require("child_process");
42
+ const fs = __importStar(require("fs"));
43
+ const os = __importStar(require("os"));
44
+ const path = __importStar(require("path"));
45
+ const csharpSymbols_1 = require("../../csharp/csharpSymbols");
46
+ function defaultDotNetRunner(args, cwd) {
47
+ return (0, child_process_1.execFileSync)("dotnet", args, {
48
+ cwd,
49
+ timeout: 120000,
50
+ stdio: ["ignore", "pipe", "pipe"],
51
+ encoding: "utf8",
52
+ maxBuffer: 8 * 1024 * 1024,
53
+ });
54
+ }
55
+ let _dotnetAvailable = null;
56
+ /** Cached `dotnet --version` probe. Never throws. */
57
+ function isDotnetAvailable() {
58
+ if (_dotnetAvailable !== null)
59
+ return _dotnetAvailable;
60
+ try {
61
+ (0, child_process_1.execFileSync)("dotnet", ["--version"], {
62
+ timeout: 15000,
63
+ stdio: ["ignore", "pipe", "pipe"],
64
+ });
65
+ _dotnetAvailable = true;
66
+ }
67
+ catch {
68
+ _dotnetAvailable = false;
69
+ }
70
+ return _dotnetAvailable;
71
+ }
72
+ function resetDotnetAvailabilityCache() {
73
+ _dotnetAvailable = null;
74
+ }
75
+ /** Nearest .csproj at or above the target file, relative to root. Null if none. */
76
+ function findNearestCsproj(root, fileRel) {
77
+ const stop = path.resolve(root);
78
+ let dir = path.dirname(path.resolve(root, fileRel));
79
+ while (true) {
80
+ try {
81
+ const entries = fs.readdirSync(dir);
82
+ const hit = entries.find((f) => f.toLowerCase().endsWith(".csproj"));
83
+ if (hit)
84
+ return path.relative(stop, path.join(dir, hit)).replace(/\\/g, "/");
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ if (dir === stop)
90
+ return null;
91
+ const parent = path.dirname(dir);
92
+ if (parent === dir || parent.length < stop.length)
93
+ return null;
94
+ dir = parent;
95
+ }
96
+ }
97
+ const MAX_COPY_FILES = 100;
98
+ const MAX_COPY_BYTES = 5 * 1024 * 1024;
99
+ const COPY_EXTS = new Set([".cs", ".csproj", ".props", ".targets", ".sln"]);
100
+ function copyProjectForBuild(root, csprojRel, targetRel, patchedContent) {
101
+ const sandboxDir = fs.mkdtempSync(path.join(os.tmpdir(), "lemma-dotnet-"));
102
+ const projectDir = path.dirname(path.join(root, csprojRel));
103
+ const stack = [projectDir];
104
+ let files = 0;
105
+ let bytes = 0;
106
+ while (stack.length > 0) {
107
+ const dir = stack.pop();
108
+ let entries;
109
+ try {
110
+ entries = fs.readdirSync(dir, { withFileTypes: true });
111
+ }
112
+ catch {
113
+ continue;
114
+ }
115
+ for (const e of entries) {
116
+ if (["bin", "obj", ".git", ".vs"].includes(e.name))
117
+ continue;
118
+ const abs = path.join(dir, e.name);
119
+ if (e.isDirectory()) {
120
+ stack.push(abs);
121
+ continue;
122
+ }
123
+ if (!COPY_EXTS.has(path.extname(e.name).toLowerCase()))
124
+ continue;
125
+ if (files >= MAX_COPY_FILES)
126
+ break;
127
+ const rel = path.relative(projectDir, abs);
128
+ const dest = path.join(sandboxDir, rel);
129
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
130
+ if (path.relative(root, abs).replace(/\\/g, "/") === targetRel) {
131
+ fs.writeFileSync(dest, patchedContent, "utf8");
132
+ }
133
+ else {
134
+ const st = fs.statSync(abs);
135
+ if (bytes + st.size > MAX_COPY_BYTES)
136
+ continue;
137
+ fs.copyFileSync(abs, dest);
138
+ bytes += st.size;
139
+ }
140
+ files++;
141
+ }
142
+ }
143
+ return sandboxDir;
144
+ }
145
+ function bracketBalanced(content) {
146
+ const opens = (content.match(/[{[(]/g) || []).length;
147
+ const closes = (content.match(/[}\])]/g) || []).length;
148
+ return Math.abs(opens - closes) <= 2;
149
+ }
150
+ /**
151
+ * Three-level C# patch validation:
152
+ * 1. `dotnet build` on a temp copy of the owning project (real compiler).
153
+ * 2. Structural check (brackets + C# parse smoke) with an explicit disclaimer.
154
+ * 3. Never the TypeScript path — callers route here only for C# targets.
155
+ */
156
+ function validateCSharpPatch(root, fileRel, patchedContent, runner = defaultDotNetRunner, opts = {}) {
157
+ const balanced = bracketBalanced(patchedContent);
158
+ let structural;
159
+ try {
160
+ const s = (0, csharpSymbols_1.parseCSharpFile)(patchedContent);
161
+ const total = s.classes.length +
162
+ s.interfaces.length +
163
+ s.enums.length +
164
+ s.records.length +
165
+ s.structs.length;
166
+ structural = `parsed OK (${total} types, ${s.methods.length} methods)`;
167
+ }
168
+ catch (e) {
169
+ return {
170
+ verdict: "DO NOT APPLY -- Issues Found",
171
+ syntaxBalanced: balanced,
172
+ csharpCheck: `C# structural parse failed: ${e?.message ?? e}`,
173
+ buildAttempted: false,
174
+ };
175
+ }
176
+ const csproj = findNearestCsproj(root, fileRel);
177
+ if (!csproj) {
178
+ return {
179
+ verdict: balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
180
+ syntaxBalanced: balanced,
181
+ csharpCheck: `No .csproj found near ${fileRel} — structural check only (${structural}), NOT a build.`,
182
+ buildAttempted: false,
183
+ };
184
+ }
185
+ const dotnetAvailable = opts.dotnetAvailable ?? isDotnetAvailable();
186
+ if (!dotnetAvailable) {
187
+ return {
188
+ verdict: balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
189
+ syntaxBalanced: balanced,
190
+ csharpCheck: `.NET SDK not available — structural check only (${structural}), NOT a build. Install dotnet for compiler validation.`,
191
+ buildAttempted: false,
192
+ };
193
+ }
194
+ const sandboxDir = copyProjectForBuild(root, csproj, fileRel, patchedContent);
195
+ try {
196
+ const projectName = path.basename(csproj);
197
+ let output;
198
+ let exitedOk = true;
199
+ try {
200
+ output = runner([
201
+ "build",
202
+ projectName,
203
+ "--nologo",
204
+ "-v:q",
205
+ "/p:ContinuousIntegrationBuild=true",
206
+ ], sandboxDir);
207
+ }
208
+ catch (e) {
209
+ exitedOk = false;
210
+ const stdout = typeof e?.stdout === "string" ? e.stdout : "";
211
+ const stderr = typeof e?.stderr === "string" ? e.stderr : "";
212
+ output = `${stdout}\n${stderr}`.trim() || e?.message || String(e);
213
+ }
214
+ const errors = output
215
+ .split("\n")
216
+ .filter((l) => /error\s+CS\d+/i.test(l))
217
+ .slice(0, 40);
218
+ // A thrown runner (timeout, spawn failure) is never a pass, even without CS errors.
219
+ const ok = exitedOk && errors.length === 0 && !/Build FAILED/i.test(output);
220
+ const tail = output.length > 4000 ? `…\n${output.slice(-4000)}` : output;
221
+ return {
222
+ verdict: ok && balanced ? "SAFE TO APPLY" : "DO NOT APPLY -- Issues Found",
223
+ syntaxBalanced: balanced,
224
+ csharpCheck: errors.length > 0
225
+ ? errors.join("\n")
226
+ : ok
227
+ ? `dotnet build passed.\n${tail}`
228
+ : `dotnet build failed.\n${tail}`,
229
+ buildAttempted: true,
230
+ };
231
+ }
232
+ finally {
233
+ try {
234
+ fs.rmSync(sandboxDir, { recursive: true, force: true });
235
+ }
236
+ catch {
237
+ // best-effort cleanup of the temp copy
238
+ }
239
+ }
240
+ }
241
+ //# sourceMappingURL=DotNetPatchValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetPatchValidator.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetPatchValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type CSharpFileSymbols } from "../../csharp/csharpSymbols";
2
+ export interface DotNetHologramEntry {
3
+ file: string;
4
+ kind: string;
5
+ name: string;
6
+ line: number;
7
+ }
8
+ export declare function symbolsForFile(root: string, rel: string): CSharpFileSymbols | null;
9
+ /** Compact whole-scope symbol map, mirroring the TS hologram's per-file shape. */
10
+ export declare function dotNetHologram(root: string, dirRel: string): {
11
+ entries: DotNetHologramEntry[];
12
+ filesScanned: number;
13
+ truncated: boolean;
14
+ };
15
+ export declare function formatDotNetHologram(root: string, dirRel: string): string;
16
+ /** Surgical slice: declaration + signature block for one type or Type.Method. */
17
+ export declare function dotNetSurgicalContext(root: string, rel: string, symbolName: string): string;
18
+ //# sourceMappingURL=DotNetSymbolGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetSymbolGraph.d.ts","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetSymbolGraph.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AA4CpC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,iBAAiB,GAAG,IAAI,CAU1B;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb;IACD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,CA+BA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBzE;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,MAAM,CAiER"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.symbolsForFile = symbolsForFile;
37
+ exports.dotNetHologram = dotNetHologram;
38
+ exports.formatDotNetHologram = formatDotNetHologram;
39
+ exports.dotNetSurgicalContext = dotNetSurgicalContext;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const csharpSymbols_1 = require("../../csharp/csharpSymbols");
43
+ const MAX_FILES = 200;
44
+ const MAX_SYMBOLS = 1000;
45
+ const MAX_SIG_LINES = 10;
46
+ function listCsFiles(root, dirRel) {
47
+ const out = [];
48
+ const base = path.join(root, dirRel);
49
+ const walk = (dir, rel) => {
50
+ if (out.length >= MAX_FILES)
51
+ return;
52
+ let entries;
53
+ try {
54
+ entries = fs.readdirSync(dir, { withFileTypes: true });
55
+ }
56
+ catch {
57
+ return;
58
+ }
59
+ for (const e of entries) {
60
+ if (["node_modules", ".git", "bin", "obj", "dist", ".lemma"].includes(e.name))
61
+ continue;
62
+ const r = rel ? `${rel}/${e.name}` : e.name;
63
+ if (e.isDirectory())
64
+ walk(path.join(dir, e.name), r);
65
+ else if (e.name.toLowerCase().endsWith(".cs")) {
66
+ out.push(r);
67
+ if (out.length >= MAX_FILES)
68
+ return;
69
+ }
70
+ }
71
+ };
72
+ walk(base, dirRel.replace(/^\//, "").replace(/\/$/, ""));
73
+ return out;
74
+ }
75
+ function findDeclLine(lines, name) {
76
+ const re = new RegExp(`\\b${name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`);
77
+ for (let i = 0; i < lines.length; i++) {
78
+ if (re.test(lines[i]))
79
+ return i + 1;
80
+ }
81
+ return 0;
82
+ }
83
+ function symbolsForFile(root, rel) {
84
+ let content;
85
+ try {
86
+ const st = fs.statSync(path.join(root, rel));
87
+ if (!st.isFile())
88
+ return null;
89
+ content = fs.readFileSync(path.join(root, rel), "utf8");
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ return (0, csharpSymbols_1.parseCSharpFile)(content);
95
+ }
96
+ /** Compact whole-scope symbol map, mirroring the TS hologram's per-file shape. */
97
+ function dotNetHologram(root, dirRel) {
98
+ const files = listCsFiles(root, dirRel || "");
99
+ const entries = [];
100
+ let truncated = false;
101
+ for (const rel of files) {
102
+ const syms = symbolsForFile(root, rel);
103
+ if (!syms)
104
+ continue;
105
+ let lines = null;
106
+ const push = (kind, name) => {
107
+ if (entries.length >= MAX_SYMBOLS) {
108
+ truncated = true;
109
+ return;
110
+ }
111
+ if (!lines) {
112
+ try {
113
+ lines = fs.readFileSync(path.join(root, rel), "utf8").split("\n");
114
+ }
115
+ catch {
116
+ lines = [];
117
+ }
118
+ }
119
+ entries.push({ file: rel, kind, name, line: findDeclLine(lines, name) });
120
+ };
121
+ for (const n of syms.classes)
122
+ push("class", n);
123
+ for (const n of syms.interfaces)
124
+ push("interface", n);
125
+ for (const n of syms.enums)
126
+ push("enum", n);
127
+ for (const n of syms.records)
128
+ push("record", n);
129
+ for (const n of syms.structs)
130
+ push("struct", n);
131
+ for (const m of syms.methods)
132
+ push("method", m);
133
+ if (truncated)
134
+ break;
135
+ }
136
+ return { entries, filesScanned: files.length, truncated };
137
+ }
138
+ function formatDotNetHologram(root, dirRel) {
139
+ const { entries, filesScanned, truncated } = dotNetHologram(root, dirRel);
140
+ const lines = [
141
+ `### .NET symbol hologram for \`${dirRel || "."}\` (${filesScanned} .cs files, ${entries.length} symbols)`,
142
+ ];
143
+ const byFile = new Map();
144
+ for (const e of entries) {
145
+ const list = byFile.get(e.file) ?? [];
146
+ list.push(e);
147
+ byFile.set(e.file, list);
148
+ }
149
+ for (const [file, list] of byFile) {
150
+ lines.push(`\n**${file}**`);
151
+ for (const e of list)
152
+ lines.push(` - ${e.kind} ${e.name}${e.line ? ` (line ${e.line})` : ""}`);
153
+ }
154
+ if (truncated)
155
+ lines.push(`\n(truncated at ${MAX_SYMBOLS} symbols — narrow dirPath for the full map)`);
156
+ return lines.join("\n");
157
+ }
158
+ /** Surgical slice: declaration + signature block for one type or Type.Method. */
159
+ function dotNetSurgicalContext(root, rel, symbolName) {
160
+ let content;
161
+ try {
162
+ content = fs.readFileSync(path.join(root, rel), "utf8");
163
+ }
164
+ catch {
165
+ return `Symbol \`${symbolName}\` not found: cannot read \`${rel}\`.`;
166
+ }
167
+ const syms = (0, csharpSymbols_1.parseCSharpFile)(content);
168
+ const lines = content.split("\n");
169
+ const [wantType, wantMember] = symbolName.includes(".")
170
+ ? symbolName.split(".", 2)
171
+ : [null, symbolName];
172
+ const allTypes = [
173
+ ...syms.classes,
174
+ ...syms.interfaces,
175
+ ...syms.enums,
176
+ ...syms.records,
177
+ ...syms.structs,
178
+ ];
179
+ const header = syms.namespaces.length > 0
180
+ ? `namespace ${syms.namespaces[0]};`
181
+ : "(global namespace)";
182
+ // Member lookup: Type.Member
183
+ if (wantType && allTypes.includes(wantType)) {
184
+ const hits = syms.methods.filter((m) => m === `${wantType}.${wantMember}`);
185
+ if (hits.length > 0) {
186
+ const idx = lines.findIndex((l) => new RegExp(`\\b${wantMember}\\s*\\(`).test(l));
187
+ const sig = idx >= 0
188
+ ? lines
189
+ .slice(idx, Math.min(lines.length, idx + MAX_SIG_LINES))
190
+ .join("\n")
191
+ : `${wantType}.${wantMember}`;
192
+ return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${sig}\n\`\`\``;
193
+ }
194
+ const typeIdx = lines.findIndex((l) => new RegExp(`\\b${wantType}\\b`).test(l));
195
+ const decl = typeIdx >= 0
196
+ ? lines.slice(typeIdx, Math.min(lines.length, typeIdx + 3)).join("\n")
197
+ : wantType;
198
+ return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${decl}\n\`\`\`\n(Member \`${wantMember}\` not found on \`${wantType}\`.)`;
199
+ }
200
+ // Bare type lookup
201
+ if (allTypes.includes(wantMember)) {
202
+ const idx = lines.findIndex((l) => new RegExp(`\\b${wantMember}\\b`).test(l));
203
+ const decl = idx >= 0
204
+ ? lines.slice(idx, Math.min(lines.length, idx + 3)).join("\n")
205
+ : wantMember;
206
+ const members = syms.methods.filter((m) => m.startsWith(`${wantMember}.`));
207
+ const memberList = members.length > 0
208
+ ? `\n## Members\n${members.map((m) => ` - ${m}`).join("\n")}`
209
+ : "";
210
+ return `# 🧬 Surgical Context: Symbol \`${symbolName}\` in \`${rel}\` (.NET)\n${header}\n## Declaration\n\`\`\`csharp\n${decl}\n\`\`\`${memberList}`;
211
+ }
212
+ return `Symbol \`${symbolName}\` not found in \`${rel}\` (.NET). Known types: ${allTypes.slice(0, 20).join(", ") || "(none)"}.`;
213
+ }
214
+ //# sourceMappingURL=DotNetSymbolGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DotNetSymbolGraph.js","sourceRoot":"","sources":["../../../../../src/languages/adapters/dotnet/DotNetSymbolGraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface CSharpFileSymbols {
2
+ namespaces: string[];
3
+ usings: string[];
4
+ classes: string[];
5
+ interfaces: string[];
6
+ enums: string[];
7
+ records: string[];
8
+ structs: string[];
9
+ /** Best-effort `TypeName.MethodName`; methods that cannot be attributed appear bare. */
10
+ methods: string[];
11
+ }
12
+ export interface CsprojInfo {
13
+ targetFrameworks: string[];
14
+ projectReferences: string[];
15
+ packageReferences: Array<{
16
+ name: string;
17
+ version?: string;
18
+ }>;
19
+ }
20
+ export declare const CSHARP_MAX_FILE_BYTES = 300000;
21
+ /**
22
+ * Replace comments and string/char literals with spaces (newlines preserved)
23
+ * so declaration regexes never match inside them.
24
+ */
25
+ export declare function maskNonCode(content: string): string;
26
+ /**
27
+ * Deterministic line-based C# symbol extraction. Documented limits:
28
+ * methods are attributed to the innermost lexically-open type; expression edge
29
+ * cases (local functions, lambdas assigned to fields) are ignored by design.
30
+ */
31
+ export declare function parseCSharpFile(content: string): CSharpFileSymbols;
32
+ export declare function parseCsproj(content: string): CsprojInfo;
33
+ //# sourceMappingURL=csharpSymbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharpSymbols.d.ts","sourceRoot":"","sources":["../../../../src/languages/csharp/csharpSymbols.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wFAAwF;IACxF,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,eAAO,MAAM,qBAAqB,SAAU,CAAC;AA8B7C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA4GnD;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAgGlE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAgCvD"}