aspectcode 0.4.1 → 1.0.1

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 (248) hide show
  1. package/README.md +2 -2
  2. package/dist/agentsMdRenderer.d.ts +16 -0
  3. package/dist/agentsMdRenderer.d.ts.map +1 -0
  4. package/dist/agentsMdRenderer.js +137 -0
  5. package/dist/agentsMdRenderer.js.map +1 -0
  6. package/dist/auth.d.ts +31 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +386 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/autoResolve.d.ts +41 -0
  11. package/dist/autoResolve.d.ts.map +1 -0
  12. package/dist/autoResolve.js +196 -0
  13. package/dist/autoResolve.js.map +1 -0
  14. package/dist/changeEvaluator.d.ts +56 -0
  15. package/dist/changeEvaluator.d.ts.map +1 -0
  16. package/dist/changeEvaluator.js +674 -0
  17. package/dist/changeEvaluator.js.map +1 -0
  18. package/dist/cli.d.ts +3 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +1 -1
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config.d.ts +37 -17
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +50 -2
  25. package/dist/config.js.map +1 -1
  26. package/dist/dreamCycle.d.ts +57 -0
  27. package/dist/dreamCycle.d.ts.map +1 -0
  28. package/dist/dreamCycle.js +334 -0
  29. package/dist/dreamCycle.js.map +1 -0
  30. package/dist/kbBuilder.d.ts +1 -2
  31. package/dist/kbBuilder.d.ts.map +1 -1
  32. package/dist/kbBuilder.js +1 -2
  33. package/dist/kbBuilder.js.map +1 -1
  34. package/dist/main.d.ts +2 -1
  35. package/dist/main.d.ts.map +1 -1
  36. package/dist/main.js +148 -7
  37. package/dist/main.js.map +1 -1
  38. package/dist/optimize.d.ts +13 -6
  39. package/dist/optimize.d.ts.map +1 -1
  40. package/dist/optimize.js +433 -142
  41. package/dist/optimize.js.map +1 -1
  42. package/dist/pipeline.d.ts +19 -21
  43. package/dist/pipeline.d.ts.map +1 -1
  44. package/dist/pipeline.js +1093 -160
  45. package/dist/pipeline.js.map +1 -1
  46. package/dist/preferences.d.ts +80 -0
  47. package/dist/preferences.d.ts.map +1 -0
  48. package/dist/preferences.js +238 -0
  49. package/dist/preferences.js.map +1 -0
  50. package/dist/runtimeState.d.ts +30 -0
  51. package/dist/runtimeState.d.ts.map +1 -0
  52. package/dist/runtimeState.js +39 -0
  53. package/dist/runtimeState.js.map +1 -0
  54. package/dist/scopedRules.d.ts +84 -0
  55. package/dist/scopedRules.d.ts.map +1 -0
  56. package/dist/scopedRules.js +449 -0
  57. package/dist/scopedRules.js.map +1 -0
  58. package/dist/ui/Dashboard.d.ts +4 -16
  59. package/dist/ui/Dashboard.d.ts.map +1 -1
  60. package/dist/ui/Dashboard.js +339 -140
  61. package/dist/ui/Dashboard.js.map +1 -1
  62. package/dist/ui/MemoryMap.d.ts +16 -0
  63. package/dist/ui/MemoryMap.d.ts.map +1 -0
  64. package/dist/ui/MemoryMap.js +266 -0
  65. package/dist/ui/MemoryMap.js.map +1 -0
  66. package/dist/ui/SettingsPanel.d.ts +18 -0
  67. package/dist/ui/SettingsPanel.d.ts.map +1 -0
  68. package/dist/ui/SettingsPanel.js +241 -0
  69. package/dist/ui/SettingsPanel.js.map +1 -0
  70. package/dist/ui/prompts.d.ts +7 -0
  71. package/dist/ui/prompts.d.ts.map +1 -1
  72. package/dist/ui/prompts.js +63 -0
  73. package/dist/ui/prompts.js.map +1 -1
  74. package/dist/ui/store.d.ts +154 -18
  75. package/dist/ui/store.d.ts.map +1 -1
  76. package/dist/ui/store.js +154 -24
  77. package/dist/ui/store.js.map +1 -1
  78. package/dist/ui/theme.d.ts +1 -8
  79. package/dist/ui/theme.d.ts.map +1 -1
  80. package/dist/ui/theme.js +2 -21
  81. package/dist/ui/theme.js.map +1 -1
  82. package/dist/updateChecker.d.ts +13 -0
  83. package/dist/updateChecker.d.ts.map +1 -0
  84. package/dist/updateChecker.js +66 -0
  85. package/dist/updateChecker.js.map +1 -0
  86. package/dist/usageTracker.d.ts +12 -0
  87. package/dist/usageTracker.d.ts.map +1 -0
  88. package/dist/usageTracker.js +89 -0
  89. package/dist/usageTracker.js.map +1 -0
  90. package/dist/writer.d.ts +1 -7
  91. package/dist/writer.d.ts.map +1 -1
  92. package/dist/writer.js +1 -11
  93. package/dist/writer.js.map +1 -1
  94. package/node_modules/@aspectcode/core/dist/analysis/repo.d.ts.map +1 -1
  95. package/node_modules/@aspectcode/core/dist/analysis/repo.js +13 -2
  96. package/node_modules/@aspectcode/core/dist/analysis/repo.js.map +1 -1
  97. package/node_modules/@aspectcode/core/dist/index.d.ts +1 -3
  98. package/node_modules/@aspectcode/core/dist/index.d.ts.map +1 -1
  99. package/node_modules/@aspectcode/core/dist/index.js +1 -3
  100. package/node_modules/@aspectcode/core/dist/index.js.map +1 -1
  101. package/node_modules/@aspectcode/core/dist/parsers/genericExtractors.d.ts +14 -0
  102. package/node_modules/@aspectcode/core/dist/parsers/genericExtractors.d.ts.map +1 -0
  103. package/node_modules/@aspectcode/core/dist/parsers/genericExtractors.js +191 -0
  104. package/node_modules/@aspectcode/core/dist/parsers/genericExtractors.js.map +1 -0
  105. package/node_modules/@aspectcode/core/dist/parsers/index.d.ts +1 -0
  106. package/node_modules/@aspectcode/core/dist/parsers/index.d.ts.map +1 -1
  107. package/node_modules/@aspectcode/core/dist/parsers/index.js +6 -1
  108. package/node_modules/@aspectcode/core/dist/parsers/index.js.map +1 -1
  109. package/node_modules/@aspectcode/core/dist/parsers/languages.d.ts +20 -0
  110. package/node_modules/@aspectcode/core/dist/parsers/languages.d.ts.map +1 -1
  111. package/node_modules/@aspectcode/core/dist/parsers/languages.js +25 -0
  112. package/node_modules/@aspectcode/core/dist/parsers/languages.js.map +1 -1
  113. package/node_modules/@aspectcode/core/dist/parsers/tsJsExtractors.d.ts.map +1 -1
  114. package/node_modules/@aspectcode/core/dist/parsers/tsJsExtractors.js +4 -1
  115. package/node_modules/@aspectcode/core/dist/parsers/tsJsExtractors.js.map +1 -1
  116. package/node_modules/@aspectcode/core/package.json +2 -2
  117. package/node_modules/@aspectcode/core/parsers/cpp.wasm +0 -0
  118. package/node_modules/@aspectcode/core/parsers/go.wasm +0 -0
  119. package/node_modules/@aspectcode/core/parsers/php.wasm +0 -0
  120. package/node_modules/@aspectcode/core/parsers/ruby.wasm +0 -0
  121. package/node_modules/@aspectcode/core/parsers/rust.wasm +0 -0
  122. package/node_modules/@aspectcode/emitters/dist/index.d.ts +1 -17
  123. package/node_modules/@aspectcode/emitters/dist/index.d.ts.map +1 -1
  124. package/node_modules/@aspectcode/emitters/dist/index.js +2 -90
  125. package/node_modules/@aspectcode/emitters/dist/index.js.map +1 -1
  126. package/node_modules/@aspectcode/emitters/dist/instructions/index.d.ts +0 -2
  127. package/node_modules/@aspectcode/emitters/dist/instructions/index.d.ts.map +1 -1
  128. package/node_modules/@aspectcode/emitters/dist/instructions/index.js +1 -7
  129. package/node_modules/@aspectcode/emitters/dist/instructions/index.js.map +1 -1
  130. package/node_modules/@aspectcode/emitters/dist/kb/analyzers.d.ts +0 -18
  131. package/node_modules/@aspectcode/emitters/dist/kb/analyzers.d.ts.map +1 -1
  132. package/node_modules/@aspectcode/emitters/dist/kb/analyzers.js +0 -57
  133. package/node_modules/@aspectcode/emitters/dist/kb/analyzers.js.map +1 -1
  134. package/node_modules/@aspectcode/emitters/dist/kb/conventions.d.ts +0 -18
  135. package/node_modules/@aspectcode/emitters/dist/kb/conventions.d.ts.map +1 -1
  136. package/node_modules/@aspectcode/emitters/dist/kb/conventions.js +0 -130
  137. package/node_modules/@aspectcode/emitters/dist/kb/conventions.js.map +1 -1
  138. package/node_modules/@aspectcode/emitters/dist/kb/index.d.ts +2 -4
  139. package/node_modules/@aspectcode/emitters/dist/kb/index.d.ts.map +1 -1
  140. package/node_modules/@aspectcode/emitters/dist/kb/index.js +1 -11
  141. package/node_modules/@aspectcode/emitters/dist/kb/index.js.map +1 -1
  142. package/node_modules/@aspectcode/emitters/package.json +3 -3
  143. package/node_modules/@aspectcode/evaluator/dist/apply.d.ts +55 -0
  144. package/node_modules/@aspectcode/evaluator/dist/apply.d.ts.map +1 -0
  145. package/node_modules/@aspectcode/evaluator/dist/apply.js +368 -0
  146. package/node_modules/@aspectcode/evaluator/dist/apply.js.map +1 -0
  147. package/node_modules/@aspectcode/evaluator/dist/diagnosis.d.ts +16 -25
  148. package/node_modules/@aspectcode/evaluator/dist/diagnosis.d.ts.map +1 -1
  149. package/node_modules/@aspectcode/evaluator/dist/diagnosis.js +115 -138
  150. package/node_modules/@aspectcode/evaluator/dist/diagnosis.js.map +1 -1
  151. package/node_modules/@aspectcode/evaluator/dist/index.d.ts +8 -43
  152. package/node_modules/@aspectcode/evaluator/dist/index.d.ts.map +1 -1
  153. package/node_modules/@aspectcode/evaluator/dist/index.js +15 -61
  154. package/node_modules/@aspectcode/evaluator/dist/index.js.map +1 -1
  155. package/node_modules/@aspectcode/evaluator/dist/judge.d.ts +32 -0
  156. package/node_modules/@aspectcode/evaluator/dist/judge.d.ts.map +1 -0
  157. package/node_modules/@aspectcode/evaluator/dist/judge.js +165 -0
  158. package/node_modules/@aspectcode/evaluator/dist/judge.js.map +1 -0
  159. package/node_modules/@aspectcode/evaluator/dist/llmUtil.d.ts +15 -0
  160. package/node_modules/@aspectcode/evaluator/dist/llmUtil.d.ts.map +1 -0
  161. package/node_modules/@aspectcode/evaluator/dist/llmUtil.js +41 -0
  162. package/node_modules/@aspectcode/evaluator/dist/llmUtil.js.map +1 -0
  163. package/node_modules/@aspectcode/evaluator/dist/probes.d.ts +20 -47
  164. package/node_modules/@aspectcode/evaluator/dist/probes.d.ts.map +1 -1
  165. package/node_modules/@aspectcode/evaluator/dist/probes.js +188 -278
  166. package/node_modules/@aspectcode/evaluator/dist/probes.js.map +1 -1
  167. package/node_modules/@aspectcode/evaluator/dist/runner.d.ts +7 -32
  168. package/node_modules/@aspectcode/evaluator/dist/runner.d.ts.map +1 -1
  169. package/node_modules/@aspectcode/evaluator/dist/runner.js +21 -146
  170. package/node_modules/@aspectcode/evaluator/dist/runner.js.map +1 -1
  171. package/node_modules/@aspectcode/evaluator/dist/types.d.ts +141 -99
  172. package/node_modules/@aspectcode/evaluator/dist/types.d.ts.map +1 -1
  173. package/node_modules/@aspectcode/evaluator/dist/types.js +10 -2
  174. package/node_modules/@aspectcode/evaluator/dist/types.js.map +1 -1
  175. package/node_modules/@aspectcode/evaluator/package.json +4 -4
  176. package/node_modules/@aspectcode/optimizer/dist/index.d.ts +3 -10
  177. package/node_modules/@aspectcode/optimizer/dist/index.d.ts.map +1 -1
  178. package/node_modules/@aspectcode/optimizer/dist/index.js +1 -19
  179. package/node_modules/@aspectcode/optimizer/dist/index.js.map +1 -1
  180. package/node_modules/@aspectcode/optimizer/dist/providers/anthropic.d.ts.map +1 -1
  181. package/node_modules/@aspectcode/optimizer/dist/providers/anthropic.js +40 -0
  182. package/node_modules/@aspectcode/optimizer/dist/providers/anthropic.js.map +1 -1
  183. package/node_modules/@aspectcode/optimizer/dist/providers/aspectcode.d.ts +9 -0
  184. package/node_modules/@aspectcode/optimizer/dist/providers/aspectcode.d.ts.map +1 -0
  185. package/node_modules/@aspectcode/optimizer/dist/providers/aspectcode.js +83 -0
  186. package/node_modules/@aspectcode/optimizer/dist/providers/aspectcode.js.map +1 -0
  187. package/node_modules/@aspectcode/optimizer/dist/providers/index.d.ts +4 -3
  188. package/node_modules/@aspectcode/optimizer/dist/providers/index.d.ts.map +1 -1
  189. package/node_modules/@aspectcode/optimizer/dist/providers/index.js +24 -10
  190. package/node_modules/@aspectcode/optimizer/dist/providers/index.js.map +1 -1
  191. package/node_modules/@aspectcode/optimizer/dist/providers/openai.d.ts.map +1 -1
  192. package/node_modules/@aspectcode/optimizer/dist/providers/openai.js +22 -0
  193. package/node_modules/@aspectcode/optimizer/dist/providers/openai.js.map +1 -1
  194. package/node_modules/@aspectcode/optimizer/dist/providers/retry.d.ts +14 -0
  195. package/node_modules/@aspectcode/optimizer/dist/providers/retry.d.ts.map +1 -1
  196. package/node_modules/@aspectcode/optimizer/dist/providers/retry.js +1 -0
  197. package/node_modules/@aspectcode/optimizer/dist/providers/retry.js.map +1 -1
  198. package/node_modules/@aspectcode/optimizer/dist/types.d.ts +14 -0
  199. package/node_modules/@aspectcode/optimizer/dist/types.d.ts.map +1 -1
  200. package/node_modules/@aspectcode/optimizer/dist/types.js.map +1 -1
  201. package/node_modules/@aspectcode/optimizer/package.json +2 -2
  202. package/node_modules/web-tree-sitter/LICENSE +21 -0
  203. package/node_modules/web-tree-sitter/README.md +198 -0
  204. package/node_modules/web-tree-sitter/package.json +36 -0
  205. package/node_modules/web-tree-sitter/tree-sitter-web.d.ts +204 -0
  206. package/node_modules/web-tree-sitter/tree-sitter.js +1 -0
  207. package/node_modules/web-tree-sitter/tree-sitter.wasm +0 -0
  208. package/package.json +8 -8
  209. package/dist/complaintProcessor.d.ts +0 -16
  210. package/dist/complaintProcessor.d.ts.map +0 -1
  211. package/dist/complaintProcessor.js +0 -134
  212. package/dist/complaintProcessor.js.map +0 -1
  213. package/node_modules/@aspectcode/emitters/dist/emitter.d.ts +0 -72
  214. package/node_modules/@aspectcode/emitters/dist/emitter.d.ts.map +0 -1
  215. package/node_modules/@aspectcode/emitters/dist/emitter.js +0 -10
  216. package/node_modules/@aspectcode/emitters/dist/emitter.js.map +0 -1
  217. package/node_modules/@aspectcode/emitters/dist/instructions/content.d.ts +0 -26
  218. package/node_modules/@aspectcode/emitters/dist/instructions/content.d.ts.map +0 -1
  219. package/node_modules/@aspectcode/emitters/dist/instructions/content.js +0 -501
  220. package/node_modules/@aspectcode/emitters/dist/instructions/content.js.map +0 -1
  221. package/node_modules/@aspectcode/emitters/dist/instructions/detection.d.ts +0 -13
  222. package/node_modules/@aspectcode/emitters/dist/instructions/detection.d.ts.map +0 -1
  223. package/node_modules/@aspectcode/emitters/dist/instructions/detection.js +0 -55
  224. package/node_modules/@aspectcode/emitters/dist/instructions/detection.js.map +0 -1
  225. package/node_modules/@aspectcode/emitters/dist/instructions/instructionsEmitter.d.ts +0 -9
  226. package/node_modules/@aspectcode/emitters/dist/instructions/instructionsEmitter.d.ts.map +0 -1
  227. package/node_modules/@aspectcode/emitters/dist/instructions/instructionsEmitter.js +0 -30
  228. package/node_modules/@aspectcode/emitters/dist/instructions/instructionsEmitter.js.map +0 -1
  229. package/node_modules/@aspectcode/emitters/dist/kb/kbEmitter.d.ts +0 -21
  230. package/node_modules/@aspectcode/emitters/dist/kb/kbEmitter.d.ts.map +0 -1
  231. package/node_modules/@aspectcode/emitters/dist/kb/kbEmitter.js +0 -125
  232. package/node_modules/@aspectcode/emitters/dist/kb/kbEmitter.js.map +0 -1
  233. package/node_modules/@aspectcode/emitters/dist/manifest.d.ts +0 -37
  234. package/node_modules/@aspectcode/emitters/dist/manifest.d.ts.map +0 -1
  235. package/node_modules/@aspectcode/emitters/dist/manifest.js +0 -50
  236. package/node_modules/@aspectcode/emitters/dist/manifest.js.map +0 -1
  237. package/node_modules/@aspectcode/emitters/dist/report.d.ts +0 -22
  238. package/node_modules/@aspectcode/emitters/dist/report.d.ts.map +0 -1
  239. package/node_modules/@aspectcode/emitters/dist/report.js +0 -3
  240. package/node_modules/@aspectcode/emitters/dist/report.js.map +0 -1
  241. package/node_modules/@aspectcode/emitters/dist/stableJson.d.ts +0 -14
  242. package/node_modules/@aspectcode/emitters/dist/stableJson.d.ts.map +0 -1
  243. package/node_modules/@aspectcode/emitters/dist/stableJson.js +0 -40
  244. package/node_modules/@aspectcode/emitters/dist/stableJson.js.map +0 -1
  245. package/node_modules/@aspectcode/emitters/dist/transaction.d.ts +0 -29
  246. package/node_modules/@aspectcode/emitters/dist/transaction.d.ts.map +0 -1
  247. package/node_modules/@aspectcode/emitters/dist/transaction.js +0 -104
  248. package/node_modules/@aspectcode/emitters/dist/transaction.js.map +0 -1
