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
package/dist/clauses.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../src/clauses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgFzD"}
|
|
1
|
+
{"version":3,"file":"clauses.d.ts","sourceRoot":"","sources":["../src/clauses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgFzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CASrE"}
|
package/dist/clauses.js
CHANGED
|
@@ -77,4 +77,16 @@ export function parsePrologFile(content) {
|
|
|
77
77
|
}
|
|
78
78
|
return clauses;
|
|
79
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Builds a map from line numbers to source clauses for quick lookup.
|
|
82
|
+
* This preserves original variable names from the source file.
|
|
83
|
+
*/
|
|
84
|
+
export function buildSourceClauseMap(content) {
|
|
85
|
+
const clauses = parsePrologFile(content);
|
|
86
|
+
const map = {};
|
|
87
|
+
for (const clause of clauses) {
|
|
88
|
+
map[clause.number] = clause;
|
|
89
|
+
}
|
|
90
|
+
return map;
|
|
91
|
+
}
|
|
80
92
|
//# sourceMappingURL=clauses.js.map
|
package/dist/clauses.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clauses.js","sourceRoot":"","sources":["../src/clauses.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"clauses.js","sourceRoot":"","sources":["../src/clauses.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ToolError } from './errors.js';
|
|
2
|
-
export type DetailLevel = 'minimal' | 'standard' | 'detailed' | 'full';
|
|
3
2
|
export interface CLIOptions {
|
|
4
3
|
prologFile: string;
|
|
5
4
|
query: string;
|
|
6
5
|
output?: string;
|
|
7
|
-
depth
|
|
8
|
-
detail: DetailLevel;
|
|
6
|
+
depth: number;
|
|
9
7
|
verbose: boolean;
|
|
10
8
|
quiet: boolean;
|
|
11
9
|
}
|
|
@@ -19,14 +17,14 @@ export declare function getHelpText(): string;
|
|
|
19
17
|
export declare function getVersion(): string;
|
|
20
18
|
export declare function getCopyright(): string;
|
|
21
19
|
export declare function getBuildInfo(): {
|
|
22
|
-
readonly version: "
|
|
20
|
+
readonly version: "2.0.0";
|
|
23
21
|
readonly name: "prolog-trace-viz";
|
|
24
22
|
readonly description: "Generate enhanced visual trace diagrams for Prolog query execution";
|
|
25
23
|
readonly author: "Johnny Jarecsni <johnny.jarecsni@icloud.com>";
|
|
26
24
|
readonly license: "MIT";
|
|
27
|
-
readonly buildTimestamp: "2025-12-
|
|
28
|
-
readonly gitCommit: "
|
|
29
|
-
readonly gitBranch: "
|
|
25
|
+
readonly buildTimestamp: "2025-12-23T07:58:29.465Z";
|
|
26
|
+
readonly gitCommit: "23ca354";
|
|
27
|
+
readonly gitBranch: "feature/timeline-redesign";
|
|
30
28
|
readonly nodeVersion: "v22.17.0";
|
|
31
29
|
readonly platform: "darwin";
|
|
32
30
|
readonly arch: "arm64";
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,SAAS,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7D,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AA2BD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAkHnD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,YAAY;;;;;;;;;;;;EAE3B"}
|
package/dist/cli.js
CHANGED
|
@@ -12,12 +12,7 @@ ARGUMENTS:
|
|
|
12
12
|
|
|
13
13
|
OPTIONS:
|
|
14
14
|
-o, --output <file> Write output to file instead of stdout
|
|
15
|
-
--depth <n>
|
|
16
|
-
--detail <level> Visualization detail level (default: standard)
|
|
17
|
-
minimal - Query and success/failure only
|
|
18
|
-
standard - + recursion indicators (🔁)
|
|
19
|
-
detailed - + clause body nodes
|
|
20
|
-
full - + pending goals, all subgoals
|
|
15
|
+
--depth <n> Maximum trace depth (default: 100)
|
|
21
16
|
--verbose Display detailed processing information
|
|
22
17
|
--quiet Suppress all non-error output except final result
|
|
23
18
|
-h, --help Show this help message
|
|
@@ -44,7 +39,7 @@ export function parseArgs(argv) {
|
|
|
44
39
|
return { type: 'copyright' };
|
|
45
40
|
}
|
|
46
41
|
const options = {
|
|
47
|
-
|
|
42
|
+
depth: 100,
|
|
48
43
|
verbose: false,
|
|
49
44
|
quiet: false,
|
|
50
45
|
};
|
|
@@ -78,23 +73,6 @@ export function parseArgs(argv) {
|
|
|
78
73
|
}
|
|
79
74
|
options.depth = depth;
|
|
80
75
|
}
|
|
81
|
-
else if (arg === '--detail') {
|
|
82
|
-
const nextArg = args[++i];
|
|
83
|
-
if (!nextArg || nextArg.startsWith('-')) {
|
|
84
|
-
return {
|
|
85
|
-
type: 'error',
|
|
86
|
-
error: createError(ErrorCode.INVALID_ARGS, '--detail requires a level argument'),
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
const validLevels = ['minimal', 'standard', 'detailed', 'full'];
|
|
90
|
-
if (!validLevels.includes(nextArg)) {
|
|
91
|
-
return {
|
|
92
|
-
type: 'error',
|
|
93
|
-
error: createError(ErrorCode.INVALID_ARGS, `Invalid detail level: ${nextArg}. Must be one of: ${validLevels.join(', ')}`),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
options.detail = nextArg;
|
|
97
|
-
}
|
|
98
76
|
else if (arg === '--verbose') {
|
|
99
77
|
options.verbose = true;
|
|
100
78
|
}
|
|
@@ -141,7 +119,6 @@ export function parseArgs(argv) {
|
|
|
141
119
|
query: positionalArgs[1],
|
|
142
120
|
output: options.output,
|
|
143
121
|
depth: options.depth,
|
|
144
|
-
detail: options.detail,
|
|
145
122
|
verbose: options.verbose,
|
|
146
123
|
quiet: options.quiet,
|
|
147
124
|
},
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,13 +4,47 @@ import { parseArgs, getHelpText, getVersion, getCopyright } from './cli.js';
|
|
|
4
4
|
import { formatError } from './errors.js';
|
|
5
5
|
import { createTempWrapper } from './wrapper.js';
|
|
6
6
|
import { executeTracer, checkDependencies } from './executor.js';
|
|
7
|
-
import { parseTraceJson } from './parser.js';
|
|
8
7
|
import * as path from 'node:path';
|
|
9
|
-
import { analyzeTree } from './analyzer.js';
|
|
10
|
-
import { generateMermaid } from './mermaid.js';
|
|
11
|
-
import { renderMarkdown } from './renderer.js';
|
|
12
8
|
import { writeOutput, logVerbose, logInfo, logError } from './output.js';
|
|
13
|
-
import { parsePrologFile } from './clauses.js';
|
|
9
|
+
import { parsePrologFile, buildSourceClauseMap } from './clauses.js';
|
|
10
|
+
import { TimelineBuilder } from './timeline.js';
|
|
11
|
+
import { TreeBuilder } from './tree.js';
|
|
12
|
+
import { generateMarkdown } from './markdown-generator.js';
|
|
13
|
+
/**
|
|
14
|
+
* Extract variable names from original query
|
|
15
|
+
* e.g., "factorial(3, X)" -> ["X"]
|
|
16
|
+
*/
|
|
17
|
+
function extractQueryVariables(query) {
|
|
18
|
+
const match = query.match(/\((.*)\)$/);
|
|
19
|
+
if (!match)
|
|
20
|
+
return [];
|
|
21
|
+
const args = match[1].split(',').map(a => a.trim());
|
|
22
|
+
return args.filter(arg => /^[A-Z_]/.test(arg));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Map internal variable binding to original query variable
|
|
26
|
+
* e.g., "_1606=6" with query "factorial(3, X)" -> "X = 6"
|
|
27
|
+
*/
|
|
28
|
+
function mapBindingToOriginalQuery(binding, goalWithInternalVars, originalQuery, queryVars) {
|
|
29
|
+
// Parse binding: "_1606=6" -> ["_1606", "6"]
|
|
30
|
+
const [internalVar, value] = binding.split('=').map(s => s.trim());
|
|
31
|
+
// Parse goals to find position of internal variable
|
|
32
|
+
const goalMatch = goalWithInternalVars.match(/\((.*)\)$/);
|
|
33
|
+
const queryMatch = originalQuery.match(/\((.*)\)$/);
|
|
34
|
+
if (!goalMatch || !queryMatch)
|
|
35
|
+
return binding;
|
|
36
|
+
const goalArgs = goalMatch[1].split(',').map(a => a.trim());
|
|
37
|
+
const queryArgs = queryMatch[1].split(',').map(a => a.trim());
|
|
38
|
+
// Find which position has the internal variable
|
|
39
|
+
const position = goalArgs.findIndex(arg => arg === internalVar);
|
|
40
|
+
if (position >= 0 && position < queryArgs.length) {
|
|
41
|
+
const originalVar = queryArgs[position];
|
|
42
|
+
if (/^[A-Z_]/.test(originalVar)) {
|
|
43
|
+
return `${originalVar} = ${value}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return binding;
|
|
47
|
+
}
|
|
14
48
|
async function main() {
|
|
15
49
|
const result = parseArgs(process.argv);
|
|
16
50
|
if (result.type === 'help') {
|
|
@@ -61,6 +95,8 @@ async function run(options) {
|
|
|
61
95
|
// Parse Prolog clauses (for display purposes)
|
|
62
96
|
logVerbose('Parsing Prolog clauses...', options);
|
|
63
97
|
const clauses = parsePrologFile(prologContent);
|
|
98
|
+
// Build source clause map for preserving original variable names
|
|
99
|
+
const sourceClauseMap = buildSourceClauseMap(prologContent);
|
|
64
100
|
// Get absolute path to tracer.pl from package installation
|
|
65
101
|
const tracerPath = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', 'tracer.pl');
|
|
66
102
|
// Create wrapper (no instrumentation needed)
|
|
@@ -68,12 +104,16 @@ async function run(options) {
|
|
|
68
104
|
const tempFile = await createTempWrapper({
|
|
69
105
|
prologContent,
|
|
70
106
|
query: options.query,
|
|
107
|
+
depth: options.depth,
|
|
71
108
|
tracerPath,
|
|
72
109
|
});
|
|
73
110
|
try {
|
|
74
111
|
// Execute custom tracer
|
|
75
112
|
logVerbose('Executing custom tracer...', options);
|
|
76
113
|
const execResult = await executeTracer(tempFile.path);
|
|
114
|
+
logVerbose(`Tracer exit code: ${execResult.exitCode}`, options);
|
|
115
|
+
logVerbose(`JSON length: ${execResult.json?.length || 0}`, options);
|
|
116
|
+
logVerbose(`Stderr: ${execResult.stderr}`, options);
|
|
77
117
|
if (execResult.exitCode !== 0 || !execResult.json) {
|
|
78
118
|
logError('Custom tracer execution failed');
|
|
79
119
|
if (execResult.stderr) {
|
|
@@ -91,23 +131,38 @@ async function run(options) {
|
|
|
91
131
|
const nameWithoutExt = prologBasename.replace(/\.pl$/, '');
|
|
92
132
|
// Parse JSON trace output
|
|
93
133
|
logVerbose('Parsing JSON trace output...', options);
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
//
|
|
101
|
-
logVerbose('
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
134
|
+
const { parseEvents } = await import('./parser.js');
|
|
135
|
+
const traceEvents = parseEvents(execResult.json, prologContent);
|
|
136
|
+
// Build timeline
|
|
137
|
+
logVerbose('Building execution timeline...', options);
|
|
138
|
+
const timelineBuilder = new TimelineBuilder(traceEvents, sourceClauseMap, options.query);
|
|
139
|
+
const timeline = timelineBuilder.build();
|
|
140
|
+
// Build tree
|
|
141
|
+
logVerbose('Building call tree...', options);
|
|
142
|
+
const treeBuilder = new TreeBuilder(traceEvents, sourceClauseMap);
|
|
143
|
+
const tree = treeBuilder.build();
|
|
144
|
+
// Prepare clause definitions
|
|
145
|
+
const clauseDefinitions = clauses.map(c => ({
|
|
146
|
+
line: c.number,
|
|
147
|
+
text: c.text,
|
|
148
|
+
}));
|
|
149
|
+
// Generate markdown
|
|
150
|
+
logVerbose('Generating markdown output...', options);
|
|
151
|
+
// Extract final answer from tree root and map to original query variables
|
|
152
|
+
let finalAnswer;
|
|
153
|
+
if (tree && tree.finalBinding) {
|
|
154
|
+
// Parse original query to get variable names
|
|
155
|
+
const queryVars = extractQueryVariables(options.query);
|
|
156
|
+
// Map internal variable to original query variable
|
|
157
|
+
finalAnswer = mapBindingToOriginalQuery(tree.finalBinding, tree.goal, options.query, queryVars);
|
|
158
|
+
}
|
|
159
|
+
const markdown = generateMarkdown({
|
|
106
160
|
query: options.query,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
161
|
+
originalQuery: options.query,
|
|
162
|
+
timeline,
|
|
163
|
+
tree,
|
|
164
|
+
clauses: clauseDefinitions,
|
|
165
|
+
finalAnswer,
|
|
111
166
|
});
|
|
112
167
|
// Write output - default to source file location if not specified
|
|
113
168
|
const outputPath = options.output || `${prologDir}/${nameWithoutExt}-output.md`;
|
|
@@ -124,5 +179,8 @@ async function run(options) {
|
|
|
124
179
|
await tempFile.cleanup();
|
|
125
180
|
}
|
|
126
181
|
}
|
|
127
|
-
main()
|
|
182
|
+
main().catch((error) => {
|
|
183
|
+
console.error('Fatal error:', error);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
});
|
|
128
186
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Output Generator - Generates complete markdown document
|
|
3
|
+
*/
|
|
4
|
+
import { TimelineStep } from './timeline.js';
|
|
5
|
+
import { TreeNode } from './tree.js';
|
|
6
|
+
export interface ClauseDefinition {
|
|
7
|
+
line: number;
|
|
8
|
+
text: string;
|
|
9
|
+
}
|
|
10
|
+
export interface MarkdownContext {
|
|
11
|
+
query: string;
|
|
12
|
+
originalQuery?: string;
|
|
13
|
+
timeline: TimelineStep[];
|
|
14
|
+
tree: TreeNode | null;
|
|
15
|
+
clauses: ClauseDefinition[];
|
|
16
|
+
finalAnswer?: string;
|
|
17
|
+
truncated?: boolean;
|
|
18
|
+
maxDepth?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generate complete markdown document
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateMarkdown(context: MarkdownContext): string;
|
|
24
|
+
//# sourceMappingURL=markdown-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-generator.d.ts","sourceRoot":"","sources":["../src/markdown-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CA2BjE"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown Output Generator - Generates complete markdown document
|
|
3
|
+
*/
|
|
4
|
+
import { formatTimeline } from './timeline-formatter.js';
|
|
5
|
+
import { formatTreeAsMermaid } from './tree-formatter.js';
|
|
6
|
+
/**
|
|
7
|
+
* Generate complete markdown document
|
|
8
|
+
*/
|
|
9
|
+
export function generateMarkdown(context) {
|
|
10
|
+
const sections = [];
|
|
11
|
+
// Title
|
|
12
|
+
sections.push(generateTitle(context));
|
|
13
|
+
sections.push('');
|
|
14
|
+
// Original query
|
|
15
|
+
sections.push(generateQuerySection(context));
|
|
16
|
+
sections.push('');
|
|
17
|
+
// Clause definitions
|
|
18
|
+
sections.push(generateClausesSection(context));
|
|
19
|
+
sections.push('');
|
|
20
|
+
// Timeline
|
|
21
|
+
sections.push(generateTimelineSection(context));
|
|
22
|
+
sections.push('');
|
|
23
|
+
// Tree
|
|
24
|
+
sections.push(generateTreeSection(context));
|
|
25
|
+
sections.push('');
|
|
26
|
+
// Final answer
|
|
27
|
+
sections.push(generateFinalAnswerSection(context));
|
|
28
|
+
return sections.join('\n');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate document title
|
|
32
|
+
*/
|
|
33
|
+
function generateTitle(context) {
|
|
34
|
+
const query = context.originalQuery || context.query;
|
|
35
|
+
return `# Prolog Execution Trace: ${query}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate query section
|
|
39
|
+
*/
|
|
40
|
+
function generateQuerySection(context) {
|
|
41
|
+
const query = context.originalQuery || context.query;
|
|
42
|
+
return [
|
|
43
|
+
'## Query',
|
|
44
|
+
'',
|
|
45
|
+
'```',
|
|
46
|
+
query,
|
|
47
|
+
'```',
|
|
48
|
+
].join('\n');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Generate clauses section
|
|
52
|
+
*/
|
|
53
|
+
function generateClausesSection(context) {
|
|
54
|
+
const lines = [];
|
|
55
|
+
lines.push('## Clause Definitions');
|
|
56
|
+
lines.push('');
|
|
57
|
+
if (context.clauses.length === 0) {
|
|
58
|
+
lines.push('_No clauses found._');
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
// Table header
|
|
62
|
+
lines.push('| Line # | Clause |');
|
|
63
|
+
lines.push('|--------|--------|');
|
|
64
|
+
// Table rows
|
|
65
|
+
for (const clause of context.clauses) {
|
|
66
|
+
lines.push(`| ${clause.line} | \`${clause.text}\` |`);
|
|
67
|
+
}
|
|
68
|
+
return lines.join('\n');
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generate timeline section
|
|
72
|
+
*/
|
|
73
|
+
function generateTimelineSection(context) {
|
|
74
|
+
const lines = [];
|
|
75
|
+
lines.push('## Execution Timeline');
|
|
76
|
+
lines.push('');
|
|
77
|
+
if (context.timeline.length === 0) {
|
|
78
|
+
lines.push('_No execution steps recorded._');
|
|
79
|
+
return lines.join('\n');
|
|
80
|
+
}
|
|
81
|
+
lines.push(formatTimeline(context.timeline));
|
|
82
|
+
return lines.join('\n');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate tree section
|
|
86
|
+
*/
|
|
87
|
+
function generateTreeSection(context) {
|
|
88
|
+
const lines = [];
|
|
89
|
+
lines.push('## Call Tree');
|
|
90
|
+
lines.push('');
|
|
91
|
+
if (!context.tree) {
|
|
92
|
+
lines.push('_No call tree available._');
|
|
93
|
+
return lines.join('\n');
|
|
94
|
+
}
|
|
95
|
+
lines.push('```mermaid');
|
|
96
|
+
lines.push(formatTreeAsMermaid(context.tree));
|
|
97
|
+
lines.push('```');
|
|
98
|
+
return lines.join('\n');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Generate final answer section
|
|
102
|
+
*/
|
|
103
|
+
function generateFinalAnswerSection(context) {
|
|
104
|
+
const lines = [];
|
|
105
|
+
lines.push('## Final Answer');
|
|
106
|
+
lines.push('');
|
|
107
|
+
if (context.finalAnswer) {
|
|
108
|
+
lines.push('```');
|
|
109
|
+
lines.push(context.finalAnswer);
|
|
110
|
+
lines.push('```');
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
lines.push('Query succeeded with no bindings.');
|
|
114
|
+
}
|
|
115
|
+
// Add notes about truncation or first solution
|
|
116
|
+
if (context.truncated && context.maxDepth) {
|
|
117
|
+
lines.push('');
|
|
118
|
+
lines.push(`_Note: Trace truncated at depth ${context.maxDepth}_`);
|
|
119
|
+
}
|
|
120
|
+
lines.push('');
|
|
121
|
+
lines.push('_Showing first solution only._');
|
|
122
|
+
return lines.join('\n');
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=markdown-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-generator.js","sourceRoot":"","sources":["../src/markdown-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -7,12 +7,17 @@ export interface TraceEvent {
|
|
|
7
7
|
level: number;
|
|
8
8
|
goal: string;
|
|
9
9
|
arguments?: any[];
|
|
10
|
+
unifications?: Unification[];
|
|
10
11
|
clause?: {
|
|
11
12
|
head: string;
|
|
12
13
|
body: string;
|
|
13
14
|
line: number;
|
|
14
15
|
};
|
|
15
16
|
predicate: string;
|
|
17
|
+
parent_info?: {
|
|
18
|
+
level: number;
|
|
19
|
+
goal: string;
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
22
|
export interface ExecutionNode {
|
|
18
23
|
id: string;
|
|
@@ -62,6 +67,10 @@ export declare function serializeToLatex(node: ExecutionNode): string;
|
|
|
62
67
|
* Parses JSON trace events from the custom tracer into an execution tree.
|
|
63
68
|
*/
|
|
64
69
|
export declare function parseTraceJson(json: string, prologContent?: string): ExecutionNode;
|
|
70
|
+
/**
|
|
71
|
+
* Parses JSON array into TraceEvent objects with validation.
|
|
72
|
+
*/
|
|
73
|
+
export declare function parseEvents(json: string, prologContent?: string): TraceEvent[];
|
|
65
74
|
/**
|
|
66
75
|
* Clears internal caches to free memory.
|
|
67
76
|
* Call this periodically when processing many large traces.
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;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,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,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|