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.
Files changed (50) hide show
  1. package/README.md +43 -30
  2. package/dist/analyzer.d.ts.map +1 -1
  3. package/dist/analyzer.js +106 -53
  4. package/dist/analyzer.js.map +1 -1
  5. package/dist/build-info.d.ts +4 -4
  6. package/dist/build-info.js +4 -4
  7. package/dist/build-info.js.map +1 -1
  8. package/dist/clauses.d.ts +11 -0
  9. package/dist/clauses.d.ts.map +1 -1
  10. package/dist/clauses.js +12 -0
  11. package/dist/clauses.js.map +1 -1
  12. package/dist/cli.d.ts +5 -7
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +2 -25
  15. package/dist/cli.js.map +1 -1
  16. package/dist/index.js +80 -22
  17. package/dist/index.js.map +1 -1
  18. package/dist/markdown-generator.d.ts +24 -0
  19. package/dist/markdown-generator.d.ts.map +1 -0
  20. package/dist/markdown-generator.js +124 -0
  21. package/dist/markdown-generator.js.map +1 -0
  22. package/dist/parser.d.ts +9 -0
  23. package/dist/parser.d.ts.map +1 -1
  24. package/dist/parser.js +67 -32
  25. package/dist/parser.js.map +1 -1
  26. package/dist/timeline-formatter.d.ts +9 -0
  27. package/dist/timeline-formatter.d.ts.map +1 -0
  28. package/dist/timeline-formatter.js +192 -0
  29. package/dist/timeline-formatter.js.map +1 -0
  30. package/dist/timeline.d.ts +177 -0
  31. package/dist/timeline.d.ts.map +1 -0
  32. package/dist/timeline.js +813 -0
  33. package/dist/timeline.js.map +1 -0
  34. package/dist/tree-formatter.d.ts +13 -0
  35. package/dist/tree-formatter.d.ts.map +1 -0
  36. package/dist/tree-formatter.js +136 -0
  37. package/dist/tree-formatter.js.map +1 -0
  38. package/dist/tree.d.ts +75 -0
  39. package/dist/tree.d.ts.map +1 -0
  40. package/dist/tree.js +267 -0
  41. package/dist/tree.js.map +1 -0
  42. package/dist/variable-tracker.d.ts +68 -0
  43. package/dist/variable-tracker.d.ts.map +1 -0
  44. package/dist/variable-tracker.js +216 -0
  45. package/dist/variable-tracker.js.map +1 -0
  46. package/dist/wrapper.d.ts.map +1 -1
  47. package/dist/wrapper.js +6 -20
  48. package/dist/wrapper.js.map +1 -1
  49. package/package.json +1 -1
  50. package/tracer.pl +127 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tree Formatter - Generates Mermaid diagram from tree structure
