prolog-trace-viz 1.1.2 β†’ 2.0.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 (46) hide show
  1. package/README.md +43 -30
  2. package/dist/analyzer.d.ts.map +1 -1
  3. package/dist/analyzer.js +268 -96
  4. package/dist/analyzer.js.map +1 -1
  5. package/dist/build-info.d.ts +3 -3
  6. package/dist/build-info.js +3 -3
  7. package/dist/clauses.d.ts +11 -0
  8. package/dist/clauses.d.ts.map +1 -1
  9. package/dist/clauses.js +12 -0
  10. package/dist/clauses.js.map +1 -1
  11. package/dist/cli.d.ts +4 -6
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +2 -25
  14. package/dist/cli.js.map +1 -1
  15. package/dist/index.js +80 -22
  16. package/dist/index.js.map +1 -1
  17. package/dist/markdown-generator.d.ts +24 -0
  18. package/dist/markdown-generator.d.ts.map +1 -0
  19. package/dist/markdown-generator.js +124 -0
  20. package/dist/markdown-generator.js.map +1 -0
  21. package/dist/parser.d.ts +12 -1
  22. package/dist/parser.d.ts.map +1 -1
  23. package/dist/parser.js +67 -35
  24. package/dist/parser.js.map +1 -1
  25. package/dist/timeline-formatter.d.ts +9 -0
  26. package/dist/timeline-formatter.d.ts.map +1 -0
  27. package/dist/timeline-formatter.js +149 -0
  28. package/dist/timeline-formatter.js.map +1 -0
  29. package/dist/timeline.d.ts +148 -0
  30. package/dist/timeline.d.ts.map +1 -0
  31. package/dist/timeline.js +601 -0
  32. package/dist/timeline.js.map +1 -0
  33. package/dist/tree-formatter.d.ts +13 -0
  34. package/dist/tree-formatter.d.ts.map +1 -0
  35. package/dist/tree-formatter.js +136 -0
  36. package/dist/tree-formatter.js.map +1 -0
  37. package/dist/tree.d.ts +75 -0
  38. package/dist/tree.d.ts.map +1 -0
  39. package/dist/tree.js +267 -0
  40. package/dist/tree.js.map +1 -0
  41. package/dist/wrapper.d.ts +8 -1
  42. package/dist/wrapper.d.ts.map +1 -1
  43. package/dist/wrapper.js +41 -17
  44. package/dist/wrapper.js.map +1 -1
  45. package/package.json +1 -1
  46. package/tracer.pl +127 -16
package/README.md CHANGED
@@ -1,16 +1,19 @@
1
1
  # prolog-trace-viz
2
2
 
3
- Generate beautiful, educational Mermaid diagrams from Prolog execution traces.
3
+ Generate beautiful, educational visualisations from Prolog execution traces.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - Custom Prolog tracer using SWI-Prolog's trace interception hook
8
8
  - Captures accurate unification information directly from execution
9
+ - **Dual visualisation format**: execution timeline + call tree diagram
10
+ - **Pattern matching display**: Shows how goals unify with clause heads
11
+ - **Subgoal tracking**: Labels and tracks subgoals with [N.M] notation
9
12
  - Generates colour-coded Mermaid diagrams
10
13
  - Produces complete markdown documentation with step-by-step breakdowns
11
- - Tracks pending goals, variable bindings, and clause usage
14
+ - Tracks variable bindings and clause usage
12
15
  - **Smart clause filtering** - Only shows clauses that were actually used during execution
13
- - **Clean table format** - Organised clause presentation with line numbers
16
+ - **Depth limiting** - Control trace depth to focus on relevant execution
14
17
  - No external dependencies beyond SWI-Prolog
15
18
 
16
19
  ## Prerequisites
@@ -46,7 +49,8 @@ prolog-trace-viz <prolog-file> <query> [options]
46
49
 
47
50
  | Option | Description |
48
51
  |--------|-------------|
49
- | `-o, --output <file>` | Write output to file instead of stdout |
52
+ | `-o, --output <file>` | Write output to file (default: `<source>-output.md`) |
53
+ | `--depth <number>` | Maximum trace depth to capture (default: 100) |
50
54
  | `--verbose` | Display detailed processing information |
51
55
  | `--quiet` | Suppress all non-error output except final result |
52
56
  | `-h, --help` | Show help message |
