@ttsc/graph 0.19.3 → 0.20.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/lib/TtscGraphApplication.js +3 -1
- package/lib/TtscGraphApplication.js.map +1 -1
- package/lib/bin.js +15 -3
- package/lib/bin.js.map +1 -1
- package/lib/index.d.ts +13 -2
- package/lib/index.js +24 -30
- package/lib/index.js.map +1 -1
- package/lib/launcherArgs.d.ts +24 -0
- package/lib/launcherArgs.js +136 -0
- package/lib/launcherArgs.js.map +1 -0
- package/lib/model/TtscGraphMemory.d.ts +9 -5
- package/lib/model/TtscGraphMemory.js +35 -58
- package/lib/model/TtscGraphMemory.js.map +1 -1
- package/lib/model/TtscGraphNodeId.d.ts +17 -0
- package/lib/model/TtscGraphNodeId.js +69 -0
- package/lib/model/TtscGraphNodeId.js.map +1 -0
- package/lib/model/TtscGraphSession.d.ts +23 -7
- package/lib/model/TtscGraphSession.js +402 -210
- package/lib/model/TtscGraphSession.js.map +1 -1
- package/lib/model/TtscGraphSourceReader.d.ts +27 -0
- package/lib/model/TtscGraphSourceReader.js +97 -0
- package/lib/model/TtscGraphSourceReader.js.map +1 -0
- package/lib/model/loadGraph.d.ts +4 -4
- package/lib/model/loadGraph.js +233 -168
- package/lib/model/loadGraph.js.map +1 -1
- package/lib/reduce.d.ts +4 -1
- package/lib/reduce.js +112 -29
- package/lib/reduce.js.map +1 -1
- package/lib/server/createServer.js +17 -6
- package/lib/server/createServer.js.map +1 -1
- package/lib/server/pathPolicy.d.ts +6 -0
- package/lib/server/pathPolicy.js +10 -1
- package/lib/server/pathPolicy.js.map +1 -1
- package/lib/server/resolveHandle.js +22 -18
- package/lib/server/resolveHandle.js.map +1 -1
- package/lib/server/resultAudit.d.ts +41 -20
- package/lib/server/resultAudit.js +62 -34
- package/lib/server/resultAudit.js.map +1 -1
- package/lib/server/resultNext.d.ts +5 -0
- package/lib/server/resultNext.js.map +1 -1
- package/lib/server/runDetails.d.ts +2 -2
- package/lib/server/runDetails.js +54 -108
- package/lib/server/runDetails.js.map +1 -1
- package/lib/server/runEntrypoints.js +1 -1
- package/lib/server/runEntrypoints.js.map +1 -1
- package/lib/server/runLookup.js +1 -1
- package/lib/server/runLookup.js.map +1 -1
- package/lib/server/runTour.js +113 -30
- package/lib/server/runTour.js.map +1 -1
- package/lib/server/runTrace.d.ts +22 -0
- package/lib/server/runTrace.js +293 -63
- package/lib/server/runTrace.js.map +1 -1
- package/lib/structures/ITtscGraphDump.d.ts +13 -13
- package/lib/structures/ITtscGraphNode.d.ts +34 -0
- package/lib/structures/ITtscGraphTrace.d.ts +1 -1
- package/lib/view.js +18 -28
- package/lib/view.js.map +1 -1
- package/package.json +5 -5
- package/src/TtscGraphApplication.ts +5 -1
- package/src/bin.ts +13 -3
- package/src/index.ts +34 -27
- package/src/launcherArgs.ts +168 -0
- package/src/model/TtscGraphMemory.ts +34 -60
- package/src/model/TtscGraphNodeId.ts +77 -0
- package/src/model/TtscGraphSession.ts +228 -55
- package/src/model/TtscGraphSourceReader.ts +117 -0
- package/src/model/loadGraph.ts +4 -4
- package/src/reduce.ts +136 -31
- package/src/server/createServer.ts +12 -2
- package/src/server/pathPolicy.ts +10 -1
- package/src/server/resolveHandle.ts +21 -22
- package/src/server/resultAudit.ts +64 -33
- package/src/server/resultNext.ts +6 -0
- package/src/server/runDetails.ts +57 -113
- package/src/server/runEntrypoints.ts +1 -1
- package/src/server/runLookup.ts +1 -1
- package/src/server/runTour.ts +133 -39
- package/src/server/runTrace.ts +401 -65
- package/src/structures/ITtscGraphDump.ts +13 -13
- package/src/structures/ITtscGraphNode.ts +40 -0
- package/src/structures/ITtscGraphTrace.ts +1 -1
- package/src/view.ts +25 -23
|
@@ -78,7 +78,9 @@ class TtscGraphApplication {
|
|
|
78
78
|
// not the walk-bounded-and-marked shape RESULT_AUDIT states.
|
|
79
79
|
const r = (0, runDetails_1.runDetails)(graph, props.request);
|
|
80
80
|
return {
|
|
81
|
-
audit:
|
|
81
|
+
audit: r.membersCapped === true
|
|
82
|
+
? resultAudit_1.RESULT_AUDIT_DETAILS_CAPPED
|
|
83
|
+
: resultAudit_1.RESULT_AUDIT_DETAILS,
|
|
82
84
|
next: r.next,
|
|
83
85
|
result: r.result,
|
|
84
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TtscGraphApplication.js","sourceRoot":"","sources":["../src/TtscGraphApplication.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"TtscGraphApplication.js","sourceRoot":"","sources":["../src/TtscGraphApplication.ts"],"names":[],"mappings":"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"}
|
package/lib/bin.js
CHANGED
|
@@ -2,8 +2,20 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
const index_1 = require("./index");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const launcherArgs_1 = require("./launcherArgs");
|
|
6
|
+
try {
|
|
7
|
+
const code = (0, index_1.runGraph)(process.argv.slice(2));
|
|
8
|
+
if (typeof code === "number") {
|
|
9
|
+
process.exitCode = code;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
if (error instanceof launcherArgs_1.GraphArgumentError) {
|
|
14
|
+
process.stderr.write(`@ttsc/graph: ${error.message}\n`);
|
|
15
|
+
process.exitCode = 2;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
8
20
|
}
|
|
9
21
|
//# sourceMappingURL=bin.js.map
|
package/lib/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";;;AAEA,mCAAmC;AACnC,iDAAoD;AAEpD,IAAI,CAAC;IACH,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,iCAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
/** What a graph result says about where its facts came from. */
|
|
2
|
-
export { RESULT_AUDIT, RESULT_AUDIT_DETAILS, RESULT_AUDIT_ESCAPE, RESULT_AUDIT_SELECTION, } from "./server/resultAudit";
|
|
2
|
+
export { RESULT_AUDIT, RESULT_AUDIT_DETAILS, RESULT_AUDIT_DETAILS_CAPPED, RESULT_AUDIT_ESCAPE, RESULT_AUDIT_SELECTION, } from "./server/resultAudit";
|
|
3
3
|
export { resolveGraphBinary } from "./resolveGraphBinary";
|
|
4
|
+
/**
|
|
5
|
+
* The viewer reduction the `view` command runs before serving a payload.
|
|
6
|
+
*
|
|
7
|
+
* Exported because it is one of three copies of the same pure transform — the
|
|
8
|
+
* website's uploaded-dump viewer and the benchmark viewer hold the others — and
|
|
9
|
+
* a shared policy that cannot be measured from outside the package drifts. It
|
|
10
|
+
* already did: two of them filtered git-ignored generated code and this one did
|
|
11
|
+
* not.
|
|
12
|
+
*/
|
|
13
|
+
export { reduce } from "./reduce";
|
|
14
|
+
export type { RawDump, RawEdge, RawNode, ViewerPayload } from "./reduce";
|
|
4
15
|
export { loadGraph } from "./model/loadGraph";
|
|
5
|
-
export { TtscGraphSession } from "./model/TtscGraphSession";
|
|
16
|
+
export { TtscGraphSession, type TtscGraphRequestOptions, type TtscGraphSessionOptions, } from "./model/TtscGraphSession";
|
|
6
17
|
/**
|
|
7
18
|
* Run the `@ttsc/graph` launcher.
|
|
8
19
|
*
|
package/lib/index.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TtscGraphSession = exports.loadGraph = exports.resolveGraphBinary = exports.RESULT_AUDIT_SELECTION = exports.RESULT_AUDIT_ESCAPE = exports.RESULT_AUDIT_DETAILS = exports.RESULT_AUDIT = void 0;
|
|
3
|
+
exports.TtscGraphSession = exports.loadGraph = exports.reduce = exports.resolveGraphBinary = exports.RESULT_AUDIT_SELECTION = exports.RESULT_AUDIT_ESCAPE = exports.RESULT_AUDIT_DETAILS_CAPPED = exports.RESULT_AUDIT_DETAILS = exports.RESULT_AUDIT = void 0;
|
|
7
4
|
exports.runGraph = runGraph;
|
|
8
5
|
const node_child_process_1 = require("node:child_process");
|
|
9
|
-
const
|
|
6
|
+
const launcherArgs_1 = require("./launcherArgs");
|
|
10
7
|
const nativeExecutable_1 = require("./nativeExecutable");
|
|
11
8
|
const resolveGraphBinary_1 = require("./resolveGraphBinary");
|
|
12
9
|
const startServer_1 = require("./server/startServer");
|
|
@@ -15,6 +12,7 @@ const view_1 = require("./view");
|
|
|
15
12
|
var resultAudit_1 = require("./server/resultAudit");
|
|
16
13
|
Object.defineProperty(exports, "RESULT_AUDIT", { enumerable: true, get: function () { return resultAudit_1.RESULT_AUDIT; } });
|
|
17
14
|
Object.defineProperty(exports, "RESULT_AUDIT_DETAILS", { enumerable: true, get: function () { return resultAudit_1.RESULT_AUDIT_DETAILS; } });
|
|
15
|
+
Object.defineProperty(exports, "RESULT_AUDIT_DETAILS_CAPPED", { enumerable: true, get: function () { return resultAudit_1.RESULT_AUDIT_DETAILS_CAPPED; } });
|
|
18
16
|
Object.defineProperty(exports, "RESULT_AUDIT_ESCAPE", { enumerable: true, get: function () { return resultAudit_1.RESULT_AUDIT_ESCAPE; } });
|
|
19
17
|
Object.defineProperty(exports, "RESULT_AUDIT_SELECTION", { enumerable: true, get: function () { return resultAudit_1.RESULT_AUDIT_SELECTION; } });
|
|
20
18
|
// Programmatic entry points. Each resolves its native binary from the project
|
|
@@ -23,6 +21,17 @@ Object.defineProperty(exports, "RESULT_AUDIT_SELECTION", { enumerable: true, get
|
|
|
23
21
|
// found under that project's installed `ttsc`.
|
|
24
22
|
var resolveGraphBinary_2 = require("./resolveGraphBinary");
|
|
25
23
|
Object.defineProperty(exports, "resolveGraphBinary", { enumerable: true, get: function () { return resolveGraphBinary_2.resolveGraphBinary; } });
|
|
24
|
+
/**
|
|
25
|
+
* The viewer reduction the `view` command runs before serving a payload.
|
|
26
|
+
*
|
|
27
|
+
* Exported because it is one of three copies of the same pure transform — the
|
|
28
|
+
* website's uploaded-dump viewer and the benchmark viewer hold the others — and
|
|
29
|
+
* a shared policy that cannot be measured from outside the package drifts. It
|
|
30
|
+
* already did: two of them filtered git-ignored generated code and this one did
|
|
31
|
+
* not.
|
|
32
|
+
*/
|
|
33
|
+
var reduce_1 = require("./reduce");
|
|
34
|
+
Object.defineProperty(exports, "reduce", { enumerable: true, get: function () { return reduce_1.reduce; } });
|
|
26
35
|
var loadGraph_1 = require("./model/loadGraph");
|
|
27
36
|
Object.defineProperty(exports, "loadGraph", { enumerable: true, get: function () { return loadGraph_1.loadGraph; } });
|
|
28
37
|
var TtscGraphSession_1 = require("./model/TtscGraphSession");
|
|
@@ -30,27 +39,12 @@ Object.defineProperty(exports, "TtscGraphSession", { enumerable: true, get: func
|
|
|
30
39
|
// The server version reported in the MCP handshake; read from this package.
|
|
31
40
|
const VERSION = require("../package.json")
|
|
32
41
|
.version;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
let cwd = process.cwd();
|
|
40
|
-
let tsconfig = "tsconfig.json";
|
|
41
|
-
for (let i = 0; i < argv.length; i++) {
|
|
42
|
-
const arg = argv[i];
|
|
43
|
-
if (arg === "--cwd" && i + 1 < argv.length)
|
|
44
|
-
cwd = argv[++i];
|
|
45
|
-
else if (arg.startsWith("--cwd="))
|
|
46
|
-
cwd = arg.slice("--cwd=".length);
|
|
47
|
-
else if (arg === "--tsconfig" && i + 1 < argv.length)
|
|
48
|
-
tsconfig = argv[++i];
|
|
49
|
-
else if (arg.startsWith("--tsconfig="))
|
|
50
|
-
tsconfig = arg.slice("--tsconfig=".length);
|
|
51
|
-
}
|
|
52
|
-
return { cwd: node_path_1.default.resolve(cwd), tsconfig };
|
|
53
|
-
}
|
|
42
|
+
const DUMP_OPTIONS = [
|
|
43
|
+
{ key: "cwd", flags: ["--cwd", "-cwd"], kind: "value" },
|
|
44
|
+
{ key: "tsconfig", flags: ["--tsconfig", "-tsconfig"], kind: "value" },
|
|
45
|
+
{ key: "pretty", flags: ["--pretty", "-pretty"], kind: "boolean" },
|
|
46
|
+
{ key: "help", flags: ["--help", "-help", "-h"], kind: "flag" },
|
|
47
|
+
];
|
|
54
48
|
/**
|
|
55
49
|
* Run the `@ttsc/graph` launcher.
|
|
56
50
|
*
|
|
@@ -66,8 +60,8 @@ function runGraph(argv = process.argv.slice(2)) {
|
|
|
66
60
|
if (argv[0] === "view")
|
|
67
61
|
return (0, view_1.runView)(argv.slice(1));
|
|
68
62
|
if (argv[0] === "dump")
|
|
69
|
-
return runDump(argv);
|
|
70
|
-
const { cwd, tsconfig } =
|
|
63
|
+
return runDump(argv.slice(1));
|
|
64
|
+
const { cwd, tsconfig } = (0, launcherArgs_1.projectOptions)((0, launcherArgs_1.parseLauncherOptions)(argv, launcherArgs_1.PROJECT_OPTIONS));
|
|
71
65
|
void (0, startServer_1.startServer)({ cwd, tsconfig, version: VERSION }).catch((error) => {
|
|
72
66
|
process.stderr.write(`@ttsc/graph: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
73
67
|
process.exit(1);
|
|
@@ -80,7 +74,7 @@ function runGraph(argv = process.argv.slice(2)) {
|
|
|
80
74
|
function runDump(argv) {
|
|
81
75
|
// Resolve the native binary from the target project the caller named with
|
|
82
76
|
// `--cwd`, not from wherever the launcher process happened to start.
|
|
83
|
-
const { cwd } =
|
|
77
|
+
const { cwd } = (0, launcherArgs_1.projectOptions)((0, launcherArgs_1.parseLauncherOptions)(argv, DUMP_OPTIONS));
|
|
84
78
|
const binary = (0, resolveGraphBinary_1.resolveGraphBinary)(process.env, cwd);
|
|
85
79
|
if (binary === null) {
|
|
86
80
|
process.stderr.write("@ttsc/graph: could not resolve the ttscgraph binary. " +
|
|
@@ -89,7 +83,7 @@ function runDump(argv) {
|
|
|
89
83
|
return 1;
|
|
90
84
|
}
|
|
91
85
|
(0, nativeExecutable_1.ensureExecutable)(binary);
|
|
92
|
-
const result = (0, node_child_process_1.spawnSync)(binary, [...argv], {
|
|
86
|
+
const result = (0, node_child_process_1.spawnSync)(binary, ["dump", ...argv], {
|
|
93
87
|
stdio: "inherit",
|
|
94
88
|
windowsHide: true,
|
|
95
89
|
});
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare class GraphArgumentError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
type OptionKind = "value" | "flag" | "boolean";
|
|
5
|
+
export interface ILauncherOption {
|
|
6
|
+
key: string;
|
|
7
|
+
flags: readonly string[];
|
|
8
|
+
kind: OptionKind;
|
|
9
|
+
}
|
|
10
|
+
export type ParsedLauncherOptions = ReadonlyMap<string, string | boolean>;
|
|
11
|
+
export interface IProjectOptions {
|
|
12
|
+
cwd: string;
|
|
13
|
+
tsconfig: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const PROJECT_OPTIONS: readonly ILauncherOption[];
|
|
16
|
+
/** Parse one complete launcher argument vector and reject every unknown token. */
|
|
17
|
+
export declare function parseLauncherOptions(argv: readonly string[], definitions: readonly ILauncherOption[]): ParsedLauncherOptions;
|
|
18
|
+
/** Resolve the two project-selection values shared by every launcher lane. */
|
|
19
|
+
export declare function projectOptions(values: ParsedLauncherOptions): IProjectOptions;
|
|
20
|
+
/** Read a bounded non-negative integer option without JavaScript coercion. */
|
|
21
|
+
export declare function nonNegativeIntegerOption(values: ParsedLauncherOptions, key: string, maximum: number): number;
|
|
22
|
+
/** Read a bounded positive integer option without JavaScript coercion. */
|
|
23
|
+
export declare function positiveIntegerOption(values: ParsedLauncherOptions, key: string, maximum: number): number;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PROJECT_OPTIONS = exports.GraphArgumentError = void 0;
|
|
7
|
+
exports.parseLauncherOptions = parseLauncherOptions;
|
|
8
|
+
exports.projectOptions = projectOptions;
|
|
9
|
+
exports.nonNegativeIntegerOption = nonNegativeIntegerOption;
|
|
10
|
+
exports.positiveIntegerOption = positiveIntegerOption;
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
class GraphArgumentError extends Error {
|
|
13
|
+
constructor(message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = "GraphArgumentError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.GraphArgumentError = GraphArgumentError;
|
|
19
|
+
exports.PROJECT_OPTIONS = [
|
|
20
|
+
{ key: "cwd", flags: ["--cwd"], kind: "value" },
|
|
21
|
+
{ key: "tsconfig", flags: ["--tsconfig"], kind: "value" },
|
|
22
|
+
];
|
|
23
|
+
/** Parse one complete launcher argument vector and reject every unknown token. */
|
|
24
|
+
function parseLauncherOptions(argv, definitions) {
|
|
25
|
+
const flags = new Map();
|
|
26
|
+
for (const definition of definitions) {
|
|
27
|
+
for (const flag of definition.flags)
|
|
28
|
+
flags.set(flag, definition);
|
|
29
|
+
}
|
|
30
|
+
const parsed = new Map();
|
|
31
|
+
for (let i = 0; i < argv.length; i++) {
|
|
32
|
+
const arg = argv[i];
|
|
33
|
+
const exact = flags.get(arg);
|
|
34
|
+
if (exact !== undefined) {
|
|
35
|
+
if (exact.kind === "value") {
|
|
36
|
+
const value = argv[++i];
|
|
37
|
+
if (value === undefined || value.startsWith("-")) {
|
|
38
|
+
throw new GraphArgumentError(`${arg} requires a non-empty value`);
|
|
39
|
+
}
|
|
40
|
+
parsed.set(exact.key, requireValue(arg, value));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
parsed.set(exact.key, true);
|
|
44
|
+
}
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const equals = findEqualsOption(arg, flags);
|
|
48
|
+
if (equals === undefined) {
|
|
49
|
+
throw new GraphArgumentError(`unknown option ${arg}`);
|
|
50
|
+
}
|
|
51
|
+
const { definition, flag, value } = equals;
|
|
52
|
+
if (definition.kind === "flag") {
|
|
53
|
+
throw new GraphArgumentError(`${flag} does not take a value`);
|
|
54
|
+
}
|
|
55
|
+
if (definition.kind === "boolean") {
|
|
56
|
+
parsed.set(definition.key, parseBoolean(flag, value));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
parsed.set(definition.key, requireValue(flag, value));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return parsed;
|
|
63
|
+
}
|
|
64
|
+
/** Resolve the two project-selection values shared by every launcher lane. */
|
|
65
|
+
function projectOptions(values) {
|
|
66
|
+
return {
|
|
67
|
+
cwd: node_path_1.default.resolve(stringValue(values, "cwd") ?? process.cwd()),
|
|
68
|
+
tsconfig: stringValue(values, "tsconfig") ?? "tsconfig.json",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** Read a bounded non-negative integer option without JavaScript coercion. */
|
|
72
|
+
function nonNegativeIntegerOption(values, key, maximum) {
|
|
73
|
+
const value = stringValue(values, key);
|
|
74
|
+
if (value === undefined) {
|
|
75
|
+
throw new Error(`Missing required parsed option ${key}`);
|
|
76
|
+
}
|
|
77
|
+
if (!/^\d+$/.test(value)) {
|
|
78
|
+
throw new GraphArgumentError(`${optionName(key)} must be an integer`);
|
|
79
|
+
}
|
|
80
|
+
const number = Number(value);
|
|
81
|
+
if (!Number.isSafeInteger(number) || number > maximum) {
|
|
82
|
+
throw new GraphArgumentError(`${optionName(key)} must be between 0 and ${maximum}`);
|
|
83
|
+
}
|
|
84
|
+
return number;
|
|
85
|
+
}
|
|
86
|
+
/** Read a bounded positive integer option without JavaScript coercion. */
|
|
87
|
+
function positiveIntegerOption(values, key, maximum) {
|
|
88
|
+
const value = nonNegativeIntegerOption(values, key, maximum);
|
|
89
|
+
if (value === 0) {
|
|
90
|
+
throw new GraphArgumentError(`${optionName(key)} must be greater than 0`);
|
|
91
|
+
}
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
function findEqualsOption(arg, flags) {
|
|
95
|
+
for (const [flag, definition] of flags) {
|
|
96
|
+
const prefix = `${flag}=`;
|
|
97
|
+
if (arg.startsWith(prefix)) {
|
|
98
|
+
return { definition, flag, value: arg.slice(prefix.length) };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
function requireValue(flag, value) {
|
|
104
|
+
if (value.trim() === "") {
|
|
105
|
+
throw new GraphArgumentError(`${flag} requires a non-empty value`);
|
|
106
|
+
}
|
|
107
|
+
return value;
|
|
108
|
+
}
|
|
109
|
+
function parseBoolean(flag, value) {
|
|
110
|
+
switch (value) {
|
|
111
|
+
case "1":
|
|
112
|
+
case "t":
|
|
113
|
+
case "T":
|
|
114
|
+
case "TRUE":
|
|
115
|
+
case "true":
|
|
116
|
+
case "True":
|
|
117
|
+
return true;
|
|
118
|
+
case "0":
|
|
119
|
+
case "f":
|
|
120
|
+
case "F":
|
|
121
|
+
case "FALSE":
|
|
122
|
+
case "false":
|
|
123
|
+
case "False":
|
|
124
|
+
return false;
|
|
125
|
+
default:
|
|
126
|
+
throw new GraphArgumentError(`${flag} requires a boolean value`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function stringValue(values, key) {
|
|
130
|
+
const value = values.get(key);
|
|
131
|
+
return typeof value === "string" ? value : undefined;
|
|
132
|
+
}
|
|
133
|
+
function optionName(key) {
|
|
134
|
+
return `--${key.replaceAll("_", "-")}`;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=launcherArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcherArgs.js","sourceRoot":"","sources":["../src/launcherArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { ITtscGraphDump } from "../structures/ITtscGraphDump";
|
|
2
2
|
import { ITtscGraphEdge } from "../structures/ITtscGraphEdge";
|
|
3
3
|
import { ITtscGraphNode } from "../structures/ITtscGraphNode";
|
|
4
|
+
import { TtscGraphSourceReader } from "./TtscGraphSourceReader";
|
|
4
5
|
/**
|
|
5
6
|
* The in-memory resident graph the MCP tools answer from.
|
|
6
7
|
*
|
|
7
8
|
* It loads one `ttscgraph dump` — the checker-resolved fact graph — then
|
|
8
9
|
* synthesizes the structural relationships the dump deliberately leaves to this
|
|
9
|
-
* layer: `file` container nodes
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* layer: `file` container nodes and the `contains` ownership tree, plus the
|
|
11
|
+
* refinement of a class-member `variable` to a `property`. Export and member
|
|
12
|
+
* implementation relationships are checker facts already present in the dump.
|
|
13
|
+
* Every tool call is then a lookup or traversal over the indexes built here;
|
|
14
|
+
* nothing recompiles.
|
|
13
15
|
*/
|
|
14
16
|
export declare class TtscGraphMemory {
|
|
15
17
|
private readonly byId;
|
|
@@ -21,8 +23,10 @@ export declare class TtscGraphMemory {
|
|
|
21
23
|
readonly project: string;
|
|
22
24
|
/** Every node, raw plus synthesized (file containers). */
|
|
23
25
|
readonly nodes: readonly ITtscGraphNode[];
|
|
24
|
-
/** Every edge, raw plus synthesized
|
|
26
|
+
/** Every edge, raw plus synthesized containment. */
|
|
25
27
|
readonly edges: readonly ITtscGraphEdge[];
|
|
28
|
+
/** Provenance-gated source display facts cached for this exact snapshot. */
|
|
29
|
+
readonly source: TtscGraphSourceReader;
|
|
26
30
|
private constructor();
|
|
27
31
|
/** Build a model from a parsed dump, synthesizing structural relationships. */
|
|
28
32
|
static from(dump: ITtscGraphDump): TtscGraphMemory;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TtscGraphMemory = void 0;
|
|
4
|
+
const TtscGraphNodeId_1 = require("./TtscGraphNodeId");
|
|
5
|
+
const TtscGraphSourceReader_1 = require("./TtscGraphSourceReader");
|
|
4
6
|
/**
|
|
5
7
|
* The in-memory resident graph the MCP tools answer from.
|
|
6
8
|
*
|
|
7
9
|
* It loads one `ttscgraph dump` — the checker-resolved fact graph — then
|
|
8
10
|
* synthesizes the structural relationships the dump deliberately leaves to this
|
|
9
|
-
* layer: `file` container nodes
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* layer: `file` container nodes and the `contains` ownership tree, plus the
|
|
12
|
+
* refinement of a class-member `variable` to a `property`. Export and member
|
|
13
|
+
* implementation relationships are checker facts already present in the dump.
|
|
14
|
+
* Every tool call is then a lookup or traversal over the indexes built here;
|
|
15
|
+
* nothing recompiles.
|
|
13
16
|
*/
|
|
14
17
|
class TtscGraphMemory {
|
|
15
18
|
byId;
|
|
@@ -21,12 +24,15 @@ class TtscGraphMemory {
|
|
|
21
24
|
project;
|
|
22
25
|
/** Every node, raw plus synthesized (file containers). */
|
|
23
26
|
nodes;
|
|
24
|
-
/** Every edge, raw plus synthesized
|
|
27
|
+
/** Every edge, raw plus synthesized containment. */
|
|
25
28
|
edges;
|
|
26
|
-
|
|
29
|
+
/** Provenance-gated source display facts cached for this exact snapshot. */
|
|
30
|
+
source;
|
|
31
|
+
constructor(project, nodes, edges, provenance) {
|
|
27
32
|
this.project = project;
|
|
28
33
|
this.nodes = nodes;
|
|
29
34
|
this.edges = edges;
|
|
35
|
+
this.source = new TtscGraphSourceReader_1.TtscGraphSourceReader(project, provenance);
|
|
30
36
|
this.byId = new Map(nodes.map((n) => [n.id, n]));
|
|
31
37
|
this.byNameIndex = new Map();
|
|
32
38
|
this.bySymbolIndex = new Map();
|
|
@@ -53,7 +59,7 @@ class TtscGraphMemory {
|
|
|
53
59
|
/** Build a model from a parsed dump, synthesizing structural relationships. */
|
|
54
60
|
static from(dump) {
|
|
55
61
|
const { nodes, edges } = synthesize(dump);
|
|
56
|
-
return new TtscGraphMemory(dump.project, nodes, edges);
|
|
62
|
+
return new TtscGraphMemory(dump.project, nodes, edges, dump.provenance);
|
|
57
63
|
}
|
|
58
64
|
/** The node with this id, or undefined. */
|
|
59
65
|
node(id) {
|
|
@@ -97,12 +103,23 @@ function push(map, key, value) {
|
|
|
97
103
|
function keyOf(node) {
|
|
98
104
|
return node.qualifiedName ?? node.name;
|
|
99
105
|
}
|
|
100
|
-
/**
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
/**
|
|
107
|
+
* The owner key derived from facts the producer serialized separately.
|
|
108
|
+
*
|
|
109
|
+
* A quoted member named `"a.b"` has Name `a.b` and QualifiedName `Box.a.b`.
|
|
110
|
+
* Cutting the qualified name at its last dot invents owner `Box.a`; removing
|
|
111
|
+
* the exact `.${name}` suffix instead preserves the producer's real boundary.
|
|
112
|
+
*/
|
|
113
|
+
function ownerKey(node) {
|
|
114
|
+
if (node.qualifiedName === undefined || node.qualifiedName === node.name)
|
|
115
|
+
return undefined;
|
|
116
|
+
const suffix = `.${node.name}`;
|
|
117
|
+
if (!node.qualifiedName.endsWith(suffix))
|
|
118
|
+
return undefined;
|
|
119
|
+
const owner = node.qualifiedName.slice(0, -suffix.length);
|
|
120
|
+
return owner === "" ? undefined : owner;
|
|
104
121
|
}
|
|
105
|
-
/** A file's id and node name from its
|
|
122
|
+
/** A file's id and node name from its schema-v6 path coordinate. */
|
|
106
123
|
function fileNodeId(file) {
|
|
107
124
|
return file;
|
|
108
125
|
}
|
|
@@ -119,8 +136,7 @@ function spanIn(span, file) {
|
|
|
119
136
|
* file node's id is the path itself.
|
|
120
137
|
*/
|
|
121
138
|
function fileOfNodeId(id) {
|
|
122
|
-
|
|
123
|
-
return hash === -1 ? id : id.slice(0, hash);
|
|
139
|
+
return (0, TtscGraphNodeId_1.ttscGraphNodeIdPath)(id) ?? id;
|
|
124
140
|
}
|
|
125
141
|
function basename(file) {
|
|
126
142
|
const slash = file.lastIndexOf("/");
|
|
@@ -128,8 +144,8 @@ function basename(file) {
|
|
|
128
144
|
}
|
|
129
145
|
/**
|
|
130
146
|
* Derive the structural layer from a dump's faithful facts: refine class-member
|
|
131
|
-
* variables to properties, add a `file` node per workspace source,
|
|
132
|
-
*
|
|
147
|
+
* variables to properties, add a `file` node per workspace source, connect the
|
|
148
|
+
* `contains` ownership tree, and re-anchor compiler-owned `exports` edges.
|
|
133
149
|
*/
|
|
134
150
|
function synthesize(dump) {
|
|
135
151
|
// A module node is the dump's name for a source file's export surface, and a
|
|
@@ -179,8 +195,8 @@ function synthesize(dump) {
|
|
|
179
195
|
byFileKey.set(node.file + "\0" + keyOf(node), node);
|
|
180
196
|
}
|
|
181
197
|
const owner = (node) => {
|
|
182
|
-
const parent = ownerKey(
|
|
183
|
-
if (parent ===
|
|
198
|
+
const parent = ownerKey(node);
|
|
199
|
+
if (parent === undefined)
|
|
184
200
|
return undefined;
|
|
185
201
|
return byFileKey.get(node.file + "\0" + parent);
|
|
186
202
|
};
|
|
@@ -224,13 +240,10 @@ function synthesize(dump) {
|
|
|
224
240
|
// public, which is the fact that cannot tell a package's front door from its
|
|
225
241
|
// legacy subpath.
|
|
226
242
|
const structural = [];
|
|
227
|
-
const membersByOwner = new Map();
|
|
228
243
|
for (const node of nodes) {
|
|
229
244
|
if (node.external || node.file === "")
|
|
230
245
|
continue;
|
|
231
246
|
const parent = owner(node);
|
|
232
|
-
if (parent !== undefined)
|
|
233
|
-
push(membersByOwner, parent.id, node);
|
|
234
247
|
const container = parent ? parent.id : fileNodeId(node.file);
|
|
235
248
|
structural.push({
|
|
236
249
|
from: container,
|
|
@@ -238,45 +251,9 @@ function synthesize(dump) {
|
|
|
238
251
|
kind: "contains",
|
|
239
252
|
});
|
|
240
253
|
}
|
|
241
|
-
const synthesized = [...edges, ...structural];
|
|
242
|
-
const edgeKeys = new Set(synthesized.map((edge) => `${edge.kind}\0${edge.from}\0${edge.to}`));
|
|
243
|
-
const byId = new Map(nodes.map((node) => [node.id, node]));
|
|
244
|
-
for (const edge of edges) {
|
|
245
|
-
const kind = edge.kind === "implements"
|
|
246
|
-
? "implements"
|
|
247
|
-
: edge.kind === "extends"
|
|
248
|
-
? "overrides"
|
|
249
|
-
: undefined;
|
|
250
|
-
if (kind === undefined)
|
|
251
|
-
continue;
|
|
252
|
-
const derived = byId.get(edge.from);
|
|
253
|
-
const base = byId.get(edge.to);
|
|
254
|
-
if (derived === undefined || base === undefined)
|
|
255
|
-
continue;
|
|
256
|
-
const derivedMembers = membersByOwner.get(derived.id) ?? [];
|
|
257
|
-
const baseMembers = membersByOwner.get(base.id) ?? [];
|
|
258
|
-
for (const baseMember of baseMembers) {
|
|
259
|
-
const derivedMember = derivedMembers.find((member) => member.name === baseMember.name &&
|
|
260
|
-
implementationMemberKinds.has(member.kind) &&
|
|
261
|
-
implementationMemberKinds.has(baseMember.kind));
|
|
262
|
-
if (derivedMember === undefined)
|
|
263
|
-
continue;
|
|
264
|
-
const key = `${kind}\0${derivedMember.id}\0${baseMember.id}`;
|
|
265
|
-
if (edgeKeys.has(key))
|
|
266
|
-
continue;
|
|
267
|
-
edgeKeys.add(key);
|
|
268
|
-
synthesized.push({
|
|
269
|
-
from: derivedMember.id,
|
|
270
|
-
to: baseMember.id,
|
|
271
|
-
kind,
|
|
272
|
-
evidence: derivedMember.implementation ?? derivedMember.evidence,
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
254
|
return {
|
|
277
255
|
nodes: [...nodes, ...fileNodes.values()],
|
|
278
|
-
edges:
|
|
256
|
+
edges: [...edges, ...structural],
|
|
279
257
|
};
|
|
280
258
|
}
|
|
281
|
-
const implementationMemberKinds = new Set(["method", "property"]);
|
|
282
259
|
//# sourceMappingURL=TtscGraphMemory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TtscGraphMemory.js","sourceRoot":"","sources":["../../src/model/TtscGraphMemory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"TtscGraphMemory.js","sourceRoot":"","sources":["../../src/model/TtscGraphMemory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The structured components carried by a graph symbol id. */
|
|
2
|
+
export interface ITtscGraphNodeId {
|
|
3
|
+
path: string;
|
|
4
|
+
name: string;
|
|
5
|
+
kind?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Decode the graph's position-invariant `path#name:kind` identity.
|
|
9
|
+
*
|
|
10
|
+
* The producer quotes `#` and `\\` inside path and name. This reader also
|
|
11
|
+
* accepts pre-codec ordinary ids, so a current package can read an older dump.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseTtscGraphNodeId(id: string): ITtscGraphNodeId | undefined;
|
|
14
|
+
/** Encode a symbol identity without making its component boundaries ambiguous. */
|
|
15
|
+
export declare function writeTtscGraphNodeId(path: string, name: string, kind: string): string;
|
|
16
|
+
/** Return the raw path component when id is a symbol identity. */
|
|
17
|
+
export declare function ttscGraphNodeIdPath(id: string): string | undefined;
|