@spikedpunch/mast 0.3.0 → 0.4.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/README.md +180 -9
- package/assets/prime.md +18 -0
- package/assets/signals.md +51 -0
- package/assets/skill.md +6 -47
- package/dist/cli/docs-cmd.d.ts +1 -0
- package/dist/cli/docs-cmd.d.ts.map +1 -1
- package/dist/cli/docs-cmd.js +2 -1
- package/dist/cli/docs-cmd.js.map +1 -1
- package/dist/cli/hook-cmd.d.ts +3 -0
- package/dist/cli/hook-cmd.d.ts.map +1 -0
- package/dist/cli/hook-cmd.js +13 -0
- package/dist/cli/hook-cmd.js.map +1 -0
- package/dist/cli/hook-state-dir.d.ts +24 -0
- package/dist/cli/hook-state-dir.d.ts.map +1 -0
- package/dist/cli/hook-state-dir.js +57 -0
- package/dist/cli/hook-state-dir.js.map +1 -0
- package/dist/cli/hook.d.ts +44 -0
- package/dist/cli/hook.d.ts.map +1 -0
- package/dist/cli/hook.js +200 -0
- package/dist/cli/hook.js.map +1 -0
- package/dist/cli/index.js +12 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installed-artifacts.d.ts +23 -0
- package/dist/cli/installed-artifacts.d.ts.map +1 -0
- package/dist/cli/installed-artifacts.js +39 -0
- package/dist/cli/installed-artifacts.js.map +1 -0
- package/dist/cli/prime-cmd.d.ts +17 -0
- package/dist/cli/prime-cmd.d.ts.map +1 -0
- package/dist/cli/prime-cmd.js +70 -0
- package/dist/cli/prime-cmd.js.map +1 -0
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +6 -0
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/setup-cmd.d.ts +34 -0
- package/dist/cli/setup-cmd.d.ts.map +1 -0
- package/dist/cli/setup-cmd.js +205 -0
- package/dist/cli/setup-cmd.js.map +1 -0
- package/dist/cli/setup-command.d.ts +32 -0
- package/dist/cli/setup-command.d.ts.map +1 -0
- package/dist/cli/setup-command.js +43 -0
- package/dist/cli/setup-command.js.map +1 -0
- package/dist/cli/setup-plan.d.ts +52 -0
- package/dist/cli/setup-plan.d.ts.map +1 -0
- package/dist/cli/setup-plan.js +221 -0
- package/dist/cli/setup-plan.js.map +1 -0
- package/dist/cli/setup-rules.d.ts +41 -0
- package/dist/cli/setup-rules.d.ts.map +1 -0
- package/dist/cli/setup-rules.js +76 -0
- package/dist/cli/setup-rules.js.map +1 -0
- package/dist/cli/setup-static.d.ts +13 -0
- package/dist/cli/setup-static.d.ts.map +1 -0
- package/dist/cli/setup-static.js +116 -0
- package/dist/cli/setup-static.js.map +1 -0
- package/dist/cli/skill-install.d.ts +2 -0
- package/dist/cli/skill-install.d.ts.map +1 -1
- package/dist/cli/skill-install.js +2 -0
- package/dist/cli/skill-install.js.map +1 -1
- package/dist/cli/upgrade-cmd.d.ts +5 -1
- package/dist/cli/upgrade-cmd.d.ts.map +1 -1
- package/dist/cli/upgrade-cmd.js +28 -3
- package/dist/cli/upgrade-cmd.js.map +1 -1
- package/dist/indexer/watcher.d.ts +80 -2
- package/dist/indexer/watcher.d.ts.map +1 -1
- package/dist/indexer/watcher.js +172 -27
- package/dist/indexer/watcher.js.map +1 -1
- package/dist/mcp/instructions.d.ts +7 -0
- package/dist/mcp/instructions.d.ts.map +1 -0
- package/dist/mcp/instructions.js +10 -0
- package/dist/mcp/instructions.js.map +1 -0
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +17 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/store/config.d.ts.map +1 -1
- package/dist/store/config.js +4 -5
- package/dist/store/config.js.map +1 -1
- package/dist/store/defaults.d.ts +9 -0
- package/dist/store/defaults.d.ts.map +1 -0
- package/dist/store/defaults.js +12 -0
- package/dist/store/defaults.js.map +1 -0
- package/package.json +2 -1
package/dist/indexer/watcher.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import { extname, join, relative, resolve } from 'node:path';
|
|
2
3
|
import { watch as chokidarWatch } from 'chokidar';
|
|
3
4
|
import { globToRegex } from './walker.js';
|
|
4
5
|
/**
|
|
@@ -93,6 +94,102 @@ export function shouldWatchPath(filter, absPath) {
|
|
|
93
94
|
return false;
|
|
94
95
|
return !filter.excludeRegexes.some((rx) => rx.test(rel));
|
|
95
96
|
}
|
|
97
|
+
function isInsideRoot(projectRoot, directory) {
|
|
98
|
+
const rel = relative(projectRoot, directory);
|
|
99
|
+
return rel === '' || (!rel.startsWith('..') && !rel.startsWith('/'));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Finds what is on disk but unknown to the watcher (D067). Pure over its inputs:
|
|
103
|
+
* `watched` is a snapshot and `listDirectory` is the only I/O.
|
|
104
|
+
*
|
|
105
|
+
* Only directories at or under `projectRoot` are listed: chokidar records the root
|
|
106
|
+
* itself as a child of the root's parent, and that parent is not ours to scan.
|
|
107
|
+
* A file the watcher learns about between the snapshot and the listing is reported
|
|
108
|
+
* too; that is a redundant notification, which the incremental reindex absorbs.
|
|
109
|
+
* Symbolic links are listed as files and never followed, so a link cycle cannot loop.
|
|
110
|
+
*/
|
|
111
|
+
export async function findUnwatchedEntries(input) {
|
|
112
|
+
const files = [];
|
|
113
|
+
const directories = [];
|
|
114
|
+
const roots = [];
|
|
115
|
+
const failures = [];
|
|
116
|
+
const list = async (directory) => {
|
|
117
|
+
try {
|
|
118
|
+
return await input.listDirectory(directory);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
failures.push({ directory, error });
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
// Everything below an unknown directory is unknown too, so it is walked in full.
|
|
126
|
+
const walkUnknown = async (directory) => {
|
|
127
|
+
if (input.signal?.aborted === true)
|
|
128
|
+
return;
|
|
129
|
+
for (const entry of await list(directory)) {
|
|
130
|
+
const abs = join(directory, entry.name);
|
|
131
|
+
if (input.isIgnored(abs))
|
|
132
|
+
continue;
|
|
133
|
+
if (entry.isDirectory) {
|
|
134
|
+
directories.push(abs);
|
|
135
|
+
await walkUnknown(abs);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
files.push(abs);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
for (const [directory, children] of Object.entries(input.watched)) {
|
|
143
|
+
if (input.signal?.aborted === true)
|
|
144
|
+
break;
|
|
145
|
+
if (!isInsideRoot(input.projectRoot, directory))
|
|
146
|
+
continue;
|
|
147
|
+
const known = new Set(children);
|
|
148
|
+
for (const entry of await list(directory)) {
|
|
149
|
+
if (known.has(entry.name))
|
|
150
|
+
continue;
|
|
151
|
+
const abs = join(directory, entry.name);
|
|
152
|
+
if (input.isIgnored(abs))
|
|
153
|
+
continue;
|
|
154
|
+
roots.push(abs);
|
|
155
|
+
if (entry.isDirectory) {
|
|
156
|
+
directories.push(abs);
|
|
157
|
+
await walkUnknown(abs);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
files.push(abs);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return { files, directories, roots, failures };
|
|
165
|
+
}
|
|
166
|
+
async function listDirectoryOnDisk(directory) {
|
|
167
|
+
const entries = await readdir(directory, { withFileTypes: true });
|
|
168
|
+
return entries.map((e) => ({ name: e.name, isDirectory: e.isDirectory() }));
|
|
169
|
+
}
|
|
170
|
+
/** Resolves true after `ms`, or false at once if `signal` aborts first. */
|
|
171
|
+
function delay(ms, signal) {
|
|
172
|
+
return new Promise((resolve) => {
|
|
173
|
+
if (signal.aborted) {
|
|
174
|
+
resolve(false);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const timer = setTimeout(() => { signal.removeEventListener('abort', onAbort); resolve(true); }, ms);
|
|
178
|
+
const onAbort = () => { clearTimeout(timer); resolve(false); };
|
|
179
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
const defaultWatcherFactory = (root, opts) => {
|
|
183
|
+
const fsw = chokidarWatch(root, opts);
|
|
184
|
+
return {
|
|
185
|
+
onFileEvent: (event, listener) => { fsw.on(event, listener); },
|
|
186
|
+
onReady: (listener) => { fsw.on('ready', listener); },
|
|
187
|
+
onError: (listener) => { fsw.on('error', listener); },
|
|
188
|
+
getWatched: () => fsw.getWatched(),
|
|
189
|
+
add: (paths) => fsw.add([...paths]),
|
|
190
|
+
close: () => fsw.close(),
|
|
191
|
+
};
|
|
192
|
+
};
|
|
96
193
|
/**
|
|
97
194
|
* Start `--watch` mode: a chokidar watcher over the project feeding the
|
|
98
195
|
* debounced scheduler. May throw on construction (e.g. EMFILE) — callers must
|
|
@@ -111,46 +208,94 @@ export function startWatchMode(options) {
|
|
|
111
208
|
onBatch: options.runBatch,
|
|
112
209
|
onWarn: options.onWarn,
|
|
113
210
|
});
|
|
114
|
-
|
|
211
|
+
// Prune ignored subtrees at the directory level so chokidar never descends
|
|
212
|
+
// into node_modules/ or the state dir. Files are re-checked (with the
|
|
213
|
+
// extension allowlist) in shouldWatchPath; `rel + '/'` lets patterns like
|
|
214
|
+
// `**/node_modules/**` match the directory itself, not just its contents.
|
|
215
|
+
// Shared with reconciliation so both agree on what is out of scope.
|
|
216
|
+
const isIgnored = (path) => {
|
|
217
|
+
const abs = resolve(path);
|
|
218
|
+
if (abs === filter.stateDir || abs.startsWith(`${filter.stateDir}/`))
|
|
219
|
+
return true;
|
|
220
|
+
const rel = relative(filter.projectRoot, abs);
|
|
221
|
+
if (rel === '' || rel.startsWith('..'))
|
|
222
|
+
return false;
|
|
223
|
+
return filter.excludeRegexes.some((rx) => rx.test(rel) || rx.test(`${rel}/`));
|
|
224
|
+
};
|
|
225
|
+
const watcher = (options.watcherFactory ?? defaultWatcherFactory)(config.resolved_project_root, {
|
|
115
226
|
// The startup ladder already reindexed — only future changes matter.
|
|
116
227
|
ignoreInitial: true,
|
|
117
|
-
|
|
118
|
-
// into node_modules/ or the state dir. Files are re-checked (with the
|
|
119
|
-
// extension allowlist) in shouldWatchPath; `rel + '/'` lets patterns like
|
|
120
|
-
// `**/node_modules/**` match the directory itself, not just its contents.
|
|
121
|
-
ignored: (path) => {
|
|
122
|
-
const abs = resolve(path);
|
|
123
|
-
if (abs === filter.stateDir || abs.startsWith(`${filter.stateDir}/`))
|
|
124
|
-
return true;
|
|
125
|
-
const rel = relative(filter.projectRoot, abs);
|
|
126
|
-
if (rel === '' || rel.startsWith('..'))
|
|
127
|
-
return false;
|
|
128
|
-
return filter.excludeRegexes.some((rx) => rx.test(rel) || rx.test(`${rel}/`));
|
|
129
|
-
},
|
|
228
|
+
ignored: isIgnored,
|
|
130
229
|
});
|
|
230
|
+
// Aborted by `close()`; cancels the settle wait and the reconciliation walk.
|
|
231
|
+
const closing = new AbortController();
|
|
232
|
+
const reconcile = async () => {
|
|
233
|
+
let found;
|
|
234
|
+
try {
|
|
235
|
+
found = await findUnwatchedEntries({
|
|
236
|
+
watched: watcher.getWatched(),
|
|
237
|
+
projectRoot: filter.projectRoot,
|
|
238
|
+
listDirectory: listDirectoryOnDisk,
|
|
239
|
+
isIgnored,
|
|
240
|
+
signal: closing.signal,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
options.onWarn(`[mast] watch: reconciliation failed (continuing): ${String(err)}`);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
if (closing.signal.aborted)
|
|
248
|
+
return;
|
|
249
|
+
for (const failure of found.failures) {
|
|
250
|
+
options.onWarn(`[mast] watch: reconciliation could not list ${failure.directory} (continuing): ${String(failure.error)}`);
|
|
251
|
+
}
|
|
252
|
+
for (const file of found.files) {
|
|
253
|
+
if (shouldWatchPath(filter, file))
|
|
254
|
+
scheduler.notify(file);
|
|
255
|
+
}
|
|
256
|
+
// `add` under `ignoreInitial: true` emits no `add` events (chokidar handler.js:
|
|
257
|
+
// `_addToNodeFs(path, !_internal, ...)` makes this an initial add), so the files
|
|
258
|
+
// notified above are not delivered twice. It is what makes later changes inside
|
|
259
|
+
// a missed directory visible.
|
|
260
|
+
if (found.roots.length > 0)
|
|
261
|
+
watcher.add(found.roots);
|
|
262
|
+
};
|
|
263
|
+
const announceReadiness = async () => {
|
|
264
|
+
if (!(await delay(options.settleMs ?? 1000, closing.signal)))
|
|
265
|
+
return;
|
|
266
|
+
await reconcile();
|
|
267
|
+
if (closing.signal.aborted)
|
|
268
|
+
return;
|
|
269
|
+
options.onReady?.();
|
|
270
|
+
};
|
|
131
271
|
// `unlink` feeds the same incremental run: deleted files are cleaned up by
|
|
132
272
|
// the index run's manifest diff (removeDeletedFiles), not reimplemented here.
|
|
133
|
-
watcher.
|
|
273
|
+
watcher.onFileEvent('add', (path) => { if (shouldWatchPath(filter, resolve(path)))
|
|
134
274
|
scheduler.notify(path); });
|
|
135
|
-
watcher.
|
|
275
|
+
watcher.onFileEvent('change', (path) => { if (shouldWatchPath(filter, resolve(path)))
|
|
136
276
|
scheduler.notify(path); });
|
|
137
|
-
watcher.
|
|
277
|
+
watcher.onFileEvent('unlink', (path) => { if (shouldWatchPath(filter, resolve(path)))
|
|
138
278
|
scheduler.notify(path); });
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
// runtime `error` after a successful scan does
|
|
145
|
-
//
|
|
146
|
-
watcher.
|
|
147
|
-
|
|
279
|
+
// chokidar's `ready` only says its initial scan finished; the OS watch may not be
|
|
280
|
+
// delivering yet, and a file created in that gap fires no event (D067). So
|
|
281
|
+
// readiness is announced after a settle period and a reconciliation pass, see
|
|
282
|
+
// `onReady`. A construction failure (EMFILE, permissions) throws out of the
|
|
283
|
+
// factory above and never reaches this line, so `onReady` cannot announce a
|
|
284
|
+
// watcher that failed to start. A runtime `error` after a successful scan does
|
|
285
|
+
// not un-fire it: the signal is not "the watcher is healthy".
|
|
286
|
+
watcher.onReady(() => {
|
|
287
|
+
announceReadiness().catch((err) => {
|
|
288
|
+
options.onWarn(`[mast] watch: readiness announcement failed: ${String(err)}`);
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
watcher.onError((err) => {
|
|
148
292
|
// Watcher errors (EMFILE, EPERM, …) degrade to no-watch; JIT staleness
|
|
149
293
|
// handling keeps reads correct, so serving continues.
|
|
150
294
|
options.onWarn(`[mast] watch: watcher error (continuing without event): ${String(err)}`);
|
|
151
295
|
});
|
|
152
296
|
return {
|
|
153
297
|
close: async () => {
|
|
298
|
+
closing.abort();
|
|
154
299
|
scheduler.close();
|
|
155
300
|
await watcher.close();
|
|
156
301
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/indexer/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP `instructions` string sent in the `initialize` result (ADR 017 §6).
|
|
3
|
+
* One paragraph: a client may place it in the model's context verbatim, so every
|
|
4
|
+
* sentence has to earn its tokens.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SERVER_INSTRUCTIONS: string;
|
|
7
|
+
//# sourceMappingURL=instructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/mcp/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAI2H,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP `instructions` string sent in the `initialize` result (ADR 017 §6).
|
|
3
|
+
* One paragraph: a client may place it in the model's context verbatim, so every
|
|
4
|
+
* sentence has to earn its tokens.
|
|
5
|
+
*/
|
|
6
|
+
export const SERVER_INSTRUCTIONS = 'mast is an AST-level index of this repository\'s TypeScript, JavaScript and Markdown. ' +
|
|
7
|
+
'To find code — a symbol, its callers, a module\'s exports — call mast_search (or mast_signature, mast_callers, mast_exports) before using grep, glob or reading whole files: it returns ranked declarations, not line matches. ' +
|
|
8
|
+
'Use grep for other languages, non-code files, or an exact regex over text. ' +
|
|
9
|
+
'An empty result is not proof of absence: check index_empty and unindexed_files on the response, and call mast_reindex after creating or renaming files.';
|
|
10
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/mcp/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,wFAAwF;IACxF,iOAAiO;IACjO,6EAA6E;IAC7E,yJAAyJ,CAAC"}
|
package/dist/mcp/server.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
2
|
import type { ResolvedConfig } from '../store/config.js';
|
|
2
3
|
import { type FreshnessProbe } from './freshness-probe.js';
|
|
3
4
|
/**
|
|
@@ -9,6 +10,13 @@ import { type FreshnessProbe } from './freshness-probe.js';
|
|
|
9
10
|
*/
|
|
10
11
|
export declare class NeverIndexedError extends Error {
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Constructs the MCP server with its handshake identity. Split from `serve` so the
|
|
15
|
+
* `initialize` result can be tested without opening SQLite or stdio. The version comes
|
|
16
|
+
* from the manifest, not a literal (shape S-05); `instructions` is what a client shows
|
|
17
|
+
* the model before it has chosen a tool.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createMastServer(): McpServer;
|
|
12
20
|
/**
|
|
13
21
|
* Refuse to start serving when nothing can ever fill the index (M6 Part A).
|
|
14
22
|
*
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOzD,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUjF;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,CAK5C;AAiCD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;IAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C,IAAI,CASN;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE;IACP,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACpG,GACA,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHhE"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -10,6 +10,8 @@ import { startWatchMode } from '../indexer/watcher.js';
|
|
|
10
10
|
import { bootstrapState } from './startup.js';
|
|
11
11
|
import { createFreshnessProbe } from './freshness-probe.js';
|
|
12
12
|
import { registerAllTools } from './register-tools.js';
|
|
13
|
+
import { CLI_VERSION } from '../cli/version.js';
|
|
14
|
+
import { SERVER_INSTRUCTIONS } from './instructions.js';
|
|
13
15
|
// ---------------------------------------------------------------------------
|
|
14
16
|
// M6 Part A (eval/GITNEXUS_COMPARISON.md §13.8 item 4): refuse to serve only
|
|
15
17
|
// where nothing can EVER fill the index — see assertServableIndex below.
|
|
@@ -23,6 +25,15 @@ import { registerAllTools } from './register-tools.js';
|
|
|
23
25
|
*/
|
|
24
26
|
export class NeverIndexedError extends Error {
|
|
25
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Constructs the MCP server with its handshake identity. Split from `serve` so the
|
|
30
|
+
* `initialize` result can be tested without opening SQLite or stdio. The version comes
|
|
31
|
+
* from the manifest, not a literal (shape S-05); `instructions` is what a client shows
|
|
32
|
+
* the model before it has chosen a tool.
|
|
33
|
+
*/
|
|
34
|
+
export function createMastServer() {
|
|
35
|
+
return new McpServer({ name: 'mast', version: CLI_VERSION }, { instructions: SERVER_INSTRUCTIONS });
|
|
36
|
+
}
|
|
26
37
|
/**
|
|
27
38
|
* True when `config.resolved_state_dir` has never completed an index run:
|
|
28
39
|
* either `graph.db` itself is absent (nothing has ever opened the database),
|
|
@@ -163,7 +174,7 @@ export async function serve(options) {
|
|
|
163
174
|
sessionId: randomUUID(),
|
|
164
175
|
freshness,
|
|
165
176
|
};
|
|
166
|
-
const server =
|
|
177
|
+
const server = createMastServer();
|
|
167
178
|
registerAllTools(server, ctx);
|
|
168
179
|
const transport = new StdioServerTransport();
|
|
169
180
|
await server.connect(transport);
|
|
@@ -190,9 +201,11 @@ export async function serve(options) {
|
|
|
190
201
|
// always did: `startWatchMode`'s EMFILE degradation writes a warning,
|
|
191
202
|
// so before this line silence meant "watching", "not watching yet" and
|
|
192
203
|
// "watcher failed to start" alike, and an operator could not tell which
|
|
193
|
-
// (D061). Emitted once, after chokidar's initial scan
|
|
194
|
-
//
|
|
195
|
-
// the
|
|
204
|
+
// (D061). Emitted once, after chokidar's initial scan, a settle period
|
|
205
|
+
// and a reconciliation pass (D067): files created before the pass are
|
|
206
|
+
// queued for reindex, and the OS watch has had the settle period to go
|
|
207
|
+
// live. It is not a guarantee: a watch that goes live later than that is
|
|
208
|
+
// still a gap, and nothing proves liveness.
|
|
196
209
|
onReady: () => process.stderr.write('[mast] watch: watching for changes\n'),
|
|
197
210
|
});
|
|
198
211
|
}
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAoB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAoB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,SAAS,CAClB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EACtC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,EAAE,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAsB,EACtB,OAAgD;IAEhD,IAAI,OAAO,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO;IAC9C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAAE,OAAO;IACpC,MAAM,IAAI,iBAAiB,CACzB,gCAAgC,MAAM,CAAC,kBAAkB,gCAAgC;QACzF,wFAAwF;QACxF,6FAA6F;QAC7F,mGAAmG,CACpG,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAsB,EACtB,SAAyB,EACzB,OAKC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;YAAE,SAAS,CAAC,OAAO,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAwBD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB;IAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,6EAA6E;IAC7E,qEAAqE;IACrE,4EAA4E;IAC5E,+DAA+D;IAE/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAE1D,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,mBAAmB,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE5E,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAEnD,oEAAoE;IACpE,2EAA2E;IAC3E,2BAA2B;IAC3B,MAAM,UAAU,GAAe,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAExD,6EAA6E;IAE7E,0EAA0E;IAC1E,oEAAoE;IACpE,4EAA4E;IAC5E,kCAAkC;IAClC,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAe;QACtB,EAAE;QACF,UAAU;QACV,MAAM;QACN,SAAS,EAAE,UAAU,EAAE;QACvB,SAAS;KACV,CAAC;IAEF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,8EAA8E;IAC9E,4EAA4E;IAC5E,qEAAqE;IACrE,uEAAuE;IACvE,8EAA8E;IAE9E,MAAM,qBAAqB,GAAG,GAAS,EAAE;QACvC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO;QACpC,IAAI,WAAW,GAAuB,IAAI,CAAC;QAC3C,IAAI,CAAC;YACH,WAAW,GAAG,cAAc,CAAC;gBAC3B,MAAM;gBACN,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC;oBACnF,oEAAoE;oBACpE,sEAAsE;oBACtE,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC;gBACzD,kEAAkE;gBAClE,sEAAsE;gBACtE,uEAAuE;gBACvE,wEAAwE;gBACxE,uEAAuE;gBACvE,sEAAsE;gBACtE,uEAAuE;gBACvE,yEAAyE;gBACzE,4CAA4C;gBAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC;aAC5E,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,qEAAqE;YACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5G,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,qEAAqE;QACrE,kBAAkB;QAClB,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,MAAM,MAAM,GAAG,WAAW,CAAC;YAC3B,WAAW,GAAG,IAAI,CAAC;YACnB,IAAI,MAAM,KAAK,IAAI;gBAAE,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,6EAA6E;IAE7E,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,0EAA0E;QAC1E,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,qBAAqB,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,sEAAsE;YACtE,8DAA8D;YAC9D,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,qBAAqB,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA6BlD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AA6B9C,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,4CAA4C;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,yCAAyC;IACzC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAgFD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CA0ChF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAI5E;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAG/E"}
|
package/dist/store/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
3
|
import { ConfigEnvSchema } from '../env.js';
|
|
4
|
+
import { DEFAULT_FILE_EXTENSIONS, DEFAULT_STATE_DIR } from './defaults.js';
|
|
4
5
|
// 1.3.0 (F5, Stage 3): identifier_fts rows now carry QUALIFIED compound
|
|
5
6
|
// strings ("Class.method") appended after the bare-identifier bag — see
|
|
6
7
|
// ast/extractors/typescript.ts's `appendQualifiedCompounds` and MAST_SPEC.md
|
|
@@ -28,12 +29,10 @@ import { ConfigEnvSchema } from '../env.js';
|
|
|
28
29
|
// so an old vectors table (without the column) is rebuilt rather than read.
|
|
29
30
|
export const CURRENT_SCHEMA_VERSION = '1.3.0';
|
|
30
31
|
const DEFAULTS = {
|
|
31
|
-
state_dir:
|
|
32
|
+
state_dir: DEFAULT_STATE_DIR,
|
|
32
33
|
project_root: '.',
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
// markdown-specific exclusion logic is applied.
|
|
36
|
-
file_extensions: ['.ts', '.tsx', '.js', '.jsx', '.md'],
|
|
34
|
+
// See defaults.ts for why this list lives outside config.ts.
|
|
35
|
+
file_extensions: DEFAULT_FILE_EXTENSIONS,
|
|
37
36
|
// Build output, dependencies, and tests. `.mast/**` excludes this tool's own
|
|
38
37
|
// state directory, which is the one path guaranteed to exist in every project
|
|
39
38
|
// that runs it. (`.kluster/**` sat here until 2026-08-19 — a leftover from the
|
package/dist/store/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/store/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** State directory used when neither a flag, MAST_STATE_DIR nor mast.config.json names one. */
|
|
2
|
+
export declare const DEFAULT_STATE_DIR = ".mast";
|
|
3
|
+
/**
|
|
4
|
+
* Extensions indexed when the project does not customise `file_extensions`.
|
|
5
|
+
* `.md` rides the existing exclude_patterns for vendored noise — dependency
|
|
6
|
+
* READMEs live under node_modules/** which is already excluded.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_FILE_EXTENSIONS: readonly string[];
|
|
9
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/store/defaults.ts"],"names":[],"mappings":"AAIA,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAA0C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Builtin-free on purpose: `cli/hook.ts` runs before every Grep and may not import
|
|
2
|
+
// `config.ts` (which pulls in zod). The two facts below are the ones the hook needs,
|
|
3
|
+
// so they live here once and `config.ts` imports them rather than restating them.
|
|
4
|
+
/** State directory used when neither a flag, MAST_STATE_DIR nor mast.config.json names one. */
|
|
5
|
+
export const DEFAULT_STATE_DIR = '.mast';
|
|
6
|
+
/**
|
|
7
|
+
* Extensions indexed when the project does not customise `file_extensions`.
|
|
8
|
+
* `.md` rides the existing exclude_patterns for vendored noise — dependency
|
|
9
|
+
* READMEs live under node_modules/** which is already excluded.
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_FILE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx', '.md'];
|
|
12
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/store/defaults.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,qFAAqF;AACrF,kFAAkF;AAElF,+FAA+F;AAC/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spikedpunch/mast",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"scripts": {
|
|
76
76
|
"build": "tsc",
|
|
77
77
|
"typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
78
|
+
"gate": "pnpm typecheck && pnpm lint && pnpm build && pnpm test",
|
|
78
79
|
"test": "vitest run",
|
|
79
80
|
"test:watch": "vitest",
|
|
80
81
|
"lint": "eslint src eval integration",
|