@uvl000/claude-trace 3.0.13-workflowexp.1
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 +477 -0
- package/README.zh-CN.md +477 -0
- package/dist/adapt/api-format.d.ts +41 -0
- package/dist/adapt/api-format.d.ts.map +1 -0
- package/dist/adapt/api-format.js +132 -0
- package/dist/adapt/api-format.js.map +1 -0
- package/dist/adapt/openai-adapter.d.ts +123 -0
- package/dist/adapt/openai-adapter.d.ts.map +1 -0
- package/dist/adapt/openai-adapter.js +628 -0
- package/dist/adapt/openai-adapter.js.map +1 -0
- package/dist/cli/cli-common.d.ts +73 -0
- package/dist/cli/cli-common.d.ts.map +1 -0
- package/dist/cli/cli-common.js +189 -0
- package/dist/cli/cli-common.js.map +1 -0
- package/dist/cli/cli.d.ts +23 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +175 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/codex-cli.d.ts +24 -0
- package/dist/cli/codex-cli.d.ts.map +1 -0
- package/dist/cli/codex-cli.js +146 -0
- package/dist/cli/codex-cli.js.map +1 -0
- package/dist/cli/opencode-cli.d.ts +23 -0
- package/dist/cli/opencode-cli.d.ts.map +1 -0
- package/dist/cli/opencode-cli.js +156 -0
- package/dist/cli/opencode-cli.js.map +1 -0
- package/dist/cli/trace-runner.d.ts +21 -0
- package/dist/cli/trace-runner.d.ts.map +1 -0
- package/dist/cli/trace-runner.js +282 -0
- package/dist/cli/trace-runner.js.map +1 -0
- package/dist/cli/validate-trace.d.ts +30 -0
- package/dist/cli/validate-trace.d.ts.map +1 -0
- package/dist/cli/validate-trace.js +230 -0
- package/dist/cli/validate-trace.js.map +1 -0
- package/dist/cli/verify-offline-bundle.d.ts +13 -0
- package/dist/cli/verify-offline-bundle.d.ts.map +1 -0
- package/dist/cli/verify-offline-bundle.js +89 -0
- package/dist/cli/verify-offline-bundle.js.map +1 -0
- package/dist/cli/vibe-coding-proxy-cli.d.ts +12 -0
- package/dist/cli/vibe-coding-proxy-cli.d.ts.map +1 -0
- package/dist/cli/vibe-coding-proxy-cli.js +218 -0
- package/dist/cli/vibe-coding-proxy-cli.js.map +1 -0
- package/dist/config/claude-config-overlay.d.ts +69 -0
- package/dist/config/claude-config-overlay.d.ts.map +1 -0
- package/dist/config/claude-config-overlay.js +229 -0
- package/dist/config/claude-config-overlay.js.map +1 -0
- package/dist/config/codex-config-overlay.d.ts +122 -0
- package/dist/config/codex-config-overlay.d.ts.map +1 -0
- package/dist/config/codex-config-overlay.js +352 -0
- package/dist/config/codex-config-overlay.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/intercept/forward-proxy.d.ts +77 -0
- package/dist/intercept/forward-proxy.d.ts.map +1 -0
- package/dist/intercept/forward-proxy.js +368 -0
- package/dist/intercept/forward-proxy.js.map +1 -0
- package/dist/intercept/header-redaction.d.ts +7 -0
- package/dist/intercept/header-redaction.d.ts.map +1 -0
- package/dist/intercept/header-redaction.js +28 -0
- package/dist/intercept/header-redaction.js.map +1 -0
- package/dist/intercept/interceptor-loader.js +26 -0
- package/dist/intercept/interceptor.d.ts +164 -0
- package/dist/intercept/interceptor.d.ts.map +1 -0
- package/dist/intercept/interceptor.js +496 -0
- package/dist/intercept/interceptor.js.map +1 -0
- package/dist/intercept/mitm-cert.d.ts +53 -0
- package/dist/intercept/mitm-cert.d.ts.map +1 -0
- package/dist/intercept/mitm-cert.js +259 -0
- package/dist/intercept/mitm-cert.js.map +1 -0
- package/dist/intercept/proxy-log-writer.d.ts +77 -0
- package/dist/intercept/proxy-log-writer.d.ts.map +1 -0
- package/dist/intercept/proxy-log-writer.js +323 -0
- package/dist/intercept/proxy-log-writer.js.map +1 -0
- package/dist/intercept/proxy-targets.d.ts +69 -0
- package/dist/intercept/proxy-targets.d.ts.map +1 -0
- package/dist/intercept/proxy-targets.js +129 -0
- package/dist/intercept/proxy-targets.js.map +1 -0
- package/dist/intercept/reverse-proxy.d.ts +191 -0
- package/dist/intercept/reverse-proxy.d.ts.map +1 -0
- package/dist/intercept/reverse-proxy.js +807 -0
- package/dist/intercept/reverse-proxy.js.map +1 -0
- package/dist/intercept/token-extractor.js +28 -0
- package/dist/report/html-generator.d.ts +96 -0
- package/dist/report/html-generator.d.ts.map +1 -0
- package/dist/report/html-generator.js +225 -0
- package/dist/report/html-generator.js.map +1 -0
- package/dist/report/index-generator.d.ts +89 -0
- package/dist/report/index-generator.d.ts.map +1 -0
- package/dist/report/index-generator.js +319 -0
- package/dist/report/index-generator.js.map +1 -0
- package/dist/report/shared-conversation-processor.d.ts +200 -0
- package/dist/report/shared-conversation-processor.d.ts.map +1 -0
- package/dist/report/shared-conversation-processor.js +720 -0
- package/dist/report/shared-conversation-processor.js.map +1 -0
- package/dist/routing/codex-routing.d.ts +40 -0
- package/dist/routing/codex-routing.d.ts.map +1 -0
- package/dist/routing/codex-routing.js +96 -0
- package/dist/routing/codex-routing.js.map +1 -0
- package/dist/routing/proxy-routing.d.ts +48 -0
- package/dist/routing/proxy-routing.d.ts.map +1 -0
- package/dist/routing/proxy-routing.js +113 -0
- package/dist/routing/proxy-routing.js.map +1 -0
- package/dist/tools/binary-utils.d.ts +29 -0
- package/dist/tools/binary-utils.d.ts.map +1 -0
- package/dist/tools/binary-utils.js +134 -0
- package/dist/tools/binary-utils.js.map +1 -0
- package/dist/tools/claude.d.ts +61 -0
- package/dist/tools/claude.d.ts.map +1 -0
- package/dist/tools/claude.js +449 -0
- package/dist/tools/claude.js.map +1 -0
- package/dist/tools/codex.d.ts +70 -0
- package/dist/tools/codex.d.ts.map +1 -0
- package/dist/tools/codex.js +492 -0
- package/dist/tools/codex.js.map +1 -0
- package/dist/tools/opencode.d.ts +85 -0
- package/dist/tools/opencode.d.ts.map +1 -0
- package/dist/tools/opencode.js +401 -0
- package/dist/tools/opencode.js.map +1 -0
- package/dist/tools/types.d.ts +91 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +11 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types.d.ts +158 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/frontend/dist/index.global.js +1551 -0
- package/frontend/dist/styles.css +1027 -0
- package/frontend/template.html +19 -0
- package/node_modules/agent-base/LICENSE +22 -0
- package/node_modules/agent-base/README.md +69 -0
- package/node_modules/agent-base/dist/helpers.d.ts +15 -0
- package/node_modules/agent-base/dist/helpers.d.ts.map +1 -0
- package/node_modules/agent-base/dist/helpers.js +66 -0
- package/node_modules/agent-base/dist/helpers.js.map +1 -0
- package/node_modules/agent-base/dist/index.d.ts +41 -0
- package/node_modules/agent-base/dist/index.d.ts.map +1 -0
- package/node_modules/agent-base/dist/index.js +178 -0
- package/node_modules/agent-base/dist/index.js.map +1 -0
- package/node_modules/agent-base/package.json +46 -0
- package/node_modules/debug/LICENSE +20 -0
- package/node_modules/debug/README.md +481 -0
- package/node_modules/debug/package.json +64 -0
- package/node_modules/debug/src/browser.js +272 -0
- package/node_modules/debug/src/common.js +292 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/node.js +263 -0
- package/node_modules/http-proxy-agent/LICENSE +22 -0
- package/node_modules/http-proxy-agent/README.md +44 -0
- package/node_modules/http-proxy-agent/dist/index.d.ts +44 -0
- package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -0
- package/node_modules/http-proxy-agent/dist/index.js +148 -0
- package/node_modules/http-proxy-agent/dist/index.js.map +1 -0
- package/node_modules/http-proxy-agent/package.json +47 -0
- package/node_modules/https-proxy-agent/LICENSE +22 -0
- package/node_modules/https-proxy-agent/README.md +70 -0
- package/node_modules/https-proxy-agent/dist/index.d.ts +47 -0
- package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -0
- package/node_modules/https-proxy-agent/dist/index.js +180 -0
- package/node_modules/https-proxy-agent/dist/index.js.map +1 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +15 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
- package/node_modules/https-proxy-agent/package.json +50 -0
- package/node_modules/ms/index.js +162 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +38 -0
- package/node_modules/ms/readme.md +59 -0
- package/node_modules/node-forge/LICENSE +331 -0
- package/node_modules/node-forge/README.md +2071 -0
- package/node_modules/node-forge/dist/forge.all.min.js +2 -0
- package/node_modules/node-forge/dist/forge.all.min.js.map +1 -0
- package/node_modules/node-forge/dist/forge.min.js +2 -0
- package/node_modules/node-forge/dist/forge.min.js.map +1 -0
- package/node_modules/node-forge/dist/prime.worker.min.js +2 -0
- package/node_modules/node-forge/dist/prime.worker.min.js.map +1 -0
- package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
- package/node_modules/node-forge/lib/aes.js +1091 -0
- package/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
- package/node_modules/node-forge/lib/asn1-validator.js +91 -0
- package/node_modules/node-forge/lib/asn1.js +1503 -0
- package/node_modules/node-forge/lib/baseN.js +186 -0
- package/node_modules/node-forge/lib/cipher.js +230 -0
- package/node_modules/node-forge/lib/cipherModes.js +999 -0
- package/node_modules/node-forge/lib/des.js +496 -0
- package/node_modules/node-forge/lib/ed25519.js +1091 -0
- package/node_modules/node-forge/lib/forge.js +13 -0
- package/node_modules/node-forge/lib/form.js +149 -0
- package/node_modules/node-forge/lib/hmac.js +146 -0
- package/node_modules/node-forge/lib/http.js +1346 -0
- package/node_modules/node-forge/lib/index.all.js +16 -0
- package/node_modules/node-forge/lib/index.js +33 -0
- package/node_modules/node-forge/lib/jsbn.js +1294 -0
- package/node_modules/node-forge/lib/kem.js +168 -0
- package/node_modules/node-forge/lib/log.js +319 -0
- package/node_modules/node-forge/lib/md.all.js +13 -0
- package/node_modules/node-forge/lib/md.js +11 -0
- package/node_modules/node-forge/lib/md5.js +289 -0
- package/node_modules/node-forge/lib/mgf.js +12 -0
- package/node_modules/node-forge/lib/mgf1.js +57 -0
- package/node_modules/node-forge/lib/oids.js +180 -0
- package/node_modules/node-forge/lib/pbe.js +1023 -0
- package/node_modules/node-forge/lib/pbkdf2.js +211 -0
- package/node_modules/node-forge/lib/pem.js +237 -0
- package/node_modules/node-forge/lib/pkcs1.js +276 -0
- package/node_modules/node-forge/lib/pkcs12.js +1078 -0
- package/node_modules/node-forge/lib/pkcs7.js +1260 -0
- package/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
- package/node_modules/node-forge/lib/pki.js +102 -0
- package/node_modules/node-forge/lib/prime.js +297 -0
- package/node_modules/node-forge/lib/prime.worker.js +168 -0
- package/node_modules/node-forge/lib/prng.js +419 -0
- package/node_modules/node-forge/lib/pss.js +241 -0
- package/node_modules/node-forge/lib/random.js +191 -0
- package/node_modules/node-forge/lib/rc2.js +410 -0
- package/node_modules/node-forge/lib/rsa.js +1968 -0
- package/node_modules/node-forge/lib/sha1.js +319 -0
- package/node_modules/node-forge/lib/sha256.js +327 -0
- package/node_modules/node-forge/lib/sha512.js +561 -0
- package/node_modules/node-forge/lib/socket.js +287 -0
- package/node_modules/node-forge/lib/ssh.js +236 -0
- package/node_modules/node-forge/lib/tls.js +4282 -0
- package/node_modules/node-forge/lib/tlssocket.js +249 -0
- package/node_modules/node-forge/lib/util.js +2652 -0
- package/node_modules/node-forge/lib/x509.js +3251 -0
- package/node_modules/node-forge/lib/xhr.js +738 -0
- package/node_modules/node-forge/package.json +123 -0
- package/node_modules/smol-toml/LICENSE +24 -0
- package/node_modules/smol-toml/README.md +239 -0
- package/node_modules/smol-toml/dist/date.d.ts +41 -0
- package/node_modules/smol-toml/dist/date.js +127 -0
- package/node_modules/smol-toml/dist/error.d.ts +38 -0
- package/node_modules/smol-toml/dist/error.js +63 -0
- package/node_modules/smol-toml/dist/extract.d.ts +30 -0
- package/node_modules/smol-toml/dist/extract.js +100 -0
- package/node_modules/smol-toml/dist/index.cjs +897 -0
- package/node_modules/smol-toml/dist/index.d.ts +43 -0
- package/node_modules/smol-toml/dist/index.js +33 -0
- package/node_modules/smol-toml/dist/parse.d.ts +37 -0
- package/node_modules/smol-toml/dist/parse.js +148 -0
- package/node_modules/smol-toml/dist/primitive.d.ts +31 -0
- package/node_modules/smol-toml/dist/primitive.js +179 -0
- package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
- package/node_modules/smol-toml/dist/stringify.js +167 -0
- package/node_modules/smol-toml/dist/struct.d.ts +32 -0
- package/node_modules/smol-toml/dist/struct.js +184 -0
- package/node_modules/smol-toml/dist/util.d.ts +42 -0
- package/node_modules/smol-toml/dist/util.js +111 -0
- package/node_modules/smol-toml/package.json +54 -0
- package/offline/bin/claude-trace +6 -0
- package/offline/bin/claude-wrapper +13 -0
- package/offline/bin/install-agent +14 -0
- package/offline/bin/validate-trace +6 -0
- package/offline/bin/verify-bundle +7 -0
- package/package.json +103 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @file opencode-cli.ts
|
|
4
|
+
* @description Entry point for the `opencode-trace` command.
|
|
5
|
+
*
|
|
6
|
+
* Thin CLI wrapper that parses arguments, dispatches to utility modes
|
|
7
|
+
* (HTML generation, index building), or delegates interactive tracing to
|
|
8
|
+
* `trace-runner.ts` via the OpenCode tool profile.
|
|
9
|
+
*
|
|
10
|
+
* Architecture:
|
|
11
|
+
* ```
|
|
12
|
+
* opencode-cli.ts → opencodeProfile (tools/opencode.ts) → trace-runner.ts
|
|
13
|
+
* └─ reverse-proxy.ts (always)
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* OpenCode always uses reverse-proxy interception; config is injected at
|
|
17
|
+
* runtime via `OPENCODE_CONFIG_CONTENT` without modifying user files.
|
|
18
|
+
* There is no `--extract-token` mode (Claude-only feature).
|
|
19
|
+
*
|
|
20
|
+
* Registered as the `opencode-trace` bin in package.json.
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=opencode-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-cli.d.ts","sourceRoot":"","sources":["../../src/cli/opencode-cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* @file opencode-cli.ts
|
|
5
|
+
* @description Entry point for the `opencode-trace` command.
|
|
6
|
+
*
|
|
7
|
+
* Thin CLI wrapper that parses arguments, dispatches to utility modes
|
|
8
|
+
* (HTML generation, index building), or delegates interactive tracing to
|
|
9
|
+
* `trace-runner.ts` via the OpenCode tool profile.
|
|
10
|
+
*
|
|
11
|
+
* Architecture:
|
|
12
|
+
* ```
|
|
13
|
+
* opencode-cli.ts → opencodeProfile (tools/opencode.ts) → trace-runner.ts
|
|
14
|
+
* └─ reverse-proxy.ts (always)
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* OpenCode always uses reverse-proxy interception; config is injected at
|
|
18
|
+
* runtime via `OPENCODE_CONFIG_CONTENT` without modifying user files.
|
|
19
|
+
* There is no `--extract-token` mode (Claude-only feature).
|
|
20
|
+
*
|
|
21
|
+
* Registered as the `opencode-trace` bin in package.json.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
const opencode_1 = require("../tools/opencode");
|
|
25
|
+
const trace_runner_1 = require("./trace-runner");
|
|
26
|
+
const cli_common_1 = require("./cli-common");
|
|
27
|
+
/**
|
|
28
|
+
* Print usage help for all `opencode-trace` modes and options to stdout.
|
|
29
|
+
*
|
|
30
|
+
* Includes OpenCode-specific config discovery order and the note that
|
|
31
|
+
* original `opencode.json` files are never modified.
|
|
32
|
+
*/
|
|
33
|
+
function showHelp() {
|
|
34
|
+
console.log(`
|
|
35
|
+
${cli_common_1.colors.blue}OpenCode Trace${cli_common_1.colors.reset}
|
|
36
|
+
Record all your interactions with OpenCode as you develop your projects
|
|
37
|
+
|
|
38
|
+
${cli_common_1.colors.yellow}USAGE:${cli_common_1.colors.reset}
|
|
39
|
+
opencode-trace [OPTIONS] [--run-with OPENCODE_ARG...]
|
|
40
|
+
|
|
41
|
+
${cli_common_1.colors.yellow}OPTIONS:${cli_common_1.colors.reset}
|
|
42
|
+
--generate-html Generate HTML report from JSONL file
|
|
43
|
+
--index Generate conversation summaries and index for .opencode-trace/ directory
|
|
44
|
+
--run-with Pass all following arguments to OpenCode process
|
|
45
|
+
--include-all-requests Include all proxied API traffic, not just /v1/messages
|
|
46
|
+
--include-sensitive-headers Log sensitive headers (auth tokens, cookies) without redaction
|
|
47
|
+
--no-open Don't open generated HTML file in browser
|
|
48
|
+
--log Specify custom log file base name (without extension)
|
|
49
|
+
--opencode-path Specify custom path to OpenCode binary
|
|
50
|
+
--help, -h Show this help message
|
|
51
|
+
|
|
52
|
+
${cli_common_1.colors.yellow}MODES:${cli_common_1.colors.reset}
|
|
53
|
+
${cli_common_1.colors.green}Interactive logging:${cli_common_1.colors.reset}
|
|
54
|
+
opencode-trace Start OpenCode with traffic logging
|
|
55
|
+
opencode-trace --log my-session Start OpenCode with custom log file name
|
|
56
|
+
opencode-trace --run-with run "Explain closures" Run OpenCode with specific command
|
|
57
|
+
|
|
58
|
+
${cli_common_1.colors.green}HTML generation:${cli_common_1.colors.reset}
|
|
59
|
+
opencode-trace --generate-html file.jsonl Generate HTML from JSONL file
|
|
60
|
+
opencode-trace --generate-html file.jsonl out.html Generate HTML with custom output name
|
|
61
|
+
|
|
62
|
+
${cli_common_1.colors.green}Indexing:${cli_common_1.colors.reset}
|
|
63
|
+
opencode-trace --index Generate conversation summaries and index
|
|
64
|
+
|
|
65
|
+
${cli_common_1.colors.yellow}EXAMPLES:${cli_common_1.colors.reset}
|
|
66
|
+
# Start OpenCode TUI with logging
|
|
67
|
+
opencode-trace
|
|
68
|
+
|
|
69
|
+
# Start with custom log file name
|
|
70
|
+
opencode-trace --log my-session
|
|
71
|
+
|
|
72
|
+
# Run a one-shot prompt with logging
|
|
73
|
+
opencode-trace --run-with run "Explain async/await"
|
|
74
|
+
|
|
75
|
+
# Run with a specific model
|
|
76
|
+
opencode-trace --run-with run -m anthropic/claude-sonnet-4 "Refactor this module"
|
|
77
|
+
|
|
78
|
+
# Generate HTML report
|
|
79
|
+
opencode-trace --generate-html .opencode-trace/log-2025-01-01-12-00-00.jsonl
|
|
80
|
+
|
|
81
|
+
# Generate conversation index
|
|
82
|
+
opencode-trace --index
|
|
83
|
+
|
|
84
|
+
# Use custom OpenCode binary path
|
|
85
|
+
opencode-trace --opencode-path /usr/local/bin/opencode
|
|
86
|
+
|
|
87
|
+
${cli_common_1.colors.yellow}CONFIG:${cli_common_1.colors.reset}
|
|
88
|
+
OpenCode config is read from (in order):
|
|
89
|
+
1. OPENCODE_CONFIG environment variable
|
|
90
|
+
2. OPENCODE_CONFIG_DIR/opencode.json
|
|
91
|
+
3. ~/.config/opencode/opencode.json
|
|
92
|
+
4. .opencode/opencode.json in current directory
|
|
93
|
+
|
|
94
|
+
Intercepts all configured providers (Anthropic + OpenAI formats) via runtime
|
|
95
|
+
OPENCODE_CONFIG_CONTENT override. Your original config file is never modified.
|
|
96
|
+
|
|
97
|
+
${cli_common_1.colors.yellow}OUTPUT:${cli_common_1.colors.reset}
|
|
98
|
+
Logs are saved to: ${cli_common_1.colors.green}.opencode-trace/log-YYYY-MM-DD-HH-MM-SS.{jsonl,html}${cli_common_1.colors.reset}
|
|
99
|
+
With --log NAME: ${cli_common_1.colors.green}.opencode-trace/NAME.{jsonl,html}${cli_common_1.colors.reset}
|
|
100
|
+
|
|
101
|
+
For more information, visit: https://github.com/hanqunfeng/claude-trace
|
|
102
|
+
`);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Main CLI dispatcher.
|
|
106
|
+
*
|
|
107
|
+
* Modes are mutually exclusive and checked in priority order:
|
|
108
|
+
* 1. `--help` / `-h` — print usage and exit
|
|
109
|
+
* 2. `--generate-html` — offline HTML report from an existing JSONL log
|
|
110
|
+
* 3. `--index` — rebuild conversation summaries in `.opencode-trace/`
|
|
111
|
+
* 4. Default — launch OpenCode with live traffic tracing via `runWithTracing`
|
|
112
|
+
*
|
|
113
|
+
* Arguments after `--run-with` are passed verbatim to the OpenCode child process.
|
|
114
|
+
*/
|
|
115
|
+
async function main() {
|
|
116
|
+
const args = process.argv.slice(2);
|
|
117
|
+
const { traceArgs, toolArgs, includeAllRequests, openInBrowser, logSensitiveHeaders, logBaseName } = (0, cli_common_1.parseTraceArgs)(args);
|
|
118
|
+
if (traceArgs.includes("--help") || traceArgs.includes("-h")) {
|
|
119
|
+
showHelp();
|
|
120
|
+
process.exit(0);
|
|
121
|
+
}
|
|
122
|
+
// `--opencode-path` takes the next positional arg as the binary location.
|
|
123
|
+
let customOpenCodePath;
|
|
124
|
+
const opencodePathIndex = traceArgs.indexOf("--opencode-path");
|
|
125
|
+
if (opencodePathIndex !== -1 && traceArgs[opencodePathIndex + 1]) {
|
|
126
|
+
customOpenCodePath = traceArgs[opencodePathIndex + 1];
|
|
127
|
+
}
|
|
128
|
+
if (traceArgs.includes("--generate-html")) {
|
|
129
|
+
const { inputFile, outputFile } = (0, cli_common_1.parseGenerateHtmlArgs)(traceArgs);
|
|
130
|
+
if (!inputFile) {
|
|
131
|
+
(0, cli_common_1.log)(`Missing input file for --generate-html`, "red");
|
|
132
|
+
(0, cli_common_1.log)(`Usage: opencode-trace --generate-html input.jsonl [output.html]`, "yellow");
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
await (0, cli_common_1.generateHTMLFromCLI)(inputFile, outputFile, includeAllRequests, openInBrowser, "opencode");
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (traceArgs.includes("--index")) {
|
|
139
|
+
await (0, cli_common_1.generateIndex)(opencode_1.opencodeProfile.logDirectory);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
// Default mode: start reverse proxy + spawn OpenCode with logging.
|
|
143
|
+
await (0, trace_runner_1.runWithTracing)(opencode_1.opencodeProfile, toolArgs, {
|
|
144
|
+
includeAllRequests,
|
|
145
|
+
openInBrowser,
|
|
146
|
+
logBaseName,
|
|
147
|
+
logSensitiveHeaders,
|
|
148
|
+
customBinaryPath: customOpenCodePath,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
main().catch((error) => {
|
|
152
|
+
const err = error;
|
|
153
|
+
(0, cli_common_1.log)(`Unexpected error: ${err.message}`, "red");
|
|
154
|
+
process.exit(1);
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=opencode-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode-cli.js","sourceRoot":"","sources":["../../src/cli/opencode-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file trace-runner.ts
|
|
3
|
+
* @description Generic launch orchestrator for all Tool Profiles.
|
|
4
|
+
*
|
|
5
|
+
* Chooses interception strategy based on binary type:
|
|
6
|
+
* - **Native binary** (Claude V2+, OpenCode, Codex): local reverse proxy + env/config overlay
|
|
7
|
+
* - **Node.js script** (Claude V1): spawn with `--require interceptor-loader.js`
|
|
8
|
+
*
|
|
9
|
+
* Handles proxy lifecycle, signal forwarding, and temp config cleanup on exit.
|
|
10
|
+
*/
|
|
11
|
+
import type { ToolProfile, TraceOptions } from "../tools/types";
|
|
12
|
+
/**
|
|
13
|
+
* Main entry used by all three CLI binaries after argument parsing.
|
|
14
|
+
* Detects binary type and delegates to proxy or interceptor mode.
|
|
15
|
+
*
|
|
16
|
+
* @param profile - Tool-specific ToolProfile implementation
|
|
17
|
+
* @param toolArgs - Arguments forwarded to the underlying CLI (after --run-with)
|
|
18
|
+
* @param options - Logging and spawn options from CLI flags
|
|
19
|
+
*/
|
|
20
|
+
export declare function runWithTracing(profile: ToolProfile, toolArgs?: string[], options?: TraceOptions): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=trace-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-runner.d.ts","sourceRoot":"","sources":["../../src/cli/trace-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiPhE;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,OAAO,EAAE,WAAW,EACpB,QAAQ,GAAE,MAAM,EAAO,EACvB,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file trace-runner.ts
|
|
4
|
+
* @description Generic launch orchestrator for all Tool Profiles.
|
|
5
|
+
*
|
|
6
|
+
* Chooses interception strategy based on binary type:
|
|
7
|
+
* - **Native binary** (Claude V2+, OpenCode, Codex): local reverse proxy + env/config overlay
|
|
8
|
+
* - **Node.js script** (Claude V1): spawn with `--require interceptor-loader.js`
|
|
9
|
+
*
|
|
10
|
+
* Handles proxy lifecycle, signal forwarding, and temp config cleanup on exit.
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.runWithTracing = runWithTracing;
|
|
47
|
+
const child_process_1 = require("child_process");
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const reverse_proxy_1 = require("../intercept/reverse-proxy");
|
|
51
|
+
const binary_utils_1 = require("../tools/binary-utils");
|
|
52
|
+
const claude_config_overlay_1 = require("../config/claude-config-overlay");
|
|
53
|
+
const codex_config_overlay_1 = require("../config/codex-config-overlay");
|
|
54
|
+
const cli_common_1 = require("./cli-common");
|
|
55
|
+
/** Resolve path to interceptor-loader.js copied into dist/intercept/ at build time. */
|
|
56
|
+
function getLoaderPath() {
|
|
57
|
+
const loaderPath = path.join(__dirname, "..", "intercept", "interceptor-loader.js");
|
|
58
|
+
if (!fs.existsSync(loaderPath)) {
|
|
59
|
+
(0, cli_common_1.log)(`Interceptor loader not found at: ${loaderPath}`, "red");
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
return loaderPath;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Launch a native CLI with ReverseProxyServer and tool-specific config overlay.
|
|
66
|
+
* Sets ANTHROPIC_BASE_URL / OPENCODE_CONFIG_CONTENT / CODEX_HOME as appropriate.
|
|
67
|
+
*/
|
|
68
|
+
async function runNativeWithProxy(profile, binaryPath, toolArgs, options) {
|
|
69
|
+
(0, cli_common_1.log)("Using reverse proxy mode for native binary", "yellow");
|
|
70
|
+
const providerRoutes = profile.listProviderRoutes?.() ?? [];
|
|
71
|
+
const modelRoutes = profile.listModelRoutes?.() ?? {};
|
|
72
|
+
const hasModelRoutes = Object.keys(modelRoutes).length > 0;
|
|
73
|
+
const upstreamBaseUrl = providerRoutes.length > 0 ? providerRoutes[0].upstreamBaseUrl : profile.readUpstreamBaseUrl();
|
|
74
|
+
// Simple id→URL map when no per-model routing (legacy single-upstream mode)
|
|
75
|
+
const routes = !hasModelRoutes && providerRoutes.length > 0
|
|
76
|
+
? Object.fromEntries(providerRoutes.map((route) => [route.id, route.upstreamBaseUrl]))
|
|
77
|
+
: undefined;
|
|
78
|
+
if (hasModelRoutes) {
|
|
79
|
+
const uniqueModels = new Set();
|
|
80
|
+
for (const route of Object.values(modelRoutes)) {
|
|
81
|
+
uniqueModels.add(`${route.providerId}/${route.modelId} (${route.apiFormat}) → ${route.upstreamBaseUrl}`);
|
|
82
|
+
}
|
|
83
|
+
(0, cli_common_1.log)(`Model-based routing (${uniqueModels.size} model(s)):`, "blue");
|
|
84
|
+
for (const entry of uniqueModels) {
|
|
85
|
+
(0, cli_common_1.log)(` ${entry}`, "blue");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (providerRoutes.length > 0) {
|
|
89
|
+
(0, cli_common_1.log)(`Intercepting ${providerRoutes.length} provider(s):`, "blue");
|
|
90
|
+
for (const route of providerRoutes) {
|
|
91
|
+
(0, cli_common_1.log)(` ${route.id} → ${route.upstreamBaseUrl}`, "blue");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
(0, cli_common_1.log)(`Upstream API: ${upstreamBaseUrl}`, "blue");
|
|
96
|
+
}
|
|
97
|
+
console.log("");
|
|
98
|
+
// Codex needs path-prefix-aware provider routes for OpenAI vs ChatGPT OAuth upstreams
|
|
99
|
+
const codexProviderRoutes = profile.name === "codex" && providerRoutes.length > 0 ? providerRoutes : undefined;
|
|
100
|
+
const proxy = new reverse_proxy_1.ReverseProxyServer({
|
|
101
|
+
logDirectory: profile.logDirectory,
|
|
102
|
+
logBaseName: options.logBaseName,
|
|
103
|
+
includeAllRequests: options.includeAllRequests,
|
|
104
|
+
openBrowser: options.openInBrowser,
|
|
105
|
+
logSensitiveHeaders: options.logSensitiveHeaders,
|
|
106
|
+
targetBaseUrl: upstreamBaseUrl,
|
|
107
|
+
routes,
|
|
108
|
+
modelRoutes: hasModelRoutes ? modelRoutes : undefined,
|
|
109
|
+
providerRoutes: codexProviderRoutes,
|
|
110
|
+
tool: profile.name,
|
|
111
|
+
});
|
|
112
|
+
let proxyInfo;
|
|
113
|
+
let tmpConfigDir = null;
|
|
114
|
+
let shutdownCalled = false;
|
|
115
|
+
/** Idempotent teardown: stop proxy and remove ephemeral overlay dirs. */
|
|
116
|
+
const shutdown = () => {
|
|
117
|
+
if (shutdownCalled) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
shutdownCalled = true;
|
|
121
|
+
proxy.stop();
|
|
122
|
+
profile.cleanupTempConfig(tmpConfigDir);
|
|
123
|
+
};
|
|
124
|
+
try {
|
|
125
|
+
proxyInfo = await proxy.start();
|
|
126
|
+
(0, cli_common_1.log)(`Reverse proxy started at ${proxyInfo.url}`, "green");
|
|
127
|
+
console.log("");
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
const err = error;
|
|
131
|
+
(0, cli_common_1.log)(`Failed to start reverse proxy: ${err.message}`, "red");
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
const { tmpDir, spawnEnv } = profile.prepareSpawnEnv(proxyInfo.url);
|
|
135
|
+
tmpConfigDir = tmpDir;
|
|
136
|
+
if (tmpConfigDir &&
|
|
137
|
+
((0, claude_config_overlay_1.isPersistentOverlayDir)(tmpConfigDir) || (0, codex_config_overlay_1.isPersistentCodexOverlayDir)(tmpConfigDir))) {
|
|
138
|
+
(0, cli_common_1.log)(`Using ${profile.displayName} config overlay (original settings unchanged)`, "blue");
|
|
139
|
+
}
|
|
140
|
+
else if (tmpConfigDir) {
|
|
141
|
+
(0, cli_common_1.log)(`Using temporary ${profile.displayName} config (original config unchanged)`, "blue");
|
|
142
|
+
}
|
|
143
|
+
else if (spawnEnv.OPENCODE_CONFIG_CONTENT) {
|
|
144
|
+
(0, cli_common_1.log)(`Using OPENCODE_CONFIG_CONTENT runtime override (original config unchanged)`, "blue");
|
|
145
|
+
}
|
|
146
|
+
const child = (0, child_process_1.spawn)(binaryPath, toolArgs, {
|
|
147
|
+
env: spawnEnv,
|
|
148
|
+
stdio: "inherit",
|
|
149
|
+
cwd: process.cwd(),
|
|
150
|
+
});
|
|
151
|
+
child.on("error", (error) => {
|
|
152
|
+
shutdown();
|
|
153
|
+
(0, cli_common_1.log)(`Error starting ${profile.displayName}: ${error.message}`, "red");
|
|
154
|
+
process.exit(1);
|
|
155
|
+
});
|
|
156
|
+
child.on("exit", (code, signal) => {
|
|
157
|
+
shutdown();
|
|
158
|
+
if (signal) {
|
|
159
|
+
(0, cli_common_1.log)(`\n${profile.displayName} terminated by signal: ${signal}`, "yellow");
|
|
160
|
+
}
|
|
161
|
+
else if (code !== 0 && code !== null) {
|
|
162
|
+
(0, cli_common_1.log)(`\n${profile.displayName} exited with code: ${code}`, "yellow");
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
(0, cli_common_1.log)(`\n${profile.displayName} session completed`, "green");
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
const handleSignal = (signal) => {
|
|
169
|
+
(0, cli_common_1.log)(`\nReceived ${signal}, shutting down...`, "yellow");
|
|
170
|
+
shutdown();
|
|
171
|
+
if (child.pid) {
|
|
172
|
+
child.kill(signal);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
process.on("SIGINT", () => handleSignal("SIGINT"));
|
|
176
|
+
process.on("SIGTERM", () => handleSignal("SIGTERM"));
|
|
177
|
+
let childResult;
|
|
178
|
+
try {
|
|
179
|
+
childResult = await new Promise((resolve, reject) => {
|
|
180
|
+
child.on("exit", (code, signal) => resolve({ code, signal }));
|
|
181
|
+
child.on("error", reject);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
const err = error;
|
|
186
|
+
shutdown();
|
|
187
|
+
(0, cli_common_1.log)(`Unexpected error: ${err.message}`, "red");
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
shutdown();
|
|
191
|
+
if (childResult.signal || (childResult.code !== null && childResult.code !== 0)) {
|
|
192
|
+
process.exitCode = childResult.code ?? 1;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Launch Claude Code V1 (Node.js) with fetch() interception via preloaded module.
|
|
197
|
+
* Environment variables configure logging behavior inside interceptor-loader.js.
|
|
198
|
+
*/
|
|
199
|
+
async function runNodeInterceptor(profile, binaryPath, toolArgs, options) {
|
|
200
|
+
const jsPath = (0, binary_utils_1.resolveToJsFile)(binaryPath);
|
|
201
|
+
const loaderPath = getLoaderPath();
|
|
202
|
+
(0, cli_common_1.log)(`Using JavaScript entry: ${jsPath}`, "blue");
|
|
203
|
+
(0, cli_common_1.log)("Starting traffic logger...", "green");
|
|
204
|
+
console.log("");
|
|
205
|
+
const spawnArgs = ["--require", loaderPath, jsPath, ...toolArgs];
|
|
206
|
+
const child = (0, child_process_1.spawn)("node", spawnArgs, {
|
|
207
|
+
env: {
|
|
208
|
+
...process.env,
|
|
209
|
+
NODE_OPTIONS: "--no-deprecation",
|
|
210
|
+
CLAUDE_TRACE_INCLUDE_ALL_REQUESTS: options.includeAllRequests ? "true" : "false",
|
|
211
|
+
CLAUDE_TRACE_OPEN_BROWSER: options.openInBrowser ? "true" : "false",
|
|
212
|
+
...(options.logBaseName ? { CLAUDE_TRACE_LOG_NAME: options.logBaseName } : {}),
|
|
213
|
+
},
|
|
214
|
+
stdio: "inherit",
|
|
215
|
+
cwd: process.cwd(),
|
|
216
|
+
});
|
|
217
|
+
child.on("error", (error) => {
|
|
218
|
+
(0, cli_common_1.log)(`Error starting ${profile.displayName}: ${error.message}`, "red");
|
|
219
|
+
process.exit(1);
|
|
220
|
+
});
|
|
221
|
+
child.on("exit", (code, signal) => {
|
|
222
|
+
if (signal) {
|
|
223
|
+
(0, cli_common_1.log)(`\n${profile.displayName} terminated by signal: ${signal}`, "yellow");
|
|
224
|
+
}
|
|
225
|
+
else if (code !== 0 && code !== null) {
|
|
226
|
+
(0, cli_common_1.log)(`\n${profile.displayName} exited with code: ${code}`, "yellow");
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
(0, cli_common_1.log)(`\n${profile.displayName} session completed`, "green");
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
const handleSignal = (signal) => {
|
|
233
|
+
(0, cli_common_1.log)(`\nReceived ${signal}, shutting down...`, "yellow");
|
|
234
|
+
if (child.pid) {
|
|
235
|
+
child.kill(signal);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
process.on("SIGINT", () => handleSignal("SIGINT"));
|
|
239
|
+
process.on("SIGTERM", () => handleSignal("SIGTERM"));
|
|
240
|
+
let childResult;
|
|
241
|
+
try {
|
|
242
|
+
childResult = await new Promise((resolve, reject) => {
|
|
243
|
+
child.on("exit", (code, signal) => resolve({ code, signal }));
|
|
244
|
+
child.on("error", reject);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
const err = error;
|
|
249
|
+
(0, cli_common_1.log)(`Unexpected error: ${err.message}`, "red");
|
|
250
|
+
process.exit(1);
|
|
251
|
+
}
|
|
252
|
+
if (childResult.signal || (childResult.code !== null && childResult.code !== 0)) {
|
|
253
|
+
process.exitCode = childResult.code ?? 1;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Main entry used by all three CLI binaries after argument parsing.
|
|
258
|
+
* Detects binary type and delegates to proxy or interceptor mode.
|
|
259
|
+
*
|
|
260
|
+
* @param profile - Tool-specific ToolProfile implementation
|
|
261
|
+
* @param toolArgs - Arguments forwarded to the underlying CLI (after --run-with)
|
|
262
|
+
* @param options - Logging and spawn options from CLI flags
|
|
263
|
+
*/
|
|
264
|
+
async function runWithTracing(profile, toolArgs = [], options = {}) {
|
|
265
|
+
(0, cli_common_1.log)(`${profile.displayName} Trace`, "blue");
|
|
266
|
+
(0, cli_common_1.log)(`Starting ${profile.displayName} with traffic logging`, "yellow");
|
|
267
|
+
if (toolArgs.length > 0) {
|
|
268
|
+
(0, cli_common_1.log)(`${profile.displayName} arguments: ${toolArgs.join(" ")}`, "blue");
|
|
269
|
+
}
|
|
270
|
+
console.log("");
|
|
271
|
+
const binaryPath = profile.getBinaryPath(options.customBinaryPath);
|
|
272
|
+
(0, cli_common_1.log)(`Using ${profile.displayName} binary: ${binaryPath}`, "blue");
|
|
273
|
+
if ((0, binary_utils_1.isNativeBinary)(binaryPath) || !profile.supportsNodeInterceptor()) {
|
|
274
|
+
if ((0, binary_utils_1.isNativeBinary)(binaryPath)) {
|
|
275
|
+
(0, cli_common_1.log)("Detected native binary", "yellow");
|
|
276
|
+
}
|
|
277
|
+
await runNativeWithProxy(profile, binaryPath, toolArgs, options);
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
await runNodeInterceptor(profile, binaryPath, toolArgs, options);
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=trace-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-runner.js","sourceRoot":"","sources":["../../src/cli/trace-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export type ValidationMode = "complete" | "incomplete";
|
|
3
|
+
export interface TraceMetadata {
|
|
4
|
+
schema_version: 1;
|
|
5
|
+
status: ValidationMode;
|
|
6
|
+
trace_format: "@uvl000/claude-trace-jsonl";
|
|
7
|
+
trace_file: "trace.jsonl";
|
|
8
|
+
trace_sha256: string | null;
|
|
9
|
+
trace_bytes: number;
|
|
10
|
+
exchange_count: number;
|
|
11
|
+
message_exchange_count: number;
|
|
12
|
+
http_status_codes: Record<string, number>;
|
|
13
|
+
started_at: string | null;
|
|
14
|
+
finished_at: string | null;
|
|
15
|
+
headers_fully_redacted: boolean;
|
|
16
|
+
include_all_requests: true;
|
|
17
|
+
claude_version: string | null;
|
|
18
|
+
claude_trace_version: string;
|
|
19
|
+
node_version: string;
|
|
20
|
+
validation_errors: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ValidateTraceOptions {
|
|
23
|
+
mode: ValidationMode;
|
|
24
|
+
claudePath: string;
|
|
25
|
+
traceDirectory: string;
|
|
26
|
+
environment?: NodeJS.ProcessEnv;
|
|
27
|
+
}
|
|
28
|
+
/** Validate a WorkflowExp JSONL trace and atomically write metadata.json. */
|
|
29
|
+
export declare function validateTrace(options: ValidateTraceOptions): TraceMetadata;
|
|
30
|
+
//# sourceMappingURL=validate-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-trace.d.ts","sourceRoot":"","sources":["../../src/cli/validate-trace.ts"],"names":[],"mappings":";AASA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC7B,cAAc,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,4BAA4B,CAAC;IAC3C,UAAU,EAAE,aAAa,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC;AAiDD,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAqI1E"}
|