wavescope-mcp 1.0.2 → 1.0.4
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/README.md +32 -20
- package/dist/file-cache.d.ts +46 -0
- package/dist/file-cache.d.ts.map +1 -0
- package/dist/file-cache.js +106 -0
- package/dist/file-cache.js.map +1 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -39
- package/dist/index.js.map +1 -1
- package/dist/project.d.ts +16 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +49 -6
- package/dist/project.js.map +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -26,23 +26,46 @@ entire files into context.
|
|
|
26
26
|
|
|
27
27
|
## Installation
|
|
28
28
|
|
|
29
|
+
### From npm (recommended)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install -g wavescope-mcp
|
|
33
|
+
# or locally in a project:
|
|
34
|
+
npm install wavescope-mcp
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### From source
|
|
38
|
+
|
|
29
39
|
```bash
|
|
30
|
-
|
|
31
|
-
|
|
40
|
+
git clone <repo-url>
|
|
41
|
+
cd wavescope-mcp
|
|
42
|
+
pnpm install # auto-builds dist/ via prepare script
|
|
32
43
|
```
|
|
33
44
|
|
|
34
45
|
## Usage
|
|
35
46
|
|
|
36
47
|
### Running as MCP server
|
|
37
48
|
|
|
38
|
-
|
|
49
|
+
After global install, just use the binary name:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"mcpServers": {
|
|
54
|
+
"wavescope": {
|
|
55
|
+
"command": "wavescope-mcp"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
With a local install, use `npx`:
|
|
39
62
|
|
|
40
63
|
```json
|
|
41
64
|
{
|
|
42
65
|
"mcpServers": {
|
|
43
66
|
"wavescope": {
|
|
44
|
-
"command": "
|
|
45
|
-
"args": ["
|
|
67
|
+
"command": "npx",
|
|
68
|
+
"args": ["wavescope-mcp"]
|
|
46
69
|
}
|
|
47
70
|
}
|
|
48
71
|
}
|
|
@@ -91,27 +114,16 @@ Compressed view of a region using specified scale peaks.
|
|
|
91
114
|
## Development
|
|
92
115
|
|
|
93
116
|
```bash
|
|
94
|
-
pnpm install # Install dependencies
|
|
95
|
-
pnpm
|
|
96
|
-
pnpm dev # Run with tsx
|
|
117
|
+
pnpm install # Install dependencies + auto-build dist/
|
|
118
|
+
pnpm dev # Run with tsx (live TypeScript)
|
|
97
119
|
pnpm test # Watch mode
|
|
98
120
|
pnpm test:run # Run tests once
|
|
99
121
|
pnpm test:coverage # Run with coverage
|
|
100
122
|
pnpm typecheck # Type check only
|
|
101
123
|
```
|
|
102
124
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
src/
|
|
107
|
-
├── index.ts # MCP server entry, tool handlers
|
|
108
|
-
├── signal.ts # Per-line structural importance signal
|
|
109
|
-
├── wavelet.ts # Ricker CWT + peak detection
|
|
110
|
-
├── context.ts # FileContext: query_wavelet_context, get_important_positions, etc.
|
|
111
|
-
├── project.ts # ProjectIndex: multi-file discovery and indexing
|
|
112
|
-
├── language.ts # Language-specific keyword weights
|
|
113
|
-
└── *.test.ts # Tests
|
|
114
|
-
```
|
|
125
|
+
`pnpm install` runs the `prepare` script, which builds `dist/` automatically.
|
|
126
|
+
For a manual build, run `pnpm build`.
|
|
115
127
|
|
|
116
128
|
## Supported languages
|
|
117
129
|
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { FileContext } from "./context.js";
|
|
2
|
+
/**
|
|
3
|
+
* Shared file-level cache with mtime-based validity and TTL-based expiry.
|
|
4
|
+
*
|
|
5
|
+
* Unlike a pure TTL cache, mtime is the authoritative freshness check:
|
|
6
|
+
* - If mtime matches, the entry is always valid (timestamp bumped on hit
|
|
7
|
+
* to prevent unnecessary re-read of unchanged hot files).
|
|
8
|
+
* - TTL is only used by the periodic `evictExpired()` sweep to free memory
|
|
9
|
+
* for idle entries.
|
|
10
|
+
* - LRU eviction kicks in when the entry cap is exceeded.
|
|
11
|
+
*/
|
|
12
|
+
export declare class FileCache {
|
|
13
|
+
readonly ttl: number;
|
|
14
|
+
readonly maxEntries: number;
|
|
15
|
+
private cache;
|
|
16
|
+
constructor(ttl?: number, maxEntries?: number);
|
|
17
|
+
private norm;
|
|
18
|
+
/**
|
|
19
|
+
* Return a {@link FileContext} for `filePath`, reusing the cached
|
|
20
|
+
* instance when the file has not been modified on disk.
|
|
21
|
+
*
|
|
22
|
+
* Timestamps are bumped on every hit so that hot files never trigger
|
|
23
|
+
* unnecessary re-read / re-computation.
|
|
24
|
+
*/
|
|
25
|
+
get(filePath: string): Promise<FileContext>;
|
|
26
|
+
/**
|
|
27
|
+
* Store a pre-constructed {@link FileContext} in the cache.
|
|
28
|
+
* Used by {@link ProjectIndex} to populate the shared cache during
|
|
29
|
+
* file discovery so that later file-level queries hit the same instance.
|
|
30
|
+
*/
|
|
31
|
+
put(filePath: string, ctx: FileContext, mtimeMs: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Remove all entries whose timestamp is older than TTL.
|
|
34
|
+
* Returns the count of evicted entries.
|
|
35
|
+
*/
|
|
36
|
+
evictExpired(now?: number): number;
|
|
37
|
+
/**
|
|
38
|
+
* Evict the oldest `fraction` of entries (0-1).
|
|
39
|
+
* Returns the count of evicted entries.
|
|
40
|
+
*/
|
|
41
|
+
evictFraction(fraction: number): number;
|
|
42
|
+
clear(): void;
|
|
43
|
+
get size(): number;
|
|
44
|
+
private evictLRU;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=file-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../src/file-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAQ3C;;;;;;;;;GASG;AACH,qBAAa,SAAS;IAIlB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM;IAJ7B,OAAO,CAAC,KAAK,CAAiC;gBAGnC,GAAG,GAAE,MAAe,EACpB,UAAU,GAAE,MAAY;IAGnC,OAAO,CAAC,IAAI;IAIZ;;;;;;OAMG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBjD;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ9D;;;OAGG;IACH,YAAY,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM;IAW9C;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAevC,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,QAAQ;CASjB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { readFile, stat } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { FileContext } from "./context.js";
|
|
4
|
+
/**
|
|
5
|
+
* Shared file-level cache with mtime-based validity and TTL-based expiry.
|
|
6
|
+
*
|
|
7
|
+
* Unlike a pure TTL cache, mtime is the authoritative freshness check:
|
|
8
|
+
* - If mtime matches, the entry is always valid (timestamp bumped on hit
|
|
9
|
+
* to prevent unnecessary re-read of unchanged hot files).
|
|
10
|
+
* - TTL is only used by the periodic `evictExpired()` sweep to free memory
|
|
11
|
+
* for idle entries.
|
|
12
|
+
* - LRU eviction kicks in when the entry cap is exceeded.
|
|
13
|
+
*/
|
|
14
|
+
export class FileCache {
|
|
15
|
+
ttl;
|
|
16
|
+
maxEntries;
|
|
17
|
+
cache = new Map();
|
|
18
|
+
constructor(ttl = 60_000, maxEntries = 200) {
|
|
19
|
+
this.ttl = ttl;
|
|
20
|
+
this.maxEntries = maxEntries;
|
|
21
|
+
}
|
|
22
|
+
norm(path) {
|
|
23
|
+
return resolve(path);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Return a {@link FileContext} for `filePath`, reusing the cached
|
|
27
|
+
* instance when the file has not been modified on disk.
|
|
28
|
+
*
|
|
29
|
+
* Timestamps are bumped on every hit so that hot files never trigger
|
|
30
|
+
* unnecessary re-read / re-computation.
|
|
31
|
+
*/
|
|
32
|
+
async get(filePath) {
|
|
33
|
+
const key = this.norm(filePath);
|
|
34
|
+
const st = await stat(key);
|
|
35
|
+
const mtimeMs = st.mtimeMs;
|
|
36
|
+
const cached = this.cache.get(key);
|
|
37
|
+
if (cached && cached.mtimeMs === mtimeMs) {
|
|
38
|
+
cached.ts = Date.now();
|
|
39
|
+
return cached.ctx;
|
|
40
|
+
}
|
|
41
|
+
const content = await readFile(key, "utf-8");
|
|
42
|
+
const ctx = new FileContext(key, content);
|
|
43
|
+
this.cache.set(key, { ctx, ts: Date.now(), mtimeMs });
|
|
44
|
+
this.evictLRU();
|
|
45
|
+
return ctx;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Store a pre-constructed {@link FileContext} in the cache.
|
|
49
|
+
* Used by {@link ProjectIndex} to populate the shared cache during
|
|
50
|
+
* file discovery so that later file-level queries hit the same instance.
|
|
51
|
+
*/
|
|
52
|
+
put(filePath, ctx, mtimeMs) {
|
|
53
|
+
const key = this.norm(filePath);
|
|
54
|
+
const existing = this.cache.get(key);
|
|
55
|
+
if (existing && existing.mtimeMs === mtimeMs)
|
|
56
|
+
return;
|
|
57
|
+
this.cache.set(key, { ctx, ts: Date.now(), mtimeMs });
|
|
58
|
+
this.evictLRU();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Remove all entries whose timestamp is older than TTL.
|
|
62
|
+
* Returns the count of evicted entries.
|
|
63
|
+
*/
|
|
64
|
+
evictExpired(now = Date.now()) {
|
|
65
|
+
let count = 0;
|
|
66
|
+
for (const [key, entry] of this.cache) {
|
|
67
|
+
if (now - entry.ts >= this.ttl) {
|
|
68
|
+
this.cache.delete(key);
|
|
69
|
+
count++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return count;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Evict the oldest `fraction` of entries (0-1).
|
|
76
|
+
* Returns the count of evicted entries.
|
|
77
|
+
*/
|
|
78
|
+
evictFraction(fraction) {
|
|
79
|
+
if (this.cache.size === 0)
|
|
80
|
+
return 0;
|
|
81
|
+
const capped = Math.min(Math.max(fraction, 0), 1);
|
|
82
|
+
const toEvict = Math.max(1, Math.floor(this.cache.size * capped));
|
|
83
|
+
const entries = [...this.cache.entries()].sort((a, b) => a[1].ts - b[1].ts);
|
|
84
|
+
let count = 0;
|
|
85
|
+
for (let i = 0; i < toEvict && i < entries.length; i++) {
|
|
86
|
+
this.cache.delete(entries[i][0]);
|
|
87
|
+
count++;
|
|
88
|
+
}
|
|
89
|
+
return count;
|
|
90
|
+
}
|
|
91
|
+
clear() {
|
|
92
|
+
this.cache.clear();
|
|
93
|
+
}
|
|
94
|
+
get size() {
|
|
95
|
+
return this.cache.size;
|
|
96
|
+
}
|
|
97
|
+
evictLRU() {
|
|
98
|
+
if (this.cache.size > this.maxEntries) {
|
|
99
|
+
const entries = [...this.cache.entries()].sort((a, b) => a[1].ts - b[1].ts);
|
|
100
|
+
const toDelete = entries.slice(0, this.cache.size - this.maxEntries);
|
|
101
|
+
for (const [key] of toDelete)
|
|
102
|
+
this.cache.delete(key);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=file-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache.js","sourceRoot":"","sources":["../src/file-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
declare function getFileContext(filePath: string): Promise<FileContext>;
|
|
4
|
-
export declare const __test_getFileContext: typeof getFileContext;
|
|
2
|
+
export declare const __test_getFileContext: (filePath: string) => Promise<import("./context.js").FileContext>;
|
|
5
3
|
export declare const __test_clearCache: () => void;
|
|
6
4
|
export declare const __test_cacheSize: () => number;
|
|
7
|
-
export declare const __test_MAX_CACHE_ENTRIES
|
|
8
|
-
export {};
|
|
5
|
+
export declare const __test_MAX_CACHE_ENTRIES: number;
|
|
9
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAuSA,eAAO,MAAM,qBAAqB,aAxRA,MAAM,gDAwRW,CAAC;AACpD,eAAO,MAAM,iBAAiB,YAA0B,CAAC;AACzD,eAAO,MAAM,gBAAgB,cAAuB,CAAC;AACrD,eAAO,MAAM,wBAAwB,QAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,41 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
-
import { readFile, stat } from "node:fs/promises";
|
|
5
4
|
import { resolve } from "node:path";
|
|
6
5
|
import { z } from "zod";
|
|
7
|
-
import {
|
|
8
|
-
import { ProjectIndex } from "./project.js";
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
function norm(path) {
|
|
13
|
-
return resolve(path);
|
|
14
|
-
}
|
|
15
|
-
function evictCache() {
|
|
16
|
-
if (fileCache.size > MAX_CACHE_ENTRIES) {
|
|
17
|
-
const entries = [...fileCache.entries()].sort((a, b) => a[1].ts - b[1].ts);
|
|
18
|
-
const toDelete = entries.slice(0, fileCache.size - MAX_CACHE_ENTRIES);
|
|
19
|
-
for (const [key] of toDelete)
|
|
20
|
-
fileCache.delete(key);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async function getFileContext(filePath) {
|
|
24
|
-
const key = norm(filePath);
|
|
25
|
-
const st = await stat(key);
|
|
26
|
-
const mtimeMs = st.mtimeMs;
|
|
27
|
-
const cached = fileCache.get(key);
|
|
28
|
-
if (cached &&
|
|
29
|
-
Date.now() - cached.ts < CACHE_TTL &&
|
|
30
|
-
cached.mtimeMs === mtimeMs) {
|
|
31
|
-
return cached.ctx;
|
|
32
|
-
}
|
|
33
|
-
const content = await readFile(key, "utf-8");
|
|
34
|
-
const ctx = new FileContext(key, content);
|
|
35
|
-
fileCache.set(key, { ctx, ts: Date.now(), mtimeMs });
|
|
36
|
-
evictCache();
|
|
37
|
-
return ctx;
|
|
38
|
-
}
|
|
6
|
+
import { FileCache } from "./file-cache.js";
|
|
7
|
+
import { ProjectIndex, evictExpiredProjects, evictFractionProjects, } from "./project.js";
|
|
8
|
+
// ─── Shared file cache ────────────────────────────────────────
|
|
9
|
+
const fileCache = new FileCache(60_000, 200);
|
|
10
|
+
const getFileContext = (filePath) => fileCache.get(filePath);
|
|
39
11
|
// ─── Curated error helpers ───────────────────────────────────
|
|
40
12
|
class ToolError extends Error {
|
|
41
13
|
}
|
|
@@ -112,7 +84,7 @@ server.registerTool("get_important_positions", {
|
|
|
112
84
|
}
|
|
113
85
|
let positions;
|
|
114
86
|
if (directory) {
|
|
115
|
-
const project = await ProjectIndex.load(
|
|
87
|
+
const project = await ProjectIndex.load(resolve(directory), fileCache);
|
|
116
88
|
positions = project.getImportantPositions(min_coefficient, limit);
|
|
117
89
|
}
|
|
118
90
|
else {
|
|
@@ -184,12 +156,44 @@ async function main() {
|
|
|
184
156
|
const transport = new StdioServerTransport();
|
|
185
157
|
await server.connect(transport);
|
|
186
158
|
console.error("WaveScope MCP server running on stdio");
|
|
159
|
+
// ─── Periodic cache cleanup (every 30s) ──────────────────────
|
|
160
|
+
const CLEANUP_INTERVAL_MS = 30_000;
|
|
161
|
+
const cleanupTimer = setInterval(() => {
|
|
162
|
+
const now = Date.now();
|
|
163
|
+
const fileEvicted = fileCache.evictExpired(now);
|
|
164
|
+
const projectEvicted = evictExpiredProjects(now);
|
|
165
|
+
if (fileEvicted > 0 || projectEvicted > 0) {
|
|
166
|
+
console.error(`[Cache] Evicted ${fileEvicted} file(s), ${projectEvicted} project(s)`);
|
|
167
|
+
}
|
|
168
|
+
}, CLEANUP_INTERVAL_MS);
|
|
169
|
+
cleanupTimer.unref();
|
|
170
|
+
// ─── Memory watchdog (every 60s) ─────────────────────────────
|
|
171
|
+
const HEAP_WARNING_MB = 400;
|
|
172
|
+
const HEAP_CRITICAL_MB = 800;
|
|
173
|
+
const WATCHDOG_INTERVAL_MS = 60_000;
|
|
174
|
+
const memoryTimer = setInterval(() => {
|
|
175
|
+
const heapMB = process.memoryUsage().heapUsed / 1024 / 1024;
|
|
176
|
+
if (heapMB > HEAP_CRITICAL_MB) {
|
|
177
|
+
console.error(`[Memory] Heap ${Math.round(heapMB)}MB > ${HEAP_CRITICAL_MB}MB critical, force-evicting 75%`);
|
|
178
|
+
fileCache.evictFraction(0.75);
|
|
179
|
+
evictFractionProjects(0.75);
|
|
180
|
+
}
|
|
181
|
+
else if (heapMB > HEAP_WARNING_MB) {
|
|
182
|
+
console.error(`[Memory] Heap ${Math.round(heapMB)}MB > ${HEAP_WARNING_MB}MB warning, force-evicting 25%`);
|
|
183
|
+
fileCache.evictFraction(0.25);
|
|
184
|
+
evictFractionProjects(0.25);
|
|
185
|
+
}
|
|
186
|
+
}, WATCHDOG_INTERVAL_MS);
|
|
187
|
+
memoryTimer.unref();
|
|
188
|
+
// ─── Graceful shutdown ────────────────────────────────────────
|
|
187
189
|
let shuttingDown = false;
|
|
188
|
-
const shutdown = async () => {
|
|
190
|
+
const shutdown = async (reason) => {
|
|
189
191
|
if (shuttingDown)
|
|
190
192
|
return;
|
|
191
193
|
shuttingDown = true;
|
|
192
|
-
console.error(
|
|
194
|
+
console.error(`Shutting down${reason ? ` (${reason})` : ""}...`);
|
|
195
|
+
clearInterval(cleanupTimer);
|
|
196
|
+
clearInterval(memoryTimer);
|
|
193
197
|
// Wait up to 5s for in-flight handlers to complete
|
|
194
198
|
const deadline = Date.now() + 5000;
|
|
195
199
|
while (inFlight > 0 && Date.now() < deadline) {
|
|
@@ -198,8 +202,10 @@ async function main() {
|
|
|
198
202
|
await server.close();
|
|
199
203
|
process.exit(0);
|
|
200
204
|
};
|
|
201
|
-
process.on("SIGINT", shutdown);
|
|
202
|
-
process.on("SIGTERM", shutdown);
|
|
205
|
+
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
206
|
+
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
207
|
+
process.stdin.on("end", () => shutdown("stdin EOF"));
|
|
208
|
+
process.stdin.on("close", () => shutdown("stdin closed"));
|
|
203
209
|
}
|
|
204
210
|
// Skip the server bootstrap when imported by tests.
|
|
205
211
|
if (!process.env.VITEST) {
|
|
@@ -212,5 +218,5 @@ if (!process.env.VITEST) {
|
|
|
212
218
|
export const __test_getFileContext = getFileContext;
|
|
213
219
|
export const __test_clearCache = () => fileCache.clear();
|
|
214
220
|
export const __test_cacheSize = () => fileCache.size;
|
|
215
|
-
export const __test_MAX_CACHE_ENTRIES =
|
|
221
|
+
export const __test_MAX_CACHE_ENTRIES = fileCache.maxEntries;
|
|
216
222
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/project.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FileContext, ImportantPosition } from "./context.js";
|
|
2
|
+
import { FileCache } from "./file-cache.js";
|
|
2
3
|
export declare const MAX_FILE_BYTES = 2000000;
|
|
3
4
|
export declare const MAX_FILES = 5000;
|
|
4
5
|
export interface ProjectFile {
|
|
@@ -6,6 +7,20 @@ export interface ProjectFile {
|
|
|
6
7
|
path: string;
|
|
7
8
|
context: FileContext;
|
|
8
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Remove project cache entries whose timestamp is older than TTL.
|
|
12
|
+
* Exported for the periodic cleanup sweep in the server entry point.
|
|
13
|
+
*/
|
|
14
|
+
export declare function evictExpiredProjects(now?: number): number;
|
|
15
|
+
/**
|
|
16
|
+
* Force-evict the oldest `fraction` of project cache entries.
|
|
17
|
+
* Exported for the memory watchdog in the server entry point.
|
|
18
|
+
*/
|
|
19
|
+
export declare function evictFractionProjects(fraction: number): number;
|
|
20
|
+
/** Exported for tests */
|
|
21
|
+
export declare function __test_clearProjectCache(): void;
|
|
22
|
+
/** Exported for tests */
|
|
23
|
+
export declare function __test_projectCacheSize(): number;
|
|
9
24
|
/**
|
|
10
25
|
* Project-level wavelet index across multiple files.
|
|
11
26
|
*
|
|
@@ -19,7 +34,7 @@ export declare class ProjectIndex {
|
|
|
19
34
|
readonly truncated: boolean;
|
|
20
35
|
private fileMap;
|
|
21
36
|
private constructor();
|
|
22
|
-
static load(root: string): Promise<ProjectIndex>;
|
|
37
|
+
static load(root: string, fileCache?: FileCache): Promise<ProjectIndex>;
|
|
23
38
|
getFile(relPath: string): FileContext | null;
|
|
24
39
|
listFiles(): string[];
|
|
25
40
|
/**
|
package/dist/project.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAwC5C,eAAO,MAAM,cAAc,UAAY,CAAC;AACxC,eAAO,MAAM,SAAS,OAAQ,CAAC;AAG/B,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;CACtB;AAyBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAmB,GAAG,MAAM,CASrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa9D;AAED,yBAAyB;AACzB,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,yBAAyB;AACzB,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAID;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO;WAYM,IAAI,CACf,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,YAAY,CAAC;IA2BxB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI5C,SAAS,IAAI,MAAM,EAAE;IAIrB;;;;;;OAMG;IACH,qBAAqB,CACnB,cAAc,GAAE,MAAY,EAC5B,KAAK,GAAE,MAAW,GACjB,iBAAiB,EAAE;CAyBvB"}
|
package/dist/project.js
CHANGED
|
@@ -52,6 +52,45 @@ function evictProjectCache() {
|
|
|
52
52
|
projectCache.delete(key);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Remove project cache entries whose timestamp is older than TTL.
|
|
57
|
+
* Exported for the periodic cleanup sweep in the server entry point.
|
|
58
|
+
*/
|
|
59
|
+
export function evictExpiredProjects(now = Date.now()) {
|
|
60
|
+
let count = 0;
|
|
61
|
+
for (const [key, entry] of projectCache) {
|
|
62
|
+
if (now - entry.timestamp >= CACHE_TTL_MS) {
|
|
63
|
+
projectCache.delete(key);
|
|
64
|
+
count++;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return count;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Force-evict the oldest `fraction` of project cache entries.
|
|
71
|
+
* Exported for the memory watchdog in the server entry point.
|
|
72
|
+
*/
|
|
73
|
+
export function evictFractionProjects(fraction) {
|
|
74
|
+
if (projectCache.size === 0)
|
|
75
|
+
return 0;
|
|
76
|
+
const capped = Math.min(Math.max(fraction, 0), 1);
|
|
77
|
+
const toEvict = Math.max(1, Math.floor(projectCache.size * capped));
|
|
78
|
+
const entries = [...projectCache.entries()].sort((a, b) => a[1].timestamp - b[1].timestamp);
|
|
79
|
+
let count = 0;
|
|
80
|
+
for (let i = 0; i < toEvict && i < entries.length; i++) {
|
|
81
|
+
projectCache.delete(entries[i][0]);
|
|
82
|
+
count++;
|
|
83
|
+
}
|
|
84
|
+
return count;
|
|
85
|
+
}
|
|
86
|
+
/** Exported for tests */
|
|
87
|
+
export function __test_clearProjectCache() {
|
|
88
|
+
projectCache.clear();
|
|
89
|
+
}
|
|
90
|
+
/** Exported for tests */
|
|
91
|
+
export function __test_projectCacheSize() {
|
|
92
|
+
return projectCache.size;
|
|
93
|
+
}
|
|
55
94
|
// ─── ProjectIndex ───────────────────────────────────────────
|
|
56
95
|
/**
|
|
57
96
|
* Project-level wavelet index across multiple files.
|
|
@@ -74,7 +113,7 @@ export class ProjectIndex {
|
|
|
74
113
|
return [relPath, f.context];
|
|
75
114
|
}));
|
|
76
115
|
}
|
|
77
|
-
static async load(root) {
|
|
116
|
+
static async load(root, fileCache) {
|
|
78
117
|
const resolved = resolve(root);
|
|
79
118
|
const cached = projectCache.get(resolved);
|
|
80
119
|
if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
|
|
@@ -85,7 +124,7 @@ export class ProjectIndex {
|
|
|
85
124
|
return pending;
|
|
86
125
|
const loadPromise = (async () => {
|
|
87
126
|
try {
|
|
88
|
-
const { files, truncated } = await discoverFiles(resolved);
|
|
127
|
+
const { files, truncated } = await discoverFiles(resolved, fileCache);
|
|
89
128
|
const project = new ProjectIndex(resolved, files, truncated);
|
|
90
129
|
evictProjectCache();
|
|
91
130
|
projectCache.set(resolved, { project, timestamp: Date.now() });
|
|
@@ -220,7 +259,7 @@ async function isBinary(fullPath) {
|
|
|
220
259
|
await fh?.close();
|
|
221
260
|
}
|
|
222
261
|
}
|
|
223
|
-
async function discoverFiles(root) {
|
|
262
|
+
async function discoverFiles(root, fileCache) {
|
|
224
263
|
const results = [];
|
|
225
264
|
const visitedRealpaths = new Set();
|
|
226
265
|
let rootRealpath;
|
|
@@ -309,7 +348,7 @@ async function discoverFiles(root) {
|
|
|
309
348
|
truncated = true;
|
|
310
349
|
return;
|
|
311
350
|
}
|
|
312
|
-
pending.push({ fullPath, size: entryStat.size });
|
|
351
|
+
pending.push({ fullPath, size: entryStat.size, mtimeMs: entryStat.mtimeMs });
|
|
313
352
|
}
|
|
314
353
|
}
|
|
315
354
|
}
|
|
@@ -320,7 +359,7 @@ async function discoverFiles(root) {
|
|
|
320
359
|
async function worker() {
|
|
321
360
|
while (cursor < pending.length) {
|
|
322
361
|
const idx = cursor++;
|
|
323
|
-
const { fullPath } = pending[idx];
|
|
362
|
+
const { fullPath, mtimeMs } = pending[idx];
|
|
324
363
|
if (await isBinary(fullPath))
|
|
325
364
|
continue;
|
|
326
365
|
let content;
|
|
@@ -330,11 +369,15 @@ async function discoverFiles(root) {
|
|
|
330
369
|
catch {
|
|
331
370
|
continue;
|
|
332
371
|
}
|
|
372
|
+
const ctx = new FileContext(basename(fullPath), content);
|
|
333
373
|
results.push({
|
|
334
374
|
filename: basename(fullPath),
|
|
335
375
|
path: fullPath,
|
|
336
|
-
context:
|
|
376
|
+
context: ctx,
|
|
337
377
|
});
|
|
378
|
+
if (fileCache) {
|
|
379
|
+
fileCache.put(fullPath, ctx, mtimeMs);
|
|
380
|
+
}
|
|
338
381
|
}
|
|
339
382
|
}
|
|
340
383
|
await Promise.all(Array.from({ length: Math.min(CONCURRENCY, pending.length) }, () => worker()));
|
package/dist/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CACrC,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,cAAc;IACd,MAAM;IACN,aAAa;IACb,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,UAAU;IACV,eAAe;IACf,QAAQ;IACR,OAAO;IACP,SAAS;IACT,QAAQ;IACR,KAAK;IACL,KAAK;IACL,SAAS;IACT,MAAM;IACN,aAAa;IACb,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,OAAO;IACP,eAAe;IACf,OAAO;IACP,eAAe;IACf,eAAe;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAQhC,+DAA+D;AAE/D,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAO7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;AACnD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE9D,SAAS,iBAAiB;IACxB,IAAI,YAAY,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAC;QACzE,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ;YAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,IAAI,CAAC,GAAG,EAAE;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;YAC1C,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAC1C,CAAC;IACF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,wBAAwB;IACtC,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,uBAAuB;IACrC,OAAO,YAAY,CAAC,IAAI,CAAC;AAC3B,CAAC;AAED,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACd,IAAI,CAAS;IACb,KAAK,CAAgB;IAC9B,sEAAsE;IAC7D,SAAS,CAAU;IACpB,OAAO,CAA2B;IAE1C,YAAoB,IAAY,EAAE,KAAoB,EAAE,SAAkB;QACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CACpB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,IAAY,EACZ,SAAqB;QAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,YAAY,EAAE,CAAC;YAC3D,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC7D,iBAAiB,EAAE,CAAC;gBACpB,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/D,OAAO,OAAO,CAAC;YACjB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACxC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC3C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,iBAAyB,GAAG,EAC5B,QAAgB,EAAE;QAElB,MAAM,QAAQ,GAAiD,EAAE,CAAC;QAElE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAC9C,cAAc,EACd,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CACpB,CAAC;YACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG,CAAC;oBACJ,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,GAAG;oBACpC,QAAQ,EAAE,WAAW;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAC5D,CAAC;QAEF,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAWD,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,sEAAsE;IACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACrC,KAAK,IAAI,IAAI,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,KAAK,IAAI,OAAO,CAAC;YACjB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,KAAK,IAAI,MAAM,CAAC;YAChB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,CAAC;YACX,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACxC,OAAO,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,SAAS,CAChB,OAAe,EACf,KAAc,EACd,KAAsB;IAEtB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,SAAS;QACrC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,wDAAwD;QACxD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AASD;;;GAGG;AACH,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,IAAI,EAAE,CAAC;IACP,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,SAAqB;IAErB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAiC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACjD,MAAM,OAAO,CAAC;IAChB,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAEnC,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,qCAAqC;IACrC,MAAM,OAAO,GAA+D,EAAE,CAAC;IAE/E,KAAK,UAAU,IAAI,CAAC,GAAW;QAC7B,IAAI,SAAS;YAAE,OAAO;QACtB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,SAAS;gBAAE,OAAO;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAEzC,IAAI,SAAS,CAAC;YACd,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,iEAAiE;YACjE,mEAAmE;YACnE,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;oBACtE,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;gBACnC,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;oBAAE,SAAS;gBAClD,IAAI,OAAe,CAAC;gBACpB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAC5C,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9B,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC;oBAAE,SAAS;gBACnD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACxC,IAAI,SAAS,CAAC,IAAI,GAAG,cAAc;oBAAE,SAAS;gBAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;oBACjD,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjB,4EAA4E;IAC5E,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,UAAU,MAAM;QACnB,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,MAAM,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;gBAC5B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAC9E,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wavescope-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Wavelet-based multi-resolution context management for MCP",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
-
"README.md"
|
|
13
|
-
"LICENSE"
|
|
12
|
+
"README.md"
|
|
14
13
|
],
|
|
15
14
|
"keywords": [
|
|
16
15
|
"mcp",
|