tolk-inspect 0.0.0 → 0.1.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Andrei Karavatski
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,104 @@
1
+ # tolk-inspect
2
+
3
+ Read-only AST and semantic inspection for in-memory Tolk projects, backed by Rust and
4
+ WebAssembly.
5
+
6
+ `tolk-inspect` is designed for audit tools, linters, code navigation, and visualizations.
7
+ It resolves project-wide symbols and types, evaluates constants, exposes control-flow
8
+ graphs, traces direct and indirect calls, and reports Acton linter diagnostics.
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ npm install tolk-inspect
14
+ ```
15
+
16
+ The package is ESM-only, runs on Node.js 22 or newer, and has no runtime dependencies.
17
+ Browser bundling is not currently supported.
18
+
19
+ ## Quickstart
20
+
21
+ ```ts
22
+ import { inspectProject } from "tolk-inspect";
23
+
24
+ const project = await inspectProject({
25
+ root: "/project",
26
+ files: {
27
+ "/project/main.tolk": `
28
+ import "math";
29
+ fun main(): int { return answer(); }
30
+ `,
31
+ "/project/math.tolk": `
32
+ const VALUE = 42;
33
+ fun answer(): int { return VALUE; }
34
+ `,
35
+ },
36
+ entrypoints: ["/project/main.tolk"],
37
+ });
38
+
39
+ const answer = project.symbols().find((symbol) => symbol.name === "answer");
40
+ if (answer) {
41
+ console.log("references", project.references(answer));
42
+ console.log("callers", project.callers(answer));
43
+ console.log("CFG", project.controlFlow(answer));
44
+ }
45
+
46
+ console.log("diagnostics", project.diagnostics());
47
+ project.dispose();
48
+ ```
49
+
50
+ All paths are logical, normalized project paths. The analyzer never reads the filesystem;
51
+ the caller supplies every workspace, Tolk standard-library, and Acton-library source.
52
+ For a complete project, pass those sources together with their roots:
53
+
54
+ ```ts
55
+ const project = await inspectProject({
56
+ root: "/project",
57
+ files: {
58
+ ...workspaceSources,
59
+ ...tolkStandardLibrarySources,
60
+ ...actonLibrarySources,
61
+ },
62
+ entrypoints: ["/project/contracts/main.tolk"],
63
+ stdlibRoot: "/project/.acton/tolk-stdlib",
64
+ actonStdlibRoot: "/project/.acton",
65
+ importMappings: { "@acton": "/project/.acton" },
66
+ });
67
+ ```
68
+
69
+ ## Main API
70
+
71
+ An `InspectedProject` provides:
72
+
73
+ - `files()`, `node()`, and AST traversal through `AstNode`
74
+ - `symbols()`, `symbolFor()`, `symbolAt()`, `resolve()`, and `references()`
75
+ - `typeOf()` and exact `constantValue()` results
76
+ - `controlFlow()`, including successors, predecessors, reachability, and dominance
77
+ - `callSites()`, `callGraph()`, `calls()`, and `callers()`
78
+ - `diagnostics()`, including structured Acton linter fixes
79
+
80
+ `callSites()` is the authoritative representation for indirect calls. A call may have
81
+ several conservative targets; `complete: false` means an additional source-level target
82
+ could not be identified.
83
+
84
+ Call `dispose()` when the snapshot is no longer needed. Access after disposal throws.
85
+
86
+ ## Analysis boundaries
87
+
88
+ - Snapshots are immutable; analyze again after changing source text.
89
+ - Official C++ compiler diagnostics are not part of the WASM package.
90
+ - Callables originating in opaque FFI, runtime, or deserialized data may remain incomplete.
91
+ - Callable analysis is intentionally whole-program and context-insensitive, so a helper
92
+ called with different callbacks reports their conservative union.
93
+
94
+ ## Guides and compatibility
95
+
96
+ - [Full project README](https://github.com/racinette/tolk-inspect#readme)
97
+ - [Control-flow analysis](https://github.com/racinette/tolk-inspect/blob/main/docs/control-flow.md)
98
+ - [Call-site and call-graph analysis](https://github.com/racinette/tolk-inspect/blob/main/docs/call-graph.md)
99
+ - [Callable-flow coverage](https://github.com/racinette/tolk-inspect/blob/main/docs/callable-flow-audit.md)
100
+ - [Design and known boundaries](https://github.com/racinette/tolk-inspect/blob/main/docs/design.md)
101
+
102
+ The analysis backend is pinned to Acton commit
103
+ `17654feb713c5824ee4cc0259b7be9b5f72898ba`. Use `versionInfo()` to inspect the package,
104
+ Acton revision, and analyzer Tolk version at runtime.
@@ -0,0 +1,43 @@
1
+ # Third-party notices
2
+
3
+ The `tolk-inspect` WebAssembly binary incorporates third-party Rust software. The exact
4
+ dependency versions and sources used for each release are recorded in the repository's
5
+ committed `Cargo.lock` file.
6
+
7
+ ## Acton and Tolk components
8
+
9
+ The analyzer incorporates `tolk-analysis`, `tolk-dataflow`, `tolk-linter`, `tolk-resolver`,
10
+ `tolk-syntax`, `tolk-ty`, `ton-syntax`, and `tree-sitter-tolk` from:
11
+
12
+ <https://github.com/ton-blockchain/acton>
13
+
14
+ Revision: `17654feb713c5824ee4cc0259b7be9b5f72898ba`
15
+
16
+ Copyright (c) 2025 TON Core
17
+
18
+ These components are available under the Apache License 2.0 or the MIT License. This
19
+ distribution uses them under the MIT option:
20
+
21
+ > Permission is hereby granted, free of charge, to any person obtaining a copy of this
22
+ > software and associated documentation files (the "Software"), to deal in the Software
23
+ > without restriction, including without limitation the rights to use, copy, modify,
24
+ > merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
25
+ > persons to whom the Software is furnished to do so, subject to the following conditions:
26
+ >
27
+ > The above copyright notice and this permission notice shall be included in all copies or
28
+ > substantial portions of the Software.
29
+ >
30
+ > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
31
+ > INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
32
+ > PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
33
+ > FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
34
+ > OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35
+ > DEALINGS IN THE SOFTWARE.
36
+
37
+ ## Other Rust dependencies
38
+
39
+ The binary also incorporates the Rust crates in the `tolk-inspect-wasm` dependency tree,
40
+ including `wasm-bindgen`, `serde`, `serde-wasm-bindgen`, `tree-sitter`, and their transitive
41
+ dependencies. Each remains subject to its own license; the authoritative package names,
42
+ versions, sources, and checksums are recorded in `Cargo.lock` at the source revision linked
43
+ by npm provenance and the package's `repository` metadata.
@@ -0,0 +1,308 @@
1
+ export type NodeId = string;
2
+ export type SymbolId = string;
3
+ export type TypeId = string;
4
+ export type ControlFlowNodeId = string;
5
+ export type ControlFlowScope = "none" | "workspace" | "all";
6
+ export interface ProjectInput {
7
+ root: string;
8
+ files: Readonly<Record<string, string>> | ReadonlyMap<string, string>;
9
+ entrypoints?: readonly string[];
10
+ stdlibRoot?: string;
11
+ actonStdlibRoot?: string;
12
+ importMappings?: Readonly<Record<string, string>>;
13
+ /** Controls CFG generation. Defaults to `workspace`. */
14
+ controlFlow?: ControlFlowScope;
15
+ }
16
+ export interface Position {
17
+ readonly line: number;
18
+ readonly character: number;
19
+ }
20
+ export interface SourceRange {
21
+ readonly start: Position;
22
+ readonly end: Position;
23
+ }
24
+ export interface ByteRange {
25
+ readonly start: number;
26
+ readonly end: number;
27
+ }
28
+ export interface SourceLocation {
29
+ readonly path: string;
30
+ readonly range: SourceRange;
31
+ readonly byteRange: ByteRange;
32
+ }
33
+ export interface VersionInfo {
34
+ readonly packageVersion: string;
35
+ readonly actonRevision: string;
36
+ readonly tolkVersion: string;
37
+ }
38
+ export interface SymbolFlags {
39
+ readonly deprecated: boolean;
40
+ readonly pure: boolean;
41
+ readonly private: boolean;
42
+ readonly mutable: boolean;
43
+ readonly local: boolean;
44
+ readonly parameter: boolean;
45
+ }
46
+ export interface SymbolInfo {
47
+ readonly id: SymbolId;
48
+ readonly name: string;
49
+ readonly fqn: string;
50
+ readonly kind: string;
51
+ readonly declaration: SourceLocation;
52
+ readonly body?: SourceLocation;
53
+ readonly containingSymbol?: SymbolId;
54
+ readonly documentation?: string;
55
+ readonly flags: SymbolFlags;
56
+ readonly nodeId?: NodeId;
57
+ }
58
+ export interface ReferenceContext {
59
+ readonly namespace: "value" | "type" | "mixed";
60
+ readonly usage: "call" | "read" | "write" | "mutate";
61
+ /** Combinable access facts computed by Acton's `tolk-analysis`. */
62
+ readonly access: ReferenceAccess;
63
+ }
64
+ export interface ReferenceAccess {
65
+ readonly read: boolean;
66
+ readonly write: boolean;
67
+ readonly mutate: boolean;
68
+ }
69
+ export interface Reference {
70
+ readonly symbolId?: SymbolId;
71
+ readonly name: string;
72
+ readonly location: SourceLocation;
73
+ readonly context: ReferenceContext;
74
+ readonly nodeId?: NodeId;
75
+ readonly resolved: boolean;
76
+ }
77
+ export interface Resolution {
78
+ readonly nodeId: NodeId;
79
+ readonly symbolId?: SymbolId;
80
+ readonly symbol?: SymbolInfo;
81
+ readonly resolved: boolean;
82
+ }
83
+ export interface TypeInfo {
84
+ readonly id: TypeId;
85
+ readonly display: string;
86
+ readonly kind: string;
87
+ readonly symbolId?: SymbolId;
88
+ readonly elementTypes: readonly TypeId[];
89
+ readonly returnType?: TypeId;
90
+ }
91
+ export type ConstantValue = {
92
+ readonly kind: "int";
93
+ readonly value: string;
94
+ readonly display: string;
95
+ } | {
96
+ readonly kind: "bool";
97
+ readonly value: boolean;
98
+ readonly display: string;
99
+ } | {
100
+ readonly kind: "string";
101
+ readonly value: string;
102
+ readonly display: string;
103
+ } | {
104
+ readonly kind: "overflow";
105
+ readonly display: string;
106
+ } | {
107
+ readonly kind: "unknown";
108
+ readonly display: string;
109
+ };
110
+ export type ControlFlowNodeKind = "entry" | "exit" | "nop" | "expression" | "condition" | "assert" | "return" | "throw" | "break" | "continue" | "matchPattern" | "catchBinding" | "join";
111
+ export type ControlFlowEdgeKind = "unconditional" | "trueBranch" | "falseBranch" | "loopBack" | "break" | "continue" | "return" | "throw" | "exceptional";
112
+ export interface ControlFlowNode {
113
+ readonly id: ControlFlowNodeId;
114
+ readonly kind: ControlFlowNodeKind;
115
+ readonly location?: SourceLocation;
116
+ readonly astNodeId?: NodeId;
117
+ readonly reads: readonly SymbolId[];
118
+ readonly writes: readonly SymbolId[];
119
+ }
120
+ export interface ControlFlowEdge {
121
+ readonly from: ControlFlowNodeId;
122
+ readonly to: ControlFlowNodeId;
123
+ readonly kind: ControlFlowEdgeKind;
124
+ }
125
+ export interface CallEdge {
126
+ readonly caller: SymbolId;
127
+ readonly callee: SymbolId;
128
+ readonly callSite: SourceLocation;
129
+ readonly nodeId?: NodeId;
130
+ readonly dispatch: "direct" | "indirect";
131
+ }
132
+ export interface CallSite {
133
+ readonly caller: SymbolId;
134
+ readonly location: SourceLocation;
135
+ readonly nodeId?: NodeId;
136
+ readonly dispatch: "direct" | "indirect";
137
+ readonly targets: readonly SymbolId[];
138
+ readonly complete: boolean;
139
+ }
140
+ export interface Diagnostic {
141
+ readonly phase: "parse" | "project" | "resolution" | "type" | "lint";
142
+ readonly source: string;
143
+ readonly severity: "error" | "warning" | "information" | "hint";
144
+ readonly code?: string;
145
+ readonly message: string;
146
+ readonly location?: SourceLocation;
147
+ readonly help?: string;
148
+ readonly annotations: readonly DiagnosticAnnotation[];
149
+ readonly fixes: readonly DiagnosticFix[];
150
+ }
151
+ export interface DiagnosticAnnotation {
152
+ readonly location: SourceLocation;
153
+ readonly message?: string;
154
+ readonly primary: boolean;
155
+ readonly tags: readonly ("unnecessary" | "deprecated")[];
156
+ }
157
+ export interface DiagnosticFix {
158
+ readonly message: string;
159
+ readonly applicability: "automatic" | "manual";
160
+ readonly edits: readonly DiagnosticEdit[];
161
+ }
162
+ export interface DiagnosticEdit {
163
+ readonly location: SourceLocation;
164
+ readonly replacement: string;
165
+ }
166
+ export interface ImportInfo {
167
+ readonly path: string;
168
+ readonly targetPath?: string;
169
+ readonly location: SourceLocation;
170
+ }
171
+ interface RawAstNode {
172
+ id: NodeId;
173
+ kind: string;
174
+ rawKind: string;
175
+ named: boolean;
176
+ error: boolean;
177
+ parentId?: NodeId;
178
+ childIds: NodeId[];
179
+ fields: Record<string, NodeId[]>;
180
+ location: SourceLocation;
181
+ text: string;
182
+ }
183
+ interface RawSourceFile {
184
+ path: string;
185
+ source: string;
186
+ rootNode: NodeId;
187
+ sourceKind: "workspace" | "stdlib" | "acton";
188
+ imports: ImportInfo[];
189
+ }
190
+ interface RawResolution {
191
+ nodeId: NodeId;
192
+ symbolId?: SymbolId;
193
+ resolved: boolean;
194
+ }
195
+ interface RawNodeType {
196
+ nodeId: NodeId;
197
+ typeId: TypeId;
198
+ }
199
+ interface RawSymbolConstantValue {
200
+ symbolId: SymbolId;
201
+ value: ConstantValue;
202
+ }
203
+ interface RawControlFlowGraph {
204
+ symbolId: SymbolId;
205
+ entry: ControlFlowNodeId;
206
+ exit: ControlFlowNodeId;
207
+ nodes: ControlFlowNode[];
208
+ edges: ControlFlowEdge[];
209
+ }
210
+ interface Snapshot {
211
+ version: VersionInfo;
212
+ root: string;
213
+ files: RawSourceFile[];
214
+ nodes: RawAstNode[];
215
+ symbols: SymbolInfo[];
216
+ references: Reference[];
217
+ resolutions: RawResolution[];
218
+ types: TypeInfo[];
219
+ nodeTypes: RawNodeType[];
220
+ constantValues: RawSymbolConstantValue[];
221
+ controlFlowGraphs: RawControlFlowGraph[];
222
+ callSites: CallSite[];
223
+ callGraph: CallEdge[];
224
+ diagnostics: Diagnostic[];
225
+ }
226
+ export declare class AstNode {
227
+ #private;
228
+ readonly id: NodeId;
229
+ readonly kind: string;
230
+ readonly rawKind: string;
231
+ readonly named: boolean;
232
+ readonly error: boolean;
233
+ readonly location: SourceLocation;
234
+ readonly text: string;
235
+ /** @internal */
236
+ constructor(project: InspectedProject, raw: RawAstNode);
237
+ get parent(): AstNode | undefined;
238
+ get children(): readonly AstNode[];
239
+ get name(): AstNode | undefined;
240
+ get body(): AstNode | undefined;
241
+ get callee(): AstNode | undefined;
242
+ get parameters(): readonly AstNode[];
243
+ get arguments(): readonly AstNode[];
244
+ childForFieldName(name: string): AstNode | undefined;
245
+ childrenForFieldName(name: string): readonly AstNode[];
246
+ descendants(kind?: string): IterableIterator<AstNode>;
247
+ }
248
+ export declare class SourceFile {
249
+ readonly path: string;
250
+ readonly source: string;
251
+ readonly sourceKind: "workspace" | "stdlib" | "acton";
252
+ readonly imports: readonly ImportInfo[];
253
+ readonly ast: AstNode;
254
+ /** @internal */
255
+ constructor(project: InspectedProject, raw: RawSourceFile);
256
+ }
257
+ type ControlFlowNodeLike = ControlFlowNodeId | ControlFlowNode;
258
+ export declare class ControlFlowGraph {
259
+ #private;
260
+ readonly symbolId: SymbolId;
261
+ readonly entry: ControlFlowNodeId;
262
+ readonly exit: ControlFlowNodeId;
263
+ readonly nodes: readonly ControlFlowNode[];
264
+ readonly edges: readonly ControlFlowEdge[];
265
+ /** @internal */
266
+ constructor(raw: RawControlFlowGraph);
267
+ node(id: ControlFlowNodeId): ControlFlowNode | undefined;
268
+ successors(node: ControlFlowNodeLike): readonly ControlFlowEdge[];
269
+ predecessors(node: ControlFlowNodeLike): readonly ControlFlowEdge[];
270
+ isReachable(node: ControlFlowNodeLike): boolean;
271
+ reachableFrom(node: ControlFlowNodeLike): readonly ControlFlowNode[];
272
+ dominates(required: ControlFlowNodeLike, target: ControlFlowNodeLike): boolean;
273
+ postDominates(required: ControlFlowNodeLike, origin: ControlFlowNodeLike): boolean;
274
+ }
275
+ export declare class InspectedProject {
276
+ #private;
277
+ readonly root: string;
278
+ readonly version: VersionInfo;
279
+ /** @internal */
280
+ constructor(snapshot: Snapshot);
281
+ files(): readonly SourceFile[];
282
+ file(path: string): SourceFile | undefined;
283
+ node(id: NodeId): AstNode | undefined;
284
+ symbols(): readonly SymbolInfo[];
285
+ symbol(id: SymbolId): SymbolInfo | undefined;
286
+ type(id: TypeId): TypeInfo | undefined;
287
+ symbolFor(node: NodeId | AstNode): SymbolInfo | undefined;
288
+ symbolAt(location: SourceLocation | {
289
+ path: string;
290
+ position: Position;
291
+ }): SymbolInfo | undefined;
292
+ resolve(node: NodeId | AstNode): Resolution | undefined;
293
+ references(symbol: SymbolId | SymbolInfo): readonly Reference[];
294
+ typeOf(node: NodeId | AstNode): TypeInfo | undefined;
295
+ constantValue(symbol: SymbolId | SymbolInfo): ConstantValue | undefined;
296
+ controlFlow(symbol: SymbolId | SymbolInfo): ControlFlowGraph | undefined;
297
+ controlFlowGraphs(): readonly ControlFlowGraph[];
298
+ callSites(symbol?: SymbolId | SymbolInfo): readonly CallSite[];
299
+ callGraph(): readonly CallEdge[];
300
+ calls(symbol: SymbolId | SymbolInfo): readonly CallEdge[];
301
+ callers(symbol: SymbolId | SymbolInfo): readonly CallEdge[];
302
+ diagnostics(): readonly Diagnostic[];
303
+ dispose(): void;
304
+ }
305
+ export declare function inspectProject(input: ProjectInput): Promise<InspectedProject>;
306
+ export declare function versionInfo(): VersionInfo;
307
+ export {};
308
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}