@harness-engineering/core 0.13.1 → 0.15.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.
package/dist/index.d.mts CHANGED
@@ -1,8 +1,9 @@
1
- import { Result, WorkflowStep, WorkflowStepResult, Workflow, WorkflowResult, SkillLifecycleHooks, SkillContext, SkillResult, TurnContext, CICheckName, CIFailOnSeverity, CICheckReport, Roadmap, FeatureStatus } from '@harness-engineering/types';
1
+ import { Result, SessionSectionName, SessionEntry, SessionSections, WorkflowStep, WorkflowStepResult, Workflow, WorkflowResult, SkillLifecycleHooks, SkillContext, SkillResult, TurnContext, CICheckName, CIFailOnSeverity, CICheckReport, Roadmap, FeatureStatus } from '@harness-engineering/types';
2
2
  export * from '@harness-engineering/types';
3
3
  import { z } from 'zod';
4
- import { C as Collector, A as ArchConfig, a as ConstraintRule, M as MetricResult, b as ArchMetricCategory, c as ArchBaseline, d as ArchDiffResult, T as ThresholdConfig } from './matchers-D20x48U9.mjs';
5
- export { e as ArchBaselineSchema, f as ArchConfigSchema, g as ArchDiffResultSchema, h as ArchHandle, i as ArchMetricCategorySchema, j as ArchitectureOptions, k as CategoryBaseline, l as CategoryBaselineSchema, m as CategoryRegression, n as CategoryRegressionSchema, o as ConstraintRuleSchema, p as MetricResultSchema, q as ThresholdConfigSchema, V as Violation, r as ViolationSchema, s as archMatchers, t as archModule, u as architecture } from './matchers-D20x48U9.mjs';
4
+ import { C as Collector, A as ArchConfig, a as ConstraintRule, M as MetricResult, b as ArchMetricCategory, c as ArchBaseline, d as ArchDiffResult, T as ThresholdConfig } from './matchers-Dj1t5vpg.mjs';
5
+ export { e as ArchBaselineSchema, f as ArchConfigSchema, g as ArchDiffResultSchema, h as ArchHandle, i as ArchMetricCategorySchema, j as ArchitectureOptions, k as CategoryBaseline, l as CategoryBaselineSchema, m as CategoryRegression, n as CategoryRegressionSchema, o as ConstraintRuleSchema, p as MetricResultSchema, q as ThresholdConfigSchema, V as Violation, r as ViolationSchema, s as archMatchers, t as archModule, u as architecture } from './matchers-Dj1t5vpg.mjs';
6
+ import Parser from 'web-tree-sitter';
6
7
 
7
8
  /**
8
9
  * Represents an error code for identifying specific error types.
@@ -293,6 +294,73 @@ interface ContextFilterResult {
293
294
  declare function contextFilter(phase: WorkflowPhase, maxCategories?: number, graphFilePaths?: string[]): ContextFilterResult;
294
295
  declare function getPhaseCategories(phase: WorkflowPhase): FileCategory[];
295
296
 
297
+ /**
298
+ * Supported languages for AST code navigation.
299
+ */
300
+ type SupportedLanguage = 'typescript' | 'javascript' | 'python';
301
+ /**
302
+ * Kind of code symbol extracted from AST.
303
+ */
304
+ type SymbolKind = 'function' | 'class' | 'interface' | 'type' | 'variable' | 'method' | 'property' | 'export' | 'import';
305
+ /**
306
+ * A code symbol with its location and metadata.
307
+ */
308
+ interface CodeSymbol {
309
+ name: string;
310
+ kind: SymbolKind;
311
+ file: string;
312
+ line: number;
313
+ endLine: number;
314
+ signature: string;
315
+ children?: CodeSymbol[];
316
+ }
317
+ /**
318
+ * Result of code_outline — structural skeleton of a file.
319
+ */
320
+ interface OutlineResult {
321
+ file: string;
322
+ language: SupportedLanguage | 'unknown';
323
+ totalLines: number;
324
+ symbols: CodeSymbol[];
325
+ error?: string;
326
+ }
327
+ /**
328
+ * A single match from code_search.
329
+ */
330
+ interface SearchMatch {
331
+ symbol: CodeSymbol;
332
+ context: string;
333
+ }
334
+ /**
335
+ * Result of code_search — cross-file symbol discovery.
336
+ */
337
+ interface SearchResult {
338
+ query: string;
339
+ matches: SearchMatch[];
340
+ skipped: string[];
341
+ }
342
+ /**
343
+ * Result of code_unfold — AST-bounded code extraction.
344
+ */
345
+ interface UnfoldResult {
346
+ file: string;
347
+ symbolName?: string;
348
+ startLine: number;
349
+ endLine: number;
350
+ content: string;
351
+ language: SupportedLanguage | 'unknown';
352
+ fallback: boolean;
353
+ warning?: string;
354
+ }
355
+ /**
356
+ * Map file extensions to supported languages.
357
+ */
358
+ declare const EXTENSION_MAP: Record<string, SupportedLanguage>;
359
+ /**
360
+ * Detect language from file extension.
361
+ */
362
+ declare function detectLanguage(filePath: string): SupportedLanguage | null;
363
+
296
364
  /**
297
365
  * Abstract Syntax Tree representation
298
366
  */
@@ -361,6 +429,10 @@ interface LanguageParser {
361
429
  extractImports(ast: AST): Result<Import[], ParseError>;
362
430
  extractExports(ast: AST): Result<Export[], ParseError>;
363
431
  health(): Promise<Result<HealthCheckResult, ParseError>>;
432
+ /** Extract structural outline from a parsed AST. Optional — code-nav parsers implement this. */
433
+ outline?(filePath: string, ast: AST): OutlineResult;
434
+ /** Extract a specific symbol's full implementation. Optional — code-nav parsers implement this. */
435
+ unfold?(filePath: string, ast: AST, symbolName: string): UnfoldResult | null;
364
436
  }
