@webywz/agent-trace 0.0.0-stage → 0.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/LICENSE +21 -0
- package/README.md +116 -2
- package/dist/args.d.ts +16 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +120 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +107 -0
- package/dist/cli.js.map +1 -0
- package/dist/color.d.ts +15 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +29 -0
- package/dist/color.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/event.d.ts +5 -0
- package/dist/parse/event.d.ts.map +1 -0
- package/dist/parse/event.js +204 -0
- package/dist/parse/event.js.map +1 -0
- package/dist/parse/generic.d.ts +4 -0
- package/dist/parse/generic.d.ts.map +1 -0
- package/dist/parse/generic.js +62 -0
- package/dist/parse/generic.js.map +1 -0
- package/dist/parse/index.d.ts +8 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +71 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/jsonl.d.ts +8 -0
- package/dist/parse/jsonl.d.ts.map +1 -0
- package/dist/parse/jsonl.js +85 -0
- package/dist/parse/jsonl.js.map +1 -0
- package/dist/parse/langchain.d.ts +4 -0
- package/dist/parse/langchain.d.ts.map +1 -0
- package/dist/parse/langchain.js +348 -0
- package/dist/parse/langchain.js.map +1 -0
- package/dist/parse/openai.d.ts +4 -0
- package/dist/parse/openai.d.ts.map +1 -0
- package/dist/parse/openai.js +344 -0
- package/dist/parse/openai.js.map +1 -0
- package/dist/read-input.d.ts +5 -0
- package/dist/read-input.d.ts.map +1 -0
- package/dist/read-input.js +20 -0
- package/dist/read-input.js.map +1 -0
- package/dist/render/spicy.d.ts +4 -0
- package/dist/render/spicy.d.ts.map +1 -0
- package/dist/render/spicy.js +144 -0
- package/dist/render/spicy.js.map +1 -0
- package/dist/render/timeline.d.ts +4 -0
- package/dist/render/timeline.d.ts.map +1 -0
- package/dist/render/timeline.js +179 -0
- package/dist/render/timeline.js.map +1 -0
- package/dist/stats.d.ts +3 -0
- package/dist/stats.d.ts.map +1 -0
- package/dist/stats.js +64 -0
- package/dist/stats.js.map +1 -0
- package/dist/types.d.ts +49 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +17 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +185 -0
- package/dist/util.js.map +1 -0
- package/examples/generic.json +29 -0
- package/examples/langchain.json +55 -0
- package/examples/openai.json +29 -0
- package/examples/run.jsonl +19 -0
- package/package.json +59 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 webywz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,117 @@
|
|
|
1
|
-
#
|
|
1
|
+
# agent-trace
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Turn messy agent run logs into a readable timeline.
|
|
4
|
+
|
|
5
|
+
OpenAI tool-call dumps, LangChain / LangSmith trees, JSONL event streams, Cursor-ish traces — all of them are painful to skim. `agent-trace` is an offline CLI that normalizes those shapes into a numbered timeline: thoughts, tools, results, errors, durations, and a one-line autopsy.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
$ agent-trace examples/run.jsonl
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
agent-trace · examples/run.jsonl
|
|
13
|
+
jsonl · 19 steps · 7 tool calls · 1 failure · 15.3s
|
|
14
|
+
────────────────────────────────────────────────────────────────────────
|
|
15
|
+
1 user +0ms 770ms
|
|
16
|
+
│ The login test is flaky on CI. Fix it. Do not sleep() your way out.
|
|
17
|
+
│
|
|
18
|
+
2 thought +770ms 120ms
|
|
19
|
+
│ I'll read the spec and the auth module, then look for a race — not a …
|
|
20
|
+
│
|
|
21
|
+
3 tool +890ms 170ms read_file
|
|
22
|
+
│ {"path":"test/login.spec.ts"}
|
|
23
|
+
│
|
|
24
|
+
12 tool +2.68s 6.61s run_tests
|
|
25
|
+
│ {"cmd":"npx playwright test test/login.spec.ts --repeat-each=8"}
|
|
26
|
+
│
|
|
27
|
+
13 error +9.29s 470ms run_tests
|
|
28
|
+
│ 1 failed · login.spec.ts:12: cookie sid missing on first navigation (…
|
|
29
|
+
│
|
|
30
|
+
19 assistant +15.3s
|
|
31
|
+
│ The flake was a cookie/redirect race, not a slow page. Cookie is now …
|
|
32
|
+
────────────────────────────────────────────────────────────────────────
|
|
33
|
+
19 steps · 7 tool calls · 1 failure · ~1,840 in / 96 out · 15.3s
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm i -g @webywz/agent-trace
|
|
40
|
+
agent-trace examples/run.jsonl
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Node 18+. No API key required.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx @webywz/agent-trace examples/run.jsonl
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
agent-trace run.jsonl
|
|
53
|
+
agent-trace --format auto|openai|langchain|jsonl run.jsonl
|
|
54
|
+
agent-trace --json run.jsonl
|
|
55
|
+
agent-trace --spicy run.jsonl
|
|
56
|
+
cat run.jsonl | agent-trace
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
| Flag | What it does |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| `-f, --format` | `auto` (default), `openai`, `langchain`, `jsonl` |
|
|
62
|
+
| `--json` | Normalized trace as JSON (steps, stats, warnings) |
|
|
63
|
+
| `--spicy` | A short narrative recap. Offline by default; uses `OPENAI_API_KEY` or `ANTHROPIC_API_KEY` when set |
|
|
64
|
+
| `--ascii` | ASCII-only timeline (no box drawing) |
|
|
65
|
+
| `--no-color` | Disable ANSI colors (`NO_COLOR` also works) |
|
|
66
|
+
| `--width <n>` | Wrap width (defaults to the terminal) |
|
|
67
|
+
| `--max-content <n>` | Truncate args / results (default 160) |
|
|
68
|
+
|
|
69
|
+
`--spicy` never blocks the timeline. If the key is missing, the recap is local. If the LLM call fails, you still get the local recap.
|
|
70
|
+
|
|
71
|
+
## What it parses
|
|
72
|
+
|
|
73
|
+
**OpenAI** — `chat.completion` objects, `messages[]` with `tool_calls` / `role: tool`, Responses API `output[]`, and streamed JSONL chunks with `delta`.
|
|
74
|
+
|
|
75
|
+
**LangChain** — LangSmith run trees (`run_type` + `child_runs`), callback events (`on_tool_start`, `on_tool_end`, `on_chain_error`, …), `AgentAction` dumps.
|
|
76
|
+
|
|
77
|
+
**JSONL** — one event per line: `role` / `type` / `tool` / `content` / `ts`. Cursor-ish traces included. Bad lines are skipped and reported.
|
|
78
|
+
|
|
79
|
+
**Generic** — a JSON array (or `{ events: [...] }`) of `{ type, name, content, ts }`.
|
|
80
|
+
|
|
81
|
+
Auto-detect sniffs the file; `--format` forces a parser.
|
|
82
|
+
|
|
83
|
+
## Library
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
import { parseTrace, renderTimeline, spicyNarrative } from "@webywz/agent-trace";
|
|
87
|
+
import { readFile } from "node:fs/promises";
|
|
88
|
+
|
|
89
|
+
const text = await readFile("run.jsonl", "utf8");
|
|
90
|
+
const trace = parseTrace(text, { format: "auto", source: "run.jsonl" });
|
|
91
|
+
process.stdout.write(renderTimeline(trace, { color: false }));
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`Trace.stats` always includes step / tool / failure counts, plus duration and token in/out when the log carries timestamps or usage.
|
|
95
|
+
|
|
96
|
+
## Examples
|
|
97
|
+
|
|
98
|
+
Same repo, ready to paste into a terminal:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
agent-trace examples/run.jsonl
|
|
102
|
+
agent-trace examples/openai.json
|
|
103
|
+
agent-trace examples/langchain.json
|
|
104
|
+
agent-trace --json examples/generic.json
|
|
105
|
+
agent-trace --spicy examples/run.jsonl
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Develop
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm install
|
|
112
|
+
npm test
|
|
113
|
+
npm run build
|
|
114
|
+
node dist/cli.js examples/run.jsonl
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
MIT © webywz
|
package/dist/args.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TraceFormat } from "./types.js";
|
|
2
|
+
export interface CliArgs {
|
|
3
|
+
file?: string;
|
|
4
|
+
format: TraceFormat;
|
|
5
|
+
json: boolean;
|
|
6
|
+
spicy: boolean;
|
|
7
|
+
color?: boolean;
|
|
8
|
+
ascii: boolean;
|
|
9
|
+
width?: number;
|
|
10
|
+
maxContent?: number;
|
|
11
|
+
help: boolean;
|
|
12
|
+
version: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function parseArgs(argv: string[]): CliArgs;
|
|
15
|
+
export declare function helpText(version: string): string;
|
|
16
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAmFjD;AAUD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA4BhD"}
|
package/dist/args.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
const FORMATS = new Set(["auto", "openai", "langchain", "jsonl", "generic"]);
|
|
2
|
+
export function parseArgs(argv) {
|
|
3
|
+
const args = {
|
|
4
|
+
format: "auto",
|
|
5
|
+
json: false,
|
|
6
|
+
spicy: false,
|
|
7
|
+
ascii: false,
|
|
8
|
+
help: false,
|
|
9
|
+
version: false,
|
|
10
|
+
};
|
|
11
|
+
const rest = argv.slice(2);
|
|
12
|
+
for (let i = 0; i < rest.length; i += 1) {
|
|
13
|
+
const token = rest[i];
|
|
14
|
+
if (!token)
|
|
15
|
+
continue;
|
|
16
|
+
if (token === "--") {
|
|
17
|
+
const file = rest[i + 1];
|
|
18
|
+
if (file)
|
|
19
|
+
args.file = file;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
if (token === "-") {
|
|
23
|
+
if (args.file)
|
|
24
|
+
throw new Error("unexpected extra argument '-'");
|
|
25
|
+
args.file = "-";
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (token === "-h" || token === "--help") {
|
|
29
|
+
args.help = true;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (token === "-v" || token === "--version") {
|
|
33
|
+
args.version = true;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (token === "--json" || token === "-j") {
|
|
37
|
+
args.json = true;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (token === "--spicy") {
|
|
41
|
+
args.spicy = true;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (token === "--ascii") {
|
|
45
|
+
args.ascii = true;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (token === "--no-color") {
|
|
49
|
+
args.color = false;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (token === "--color") {
|
|
53
|
+
args.color = true;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const eq = token.indexOf("=");
|
|
57
|
+
const [flag, inline] = eq === -1 ? [token, undefined] : [token.slice(0, eq), token.slice(eq + 1)];
|
|
58
|
+
if (flag === "-f" || flag === "--format") {
|
|
59
|
+
const value = inline ?? rest[++i];
|
|
60
|
+
if (!value || !FORMATS.has(value)) {
|
|
61
|
+
throw new Error(`unknown format '${value ?? ""}' (expected auto|openai|langchain|jsonl)`);
|
|
62
|
+
}
|
|
63
|
+
args.format = value;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (flag === "--width") {
|
|
67
|
+
args.width = toInt(inline ?? rest[++i], "--width");
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (flag === "--max-content") {
|
|
71
|
+
args.maxContent = toInt(inline ?? rest[++i], "--max-content");
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (token.startsWith("-")) {
|
|
75
|
+
throw new Error(`unknown option '${token}'`);
|
|
76
|
+
}
|
|
77
|
+
if (args.file) {
|
|
78
|
+
throw new Error(`unexpected extra argument '${token}'`);
|
|
79
|
+
}
|
|
80
|
+
args.file = token;
|
|
81
|
+
}
|
|
82
|
+
return args;
|
|
83
|
+
}
|
|
84
|
+
function toInt(value, flag) {
|
|
85
|
+
const n = Number(value);
|
|
86
|
+
if (!value || !Number.isInteger(n) || n <= 0) {
|
|
87
|
+
throw new Error(`${flag} expects a positive integer`);
|
|
88
|
+
}
|
|
89
|
+
return n;
|
|
90
|
+
}
|
|
91
|
+
export function helpText(version) {
|
|
92
|
+
return `\
|
|
93
|
+
agent-trace v${version}
|
|
94
|
+
Turn messy agent run logs into a readable timeline.
|
|
95
|
+
|
|
96
|
+
Usage:
|
|
97
|
+
agent-trace <file>
|
|
98
|
+
agent-trace - Read from stdin
|
|
99
|
+
cat run.jsonl | agent-trace
|
|
100
|
+
|
|
101
|
+
Options:
|
|
102
|
+
-f, --format auto|openai|langchain|jsonl Parser (default: auto)
|
|
103
|
+
--json Machine-readable normalized trace
|
|
104
|
+
--spicy Add a narrative recap (offline, or
|
|
105
|
+
LLM if OPENAI_API_KEY / ANTHROPIC_API_KEY)
|
|
106
|
+
--ascii ASCII-only timeline
|
|
107
|
+
--no-color Disable ANSI colors
|
|
108
|
+
--width <n> Wrap width (default: terminal)
|
|
109
|
+
--max-content <n> Truncate args/results (default: 160)
|
|
110
|
+
-h, --help Show this help
|
|
111
|
+
-v, --version Print version
|
|
112
|
+
|
|
113
|
+
Formats:
|
|
114
|
+
openai Chat Completions, messages[], Responses API, streaming deltas
|
|
115
|
+
langchain LangSmith run trees, callback events, AgentAction dumps
|
|
116
|
+
jsonl Role/tool/content events, Cursor-ish traces, generic objects
|
|
117
|
+
auto Sniff the file, then fall through the parsers above
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=args.js.map
|
package/dist/args.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAaA,iBAAe,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+DnD;AAwCD,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, realpathSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { helpText, parseArgs } from "./args.js";
|
|
6
|
+
import { createPalette, shouldColor } from "./color.js";
|
|
7
|
+
import { parseTrace } from "./parse/index.js";
|
|
8
|
+
import { readInput } from "./read-input.js";
|
|
9
|
+
import { spicyNarrative } from "./render/spicy.js";
|
|
10
|
+
import { renderTimeline } from "./render/timeline.js";
|
|
11
|
+
const VERSION = readVersion();
|
|
12
|
+
async function main(argv) {
|
|
13
|
+
let args;
|
|
14
|
+
try {
|
|
15
|
+
args = parseArgs(argv);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
printErr(error);
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
if (args.help) {
|
|
22
|
+
process.stdout.write(helpText(VERSION));
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
if (args.version) {
|
|
26
|
+
process.stdout.write(`agent-trace ${VERSION}\n`);
|
|
27
|
+
return 0;
|
|
28
|
+
}
|
|
29
|
+
let text;
|
|
30
|
+
let source;
|
|
31
|
+
try {
|
|
32
|
+
({ text, source } = await readInput(args.file));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
printErr(error);
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
let trace;
|
|
39
|
+
try {
|
|
40
|
+
trace = parseTrace(text, { format: args.format, source });
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
printErr(error);
|
|
44
|
+
return 1;
|
|
45
|
+
}
|
|
46
|
+
if (args.json) {
|
|
47
|
+
const payload = {
|
|
48
|
+
format: trace.format,
|
|
49
|
+
source: trace.source,
|
|
50
|
+
stats: trace.stats,
|
|
51
|
+
warnings: trace.warnings,
|
|
52
|
+
steps: trace.steps,
|
|
53
|
+
...(args.spicy ? { spicy: await spicyNarrative(trace) } : {}),
|
|
54
|
+
};
|
|
55
|
+
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
const timeline = renderTimeline(trace, {
|
|
59
|
+
color: args.color,
|
|
60
|
+
ascii: args.ascii,
|
|
61
|
+
width: args.width,
|
|
62
|
+
maxContent: args.maxContent,
|
|
63
|
+
});
|
|
64
|
+
process.stdout.write(timeline);
|
|
65
|
+
if (args.spicy) {
|
|
66
|
+
const color = createPalette(shouldColor(args.color));
|
|
67
|
+
const narrative = await spicyNarrative(trace);
|
|
68
|
+
process.stdout.write(`\n${color.bold("spicy")} ${narrative}\n`);
|
|
69
|
+
}
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
function printErr(error) {
|
|
73
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
74
|
+
process.stderr.write(`agent-trace: ${message}\n`);
|
|
75
|
+
}
|
|
76
|
+
function isCliEntry(argvPath) {
|
|
77
|
+
if (!argvPath)
|
|
78
|
+
return false;
|
|
79
|
+
const self = fileURLToPath(import.meta.url);
|
|
80
|
+
try {
|
|
81
|
+
return realpathSync(argvPath) === self || realpathSync(argvPath) === realpathSync(self);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return /(cli\.(js|ts)|agent-trace)$/.test(argvPath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function readVersion() {
|
|
88
|
+
try {
|
|
89
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
90
|
+
const raw = readFileSync(join(here, "..", "package.json"), "utf8");
|
|
91
|
+
const parsed = JSON.parse(raw);
|
|
92
|
+
return parsed.version ?? "0.1.0";
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return "0.1.0";
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (isCliEntry(process.argv[1])) {
|
|
99
|
+
main(process.argv).then((code) => {
|
|
100
|
+
process.exitCode = code;
|
|
101
|
+
}, (error) => {
|
|
102
|
+
printErr(error);
|
|
103
|
+
process.exitCode = 1;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
export { main };
|
|
107
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/color.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Palette {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
bold: (s: string) => string;
|
|
4
|
+
dim: (s: string) => string;
|
|
5
|
+
italic: (s: string) => string;
|
|
6
|
+
red: (s: string) => string;
|
|
7
|
+
green: (s: string) => string;
|
|
8
|
+
yellow: (s: string) => string;
|
|
9
|
+
cyan: (s: string) => string;
|
|
10
|
+
magenta: (s: string) => string;
|
|
11
|
+
inverse: (s: string) => string;
|
|
12
|
+
}
|
|
13
|
+
export declare function createPalette(enabled: boolean): Palette;
|
|
14
|
+
export declare function shouldColor(flag?: boolean): boolean;
|
|
15
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAavD;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAMnD"}
|
package/dist/color.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function wrap(enabled, open, close) {
|
|
2
|
+
return (s) => (enabled ? `\u001b[${open}m${s}\u001b[${close}m` : s);
|
|
3
|
+
}
|
|
4
|
+
export function createPalette(enabled) {
|
|
5
|
+
return {
|
|
6
|
+
enabled,
|
|
7
|
+
bold: wrap(enabled, "1", "22"),
|
|
8
|
+
dim: wrap(enabled, "2", "22"),
|
|
9
|
+
italic: wrap(enabled, "3", "23"),
|
|
10
|
+
red: wrap(enabled, "91", "39"),
|
|
11
|
+
green: wrap(enabled, "32", "39"),
|
|
12
|
+
yellow: wrap(enabled, "33", "39"),
|
|
13
|
+
cyan: wrap(enabled, "36", "39"),
|
|
14
|
+
magenta: wrap(enabled, "35", "39"),
|
|
15
|
+
inverse: wrap(enabled, "7", "27"),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function shouldColor(flag) {
|
|
19
|
+
if (flag === false)
|
|
20
|
+
return false;
|
|
21
|
+
if (process.env.NO_COLOR)
|
|
22
|
+
return false;
|
|
23
|
+
if (process.env.FORCE_COLOR === "0")
|
|
24
|
+
return false;
|
|
25
|
+
if (flag === true)
|
|
26
|
+
return true;
|
|
27
|
+
return Boolean(process.stdout.isTTY);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../src/color.ts"],"names":[],"mappings":"AAaA,SAAS,IAAI,CAAC,OAAgB,EAAE,IAAY,EAAE,KAAa;IACzD,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,OAAO;QACL,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;QAC9B,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;QAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;QAChC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QACjC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { ParseOptions, RenderOptions, SpicyOptions, StepKind, Trace, TraceFormat, TraceStats, TraceStep, } from "./types.js";
|
|
2
|
+
export { parseTrace } from "./parse/index.js";
|
|
3
|
+
export { parseOpenAI } from "./parse/openai.js";
|
|
4
|
+
export { parseLangChain } from "./parse/langchain.js";
|
|
5
|
+
export { parseJsonl } from "./parse/jsonl.js";
|
|
6
|
+
export { parseGeneric } from "./parse/generic.js";
|
|
7
|
+
export { renderTimeline, summaryLine } from "./render/timeline.js";
|
|
8
|
+
export { spicyNarrative, localSpicy } from "./render/spicy.js";
|
|
9
|
+
export { computeStats } from "./stats.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { parseTrace } from "./parse/index.js";
|
|
2
|
+
export { parseOpenAI } from "./parse/openai.js";
|
|
3
|
+
export { parseLangChain } from "./parse/langchain.js";
|
|
4
|
+
export { parseJsonl } from "./parse/jsonl.js";
|
|
5
|
+
export { parseGeneric } from "./parse/generic.js";
|
|
6
|
+
export { renderTimeline, summaryLine } from "./render/timeline.js";
|
|
7
|
+
export { spicyNarrative, localSpicy } from "./render/spicy.js";
|
|
8
|
+
export { computeStats } from "./stats.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { StepKind, TraceStep } from "../types.js";
|
|
2
|
+
export declare function normalizeEvent(value: unknown, index: number): TraceStep | null;
|
|
3
|
+
export declare function titleFor(kind: StepKind, name?: string): string;
|
|
4
|
+
export declare function reindex(steps: TraceStep[]): TraceStep[];
|
|
5
|
+
//# sourceMappingURL=event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/parse/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA2DvD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAqG9E;AAwBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB9D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAEvD"}
|