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,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":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,eAAe;IAQd,OAAO,CAAC,MAAM;IAAgB,OAAO,CAAC,eAAe,CAAC;IAAmB,OAAO,CAAC,aAAa,CAAC;IAP3G,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,UAAU,CAAwE;IAC1F,OAAO,CAAC,cAAc,CAAkE;IACxF,OAAO,CAAC,iBAAiB,CAAkC;gBAEvC,MAAM,EAAE,UAAU,EAAE,EAAU,eAAe,CAAC,EAAE,eAAe,YAAA,EAAU,aAAa,CAAC,EAAE,MAAM,YAAA;IAEnH;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,KAAK,IAAI,YAAY,EAAE;IAwBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8C1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiH1B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAqE7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAuC5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA0BpC;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgCvB;;OAEG;IACH,OAAO,CAAC,WAAW;IA8DnB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA0BnC;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAgDnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAwBpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,CAAC,WAAW;CAuBpB"}