365
437
  /**
366
438
  * Create a ParseError with standard structure
@@ -522,12 +594,12 @@ declare const ManifestSchema: z.ZodObject<{
522
594
  schema: string;
523
595
  }>, "many">>;
524
596
  }, "strip", z.ZodTypeAny, {
525
- name: string;
526
597
  version: string;
598
+ name: string;
527
599
  include: string[];
528
600
  keywords: string[];
529
- layers?: Record<string, string[]> | undefined;
530
601
  description?: string | undefined;
602
+ layers?: Record<string, string[]> | undefined;
531
603
  minHarnessVersion?: string | undefined;
532
604
  boundaries?: {
533
605
  name: string;
@@ -536,11 +608,11 @@ declare const ManifestSchema: z.ZodObject<{
536
608
  schema: string;
537
609
  }[] | undefined;
538
610
  }, {
539
- name: string;
540
611
  version: string;
612
+ name: string;
541
613
  include: string[];
542
- layers?: Record<string, string[]> | undefined;
543
614
  description?: string | undefined;
615
+ layers?: Record<string, string[]> | undefined;
544
616
  minHarnessVersion?: string | undefined;
545
617
  keywords?: string[] | undefined;
546
618
  boundaries?: {
@@ -675,12 +747,12 @@ declare const BundleSchema: z.ZodObject<{
675
747
  schema: string;
676
748
  }>, "many">>;
677
749
  }, "strip", z.ZodTypeAny, {
678
- name: string;
679
750
  version: string;
751
+ name: string;
680
752
  include: string[];
681
753
  keywords: string[];
682
- layers?: Record<string, string[]> | undefined;
683
754
  description?: string | undefined;
755
+ layers?: Record<string, string[]> | undefined;
684
756
  minHarnessVersion?: string | undefined;
685
757
  boundaries?: {
686
758
  name: string;
@@ -689,11 +761,11 @@ declare const BundleSchema: z.ZodObject<{
689
761
  schema: string;
690
762
  }[] | undefined;
691
763
  }, {
692
- name: string;
693
764
  version: string;
765
+ name: string;
694
766
  include: string[];
695
- layers?: Record<string, string[]> | undefined;
696
767
  description?: string | undefined;
768
+ layers?: Record<string, string[]> | undefined;
697
769
  minHarnessVersion?: string | undefined;
698
770
  keywords?: string[] | undefined;
699
771
  boundaries?: {
@@ -799,15 +871,15 @@ declare const BundleSchema: z.ZodObject<{
799
871
  }>;
800
872
  contributions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
801
873
  }, "strip", z.ZodTypeAny, {
802
- name: string;
803
874
  version: string;
875
+ name: string;
804
876
  manifest: {
805
- name: string;
806
877
  version: string;
878
+ name: string;
807
879
  include: string[];
808
880
  keywords: string[];
809
- layers?: Record<string, string[]> | undefined;
810
881
  description?: string | undefined;
882
+ layers?: Record<string, string[]> | undefined;
811
883
  minHarnessVersion?: string | undefined;
812
884
  boundaries?: {
813
885
  name: string;
@@ -842,14 +914,14 @@ declare const BundleSchema: z.ZodObject<{
842
914
  minHarnessVersion?: string | undefined;
843
915
  contributions?: Record<string, unknown> | undefined;
844
916
  }, {
845
- name: string;
846
917
  version: string;
918
+ name: string;
847
919
  manifest: {
848
- name: string;
849
920
  version: string;
921
+ name: string;
850
922
  include: string[];
851
- layers?: Record<string, string[]> | undefined;
852
923
  description?: string | undefined;
924
+ layers?: Record<string, string[]> | undefined;
853
925
  minHarnessVersion?: string | undefined;
854
926
  keywords?: string[] | undefined;
855
927
  boundaries?: {
@@ -898,16 +970,16 @@ declare const LockfilePackageSchema: z.ZodObject<{
898
970
  integrity: z.ZodOptional<z.ZodString>;
899
971
  provenance: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
900
972
  }, "strip", z.ZodTypeAny, {
901
- source: string;
902
973
  version: string;
974
+ source: string;
903
975
  installedAt: string;
904
976
  contributions?: Record<string, unknown> | null | undefined;
905
977
  resolved?: string | undefined;
906
978
  integrity?: string | undefined;
907
979
  provenance?: string[] | undefined;
908
980
  }, {
909
- source: string;
910
981
  version: string;
982
+ source: string;
911
983
  installedAt: string;
912
984
  contributions?: Record<string, unknown> | null | undefined;
913
985
  resolved?: string | undefined;
@@ -926,16 +998,16 @@ declare const LockfileSchema: z.ZodEffects<z.ZodObject<{
926
998
  integrity: z.ZodOptional<z.ZodString>;
927
999
  provenance: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
928
1000
  }, "strip", z.ZodTypeAny, {
929
- source: string;
930
1001
  version: string;
1002
+ source: string;
931
1003
  installedAt: string;
932
1004
  contributions?: Record<string, unknown> | null | undefined;
933
1005
  resolved?: string | undefined;
934
1006
  integrity?: string | undefined;
935
1007
  provenance?: string[] | undefined;
936
1008
  }, {
937
- source: string;
938
1009
  version: string;
1010
+ source: string;
939
1011
  installedAt: string;
940
1012
  contributions?: Record<string, unknown> | null | undefined;
941
1013
  resolved?: string | undefined;
@@ -944,8 +1016,8 @@ declare const LockfileSchema: z.ZodEffects<z.ZodObject<{
944
1016
  }>>;
945
1017
  }, "strip", z.ZodTypeAny, {
946
1018
  packages: Record<string, {
947
- source: string;
948
1019
  version: string;
1020
+ source: string;
949
1021
  installedAt: string;
950
1022
  contributions?: Record<string, unknown> | null | undefined;
951
1023
  resolved?: string | undefined;
@@ -956,8 +1028,8 @@ declare const LockfileSchema: z.ZodEffects<z.ZodObject<{
956
1028
  lockfileVersion?: 1 | undefined;
957
1029
  }, {
958
1030
  packages: Record<string, {
959
- source: string;
960
1031
  version: string;
1032
+ source: string;
961
1033
  installedAt: string;
962
1034
  contributions?: Record<string, unknown> | null | undefined;
963
1035
  resolved?: string | undefined;
@@ -968,8 +1040,8 @@ declare const LockfileSchema: z.ZodEffects<z.ZodObject<{
968
1040
  lockfileVersion?: 1 | undefined;
969
1041
  }>, {
970
1042
  packages: Record<string, {
971
- source: string;
972
1043
  version: string;
1044
+ source: string;
973
1045
  installedAt: string;
974
1046
  contributions?: Record<string, unknown> | null | undefined;
975
1047
  resolved?: string | undefined;
@@ -980,8 +1052,8 @@ declare const LockfileSchema: z.ZodEffects<z.ZodObject<{
980
1052
  lockfileVersion?: 1 | undefined;
981
1053
  }, {
982
1054
  packages: Record<string, {
983
- source: string;
984
1055
  version: string;
1056
+ source: string;
985
1057
  installedAt: string;
986
1058
  contributions?: Record<string, unknown> | null | undefined;
987
1059
  resolved?: string | undefined;
@@ -1852,12 +1924,12 @@ declare const PatternConfigSchema: z.ZodObject<{
1852
1924
  match: z.ZodString;
1853
1925
  convention: z.ZodEnum<["camelCase", "PascalCase", "UPPER_SNAKE", "kebab-case"]>;
1854
1926
  }, "strip", z.ZodTypeAny, {
1855
- match: string;
1856
1927
  type: "naming";
1928
+ match: string;
1857
1929
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
1858
1930
  }, {
1859
- match: string;
1860
1931
  type: "naming";
1932
+ match: string;
1861
1933
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
1862
1934
  }>, z.ZodObject<{
1863
1935
  type: z.ZodLiteral<"max-exports">;
@@ -1889,10 +1961,10 @@ declare const PatternConfigSchema: z.ZodObject<{
1889
1961
  }>]>;
1890
1962
  message: z.ZodOptional<z.ZodString>;
1891
1963
  }, "strip", z.ZodTypeAny, {
1964
+ severity: "error" | "warning";
1965
+ description: string;
1892
1966
  files: string[];
1893
1967
  name: string;
1894
- description: string;
1895
- severity: "error" | "warning";
1896
1968
  rule: {
1897
1969
  type: "must-export";
1898
1970
  names: string[];
@@ -1910,8 +1982,8 @@ declare const PatternConfigSchema: z.ZodObject<{
1910
1982
  type: "no-import";
1911
1983
  from: string;
1912
1984
  } | {
1913
- match: string;
1914
1985
  type: "naming";
1986
+ match: string;
1915
1987
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
1916
1988
  } | {
1917
1989
  type: "max-exports";
@@ -1925,10 +1997,10 @@ declare const PatternConfigSchema: z.ZodObject<{
1925
1997
  };
1926
1998
  message?: string | undefined;
1927
1999
  }, {
2000
+ severity: "error" | "warning";
2001
+ description: string;
1928
2002
  files: string[];
1929
2003
  name: string;
1930
- description: string;
1931
- severity: "error" | "warning";
1932
2004
  rule: {
1933
2005
  type: "must-export";
1934
2006
  names: string[];
@@ -1946,8 +2018,8 @@ declare const PatternConfigSchema: z.ZodObject<{
1946
2018
  type: "no-import";
1947
2019
  from: string;
1948
2020
  } | {
1949
- match: string;
1950
2021
  type: "naming";
2022
+ match: string;
1951
2023
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
1952
2024
  } | {
1953
2025
  type: "max-exports";
@@ -1965,10 +2037,10 @@ declare const PatternConfigSchema: z.ZodObject<{
1965
2037
  ignoreFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1966
2038
  }, "strip", z.ZodTypeAny, {
1967
2039
  patterns: {
2040
+ severity: "error" | "warning";
2041
+ description: string;
1968
2042
  files: string[];
1969
2043
  name: string;
1970
- description: string;
1971
- severity: "error" | "warning";
1972
2044
  rule: {
1973
2045
  type: "must-export";
1974
2046
  names: string[];
@@ -1986,8 +2058,8 @@ declare const PatternConfigSchema: z.ZodObject<{
1986
2058
  type: "no-import";
1987
2059
  from: string;
1988
2060
  } | {
1989
- match: string;
1990
2061
  type: "naming";
2062
+ match: string;
1991
2063
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
1992
2064
  } | {
1993
2065
  type: "max-exports";
@@ -2005,10 +2077,10 @@ declare const PatternConfigSchema: z.ZodObject<{
2005
2077
  ignoreFiles?: string[] | undefined;
2006
2078
  }, {
2007
2079
  patterns: {
2080
+ severity: "error" | "warning";
2081
+ description: string;
2008
2082
  files: string[];
2009
2083
  name: string;
2010
- description: string;
2011
- severity: "error" | "warning";
2012
2084
  rule: {
2013
2085
  type: "must-export";
2014
2086
  names: string[];
@@ -2026,8 +2098,8 @@ declare const PatternConfigSchema: z.ZodObject<{
2026
2098
  type: "no-import";
2027
2099
  from: string;
2028
2100
  } | {
2029
- match: string;
2030
2101
  type: "naming";
2102
+ match: string;
2031
2103
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2032
2104
  } | {
2033
2105
  type: "max-exports";
@@ -2146,12 +2218,12 @@ declare const EntropyConfigSchema: z.ZodObject<{
2146
2218
  match: z.ZodString;
2147
2219
  convention: z.ZodEnum<["camelCase", "PascalCase", "UPPER_SNAKE", "kebab-case"]>;
2148
2220
  }, "strip", z.ZodTypeAny, {
2149
- match: string;
2150
2221
  type: "naming";
2222
+ match: string;
2151
2223
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2152
2224
  }, {
2153
- match: string;
2154
2225
  type: "naming";
2226
+ match: string;
2155
2227
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2156
2228
  }>, z.ZodObject<{
2157
2229
  type: z.ZodLiteral<"max-exports">;
@@ -2183,10 +2255,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2183
2255
  }>]>;
2184
2256
  message: z.ZodOptional<z.ZodString>;
2185
2257
  }, "strip", z.ZodTypeAny, {
2258
+ severity: "error" | "warning";
2259
+ description: string;
2186
2260
  files: string[];
2187
2261
  name: string;
2188
- description: string;
2189
- severity: "error" | "warning";
2190
2262
  rule: {
2191
2263
  type: "must-export";
2192
2264
  names: string[];
@@ -2204,8 +2276,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2204
2276
  type: "no-import";
2205
2277
  from: string;
2206
2278
  } | {
2207
- match: string;
2208
2279
  type: "naming";
2280
+ match: string;
2209
2281
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2210
2282
  } | {
2211
2283
  type: "max-exports";
@@ -2219,10 +2291,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2219
2291
  };
2220
2292
  message?: string | undefined;
2221
2293
  }, {
2294
+ severity: "error" | "warning";
2295
+ description: string;
2222
2296
  files: string[];
2223
2297
  name: string;
2224
- description: string;
2225
- severity: "error" | "warning";
2226
2298
  rule: {
2227
2299
  type: "must-export";
2228
2300
  names: string[];
@@ -2240,8 +2312,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2240
2312
  type: "no-import";
2241
2313
  from: string;
2242
2314
  } | {
2243
- match: string;
2244
2315
  type: "naming";
2316
+ match: string;
2245
2317
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2246
2318
  } | {
2247
2319
  type: "max-exports";
@@ -2259,10 +2331,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2259
2331
  ignoreFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2260
2332
  }, "strip", z.ZodTypeAny, {
2261
2333
  patterns: {
2334
+ severity: "error" | "warning";
2335
+ description: string;
2262
2336
  files: string[];
2263
2337
  name: string;
2264
- description: string;
2265
- severity: "error" | "warning";
2266
2338
  rule: {
2267
2339
  type: "must-export";
2268
2340
  names: string[];
@@ -2280,8 +2352,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2280
2352
  type: "no-import";
2281
2353
  from: string;
2282
2354
  } | {
2283
- match: string;
2284
2355
  type: "naming";
2356
+ match: string;
2285
2357
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2286
2358
  } | {
2287
2359
  type: "max-exports";
@@ -2299,10 +2371,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2299
2371
  ignoreFiles?: string[] | undefined;
2300
2372
  }, {
2301
2373
  patterns: {
2374
+ severity: "error" | "warning";
2375
+ description: string;
2302
2376
  files: string[];
2303
2377
  name: string;
2304
- description: string;
2305
- severity: "error" | "warning";
2306
2378
  rule: {
2307
2379
  type: "must-export";
2308
2380
  names: string[];
@@ -2320,8 +2392,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2320
2392
  type: "no-import";
2321
2393
  from: string;
2322
2394
  } | {
2323
- match: string;
2324
2395
  type: "naming";
2396
+ match: string;
2325
2397
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2326
2398
  } | {
2327
2399
  type: "max-exports";
@@ -2355,10 +2427,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2355
2427
  } | undefined;
2356
2428
  patterns?: boolean | {
2357
2429
  patterns: {
2430
+ severity: "error" | "warning";
2431
+ description: string;
2358
2432
  files: string[];
2359
2433
  name: string;
2360
- description: string;
2361
- severity: "error" | "warning";
2362
2434
  rule: {
2363
2435
  type: "must-export";
2364
2436
  names: string[];
@@ -2376,8 +2448,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2376
2448
  type: "no-import";
2377
2449
  from: string;
2378
2450
  } | {
2379
- match: string;
2380
2451
  type: "naming";
2452
+ match: string;
2381
2453
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2382
2454
  } | {
2383
2455
  type: "max-exports";
@@ -2411,10 +2483,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2411
2483
  } | undefined;
2412
2484
  patterns?: boolean | {
2413
2485
  patterns: {
2486
+ severity: "error" | "warning";
2487
+ description: string;
2414
2488
  files: string[];
2415
2489
  name: string;
2416
- description: string;
2417
- severity: "error" | "warning";
2418
2490
  rule: {
2419
2491
  type: "must-export";
2420
2492
  names: string[];
@@ -2432,8 +2504,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2432
2504
  type: "no-import";
2433
2505
  from: string;
2434
2506
  } | {
2435
- match: string;
2436
2507
  type: "naming";
2508
+ match: string;
2437
2509
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2438
2510
  } | {
2439
2511
  type: "max-exports";
@@ -2473,10 +2545,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2473
2545
  } | undefined;
2474
2546
  patterns?: boolean | {
2475
2547
  patterns: {
2548
+ severity: "error" | "warning";
2549
+ description: string;
2476
2550
  files: string[];
2477
2551
  name: string;
2478
- description: string;
2479
- severity: "error" | "warning";
2480
2552
  rule: {
2481
2553
  type: "must-export";
2482
2554
  names: string[];
@@ -2494,8 +2566,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2494
2566
  type: "no-import";
2495
2567
  from: string;
2496
2568
  } | {
2497
- match: string;
2498
2569
  type: "naming";
2570
+ match: string;
2499
2571
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2500
2572
  } | {
2501
2573
  type: "max-exports";
@@ -2537,10 +2609,10 @@ declare const EntropyConfigSchema: z.ZodObject<{
2537
2609
  } | undefined;
2538
2610
  patterns?: boolean | {
2539
2611
  patterns: {
2612
+ severity: "error" | "warning";
2613
+ description: string;
2540
2614
  files: string[];
2541
2615
  name: string;
2542
- description: string;
2543
- severity: "error" | "warning";
2544
2616
  rule: {
2545
2617
  type: "must-export";
2546
2618
  names: string[];
@@ -2558,8 +2630,8 @@ declare const EntropyConfigSchema: z.ZodObject<{
2558
2630
  type: "no-import";
2559
2631
  from: string;
2560
2632
  } | {
2561
- match: string;
2562
2633
  type: "naming";
2634
+ match: string;
2563
2635
  convention: "camelCase" | "PascalCase" | "UPPER_SNAKE" | "kebab-case";
2564
2636
  } | {
2565
2637
  type: "max-exports";
@@ -2691,10 +2763,19 @@ declare class BenchmarkRunner {
2691
2763
  rawOutput: string;
2692
2764
  success: boolean;
2693
2765
  }>;
2766
+ /**
2767
+ * Extract a BenchmarkResult from a single assertion with benchmark data.
2768
+ */
2769
+ private parseBenchAssertion;
2770
+ /**
2771
+ * Extract JSON from output that may contain non-JSON preamble.
2772
+ */
2773
+ private extractJson;
2694
2774
  /**
2695
2775
  * Parse vitest bench JSON reporter output into BenchmarkResult[].
2696
2776
  * Vitest bench JSON output contains testResults with benchmark data.
2697
2777
  */
