@ttsc/graph 0.31.5 → 0.32.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 +1 -1
- package/lib/TtscGraphLauncherArguments.js +4 -7
- package/lib/TtscGraphLauncherArguments.js.map +1 -1
- package/lib/internal/InstalledGraphBinary.d.ts +73 -0
- package/lib/internal/InstalledGraphBinary.js +103 -0
- package/lib/internal/InstalledGraphBinary.js.map +1 -0
- package/lib/model/TtscGraphProjection.js.map +1 -1
- package/lib/model/TtscGraphProtocol.js +2 -2
- package/lib/model/TtscGraphProtocol.js.map +1 -1
- package/lib/model/TtscGraphSession.js +6 -9
- package/lib/model/TtscGraphSession.js.map +1 -1
- package/lib/model/TtscGraphSessionOptions.d.ts +4 -1
- package/lib/model/TtscGraphSessionState.js +2 -2
- package/lib/model/TtscGraphSessionState.js.map +1 -1
- package/lib/model/loadGraph.d.ts +3 -3
- package/lib/model/loadGraph.js +8 -11
- package/lib/model/loadGraph.js.map +1 -1
- package/lib/resolveGraphBinary.d.ts +22 -24
- package/lib/resolveGraphBinary.js +26 -45
- package/lib/resolveGraphBinary.js.map +1 -1
- package/lib/runGraph.d.ts +1 -1
- package/lib/runGraph.js +4 -4
- package/lib/runGraph.js.map +1 -1
- package/lib/view.js +5 -6
- package/lib/view.js.map +1 -1
- package/package.json +13 -4
- package/src/TtscGraphLauncherArguments.ts +4 -8
- package/src/internal/InstalledGraphBinary.ts +102 -0
- package/src/model/TtscGraphProjection.ts +18 -16
- package/src/model/TtscGraphProtocol.ts +2 -2
- package/src/model/TtscGraphSession.ts +5 -12
- package/src/model/TtscGraphSessionOptions.ts +4 -1
- package/src/model/TtscGraphSessionState.ts +2 -2
- package/src/model/loadGraph.ts +9 -15
- package/src/resolveGraphBinary.ts +26 -45
- package/src/runGraph.ts +4 -4
- package/src/view.ts +5 -8
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Resolve the
|
|
3
|
-
* located.
|
|
2
|
+
* Resolve the `ttscgraph` binary this `@ttsc/graph` release spawns, or `null`
|
|
3
|
+
* when it cannot be located.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* simply absent and answer from a graph missing facts it believes are there.
|
|
5
|
+
* The binary ships in `@ttsc/graph-<platform>-<arch>`, which `@ttsc/graph`
|
|
6
|
+
* lists as an exact-version optional dependency, so it is resolved from this
|
|
7
|
+
* package's own installation. The JavaScript client and the native producer
|
|
8
|
+
* therefore always come from one release, wherever the launcher was started.
|
|
9
|
+
* That pairing matters because node facts such as `literals` are resolved by
|
|
10
|
+
* the producer and ride the dump: a client reading an older producer would find
|
|
11
|
+
* those fields absent and answer from a graph missing facts it believes are
|
|
12
|
+
* there.
|
|
14
13
|
*
|
|
15
14
|
* Resolution order:
|
|
16
15
|
*
|
|
17
16
|
* 1. `TTSC_GRAPH_BINARY` env var, when set to an absolute path.
|
|
18
|
-
* 2.
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* `ttsc` installed under the target project it was asked to graph.
|
|
17
|
+
* 2. `@ttsc/graph-<platform>-<arch>/bin/ttscgraph[.exe]`, resolved from the
|
|
18
|
+
* installed `@ttsc/graph` package.
|
|
19
|
+
*
|
|
20
|
+
* `cwd` is still accepted so existing callers keep compiling. It no longer
|
|
21
|
+
* affects resolution: the binary used to come from the target project's `ttsc`
|
|
22
|
+
* platform package, and now belongs to `@ttsc/graph` itself.
|
|
25
23
|
*
|
|
26
|
-
* @evidence contracts/common.md#principled-implementation
|
|
27
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
28
|
-
* @evidence contracts/common.md#prohibited-implementation-shortcuts Resolution uses installed package
|
|
29
|
-
* @evidence contracts/common.md#meaningful-documentation Native paragraphs and the ordered list explain
|
|
30
|
-
* @evidence contracts/portability.md#os-neutral-implementation
|
|
24
|
+
* @evidence contracts/common.md#principled-implementation The installed-package resolver locates the exact-version platform dependency from this module's own location; an explicit absolute override has precedence.
|
|
25
|
+
* @evidence contracts/common.md#clear-and-simple-design The public function delegates to the one resolver every launcher, loader and session uses, anchored at this package's installation.
|
|
26
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Resolution uses the installed package contract rather than repository layouts or the target project's packages.
|
|
27
|
+
* @evidence contracts/common.md#meaningful-documentation Native paragraphs and the ordered list explain package ownership, override precedence and the retained but ignored cwd argument.
|
|
28
|
+
* @evidence contracts/portability.md#os-neutral-implementation The delegated resolver selects the platform/architecture package through Node module resolution; only Windows's executable suffix differs.
|
|
31
29
|
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources returns a path string and opens no handle.
|
|
32
|
-
* @evidenceExclude contracts/performance.md#efficient-algorithms performs
|
|
30
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms performs at most one module resolution.
|
|
33
31
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work resolves on every call and caches nothing, so a reinstall between calls is honored.
|
|
34
32
|
*/
|
|
35
33
|
export declare function resolveGraphBinary(env?: NodeJS.ProcessEnv, cwd?: string): string | null;
|
|
@@ -1,60 +1,41 @@
|
|
|
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
3
|
exports.resolveGraphBinary = resolveGraphBinary;
|
|
7
|
-
const
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
4
|
+
const InstalledGraphBinary_1 = require("./internal/InstalledGraphBinary");
|
|
9
5
|
/**
|
|
10
|
-
* Resolve the
|
|
11
|
-
* located.
|
|
6
|
+
* Resolve the `ttscgraph` binary this `@ttsc/graph` release spawns, or `null`
|
|
7
|
+
* when it cannot be located.
|
|
12
8
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* simply absent and answer from a graph missing facts it believes are there.
|
|
9
|
+
* The binary ships in `@ttsc/graph-<platform>-<arch>`, which `@ttsc/graph`
|
|
10
|
+
* lists as an exact-version optional dependency, so it is resolved from this
|
|
11
|
+
* package's own installation. The JavaScript client and the native producer
|
|
12
|
+
* therefore always come from one release, wherever the launcher was started.
|
|
13
|
+
* That pairing matters because node facts such as `literals` are resolved by
|
|
14
|
+
* the producer and ride the dump: a client reading an older producer would find
|
|
15
|
+
* those fields absent and answer from a graph missing facts it believes are
|
|
16
|
+
* there.
|
|
22
17
|
*
|
|
23
18
|
* Resolution order:
|
|
24
19
|
*
|
|
25
20
|
* 1. `TTSC_GRAPH_BINARY` env var, when set to an absolute path.
|
|
26
|
-
* 2.
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* `ttsc` installed under the target project it was asked to graph.
|
|
21
|
+
* 2. `@ttsc/graph-<platform>-<arch>/bin/ttscgraph[.exe]`, resolved from the
|
|
22
|
+
* installed `@ttsc/graph` package.
|
|
23
|
+
*
|
|
24
|
+
* `cwd` is still accepted so existing callers keep compiling. It no longer
|
|
25
|
+
* affects resolution: the binary used to come from the target project's `ttsc`
|
|
26
|
+
* platform package, and now belongs to `@ttsc/graph` itself.
|
|
33
27
|
*
|
|
34
|
-
* @evidence contracts/common.md#principled-implementation
|
|
35
|
-
* @evidence contracts/common.md#clear-and-simple-design
|
|
36
|
-
* @evidence contracts/common.md#prohibited-implementation-shortcuts Resolution uses installed package
|
|
37
|
-
* @evidence contracts/common.md#meaningful-documentation Native paragraphs and the ordered list explain
|
|
38
|
-
* @evidence contracts/portability.md#os-neutral-implementation
|
|
28
|
+
* @evidence contracts/common.md#principled-implementation The installed-package resolver locates the exact-version platform dependency from this module's own location; an explicit absolute override has precedence.
|
|
29
|
+
* @evidence contracts/common.md#clear-and-simple-design The public function delegates to the one resolver every launcher, loader and session uses, anchored at this package's installation.
|
|
30
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Resolution uses the installed package contract rather than repository layouts or the target project's packages.
|
|
31
|
+
* @evidence contracts/common.md#meaningful-documentation Native paragraphs and the ordered list explain package ownership, override precedence and the retained but ignored cwd argument.
|
|
32
|
+
* @evidence contracts/portability.md#os-neutral-implementation The delegated resolver selects the platform/architecture package through Node module resolution; only Windows's executable suffix differs.
|
|
39
33
|
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources returns a path string and opens no handle.
|
|
40
|
-
* @evidenceExclude contracts/performance.md#efficient-algorithms performs
|
|
34
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms performs at most one module resolution.
|
|
41
35
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work resolves on every call and caches nothing, so a reinstall between calls is honored.
|
|
42
36
|
*/
|
|
43
|
-
function resolveGraphBinary(env = process.env, cwd
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
const exe = process.platform === "win32" ? "ttscgraph.exe" : "ttscgraph";
|
|
48
|
-
try {
|
|
49
|
-
// Anchor package lookup at the absolute project root so a relative `--cwd`
|
|
50
|
-
// resolves the same way the native process interprets it.
|
|
51
|
-
const fromProject = (0, node_module_1.createRequire)(node_path_1.default.join(node_path_1.default.resolve(cwd), "package.json"));
|
|
52
|
-
const ttscPackageJson = fromProject.resolve("ttsc/package.json");
|
|
53
|
-
const fromTtsc = (0, node_module_1.createRequire)(ttscPackageJson);
|
|
54
|
-
return fromTtsc.resolve(`@ttsc/${process.platform}-${process.arch}/bin/${exe}`);
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
37
|
+
function resolveGraphBinary(env = process.env, cwd) {
|
|
38
|
+
void cwd;
|
|
39
|
+
return InstalledGraphBinary_1.InstalledGraphBinary.resolve(env, __filename);
|
|
59
40
|
}
|
|
60
41
|
//# sourceMappingURL=resolveGraphBinary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveGraphBinary.js","sourceRoot":"","sources":["../src/resolveGraphBinary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveGraphBinary.js","sourceRoot":"","sources":["../src/resolveGraphBinary.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,4BACE,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,GAAY;IAEZ,KAAK,GAAG,CAAC;IACT,OAAO,2CAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC"}
|
package/lib/runGraph.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @evidence contracts/common.md#clear-and-simple-design The launcher owns lane dispatch while viewer, server and native dump helpers own their respective execution boundaries.
|
|
14
14
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts A missing dump binary exposes only an explicitly qualified help summary; execution failures retain nonzero outcomes instead of fake graph answers.
|
|
15
15
|
* @evidence contracts/common.md#meaningful-documentation Native lane bullets explain observable CLI behavior and resident refresh ownership with a blank line before tags.
|
|
16
|
-
* @evidence contracts/portability.md#os-neutral-implementation Native lanes resolve
|
|
16
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native lanes resolve this package's installed platform binary and pass argv directly; stdio MCP uses Node transport APIs without shell path construction.
|
|
17
17
|
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources starts the stdio server (owned by startServer), runs a synchronous dump child to completion or hands over to runView, and keeps no handle itself.
|
|
18
18
|
* @evidenceExclude contracts/performance.md#efficient-algorithms dispatches on the first argv token to one lane and the lanes own the work.
|
|
19
19
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work runs one launcher lane per process invocation, so there is nothing to share.
|
package/lib/runGraph.js
CHANGED
|
@@ -26,7 +26,7 @@ const VERSION = require("../package.json")
|
|
|
26
26
|
* @evidence contracts/common.md#clear-and-simple-design The launcher owns lane dispatch while viewer, server and native dump helpers own their respective execution boundaries.
|
|
27
27
|
* @evidence contracts/common.md#prohibited-implementation-shortcuts A missing dump binary exposes only an explicitly qualified help summary; execution failures retain nonzero outcomes instead of fake graph answers.
|
|
28
28
|
* @evidence contracts/common.md#meaningful-documentation Native lane bullets explain observable CLI behavior and resident refresh ownership with a blank line before tags.
|
|
29
|
-
* @evidence contracts/portability.md#os-neutral-implementation Native lanes resolve
|
|
29
|
+
* @evidence contracts/portability.md#os-neutral-implementation Native lanes resolve this package's installed platform binary and pass argv directly; stdio MCP uses Node transport APIs without shell path construction.
|
|
30
30
|
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources starts the stdio server (owned by startServer), runs a synchronous dump child to completion or hands over to runView, and keeps no handle itself.
|
|
31
31
|
* @evidenceExclude contracts/performance.md#efficient-algorithms dispatches on the first argv token to one lane and the lanes own the work.
|
|
32
32
|
* @evidenceExclude contracts/performance.md#reuse-equivalent-work runs one launcher lane per process invocation, so there is nothing to share.
|
|
@@ -47,10 +47,10 @@ function runGraph(argv = process.argv.slice(2)) {
|
|
|
47
47
|
* on this process's stdout. Returns the child's exit code.
|
|
48
48
|
*/
|
|
49
49
|
function runDump(argv) {
|
|
50
|
-
//
|
|
51
|
-
//
|
|
50
|
+
// The producer belongs to this package's installation; `--cwd` only selects
|
|
51
|
+
// the project the native process graphs.
|
|
52
52
|
const { cwd, tsconfig, artifactsSpecified } = TtscGraphLauncherArguments_1.TtscGraphLauncherArguments.dump(argv);
|
|
53
|
-
const binary = (0, resolveGraphBinary_1.resolveGraphBinary)(process.env
|
|
53
|
+
const binary = (0, resolveGraphBinary_1.resolveGraphBinary)(process.env);
|
|
54
54
|
if (binary === null) {
|
|
55
55
|
// `ttscgraph` owns the flag contract, so a resolvable binary always answers
|
|
56
56
|
// `--help` itself and stays the single source of truth. It cannot answer
|
package/lib/runGraph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runGraph.js","sourceRoot":"","sources":["../src/runGraph.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,oEAAiE;AACjE,mEAA8D;AAC9D,yDAAsD;AACtD,6DAA0D;AAC1D,sDAAmD;AACnD,iCAAiC;AAEjC,4EAA4E;AAC5E,MAAM,OAAO,GAAY,OAAO,CAAC,iBAAiB,CAAyB;KACxE,OAAO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;GAmBG;AACH,kBACE,IAAI,GAAsB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,uDAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAA,yBAAW,EAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CACzD,CAAC,KAAc,EAAE,EAAE;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAuB;IACtC,
|
|
1
|
+
{"version":3,"file":"runGraph.js","sourceRoot":"","sources":["../src/runGraph.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAC1E,oEAAiE;AACjE,mEAA8D;AAC9D,yDAAsD;AACtD,6DAA0D;AAC1D,sDAAmD;AACnD,iCAAiC;AAEjC,4EAA4E;AAC5E,MAAM,OAAO,GAAY,OAAO,CAAC,iBAAiB,CAAyB;KACxE,OAAO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;GAmBG;AACH,kBACE,IAAI,GAAsB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,uDAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAA,yBAAW,EAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CACzD,CAAC,KAAc,EAAE,EAAE;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAuB;IACtC,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GACzC,uDAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,uDAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,IAAA,mCAAgB,EAAC,MAAM,CAAC,CAAC;IACzB,0EAA0E;IAC1E,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,SAAS,GAAG,kBAAkB;QAClC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAA,qCAAgB,EAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,qCAAiB,CAAC,SAAS,CACxC,MAAM,EACN,uDAA0B,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,EACpE;QACE,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,IAAI;KAClB,CACF,CAAC;IACF,MAAM,UAAU,GAAG,uDAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC;AACzB,CAAC"}
|
package/lib/view.js
CHANGED
|
@@ -10,6 +10,7 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
10
10
|
const TtscGraphLauncherArguments_1 = require("./TtscGraphLauncherArguments");
|
|
11
11
|
const TtscGraphViewSnapshot_1 = require("./TtscGraphViewSnapshot");
|
|
12
12
|
const GraphProcessTrace_1 = require("./internal/GraphProcessTrace");
|
|
13
|
+
const InstalledGraphBinary_1 = require("./internal/InstalledGraphBinary");
|
|
13
14
|
const publishedArtifacts_1 = require("./model/publishedArtifacts");
|
|
14
15
|
const nativeExecutable_1 = require("./nativeExecutable");
|
|
15
16
|
const reduce_1 = require("./reduce");
|
|
@@ -31,13 +32,11 @@ const resolveGraphBinary_1 = require("./resolveGraphBinary");
|
|
|
31
32
|
*/
|
|
32
33
|
function runView(argv) {
|
|
33
34
|
const opts = TtscGraphLauncherArguments_1.TtscGraphLauncherArguments.view(argv);
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
const binary = (0, resolveGraphBinary_1.resolveGraphBinary)(process.env
|
|
35
|
+
// The producer belongs to this package's installation; `--cwd` only selects
|
|
36
|
+
// the project the native process graphs.
|
|
37
|
+
const binary = (0, resolveGraphBinary_1.resolveGraphBinary)(process.env);
|
|
37
38
|
if (binary === null) {
|
|
38
|
-
process.stderr.write(
|
|
39
|
-
"Install `ttsc` so its platform package is present, " +
|
|
40
|
-
"or set TTSC_GRAPH_BINARY to an absolute path.\n");
|
|
39
|
+
process.stderr.write(`${InstalledGraphBinary_1.InstalledGraphBinary.missingMessage()}\n`);
|
|
41
40
|
return 1;
|
|
42
41
|
}
|
|
43
42
|
(0, nativeExecutable_1.ensureExecutable)(binary);
|
package/lib/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAE7B,0DAA6B;AAE7B,6EAA0E;AAC1E,mEAAgE;AAChE,oEAAiE;AACjE,mEAA8D;AAC9D,yDAA4E;AAC5E,qCAAkC;AAClC,6DAA0D;AAE1D;;;;;;;;;;;;;;GAcG;AACH,iBAAwB,IAAuB;IAC7C,MAAM,IAAI,GAAG,uDAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnD,
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AACzB,0DAA6B;AAE7B,0DAA6B;AAE7B,6EAA0E;AAC1E,mEAAgE;AAChE,oEAAiE;AACjE,0EAAuE;AACvE,mEAA8D;AAC9D,yDAA4E;AAC5E,qCAAkC;AAClC,6DAA0D;AAE1D;;;;;;;;;;;;;;GAcG;AACH,iBAAwB,IAAuB;IAC7C,MAAM,IAAI,GAAG,uDAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnD,4EAA4E;IAC5E,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,2CAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAA,mCAAgB,EAAC,MAAM,CAAC,CAAC;IAEzB,IAAI,QAAqE,CAAC;IAC1E,IAAI,KAAK,GACP,SAAS,CAAC;IACZ,IAAI,OAAqC,CAAC;IAC1C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,QAAQ,GAAG,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,MAAM,GAAG,mBAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,KAAK,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,2BAA2B;gBAC3C,UAAU,EAAE,OAAO;aACpB,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,cAAc,EAAE,uCAAuC;aACxD,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,kBAAkB,GAAG,CAAC,KAAY,EAAQ,EAAE;QAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iDAAiD,QAAQ,KAAK,KAAK,CAAC,OAAO,MAAM,CAClF,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,IAAI,KAAK,KAAK,QAAQ;YAAE,OAAO;QAC/B,KAAK,GAAG,SAAS,CAAC;QAClB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,QAAQ,GAAG,SAAS,CAAC;QACrB,KAAK,MAAM,UAAU,IAAI,WAAW;YAAE,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3D,yEAAyE;QACzE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,cAAc;YAAE,OAAO;QAChD,cAAc,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,IAAI,KAAK;oBAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kBAAkB,CAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;QACvB,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;QACvB,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE;QACrC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;YAAE,UAAU,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACxB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;YACxB,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,KAAK,GAAG,QAAQ,CAAC;QACjB,QAAQ,GAAG,SAAS,CAAC;QACrB,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;QAClD,MAAM,MAAM,GACV,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;YACnC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iDAAiD,QAAQ,KAAK,MAAM,MAAM,CAC3E,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,KAAK,GAAG,QAAQ,CAAC;YACjB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;YACD,QAAQ,GAAG,SAAS,CAAC;YACrB,cAAc,EAAE,CAAC;QACnB,CAAC;;YAAM,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpE,QAAQ,GAAG,aAAa,IAAI,EAAE,CAAC;YAC/B,KAAK,GAAG,WAAW,CAAC;YACpB,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;gBAC1B,OAAO,GAAG,SAAS,CAAC;gBACpB,IAAI,KAAK,KAAK,WAAW;oBAAE,OAAO;gBAClC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC/B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;wBAC1B,IAAI,EAAE,CAAC;wBACP,OAAO;oBACT,CAAC;oBACD,oEAAoE;oBACpE,gEAAgE;oBAChE,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;wBAC1B,OAAO,GAAG,SAAS,CAAC;wBACpB,IAAI,KAAK,KAAK,WAAW;4BAAE,OAAO;wBAClC,QAAQ,GAAG,MAAM,CAAC;wBAClB,KAAK,GAAG,OAAO,CAAC;wBAChB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACrC,MAAM,GAAG,GAAG,UAAU,QAAQ,GAAG,CAAC;wBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gBAAgB,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ;4BAC5F,UAAU,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CACxF,CAAC;wBACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yCAAyC,GAAG,IAAI,CACjD,CAAC;wBACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBAC7D,IAAI,IAAI,CAAC,IAAI;4BAAE,WAAW,CAAC,GAAG,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iDAAiD,MAAM,CAAC,KAAK,CAAC,MAAM,CACrE,CAAC;oBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;oBACrB,IAAI,EAAE,CAAC;gBACT,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,GAAG,QAAQ,CAAC;QACjB,cAAc,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,WAAW,CAClB,IAAwD,EACxD,MAAc;IAEd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,QAAQ,CAC1E,CAAC;IACF,4EAA4E;IAC5E,MAAM,OAAO,GAAG,IAAA,uCAAoB,GAAE,CAAC;IACvC,IAAI,IAAI,CAAC;IACT,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,iCAAiC;QACjC,MAAM,SAAS,GAAG,IAAA,qCAAgB,EAAC;YACjC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,IAAI,GAAG,qCAAiB,CAAC,SAAS,CAChC,MAAM,EACN;YACE,MAAM;YACN,OAAO;YACP,IAAI,CAAC,GAAG;YACR,YAAY;YACZ,IAAI,CAAC,QAAQ;YACb,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SACpE,EACD;YACE,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;YACrD,WAAW,EAAE,IAAI;SAClB,CACF,CAAC;QACF,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,4BAA4B,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,QAAQ,GAAG,6CAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,OAAO,GAAG,mBAAI,CAAC,QAAQ,CAAC,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,SAAiB,CAAC;IACtB,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,SAAS,GAAG,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QAChE,QAAQ,GAAG,iBAAE,CAAC,YAAY,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+CAA+C,MAAM,CAAC,GAAG,CAAC,KAAK;YAC7D,0BAA0B,CAC7B,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,kFAAkF;AAClF,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC9B,qCAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;gBACvD,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,IAAI;aAClB,CAAC;iBACC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;iBAC5B,KAAK,EAAE,CAAC;aACR,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACpC,qCAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE;gBACrC,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI;aACf,CAAC;iBACC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;iBAC5B,KAAK,EAAE,CAAC;;YAEX,qCAAiB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE;gBACzC,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI;aACf,CAAC;iBACC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;iBAC5B,KAAK,EAAE,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttsc/graph",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Checker-resolved architecture graph over MCP for coding agents, backed by ttsc's in-process TypeScript-Go compiler.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -20,7 +20,16 @@
|
|
|
20
20
|
"typia": "^15.1.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"ttsc": "^0.
|
|
23
|
+
"ttsc": "^0.32.0"
|
|
24
|
+
},
|
|
25
|
+
"optionalDependencies": {
|
|
26
|
+
"@ttsc/graph-linux-x64": "0.32.0",
|
|
27
|
+
"@ttsc/graph-linux-arm": "0.32.0",
|
|
28
|
+
"@ttsc/graph-linux-arm64": "0.32.0",
|
|
29
|
+
"@ttsc/graph-darwin-x64": "0.32.0",
|
|
30
|
+
"@ttsc/graph-darwin-arm64": "0.32.0",
|
|
31
|
+
"@ttsc/graph-win32-x64": "0.32.0",
|
|
32
|
+
"@ttsc/graph-win32-arm64": "0.32.0"
|
|
24
33
|
},
|
|
25
34
|
"keywords": [
|
|
26
35
|
"ttsc",
|
|
@@ -35,7 +44,7 @@
|
|
|
35
44
|
"src"
|
|
36
45
|
],
|
|
37
46
|
"devDependencies": {
|
|
38
|
-
"@wrtnlabs/evidence": "^0.
|
|
47
|
+
"@wrtnlabs/evidence": "^0.5.0",
|
|
39
48
|
"@types/node": "^25.3.0",
|
|
40
49
|
"@types/three": "^0.184.1",
|
|
41
50
|
"esbuild": "^0.25.12",
|
|
@@ -43,7 +52,7 @@
|
|
|
43
52
|
"three": "^0.184.0",
|
|
44
53
|
"three-forcegraph": "^1.43.4",
|
|
45
54
|
"typescript": "^7.0.2",
|
|
46
|
-
"ttsc": "0.
|
|
55
|
+
"ttsc": "0.32.0"
|
|
47
56
|
},
|
|
48
57
|
"repository": {
|
|
49
58
|
"type": "git",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IProjectOptions } from "./IProjectOptions";
|
|
2
|
+
import { InstalledGraphBinary } from "./internal/InstalledGraphBinary";
|
|
2
3
|
import {
|
|
3
4
|
PROJECT_OPTIONS,
|
|
4
5
|
nonNegativeIntegerOption,
|
|
@@ -162,13 +163,7 @@ export namespace TtscGraphLauncherArguments {
|
|
|
162
163
|
} {
|
|
163
164
|
if (argv.some((argument) => DUMP_HELP_FLAGS.has(argument)))
|
|
164
165
|
return { code: 0, stdout: DUMP_HELP_SUMMARY };
|
|
165
|
-
return {
|
|
166
|
-
code: 1,
|
|
167
|
-
stderr:
|
|
168
|
-
"@ttsc/graph: could not resolve the ttscgraph binary. " +
|
|
169
|
-
"Install `ttsc` so its platform package is present, " +
|
|
170
|
-
"or set TTSC_GRAPH_BINARY to an absolute path.\n",
|
|
171
|
-
};
|
|
166
|
+
return { code: 1, stderr: `${InstalledGraphBinary.missingMessage()}\n` };
|
|
172
167
|
}
|
|
173
168
|
}
|
|
174
169
|
|
|
@@ -202,6 +197,7 @@ const DUMP_HELP_SUMMARY = [
|
|
|
202
197
|
" --pretty Indent the JSON output.",
|
|
203
198
|
"",
|
|
204
199
|
"The native `ttscgraph` binary owns these flags and is not installed here,",
|
|
205
|
-
"so this summary may lag it. Install
|
|
200
|
+
"so this summary may lag it. Install @ttsc/graph with its optional",
|
|
201
|
+
"dependencies and rerun for the exact list.",
|
|
206
202
|
"",
|
|
207
203
|
].join("\n");
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The native `ttscgraph` producer installed with this `@ttsc/graph` release.
|
|
6
|
+
*
|
|
7
|
+
* `@ttsc/graph` lists one `@ttsc/graph-<platform>-<arch>` package per supported
|
|
8
|
+
* target as an exact-version optional dependency. The producer is therefore
|
|
9
|
+
* resolved from `@ttsc/graph`'s own installation, not from the project being
|
|
10
|
+
* graphed: the JavaScript client and its native producer always come from one
|
|
11
|
+
* release, and the directory a launcher starts in does not affect which binary
|
|
12
|
+
* runs.
|
|
13
|
+
*
|
|
14
|
+
* @evidence contracts/common.md#principled-implementation Node module resolution from a file inside the installed package finds the optional platform dependency wherever the package manager placed it; an explicit absolute override keeps precedence.
|
|
15
|
+
* @evidence contracts/common.md#clear-and-simple-design One owner holds the resolution order and the two remedies every launcher, loader and session reports, so their wording cannot drift.
|
|
16
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Resolution uses the installed package contract rather than repository layouts, the target project's packages or guessed paths.
|
|
17
|
+
* @evidence contracts/common.md#meaningful-documentation Native paragraphs explain why the producer belongs to this package and what the anchor means.
|
|
18
|
+
* @evidence contracts/portability.md#os-neutral-implementation The platform and architecture name the package and Windows alone adds the executable suffix; Node module resolution handles symlinked and hoisted layouts on every host.
|
|
19
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Resolution returns a path string and opens no handle.
|
|
20
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms Each member performs at most one module resolution or builds one string.
|
|
21
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolution runs once per launch and caches nothing, so a reinstall between launches is honored.
|
|
22
|
+
*/
|
|
23
|
+
export namespace InstalledGraphBinary {
|
|
24
|
+
/**
|
|
25
|
+
* Resolve the producer, or `null` when nothing supplies one.
|
|
26
|
+
*
|
|
27
|
+
* 1. `TTSC_GRAPH_BINARY` when it is an absolute path. It is returned without a
|
|
28
|
+
* filesystem probe, so the spawn owns its executable error; a relative
|
|
29
|
+
* value is ignored.
|
|
30
|
+
* 2. `@ttsc/graph-<platform>-<arch>/bin/ttscgraph[.exe]`, resolved by Node
|
|
31
|
+
* module resolution from `anchor`, a file inside the installed
|
|
32
|
+
* `@ttsc/graph` package.
|
|
33
|
+
*
|
|
34
|
+
* @evidence contracts/common.md#principled-implementation An absolute override is honored before module resolution walks up from the anchor to the package manager's placement of the platform dependency.
|
|
35
|
+
* @evidence contracts/common.md#clear-and-simple-design The function owns precedence and lookup; callers own the failure presentation through the shared remedies.
|
|
36
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts A missing package resolves to null instead of a guessed path, and the override is not probed on the caller's behalf.
|
|
37
|
+
* @evidence contracts/common.md#meaningful-documentation The numbered list states the precedence, the anchor's meaning and the unprobed override.
|
|
38
|
+
* @evidence contracts/portability.md#os-neutral-implementation path.isAbsolute applies the host's absolute-path rule, and the package and executable names come from process.platform and process.arch.
|
|
39
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Returns a path string and opens no handle.
|
|
40
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms Performs at most one module resolution.
|
|
41
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Resolves on every call so a reinstall is honored.
|
|
42
|
+
*/
|
|
43
|
+
export function resolve(
|
|
44
|
+
env: NodeJS.ProcessEnv,
|
|
45
|
+
anchor: string,
|
|
46
|
+
): string | null {
|
|
47
|
+
const override = env.TTSC_GRAPH_BINARY;
|
|
48
|
+
if (override && path.isAbsolute(override)) return override;
|
|
49
|
+
try {
|
|
50
|
+
return createRequire(anchor).resolve(
|
|
51
|
+
`${packageName()}/bin/${process.platform === "win32" ? "ttscgraph.exe" : "ttscgraph"}`,
|
|
52
|
+
);
|
|
53
|
+
} catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The platform package this process's target selects.
|
|
60
|
+
*
|
|
61
|
+
* @evidence contracts/common.md#principled-implementation The npm platform and architecture strings are the package name's only variable parts.
|
|
62
|
+
* @evidence contracts/common.md#clear-and-simple-design Resolution and the missing-package diagnostic share this one name.
|
|
63
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts No platform table or alias substitutes for the actual target names.
|
|
64
|
+
* @evidence contracts/common.md#meaningful-documentation The native headline states what the name selects.
|
|
65
|
+
* @evidence contracts/portability.md#os-neutral-implementation process.platform and process.arch already carry npm's os and cpu spellings, which the platform manifests declare.
|
|
66
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Builds a string and holds nothing.
|
|
67
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms Concatenates two process properties.
|
|
68
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work A constant-time string needs no sharing.
|
|
69
|
+
*/
|
|
70
|
+
export function packageName(): string {
|
|
71
|
+
return `@ttsc/graph-${process.platform}-${process.arch}`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The diagnostic a launcher, loader or session reports when resolution fails.
|
|
76
|
+
*
|
|
77
|
+
* @evidence contracts/common.md#principled-implementation The remedy names the actual package that resolution looked for and the override that bypasses it.
|
|
78
|
+
* @evidence contracts/common.md#clear-and-simple-design Every failing entry point reports this one text.
|
|
79
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The text describes the real installation contract rather than a repository path.
|
|
80
|
+
* @evidence contracts/common.md#meaningful-documentation The native headline states when the diagnostic applies.
|
|
81
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation Builds a message; the package name carries the only platform-dependent part.
|
|
82
|
+
* @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Builds a string and holds nothing.
|
|
83
|
+
* @evidenceExclude contracts/performance.md#efficient-algorithms Concatenates constant text with the package name.
|
|
84
|
+
* @evidenceExclude contracts/performance.md#reuse-equivalent-work Called once per failed resolution.
|
|
85
|
+
*/
|
|
86
|
+
export function missingMessage(): string {
|
|
87
|
+
return (
|
|
88
|
+
"@ttsc/graph: could not resolve the ttscgraph binary. " +
|
|
89
|
+
`Install @ttsc/graph with its optional dependencies so ${packageName()} is present, ` +
|
|
90
|
+
"or set TTSC_GRAPH_BINARY to an absolute path."
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The remedy appended to a serve-protocol or dump-schema mismatch. The
|
|
96
|
+
* installed platform package always matches its `@ttsc/graph` release, so a
|
|
97
|
+
* mismatch means a stale installation or an override naming another build.
|
|
98
|
+
*/
|
|
99
|
+
export const MISMATCH_REMEDY =
|
|
100
|
+
"Reinstall @ttsc/graph so its platform package matches this client, " +
|
|
101
|
+
"or point TTSC_GRAPH_BINARY at a matching ttscgraph.";
|
|
102
|
+
}
|
|
@@ -351,22 +351,24 @@ function synthesize(
|
|
|
351
351
|
// small — the two copies are 17% of the document, 55 MB of VS Code's 323 MB,
|
|
352
352
|
// paid again in the encode, the pipe, the parse and the validation. Nothing
|
|
353
353
|
// downstream of this line sees a span without its file.
|
|
354
|
-
const nodes: SynthesizedNode[] = dump.nodes.flatMap(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
354
|
+
const nodes: SynthesizedNode[] = dump.nodes.flatMap(
|
|
355
|
+
(n): SynthesizedNode[] => {
|
|
356
|
+
if (n.kind === "module") return [];
|
|
357
|
+
const { evidence, implementation, ...rest } = n;
|
|
358
|
+
return [
|
|
359
|
+
{
|
|
360
|
+
...rest,
|
|
361
|
+
kind: n.kind,
|
|
362
|
+
...(evidence !== undefined
|
|
363
|
+
? { evidence: spanIn(evidence, n.file) }
|
|
364
|
+
: {}),
|
|
365
|
+
...(implementation !== undefined
|
|
366
|
+
? { implementation: spanIn(implementation, n.file) }
|
|
367
|
+
: {}),
|
|
368
|
+
},
|
|
369
|
+
];
|
|
370
|
+
},
|
|
371
|
+
);
|
|
370
372
|
const edges: TtscGraphReadonly<ITtscGraphEdge>[] = dump.edges.map((edge) => {
|
|
371
373
|
const { evidence, ...rest } = edge;
|
|
372
374
|
const from = moduleIds.get(edge.from);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import typia from "typia";
|
|
2
2
|
|
|
3
|
+
import { InstalledGraphBinary } from "../internal/InstalledGraphBinary";
|
|
3
4
|
import { ITtscGraphSnapshot } from "../structures/ITtscGraphSnapshot";
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -63,8 +64,7 @@ export namespace TtscGraphProtocol {
|
|
|
63
64
|
`@ttsc/graph: ttscgraph speaks serve protocol ${
|
|
64
65
|
version === undefined ? "an unknown version" : `v${String(version)}`
|
|
65
66
|
}, this client speaks v${String(PROTOCOL_VERSION)}. ` +
|
|
66
|
-
|
|
67
|
-
"project, or from TTSC_GRAPH_BINARY).",
|
|
67
|
+
InstalledGraphBinary.MISMATCH_REMEDY,
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CapabilityPluginResolver } from "ttsc";
|
|
2
2
|
|
|
3
|
+
import { InstalledGraphBinary } from "../internal/InstalledGraphBinary";
|
|
3
4
|
import { ensureExecutable } from "../nativeExecutable";
|
|
4
5
|
import { resolveGraphBinary } from "../resolveGraphBinary";
|
|
5
6
|
import type { IPublishedArtifactsResident } from "./IPublishedArtifactsResident";
|
|
@@ -70,18 +71,10 @@ export class TtscGraphSession {
|
|
|
70
71
|
private readonly retiredDaemons = new Set<Promise<void>>();
|
|
71
72
|
|
|
72
73
|
public constructor(options: TtscGraphSessionOptions) {
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
options.binary ?? resolveGraphBinary(process.env, options.cwd);
|
|
78
|
-
if (binary === null) {
|
|
79
|
-
throw new Error(
|
|
80
|
-
"@ttsc/graph: could not resolve the ttscgraph binary. " +
|
|
81
|
-
"Install `ttsc` so its platform package is present, " +
|
|
82
|
-
"or set TTSC_GRAPH_BINARY to an absolute path.",
|
|
83
|
-
);
|
|
84
|
-
}
|
|
74
|
+
// The producer belongs to this package's installation, so an MCP server
|
|
75
|
+
// started from any directory spawns the binary of its own release.
|
|
76
|
+
const binary = options.binary ?? resolveGraphBinary(process.env);
|
|
77
|
+
if (binary === null) throw new Error(InstalledGraphBinary.missingMessage());
|
|
85
78
|
ensureExecutable(binary);
|
|
86
79
|
this.cwd = options.cwd;
|
|
87
80
|
this.tsconfig = options.tsconfig;
|
|
@@ -17,6 +17,9 @@ export interface TtscGraphSessionOptions {
|
|
|
17
17
|
/** Project tsconfig passed to `ttscgraph serve`. */
|
|
18
18
|
tsconfig: string;
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Absolute native binary path; omitted, the installed
|
|
22
|
+
* `@ttsc/graph-<platform>-<arch>` binary runs.
|
|
23
|
+
*/
|
|
21
24
|
binary?: string;
|
|
22
25
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { InstalledGraphBinary } from "../internal/InstalledGraphBinary";
|
|
1
2
|
import { ITtscGraphSnapshot } from "../structures/ITtscGraphSnapshot";
|
|
2
3
|
import { TtscGraphLinePeer } from "./TtscGraphLinePeer";
|
|
3
4
|
import { TtscGraphMemory } from "./TtscGraphMemory";
|
|
@@ -385,8 +386,7 @@ export class TtscGraphSessionState {
|
|
|
385
386
|
response.dump?.provenance.schemaVersion ??
|
|
386
387
|
response.snapshot?.schemaVersion,
|
|
387
388
|
)}, this client reads v${String(DUMP_SCHEMA_VERSION)}. ` +
|
|
388
|
-
|
|
389
|
-
"project, or from TTSC_GRAPH_BINARY).",
|
|
389
|
+
InstalledGraphBinary.MISMATCH_REMEDY,
|
|
390
390
|
),
|
|
391
391
|
);
|
|
392
392
|
return;
|