@@ -72,6 +76,12 @@ With verbose output:
72
76
  prolog-trace-viz program.pl "factorial(5, X)" --verbose
73
77
  ```
74
78
 
79
+ Limit trace depth:
80
+
81
+ ```
82
+ prolog-trace-viz program.pl "factorial(10, X)" --depth 20
83
+ ```
84
+
75
85
  ## Example Output
76
86
 
77
87
  Given a simple Prolog file `append.pl`:
@@ -90,28 +100,29 @@ prolog-trace-viz append.pl "append([1,2], [3], X)"
90
100
  Produces a markdown document with:
91
101
 
92
102
  1. **Query section** - The original query in a code block
93
- 2. **Execution tree** - A Mermaid diagram showing the trace
94
- 3. **Legend** - Explanation of visual elements
95
- 4. **Step-by-step breakdown** - Detailed execution steps
96
- 5. **Final answer** - The result bindings
97
- 6. **Clauses used** - Clean table showing only the clauses that were actually used during execution
98
-
99
- ### Visual Elements
100
-
101
- | Symbol | Meaning |
102
- |--------|---------|
103
- | 🎯 | Initial query |
104
- | πŸ”„ | Currently solving |
105
- | ⏸️ | Pending (queued) |
106
- | βœ… | Solved |
107
- | πŸŽ‰ | Success |
108
-
109
- ### Colour Scheme
110
-
111
- - **Blue** - Query nodes
112
- - **Yellow** - Solving nodes
113
- - **Grey** - Pending nodes
114
- - **Green** - Solved/Success nodes
103
+ 2. **Clause definitions** - Table showing clauses used during execution
104
+ 3. **Execution timeline** - Step-by-step breakdown with subgoal tracking
105
+ 4. **Call tree diagram** - Mermaid visualisation showing execution structure
106
+ 5. **Final answer** - The result bindings with original query variables
107
+
108
+ ### Timeline Format
109
+
110
+ The execution timeline shows each step with:
111
+ - Step number and event type (CALL, EXIT, REDO, FAIL)
112
+ - Goal being solved
113
+ - Pattern matches and unifications
114
+ - Subgoal labels in `[N.M]` format
115
+ - Variable flow between steps
116
+ - Box drawing characters for visual structure
117
+
118
+ ### Call Tree Format
119
+
120
+ The Mermaid diagram shows:
121
+ - Circled numbers (β‘ β‘‘β‘’...) for step references
122
+ - Node colours: blue (root query), green (success), red (failure)
123
+ - Edges labelled with subgoal relationships
124
+ - Clause numbers for each call
125
+ - Final bindings at EXIT nodes
115
126
 
116
127
  ## Architecture
117
128
 
@@ -121,16 +132,18 @@ The tool uses a custom Prolog tracer that leverages SWI-Prolog's `prolog_trace_i
121
132
  - **No code instrumentation**: Your Prolog code runs unmodified
122
133
  - **Reliable clause tracking**: Clause numbers come from Prolog's internal tracking
123
134
  - **Structured output**: JSON-based trace format for easy parsing
135
+ - **Depth control**: Configurable trace depth to manage output size
124
136
 
125
137
  ### Pipeline
126
138
 
127
139
  1. Parse user's Prolog file to extract clauses
128
- 2. Generate wrapper that loads custom tracer
140
+ 2. Generate wrapper that loads custom tracer with depth limit
129
141
  3. Execute query with trace interception active
130
142
  4. Export trace events as JSON
131
- 5. Build execution tree from trace events
132
- 6. Analyze tree and generate visualization
133
- 7. Render as Mermaid diagram in markdown
143
+ 5. Build execution timeline and call tree in parallel
144
+ 6. Format timeline with subgoal tracking and variable flow
145
+ 7. Generate Mermaid diagram from call tree
146
+ 8. Render complete markdown document
134
147
 
135
148
  ## Development
136
149
 
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAmCvE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAYD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAyMtC;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,eAAoB,EAC7B,WAAW,GAAE,UAAU,EAAO,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,CAyIhB;AAoxBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAe7E;AA8DD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAYrE"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;IACvF,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAmCvE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAYD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAoWtC;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,eAAoB,EAC7B,WAAW,GAAE,UAAU,EAAO,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,CAyIhB;AAyzBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAe7E;AAiED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAYrE"}