2778
+ private collectAssertionResults;
2698
2779
  parseVitestBenchOutput(output: string): BenchmarkResult[];
2699
2780
  }
2700
2781
 
@@ -3017,6 +3098,18 @@ declare class ChecklistBuilder {
3017
3098
  addRule(rule: CustomRule): this;
3018
3099
  addRules(rules: CustomRule[]): this;
3019
3100
  withDiffAnalysis(options: SelfReviewConfig['diffAnalysis'], graphImpactData?: GraphImpactData): this;
3101
+ /**
3102
+ * Build a single harness check item with or without graph data.
3103
+ */
3104
+ private buildHarnessCheckItem;
3105
+ /**
3106
+ * Build all harness check items based on harnessOptions and graph data.
3107
+ */
3108
+ private buildHarnessItems;
3109
+ /**
3110
+ * Execute a single custom rule and return a ReviewItem.
3111
+ */
3112
+ private executeCustomRule;
3020
3113
  run(changes: CodeChanges): Promise<Result<ReviewChecklist, FeedbackError>>;
3021
3114
  }
3022
3115
 
@@ -3238,19 +3331,6 @@ declare class ArchBaselineManager {
3238
3331
  save(baseline: ArchBaseline): void;
3239
3332
  }
3240
3333
 
3241
- /**
3242
- * Diff current metric results against a stored baseline.
3243
- *
3244
- * Pure function implementing the ratchet logic:
3245
- * - New violations (in current but not baseline) cause failure
3246
- * - Aggregate value exceeding baseline causes failure (regression)
3247
- * - Pre-existing violations (in both) are allowed
3248
- * - Resolved violations (in baseline but not current) are celebrated
3249
- *
3250
- * Categories present in current but absent from the baseline are treated
3251
- * as having an empty baseline (value: 0, no known violations), so any
3252
- * violations in those categories are considered new.
3253
- */
3254
3334
  declare function diff(current: MetricResult[], baseline: ArchBaseline): ArchDiffResult;
3255
3335
 
