@ruso-0/nreki 11.0.2 → 11.2.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/CHANGELOG.md +130 -0
- package/dist/bm25-engine.d.ts +102 -0
- package/dist/bm25-engine.d.ts.map +1 -0
- package/dist/bm25-engine.js +246 -0
- package/dist/bm25-engine.js.map +1 -0
- package/dist/compressor-foveal.d.ts.map +1 -1
- package/dist/compressor-foveal.js +27 -0
- package/dist/compressor-foveal.js.map +1 -1
- package/dist/engine-types.d.ts +8 -0
- package/dist/engine-types.d.ts.map +1 -1
- package/dist/engine.d.ts +15 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +60 -3
- package/dist/engine.js.map +1 -1
- package/dist/handlers/navigate.d.ts +15 -0
- package/dist/handlers/navigate.d.ts.map +1 -1
- package/dist/handlers/navigate.js +100 -0
- package/dist/handlers/navigate.js.map +1 -1
- package/dist/hybrid-engine.d.ts +92 -0
- package/dist/hybrid-engine.d.ts.map +1 -0
- package/dist/hybrid-engine.js +197 -0
- package/dist/hybrid-engine.js.map +1 -0
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +2 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +6 -2
- package/dist/router.js.map +1 -1
- package/dist/utils/token-estimator.d.ts +4 -4
- package/dist/utils/token-estimator.d.ts.map +1 -1
- package/dist/utils/token-estimator.js +34 -6
- package/dist/utils/token-estimator.js.map +1 -1
- package/package.json +1 -1
- package/src/.nreki/repo-map.json +1 -0
- package/src/bm25-engine.ts +295 -0
- package/src/compressor-foveal.ts +28 -0
- package/src/engine-types.ts +8 -0
- package/src/engine.ts +106 -44
- package/src/handlers/navigate.ts +130 -8
- package/src/hybrid-engine.ts +282 -0
- package/src/index.ts +11 -10
- package/src/router.ts +4 -2
- package/src/utils/token-estimator.ts +43 -15
- package/templates/AGENTS.md +25 -46
- package/templates/CLAUDE.md +31 -46
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,136 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NREKI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [11.2.0] - 2026-05-18
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Hybrid Runtime Integration (Phase 5.5.2)**: New `nreki_navigate
|
|
9
|
+
action="hybrid_search"` exposes the Type Ledger semantic + BM25
|
|
10
|
+
lexical fusion (RRF) documented in the Phase 5 paper to the
|
|
11
|
+
production MCP runtime. Previously only reachable via eval scripts.
|
|
12
|
+
- **`src/bm25-engine.ts`**: BM25 lexical retrieval migrated from
|
|
13
|
+
`scripts/eval-phase5/runners/bm25-runner.ts` to production runtime.
|
|
14
|
+
Standard Okapi (k1=1.5, b=0.75); code-aware tokenization (PascalCase
|
|
15
|
+
/ snake_case / camelCase decomposition, 2-char minimum). Lazy
|
|
16
|
+
in-memory index built on first `search()`; invalidated on
|
|
17
|
+
`indexFile()` / `indexDirectory()` mutations.
|
|
18
|
+
- **`src/hybrid-engine.ts`**: Hybrid RRF engine. Calls NREKI semantic
|
|
19
|
+
search + BM25 in parallel, fuses file rankings via Reciprocal Rank
|
|
20
|
+
Fusion (k=60), deterministic tie-break by `localeCompare`. Returns
|
|
21
|
+
unified results with `source: "nreki" | "bm25" | "both"` origin
|
|
22
|
+
tracking.
|
|
23
|
+
- **Foveal compression on BM25-only files (Reto 5)**: Files surfaced
|
|
24
|
+
exclusively by BM25 (≥100 lines) receive `tfcCompress` with a focus
|
|
25
|
+
symbol extracted from the query. Aligns with the
|
|
26
|
+
`compressor-foveal.ts:109` small-file bypass threshold to avoid
|
|
27
|
+
no-op compressor calls.
|
|
28
|
+
- **`NrekiEngine.getHybridEngine()` + `invalidateHybridIndex()`**:
|
|
29
|
+
lazy-construction of the hybrid stack; BM25 cache auto-invalidates
|
|
30
|
+
on `indexFile()` and `indexDirectory()`.
|
|
31
|
+
- **`BM25EngineOptions.excludedDirs`**: configurable directory exclusion
|
|
32
|
+
for projects with non-standard build/fixture roots. Default excludes
|
|
33
|
+
`node_modules`, `.git`, `.nreki`, `dist`, `build`, `coverage`,
|
|
34
|
+
`.next`, `__pycache__`, `corpus`, plus any dot-prefixed directory.
|
|
35
|
+
- **`scripts/benchmark-hybrid-smoke.ts`**: reproducible dogfood smoke
|
|
36
|
+
bench (`action="search"` vs `action="hybrid_search"`) on NREKI's own
|
|
37
|
+
`src/`. Run with `npx tsx scripts/benchmark-hybrid-smoke.ts`.
|
|
38
|
+
- **`docs/sprint-6.5-empirical.md`**: honest Sprint 6.5 empirical
|
|
39
|
+
findings + N=99 PolyBench re-bench deferral disclosure.
|
|
40
|
+
- **28 new tests**: `tests/bm25-engine.test.ts` (16) +
|
|
41
|
+
`tests/hybrid-engine.test.ts` (12). Full suite: 1384 pass.
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
- **`nreki_navigate` action enum**: `hybrid_search` added to
|
|
45
|
+
`src/index.ts` MCP schema and `src/router.ts` switch dispatch.
|
|
46
|
+
Existing actions (`search`, `fast_grep`, `definition`, `references`,
|
|
47
|
+
`outline`, `map`, `prepare_refactor`, `orphan_oracle`, `type_shape`,
|
|
48
|
+
`type_graph`) preserved unchanged — backward compatible.
|
|
49
|
+
|
|
50
|
+
### Internal
|
|
51
|
+
- Hybrid retrieval previously available only in eval scripts
|
|
52
|
+
(`scripts/eval-phase5/runners/hybrid-runner.ts`). The eval runner
|
|
53
|
+
remains unchanged for paper reproducibility; production now uses
|
|
54
|
+
the migrated `src/hybrid-engine.ts`.
|
|
55
|
+
- "El mejor que se quede" architectural decision: hybrid USES the
|
|
56
|
+
underlying retrievers, does NOT replace them. Users still pick
|
|
57
|
+
`search` for pure topological queries (lower tokens) and
|
|
58
|
+
`hybrid_search` for accuracy-critical retrieval (≈3-5x tokens, per
|
|
59
|
+
Sprint 6.4 paper; dogfood smoke shows up to ~3x on tiny corpora).
|
|
60
|
+
|
|
61
|
+
### Empirical findings (honest)
|
|
62
|
+
- **Dogfood smoke (73 files, 8 queries)**: `search` recall 60% vs
|
|
63
|
+
`hybrid_search` recall 60% (Δ=0pp). Hybrid pays 207% token overhead
|
|
64
|
+
with no recall gain on this micro-corpus. This is expected — the
|
|
65
|
+
Sprint 6.4 paper's +15pp FHR gain was measured on N=99 diverse
|
|
66
|
+
external repos, not on a single internal codebase.
|
|
67
|
+
- **Sprint 6.5 N=99 PolyBench re-benchmark: DEFERRED**. The directive
|
|
68
|
+
required this empirical step; this commit ships without it. Reason:
|
|
69
|
+
the eval orchestrator (`scripts/eval-phase5/orchestrate.ts`)
|
|
70
|
+
constructs its own runners and would need re-plumbing to invoke the
|
|
71
|
+
migrated `HybridEngine`; the bench itself is multi-hour. Tracked as
|
|
72
|
+
Sprint 6.5.1 in `docs/sprint-6.5-empirical.md`.
|
|
73
|
+
- **Token cost is real, not noise**. BM25 returns file-level payloads;
|
|
74
|
+
even with foveal compression on BM25-only files ≥100 lines, hybrid
|
|
75
|
+
hits cost more than NREKI-only AST chunks.
|
|
76
|
+
|
|
77
|
+
### Wall-clock honesty
|
|
78
|
+
- Original Pipipi estimate: 4 hours. Actual: ~3 hours implementation
|
|
79
|
+
+ path-rooting bug discovery + dot-dir corpus walk bug discovery +
|
|
80
|
+
bench-corpus hang debug. Closer to the directive's "1-2 días"
|
|
81
|
+
honest estimate than the 4-hour Pipipi figure.
|
|
82
|
+
|
|
83
|
+
## [11.1.0] - 2026-05-18
|
|
84
|
+
|
|
85
|
+
### Added
|
|
86
|
+
- **Real BPE tokenizer**: tiktoken cl100k_base integration via
|
|
87
|
+
`src/utils/token-estimator.ts`. Replaces chars/3.5 heuristic for
|
|
88
|
+
token cost estimation. Heuristic preserved as fallback (zero-downtime).
|
|
89
|
+
Empirical verification: 72-file benchmark 276,516 raw → 60,732
|
|
90
|
+
compressed = 78% savings sostained con real BPE tokenizer.
|
|
91
|
+
- **Defense-in-depth conditional compression**: compressor-level
|
|
92
|
+
bypass for files <100 lines OR <1024 bytes (`src/compressor-foveal.ts`
|
|
93
|
+
:102-123). Complements existing handler-level bypass
|
|
94
|
+
(`src/handlers/code/read.ts:84`). Zero overhead instances confirmed
|
|
95
|
+
empirically across all file-size buckets (72 files tested).
|
|
96
|
+
- **`bySize` SessionReport field**: per-file-size tracking buckets
|
|
97
|
+
(<100L, 100-299L, 300-999L, ≥1000L) in `engine.getSessionReport()`
|
|
98
|
+
output. Enables empirical analysis of compression effectiveness by
|
|
99
|
+
file size class.
|
|
100
|
+
- **Empirical benchmark scripts**: `scripts/benchmark-token-economics.ts`
|
|
101
|
+
+ `scripts/simulate-claude-session.ts` for ongoing verification.
|
|
102
|
+
- **Token economics empirical verify documentation**:
|
|
103
|
+
`docs/token-economics-empirical-verify.md` documents Sprint Empirical
|
|
104
|
+
Verify findings honest including methodology caveats.
|
|
105
|
+
|
|
106
|
+
### Changed
|
|
107
|
+
- **Template adelgazamiento**:
|
|
108
|
+
`templates/CLAUDE.md` 3,965 → 1,670 bytes (495 BPE tokens, ~58% reduction)
|
|
109
|
+
`templates/AGENTS.md` 3,885 → 1,253 bytes (372 BPE tokens, ~68% reduction)
|
|
110
|
+
Combined 867 BPE tokens (~61% reduction, ~8% over Apr 2026 target
|
|
111
|
+
of 800 combined tokens, honest disclosure of remaining gap).
|
|
112
|
+
- **Token cost estimation accuracy**: real BPE tokenizer measurement
|
|
113
|
+
replaces direccional-but-imprecise chars/3.5 heuristic. Heuristic
|
|
114
|
+
validated within ~10% magnitude accuracy of real BPE empírico.
|
|
115
|
+
|
|
116
|
+
### Internal
|
|
117
|
+
- Sprint Empirical Token Economics Verify executed pre-Phase 5.5.1:
|
|
118
|
+
- 72-file per-bucket benchmark
|
|
119
|
+
- 45-file session simulation
|
|
120
|
+
- Zero overhead instances confirmed empírico
|
|
121
|
+
- Claim "29 calls vs 5-7 without TFC-Pro" marked UNVERIFIABLE
|
|
122
|
+
(no measurement code exists)
|
|
123
|
+
- Reto 8 Causal Program Slicing Phase 0 design committed
|
|
124
|
+
(`docs/adrs/reto-8-causal-slicing/`, strategic pause Nova Phase 8.2-8.5
|
|
125
|
+
prerequisite for Reto 7 Compiler-Hijacking)
|
|
126
|
+
|
|
127
|
+
### Deferred
|
|
128
|
+
- **Phase 5.5.2**: Hybrid runtime integration (Reto 5).
|
|
129
|
+
Migrate `scripts/eval-phase5/runners/hybrid-runner.ts` →
|
|
130
|
+
`src/hybrid-engine.ts`. Foveal compression on BM25-fused files.
|
|
131
|
+
- **Phase 5.5.3**: Comparative head-to-head benchmarks
|
|
132
|
+
(NREKI vs Corsa, Zilliz Claude Context, codebase-memory-mcp, GitNexus).
|
|
133
|
+
Currently disclosed as research gap.
|
|
134
|
+
|
|
5
135
|
## [11.0.2] - 2026-05-16
|
|
6
136
|
|
|
7
137
|
Mini-sprint closure for v11.0.1 cabos sueltos. No new features; only
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/bm25-engine.ts — Production BM25 lexical retrieval engine.
|
|
3
|
+
*
|
|
4
|
+
* Phase 5.5.2 migration: ported from
|
|
5
|
+
* scripts/eval-phase5/runners/bm25-runner.ts
|
|
6
|
+
* to production runtime so nreki_navigate action="hybrid_search" can
|
|
7
|
+
* fuse Type Ledger semantic + BM25 lexical via RRF.
|
|
8
|
+
*
|
|
9
|
+
* Standard Okapi BM25 (Robertson/Walker 1994, k1=1.5, b=0.75):
|
|
10
|
+
* score(D, Q) = Σ IDF(qi) · (f(qi,D)·(k1+1)) /
|
|
11
|
+
* (f(qi,D) + k1·(1 - b + b·|D|/avgdl))
|
|
12
|
+
* IDF(qi) = ln((N - n(qi) + 0.5) / (n(qi) + 0.5) + 1)
|
|
13
|
+
*
|
|
14
|
+
* Tokenization: code-aware (PascalCase + snake_case + camelCase split,
|
|
15
|
+
* 2-char minimum, no stopword removal — IDF handles common terms).
|
|
16
|
+
*
|
|
17
|
+
* Production differences vs. eval runner:
|
|
18
|
+
* - Index built lazily on first search() call, cached in-memory
|
|
19
|
+
* (eval rebuilds per-task).
|
|
20
|
+
* - File walk uses NREKI's project root + DEFAULT_EXTENSIONS via
|
|
21
|
+
* constructor params (eval hard-codes .ts/.tsx/.js/.jsx).
|
|
22
|
+
* - No anti-tests filter by default (eval excludes for ground-truth
|
|
23
|
+
* alignment; production users may legitimately search tests).
|
|
24
|
+
* - `invalidate()` method for chokidar wiring (call on file change).
|
|
25
|
+
*/
|
|
26
|
+
export declare const BM25_K1 = 1.5;
|
|
27
|
+
export declare const BM25_B = 0.75;
|
|
28
|
+
export interface BM25DocStats {
|
|
29
|
+
path: string;
|
|
30
|
+
term_freq: Map<string, number>;
|
|
31
|
+
length: number;
|
|
32
|
+
}
|
|
33
|
+
export interface BM25Index {
|
|
34
|
+
docs: BM25DocStats[];
|
|
35
|
+
avg_doc_length: number;
|
|
36
|
+
doc_freq: Map<string, number>;
|
|
37
|
+
total_docs: number;
|
|
38
|
+
}
|
|
39
|
+
export interface BM25SearchResult {
|
|
40
|
+
/** Workspace-relative, forward-slash path. */
|
|
41
|
+
path: string;
|
|
42
|
+
/** Raw BM25 score (not normalized; higher = more relevant). */
|
|
43
|
+
score: number;
|
|
44
|
+
}
|
|
45
|
+
export interface BM25EngineOptions {
|
|
46
|
+
/** Override default source extensions (e.g. for narrow language scope). */
|
|
47
|
+
extensions?: ReadonlySet<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Override default excluded directory names. Use this when your
|
|
50
|
+
* project has a custom build/fixture root (e.g. ".turbo", "vendor").
|
|
51
|
+
* Pattern is exact-name match on directory basename.
|
|
52
|
+
*/
|
|
53
|
+
excludedDirs?: ReadonlySet<string>;
|
|
54
|
+
/** k1 saturation parameter. Default 1.5 (Robertson/Walker canonical). */
|
|
55
|
+
k1?: number;
|
|
56
|
+
/** b length-normalization parameter. Default 0.75. */
|
|
57
|
+
b?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Decompose an identifier-shaped token into subtokens. Returns the
|
|
61
|
+
* original lowercase token plus PascalCase / snake_case parts.
|
|
62
|
+
* Returns [] for tokens shorter than 2 chars.
|
|
63
|
+
*/
|
|
64
|
+
export declare function splitIdentifier(token: string): string[];
|
|
65
|
+
/** Tokenize text for BM25 indexing. See module doc for design notes. */
|
|
66
|
+
export declare function tokenizeForBM25(text: string): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Score a doc against query terms. Repeated query terms accumulate
|
|
69
|
+
* (so ["foo","foo","bar"] weighs foo twice).
|
|
70
|
+
*/
|
|
71
|
+
export declare function scoreBM25(doc: BM25DocStats, queryTerms: string[], index: BM25Index, k1?: number, b?: number): number;
|
|
72
|
+
/** Tokenize a free-text query the same way docs are tokenized. */
|
|
73
|
+
export declare function tokenizeQuery(query: string): string[];
|
|
74
|
+
/**
|
|
75
|
+
* Production BM25 retrieval engine. Lazy-builds an in-memory file-level
|
|
76
|
+
* index on first search(); caches until invalidate() is called.
|
|
77
|
+
*/
|
|
78
|
+
export declare class BM25Engine {
|
|
79
|
+
private readonly projectRoot;
|
|
80
|
+
private indexCache;
|
|
81
|
+
private readonly extensions;
|
|
82
|
+
private readonly excludedDirs;
|
|
83
|
+
private readonly k1;
|
|
84
|
+
private readonly b;
|
|
85
|
+
constructor(projectRoot: string, opts?: BM25EngineOptions);
|
|
86
|
+
/** Drop the cached index. Call when project files change on disk. */
|
|
87
|
+
invalidate(): void;
|
|
88
|
+
/** True if an index has been built and cached. */
|
|
89
|
+
hasIndex(): boolean;
|
|
90
|
+
/** Number of files in the cached index (0 if not built). */
|
|
91
|
+
indexedFileCount(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Top-K BM25 retrieval. Returns ranked file-level scores
|
|
94
|
+
* (highest first). Empty array if query has no indexable tokens
|
|
95
|
+
* or no doc matches.
|
|
96
|
+
*/
|
|
97
|
+
search(query: string, topK?: number): Promise<BM25SearchResult[]>;
|
|
98
|
+
private ensureIndex;
|
|
99
|
+
private buildIndex;
|
|
100
|
+
private walkSourceFiles;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=bm25-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25-engine.d.ts","sourceRoot":"","sources":["../src/bm25-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,eAAO,MAAM,OAAO,MAAM,CAAC;AAC3B,eAAO,MAAM,MAAM,OAAO,CAAC;AAsB3B,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,2EAA2E;IAC3E,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sDAAsD;IACtD,CAAC,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAwBvD;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUtD;AAWD;;;GAGG;AACH,wBAAgB,SAAS,CACrB,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,KAAK,EAAE,SAAS,EAChB,EAAE,GAAE,MAAgB,EACpB,CAAC,GAAE,MAAe,GACnB,MAAM,CAgBR;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD;AAED;;;GAGG;AACH,qBAAa,UAAU;IAOP,OAAO,CAAC,QAAQ,CAAC,WAAW;IANxC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;gBAEE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB;IAO9E,qEAAqE;IACrE,UAAU,IAAI,IAAI;IAIlB,kDAAkD;IAClD,QAAQ,IAAI,OAAO;IAInB,4DAA4D;IAC5D,gBAAgB,IAAI,MAAM;IAI1B;;;;OAIG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAiB7D,WAAW;YAMX,UAAU;YA8BV,eAAe;CA8BhC"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/bm25-engine.ts — Production BM25 lexical retrieval engine.
|
|
3
|
+
*
|
|
4
|
+
* Phase 5.5.2 migration: ported from
|
|
5
|
+
* scripts/eval-phase5/runners/bm25-runner.ts
|
|
6
|
+
* to production runtime so nreki_navigate action="hybrid_search" can
|
|
7
|
+
* fuse Type Ledger semantic + BM25 lexical via RRF.
|
|
8
|
+
*
|
|
9
|
+
* Standard Okapi BM25 (Robertson/Walker 1994, k1=1.5, b=0.75):
|
|
10
|
+
* score(D, Q) = Σ IDF(qi) · (f(qi,D)·(k1+1)) /
|
|
11
|
+
* (f(qi,D) + k1·(1 - b + b·|D|/avgdl))
|
|
12
|
+
* IDF(qi) = ln((N - n(qi) + 0.5) / (n(qi) + 0.5) + 1)
|
|
13
|
+
*
|
|
14
|
+
* Tokenization: code-aware (PascalCase + snake_case + camelCase split,
|
|
15
|
+
* 2-char minimum, no stopword removal — IDF handles common terms).
|
|
16
|
+
*
|
|
17
|
+
* Production differences vs. eval runner:
|
|
18
|
+
* - Index built lazily on first search() call, cached in-memory
|
|
19
|
+
* (eval rebuilds per-task).
|
|
20
|
+
* - File walk uses NREKI's project root + DEFAULT_EXTENSIONS via
|
|
21
|
+
* constructor params (eval hard-codes .ts/.tsx/.js/.jsx).
|
|
22
|
+
* - No anti-tests filter by default (eval excludes for ground-truth
|
|
23
|
+
* alignment; production users may legitimately search tests).
|
|
24
|
+
* - `invalidate()` method for chokidar wiring (call on file change).
|
|
25
|
+
*/
|
|
26
|
+
import * as fs from "node:fs/promises";
|
|
27
|
+
import * as path from "node:path";
|
|
28
|
+
export const BM25_K1 = 1.5;
|
|
29
|
+
export const BM25_B = 0.75;
|
|
30
|
+
const CAMEL_SEP = String.fromCharCode(124);
|
|
31
|
+
/** Extensions BM25 indexes by default. Mirrors NREKI engine DEFAULT_EXTENSIONS. */
|
|
32
|
+
const DEFAULT_SOURCE_EXTENSIONS = new Set([
|
|
33
|
+
".ts", ".tsx", ".mts", ".cts",
|
|
34
|
+
".js", ".jsx", ".mjs", ".cjs",
|
|
35
|
+
".py", ".go",
|
|
36
|
+
".kt", ".kts",
|
|
37
|
+
".java",
|
|
38
|
+
".cpp", ".cc", ".cxx", ".hpp", ".hh", ".hxx",
|
|
39
|
+
".c", ".h",
|
|
40
|
+
]);
|
|
41
|
+
/** Directory names excluded during the walk. Mirrors NREKI engine DEFAULT_IGNORE
|
|
42
|
+
* plus benchmark/fixture roots that bloat lexical signal without user value. */
|
|
43
|
+
const DEFAULT_EXCLUDED_DIRS = new Set([
|
|
44
|
+
"node_modules", ".git", ".nreki", "dist", "build", "coverage",
|
|
45
|
+
".next", "__pycache__", "corpus",
|
|
46
|
+
]);
|
|
47
|
+
/**
|
|
48
|
+
* Decompose an identifier-shaped token into subtokens. Returns the
|
|
49
|
+
* original lowercase token plus PascalCase / snake_case parts.
|
|
50
|
+
* Returns [] for tokens shorter than 2 chars.
|
|
51
|
+
*/
|
|
52
|
+
export function splitIdentifier(token) {
|
|
53
|
+
const lower = token.toLowerCase();
|
|
54
|
+
if (lower.length < 2)
|
|
55
|
+
return [];
|
|
56
|
+
const parts = new Set();
|
|
57
|
+
parts.add(lower);
|
|
58
|
+
for (const piece of lower.split("_")) {
|
|
59
|
+
if (piece.length >= 2)
|
|
60
|
+
parts.add(piece);
|
|
61
|
+
}
|
|
62
|
+
// PascalCase / camelCase split:
|
|
63
|
+
// "SuggestModel" -> ["Suggest", "Model"]
|
|
64
|
+
// "HTTPServer" -> ["HTTP", "Server"]
|
|
65
|
+
// "parseURLPath" -> ["parse", "URL", "Path"]
|
|
66
|
+
const camelBoundary = token
|
|
67
|
+
.replace(/([a-z0-9])([A-Z])/g, `$1${CAMEL_SEP}$2`)
|
|
68
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, `$1${CAMEL_SEP}$2`)
|
|
69
|
+
.split(CAMEL_SEP);
|
|
70
|
+
for (const piece of camelBoundary) {
|
|
71
|
+
const p = piece.toLowerCase();
|
|
72
|
+
if (p.length >= 2)
|
|
73
|
+
parts.add(p);
|
|
74
|
+
}
|
|
75
|
+
return [...parts];
|
|
76
|
+
}
|
|
77
|
+
/** Tokenize text for BM25 indexing. See module doc for design notes. */
|
|
78
|
+
export function tokenizeForBM25(text) {
|
|
79
|
+
const out = [];
|
|
80
|
+
const raw = text.split(/[^a-zA-Z0-9_]+/);
|
|
81
|
+
for (const tok of raw) {
|
|
82
|
+
if (tok.length < 2)
|
|
83
|
+
continue;
|
|
84
|
+
for (const sub of splitIdentifier(tok)) {
|
|
85
|
+
out.push(sub);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
function buildDocStats(rel, content) {
|
|
91
|
+
const tokens = tokenizeForBM25(content);
|
|
92
|
+
const tf = new Map();
|
|
93
|
+
for (const t of tokens) {
|
|
94
|
+
tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
95
|
+
}
|
|
96
|
+
return { path: rel, term_freq: tf, length: tokens.length };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Score a doc against query terms. Repeated query terms accumulate
|
|
100
|
+
* (so ["foo","foo","bar"] weighs foo twice).
|
|
101
|
+
*/
|
|
102
|
+
export function scoreBM25(doc, queryTerms, index, k1 = BM25_K1, b = BM25_B) {
|
|
103
|
+
if (index.total_docs === 0 || index.avg_doc_length === 0)
|
|
104
|
+
return 0;
|
|
105
|
+
let score = 0;
|
|
106
|
+
const avgdl = index.avg_doc_length;
|
|
107
|
+
const N = index.total_docs;
|
|
108
|
+
for (const qi of queryTerms) {
|
|
109
|
+
const tf = doc.term_freq.get(qi);
|
|
110
|
+
if (tf === undefined)
|
|
111
|
+
continue;
|
|
112
|
+
const df = index.doc_freq.get(qi) ?? 0;
|
|
113
|
+
const idf = Math.log((N - df + 0.5) / (df + 0.5) + 1);
|
|
114
|
+
const denom = tf + k1 * (1 - b + b * (doc.length / avgdl));
|
|
115
|
+
const tfPart = (tf * (k1 + 1)) / denom;
|
|
116
|
+
score += idf * tfPart;
|
|
117
|
+
}
|
|
118
|
+
return score;
|
|
119
|
+
}
|
|
120
|
+
/** Tokenize a free-text query the same way docs are tokenized. */
|
|
121
|
+
export function tokenizeQuery(query) {
|
|
122
|
+
return tokenizeForBM25(query);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Production BM25 retrieval engine. Lazy-builds an in-memory file-level
|
|
126
|
+
* index on first search(); caches until invalidate() is called.
|
|
127
|
+
*/
|
|
128
|
+
export class BM25Engine {
|
|
129
|
+
projectRoot;
|
|
130
|
+
indexCache = null;
|
|
131
|
+
extensions;
|
|
132
|
+
excludedDirs;
|
|
133
|
+
k1;
|
|
134
|
+
b;
|
|
135
|
+
constructor(projectRoot, opts = {}) {
|
|
136
|
+
this.projectRoot = projectRoot;
|
|
137
|
+
this.extensions = opts.extensions ?? DEFAULT_SOURCE_EXTENSIONS;
|
|
138
|
+
this.excludedDirs = opts.excludedDirs ?? DEFAULT_EXCLUDED_DIRS;
|
|
139
|
+
this.k1 = opts.k1 ?? BM25_K1;
|
|
140
|
+
this.b = opts.b ?? BM25_B;
|
|
141
|
+
}
|
|
142
|
+
/** Drop the cached index. Call when project files change on disk. */
|
|
143
|
+
invalidate() {
|
|
144
|
+
this.indexCache = null;
|
|
145
|
+
}
|
|
146
|
+
/** True if an index has been built and cached. */
|
|
147
|
+
hasIndex() {
|
|
148
|
+
return this.indexCache !== null;
|
|
149
|
+
}
|
|
150
|
+
/** Number of files in the cached index (0 if not built). */
|
|
151
|
+
indexedFileCount() {
|
|
152
|
+
return this.indexCache?.total_docs ?? 0;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Top-K BM25 retrieval. Returns ranked file-level scores
|
|
156
|
+
* (highest first). Empty array if query has no indexable tokens
|
|
157
|
+
* or no doc matches.
|
|
158
|
+
*/
|
|
159
|
+
async search(query, topK = 10) {
|
|
160
|
+
const index = await this.ensureIndex();
|
|
161
|
+
const queryTerms = tokenizeQuery(query);
|
|
162
|
+
if (queryTerms.length === 0)
|
|
163
|
+
return [];
|
|
164
|
+
const scored = [];
|
|
165
|
+
for (const doc of index.docs) {
|
|
166
|
+
const s = scoreBM25(doc, queryTerms, index, this.k1, this.b);
|
|
167
|
+
if (s > 0)
|
|
168
|
+
scored.push([doc.path, s]);
|
|
169
|
+
}
|
|
170
|
+
scored.sort((a, b2) => {
|
|
171
|
+
const d = b2[1] - a[1];
|
|
172
|
+
return d !== 0 ? d : a[0].localeCompare(b2[0]);
|
|
173
|
+
});
|
|
174
|
+
return scored.slice(0, topK).map(([p, score]) => ({ path: p, score }));
|
|
175
|
+
}
|
|
176
|
+
async ensureIndex() {
|
|
177
|
+
if (this.indexCache)
|
|
178
|
+
return this.indexCache;
|
|
179
|
+
this.indexCache = await this.buildIndex();
|
|
180
|
+
return this.indexCache;
|
|
181
|
+
}
|
|
182
|
+
async buildIndex() {
|
|
183
|
+
const files = await this.walkSourceFiles();
|
|
184
|
+
const docs = [];
|
|
185
|
+
const docFreq = new Map();
|
|
186
|
+
let totalLength = 0;
|
|
187
|
+
for (const rel of files) {
|
|
188
|
+
const abs = path.join(this.projectRoot, rel);
|
|
189
|
+
let content;
|
|
190
|
+
try {
|
|
191
|
+
content = await fs.readFile(abs, "utf-8");
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
const stats = buildDocStats(rel, content);
|
|
197
|
+
docs.push(stats);
|
|
198
|
+
totalLength += stats.length;
|
|
199
|
+
for (const term of stats.term_freq.keys()) {
|
|
200
|
+
docFreq.set(term, (docFreq.get(term) ?? 0) + 1);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
docs,
|
|
205
|
+
avg_doc_length: docs.length > 0 ? totalLength / docs.length : 0,
|
|
206
|
+
doc_freq: docFreq,
|
|
207
|
+
total_docs: docs.length,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async walkSourceFiles() {
|
|
211
|
+
const out = [];
|
|
212
|
+
const walk = async (dir) => {
|
|
213
|
+
let entries;
|
|
214
|
+
try {
|
|
215
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
for (const e of entries) {
|
|
221
|
+
const abs = path.join(dir, e.name);
|
|
222
|
+
if (e.isDirectory()) {
|
|
223
|
+
// Skip explicit excludes + ANY dot-prefixed directory.
|
|
224
|
+
// Dot dirs catch .git, .next, .nreki, .venv-*, .cache,
|
|
225
|
+
// and any tool-specific scratch space without enumeration.
|
|
226
|
+
if (this.excludedDirs.has(e.name))
|
|
227
|
+
continue;
|
|
228
|
+
if (e.name.startsWith("."))
|
|
229
|
+
continue;
|
|
230
|
+
await walk(abs);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (!e.isFile())
|
|
234
|
+
continue;
|
|
235
|
+
if (!this.extensions.has(path.extname(e.name).toLowerCase()))
|
|
236
|
+
continue;
|
|
237
|
+
const rel = path.relative(this.projectRoot, abs).split(path.sep).join("/");
|
|
238
|
+
out.push(rel);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
await walk(this.projectRoot);
|
|
242
|
+
out.sort();
|
|
243
|
+
return out;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=bm25-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25-engine.js","sourceRoot":"","sources":["../src/bm25-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compressor-foveal.d.ts","sourceRoot":"","sources":["../src/compressor-foveal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgB/C,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QAExB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACL;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAsB9F,MAAM,WAAW,mBAAmB;IAChC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"compressor-foveal.d.ts","sourceRoot":"","sources":["../src/compressor-foveal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgB/C,MAAM,WAAW,SAAS;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QACH,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QAExB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC9B,CAAC;CACL;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAsB9F,MAAM,WAAW,mBAAmB;IAChC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,gBAAgB,CAAC,CA0T3B"}
|
|
@@ -60,6 +60,33 @@ function extractCausalRefs(code) {
|
|
|
60
60
|
}
|
|
61
61
|
export async function tfcCompress(filePath, content, focusInput, engine, crossFileOpts) {
|
|
62
62
|
const originalSize = content.length;
|
|
63
|
+
// Phase 5.5.1 defense-in-depth: small-file bypass at compressor level.
|
|
64
|
+
// Handler-level bypass (read.ts:84) handles the common path, but this
|
|
65
|
+
// protects against direct tfcCompress calls with tiny files where
|
|
66
|
+
// compression header overhead would exceed savings.
|
|
67
|
+
const lineCount = content.split("\n").length;
|
|
68
|
+
if (lineCount < 100 || originalSize < 1024) {
|
|
69
|
+
return {
|
|
70
|
+
kind: "success",
|
|
71
|
+
data: {
|
|
72
|
+
compressed: content,
|
|
73
|
+
originalSize,
|
|
74
|
+
compressedSize: originalSize,
|
|
75
|
+
ratio: 0,
|
|
76
|
+
tokensSaved: 0,
|
|
77
|
+
zones: {
|
|
78
|
+
foveas: focusInput.split(",").map(s => s.trim()).filter(Boolean),
|
|
79
|
+
localParafovea: 0,
|
|
80
|
+
externalParafovea: 0,
|
|
81
|
+
upstream: 0,
|
|
82
|
+
darkMatterLines: 0,
|
|
83
|
+
crossFileUpstream: 0,
|
|
84
|
+
crossFileDownstream: 0,
|
|
85
|
+
crossFileTruncated: 0,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
63
90
|
// O(1) parse cache by content hash
|
|
64
91
|
const contentHash = crypto.createHash("sha256").update(content).digest("hex");
|
|
65
92
|
let parseResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compressor-foveal.js","sourceRoot":"","sources":["../src/compressor-foveal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compressor-foveal.js","sourceRoot":"","sources":["../src/compressor-foveal.ts"],"names":[],"mappings":"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"}
|
package/dist/engine-types.d.ts
CHANGED
|
@@ -71,6 +71,14 @@ export interface SessionReport {
|
|
|
71
71
|
originalTokens: number;
|
|
72
72
|
ratio: number;
|
|
73
73
|
}>;
|
|
74
|
+
/** Per-file-size breakdown (Phase 5.5.1 empirical verify). */
|
|
75
|
+
bySize: Array<{
|
|
76
|
+
bucket: string;
|
|
77
|
+
count: number;
|
|
78
|
+
tokensSaved: number;
|
|
79
|
+
originalTokens: number;
|
|
80
|
+
ratio: number;
|
|
81
|
+
}>;
|
|
74
82
|
/** Number of auto-context injections in this session */
|
|
75
83
|
autoContextInjections: number;
|
|
76
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-types.d.ts","sourceRoot":"","sources":["../src/engine-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;QAC3C,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACL;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC1B,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,UAAU,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,CAAC;CACjC"}
|
|
1
|
+
{"version":3,"file":"engine-types.d.ts","sourceRoot":"","sources":["../src/engine-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;QAC3C,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACL;AAED,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC1B,mCAAmC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,UAAU,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,8DAA8D;IAC9D,MAAM,EAAE,KAAK,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,CAAC;CACjC"}
|