@ai-agent-context/core 0.1.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 (236) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +285 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/adapters/filesystem/fs-adapter.d.ts +50 -0
  5. package/dist/adapters/filesystem/fs-adapter.d.ts.map +1 -0
  6. package/dist/adapters/filesystem/fs-adapter.js +168 -0
  7. package/dist/adapters/filesystem/fs-adapter.js.map +1 -0
  8. package/dist/adapters/filesystem/sensitive.d.ts +26 -0
  9. package/dist/adapters/filesystem/sensitive.d.ts.map +1 -0
  10. package/dist/adapters/filesystem/sensitive.js +67 -0
  11. package/dist/adapters/filesystem/sensitive.js.map +1 -0
  12. package/dist/adapters/git/git-adapter.d.ts +47 -0
  13. package/dist/adapters/git/git-adapter.d.ts.map +1 -0
  14. package/dist/adapters/git/git-adapter.js +109 -0
  15. package/dist/adapters/git/git-adapter.js.map +1 -0
  16. package/dist/adapters/language/json/adapter.d.ts +24 -0
  17. package/dist/adapters/language/json/adapter.d.ts.map +1 -0
  18. package/dist/adapters/language/json/adapter.js +54 -0
  19. package/dist/adapters/language/json/adapter.js.map +1 -0
  20. package/dist/adapters/language/markdown/adapter.d.ts +41 -0
  21. package/dist/adapters/language/markdown/adapter.d.ts.map +1 -0
  22. package/dist/adapters/language/markdown/adapter.js +124 -0
  23. package/dist/adapters/language/markdown/adapter.js.map +1 -0
  24. package/dist/adapters/language/package-json/adapter.d.ts +47 -0
  25. package/dist/adapters/language/package-json/adapter.d.ts.map +1 -0
  26. package/dist/adapters/language/package-json/adapter.js +153 -0
  27. package/dist/adapters/language/package-json/adapter.js.map +1 -0
  28. package/dist/adapters/language/registry.d.ts +35 -0
  29. package/dist/adapters/language/registry.d.ts.map +1 -0
  30. package/dist/adapters/language/registry.js +79 -0
  31. package/dist/adapters/language/registry.js.map +1 -0
  32. package/dist/adapters/language/ts-js/adapter.d.ts +14 -0
  33. package/dist/adapters/language/ts-js/adapter.d.ts.map +1 -0
  34. package/dist/adapters/language/ts-js/adapter.js +59 -0
  35. package/dist/adapters/language/ts-js/adapter.js.map +1 -0
  36. package/dist/adapters/language/ts-js/extractor.d.ts +21 -0
  37. package/dist/adapters/language/ts-js/extractor.d.ts.map +1 -0
  38. package/dist/adapters/language/ts-js/extractor.js +779 -0
  39. package/dist/adapters/language/ts-js/extractor.js.map +1 -0
  40. package/dist/adapters/language/ts-js/lexer.d.ts +30 -0
  41. package/dist/adapters/language/ts-js/lexer.d.ts.map +1 -0
  42. package/dist/adapters/language/ts-js/lexer.js +446 -0
  43. package/dist/adapters/language/ts-js/lexer.js.map +1 -0
  44. package/dist/adapters/language/ts-js/package-signals.d.ts +5 -0
  45. package/dist/adapters/language/ts-js/package-signals.d.ts.map +1 -0
  46. package/dist/adapters/language/ts-js/package-signals.js +113 -0
  47. package/dist/adapters/language/ts-js/package-signals.js.map +1 -0
  48. package/dist/adapters/language/tsconfig/adapter.d.ts +38 -0
  49. package/dist/adapters/language/tsconfig/adapter.d.ts.map +1 -0
  50. package/dist/adapters/language/tsconfig/adapter.js +130 -0
  51. package/dist/adapters/language/tsconfig/adapter.js.map +1 -0
  52. package/dist/adapters/language/types.d.ts +152 -0
  53. package/dist/adapters/language/types.d.ts.map +1 -0
  54. package/dist/adapters/language/types.js +51 -0
  55. package/dist/adapters/language/types.js.map +1 -0
  56. package/dist/agent-context.d.ts +122 -0
  57. package/dist/agent-context.d.ts.map +1 -0
  58. package/dist/agent-context.js +243 -0
  59. package/dist/agent-context.js.map +1 -0
  60. package/dist/config/defaults.d.ts +13 -0
  61. package/dist/config/defaults.d.ts.map +1 -0
  62. package/dist/config/defaults.js +98 -0
  63. package/dist/config/defaults.js.map +1 -0
  64. package/dist/config/load.d.ts +25 -0
  65. package/dist/config/load.d.ts.map +1 -0
  66. package/dist/config/load.js +106 -0
  67. package/dist/config/load.js.map +1 -0
  68. package/dist/config/types.d.ts +95 -0
  69. package/dist/config/types.d.ts.map +1 -0
  70. package/dist/config/types.js +8 -0
  71. package/dist/config/types.js.map +1 -0
  72. package/dist/config/validate.d.ts +15 -0
  73. package/dist/config/validate.d.ts.map +1 -0
  74. package/dist/config/validate.js +202 -0
  75. package/dist/config/validate.js.map +1 -0
  76. package/dist/core/architecture/detector.d.ts +10 -0
  77. package/dist/core/architecture/detector.d.ts.map +1 -0
  78. package/dist/core/architecture/detector.js +37 -0
  79. package/dist/core/architecture/detector.js.map +1 -0
  80. package/dist/core/architecture/entry-points.d.ts +20 -0
  81. package/dist/core/architecture/entry-points.d.ts.map +1 -0
  82. package/dist/core/architecture/entry-points.js +190 -0
  83. package/dist/core/architecture/entry-points.js.map +1 -0
  84. package/dist/core/architecture/role-detector.d.ts +32 -0
  85. package/dist/core/architecture/role-detector.d.ts.map +1 -0
  86. package/dist/core/architecture/role-detector.js +240 -0
  87. package/dist/core/architecture/role-detector.js.map +1 -0
  88. package/dist/core/context/explain.d.ts +36 -0
  89. package/dist/core/context/explain.d.ts.map +1 -0
  90. package/dist/core/context/explain.js +199 -0
  91. package/dist/core/context/explain.js.map +1 -0
  92. package/dist/core/context/repository-context.d.ts +16 -0
  93. package/dist/core/context/repository-context.d.ts.map +1 -0
  94. package/dist/core/context/repository-context.js +134 -0
  95. package/dist/core/context/repository-context.js.map +1 -0
  96. package/dist/core/context/types.d.ts +94 -0
  97. package/dist/core/context/types.d.ts.map +1 -0
  98. package/dist/core/context/types.js +2 -0
  99. package/dist/core/context/types.js.map +1 -0
  100. package/dist/core/conventions/detector.d.ts +55 -0
  101. package/dist/core/conventions/detector.d.ts.map +1 -0
  102. package/dist/core/conventions/detector.js +438 -0
  103. package/dist/core/conventions/detector.js.map +1 -0
  104. package/dist/core/conventions/renderer.d.ts +16 -0
  105. package/dist/core/conventions/renderer.d.ts.map +1 -0
  106. package/dist/core/conventions/renderer.js +42 -0
  107. package/dist/core/conventions/renderer.js.map +1 -0
  108. package/dist/core/decisions/detector.d.ts +45 -0
  109. package/dist/core/decisions/detector.d.ts.map +1 -0
  110. package/dist/core/decisions/detector.js +256 -0
  111. package/dist/core/decisions/detector.js.map +1 -0
  112. package/dist/core/diff/differ.d.ts +26 -0
  113. package/dist/core/diff/differ.d.ts.map +1 -0
  114. package/dist/core/diff/differ.js +159 -0
  115. package/dist/core/diff/differ.js.map +1 -0
  116. package/dist/core/git-analysis/activity.d.ts +35 -0
  117. package/dist/core/git-analysis/activity.d.ts.map +1 -0
  118. package/dist/core/git-analysis/activity.js +123 -0
  119. package/dist/core/git-analysis/activity.js.map +1 -0
  120. package/dist/core/graph/aliases.d.ts +20 -0
  121. package/dist/core/graph/aliases.d.ts.map +1 -0
  122. package/dist/core/graph/aliases.js +99 -0
  123. package/dist/core/graph/aliases.js.map +1 -0
  124. package/dist/core/graph/knowledge-graph.d.ts +91 -0
  125. package/dist/core/graph/knowledge-graph.d.ts.map +1 -0
  126. package/dist/core/graph/knowledge-graph.js +572 -0
  127. package/dist/core/graph/knowledge-graph.js.map +1 -0
  128. package/dist/core/graph/modules.d.ts +28 -0
  129. package/dist/core/graph/modules.d.ts.map +1 -0
  130. package/dist/core/graph/modules.js +139 -0
  131. package/dist/core/graph/modules.js.map +1 -0
  132. package/dist/core/graph/resolver.d.ts +50 -0
  133. package/dist/core/graph/resolver.d.ts.map +1 -0
  134. package/dist/core/graph/resolver.js +180 -0
  135. package/dist/core/graph/resolver.js.map +1 -0
  136. package/dist/core/scanner/cache.d.ts +49 -0
  137. package/dist/core/scanner/cache.d.ts.map +1 -0
  138. package/dist/core/scanner/cache.js +101 -0
  139. package/dist/core/scanner/cache.js.map +1 -0
  140. package/dist/core/scanner/scanner.d.ts +60 -0
  141. package/dist/core/scanner/scanner.d.ts.map +1 -0
  142. package/dist/core/scanner/scanner.js +304 -0
  143. package/dist/core/scanner/scanner.js.map +1 -0
  144. package/dist/core/scanner/types.d.ts +47 -0
  145. package/dist/core/scanner/types.d.ts.map +1 -0
  146. package/dist/core/scanner/types.js +18 -0
  147. package/dist/core/scanner/types.js.map +1 -0
  148. package/dist/core/search/analyzer.d.ts +16 -0
  149. package/dist/core/search/analyzer.d.ts.map +1 -0
  150. package/dist/core/search/analyzer.js +165 -0
  151. package/dist/core/search/analyzer.js.map +1 -0
  152. package/dist/core/search/bm25.d.ts +21 -0
  153. package/dist/core/search/bm25.d.ts.map +1 -0
  154. package/dist/core/search/bm25.js +108 -0
  155. package/dist/core/search/bm25.js.map +1 -0
  156. package/dist/core/search/documents.d.ts +20 -0
  157. package/dist/core/search/documents.d.ts.map +1 -0
  158. package/dist/core/search/documents.js +106 -0
  159. package/dist/core/search/documents.js.map +1 -0
  160. package/dist/core/search/service.d.ts +30 -0
  161. package/dist/core/search/service.d.ts.map +1 -0
  162. package/dist/core/search/service.js +54 -0
  163. package/dist/core/search/service.js.map +1 -0
  164. package/dist/core/search/types.d.ts +44 -0
  165. package/dist/core/search/types.d.ts.map +1 -0
  166. package/dist/core/search/types.js +2 -0
  167. package/dist/core/search/types.js.map +1 -0
  168. package/dist/core/serialization/documents.d.ts +26 -0
  169. package/dist/core/serialization/documents.d.ts.map +1 -0
  170. package/dist/core/serialization/documents.js +224 -0
  171. package/dist/core/serialization/documents.js.map +1 -0
  172. package/dist/core/serialization/reader.d.ts +22 -0
  173. package/dist/core/serialization/reader.d.ts.map +1 -0
  174. package/dist/core/serialization/reader.js +65 -0
  175. package/dist/core/serialization/reader.js.map +1 -0
  176. package/dist/core/serialization/types.d.ts +184 -0
  177. package/dist/core/serialization/types.d.ts.map +1 -0
  178. package/dist/core/serialization/types.js +2 -0
  179. package/dist/core/serialization/types.js.map +1 -0
  180. package/dist/core/serialization/writer.d.ts +17 -0
  181. package/dist/core/serialization/writer.d.ts.map +1 -0
  182. package/dist/core/serialization/writer.js +64 -0
  183. package/dist/core/serialization/writer.js.map +1 -0
  184. package/dist/core/workspace/package-facts.d.ts +12 -0
  185. package/dist/core/workspace/package-facts.d.ts.map +1 -0
  186. package/dist/core/workspace/package-facts.js +50 -0
  187. package/dist/core/workspace/package-facts.js.map +1 -0
  188. package/dist/core/workspace/workspace.d.ts +32 -0
  189. package/dist/core/workspace/workspace.d.ts.map +1 -0
  190. package/dist/core/workspace/workspace.js +167 -0
  191. package/dist/core/workspace/workspace.js.map +1 -0
  192. package/dist/errors.d.ts +50 -0
  193. package/dist/errors.d.ts.map +1 -0
  194. package/dist/errors.js +64 -0
  195. package/dist/errors.js.map +1 -0
  196. package/dist/index.d.ts +80 -0
  197. package/dist/index.d.ts.map +1 -0
  198. package/dist/index.js +66 -0
  199. package/dist/index.js.map +1 -0
  200. package/dist/logging/diagnostics.d.ts +64 -0
  201. package/dist/logging/diagnostics.d.ts.map +1 -0
  202. package/dist/logging/diagnostics.js +92 -0
  203. package/dist/logging/diagnostics.js.map +1 -0
  204. package/dist/model/canonical.d.ts +24 -0
  205. package/dist/model/canonical.d.ts.map +1 -0
  206. package/dist/model/canonical.js +69 -0
  207. package/dist/model/canonical.js.map +1 -0
  208. package/dist/model/schema.d.ts +37 -0
  209. package/dist/model/schema.d.ts.map +1 -0
  210. package/dist/model/schema.js +42 -0
  211. package/dist/model/schema.js.map +1 -0
  212. package/dist/model/types.d.ts +402 -0
  213. package/dist/model/types.d.ts.map +1 -0
  214. package/dist/model/types.js +10 -0
  215. package/dist/model/types.js.map +1 -0
  216. package/dist/pipeline/scan-pipeline.d.ts +69 -0
  217. package/dist/pipeline/scan-pipeline.d.ts.map +1 -0
  218. package/dist/pipeline/scan-pipeline.js +270 -0
  219. package/dist/pipeline/scan-pipeline.js.map +1 -0
  220. package/dist/util/concurrency.d.ts +17 -0
  221. package/dist/util/concurrency.d.ts.map +1 -0
  222. package/dist/util/concurrency.js +46 -0
  223. package/dist/util/concurrency.js.map +1 -0
  224. package/dist/util/glob.d.ts +26 -0
  225. package/dist/util/glob.d.ts.map +1 -0
  226. package/dist/util/glob.js +198 -0
  227. package/dist/util/glob.js.map +1 -0
  228. package/dist/util/paths.d.ts +23 -0
  229. package/dist/util/paths.d.ts.map +1 -0
  230. package/dist/util/paths.js +115 -0
  231. package/dist/util/paths.js.map +1 -0
  232. package/dist/util/text.d.ts +22 -0
  233. package/dist/util/text.d.ts.map +1 -0
  234. package/dist/util/text.js +66 -0
  235. package/dist/util/text.js.map +1 -0
  236. package/package.json +52 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Diagnostics and logging.