3256
3336
  /**
@@ -3277,13 +3357,13 @@ declare const FailureEntrySchema: z.ZodObject<{
3277
3357
  description: z.ZodString;
3278
3358
  }, "strip", z.ZodTypeAny, {
3279
3359
  type: string;
3280
- description: string;
3281
3360
  date: string;
3361
+ description: string;
3282
3362
  skill: string;
3283
3363
  }, {
3284
3364
  type: string;
3285
- description: string;
3286
3365
  date: string;
3366
+ description: string;
3287
3367
  skill: string;
3288
3368
  }>;
3289
3369
  type FailureEntry = z.infer<typeof FailureEntrySchema>;
@@ -3346,14 +3426,14 @@ declare const GateResultSchema: z.ZodObject<{
3346
3426
  output: z.ZodOptional<z.ZodString>;
3347
3427
  duration: z.ZodOptional<z.ZodNumber>;
3348
3428
  }, "strip", z.ZodTypeAny, {
3349
- name: string;
3350
3429
  passed: boolean;
3430
+ name: string;
3351
3431
  command: string;
3352
3432
  output?: string | undefined;
3353
3433
  duration?: number | undefined;
3354
3434
  }, {
3355
- name: string;
3356
3435
  passed: boolean;
3436
+ name: string;
3357
3437
  command: string;
3358
3438
  output?: string | undefined;
3359
3439
  duration?: number | undefined;
@@ -3361,8 +3441,8 @@ declare const GateResultSchema: z.ZodObject<{
3361
3441
  }, "strip", z.ZodTypeAny, {
3362
3442
  passed: boolean;
3363
3443
  checks: {
3364
- name: string;
3365
3444
  passed: boolean;
3445
+ name: string;
3366
3446
  command: string;
3367
3447
  output?: string | undefined;
3368
3448
  duration?: number | undefined;
@@ -3370,8 +3450,8 @@ declare const GateResultSchema: z.ZodObject<{
3370
3450
  }, {
3371
3451
  passed: boolean;
3372
3452
  checks: {
3373
- name: string;
3374
3453
  passed: boolean;
3454
+ name: string;
3375
3455
  command: string;
3376
3456
  output?: string | undefined;
3377
3457
  duration?: number | undefined;
@@ -3434,13 +3514,13 @@ declare const HarnessStateSchema: z.ZodObject<{
3434
3514
  description: z.ZodString;
3435
3515
  status: z.ZodEnum<["open", "resolved"]>;
3436
3516
  }, "strip", z.ZodTypeAny, {
3517
+ status: "resolved" | "open";
3437
3518
  id: string;
3438
3519
  description: string;
3439
- status: "resolved" | "open";
3440
3520
  }, {
3521
+ status: "resolved" | "open";
3441
3522
  id: string;
3442
3523
  description: string;
3443
- status: "resolved" | "open";
3444
3524
  }>, "many">>;
3445
3525
  progress: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<["pending", "in_progress", "complete"]>>>;
3446
3526
  lastSession: z.ZodOptional<z.ZodObject<{
@@ -3466,9 +3546,9 @@ declare const HarnessStateSchema: z.ZodObject<{
3466
3546
  decision: string;
3467
3547
  }[];
3468
3548
  blockers: {
3549
+ status: "resolved" | "open";
3469
3550
  id: string;
3470
3551
  description: string;
3471
- status: "resolved" | "open";
3472
3552
  }[];
3473
3553
  schemaVersion: 1;
3474
3554
  position: {
@@ -3490,9 +3570,9 @@ declare const HarnessStateSchema: z.ZodObject<{
3490
3570
  decision: string;
3491
3571
  }[] | undefined;
3492
3572
  blockers?: {
3573
+ status: "resolved" | "open";
3493
3574
  id: string;
3494
3575
  description: string;
3495
- status: "resolved" | "open";
3496
3576
  }[] | undefined;
3497
3577
  position?: {
3498
3578
  task?: string | undefined;
@@ -3512,6 +3592,24 @@ declare const DEFAULT_STATE: HarnessState;
3512
3592
  declare function loadState(projectPath: string, stream?: string, session?: string): Promise<Result<HarnessState, Error>>;
3513
3593
  declare function saveState(projectPath: string, state: HarnessState, stream?: string, session?: string): Promise<Result<void, Error>>;
3514
3594
 
3595
+ interface LearningsFrontmatter {
3596
+ hash: string;
3597
+ tags: string[];
3598
+ }
3599
+ interface LearningsIndexEntry {
3600
+ hash: string;
3601
+ tags: string[];
3602
+ summary: string;
3603
+ fullText: string;
3604
+ }
3605
+ /** Parse a frontmatter comment line: <!-- hash:XXXX tags:a,b --> */
3606
+ declare function parseFrontmatter(line: string): LearningsFrontmatter | null;
3607
+ /**
3608
+ * Extract a lightweight index entry from a full learning entry.
3609
+ * Summary = first line only. Tags extracted from [skill:X] and [outcome:Y] markers.
3610
+ * Hash computed from full entry text.
3611
+ */
3612
+ declare function extractIndexEntry(entry: string): LearningsIndexEntry;
3515
3613
  declare function clearLearningsCache(): void;
3516
3614
  declare function appendLearning(projectPath: string, learning: string, skillName?: string, outcome?: string, stream?: string, session?: string): Promise<Result<void, Error>>;
3517
3615
  /**
@@ -3537,6 +3635,7 @@ interface BudgetedLearningsOptions {
3537
3635
  skill?: string;
3538
3636
  session?: string;
3539
3637
  stream?: string;
3638
+ depth?: 'index' | 'summary' | 'full';
3540
3639
  }
3541
3640
  /**
3542
3641
  * Load learnings with token budget, two-tier loading, recency sorting, and relevance filtering.
@@ -3548,6 +3647,14 @@ interface BudgetedLearningsOptions {
3548
3647
  * - Capped at tokenBudget (default 1000 tokens)
3549
3648
  */
3550
3649
  declare function loadBudgetedLearnings(projectPath: string, options: BudgetedLearningsOptions): Promise<Result<string[], Error>>;
3650
+ /**
3651
+ * Load lightweight index entries from a learnings file.
3652
+ * Returns summaries (first line) with hash and tags for each entry.
3653
+ * Uses frontmatter when available; computes hash and extracts tags on-the-fly when not.
3654
+ *
3655
+ * This is Layer 1 of the progressive disclosure pipeline.
3656
+ */
3657
+ declare function loadIndexEntries(projectPath: string, skillName?: string, stream?: string, session?: string): Promise<Result<LearningsIndexEntry[], Error>>;
3551
3658
  declare function loadRelevantLearnings(projectPath: string, skillName?: string, stream?: string, session?: string): Promise<Result<string[], Error>>;
