agenticreplay 0.1.0 → 0.1.2
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 +14 -13
- package/bin/agenticreplay.js +2 -0
- package/node_modules/@agenticreplay/adapters/dist/claude-code.d.ts +37 -0
- package/node_modules/@agenticreplay/adapters/dist/claude-code.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/claude-code.js +103 -0
- package/node_modules/@agenticreplay/adapters/dist/claude-code.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/codex.d.ts +36 -0
- package/node_modules/@agenticreplay/adapters/dist/codex.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/codex.js +130 -0
- package/node_modules/@agenticreplay/adapters/dist/codex.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/contract.d.ts +65 -0
- package/node_modules/@agenticreplay/adapters/dist/contract.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/contract.js +460 -0
- package/node_modules/@agenticreplay/adapters/dist/contract.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/cursor.d.ts +40 -0
- package/node_modules/@agenticreplay/adapters/dist/cursor.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/cursor.js +71 -0
- package/node_modules/@agenticreplay/adapters/dist/cursor.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/detect.d.ts +47 -0
- package/node_modules/@agenticreplay/adapters/dist/detect.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/detect.js +123 -0
- package/node_modules/@agenticreplay/adapters/dist/detect.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/env.d.ts +60 -0
- package/node_modules/@agenticreplay/adapters/dist/env.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/env.js +99 -0
- package/node_modules/@agenticreplay/adapters/dist/env.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/exec.d.ts +25 -0
- package/node_modules/@agenticreplay/adapters/dist/exec.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/exec.js +51 -0
- package/node_modules/@agenticreplay/adapters/dist/exec.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/generic-openai.d.ts +8 -0
- package/node_modules/@agenticreplay/adapters/dist/generic-openai.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/generic-openai.js +31 -0
- package/node_modules/@agenticreplay/adapters/dist/generic-openai.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/goose.d.ts +39 -0
- package/node_modules/@agenticreplay/adapters/dist/goose.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/goose.js +81 -0
- package/node_modules/@agenticreplay/adapters/dist/goose.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/grok.d.ts +23 -0
- package/node_modules/@agenticreplay/adapters/dist/grok.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/grok.js +50 -0
- package/node_modules/@agenticreplay/adapters/dist/grok.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/hermes.d.ts +70 -0
- package/node_modules/@agenticreplay/adapters/dist/hermes.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/hermes.js +88 -0
- package/node_modules/@agenticreplay/adapters/dist/hermes.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/index.d.ts +25 -0
- package/node_modules/@agenticreplay/adapters/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/index.js +25 -0
- package/node_modules/@agenticreplay/adapters/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/indexrag.d.ts +27 -0
- package/node_modules/@agenticreplay/adapters/dist/indexrag.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/indexrag.js +236 -0
- package/node_modules/@agenticreplay/adapters/dist/indexrag.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/kilo.d.ts +21 -0
- package/node_modules/@agenticreplay/adapters/dist/kilo.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/kilo.js +35 -0
- package/node_modules/@agenticreplay/adapters/dist/kilo.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mcode.d.ts +81 -0
- package/node_modules/@agenticreplay/adapters/dist/mcode.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mcode.js +368 -0
- package/node_modules/@agenticreplay/adapters/dist/mcode.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mcp-config.d.ts +17 -0
- package/node_modules/@agenticreplay/adapters/dist/mcp-config.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mcp-config.js +62 -0
- package/node_modules/@agenticreplay/adapters/dist/mcp-config.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mimo.d.ts +26 -0
- package/node_modules/@agenticreplay/adapters/dist/mimo.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/mimo.js +40 -0
- package/node_modules/@agenticreplay/adapters/dist/mimo.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/node.d.ts +19 -0
- package/node_modules/@agenticreplay/adapters/dist/node.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/node.js +59 -0
- package/node_modules/@agenticreplay/adapters/dist/node.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/openclaw.d.ts +19 -0
- package/node_modules/@agenticreplay/adapters/dist/openclaw.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/openclaw.js +43 -0
- package/node_modules/@agenticreplay/adapters/dist/openclaw.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-api-bases.d.ts +2 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-api-bases.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-api-bases.js +201 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-api-bases.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-capture.d.ts +26 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-capture.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-capture.js +132 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-capture.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-catalog.d.ts +5 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-catalog.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-catalog.js +43 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-catalog.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-config.d.ts +40 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-config.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-config.js +185 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode-config.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode.d.ts +10 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode.js +243 -0
- package/node_modules/@agenticreplay/adapters/dist/opencode.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/qwen.d.ts +51 -0
- package/node_modules/@agenticreplay/adapters/dist/qwen.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/qwen.js +105 -0
- package/node_modules/@agenticreplay/adapters/dist/qwen.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/registry.d.ts +19 -0
- package/node_modules/@agenticreplay/adapters/dist/registry.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/registry.js +110 -0
- package/node_modules/@agenticreplay/adapters/dist/registry.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/scaffold.d.ts +26 -0
- package/node_modules/@agenticreplay/adapters/dist/scaffold.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/scaffold.js +125 -0
- package/node_modules/@agenticreplay/adapters/dist/scaffold.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/session.d.ts +47 -0
- package/node_modules/@agenticreplay/adapters/dist/session.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/session.js +112 -0
- package/node_modules/@agenticreplay/adapters/dist/session.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/zcode.d.ts +60 -0
- package/node_modules/@agenticreplay/adapters/dist/zcode.d.ts.map +1 -0
- package/node_modules/@agenticreplay/adapters/dist/zcode.js +424 -0
- package/node_modules/@agenticreplay/adapters/dist/zcode.js.map +1 -0
- package/node_modules/@agenticreplay/adapters/package.json +29 -0
- package/node_modules/@agenticreplay/core/dist/blobs.d.ts +21 -0
- package/node_modules/@agenticreplay/core/dist/blobs.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/blobs.js +102 -0
- package/node_modules/@agenticreplay/core/dist/blobs.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/fetch.d.ts +38 -0
- package/node_modules/@agenticreplay/core/dist/fetch.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/fetch.js +47 -0
- package/node_modules/@agenticreplay/core/dist/fetch.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/graph.d.ts +106 -0
- package/node_modules/@agenticreplay/core/dist/graph.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/graph.js +394 -0
- package/node_modules/@agenticreplay/core/dist/graph.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/index.d.ts +9 -0
- package/node_modules/@agenticreplay/core/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/index.js +9 -0
- package/node_modules/@agenticreplay/core/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/paths.d.ts +45 -0
- package/node_modules/@agenticreplay/core/dist/paths.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/paths.js +149 -0
- package/node_modules/@agenticreplay/core/dist/paths.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/private-files.d.ts +37 -0
- package/node_modules/@agenticreplay/core/dist/private-files.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/private-files.js +353 -0
- package/node_modules/@agenticreplay/core/dist/private-files.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/reader.d.ts +45 -0
- package/node_modules/@agenticreplay/core/dist/reader.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/reader.js +152 -0
- package/node_modules/@agenticreplay/core/dist/reader.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/redaction.d.ts +69 -0
- package/node_modules/@agenticreplay/core/dist/redaction.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/redaction.js +768 -0
- package/node_modules/@agenticreplay/core/dist/redaction.js.map +1 -0
- package/node_modules/@agenticreplay/core/dist/writer.d.ts +75 -0
- package/node_modules/@agenticreplay/core/dist/writer.d.ts.map +1 -0
- package/node_modules/@agenticreplay/core/dist/writer.js +368 -0
- package/node_modules/@agenticreplay/core/dist/writer.js.map +1 -0
- package/node_modules/@agenticreplay/core/package.json +26 -0
- package/node_modules/@agenticreplay/fs-capture/dist/capture.d.ts +84 -0
- package/node_modules/@agenticreplay/fs-capture/dist/capture.d.ts.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/capture.js +147 -0
- package/node_modules/@agenticreplay/fs-capture/dist/capture.js.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/git.d.ts +25 -0
- package/node_modules/@agenticreplay/fs-capture/dist/git.d.ts.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/git.js +108 -0
- package/node_modules/@agenticreplay/fs-capture/dist/git.js.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/index.d.ts +4 -0
- package/node_modules/@agenticreplay/fs-capture/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/index.js +4 -0
- package/node_modules/@agenticreplay/fs-capture/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.d.ts +271 -0
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.d.ts.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.js +668 -0
- package/node_modules/@agenticreplay/fs-capture/dist/shadow.js.map +1 -0
- package/node_modules/@agenticreplay/fs-capture/package.json +25 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.d.ts +100 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.d.ts.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.js +334 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/cli.js.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/framing.d.ts +41 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/framing.d.ts.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/framing.js +94 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/framing.js.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/index.d.ts +5 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/index.js +5 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/mock.d.ts +70 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/mock.d.ts.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/mock.js +138 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/mock.js.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/shim.d.ts +24 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/shim.d.ts.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/shim.js +105 -0
- package/node_modules/@agenticreplay/mcp-shim/dist/shim.js.map +1 -0
- package/node_modules/@agenticreplay/mcp-shim/package.json +26 -0
- package/node_modules/@agenticreplay/node-instrument/dist/capture.d.ts +58 -0
- package/node_modules/@agenticreplay/node-instrument/dist/capture.d.ts.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/capture.js +404 -0
- package/node_modules/@agenticreplay/node-instrument/dist/capture.js.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/index.d.ts +4 -0
- package/node_modules/@agenticreplay/node-instrument/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/index.js +4 -0
- package/node_modules/@agenticreplay/node-instrument/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/install.d.ts +47 -0
- package/node_modules/@agenticreplay/node-instrument/dist/install.d.ts.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/install.js +174 -0
- package/node_modules/@agenticreplay/node-instrument/dist/install.js.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/rewrite.d.ts +33 -0
- package/node_modules/@agenticreplay/node-instrument/dist/rewrite.d.ts.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/dist/rewrite.js +61 -0
- package/node_modules/@agenticreplay/node-instrument/dist/rewrite.js.map +1 -0
- package/node_modules/@agenticreplay/node-instrument/package.json +23 -0
- package/node_modules/@agenticreplay/plugin-api/dist/canonical.d.ts +87 -0
- package/node_modules/@agenticreplay/plugin-api/dist/canonical.d.ts.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/dist/canonical.js +10 -0
- package/node_modules/@agenticreplay/plugin-api/dist/canonical.js.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/dist/index.d.ts +3 -0
- package/node_modules/@agenticreplay/plugin-api/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/dist/index.js +3 -0
- package/node_modules/@agenticreplay/plugin-api/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.d.ts +258 -0
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.d.ts.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.js +2 -0
- package/node_modules/@agenticreplay/plugin-api/dist/plugins.js.map +1 -0
- package/node_modules/@agenticreplay/plugin-api/package.json +22 -0
- package/node_modules/@agenticreplay/providers/dist/index.d.ts +34 -0
- package/node_modules/@agenticreplay/providers/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/index.js +34 -0
- package/node_modules/@agenticreplay/providers/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/pricing.d.ts +44 -0
- package/node_modules/@agenticreplay/providers/dist/pricing.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/pricing.js +126 -0
- package/node_modules/@agenticreplay/providers/dist/pricing.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/anthropic.d.ts +66 -0
- package/node_modules/@agenticreplay/providers/dist/translate/anthropic.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/anthropic.js +569 -0
- package/node_modules/@agenticreplay/providers/dist/translate/anthropic.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai-responses.d.ts +51 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai-responses.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai-responses.js +574 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai-responses.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai.d.ts +60 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai.js +577 -0
- package/node_modules/@agenticreplay/providers/dist/translate/openai.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/sse.d.ts +29 -0
- package/node_modules/@agenticreplay/providers/dist/translate/sse.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/sse.js +97 -0
- package/node_modules/@agenticreplay/providers/dist/translate/sse.js.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/util.d.ts +34 -0
- package/node_modules/@agenticreplay/providers/dist/translate/util.d.ts.map +1 -0
- package/node_modules/@agenticreplay/providers/dist/translate/util.js +106 -0
- package/node_modules/@agenticreplay/providers/dist/translate/util.js.map +1 -0
- package/node_modules/@agenticreplay/providers/package.json +26 -0
- package/node_modules/@agenticreplay/proxy/dist/ca.d.ts +45 -0
- package/node_modules/@agenticreplay/proxy/dist/ca.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/ca.js +264 -0
- package/node_modules/@agenticreplay/proxy/dist/ca.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/der.d.ts +51 -0
- package/node_modules/@agenticreplay/proxy/dist/der.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/der.js +144 -0
- package/node_modules/@agenticreplay/proxy/dist/der.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/dialects.d.ts +81 -0
- package/node_modules/@agenticreplay/proxy/dist/dialects.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/dialects.js +329 -0
- package/node_modules/@agenticreplay/proxy/dist/dialects.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/forward.d.ts +34 -0
- package/node_modules/@agenticreplay/proxy/dist/forward.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/forward.js +44 -0
- package/node_modules/@agenticreplay/proxy/dist/forward.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/index.d.ts +9 -0
- package/node_modules/@agenticreplay/proxy/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/index.js +9 -0
- package/node_modules/@agenticreplay/proxy/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/intercept.d.ts +234 -0
- package/node_modules/@agenticreplay/proxy/dist/intercept.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/intercept.js +1258 -0
- package/node_modules/@agenticreplay/proxy/dist/intercept.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/matching.d.ts +109 -0
- package/node_modules/@agenticreplay/proxy/dist/matching.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/matching.js +928 -0
- package/node_modules/@agenticreplay/proxy/dist/matching.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/retrieval.d.ts +93 -0
- package/node_modules/@agenticreplay/proxy/dist/retrieval.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/retrieval.js +233 -0
- package/node_modules/@agenticreplay/proxy/dist/retrieval.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/server.d.ts +327 -0
- package/node_modules/@agenticreplay/proxy/dist/server.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/server.js +2291 -0
- package/node_modules/@agenticreplay/proxy/dist/server.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/tls-hosts.d.ts +54 -0
- package/node_modules/@agenticreplay/proxy/dist/tls-hosts.d.ts.map +1 -0
- package/node_modules/@agenticreplay/proxy/dist/tls-hosts.js +178 -0
- package/node_modules/@agenticreplay/proxy/dist/tls-hosts.js.map +1 -0
- package/node_modules/@agenticreplay/proxy/package.json +28 -0
- package/node_modules/@agenticreplay/schema/dist/constants.d.ts +30 -0
- package/node_modules/@agenticreplay/schema/dist/constants.d.ts.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/constants.js +66 -0
- package/node_modules/@agenticreplay/schema/dist/constants.js.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/index.d.ts +4 -0
- package/node_modules/@agenticreplay/schema/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/index.js +4 -0
- package/node_modules/@agenticreplay/schema/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/types.d.ts +97 -0
- package/node_modules/@agenticreplay/schema/dist/types.d.ts.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/types.js +7 -0
- package/node_modules/@agenticreplay/schema/dist/types.js.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/validate.d.ts +13 -0
- package/node_modules/@agenticreplay/schema/dist/validate.d.ts.map +1 -0
- package/node_modules/@agenticreplay/schema/dist/validate.js +44 -0
- package/node_modules/@agenticreplay/schema/dist/validate.js.map +1 -0
- package/node_modules/@agenticreplay/schema/package.json +28 -0
- package/node_modules/@agenticreplay/shell-shim/dist/index.d.ts +4 -0
- package/node_modules/@agenticreplay/shell-shim/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/index.js +4 -0
- package/node_modules/@agenticreplay/shell-shim/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/install.d.ts +75 -0
- package/node_modules/@agenticreplay/shell-shim/dist/install.d.ts.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/install.js +353 -0
- package/node_modules/@agenticreplay/shell-shim/dist/install.js.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/resolve.d.ts +2 -0
- package/node_modules/@agenticreplay/shell-shim/dist/resolve.d.ts.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/resolve.js +97 -0
- package/node_modules/@agenticreplay/shell-shim/dist/resolve.js.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner-bin.d.ts +3 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner-bin.d.ts.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner-bin.js +4 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner-bin.js.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner.d.ts +45 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner.d.ts.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner.js +105 -0
- package/node_modules/@agenticreplay/shell-shim/dist/runner.js.map +1 -0
- package/node_modules/@agenticreplay/shell-shim/package.json +26 -0
- package/node_modules/@agenticreplay/viewer/dist/bundle.d.ts +11 -0
- package/node_modules/@agenticreplay/viewer/dist/bundle.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/bundle.js +36 -0
- package/node_modules/@agenticreplay/viewer/dist/bundle.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/client/main.d.ts +12 -0
- package/node_modules/@agenticreplay/viewer/dist/client/main.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/client/main.js +249 -0
- package/node_modules/@agenticreplay/viewer/dist/client/main.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/credit.d.ts +22 -0
- package/node_modules/@agenticreplay/viewer/dist/credit.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/credit.js +22 -0
- package/node_modules/@agenticreplay/viewer/dist/credit.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/css.d.ts +11 -0
- package/node_modules/@agenticreplay/viewer/dist/css.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/css.js +410 -0
- package/node_modules/@agenticreplay/viewer/dist/css.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/export.d.ts +21 -0
- package/node_modules/@agenticreplay/viewer/dist/export.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/export.js +22 -0
- package/node_modules/@agenticreplay/viewer/dist/export.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/html.d.ts +32 -0
- package/node_modules/@agenticreplay/viewer/dist/html.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/html.js +252 -0
- package/node_modules/@agenticreplay/viewer/dist/html.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/index.d.ts +16 -0
- package/node_modules/@agenticreplay/viewer/dist/index.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/index.js +16 -0
- package/node_modules/@agenticreplay/viewer/dist/index.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/render.d.ts +126 -0
- package/node_modules/@agenticreplay/viewer/dist/render.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/render.js +699 -0
- package/node_modules/@agenticreplay/viewer/dist/render.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/serve.d.ts +21 -0
- package/node_modules/@agenticreplay/viewer/dist/serve.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/serve.js +122 -0
- package/node_modules/@agenticreplay/viewer/dist/serve.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/trace-dir.d.ts +28 -0
- package/node_modules/@agenticreplay/viewer/dist/trace-dir.d.ts.map +1 -0
- package/node_modules/@agenticreplay/viewer/dist/trace-dir.js +120 -0
- package/node_modules/@agenticreplay/viewer/dist/trace-dir.js.map +1 -0
- package/node_modules/@agenticreplay/viewer/package.json +25 -0
- package/node_modules/ajv/.runkit_example.js +23 -0
- package/node_modules/ajv/LICENSE +22 -0
- package/node_modules/ajv/README.md +207 -0
- package/node_modules/ajv/dist/2019.d.ts +19 -0
- package/node_modules/ajv/dist/2019.js +61 -0
- package/node_modules/ajv/dist/2019.js.map +1 -0
- package/node_modules/ajv/dist/2020.d.ts +19 -0
- package/node_modules/ajv/dist/2020.js +55 -0
- package/node_modules/ajv/dist/2020.js.map +1 -0
- package/node_modules/ajv/dist/ajv.d.ts +18 -0
- package/node_modules/ajv/dist/ajv.js +50 -0
- package/node_modules/ajv/dist/ajv.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
- package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
- package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
- package/node_modules/ajv/dist/compile/errors.js +123 -0
- package/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/node_modules/ajv/dist/compile/index.d.ts +80 -0
- package/node_modules/ajv/dist/compile/index.js +242 -0
- package/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
- package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
- package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
- package/node_modules/ajv/dist/compile/names.d.ts +20 -0
- package/node_modules/ajv/dist/compile/names.js +28 -0
- package/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
- package/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
- package/node_modules/ajv/dist/compile/resolve.js +155 -0
- package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
- package/node_modules/ajv/dist/compile/rules.js +26 -0
- package/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/node_modules/ajv/dist/compile/util.d.ts +40 -0
- package/node_modules/ajv/dist/compile/util.js +178 -0
- package/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
- package/node_modules/ajv/dist/compile/validate/index.js +520 -0
- package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/node_modules/ajv/dist/core.d.ts +174 -0
- package/node_modules/ajv/dist/core.js +618 -0
- package/node_modules/ajv/dist/core.js.map +1 -0
- package/node_modules/ajv/dist/jtd.d.ts +47 -0
- package/node_modules/ajv/dist/jtd.js +72 -0
- package/node_modules/ajv/dist/jtd.js.map +1 -0
- package/node_modules/ajv/dist/refs/data.json +13 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
- package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
- package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
- package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/quote.js +30 -0
- package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
- package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/re2.js +6 -0
- package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
- package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
- package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
- package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/uri.js +6 -0
- package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
- package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
- package/node_modules/ajv/dist/standalone/index.js +90 -0
- package/node_modules/ajv/dist/standalone/index.js.map +1 -0
- package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
- package/node_modules/ajv/dist/standalone/instance.js +35 -0
- package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
- package/node_modules/ajv/dist/types/index.d.ts +183 -0
- package/node_modules/ajv/dist/types/index.js +3 -0
- package/node_modules/ajv/dist/types/index.js.map +1 -0
- package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
- package/node_modules/ajv/dist/types/json-schema.js +3 -0
- package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
- package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
- package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
- package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
- package/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
- package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/node_modules/ajv/lib/2019.ts +81 -0
- package/node_modules/ajv/lib/2020.ts +75 -0
- package/node_modules/ajv/lib/ajv.ts +70 -0
- package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
- package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
- package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
- package/node_modules/ajv/lib/compile/errors.ts +184 -0
- package/node_modules/ajv/lib/compile/index.ts +324 -0
- package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
- package/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
- package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
- package/node_modules/ajv/lib/compile/names.ts +27 -0
- package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
- package/node_modules/ajv/lib/compile/resolve.ts +149 -0
- package/node_modules/ajv/lib/compile/rules.ts +50 -0
- package/node_modules/ajv/lib/compile/util.ts +213 -0
- package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
- package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
- package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
- package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
- package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
- package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
- package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
- package/node_modules/ajv/lib/core.ts +892 -0
- package/node_modules/ajv/lib/jtd.ts +132 -0
- package/node_modules/ajv/lib/refs/data.json +13 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
- package/node_modules/ajv/lib/runtime/equal.ts +7 -0
- package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
- package/node_modules/ajv/lib/runtime/quote.ts +31 -0
- package/node_modules/ajv/lib/runtime/re2.ts +6 -0
- package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
- package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
- package/node_modules/ajv/lib/runtime/uri.ts +6 -0
- package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
- package/node_modules/ajv/lib/standalone/index.ts +100 -0
- package/node_modules/ajv/lib/standalone/instance.ts +36 -0
- package/node_modules/ajv/lib/types/index.ts +244 -0
- package/node_modules/ajv/lib/types/json-schema.ts +187 -0
- package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
- package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
- package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
- package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
- package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
- package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
- package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
- package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
- package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
- package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
- package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
- package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
- package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
- package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
- package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
- package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
- package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
- package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
- package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
- package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
- package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
- package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
- package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
- package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
- package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
- package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
- package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
- package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
- package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
- package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
- package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
- package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
- package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
- package/node_modules/ajv/package.json +126 -0
- package/node_modules/ajv-formats/LICENSE +21 -0
- package/node_modules/ajv-formats/README.md +125 -0
- package/node_modules/ajv-formats/dist/formats.d.ts +9 -0
- package/node_modules/ajv-formats/dist/formats.js +208 -0
- package/node_modules/ajv-formats/dist/formats.js.map +1 -0
- package/node_modules/ajv-formats/dist/index.d.ts +15 -0
- package/node_modules/ajv-formats/dist/index.js +37 -0
- package/node_modules/ajv-formats/dist/index.js.map +1 -0
- package/node_modules/ajv-formats/dist/limit.d.ts +10 -0
- package/node_modules/ajv-formats/dist/limit.js +69 -0
- package/node_modules/ajv-formats/dist/limit.js.map +1 -0
- package/node_modules/ajv-formats/package.json +74 -0
- package/node_modules/ajv-formats/src/formats.ts +269 -0
- package/node_modules/ajv-formats/src/index.ts +62 -0
- package/node_modules/ajv-formats/src/limit.ts +99 -0
- package/node_modules/fast-deep-equal/LICENSE +21 -0
- package/node_modules/fast-deep-equal/README.md +96 -0
- package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/node_modules/fast-deep-equal/index.js +46 -0
- package/node_modules/fast-deep-equal/package.json +61 -0
- package/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/react.js +53 -0
- package/node_modules/fast-uri/.gitattributes +2 -0
- package/node_modules/fast-uri/.github/dependabot.yml +13 -0
- package/node_modules/fast-uri/.github/workflows/ci.yml +106 -0
- package/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
- package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
- package/node_modules/fast-uri/LICENSE +30 -0
- package/node_modules/fast-uri/README.md +152 -0
- package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
- package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
- package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
- package/node_modules/fast-uri/benchmark/package.json +17 -0
- package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
- package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
- package/node_modules/fast-uri/eslint.config.js +6 -0
- package/node_modules/fast-uri/index.js +631 -0
- package/node_modules/fast-uri/lib/schemes.js +272 -0
- package/node_modules/fast-uri/lib/utils.js +747 -0
- package/node_modules/fast-uri/package.json +68 -0
- package/node_modules/fast-uri/test/ajv.test.js +43 -0
- package/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/fast-uri/test/equal.test.js +145 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +503 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
- package/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/fast-uri/test/parse.test.js +327 -0
- package/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/fast-uri/test/resolve.test.js +87 -0
- package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
- package/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +178 -0
- package/node_modules/fast-uri/test/security.test.js +431 -0
- package/node_modules/fast-uri/test/serialize.test.js +151 -0
- package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
- package/node_modules/fast-uri/test/uri-js.test.js +912 -0
- package/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/fast-uri/test/util.test.js +38 -0
- package/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/fast-uri/tsconfig.json +9 -0
- package/node_modules/fast-uri/types/index.d.ts +60 -0
- package/node_modules/fast-uri/types/index.test-d.ts +17 -0
- package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
- package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
- package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
- package/node_modules/json-schema-traverse/LICENSE +21 -0
- package/node_modules/json-schema-traverse/README.md +95 -0
- package/node_modules/json-schema-traverse/index.d.ts +40 -0
- package/node_modules/json-schema-traverse/index.js +93 -0
- package/node_modules/json-schema-traverse/package.json +43 -0
- package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/package.json +49 -2
- package/packages/cli/dist/agent-spans.d.ts +238 -0
- package/packages/cli/dist/agent-spans.d.ts.map +1 -0
- package/packages/cli/dist/agent-spans.js +677 -0
- package/packages/cli/dist/agent-spans.js.map +1 -0
- package/packages/cli/dist/api.d.ts +127 -0
- package/packages/cli/dist/api.d.ts.map +1 -0
- package/packages/cli/dist/api.js +159 -0
- package/packages/cli/dist/api.js.map +1 -0
- package/packages/cli/dist/archive.d.ts +24 -0
- package/packages/cli/dist/archive.d.ts.map +1 -0
- package/packages/cli/dist/archive.js +230 -0
- package/packages/cli/dist/archive.js.map +1 -0
- package/packages/cli/dist/args.d.ts +57 -0
- package/packages/cli/dist/args.d.ts.map +1 -0
- package/packages/cli/dist/args.js +180 -0
- package/packages/cli/dist/args.js.map +1 -0
- package/packages/cli/dist/attach.d.ts +48 -0
- package/packages/cli/dist/attach.d.ts.map +1 -0
- package/packages/cli/dist/attach.js +153 -0
- package/packages/cli/dist/attach.js.map +1 -0
- package/packages/cli/dist/capture-limits.d.ts +7 -0
- package/packages/cli/dist/capture-limits.d.ts.map +1 -0
- package/packages/cli/dist/capture-limits.js +13 -0
- package/packages/cli/dist/capture-limits.js.map +1 -0
- package/packages/cli/dist/cli.d.ts +3 -0
- package/packages/cli/dist/cli.d.ts.map +1 -0
- package/packages/cli/dist/cli.js +4 -0
- package/packages/cli/dist/cli.js.map +1 -0
- package/packages/cli/dist/commands/attach.d.ts +49 -0
- package/packages/cli/dist/commands/attach.d.ts.map +1 -0
- package/packages/cli/dist/commands/attach.js +350 -0
- package/packages/cli/dist/commands/attach.js.map +1 -0
- package/packages/cli/dist/commands/compare.d.ts +27 -0
- package/packages/cli/dist/commands/compare.d.ts.map +1 -0
- package/packages/cli/dist/commands/compare.js +187 -0
- package/packages/cli/dist/commands/compare.js.map +1 -0
- package/packages/cli/dist/commands/doctor.d.ts +24 -0
- package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
- package/packages/cli/dist/commands/doctor.js +402 -0
- package/packages/cli/dist/commands/doctor.js.map +1 -0
- package/packages/cli/dist/commands/gc.d.ts +24 -0
- package/packages/cli/dist/commands/gc.d.ts.map +1 -0
- package/packages/cli/dist/commands/gc.js +326 -0
- package/packages/cli/dist/commands/gc.js.map +1 -0
- package/packages/cli/dist/commands/inspect.d.ts +45 -0
- package/packages/cli/dist/commands/inspect.d.ts.map +1 -0
- package/packages/cli/dist/commands/inspect.js +375 -0
- package/packages/cli/dist/commands/inspect.js.map +1 -0
- package/packages/cli/dist/commands/quickstart.d.ts +48 -0
- package/packages/cli/dist/commands/quickstart.d.ts.map +1 -0
- package/packages/cli/dist/commands/quickstart.js +413 -0
- package/packages/cli/dist/commands/quickstart.js.map +1 -0
- package/packages/cli/dist/commands/record.d.ts +31 -0
- package/packages/cli/dist/commands/record.d.ts.map +1 -0
- package/packages/cli/dist/commands/record.js +958 -0
- package/packages/cli/dist/commands/record.js.map +1 -0
- package/packages/cli/dist/commands/replay.d.ts +184 -0
- package/packages/cli/dist/commands/replay.d.ts.map +1 -0
- package/packages/cli/dist/commands/replay.js +2014 -0
- package/packages/cli/dist/commands/replay.js.map +1 -0
- package/packages/cli/dist/commands/scrub.d.ts +34 -0
- package/packages/cli/dist/commands/scrub.d.ts.map +1 -0
- package/packages/cli/dist/commands/scrub.js +765 -0
- package/packages/cli/dist/commands/scrub.js.map +1 -0
- package/packages/cli/dist/commands/setup.d.ts +23 -0
- package/packages/cli/dist/commands/setup.d.ts.map +1 -0
- package/packages/cli/dist/commands/setup.js +239 -0
- package/packages/cli/dist/commands/setup.js.map +1 -0
- package/packages/cli/dist/commands/sync.d.ts +236 -0
- package/packages/cli/dist/commands/sync.d.ts.map +1 -0
- package/packages/cli/dist/commands/sync.js +1270 -0
- package/packages/cli/dist/commands/sync.js.map +1 -0
- package/packages/cli/dist/config.d.ts +69 -0
- package/packages/cli/dist/config.d.ts.map +1 -0
- package/packages/cli/dist/config.js +144 -0
- package/packages/cli/dist/config.js.map +1 -0
- package/packages/cli/dist/exchange-events.d.ts +80 -0
- package/packages/cli/dist/exchange-events.d.ts.map +1 -0
- package/packages/cli/dist/exchange-events.js +296 -0
- package/packages/cli/dist/exchange-events.js.map +1 -0
- package/packages/cli/dist/flags.d.ts +41 -0
- package/packages/cli/dist/flags.d.ts.map +1 -0
- package/packages/cli/dist/flags.js +292 -0
- package/packages/cli/dist/flags.js.map +1 -0
- package/packages/cli/dist/fs-events.d.ts +19 -0
- package/packages/cli/dist/fs-events.d.ts.map +1 -0
- package/packages/cli/dist/fs-events.js +89 -0
- package/packages/cli/dist/fs-events.js.map +1 -0
- package/packages/cli/dist/index.d.ts +18 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +18 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/main.d.ts +2 -0
- package/packages/cli/dist/main.d.ts.map +1 -0
- package/packages/cli/dist/main.js +404 -0
- package/packages/cli/dist/main.js.map +1 -0
- package/packages/cli/dist/mcp-server.d.ts +44 -0
- package/packages/cli/dist/mcp-server.d.ts.map +1 -0
- package/packages/cli/dist/mcp-server.js +250 -0
- package/packages/cli/dist/mcp-server.js.map +1 -0
- package/packages/cli/dist/mcp.d.ts +126 -0
- package/packages/cli/dist/mcp.d.ts.map +1 -0
- package/packages/cli/dist/mcp.js +290 -0
- package/packages/cli/dist/mcp.js.map +1 -0
- package/packages/cli/dist/out.d.ts +107 -0
- package/packages/cli/dist/out.d.ts.map +1 -0
- package/packages/cli/dist/out.js +280 -0
- package/packages/cli/dist/out.js.map +1 -0
- package/packages/cli/dist/rasterize.d.ts +62 -0
- package/packages/cli/dist/rasterize.d.ts.map +1 -0
- package/packages/cli/dist/rasterize.js +154 -0
- package/packages/cli/dist/rasterize.js.map +1 -0
- package/packages/cli/dist/serial.d.ts +19 -0
- package/packages/cli/dist/serial.d.ts.map +1 -0
- package/packages/cli/dist/serial.js +34 -0
- package/packages/cli/dist/serial.js.map +1 -0
- package/packages/cli/dist/share-card.d.ts +73 -0
- package/packages/cli/dist/share-card.d.ts.map +1 -0
- package/packages/cli/dist/share-card.js +413 -0
- package/packages/cli/dist/share-card.js.map +1 -0
- package/packages/cli/dist/snapshot.d.ts +39 -0
- package/packages/cli/dist/snapshot.d.ts.map +1 -0
- package/packages/cli/dist/snapshot.js +43 -0
- package/packages/cli/dist/snapshot.js.map +1 -0
- package/packages/cli/dist/tls-capture.d.ts +135 -0
- package/packages/cli/dist/tls-capture.d.ts.map +1 -0
- package/packages/cli/dist/tls-capture.js +586 -0
- package/packages/cli/dist/tls-capture.js.map +1 -0
- package/packages/cli/dist/upstream.d.ts +29 -0
- package/packages/cli/dist/upstream.d.ts.map +1 -0
- package/packages/cli/dist/upstream.js +41 -0
- package/packages/cli/dist/upstream.js.map +1 -0
- package/packages/cli/dist/version.d.ts +2 -0
- package/packages/cli/dist/version.d.ts.map +1 -0
- package/packages/cli/dist/version.js +18 -0
- package/packages/cli/dist/version.js.map +1 -0
- package/packages/cli/package.json +11 -11
- package/.dockerignore +0 -11
- package/.gitattributes +0 -19
- package/.github/workflows/ci.yml +0 -146
- package/.grok-plugin/plugin.json +0 -12
- package/.mcp.json +0 -8
- package/.prettierignore +0 -4
- package/.prettierrc.json +0 -1
- package/CONTRIBUTING.md +0 -106
- package/Dockerfile +0 -30
- package/MAINTAINERS.md +0 -24
- package/RELEASING.md +0 -183
- package/SECURITY.md +0 -149
- package/capture/CAPTURE-RUNBOOK.md +0 -271
- package/capture/CURSOR-HTTP2.md +0 -226
- package/capture/README.md +0 -349
- package/capture/capture-run.gif +0 -0
- package/capture/capture.mjs +0 -1883
- package/capture/fable-capture.gif +0 -0
- package/capture/fable-capture.mp4 +0 -0
- package/capture/muse-shim.mjs +0 -114
- package/capture/render-run.mjs +0 -125
- package/capture/render.mjs +0 -228
- package/companion-kiokuko-dsh.patch +0 -7806
- package/docs/agenticreplay-acceptance.md +0 -135
- package/docs/architecture.md +0 -160
- package/docs/chain-card.png +0 -0
- package/docs/compare-card.png +0 -0
- package/docs/demo-cli.gif +0 -0
- package/docs/demo-viewer.gif +0 -0
- package/docs/fidelity.md +0 -16
- package/docs/good-first-issues.md +0 -78
- package/docs/graph-card.png +0 -0
- package/docs/how-to/compare-models-on-the-same-failure.md +0 -58
- package/docs/how-to/debug-a-failing-agent-run.md +0 -127
- package/docs/how-to/why-did-my-agent-delete-my-file.md +0 -92
- package/docs/i18n/README.ar.md +0 -597
- package/docs/i18n/README.de.md +0 -648
- package/docs/i18n/README.es.md +0 -642
- package/docs/i18n/README.fr.md +0 -649
- package/docs/i18n/README.ja.md +0 -608
- package/docs/i18n/README.ko.md +0 -598
- package/docs/i18n/README.zh-CN.md +0 -574
- package/docs/integrations.md +0 -628
- package/docs/launch-path.md +0 -215
- package/docs/media/README.md +0 -101
- package/docs/media/sync-transcript.txt +0 -18
- package/docs/media/transcript.txt +0 -29
- package/docs/opencode-capture.md +0 -137
- package/docs/plugins.md +0 -250
- package/docs/proposals/action-graph-and-reasoning.md +0 -354
- package/docs/sync-card.png +0 -0
- package/docs/validation.md +0 -52
- package/docs/viewer-timeline.png +0 -0
- package/examples/traces/README.md +0 -50
- package/examples/traces/run_9f2c14a03b71/blobs/1b/1b694f32b8c582ace6b35ad64050e532fb3ee3ecc1a2763a82cf42ad0f2a3dd0 +0 -10
- package/examples/traces/run_9f2c14a03b71/blobs/51/517b5b8ec6c3b13121dbaec61784e2a024247c7c4efd9ba068b582ee57bd2764 +0 -4
- package/examples/traces/run_9f2c14a03b71/blobs/5b/5bba1bd069013d86363f69c00c1ae77c84c4e113aeeb7431c8141af4fed76860 +0 -7
- package/examples/traces/run_9f2c14a03b71/blobs/84/84247e7b385fd5f99a6728a509838e52ef963af92f44ef6eccbed6910de1438d +0 -10
- package/examples/traces/run_9f2c14a03b71/blobs/ac/ac9b4be9bdf7fe63c7b5135e2d14c4c0745a48771e733804869790590455f8e8 +0 -7
- package/examples/traces/run_9f2c14a03b71/events.jsonl +0 -31
- package/examples/traces/run_9f2c14a03b71/manifest.json +0 -46
- package/examples/traces/run_9f2c14a03b71/redactions.json +0 -17
- package/llms.txt +0 -26
- package/packages/adapters/fixtures/harness/claude-code.json +0 -12
- package/packages/adapters/fixtures/harness/codex.json +0 -10
- package/packages/adapters/fixtures/harness/cursor.json +0 -10
- package/packages/adapters/fixtures/harness/exec.json +0 -10
- package/packages/adapters/fixtures/harness/generic-openai.json +0 -14
- package/packages/adapters/fixtures/harness/goose.json +0 -14
- package/packages/adapters/fixtures/harness/grok.json +0 -18
- package/packages/adapters/fixtures/harness/hermes.json +0 -10
- package/packages/adapters/fixtures/harness/indexrag.json +0 -21
- package/packages/adapters/fixtures/harness/kilo.json +0 -10
- package/packages/adapters/fixtures/harness/mcode.json +0 -10
- package/packages/adapters/fixtures/harness/mimo.json +0 -10
- package/packages/adapters/fixtures/harness/node.json +0 -22
- package/packages/adapters/fixtures/harness/openclaw.json +0 -21
- package/packages/adapters/fixtures/harness/opencode.json +0 -20
- package/packages/adapters/fixtures/harness/qwen.json +0 -20
- package/packages/adapters/fixtures/harness/zcode.json +0 -10
- package/packages/adapters/package.json +0 -29
- package/packages/adapters/src/claude-code.ts +0 -109
- package/packages/adapters/src/codex.ts +0 -135
- package/packages/adapters/src/contract.ts +0 -531
- package/packages/adapters/src/cursor.ts +0 -76
- package/packages/adapters/src/detect.ts +0 -132
- package/packages/adapters/src/env.ts +0 -118
- package/packages/adapters/src/exec.ts +0 -59
- package/packages/adapters/src/generic-openai.ts +0 -36
- package/packages/adapters/src/goose.ts +0 -87
- package/packages/adapters/src/grok.ts +0 -60
- package/packages/adapters/src/hermes.ts +0 -92
- package/packages/adapters/src/index.ts +0 -24
- package/packages/adapters/src/indexrag.ts +0 -254
- package/packages/adapters/src/kilo.ts +0 -39
- package/packages/adapters/src/mcode.ts +0 -392
- package/packages/adapters/src/mcp-config.ts +0 -84
- package/packages/adapters/src/mimo.ts +0 -44
- package/packages/adapters/src/node.ts +0 -71
- package/packages/adapters/src/openclaw.ts +0 -50
- package/packages/adapters/src/opencode-api-bases.ts +0 -200
- package/packages/adapters/src/opencode-capture.ts +0 -164
- package/packages/adapters/src/opencode-catalog.ts +0 -44
- package/packages/adapters/src/opencode-config.ts +0 -209
- package/packages/adapters/src/opencode.ts +0 -257
- package/packages/adapters/src/qwen.ts +0 -113
- package/packages/adapters/src/registry.ts +0 -121
- package/packages/adapters/src/scaffold.ts +0 -173
- package/packages/adapters/src/session.ts +0 -138
- package/packages/adapters/src/zcode.ts +0 -440
- package/packages/adapters/test/adapters.test.ts +0 -666
- package/packages/adapters/test/contract.test.ts +0 -601
- package/packages/adapters/test/exec-adapter.test.ts +0 -114
- package/packages/adapters/test/harness-versions.test.ts +0 -220
- package/packages/adapters/test/indexrag.test.ts +0 -192
- package/packages/adapters/test/mcode.test.ts +0 -678
- package/packages/adapters/test/mcp-config.test.ts +0 -118
- package/packages/adapters/test/named-agents.test.ts +0 -262
- package/packages/adapters/test/node-adapter.test.ts +0 -98
- package/packages/adapters/test/opencode-capture.test.ts +0 -137
- package/packages/adapters/test/opencode-catalog.test.ts +0 -178
- package/packages/adapters/test/opencode-config.test.ts +0 -63
- package/packages/adapters/test/scaffold.test.ts +0 -156
- package/packages/adapters/test/session.test.ts +0 -368
- package/packages/adapters/test/zcode.test.ts +0 -497
- package/packages/adapters/tsconfig.json +0 -16
- package/packages/cli/README.md +0 -92
- package/packages/cli/src/agent-spans.ts +0 -752
- package/packages/cli/src/api.ts +0 -275
- package/packages/cli/src/archive.ts +0 -264
- package/packages/cli/src/args.ts +0 -207
- package/packages/cli/src/attach.ts +0 -178
- package/packages/cli/src/capture-limits.ts +0 -21
- package/packages/cli/src/cli.ts +0 -4
- package/packages/cli/src/commands/attach.ts +0 -441
- package/packages/cli/src/commands/compare.ts +0 -218
- package/packages/cli/src/commands/doctor.ts +0 -447
- package/packages/cli/src/commands/gc.ts +0 -372
- package/packages/cli/src/commands/inspect.ts +0 -482
- package/packages/cli/src/commands/quickstart.ts +0 -479
- package/packages/cli/src/commands/record.ts +0 -1069
- package/packages/cli/src/commands/replay.ts +0 -2289
- package/packages/cli/src/commands/scrub.ts +0 -865
- package/packages/cli/src/commands/setup.ts +0 -294
- package/packages/cli/src/commands/sync.ts +0 -1429
- package/packages/cli/src/config.ts +0 -182
- package/packages/cli/src/exchange-events.ts +0 -369
- package/packages/cli/src/flags.ts +0 -316
- package/packages/cli/src/fs-events.ts +0 -103
- package/packages/cli/src/index.ts +0 -17
- package/packages/cli/src/main.ts +0 -419
- package/packages/cli/src/mcp-server.ts +0 -314
- package/packages/cli/src/mcp.ts +0 -350
- package/packages/cli/src/out.ts +0 -350
- package/packages/cli/src/rasterize.ts +0 -205
- package/packages/cli/src/serial.ts +0 -38
- package/packages/cli/src/share-card.ts +0 -514
- package/packages/cli/src/snapshot.ts +0 -80
- package/packages/cli/src/tls-capture.ts +0 -688
- package/packages/cli/src/upstream.ts +0 -75
- package/packages/cli/src/version.ts +0 -21
- package/packages/cli/test/agent-spans-drain.test.ts +0 -157
- package/packages/cli/test/agent-spans-race.test.ts +0 -97
- package/packages/cli/test/agent-spans.test.ts +0 -1032
- package/packages/cli/test/api.test.ts +0 -178
- package/packages/cli/test/archive.test.ts +0 -143
- package/packages/cli/test/args.test.ts +0 -164
- package/packages/cli/test/attach-command.test.ts +0 -356
- package/packages/cli/test/attach.test.ts +0 -198
- package/packages/cli/test/capture-oracle.test.ts +0 -160
- package/packages/cli/test/capture-warning.test.ts +0 -215
- package/packages/cli/test/chain-card.test.ts +0 -190
- package/packages/cli/test/claude-capture.test.ts +0 -242
- package/packages/cli/test/compare.test.ts +0 -329
- package/packages/cli/test/config-permission-failure.test.ts +0 -41
- package/packages/cli/test/config.test.ts +0 -239
- package/packages/cli/test/declared-inside-replay.test.ts +0 -170
- package/packages/cli/test/doctor.test.ts +0 -276
- package/packages/cli/test/e2e.test.ts +0 -1230
- package/packages/cli/test/exchange-events.test.ts +0 -345
- package/packages/cli/test/failure-lines.test.ts +0 -47
- package/packages/cli/test/fixtures/deaf-agent.mjs +0 -11
- package/packages/cli/test/fixtures/embedding-agent.mjs +0 -32
- package/packages/cli/test/fixtures/fake-agent.mjs +0 -114
- package/packages/cli/test/fixtures/fake-model.mjs +0 -105
- package/packages/cli/test/fixtures/gateway-agent.mjs +0 -20
- package/packages/cli/test/fixtures/ide-parent.mjs +0 -34
- package/packages/cli/test/fixtures/mcp-agent.mjs +0 -64
- package/packages/cli/test/fixtures/proxy-call.mjs +0 -105
- package/packages/cli/test/fixtures/responses-agent.mjs +0 -82
- package/packages/cli/test/fixtures/responses-model.mjs +0 -94
- package/packages/cli/test/fixtures/tls-agent.mjs +0 -35
- package/packages/cli/test/fixtures/vercel-agent.mjs +0 -81
- package/packages/cli/test/flag-values.test.ts +0 -162
- package/packages/cli/test/flags.test.ts +0 -313
- package/packages/cli/test/fork-provenance.test.ts +0 -224
- package/packages/cli/test/fork-tls.test.ts +0 -190
- package/packages/cli/test/gateway-e2e.test.ts +0 -110
- package/packages/cli/test/gc.test.ts +0 -531
- package/packages/cli/test/generated-esm.test.ts +0 -87
- package/packages/cli/test/graph-card.test.ts +0 -249
- package/packages/cli/test/graph-command.test.ts +0 -258
- package/packages/cli/test/grok-bot-e2e.test.ts +0 -349
- package/packages/cli/test/inspect.test.ts +0 -412
- package/packages/cli/test/intercept-failures.test.ts +0 -74
- package/packages/cli/test/json-only.test.ts +0 -88
- package/packages/cli/test/json-output.test.ts +0 -221
- package/packages/cli/test/list-gateway.test.ts +0 -770
- package/packages/cli/test/mcp-capture.test.ts +0 -498
- package/packages/cli/test/mcp-server.test.ts +0 -315
- package/packages/cli/test/nested-repo-replay.test.ts +0 -972
- package/packages/cli/test/no-credential-in-attrs.test.ts +0 -255
- package/packages/cli/test/opencode-capture.test.ts +0 -422
- package/packages/cli/test/opencode-catalog-capture.test.ts +0 -175
- package/packages/cli/test/out.test.ts +0 -491
- package/packages/cli/test/pinned-fetch.test.ts +0 -154
- package/packages/cli/test/prompt-scrub.test.ts +0 -132
- package/packages/cli/test/publish-order.test.ts +0 -87
- package/packages/cli/test/quickstart.test.ts +0 -579
- package/packages/cli/test/rasterize.test.ts +0 -86
- package/packages/cli/test/record-detection.test.ts +0 -156
- package/packages/cli/test/record-teardown.test.ts +0 -203
- package/packages/cli/test/replay-putback.test.ts +0 -242
- package/packages/cli/test/replay-spill.test.ts +0 -116
- package/packages/cli/test/replay-teardown.test.ts +0 -143
- package/packages/cli/test/replay-trace.test.ts +0 -199
- package/packages/cli/test/replay-transport.test.ts +0 -113
- package/packages/cli/test/reset-roots.test.ts +0 -67
- package/packages/cli/test/responses-e2e.test.ts +0 -119
- package/packages/cli/test/retrieval-context.test.ts +0 -168
- package/packages/cli/test/review-regressions.test.ts +0 -168
- package/packages/cli/test/route-decision.test.ts +0 -134
- package/packages/cli/test/run-dir-sidecars.test.ts +0 -779
- package/packages/cli/test/scrub.test.ts +0 -936
- package/packages/cli/test/serial.test.ts +0 -65
- package/packages/cli/test/setup.test.ts +0 -535
- package/packages/cli/test/share-card.test.ts +0 -135
- package/packages/cli/test/shell-capture.test.ts +0 -184
- package/packages/cli/test/shell-frames-drain.test.ts +0 -91
- package/packages/cli/test/snapshot-retry.test.ts +0 -54
- package/packages/cli/test/support-claims.test.ts +0 -127
- package/packages/cli/test/sync-credentials.test.ts +0 -177
- package/packages/cli/test/sync.test.ts +0 -1709
- package/packages/cli/test/tls-intercept.test.ts +0 -548
- package/packages/cli/test/upstream-visible.test.ts +0 -314
- package/packages/cli/test/vercel-sdk-e2e.test.ts +0 -105
- package/packages/cli/test/version.test.ts +0 -20
- package/packages/cli/tsconfig.json +0 -40
- package/packages/core/package.json +0 -26
- package/packages/core/src/blobs.ts +0 -109
- package/packages/core/src/fetch.ts +0 -48
- package/packages/core/src/graph.ts +0 -450
- package/packages/core/src/index.ts +0 -8
- package/packages/core/src/paths.ts +0 -180
- package/packages/core/src/private-files.ts +0 -394
- package/packages/core/src/reader.ts +0 -175
- package/packages/core/src/redaction.ts +0 -826
- package/packages/core/src/writer.ts +0 -467
- package/packages/core/test/blobs.test.ts +0 -170
- package/packages/core/test/capture-contract.test.ts +0 -179
- package/packages/core/test/data-uri-redaction.test.ts +0 -758
- package/packages/core/test/graph.test.ts +0 -520
- package/packages/core/test/integration.test.ts +0 -148
- package/packages/core/test/paths-permission-failure.test.ts +0 -53
- package/packages/core/test/paths.test.ts +0 -339
- package/packages/core/test/private-files-owner.test.ts +0 -77
- package/packages/core/test/private-files-scratch-race.test.ts +0 -62
- package/packages/core/test/private-files.test.ts +0 -251
- package/packages/core/test/reader.test.ts +0 -271
- package/packages/core/test/redaction.test.ts +0 -525
- package/packages/core/test/writer.test.ts +0 -531
- package/packages/core/tsconfig.json +0 -6
- package/packages/fs-capture/package.json +0 -25
- package/packages/fs-capture/src/capture.ts +0 -193
- package/packages/fs-capture/src/git.ts +0 -131
- package/packages/fs-capture/src/index.ts +0 -3
- package/packages/fs-capture/src/shadow.ts +0 -751
- package/packages/fs-capture/test/capture.test.ts +0 -241
- package/packages/fs-capture/test/git.test.ts +0 -118
- package/packages/fs-capture/test/helpers.ts +0 -28
- package/packages/fs-capture/test/shadow.test.ts +0 -1058
- package/packages/fs-capture/tsconfig.json +0 -6
- package/packages/mcp-shim/package.json +0 -26
- package/packages/mcp-shim/src/cli.ts +0 -372
- package/packages/mcp-shim/src/framing.ts +0 -106
- package/packages/mcp-shim/src/index.ts +0 -4
- package/packages/mcp-shim/src/mock.ts +0 -194
- package/packages/mcp-shim/src/shim.ts +0 -126
- package/packages/mcp-shim/test/cli.test.ts +0 -489
- package/packages/mcp-shim/test/framing.test.ts +0 -143
- package/packages/mcp-shim/test/mock.test.ts +0 -200
- package/packages/mcp-shim/test/shim.test.ts +0 -287
- package/packages/mcp-shim/tsconfig.json +0 -5
- package/packages/node-instrument/package.json +0 -23
- package/packages/node-instrument/src/capture.ts +0 -505
- package/packages/node-instrument/src/index.ts +0 -3
- package/packages/node-instrument/src/install.ts +0 -186
- package/packages/node-instrument/src/rewrite.ts +0 -66
- package/packages/node-instrument/test/capture.test.ts +0 -423
- package/packages/node-instrument/test/install.test.ts +0 -427
- package/packages/node-instrument/test/rewrite.test.ts +0 -85
- package/packages/node-instrument/tsconfig.json +0 -9
- package/packages/plugin-api/package.json +0 -22
- package/packages/plugin-api/src/canonical.ts +0 -73
- package/packages/plugin-api/src/index.ts +0 -2
- package/packages/plugin-api/src/plugins.ts +0 -265
- package/packages/plugin-api/test/canonical.test.ts +0 -58
- package/packages/plugin-api/tsconfig.json +0 -5
- package/packages/providers/package.json +0 -26
- package/packages/providers/src/index.ts +0 -34
- package/packages/providers/src/pricing.ts +0 -140
- package/packages/providers/src/translate/anthropic.ts +0 -620
- package/packages/providers/src/translate/openai-responses.ts +0 -638
- package/packages/providers/src/translate/openai.ts +0 -630
- package/packages/providers/src/translate/sse.ts +0 -99
- package/packages/providers/src/translate/util.ts +0 -111
- package/packages/providers/test/anthropic-translate.test.ts +0 -687
- package/packages/providers/test/openai-responses-translate.test.ts +0 -377
- package/packages/providers/test/openai-translate.test.ts +0 -884
- package/packages/providers/test/pricing.test.ts +0 -171
- package/packages/providers/tsconfig.json +0 -6
- package/packages/proxy/package.json +0 -28
- package/packages/proxy/src/ca.ts +0 -376
- package/packages/proxy/src/der.ts +0 -152
- package/packages/proxy/src/dialects.ts +0 -413
- package/packages/proxy/src/forward.ts +0 -64
- package/packages/proxy/src/index.ts +0 -8
- package/packages/proxy/src/intercept.ts +0 -1554
- package/packages/proxy/src/matching.ts +0 -1056
- package/packages/proxy/src/retrieval.ts +0 -290
- package/packages/proxy/src/server.ts +0 -2875
- package/packages/proxy/src/tls-hosts.ts +0 -205
- package/packages/proxy/test/beta-headers.test.ts +0 -39
- package/packages/proxy/test/ca.test.ts +0 -146
- package/packages/proxy/test/forward.test.ts +0 -306
- package/packages/proxy/test/hop-by-hop.test.ts +0 -118
- package/packages/proxy/test/image-matching.test.ts +0 -129
- package/packages/proxy/test/indexing-concurrency.test.ts +0 -224
- package/packages/proxy/test/lookahead.test.ts +0 -160
- package/packages/proxy/test/malformed-body.test.ts +0 -73
- package/packages/proxy/test/matching.test.ts +0 -822
- package/packages/proxy/test/passthrough.test.ts +0 -599
- package/packages/proxy/test/recorded-upstream.test.ts +0 -253
- package/packages/proxy/test/responses-dialect.test.ts +0 -239
- package/packages/proxy/test/retrieval.test.ts +0 -589
- package/packages/proxy/test/server.test.ts +0 -1281
- package/packages/proxy/test/tls-hosts.test.ts +0 -190
- package/packages/proxy/test/tls-intercept.test.ts +0 -1769
- package/packages/proxy/tsconfig.json +0 -22
- package/packages/schema/package.json +0 -28
- package/packages/schema/src/constants.ts +0 -73
- package/packages/schema/src/index.ts +0 -3
- package/packages/schema/src/types.ts +0 -103
- package/packages/schema/src/validate.ts +0 -60
- package/packages/schema/test/schema-parity.test.ts +0 -116
- package/packages/schema/tsconfig.json +0 -5
- package/packages/shell-shim/package.json +0 -26
- package/packages/shell-shim/src/index.ts +0 -3
- package/packages/shell-shim/src/install.ts +0 -406
- package/packages/shell-shim/src/resolve.ts +0 -98
- package/packages/shell-shim/src/runner-bin.ts +0 -4
- package/packages/shell-shim/src/runner.ts +0 -149
- package/packages/shell-shim/test/resolve.test.ts +0 -125
- package/packages/shell-shim/test/shim.test.ts +0 -548
- package/packages/shell-shim/test/transport-race.test.ts +0 -109
- package/packages/shell-shim/tsconfig.json +0 -13
- package/packages/viewer/package.json +0 -25
- package/packages/viewer/src/bundle.ts +0 -36
- package/packages/viewer/src/client/main.ts +0 -248
- package/packages/viewer/src/credit.ts +0 -24
- package/packages/viewer/src/css.ts +0 -409
- package/packages/viewer/src/export.ts +0 -38
- package/packages/viewer/src/html.ts +0 -356
- package/packages/viewer/src/index.ts +0 -16
- package/packages/viewer/src/render.ts +0 -791
- package/packages/viewer/src/serve.ts +0 -150
- package/packages/viewer/src/trace-dir.ts +0 -140
- package/packages/viewer/test/bundle.test.ts +0 -47
- package/packages/viewer/test/client.test.ts +0 -378
- package/packages/viewer/test/export.test.ts +0 -131
- package/packages/viewer/test/fixtures.ts +0 -69
- package/packages/viewer/test/html.test.ts +0 -453
- package/packages/viewer/test/playback.test.ts +0 -54
- package/packages/viewer/test/render.test.ts +0 -714
- package/packages/viewer/test/serve.test.ts +0 -125
- package/packages/viewer/tsconfig.json +0 -6
- package/prompt/AIDER/deepseek-v4-1-flash-system-prompt.md +0 -29
- package/prompt/CLAUDECODE/claude-fable-5-1-print-system-prompt.md +0 -127
- package/prompt/CLAUDECODE/claude-fable-5-1-system-prompt.md +0 -169
- package/prompt/CLAUDECODE/claude-opus-4-8-system-prompt.md +0 -131
- package/prompt/CLAUDECODE/claude-opus-5-system-prompt.md +0 -149
- package/prompt/CLINE/openai-gpt-4o-mini-system-prompt.md +0 -37
- package/prompt/CODEX/gpt-5-6-luna-system-prompt.md +0 -183
- package/prompt/CODEX/gpt-5-6-sol-system-prompt.md +0 -218
- package/prompt/CODEX/gpt-6-1-sol-system-prompt.md +0 -242
- package/prompt/CODEX/gpt-6-astra-system-prompt.md +0 -170
- package/prompt/CODEX/gpt-6-luna-system-prompt.md +0 -223
- package/prompt/CODEX/gpt-6-sol-system-prompt.md +0 -226
- package/prompt/CRUSH/deepseek-v4-1-flash-system-prompt.md +0 -472
- package/prompt/CURSOR/grok-4-5-high-system-prompt.md +0 -40
- package/prompt/DSH/deepseek-flash-system-prompt.md +0 -31
- package/prompt/GEMINICLI/gemini-3-5-flash-system-prompt.md +0 -168
- package/prompt/GOOSE/deepseek-v4-1-flash-system-prompt.md +0 -180
- package/prompt/HACKERAI/openai-gpt-4o-mini-system-prompt.md +0 -70
- package/prompt/HERMES/nemotron-3-5-lightning-free-system-prompt.md +0 -111
- package/prompt/KILOCODE/kilo-auto-free-system-prompt.md +0 -129
- package/prompt/MCODE/deepseek-deepseek-v4-flash-free-coding-system-prompt.md +0 -128
- package/prompt/MCODE/deepseek-deepseek-v4-flash-free-tui-system-prompt.md +0 -119
- package/prompt/MCODE/deepseek-deepseek-v4-flash-free-work-system-prompt.md +0 -140
- package/prompt/MIMOCODE/mimo-v2-5-pro-system-prompt.md +0 -411
- package/prompt/MIMOCODE/mimo-v2-5-system-prompt.md +0 -411
- package/prompt/MUSECODE/muse-spark-1-3-system-prompt.md +0 -78
- package/prompt/OPENCLAW/gpt-5-6-sol-system-prompt.md +0 -333
- package/prompt/OPENCODE/big-pickle-system-prompt.md +0 -114
- package/prompt/OPENCODE/gpt-5-6-sol-system-prompt.md +0 -126
- package/prompt/OPENCODE/ling-3-0-flash-fin-free-system-prompt.md +0 -114
- package/prompt/OPENCODE/mimo-v2-5-free-system-prompt.md +0 -114
- package/prompt/OPENCODE/muse-spark-1-2-contributor-free-system-prompt.md +0 -84
- package/prompt/OPENCODE/nemotron-3-5-lightning-free-system-prompt.md +0 -114
- package/prompt/OPENCODE/nemotron-3-ultra-free-system-prompt.md +0 -114
- package/prompt/PI/openai-gpt-4o-mini-system-prompt.md +0 -31
- package/prompt/QWENCODE/gpt-5-6-sol-system-prompt.md +0 -290
- package/prompt/ZCODE/glm-4-6-system-prompt.md +0 -91
- package/python/README.md +0 -132
- package/python/agenticreplay_trace/__init__.py +0 -58
- package/python/agenticreplay_trace/graph.py +0 -137
- package/python/agenticreplay_trace/models.py +0 -491
- package/python/agenticreplay_trace/py.typed +0 -0
- package/python/agenticreplay_trace/reader.py +0 -295
- package/python/conftest.py +0 -12
- package/python/examples/analyze.py +0 -114
- package/python/pyproject.toml +0 -45
- package/python/tests/conftest.py +0 -102
- package/python/tests/test_capture_contract.py +0 -24
- package/python/tests/test_conformance.py +0 -235
- package/python/tests/test_examples.py +0 -60
- package/python/tests/test_graph.py +0 -247
- package/python/tests/test_models.py +0 -342
- package/python/tests/test_reader.py +0 -423
- package/python-langgraph/README.md +0 -159
- package/python-langgraph/agenticreplay_langgraph/__init__.py +0 -21
- package/python-langgraph/agenticreplay_langgraph/handler.py +0 -317
- package/python-langgraph/agenticreplay_langgraph/hook.py +0 -168
- package/python-langgraph/pyproject.toml +0 -35
- package/python-langgraph/tests/test_handler.py +0 -370
- package/python-langgraph/tests/test_integration.py +0 -484
- package/python-openai-agents/README.md +0 -145
- package/python-openai-agents/agenticreplay_openai_agents/__init__.py +0 -11
- package/python-openai-agents/agenticreplay_openai_agents/processor.py +0 -331
- package/python-openai-agents/pyproject.toml +0 -34
- package/python-openai-agents/tests/test_processor.py +0 -457
- package/scripts/check-neutrality.mjs +0 -62
- package/scripts/codex-client-acceptance.mjs +0 -133
- package/scripts/conformance.mjs +0 -245
- package/scripts/fidelity.mjs +0 -170
- package/scripts/hermes-client-acceptance.mjs +0 -158
- package/scripts/host-client-acceptance.mjs +0 -732
- package/scripts/installed-smoke.mjs +0 -316
- package/scripts/publish-order.mjs +0 -96
- package/scripts/regenerate-quickstart.mjs +0 -79
- package/scripts/render-cards.mjs +0 -178
- package/scripts/render-demo.mjs +0 -139
- package/scripts/render-sync-card.mjs +0 -96
- package/scripts/set-version.mjs +0 -152
- package/scripts/set-version.test.ts +0 -220
- package/scripts/sync-server-json.mjs +0 -13
- package/scripts/update-opencode-api-bases.mjs +0 -29
- package/server.json +0 -28
- package/skills/agenticreplay-replay/SKILL.md +0 -211
- package/spec/agenticreplay-trace-v0.md +0 -223
- package/test/integrations/README.md +0 -133
- package/test/integrations/agents/ai_sdk_openai.mjs +0 -24
- package/test/integrations/agents/anthropic_sdk.py +0 -10
- package/test/integrations/agents/browser_use_agent.py +0 -24
- package/test/integrations/agents/crewai_agent.py +0 -44
- package/test/integrations/agents/crewai_model_names.py +0 -72
- package/test/integrations/agents/hardcoded_origin.mjs +0 -13
- package/test/integrations/agents/haystack_pipeline.py +0 -28
- package/test/integrations/agents/haystack_rag.py +0 -35
- package/test/integrations/agents/langgraph_agent.py +0 -54
- package/test/integrations/agents/langgraph_nodes.py +0 -62
- package/test/integrations/agents/litellm_agent.py +0 -11
- package/test/integrations/agents/llama_index_agent.py +0 -27
- package/test/integrations/agents/llama_index_model_names.py +0 -67
- package/test/integrations/agents/mastra_agent.mjs +0 -20
- package/test/integrations/agents/mcp_agent.py +0 -44
- package/test/integrations/agents/mcp_server.py +0 -20
- package/test/integrations/agents/openai_agents_handoff.py +0 -52
- package/test/integrations/agents/openai_agents_sdk.py +0 -29
- package/test/integrations/agents/openai_async.py +0 -17
- package/test/integrations/agents/openai_sdk.py +0 -10
- package/test/integrations/agents/openhands_agent.py +0 -34
- package/test/integrations/agents/rag_pipeline.py +0 -79
- package/test/integrations/agents/vision_agent.py +0 -63
- package/test/integrations/run.mjs +0 -719
- package/test/integrations/stub-origin.mjs +0 -229
- package/tsconfig.base.json +0 -20
- package/tsconfig.json +0 -41
- package/vitest.config.ts +0 -39
- package/vitest.setup.ts +0 -25
- /package/{packages → node_modules/@agenticreplay}/schema/schema/event.schema.json +0 -0
- /package/{packages → node_modules/@agenticreplay}/schema/schema/manifest.schema.json +0 -0
|
@@ -1,1069 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import { readFile } from 'node:fs/promises';
|
|
3
|
-
import { delimiter, resolve } from 'node:path';
|
|
4
|
-
import { TraceWriter, ensureRunsDir } from '@agenticreplay/core';
|
|
5
|
-
import { FsCapture } from '@agenticreplay/fs-capture';
|
|
6
|
-
import {
|
|
7
|
-
createProxy,
|
|
8
|
-
unusableOrigin,
|
|
9
|
-
recordableOrigin,
|
|
10
|
-
RunCa,
|
|
11
|
-
type NetExchange,
|
|
12
|
-
type NetRequest,
|
|
13
|
-
type RecordedExchange,
|
|
14
|
-
} from '@agenticreplay/proxy';
|
|
15
|
-
import {
|
|
16
|
-
captureSession,
|
|
17
|
-
defaultAdapters,
|
|
18
|
-
resolveLaunch,
|
|
19
|
-
snapshotDir,
|
|
20
|
-
} from '@agenticreplay/adapters';
|
|
21
|
-
import type { Adapter, RecordContext } from '@agenticreplay/plugin-api';
|
|
22
|
-
import { ExchangeEventDeriver, appendDerivedEvents } from '../exchange-events.js';
|
|
23
|
-
import { discardShellFrames, installShellShim, readShellFrames } from '@agenticreplay/shell-shim';
|
|
24
|
-
import {
|
|
25
|
-
eventForSpan,
|
|
26
|
-
discardAgentSpanTransport,
|
|
27
|
-
installAgentSpans,
|
|
28
|
-
sweepStaleTransports,
|
|
29
|
-
touchTransports,
|
|
30
|
-
pythonPathWith,
|
|
31
|
-
agentSpanLosses,
|
|
32
|
-
readAgentSpans,
|
|
33
|
-
PYTHON_ADAPTERS,
|
|
34
|
-
SPANS_ENV,
|
|
35
|
-
type AgentSpanCapture,
|
|
36
|
-
} from '../agent-spans.js';
|
|
37
|
-
import { drainMcpFrames, pointAtMcpConfig, setupMcpCapture, type McpCapture } from '../mcp.js';
|
|
38
|
-
import { SerialQueue } from '../serial.js';
|
|
39
|
-
import { appendSnapshot } from '../fs-events.js';
|
|
40
|
-
import type { Output } from '../out.js';
|
|
41
|
-
import type { ParsedArgs } from '../args.js';
|
|
42
|
-
import {
|
|
43
|
-
persistNetExchange,
|
|
44
|
-
planTlsCapture,
|
|
45
|
-
setupTlsCapture,
|
|
46
|
-
trustRunCa,
|
|
47
|
-
UnclaimedPaths,
|
|
48
|
-
persistNetRequestStart,
|
|
49
|
-
} from '../tls-capture.js';
|
|
50
|
-
import { upstreamPlan } from '../upstream.js';
|
|
51
|
-
import { AGENTICREPLAY_VERSION } from '../version.js';
|
|
52
|
-
import { captureLimits } from '../capture-limits.js';
|
|
53
|
-
|
|
54
|
-
export interface RecordResult {
|
|
55
|
-
/**
|
|
56
|
-
* Model exchanges the proxy captured.
|
|
57
|
-
*
|
|
58
|
-
* Zero is the failure this whole field exists for, and it has to be readable by a caller that
|
|
59
|
-
* has no terminal to watch: the agent answers, the exit code is zero, and the trace is empty.
|
|
60
|
-
*/
|
|
61
|
-
modelExchanges: number;
|
|
62
|
-
runId: string;
|
|
63
|
-
runDir: string;
|
|
64
|
-
events: number;
|
|
65
|
-
exitCode: number;
|
|
66
|
-
childExitCode: number;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* `agenticreplay record <agent>` — stand up the capture layers, launch the agent pointed at them, and get
|
|
71
|
-
* out of the way. The agent is not patched, wrapped or modified; it is simply started with a
|
|
72
|
-
* couple of environment variables that point its model traffic at a local proxy.
|
|
73
|
-
*
|
|
74
|
-
* The wrapper exists for one reason: a TLS-intercepting run mints a private key, and a key that
|
|
75
|
-
* outlives a failed run is the outcome this feature must not have. The recording's own teardown
|
|
76
|
-
* deletes it on the way out, but the likeliest failure of all — the agent is not installed —
|
|
77
|
-
* happens before any teardown runs. Owning the key's lifetime out here means no failure path
|
|
78
|
-
* inside can skip it.
|
|
79
|
-
*/
|
|
80
|
-
/**
|
|
81
|
-
* Whether a tool call ran a command.
|
|
82
|
-
*
|
|
83
|
-
* By the shape of the arguments rather than by the tool's name: every harness names it something
|
|
84
|
-
* different — `Bash`, `shell`, `run_command`, `exec` — and a list of names would be wrong for the
|
|
85
|
-
* next one. A `command` string is what they all have in common.
|
|
86
|
-
*/
|
|
87
|
-
function isCommandTool(input: unknown): boolean {
|
|
88
|
-
if (input === null || typeof input !== 'object') return false;
|
|
89
|
-
const command = (input as { command?: unknown }).command;
|
|
90
|
-
return typeof command === 'string' && command.trim() !== '';
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export async function recordCommand(
|
|
94
|
-
args: ParsedArgs,
|
|
95
|
-
out: Output,
|
|
96
|
-
cwd = process.cwd(),
|
|
97
|
-
): Promise<RecordResult> {
|
|
98
|
-
// Before anything else, and never fatal: an orphan left by a killed run holds the same
|
|
99
|
-
// un-redacted material a live one does, and the next recording is the only thing that will ever
|
|
100
|
-
// come across it.
|
|
101
|
-
const sweptStale = await sweepStaleTransports().catch(() => 0);
|
|
102
|
-
if (sweptStale > 0) out.info('transports.swept', { stale: sweptStale });
|
|
103
|
-
|
|
104
|
-
const minted: RunCa[] = [];
|
|
105
|
-
// Transport directories, disposed here if the run throws before their drain reaches them. Both
|
|
106
|
-
// hold material written by a process agenticreplay does not own — the agent's shells, the agent's own
|
|
107
|
-
// interpreter — and a run that dies partway must not leave either behind.
|
|
108
|
-
const transports: string[] = [];
|
|
109
|
-
// While this run holds them, they are not orphans, and a sweep that cannot resolve this pid —
|
|
110
|
-
// another container sharing `/tmp` — has no other way to know that. Started here so it covers
|
|
111
|
-
// both transports from the moment each is pushed, and stopped on every exit path below.
|
|
112
|
-
const stopHeartbeat = touchTransports(transports);
|
|
113
|
-
try {
|
|
114
|
-
return await runRecording(args, out, cwd, minted, transports);
|
|
115
|
-
} catch (err) {
|
|
116
|
-
for (const ca of minted) {
|
|
117
|
-
await ca.dispose().catch(() => undefined);
|
|
118
|
-
}
|
|
119
|
-
for (const dir of transports) {
|
|
120
|
-
await discardShellFrames(dir).catch(() => undefined);
|
|
121
|
-
}
|
|
122
|
-
throw err;
|
|
123
|
-
} finally {
|
|
124
|
-
stopHeartbeat();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
async function runRecording(
|
|
129
|
-
args: ParsedArgs,
|
|
130
|
-
out: Output,
|
|
131
|
-
cwd: string,
|
|
132
|
-
minted: RunCa[],
|
|
133
|
-
transports: string[],
|
|
134
|
-
): Promise<RecordResult> {
|
|
135
|
-
const registry = defaultAdapters();
|
|
136
|
-
const agentName = args.positionals[0];
|
|
137
|
-
|
|
138
|
-
let adapter: Adapter | undefined;
|
|
139
|
-
if (agentName) {
|
|
140
|
-
adapter = registry.get(agentName);
|
|
141
|
-
} else if (args.passthrough.length > 0) {
|
|
142
|
-
// A command after `--` is not a hint about the environment; it is the answer. Detection is
|
|
143
|
-
// machine-wide by construction — every adapter's is `detectAgent(binaries, homePaths)`, which
|
|
144
|
-
// asks whether a binary is on PATH or a directory exists under `$HOME`, and neither is a fact
|
|
145
|
-
// about this directory. So on a machine with Claude Code installed,
|
|
146
|
-
// `agenticreplay record -- python my_graph.py` detected `claude-code` and launched *that*, handing it
|
|
147
|
-
// `python my_graph.py` as arguments. The run recorded, so the failure looked like a bad key
|
|
148
|
-
// rather than like agenticreplay having started the wrong program.
|
|
149
|
-
//
|
|
150
|
-
// `generic-openai` rather than `exec`: both decline to guess what the command is, but only one
|
|
151
|
-
// of them redirects anything. `exec` points the agent nowhere and warns that interception is
|
|
152
|
-
// required — correct for a Go binary with its origin compiled in, and wrong as a default,
|
|
153
|
-
// because most things run this way read a base-URL variable and would have been captured by
|
|
154
|
-
// setting the three that `generic-openai` sets. Sending everyone to `--tls-intercept` to record
|
|
155
|
-
// a Python script is a worse answer than the bug this replaces.
|
|
156
|
-
adapter = registry.get('generic-openai');
|
|
157
|
-
} else {
|
|
158
|
-
adapter = await registry.detect(cwd);
|
|
159
|
-
if (!adapter) {
|
|
160
|
-
throw new Error(
|
|
161
|
-
`could not detect an agent in ${cwd}\n` +
|
|
162
|
-
` name one explicitly: agenticreplay record <${registry.ids().join('|')}>\n` +
|
|
163
|
-
` known agents: ${registry.names().join('; ')}`,
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
out.info('adapter.detected', { id: adapter.id });
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Before the run directory exists, because both of these refuse: `upstreamPlan` an upstream that
|
|
170
|
-
// is not an origin, `planTlsCapture` a `--tls-hosts` list that names `*` or contradicts itself
|
|
171
|
-
// and an `AGENTICREPLAY_TLS_UPSTREAM_CA` that cannot be read. Resolved after it, a typo in any of them
|
|
172
|
-
// left an empty run behind for `agenticreplay list` to show. Neither depends on more than the arguments,
|
|
173
|
-
// the environment and a file the run was going to read anyway, so there is no reason for either
|
|
174
|
-
// to run later — and `planTlsCapture` is the refusing half of `setupTlsCapture` alone, so the
|
|
175
|
-
// certificate authority is still minted below, once the run has a directory to mint it into.
|
|
176
|
-
const plan = await upstreamPlan(args);
|
|
177
|
-
await planTlsCapture(args);
|
|
178
|
-
|
|
179
|
-
const dir = await ensureRunsDir(cwd);
|
|
180
|
-
|
|
181
|
-
const writer = await TraceWriter.create(dir, {
|
|
182
|
-
adapter: {
|
|
183
|
-
id: adapter.id,
|
|
184
|
-
version: AGENTICREPLAY_VERSION,
|
|
185
|
-
harness_version: adapter.harnessVersions,
|
|
186
|
-
},
|
|
187
|
-
argv: [agentName ?? adapter.id, ...args.passthrough],
|
|
188
|
-
cwd,
|
|
189
|
-
agenticreplayVersion: AGENTICREPLAY_VERSION,
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
const captureFs = args.bool('fs', true);
|
|
193
|
-
let fs: FsCapture | undefined;
|
|
194
|
-
if (captureFs) {
|
|
195
|
-
try {
|
|
196
|
-
// The adapter's declared artifacts widen what a snapshot covers. A pipeline writes its
|
|
197
|
-
// product to a path its own `.gitignore` excludes, so without this the trace holds the
|
|
198
|
-
// calls that built an index and no trace of the index; see `HarnessArtifacts.capture`.
|
|
199
|
-
fs = await FsCapture.start({
|
|
200
|
-
runDir: writer.runDir,
|
|
201
|
-
cwd,
|
|
202
|
-
...(adapter.artifacts?.capture === undefined ? {} : { forced: adapter.artifacts.capture }),
|
|
203
|
-
});
|
|
204
|
-
// Read once, before the agent touches anything: `git` describes the state the run started
|
|
205
|
-
// from, which is what makes it a reproduction instruction rather than a postscript.
|
|
206
|
-
writer.setGit(await fs.gitInfo());
|
|
207
|
-
} catch (err) {
|
|
208
|
-
// Filesystem capture is valuable but not essential; losing it should degrade the trace,
|
|
209
|
-
// not abort the run the user actually wanted to record.
|
|
210
|
-
out.warn('fs.unavailable', { reason: String(err) });
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// MCP capture is opt-in by pointing at a config: the file lives in a different place for every
|
|
215
|
-
// harness, and guessing wrong would rewrite something the user did not mean us to touch.
|
|
216
|
-
let mcp: McpCapture | undefined;
|
|
217
|
-
const mcpConfigPath = args.str('mcp-config');
|
|
218
|
-
if (mcpConfigPath) {
|
|
219
|
-
mcp = await setupMcpCapture({ sourceConfigPath: mcpConfigPath, runDir: writer.runDir, out });
|
|
220
|
-
// THE NOTE IS WRITTEN AFTER `run.start`, NOT HERE — see the append below it.
|
|
221
|
-
//
|
|
222
|
-
// Instrumenting MCP has to happen before the agent launches, because it rewrites the config the
|
|
223
|
-
// agent is about to read. Recording that it happened does not: agenticreplay-trace requires `run.start`
|
|
224
|
-
// at seq 0, and appending here put a `note` there instead, which the gateway's validator
|
|
225
|
-
// refuses on push ("run.start at seq 1, must be seq 0"). Nothing local checks the ordering, so
|
|
226
|
-
// every MCP-instrumented recording looked fine and was unpushable. `tls_intercept` already
|
|
227
|
-
// separates the two — it sets up here and queues its note for after the start event.
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// Shell capture: a PATH shim in front of sh/bash. The protocol layer already reports the command
|
|
231
|
-
// and its merged output one turn late; what only the shim can see is the exit code, the real
|
|
232
|
-
// duration, and which stream each byte came out of.
|
|
233
|
-
let shell: Awaited<ReturnType<typeof installShellShim>> | undefined;
|
|
234
|
-
if (args.bool('shell', true)) {
|
|
235
|
-
try {
|
|
236
|
-
shell = await installShellShim({ runDir: writer.runDir });
|
|
237
|
-
// Only when agenticreplay minted it. A caller-supplied `framesPath` leaves the directory theirs,
|
|
238
|
-
// and this list is deleted wholesale on a failure.
|
|
239
|
-
if (shell.transportDir !== undefined) transports.push(shell.transportDir);
|
|
240
|
-
} catch (err) {
|
|
241
|
-
// Same posture as filesystem capture: degrade the trace, never abort the run.
|
|
242
|
-
out.warn('shell.unavailable', { reason: String(err) });
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// Agent-level structure, for a harness that reports it. The proxy sees `POST /v1/responses` and
|
|
247
|
-
// cannot say which agent sent it, that a handoff happened, or that a guardrail ran — the last of
|
|
248
|
-
// which need make no request at all. A `sitecustomize.py` on PYTHONPATH attaches the OpenAI Agents
|
|
249
|
-
// SDK's tracing to a run without editing the agent, the same trick as the fetch hook's
|
|
250
|
-
// NODE_OPTIONS. Silent and free where the SDK is absent, which is most runs.
|
|
251
|
-
let agentSpans: AgentSpanCapture | undefined;
|
|
252
|
-
if (args.bool('agent-spans', true) || args.bool('tls-intercept', false)) {
|
|
253
|
-
try {
|
|
254
|
-
agentSpans = await installAgentSpans(writer.runDir);
|
|
255
|
-
transports.push(agentSpans.transportDir);
|
|
256
|
-
} catch (err) {
|
|
257
|
-
// Same posture as the other optional layers: degrade the trace, never abort the run.
|
|
258
|
-
out.warn('agent_spans.unavailable', { reason: String(err) });
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
const deriver = new ExchangeEventDeriver();
|
|
263
|
-
let turn = 0;
|
|
264
|
-
// When each turn began, so an out-of-band frame can be attributed to the turn it happened during
|
|
265
|
-
// rather than to whichever turn happened to be last when we drained the file.
|
|
266
|
-
const turnStartedAt: { turn: number; at: number }[] = [];
|
|
267
|
-
// Serial, not parallel: each persist snapshots the workspace, and two overlapping `git add`
|
|
268
|
-
// calls collide on index.lock. It also keeps seq in the order exchanges actually happened.
|
|
269
|
-
const writes = new SerialQueue();
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* TLS interception, off unless the flag is present.
|
|
273
|
-
*
|
|
274
|
-
* Base-URL injection captures every harness that reads a base-URL variable, which is most of
|
|
275
|
-
* them. A Codex CLI signed in with a ChatGPT subscription reads none, and talks to its own
|
|
276
|
-
* backend over TLS — invisible to the ordinary mechanism. This is the answer to that, and it is
|
|
277
|
-
* deliberately a separate decision the operator has to make: it mints a certificate authority.
|
|
278
|
-
*/
|
|
279
|
-
/**
|
|
280
|
-
* Paths this run forwarded but could not read, however they arrived.
|
|
281
|
-
*
|
|
282
|
-
* Shared between the interception hook and the plaintext passthrough below, so a run that
|
|
283
|
-
* captured only unreadable traffic can say which paths those were instead of blaming a
|
|
284
|
-
* base-URL variable that was set correctly.
|
|
285
|
-
*/
|
|
286
|
-
const unclaimed = new UnclaimedPaths(captureLimits(args).maxCapturedBytes);
|
|
287
|
-
|
|
288
|
-
let networkExchanges = 0;
|
|
289
|
-
const requestTurns = new Map<string, number>();
|
|
290
|
-
const bufferLimit = captureLimits(args).maxBufferedBytes;
|
|
291
|
-
let queuedBodyBytes = 0;
|
|
292
|
-
function enqueueBodyWrite(bytes: number, task: () => Promise<void>): boolean {
|
|
293
|
-
if (queuedBodyBytes + bytes > bufferLimit) {
|
|
294
|
-
writer.markCaptureIncomplete('persistence_buffer_limit');
|
|
295
|
-
return false;
|
|
296
|
-
}
|
|
297
|
-
queuedBodyBytes += bytes;
|
|
298
|
-
writes.push(async () => {
|
|
299
|
-
try {
|
|
300
|
-
await task();
|
|
301
|
-
} finally {
|
|
302
|
-
queuedBodyBytes -= bytes;
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
return true;
|
|
306
|
-
}
|
|
307
|
-
async function startRequest(request: NetRequest): Promise<void> {
|
|
308
|
-
const requestTurn = ++turn;
|
|
309
|
-
requestTurns.set(request.requestId, requestTurn);
|
|
310
|
-
turnStartedAt.push({ turn: requestTurn, at: request.requestStartedAt });
|
|
311
|
-
await persistNetRequestStart(writer, requestTurn, request);
|
|
312
|
-
}
|
|
313
|
-
function finishRequest(exchange: NetExchange): void {
|
|
314
|
-
networkExchanges += 1;
|
|
315
|
-
unclaimed.note(out, exchange);
|
|
316
|
-
const requestTurn = requestTurns.get(exchange.requestId);
|
|
317
|
-
if (requestTurn === undefined) writer.markCaptureIncomplete('missing_request_correlation');
|
|
318
|
-
const bytes =
|
|
319
|
-
Buffer.byteLength(exchange.requestBody) + Buffer.byteLength(exchange.responseBody);
|
|
320
|
-
if (!enqueueBodyWrite(bytes, () => persistNetExchange(writer, requestTurn ?? 0, exchange))) {
|
|
321
|
-
const omitted: NetExchange = {
|
|
322
|
-
...exchange,
|
|
323
|
-
requestBody: '',
|
|
324
|
-
responseBody: '',
|
|
325
|
-
requestTruncated: true,
|
|
326
|
-
responseTruncated: true,
|
|
327
|
-
transformations: [
|
|
328
|
-
...(exchange.transformations ?? []),
|
|
329
|
-
{
|
|
330
|
-
kind: 'omission',
|
|
331
|
-
location: 'request.body',
|
|
332
|
-
rule: 'persistence_buffer_limit',
|
|
333
|
-
count: 1,
|
|
334
|
-
reason: 'concurrent persistence budget exhausted',
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
kind: 'omission',
|
|
338
|
-
location: 'response.body',
|
|
339
|
-
rule: 'persistence_buffer_limit',
|
|
340
|
-
count: 1,
|
|
341
|
-
reason: 'concurrent persistence budget exhausted',
|
|
342
|
-
},
|
|
343
|
-
],
|
|
344
|
-
};
|
|
345
|
-
writes.push(() => persistNetExchange(writer, requestTurn ?? 0, omitted));
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
const tls = await setupTlsCapture({
|
|
349
|
-
args,
|
|
350
|
-
out,
|
|
351
|
-
writer,
|
|
352
|
-
writes,
|
|
353
|
-
turn: () => turn,
|
|
354
|
-
unclaimed,
|
|
355
|
-
onRequestStart: startRequest,
|
|
356
|
-
onNetExchange: finishRequest,
|
|
357
|
-
});
|
|
358
|
-
if (tls.ca) minted.push(tls.ca);
|
|
359
|
-
const ca = tls.ca;
|
|
360
|
-
|
|
361
|
-
// The mirror of the warning inside `setupTlsCapture`, which fires when hosts are named without
|
|
362
|
-
// interception. This one fires when interception is the adapter's *only* route to the traffic
|
|
363
|
-
// and it was not asked for: a `transport` adapter redirects nothing on purpose, so without
|
|
364
|
-
// `--tls-intercept` the run completes, exits zero and records no model traffic at all. That is
|
|
365
|
-
// the precise shape of failure the adapter contract exists to catch, and it deserves to be said
|
|
366
|
-
// out loud rather than inferred from an empty trace. `tls.ca` is minted only when interception
|
|
367
|
-
// is on, which makes it the signal.
|
|
368
|
-
if (adapter.capture === 'transport' && !tls.ca) {
|
|
369
|
-
out.warn('tls.intercept_required', {
|
|
370
|
-
adapter: adapter.id,
|
|
371
|
-
reason: 'this adapter points the agent nowhere and relies on interception',
|
|
372
|
-
next: "add --tls-intercept, and --tls-hosts '+host' for a host outside the defaults",
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
// A `config` adapter points the agent somewhere too — through a file rather than a variable —
|
|
376
|
-
// so it needs no interception and must not be told to turn it on. It is named here only so
|
|
377
|
-
// that the branch above is read as the narrow thing it is.
|
|
378
|
-
|
|
379
|
-
/** Model exchanges the proxy actually captured — the number the warning below turns on. */
|
|
380
|
-
let modelExchanges = 0;
|
|
381
|
-
/**
|
|
382
|
-
* Tool calls that ran a command, counted from the model exchanges rather than from the shim.
|
|
383
|
-
*
|
|
384
|
-
* This is the evidence half of the shell-shim check. The shim reports success when it installs,
|
|
385
|
-
* which says nothing about whether the harness ever went through it: Claude Code on Windows
|
|
386
|
-
* resolves its shell without consulting PATH, so `shell=on` printed happily while the frames
|
|
387
|
-
* file stayed empty for a run full of Bash calls. Comparing what the model asked for against
|
|
388
|
-
* what the shim saw is what turns that silence into something agenticreplay can say out loud.
|
|
389
|
-
*/
|
|
390
|
-
let commandToolCalls = 0;
|
|
391
|
-
/** Commands the shim actually saw. Zero against a non-zero `commandToolCalls` is the warning. */
|
|
392
|
-
let shellFrames = 0;
|
|
393
|
-
// (the count this used to keep was read by nothing; the layer reports through its events)
|
|
394
|
-
/**
|
|
395
|
-
* Exchanges the upstream answered with an error status.
|
|
396
|
-
*
|
|
397
|
-
* Counted because a run in which every model call failed is indistinguishable, from the summary
|
|
398
|
-
* line alone, from one that worked: the harness retries, gives up, exits 0, and agenticreplay prints
|
|
399
|
-
* `recorded … exit=0` over a trace whose every answer is a 503. That happened against a gateway
|
|
400
|
-
* whose credentials had lapsed, and nothing in the output said so.
|
|
401
|
-
*/
|
|
402
|
-
let erroredExchanges = 0;
|
|
403
|
-
/** The status those errors carried, so the warning can name it rather than describe it. */
|
|
404
|
-
const errorStatuses = new Map<number, number>();
|
|
405
|
-
|
|
406
|
-
/**
|
|
407
|
-
* How much of a retrieval answer to keep.
|
|
408
|
-
*
|
|
409
|
-
* `full` by default, because it is the only setting that can be replayed. `digest` exists
|
|
410
|
-
* because these bodies are large in a way a chat response is not — six paragraphs at 768
|
|
411
|
-
* dimensions is 98 KB of JSON floats, and an index build makes thousands of such calls — so a
|
|
412
|
-
* recording made to check that a later run agrees, rather than to reproduce one, can keep the
|
|
413
|
-
* hash and none of the vectors.
|
|
414
|
-
*/
|
|
415
|
-
const retrievalStore = args.str('retrieval-store') ?? 'full';
|
|
416
|
-
if (retrievalStore !== 'full' && retrievalStore !== 'digest') {
|
|
417
|
-
throw new Error(
|
|
418
|
-
`--retrieval-store must be 'full' or 'digest', not '${retrievalStore}'\n` +
|
|
419
|
-
' full keep the response, so the run can be replayed offline\n' +
|
|
420
|
-
' digest keep only its sha256, which proves a later run agreed but cannot serve it',
|
|
421
|
-
);
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
const proxy = await createProxy({
|
|
425
|
-
mode: 'record',
|
|
426
|
-
upstream: plan.upstream,
|
|
427
|
-
upstreamHeaders: plan.headers,
|
|
428
|
-
upstreamHeadersOrigin: plan.headersOrigin,
|
|
429
|
-
retrievalStore,
|
|
430
|
-
onRequestStart: startRequest,
|
|
431
|
-
onExchange: (exchange: RecordedExchange) => {
|
|
432
|
-
modelExchanges += 1;
|
|
433
|
-
if (exchange.status >= 400) {
|
|
434
|
-
erroredExchanges += 1;
|
|
435
|
-
errorStatuses.set(exchange.status, (errorStatuses.get(exchange.status) ?? 0) + 1);
|
|
436
|
-
}
|
|
437
|
-
enqueueBodyWrite(
|
|
438
|
-
Buffer.byteLength(exchange.rawRequest) + Buffer.byteLength(exchange.rawResponse),
|
|
439
|
-
() => persist(exchange),
|
|
440
|
-
);
|
|
441
|
-
},
|
|
442
|
-
// A POST on a path no dialect claims is forwarded rather than refused, and lands in the trace
|
|
443
|
-
// as the same `net.*` pair unrecognised TLS traffic does. AgenticReplay holds the bytes but not the
|
|
444
|
-
// meaning, so it is evidence, not a replayable turn.
|
|
445
|
-
onNetExchange: finishRequest,
|
|
446
|
-
...tls.proxyOptions,
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
async function persist(exchange: RecordedExchange): Promise<void> {
|
|
450
|
-
const requestTurn = exchange.requestId ? requestTurns.get(exchange.requestId) : undefined;
|
|
451
|
-
if (requestTurn === undefined) writer.markCaptureIncomplete('missing_model_correlation');
|
|
452
|
-
await appendDerivedEvents(writer, deriver, exchange, requestTurn ?? 0, (derived) => {
|
|
453
|
-
if (derived.type === 'tool.call' && isCommandTool(derived.attrs['input'])) {
|
|
454
|
-
commandToolCalls += 1;
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
|
|
458
|
-
if (fs) await appendSnapshot(fs, writer, out, requestTurn ?? 0);
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
await writer.append({
|
|
462
|
-
type: 'run.start',
|
|
463
|
-
actor: 'agenticreplay',
|
|
464
|
-
turn: 0,
|
|
465
|
-
attrs: { adapter: adapter.id, cwd, proxy: proxy.url },
|
|
466
|
-
});
|
|
467
|
-
|
|
468
|
-
// The source path, written down because a replay needs it and can get it nowhere else:
|
|
469
|
-
// `manifest.argv` holds the agent's own arguments, and `--mcp-config` is agenticreplay's. Without this a
|
|
470
|
-
// replay of an MCP-using run either loses the layer or cannot start the harness at all. Deferred
|
|
471
|
-
// to here so `run.start` keeps seq 0 — see the note at the setup site.
|
|
472
|
-
if (mcp && mcpConfigPath) {
|
|
473
|
-
await writer.append({
|
|
474
|
-
type: 'note',
|
|
475
|
-
actor: 'agenticreplay',
|
|
476
|
-
turn: 0,
|
|
477
|
-
attrs: {
|
|
478
|
-
rule: 'mcp_instrumented',
|
|
479
|
-
source: resolve(cwd, mcpConfigPath),
|
|
480
|
-
servers: mcp.rewritten.join(',') || undefined,
|
|
481
|
-
skipped: mcp.skipped.join(',') || undefined,
|
|
482
|
-
},
|
|
483
|
-
operationalPathAttrs: ['source'],
|
|
484
|
-
});
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
if (fs) await appendSnapshot(fs, writer, out, 0, { initial: true });
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Give up on a run that has already started, then re-throw.
|
|
491
|
-
*
|
|
492
|
-
* Two failures share this path, and both were silent in their own way.
|
|
493
|
-
*
|
|
494
|
-
* A listening proxy keeps Node's event loop alive, so a throw printed the error and then hung
|
|
495
|
-
* — `agenticreplay record generic-openai -- /nonexistent` never exited, and mistyping an agent name is
|
|
496
|
-
* the first thing a new user does. And an unsealed trace has no `ended_at`, `counts` or
|
|
497
|
-
* `integrity`, so everything the agent did is on disk while `verifyIntegrity` reports the run as
|
|
498
|
-
* *tampered* rather than as unfinished.
|
|
499
|
-
*
|
|
500
|
-
* Sealing rather than discarding: a run that died is often the run you most want to read, and
|
|
501
|
-
* the exit code is unknown rather than zero, so it is left absent.
|
|
502
|
-
*/
|
|
503
|
-
async function abandon(err: unknown): Promise<never> {
|
|
504
|
-
await proxy.close().catch(() => undefined);
|
|
505
|
-
await writes.drain().catch(() => undefined);
|
|
506
|
-
if (ca) await ca.dispose().catch(() => undefined);
|
|
507
|
-
await writer
|
|
508
|
-
.append({ type: 'run.end', actor: 'agenticreplay', turn, attrs: { error: String(err) } })
|
|
509
|
-
.catch(() => undefined);
|
|
510
|
-
await writer.close().catch(() => undefined);
|
|
511
|
-
throw err;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
/*
|
|
515
|
-
* Everything from here to the child's exit runs with the proxy already listening, so everything
|
|
516
|
-
* from here to the child's exit has to come back through `abandon`.
|
|
517
|
-
*
|
|
518
|
-
* The guard used to start at the spawn, which covered the failure it was written for — an agent
|
|
519
|
-
* that is not on PATH — and missed the one that happens first. An adapter validates the
|
|
520
|
-
* invocation in `prepare`, before anything is spawned: `agenticreplay record node agent.mjs`, with the
|
|
521
|
-
* `--` left out, printed exactly the right message about the `--` and then hung forever. So did
|
|
522
|
-
* a failure to snapshot the session directory, or to trust the run CA.
|
|
523
|
-
*/
|
|
524
|
-
const { launch, sessionBefore } = await (async () => {
|
|
525
|
-
try {
|
|
526
|
-
const ctx: RecordContext = {
|
|
527
|
-
runId: writer.runId,
|
|
528
|
-
cwd,
|
|
529
|
-
proxyUrl: proxy.url,
|
|
530
|
-
runDir: writer.runDir,
|
|
531
|
-
userArgs: args.passthrough,
|
|
532
|
-
env: process.env,
|
|
533
|
-
};
|
|
534
|
-
const prepared = await adapter.prepare(ctx);
|
|
535
|
-
|
|
536
|
-
// Listed before the agent starts, so the file it writes can be told from the ones already
|
|
537
|
-
// there. The harness's transcript is the only record of what the person typed; without it an
|
|
538
|
-
// interactive run is captured but not replayable.
|
|
539
|
-
const before = await snapshotDir(adapter.session?.dir(cwd, process.env));
|
|
540
|
-
|
|
541
|
-
if (shell) {
|
|
542
|
-
prepared.env.PATH = `${shell.dir}${delimiter}${process.env.PATH ?? ''}`;
|
|
543
|
-
}
|
|
544
|
-
if (agentSpans) {
|
|
545
|
-
// Both, or neither works: PYTHONPATH is how Python finds the bootstrap, and the variable is
|
|
546
|
-
// what tells the bootstrap this is a recording rather than an ordinary Python process.
|
|
547
|
-
prepared.env.PYTHONPATH = pythonPathWith(
|
|
548
|
-
agentSpans.pythonPath,
|
|
549
|
-
process.env.PYTHONPATH,
|
|
550
|
-
delimiter,
|
|
551
|
-
);
|
|
552
|
-
if (args.bool('agent-spans', true)) prepared.env[SPANS_ENV] = agentSpans.spansPath;
|
|
553
|
-
}
|
|
554
|
-
if (mcp) {
|
|
555
|
-
pointAtMcpConfig(prepared.env, mcp.configPath);
|
|
556
|
-
// The variables above are belt and braces for a harness agenticreplay has not met. What actually
|
|
557
|
-
// reaches Claude Code is this: it takes the path on the command line and reads no
|
|
558
|
-
// environment variable for it, so without this the instrumented config was written and
|
|
559
|
-
// never opened.
|
|
560
|
-
const mcpArgs = adapter.mcpConfigArgs?.(mcp.configPath);
|
|
561
|
-
if (mcpArgs !== undefined) prepared.args = [...mcpArgs, ...prepared.args];
|
|
562
|
-
else
|
|
563
|
-
out.warn('mcp.not_wired', {
|
|
564
|
-
adapter: adapter.id,
|
|
565
|
-
cause: `${adapter.id} has no command-line form for an MCP config, and reads none of the variables agenticreplay sets`,
|
|
566
|
-
effect:
|
|
567
|
-
'the instrumented config exists but the agent will not load it, so no MCP frames will be captured',
|
|
568
|
-
});
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
if (proxy.tls) {
|
|
572
|
-
await trustRunCa(writer, proxy.tls, proxy.url, prepared.env, out);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
return { launch: prepared, sessionBefore: before };
|
|
576
|
-
} catch (err) {
|
|
577
|
-
return abandon(err);
|
|
578
|
-
}
|
|
579
|
-
})();
|
|
580
|
-
|
|
581
|
-
out.phase('recording', {
|
|
582
|
-
run: writer.runId,
|
|
583
|
-
adapter: adapter.id,
|
|
584
|
-
proxy: proxy.url,
|
|
585
|
-
// `proxy` is agenticreplay's own address, so the line said where the agent would call and never where
|
|
586
|
-
// the call would go on to. A gateway left behind in `~/.agenticreplay/config.json` redirects every run
|
|
587
|
-
// on the machine, and the first sign of it used to be an answer from a model nobody asked for.
|
|
588
|
-
//
|
|
589
|
-
// Only when something was configured. Left alone, each dialect has its own vendor default and
|
|
590
|
-
// there is no single value to print — and `upstream=default` on every ordinary run is noise
|
|
591
|
-
// that would teach people to stop reading the line. The trace records the origin either way,
|
|
592
|
-
// per exchange, because that is where it is actually decided.
|
|
593
|
-
...(distinctOrigins(plan.upstream).length > 0
|
|
594
|
-
? { upstream: distinctOrigins(plan.upstream).join(',') }
|
|
595
|
-
: {}),
|
|
596
|
-
fs: fs ? 'on' : 'off',
|
|
597
|
-
shell: shell ? 'on' : 'off',
|
|
598
|
-
});
|
|
599
|
-
|
|
600
|
-
let exitCode: number;
|
|
601
|
-
try {
|
|
602
|
-
exitCode = await runChild(
|
|
603
|
-
launch.command,
|
|
604
|
-
launch.args,
|
|
605
|
-
{ ...process.env, ...launch.env },
|
|
606
|
-
launch.cwd ?? cwd,
|
|
607
|
-
// Under --json, stdout is the result document. The agent's own output must not land in it.
|
|
608
|
-
args.bool('json'),
|
|
609
|
-
);
|
|
610
|
-
} catch (err) {
|
|
611
|
-
return abandon(err);
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
await writes.drain().catch((err: unknown) => {
|
|
615
|
-
writer.markCaptureIncomplete('storage_failure');
|
|
616
|
-
out.warn('capture.storage_failure', { detail: String(err) });
|
|
617
|
-
});
|
|
618
|
-
|
|
619
|
-
/** The turn an out-of-band frame belongs to: the last one that had begun when it happened. */
|
|
620
|
-
function turnAt(at: number): number {
|
|
621
|
-
let found = 0;
|
|
622
|
-
for (const mark of turnStartedAt) {
|
|
623
|
-
if (mark.at > at) break;
|
|
624
|
-
found = mark.turn;
|
|
625
|
-
}
|
|
626
|
-
return found;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
if (shell) {
|
|
630
|
-
// Timestamped from the frame, not from now. These are read off disk after the agent has
|
|
631
|
-
// exited, so stamping them at write time put every shell command at the end of the run with
|
|
632
|
-
// the final turn number — which makes `mono_us` describe the drain rather than the command,
|
|
633
|
-
// and leaves the commands unable to interleave with the model turns they happened between.
|
|
634
|
-
const frames = await readShellFrames(shell.framesPath);
|
|
635
|
-
// Read, then gone, for the same reason the spans transport is: every frame is about to be
|
|
636
|
-
// appended through `writer.append`, which redacts, and what is left on disk afterwards is a
|
|
637
|
-
// verbatim copy of every command line the agent ran that nothing reads and `agenticreplay scrub` never
|
|
638
|
-
// rewrites. Before the appends rather than after, so an append that throws still takes it.
|
|
639
|
-
const framesLeft =
|
|
640
|
-
shell.transportDir === undefined ? undefined : await discardShellFrames(shell.transportDir);
|
|
641
|
-
if (framesLeft !== undefined) out.warn('shell_frames.not_removed', { reason: framesLeft });
|
|
642
|
-
shellFrames = frames.length;
|
|
643
|
-
for (const frame of frames) {
|
|
644
|
-
const startedAt = Date.parse(frame.startedAt);
|
|
645
|
-
const at = Number.isNaN(startedAt) ? undefined : new Date(startedAt);
|
|
646
|
-
const frameTurn = at === undefined ? turn : turnAt(startedAt);
|
|
647
|
-
const exec = await writer.append({
|
|
648
|
-
type: 'shell.exec',
|
|
649
|
-
actor: 'harness',
|
|
650
|
-
turn: frameTurn,
|
|
651
|
-
...(at === undefined ? {} : { occurredAt: at }),
|
|
652
|
-
attrs: { argv: [frame.name, ...frame.argv], cwd: frame.cwd },
|
|
653
|
-
});
|
|
654
|
-
await writer.append({
|
|
655
|
-
type: 'shell.result',
|
|
656
|
-
actor: 'harness',
|
|
657
|
-
turn: frameTurn,
|
|
658
|
-
causes: [exec.seq],
|
|
659
|
-
// The result happened when the command finished, which is what its duration measures.
|
|
660
|
-
...(at === undefined ? {} : { occurredAt: new Date(startedAt + frame.durationMs) }),
|
|
661
|
-
attrs: {
|
|
662
|
-
exit_code: frame.exitCode,
|
|
663
|
-
signal: frame.signal,
|
|
664
|
-
duration_ms: frame.durationMs,
|
|
665
|
-
stdout_bytes: frame.stdoutBytes,
|
|
666
|
-
stderr_bytes: frame.stderrBytes,
|
|
667
|
-
},
|
|
668
|
-
});
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
if (agentSpans) {
|
|
673
|
-
// Timestamped from the span, like the shell frames above and for the same reason: these are
|
|
674
|
-
// read off disk after the agent exited, so stamping them now would file every handoff at the
|
|
675
|
-
// end of the run rather than between the turns it happened between.
|
|
676
|
-
const spans = await readAgentSpans(agentSpans.spansPath);
|
|
677
|
-
// Read, then gone. Everything the trace keeps from this file is about to be appended through
|
|
678
|
-
// `writer.append`, which redacts; what is left on disk afterwards is a copy nothing reads and
|
|
679
|
-
// nothing scrubs. Before the appends rather than after, so an append that throws still takes
|
|
680
|
-
// the transport with it.
|
|
681
|
-
const spansLeft = await discardAgentSpanTransport(agentSpans.transportDir);
|
|
682
|
-
if (spansLeft !== undefined) out.warn('agent_spans.not_removed', { reason: spansLeft });
|
|
683
|
-
// Before the events, because both say the trace is about to be less complete than it looks,
|
|
684
|
-
// and the operator reads the top of the drain rather than the bottom.
|
|
685
|
-
const losses = agentSpanLosses(spans);
|
|
686
|
-
// The second gate. The bootstrap now applies the first one itself — it reports a package only
|
|
687
|
-
// once the agent actually imports the framework — so what is left here is the case where a run
|
|
688
|
-
// captured no model traffic at all. `capture.empty` below already says that larger thing, and
|
|
689
|
-
// naming a missing package on top of it would send someone to `pip install` over a problem
|
|
690
|
-
// that is not about a package.
|
|
691
|
-
for (const pkg of modelExchanges > 0 ? losses.unavailable : []) {
|
|
692
|
-
// The prose comes from the adapter table, so a package cannot be reported with another
|
|
693
|
-
// package's explanation — which is exactly what happened when this text was a constant and a
|
|
694
|
-
// second adapter arrived.
|
|
695
|
-
const adapter = PYTHON_ADAPTERS.find((entry) => entry.package === pkg);
|
|
696
|
-
out.warn('agent_spans.unavailable', {
|
|
697
|
-
package: pkg,
|
|
698
|
-
// What was actually observed, rather than what it suggests. The bootstrap saw the
|
|
699
|
-
// framework's own module being imported and confirmed with `importlib.metadata` that a
|
|
700
|
-
// distribution provides that name; it does not know what the agent then did with it.
|
|
701
|
-
cause: `${adapter?.distribution ?? 'the framework'} was imported and this package is not installed`,
|
|
702
|
-
effect: `the run is recorded, without ${adapter?.lost ?? 'the structure only it can see'}`,
|
|
703
|
-
next: `pip install ${pkg}`,
|
|
704
|
-
});
|
|
705
|
-
}
|
|
706
|
-
if (losses.dropped > 0) {
|
|
707
|
-
out.warn('agent_spans.dropped', {
|
|
708
|
-
count: losses.dropped,
|
|
709
|
-
// Which adapter, where it said. Several write to one transport, so the total on its own
|
|
710
|
-
// says how much was lost and nothing about where to look.
|
|
711
|
-
...(losses.droppedBy.length > 0 ? { package: losses.droppedBy.join(', ') } : {}),
|
|
712
|
-
cause: 'the adapter could not serialise or could not write these records',
|
|
713
|
-
});
|
|
714
|
-
}
|
|
715
|
-
for (const span of spans) {
|
|
716
|
-
const derived = eventForSpan(span);
|
|
717
|
-
if (derived === undefined) continue;
|
|
718
|
-
// When the span happened, from whichever end it carries. A record that closes something has
|
|
719
|
-
// only `ended_at`, and reading `started_at` alone stamped every one of them from the drain's
|
|
720
|
-
// own clock — which runs after the agent has exited. Measured on a three-node graph: all
|
|
721
|
-
// three `graph.node.end` events landed at the same instant, 600ms after the run, so the
|
|
722
|
-
// first node appeared to finish after the second had started and the timeline said the
|
|
723
|
-
// opposite of what happened. `occurredAt` is also what `turnAt` reads, so the same mistake
|
|
724
|
-
// filed them under the wrong turn.
|
|
725
|
-
const startedAt = Date.parse(String(span.started_at ?? span.ended_at ?? ''));
|
|
726
|
-
const at = Number.isNaN(startedAt) ? undefined : new Date(startedAt);
|
|
727
|
-
await writer.append({
|
|
728
|
-
type: derived.type as 'agent.start',
|
|
729
|
-
// `harness`, not `agenticreplay`: we did not observe this, we were told it.
|
|
730
|
-
actor: 'harness',
|
|
731
|
-
turn: at === undefined ? turn : turnAt(startedAt),
|
|
732
|
-
...(at === undefined ? {} : { occurredAt: at }),
|
|
733
|
-
attrs: derived.attrs,
|
|
734
|
-
});
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
if (mcp) await drainMcpFrames(mcp, writer, turnAt, turn);
|
|
739
|
-
|
|
740
|
-
const orphans = deriver.unresolved();
|
|
741
|
-
if (orphans.length > 0) {
|
|
742
|
-
await writer.append({
|
|
743
|
-
type: 'note',
|
|
744
|
-
actor: 'agenticreplay',
|
|
745
|
-
turn,
|
|
746
|
-
attrs: { rule: 'unresolved_tool_calls', ids: orphans.map((o) => o.id) },
|
|
747
|
-
});
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
// Before the trace is sealed, not after. A tunnel's record is only complete when its socket
|
|
751
|
-
// closes, and closing the proxy is what closes the ones an exiting agent left open — so a
|
|
752
|
-
// `proxy.close()` after `writer.close()` produced tunnel records with nowhere to go.
|
|
753
|
-
await proxy.close();
|
|
754
|
-
await writes.drain().catch((err: unknown) => {
|
|
755
|
-
writer.markCaptureIncomplete('storage_failure');
|
|
756
|
-
out.warn('capture.storage_failure', { detail: String(err) });
|
|
757
|
-
});
|
|
758
|
-
// The CA dies with the run. `dispose` is idempotent and best-effort: failing to delete a key is
|
|
759
|
-
// worth a warning, never worth losing the trace the user was recording.
|
|
760
|
-
if (ca) {
|
|
761
|
-
try {
|
|
762
|
-
await ca.dispose();
|
|
763
|
-
} catch (err) {
|
|
764
|
-
out.warn('tls.ca_not_removed', { path: ca.dir, reason: String(err) });
|
|
765
|
-
}
|
|
766
|
-
}
|
|
767
|
-
|
|
768
|
-
/**
|
|
769
|
-
* The harness's own transcript, and with it the prompts nothing on the wire carries.
|
|
770
|
-
*
|
|
771
|
-
* Written before `run.end` so it is part of the run rather than an appendix, and stored as the
|
|
772
|
-
* harness's own bytes so a fork can put the file back and resume into it natively.
|
|
773
|
-
*/
|
|
774
|
-
let session: Awaited<ReturnType<typeof captureSession>>;
|
|
775
|
-
if (adapter.session) {
|
|
776
|
-
try {
|
|
777
|
-
session = await captureSession(adapter.session, cwd, process.env, sessionBefore);
|
|
778
|
-
} catch (err) {
|
|
779
|
-
out.warn('session.unavailable', { reason: String(err) });
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
if (session) {
|
|
783
|
-
await writer.append({
|
|
784
|
-
type: 'session.snapshot',
|
|
785
|
-
actor: 'harness',
|
|
786
|
-
turn,
|
|
787
|
-
attrs: {
|
|
788
|
-
harness: adapter.id,
|
|
789
|
-
session_id: session.id,
|
|
790
|
-
rel_path: session.relPath,
|
|
791
|
-
prompts: session.prompts.length,
|
|
792
|
-
bytes: session.bytes.byteLength,
|
|
793
|
-
},
|
|
794
|
-
// The writer spills anything over the inline limit to a content-addressed blob, so the
|
|
795
|
-
// transcript rides the same path every other large payload does — redaction included.
|
|
796
|
-
payload: {
|
|
797
|
-
prompts: session.prompts,
|
|
798
|
-
transcript: new TextDecoder().decode(session.bytes),
|
|
799
|
-
},
|
|
800
|
-
});
|
|
801
|
-
}
|
|
802
|
-
|
|
803
|
-
const observed = networkExchanges;
|
|
804
|
-
if (requestTurns.size !== networkExchanges) writer.markCaptureIncomplete('unfinalized_request');
|
|
805
|
-
if (retrievalStore === 'digest') writer.markCaptureIncomplete('body_storage_disabled');
|
|
806
|
-
writer.setCaptureSummary({
|
|
807
|
-
status: observed > 0 ? 'complete' : 'incomplete',
|
|
808
|
-
issues: observed > 0 ? [] : ['no_requests_observed'],
|
|
809
|
-
body_limit_bytes: captureLimits(args).maxCapturedBytes,
|
|
810
|
-
requests: requestTurns.size,
|
|
811
|
-
responses: networkExchanges,
|
|
812
|
-
});
|
|
813
|
-
await writer.append({
|
|
814
|
-
type: 'run.end',
|
|
815
|
-
actor: 'agenticreplay',
|
|
816
|
-
turn,
|
|
817
|
-
attrs: { exit_code: exitCode },
|
|
818
|
-
});
|
|
819
|
-
const manifest = await writer.close(exitCode);
|
|
820
|
-
|
|
821
|
-
out.phase('recorded', {
|
|
822
|
-
run: writer.runId,
|
|
823
|
-
events: manifest.counts?.events ?? writer.seq,
|
|
824
|
-
blobs: manifest.counts?.blobs ?? 0,
|
|
825
|
-
exit: exitCode,
|
|
826
|
-
capture: manifest.capture?.status ?? 'unverified',
|
|
827
|
-
dir: writer.runDir,
|
|
828
|
-
});
|
|
829
|
-
|
|
830
|
-
/**
|
|
831
|
-
* The quietest way agenticreplay can fail, and the most damaging.
|
|
832
|
-
*
|
|
833
|
-
* Capture works by pointing a base-URL variable at the proxy, so a harness that reads none of
|
|
834
|
-
* them is never redirected — and there is nothing to notice. The agent answers, the exit code is
|
|
835
|
-
* zero, and the trace is empty. An agent with its origin compiled into source is the live
|
|
836
|
-
* example: it never consults a base-URL variable, so `agenticreplay record` produces exactly this.
|
|
837
|
-
*
|
|
838
|
-
* `contract.ts` already names this shape as what the adapter checks exist to prevent. They guard
|
|
839
|
-
* the adapters; this guards the run, which is where a user actually meets it.
|
|
840
|
-
*/
|
|
841
|
-
if (modelExchanges === 0) {
|
|
842
|
-
const baseUrls = Object.keys(launch.env)
|
|
843
|
-
.filter((name) => /(?:_BASE_URL|_API_BASE)$/.test(name))
|
|
844
|
-
.sort();
|
|
845
|
-
// Which cause is worth naming depends on how this adapter captures at all, and the line
|
|
846
|
-
// already carries the evidence: `set=none` means there was never a variable to be ignored.
|
|
847
|
-
// Printing "it may not read a base-URL variable" next to `set=none` contradicts the run's own
|
|
848
|
-
// output and sends the reader after a route that was never the route -- which is how the
|
|
849
|
-
// capture bug fixed earlier in this branch stayed hidden through a dozen rounds of debugging.
|
|
850
|
-
//
|
|
851
|
-
// The proxy's own counters come first, because they settle the question the other branches
|
|
852
|
-
// are guessing at. A call agenticreplay forwarded is a call the agent made *to agenticreplay*: the variables
|
|
853
|
-
// were read and the redirection worked, so "the agent never called the proxy" is false on its
|
|
854
|
-
// face and costs the reader a search through a configuration that was right all along.
|
|
855
|
-
const captured = proxy.stats().retrievalTotal;
|
|
856
|
-
const opaque = proxy.stats().passedThrough - captured;
|
|
857
|
-
const paths = unclaimed.list();
|
|
858
|
-
|
|
859
|
-
// An index build is the case: every call it makes is an embedding, and every one of them is
|
|
860
|
-
// recorded *and* replayable. There is nothing wrong with that run, and warning about it would
|
|
861
|
-
// teach someone to ignore the line that matters. Said as a fact rather than as a problem.
|
|
862
|
-
const retrievalOnly = captured > 0 && opaque === 0;
|
|
863
|
-
const cause =
|
|
864
|
-
opaque > 0
|
|
865
|
-
? `the agent called the proxy ${opaque} time(s), on ` +
|
|
866
|
-
`${paths.length > 0 ? paths.join(', ') : 'paths no wire dialect claims'} — recorded as ` +
|
|
867
|
-
'network traffic rather than as replayable model exchanges'
|
|
868
|
-
: baseUrls.length > 0
|
|
869
|
-
? 'the agent never called the proxy — it may not read a base-URL variable'
|
|
870
|
-
: adapter.capture === 'config'
|
|
871
|
-
? // Not a missing flag. This adapter redirects by writing the harness's own config,
|
|
872
|
-
// so an empty capture means there was nothing in that config to redirect — the
|
|
873
|
-
// harness has no provider configured, or it is on a built-in login whose origin a
|
|
874
|
-
// file cannot move. Telling this operator to add `--tls-intercept` would send them
|
|
875
|
-
// after a route that cannot work: MiniMax Code's client is Node's `fetch`, which
|
|
876
|
-
// reads no proxy variable, so interception sees nothing either.
|
|
877
|
-
`${adapter.id} is redirected through its own config, and this run had no ` +
|
|
878
|
-
'configured provider to redirect'
|
|
879
|
-
: tls.ca
|
|
880
|
-
? 'this adapter captures at the transport, and nothing agenticreplay decrypted looked like a model call'
|
|
881
|
-
: 'this adapter captures at the transport, and interception was not on';
|
|
882
|
-
if (retrievalOnly) {
|
|
883
|
-
out.info('capture.retrieval_only', {
|
|
884
|
-
exchanges: 0,
|
|
885
|
-
retrieval: captured,
|
|
886
|
-
// Under `digest` the trace holds a hash of each answer and not the answer, so promising
|
|
887
|
-
// an offline replay would be a claim this run cannot meet — which is the shape of
|
|
888
|
-
// dishonesty every other line here exists to avoid.
|
|
889
|
-
note:
|
|
890
|
-
retrievalStore === 'digest'
|
|
891
|
-
? 'this run made no model calls, and --retrieval-store=digest kept only a hash of ' +
|
|
892
|
-
'each answer: enough to check a later run agreed, not enough to replay'
|
|
893
|
-
: 'this run made no model calls; its retrieval calls are recorded and replay offline',
|
|
894
|
-
});
|
|
895
|
-
} else {
|
|
896
|
-
out.warn('capture.empty', {
|
|
897
|
-
exchanges: 0,
|
|
898
|
-
cause,
|
|
899
|
-
...(opaque > 0 ? { passed_through: opaque } : {}),
|
|
900
|
-
...(captured > 0 ? { retrieval: captured } : {}),
|
|
901
|
-
set: baseUrls.join(',') || 'none',
|
|
902
|
-
next: opaque > 0 ? 'agenticreplay show to read what was forwarded' : 'agenticreplay doctor',
|
|
903
|
-
});
|
|
904
|
-
}
|
|
905
|
-
}
|
|
906
|
-
|
|
907
|
-
/**
|
|
908
|
-
* Every model call came back an error.
|
|
909
|
-
*
|
|
910
|
-
* `capture.empty` covers the run the proxy never saw. This covers the run it saw all of, where
|
|
911
|
-
* every answer was a refusal: an expired gateway credential, a model the account cannot reach, a
|
|
912
|
-
* provider outage. The harness retries, exhausts its attempts, prints its own error and exits 0,
|
|
913
|
-
* so the summary reads exactly like a successful recording — `recorded events=27 exit=0` — over
|
|
914
|
-
* a trace that contains no model output at all. Replaying it faithfully reproduces the failures.
|
|
915
|
-
*
|
|
916
|
-
* Only when *all* of them failed. A run that retried once and then worked is a run that worked,
|
|
917
|
-
* and warning about it would train people to ignore the line that matters.
|
|
918
|
-
*/
|
|
919
|
-
if (modelExchanges > 0 && erroredExchanges === modelExchanges) {
|
|
920
|
-
const commonest = [...errorStatuses.entries()].sort((a, b) => b[1] - a[1])[0];
|
|
921
|
-
out.warn('capture.errors', {
|
|
922
|
-
exchanges: modelExchanges,
|
|
923
|
-
errors: erroredExchanges,
|
|
924
|
-
status: commonest ? commonest[0] : 'unknown',
|
|
925
|
-
cause: 'every model call the proxy forwarded came back an error',
|
|
926
|
-
effect: 'the trace holds the failures, not any model output — a replay reproduces those',
|
|
927
|
-
next: 'agenticreplay show to read the errors, then check the upstream credential or model id',
|
|
928
|
-
});
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
/**
|
|
932
|
-
* Shell capture that was on and recorded nothing.
|
|
933
|
-
*
|
|
934
|
-
* `installShellShim` succeeding means a `sh`, a `bash` and a `zsh` were written into the run
|
|
935
|
-
* directory and put at the front of PATH. It does not mean the harness went through them, and
|
|
936
|
-
* on Windows Claude Code does not: it finds its shell without consulting PATH, so the shim sits
|
|
937
|
-
* unused while `shell=on` is printed and the frames file stays empty. What is lost is precisely
|
|
938
|
-
* what only the shim can see — the real exit code, the real duration, and which stream each byte
|
|
939
|
-
* came from — while the commands still appear as tool calls, so nothing looks wrong.
|
|
940
|
-
*
|
|
941
|
-
* The condition is evidence, not a platform check: commands demonstrably ran and the layer that
|
|
942
|
-
* was supposed to see them saw none of them, whatever the reason.
|
|
943
|
-
*/
|
|
944
|
-
if (shell && shellFrames === 0 && commandToolCalls > 0) {
|
|
945
|
-
out.warn('shell.ineffective', {
|
|
946
|
-
commands: commandToolCalls,
|
|
947
|
-
captured: 0,
|
|
948
|
-
cause: 'the harness ran its shell without going through the PATH shim',
|
|
949
|
-
effect: 'exit codes, durations and the stdout/stderr split are not in this trace',
|
|
950
|
-
next: 'record with --no-shell, which claims nothing rather than claiming this',
|
|
951
|
-
});
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
/**
|
|
955
|
-
* A recording that captured turns but cannot be replayed.
|
|
956
|
-
*
|
|
957
|
-
* `capture.empty` covers the run that recorded nothing. This is the other half: an interactive
|
|
958
|
-
* run records its model calls perfectly, but the prompts that caused them were typed into a
|
|
959
|
-
* terminal and exist nowhere agenticreplay can see. Replaying it launches an agent with nothing to make
|
|
960
|
-
* it ask anything, and it comes back blank — which the user discovers only after paying for the
|
|
961
|
-
* recording. Saying so here, while they are still looking at it, is the whole point.
|
|
962
|
-
*/
|
|
963
|
-
const drivable = args.passthrough.length > 0 || (session?.prompts.length ?? 0) > 0;
|
|
964
|
-
if (modelExchanges > 0 && !drivable) {
|
|
965
|
-
out.warn('replay.undrivable', {
|
|
966
|
-
exchanges: modelExchanges,
|
|
967
|
-
cause: adapter.session
|
|
968
|
-
? 'no prompt in argv, and none found in the harness transcript'
|
|
969
|
-
: `no prompt in argv, and ${adapter.id} exposes no transcript agenticreplay can read`,
|
|
970
|
-
effect: 'this run can be inspected, but replay and fork have nothing to drive the agent with',
|
|
971
|
-
next: `agenticreplay show ${writer.runId}`,
|
|
972
|
-
});
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
out.plain('');
|
|
976
|
-
out.plain(` agenticreplay replay ${writer.runId} # reproduce it exactly`);
|
|
977
|
-
out.plain(` agenticreplay replay ${writer.runId} --ui # open the timeline`);
|
|
978
|
-
|
|
979
|
-
return {
|
|
980
|
-
runId: writer.runId,
|
|
981
|
-
runDir: writer.runDir,
|
|
982
|
-
events: manifest.counts?.events ?? writer.seq,
|
|
983
|
-
modelExchanges,
|
|
984
|
-
childExitCode: exitCode,
|
|
985
|
-
exitCode: exitCode !== 0 ? exitCode : manifest.capture?.status === 'incomplete' ? 2 : 0,
|
|
986
|
-
};
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
/**
|
|
990
|
-
* Launch the agent.
|
|
991
|
-
*
|
|
992
|
-
* `stdio: 'inherit'` by default, and that matters: an interactive harness needs the real terminal,
|
|
993
|
-
* and anything less turns a TUI into a stream of escape codes.
|
|
994
|
-
*
|
|
995
|
-
* `quietStdout` is for `--json`, where agenticreplay's stdout is a document rather than a terminal. The
|
|
996
|
-
* agent's own chatter is still shown — it moves to stderr, where a human reads it and a parser
|
|
997
|
-
* does not. stdin and stderr stay inherited so the agent can still prompt and still colour.
|
|
998
|
-
*/
|
|
999
|
-
async function runChild(
|
|
1000
|
-
command: string,
|
|
1001
|
-
argv: string[],
|
|
1002
|
-
env: NodeJS.ProcessEnv,
|
|
1003
|
-
cwd: string,
|
|
1004
|
-
quietStdout = false,
|
|
1005
|
-
): Promise<number> {
|
|
1006
|
-
// Resolved the way detection resolves, so a launcher never reports ENOENT for an agent that
|
|
1007
|
-
// `agenticreplay doctor` just called present.
|
|
1008
|
-
const target = await resolveLaunch(command, argv);
|
|
1009
|
-
return new Promise((resolve, reject) => {
|
|
1010
|
-
const child = spawn(target.file, target.args, {
|
|
1011
|
-
env,
|
|
1012
|
-
cwd,
|
|
1013
|
-
shell: target.shell,
|
|
1014
|
-
stdio: quietStdout ? ['inherit', 'pipe', 'inherit'] : 'inherit',
|
|
1015
|
-
});
|
|
1016
|
-
child.stdout?.pipe(process.stderr);
|
|
1017
|
-
// Forward interrupts so Ctrl-C reaches the agent rather than orphaning it behind the proxy.
|
|
1018
|
-
const forward = (signal: NodeJS.Signals) => () => child.kill(signal);
|
|
1019
|
-
const onInt = forward('SIGINT');
|
|
1020
|
-
const onTerm = forward('SIGTERM');
|
|
1021
|
-
process.on('SIGINT', onInt);
|
|
1022
|
-
process.on('SIGTERM', onTerm);
|
|
1023
|
-
|
|
1024
|
-
child.on('error', (err) => {
|
|
1025
|
-
process.off('SIGINT', onInt);
|
|
1026
|
-
process.off('SIGTERM', onTerm);
|
|
1027
|
-
reject(
|
|
1028
|
-
new Error(
|
|
1029
|
-
`could not launch "${command}"\n` +
|
|
1030
|
-
` ${String(err)}\n` +
|
|
1031
|
-
` is it installed and on your PATH?`,
|
|
1032
|
-
),
|
|
1033
|
-
);
|
|
1034
|
-
});
|
|
1035
|
-
child.on('close', (code) => {
|
|
1036
|
-
process.off('SIGINT', onInt);
|
|
1037
|
-
process.off('SIGTERM', onTerm);
|
|
1038
|
-
resolve(code ?? 0);
|
|
1039
|
-
});
|
|
1040
|
-
});
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
/**
|
|
1044
|
-
* The origins a configured upstream map actually names, deduplicated and safe to print.
|
|
1045
|
-
*
|
|
1046
|
-
* `resolveUpstream` writes one entry per dialect and `openai` and `openai-responses` always share
|
|
1047
|
-
* a value — so the raw map renders a single gateway three times. What a reader wants is the set of
|
|
1048
|
-
* places traffic can go, which is usually one.
|
|
1049
|
-
*
|
|
1050
|
-
* Through `recordableOrigin` for the same reason the trace goes through it, and against the same
|
|
1051
|
-
* sentence: `agenticreplay setup --gateway` accepts a URL carrying the key — `https://user:pw@gw.example`,
|
|
1052
|
-
* `https://gw.example?key=…` — and `config.ts` says of that file that "nothing ever prints it
|
|
1053
|
-
* back". A line on the terminal is printing it back, and it is a line that ends up in CI logs.
|
|
1054
|
-
*/
|
|
1055
|
-
export function distinctOrigins(upstream: Record<string, string> | undefined): string[] {
|
|
1056
|
-
const safe = Object.values(upstream ?? {})
|
|
1057
|
-
// Dropped only where sanitising cannot work, so a gateway configured with its key in the URL
|
|
1058
|
-
// still says *where* the traffic went. `recordableOrigin` removes userinfo and query, which is
|
|
1059
|
-
// enough for every `http(s)://` value — but a scheme-less URL parses with its username as the
|
|
1060
|
-
// protocol, so it comes back as `myuser://PASSWORD@gw.example/v1`, credential intact, and a
|
|
1061
|
-
// filter keeping everything that is not `undefined` kept it. There is no sanitising that: with
|
|
1062
|
-
// no scheme there is no telling which half of `a:b` was meant as the host. `upstreamPlan`
|
|
1063
|
-
// refuses these before a run starts; this is here because the function is exported and one
|
|
1064
|
-
// line from a terminal.
|
|
1065
|
-
.filter((origin) => unusableOrigin(origin) === undefined)
|
|
1066
|
-
.map(recordableOrigin)
|
|
1067
|
-
.filter((origin): origin is string => origin !== undefined);
|
|
1068
|
-
return [...new Set(safe)];
|
|
1069
|
-
}
|