@dahch/muninn 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +152 -2
- package/dist/cli.d.ts +23 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +170 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +56 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/memory.d.ts +6 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +325 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/contracts/compiler.d.ts +71 -0
- package/dist/contracts/compiler.d.ts.map +1 -0
- package/dist/contracts/compiler.js +362 -0
- package/dist/contracts/compiler.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/db/client.d.ts +84 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +264 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/schema.sql +97 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/ast-indexer.d.ts +55 -0
- package/dist/indexer/ast-indexer.d.ts.map +1 -0
- package/dist/indexer/ast-indexer.js +445 -0
- package/dist/indexer/ast-indexer.js.map +1 -0
- package/dist/indexer/index.d.ts +2 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +2 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +233 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +495 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/service/index.d.ts +2 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +2 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/memory-service.d.ts +203 -0
- package/dist/service/memory-service.d.ts.map +1 -0
- package/dist/service/memory-service.js +891 -0
- package/dist/service/memory-service.js.map +1 -0
- package/dist/util/path-safety.d.ts +94 -0
- package/dist/util/path-safety.d.ts.map +1 -0
- package/dist/util/path-safety.js +162 -0
- package/dist/util/path-safety.js.map +1 -0
- package/dist/util/text.d.ts +9 -0
- package/dist/util/text.d.ts.map +1 -0
- package/dist/util/text.js +19 -0
- package/dist/util/text.js.map +1 -0
- package/package.json +87 -4
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { MemoryService } from "../service/memory-service.js";
|
|
5
|
+
import { startMcpServer } from "../mcp/server.js";
|
|
6
|
+
import { indexFilesIntoMuninn } from "../indexer/ast-indexer.js";
|
|
7
|
+
import { sanitizeTerminalText } from "../util/text.js";
|
|
8
|
+
const IGNORED_INDEX_DIRS = new Set([
|
|
9
|
+
"node_modules",
|
|
10
|
+
".git",
|
|
11
|
+
".harness",
|
|
12
|
+
".huginn",
|
|
13
|
+
"dist",
|
|
14
|
+
"build",
|
|
15
|
+
".cache",
|
|
16
|
+
]);
|
|
17
|
+
const SOURCE_FILE_EXTENSIONS = new Set([
|
|
18
|
+
".ts",
|
|
19
|
+
".tsx",
|
|
20
|
+
".mts",
|
|
21
|
+
".cts",
|
|
22
|
+
".js",
|
|
23
|
+
".jsx",
|
|
24
|
+
".mjs",
|
|
25
|
+
".cjs",
|
|
26
|
+
]);
|
|
27
|
+
export function findSourceFiles(dir) {
|
|
28
|
+
const results = [];
|
|
29
|
+
function walk(current) {
|
|
30
|
+
if (!fs.existsSync(current))
|
|
31
|
+
return;
|
|
32
|
+
try {
|
|
33
|
+
const entries = fs.readdirSync(current, { withFileTypes: true });
|
|
34
|
+
for (const entry of entries) {
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
if (!IGNORED_INDEX_DIRS.has(entry.name)) {
|
|
37
|
+
walk(path.join(current, entry.name));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (entry.isFile()) {
|
|
41
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
42
|
+
if (SOURCE_FILE_EXTENSIONS.has(ext)) {
|
|
43
|
+
results.push(path.join(current, entry.name));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// ignore read error
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
walk(dir);
|
|
53
|
+
return results;
|
|
54
|
+
}
|
|
55
|
+
export function printMemoryUsage() {
|
|
56
|
+
console.log(`muninn memory — Persistent codebase memory across spec-build cycles
|
|
57
|
+
|
|
58
|
+
Usage:
|
|
59
|
+
muninn memory init [--db <path>] [--project <path>]
|
|
60
|
+
muninn memory search <query> [--category <cat>] [--limit <n>] [--project <path>]
|
|
61
|
+
muninn memory sync [--import] [--file <path>] [--project <path>]
|
|
62
|
+
muninn memory index [files...] [--project <path>] [--db <path>]
|
|
63
|
+
|
|
64
|
+
Subcommands:
|
|
65
|
+
init Initialize SQLite database and verify schema
|
|
66
|
+
search Search observations with BM25 relevance ranking
|
|
67
|
+
sync Export observations to disk (.jsonl) or import with --import
|
|
68
|
+
index Index AST symbols and dependencies into Muninn memory
|
|
69
|
+
`);
|
|
70
|
+
}
|
|
71
|
+
export function printMcpUsage() {
|
|
72
|
+
console.log(`muninn mcp — Model Context Protocol server for Muninn memory
|
|
73
|
+
|
|
74
|
+
Usage:
|
|
75
|
+
muninn mcp run [--db <path>] [--project <path>]
|
|
76
|
+
|
|
77
|
+
Subcommands:
|
|
78
|
+
run Start the stdio MCP server for agent memory integration
|
|
79
|
+
`);
|
|
80
|
+
}
|
|
81
|
+
export async function handleMemoryCommand(subcommand, args, positionals) {
|
|
82
|
+
const dbPath = typeof args["--db"] === "string" ? args["--db"] : undefined;
|
|
83
|
+
const projectRoot = typeof args["--project"] === "string"
|
|
84
|
+
? args["--project"]
|
|
85
|
+
: typeof args["--root"] === "string"
|
|
86
|
+
? args["--root"]
|
|
87
|
+
: undefined;
|
|
88
|
+
if (!subcommand ||
|
|
89
|
+
args["--help"] ||
|
|
90
|
+
args["-h"] ||
|
|
91
|
+
subcommand === "help" ||
|
|
92
|
+
subcommand === "--help" ||
|
|
93
|
+
subcommand === "-h") {
|
|
94
|
+
printMemoryUsage();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (subcommand === "init") {
|
|
98
|
+
const service = new MemoryService({ dbPath, projectRoot });
|
|
99
|
+
try {
|
|
100
|
+
const project = service.currentProject;
|
|
101
|
+
console.log(chalk.green("✔ Muninn memory database initialized"));
|
|
102
|
+
console.log(` Database: ${service.db.name}`);
|
|
103
|
+
console.log(` Project: ${project.name} (${project.root_path})`);
|
|
104
|
+
console.log(` Status: Tables ready`);
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
service.close?.();
|
|
108
|
+
}
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (subcommand === "search") {
|
|
112
|
+
const queryPositional = positionals?.[0] ??
|
|
113
|
+
(typeof args._positional === "string" && args._positional !== "search"
|
|
114
|
+
? args._positional
|
|
115
|
+
: undefined);
|
|
116
|
+
const query = typeof args["--query"] === "string" ? args["--query"] : queryPositional;
|
|
117
|
+
if (!query || query.trim() === "") {
|
|
118
|
+
console.error(chalk.red("Error: Search query is required."));
|
|
119
|
+
process.exitCode = 1;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const category = typeof args["--category"] === "string" ? args["--category"] : undefined;
|
|
123
|
+
const parsedLimit = typeof args["--limit"] === "string"
|
|
124
|
+
? Math.floor(Number(args["--limit"]))
|
|
125
|
+
: undefined;
|
|
126
|
+
const limit = parsedLimit && parsedLimit > 0 ? parsedLimit : 10;
|
|
127
|
+
const service = new MemoryService({ dbPath, projectRoot });
|
|
128
|
+
try {
|
|
129
|
+
const results = service.search({
|
|
130
|
+
query: query.trim(),
|
|
131
|
+
category,
|
|
132
|
+
limit,
|
|
133
|
+
});
|
|
134
|
+
if (results.length === 0) {
|
|
135
|
+
console.log(`No observations found matching "${query.trim()}".`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
console.log(chalk.bold(`Found ${results.length} result(s) for "${query.trim()}" (BM25 ranked):`));
|
|
139
|
+
for (const obs of results) {
|
|
140
|
+
const categoryTag = chalk.cyan(`[${obs.category.toUpperCase()}]`);
|
|
141
|
+
const rankScore = chalk.gray(`(score: ${obs.rank.toFixed(3)})`);
|
|
142
|
+
console.log(`\n${categoryTag} ${chalk.bold(obs.title)} ${rankScore}`);
|
|
143
|
+
if (obs.topic_key) {
|
|
144
|
+
console.log(` ${chalk.dim("Topic:")} ${obs.topic_key}`);
|
|
145
|
+
}
|
|
146
|
+
const preview = obs.content.length > 150
|
|
147
|
+
? `${obs.content.slice(0, 147)}...`
|
|
148
|
+
: obs.content;
|
|
149
|
+
console.log(` ${chalk.white(preview.replace(/\n/g, " "))}`);
|
|
150
|
+
if (obs.entities && obs.entities.length > 0) {
|
|
151
|
+
const symbols = obs.entities.map((e) => e.identifier).join(", ");
|
|
152
|
+
console.log(` ${chalk.dim("Symbols:")} ${chalk.yellow(symbols)}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
service.close?.();
|
|
158
|
+
}
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (subcommand === "sync") {
|
|
162
|
+
const syncPositional = positionals?.[0] ??
|
|
163
|
+
(typeof args._positional === "string" && args._positional !== "sync"
|
|
164
|
+
? args._positional
|
|
165
|
+
: undefined);
|
|
166
|
+
const filePath = typeof args["--file"] === "string" ? args["--file"] : syncPositional;
|
|
167
|
+
const isImport = Boolean(args["--import"]);
|
|
168
|
+
const service = new MemoryService({ dbPath, projectRoot });
|
|
169
|
+
try {
|
|
170
|
+
if (isImport) {
|
|
171
|
+
const result = service.importFromDisk(filePath);
|
|
172
|
+
console.log(`Imported ${result.imported} memories (skipped ${result.skipped} duplicates) from ${filePath ?? path.join(service.currentProject.root_path || process.cwd(), ".huginn", "memories.jsonl")}.`);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
const result = service.syncToDisk(filePath);
|
|
176
|
+
console.log(`Synced ${result.count} memories to ${result.path}.`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
service.close?.();
|
|
181
|
+
}
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (subcommand === "index") {
|
|
185
|
+
const rawFiles = positionals && positionals.length > 0
|
|
186
|
+
? positionals
|
|
187
|
+
: typeof args._positional === "string" && args._positional !== "index"
|
|
188
|
+
? [args._positional]
|
|
189
|
+
: [];
|
|
190
|
+
const service = new MemoryService({ dbPath, projectRoot });
|
|
191
|
+
try {
|
|
192
|
+
const root = service.currentProject.root_path || process.cwd();
|
|
193
|
+
const targetFiles = rawFiles.length > 0 ? rawFiles : findSourceFiles(root);
|
|
194
|
+
const result = indexFilesIntoMuninn(service, targetFiles, {
|
|
195
|
+
projectRoot: root,
|
|
196
|
+
});
|
|
197
|
+
console.log(chalk.green(`✔ Indexed ${result.indexedFiles} file(s) (${result.indexedSymbols} symbol(s), ${result.indexedDependencies} dependency link(s)) into Muninn memory.`));
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
service.close?.();
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
console.error(chalk.red(`Unknown subcommand: ${subcommand}`));
|
|
205
|
+
printMemoryUsage();
|
|
206
|
+
process.exitCode = 1;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Logs to stderr without ever risking a second crash (ADR-30.3): once the
|
|
210
|
+
* parent pipe is gone, even the diagnostic write can fail with EPIPE.
|
|
211
|
+
*/
|
|
212
|
+
function logToStderr(line) {
|
|
213
|
+
try {
|
|
214
|
+
process.stderr.write(line.endsWith("\n") ? line : `${line}\n`);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
/* stderr is gone too — the process is exiting anyway */
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Installs the stdio guards that keep `muninn mcp run` from crashing or hanging
|
|
222
|
+
* when its parent goes away (REQ-30 / AC-30.3):
|
|
223
|
+
*
|
|
224
|
+
* - an `'error'` handler on `process.stdout` so an EPIPE from a closed parent
|
|
225
|
+
* pipe is logged and turned into a clean shutdown instead of an unhandled
|
|
226
|
+
* exception that kills the server mid-response;
|
|
227
|
+
* - a no-op `'error'` handler on `process.stderr` for the same reason (a dead
|
|
228
|
+
* parent usually breaks both ends);
|
|
229
|
+
* - `'end'`/`'close'` on `process.stdin` — the SDK transport only observes
|
|
230
|
+
* `'data'`/`'error'`, so without this bridge a parent disconnect is invisible
|
|
231
|
+
* and the server would keep running forever.
|
|
232
|
+
*/
|
|
233
|
+
function installStdioGuards(onStdoutFailure) {
|
|
234
|
+
const onStdoutError = (err) => {
|
|
235
|
+
logToStderr(`[muninn] mcp run: stdout write failed (${sanitizeTerminalText(err.message)}); shutting down.`);
|
|
236
|
+
onStdoutFailure();
|
|
237
|
+
};
|
|
238
|
+
const onStderrError = () => {
|
|
239
|
+
/* a broken stderr must never crash the JSON-RPC server */
|
|
240
|
+
};
|
|
241
|
+
process.stdout.on("error", onStdoutError);
|
|
242
|
+
process.stderr.on("error", onStderrError);
|
|
243
|
+
return {
|
|
244
|
+
dispose() {
|
|
245
|
+
process.stdout.off("error", onStdoutError);
|
|
246
|
+
process.stderr.off("error", onStderrError);
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
export async function handleMcpCommand(subcommand, args) {
|
|
251
|
+
const dbPath = typeof args["--db"] === "string" ? args["--db"] : undefined;
|
|
252
|
+
const projectRoot = typeof args["--project"] === "string"
|
|
253
|
+
? args["--project"]
|
|
254
|
+
: typeof args["--root"] === "string"
|
|
255
|
+
? args["--root"]
|
|
256
|
+
: undefined;
|
|
257
|
+
if (!subcommand ||
|
|
258
|
+
args["--help"] ||
|
|
259
|
+
args["-h"] ||
|
|
260
|
+
subcommand === "help" ||
|
|
261
|
+
subcommand === "--help" ||
|
|
262
|
+
subcommand === "-h") {
|
|
263
|
+
printMcpUsage();
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
if (subcommand === "run") {
|
|
267
|
+
const { server, transport, service } = await startMcpServer({
|
|
268
|
+
dbPath,
|
|
269
|
+
projectRoot,
|
|
270
|
+
});
|
|
271
|
+
try {
|
|
272
|
+
// Protocol failures were previously discarded (AC-30.3): surface them on
|
|
273
|
+
// stderr (never stdout — that stream carries JSON-RPC) without aborting.
|
|
274
|
+
if (server) {
|
|
275
|
+
server.onerror = (err) => {
|
|
276
|
+
logToStderr(`[muninn] mcp run: protocol error: ${sanitizeTerminalText(err.message)}`);
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
// Keep process alive while stdio transport is connected:
|
|
280
|
+
await new Promise((resolve) => {
|
|
281
|
+
let finished = false;
|
|
282
|
+
const onStdinClosed = () => {
|
|
283
|
+
if ((process.env.MUNINN_DEBUG || process.env.HUGINN_DEBUG)) {
|
|
284
|
+
logToStderr("[muninn] mcp run: stdin closed by the client; shutting down.");
|
|
285
|
+
}
|
|
286
|
+
done();
|
|
287
|
+
};
|
|
288
|
+
const guards = installStdioGuards(() => done());
|
|
289
|
+
const done = () => {
|
|
290
|
+
if (finished)
|
|
291
|
+
return;
|
|
292
|
+
finished = true;
|
|
293
|
+
process.removeListener("SIGINT", done);
|
|
294
|
+
process.removeListener("SIGTERM", done);
|
|
295
|
+
process.stdin.removeListener("end", onStdinClosed);
|
|
296
|
+
process.stdin.removeListener("close", onStdinClosed);
|
|
297
|
+
guards.dispose();
|
|
298
|
+
resolve();
|
|
299
|
+
};
|
|
300
|
+
if (transport) {
|
|
301
|
+
transport.onclose = () => done();
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
done();
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
// The parent disappearing is a lifecycle event, not a hang: bridge EOF
|
|
308
|
+
// (and an abruptly closed pipe) to the same shutdown path as onclose.
|
|
309
|
+
process.stdin.on("end", onStdinClosed);
|
|
310
|
+
process.stdin.on("close", onStdinClosed);
|
|
311
|
+
process.on("SIGINT", done);
|
|
312
|
+
process.on("SIGTERM", done);
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
finally {
|
|
316
|
+
service?.close?.();
|
|
317
|
+
await server?.close?.();
|
|
318
|
+
}
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
console.error(chalk.red(`Unknown subcommand: ${subcommand}`));
|
|
322
|
+
printMcpUsage();
|
|
323
|
+
process.exitCode = 1;
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/commands/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,cAAc;IACd,MAAM;IACN,UAAU;IACV,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,SAAS,IAAI,CAAC,OAAe;QAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnD,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;CAab,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAA8B,EAC9B,IAAkD,EAClD,WAAsB;IAEtB,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ;QACnC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACnB,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAChB,CAAC,CAAC,SAAS,CAAC;IAElB,IACE,CAAC,UAAU;QACX,IAAI,CAAC,QAAQ,CAAC;QACd,IAAI,CAAC,IAAI,CAAC;QACV,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,QAAQ;QACvB,UAAU,KAAK,IAAI,EACnB,CAAC;QACD,gBAAgB,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,eAAe,GACnB,WAAW,EAAE,CAAC,CAAC,CAAC;YAChB,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ;gBACpE,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,MAAM,KAAK,GACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;QAE1E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ;YACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,KAAK,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;gBACnB,QAAQ;gBACR,KAAK;aACN,CAAC,CAAC;YAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,SAAS,OAAO,CAAC,MAAM,mBAAmB,KAAK,CAAC,IAAI,EAAE,kBAAkB,CACzE,CACF,CAAC;YAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;gBAEtE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBAED,MAAM,OAAO,GACX,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG;oBACtB,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;oBACnC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAE7D,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,cAAc,GAClB,WAAW,EAAE,CAAC,CAAC,CAAC;YAChB,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM;gBAClE,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAEvE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CACT,YAAY,MAAM,CAAC,QAAQ,sBAAsB,MAAM,CAAC,OAAO,qBAAqB,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAC7L,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,QAAQ,GACZ,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YACnC,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO;gBACpE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBACpB,CAAC,CAAC,EAAE,CAAC;QAEX,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC/D,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAEzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE;gBACxD,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,aAAa,MAAM,CAAC,YAAY,aAAa,MAAM,CAAC,cAAc,eAAe,MAAM,CAAC,mBAAmB,0CAA0C,CACtJ,CACF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9D,gBAAgB,EAAE,CAAC;IACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;IAC1D,CAAC;AACH,CAAC;AAOD;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CAAC,eAA2B;IACrD,MAAM,aAAa,GAAG,CAAC,GAAU,EAAE,EAAE;QACnC,WAAW,CACT,0CAA0C,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAC/F,CAAC;QACF,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,0DAA0D;IAC5D,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE1C,OAAO;QACL,OAAO;YACL,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA8B,EAC9B,IAAkD;IAElD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,QAAQ;QACnC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACnB,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAChB,CAAC,CAAC,SAAS,CAAC;IAElB,IACE,CAAC,UAAU;QACX,IAAI,CAAC,QAAQ,CAAC;QACd,IAAI,CAAC,IAAI,CAAC;QACV,UAAU,KAAK,MAAM;QACrB,UAAU,KAAK,QAAQ;QACvB,UAAU,KAAK,IAAI,EACnB,CAAC;QACD,aAAa,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC;YAC1D,MAAM;YACN,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,CAAC;YACH,yEAAyE;YACzE,yEAAyE;YACzE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;oBAC9B,WAAW,CAAC,qCAAqC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACxF,CAAC,CAAC;YACJ,CAAC;YAED,yDAAyD;YACzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,MAAM,aAAa,GAAG,GAAG,EAAE;oBACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;wBAC3D,WAAW,CAAC,8DAA8D,CAAC,CAAC;oBAC9E,CAAC;oBACD,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC;gBACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,GAAG,EAAE;oBAChB,IAAI,QAAQ;wBAAE,OAAO;oBACrB,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACxC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;oBACnD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;oBACrD,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBACF,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,OAAO;gBACT,CAAC;gBACD,uEAAuE;gBACvE,sEAAsE;gBACtE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACzC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;YACnB,MAAM,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC;IAC9D,aAAa,EAAE,CAAC;IAChB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
export type DiagnosticCategoryName = "error" | "warning" | "message" | "suggestion";
|
|
3
|
+
export interface FormattedDiagnostic {
|
|
4
|
+
filePath: string;
|
|
5
|
+
line: number;
|
|
6
|
+
character: number;
|
|
7
|
+
code: string;
|
|
8
|
+
category: DiagnosticCategoryName;
|
|
9
|
+
message: string;
|
|
10
|
+
snippet?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ContractVerificationResult {
|
|
13
|
+
valid: boolean;
|
|
14
|
+
errorsCount: number;
|
|
15
|
+
diagnostics: FormattedDiagnostic[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Safe default TypeScript compiler options used when tsconfig.json is absent or invalid.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_COMPILER_OPTIONS: ts.CompilerOptions;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a formatted visual snippet of the line of code containing the error,
|
|
23
|
+
* with a caret pointer underlining the exact error span.
|
|
24
|
+
* Clamps input positions, line lengths, and span lengths to bounded limits (SEC-006, REV-008).
|
|
25
|
+
*/
|
|
26
|
+
export declare function createVisualSnippet(sourceFile: ts.SourceFile, start: number, length?: number): string;
|
|
27
|
+
/**
|
|
28
|
+
* Formats a raw TypeScript compiler diagnostic into a structured FormattedDiagnostic.
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatDiagnostic(diagnostic: ts.Diagnostic, projectRoot: string): FormattedDiagnostic;
|
|
31
|
+
/**
|
|
32
|
+
* Loads tsconfig.json strictly from projectRoot without walking up parent directories (REV-005, SEC-007).
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadProjectConfig(projectRoot: string): {
|
|
35
|
+
configPath: string | undefined;
|
|
36
|
+
options: ts.CompilerOptions;
|
|
37
|
+
fileNames: string[];
|
|
38
|
+
errors: ts.Diagnostic[];
|
|
39
|
+
};
|
|
40
|
+
export declare const TS_JS_EXTENSIONS: Set<string>;
|
|
41
|
+
/**
|
|
42
|
+
* Recursively discovers TypeScript/JavaScript source files within a directory.
|
|
43
|
+
*/
|
|
44
|
+
export declare function findSourceFilesInDir(dir: string): string[];
|
|
45
|
+
export type ResolveTargetFilesResult = {
|
|
46
|
+
success: true;
|
|
47
|
+
targetFiles?: string[];
|
|
48
|
+
} | {
|
|
49
|
+
success: false;
|
|
50
|
+
failure: ContractVerificationResult;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Validates requested file paths against path traversal and file existence (SEC-001, REV-003).
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveTargetFiles(projectRoot: string, filePaths?: string[]): ResolveTargetFilesResult;
|
|
56
|
+
/**
|
|
57
|
+
* Verifies TypeScript compilation contracts for the given project and files.
|
|
58
|
+
* Returns structured pre-emit diagnostics with line/character locations and visual code snippets.
|
|
59
|
+
*/
|
|
60
|
+
export declare function verifyTypeScriptContracts(projectRoot: string, filePaths?: string[]): ContractVerificationResult;
|
|
61
|
+
/**
|
|
62
|
+
* Formats a ContractVerificationResult into a markdown report suitable for
|
|
63
|
+
* gate evaluation and thinker fix prompts.
|
|
64
|
+
*/
|
|
65
|
+
export declare function formatDiagnosticsReport(result: ContractVerificationResult): string;
|
|
66
|
+
export declare const TypeValidator: {
|
|
67
|
+
check: typeof verifyTypeScriptContracts;
|
|
68
|
+
formatReport: typeof formatDiagnosticsReport;
|
|
69
|
+
DEFAULT_COMPILER_OPTIONS: ts.CompilerOptions;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/contracts/compiler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,MAAM,sBAAsB,GAC9B,OAAO,GACP,SAAS,GACT,SAAS,GACT,YAAY,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,eASzC,CAAC;AAkBF;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAU,GACjB,MAAM,CA+BR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAwCrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG;IACtD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;CACzB,CAuCA;AAED,eAAO,MAAM,gBAAgB,aAS3B,CAAC;AAEH;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAsB1D;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACzC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAA;CAAE,CAAC;AAE5D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,wBAAwB,CAyD1B;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,0BAA0B,CAwI5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,0BAA0B,GACjC,MAAM,CAyBR;AAED,eAAO,MAAM,aAAa;;;;CAIzB,CAAC"}
|