3552
3659
  interface PruneResult {
3553
3660
  kept: number;
@@ -3569,6 +3676,26 @@ declare function archiveLearnings(projectPath: string, entries: string[], stream
3569
3676
  * Returns the prune result with pattern analysis and counts.
3570
3677
  */
3571
3678
  declare function pruneLearnings(projectPath: string, stream?: string): Promise<Result<PruneResult, Error>>;
3679
+ interface PromoteResult {
3680
+ promoted: number;
3681
+ skipped: number;
3682
+ }
3683
+ /**
3684
+ * Promote generalizable session learnings to global learnings.md.
3685
+ *
3686
+ * Generalizable entries are those tagged with [outcome:gotcha],
3687
+ * [outcome:decision], or [outcome:observation]. These represent
3688
+ * reusable insights that apply beyond the current session.
3689
+ *
3690
+ * Task-specific entries (e.g., [outcome:success] completion summaries,
3691
+ * or entries without outcome tags) stay in the session directory.
3692
+ */
3693
+ declare function promoteSessionLearnings(projectPath: string, sessionSlug: string, stream?: string): Promise<Result<PromoteResult, Error>>;
3694
+ /**
3695
+ * Count the number of learning entries in the global learnings.md file.
3696
+ * Useful for checking if pruning should be suggested (threshold: 30).
3697
+ */
3698
+ declare function countLearningEntries(projectPath: string, stream?: string): Promise<number>;
3572
3699
 
3573
3700
  declare function clearFailuresCache(): void;
3574
3701
  declare function appendFailure(projectPath: string, description: string, skillName: string, type: string, stream?: string, session?: string): Promise<Result<void, Error>>;
@@ -3717,6 +3844,116 @@ declare function loadSessionSummary(projectPath: string, sessionSlug: string): R
3717
3844
  */
3718
3845
  declare function listActiveSessions(projectPath: string): Result<string | null, Error>;
3719
3846
 
3847
+ /**
3848
+ * Reads all session sections. Returns empty sections if no session state exists.
3849
+ */
3850
+ declare function readSessionSections(projectPath: string, sessionSlug: string): Promise<Result<SessionSections, Error>>;
3851
+ /**
3852
+ * Reads a single session section by name. Returns empty array if section has no entries.
3853
+ */
3854
+ declare function readSessionSection(projectPath: string, sessionSlug: string, section: SessionSectionName): Promise<Result<SessionEntry[], Error>>;
3855
+ /**
3856
+ * Appends an entry to a session section (read-before-write).
3857
+ * Generates a unique ID and timestamp for the entry.
3858
+ */
3859
+ declare function appendSessionEntry(projectPath: string, sessionSlug: string, section: SessionSectionName, authorSkill: string, content: string): Promise<Result<SessionEntry, Error>>;
3860
+ /**
3861
+ * Updates the status of an existing entry in a session section.
3862
+ * Returns Err if the entry is not found.
3863
+ */
3864
+ declare function updateSessionEntryStatus(projectPath: string, sessionSlug: string, section: SessionSectionName, entryId: string, newStatus: SessionEntry['status']): Promise<Result<SessionEntry, Error>>;
3865
+
3866
+ /**
3867
+ * Archives a session by moving its directory to
3868
+ * `.harness/archive/sessions/<slug>-<date>`.
3869
+ *
3870
+ * The original session directory is removed. If an archive with the same
3871
+ * date already exists, a numeric counter is appended.
3872
+ */
3873
+ declare function archiveSession(projectPath: string, sessionSlug: string): Promise<Result<void, Error>>;
3874
+
3875
+ /** Event types emitted at skill lifecycle points. */
3876
+ type EventType = 'phase_transition' | 'decision' | 'gate_result' | 'handoff' | 'error' | 'checkpoint';
3877
+ /** A structured skill lifecycle event. */
3878
+ interface SkillEvent {
3879
+ timestamp: string;
3880
+ skill: string;
3881
+ session?: string;
3882
+ type: EventType;
3883
+ summary: string;
3884
+ data?: Record<string, unknown>;
3885
+ refs?: string[];
3886
+ contentHash?: string;
3887
+ }
3888
+ /** Zod schema for validating SkillEvent objects. */
3889
+ declare const SkillEventSchema: z.ZodObject<{
3890
+ timestamp: z.ZodString;
3891
+ skill: z.ZodString;
3892
+ session: z.ZodOptional<z.ZodString>;
3893
+ type: z.ZodEnum<["phase_transition", "decision", "gate_result", "handoff", "error", "checkpoint"]>;
3894
+ summary: z.ZodString;
3895
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3896
+ refs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3897
+ contentHash: z.ZodOptional<z.ZodString>;
3898
+ }, "strip", z.ZodTypeAny, {
3899
+ type: "error" | "decision" | "phase_transition" | "gate_result" | "handoff" | "checkpoint";
3900
+ timestamp: string;
3901
+ skill: string;
3902
+ summary: string;
3903
+ session?: string | undefined;
3904
+ data?: Record<string, unknown> | undefined;
3905
+ refs?: string[] | undefined;
3906
+ contentHash?: string | undefined;
3907
+ }, {
3908
+ type: "error" | "decision" | "phase_transition" | "gate_result" | "handoff" | "checkpoint";
3909
+ timestamp: string;
3910
+ skill: string;
3911
+ summary: string;
3912
+ session?: string | undefined;
3913
+ data?: Record<string, unknown> | undefined;
3914
+ refs?: string[] | undefined;
3915
+ contentHash?: string | undefined;
3916
+ }>;
3917
+ /** Input to emitEvent — timestamp and contentHash are computed automatically. */
3918
+ type EmitEventInput = Omit<SkillEvent, 'timestamp' | 'contentHash'>;
3919
+ interface EmitEventOptions {
3920
+ session?: string;
3921
+ stream?: string;
3922
+ }
3923
+ interface EmitEventResult {
3924
+ written: boolean;
3925
+ reason?: string;
3926
+ }
3927
+ /** Clear the known-hashes cache (for testing). */
3928
+ declare function clearEventHashCache(): void;
3929
+ /**
3930
+ * Emit a structured event to the JSONL event log.
3931
+ *
3932
+ * - Appends one JSON line to events.jsonl (crash-safe via appendFileSync)
3933
+ * - Born-deduplicated: same {skill, type, summary, session} tuple writes only once
3934
+ * - Session-scoped when options.session is provided
3935
+ * - Uses in-memory hash set for O(1) dedup checks after initial file load
3936
+ */
3937
+ declare function emitEvent(projectPath: string, event: EmitEventInput, options?: EmitEventOptions): Promise<Result<EmitEventResult, Error>>;
3938
+ interface LoadEventsOptions {
3939
+ session?: string | undefined;
3940
+ stream?: string | undefined;
3941
+ }
3942
+ /**
3943
+ * Load all events from the JSONL event log.
3944
+ * Skips malformed lines gracefully.
3945
+ */
3946
+ declare function loadEvents(projectPath: string, options?: LoadEventsOptions): Promise<Result<SkillEvent[], Error>>;
3947
+ /**
3948
+ * Format events as a compact timeline for display in gather_context.
3949
+ *
3950
+ * Example output:
3951
+ * - 10:30 [harness-execution] phase: PREPARE -> EXECUTE (12 tasks)
3952
+ * - 10:45 [harness-execution] gate: passed (test Y, lint Y)
3953
+ * - 11:02 [harness-execution] decision: Use polling over WebSocket
3954
+ */
3955
+ declare function formatEventTimeline(events: SkillEvent[], limit?: number): string;
3956
+
3720
3957
  type StepExecutor = (step: WorkflowStep, previousArtifact?: string) => Promise<WorkflowStepResult>;
3721
3958
  declare function executeWorkflow(workflow: Workflow, executor: StepExecutor): Promise<WorkflowResult>;
3722
3959
 
@@ -3740,7 +3977,7 @@ type TurnExecutor = (context: TurnContext) => Promise<{
3740
3977
  declare function runPipeline(initialContext: SkillContext, executor: SkillExecutor, options?: PipelineOptions): Promise<PipelineResult>;
3741
3978
  declare function runMultiTurnPipeline(initialContext: SkillContext, turnExecutor: TurnExecutor, options?: PipelineOptions): Promise<PipelineResult>;
3742
3979
 
3743
- type SecurityCategory = 'secrets' | 'injection' | 'xss' | 'crypto' | 'network' | 'deserialization' | 'path-traversal';
3980
+ type SecurityCategory = 'secrets' | 'injection' | 'xss' | 'crypto' | 'network' | 'deserialization' | 'path-traversal' | 'agent-config' | 'mcp';
3744
3981
  type SecuritySeverity = 'error' | 'warning' | 'info';
3745
3982
  type SecurityConfidence = 'high' | 'medium' | 'low';
3746
3983
  interface SecurityRule {
@@ -3802,8 +4039,15 @@ declare class SecurityScanner {
3802
4039
  private activeRules;
3803
4040
  constructor(config?: Partial<SecurityConfig>);
3804
4041
  configureForProject(projectRoot: string): void;
4042
+ /**
4043
+ * Scan raw content against all active rules. Note: this method does NOT apply
4044
+ * fileGlob filtering — every active rule is evaluated regardless of filePath.
4045
+ * If you are scanning a specific file and want fileGlob-based rule filtering,
4046
+ * use {@link scanFile} instead.
4047
+ */
3805
4048
  scanContent(content: string, filePath: string, startLine?: number): SecurityFinding[];
3806
4049
  scanFile(filePath: string): Promise<SecurityFinding[]>;
4050
+ private scanContentForFile;
3807
4051
  scanFiles(filePaths: string[]): Promise<ScanResult>;
3808
4052
  }
3809
4053
 
@@ -3848,9 +4092,9 @@ declare const SecurityConfigSchema: z.ZodObject<{
3848
4092
  } | undefined;
3849
4093
  }>>;
3850
4094
  }, "strip", z.ZodTypeAny, {
3851
- rules: Record<string, "error" | "warning" | "info" | "off">;
3852
4095
  enabled: boolean;
3853
4096
  strict: boolean;
4097
+ rules: Record<string, "error" | "warning" | "info" | "off">;
3854
4098
  exclude: string[];
3855
4099
  external?: {
3856
4100
  semgrep?: {
@@ -3862,9 +4106,9 @@ declare const SecurityConfigSchema: z.ZodObject<{
3862
4106
  } | undefined;
3863
4107
  } | undefined;
3864
4108
  }, {
3865
- rules?: Record<string, "error" | "warning" | "info" | "off"> | undefined;
3866
4109
  enabled?: boolean | undefined;
3867
4110
  strict?: boolean | undefined;
4111
+ rules?: Record<string, "error" | "warning" | "info" | "off"> | undefined;
3868
4112
  exclude?: string[] | undefined;
3869
4113
  external?: {
3870
4114
  semgrep?: {
@@ -3905,6 +4149,10 @@ declare const networkRules: SecurityRule[];
3905
4149
 
3906
4150
  declare const deserializationRules: SecurityRule[];
3907
4151
 
4152
+ declare const agentConfigRules: SecurityRule[];
4153
+
4154
+ declare const mcpRules: SecurityRule[];
4155
+
3908
4156
  declare const nodeRules: SecurityRule[];
3909
4157
 
3910
4158
  declare const expressRules: SecurityRule[];
@@ -3971,6 +4219,22 @@ interface MechanicalCheckOptions {
3971
4219
  /** Only scan these files for security (e.g., changed files from a PR) */
3972
4220
  changedFiles?: string[];
3973
4221
  }
4222
+ /**
4223
+ * Report on evidence coverage across review findings.
4224
+ * Produced by the evidence gate and included in review output.
4225
+ */
4226
+ interface EvidenceCoverageReport {
4227
+ /** Total evidence entries loaded from session state */
4228
+ totalEntries: number;
4229
+ /** Number of findings that have matching evidence entries */
4230
+ findingsWithEvidence: number;
4231
+ /** Number of findings without matching evidence (flagged [UNVERIFIED]) */
4232
+ uncitedCount: number;
4233
+ /** Titles of uncited findings (for reporting) */
4234
+ uncitedFindings: string[];
4235
+ /** Coverage percentage (findingsWithEvidence / total findings * 100) */
4236
+ coveragePercentage: number;
4237
+ }
3974
4238
 
3975
4239
  /**
3976
4240
  * Change type detected from commit message prefix or diff heuristic.
@@ -4194,6 +4458,8 @@ interface ReviewOutputOptions {
4194
4458
  prNumber?: number;
4195
4459
  /** Repository in owner/repo format (required for GitHub comments) */
4196
4460
  repo?: string;
4461
+ /** Evidence coverage report to append to output (optional) */
4462
+ evidenceCoverage?: EvidenceCoverageReport;
4197
4463
  }
4198
4464
  /**
4199
4465
  * A formatted GitHub inline comment ready for posting.
@@ -4333,6 +4599,8 @@ interface PipelineContext {
4333
4599
  checkDepsOutput?: string;
4334
4600
  /** Repository in owner/repo format (for --comment) */
4335
4601
  repo?: string;
4602
+ /** Session slug for evidence checking (optional) */
4603
+ sessionSlug?: string;
4336
4604
  /** Whether the pipeline was skipped by the gate */
4337
4605
  skipped: boolean;
4338
4606
  /** Reason for skipping (when skipped is true) */
@@ -4359,6 +4627,8 @@ interface PipelineContext {
4359
4627
  githubComments?: GitHubInlineComment[];
4360
4628
  /** Process exit code (0 = approve/comment, 1 = request-changes) */
4361
4629
  exitCode: number;
4630
+ /** Evidence coverage report (when session evidence is available) */
4631
+ evidenceCoverage?: EvidenceCoverageReport;
4362
4632
  }
4363
4633
  /**
4364
4634
  * Immutable result returned from `runPipeline()`.
@@ -4384,6 +4654,8 @@ interface ReviewPipelineResult {
4384
4654
  exitCode: number;
4385
4655
  /** Mechanical check result (for reporting) */
4386
4656
  mechanicalResult?: MechanicalCheckResult;
4657
+ /** Evidence coverage report (when session evidence is available) */
4658
+ evidenceCoverage?: EvidenceCoverageReport;
4387
4659
  }
4388
4660
 
4389
4661
  /**
@@ -4419,15 +4691,6 @@ declare function scopeContext(options: ContextScopeOptions): Promise<ContextBund
4419
4691
  * Descriptor for the compliance review agent.
4420
4692
  */
4421
4693
  declare const COMPLIANCE_DESCRIPTOR: ReviewAgentDescriptor;
4422
- /**
4423
- * Run the compliance review agent.
4424
- *
4425
- * Analyzes the context bundle for convention adherence, spec alignment,
4426
- * and documentation completeness. Produces ReviewFinding[] with domain 'compliance'.
4427
- *
4428
- * This function performs static/heuristic analysis. The actual LLM invocation
4429
- * for deeper compliance review happens at the orchestration layer (MCP/CLI).
4430
- */
4431
4694
  declare function runComplianceAgent(bundle: ContextBundle): ReviewFinding[];
4432
4695
 
4433
4696
  declare const BUG_DETECTION_DESCRIPTOR: ReviewAgentDescriptor;
@@ -4581,6 +4844,7 @@ declare function formatFindingBlock(finding: ReviewFinding): string;
4581
4844
  declare function formatTerminalOutput(options: {
4582
4845
  findings: ReviewFinding[];
4583
4846
  strengths: ReviewStrength[];
4847
+ evidenceCoverage?: EvidenceCoverageReport;
4584
4848
  }): string;
4585
4849
 
4586
4850
  /**
@@ -4602,8 +4866,22 @@ declare function formatGitHubComment(finding: ReviewFinding): GitHubInlineCommen
4602
4866
  declare function formatGitHubSummary(options: {
4603
4867
  findings: ReviewFinding[];
4604
4868
  strengths: ReviewStrength[];
4869
+ evidenceCoverage?: EvidenceCoverageReport;
4605
4870
  }): string;
4606
4871
 
4872
+ /**
4873
+ * Check evidence coverage for a set of review findings against session evidence entries.
4874
+ *
4875
+ * For each finding, checks whether any active evidence entry references the same
4876
+ * file:line location. Findings without matching evidence are flagged as uncited.
4877
+ */
4878
+ declare function checkEvidenceCoverage(findings: ReviewFinding[], evidenceEntries: SessionEntry[]): EvidenceCoverageReport;
4879
+ /**
4880
+ * Tag uncited findings by prefixing their title with [UNVERIFIED].
4881
+ * Mutates the findings array in place and returns it.
4882
+ */
4883
+ declare function tagUncitedFindings(findings: ReviewFinding[], evidenceEntries: SessionEntry[]): ReviewFinding[];
4884
+
4607
4885
  /**
4608
4886
  * Options for invoking the pipeline.
4609
4887
  */
@@ -4622,6 +4900,8 @@ interface RunPipelineOptions {
4622
4900
  config?: Record<string, unknown>;
4623
4901
  /** Pre-gathered commit history entries */
4624
4902
  commitHistory?: CommitHistoryEntry[];
4903
+ /** Session slug for loading evidence entries (optional) */
4904
+ sessionSlug?: string;
4625
4905
  }
4626
4906
  /**
4627
4907
  * Run the full 7-phase code review pipeline.
@@ -4670,8 +4950,18 @@ interface SyncOptions {
4670
4950
  /**
4671
4951
  * Scan execution state files and infer status changes for roadmap features.
4672
4952
  * Returns proposed changes without modifying the roadmap.
4953
+ *
4954
+ * Human-always-wins rule (directional): sync never regresses a feature's
4955
+ * status (e.g. done → in-progress) unless forceSync is set. Forward
4956
+ * progression (planned → in-progress → done) is always allowed regardless
4957
+ * of manual edits.
4673
4958
  */
4674
4959
  declare function syncRoadmap(options: SyncOptions): Result<SyncChange[]>;
4960
+ /**
4961
+ * Apply sync changes to a roadmap in-place and update lastSynced.
4962
+ * Shared by manage_roadmap sync action and autoSyncRoadmap.
4963
+ */
4964
+ declare function applySyncChanges(roadmap: Roadmap, changes: SyncChange[]): void;
4675
4965
 
4676
4966
  declare const InteractionTypeSchema: z.ZodEnum<["question", "confirmation", "transition"]>;
4677
4967
  declare const QuestionSchema: z.ZodObject<{
@@ -4680,12 +4970,12 @@ declare const QuestionSchema: z.ZodObject<{
4680
4970
  default: z.ZodOptional<z.ZodString>;
4681
4971
  }, "strip", z.ZodTypeAny, {
4682
4972
  text: string;
4683
- default?: string | undefined;
4684
4973
  options?: string[] | undefined;
4974
+ default?: string | undefined;
4685
4975
  }, {
4686
4976
  text: string;
4687
- default?: string | undefined;
4688
4977
  options?: string[] | undefined;
4978
+ default?: string | undefined;
4689
4979
  }>;
4690
4980
  declare const ConfirmationSchema: z.ZodObject<{
4691
4981
  text: z.ZodString;
@@ -4729,12 +5019,12 @@ declare const EmitInteractionInputSchema: z.ZodObject<{
4729
5019
  default: z.ZodOptional<z.ZodString>;
4730
5020
  }, "strip", z.ZodTypeAny, {
4731
5021
  text: string;
4732
- default?: string | undefined;
4733
5022
  options?: string[] | undefined;
5023
+ default?: string | undefined;
4734
5024
  }, {
4735
5025
  text: string;
4736
- default?: string | undefined;
4737
5026
  options?: string[] | undefined;
5027
+ default?: string | undefined;
4738
5028
  }>>;
4739
5029
  confirmation: z.ZodOptional<z.ZodObject<{
4740
5030
  text: z.ZodString;
@@ -4774,8 +5064,8 @@ declare const EmitInteractionInputSchema: z.ZodObject<{
4774
5064
  stream?: string | undefined;
4775
5065
  question?: {
4776
5066
  text: string;
4777
- default?: string | undefined;
4778
5067
  options?: string[] | undefined;
5068
+ default?: string | undefined;
4779
5069
  } | undefined;
4780
5070
  confirmation?: {
4781
5071
  text: string;
@@ -4795,8 +5085,8 @@ declare const EmitInteractionInputSchema: z.ZodObject<{
4795
5085
  stream?: string | undefined;
4796
5086
  question?: {
4797
5087
  text: string;
4798
- default?: string | undefined;
4799
5088
  options?: string[] | undefined;
5089
+ default?: string | undefined;
4800
5090
  } | undefined;
4801
5091
  confirmation?: {
4802
5092
  text: string;
@@ -4900,6 +5190,52 @@ declare function spawnBackgroundCheck(currentVersion: string): void;
4900
5190
  */
4901
5191
  declare function getUpdateNotification(currentVersion: string): string | null;
4902
5192
 
5193
+ interface ParsedFile {
5194
+ tree: Parser.Tree;
5195
+ language: SupportedLanguage;
5196
+ source: string;
5197
+ filePath: string;
5198
+ }
5199
+ interface ParseFileError {
5200
+ code: 'UNSUPPORTED_LANGUAGE' | 'FILE_NOT_FOUND' | 'PARSE_FAILED' | 'INIT_FAILED';
5201
+ message: string;
5202
+ }
5203
+ /**
5204
+ * Get or create a cached parser for the given language.
5205
+ */
5206
+ declare function getParser(lang: SupportedLanguage): Promise<Parser>;
5207
+ /**
5208
+ * Parse a file and return the tree-sitter tree with metadata.
5209
+ */
5210
+ declare function parseFile(filePath: string): Promise<Result<ParsedFile, ParseFileError>>;
5211
+ /**
5212
+ * Reset the parser cache (for testing).
5213
+ */
5214
+ declare function resetParserCache(): void;
5215
+
5216
+ /**
5217
+ * Get structural outline for a single file.
5218
+ */
5219
+ declare function getOutline(filePath: string): Promise<OutlineResult>;
5220
+ /**
5221
+ * Format an outline result as the tree-style text format shown in the spec.
5222
+ */
5223
+ declare function formatOutline(outline: OutlineResult): string;
5224
+
5225
+ /**
5226
+ * Search for symbols matching a query across files in a directory.
5227
+ */
5228
+ declare function searchSymbols(query: string, directory: string, fileGlob?: string): Promise<SearchResult>;
5229
+
5230
+ /**
5231
+ * Extract a specific symbol's implementation from a file by name.
5232
+ */
5233
+ declare function unfoldSymbol(filePath: string, symbolName: string): Promise<UnfoldResult>;
5234
+ /**
5235
+ * Extract a range of lines from a file.
5236
+ */
5237
+ declare function unfoldRange(filePath: string, startLine: number, endLine: number): Promise<UnfoldResult>;
5238
+
4903
5239
  /**
4904
5240
  * @harness-engineering/core
4905
5241
  *
@@ -4919,6 +5255,6 @@ declare function getUpdateNotification(currentVersion: string): string | null;
4919
5255
  * release. Kept only as a fallback for consumers that cannot resolve the CLI
4920
5256
  * package at runtime.
4921
5257
  */
4922
- declare const VERSION = "0.13.0";
5258
+ declare const VERSION = "0.15.0";
4923
5259
 
4924
- export { AGENT_DESCRIPTORS, ARCHITECTURE_DESCRIPTOR, type AST, type ActionContext, type ActionEvent, type ActionEventHandler, type ActionEventType, type ActionResult, type ActionSink, type ActionTracker, type ActionType, type AgentAction, AgentActionEmitter, type AgentExecutor, type AgentMapLink, type AgentMapSection, type AgentMapValidation, type AgentProcess, type AgentReviewResult, type AgentType, type AgentsMapConfig, ArchBaseline, ArchBaselineManager, ArchConfig, ArchDiffResult, ArchMetricCategory, BUG_DETECTION_DESCRIPTOR, type BaseError, type Baseline, BaselineManager, type BaselinesFile, type BenchmarkResult, type BenchmarkRunOptions, BenchmarkRunner, type BlueprintData, BlueprintGenerator, type BlueprintModule, type BlueprintOptions, type BoundaryDefinition, type BoundaryValidation, type BoundaryValidator, type BoundaryViolation, type BrokenLink, type BudgetedLearningsOptions, type Bundle, type BundleConstraints, BundleConstraintsSchema, BundleSchema, COMPLIANCE_DESCRIPTOR, type ChangeType, type ChangedFile, ChecklistBuilder, type CircularDependency, CircularDepsCollector, type CircularDepsResult, type CleanupFinding, type CodeBlock, type CodeChanges, type CodePattern, type CodeReference, type CodebaseSnapshot, Collector, type CommentedCodeBlock, type CommitFormat, type CommitHistoryEntry, type CommitValidation, ComplexityCollector, type ComplexityConfig, type ComplexityReport, type ComplexityThresholds, type ComplexityViolation, type ConfigError, type ConfigPattern, type Confirmation, ConfirmationSchema, type ConflictReport, ConsoleSink, type ConstraintError, type ConstraintNodeStore, ConstraintRule, type Content, ContentPipeline, type ContextBundle, type ContextError, type ContextFile, type ContextFilterResult, type ContextScopeOptions, type Contributions, ContributionsSchema, type Convention, CouplingCollector, type CouplingConfig, type CouplingReport, type CouplingThresholds, type CouplingViolation, type CoverageOptions, type CoverageReport, type CriticalPathEntry, CriticalPathResolver, type CriticalPathSet, type CustomRule, type CustomRuleResult, DEFAULT_PROVIDER_TIERS, DEFAULT_SECURITY_CONFIG, DEFAULT_STATE, DEFAULT_STREAM_INDEX, type DeadCodeConfig, type DeadCodeReport, type DeadExport, type DeadFile, type DeadInternal, type DeduplicateFindingsOptions, DepDepthCollector, type DependencyEdge, type DependencyGraph, type DependencyValidation, type DependencyViolation, type DetectStaleResult, type DiffInfo, type DocumentationDrift, type DocumentationFile, type DocumentationGap, type DriftConfig, type DriftReport, type EligibilityResult, type EmitInteractionInput, EmitInteractionInputSchema, EntropyAnalyzer, type EntropyConfig, EntropyConfigSchema, type EntropyError, type EntropyReport, ExclusionSet, type ExecutorHealth, type Export, type ExportMap, type FailureEntry, FailureEntrySchema, type FanOutOptions, type FeedbackAgentConfig, type FeedbackConfig, type FeedbackError$1 as FeedbackError, type FileCategory, FileSink, type FindingSeverity, type Fix, type FixConfig, type FixResult, type FixType, ForbiddenImportCollector, type ForbiddenImportViolation, type ForbiddenPattern, type GateConfig, GateConfigSchema, type GateResult, GateResultSchema, type GenerationSection, type GitHubInlineComment, type GraphAdapter, type GraphComplexityData, type GraphCouplingData, type GraphCoverageData, type GraphCriticalPathData, type GraphDependencyData, type GraphHarnessCheckData, type GraphImpactData, type Handoff, HandoffSchema, type HarnessState, HarnessStateSchema, type HealthCheckResult, type Hotspot, type HotspotContext, type Import, type InlineReference, type IntegrityReport, type InteractionType, InteractionTypeSchema, type InternalSymbol, type JSDocComment, type LanguageParser, type Layer, type LayerConfig, LayerViolationCollector, type LearningPattern, type Lockfile, type LockfilePackage, LockfilePackageSchema, LockfileSchema, type LogEntry, type LogFilter, type Manifest, ManifestSchema, type MechanicalCheckOptions, type MechanicalCheckResult, type MechanicalCheckStatus, type MechanicalFinding, type MergeResult, type Metric, MetricResult, type ModelProvider, type ModelTier, type ModelTierConfig, type ModuleDependency, ModuleSizeCollector, NoOpExecutor, NoOpSink, NoOpTelemetryAdapter, type OrphanedDep, type ParseError, type PatternConfig, PatternConfigSchema, type PatternMatch, type PatternReport, type PatternViolation, type PeerReview, type PeerReviewOptions, type PipelineContext, type PipelineFlags, type PipelineOptions, type PipelineResult, type PrMetadata, type PriorReview, ProjectScanner, type ProviderDefaults, type PruneResult, type Question, QuestionSchema, REQUIRED_SECTIONS, type ReachabilityNode, RegressionDetector, type RegressionReport, type RegressionResult, type ReviewAgentDescriptor, type ReviewAssessment, type ReviewChecklist, type ReviewComment, type ReviewContext, type ReviewDomain, type ReviewFinding, type ReviewItem, type ReviewOutputOptions, type ReviewPipelineResult, type ReviewStrength, type RuleOverride, RuleRegistry, type RunCIChecksInput, type RunPipelineOptions, SECURITY_DESCRIPTOR, type SafetyLevel, type ScanResult, type SecurityCategory, type SecurityConfidence, type SecurityConfig, SecurityConfigSchema, type SecurityFinding, type SecurityRule, SecurityScanner, type SecuritySeverity, type SelfReviewConfig, type SessionSummaryData, SharableBoundaryConfigSchema, SharableForbiddenImportSchema, SharableLayerSchema, SharableSecurityRulesSchema, type SizeBudgetConfig, type SizeBudgetReport, type SizeBudgetViolation, type SkillExecutor, type SourceFile, type Span, type SpanEvent, type StaleConstraint, type StepExecutor, type StreamIndex, StreamIndexSchema, type StreamInfo, StreamInfoSchema, type StructureValidation, type Suggestion, type SuggestionReport, type SyncChange, type SyncOptions, type TelemetryAdapter, type TelemetryHealth, ThresholdConfig, type TimeRange, type TokenBudget, type TokenBudgetOverrides, type Trace, type Transition, TransitionSchema, type TurnExecutor, TypeScriptParser, type UnusedImport, type UpdateCheckState, VERSION, type ValidateFindingsOptions, type ValidationError, type WorkflowPhase, addProvenance, analyzeDiff, analyzeLearningPatterns, appendFailure, appendLearning, applyFixes, applyHotspotDowngrade, archiveFailures, archiveLearnings, archiveStream, buildDependencyGraph, buildExclusionSet, buildSnapshot, checkDocCoverage, checkEligibility, classifyFinding, clearFailuresCache, clearLearningsCache, configureFeedback, constraintRuleId, contextBudget, contextFilter, createBoundaryValidator, createCommentedCodeFixes, createError, createFixes, createForbiddenImportFixes, createOrphanedDepFixes, createParseError, createSelfReview, createStream, cryptoRules, deduplicateCleanupFindings, deduplicateFindings, deepMergeConstraints, defaultCollectors, defineLayer, deserializationRules, detectChangeType, detectCircularDeps, detectCircularDepsInFiles, detectComplexityViolations, detectCouplingViolations, detectDeadCode, detectDocDrift, detectPatternViolations, detectSizeBudgetViolations, detectStack, detectStaleConstraints, determineAssessment, diff, executeWorkflow, expressRules, extractBundle, extractMarkdownLinks, extractSections, fanOutReview, formatFindingBlock, formatGitHubComment, formatGitHubSummary, formatTerminalOutput, generateAgentsMap, generateSuggestions, getActionEmitter, getExitCode, getFeedbackConfig, getPhaseCategories, getStreamForBranch, getUpdateNotification, goRules, injectionRules, isSmallSuggestion, isUpdateCheckEnabled, listActiveSessions, listStreams, loadBudgetedLearnings, loadFailures, loadHandoff, loadRelevantLearnings, loadSessionSummary, loadState, loadStreamIndex, logAgentAction, migrateToStreams, networkRules, nodeRules, parseDateFromEntry, parseDiff, parseManifest, parseRoadmap, parseSecurityConfig, parseSize, pathTraversalRules, previewFix, pruneLearnings, reactRules, readCheckState, readLockfile, removeContributions, removeProvenance, requestMultiplePeerReviews, requestPeerReview, resetFeedbackConfig, resolveFileToLayer, resolveModelTier, resolveRuleSeverity, resolveSessionDir, resolveStreamPath, resolveThresholds, runAll, runArchitectureAgent, runBugDetectionAgent, runCIChecks, runComplianceAgent, runMechanicalChecks, runMechanicalGate, runMultiTurnPipeline, runPipeline, runReviewPipeline, runSecurityAgent, saveHandoff, saveState, saveStreamIndex, scopeContext, secretRules, serializeRoadmap, setActiveStream, shouldRunCheck, spawnBackgroundCheck, syncConstraintNodes, syncRoadmap, touchStream, trackAction, updateSessionIndex, validateAgentsMap, validateBoundaries, validateCommitMessage, validateConfig, validateDependencies, validateFileStructure, validateFindings, validateKnowledgeMap, validatePatternConfig, violationId, writeConfig, writeLockfile, writeSessionSummary, xssRules };
5260
+ export { AGENT_DESCRIPTORS, ARCHITECTURE_DESCRIPTOR, type AST, type ActionContext, type ActionEvent, type ActionEventHandler, type ActionEventType, type ActionResult, type ActionSink, type ActionTracker, type ActionType, type AgentAction, AgentActionEmitter, type AgentExecutor, type AgentMapLink, type AgentMapSection, type AgentMapValidation, type AgentProcess, type AgentReviewResult, type AgentType, type AgentsMapConfig, ArchBaseline, ArchBaselineManager, ArchConfig, ArchDiffResult, ArchMetricCategory, BUG_DETECTION_DESCRIPTOR, type BaseError, type Baseline, BaselineManager, type BaselinesFile, type BenchmarkResult, type BenchmarkRunOptions, BenchmarkRunner, type BlueprintData, BlueprintGenerator, type BlueprintModule, type BlueprintOptions, type BoundaryDefinition, type BoundaryValidation, type BoundaryValidator, type BoundaryViolation, type BrokenLink, type BudgetedLearningsOptions, type Bundle, type BundleConstraints, BundleConstraintsSchema, BundleSchema, COMPLIANCE_DESCRIPTOR, type ChangeType, type ChangedFile, ChecklistBuilder, type CircularDependency, CircularDepsCollector, type CircularDepsResult, type CleanupFinding, type CodeBlock, type CodeChanges, type CodePattern, type CodeReference, type CodeSymbol, type CodebaseSnapshot, Collector, type CommentedCodeBlock, type CommitFormat, type CommitHistoryEntry, type CommitValidation, ComplexityCollector, type ComplexityConfig, type ComplexityReport, type ComplexityThresholds, type ComplexityViolation, type ConfigError, type ConfigPattern, type Confirmation, ConfirmationSchema, type ConflictReport, ConsoleSink, type ConstraintError, type ConstraintNodeStore, ConstraintRule, type Content, ContentPipeline, type ContextBundle, type ContextError, type ContextFile, type ContextFilterResult, type ContextScopeOptions, type Contributions, ContributionsSchema, type Convention, CouplingCollector, type CouplingConfig, type CouplingReport, type CouplingThresholds, type CouplingViolation, type CoverageOptions, type CoverageReport, type CriticalPathEntry, CriticalPathResolver, type CriticalPathSet, type CustomRule, type CustomRuleResult, DEFAULT_PROVIDER_TIERS, DEFAULT_SECURITY_CONFIG, DEFAULT_STATE, DEFAULT_STREAM_INDEX, type DeadCodeConfig, type DeadCodeReport, type DeadExport, type DeadFile, type DeadInternal, type DeduplicateFindingsOptions, DepDepthCollector, type DependencyEdge, type DependencyGraph, type DependencyValidation, type DependencyViolation, type DetectStaleResult, type DiffInfo, type DocumentationDrift, type DocumentationFile, type DocumentationGap, type DriftConfig, type DriftReport, EXTENSION_MAP, type EligibilityResult, type EmitEventInput, type EmitEventOptions, type EmitEventResult, type EmitInteractionInput, EmitInteractionInputSchema, EntropyAnalyzer, type EntropyConfig, EntropyConfigSchema, type EntropyError, type EntropyReport, type EventType, type EvidenceCoverageReport, ExclusionSet, type ExecutorHealth, type Export, type ExportMap, type FailureEntry, FailureEntrySchema, type FanOutOptions, type FeedbackAgentConfig, type FeedbackConfig, type FeedbackError$1 as FeedbackError, type FileCategory, FileSink, type FindingSeverity, type Fix, type FixConfig, type FixResult, type FixType, ForbiddenImportCollector, type ForbiddenImportViolation, type ForbiddenPattern, type GateConfig, GateConfigSchema, type GateResult, GateResultSchema, type GenerationSection, type GitHubInlineComment, type GraphAdapter, type GraphComplexityData, type GraphCouplingData, type GraphCoverageData, type GraphCriticalPathData, type GraphDependencyData, type GraphHarnessCheckData, type GraphImpactData, type Handoff, HandoffSchema, type HarnessState, HarnessStateSchema, type HealthCheckResult, type Hotspot, type HotspotContext, type Import, type InlineReference, type IntegrityReport, type InteractionType, InteractionTypeSchema, type InternalSymbol, type JSDocComment, type LanguageParser, type Layer, type LayerConfig, LayerViolationCollector, type LearningPattern, type LearningsFrontmatter, type LearningsIndexEntry, type LoadEventsOptions, type Lockfile, type LockfilePackage, LockfilePackageSchema, LockfileSchema, type LogEntry, type LogFilter, type Manifest, ManifestSchema, type MechanicalCheckOptions, type MechanicalCheckResult, type MechanicalCheckStatus, type MechanicalFinding, type MergeResult, type Metric, MetricResult, type ModelProvider, type ModelTier, type ModelTierConfig, type ModuleDependency, ModuleSizeCollector, NoOpExecutor, NoOpSink, NoOpTelemetryAdapter, type OrphanedDep, type OutlineResult, type ParseError, type ParsedFile, type PatternConfig, PatternConfigSchema, type PatternMatch, type PatternReport, type PatternViolation, type PeerReview, type PeerReviewOptions, type PipelineContext, type PipelineFlags, type PipelineOptions, type PipelineResult, type PrMetadata, type PriorReview, ProjectScanner, type PromoteResult, type ProviderDefaults, type PruneResult, type Question, QuestionSchema, REQUIRED_SECTIONS, type ReachabilityNode, RegressionDetector, type RegressionReport, type RegressionResult, type ReviewAgentDescriptor, type ReviewAssessment, type ReviewChecklist, type ReviewComment, type ReviewContext, type ReviewDomain, type ReviewFinding, type ReviewItem, type ReviewOutputOptions, type ReviewPipelineResult, type ReviewStrength, type RuleOverride, RuleRegistry, type RunCIChecksInput, type RunPipelineOptions, SECURITY_DESCRIPTOR, type SafetyLevel, type ScanResult, type SearchMatch, type SearchResult, type SecurityCategory, type SecurityConfidence, type SecurityConfig, SecurityConfigSchema, type SecurityFinding, type SecurityRule, SecurityScanner, type SecuritySeverity, type SelfReviewConfig, type SessionSummaryData, SharableBoundaryConfigSchema, SharableForbiddenImportSchema, SharableLayerSchema, SharableSecurityRulesSchema, type SizeBudgetConfig, type SizeBudgetReport, type SizeBudgetViolation, type SkillEvent, SkillEventSchema, type SkillExecutor, type SourceFile, type Span, type SpanEvent, type StaleConstraint, type StepExecutor, type StreamIndex, StreamIndexSchema, type StreamInfo, StreamInfoSchema, type StructureValidation, type Suggestion, type SuggestionReport, type SupportedLanguage, type SymbolKind, type SyncChange, type SyncOptions, type TelemetryAdapter, type TelemetryHealth, ThresholdConfig, type TimeRange, type TokenBudget, type TokenBudgetOverrides, type Trace, type Transition, TransitionSchema, type TurnExecutor, TypeScriptParser, type UnfoldResult, type UnusedImport, type UpdateCheckState, VERSION, type ValidateFindingsOptions, type ValidationError, type WorkflowPhase, addProvenance, agentConfigRules, analyzeDiff, analyzeLearningPatterns, appendFailure, appendLearning, appendSessionEntry, applyFixes, applyHotspotDowngrade, applySyncChanges, archiveFailures, archiveLearnings, archiveSession, archiveStream, buildDependencyGraph, buildExclusionSet, buildSnapshot, checkDocCoverage, checkEligibility, checkEvidenceCoverage, classifyFinding, clearEventHashCache, clearFailuresCache, clearLearningsCache, configureFeedback, constraintRuleId, contextBudget, contextFilter, countLearningEntries, createBoundaryValidator, createCommentedCodeFixes, createError, createFixes, createForbiddenImportFixes, createOrphanedDepFixes, createParseError, createSelfReview, createStream, cryptoRules, deduplicateCleanupFindings, deduplicateFindings, deepMergeConstraints, defaultCollectors, defineLayer, deserializationRules, detectChangeType, detectCircularDeps, detectCircularDepsInFiles, detectComplexityViolations, detectCouplingViolations, detectDeadCode, detectDocDrift, detectLanguage, detectPatternViolations, detectSizeBudgetViolations, detectStack, detectStaleConstraints, determineAssessment, diff, emitEvent, executeWorkflow, expressRules, extractBundle, extractIndexEntry, extractMarkdownLinks, extractSections, fanOutReview, formatEventTimeline, formatFindingBlock, formatGitHubComment, formatGitHubSummary, formatOutline, formatTerminalOutput, generateAgentsMap, generateSuggestions, getActionEmitter, getExitCode, getFeedbackConfig, getOutline, getParser, getPhaseCategories, getStreamForBranch, getUpdateNotification, goRules, injectionRules, isSmallSuggestion, isUpdateCheckEnabled, listActiveSessions, listStreams, loadBudgetedLearnings, loadEvents, loadFailures, loadHandoff, loadIndexEntries, loadRelevantLearnings, loadSessionSummary, loadState, loadStreamIndex, logAgentAction, mcpRules, migrateToStreams, networkRules, nodeRules, parseDateFromEntry, parseDiff, parseFile, parseFrontmatter, parseManifest, parseRoadmap, parseSecurityConfig, parseSize, pathTraversalRules, previewFix, promoteSessionLearnings, pruneLearnings, reactRules, readCheckState, readLockfile, readSessionSection, readSessionSections, removeContributions, removeProvenance, requestMultiplePeerReviews, requestPeerReview, resetFeedbackConfig, resetParserCache, resolveFileToLayer, resolveModelTier, resolveRuleSeverity, resolveSessionDir, resolveStreamPath, resolveThresholds, runAll, runArchitectureAgent, runBugDetectionAgent, runCIChecks, runComplianceAgent, runMechanicalChecks, runMechanicalGate, runMultiTurnPipeline, runPipeline, runReviewPipeline, runSecurityAgent, saveHandoff, saveState, saveStreamIndex, scopeContext, searchSymbols, secretRules, serializeRoadmap, setActiveStream, shouldRunCheck, spawnBackgroundCheck, syncConstraintNodes, syncRoadmap, tagUncitedFindings, touchStream, trackAction, unfoldRange, unfoldSymbol, updateSessionEntryStatus, updateSessionIndex, validateAgentsMap, validateBoundaries, validateCommitMessage, validateConfig, validateDependencies, validateFileStructure, validateFindings, validateKnowledgeMap, validatePatternConfig, violationId, writeConfig, writeLockfile, writeSessionSummary, xssRules };