prolog-trace-viz 1.1.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -30
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +106 -53
- package/dist/analyzer.js.map +1 -1
- package/dist/build-info.d.ts +4 -4
- package/dist/build-info.js +4 -4
- package/dist/build-info.js.map +1 -1
- package/dist/clauses.d.ts +11 -0
- package/dist/clauses.d.ts.map +1 -1
- package/dist/clauses.js +12 -0
- package/dist/clauses.js.map +1 -1
- package/dist/cli.d.ts +5 -7
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -25
- package/dist/cli.js.map +1 -1
- package/dist/index.js +80 -22
- package/dist/index.js.map +1 -1
- package/dist/markdown-generator.d.ts +24 -0
- package/dist/markdown-generator.d.ts.map +1 -0
- package/dist/markdown-generator.js +124 -0
- package/dist/markdown-generator.js.map +1 -0
- package/dist/parser.d.ts +9 -0
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +67 -32
- package/dist/parser.js.map +1 -1
- package/dist/timeline-formatter.d.ts +9 -0
- package/dist/timeline-formatter.d.ts.map +1 -0
- package/dist/timeline-formatter.js +192 -0
- package/dist/timeline-formatter.js.map +1 -0
- package/dist/timeline.d.ts +177 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +813 -0
- package/dist/timeline.js.map +1 -0
- package/dist/tree-formatter.d.ts +13 -0
- package/dist/tree-formatter.d.ts.map +1 -0
- package/dist/tree-formatter.js +136 -0
- package/dist/tree-formatter.js.map +1 -0
- package/dist/tree.d.ts +75 -0
- package/dist/tree.d.ts.map +1 -0
- package/dist/tree.js +267 -0
- package/dist/tree.js.map +1 -0
- package/dist/variable-tracker.d.ts +68 -0
- package/dist/variable-tracker.d.ts.map +1 -0
- package/dist/variable-tracker.js +216 -0
- package/dist/variable-tracker.js.map +1 -0
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +6 -20
- package/dist/wrapper.js.map +1 -1
- package/package.json +1 -1
- package/tracer.pl +127 -16
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline Builder - Constructs a flat, sequential timeline from trace events
|
|
3
|
+
*/
|
|
4
|
+
import { SourceClauseMap } from './clauses.js';
|
|
5
|
+
export interface TimelineStep {
|
|
6
|
+
stepNumber: number;
|
|
7
|
+
port: 'call' | 'exit' | 'redo' | 'fail' | 'merged';
|
|
8
|
+
level: number;
|
|
9
|
+
goal: string;
|
|
10
|
+
clause?: {
|
|
11
|
+
head: string;
|
|
12
|
+
body: string;
|
|
13
|
+
line: number;
|
|
14
|
+
};
|
|
15
|
+
unifications: Array<{
|
|
16
|
+
variable: string;
|
|
17
|
+
value: string;
|
|
18
|
+
}>;
|
|
19
|
+
subgoals: Array<{
|
|
20
|
+
label: string;
|
|
21
|
+
goal: string;
|
|
22
|
+
}>;
|
|
23
|
+
subgoalLabel?: string;
|
|
24
|
+
returnsTo?: number;
|
|
25
|
+
note?: string;
|
|
26
|
+
nextSubgoal?: string;
|
|
27
|
+
variableFlowNotes?: string[];
|
|
28
|
+
result?: string;
|
|
29
|
+
queryVarState?: string;
|
|
30
|
+
parentContext?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface TraceEvent {
|
|
33
|
+
port: 'call' | 'exit' | 'redo' | 'fail';
|
|
34
|
+
level: number;
|
|
35
|
+
goal: string;
|
|
36
|
+
predicate: string;
|
|
37
|
+
arguments?: any[];
|
|
38
|
+
clause?: {
|
|
39
|
+
head: string;
|
|
40
|
+
body: string;
|
|
41
|
+
line: number;
|
|
42
|
+
};
|
|
43
|
+
parent_info?: {
|
|
44
|
+
level: number;
|
|
45
|
+
goal: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Timeline Builder class - processes trace events into timeline steps
|
|
50
|
+
*/
|
|
51
|
+
export declare class TimelineBuilder {
|
|
52
|
+
private events;
|
|
53
|
+
private sourceClauseMap?;
|
|
54
|
+
private originalQuery?;
|
|
55
|
+
private steps;
|
|
56
|
+
private stepCounter;
|
|
57
|
+
private callStack;
|
|
58
|
+
private subgoalMap;
|
|
59
|
+
private parentSubgoals;
|
|
60
|
+
private completedSubgoals;
|
|
61
|
+
constructor(events: TraceEvent[], sourceClauseMap?: SourceClauseMap | undefined, originalQuery?: string | undefined);
|
|
62
|
+
/**
|
|
63
|
+
* Check if a predicate is part of tracer infrastructure and should be filtered
|
|
64
|
+
*/
|
|
65
|
+
private isTracerPredicate;
|
|
66
|
+
/**
|
|
67
|
+
* Build the complete timeline from trace events
|
|
68
|
+
*/
|
|
69
|
+
build(): TimelineStep[];
|
|
70
|
+
/**
|
|
71
|
+
* Backfill clause information from EXIT events to their corresponding CALL events
|
|
72
|
+
*/
|
|
73
|
+
private backfillClauseInfo;
|
|
74
|
+
/**
|
|
75
|
+
* Merge CALL/EXIT pairs into single steps
|
|
76
|
+
* This creates a cleaner timeline focused on goal execution rather than trace mechanics
|
|
77
|
+
*/
|
|
78
|
+
private mergeCallExitPairs;
|
|
79
|
+
/**
|
|
80
|
+
* Extract complete variable environment from parent_info
|
|
81
|
+
* Shows the immediate parent's view of this call
|
|
82
|
+
*/
|
|
83
|
+
private extractVariableEnvironment;
|
|
84
|
+
/**
|
|
85
|
+
* Extract the result argument from a goal
|
|
86
|
+
* For append([1,2],[3,4],[1|_79854]), extract [1|_79854]
|
|
87
|
+
*/
|
|
88
|
+
private extractResultFromGoal;
|
|
89
|
+
/**
|
|
90
|
+
* Clean up variable names for better readability
|
|
91
|
+
* Replace internal vars like _79854 and unbound clause vars like R with ? to show holes
|
|
92
|
+
*/
|
|
93
|
+
private cleanupVariableName;
|
|
94
|
+
/**
|
|
95
|
+
* Extract the result value from an EXIT goal
|
|
96
|
+
* For example, from "append([1,2],[3,4],[1,2,3,4])" extract "[1,2,3,4]"
|
|
97
|
+
*/
|
|
98
|
+
private extractResult;
|
|
99
|
+
/**
|
|
100
|
+
* Update subgoal tracking markers based on execution flow
|
|
101
|
+
* This must run after backfillClauseInfo so we have all subgoals defined
|
|
102
|
+
*/
|
|
103
|
+
private updateSubgoalTracking;
|
|
104
|
+
/**
|
|
105
|
+
* Add variable flow tracking notes to steps
|
|
106
|
+
* This shows how variables from parent clauses flow into child goals
|
|
107
|
+
*/
|
|
108
|
+
private addVariableFlowNotes;
|
|
109
|
+
/**
|
|
110
|
+
* Extract the value of a variable from a goal based on its position in the clause head
|
|
111
|
+
*/
|
|
112
|
+
private extractVariableValueFromGoal;
|
|
113
|
+
/**
|
|
114
|
+
* Get source clause from the source clause map
|
|
115
|
+
*/
|
|
116
|
+
private getSourceClause;
|
|
117
|
+
/**
|
|
118
|
+
* Find the matching EXIT step for a CALL step
|
|
119
|
+
*/
|
|
120
|
+
private findMatchingExit;
|
|
121
|
+
/**
|
|
122
|
+
* Process a single trace event
|
|
123
|
+
*/
|
|
124
|
+
private processEvent;
|
|
125
|
+
/**
|
|
126
|
+
* Extract subgoals from a clause body
|
|
127
|
+
*/
|
|
128
|
+
private extractSubgoals;
|
|
129
|
+
/**
|
|
130
|
+
* Process CALL event
|
|
131
|
+
*/
|
|
132
|
+
private processCall;
|
|
133
|
+
/**
|
|
134
|
+
* Extract pattern match bindings by comparing goal with clause head
|
|
135
|
+
* Uses structural decomposition - not heuristics, just comparing known data
|
|
136
|
+
*/
|
|
137
|
+
private extractPatternMatchBindings;
|
|
138
|
+
/**
|
|
139
|
+
* Recursively extract bindings by comparing pattern term with value term
|
|
140
|
+
* This is structural decomposition, not unification - we're just comparing strings
|
|
141
|
+
*/
|
|
142
|
+
private extractBindingsFromTermPair;
|
|
143
|
+
/**
|
|
144
|
+
* Check if a term is a simple variable
|
|
145
|
+
*/
|
|
146
|
+
private isSimpleVariable;
|
|
147
|
+
/**
|
|
148
|
+
* Find the main operator in a term
|
|
149
|
+
* Returns null if no operator found
|
|
150
|
+
*/
|
|
151
|
+
private findOperator;
|
|
152
|
+
/**
|
|
153
|
+
* Parse a list pattern
|
|
154
|
+
*/
|
|
155
|
+
private parseListPattern;
|
|
156
|
+
/**
|
|
157
|
+
* Extract unifications by comparing CALL and EXIT goals
|
|
158
|
+
*/
|
|
159
|
+
private extractUnifications;
|
|
160
|
+
/**
|
|
161
|
+
* Split arguments respecting parentheses and brackets
|
|
162
|
+
*/
|
|
163
|
+
private splitArguments;
|
|
164
|
+
/**
|
|
165
|
+
* Process EXIT event
|
|
166
|
+
*/
|
|
167
|
+
private processExit;
|
|
168
|
+
/**
|
|
169
|
+
* Process REDO event
|
|
170
|
+
*/
|
|
171
|
+
private processRedo;
|
|
172
|
+
/**
|
|
173
|
+
* Process FAIL event
|
|
174
|
+
*/
|
|
175
|
+
private processFail;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
|