@@ -1,21 +0,0 @@
1
- /**
2
- * KB Emitter — orchestrates generation of a single `kb.md` file.
3
- *
4
- * Implements the Emitter interface. Consumes an AnalysisModel and writes
5
- * a combined KB file via the EmitterHost abstraction.
6
- */
7
- import type { Emitter } from '../emitter';
8
- import type { LoadedGrammars } from './symbols';
9
- export interface KBEmitterOptions {
10
- /** Pre-loaded tree-sitter grammars (optional). */
11
- grammars?: LoadedGrammars | null;
12
- }
13
- /** The default KB output filename. */
14
- export declare const KB_FILENAME = "kb.md";
15
- /**
16
- * Create a KB emitter that generates a single `kb.md` knowledge base file.
17
- *
18
- * @param kbOptions Optional KB-specific options (e.g. tree-sitter grammars).
19
- */
20
- export declare function createKBEmitter(kbOptions?: KBEmitterOptions): Emitter;
21
- //# sourceMappingURL=kbEmitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kbEmitter.d.ts","sourceRoot":"","sources":["../../src/kb/kbEmitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAA2B,MAAM,YAAY,CAAC;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUhD,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CAClC;AAED,sCAAsC;AACtC,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAoGrE"}
@@ -1,125 +0,0 @@
1
- "use strict";
2
- /**
3
- * KB Emitter — orchestrates generation of a single `kb.md` file.
4
- *
5
- * Implements the Emitter interface. Consumes an AnalysisModel and writes
6
- * a combined KB file via the EmitterHost abstraction.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.KB_FILENAME = void 0;
10
- exports.createKBEmitter = createKBEmitter;
11
- const depData_1 = require("./depData");
12
- const architectureEmitter_1 = require("./architectureEmitter");
13
- const mapEmitter_1 = require("./mapEmitter");
14
- const contextEmitter_1 = require("./contextEmitter");
15
- const manifest_1 = require("../manifest");
16
- const stableJson_1 = require("../stableJson");
17
- /** The default KB output filename. */
18
- exports.KB_FILENAME = 'kb.md';
19
- /**
20
- * Create a KB emitter that generates a single `kb.md` knowledge base file.
21
- *
22
- * @param kbOptions Optional KB-specific options (e.g. tree-sitter grammars).
23
- */
24
- function createKBEmitter(kbOptions) {
25
- return {
26
- name: 'aspect-kb',
27
- async emit(model, host, options) {
28
- const generatedAt = options.generatedAt ?? new Date().toISOString();
29
- const workspaceRoot = options.workspaceRoot;
30
- const outDir = options.outDir ?? workspaceRoot;
31
- // ── Derive shared data from the AnalysisModel ────────
32
- // Absolute file paths
33
- const files = model.files.map((f) => host.join(workspaceRoot, f.relativePath));
34
- // Build file content cache from options or empty.
35
- // Normalize keys so both CLI (relative paths) and extension (absolute paths)
36
- // resolve consistently in downstream KB builders.
37
- const fileContentCache = normalizeFileContentCache(options.fileContents, workspaceRoot, model.files.map((f) => f.relativePath), host);
38
- // Build dependency links (absolute paths)
39
- const allLinks = model.graph.edges.map((e) => ({
40
- ...e,
41
- source: host.join(workspaceRoot, e.source),
42
- target: host.join(workspaceRoot, e.target),
43
- }));
44
- // Per-file in/out degree stats
45
- const depData = (0, depData_1.buildDepStats)(files, allLinks);
46
- const grammars = kbOptions?.grammars ?? null;
47
- // ── Generate all three files in parallel ─────────────
48
- const [archContent, mapContent, ctxContent] = await Promise.all([
49
- Promise.resolve((0, architectureEmitter_1.buildArchitectureContent)({
50
- files,
51
- depData,
52
- allLinks,
53
- fileContentCache,
54
- workspaceRoot,
55
- generatedAt,
56
- })),
57
- Promise.resolve((0, mapEmitter_1.buildMapContent)({
58
- files,
59
- depData,
60
- allLinks,
61
- grammars,
62
- fileContentCache,
63
- workspaceRoot,
64
- generatedAt,
65
- })),
66
- Promise.resolve((0, contextEmitter_1.buildContextContent)({
67
- files,
68
- allLinks,
69
- fileContentCache,
70
- workspaceRoot,
71
- generatedAt,
72
- })),
73
- ]);
74
- // ── Build manifest metadata as HTML comment ─────────
75
- const manifest = (0, manifest_1.buildManifest)(model, generatedAt);
76
- const manifestComment = `<!-- aspectcode: ${(0, stableJson_1.stableStringify)(manifest)} -->\n`;
77
- // ── Combine into single kb.md ────────────────────────
78
- const combined = [
79
- archContent,
80
- '\n---\n\n',
81
- mapContent,
82
- '\n---\n\n',
83
- ctxContent,
84
- '\n',
85
- manifestComment,
86
- ].join('');
87
- const kbPath = host.join(outDir, exports.KB_FILENAME);
88
- await host.writeFile(kbPath, combined);
89
- return {
90
- filesWritten: [kbPath],
91
- };
92
- },
93
- };
94
- }
95
- function normalizeFileContentCache(source, workspaceRoot, relativePaths, host) {
96
- const normalized = new Map();
97
- if (!source || source.size === 0)
98
- return normalized;
99
- for (const [key, value] of source.entries()) {
100
- normalized.set(key, value);
101
- }
102
- for (const relPath of relativePaths) {
103
- const relPosix = relPath.replace(/\\/g, '/');
104
- const relWindows = relPath.replace(/\//g, '\\');
105
- const absPath = host.join(workspaceRoot, relPath);
106
- const absPosix = absPath.replace(/\\/g, '/');
107
- const absWindows = absPath.replace(/\//g, '\\');
108
- const content = normalized.get(absPath) ??
109
- normalized.get(absPosix) ??
110
- normalized.get(absWindows) ??
111
- normalized.get(relPath) ??
112
- normalized.get(relPosix) ??
113
- normalized.get(relWindows);
114
- if (content === undefined)
115
- continue;
116
- normalized.set(absPath, content);
117
- normalized.set(absPosix, content);
118
- normalized.set(absWindows, content);
119
- normalized.set(relPath, content);
120
- normalized.set(relPosix, content);
121
- normalized.set(relWindows, content);
122
- }
123
- return normalized;
124
- }
125
- //# sourceMappingURL=kbEmitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kbEmitter.js","sourceRoot":"","sources":["../../src/kb/kbEmitter.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Manifest builder — builds manifest metadata for embedding in kb.md.
3
- *
4
- * The manifest provides a machine-readable summary alongside the
5
- * human-readable KB content. The KB emitter embeds the manifest as
6
- * an HTML comment at the bottom of kb.md.
7
- *
8
- * Determinism: keys are sorted explicitly; `generatedAt` is the only
9
- * volatile field and is injected via options.
10
- */
11
- import type { AnalysisModel } from '@aspectcode/core';
12
- export interface Manifest {
13
- schemaVersion: string;
14
- generatorVersion: string;
15
- generatedAt: string;
16
- stats: ManifestStats;
17
- }
18
- export interface ManifestStats {
19
- fileCount: number;
20
- totalLines: number;
21
- languageCounts: Record<string, number>;
22
- edgeCount: number;
23
- circularCount: number;
24
- topHubs: Array<{
25
- file: string;
26
- inDegree: number;
27
- outDegree: number;
28
- }>;
29
- }
30
- /**
31
- * Build a Manifest object from an AnalysisModel.
32
- *
33
- * Pure function — no I/O. Used by the KB emitter to embed
34
- * manifest data as an HTML comment in kb.md.
35
- */
36
- export declare function buildManifest(model: AnalysisModel, generatedAt: string, topN?: number): Manifest;
37
- //# sourceMappingURL=manifest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKtD,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AASD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,SAAK,GACR,QAAQ,CA0BV"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- /**
3
- * Manifest builder — builds manifest metadata for embedding in kb.md.
4
- *
5
- * The manifest provides a machine-readable summary alongside the
6
- * human-readable KB content. The KB emitter embeds the manifest as
7
- * an HTML comment at the bottom of kb.md.
8
- *
9
- * Determinism: keys are sorted explicitly; `generatedAt` is the only
10
- * volatile field and is injected via options.
11
- */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.buildManifest = buildManifest;
14
- const core_1 = require("@aspectcode/core");
15
- // ── Constants ────────────────────────────────────────────────
16
- /** Package version — updated at release time. */
17
- const GENERATOR_VERSION = '0.0.1';
18
- // ── Public API ───────────────────────────────────────────────
19
- /**
20
- * Build a Manifest object from an AnalysisModel.
21
- *
22
- * Pure function — no I/O. Used by the KB emitter to embed
23
- * manifest data as an HTML comment in kb.md.
24
- */
25
- function buildManifest(model, generatedAt, topN = 10) {
26
- const stats = (0, core_1.computeModelStats)(model, topN);
27
- // Sort language keys for determinism
28
- const sortedLanguageCounts = {};
29
- for (const key of Object.keys(stats.languageCounts).sort()) {
30
- sortedLanguageCounts[key] = stats.languageCounts[key];
31
- }
32
- return {
33
- schemaVersion: model.schemaVersion,
34
- generatorVersion: GENERATOR_VERSION,
35
- generatedAt,
36
- stats: {
37
- fileCount: stats.fileCount,
38
- totalLines: stats.totalLines,
39
- languageCounts: sortedLanguageCounts,
40
- edgeCount: stats.edgeCount,
41
- circularCount: stats.circularCount,
42
- topHubs: stats.topHubs.map((h) => ({
43
- file: h.file,
44
- inDegree: h.inDegree,
45
- outDegree: h.outDegree,
46
- })),
47
- },
48
- };
49
- }
50
- //# sourceMappingURL=manifest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAoCH,sCA8BC;AA/DD,2CAAqD;AAoBrD,gEAAgE;AAEhE,iDAAiD;AACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,gEAAgE;AAEhE;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,KAAoB,EACpB,WAAmB,EACnB,IAAI,GAAG,EAAE;IAET,MAAM,KAAK,GAAG,IAAA,wBAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE7C,qCAAqC;IACrC,MAAM,oBAAoB,GAA2B,EAAE,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3D,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB,EAAE,iBAAiB;QACnC,WAAW;QACX,KAAK,EAAE;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,oBAAoB;YACpC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { ModelStats } from '@aspectcode/core';
2
- /**
3
- * Minimal structured report returned by `runEmitters()`.
4
- * Intended to be serializable for a future `--json` CLI.
5
- */
6
- export type EmitReport = {
7
- schemaVersion: string;
8
- wrote: Array<{
9
- path: string;
10
- bytes: number;
11
- }>;
12
- skipped?: Array<{
13
- id: string;
14
- reason: string;
15
- }>;
16
- stats: {
17
- files: number;
18
- edges: number;
19
- hubsTop: ModelStats['topHubs'];
20
- };
21
- };
22
- //# sourceMappingURL=report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;CACH,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- /**
2
- * Stable JSON stringification.
3
- *
4
- * Ensures deterministic key ordering for objects (recursively) without
5
- * adding any external dependency.
6
- */
7
- /**
8
- * Stable JSON stringify with sorted keys.
9
- *
10
- * @param value Any JSON-serializable value
11
- * @param space Indentation (defaults to 2, matching existing outputs)
12
- */
13
- export declare function stableStringify(value: unknown, space?: number): string;
14
- //# sourceMappingURL=stableJson.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stableJson.d.ts","sourceRoot":"","sources":["../src/stableJson.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAEzE"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- /**
3
- * Stable JSON stringification.
4
- *
5
- * Ensures deterministic key ordering for objects (recursively) without
6
- * adding any external dependency.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.stableStringify = stableStringify;
10
- function isPlainObject(value) {
11
- if (value === null)
12
- return false;
13
- if (typeof value !== 'object')
14
- return false;
15
- const proto = Object.getPrototypeOf(value);
16
- return proto === Object.prototype || proto === null;
17
- }
18
- function sortKeysDeep(value) {
19
- if (Array.isArray(value)) {
20
- return value.map(sortKeysDeep);
21
- }
22
- if (isPlainObject(value)) {
23
- const out = {};
24
- for (const key of Object.keys(value).sort()) {
25
- out[key] = sortKeysDeep(value[key]);
26
- }
27
- return out;
28
- }
29
- return value;
30
- }
31
- /**
32
- * Stable JSON stringify with sorted keys.
33
- *
34
- * @param value Any JSON-serializable value
35
- * @param space Indentation (defaults to 2, matching existing outputs)
36
- */
37
- function stableStringify(value, space = 2) {
38
- return JSON.stringify(sortKeysDeep(value), null, space);
39
- }
40
- //# sourceMappingURL=stableJson.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stableJson.js","sourceRoot":"","sources":["../src/stableJson.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA+BH,0CAEC;AA/BD,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,KAAc,EAAE,QAAgB,CAAC;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,29 +0,0 @@
1
- import type { EmitterHost } from './host';
2
- export type TransactionWrite = {
3
- finalPath: string;
4
- tempPath: string;
5
- bytes: number;
6
- };
7
- /**
8
- * Transaction wrapper around an EmitterHost.
9
- *
10
- * It stages writes to temp files and only replaces target files on commit.
11
- * This reduces the chance of partially-written outputs on crashes.
12
- */
13
- export declare class GenerationTransaction {
14
- private readonly baseHost;
15
- private readonly id;
16
- private readonly staged;
17
- constructor(baseHost: EmitterHost);
18
- /** Host view used by emitters to stage writes. */
19
- get host(): EmitterHost;
20
- /** All staged writes (final paths + bytes). */
21
- getWrites(): TransactionWrite[];
22
- /**
23
- * Commit staged files into place.
24
- *
25
- * Writes are committed in deterministic (sorted) order.
26
- */
27
- commit(): Promise<void>;
28
- }
29
- //# sourceMappingURL=transaction.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,qBAAqB;IAIpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAEjC,QAAQ,EAAE,WAAW;IAIlD,kDAAkD;IAClD,IAAI,IAAI,IAAI,WAAW,CAuBtB;IAED,+CAA+C;IAC/C,SAAS,IAAI,gBAAgB,EAAE;IAI/B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAwD9B"}
@@ -1,104 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GenerationTransaction = void 0;
4
- /**
5
- * Transaction wrapper around an EmitterHost.
6
- *
7
- * It stages writes to temp files and only replaces target files on commit.
8
- * This reduces the chance of partially-written outputs on crashes.
9
- */
10
- class GenerationTransaction {
11
- constructor(baseHost) {
12
- this.baseHost = baseHost;
13
- this.staged = new Map();
14
- this.id = `${Date.now()}-${Math.random().toString(16).slice(2)}`;
15
- }
16
- /** Host view used by emitters to stage writes. */
17
- get host() {
18
- const tx = this;
19
- return {
20
- readFile: async (filePath) => {
21
- const staged = tx.staged.get(filePath);
22
- if (staged)
23
- return tx.baseHost.readFile(staged.tempPath);
24
- return tx.baseHost.readFile(filePath);
25
- },
26
- writeFile: async (filePath, content) => {
27
- const tempPath = `${filePath}.__aspect_tmp__${tx.id}`;
28
- const bytes = Buffer.byteLength(content, 'utf8');
29
- await tx.baseHost.writeFile(tempPath, content);
30
- tx.staged.set(filePath, { finalPath: filePath, tempPath, bytes });
31
- },
32
- exists: (filePath) => tx.baseHost.exists(filePath),
33
- mkdirp: (dirPath) => tx.baseHost.mkdirp(dirPath),
34
- rename: (fromPath, toPath) => tx.baseHost.rename(fromPath, toPath),
35
- rmrf: (targetPath) => tx.baseHost.rmrf(targetPath),
36
- join: (...segments) => tx.baseHost.join(...segments),
37
- relative: (from, to) => tx.baseHost.relative(from, to),
38
- };
39
- }
40
- /** All staged writes (final paths + bytes). */
41
- getWrites() {
42
- return Array.from(this.staged.values());
43
- }
44
- /**
45
- * Commit staged files into place.
46
- *
47
- * Writes are committed in deterministic (sorted) order.
48
- */
49
- async commit() {
50
- const writes = this.getWrites();
51
- if (writes.length === 0)
52
- return;
53
- const commitOrder = [...writes].sort((a, b) => a.finalPath.localeCompare(b.finalPath));
54
- const backups = [];
55
- const committedFinals = [];
56
- try {
57
- for (const w of commitOrder) {
58
- const finalPath = w.finalPath;
59
- const backupPath = `${finalPath}.__aspect_bak__${this.id}`;
60
- if (await this.baseHost.exists(finalPath)) {
61
- await this.baseHost.rename(finalPath, backupPath);
62
- backups.push({ finalPath, backupPath });
63
- }
64
- await this.baseHost.rename(w.tempPath, finalPath);
65
- committedFinals.push(finalPath);
66
- }
67
- // Clean backups
68
- await Promise.all(backups.map((b) => this.baseHost.rmrf(b.backupPath)));
69
- }
70
- catch (err) {
71
- // Best-effort rollback
72
- for (const finalPath of committedFinals.reverse()) {
73
- const b = backups.find((x) => x.finalPath === finalPath);
74
- if (!b)
75
- continue;
76
- try {
77
- if (await this.baseHost.exists(finalPath)) {
78
- await this.baseHost.rmrf(finalPath);
79
- }
80
- await this.baseHost.rename(b.backupPath, finalPath);
81
- }
82
- catch {
83
- // Ignore rollback failures
84
- }
85
- }
86
- throw err;
87
- }
88
- finally {
89
- // Best-effort cleanup of any remaining temp files
90
- await Promise.all(writes.map(async (w) => {
91
- try {
92
- if (await this.baseHost.exists(w.tempPath)) {
93
- await this.baseHost.rmrf(w.tempPath);
94
- }
95
- }
96
- catch {
97
- // Ignore
98
- }
99
- }));
100
- }
101
- }
102
- }
103
- exports.GenerationTransaction = GenerationTransaction;
104
- //# sourceMappingURL=transaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}