3
+ */
4
+ import { TreeNode } from './tree.js';
5
+ /**
6
+ * Format tree as Mermaid diagram
7
+ */
8
+ export declare function formatTreeAsMermaid(root: TreeNode | null): string;
9
+ /**
10
+ * Handle backtracking visualization in tree
11
+ */
12
+ export declare function markBacktrackingPaths(root: TreeNode): void;
13
+ //# sourceMappingURL=tree-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-formatter.d.ts","sourceRoot":"","sources":["../src/tree-formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CA+BjE;AA2GD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAe1D"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Tree Formatter - Generates Mermaid diagram from tree structure
3
+ */
4
+ /**
5
+ * Format tree as Mermaid diagram
6
+ */
7
+ export function formatTreeAsMermaid(root) {
8
+ if (!root) {
9
+ return 'graph TD\n A["No execution tree"]';
10
+ }
11
+ const lines = [];
12
+ lines.push('graph TD');
13
+ lines.push('');
14
+ // Generate nodes
15
+ const nodes = [];
16
+ const edges = [];
17
+ const styles = [];
18
+ collectNodesAndEdges(root, nodes, edges, styles);
19
+ // Add nodes section
20
+ lines.push('%% Nodes');
21
+ lines.push(...nodes);
22
+ lines.push('');
23
+ // Add edges section
24
+ lines.push('%% Edges');
25
+ lines.push(...edges);
26
+ lines.push('');
27
+ // Add styles section
28
+ lines.push('%% Styles');
29
+ lines.push(...styles);
30
+ return lines.join('\n');
31
+ }
32
+ /**
33
+ * Collect nodes, edges, and styles recursively
34
+ */
35
+ function collectNodesAndEdges(node, nodes, edges, styles, isRoot = true) {
36
+ // Generate node definition
37
+ const nodeLabel = formatNodeLabel(node);
38
+ nodes.push(`${node.id}[${nodeLabel}]`);
39
+ // Generate style
40
+ const style = getNodeStyle(node, isRoot);
41
+ if (style) {
42
+ styles.push(style);
43
+ }
44
+ // Generate edges to children
45
+ for (let i = 0; i < node.children.length; i++) {
46
+ const child = node.children[i];
47
+ // Use actual subgoal content if available, otherwise generic label
48
+ let edgeLabel = `subgoal ${i + 1}`;
49
+ if (node.subgoals && i < node.subgoals.length) {
50
+ edgeLabel = node.subgoals[i].goal;
51
+ }
52
+ edges.push(`${node.id} -->|"${edgeLabel}"| ${child.id}`);
53
+ // Recursively process child
54
+ collectNodesAndEdges(child, nodes, edges, styles, false);
55
+ }
56
+ }
57
+ /**
58
+ * Format node label with circled numbers and clause info
59
+ */
60
+ function formatNodeLabel(node) {
61
+ const parts = [];
62
+ // Use source clause head if available, otherwise use goal
63
+ const displayGoal = node.clauseHead || node.goal;
64
+ // Add call step with circled number
65
+ parts.push(`${toCircledNumber(node.callStep)} ${displayGoal}`);
66
+ // Add clause number if available
67
+ if (node.clauseNumber) {
68
+ parts.push(`clause ${node.clauseNumber}`);
69
+ }
70
+ // Add exit step and binding if available
71
+ if (node.exitStep) {
72
+ parts.push(`${toCircledNumber(node.exitStep)} EXIT${node.finalBinding ? ': ' + node.finalBinding : ''}`);
73
+ }
74
+ return `"${parts.join('<br/>')}"`;
75
+ }
76
+ /**
77
+ * Convert number to circled Unicode character
78
+ */
79
+ function toCircledNumber(n) {
80
+ if (n >= 1 && n <= 20) {
81
+ // Unicode circled numbers 1-20
82
+ return String.fromCharCode(0x2460 + n - 1);
83
+ }
84
+ else if (n >= 21 && n <= 35) {
85
+ // Unicode circled numbers 21-35
86
+ return String.fromCharCode(0x3251 + n - 21);
87
+ }
88
+ else if (n >= 36 && n <= 50) {
89
+ // Unicode circled numbers 36-50
90
+ return String.fromCharCode(0x32B1 + n - 36);
91
+ }
92
+ else {
93
+ // Fallback for numbers > 50
94
+ return `(${n})`;
95
+ }
96
+ }
97
+ /**
98
+ * Get Mermaid style for node based on status
99
+ */
100
+ function getNodeStyle(node, isRoot) {
101
+ if (isRoot) {
102
+ // Blue for root query
103
+ return `style ${node.id} fill:#e1f5ff,stroke:#01579b,stroke-width:3px`;
104
+ }
105
+ switch (node.status) {
106
+ case 'success':
107
+ // Green for success
108
+ return `style ${node.id} fill:#c8e6c9,stroke:#388e3c`;
109
+ case 'failure':
110
+ // Red for failure
111
+ return `style ${node.id} fill:#ffcdd2,stroke:#c62828`;
112
+ case 'pending':
113
+ // Yellow for pending
114
+ return `style ${node.id} fill:#fff9c4,stroke:#f57f17`;
115
+ default:
116
+ return null;
117
+ }
118
+ }
119
+ /**
120
+ * Handle backtracking visualization in tree
121
+ */
122
+ export function markBacktrackingPaths(root) {
123
+ // Walk the tree and mark failed attempts
124
+ function markNode(node) {
125
+ // If this node failed, mark it
126
+ if (node.status === 'failure') {
127
+ // Already marked by status
128
+ }
129
+ // Process children
130
+ for (const child of node.children) {
131
+ markNode(child);
132
+ }
133
+ }
134
+ markNode(root);
135
+ }
136
+ //# sourceMappingURL=tree-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-formatter.js","sourceRoot":"","sources":["../src/tree-formatter.ts"],"names":[],"mappings":"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"}
package/dist/tree.d.ts ADDED
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Tree Builder - Constructs hierarchical call tree from trace events
3
+ */
4
+ import { TraceEvent } from './timeline.js';
5
+ import { SourceClauseMap } from './clauses.js';
6
+ export interface TreeNode {
7
+ id: string;
8
+ goal: string;
9
+ clauseHead?: string;
10
+ clauseNumber?: string;
11
+ callStep: number;
12
+ exitStep?: number;
13
+ status: 'success' | 'failure' | 'pending';
14
+ children: TreeNode[];
15
+ finalBinding?: string;
16
+ subgoals?: Array<{
17
+ label: string;
18
+ goal: string;
19
+ }>;
20
+ }
21
+ /**
22
+ * Tree Builder class - constructs call tree from trace events
23
+ */
24
+ export declare class TreeBuilder {
25
+ private events;
26
+ private sourceClauseMap?;
27
+ private nodes;
28
+ private nodeCounter;
29
+ private callStack;
30
+ private stepToNode;
31
+ private stepCounter;
32
+ constructor(events: TraceEvent[], sourceClauseMap?: SourceClauseMap | undefined);
33
+ /**
34
+ * Check if a predicate is part of tracer infrastructure and should be filtered
35
+ */
36
+ private isTracerPredicate;
37
+ /**
38
+ * Build the complete tree from trace events
39
+ */
40
+ build(): TreeNode | null;
41
+ /**
42
+ * Backfill clause information from EXIT events to nodes
43
+ * CALL events don't have clause info, only EXIT events do
44
+ */
45
+ private backfillClauseInfo;
46
+ /**
47
+ * Generate node ID (A-Z, AA-AZ, BA-BZ, ...)
48
+ */
49
+ private generateNodeId;
50
+ /**
51
+ * Process CALL event - create new node
52
+ */
53
+ private processCall;
54
+ /**
55
+ * Extract subgoals from a clause body
56
+ */
57
+ private extractSubgoals;
58
+ /**
59
+ * Process EXIT event - mark node as successful
60
+ */
61
+ private processExit;
62
+ /**
63
+ * Process FAIL event - mark node as failed
64
+ */
65
+ private processFail;
66
+ /**
67
+ * Extract binding by comparing CALL and EXIT goals
68
+ */
69
+ private extractBinding;
70
+ /**
71
+ * Split arguments respecting parentheses and brackets
72
+ */
73
+ private splitArguments;
74
+ }
75
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,qBAAa,WAAW;IAOV,OAAO,CAAC,MAAM;IAAgB,OAAO,CAAC,eAAe,CAAC;IANlE,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,WAAW,CAAK;gBAEJ,MAAM,EAAE,UAAU,EAAE,EAAU,eAAe,CAAC,EAAE,eAAe,YAAA;IAEnF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,KAAK,IAAI,QAAQ,GAAG,IAAI;IAsCxB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,WAAW;IA+CnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,cAAc;CA0BvB"}
package/dist/tree.js ADDED
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Tree Builder - Constructs hierarchical call tree from trace events
3
+ */
4
+ /**
5
+ * Tree Builder class - constructs call tree from trace events
6
+ */
7
+ export class TreeBuilder {
8
+ events;
9
+ sourceClauseMap;
10
+ nodes = [];
11
+ nodeCounter = 0;
12
+ callStack = new Map(); // level -> node
13
+ stepToNode = new Map(); // step number -> node
14
+ stepCounter = 0;
15
+ constructor(events, sourceClauseMap) {
16
+ this.events = events;
17
+ this.sourceClauseMap = sourceClauseMap;
18
+ }
19
+ /**
20
+ * Check if a predicate is part of tracer infrastructure and should be filtered
21
+ */
22
+ isTracerPredicate(predicate) {
23
+ const tracerPredicates = [
24
+ 'catch/3',
25
+ 'export_trace_json/1',
26
+ 'run_trace/0',
27
+ 'install_tracer/1',
28
+ 'remove_tracer/0',
29
+ ];
30
+ return tracerPredicates.includes(predicate);
31
+ }
32
+ /**
33
+ * Build the complete tree from trace events
34
+ */
35
+ build() {
36
+ let root = null;
37
+ for (const event of this.events) {
38
+ // Filter out tracer infrastructure
39
+ if (this.isTracerPredicate(event.predicate)) {
40
+ continue;
41
+ }
42
+ this.stepCounter++;
43
+ switch (event.port) {
44
+ case 'call':
45
+ const node = this.processCall(event, this.stepCounter);
46
+ if (!root) {
47
+ root = node;
48
+ }
49
+ break;
50
+ case 'exit':
51
+ this.processExit(event, this.stepCounter);
52
+ break;
53
+ case 'redo':
54
+ // REDO doesn't create new nodes, just marks retry
55
+ break;
56
+ case 'fail':
57
+ this.processFail(event, this.stepCounter);
58
+ break;
59
+ }
60
+ }
61
+ // Backfill clause info from EXIT events to nodes
62
+ if (root) {
63
+ this.backfillClauseInfo();
64
+ }
65
+ return root;
66
+ }
67
+ /**
68
+ * Backfill clause information from EXIT events to nodes
69
+ * CALL events don't have clause info, only EXIT events do
70
+ */
71
+ backfillClauseInfo() {
72
+ // For each node, find its EXIT event to get clause info
73
+ for (const node of this.nodes) {
74
+ if (!node.clauseHead && node.clauseNumber && this.sourceClauseMap) {
75
+ const lineNumber = parseInt(node.clauseNumber);
76
+ const sourceClause = this.sourceClauseMap[lineNumber];
77
+ if (sourceClause) {
78
+ node.clauseHead = sourceClause.head;
79
+ // Extract subgoals from clause body
80
+ if (sourceClause.body && sourceClause.body !== 'true') {
81
+ const subgoalGoals = this.extractSubgoals(sourceClause.body);
82
+ node.subgoals = subgoalGoals.map((goal, index) => ({
83
+ label: `[${node.callStep}.${index + 1}]`,
84
+ goal,
85
+ }));
86
+ }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Generate node ID (A-Z, AA-AZ, BA-BZ, ...)
93
+ */
94
+ generateNodeId() {
95
+ const index = this.nodeCounter++;
96
+ if (index < 26) {
97
+ return String.fromCharCode(65 + index); // A-Z
98
+ }
99
+ // After Z: AA, AB, AC, ..., AZ, BA, BB, ...
100
+ const firstChar = String.fromCharCode(65 + Math.floor(index / 26) - 1);
101
+ const secondChar = String.fromCharCode(65 + (index % 26));
102
+ return firstChar + secondChar;
103
+ }
104
+ /**
105
+ * Process CALL event - create new node
106
+ */
107
+ processCall(event, stepNumber) {
108
+ // Get source clause if available
109
+ let clauseHead;
110
+ let subgoals;
111
+ if (event.clause && this.sourceClauseMap) {
112
+ const sourceClause = this.sourceClauseMap[event.clause.line];
113
+ if (sourceClause) {
114
+ clauseHead = sourceClause.head;
115
+ // Extract subgoals from clause body
116
+ if (sourceClause.body && sourceClause.body !== 'true') {
117
+ const subgoalGoals = this.extractSubgoals(sourceClause.body);
118
+ subgoals = subgoalGoals.map((goal, index) => ({
119
+ label: `[${stepNumber}.${index + 1}]`,
120
+ goal,
121
+ }));
122
+ }
123
+ }
124
+ }
125
+ const node = {
126
+ id: this.generateNodeId(),
127
+ goal: event.goal,
128
+ clauseHead,
129
+ clauseNumber: event.clause?.line.toString(),
130
+ callStep: stepNumber,
131
+ status: 'pending',
132
+ children: [],
133
+ subgoals,
134
+ };
135
+ // Add as child to parent if there is one
136
+ const parentLevel = event.level - 1;
137
+ const parent = this.callStack.get(parentLevel);
138
+ if (parent) {
139
+ parent.children.push(node);
140
+ }
141
+ // Track in call stack
142
+ this.callStack.set(event.level, node);
143
+ this.stepToNode.set(stepNumber, node);
144
+ this.nodes.push(node);
145
+ return node;
146
+ }
147
+ /**
148
+ * Extract subgoals from a clause body
149
+ */
150
+ extractSubgoals(clauseBody) {
151
+ if (!clauseBody || clauseBody === 'true') {
152
+ return [];
153
+ }
154
+ // Split on commas, respecting parentheses depth
155
+ const subgoals = [];
156
+ let current = '';
157
+ let depth = 0;
158
+ for (const char of clauseBody) {
159
+ if (char === '(') {
160
+ depth++;
161
+ current += char;
162
+ }
163
+ else if (char === ')') {
164
+ depth--;
165
+ current += char;
166
+ }
167
+ else if (char === ',' && depth === 0) {
168
+ subgoals.push(current.trim());
169
+ current = '';
170
+ }
171
+ else {
172
+ current += char;
173
+ }
174
+ }
175
+ if (current.trim()) {
176
+ subgoals.push(current.trim());
177
+ }
178
+ return subgoals;
179
+ }
180
+ /**
181
+ * Process EXIT event - mark node as successful
182
+ */
183
+ processExit(event, stepNumber) {
184
+ const node = this.callStack.get(event.level);
185
+ if (node) {
186
+ node.exitStep = stepNumber;
187
+ node.status = 'success';
188
+ // Store clause number from EXIT event
189
+ if (event.clause && !node.clauseNumber) {
190
+ node.clauseNumber = event.clause.line.toString();
191
+ }
192
+ // Extract final binding if available
193
+ // Compare CALL goal with EXIT goal to find bindings
194
+ const callGoal = node.goal;
195
+ const exitGoal = event.goal;
196
+ if (callGoal !== exitGoal) {
197
+ node.finalBinding = this.extractBinding(callGoal, exitGoal);
198
+ }
199
+ // Remove from call stack
200
+ this.callStack.delete(event.level);
201
+ }
202
+ }
203
+ /**
204
+ * Process FAIL event - mark node as failed
205
+ */
206
+ processFail(event, stepNumber) {
207
+ const node = this.callStack.get(event.level);
208
+ if (node) {
209
+ node.exitStep = stepNumber;
210
+ node.status = 'failure';
211
+ // Remove from call stack
212
+ this.callStack.delete(event.level);
213
+ }
214
+ }
215
+ /**
216
+ * Extract binding by comparing CALL and EXIT goals
217
+ */
218
+ extractBinding(callGoal, exitGoal) {
219
+ // Simple extraction - find the first variable that changed
220
+ const callMatch = callGoal.match(/^([^(]+)\((.*)\)$/);
221
+ const exitMatch = exitGoal.match(/^([^(]+)\((.*)\)$/);
222
+ if (!callMatch || !exitMatch) {
223
+ return undefined;
224
+ }
225
+ const callArgs = this.splitArguments(callMatch[2]);
226
+ const exitArgs = this.splitArguments(exitMatch[2]);
227
+ // Find first differing argument where call has variable
228
+ for (let i = 0; i < Math.min(callArgs.length, exitArgs.length); i++) {
229
+ const callArg = callArgs[i].trim();
230
+ const exitArg = exitArgs[i].trim();
231
+ if (callArg !== exitArg && /^[A-Z_]/.test(callArg)) {
232
+ return `${callArg}=${exitArg}`;
233
+ }
234
+ }
235
+ return undefined;
236
+ }
237
+ /**
238
+ * Split arguments respecting parentheses and brackets
239
+ */
240
+ splitArguments(argsStr) {
241
+ const args = [];
242
+ let current = '';
243
+ let depth = 0;
244
+ for (const char of argsStr) {
245
+ if (char === '(' || char === '[') {
246
+ depth++;
247
+ current += char;
248
+ }
249
+ else if (char === ')' || char === ']') {
250
+ depth--;
251
+ current += char;
252
+ }
253
+ else if (char === ',' && depth === 0) {
254
+ args.push(current.trim());
255
+ current = '';
256
+ }
257
+ else {
258
+ current += char;
259
+ }
260
+ }
261
+ if (current.trim()) {
262
+ args.push(current.trim());
263
+ }
264
+ return args;
265
+ }
266
+ }
267
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,MAAM,OAAO,WAAW;IAOF;IAA8B;IAN1C,KAAK,GAAe,EAAE,CAAC;IACvB,WAAW,GAAG,CAAC,CAAC;IAChB,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC,CAAC,gBAAgB;IAC9D,UAAU,GAA0B,IAAI,GAAG,EAAE,CAAC,CAAC,sBAAsB;IACrE,WAAW,GAAG,CAAC,CAAC;IAExB,YAAoB,MAAoB,EAAU,eAAiC;QAA/D,WAAM,GAAN,MAAM,CAAc;QAAU,oBAAe,GAAf,eAAe,CAAkB;IAAG,CAAC;IAEvF;;OAEG;IACK,iBAAiB,CAAC,SAAiB;QACzC,MAAM,gBAAgB,GAAG;YACvB,SAAS;YACT,qBAAqB;YACrB,aAAa;YACb,kBAAkB;YAClB,iBAAiB;SAClB,CAAC;QACF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,GAAoB,IAAI,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,mCAAmC;YACnC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,SAAS;YACX,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACvD,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,IAAI,GAAG,IAAI,CAAC;oBACd,CAAC;oBACD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,MAAM;oBACT,kDAAkD;oBAClD,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC1C,MAAM;YACV,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,kBAAkB;QACxB,wDAAwD;QACxD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;gBACtD,IAAI,YAAY,EAAE,CAAC;oBACjB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;oBAEpC,oCAAoC;oBACpC,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAC7D,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;4BACjD,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,CAAC,GAAG;4BACxC,IAAI;yBACL,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEjC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACf,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM;QAChD,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,SAAS,GAAG,UAAU,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB,EAAE,UAAkB;QACvD,iCAAiC;QACjC,IAAI,UAA8B,CAAC;QACnC,IAAI,QAA4D,CAAC;QAEjE,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;gBAE/B,oCAAoC;gBACpC,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC7D,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC5C,KAAK,EAAE,IAAI,UAAU,IAAI,KAAK,GAAG,CAAC,GAAG;wBACrC,IAAI;qBACL,CAAC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAa;YACrB,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE;YACzB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU;YACV,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC3C,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,EAAE;YACZ,QAAQ;SACT,CAAC;QAEF,yCAAyC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,UAAkB;QACxC,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gDAAgD;QAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9B,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB,EAAE,UAAkB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAExB,sCAAsC;YACtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,CAAC;YAED,qCAAqC;YACrC,oDAAoD;YACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9D,CAAC;YAED,yBAAyB;YACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB,EAAE,UAAkB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAExB,yBAAyB;YACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAgB,EAAE,QAAgB;QACvD,2DAA2D;QAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnD,wDAAwD;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,OAAO,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAe;QACpC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxC,KAAK,EAAE,CAAC;gBACR,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC1B,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Variable Binding Tracker
3
+ *
4
+ * Tracks variable bindings through recursive Prolog execution by processing
5
+ * trace events in order and maintaining accumulated state.
6
+ */
7
+ import { TraceEvent } from './timeline.js';
8
+ export declare class VariableBindingTracker {
9
+ private bindings;
10
+ private topLevelQuery;
11
+ private queryVarName;
12
+ constructor(originalQuery: string);
13
+ /**
14
+ * Extract the query variable name from the original query
15
+ * e.g., "append([1,2], [3,4], X)" -> "X"
16
+ * e.g., "factorial(3, Result)" -> "Result"
17
+ */
18
+ private extractQueryVarName;
19
+ /**
20
+ * Process a trace event and update bindings
21
+ */
22
+ processEvent(event: TraceEvent): void;
23
+ /**
24
+ * Process CALL event - extract variable relationships from parent_info
25
+ *
26
+ * Key insight: parent_info.goal shows how the PARENT sees its own result variable
27
+ * at the moment it's calling this child.
28
+ */
29
+ private processCall;
30
+ /**
31
+ * Process EXIT event - we now know the final value
32
+ */
33
+ private processExit;
34
+ /**
35
+ * Propagate a binding up through parent levels
36
+ */
37
+ private propagateBinding;
38
+ /**
39
+ * Get the accumulated query variable state for a given level
40
+ * This shows what the top-level query variable looks like at this point
41
+ */
42
+ getQueryVarState(level: number): string | null;
43
+ /**
44
+ * Extract the result variable/pattern from a goal
45
+ * For "append([1,2],[3,4],_79984)", returns "_79984"
46
+ * For "append([1,2],[3,4],[1|_79854])", returns "[1|_79854]"
47
+ */
48
+ private extractResultVariable;
49
+ /**
50
+ * Substitute a variable with a value in a pattern
51
+ * e.g., substitute("[1|_79854]", "_79854", "[2|_79774]") -> "[1|[2|_79774]]"
52
+ */
53
+ private substitute;
54
+ /**
55
+ * Clean up a pattern to show holes
56
+ * Replace unbound variables with ? and simplify nested lists
57
+ */
58
+ private cleanupPattern;
59
+ /**
60
+ * Split arguments respecting parentheses and brackets
61
+ */
62
+ private splitArguments;
63
+ /**
64
+ * Escape special regex characters
65
+ */
66
+ private escapeRegex;
67
+ }
68
+ //# sourceMappingURL=variable-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-tracker.d.ts","sourceRoot":"","sources":["../src/variable-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,aAAa,EAAE,MAAM;IAMjC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQrC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IA8CnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqB9C;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB"}