3
+ *
4
+ * A single unparsable file produces a warning and analysis continues; only
5
+ * repository-level problems raise {@link AgentContextError}. Both surfaces are
6
+ * collected in a {@link DiagnosticsCollector} that the CLI can print (verbose
7
+ * mode) or serialize (`--json`).
8
+ */
9
+ import type { DiagnosticPayload } from '../model/types.ts';
10
+ export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'verbose';
11
+ export type LogSink = (line: string) => void;
12
+ export interface LoggerOptions {
13
+ level?: LogLevel;
14
+ sink?: LogSink;
15
+ }
16
+ /** Structured progress logger; writes to a sink so the CLI owns the formatting. */
17
+ export declare class Logger {
18
+ private readonly level;
19
+ private readonly sink;
20
+ constructor(options?: LoggerOptions);
21
+ get currentLevel(): LogLevel;
22
+ enabled(level: Exclude<LogLevel, 'silent'>): boolean;
23
+ log(level: Exclude<LogLevel, 'silent'>, message: string): void;
24
+ error(message: string): void;
25
+ warn(message: string): void;
26
+ info(message: string): void;
27
+ verbose(message: string): void;
28
+ }
29
+ export declare const silentLogger: Logger;
30
+ export interface DiagnosticsCollectorOptions {
31
+ logger?: Logger;
32
+ }
33
+ /** Collects warnings/errors produced during analysis. */
34
+ export declare class DiagnosticsCollector {
35
+ private readonly items;
36
+ private readonly logger;
37
+ constructor(options?: DiagnosticsCollectorOptions);
38
+ add(payload: DiagnosticPayload): void;
39
+ warn(code: string, message: string, options?: {
40
+ source?: string;
41
+ hint?: string;
42
+ }): void;
43
+ info(code: string, message: string, options?: {
44
+ source?: string;
45
+ hint?: string;
46
+ }): void;
47
+ error(code: string, message: string, options?: {
48
+ source?: string;
49
+ hint?: string;
50
+ }): void;
51
+ /** Deterministically ordered diagnostics. */
52
+ list(): DiagnosticPayload[];
53
+ warnings(): DiagnosticPayload[];
54
+ errors(): DiagnosticPayload[];
55
+ get count(): number;
56
+ }
57
+ export interface ProgressEvent {
58
+ phase: string;
59
+ message: string;
60
+ completed?: number;
61
+ total?: number;
62
+ }
63
+ export type ProgressReporter = (event: ProgressEvent) => void;
64
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/logging/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAIxE,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,mFAAmF;AACnF,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAEnB,OAAO,GAAE,aAAkB;IAKvC,IAAI,YAAY,IAAI,QAAQ,CAE3B;IAED,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,OAAO;IAIpD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9D,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG/B;AAED,eAAO,MAAM,YAAY,QAAkC,CAAC;AAE5D,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE,2BAAgC;IAIrD,GAAG,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAOrC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAO3F,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAO3F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAO5F,6CAA6C;IAC7C,IAAI,IAAI,iBAAiB,EAAE;IAS3B,QAAQ,IAAI,iBAAiB,EAAE;IAI/B,MAAM,IAAI,iBAAiB,EAAE;IAI7B,IAAI,KAAK,IAAI,MAAM,CAElB;CACF;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { compareStrings } from "../model/canonical.js";
2
+ const LEVEL_ORDER = { silent: 0, error: 1, warn: 2, info: 3, verbose: 4 };
3
+ /** Structured progress logger; writes to a sink so the CLI owns the formatting. */
4
+ export class Logger {
5
+ level;
6
+ sink;
7
+ constructor(options = {}) {
8
+ this.level = options.level ?? 'info';
9
+ this.sink = options.sink ?? ((line) => process.stderr.write(`${line}\n`));
10
+ }
11
+ get currentLevel() {
12
+ return this.level;
13
+ }
14
+ enabled(level) {
15
+ return LEVEL_ORDER[this.level] >= LEVEL_ORDER[level];
16
+ }
17
+ log(level, message) {
18
+ if (!this.enabled(level))
19
+ return;
20
+ this.sink(message);
21
+ }
22
+ error(message) {
23
+ this.log('error', message);
24
+ }
25
+ warn(message) {
26
+ this.log('warn', `warning: ${message}`);
27
+ }
28
+ info(message) {
29
+ this.log('info', message);
30
+ }
31
+ verbose(message) {
32
+ this.log('verbose', `debug: ${message}`);
33
+ }
34
+ }
35
+ export const silentLogger = new Logger({ level: 'silent' });
36
+ /** Collects warnings/errors produced during analysis. */
37
+ export class DiagnosticsCollector {
38
+ items = [];
39
+ logger;
40
+ constructor(options = {}) {
41
+ this.logger = options.logger ?? silentLogger;
42
+ }
43
+ add(payload) {
44
+ this.items.push(payload);
45
+ if (payload.severity === 'error')
46
+ this.logger.error(payload.message);
47
+ else if (payload.severity === 'warning')
48
+ this.logger.warn(payload.message);
49
+ else
50
+ this.logger.verbose(payload.message);
51
+ }
52
+ warn(code, message, options = {}) {
53
+ const payload = { code, severity: 'warning', message };
54
+ if (options.source !== undefined)
55
+ payload.source = options.source;
56
+ if (options.hint !== undefined)
57
+ payload.hint = options.hint;
58
+ this.add(payload);
59
+ }
60
+ info(code, message, options = {}) {
61
+ const payload = { code, severity: 'info', message };
62
+ if (options.source !== undefined)
63
+ payload.source = options.source;
64
+ if (options.hint !== undefined)
65
+ payload.hint = options.hint;
66
+ this.add(payload);
67
+ }
68
+ error(code, message, options = {}) {
69
+ const payload = { code, severity: 'error', message };
70
+ if (options.source !== undefined)
71
+ payload.source = options.source;
72
+ if (options.hint !== undefined)
73
+ payload.hint = options.hint;
74
+ this.add(payload);
75
+ }
76
+ /** Deterministically ordered diagnostics. */
77
+ list() {
78
+ return [...this.items].sort((a, b) => compareStrings(a.code, b.code) ||
79
+ compareStrings(a.source ?? '', b.source ?? '') ||
80
+ compareStrings(a.message, b.message));
81
+ }
82
+ warnings() {
83
+ return this.list().filter((item) => item.severity === 'warning');
84
+ }
85
+ errors() {
86
+ return this.list().filter((item) => item.severity === 'error');
87
+ }
88
+ get count() {
89
+ return this.items.length;
90
+ }
91
+ }
92
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/logging/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export declare function sha256(input: string | Buffer): string;
2
+ /** Short, stable content hash used for cache sharding and edge ids. */
3
+ export declare function shortHash(input: string, length?: number): string;
4
+ /**
5
+ * Recursively sorts object keys so that `JSON.stringify` output does not depend
6
+ * on property insertion order.
7
+ */
8
+ export declare function canonicalize<T>(value: T): T;
9
+ /** Canonical JSON with two-space indentation and a trailing newline. */
10
+ export declare function stringifyCanonical(value: unknown, pretty?: boolean): string;
11
+ /** Locale-independent, code-unit based string comparison. */
12
+ export declare function compareStrings(a: string, b: string): number;
13
+ /** Stable, order-insensitive hash of an arbitrary value. */
14
+ export declare function hashValue(value: unknown): string;
15
+ /** Sorts a copy of the array by a derived string key. */
16
+ export declare function sortBy<T>(items: readonly T[], key: (item: T) => string): T[];
17
+ /** Deduplicates strings and sorts them. */
18
+ export declare function uniqueSorted(values: Iterable<string>): string[];
19
+ /**
20
+ * Rounds confidence to two decimals and clamps it into `[0, 0.99]`, so that a
21
+ * heuristic result can never masquerade as an absolute fact.
22
+ */
23
+ export declare function clampConfidence(value: number): number;
24
+ //# sourceMappingURL=canonical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/model/canonical.ts"],"names":[],"mappings":"AAUA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAErD;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAE5D;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAe3C;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,UAAO,GAAG,MAAM,CAGxE;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,EAAE,CAE5E;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAE/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Deterministic serialization helpers.
3
+ *
4
+ * A context file must be byte-identical for an identical repository state, so
5
+ * every persisted value goes through {@link canonicalize} (recursively sorted
6
+ * object keys) and {@link stringifyCanonical} (stable formatting). Arrays keep
7
+ * the order assigned by the builders, which sort their output explicitly.
8
+ */
9
+ import { createHash } from 'node:crypto';
10
+ export function sha256(input) {
11
+ return createHash('sha256').update(input).digest('hex');
12
+ }
13
+ /** Short, stable content hash used for cache sharding and edge ids. */
14
+ export function shortHash(input, length = 16) {
15
+ return sha256(input).slice(0, length);
16
+ }
17
+ /**
18
+ * Recursively sorts object keys so that `JSON.stringify` output does not depend
19
+ * on property insertion order.
20
+ */
21
+ export function canonicalize(value) {
22
+ if (Array.isArray(value)) {
23
+ return value.map((entry) => canonicalize(entry));
24
+ }
25
+ if (value !== null && typeof value === 'object') {
26
+ const source = value;
27
+ const result = {};
28
+ for (const key of Object.keys(source).sort(compareStrings)) {
29
+ const entry = source[key];
30
+ if (entry === undefined)
31
+ continue;
32
+ result[key] = canonicalize(entry);
33
+ }
34
+ return result;
35
+ }
36
+ return value;
37
+ }
38
+ /** Canonical JSON with two-space indentation and a trailing newline. */
39
+ export function stringifyCanonical(value, pretty = true) {
40
+ const canonical = canonicalize(value);
41
+ return `${pretty ? JSON.stringify(canonical, null, 2) : JSON.stringify(canonical)}\n`;
42
+ }
43
+ /** Locale-independent, code-unit based string comparison. */
44
+ export function compareStrings(a, b) {
45
+ if (a === b)
46
+ return 0;
47
+ return a < b ? -1 : 1;
48
+ }
49
+ /** Stable, order-insensitive hash of an arbitrary value. */
50
+ export function hashValue(value) {
51
+ return sha256(stringifyCanonical(value, false));
52
+ }
53
+ /** Sorts a copy of the array by a derived string key. */
54
+ export function sortBy(items, key) {
55
+ return [...items].sort((a, b) => compareStrings(key(a), key(b)));
56
+ }
57
+ /** Deduplicates strings and sorts them. */
58
+ export function uniqueSorted(values) {
59
+ return [...new Set(values)].sort(compareStrings);
60
+ }
61
+ /**
62
+ * Rounds confidence to two decimals and clamps it into `[0, 0.99]`, so that a
63
+ * heuristic result can never masquerade as an absolute fact.
64
+ */
65
+ export function clampConfidence(value) {
66
+ const clamped = Math.max(0, Math.min(0.99, value));
67
+ return Math.round(clamped * 100) / 100;
68
+ }
69
+ //# sourceMappingURL=canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/model/canonical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Schema constants for the versioned `.agent/` context format.
3
+ *
4
+ * The format is explicit about its version so that consumers (CLI, MCP adapters,
5
+ * agents, humans reading the JSON) can detect incompatible layouts.
6
+ */
7
+ /** Current schema version of every file written into `.agent/`. */
8
+ export declare const SCHEMA_VERSION = 1;
9
+ export declare const GENERATOR_NAME = "ai-agent-context";
10
+ /** Directory that stores the versioned, committable context. */
11
+ export declare const AGENT_DIR = ".agent";
12
+ /** Directory inside `.agent/` that stores local (gitignored) state and caches. */
13
+ export declare const LOCAL_DIR = ".local";
14
+ /** Config file path, relative to the repository root. */
15
+ export declare const CONFIG_FILE = ".agent/config.json";
16
+ export declare const CACHE_DIR = ".agent/.local/cache";
17
+ export declare const STATE_FILE = ".agent/.local/state.json";
18
+ /** Canonical generated context files. Order is the documented output order. */
19
+ export declare const CONTEXT_FILES: readonly ["index.json", "architecture.json", "dependencies.json", "conventions.json", "conventions.md", "decisions.json"];
20
+ export type ContextFile = (typeof CONTEXT_FILES)[number];
21
+ /** Content written into `.agent/.gitignore` so the local cache is never committed. */
22
+ export declare const AGENT_GITIGNORE = "# Local, machine-specific state and caches (never committed).\n.local/\n";
23
+ /** Confidence values reported when a signal is conclusive. */
24
+ export declare const CONFIDENCE: {
25
+ /** Structural facts from configuration files, e.g. package.json `main`. */
26
+ readonly declared: 0.99;
27
+ /** Direct observation across many files, e.g. all classes are PascalCase. */
28
+ readonly strong: 0.88;
29
+ /** Multiple independent signals agree. */
30
+ readonly medium: 0.72;
31
+ /** A single, weaker signal. */
32
+ readonly weak: 0.52;
33
+ /** Mentioned only for completeness; needs human verification. */
34
+ readonly speculative: 0.3;
35
+ };
36
+ export type ConfidenceLevel = keyof typeof CONFIDENCE;
37
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/model/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AACnE,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,SAAS,WAAW,CAAC;AAElC,kFAAkF;AAClF,eAAO,MAAM,SAAS,WAAW,CAAC;AAElC,yDAAyD;AACzD,eAAO,MAAM,WAAW,uBAA6B,CAAC;AAEtD,eAAO,MAAM,SAAS,wBAAoC,CAAC;AAE3D,eAAO,MAAM,UAAU,6BAAyC,CAAC;AAEjE,+EAA+E;AAC/E,eAAO,MAAM,aAAa,2HAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,sFAAsF;AACtF,eAAO,MAAM,eAAe,6EAA6E,CAAC;AAE1G,8DAA8D;AAC9D,eAAO,MAAM,UAAU;IACrB,2EAA2E;;IAE3E,6EAA6E;;IAE7E,0CAA0C;;IAE1C,+BAA+B;;IAE/B,iEAAiE;;CAEzD,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Schema constants for the versioned `.agent/` context format.
3
+ *
4
+ * The format is explicit about its version so that consumers (CLI, MCP adapters,
5
+ * agents, humans reading the JSON) can detect incompatible layouts.
6
+ */
7
+ /** Current schema version of every file written into `.agent/`. */
8
+ export const SCHEMA_VERSION = 1;
9
+ export const GENERATOR_NAME = 'ai-agent-context';
10
+ /** Directory that stores the versioned, committable context. */
11
+ export const AGENT_DIR = '.agent';
12
+ /** Directory inside `.agent/` that stores local (gitignored) state and caches. */
13
+ export const LOCAL_DIR = '.local';
14
+ /** Config file path, relative to the repository root. */
15
+ export const CONFIG_FILE = `${AGENT_DIR}/config.json`;
16
+ export const CACHE_DIR = `${AGENT_DIR}/${LOCAL_DIR}/cache`;
17
+ export const STATE_FILE = `${AGENT_DIR}/${LOCAL_DIR}/state.json`;
18
+ /** Canonical generated context files. Order is the documented output order. */
19
+ export const CONTEXT_FILES = [
20
+ 'index.json',
21
+ 'architecture.json',
22
+ 'dependencies.json',
23
+ 'conventions.json',
24
+ 'conventions.md',
25
+ 'decisions.json',
26
+ ];
27
+ /** Content written into `.agent/.gitignore` so the local cache is never committed. */
28
+ export const AGENT_GITIGNORE = `# Local, machine-specific state and caches (never committed).\n.local/\n`;
29
+ /** Confidence values reported when a signal is conclusive. */
30
+ export const CONFIDENCE = {
31
+ /** Structural facts from configuration files, e.g. package.json `main`. */
32
+ declared: 0.99,
33
+ /** Direct observation across many files, e.g. all classes are PascalCase. */
34
+ strong: 0.88,
35
+ /** Multiple independent signals agree. */
36
+ medium: 0.72,
37
+ /** A single, weaker signal. */
38
+ weak: 0.52,
39
+ /** Mentioned only for completeness; needs human verification. */
40
+ speculative: 0.3,
41
+ };
42
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/model/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEjD,gEAAgE;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,SAAS,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,SAAS,IAAI,SAAS,QAAQ,CAAC;AAE3D,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,SAAS,aAAa,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY;IACZ,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,gBAAgB;IAChB,gBAAgB;CACR,CAAC;AAIX,sFAAsF;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,0EAA0E,CAAC;AAE1G,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2EAA2E;IAC3E,QAAQ,EAAE,IAAI;IACd,6EAA6E;IAC7E,MAAM,EAAE,IAAI;IACZ,0CAA0C;IAC1C,MAAM,EAAE,IAAI;IACZ,+BAA+B;IAC/B,IAAI,EAAE,IAAI;IACV,iEAAiE;IACjE,WAAW,EAAE,GAAG;CACR,CAAC"}